Return to post
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;
}
}