Create
Return to post

Comparing difference between and

View raw
  • settings
  • {
  • main
  • {
  • Description: "Exploding Kittens by venus#12217 || v1.6 || This game is only optimized for a maximum of 8 players!! || Read rules at workshop.codes/explodingkittens"
  • }
  • lobby
  • {
  • Allow Players Who Are In Queue: Yes
  • Match Voice Chat: Enabled
  • Max FFA Players: 8
  • Return To Lobby: Never
  • }
  • modes
  • {
  • Deathmatch
  • {
  • enabled maps
  • {
  • Blizzard World
  • Blizzard World Winter
  • Dorado
  • Eichenwalde
  • Eichenwalde Halloween
  • Hanamura
  • Hanamura Winter
  • Havana
  • Hollywood
  • Hollywood Halloween
  • King's Row
  • King's Row Winter
  • Lijiang Night Market
  • Lijiang Night Market Lunar New Year
  • Nepal Sanctum
  • Nepal Village
  • Volskaya Industries
  • Workshop Island Night
  • }
  • }
  • General
  • {
  • Enemy Health Bars: Off
  • Game Mode Start: Immediately
  • Hero Limit: Off
  • Kill Cam: Off
  • Kill Feed: Off
  • Self Initiated Respawn: Off
  • }
  • }
  • heroes
  • {
  • General
  • {
  • Ultimate Generation: 10%
  • Ultimate Generation - Combat: 0%
  • Ultimate Generation - Passive: 0%
  • }
  • }
  • }
  • variables
  • {
  • global:
  • 0: Players
  • 1: Pos
  • 2: Radius
  • 3: Angle
  • 4: Counter
  • 5: NoPlayers
  • 6: Deck
  • 7: PlayerRad
  • 8: Counter2
  • 9: Turn
  • 10: IsGameStarted
  • 11: TurnDirection
  • 12: TurnNo
  • 13: CardHUDCreated
  • 14: ExplodingKittensDeck
  • 15: IsInitializationCompleted
  • 16: WarnIcon
  • 17: Timer
  • 18: Feed
  • 19: HideKittenDeck
  • 20: LastTurn
  • 21: DefuseDeck
  • 22: Config
  • 23: HandSizeWithoutDefuse
  • 24: TempHud
  • 25: DebugPos
  • 26: SlapTurn
  • 27: PlayerBeingSlapped
  • 28: MapPos
  • 29: IsDeckBeingArranged
  • 30: BaseCards
  • 31: FakeShuffleDeck
  • 32: Counter3
  • 33: CatomicBombDeck
  • 34: CardBeingSwapped
  • 35: ForceGameStart
  • 38: LastKittenDefuser
  • player:
  • 0: PlayerPos
  • 1: Playing
  • 2: Hand
  • 3: Counter
  • 4: CardHud
  • 5: Exploded
  • 6: PickNo
  • 7: StolenCardNo
  • 8: ForcedTurn
  • 9: PlayerNo
  • 10: DrawCard
  • 11: IsExploding
  • 12: StealNo
  • 13: Effect
  • 14: PlayingFromStart
  • 15: TempHud
  • 16: IsHidingKitten
  • 17: Camera
  • 18: HideKittenNo
  • 19: IsStealing
  • 20: StealablePlayers
  • 21: IsBeingStolen
  • 22: WaitAfterPressing
  • 23: SlappablePlayers
  • 24: SlapNo
  • 25: IsSlapping
  • 26: Ready
  • 27: NewCardsCount
  • 28: HideMessage
  • 29: IsHandBeingArranged
  • 30: IsAlteringTheFuture
  • 31: AlterTheFutureDeck
  • 32: LastCardRange
  • 33: HideMessage2
  • }
  • subroutines
  • {
  • 0: CreateCardHUD
  • 1: NextTurn
  • 2: RearrangeDeck
  • 3: RearrangeHand
  • 4: RearrangePlayers
  • 5: NextTurn2
  • 6: DestroyHUD
  • 7: EndTurn
  • 8: DestroyDiscardCard
  • 9: CreateSlappableList
  • }
  • rule("Exploding Kittens by venus#12217 || workshop.codes/explodingkittens")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • disabled Disable Inspector Recording;
  • Disable Built-In Game Mode Announcer;
  • Disable Built-In Game Mode Completion;
  • Disable Built-In Game Mode Scoring;
  • Create HUD Text(All Players(All Teams), Null, Custom String("Exploding Kittens by venus#12217 "), Null, Right, -10, Color(White),
  • Color(White), Color(White), Visible To and String, Default Visibility);
  • Create HUD Text(All Players(All Teams), Null, Custom String("workshop.codes/explodingkittens"), Null, Right, -9, Color(White),
  • Color(Orange), Color(White), Visible To and String, Default Visibility);
  • Create HUD Text(Global.IsGameStarted ? All Players(All Teams) : Null, Null, Custom String("•••••••••••••••••••••••••"), Null, Left,
  • -9, Color(White), Color(Orange), Color(White), Visible To and String, Default Visibility);
  • Create HUD Text(All Players(All Teams), Null, Null, Global.Config[10] ? Custom String(
  • "Host player, hold Jump to start game when everyone's ready!") : Custom String("Waiting for everyone to spawn in..."), Top,
  • -10, Color(White), Color(White), Color(White), Visible To and String, Default Visibility);
  • Global.TempHud = Last Text ID;
  • Create HUD Text(Global.IsGameStarted ? All Players(All Teams) : Null, Null, Custom String("Current turn"), Null, Top, -10, Color(
  • White), Color(Orange), Color(White), Visible To and String, Default Visibility);
  • Create HUD Text(Global.IsGameStarted ? All Players(All Teams) : Null, Null, Null, Custom String("{0} {1}", Hero Icon String(
  • Hero Of(Global.Turn)), Global.Turn), Top, -9, Color(White), Color(White), Color(White), Visible To and String,
  • Default Visibility);
  • Create HUD Text(All Players(All Teams), Null, Custom String(" "), Null, Top, -1, Color(White), Color(White), Color(White),
  • Visible To and String, Default Visibility);
  • disabled Create HUD Text(All Players(All Teams), Null, Null, Custom String(
  • " \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r"),
  • Top, -0.100, Color(White), Color(White), Color(White), Visible To and String, Default Visibility);
  • Create HUD Text(Filtered Array(All Players(All Teams), Current Array Element.HideMessage2 == False), Custom String(
  • " HOW TO PLAY "), Null, Null, Right, 0, Color(Orange), Color(White), Color(White), Visible To and String,
  • Default Visibility);
  • Create HUD Text(Filtered Array(All Players(All Teams), Current Array Element.HideMessage2 == False), Null, Custom String(
  • "Everyone takes turn to draw a\r\ncard from the deck. If you draw\r\nan Exploding Kitten, you must\r\n{0}", Custom String(
  • "play Defuse or die. The last\r\nplayer alive wins!")), Null, Right, 1, Color(White), Color(White), Color(White),
  • Visible To and String, Default Visibility);
  • Create HUD Text(Filtered Array(All Players(All Teams), Current Array Element.HideMessage2 == False), Custom String(
  • " (=´ᆺ`=) "), Null, Null, Right, 2, Color(Orange), Color(White), Color(White), Visible To and String,
  • Default Visibility);
  • Create HUD Text(Filtered Array(All Players(All Teams), Current Array Element.HideMessage2 == False), Null, Null, Custom String(
  • "PRESS ABILITY 1 TO CLOSE "), Right, 3, Color(Orange), Color(Orange), Color(Orange), Visible To and String,
  • Default Visibility);
  • Create HUD Text(All Players(All Teams), Null, Custom String(" "), Null, Right, -1, Color(White), Color(White), Color(White),
  • Visible To and String, Default Visibility);
  • }
  • }
  • disabled rule("(=^-ω-^=) DEBUG (=´∇`=)")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • }
  • rule("Debug: Teleport")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Interact)) == True;
  • Global.Config[2] == True;
  • }
  • actions
  • {
  • Teleport(Event Player, World Vector Of(Vector(0, 1, 5), Event Player, Rotation And Translation));
  • disabled Teleport(Event Player, Ray Cast Hit Position(Eye Position(Event Player), Eye Position(Event Player) + Facing Direction Of(
  • Event Player) * 5, Null, Event Player, True));
  • }
  • }
  • rule("Debug: Create bots")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Count Of(Filtered Array(All Players(All Teams), Is Dummy Bot(Current Array Element) == True)) <= 0;
  • Is Button Held(Host Player, Button(Ability 2)) == True;
  • Global.Config[1] == True;
  • }
  • actions
  • {
  • Create Dummy Bot(Hero(D.Va), All Teams, 1, Nearest Walkable Position(Vector(0, 0, 0)), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Ashe), All Teams, 2, Nearest Walkable Position(Vector(0, 0, 0)), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Brigitte), All Teams, 3, Nearest Walkable Position(Vector(0, 0, 0)), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Roadhog), All Teams, 4, Nearest Walkable Position(Vector(0, 0, 0)), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Mei), All Teams, 5, Nearest Walkable Position(Vector(0, 0, 0)), Vector(0, 0, 0));
  • disabled Create Dummy Bot(Hero(McCree), All Teams, 6, Nearest Walkable Position(Vector(0, 0, 0)), Vector(0, 0, 0));
  • disabled Create Dummy Bot(Hero(Tracer), All Teams, 7, Nearest Walkable Position(Vector(0, 0, 0)), Vector(0, 0, 0));
  • }
  • }
  • rule("Debug: Remove bots")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Button Held(Host Player, Button(Ability 1)) == True;
  • Global.Config[1] == True;
  • }
  • actions
  • {
  • Destroy Dummy Bot(All Teams, Slot Of(Player Closest To Reticle(Host Player, All Teams)));
  • }
  • }
  • rule("Debug: Force bots to press button")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Host Player == Event Player;
  • Is Button Held(Event Player, Button(Melee)) == True;
  • Global.Config[1] == True;
  • }
  • actions
  • {
  • Press Button(Filtered Array(All Players(All Teams), Is Dummy Bot(Current Array Element) == True), Button(Crouch));
  • }
  • }
  • rule("Debug: Create debug positions")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.Config[2] == True;
  • Host Player == Event Player;
  • Is Button Held(Event Player, Button(Primary Fire)) == True;
  • }
  • actions
  • {
  • Skip If(Global.DebugPos != True, 3);
  • Modify Global Variable(DebugPos, Append To Array, Ray Cast Hit Position(Eye Position(Event Player), Eye Position(Event Player)
  • + Facing Direction Of(Event Player) * 1000, Null, All Players(All Teams), True));
  • Create Effect(All Players(All Teams), Sphere, Color(White), Last Of(Global.DebugPos), 0.050, Visible To);
  • Create HUD Text(All Players(All Teams), Null, Null, Last Of(Global.DebugPos), Right, 0, Color(White), Color(White), Color(White),
  • None, Default Visibility);
  • Skip If(Global.DebugPos != False, 3);
  • Global.DebugPos = Ray Cast Hit Position(Eye Position(Event Player), Eye Position(Event Player) + Facing Direction Of(Event Player)
  • * 1000, Null, All Players(All Teams), False);
  • Create Effect(All Players(All Teams), Sphere, Color(White), First Of(Global.DebugPos), 0.050, Visible To Position and Radius);
  • Create HUD Text(All Players(All Teams), Null, Null, First Of(Global.DebugPos), Right, 0, Color(White), Color(White), Color(White),
  • None, Default Visibility);
  • }
  • }
  • disabled rule("(=^-ω-^=) SUBROUTINES (=´∇`=)")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • }
  • rule("Subroutine: Create HUD for new cards drawn")
  • {
  • event
  • {
  • Subroutine;
  • CreateCardHUD;
  • }
  • actions
  • {
  • If(Event Player.DrawCard == Custom String("Defuse"));
  • Create HUD Text(Event Player, Custom String("Defuse"), Null, Null, Left, Event Player.NewCardsCount, Color(Lime Green), Color(
  • White), Color(White), Visible To and String, Default Visibility);
  • Event Player.CardHud[Count Of(Event Player.CardHud)] = Last Text ID;
  • Else If(Event Player.DrawCard == Custom String("Slap"));
  • Create HUD Text(Event Player, Custom String("Slap"), Null, Null, Left, Event Player.NewCardsCount, Color(Orange), Color(White),
  • Color(White), Visible To and String, Default Visibility);
  • Event Player.CardHud[Count Of(Event Player.CardHud)] = Last Text ID;
  • Else If(Event Player.DrawCard == Custom String("Double slap"));
  • Create HUD Text(Event Player, Custom String("Double slap"), Null, Null, Left, Event Player.NewCardsCount, Color(Orange), Color(
  • White), Color(White), Visible To and String, Default Visibility);
  • Event Player.CardHud[Count Of(Event Player.CardHud)] = Last Text ID;
  • Else If(Event Player.DrawCard == Custom String("Triple slap"));
  • Create HUD Text(Event Player, Custom String("Triple slap"), Null, Null, Left, Event Player.NewCardsCount, Color(Orange), Color(
  • White), Color(White), Visible To and String, Default Visibility);
  • Event Player.CardHud[Count Of(Event Player.CardHud)] = Last Text ID;
  • Else If(Event Player.DrawCard == Custom String("Skip"));
  • Create HUD Text(Event Player, Custom String("Skip"), Null, Null, Left, Event Player.NewCardsCount, Color(Sky Blue), Color(White),
  • Color(White), Visible To and String, Default Visibility);
  • Event Player.CardHud[Count Of(Event Player.CardHud)] = Last Text ID;
  • Else If(Event Player.DrawCard == Custom String("Super skip"));
  • Create HUD Text(Event Player, Custom String("Super skip"), Null, Null, Left, Event Player.NewCardsCount, Color(Blue), Color(White),
  • Color(White), Visible To and String, Default Visibility);
  • Event Player.CardHud[Count Of(Event Player.CardHud)] = Last Text ID;
  • Else If(Event Player.DrawCard == Custom String("See the future (x3)"));
  • Create HUD Text(Event Player, Custom String("See the future (x3)"), Null, Null, Left, Event Player.NewCardsCount, Color(Rose),
  • Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.CardHud[Count Of(Event Player.CardHud)] = Last Text ID;
  • Else If(Event Player.DrawCard == Custom String("Alter the future (x3)"));
  • Create HUD Text(Event Player, Custom String("Alter the future (x3)"), Null, Null, Left, Event Player.NewCardsCount, Color(Purple),
  • Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.CardHud[Count Of(Event Player.CardHud)] = Last Text ID;
  • Else If(Event Player.DrawCard == Custom String("Shuffle"));
  • Create HUD Text(Event Player, Custom String("Shuffle"), Null, Null, Left, Event Player.NewCardsCount, Color(Green), Color(White),
  • Color(White), Visible To and String, Default Visibility);
  • Event Player.CardHud[Count Of(Event Player.CardHud)] = Last Text ID;
  • Else If(Event Player.DrawCard == Custom String("Fake shuffle"));
  • Create HUD Text(Event Player, Custom String("Fake shuffle"), Null, Null, Left, Event Player.NewCardsCount, Color(Gray), Color(
  • White), Color(White), Visible To and String, Default Visibility);
  • Event Player.CardHud[Count Of(Event Player.CardHud)] = Last Text ID;
  • Else If(Event Player.DrawCard == Custom String("Draw from the bottom"));
  • Create HUD Text(Event Player, Custom String("Draw from the bottom"), Null, Null, Left, Event Player.NewCardsCount, Color(Yellow),
  • Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.CardHud[Count Of(Event Player.CardHud)] = Last Text ID;
  • Else If(Event Player.DrawCard == Custom String("Reverse"));
  • Create HUD Text(Event Player, Custom String("Reverse"), Null, Null, Left, Event Player.NewCardsCount, Color(Turquoise), Color(
  • White), Color(White), Visible To and String, Default Visibility);
  • Event Player.CardHud[Count Of(Event Player.CardHud)] = Last Text ID;
  • Else If(Event Player.DrawCard == Custom String("Steal"));
  • Create HUD Text(Event Player, Custom String("Steal"), Null, Null, Left, Event Player.NewCardsCount, Color(Aqua), Color(White),
  • Color(White), Visible To and String, Default Visibility);
  • Event Player.CardHud[Count Of(Event Player.CardHud)] = Last Text ID;
  • Else If(Event Player.DrawCard == Custom String("Catomic bomb"));
  • Create HUD Text(Event Player, Custom String("Catomic bomb"), Null, Null, Left, Event Player.NewCardsCount, Color(Black), Color(
  • White), Color(White), Visible To and String, Default Visibility);
  • Event Player.CardHud[Count Of(Event Player.CardHud)] = Last Text ID;
  • Else If(Event Player.DrawCard == Custom String("Swap top and bottom"));
  • Create HUD Text(Event Player, Custom String("Swap top with bottom"), Null, Null, Left, Event Player.NewCardsCount, Color(Violet),
  • Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.CardHud[Count Of(Event Player.CardHud)] = Last Text ID;
  • Else If(Event Player.DrawCard == Custom String("See the future (x5)"));
  • Create HUD Text(Event Player, Custom String("See the future (x5)"), Null, Null, Left, Event Player.NewCardsCount, Color(Rose),
  • Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.CardHud[Count Of(Event Player.CardHud)] = Last Text ID;
  • Else If(Event Player.DrawCard == Custom String("Alter the future (x5)"));
  • Create HUD Text(Event Player, Custom String("Alter the future (x5)"), Null, Null, Left, Event Player.NewCardsCount, Color(Purple),
  • Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.CardHud[Count Of(Event Player.CardHud)] = Last Text ID;
  • End;
  • Event Player.NewCardsCount += 1;
  • }
  • }
  • rule("Subroutine: Next turn (no one dies)")
  • {
  • event
  • {
  • Subroutine;
  • NextTurn;
  • }
  • actions
  • {
  • If(Global.TurnDirection == 1);
  • If(Global.TurnNo < Count Of(Global.Players) - 1);
  • Global.TurnNo += Global.TurnDirection;
  • Global.Turn = Global.Players[Global.TurnNo];
  • Else;
  • Global.TurnNo = 0;
  • Global.Turn = Global.Players[Global.TurnNo];
  • End;
  • Else If(Global.TurnDirection == -1);
  • If(Global.TurnNo > 0);
  • Global.TurnNo += Global.TurnDirection;
  • Global.Turn = Global.Players[Global.TurnNo];
  • Else;
  • Global.TurnNo = Count Of(Global.Players) - 1;
  • Global.Turn = Global.Players[Global.TurnNo];
  • End;
  • End;
  • Global.Turn.ForcedTurn += 1;
  • }
  • }
  • rule("Subroutine: Next turn (a player leaves/dies)")
  • {
  • event
  • {
  • Subroutine;
  • NextTurn2;
  • }
  • actions
  • {
  • If(Global.TurnDirection == 1);
  • If(Global.TurnNo < Count Of(Global.Players));
  • Global.Turn = Global.Players[Global.TurnNo];
  • Else;
  • Global.TurnNo = 0;
  • Global.Turn = Global.Players[Global.TurnNo];
  • End;
  • Else If(Global.TurnDirection == -1);
  • If(Global.TurnNo > 0);
  • Global.TurnNo += Global.TurnDirection;
  • Global.Turn = Global.Players[Global.TurnNo];
  • Else;
  • Global.TurnNo = Count Of(Global.Players) - 1;
  • Global.Turn = Global.Players[Global.TurnNo];
  • End;
  • End;
  • Global.Turn.ForcedTurn += 1;
  • }
  • }
  • rule("Subroutine: Rearrange deck")
  • {
  • event
  • {
  • Subroutine;
  • RearrangeDeck;
  • }
  • actions
  • {
  • Global.Deck = Sorted Array(Global.Deck, Current Array Element);
  • }
  • }
  • rule("Subroutine: Rearrange hand")
  • {
  • event
  • {
  • Subroutine;
  • RearrangeHand;
  • }
  • actions
  • {
  • Event Player.Hand = Sorted Array(Event Player.Hand, Current Array Element);
  • Event Player.CardHud = Sorted Array(Event Player.CardHud, Current Array Element);
  • }
  • }
  • rule("Subroutine: Rearrange players")
  • {
  • event
  • {
  • Subroutine;
  • RearrangePlayers;
  • }
  • actions
  • {
  • Global.Players = Sorted Array(Filtered Array(All Players(All Teams), Current Array Element.Playing == True), Slot Of(
  • Current Array Element));
  • Global.NoPlayers = Count Of(Global.Players);
  • }
  • }
  • rule("Subroutine: Destroy variables and card HUDs on death/leave")
  • {
  • event
  • {
  • Subroutine;
  • DestroyHUD;
  • }
  • actions
  • {
  • While(Count Of(Event Player.CardHud) > 0);
  • Destroy HUD Text(Last Of(Event Player.CardHud));
  • Event Player.CardHud = Remove From Array(Event Player.CardHud, Last Of(Event Player.CardHud));
  • End;
  • disabled For Player Variable(Event Player, Counter, 0, Count Of(Event Player.CardHud), 1);
  • disabled Destroy HUD Text(Event Player.CardHud[Event Player.Counter]);
  • disabled End;
  • Destroy HUD Text(Event Player.TempHud);
  • Wait(0.016, Ignore Condition);
  • disabled Event Player.CardHud = Empty Array;
  • Event Player.Hand = Empty Array;
  • Event Player.TempHud = False;
  • }
  • }
  • rule("Subroutine: End turn on specific cards or deduct 1 turn")
  • {
  • event
  • {
  • Subroutine;
  • EndTurn;
  • }
  • actions
  • {
  • Event Player.ForcedTurn -= 1;
  • Skip If(Global.SlapTurn <= 0, 1);
  • Global.SlapTurn -= 1;
  • If(Event Player.ForcedTurn <= 0);
  • Skip If(Global.PlayerBeingSlapped != Event Player, 1);
  • Global.PlayerBeingSlapped = False;
  • Global.SlapTurn = 0;
  • Event Player.ForcedTurn = 0;
  • Call Subroutine(NextTurn);
  • Global.Feed = Custom String("{0} draws a card and ends turn!", Event Player);
  • Else;
  • Small Message(Event Player, Custom String("You got {0} turn(s) left!", Event Player.ForcedTurn + 1));
  • Global.Feed = Custom String("{0} draws a card and ends one turn!", Event Player);
  • End;
  • Play Effect(All Players(All Teams), Good Pickup Effect, Color(White), Event Player.PlayerPos, Global.PlayerRad);
  • }
  • }
  • rule("Subroutine: Destroy discard cards")
  • {
  • event
  • {
  • Subroutine;
  • DestroyDiscardCard;
  • }
  • actions
  • {
  • Modify Player Variable(Event Player, Hand, Remove From Array By Index, Event Player.PickNo);
  • Destroy HUD Text(Event Player.CardHud[Event Player.PickNo]);
  • Modify Player Variable(Event Player, CardHud, Remove From Array By Index, Event Player.PickNo);
  • }
  • }
  • rule("Subroutine: Create slappable list for player playing slap")
  • {
  • event
  • {
  • Subroutine;
  • CreateSlappableList;
  • }
  • actions
  • {
  • If(Global.Config[7] == True);
  • Event Player.SlappablePlayers = Global.Players;
  • Else;
  • Event Player.SlappablePlayers = Filtered Array(Global.Players, Current Array Element != Event Player);
  • End;
  • }
  • }
  • disabled rule("(=^-ω-^=) INITIALIZATION (=´∇`=)")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • }
  • rule("Workshop settings")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • Global.Radius = Workshop Setting Real(Custom String("General"), Custom String("1. Radius of players circle"), 5.500, 5, 7, 0);
  • Global.PlayerRad = Workshop Setting Real(Custom String("General"), Custom String("2. Radius of each player's ring"), 1.800, 1.500,
  • 3, 0);
  • Global.Config[0] = Workshop Setting Integer(Custom String("Gameplay"), Custom String("1. Initial hand size"), 8, 5, 8, 0);
  • Global.Config[7] = Workshop Setting Toggle(Custom String("Card settings"), Custom String("1. Enable self slap"), True, 0);
  • Global.Config[1] = Workshop Setting Toggle(Custom String("Debug"), Custom String("1. Create dummy bots"), False, 0);
  • Global.Config[2] = Workshop Setting Toggle(Custom String("Debug"), Custom String("2. Create custom locations"), False, 0);
  • Global.Config[3] = Workshop Setting Toggle(Custom String("General"), Custom String("3. Each player's ring is always visible"),
  • True, 0);
  • Global.Config[4] = Workshop Setting Toggle(Custom String("General"), Custom String("4. Enable spectator HUD"), True, 0);
  • Global.Config[5] = Workshop Setting Toggle(Custom String("Gameplay"), Custom String("2. Show each player's hand amount"), True, 0);
  • Global.Config[6] = Workshop Setting Toggle(Custom String("General"), Custom String("5. Stun when out of bound"), True, 0);
  • Global.Config[10] = Workshop Setting Toggle(Custom String("General"), Custom String("6. Start game with a button"), True, 0);
  • }
  • }
  • rule("Initialize variables & modifications")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • Global.BaseCards = Array(Custom String("Defuse"), Custom String("Skip"), Custom String("Shuffle"), Custom String("Slap"),
  • Custom String("Steal"), Custom String("Reverse"), Custom String("Draw from the bottom"), Custom String("Catomic bomb"),
  • Custom String("Double slap"), Custom String("Triple slap"), Custom String("Super skip"), Custom String("Fake shuffle"),
  • Custom String("See the future (x3)"), Custom String("Alter the future (x3)"), Custom String("See the future (x5)"),
  • Custom String("Alter the future (x5)"), Custom String("Swap top and bottom"));
  • Global.TurnDirection = 1;
  • Global.HandSizeWithoutDefuse = Global.Config[0] - 1;
  • Global.Feed = Custom String(" ");
  • Start Damage Modification(All Players(All Teams), All Players(All Teams), 0, Receivers Damagers and Damage Percent);
  • }
  • }
  • rule("Map positions")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • If(Current Map == Map(Workshop Chamber) || Current Map == Map(Workshop Expanse) || Current Map == Map(Workshop Expanse Night)
  • || Current Map == Map(Workshop Island) || Current Map == Map(Workshop Island Night));
  • Global.MapPos = Vector(0, 0, 0);
  • Else If(Current Map == Map(Paris));
  • Global.MapPos = Vector(-54.330, 12.020, 13.280);
  • Else If(Current Map == Map(Blizzard World) || Current Map == Map(Blizzard World Winter));
  • Global.MapPos = Vector(2.928, -6, -76.782);
  • Else If(Current Map == Map(Hollywood) || Current Map == Map(Hollywood Halloween));
  • Global.MapPos = Vector(-12.437, -0.146, 56.796);
  • Else If(Current Map == Map(Dorado));
  • Global.MapPos = Vector(131.027, 11.050, 26.034);
  • Else If(Current Map == Map(Hanamura) || Current Map == Map(Hanamura Winter));
  • Global.MapPos = Vector(-11.080, -0.900, -84.910);
  • Else If(Current Map == Map(Lijiang Night Market) || Current Map == Map(Lijiang Night Market Lunar New Year));
  • Global.MapPos = Vector(0.984, -0.971, -61.367);
  • Else If(Current Map == Map(Nepal Sanctum));
  • Global.MapPos = Array(Vector(83.187, 128.381, 0.011), Vector(80.955, 129.350, -115.395));
  • Else If(Current Map == Map(Nepal Village));
  • Global.MapPos = Array(Vector(-194.982, -93.940, 0.006));
  • Else If(Current Map == Map(Havana));
  • Global.MapPos = Array(Vector(55.688, 5.813, -83.207));
  • Else If(Current Map == Map(King's Row) || Current Map == Map(King's Row Winter));
  • Global.MapPos = Array(Vector(-149.103, -2.853, 24.419));
  • Else If(Current Map == Map(Ilios Lighthouse));
  • Global.MapPos = Vector(336.418, -25.421, 22.893);
  • Else If(Current Map == Map(Volskaya Industries));
  • Global.MapPos = Array(Vector(-13.691, -3.681, 90.264));
  • Else If(Current Map == Map(Eichenwalde) || Current Map == Map(Eichenwalde Halloween));
  • Global.MapPos = Array(Vector(86.751, 12.649, -73.215), Vector(118.978, 8.723, -43.787));
  • disabled Else If(Current Map == Map(Horizon Lunar Colony));
  • disabled Global.MapPos = Vector(-52.766, 4.680, -173.608);
  • End;
  • Wait(0.016, Ignore Condition);
  • Skip If(Count Of(Global.MapPos) > 1, 1);
  • Global.Pos = First Of(Global.MapPos);
  • Skip If(Count Of(Global.MapPos) <= 1, 1);
  • Global.Pos = Random Value In Array(Global.MapPos);
  • }
  • }
  • rule("Create HUD text for each player")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • actions
  • {
  • disabled Create HUD Text(Global.IsGameStarted ? Event Player : Null, Custom String(" {0} CARDS LEFT ", Count Of(Global.Deck)),
  • Custom String("{0} to cycle cards forward\r\n{1} to cycle cards backward\r\n{2}", Custom String("Secondary Fire"),
  • Custom String("Primary Fire"), Custom String(
  • "{0} to play the current card\r\n{1} to draw a card from deck\r\n{2} to toggle 3rd person camera", Custom String("Jump"),
  • Custom String("Crouch"), Custom String("Reload"))), Null, Left, -10, Color(Orange), Color(White), Color(White),
  • Visible To and String, Default Visibility);
  • disabled Create HUD Text(Event Player, Null, Null, Custom String("1. {0}\r\n2. {1}\r\n{2}", Null, Null, Custom String(
  • "3. {0}\r\n4. {1}\r\n5. {2}")), Left, -8, Color(White), Color(White), Color(White), Visible To and String, Default Visibility);
  • disabled Create HUD Text(Event Player, Null, Null, Custom String("6. {0}\r\n7. {1}\n{2}", Null, Null, Custom String(
  • "8. {0}\r\n9. {1}\r\n10. {2}")), Left, -7, Color(White), Color(White), Color(White), Visible To and String,
  • Default Visibility);
  • Create HUD Text(Global.IsGameStarted ? Event Player : Null, Null, Custom String("Current pick ({0}/{1})", Count Of(
  • Event Player.Hand) > 0 ? Event Player.PickNo + 1 : Event Player.PickNo, Count Of(Event Player.Hand)), Null, Top, -8.500, Color(
  • White), Color(Orange), Color(White), Visible To and String, Default Visibility);
  • }
  • }
  • rule("Waiting for players")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Assembling Heroes == False;
  • Global.IsGameStarted == False;
  • }
  • actions
  • {
  • Set Match Time(10000);
  • }
  • }
  • rule("Shorten assemble while waiting")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Assembling Heroes == True;
  • Global.IsGameStarted == False;
  • }
  • actions
  • {
  • Set Match Time(12);
  • }
  • }
  • rule("Initialize players")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Has Spawned(Event Player) == True;
  • Global.Config[2] == False;
  • }
  • actions
  • {
  • Set Primary Fire Enabled(Event Player, False);
  • Set Secondary Fire Enabled(Event Player, False);
  • Set Ability 1 Enabled(Event Player, False);
  • Set Ability 2 Enabled(Event Player, False);
  • Set Melee Enabled(Event Player, False);
  • Disable Game Mode HUD(Event Player);
  • Disable Game Mode In-World UI(Event Player);
  • Disable Hero HUD(Event Player);
  • Disable Movement Collision With Players(Event Player);
  • }
  • }
  • rule("Start game")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.ForceGameStart == True;
  • }
  • actions
  • {
  • Global.Players = Sorted Array(All Players(All Teams), Slot Of(Current Array Element));
  • Global.NoPlayers = Count Of(Global.Players);
  • Global.Angle = 360 / Global.NoPlayers;
  • "Many thanks to TygoOW for the spawning mechanic!"
  • For Global Variable(Counter, 0, Count Of(Global.Players), 1);
  • Global.Players[Global.Counter].PlayerPos = Vector(Cosine From Degrees((1 + Global.Counter) * Global.Angle)
  • * Global.Radius + X Component Of(Global.Pos), Y Component Of(Global.Pos), Sine From Degrees((1 + Global.Counter)
  • * Global.Angle) * Global.Radius + Z Component Of(Global.Pos));
  • Wait(0.150, Ignore Condition);
  • Respawn(Global.Players[Global.Counter]);
  • Teleport(Global.Players[Global.Counter], Nearest Walkable Position(Global.Players[Global.Counter].PlayerPos));
  • Global.Players[Global.Counter].PlayerNo = Global.Counter;
  • End;
  • Global.IsGameStarted = True;
  • Global.Players.Playing = True;
  • Global.Players.PlayingFromStart = True;
  • Destroy HUD Text(Global.TempHud);
  • Pause Match Time;
  • Disable Built-In Game Mode Music;
  • }
  • }
  • rule("Create effects and HUDs when game starts")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.IsGameStarted == True;
  • }
  • actions
  • {
  • Skip If(Global.Config[3] == True, 1);
  • Create Effect(All Players(All Teams), Ring, Color(White), Global.Turn.PlayerPos, Global.PlayerRad, Visible To Position and Radius);
  • Create Effect(Global.Turn.IsExploding ? Null : All Players(All Teams), Light Shaft, Color(White), Global.Turn.PlayerPos,
  • Global.PlayerRad, Visible To Position and Radius);
  • Create Effect(Global.Turn.IsExploding ? All Players(All Teams) : Null, Light Shaft, Color(Red), Global.Turn.PlayerPos,
  • Global.PlayerRad, Visible To Position and Radius);
  • Create HUD Text(Is True For Any(Global.Players, Current Array Element.IsExploding == True) ? All Players(All Teams) : Null,
  • Custom String(" {0} {1} draws an exploding kitten! {2} ", Global.WarnIcon, Global.Players[Global.TurnNo], Global.WarnIcon),
  • Custom String(" "), Custom String(" "), Top, -0.800, Color(Red), Color(White), Color(White), Visible To and String,
  • Default Visibility);
  • Create In-World Text(Global.Turn.IsExploding ? Null : All Players(All Teams), Global.Feed, Global.Pos + Vector(0, 2, 0), 3,
  • Do Not Clip, Visible To Position and String, Color(White), Default Visibility);
  • Create In-World Text(Global.Turn.IsExploding ? All Players(All Teams) : Null, Custom String("{0} seconds until {1} explodes!",
  • Global.Timer, Global.Turn), Global.Pos + Vector(0, 2, 0), 3, Do Not Clip, Visible To Position and String, Color(White),
  • Default Visibility);
  • Create In-World Text(All Players(All Teams), Custom String("{1} {2} got {0} turn(s) left", Global.Turn.ForcedTurn + 0,
  • Hero Icon String(Hero Of(Global.Turn)), Global.Turn), Global.Pos + Vector(0, 2.700, 0), 1.200, Do Not Clip,
  • Visible To Position and String, Color(White), Default Visibility);
  • Create HUD Text(Filtered Array(All Players(All Teams), Current Array Element.Hand[Current Array Element.PickNo] == Custom String(
  • "Defuse")), Custom String("Defuse"), Null, Null, Top, -8, Color(Lime Green), Color(White), Color(White), Visible To and String,
  • Default Visibility);
  • Create HUD Text(Filtered Array(All Players(All Teams), Current Array Element.Hand[Current Array Element.PickNo] == Custom String(
  • "See the future (x5)")), Custom String("See the future (x5)"), Null, Null, Top, -8, Color(Rose), Color(White), Color(White),
  • Visible To and String, Default Visibility);
  • Create HUD Text(Filtered Array(All Players(All Teams), Current Array Element.Hand[Current Array Element.PickNo] == Custom String(
  • "Swap top and bottom")), Custom String("Swap top and bottom"), Null, Null, Top, -8, Color(Violet), Color(White), Color(White),
  • Visible To and String, Default Visibility);
  • Create HUD Text(Filtered Array(All Players(All Teams), Current Array Element.Hand[Current Array Element.PickNo] == Custom String(
  • "Alter the future (x5)")), Custom String("Alter the future (x5)"), Null, Null, Top, -8, Color(Purple), Color(White), Color(
  • White), Visible To and String, Default Visibility);
  • Create HUD Text(Filtered Array(All Players(All Teams), Current Array Element.Hand[Current Array Element.PickNo] == Custom String(
  • "Slap")), Custom String("Slap"), Null, Null, Top, -8, Color(Orange), Color(White), Color(White), Visible To and String,
  • Default Visibility);
  • Create HUD Text(Filtered Array(All Players(All Teams), Current Array Element.Hand[Current Array Element.PickNo] == Custom String(
  • "Skip")), Custom String("Skip"), Null, Null, Top, -8, Color(Sky Blue), Color(White), Color(White), Visible To and String,
  • Default Visibility);
  • Create HUD Text(Filtered Array(All Players(All Teams), Current Array Element.Hand[Current Array Element.PickNo] == Custom String(
  • "See the future (x3)")), Custom String("See the future (x3)"), Null, Null, Top, -8, Color(Rose), Color(White), Color(White),
  • Visible To and String, Default Visibility);
  • Create HUD Text(Filtered Array(All Players(All Teams), Current Array Element.Hand[Current Array Element.PickNo] == Custom String(
  • "Shuffle")), Custom String("Shuffle"), Null, Null, Top, -8, Color(Green), Color(White), Color(White), Visible To and String,
  • Default Visibility);
  • Create HUD Text(Filtered Array(All Players(All Teams), Current Array Element.Hand[Current Array Element.PickNo] == Custom String(
  • "Draw from the bottom")), Custom String("Draw from the bottom"), Null, Null, Top, -8, Color(Yellow), Color(White), Color(
  • White), Visible To and String, Default Visibility);
  • Create HUD Text(Filtered Array(All Players(All Teams), Current Array Element.Hand[Current Array Element.PickNo] == Custom String(
  • "Reverse")), Custom String("Reverse"), Null, Null, Top, -8, Color(Turquoise), Color(White), Color(White),
  • Visible To and String, Default Visibility);
  • Create HUD Text(Filtered Array(All Players(All Teams), Current Array Element.Hand[Current Array Element.PickNo] == Custom String(
  • "Steal")), Custom String("Steal"), Null, Null, Top, -8, Color(Aqua), Color(White), Color(White), Visible To and String,
  • Default Visibility);
  • Create HUD Text(Filtered Array(All Players(All Teams), Current Array Element.Hand[Current Array Element.PickNo] == Custom String(
  • "Double slap")), Custom String("Double slap"), Null, Null, Top, -8, Color(Orange), Color(White), Color(White),
  • Visible To and String, Default Visibility);
  • Create HUD Text(Filtered Array(All Players(All Teams), Current Array Element.Hand[Current Array Element.PickNo] == Custom String(
  • "Super skip")), Custom String("Super skip"), Null, Null, Top, -8, Color(Blue), Color(White), Color(White),
  • Visible To and String, Default Visibility);
  • Create HUD Text(Filtered Array(All Players(All Teams), Current Array Element.Hand[Current Array Element.PickNo] == Custom String(
  • "Alter the future (x3)")), Custom String("Alter the future (x3)"), Null, Null, Top, -8, Color(Purple), Color(White), Color(
  • White), Visible To and String, Default Visibility);
  • Create HUD Text(Filtered Array(All Players(All Teams), Current Array Element.Hand[Current Array Element.PickNo] == Custom String(
  • "Fake shuffle")), Custom String("Fake shuffle"), Null, Null, Top, -8, Color(Gray), Color(White), Color(White),
  • Visible To and String, Default Visibility);
  • Create HUD Text(Filtered Array(All Players(All Teams), Current Array Element.Hand[Current Array Element.PickNo] == Custom String(
  • "Catomic bomb")), Custom String("Catomic bomb"), Null, Null, Top, -8, Color(Black), Color(White), Color(White),
  • Visible To and String, Default Visibility);
  • Create HUD Text(Filtered Array(All Players(All Teams), Current Array Element.Hand[Current Array Element.PickNo] == Custom String(
  • "Triple slap")), Custom String("Triple slap"), Null, Null, Top, -8, Color(Orange), Color(White), Color(White),
  • Visible To and String, Default Visibility);
  • Create Effect(Global.LastTurn == Custom String("Draw") || Global.LastTurn == Custom String("Begin") ? All Players(All Teams)
  • : Null, Light Shaft, Color(White), Global.Pos, Global.Radius - Global.PlayerRad * 2, Visible To Position and Radius);
  • Create Effect(Global.LastTurn == Custom String("Draw") || Global.LastTurn == Custom String("Begin") ? All Players(All Teams)
  • : Null, Ring, Color(White), Global.Pos, Global.Radius - Global.PlayerRad * 2, Visible To Position and Radius);
  • Create Effect(Global.LastTurn == Custom String("Defuse") ? All Players(All Teams) : Null, Light Shaft, Color(Lime Green),
  • Global.Pos, Global.Radius - Global.PlayerRad * 2, Visible To Position and Radius);
  • Create Effect(Global.LastTurn == Custom String("Defuse") ? All Players(All Teams) : Null, Ring, Color(Lime Green), Global.Pos,
  • Global.Radius - Global.PlayerRad * 2, Visible To Position and Radius);
  • Create Effect(Global.LastTurn == Custom String("Swap top and bottom") ? All Players(All Teams) : Null, Light Shaft, Color(Violet),
  • Global.Pos, Global.Radius - Global.PlayerRad * 2, Visible To Position and Radius);
  • Create Effect(Global.LastTurn == Custom String("Swap top and bottom") ? All Players(All Teams) : Null, Ring, Color(Violet),
  • Global.Pos, Global.Radius - Global.PlayerRad * 2, Visible To Position and Radius);
  • Create Effect(Global.LastTurn == Custom String("Exploding Kitten") ? All Players(All Teams) : Null, Light Shaft, Color(Red),
  • Global.Pos, Global.Radius - Global.PlayerRad * 2, Visible To Position and Radius);
  • Create Effect(Global.LastTurn == Custom String("Exploding Kitten") ? All Players(All Teams) : Null, Ring, Color(Red), Global.Pos,
  • Global.Radius - Global.PlayerRad * 2, Visible To Position and Radius);
  • Create Effect(Global.LastTurn == Custom String("Slap") ? All Players(All Teams) : Null, Light Shaft, Color(Orange), Global.Pos,
  • Global.Radius - Global.PlayerRad * 2, Visible To Position and Radius);
  • Create Effect(Global.LastTurn == Custom String("Slap") ? All Players(All Teams) : Null, Ring, Color(Orange), Global.Pos,
  • Global.Radius - Global.PlayerRad * 2, Visible To Position and Radius);
  • Create Effect(Global.LastTurn == Custom String("Skip") ? All Players(All Teams) : Null, Light Shaft, Color(Sky Blue), Global.Pos,
  • Global.Radius - Global.PlayerRad * 2, Visible To Position and Radius);
  • Create Effect(Global.LastTurn == Custom String("Skip") ? All Players(All Teams) : Null, Ring, Color(Sky Blue), Global.Pos,
  • Global.Radius - Global.PlayerRad * 2, Visible To Position and Radius);
  • Create Effect(Global.LastTurn == Custom String("See the future (x3)") || Global.LastTurn == Custom String("See the future (x5)")
  • ? All Players(All Teams) : Null, Light Shaft, Color(Rose), Global.Pos, Global.Radius - Global.PlayerRad * 2,
  • Visible To Position and Radius);
  • Create Effect(Global.LastTurn == Custom String("See the future (x3)") || Global.LastTurn == Custom String("See the future (x5)")
  • ? All Players(All Teams) : Null, Ring, Color(Rose), Global.Pos, Global.Radius - Global.PlayerRad * 2,
  • Visible To Position and Radius);
  • Create Effect(Global.LastTurn == Custom String("Shuffle") || Global.LastTurn == Custom String("Fake shuffle") ? All Players(
  • All Teams) : Null, Light Shaft, Color(Green), Global.Pos, Global.Radius - Global.PlayerRad * 2,
  • Visible To Position and Radius);
  • Create Effect(Global.LastTurn == Custom String("Shuffle") || Global.LastTurn == Custom String("Fake shuffle") ? All Players(
  • All Teams) : Null, Ring, Color(Green), Global.Pos, Global.Radius - Global.PlayerRad * 2, Visible To Position and Radius);
  • Create Effect(Global.LastTurn == Custom String("Draw from the bottom") ? All Players(All Teams) : Null, Light Shaft, Color(Yellow),
  • Global.Pos, Global.Radius - Global.PlayerRad * 2, Visible To Position and Radius);
  • Create Effect(Global.LastTurn == Custom String("Draw from the bottom") ? All Players(All Teams) : Null, Ring, Color(Yellow),
  • Global.Pos, Global.Radius - Global.PlayerRad * 2, Visible To Position and Radius);
  • Create Effect(Global.LastTurn == Custom String("Reverse") ? All Players(All Teams) : Null, Light Shaft, Color(Turquoise),
  • Global.Pos, Global.Radius - Global.PlayerRad * 2, Visible To Position and Radius);
  • Create Effect(Global.LastTurn == Custom String("Reverse") ? All Players(All Teams) : Null, Ring, Color(Turquoise), Global.Pos,
  • Global.Radius - Global.PlayerRad * 2, Visible To Position and Radius);
  • Create Effect(Global.LastTurn == Custom String("Steal") ? All Players(All Teams) : Null, Light Shaft, Color(Aqua), Global.Pos,
  • Global.Radius - Global.PlayerRad * 2, Visible To Position and Radius);
  • Create Effect(Global.LastTurn == Custom String("Steal") ? All Players(All Teams) : Null, Ring, Color(Aqua), Global.Pos,
  • Global.Radius - Global.PlayerRad * 2, Visible To Position and Radius);
  • Create Effect(Global.LastTurn == Custom String("Double slap") ? All Players(All Teams) : Null, Light Shaft, Color(Orange),
  • Global.Pos, Global.Radius - Global.PlayerRad * 2, Visible To Position and Radius);
  • Create Effect(Global.LastTurn == Custom String("Double slap") ? All Players(All Teams) : Null, Ring, Color(Orange), Global.Pos,
  • Global.Radius - Global.PlayerRad * 2, Visible To Position and Radius);
  • Create Effect(Global.LastTurn == Custom String("Triple slap") ? All Players(All Teams) : Null, Light Shaft, Color(Orange),
  • Global.Pos, Global.Radius - Global.PlayerRad * 2, Visible To Position and Radius);
  • Create Effect(Global.LastTurn == Custom String("Triple slap") ? All Players(All Teams) : Null, Ring, Color(Orange), Global.Pos,
  • Global.Radius - Global.PlayerRad * 2, Visible To Position and Radius);
  • Create Effect(Global.LastTurn == Custom String("Super skip") ? All Players(All Teams) : Null, Light Shaft, Color(Blue), Global.Pos,
  • Global.Radius - Global.PlayerRad * 2, Visible To Position and Radius);
  • Create Effect(Global.LastTurn == Custom String("Super skip") ? All Players(All Teams) : Null, Ring, Color(Blue), Global.Pos,
  • Global.Radius - Global.PlayerRad * 2, Visible To Position and Radius);
  • Create Effect(Global.LastTurn == Custom String("Alter the future (x3)") || Global.LastTurn == Custom String(
  • "Alter the future (x5)") ? All Players(All Teams) : Null, Light Shaft, Color(Purple), Global.Pos,
  • Global.Radius - Global.PlayerRad * 2, Visible To Position and Radius);
  • Create Effect(Global.LastTurn == Custom String("Alter the future (x3)") || Global.LastTurn == Custom String(
  • "Alter the future (x5)") ? All Players(All Teams) : Null, Ring, Color(Purple), Global.Pos,
  • Global.Radius - Global.PlayerRad * 2, Visible To Position and Radius);
  • disabled Create Effect(Global.LastTurn == Custom String("Fake shuffle") ? All Players(All Teams) : Null, Light Shaft, Color(Green),
  • Global.Pos, Global.Radius - Global.PlayerRad * 2, Visible To Position and Radius);
  • disabled Create Effect(Global.LastTurn == Custom String("Fake shuffle") ? All Players(All Teams) : Null, Ring, Color(Green), Global.Pos,
  • Global.Radius - Global.PlayerRad * 2, Visible To Position and Radius);
  • Create Effect(Global.LastTurn == Custom String("Catomic bomb") ? All Players(All Teams) : Null, Light Shaft, Color(Black),
  • Global.Pos, Global.Radius - Global.PlayerRad * 2, Visible To Position and Radius);
  • Create Effect(Global.LastTurn == Custom String("Catomic bomb") ? All Players(All Teams) : Null, Ring, Color(Black), Global.Pos,
  • Global.Radius - Global.PlayerRad * 2, Visible To Position and Radius);
  • Create Effect(Global.Turn.IsExploding ? All Players(All Teams) : Null, Bad Aura, Color(Red), Global.Turn, 1.500,
  • Visible To Position and Radius);
  • Create HUD Text(Global.IsGameStarted ? All Players(All Teams) : Null, Custom String(" {0} CARDS LEFT ", Count Of(Global.Deck)),
  • Custom String("{0} to cycle cards forward\r\n{1} to cycle cards backward\r\n{2}", Input Binding String(Button(Secondary Fire)),
  • Input Binding String(Button(Primary Fire)), Custom String(
  • "{0} to play the current card\r\n{1} to draw a card from deck\r\n{2}", Input Binding String(Button(Jump)),
  • Input Binding String(Button(Crouch)), Custom String("{0} to show tips of current card\r\n{1} to toggle third person mode",
  • Input Binding String(Button(Melee)), Input Binding String(Button(Reload))))), Null, Left, -10, Color(Orange), Color(White),
  • Color(White), Visible To and String, Default Visibility);
  • Create HUD Text(Global.Turn.IsHidingKitten ? Global.Turn : Null, Custom String(" Hide the kitten! {0} {1} {2} ", Icon String(
  • Arrow: Left), Global.Turn.HideKittenNo, Icon String(Arrow: Right)), Custom String(
  • "{0} to cycle forward\r\n{1} to cycle backward\r\n{2} to confirm", Input Binding String(Button(Ability 2)),
  • Input Binding String(Button(Ultimate)), Input Binding String(Button(Interact))), Null, Top, -0.900, Color(Lime Green), Color(
  • White), Color(White), Visible To and String, Default Visibility);
  • Create HUD Text(Global.Turn.IsStealing ? Global.Turn : Null, Custom String(" Choose a player to steal from: {0} {1} {2} ",
  • Icon String(Arrow: Left), Custom String("{0} {1}", Hero Icon String(Hero Of(
  • Global.Turn.StealablePlayers[Global.Turn.StealNo])), Global.Turn.StealablePlayers[Global.Turn.StealNo]), Icon String(
  • Arrow: Right)), Custom String("{0} to cycle forward\r\n{1} to cycle backward\r\n{2} to confirm", Input Binding String(Button(
  • Ability 2)), Input Binding String(Button(Ultimate)), Input Binding String(Button(Interact))), Null, Top, -0.900, Color(Aqua),
  • Color(White), Color(White), Visible To and String, Default Visibility);
  • Create HUD Text(Global.Turn.IsSlapping ? Global.Turn : Null, Custom String(" Choose a player to slap: {0} {1} {2} ", Icon String(
  • Arrow: Left), Custom String("{0} {1}", Hero Icon String(Hero Of(Global.Turn.SlappablePlayers[Global.Turn.SlapNo])),
  • Global.Turn.SlappablePlayers[Global.Turn.SlapNo]), Icon String(Arrow: Right)), Custom String(
  • "{0} to cycle forward\r\n{1} to cycle backward\r\n{2} to confirm", Input Binding String(Button(Ability 2)),
  • Input Binding String(Button(Ultimate)), Input Binding String(Button(Interact))), Null, Top, -0.900, Color(Orange), Color(
  • White), Color(White), Visible To and String, Default Visibility);
  • Create HUD Text(Global.Turn.IsAlteringTheFuture && Global.Turn.LastCardRange == 3 ? Global.Turn : Null, Custom String(
  • " The next 3 cards in the deck: \r\n 1. {0}\r\n 2. {1}\r\n 3. {2}", Global.Turn.AlterTheFutureDeck[0],
  • Global.Turn.AlterTheFutureDeck[1] == True ? Global.Turn.AlterTheFutureDeck[1] : Custom String("None"),
  • Global.Turn.AlterTheFutureDeck[2] == True ? Global.Turn.AlterTheFutureDeck[2] : Custom String("None")), Custom String(
  • "{0} to randomize orders\r\n{1} to confirm\r\n \r\n \r\n \r\n \r\n \r\n \r\n ", Input Binding String(Button(Ability 2)),
  • Input Binding String(Button(Interact))), Null, Top, -0.900, Color(Purple), Color(White), Color(White), Visible To and String,
  • Default Visibility);
  • Create HUD Text(Global.Turn.IsAlteringTheFuture && Global.Turn.LastCardRange == 5 ? Global.Turn : Null, Custom String(
  • " The next 5 cards in the deck: \r\n 1. {0}\r\n 2. {1}\r\n{2}", Global.Turn.AlterTheFutureDeck[0],
  • Global.Turn.AlterTheFutureDeck[1] == True ? Global.Turn.AlterTheFutureDeck[1] : Custom String("None"), Custom String(
  • " 3. {0}\r\n 4. {1}\r\n 5. {2}",
  • Global.Turn.AlterTheFutureDeck[2] == True ? Global.Turn.AlterTheFutureDeck[2] : Custom String("None"),
  • Global.Turn.AlterTheFutureDeck[3] == True ? Global.Turn.AlterTheFutureDeck[3] : Custom String("None"),
  • Global.Turn.AlterTheFutureDeck[4] == True ? Global.Turn.AlterTheFutureDeck[4] : Custom String("None"))), Custom String(
  • "{0} to randomize orders\r\n{1} to confirm\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ", Input Binding String(
  • Button(Ability 2)), Input Binding String(Button(Interact))), Null, Top, -0.900, Color(Purple), Color(White), Color(White),
  • Visible To and String, Default Visibility);
  • Create HUD Text(Filtered Array(All Players(All Teams),
  • Current Array Element.Exploded == True && Current Array Element.HideMessage == False), Custom String("{0}\r\n{1}\r\n{2}",
  • Custom String(" (=X ᆺ X=)"), Custom String(
  • " You died! You're now spectating the game.\r\n Please do not ghost! The dead don't speak, meow! "), Custom String(
  • " Press Interact to hide this message.")), Custom String(" \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n "), Null,
  • Top, -0.900, Color(Red), Color(White), Color(White), Visible To and String, Default Visibility);
  • }
  • }
  • rule("Initialize playing players when game starts")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.IsGameStarted == True;
  • Event Player.Playing == True;
  • Has Spawned(Event Player) == True;
  • }
  • actions
  • {
  • Skip If(Global.Config[3] == False, 2);
  • Create Effect(All Players(All Teams), Ring, Color(White), Event Player.PlayerPos, Global.PlayerRad,
  • Visible To Position and Radius);
  • Event Player.Effect = Last Created Entity;
  • While(Distance Between(Event Player.PlayerPos, Event Player) > Global.PlayerRad);
  • Teleport(Event Player, Nearest Walkable Position(Event Player.PlayerPos));
  • Wait(0.016, Ignore Condition);
  • End;
  • Set Facing(Event Player, Direction Towards(Event Player, Global.Pos), To World);
  • Event Player.Ready = True;
  • Skip If(Global.Config[5] == False, 1);
  • Create In-World Text(Is Alive(Event Player) ? All Players(All Teams) : Null, Custom String("{0}", Count Of(Event Player.Hand)),
  • Event Player, 1.500, Clip Against Surfaces, Visible To Position and String, Color(White), Default Visibility);
  • }
  • }
  • rule("Set deck array and deal cards to every player")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.IsGameStarted == True;
  • }
  • actions
  • {
  • If(Count Of(Global.Players) < 4);
  • Global.Deck = Array(Custom String("Slap"), Custom String("Slap"), Custom String("Slap"), Custom String("Slap"), Custom String(
  • "Slap"), Custom String("Slap"), Custom String("Skip"), Custom String("Skip"), Custom String("Skip"), Custom String("Skip"),
  • Custom String("See the future (x3)"), Custom String("See the future (x3)"), Custom String("See the future (x3)"),
  • Custom String("See the future (x5)"), Custom String("Alter the future (x3)"), Custom String("Alter the future (x3)"),
  • Custom String("Alter the future (x5)"), Custom String("Shuffle"), Custom String("Shuffle"), Custom String("Shuffle"),
  • Custom String("Shuffle"), Custom String("Shuffle"), Custom String("Shuffle"), Custom String("Draw from the bottom"),
  • Custom String("Draw from the bottom"), Custom String("Draw from the bottom"), Custom String("Reverse"), Custom String(
  • "Reverse"), Custom String("Reverse"), Custom String("Reverse"), Custom String("Steal"), Custom String("Steal"), Custom String(
  • "Super skip"), Custom String("Double slap"), Custom String("Double slap"), Custom String("Double slap"), Custom String(
  • "Triple slap"), Custom String("Fake shuffle"), Custom String("Fake shuffle"), Custom String("Catomic bomb"), Custom String(
  • "Swap top and bottom"));
  • disabled Global.Deck = Array(Custom String("Triple slap"), Custom String("Double slap"), Custom String("Double slap"), Custom String(
  • "Slap"), Custom String("Slap"), Custom String("Slap"), Custom String("Slap"), Custom String("Slap"), Custom String(
  • "Super skip"), Custom String("Super skip"), Custom String("Skip"), Custom String("Skip"), Custom String("Skip"), Custom String(
  • "Skip"), Custom String("Skip"), Custom String("Skip"), Custom String("Alter the future"), Custom String("Alter the future"),
  • Custom String("See the future"), Custom String("See the future"), Custom String("See the future"), Custom String(
  • "See the future"), Custom String("Fake shuffle"), Custom String("Shuffle"), Custom String("Shuffle"), Custom String("Shuffle"),
  • Custom String("Shuffle"), Custom String("Draw from the bottom"), Custom String("Draw from the bottom"), Custom String(
  • "Draw from the bottom"), Custom String("Draw from the bottom"), Custom String("Draw from the bottom"), Custom String(
  • "Reverse"), Custom String("Reverse"), Custom String("Reverse"), Custom String("Reverse"), Custom String("Reverse"),
  • Custom String("Reverse"), Custom String("Reverse"), Custom String("Catomic bomb"), Custom String("Steal"), Custom String(
  • "Steal"), Custom String("Steal"), Custom String("Steal"));
  • Else If(Count Of(Global.Players) < 9);
  • Global.Deck = Array(Custom String("Slap"), Custom String("Slap"), Custom String("Slap"), Custom String("Slap"), Custom String(
  • "Slap"), Custom String("Slap"), Custom String("Slap"), Custom String("Slap"), Custom String("Slap"), Custom String("Slap"),
  • Custom String("Skip"), Custom String("Skip"), Custom String("Skip"), Custom String("Skip"), Custom String("Skip"),
  • Custom String("Skip"), Custom String("Skip"), Custom String("Skip"), Custom String("See the future (x3)"), Custom String(
  • "See the future (x3)"), Custom String("See the future (x3)"), Custom String("See the future (x3)"), Custom String(
  • "See the future (x5)"), Custom String("See the future (x5)"), Custom String("Alter the future (x3)"), Custom String(
  • "Alter the future (x3)"), Custom String("Alter the future (x3)"), Custom String("Alter the future (x5)"), Custom String(
  • "Alter the future (x5)"), Custom String("Shuffle"), Custom String("Shuffle"), Custom String("Shuffle"), Custom String(
  • "Shuffle"), Custom String("Shuffle"), Custom String("Shuffle"), Custom String("Shuffle"), Custom String("Shuffle"),
  • Custom String("Draw from the bottom"), Custom String("Draw from the bottom"), Custom String("Draw from the bottom"),
  • Custom String("Draw from the bottom"), Custom String("Reverse"), Custom String("Reverse"), Custom String("Reverse"),
  • Custom String("Reverse"), Custom String("Reverse"), Custom String("Reverse"), Custom String("Reverse"), Custom String("Steal"),
  • Custom String("Steal"), Custom String("Steal"), Custom String("Steal"), Custom String("Super skip"), Custom String(
  • "Super skip"), Custom String("Double slap"), Custom String("Double slap"), Custom String("Double slap"), Custom String(
  • "Double slap"), Custom String("Triple slap"), Custom String("Triple slap"), Custom String("Fake shuffle"), Custom String(
  • "Fake shuffle"), Custom String("Catomic bomb"), Custom String("Swap top and bottom"), Custom String("Swap top and bottom"),
  • Custom String("Swap top and bottom"));
  • disabled Global.Deck = Array(Custom String("Triple slap"), Custom String("Triple slap"), Custom String("Double slap"), Custom String(
  • "Double slap"), Custom String("Double slap"), Custom String("Slap"), Custom String("Slap"), Custom String("Slap"),
  • Custom String("Slap"), Custom String("Slap"), Custom String("Slap"), Custom String("Slap"), Custom String("Super skip"),
  • Custom String("Super skip"), Custom String("Super skip"), Custom String("Super skip"), Custom String("Skip"), Custom String(
  • "Skip"), Custom String("Skip"), Custom String("Skip"), Custom String("Skip"), Custom String("Skip"), Custom String("Skip"),
  • Custom String("Skip"), Custom String("Alter the future"), Custom String("Alter the future"), Custom String("See the future"),
  • Custom String("See the future"), Custom String("See the future"), Custom String("See the future"), Custom String(
  • "Fake shuffle"), Custom String("Fake shuffle"), Custom String("Shuffle"), Custom String("Shuffle"), Custom String("Shuffle"),
  • Custom String("Shuffle"), Custom String("Shuffle"), Custom String("Shuffle"), Custom String("Draw from the bottom"),
  • Custom String("Draw from the bottom"), Custom String("Draw from the bottom"), Custom String("Draw from the bottom"),
  • Custom String("Draw from the bottom"), Custom String("Draw from the bottom"), Custom String("Draw from the bottom"),
  • Custom String("Draw from the bottom"), Custom String("Catomic bomb"), Custom String("Catomic bomb"), Custom String("Reverse"),
  • Custom String("Reverse"), Custom String("Reverse"), Custom String("Reverse"), Custom String("Reverse"), Custom String(
  • "Reverse"), Custom String("Reverse"), Custom String("Reverse"), Custom String("Steal"), Custom String("Steal"), Custom String(
  • "Steal"), Custom String("Steal"), Custom String("Steal"), Custom String("Steal"), Custom String("Steal"), Custom String(
  • "Steal"));
  • End;
  • Wait(0.016, Ignore Condition);
  • Global.Deck = Randomized Array(Global.Deck);
  • For Global Variable(Counter2, 0, Count Of(Global.Players), 1);
  • Global.Players[Global.Counter2].Hand = Array(Custom String("Defuse"));
  • Modify Player Variable(Global.Players[Global.Counter2], Hand, Append To Array, Array Slice(Global.Deck,
  • Global.Counter2 * Global.HandSizeWithoutDefuse, Global.HandSizeWithoutDefuse));
  • Wait(0.016, Ignore Condition);
  • End;
  • Wait(0.016, Ignore Condition);
  • Global.Deck = Array Slice(Global.Deck, Count Of(Global.Players) * Global.HandSizeWithoutDefuse, Count Of(Global.Deck) - Count Of(
  • Global.Players) * Global.HandSizeWithoutDefuse);
  • }
  • }
  • rule("Create card HUD texts for each player")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.IsGameStarted == True;
  • Has Spawned(Event Player) == True;
  • Event Player.Playing == True;
  • Count Of(Event Player.Hand) > 1;
  • }
  • actions
  • {
  • For Player Variable(Event Player, Counter, 0, Count Of(Event Player.Hand), 1);
  • If(Event Player.Hand[Event Player.Counter] == Custom String("Defuse"));
  • Create HUD Text(Event Player, Custom String("Defuse"), Null, Null, Left, -8 + Event Player.Counter, Color(Lime Green), Color(
  • White), Color(White), Visible To and String, Default Visibility);
  • Event Player.CardHud[Event Player.Counter] = Last Text ID;
  • Else If(Event Player.Hand[Event Player.Counter] == Custom String("Slap"));
  • Create HUD Text(Event Player, Custom String("Slap"), Null, Null, Left, -8 + Event Player.Counter, Color(Orange), Color(White),
  • Color(White), Visible To and String, Default Visibility);
  • Event Player.CardHud[Event Player.Counter] = Last Text ID;
  • Else If(Event Player.Hand[Event Player.Counter] == Custom String("Skip"));
  • Create HUD Text(Event Player, Custom String("Skip"), Null, Null, Left, -8 + Event Player.Counter, Color(Sky Blue), Color(White),
  • Color(White), Visible To and String, Default Visibility);
  • Event Player.CardHud[Event Player.Counter] = Last Text ID;
  • Else If(Event Player.Hand[Event Player.Counter] == Custom String("See the future (x3)"));
  • Create HUD Text(Event Player, Custom String("See the future (x3)"), Null, Null, Left, -8 + Event Player.Counter, Color(Rose),
  • Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.CardHud[Event Player.Counter] = Last Text ID;
  • Else If(Event Player.Hand[Event Player.Counter] == Custom String("Shuffle"));
  • Create HUD Text(Event Player, Custom String("Shuffle"), Null, Null, Left, -8 + Event Player.Counter, Color(Green), Color(White),
  • Color(White), Visible To and String, Default Visibility);
  • Event Player.CardHud[Event Player.Counter] = Last Text ID;
  • Else If(Event Player.Hand[Event Player.Counter] == Custom String("Draw from the bottom"));
  • Create HUD Text(Event Player, Custom String("Draw from the bottom"), Null, Null, Left, -8 + Event Player.Counter, Color(Yellow),
  • Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.CardHud[Event Player.Counter] = Last Text ID;
  • Else If(Event Player.Hand[Event Player.Counter] == Custom String("Reverse"));
  • Create HUD Text(Event Player, Custom String("Reverse"), Null, Null, Left, -8 + Event Player.Counter, Color(Turquoise), Color(
  • White), Color(White), Visible To and String, Default Visibility);
  • Event Player.CardHud[Event Player.Counter] = Last Text ID;
  • Else If(Event Player.Hand[Event Player.Counter] == Custom String("Steal"));
  • Create HUD Text(Event Player, Custom String("Steal"), Null, Null, Left, -8 + Event Player.Counter, Color(Aqua), Color(White),
  • Color(White), Visible To and String, Default Visibility);
  • Event Player.CardHud[Event Player.Counter] = Last Text ID;
  • Else If(Event Player.Hand[Event Player.Counter] == Custom String("Double slap"));
  • Create HUD Text(Event Player, Custom String("Double slap"), Null, Null, Left, -8 + Event Player.Counter, Color(Orange), Color(
  • White), Color(White), Visible To and String, Default Visibility);
  • Event Player.CardHud[Event Player.Counter] = Last Text ID;
  • Else If(Event Player.Hand[Event Player.Counter] == Custom String("Super skip"));
  • Create HUD Text(Event Player, Custom String("Super skip"), Null, Null, Left, -8 + Event Player.Counter, Color(Blue), Color(White),
  • Color(White), Visible To and String, Default Visibility);
  • Event Player.CardHud[Event Player.Counter] = Last Text ID;
  • Else If(Event Player.Hand[Event Player.Counter] == Custom String("Alter the future (x3)"));
  • Create HUD Text(Event Player, Custom String("Alter the future (x3)"), Null, Null, Left, -8 + Event Player.Counter, Color(Purple),
  • Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.CardHud[Event Player.Counter] = Last Text ID;
  • Else If(Event Player.Hand[Event Player.Counter] == Custom String("Fake shuffle"));
  • Create HUD Text(Event Player, Custom String("Fake shuffle"), Null, Null, Left, -8 + Event Player.Counter, Color(Gray), Color(
  • White), Color(White), Visible To and String, Default Visibility);
  • Event Player.CardHud[Event Player.Counter] = Last Text ID;
  • Else If(Event Player.Hand[Event Player.Counter] == Custom String("Triple slap"));
  • Create HUD Text(Event Player, Custom String("Triple slap"), Null, Null, Left, -8 + Event Player.Counter, Color(Orange), Color(
  • White), Color(White), Visible To and String, Default Visibility);
  • Event Player.CardHud[Event Player.Counter] = Last Text ID;
  • Else If(Event Player.Hand[Event Player.Counter] == Custom String("Catomic bomb"));
  • Create HUD Text(Event Player, Custom String("Catomic bomb"), Null, Null, Left, -8 + Event Player.Counter, Color(Black), Color(
  • White), Color(White), Visible To and String, Default Visibility);
  • Event Player.CardHud[Event Player.Counter] = Last Text ID;
  • Else If(Event Player.Hand[Event Player.Counter] == Custom String("See the future (x5)"));
  • Create HUD Text(Event Player, Custom String("See the future (x5)"), Null, Null, Left, -8 + Event Player.Counter, Color(Rose),
  • Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.CardHud[Event Player.Counter] = Last Text ID;
  • Else If(Event Player.Hand[Event Player.Counter] == Custom String("Swap top and bottom"));
  • Create HUD Text(Event Player, Custom String("Swap top and bottom"), Null, Null, Left, -8 + Event Player.Counter, Color(Violet),
  • Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.CardHud[Event Player.Counter] = Last Text ID;
  • Else If(Event Player.Hand[Event Player.Counter] == Custom String("Alter the future (x5)"));
  • Create HUD Text(Event Player, Custom String("Alter the future (x5)"), Null, Null, Left, -8 + Event Player.Counter, Color(Purple),
  • Color(White), Color(White), Visible To and String, Default Visibility);
  • Event Player.CardHud[Event Player.Counter] = Last Text ID;
  • End;
  • Wait(0.016, Ignore Condition);
  • End;
  • Global.CardHUDCreated = True;
  • }
  • }
  • rule("Add Exploding Kittens to the deck array and shuffle the cards")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.IsGameStarted == True;
  • Global.CardHUDCreated == True;
  • }
  • actions
  • {
  • Global.ExplodingKittensDeck = Array(Custom String("Exploding Kitten"), Custom String("Exploding Kitten"), Custom String(
  • "Exploding Kitten"), Custom String("Exploding Kitten"), Custom String("Exploding Kitten"), Custom String("Exploding Kitten"),
  • Custom String("Exploding Kitten"), Custom String("Exploding Kitten"), Custom String("Exploding Kitten"), Custom String(
  • "Exploding Kitten"));
  • Modify Global Variable(Deck, Append To Array, Array Slice(Global.ExplodingKittensDeck, 0, Count Of(Global.Players) - 1));
  • Global.DefuseDeck = Array(Custom String("Defuse"), Custom String("Defuse"), Custom String("Defuse"), Custom String("Defuse"),
  • Custom String("Defuse"));
  • Modify Global Variable(Deck, Append To Array, Array Slice(Global.DefuseDeck, 0, Count Of(Global.Players) < 3 ? 2 : 5));
  • Wait(0.016, Ignore Condition);
  • Global.Deck = Randomized Array(Global.Deck);
  • Global.IsInitializationCompleted = True;
  • }
  • }
  • rule("Begin first turn")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.IsGameStarted == True;
  • Global.IsInitializationCompleted == True;
  • }
  • actions
  • {
  • Global.TurnNo = Random Integer(0, Count Of(Global.Players) - 1);
  • disabled Global.TurnNo = 0;
  • Global.Turn = Global.Players[Global.TurnNo];
  • Global.Feed = Custom String("{0}'s turn", Global.Turn);
  • Global.LastTurn = Custom String("Begin");
  • Global.Turn.ForcedTurn += 1;
  • }
  • }
  • disabled rule("(=^-ω-^=) GAME LOGIC & MECHANIC (=´∇`=)")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • }
  • rule("Automatically start game when lobby has enough players")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Count Of(Filtered Array(All Players(All Teams), Has Spawned(Current Array Element) == True)) == Count Of(All Players(All Teams));
  • Count Of(Filtered Array(All Players(All Teams), Has Spawned(Current Array Element) == True)) > 1;
  • Global.IsGameStarted == False;
  • Global.Config[2] == False;
  • Global.Config[10] == False;
  • }
  • actions
  • {
  • Global.ForceGameStart = True;
  • }
  • }
  • rule("Judge holds Jump to start game")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Count Of(Filtered Array(All Players(All Teams), Has Spawned(Current Array Element) == True)) == Count Of(All Players(All Teams));
  • Count Of(Filtered Array(All Players(All Teams), Has Spawned(Current Array Element) == True)) > 1;
  • Global.IsGameStarted == False;
  • Global.Config[2] == False;
  • Global.Config[10] == True;
  • Is Button Held(Host Player, Button(Jump)) == True;
  • Has Spawned(Host Player) == True;
  • }
  • actions
  • {
  • Wait(1, Abort When False);
  • Global.ForceGameStart = True;
  • }
  • }
  • rule("Show card tips")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Has Spawned(Event Player) == True;
  • Global.IsGameStarted == True;
  • Is Button Held(Event Player, Button(Melee)) == True;
  • Event Player.Playing == True;
  • }
  • actions
  • {
  • If(Event Player.Hand[Event Player.PickNo] == Custom String("Defuse"));
  • Small Message(Event Player, Custom String("Defuse: Deactivate an Exploding Kitten"));
  • Else If(Event Player.Hand[Event Player.PickNo] == Custom String("Slap"));
  • Small Message(Event Player, Custom String("Slap: Force a person of choice to take 1 turn (stacks)"));
  • Else If(Event Player.Hand[Event Player.PickNo] == Custom String("Double slap"));
  • Small Message(Event Player, Custom String("Double slap: Force a person of choice to take 2 turns (stacks)"));
  • Else If(Event Player.Hand[Event Player.PickNo] == Custom String("Triple slap"));
  • Small Message(Event Player, Custom String("Triple slap: Force a person of choice to take 3 turns (stacks)"));
  • Else If(Event Player.Hand[Event Player.PickNo] == Custom String("Skip"));
  • Small Message(Event Player, Custom String("Skip: skip 1 turn"));
  • Else If(Event Player.Hand[Event Player.PickNo] == Custom String("Super skip"));
  • Small Message(Event Player, Custom String("Skip: skip all of your turns"));
  • Else If(Event Player.Hand[Event Player.PickNo] == Custom String("See the future (x3)"));
  • Small Message(Event Player, Custom String("See the future (x3): See the first 3 cards in the deck"));
  • Else If(Event Player.Hand[Event Player.PickNo] == Custom String("See the future (x5)"));
  • Small Message(Event Player, Custom String("See the future (x5): See the first 5 cards in the deck"));
  • Else If(Event Player.Hand[Event Player.PickNo] == Custom String("Alter the future (x3)"));
  • Small Message(Event Player, Custom String("Alter the future (x3): Reorder the first 3 cards of the deck"));
  • Else If(Event Player.Hand[Event Player.PickNo] == Custom String("Alter the future (x5)"));
  • Small Message(Event Player, Custom String("Alter the future (x5): Reorder the first 5 cards of the deck"));
  • Else If(Event Player.Hand[Event Player.PickNo] == Custom String("Reverse"));
  • Small Message(Event Player, Custom String("Reverse: Reverse the order of play and end 1 turn"));
  • Else If(Event Player.Hand[Event Player.PickNo] == Custom String("Draw from the bottom"));
  • Small Message(Event Player, Custom String("Draw from the bottom: Draw a card from the bottom of the deck and end 1 turn"));
  • Else If(Event Player.Hand[Event Player.PickNo] == Custom String("Swap top and bottom"));
  • Small Message(Event Player, Custom String("Swap top and bottom: Swap the top card with the bottom one of the deck"));
  • Else If(Event Player.Hand[Event Player.PickNo] == Custom String("Catomic bomb"));
  • Small Message(Event Player, Custom String("Catomic bomb: Send all Exploding Kittens to the top of the deck"));
  • Else If(Event Player.Hand[Event Player.PickNo] == Custom String("Shuffle"));
  • Small Message(Event Player, Custom String("Shuffle: Randomize the deck"));
  • Else If(Event Player.Hand[Event Player.PickNo] == Custom String("Fake shuffle"));
  • Small Message(Event Player, Custom String("Fake shuffle: Pretend to shuffle and add a random card to the top of the deck"));
  • Else If(Event Player.Hand[Event Player.PickNo] == Custom String("Steal"));
  • Small Message(Event Player, Custom String("Steal: Steal a random card from a player of choosing"));
  • End;
  • Wait(3, Ignore Condition);
  • }
  • }
  • rule("Toggle third person mode")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Has Spawned(Event Player) == True;
  • Global.IsGameStarted == True;
  • Is Button Held(Event Player, Button(Reload)) == True;
  • Event Player.Playing == True;
  • }
  • actions
  • {
  • If(Event Player.Camera == False);
  • Event Player.Camera = True;
  • Start Camera(Event Player, Event Player + World Vector Of(Vector(0, 1, -1), Event Player, Rotation)
  • + Up * 1.500 + Facing Direction Of(Event Player) * -2, Event Player + Facing Direction Of(Event Player) * 10, 50);
  • Wait(0.250, Ignore Condition);
  • Else;
  • Stop Camera(Event Player);
  • Event Player.Camera = False;
  • Wait(0.250, Ignore Condition);
  • End;
  • }
  • }
  • rule("Chase timer")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.Timer > 0;
  • }
  • actions
  • {
  • Wait(1, Abort When False);
  • Global.Timer -= 1;
  • Loop If Condition Is True;
  • }
  • }
  • rule("Stun and teleport back to position if step out of range")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Has Spawned(Event Player) == True;
  • Global.IsGameStarted == True;
  • Distance Between(Event Player.PlayerPos, Event Player) >= Global.PlayerRad;
  • Event Player.Playing == True;
  • Event Player.Exploded == False;
  • }
  • actions
  • {
  • Skip If(Global.Config[6] == False, 1);
  • Set Status(Event Player, Null, Stunned, 1.500);
  • Teleport(Event Player, Event Player.PlayerPos);
  • }
  • }
  • rule("Disable respawning")
  • {
  • event
  • {
  • Player Died;
  • All;
  • All;
  • }
  • conditions
  • {
  • Has Spawned(Event Player) == True;
  • Global.IsGameStarted == True;
  • disabled Is True For Any(All Players(All Teams), Score Of(Current Array Element) >= 5) == True;
  • }
  • actions
  • {
  • Disable Built-In Game Mode Respawning(Event Player);
  • disabled Enable Death Spectate All Players(Event Player);
  • disabled Skip If(Global.Config[4] == False, 1);
  • disabled Enable Death Spectate Target HUD(Event Player);
  • Wait(1, Ignore Condition);
  • Disable Built-In Game Mode Respawning(Event Player);
  • disabled Enable Death Spectate All Players(Event Player);
  • disabled Skip If(Global.Config[4] == False, 1);
  • disabled Enable Death Spectate Target HUD(Event Player);
  • }
  • }
  • rule("Kill players that join late")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Has Spawned(Event Player) == True;
  • Global.IsGameStarted == True;
  • Event Player.Playing == False;
  • Event Player.PlayingFromStart == False;
  • }
  • actions
  • {
  • Set Invisible(Event Player, All);
  • While(Is Alive(Event Player) == True);
  • Damage(Event Player, Null, 10000);
  • Wait(0.016, Ignore Condition);
  • End;
  • Disable Built-In Game Mode Respawning(Event Player);
  • Enable Death Spectate All Players(Event Player);
  • Skip If(Global.Config[4] == False, 1);
  • Enable Death Spectate Target HUD(Event Player);
  • Wait(1, Ignore Condition);
  • Disable Built-In Game Mode Respawning(Event Player);
  • Enable Death Spectate All Players(Event Player);
  • Skip If(Global.Config[4] == False, 1);
  • Enable Death Spectate Target HUD(Event Player);
  • }
  • }
  • rule("Hide message")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.Exploded == True;
  • Is Dead(Event Player) == True;
  • Is Button Held(Event Player, Button(Interact)) == True;
  • }
  • actions
  • {
  • Event Player.HideMessage = True;
  • }
  • }
  • rule("Hide message 2")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Ability 1)) == True;
  • }
  • actions
  • {
  • Event Player.HideMessage2 = True;
  • }
  • }
  • rule("Allow spectating after hiding message")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dead(Event Player) == True;
  • Event Player.HideMessage == True;
  • }
  • actions
  • {
  • Enable Death Spectate All Players(Event Player);
  • Skip If(Global.Config[4] == False, 1);
  • Enable Death Spectate Target HUD(Event Player);
  • Enable Death Spectate All Players(Event Player);
  • Skip If(Global.Config[4] == False, 1);
  • Enable Death Spectate Target HUD(Event Player);
  • }
  • }
  • rule("Declare victory for the last one alive")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.IsGameStarted == True;
  • Count Of(Global.Players) < 2;
  • }
  • actions
  • {
  • disabled Big Message(All Players(All Teams), Custom String("{0} has won the game!", First Of(Global.Players)));
  • disabled Wait(3, Ignore Condition);
  • Declare Player Victory(First Of(Global.Players));
  • disabled Global.IsGameStarted = False;
  • }
  • }
  • disabled rule("(=^-ω-^=) PLAYER LEAVES EVENT (=´∇`=)")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • }
  • rule("Playing player leaves game")
  • {
  • event
  • {
  • Player Left Match;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.IsGameStarted == True;
  • }
  • actions
  • {
  • Event Player.Playing = False;
  • Event Player.PlayingFromStart = False;
  • Skip If(Global.Turn != Event Player, 2);
  • Global.Feed = Custom String("{0} left the game!", Event Player);
  • Global.Turn = False;
  • Skip If(Global.PlayerBeingSlapped != Event Player, 1);
  • Global.PlayerBeingSlapped = False;
  • Call Subroutine(RearrangePlayers);
  • disabled Call Subroutine(NextTurn2);
  • Destroy Effect(Event Player.Effect);
  • disabled Call Subroutine(DestroyHUD);
  • For Player Variable(Event Player, Counter, 0, Count Of(Event Player.CardHud), 1);
  • Destroy HUD Text(Event Player.CardHud[Event Player.Counter]);
  • End;
  • Wait(0.016, Ignore Condition);
  • Destroy HUD Text(Event Player.TempHud);
  • Event Player.CardHud = Empty Array;
  • Event Player.Hand = Empty Array;
  • Event Player.TempHud = False;
  • }
  • }
  • rule("Sort players array when a player leaves")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.IsGameStarted == True;
  • Count Of(Global.Players) < Count Of(Filtered Array(All Players(All Teams), Current Array Element.Playing == True));
  • }
  • }
  • rule("Set next turn when the current turn leaves")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.IsGameStarted == True;
  • Global.IsInitializationCompleted == True;
  • Global.Turn == False;
  • }
  • actions
  • {
  • Call Subroutine(NextTurn2);
  • }
  • }
  • rule("Remove Exploding Kittens card when a player leaves")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.IsGameStarted == True;
  • Global.IsInitializationCompleted == True;
  • Count Of(Filtered Array(Global.Deck, Current Array Element == Custom String("Exploding Kitten"))) > Count Of(Global.Players) - 1;
  • Global.IsDeckBeingArranged == False;
  • }
  • actions
  • {
  • Global.IsDeckBeingArranged = True;
  • disabled While(Count Of(Filtered Array(Global.Deck, Current Array Element == Custom String("Exploding Kitten"))) > Count Of(Global.Players)
  • - 1);
  • For Global Variable(Counter3, 0, Count Of(Global.Deck), 1);
  • If(Count Of(Filtered Array(Global.Deck, Current Array Element == Custom String("Exploding Kitten"))) > Count Of(Global.Players)
  • - 1 && Global.Deck[Global.Counter3] == Custom String("Exploding Kitten"));
  • Modify Global Variable(Deck, Remove From Array By Index, Global.Counter3);
  • End;
  • End;
  • Global.IsDeckBeingArranged = False;
  • }
  • }
  • disabled rule("(=^-ω-^=) CARDS LOGIC (=´∇`=)")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • }
  • rule("Prevent accidental pressing after playing a card")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.IsGameStarted == True;
  • Event Player.Playing == True;
  • Is Button Held(Event Player, Button(Jump)) == False;
  • Event Player.WaitAfterPressing == True;
  • }
  • actions
  • {
  • Event Player.WaitAfterPressing = False;
  • }
  • }
  • rule("Draw a card")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Has Spawned(Event Player) == True;
  • Global.IsGameStarted == True;
  • Event Player.Playing == True;
  • Is Button Held(Event Player, Button(Crouch)) == True;
  • Global.Turn == Event Player;
  • Event Player.IsHidingKitten == False;
  • Event Player.IsStealing == False;
  • Event Player.IsSlapping == False;
  • Event Player.IsExploding == False;
  • Event Player.IsAlteringTheFuture == False;
  • Global.IsDeckBeingArranged == False;
  • Event Player.IsHandBeingArranged == False;
  • }
  • actions
  • {
  • Event Player.IsHandBeingArranged = True;
  • Destroy HUD Text(Event Player.TempHud);
  • Event Player.DrawCard = First Of(Global.Deck);
  • If(Event Player.DrawCard != Custom String("Exploding Kitten"));
  • Play Effect(All Players(All Teams), Ring Explosion, Color(White), Event Player.PlayerPos, Global.PlayerRad + 2);
  • Play Effect(All Players(All Teams), Buff Explosion Sound, Color(White), Event Player, 100);
  • Modify Player Variable(Event Player, Hand, Append To Array, Event Player.DrawCard);
  • Call Subroutine(CreateCardHUD);
  • Modify Global Variable(Deck, Remove From Array By Index, 0);
  • Call Subroutine(RearrangeDeck);
  • Call Subroutine(EndTurn);
  • Event Player.PickNo = 0;
  • Global.LastTurn = Custom String("Draw");
  • Else;
  • Event Player.IsExploding = True;
  • End;
  • Event Player.IsHandBeingArranged = False;
  • }
  • }
  • rule("Exploding Kitten event")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.IsGameStarted == True;
  • Event Player.Playing == True;
  • Event Player.IsExploding == True;
  • }
  • actions
  • {
  • Global.IsDeckBeingArranged = True;
  • Global.Timer = Workshop Setting Integer(Custom String("Gameplay"), Custom String(
  • "3. Time until player that draws an Exploding Kitten explodes"), 10, 8, 15, 0);
  • Global.Feed = Custom String("{0} seconds until {1} explodes!", Global.Timer, Global.Turn);
  • Global.LastTurn = Custom String("Exploding Kitten");
  • Play Effect(All Players(All Teams), Debuff Impact Sound, Color(White), Event Player, 100);
  • Small Message(Event Player, Custom String("Play the Defuse card to prevent being exploded!"));
  • Modify Global Variable(Deck, Remove From Array By Index, 0);
  • Call Subroutine(RearrangeDeck);
  • Global.IsDeckBeingArranged = False;
  • }
  • }
  • rule("Loop Bomb icon when a player draws an Exploding Kitten")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.IsGameStarted == True;
  • Event Player.Playing == True;
  • Event Player.IsExploding == True;
  • }
  • actions
  • {
  • Global.WarnIcon = Icon String(Warning);
  • Wait(0.250, Abort When False);
  • Global.WarnIcon = Custom String(" ");
  • Wait(0.250, Abort When False);
  • Loop If Condition Is True;
  • }
  • }
  • rule("Kill player if Exploding Kitten timer ends and didn't pick a defuse card")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.IsGameStarted == True;
  • Event Player.Playing == True;
  • Event Player.IsExploding == True;
  • Global.Timer <= 0;
  • }
  • actions
  • {
  • Event Player.Exploded = True;
  • Play Effect(All Players(All Teams), Explosion Sound, Color(White), Event Player, 100);
  • Play Effect(All Players(All Teams), Bad Explosion, Color(Red), Event Player, Global.PlayerRad);
  • Apply Impulse(Event Player, Up, 70, To World, Cancel Contrary Motion);
  • Wait(0.025, Ignore Condition);
  • Start Damage Over Time(Event Player, Null, 5, 10000);
  • Global.Feed = Custom String("{1} exploded and died!", Hero Icon String(Hero Of(Event Player)), Event Player);
  • Event Player.IsExploding = False;
  • Event Player.Playing = False;
  • Call Subroutine(RearrangePlayers);
  • Call Subroutine(NextTurn2);
  • Destroy Effect(Event Player.Effect);
  • Call Subroutine(DestroyHUD);
  • }
  • }
  • rule("Secondary fire to cycle card forward")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.IsGameStarted == True;
  • Event Player.Playing == True;
  • disabled Global.Turn == Event Player;
  • Is Button Held(Event Player, Button(Secondary Fire)) == True;
  • Event Player.IsHidingKitten == False;
  • Event Player.IsStealing == False;
  • Event Player.IsSlapping == False;
  • }
  • actions
  • {
  • If(Event Player.PickNo >= Count Of(Event Player.Hand) - 1);
  • Event Player.PickNo = 0;
  • Else;
  • Event Player.PickNo += 1;
  • End;
  • }
  • }
  • rule("Primary fire to cycle card backward")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.IsGameStarted == True;
  • Event Player.Playing == True;
  • disabled Global.Turn == Event Player;
  • Is Button Held(Event Player, Button(Primary Fire)) == True;
  • Event Player.IsHidingKitten == False;
  • Event Player.IsStealing == False;
  • Event Player.IsSlapping == False;
  • }
  • actions
  • {
  • If(Event Player.PickNo <= 0);
  • Event Player.PickNo = Count Of(Event Player.Hand) - 1;
  • Else;
  • Event Player.PickNo += -1;
  • End;
  • }
  • }
  • rule("Play Defuse")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.IsGameStarted == True;
  • Event Player.Playing == True;
  • Global.Turn == Event Player;
  • Is Button Held(Event Player, Button(Jump)) == True;
  • Event Player.Hand[Event Player.PickNo] == Custom String("Defuse");
  • Event Player.IsHidingKitten == False;
  • Event Player.IsStealing == False;
  • Event Player.IsSlapping == False;
  • Event Player.IsAlteringTheFuture == False;
  • Event Player.WaitAfterPressing == False;
  • Global.IsDeckBeingArranged == False;
  • Event Player.IsHandBeingArranged == False;
  • }
  • actions
  • {
  • Event Player.WaitAfterPressing = True;
  • If(Event Player.IsExploding == True);
  • Event Player.IsHandBeingArranged = True;
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Lime Green), Event Player.PlayerPos, Global.PlayerRad + 2);
  • Play Effect(All Players(All Teams), Buff Explosion Sound, Color(White), Event Player, 100);
  • Modify Player Variable(Event Player, Hand, Remove From Array By Index, Event Player.PickNo);
  • Destroy HUD Text(Event Player.CardHud[Event Player.PickNo]);
  • Modify Player Variable(Event Player, CardHud, Remove From Array By Index, Event Player.PickNo);
  • disabled Event Player.CardHud[Event Player.PickNo] = Null;
  • Call Subroutine(RearrangeHand);
  • Global.Feed = Custom String("{0} defused the Exploding Kitten!", Event Player);
  • Event Player.IsHidingKitten = True;
  • Event Player.IsExploding = False;
  • Small Message(Event Player, Custom String("Put the Kitten back to the deck!"));
  • Global.LastTurn = Custom String("Defuse");
  • Wait(0.016, Ignore Condition);
  • Event Player.PickNo = 0;
  • Event Player.IsHandBeingArranged = False;
  • Else;
  • Small Message(Event Player, Custom String("You can't use Defuse right now!"));
  • End;
  • }
  • }
  • rule("Putting back Exploding Kitten to the deck after defusing")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.IsGameStarted == True;
  • Event Player.Playing == True;
  • Global.Turn == Event Player;
  • Event Player.IsHidingKitten == True;
  • }
  • actions
  • {
  • disabled Create HUD Text(Event Player, Custom String(" Hide the kitten! {0} {1} {2} ", Icon String(Arrow: Left), Event Player.HideKittenNo,
  • Icon String(Arrow: Right)), Custom String("{0} to cycle forward\r\n{1} to cycle backward\r\n{2} to confirm", Custom String(
  • "Ability 2"), Custom String("Ultimate"), Custom String("Interact")), Null, Top, -0.900, Color(Lime Green), Color(White), Color(
  • White), Visible To and String, Default Visibility);
  • disabled Event Player.TempHud = Last Text ID;
  • Event Player.HideKittenNo = 0;
  • }
  • }
  • rule("Ability2 to cycle number forward (Hide Kitten)")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.IsGameStarted == True;
  • Event Player.Playing == True;
  • Global.Turn == Event Player;
  • Is Button Held(Event Player, Button(Ability 2)) == True;
  • Event Player.IsHidingKitten == True;
  • Event Player.IsStealing == False;
  • }
  • actions
  • {
  • If(Event Player.HideKittenNo >= Count Of(Global.Deck) + 0);
  • Event Player.HideKittenNo = 0;
  • Else;
  • Event Player.HideKittenNo += 1;
  • End;
  • }
  • }
  • rule("Ultimate to cycle number backward (Hide Kitten)")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.IsGameStarted == True;
  • Event Player.Playing == True;
  • Global.Turn == Event Player;
  • Is Button Held(Event Player, Button(Ultimate)) == True;
  • Event Player.IsHidingKitten == True;
  • Event Player.IsStealing == False;
  • }
  • actions
  • {
  • If(Event Player.HideKittenNo <= 0);
  • Event Player.HideKittenNo = Count Of(Global.Deck) + 0;
  • Else;
  • Event Player.HideKittenNo += -1;
  • End;
  • }
  • }
  • rule("Interact to Hide Kitten and end turn")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.IsGameStarted == True;
  • Event Player.Playing == True;
  • Global.Turn == Event Player;
  • Is Button Held(Event Player, Button(Interact)) == True;
  • Event Player.IsHidingKitten == True;
  • Event Player.IsStealing == False;
  • }
  • actions
  • {
  • Global.IsDeckBeingArranged = True;
  • Call Subroutine(EndTurn);
  • Destroy HUD Text(Event Player.TempHud);
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Lime Green), Event Player.PlayerPos, Global.PlayerRad + 2);
  • Play Effect(All Players(All Teams), Buff Explosion Sound, Color(White), Event Player, 100);
  • Global.Feed = Custom String("{0} slipped the Kitten back into the deck!", Event Player);
  • Global.LastKittenDefuser = Event Player;
  • Event Player.IsHidingKitten = False;
  • If(Event Player.HideKittenNo <= 0);
  • Global.HideKittenDeck = Array(Custom String("Exploding Kitten"));
  • Modify Global Variable(HideKittenDeck, Append To Array, Global.Deck);
  • Wait(0.016, Ignore Condition);
  • Global.Deck = Global.HideKittenDeck;
  • Else If(Event Player.HideKittenNo < Count Of(Global.Deck) + 1);
  • Global.HideKittenDeck = Array Slice(Global.Deck, 0, Event Player.HideKittenNo + 0);
  • Modify Global Variable(HideKittenDeck, Append To Array, Custom String("Exploding Kitten"));
  • Modify Global Variable(HideKittenDeck, Append To Array, Array Slice(Global.Deck, Event Player.HideKittenNo + 0, Count Of(
  • Global.Deck) - (Event Player.HideKittenNo + 0)));
  • Wait(0.016, Ignore Condition);
  • Global.Deck = Global.HideKittenDeck;
  • Else If(Event Player.HideKittenNo >= Count Of(Global.Deck) + 1);
  • Modify Global Variable(Deck, Append To Array, Custom String("Exploding Kitten"));
  • End;
  • Global.IsDeckBeingArranged = False;
  • }
  • }
  • rule("Play Skip")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.IsGameStarted == True;
  • Event Player.Playing == True;
  • Global.Turn == Event Player;
  • Is Button Held(Event Player, Button(Jump)) == True;
  • Event Player.Hand[Event Player.PickNo] == Custom String("Skip");
  • Event Player.IsHidingKitten == False;
  • Event Player.IsExploding == False;
  • Event Player.IsStealing == False;
  • Event Player.IsSlapping == False;
  • Event Player.IsAlteringTheFuture == False;
  • Event Player.WaitAfterPressing == False;
  • Global.IsDeckBeingArranged == False;
  • Event Player.IsHandBeingArranged == False;
  • }
  • actions
  • {
  • Event Player.IsHandBeingArranged = True;
  • Event Player.WaitAfterPressing = True;
  • Destroy HUD Text(Event Player.TempHud);
  • Call Subroutine(EndTurn);
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Sky Blue), Event Player.PlayerPos, Global.PlayerRad + 2);
  • Play Effect(All Players(All Teams), Buff Explosion Sound, Color(White), Event Player, 100);
  • disabled Modify Player Variable(Event Player, Hand, Remove From Array By Index, Event Player.PickNo);
  • disabled Destroy HUD Text(Event Player.CardHud[Event Player.PickNo]);
  • disabled Modify Player Variable(Event Player, CardHud, Remove From Array By Index, Event Player.PickNo);
  • Call Subroutine(DestroyDiscardCard);
  • Call Subroutine(RearrangeHand);
  • Global.Feed = Custom String("{0} played Skip!", Event Player);
  • Global.LastTurn = Custom String("Skip");
  • Wait(0.016, Ignore Condition);
  • Event Player.PickNo = 0;
  • Event Player.IsHandBeingArranged = False;
  • }
  • }
  • rule("Play Shuffle")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.IsGameStarted == True;
  • Event Player.Playing == True;
  • Global.Turn == Event Player;
  • Is Button Held(Event Player, Button(Jump)) == True;
  • Event Player.Hand[Event Player.PickNo] == Custom String("Shuffle");
  • Event Player.IsHidingKitten == False;
  • Event Player.IsExploding == False;
  • Event Player.IsStealing == False;
  • Event Player.IsSlapping == False;
  • Event Player.IsAlteringTheFuture == False;
  • Event Player.WaitAfterPressing == False;
  • Global.IsDeckBeingArranged == False;
  • Event Player.IsHandBeingArranged == False;
  • }
  • actions
  • {
  • Event Player.IsHandBeingArranged = True;
  • Event Player.WaitAfterPressing = True;
  • Destroy HUD Text(Event Player.TempHud);
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Green), Event Player.PlayerPos, Global.PlayerRad + 2);
  • Play Effect(All Players(All Teams), Buff Explosion Sound, Color(White), Event Player, 100);
  • Global.Deck = Randomized Array(Global.Deck);
  • disabled Modify Player Variable(Event Player, Hand, Remove From Array By Index, Event Player.PickNo);
  • disabled Destroy HUD Text(Event Player.CardHud[Event Player.PickNo]);
  • disabled Modify Player Variable(Event Player, CardHud, Remove From Array By Index, Event Player.PickNo);
  • Call Subroutine(DestroyDiscardCard);
  • Call Subroutine(RearrangeHand);
  • Global.Feed = Custom String("{0} played Shuffle!", Event Player);
  • Global.LastKittenDefuser = False;
  • Global.LastTurn = Custom String("Shuffle");
  • Wait(0.016, Ignore Condition);
  • Event Player.PickNo = 0;
  • Event Player.IsHandBeingArranged = False;
  • }
  • }
  • rule("Play Reverse")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.IsGameStarted == True;
  • Event Player.Playing == True;
  • Global.Turn == Event Player;
  • Is Button Held(Event Player, Button(Jump)) == True;
  • Event Player.Hand[Event Player.PickNo] == Custom String("Reverse");
  • Event Player.IsHidingKitten == False;
  • Event Player.IsExploding == False;
  • Event Player.IsStealing == False;
  • Event Player.IsSlapping == False;
  • Event Player.IsAlteringTheFuture == False;
  • Event Player.WaitAfterPressing == False;
  • Global.IsDeckBeingArranged == False;
  • Event Player.IsHandBeingArranged == False;
  • }
  • actions
  • {
  • Event Player.IsHandBeingArranged = True;
  • Event Player.WaitAfterPressing = True;
  • Destroy HUD Text(Event Player.TempHud);
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Turquoise), Event Player.PlayerPos, Global.PlayerRad + 2);
  • Play Effect(All Players(All Teams), Buff Explosion Sound, Color(White), Event Player, 100);
  • If(Global.TurnDirection == 1);
  • Global.TurnDirection = -1;
  • Else;
  • Global.TurnDirection = 1;
  • End;
  • Call Subroutine(EndTurn);
  • disabled Modify Player Variable(Event Player, Hand, Remove From Array By Index, Event Player.PickNo);
  • disabled Destroy HUD Text(Event Player.CardHud[Event Player.PickNo]);
  • disabled Modify Player Variable(Event Player, CardHud, Remove From Array By Index, Event Player.PickNo);
  • Call Subroutine(DestroyDiscardCard);
  • Call Subroutine(RearrangeHand);
  • Global.Feed = Custom String("{0} played Reverse!", Event Player);
  • Global.LastTurn = Custom String("Reverse");
  • Wait(0.016, Ignore Condition);
  • Event Player.PickNo = 0;
  • Event Player.IsHandBeingArranged = False;
  • }
  • }
  • rule("Play Draw from the bottom")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.IsGameStarted == True;
  • Event Player.Playing == True;
  • Global.Turn == Event Player;
  • Is Button Held(Event Player, Button(Jump)) == True;
  • Event Player.Hand[Event Player.PickNo] == Custom String("Draw from the bottom");
  • Event Player.IsHidingKitten == False;
  • Event Player.IsExploding == False;
  • Event Player.IsStealing == False;
  • Event Player.IsSlapping == False;
  • Event Player.IsAlteringTheFuture == False;
  • Event Player.WaitAfterPressing == False;
  • Global.IsDeckBeingArranged == False;
  • Event Player.IsHandBeingArranged == False;
  • }
  • actions
  • {
  • Event Player.WaitAfterPressing = True;
  • Event Player.IsHandBeingArranged = True;
  • Destroy HUD Text(Event Player.TempHud);
  • Event Player.DrawCard = Last Of(Global.Deck);
  • If(Event Player.DrawCard != Custom String("Exploding Kitten"));
  • Global.IsDeckBeingArranged = True;
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Yellow), Event Player.PlayerPos, Global.PlayerRad + 2);
  • Play Effect(All Players(All Teams), Buff Explosion Sound, Color(White), Event Player, 100);
  • Modify Player Variable(Event Player, Hand, Append To Array, Event Player.DrawCard);
  • Call Subroutine(DestroyDiscardCard);
  • disabled Destroy HUD Text(Event Player.CardHud[Event Player.PickNo]);
  • disabled Modify Player Variable(Event Player, CardHud, Remove From Array By Index, Event Player.PickNo);
  • disabled Modify Player Variable(Event Player, Hand, Remove From Array By Index, Event Player.PickNo);
  • Modify Global Variable(Deck, Remove From Array By Index, Count Of(Global.Deck) - 1);
  • Global.LastTurn = Custom String("Draw from the bottom");
  • Call Subroutine(CreateCardHUD);
  • Call Subroutine(RearrangeDeck);
  • Call Subroutine(RearrangeHand);
  • Wait(0.016, Ignore Condition);
  • Event Player.PickNo = 0;
  • Call Subroutine(EndTurn);
  • Global.Feed = Custom String("{0} played Draw from the bottom!", Event Player);
  • Global.IsDeckBeingArranged = False;
  • Else;
  • Event Player.IsExploding = True;
  • disabled Modify Player Variable(Event Player, Hand, Remove From Array By Index, Event Player.PickNo);
  • disabled Destroy HUD Text(Event Player.CardHud[Event Player.PickNo]);
  • disabled Modify Player Variable(Event Player, CardHud, Remove From Array By Index, Event Player.PickNo);
  • Call Subroutine(DestroyDiscardCard);
  • Call Subroutine(RearrangeHand);
  • Wait(0.016, Ignore Condition);
  • Event Player.PickNo = 0;
  • End;
  • Event Player.IsHandBeingArranged = False;
  • }
  • }
  • rule("Play Steal")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.IsGameStarted == True;
  • Event Player.Playing == True;
  • Global.Turn == Event Player;
  • Is Button Held(Event Player, Button(Jump)) == True;
  • Event Player.Hand[Event Player.PickNo] == Custom String("Steal");
  • Event Player.IsHidingKitten == False;
  • Event Player.IsExploding == False;
  • Event Player.IsStealing == False;
  • Event Player.IsSlapping == False;
  • Event Player.IsAlteringTheFuture == False;
  • Event Player.WaitAfterPressing == False;
  • Global.IsDeckBeingArranged == False;
  • Event Player.IsHandBeingArranged == False;
  • }
  • actions
  • {
  • Event Player.WaitAfterPressing = True;
  • Event Player.IsHandBeingArranged = True;
  • Destroy HUD Text(Event Player.TempHud);
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Aqua), Event Player.PlayerPos, Global.PlayerRad + 2);
  • Play Effect(All Players(All Teams), Buff Explosion Sound, Color(White), Event Player, 100);
  • Event Player.StealablePlayers = Filtered Array(Global.Players, Current Array Element != Event Player);
  • Event Player.StealNo = 0;
  • disabled Create HUD Text(Event Player, Custom String(" Choose a player to steal from: {0} {1} {2} ", Icon String(Arrow: Left),
  • Custom String("{0} {1}", Hero Icon String(Hero Of(Event Player.StealablePlayers[Event Player.StealNo])),
  • Event Player.StealablePlayers[Event Player.StealNo]), Icon String(Arrow: Right)), Custom String(
  • "{0} to cycle forward\r\n{1} to cycle backward\r\n{2} to confirm", Custom String("Ability 2"), Custom String("Ultimate"),
  • Custom String("Interact")), Null, Top, -0.900, Color(Aqua), Color(White), Color(White), Visible To and String,
  • Default Visibility);
  • disabled Event Player.TempHud = Last Text ID;
  • Event Player.IsStealing = True;
  • disabled Modify Player Variable(Event Player, Hand, Remove From Array By Index, Event Player.PickNo);
  • disabled Destroy HUD Text(Event Player.CardHud[Event Player.PickNo]);
  • disabled Modify Player Variable(Event Player, CardHud, Remove From Array By Index, Event Player.PickNo);
  • Call Subroutine(DestroyDiscardCard);
  • Call Subroutine(RearrangeHand);
  • Global.Feed = Custom String("{0} played Steal!", Event Player);
  • Global.LastTurn = Custom String("Steal");
  • Wait(0.016, Ignore Condition);
  • Event Player.PickNo = 0;
  • Event Player.IsHandBeingArranged = False;
  • }
  • }
  • rule("Ability2 to cycle number forward (Steal)")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.IsGameStarted == True;
  • Event Player.Playing == True;
  • Global.Turn == Event Player;
  • Is Button Held(Event Player, Button(Ability 2)) == True;
  • Event Player.IsHidingKitten == False;
  • Event Player.IsStealing == True;
  • Event Player.IsSlapping == False;
  • }
  • actions
  • {
  • If(Event Player.StealNo >= Count Of(Event Player.StealablePlayers) + -1);
  • Event Player.StealNo = 0;
  • Else;
  • Event Player.StealNo += 1;
  • End;
  • }
  • }
  • rule("Ultimate to cycle number backward (Steal)")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.IsGameStarted == True;
  • Event Player.Playing == True;
  • Global.Turn == Event Player;
  • Is Button Held(Event Player, Button(Ultimate)) == True;
  • Event Player.IsHidingKitten == False;
  • Event Player.IsStealing == True;
  • Event Player.IsSlapping == False;
  • }
  • actions
  • {
  • If(Event Player.StealNo <= 0);
  • Event Player.StealNo = Count Of(Event Player.StealablePlayers) + -1;
  • Else;
  • Event Player.StealNo += -1;
  • End;
  • }
  • }
  • rule("Interact to Steal")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.IsGameStarted == True;
  • Event Player.Playing == True;
  • Global.Turn == Event Player;
  • Is Button Held(Event Player, Button(Interact)) == True;
  • Event Player.IsHidingKitten == False;
  • Event Player.IsStealing == True;
  • Event Player.IsSlapping == False;
  • Global.IsDeckBeingArranged == False;
  • Event Player.IsHandBeingArranged == False;
  • Event Player.StealablePlayers[Event Player.StealNo].Playing == True;
  • }
  • actions
  • {
  • Event Player.IsHandBeingArranged = True;
  • disabled Call Subroutine(EndTurn);
  • Destroy HUD Text(Event Player.TempHud);
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Lime Green), Event Player.PlayerPos, Global.PlayerRad + 2);
  • Play Effect(All Players(All Teams), Buff Explosion Sound, Color(White), Event Player, 100);
  • Global.Feed = Custom String("{0} stole a random card from {1}!", Event Player,
  • Event Player.StealablePlayers[Event Player.StealNo]);
  • Event Player.StolenCardNo = Random Integer(0, Count Of(Event Player.StealablePlayers[Event Player.StealNo].Hand) + -1);
  • Event Player.DrawCard = Event Player.StealablePlayers[Event Player.StealNo].Hand[Event Player.StolenCardNo];
  • Wait(0.016, Ignore Condition);
  • Modify Player Variable(Event Player, Hand, Append To Array, Event Player.DrawCard);
  • Call Subroutine(CreateCardHUD);
  • Wait(0.016, Ignore Condition);
  • Modify Player Variable(Event Player.StealablePlayers[Event Player.StealNo], Hand, Remove From Array By Index,
  • Event Player.StolenCardNo);
  • Destroy HUD Text(Event Player.StealablePlayers[Event Player.StealNo].CardHud[Event Player.StolenCardNo]);
  • Modify Player Variable(Event Player.StealablePlayers[Event Player.StealNo], CardHud, Remove From Array By Index,
  • Event Player.StolenCardNo);
  • Event Player.IsStealing = False;
  • Event Player.StealablePlayers[Event Player.StealNo].IsBeingStolen = True;
  • Event Player.IsHandBeingArranged = False;
  • }
  • }
  • rule("Finish removing stolen card from target")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.IsGameStarted == True;
  • Event Player.Playing == True;
  • Event Player.IsBeingStolen == True;
  • }
  • actions
  • {
  • Call Subroutine(RearrangeHand);
  • Event Player.IsBeingStolen = False;
  • }
  • }
  • rule("Play Slap")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.IsGameStarted == True;
  • Event Player.Playing == True;
  • Global.Turn == Event Player;
  • Is Button Held(Event Player, Button(Jump)) == True;
  • Event Player.Hand[Event Player.PickNo] == Custom String("Slap");
  • Event Player.IsHidingKitten == False;
  • Event Player.IsExploding == False;
  • Event Player.IsStealing == False;
  • Event Player.IsSlapping == False;
  • Event Player.IsAlteringTheFuture == False;
  • Event Player.WaitAfterPressing == False;
  • Global.IsDeckBeingArranged == False;
  • Event Player.IsHandBeingArranged == False;
  • }
  • actions
  • {
  • Event Player.IsHandBeingArranged = True;
  • Event Player.WaitAfterPressing = True;
  • Destroy HUD Text(Event Player.TempHud);
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Orange), Event Player.PlayerPos, Global.PlayerRad + 2);
  • Play Effect(All Players(All Teams), Buff Explosion Sound, Color(White), Event Player, 100);
  • Call Subroutine(CreateSlappableList);
  • Event Player.SlapNo = 0;
  • Event Player.IsSlapping = True;
  • Call Subroutine(DestroyDiscardCard);
  • Call Subroutine(RearrangeHand);
  • Global.Feed = Custom String("{0} played Slap!", Event Player);
  • Global.LastTurn = Custom String("Slap");
  • Wait(0.016, Ignore Condition);
  • Event Player.PickNo = 0;
  • Event Player.IsHandBeingArranged = False;
  • }
  • }
  • rule("Ability2 to cycle number forward (Slap)")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.IsGameStarted == True;
  • Event Player.Playing == True;
  • Global.Turn == Event Player;
  • Is Button Held(Event Player, Button(Ability 2)) == True;
  • Event Player.IsHidingKitten == False;
  • Event Player.IsStealing == False;
  • Event Player.IsSlapping == True;
  • }
  • actions
  • {
  • If(Event Player.SlapNo >= Count Of(Event Player.SlappablePlayers) + -1);
  • Event Player.SlapNo = 0;
  • Else;
  • Event Player.SlapNo += 1;
  • End;
  • }
  • }
  • rule("Ultimate to cycle number backward (Slap)")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.IsGameStarted == True;
  • Event Player.Playing == True;
  • Global.Turn == Event Player;
  • Is Button Held(Event Player, Button(Ultimate)) == True;
  • Event Player.IsHidingKitten == False;
  • Event Player.IsStealing == False;
  • Event Player.IsSlapping == True;
  • }
  • actions
  • {
  • If(Event Player.SlapNo <= 0);
  • Event Player.SlapNo = Count Of(Event Player.SlappablePlayers) + -1;
  • Else;
  • Event Player.SlapNo += -1;
  • End;
  • }
  • }
  • rule("Interact to Slap and end turn")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.IsGameStarted == True;
  • Event Player.Playing == True;
  • Global.Turn == Event Player;
  • Is Button Held(Event Player, Button(Interact)) == True;
  • Event Player.IsHidingKitten == False;
  • Event Player.IsStealing == False;
  • Event Player.IsSlapping == True;
  • Global.IsDeckBeingArranged == False;
  • Event Player.IsHandBeingArranged == False;
  • Event Player.SlappablePlayers[Event Player.SlapNo].Playing == True;
  • Event Player.SlappablePlayers[Event Player.SlapNo] != Event Player;
  • }
  • actions
  • {
  • Event Player.IsHandBeingArranged = True;
  • Destroy HUD Text(Event Player.TempHud);
  • If(Global.LastTurn == Custom String("Slap"));
  • Global.SlapTurn += 1;
  • Global.Feed = Custom String("{0} slapped {1}!", Event Player, Event Player.SlappablePlayers[Event Player.SlapNo]);
  • Else If(Global.LastTurn == Custom String("Double slap"));
  • Global.SlapTurn += 2;
  • Global.Feed = Custom String("{0} double slapped {1}!", Event Player, Event Player.SlappablePlayers[Event Player.SlapNo]);
  • Else If(Global.LastTurn == Custom String("Triple slap"));
  • Global.SlapTurn += 3;
  • Global.Feed = Custom String("{0} triple slapped {1}!", Event Player, Event Player.SlappablePlayers[Event Player.SlapNo]);
  • End;
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Orange), Event Player.PlayerPos, Global.PlayerRad + 2);
  • Play Effect(All Players(All Teams), Buff Explosion Sound, Color(White), Event Player, 100);
  • Event Player.SlappablePlayers[Event Player.SlapNo].ForcedTurn = Global.SlapTurn;
  • disabled Event Player.SlappablePlayers[Event Player.SlapNo].ForcedTurn = Event Player.ForcedTurn + 1;
  • Wait(0.016, Ignore Condition);
  • Global.PlayerBeingSlapped = Event Player.SlappablePlayers[Event Player.SlapNo];
  • Global.Turn = Event Player.SlappablePlayers[Event Player.SlapNo];
  • Global.TurnNo = Index Of Array Value(Global.Players, Global.Turn);
  • Event Player.ForcedTurn = 0;
  • Event Player.IsSlapping = False;
  • Event Player.IsHandBeingArranged = False;
  • }
  • }
  • rule("Interact to Slap and end turn (Slapping self)")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.IsGameStarted == True;
  • Event Player.Playing == True;
  • Global.Turn == Event Player;
  • Is Button Held(Event Player, Button(Interact)) == True;
  • Event Player.IsHidingKitten == False;
  • Event Player.IsStealing == False;
  • Event Player.IsSlapping == True;
  • Global.IsDeckBeingArranged == False;
  • Event Player.IsHandBeingArranged == False;
  • Event Player.SlappablePlayers[Event Player.SlapNo] == Event Player;
  • Global.Config[7] == True;
  • }
  • actions
  • {
  • Event Player.IsHandBeingArranged = True;
  • Destroy HUD Text(Event Player.TempHud);
  • If(Global.LastTurn == Custom String("Slap"));
  • Global.SlapTurn += 1;
  • Global.Feed = Custom String("{0} slapped themselves!", Event Player);
  • Else If(Global.LastTurn == Custom String("Double slap"));
  • Global.SlapTurn += 2;
  • Global.Feed = Custom String("{0} double slapped themselves!", Event Player);
  • Else If(Global.LastTurn == Custom String("Triple slap"));
  • Global.SlapTurn += 3;
  • Global.Feed = Custom String("{0} triple slapped themselves!", Event Player);
  • End;
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Orange), Event Player.PlayerPos, Global.PlayerRad + 2);
  • Play Effect(All Players(All Teams), Buff Explosion Sound, Color(White), Event Player, 100);
  • Event Player.ForcedTurn = Global.SlapTurn;
  • Wait(0.016, Ignore Condition);
  • Global.PlayerBeingSlapped = Event Player;
  • Event Player.IsSlapping = False;
  • Event Player.IsHandBeingArranged = False;
  • }
  • }
  • rule("Reset slap count when the player being slapped turns false")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.IsGameStarted == True;
  • Global.PlayerBeingSlapped == False;
  • }
  • actions
  • {
  • Global.SlapTurn = 0;
  • }
  • }
  • rule("Play Double slap")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.IsGameStarted == True;
  • Event Player.Playing == True;
  • Global.Turn == Event Player;
  • Is Button Held(Event Player, Button(Jump)) == True;
  • Event Player.Hand[Event Player.PickNo] == Custom String("Double slap");
  • Event Player.IsHidingKitten == False;
  • Event Player.IsExploding == False;
  • Event Player.IsStealing == False;
  • Event Player.IsSlapping == False;
  • Event Player.IsAlteringTheFuture == False;
  • Event Player.WaitAfterPressing == False;
  • Global.IsDeckBeingArranged == False;
  • Event Player.IsHandBeingArranged == False;
  • }
  • actions
  • {
  • Event Player.IsHandBeingArranged = True;
  • Event Player.WaitAfterPressing = True;
  • Destroy HUD Text(Event Player.TempHud);
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Orange), Event Player.PlayerPos, Global.PlayerRad + 2);
  • Play Effect(All Players(All Teams), Buff Explosion Sound, Color(White), Event Player, 100);
  • Call Subroutine(CreateSlappableList);
  • Event Player.SlapNo = 0;
  • Event Player.IsSlapping = True;
  • Call Subroutine(DestroyDiscardCard);
  • Call Subroutine(RearrangeHand);
  • Global.Feed = Custom String("{0} played Double slap!", Event Player);
  • Global.LastTurn = Custom String("Double slap");
  • Wait(0.016, Ignore Condition);
  • Event Player.PickNo = 0;
  • Event Player.IsHandBeingArranged = False;
  • }
  • }
  • rule("Play Triple slap")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.IsGameStarted == True;
  • Event Player.Playing == True;
  • Global.Turn == Event Player;
  • Is Button Held(Event Player, Button(Jump)) == True;
  • Event Player.Hand[Event Player.PickNo] == Custom String("Triple slap");
  • Event Player.IsHidingKitten == False;
  • Event Player.IsExploding == False;
  • Event Player.IsStealing == False;
  • Event Player.IsSlapping == False;
  • Event Player.IsAlteringTheFuture == False;
  • Event Player.WaitAfterPressing == False;
  • Global.IsDeckBeingArranged == False;
  • Event Player.IsHandBeingArranged == False;
  • }
  • actions
  • {
  • Event Player.IsHandBeingArranged = True;
  • Event Player.WaitAfterPressing = True;
  • Destroy HUD Text(Event Player.TempHud);
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Orange), Event Player.PlayerPos, Global.PlayerRad + 2);
  • Play Effect(All Players(All Teams), Buff Explosion Sound, Color(White), Event Player, 100);
  • Call Subroutine(CreateSlappableList);
  • Event Player.SlapNo = 0;
  • Event Player.IsSlapping = True;
  • Call Subroutine(DestroyDiscardCard);
  • Call Subroutine(RearrangeHand);
  • Global.Feed = Custom String("{0} played Triple slap!", Event Player);
  • Global.LastTurn = Custom String("Triple slap");
  • Wait(0.016, Ignore Condition);
  • Event Player.PickNo = 0;
  • Event Player.IsHandBeingArranged = False;
  • }
  • }
  • rule("Play Super skip")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.IsGameStarted == True;
  • Event Player.Playing == True;
  • Global.Turn == Event Player;
  • Is Button Held(Event Player, Button(Jump)) == True;
  • Event Player.Hand[Event Player.PickNo] == Custom String("Super skip");
  • Event Player.IsHidingKitten == False;
  • Event Player.IsExploding == False;
  • Event Player.IsStealing == False;
  • Event Player.IsSlapping == False;
  • Event Player.IsAlteringTheFuture == False;
  • Event Player.WaitAfterPressing == False;
  • Global.IsDeckBeingArranged == False;
  • Event Player.IsHandBeingArranged == False;
  • }
  • actions
  • {
  • Event Player.IsHandBeingArranged = True;
  • Event Player.WaitAfterPressing = True;
  • Destroy HUD Text(Event Player.TempHud);
  • Event Player.ForcedTurn = 1;
  • Call Subroutine(EndTurn);
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Blue), Event Player.PlayerPos, Global.PlayerRad + 2);
  • Play Effect(All Players(All Teams), Buff Explosion Sound, Color(White), Event Player, 100);
  • disabled Modify Player Variable(Event Player, Hand, Remove From Array By Index, Event Player.PickNo);
  • disabled Destroy HUD Text(Event Player.CardHud[Event Player.PickNo]);
  • disabled Modify Player Variable(Event Player, CardHud, Remove From Array By Index, Event Player.PickNo);
  • Call Subroutine(DestroyDiscardCard);
  • Call Subroutine(RearrangeHand);
  • Global.Feed = Custom String("{0} played Super skip!", Event Player);
  • Global.LastTurn = Custom String("Super skip");
  • Wait(0.016, Ignore Condition);
  • Event Player.PickNo = 0;
  • Event Player.IsHandBeingArranged = False;
  • }
  • }
  • rule("Play Fake shuffle")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.IsGameStarted == True;
  • Event Player.Playing == True;
  • Global.Turn == Event Player;
  • Is Button Held(Event Player, Button(Jump)) == True;
  • Event Player.Hand[Event Player.PickNo] == Custom String("Fake shuffle");
  • Event Player.IsHidingKitten == False;
  • Event Player.IsExploding == False;
  • Event Player.IsStealing == False;
  • Event Player.IsSlapping == False;
  • Event Player.IsAlteringTheFuture == False;
  • Event Player.WaitAfterPressing == False;
  • Global.IsDeckBeingArranged == False;
  • Event Player.IsHandBeingArranged == False;
  • }
  • actions
  • {
  • Global.IsDeckBeingArranged = True;
  • Event Player.IsHandBeingArranged = True;
  • Event Player.WaitAfterPressing = True;
  • Destroy HUD Text(Event Player.TempHud);
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Green), Event Player.PlayerPos, Global.PlayerRad + 2);
  • Play Effect(All Players(All Teams), Buff Explosion Sound, Color(White), Event Player, 100);
  • Global.FakeShuffleDeck = Random Value In Array(Global.BaseCards);
  • Modify Global Variable(FakeShuffleDeck, Append To Array, Global.Deck);
  • Global.Deck = Global.FakeShuffleDeck;
  • disabled Modify Player Variable(Event Player, Hand, Remove From Array By Index, Event Player.PickNo);
  • disabled Destroy HUD Text(Event Player.CardHud[Event Player.PickNo]);
  • disabled Modify Player Variable(Event Player, CardHud, Remove From Array By Index, Event Player.PickNo);
  • Call Subroutine(DestroyDiscardCard);
  • Call Subroutine(RearrangeHand);
  • Global.Feed = Custom String("{0} played Shuffle!", Event Player);
  • Global.LastTurn = Custom String("Fake shuffle");
  • Global.LastKittenDefuser = False;
  • Wait(0.016, Ignore Condition);
  • Event Player.PickNo = 0;
  • Event Player.IsHandBeingArranged = False;
  • Global.IsDeckBeingArranged = False;
  • }
  • }
  • rule("Ability2 to randomize card orders (Alter the future)")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.IsGameStarted == True;
  • Event Player.Playing == True;
  • Global.Turn == Event Player;
  • Is Button Held(Event Player, Button(Ability 2)) == True;
  • Event Player.IsHidingKitten == False;
  • Event Player.IsStealing == False;
  • Event Player.IsSlapping == False;
  • Event Player.IsAlteringTheFuture == True;
  • }
  • actions
  • {
  • Event Player.AlterTheFutureDeck = Randomized Array(Event Player.AlterTheFutureDeck);
  • Play Effect(Event Player, Ring Explosion Sound, Color(White), Event Player, 100);
  • }
  • }
  • rule("Interact to Alter the future")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.IsGameStarted == True;
  • Event Player.Playing == True;
  • Global.Turn == Event Player;
  • Is Button Held(Event Player, Button(Interact)) == True;
  • Event Player.IsHidingKitten == False;
  • Event Player.IsStealing == False;
  • Event Player.IsSlapping == False;
  • Event Player.IsAlteringTheFuture == True;
  • Global.IsDeckBeingArranged == False;
  • Event Player.IsHandBeingArranged == False;
  • }
  • actions
  • {
  • Global.IsDeckBeingArranged = True;
  • Destroy HUD Text(Event Player.TempHud);
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Orange), Event Player.PlayerPos, Global.PlayerRad + 2);
  • Play Effect(All Players(All Teams), Buff Explosion Sound, Color(White), Event Player, 100);
  • Global.Feed = Custom String("{0} altered the future!", Event Player);
  • Modify Player Variable(Event Player, AlterTheFutureDeck, Append To Array, Array Slice(Global.Deck, 3, Count Of(Global.Deck)));
  • Global.Deck = Event Player.AlterTheFutureDeck;
  • Event Player.IsAlteringTheFuture = False;
  • Event Player.LastCardRange = 0;
  • Global.IsDeckBeingArranged = False;
  • }
  • }
  • rule("Play Catomic bomb")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.IsGameStarted == True;
  • Event Player.Playing == True;
  • Global.Turn == Event Player;
  • Is Button Held(Event Player, Button(Jump)) == True;
  • Event Player.Hand[Event Player.PickNo] == Custom String("Catomic bomb");
  • Event Player.IsHidingKitten == False;
  • Event Player.IsExploding == False;
  • Event Player.IsStealing == False;
  • Event Player.IsSlapping == False;
  • Event Player.IsAlteringTheFuture == False;
  • Event Player.WaitAfterPressing == False;
  • Global.IsDeckBeingArranged == False;
  • Event Player.IsHandBeingArranged == False;
  • }
  • actions
  • {
  • Global.IsDeckBeingArranged = True;
  • Event Player.IsHandBeingArranged = True;
  • Event Player.WaitAfterPressing = True;
  • Destroy HUD Text(Event Player.TempHud);
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Red), Event Player.PlayerPos, Global.PlayerRad + 2);
  • Play Effect(All Players(All Teams), Buff Explosion Sound, Color(White), Event Player, 100);
  • Modify Global Variable(Deck, Remove From Array By Value, Custom String("Exploding Kitten"));
  • Call Subroutine(RearrangeDeck);
  • Global.CatomicBombDeck = Array Slice(Global.ExplodingKittensDeck, 0, Count Of(Global.Players) - 1);
  • Modify Global Variable(CatomicBombDeck, Append To Array, Global.Deck);
  • Global.Deck = Global.CatomicBombDeck;
  • disabled Modify Player Variable(Event Player, Hand, Remove From Array By Index, Event Player.PickNo);
  • disabled Destroy HUD Text(Event Player.CardHud[Event Player.PickNo]);
  • disabled Modify Player Variable(Event Player, CardHud, Remove From Array By Index, Event Player.PickNo);
  • Call Subroutine(DestroyDiscardCard);
  • Call Subroutine(RearrangeHand);
  • Global.LastTurn = Custom String("Catomic bomb");
  • Wait(0.016, Ignore Condition);
  • Event Player.PickNo = 0;
  • Call Subroutine(EndTurn);
  • Global.Feed = Custom String("{0} played Catomic bomb!", Event Player);
  • Event Player.IsHandBeingArranged = False;
  • Global.IsDeckBeingArranged = False;
  • }
  • }
  • rule("Play See the future (x3)")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.IsGameStarted == True;
  • Event Player.Playing == True;
  • Global.Turn == Event Player;
  • Is Button Held(Event Player, Button(Jump)) == True;
  • Event Player.Hand[Event Player.PickNo] == Custom String("See the future (x3)");
  • Event Player.IsHidingKitten == False;
  • Event Player.IsExploding == False;
  • Event Player.IsStealing == False;
  • Event Player.IsSlapping == False;
  • Event Player.IsAlteringTheFuture == False;
  • Event Player.WaitAfterPressing == False;
  • Global.IsDeckBeingArranged == False;
  • Event Player.IsHandBeingArranged == False;
  • }
  • actions
  • {
  • Event Player.IsHandBeingArranged = True;
  • Event Player.WaitAfterPressing = True;
  • Destroy HUD Text(Event Player.TempHud);
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Purple), Event Player.PlayerPos, Global.PlayerRad + 2);
  • Play Effect(All Players(All Teams), Buff Explosion Sound, Color(White), Event Player, 100);
  • Create HUD Text(Event Player, Custom String(" The next 3 cards in the deck: \r\n 1. {0}\r\n 2. {1}\r\n 3. {2}",
  • Global.Deck[0], Global.Deck[1] == True ? Global.Deck[1] : Custom String("None"),
  • Global.Deck[2] == True ? Global.Deck[2] : Custom String("None")), Custom String(
  • " \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n "), Null, Top, -0.900, Color(Purple), Color(White), Color(White),
  • Visible To and String, Default Visibility);
  • Event Player.TempHud = Last Text ID;
  • disabled Modify Player Variable(Event Player, Hand, Remove From Array By Index, Event Player.PickNo);
  • disabled Destroy HUD Text(Event Player.CardHud[Event Player.PickNo]);
  • disabled Modify Player Variable(Event Player, CardHud, Remove From Array By Index, Event Player.PickNo);
  • Call Subroutine(DestroyDiscardCard);
  • Call Subroutine(RearrangeHand);
  • Global.Feed = Custom String("{0} played See the future (x3)!", Event Player);
  • Global.LastTurn = Custom String("See the future (x3)");
  • Wait(0.016, Ignore Condition);
  • Event Player.PickNo = 0;
  • Event Player.IsHandBeingArranged = False;
  • }
  • }
  • rule("Play See the future (x5)")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.IsGameStarted == True;
  • Event Player.Playing == True;
  • Global.Turn == Event Player;
  • Is Button Held(Event Player, Button(Jump)) == True;
  • Event Player.Hand[Event Player.PickNo] == Custom String("See the future (x5)");
  • Event Player.IsHidingKitten == False;
  • Event Player.IsExploding == False;
  • Event Player.IsStealing == False;
  • Event Player.IsSlapping == False;
  • Event Player.IsAlteringTheFuture == False;
  • Event Player.WaitAfterPressing == False;
  • Global.IsDeckBeingArranged == False;
  • Event Player.IsHandBeingArranged == False;
  • }
  • actions
  • {
  • Event Player.IsHandBeingArranged = True;
  • Event Player.WaitAfterPressing = True;
  • Destroy HUD Text(Event Player.TempHud);
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Purple), Event Player.PlayerPos, Global.PlayerRad + 2);
  • Play Effect(All Players(All Teams), Buff Explosion Sound, Color(White), Event Player, 100);
  • Create HUD Text(Event Player, Custom String(" The next 5 cards in the deck: \r\n 1. {0}\r\n 2. {1}\r\n{2}", Global.Deck[0],
  • Global.Deck[1] == True ? Global.Deck[1] : Custom String("None"), Custom String(" 3. {0}\r\n 4. {1}\r\n 5. {2}",
  • Global.Deck[2] == True ? Global.Deck[2] : Custom String("None"), Global.Deck[3] == True ? Global.Deck[3] : Custom String(
  • "None"), Global.Deck[4] == True ? Global.Deck[4] : Custom String("None"))), Custom String(
  • " \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n "), Null, Top, -0.900, Color(Purple), Color(White), Color(
  • White), Visible To and String, Default Visibility);
  • Event Player.TempHud = Last Text ID;
  • disabled Modify Player Variable(Event Player, Hand, Remove From Array By Index, Event Player.PickNo);
  • disabled Destroy HUD Text(Event Player.CardHud[Event Player.PickNo]);
  • disabled Modify Player Variable(Event Player, CardHud, Remove From Array By Index, Event Player.PickNo);
  • Call Subroutine(DestroyDiscardCard);
  • Call Subroutine(RearrangeHand);
  • Global.Feed = Custom String("{0} played See the future (x5)!", Event Player);
  • Global.LastTurn = Custom String("See the future (x5)");
  • Wait(0.016, Ignore Condition);
  • Event Player.PickNo = 0;
  • Event Player.IsHandBeingArranged = False;
  • }
  • }
  • rule("Play Alter the future (x3)")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.IsGameStarted == True;
  • Event Player.Playing == True;
  • Global.Turn == Event Player;
  • Is Button Held(Event Player, Button(Jump)) == True;
  • Event Player.Hand[Event Player.PickNo] == Custom String("Alter the future (x3)");
  • Event Player.IsHidingKitten == False;
  • Event Player.IsExploding == False;
  • Event Player.IsStealing == False;
  • Event Player.IsSlapping == False;
  • Event Player.IsAlteringTheFuture == False;
  • Event Player.WaitAfterPressing == False;
  • Global.IsDeckBeingArranged == False;
  • Event Player.IsHandBeingArranged == False;
  • }
  • actions
  • {
  • Event Player.IsHandBeingArranged = True;
  • Event Player.WaitAfterPressing = True;
  • Destroy HUD Text(Event Player.TempHud);
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Purple), Event Player.PlayerPos, Global.PlayerRad + 2);
  • Play Effect(All Players(All Teams), Buff Explosion Sound, Color(White), Event Player, 100);
  • Event Player.AlterTheFutureDeck = Array Slice(Global.Deck, 0, 3);
  • Event Player.IsAlteringTheFuture = True;
  • Event Player.LastCardRange = 3;
  • Call Subroutine(DestroyDiscardCard);
  • Call Subroutine(RearrangeHand);
  • Global.Feed = Custom String("{0} played Alter the future (x3)!", Event Player);
  • Global.LastTurn = Custom String("Alter the future (x3)");
  • Wait(0.016, Ignore Condition);
  • Event Player.PickNo = 0;
  • Event Player.IsHandBeingArranged = False;
  • }
  • }
  • rule("Play Alter the future (x5)")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.IsGameStarted == True;
  • Event Player.Playing == True;
  • Global.Turn == Event Player;
  • Is Button Held(Event Player, Button(Jump)) == True;
  • Event Player.Hand[Event Player.PickNo] == Custom String("Alter the future (x5)");
  • Event Player.IsHidingKitten == False;
  • Event Player.IsExploding == False;
  • Event Player.IsStealing == False;
  • Event Player.IsSlapping == False;
  • Event Player.IsAlteringTheFuture == False;
  • Event Player.WaitAfterPressing == False;
  • Global.IsDeckBeingArranged == False;
  • Event Player.IsHandBeingArranged == False;
  • }
  • actions
  • {
  • Event Player.IsHandBeingArranged = True;
  • Event Player.WaitAfterPressing = True;
  • Destroy HUD Text(Event Player.TempHud);
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Purple), Event Player.PlayerPos, Global.PlayerRad + 2);
  • Play Effect(All Players(All Teams), Buff Explosion Sound, Color(White), Event Player, 100);
  • Event Player.AlterTheFutureDeck = Array Slice(Global.Deck, 0, 5);
  • Event Player.IsAlteringTheFuture = True;
  • Event Player.LastCardRange = 5;
  • Call Subroutine(DestroyDiscardCard);
  • Call Subroutine(RearrangeHand);
  • Global.Feed = Custom String("{0} played Alter the future (x5)!", Event Player);
  • Global.LastTurn = Custom String("Alter the future (x5)");
  • Wait(0.016, Ignore Condition);
  • Event Player.PickNo = 0;
  • Event Player.IsHandBeingArranged = False;
  • }
  • }
  • rule("Play Swap top and bottom")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.IsGameStarted == True;
  • Event Player.Playing == True;
  • Global.Turn == Event Player;
  • Is Button Held(Event Player, Button(Jump)) == True;
  • Event Player.Hand[Event Player.PickNo] == Custom String("Swap top and bottom");
  • Event Player.IsHidingKitten == False;
  • Event Player.IsExploding == False;
  • Event Player.IsStealing == False;
  • Event Player.IsSlapping == False;
  • Event Player.IsAlteringTheFuture == False;
  • Event Player.WaitAfterPressing == False;
  • Global.IsDeckBeingArranged == False;
  • Event Player.IsHandBeingArranged == False;
  • }
  • actions
  • {
  • Global.IsDeckBeingArranged = True;
  • Event Player.IsHandBeingArranged = True;
  • Event Player.WaitAfterPressing = True;
  • Destroy HUD Text(Event Player.TempHud);
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Yellow), Event Player.PlayerPos, Global.PlayerRad + 2);
  • Play Effect(All Players(All Teams), Buff Explosion Sound, Color(White), Event Player, 100);
  • Global.CardBeingSwapped = First Of(Global.Deck);
  • Global.Deck[0] = Last Of(Global.Deck);
  • Global.Deck[Count Of(Global.Deck) - 1] = Global.CardBeingSwapped;
  • Call Subroutine(DestroyDiscardCard);
  • Call Subroutine(RearrangeHand);
  • Global.Feed = Custom String("{0} played Swap top and bottom!", Event Player);
  • Global.LastTurn = Custom String("Swap top and bottom");
  • Wait(0.016, Ignore Condition);
  • Event Player.PickNo = 0;
  • Event Player.IsHandBeingArranged = False;
  • Global.IsDeckBeingArranged = False;
  • }
  • }
Join the Workshop.codes Discord