Return to post
variables
{
global:
0: BerserkerBuyPos
1: GlobalSpawn
2: PacifistBuyPos
4: FarmerBuyPos
5: GladiatorBuyPos
6: LightBuyPos
7: EventType
8: Gen1Pos
9: Gen2Pos
10: DamageBuyPos
11: DefenseBuyPos
12: HealthBuyPos
13: SpeedBuyPos
14: Setup
15: HeroChangePos
16: BloodCrystalPos
17: Overflow
18: XPToGoldPos
19: XPPumpPos
20: ScaleUpPos
21: ScaleDownPos
22: BankDepositPos
23: BankWithdrawPos
24: RegenBuyPos
25: StunBuyPos
26: DoubleShotBuyPos
27: InterestBuyPos
28: CrashRelief
29: CorrosiveBuyPos
30: MoveOrDie
31: XPKillEvent
32: NextToKill
33: StartingMoney
34: TenacityPos
35: ContractPosition
36: DarkShopPos
37: DarkShopOutPos
38: ResetPos
39: ResetPoints
40: ResetLevel
41: ChanceWheelPos
42: HealBubblePos
43: DarkPointsBurning
44: MoneyToDarkPos
45: StrengthTrainingPos
46: OneShotPos
47: DarkClassesPos
48: GhostPos
49: TrollPos
50: BillionairePos
51: AngelPos
52: DarkXPBoostPos
53: BerserkererPos
54: OrbPosition
55: OrbPositionType
56: OrbID
57: OrbTextID
58: OrbTimer
59: MinigameEvent
60: AllParticipants
61: EmptyPos
62: HelperPos
63: MinigameEventOn
64: LifestealPos
65: ThirdPersonPos
66: SpectatePos
67: MinigameTime
68: EventText1
69: EventText2
70: TestMinigame_Host
71: EventBubbleLocation
72: EventBubbleID
player:
0: LastTextDamage
1: Berserker
2: HasClass
3: SwitchingClass
4: Pacifist
5: Level
6: XP
7: LevelUpPoints
8: Money
10: Farmer
12: Gladiator
13: Lightweight
14: Killstreak
15: Damage
16: Health
17: Speed
18: DamageTaken
19: ClassName
21: Scale
22: Bank
23: Regen
24: Stun
25: DoubleShot
26: Interest
27: BloodCrystalBeam
28: BloodEnergySound
29: XpPumpBeam
30: XpPumpSound
31: XpPumpSound2
32: CorrosiveAmmunition
33: Poison
34: Poisoner
35: Tenacity
37: ContractText
38: RandomGenerator
39: RandomBloodCrystal
40: HudDone
41: DarkPoints
42: WheelOfChance
43: WheelMoneyReward
44: WheelXPReward
45: WheelLevelReward
46: WheelCooldown
47: Bounty
48: ReturnToSpawnReward
49: ContractKill
50: OnContract
51: ContractCoins
52: ContractXP
53: XPKillReward
54: StrengthTraining
55: StrengthTrainingScore
56: StrengthTrainingCooldown
57: XPMultiplier
59: OneShot
60: DarkClasses
61: Ghost
62: Troll
63: ClassText
64: Billionaire
65: Angel
66: Berserkerer
67: CoinsLost
68: Helper
69: DarkRegen
70: Empty
71: Lifesteal
72: ThirdPerson
73: Spectating
74: SpectatorPlayer
75: TrollMode
76: PoisonDamage
77: DoubleJump
78: DoubleJump2
79: XPSignalReward
80: EventParticipation
}
subroutines
{
0: PreInitiate
1: PostInitiate
2: Default
3: ClassPurge
4: Events
5: WheelOfChance
6: Spawn
7: RewardOrb
8: MinigameEvents
}
disabled rule("// Made by ShadowDragon#1166969")
{
event
{
Ongoing - Global;
}
}
disabled rule("Bot test")
{
event
{
Ongoing - Global;
}
actions
{
Create Dummy Bot(Hero(Baptiste), All Teams, -1, Global.XPPumpPos, Vector(0, 0, 0));
Wait(12, Ignore Condition);
Loop;
}
}
disabled rule("Position test")
{
event
{
Ongoing - Each Player;
All;
All;
}
actions
{
Create HUD Text(Event Player, Custom String("{0}", Position Of(Event Player)), Null, Null, Left, 0, Color(White), Color(White),
Color(White), Visible To and String, Default Visibility);
}
}
disabled rule("// Main rules")
{
event
{
Ongoing - Global;
}
}
rule("Local Player Hud")
{
event
{
Ongoing - Global;
}
actions
{
Create Progress Bar HUD Text(Local Player, Local Player.XP, Custom String("Level: {0}", Local Player.Level), Left, 100,
Local Player.XP < 75 ? Color(White) : Color(Green), Color(White), Visible To Values and Color, Default Visibility);
Create HUD Text(Local Player, Null, Null, Custom String("Killstreak: {0} \r\nContract: {2}", Local Player.Killstreak, Null,
Local Player.ContractText), Top, 10, Color(White), Color(Green), Color(Green), Visible To and String, Default Visibility);
Create HUD Text(Local Player, Custom String("Class: {0} \r\nMoney: {1} \r\nLevel Up Points: {2}", Local Player.ClassName,
Local Player.Money, Local Player.LevelUpPoints), Null, Null, Right, -101, Color(Aqua), Color(White), Color(Aqua),
Visible To and String, Default Visibility);
Create In-World Text(Local Player, Custom String("Speed ({0}) (R to reset)", Local Player.Speed), Vector(X Component Of(
Global.SpeedBuyPos), Y Component Of(Global.SpeedBuyPos) + 1, Z Component Of(Global.SpeedBuyPos)), 1, Clip Against Surfaces,
Visible To Position and String, Color(White), Default Visibility);
Create In-World Text(Local Player, Custom String("Damage ({0})", Local Player.Damage), Vector(X Component Of(Global.DamageBuyPos),
Y Component Of(Global.DamageBuyPos) + 1, Z Component Of(Global.DamageBuyPos)), 1, Clip Against Surfaces,
Visible To Position and String, Color(White), Default Visibility);
Create In-World Text(Local Player, Custom String("Health ({0}%)", Local Player.Health), Vector(X Component Of(Global.HealthBuyPos),
Y Component Of(Global.HealthBuyPos) + 1, Z Component Of(Global.HealthBuyPos)), 1, Clip Against Surfaces,
Visible To Position and String, Color(White), Default Visibility);
Create In-World Text(Local Player, Custom String("Defence ({0}% Damage)", Local Player.DamageTaken), Vector(X Component Of(
Global.DefenseBuyPos), Y Component Of(Global.DefenseBuyPos) + 1, Z Component Of(Global.DefenseBuyPos)), 1,
Clip Against Surfaces, Visible To Position and String, Color(White), Default Visibility);
"scale up"
Global.ScaleUpPos = Vector(-267.750, -5.070, 30.230);
Create Effect(Local Player, Ring, Color(Yellow), Global.ScaleUpPos, 1, Visible To Position and Radius);
Create In-World Text(Local Player, Custom String("Scale up | 20 coins ({0}%)", Local Player.Scale * 100), Vector(X Component Of(
Global.ScaleUpPos), Y Component Of(Global.ScaleUpPos) + 1, Z Component Of(Global.ScaleUpPos)), 1, Clip Against Surfaces,
Visible To Position and String, Color(White), Default Visibility);
"scale down"
Global.ScaleDownPos = Vector(-265, -5.050, 34);
Create Effect(Local Player, Ring, Color(Yellow), Global.ScaleDownPos, 1, Visible To Position and Radius);
Create In-World Text(Local Player, Custom String("Scale down | 20 coins ({0}%)", Local Player.Scale * 100), Vector(X Component Of(
Global.ScaleDownPos), Y Component Of(Global.ScaleDownPos) + 1, Z Component Of(Global.ScaleDownPos)), 1, Clip Against Surfaces,
Visible To Position and String, Color(White), Default Visibility);
Create In-World Text(Local Player, Custom String("Bank | ${0} ({1}% interest)", Local Player.Bank, Local Player.Interest * 100),
Vector(-280, -1, 50), 1.150, Clip Against Surfaces, Visible To Position and String, Color(Yellow), Default Visibility);
Create In-World Text(Local Player, Custom String("Dark Points: {0} | XP Boost: {1}%", Local Player.DarkPoints,
Local Player.XPMultiplier * 100, Custom String("Magic Regen: {1}% Max HP/s | Dark Lifesteal: {2}% Damage dealt", Null,
Local Player.DarkRegen, Local Player.Lifesteal)), Vector(-301.700, -2, 55.080), 1, Clip Against Surfaces,
Visible To Position and String, Color(Purple), Default Visibility);
}
}
rule("Call Initiate")
{
event
{
Ongoing - Global;
}
actions
{
Start Rule(PreInitiate, Do Nothing);
Start Rule(PostInitiate, Do Nothing);
Start Rule(Default, Restart Rule);
}
}
rule("Initiate")
{
event
{
Subroutine;
PreInitiate;
}
actions
{
Set Match Time(5);
Disable Inspector Recording;
Disable Built-In Game Mode Music;
Disable Built-In Game Mode Announcer;
Disable Built-In Game Mode Completion;
Disable Built-In Game Mode Scoring;
Global.GlobalSpawn = Vector(-280, -3.300, 40);
"spawn bubble"
Create Effect(All Players(All Teams), Sphere, Color(Green), Vector(-280, -3.300, 40), 26, Visible To Position and Radius);
"Berserker class"
Global.BerserkerBuyPos = Vector(-287, -3.300, 31);
Create Effect(All Players(All Teams), Ring, Color(Red), Global.BerserkerBuyPos, 1, Visible To Position and Radius);
Create In-World Text(All Players(All Teams), Custom String("Berserker | Receive and deal 40% extra damage."), Vector(-287, -2.300,
31), 1, Clip Against Surfaces, Visible To Position and String, Color(White), Default Visibility);
"pacifist class"
Global.PacifistBuyPos = Vector(-284, -3.300, 29);
Create Effect(All Players(All Teams), Ring, Color(Aqua), Global.PacifistBuyPos, 1, Visible To Position and Radius);
Create In-World Text(All Players(All Teams), Custom String(
"Pacifist | Receive 75% less and deal 90% less damage. Gain passive XP and regenerate while outside."), Vector(X Component Of(
Global.PacifistBuyPos), Y Component Of(Global.PacifistBuyPos) + 1, Z Component Of(Global.PacifistBuyPos)), 1,
Clip Against Surfaces, Visible To Position and String, Color(White), Default Visibility);
"Classes Text"
Create In-World Text(All Players(All Teams), Custom String("Classes | 15 seconds to switch"), Vector(-282, -1.300, 35), 1,
Clip Against Surfaces, Visible To Position and String, Color(Yellow), Default Visibility);
"jump pad"
Create Effect(All Players(All Teams), Ring, Color(Green), Vector(-250, -3, 40), 1, Visible To Position and Radius);
"Farmer Class"
Global.FarmerBuyPos = Vector(-280, -3.300, 30);
Create Effect(All Players(All Teams), Ring, Color(Orange), Global.FarmerBuyPos, 1, Visible To Position and Radius);
Create In-World Text(All Players(All Teams), Custom String("Farmer | Gain 50% extra XP. Deal 25% less damage."), Vector(-280,
-2.300, 30), 1, Clip Against Surfaces, Visible To Position and String, Color(White), Default Visibility);
"Gladiator class"
Global.GladiatorBuyPos = Vector(-278, -3.300, 32.500);
Create Effect(All Players(All Teams), Ring, Color(Blue), Global.GladiatorBuyPos, 1, Visible To Position and Radius);
Create In-World Text(All Players(All Teams), Custom String(
"Gladiator | take 25% less damage and deal 10% more but move 30% slower"), Vector(-278, -2.300, 32.500), 1,
Clip Against Surfaces, Visible To Position and String, Color(White), Default Visibility);
"Lightweight class"
Global.LightBuyPos = Vector(-282.500, -3.300, 32);
Create Effect(All Players(All Teams), Ring, Color(White), Global.LightBuyPos, 1, Visible To Position and Radius);
Create In-World Text(All Players(All Teams), Custom String(
"Lightweight | Increased mobility, gain double jump, and take 20% more damage"), Vector(-282.500, -2.300, 32), 1,
Clip Against Surfaces, Visible To Position and String, Color(White), Default Visibility);
Create In-World Text(All Players(All Teams), Custom String("Level Up Shop | 1 point per upgrade"), Local Vector Of(Vector(-270.500,
0, 46), Event Player, Rotation), 1.250, Clip Against Surfaces, Visible To Position and String, Color(Yellow),
Default Visibility);
"XP To Coins"
Global.XPToGoldPos = Vector(-153, -3.410, -86);
Create Effect(All Players(All Teams), Ring, Color(Yellow), Global.XPToGoldPos, 3, Visible To Position and Radius);
Create In-World Text(All Players(All Teams), Custom String("Convert level up points to coins | 1:15 (reload to convert all)",
Global.XPPumpPos), Vector(X Component Of(Global.XPToGoldPos), Y Component Of(Global.XPToGoldPos) + 1, Z Component Of(
Global.XPToGoldPos)), 1, Clip Against Surfaces, Visible To Position and String, Color(White), Default Visibility);
"Generator 1"
Global.Gen1Pos = Vector(-203, 0, -22);
Create Effect(All Players(All Teams), Ring, Color(Orange), Global.Gen1Pos, 2, Visible To Position and Radius);
Create In-World Text(All Players(All Teams), Custom String("Generator (Coins)"), Vector(X Component Of(Global.Gen1Pos),
Y Component Of(Global.Gen1Pos) + 1, Z Component Of(Global.Gen1Pos)), 1, Clip Against Surfaces, Visible To Position and String,
Color(Green), Default Visibility);
"Generator 2"
Global.Gen2Pos = Vector(-215, 0, -10);
Create Effect(All Players(All Teams), Ring, Color(Orange), Global.Gen2Pos, 2, Visible To Position and Radius);
Create In-World Text(All Players(All Teams), Custom String("Generator (Coins)"), Vector(X Component Of(Global.Gen2Pos),
Y Component Of(Global.Gen2Pos) + 1, Z Component Of(Global.Gen2Pos)), 1, Clip Against Surfaces, Visible To Position and String,
Color(Green), Default Visibility);
"xp shop"
Global.DamageBuyPos = Vector(-266.500, -1.300, 50.250);
Create Effect(All Players(All Teams), Ring, Color(Red), Global.DamageBuyPos, 1, Visible To Position and Radius);
Global.HealthBuyPos = Vector(-268, -1.300, 47);
Create Effect(All Players(All Teams), Ring, Color(Green), Global.HealthBuyPos, 1, Visible To Position and Radius);
Global.DefenseBuyPos = Vector(-272, -1.300, 49.500);
Create Effect(All Players(All Teams), Ring, Color(Yellow), Global.DefenseBuyPos, 1, Visible To Position and Radius);
Global.SpeedBuyPos = Vector(-270, -1.300, 52);
Create Effect(All Players(All Teams), Ring, Color(White), Global.SpeedBuyPos, 1, Visible To Position and Radius);
Global.HeroChangePos = Vector(-284.500, -3.300, 44);
Create In-World Text(All Players(All Teams), Custom String("Change Hero"), Vector(X Component Of(Global.HeroChangePos),
Y Component Of(Global.HeroChangePos) + 1, Z Component Of(Global.HeroChangePos)), 1, Clip Against Surfaces,
Visible To Position and String, Color(White), Default Visibility);
Create Effect(All Players(All Teams), Ring, Color(Yellow), Global.HeroChangePos, 1.250, Visible To Position and Radius);
Global.BloodCrystalPos = Vector(-258.030, -4.730, 12.730);
Create Effect(All Players(All Teams), Ring, Color(Red), Global.BloodCrystalPos, 3, Visible To Position and Radius);
Create Effect(All Players(All Teams), Orb, Color(Red), Vector(X Component Of(Global.BloodCrystalPos), Y Component Of(
Global.BloodCrystalPos) + 3, Z Component Of(Global.BloodCrystalPos)), 0.200, Visible To Position and Radius);
Create In-World Text(All Players(All Teams), Custom String("Blood Crystal ", Icon String(Arrow: Down)), Vector(X Component Of(
Global.BloodCrystalPos), Global.BloodCrystalPos + -0.500, Z Component Of(Global.BloodCrystalPos)), 1, Clip Against Surfaces,
Visible To Position and String, Color(White), Default Visibility);
"Bank Deposit"
Global.BankDepositPos = Vector(-279, -3.300, 49);
Create Effect(All Players(All Teams), Ring, Color(Yellow), Global.BankDepositPos, 1, Visible To Position and Radius);
Create In-World Text(All Players(All Teams), Custom String("Deposit (reload to deposit all)"), Vector(X Component Of(
Global.BankDepositPos), Y Component Of(Global.BankDepositPos) + 1, Z Component Of(Global.BankDepositPos)), 1,
Clip Against Surfaces, Visible To Position and String, Color(Yellow), Default Visibility);
"Bank Withdraw"
Global.BankWithdrawPos = Vector(-281.600, -3.300, 51);
Create Effect(All Players(All Teams), Ring, Color(Yellow), Global.BankWithdrawPos, 1, Visible To Position and Radius);
Create In-World Text(All Players(All Teams), Custom String("Withdraw (reload to withdraw all)"), Vector(X Component Of(
Global.BankWithdrawPos), Y Component Of(Global.BankWithdrawPos) + 1, Z Component Of(Global.BankWithdrawPos)), 1,
Clip Against Surfaces, Visible To Position and String, Color(Yellow), Default Visibility);
"XP Pump"
Global.XPPumpPos = Vector(-179.380, -4.740, -66.060);
Create Effect(All Players(All Teams), Ring, Color(Blue), Global.XPPumpPos, 5, Visible To Position and Radius);
Create In-World Text(All Players(All Teams), Custom String("XP Pump (8 / (number of players on pump) xp/s)"), Vector(
X Component Of(Global.XPPumpPos), Y Component Of(Global.XPPumpPos) + 3, Z Component Of(Global.XPPumpPos)), 0.900,
Clip Against Surfaces, Visible To Position and String, Color(Yellow), Default Visibility);
Create Beam Effect(All Players(All Teams), Good Beam, Global.XPPumpPos, Vector(X Component Of(Global.XPPumpPos), Y Component Of(
Global.XPPumpPos) + 3, Z Component Of(Global.XPPumpPos)), Color(White), Visible To Position and Radius);
"Regen"
Global.RegenBuyPos = Vector(-275.350, -5, 24.450);
Create Effect(All Players(All Teams), Ring, Color(Blue), Global.RegenBuyPos, 1, Visible To Position and Radius);
Create In-World Text(All Players(All Teams), Custom String("Regen | +0.1% max health per second (currently {0}%, 3000 coins)",
Local Player.Regen * 100), Vector(X Component Of(Global.RegenBuyPos), Y Component Of(Global.RegenBuyPos) + 1, Z Component Of(
Global.RegenBuyPos)), 1, Clip Against Surfaces, Visible To Position and String, Color(Yellow), Default Visibility);
"Stun"
Global.StunBuyPos = Vector(-273.390, -5, 26.840);
Create Effect(All Players(All Teams), Ring, Color(Blue), Global.StunBuyPos, 1, Visible To Position and Radius);
Create In-World Text(All Players(All Teams), Custom String(
"Stun Bullets | >40 damage attacks have 15% chance to stun (3000 coins)"), Vector(X Component Of(Global.StunBuyPos),
Y Component Of(Global.StunBuyPos) + 1, Z Component Of(Global.StunBuyPos)), 1, Clip Against Surfaces,
Visible To Position and String, Color(Yellow), Default Visibility);
"landmark"
Create Icon(All Players(All Teams), Vector(X Component Of(Global.ChanceWheelPos), Y Component Of(Global.ChanceWheelPos) + 2,
Z Component Of(Global.ChanceWheelPos)), Question Mark, Visible To and Position, Color(Orange), True);
"Double shot"
Global.DoubleShotBuyPos = Vector(-271.790, -5, 28.930);
Create Effect(All Players(All Teams), Ring, Color(Blue), Global.DoubleShotBuyPos, 1, Visible To Position and Radius);
Create In-World Text(All Players(All Teams), Custom String("Double Shot | 25% chance to deal damage twice (6000 coins)"), Vector(
X Component Of(Global.DoubleShotBuyPos), Y Component Of(Global.DoubleShotBuyPos) + 1, Z Component Of(Global.DoubleShotBuyPos)),
1, Clip Against Surfaces, Visible To Position and String, Color(Yellow), Default Visibility);
"Bank interest"
Global.InterestBuyPos = Vector(-273.520, -5, 22.960);
Create Effect(All Players(All Teams), Ring, Color(Blue), Global.InterestBuyPos, 1, Visible To Position and Radius);
Create In-World Text(All Players(All Teams), Custom String("Bank Interest | +1% per 2 minutes (200 coins)"), Vector(X Component Of(
Global.InterestBuyPos), Y Component Of(Global.InterestBuyPos) + 1, Z Component Of(Global.InterestBuyPos)), 1,
Clip Against Surfaces, Visible To Position and String, Color(Yellow), Default Visibility);
"Corrosive"
Global.CorrosiveBuyPos = Vector(-271.610, -5, 25.430);
Create Effect(All Players(All Teams), Ring, Color(Blue), Global.CorrosiveBuyPos, 1, Visible To Position and Radius);
Create In-World Text(All Players(All Teams), Custom String(
"Corrosive | >60 damage attacks apply poison, dealing damage over time (10000 coins)"), Vector(X Component Of(
Global.CorrosiveBuyPos), Y Component Of(Global.CorrosiveBuyPos) + 1, Z Component Of(Global.CorrosiveBuyPos)), 1,
Clip Against Surfaces, Visible To Position and String, Color(Yellow), Default Visibility);
"Starting Money"
Global.StartingMoney = Workshop Setting Integer(Custom String("Starting"), Custom String("Money"), 500, 0, 15000, 0);
"Tenacity"
Global.TenacityPos = Vector(-270, -5, 27.450);
Create Effect(All Players(All Teams), Ring, Color(Blue), Global.TenacityPos, 1, Visible To Position and Radius);
Create In-World Text(All Players(All Teams), Custom String("Tenacity | Heal 10% max health on kill (7500 coins)"), Vector(
X Component Of(Global.TenacityPos), Y Component Of(Global.TenacityPos) + 1, Z Component Of(Global.TenacityPos)), 1,
Clip Against Surfaces, Visible To Position and String, Color(Yellow), Default Visibility);
"Contracts"
Global.ContractPosition = Vector(-261.020, -5.090, 28.260);
Create Effect(All Players(All Teams), Ring, Color(White), Global.ContractPosition, 1, Visible To Position and Radius);
Create In-World Text(All Players(All Teams), Custom String("New kill contract (7 second cooldown)"), Vector(X Component Of(
Global.ContractPosition), Y Component Of(Global.ContractPosition) + 1, Z Component Of(Global.ContractPosition)), 1,
Clip Against Surfaces, Visible To Position and String, Color(White), Default Visibility);
"Disabler"
Disable Built-In Game Mode Music;
Disable Built-In Game Mode Scoring;
Disable Built-In Game Mode Completion;
"The Dark Shop"
Global.DarkShopPos = Vector(-278, -3.300, 39.500);
Create In-World Text(All Players(All Teams), Custom String("The Dark Shop (resets)"), Vector(X Component Of(Global.DarkShopPos),
Y Component Of(Global.DarkShopPos) + 1, Z Component Of(Global.DarkShopPos)), 1, Clip Against Surfaces,
Visible To Position and String, Color(Violet), Default Visibility);
Create Effect(All Players(All Teams), Sphere, Color(Purple), Global.DarkShopPos, 1, Visible To Position and Radius);
"The Dark Shop Teleport Out"
Global.DarkShopOutPos = Vector(-293.450, -4.180, 49.720);
Create In-World Text(All Players(All Teams), Custom String("Teleport Out"), Vector(X Component Of(Global.DarkShopOutPos),
Y Component Of(Global.DarkShopOutPos) + 1, Z Component Of(Global.DarkShopOutPos)), 1, Clip Against Surfaces,
Visible To Position and String, Color(Violet), Default Visibility);
Create Effect(All Players(All Teams), Sphere, Color(Purple), Global.DarkShopOutPos, 1, Visible To Position and Radius);
"Reset"
Global.ResetPos = Vector(-312.970, -3.960, 62.560);
Create Effect(All Players(All Teams), Ring, Color(Purple), Global.ResetPos, 1, Visible To Position and Radius);
Global.ResetPoints = Workshop Setting Integer(Custom String("Resetting"), Custom String("Points On Reset"), 100, 0, 1500, 0);
Global.ResetLevel = Workshop Setting Integer(Custom String("Resetting"), Custom String("Minimum Level"), 0, 30, 400, 0);
Create In-World Text(All Players(All Teams), Custom String("Reset! (Level {0})", Global.ResetLevel), Vector(X Component Of(
Global.ResetPos), Y Component Of(Global.ResetPos) + 2, Z Component Of(Global.ResetPos)), 1, Clip Against Surfaces,
Visible To Position and String, Color(Orange), Default Visibility);
Create In-World Text(All Players(All Teams), Custom String(
"Upon resetting, all your stats will reset and you will gain {0} Dark Points.", Global.ResetPoints), Vector(X Component Of(
Global.ResetPos), Y Component Of(Global.ResetPos) + 1.500, Z Component Of(Global.ResetPos)), 1, Clip Against Surfaces,
Visible To Position and String, Color(Orange), Default Visibility);
"Wheel Of Chance"
Global.ChanceWheelPos = Vector(-141.770, -1.410, -75.370);
Create In-World Text(All Players(All Teams), Custom String("Wheel Of Chance (Level 15, 500 coins)"), Vector(X Component Of(
Global.ChanceWheelPos), Y Component Of(Global.ChanceWheelPos) + 1, Z Component Of(Global.ChanceWheelPos)), 1,
Clip Against Surfaces, Visible To Position and String, Color(White), Default Visibility);
Create Effect(All Players(All Teams), Ring, Color(Purple), Global.ChanceWheelPos, 2, Visible To Position and Radius);
"Heal Bubble"
Global.HealBubblePos = Vector(-218.900, 0, -26.950);
Create Effect(All Players(All Teams), Sphere, Color(Purple), Global.HealBubblePos, 2, Visible To Position and Radius);
Create Icon(All Players(All Teams), Vector(X Component Of(Global.HealBubblePos), Y Component Of(Global.HealBubblePos) + 2.500,
Z Component Of(Global.HealBubblePos)), Heart, Visible To and Position, Color(Red), True);
"Money to dark"
Global.MoneyToDarkPos = Vector(-314.250, -3.960, 60.750);
Create Effect(All Players(All Teams), Ring, Color(Purple), Global.MoneyToDarkPos, 1, Visible To Position and Radius);
Create In-World Text(All Players(All Teams), Custom String("Money To Dark Points | 100k to 20"), Vector(X Component Of(
Global.MoneyToDarkPos), Y Component Of(Global.MoneyToDarkPos) + 1, Z Component Of(Global.MoneyToDarkPos)), 1,
Clip Against Surfaces, Visible To Position and String, Color(Purple), Default Visibility);
"Dark Points Burning"
Global.DarkPointsBurning = Vector(-311.770, -3.960, 64.490);
Create Effect(All Players(All Teams), Ring, Color(Purple), Global.DarkPointsBurning, 1, Visible To Position and Radius);
Create In-World Text(All Players(All Teams), Custom String("Burn dark points for coins (1:20)"), Vector(X Component Of(
Global.DarkPointsBurning), Y Component Of(Global.DarkPointsBurning) + 1, Z Component Of(Global.DarkPointsBurning)), 1,
Clip Against Surfaces, Visible To Position and String, Color(Green), Default Visibility);
"Strength Training"
Global.StrengthTrainingPos = Vector(-190, 1, -3.290);
Create Effect(All Players(All Teams), Ring, Color(Orange), Global.StrengthTrainingPos, 1, Visible To Position and Radius);
Create In-World Text(All Players(All Teams), Custom String("Strength Training (Level 5)"), Vector(X Component Of(
Global.StrengthTrainingPos), Y Component Of(Global.StrengthTrainingPos) + 1, Z Component Of(Global.StrengthTrainingPos)), 1,
Clip Against Surfaces, Visible To Position and String, Color(Green), Default Visibility);
Create Icon(All Players(All Teams), Vector(X Component Of(Global.StrengthTrainingPos), Y Component Of(Global.StrengthTrainingPos)
+ 2, Z Component Of(Global.StrengthTrainingPos)), Diamond, Visible To and Position, Color(Orange), True);
"One Shot"
Global.OneShotPos = Vector(-304.300, -4.300, 64.710);
Create Effect(All Players(All Teams), Ring, Color(Rose), Global.OneShotPos, 1, Visible To Position and Radius);
Create In-World Text(All Players(All Teams), Custom String("One Shot | Kill and die in 1 shot. Victim kills you on death."),
Vector(X Component Of(Global.OneShotPos), Y Component Of(Global.OneShotPos) + 1, Z Component Of(Global.OneShotPos)), 1,
Clip Against Surfaces, Visible To Position and String, Color(White), Default Visibility);
"Dark Classes"
Global.DarkClassesPos = Vector(-303, -4.180, 60);
Create Effect(All Players(All Teams), Ring, Color(Violet), Global.DarkClassesPos, 1, Visible To Position and Radius);
Create In-World Text(All Players(All Teams), Custom String("Unlock Dark Classes (1500 dark points)"), Vector(X Component Of(
Global.DarkClassesPos), Y Component Of(Global.DarkClassesPos) + 1, Z Component Of(Global.DarkClassesPos)), 1,
Clip Against Surfaces, Visible To Position and String, Color(Yellow), Default Visibility);
"Ghost"
Global.GhostPos = Vector(-302.720, -4.300, 63.490);
Create Effect(All Players(All Teams), Ring, Color(White), Global.GhostPos, 1, Visible To Position and Radius);
Create In-World Text(All Players(All Teams), Custom String("Ghost | Become invisible but deal 1% damage"), Vector(X Component Of(
Global.GhostPos), Y Component Of(Global.GhostPos) + 1, Z Component Of(Global.GhostPos)), 1, Clip Against Surfaces,
Visible To Position and String, Color(White), Default Visibility);
"Troll"
Global.TrollPos = Vector(-300.740, -4.300, 62.220);
Create Effect(All Players(All Teams), Ring, Color(Green), Global.TrollPos, 1, Visible To Position and Radius);
Create In-World Text(All Players(All Teams), Custom String(
"Troll | Deal 1% damage but take 50% less and gain special abilities (f + r to toggle ability)"), Vector(X Component Of(
Global.TrollPos), Y Component Of(Global.TrollPos) + 1, Z Component Of(Global.TrollPos)), 1, Clip Against Surfaces,
Visible To Position and String, Color(White), Default Visibility);
"Billionaire"
Global.BillionairePos = Vector(-298.470, -4.300, 61);
Create Effect(All Players(All Teams), Ring, Color(Yellow), Global.BillionairePos, 1, Visible To Position and Radius);
Create In-World Text(All Players(All Teams), Custom String("Billionaire | Deal 2x damage but each hit costs 1000 coins"), Vector(
X Component Of(Global.BillionairePos), Y Component Of(Global.BillionairePos) + 1, Z Component Of(Global.BillionairePos)), 1,
Clip Against Surfaces, Visible To Position and String, Color(White), Default Visibility);
"Angel Perk"
Global.AngelPos = Vector(-314.110, -4.300, 54.520);
Create Effect(All Players(All Teams), Ring, Color(Yellow), Global.AngelPos, 1, Visible To Position and Radius);
Create In-World Text(All Players(All Teams), Custom String("Angel | Pacifist class gains flight (300 dark points)"), Vector(
X Component Of(Global.AngelPos), Y Component Of(Global.AngelPos) + 1, Z Component Of(Global.AngelPos)), 1,
Clip Against Surfaces, Visible To Position and String, Color(White), Default Visibility);
"Dark XP Boost Perk"
Global.DarkXPBoostPos = Vector(-311.950, -4.300, 53.100);
Create Effect(All Players(All Teams), Ring, Color(Yellow), Global.DarkXPBoostPos, 1, Visible To Position and Radius);
Create In-World Text(All Players(All Teams), Custom String("Dark XP Boost | +1% permanent xp multiplier (25 dark points)",
Event Player.XPMultiplier * 100), Vector(X Component Of(Global.DarkXPBoostPos), Y Component Of(Global.DarkXPBoostPos) + 1,
Z Component Of(Global.DarkXPBoostPos)), 1, Clip Against Surfaces, Visible To Position and String, Color(White),
Default Visibility);
"Berserkerer"
Global.BerserkererPos = Vector(-296.630, -4.300, 59.730);
Create Effect(All Players(All Teams), Ring, Color(Red), Global.BerserkererPos, 1, Visible To Position and Radius);
Create In-World Text(All Players(All Teams), Custom String("Berserkerer | Deal 2.5x and take 3x damage"), Vector(X Component Of(
Global.BerserkererPos), Y Component Of(Global.BerserkererPos) + 1, Z Component Of(Global.BerserkererPos)), 1,
Clip Against Surfaces, Visible To Position and String, Color(White), Default Visibility);
End;
"Empty"
Global.EmptyPos = Vector(-280.430, -3.300, 34.290);
Create Effect(All Players(All Teams), Ring, Color(Gray), Global.EmptyPos, 1, Visible To Position and Radius);
Create In-World Text(All Players(All Teams), Custom String("Empty | Deal +0% damage and receive 0% less"), Vector(X Component Of(
Global.EmptyPos), Y Component Of(Global.EmptyPos) + 1, Z Component Of(Global.EmptyPos)), 1, Clip Against Surfaces,
Visible To Position and String, Color(White), Default Visibility);
"Helper"
Global.HelperPos = Vector(-306.040, -4.300, 66.020);
Create Effect(All Players(All Teams), Ring, Color(Sky Blue), Global.HelperPos, 1, Visible To Position and Radius);
Create In-World Text(All Players(All Teams), Custom String(
"Helper | Heal and give coins and xp (to others) on attack. Take -90% damage"), Vector(X Component Of(Global.HelperPos),
Y Component Of(Global.HelperPos) + 1, Z Component Of(Global.HelperPos)), 1, Clip Against Surfaces,
Visible To Position and String, Color(White), Default Visibility);
"Lifesteal"
Global.LifestealPos = Vector(-305.680, -4.300, 48.710);
Create Effect(All Players(All Teams), Ring, Color(Sky Blue), Global.LifestealPos, 1, Visible To Position and Radius);
Create In-World Text(All Players(All Teams), Custom String(
"Lifesteal | +0.1% (currently {0}%) of damage dealt (50 dark, 10 level up points)", Local Player.Lifesteal), Vector(
X Component Of(Global.LifestealPos), Y Component Of(Global.LifestealPos) + 1, Z Component Of(Global.LifestealPos)), 1,
Clip Against Surfaces, Visible To Position and String, Color(White), Default Visibility);
"Third Person"
Global.ThirdPersonPos = Vector(-279.140, -3.300, 42.580);
Create Effect(All Players(All Teams), Ring, Color(Sky Blue), Global.ThirdPersonPos, 1, Visible To Position and Radius);
Create In-World Text(All Players(All Teams), Custom String("Toggle third person"), Vector(X Component Of(Global.ThirdPersonPos),
Y Component Of(Global.ThirdPersonPos) + 1, Z Component Of(Global.ThirdPersonPos)), 1, Clip Against Surfaces,
Visible To Position and String, Color(White), Default Visibility);
"Spectate"
Global.SpectatePos = Vector(-281.160, -3.300, 39.550);
Create Effect(All Players(All Teams), Ring, Color(Sky Blue), Global.SpectatePos, 1, Visible To Position and Radius);
Create In-World Text(All Players(All Teams), Custom String("Spectate"), Vector(X Component Of(Global.SpectatePos), Y Component Of(
Global.SpectatePos) + 1, Z Component Of(Global.SpectatePos)), 1, Clip Against Surfaces, Visible To Position and String, Color(
White), Default Visibility);
"Host commands"
disabled Create In-World Text(All Players(All Teams), Custom String("Host commands"), Vector(-304.310, -2.300, 34.480), 1,
Clip Against Surfaces, Visible To Position and String, Color(Green), Default Visibility);
"Lifesteal"
disabled Global.TestMinigame_Host = Vector(-289.340, -3.300, 28.280);
disabled Create Effect(All Players(All Teams), Ring, Color(Sky Blue), Global.TestMinigame_Host, 1, Visible To Position and Radius);
disabled Create In-World Text(All Players(All Teams), Custom String("Start test minigame event", Local Player.Lifesteal), Vector(
X Component Of(Global.TestMinigame_Host), Y Component Of(Global.TestMinigame_Host) + 1, Z Component Of(
Global.TestMinigame_Host)), 1, Clip Against Surfaces, Visible To Position and String, Color(White), Default Visibility);
"Total TIme Elapsed"
Create In-World Text(All Players(All Teams), Custom String("Total Time Elapsed: {0}", Total Time Elapsed), Vector(-288.910, -2,
46.690), 1, Clip Against Surfaces, Visible To Position and String, Color(White), Default Visibility);
}
}
rule("Call Spawn")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Event Player.HudDone != True;
}
actions
{
Call Subroutine(Spawn);
}
}
rule("Spawn")
{
event
{
Subroutine;
Spawn;
}
actions
{
disabled Create HUD Text(Event Player, Custom String("{1} Level Up Points: {0}", Event Player.LevelUpPoints, Icon String(Happy)), Null,
Null, Right, 0, Color(Sky Blue), Color(White), Color(White), Visible To and String, Default Visibility);
disabled Create HUD Text(Event Player, Custom String("{1} Coins: {0}", Event Player.Money, Icon String(Diamond)), Null, Null, Right, 0,
Color(Yellow), Color(White), Color(White), Visible To and String, Default Visibility);
disabled Disable Built-In Game Mode Respawning(Event Player);
Create In-World Text(All Players(All Teams), Custom String("Class: {2} | Level {0}", Event Player.Level, Round To Integer(
Max Health(Event Player), To Nearest), Event Player.ClassName), Event Player, 1.200, Clip Against Surfaces,
Visible To Position and String, Color(White), Default Visibility);
Event Player.ClassText = Last Text ID;
disabled Create Progress Bar HUD Text(Event Player, Event Player.XP, Custom String("Level: {0}", Event Player.Level), Left, 100, Color(
Aqua), Color(White), Visible To Values and Color, Default Visibility);
Event Player.Health = 100;
Event Player.Speed = 100;
Event Player.DamageTaken = 100;
Event Player.Damage = 100;
Event Player.ClassName = Custom String("None");
disabled Create HUD Text(Event Player, Custom String("Class: {0} \r\nMoney: {1} \r\nLevel Up Points: {2}", Event Player.ClassName,
Event Player.Money, Event Player.LevelUpPoints), Null, Null, Right, -101, Color(Aqua), Color(White), Color(Aqua),
Visible To and String, Default Visibility);
"needs event player"
disabled If(Global.Setup != True);
disabled Create In-World Text(Event Player, Custom String("Speed ({0}) (F + R to decrease speed)", Event Player.Speed), Vector(
X Component Of(Global.SpeedBuyPos), Y Component Of(Global.SpeedBuyPos) + 1, Z Component Of(Global.SpeedBuyPos)), 1,
Clip Against Surfaces, Visible To Position and String, Color(White), Default Visibility);
disabled Create In-World Text(Event Player, Custom String("Damage ({0})", Event Player.Damage), Vector(X Component Of(Global.DamageBuyPos),
Y Component Of(Global.DamageBuyPos) + 1, Z Component Of(Global.DamageBuyPos)), 1, Clip Against Surfaces,
Visible To Position and String, Color(White), Default Visibility);
disabled Create In-World Text(Event Player, Custom String("Health ({0}%)", Event Player.Health), Vector(X Component Of(Global.HealthBuyPos),
Y Component Of(Global.HealthBuyPos) + 1, Z Component Of(Global.HealthBuyPos)), 1, Clip Against Surfaces,
Visible To Position and String, Color(White), Default Visibility);
disabled Create In-World Text(Event Player, Custom String("Defence ({0}% Damage)", Event Player.DamageTaken), Vector(X Component Of(
Global.DefenseBuyPos), Y Component Of(Global.DefenseBuyPos) + 1, Z Component Of(Global.DefenseBuyPos)), 1,
Clip Against Surfaces, Visible To Position and String, Color(White), Default Visibility);
"scale up"
Global.ScaleUpPos = Vector(-267.750, -5.070, 30.230);
disabled Create Effect(Event Player, Ring, Color(Yellow), Global.ScaleUpPos, 1, Visible To Position and Radius);
disabled Create In-World Text(Event Player, Custom String("Scale up | 20 coins ({0}%)", Event Player.Scale * 100), Vector(X Component Of(
Global.ScaleUpPos), Y Component Of(Global.ScaleUpPos) + 1, Z Component Of(Global.ScaleUpPos)), 1, Clip Against Surfaces,
Visible To Position and String, Color(White), Default Visibility);
"scale down"
Global.ScaleDownPos = Vector(-265, -5.050, 34);
disabled Create Effect(Event Player, Ring, Color(Yellow), Global.ScaleDownPos, 1, Visible To Position and Radius);
disabled Create In-World Text(Event Player, Custom String("Scale down | 20 coins ({0}%)", Event Player.Scale * 100), Vector(X Component Of(
Global.ScaleDownPos), Y Component Of(Global.ScaleDownPos) + 1, Z Component Of(Global.ScaleDownPos)), 1, Clip Against Surfaces,
Visible To Position and String, Color(White), Default Visibility);
disabled Create In-World Text(Event Player, Custom String("Bank | ${0} ({1}% interest)", Event Player.Bank, Event Player.Interest * 100),
Vector(-280, -1, 50), 1.150, Clip Against Surfaces, Visible To Position and String, Color(Yellow), Default Visibility);
disabled Global.Setup = True;
disabled End;
Event Player.Money = Global.StartingMoney;
Event Player.Scale = 1;
Start Scaling Player(Event Player, Event Player.Scale, True);
disabled Create HUD Text(Event Player, Null, Null, Custom String("Contract: {0}", Event Player.ContractText), Top, 9, Color(White), Color(
Green), Color(Green), Visible To and String, Default Visibility);
Event Player.LevelUpPoints = Workshop Setting Integer(Custom String("Starting"), Custom String("Level Up Points"), 0, 0, 200, 0);
disabled Create In-World Text(Event Player, Custom String("Dark Points: {0} | XP Boost: {1}%", Event Player.DarkPoints,
Event Player.XPMultiplier * 100, Custom String("Magic Regen: {1}% Max HP/s | Dark Lifesteal: {2}% Damage dealt", Null,
Event Player.DarkRegen, Event Player.Lifesteal)), Vector(-301.700, -2, 55.080), 1, Clip Against Surfaces,
Visible To Position and String, Color(Purple), Default Visibility);
Event Player.ContractText = Custom String("None");
Event Player.XPMultiplier = Workshop Setting Real(Custom String("Starting"), Custom String("XP Multiplier"), 1, 1, 100, 0);
Event Player.HudDone = True;
}
}
rule("Leaving bubble")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Distance Between(Position Of(Event Player), Vector(-280, -3.300, 40)) >= 26;
Is Dummy Bot(Event Player) != True;
}
actions
{
If(Event Player.HasClass != True);
Teleport(Event Player, Global.GlobalSpawn);
Small Message(Event Player, Custom String("Choose a class first! Look around before leaving."));
Else;
Small Message(Event Player, Custom String("Leaving safe zone."));
Clear Status(Event Player, Phased Out);
Allow Button(Event Player, Button(Primary Fire));
Allow Button(Event Player, Button(Secondary Fire));
Allow Button(Event Player, Button(Ultimate));
Allow Button(Event Player, Button(Melee));
Allow Button(Event Player, Button(Ability 1));
Allow Button(Event Player, Button(Ability 2));
Stop All Heal Over Time(Event Player);
disabled Clear Status(Event Player, Hacked);
End;
}
}
rule("Entering bubble")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Distance Between(Position Of(Event Player), Vector(-280, -3.300, 40)) < 26;
Is Dummy Bot(Event Player) != True;
}
actions
{
Set Status(Event Player, Null, Phased Out, 9999);
Disallow Button(Event Player, Button(Primary Fire));
Disallow Button(Event Player, Button(Secondary Fire));
Disallow Button(Event Player, Button(Ultimate));
disabled Disallow Button(Event Player, Button(Melee));
Disallow Button(Event Player, Button(Ability 1));
Disallow Button(Event Player, Button(Ability 2));
Start Heal Over Time(Event Player, Event Player, 9999, 20);
disabled Apply Impulse(Event Player, Direction Towards(Position Of(Event Player), Global.GlobalSpawn) * -1000, 20, To World,
Cancel Contrary Motion);
disabled Apply Impulse(Event Player, Up, 1, To World, Cancel Contrary Motion);
If(Event Player.Killstreak > 0);
Event Player.Killstreak = 0;
Small Message(Event Player, Custom String("Killstreak reset for entering spawn."));
}
}
rule("On Damage")
{
event
{
Player Dealt Damage;
All;
All;
}
conditions
{
Victim != Event Player;
}
actions
{
Destroy In-World Text(Victim.LastTextDamage);
If(Event Was Critical Hit == False);
Create In-World Text(Event Player, Round To Integer(Event Damage, Up), Vector(X Component Of(Eye Position(Victim)), Y Component Of(
Eye Position(Victim)) + 0.350, Z Component Of(Eye Position(Victim))), 1.500, Clip Against Surfaces,
Visible To Position and String, Color(White), Default Visibility);
Victim.LastTextDamage = Last Text ID;
Else If(Event Was Critical Hit == True);
Create In-World Text(Event Player, Round To Integer(Event Damage, Up), Vector(X Component Of(Eye Position(Victim)), Y Component Of(
Eye Position(Victim)) + 0.350, Z Component Of(Eye Position(Victim))), 1.500, Clip Against Surfaces,
Visible To Position and String, Color(Yellow), Default Visibility);
Victim.LastTextDamage = Last Text ID;
End;
Event Player.XP += Min(Random Real(Event Damage * 0.060, Event Damage * 0.100), 30) * Event Player.XPMultiplier;
}
}
rule("Remove damage text")
{
event
{
Player Took Damage;
All;
All;
}
actions
{
Wait(1, Restart When True);
Destroy In-World Text(Event Player.LastTextDamage);
}
}
rule("death")
{
event
{
Player Died;
All;
All;
}
actions
{
Destroy In-World Text(Event Player.LastTextDamage);
Event Player.Killstreak = 0;
Event Player.Poison = 0;
Clear Status(Event Player, Invincible);
}
}
rule("Berserker Select")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Distance Between(Position Of(Event Player), Global.BerserkerBuyPos) <= 1;
Is Button Held(Event Player, Button(Interact)) == True;
Event Player.SwitchingClass != True;
Event Player.Berserker != True;
}
actions
{
Call Subroutine(ClassPurge);
If(Event Player.HasClass != True);
Small Message(Event Player, Custom String("Berserker class selected."));
Event Player.Berserker = True;
Event Player.HasClass = True;
Else;
Small Message(Event Player, Custom String("Switching class in 15 seconds."));
Event Player.SwitchingClass = True;
Wait(5, Ignore Condition);
Small Message(Event Player, Custom String("Respawning in 10 seconds"));
Wait(10, Ignore Condition);
Kill(Event Player, Null);
Event Player.Berserker = True;
Event Player.HasClass = True;
Event Player.SwitchingClass = False;
Small Message(Event Player, Custom String("Berserker class selected."));
End;
disabled Start Rule(Default, Restart Rule);
Event Player.ClassName = Custom String("Berserker");
}
}
rule("Pacifist Select")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Distance Between(Position Of(Event Player), Global.PacifistBuyPos) <= 1;
Is Button Held(Event Player, Button(Interact)) == True;
Event Player.SwitchingClass != True;
Event Player.Pacifist != True;
}
actions
{
Call Subroutine(ClassPurge);
If(Event Player.HasClass != True);
Small Message(Event Player, Custom String("Pacifist class selected."));
Event Player.Pacifist = True;
Event Player.HasClass = True;
Else;
Small Message(Event Player, Custom String("Switching class in 15 seconds."));
Event Player.SwitchingClass = True;
Wait(5, Ignore Condition);
Small Message(Event Player, Custom String("Respawning in 10 seconds"));
Wait(10, Ignore Condition);
Kill(Event Player, Null);
Event Player.Pacifist = True;
Event Player.HasClass = True;
Event Player.SwitchingClass = False;
Small Message(Event Player, Custom String("Pacifist class selected."));
End;
disabled Start Rule(Default, Restart Rule);
If(Event Player.Angel == False);
Event Player.ClassName = Custom String("Pacifist");
Else;
Event Player.ClassName = Custom String("Angel");
}
}
rule("respawn")
{
event
{
Player Died;
All;
All;
}
actions
{
Teleport(Event Player, Vector(0, 400, 0));
Wait Until(Is Alive(Event Player) == True, 99999);
Wait(0.016, Ignore Condition);
Teleport(Event Player, Vector(0, 400, 0));
Wait(0.016, Ignore Condition);
Teleport(Event Player, Global.GlobalSpawn);
}
}
rule("Level Up")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Event Player.XP >= 100;
}
actions
{
Event Player.LevelUpPoints += 1 * Event Player.Level + 10;
Small Message(Event Player, Custom String("{0} Level Up", Icon String(Checkmark)));
Play Effect(Event Player, Ring Explosion Sound, Color(White), Event Player, 100);
Play Effect(Event Player, Good Explosion, Color(White), Event Player, 10);
Event Player.XP -= 100;
Event Player.Level += 1;
Set Player Score(Event Player, Event Player.Level);
Wait(1, Ignore Condition);
Loop If Condition Is True;
}
}
rule("On Kill")
{
event
{
Player Dealt Final Blow;
All;
All;
}
conditions
{
Event Player != Victim;
}
actions
{
Event Player.XPKillReward = Random Real(25, 35) * Event Player.XPMultiplier;
Victim.CoinsLost = Round To Integer(Victim.Money * 0.200, To Nearest);
Small Message(Event Player, Custom String("+{0} xp", Event Player.XPKillReward));
Event Player.XP += Event Player.XPKillReward;
Event Player.Killstreak += 1;
If(Global.MinigameEvent != 1);
Small Message(Victim, Custom String("-{0} coins (-20%)", Victim.CoinsLost));
Small Message(Event Player, Custom String("+{0} coins", Victim.CoinsLost + 50));
Event Player.Money += Round To Integer(Victim.Money * 0.200, To Nearest) + 50;
Victim.Money -= Round To Integer(Victim.Money * 0.200, To Nearest);
End;
If(Event Player.Tenacity == True);
Heal(Event Player, Null, Max Health(Event Player) * 0.100);
End;
If(Global.XPKillEvent == True);
Small Message(Event Player, Custom String("+{0} extra xp", Event Player.XPMultiplier * 70));
Event Player.XP += 70 * Event Player.XPMultiplier;
End;
If(Victim.Bounty > 1);
Small Message(Event Player, Custom String("+{0} coins for claiming bounty.", Victim.Bounty));
Small Message(Victim, Custom String("Bounty cleared"));
Event Player.Money += Victim.Bounty;
Wait(0.016, Ignore Condition);
Victim.Bounty = 0;
}
}
rule("Pacifist's passive XP")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Is Game In Progress == True;
Event Player.Pacifist == True;
Distance Between(Position Of(Event Player), Global.GlobalSpawn) >= 26;
Has Status(Event Player, Invincible) == False;
}
actions
{
Wait(1, Ignore Condition);
Event Player.XP += 1 * Event Player.XPMultiplier;
Loop If Condition Is True;
}
}
rule("Jump pad")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Distance Between(Vector(-250, -3, 40), Position Of(Event Player)) <= 1;
}
actions
{
Apply Impulse(Event Player, Up, 12, To Player, Cancel Contrary Motion);
}
}
rule("Farmer Select")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Distance Between(Position Of(Event Player), Global.FarmerBuyPos) <= 1;
Is Button Held(Event Player, Button(Interact)) == True;
Event Player.SwitchingClass != True;
Event Player.Farmer != True;
}
actions
{
Call Subroutine(ClassPurge);
If(Event Player.HasClass != True);
Small Message(Event Player, Custom String("Farmer class selected."));
Event Player.Farmer = True;
Event Player.HasClass = True;
Else;
Small Message(Event Player, Custom String("Switching class in 15 seconds."));
Event Player.SwitchingClass = True;
Wait(5, Ignore Condition);
Small Message(Event Player, Custom String("Respawning in 10 seconds"));
Wait(10, Ignore Condition);
Kill(Event Player, Null);
Event Player.Farmer = True;
Event Player.HasClass = True;
Event Player.SwitchingClass = False;
Small Message(Event Player, Custom String("Farmer class selected."));
End;
disabled Start Rule(Default, Restart Rule);
Event Player.ClassName = Custom String("Farmer");
Event Player.XPMultiplier += 0.500;
}
}
rule("Gladiator Select")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Distance Between(Position Of(Event Player), Global.GladiatorBuyPos) <= 1;
Is Button Held(Event Player, Button(Interact)) == True;
Event Player.SwitchingClass != True;
Event Player.Gladiator != True;
}
actions
{
Call Subroutine(ClassPurge);
If(Event Player.HasClass != True);
Small Message(Event Player, Custom String("Gladiator class selected."));
Event Player.Gladiator = True;
Event Player.HasClass = True;
Else;
Small Message(Event Player, Custom String("Switching class in 15 seconds."));
Event Player.SwitchingClass = True;
Wait(5, Ignore Condition);
Small Message(Event Player, Custom String("Respawning in 10 seconds"));
Wait(10, Ignore Condition);
Kill(Event Player, Null);
Event Player.Gladiator = True;
Event Player.HasClass = True;
Event Player.SwitchingClass = False;
Small Message(Event Player, Custom String("Gladiator class selected."));
End;
disabled Start Rule(Default, Restart Rule);
Event Player.ClassName = Custom String("Gladiator");
}
}
rule("Lightweight Select")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Distance Between(Position Of(Event Player), Global.LightBuyPos) <= 1;
Is Button Held(Event Player, Button(Interact)) == True;
Event Player.SwitchingClass != True;
Event Player.Lightweight != True;
}
actions
{
Call Subroutine(ClassPurge);
If(Event Player.HasClass != True);
Small Message(Event Player, Custom String("Lightweight class selected."));
Event Player.Lightweight = True;
Event Player.HasClass = True;
Else;
Small Message(Event Player, Custom String("Switching class in 15 seconds."));
Event Player.SwitchingClass = True;
Wait(5, Ignore Condition);
Small Message(Event Player, Custom String("Respawning in 10 seconds"));
Wait(10, Ignore Condition);
Kill(Event Player, Null);
Event Player.Lightweight = True;
Event Player.HasClass = True;
Event Player.SwitchingClass = False;
Small Message(Event Player, Custom String("Lightweight class selected."));
End;
disabled Start Rule(Default, Restart Rule);
Event Player.ClassName = Custom String("Lightweight");
}
}
rule("Default values")
{
event
{
Subroutine;
Default;
}
actions
{
If(Event Player.HasClass == False);
Set Move Speed(Event Player, Event Player.Speed);
Set Damage Received(Event Player, Event Player.DamageTaken);
Set Damage Dealt(Event Player, Event Player.Damage);
Set Max Health(Event Player, Event Player.Health);
Else If(Event Player.Berserker == True);
Set Move Speed(Event Player, Event Player.Speed);
Set Damage Received(Event Player, Event Player.DamageTaken * 1.400);
Set Damage Dealt(Event Player, Event Player.Damage * 1.400);
Set Max Health(Event Player, Event Player.Health);
Else If(Event Player.Pacifist == True);
Set Move Speed(Event Player, Event Player.Speed);
Set Damage Received(Event Player, Event Player.DamageTaken * 0.250);
Set Damage Dealt(Event Player, Event Player.Damage * 0.100);
Set Max Health(Event Player, Event Player.Health);
Else If(Event Player.Farmer == True);
Set Move Speed(Event Player, Event Player.Speed);
Set Damage Received(Event Player, Event Player.DamageTaken);
Set Damage Dealt(Event Player, Event Player.Damage * 0.750);
Set Max Health(Event Player, Event Player.Health);
Else If(Event Player.Gladiator == True);
Set Move Speed(Event Player, Event Player.Speed * 0.750);
Set Damage Received(Event Player, Event Player.DamageTaken * 0.750);
Set Damage Dealt(Event Player, Event Player.Damage * 1.100);
Set Max Health(Event Player, Event Player.Health);
Else If(Event Player.Lightweight == True);
Set Move Speed(Event Player, Event Player.Speed * 1.600);
Set Damage Received(Event Player, Event Player.DamageTaken * 1.200);
Set Damage Dealt(Event Player, Event Player.Damage);
Set Max Health(Event Player, Event Player.Health);
End;
If(Event Player.Lightweight == True);
Set Gravity(Event Player, 75);
Set Jump Vertical Speed(Event Player, 125);
Else;
Set Jump Vertical Speed(Event Player, 100);
Set Gravity(Event Player, 100);
End;
If(Event Player.OneShot == True);
Set Move Speed(Event Player, Event Player.Speed);
Set Damage Received(Event Player, Event Player.DamageTaken);
Set Damage Dealt(Event Player, Event Player.Damage);
Set Max Health(Event Player, Event Player.Health);
End;
If(Event Player.Ghost == True);
Set Move Speed(Event Player, Event Player.Speed);
Set Damage Received(Event Player, Event Player.DamageTaken);
Set Damage Dealt(Event Player, Event Player.Damage * 0.010);
Set Max Health(Event Player, Event Player.Health);
End;
If(Event Player.Troll == True);
Set Move Speed(Event Player, Event Player.Speed);
Set Damage Received(Event Player, Event Player.DamageTaken * 0.500);
Set Damage Dealt(Event Player, Event Player.Damage * 0.010);
Set Max Health(Event Player, Event Player.Health);
End;
If(Event Player.Billionaire == True);
Set Move Speed(Event Player, Event Player.Speed);
Set Damage Received(Event Player, Event Player.DamageTaken);
If(Event Player.Money >= 1000);
Set Damage Dealt(Event Player, Event Player.Damage * 2);
Else;
Set Damage Dealt(Event Player, Event Player.Damage);
End;
Set Max Health(Event Player, Event Player.Health);
End;
If(Event Player.Berserkerer == True);
Set Move Speed(Event Player, Event Player.Speed);
Set Damage Received(Event Player, Event Player.DamageTaken * 3);
Set Damage Dealt(Event Player, Event Player.Damage * 2.500);
Set Max Health(Event Player, Event Player.Health);
End;
If(Event Player.OneShot == True);
Set Move Speed(Event Player, Event Player.Speed);
Set Damage Received(Event Player, Event Player.DamageTaken);
Set Damage Dealt(Event Player, Event Player.Damage);
Set Max Health(Event Player, Event Player.Health);
End;
If(Event Player.Empty == True);
Set Move Speed(Event Player, Event Player.Speed);
Set Damage Received(Event Player, Event Player.DamageTaken);
Set Damage Dealt(Event Player, Event Player.Damage);
Set Max Health(Event Player, Event Player.Health);
End;
If(Event Player.Helper == True);
Set Move Speed(Event Player, Event Player.Speed);
Set Damage Received(Event Player, Event Player.DamageTaken * 0.100);
Set Damage Dealt(Event Player, Event Player.Damage * 0.010);
Set Max Health(Event Player, Event Player.Health);
End;
}
}
rule("Pacifist Regen")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Event Player.Pacifist == True;
Distance Between(Position Of(Event Player), Vector(-280, -3.300, 40)) > 20;
}
actions
{
Heal(Event Player, Null, Max Health(Event Player) * 0.020);
Wait(1, Ignore Condition);
Loop If Condition Is True;
}
}
rule("set values")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Is Dummy Bot(Event Player) != True;
}
actions
{
Call Subroutine(Default);
Wait(1, Ignore Condition);
Loop;
}
}
rule("Class Purge")
{
event
{
Subroutine;
ClassPurge;
}
actions
{
If(Event Player.Ghost == True);
Create In-World Text(All Players(All Teams), Custom String("Class: {2} | Level {0}", Event Player.Level, Round To Integer(
Max Health(Event Player), To Nearest), Event Player.ClassName), Event Player, 1.200, Clip Against Surfaces,
Visible To Position and String, Color(White), Default Visibility);
Event Player.ClassText = Last Text ID;
Set Invisible(Event Player, None);
End;
If(Event Player.Farmer == True);
Event Player.XPMultiplier -= 0.500;
End;
Event Player.Berserker = False;
Event Player.Pacifist = False;
Event Player.Farmer = False;
Event Player.Lightweight = False;
Event Player.Gladiator = False;
Event Player.OneShot = False;
Event Player.Ghost = False;
Event Player.Troll = False;
Event Player.Billionaire = False;
Event Player.Berserkerer = False;
Event Player.Empty = False;
Event Player.Helper = False;
Event Player.ClassName = Custom String("None (waiting to change)");
}
}
rule("Event")
{
event
{
Ongoing - Global;
}
conditions
{
Global.EventType == 0;
}
actions
{
Wait(Random Real(120, 210), Abort When False);
Global.EventType = Random Integer(1, 7);
Call Subroutine(Events);
}
}
rule("EventSubroutine")
{
event
{
Subroutine;
Events;
}
actions
{
If(Global.EventType == 1);
Big Message(All Players(All Teams), Custom String("Event Starting..."));
Global.EventType = 22222222;
Wait(5, Ignore Condition);
Global.EventType = 1;
Big Message(All Players(All Teams), Custom String("Next person to die earns a reward"));
Else If(Global.EventType == 2);
Big Message(All Players(All Teams), Custom String("Event Starting..."));
Wait(5, Ignore Condition);
Big Message(All Players(All Teams), Custom String("+30 Level Up Points for all"));
All Players(All Teams).LevelUpPoints += 30;
Global.EventType = 0;
Else If(Global.EventType == 3);
Big Message(All Players(All Teams), Custom String("Event Starting..."));
Wait(5, Ignore Condition);
Big Message(All Players(All Teams), Custom String("Generators work 20x better for 30 seconds"));
Global.Overflow = True;
Wait(30, Ignore Condition);
Big Message(All Players(All Teams), Custom String("Event Over"));
Global.EventType = 0;
Global.Overflow = False;
Else If(Global.EventType == 4);
Big Message(All Players(All Teams), Custom String("Event Starting..."));
Wait(5, Ignore Condition);
Big Message(All Players(All Teams), Custom String("Standing still will deal damage for 15 seconds"));
Global.MoveOrDie = True;
Wait(15, Ignore Condition);
Big Message(All Players(All Teams), Custom String("Event Over"));
Global.EventType = 0;
Global.MoveOrDie = False;
Else If(Global.EventType == 5);
Big Message(All Players(All Teams), Custom String("Event Starting..."));
Wait(5, Ignore Condition);
Big Message(All Players(All Teams), Custom String("Gain +70 xp per kill for 40 seconds"));
Global.XPKillEvent = True;
Wait(40, Ignore Condition);
Big Message(All Players(All Teams), Custom String("Event Over"));
Global.EventType = 0;
Global.XPKillEvent = False;
Else If(Global.EventType == 6);
Big Message(All Players(All Teams), Custom String("Event Starting..."));
Wait(5, Ignore Condition);
Big Message(All Players(All Teams), Custom String("Next person to kill will earn a reward"));
Global.NextToKill = True;
Else If(Global.EventType == 7);
Big Message(All Players(All Teams), Custom String("Event Starting..."));
Wait(5, Ignore Condition);
Big Message(All Players(All Teams), Custom String("Reward Orb Spawning, press f to collect..."));
Call Subroutine(RewardOrb);
}
}
rule("Self kill Event")
{
event
{
Player Died;
All;
All;
}
conditions
{
Global.EventType == 1;
}
actions
{
Big Message(All Players(All Teams), Custom String("{0} won the event!", Event Player));
Event Player.Money += 1000;
Event Player.XP += 200;
Small Message(Event Player, Custom String("+1000 coins, +200 xp"));
Global.EventType = 0;
}
}
rule("Generator 1")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Distance Between(Event Player, Global.Gen1Pos) <= 2;
}
actions
{
If(Global.Overflow != True);
Wait(3, Abort When False);
Event Player.RandomGenerator = Random Integer(8, 20);
Small Message(Event Player, Custom String("+{0} coins", Event Player.RandomGenerator));
Event Player.Money += Event Player.RandomGenerator;
Loop If Condition Is True;
Else If(Global.Overflow == True);
Wait(3, Abort When False);
Event Player.RandomGenerator = Random Integer(8, 20);
Event Player.Money += Event Player.RandomGenerator * 20;
Small Message(Event Player, Custom String("+{0} coins", Event Player.RandomGenerator * 20));
Loop If Condition Is True;
}
}
rule("Generator 2")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Distance Between(Event Player, Global.Gen2Pos) <= 2;
}
actions
{
If(Global.Overflow != True);
Wait(3, Abort When False);
Event Player.RandomGenerator = Random Integer(8, 20);
Small Message(Event Player, Custom String("+{0} coins", Event Player.RandomGenerator));
Event Player.Money += Event Player.RandomGenerator;
Loop If Condition Is True;
Else If(Global.Overflow == True);
Wait(3, Abort When False);
Event Player.RandomGenerator = Random Integer(8, 20);
Event Player.Money += Event Player.RandomGenerator * 20;
Small Message(Event Player, Custom String("+{0} coins", Event Player.RandomGenerator * 20));
Loop If Condition Is True;
}
}
rule("Health Buy")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Is Game In Progress == True;
Distance Between(Event Player, Global.HealthBuyPos) <= 1;
Event Player.LevelUpPoints >= 1;
Is Button Held(Event Player, Button(Interact)) == True;
}
actions
{
If(Event Player.Health < 1000);
Event Player.LevelUpPoints -= 1;
Event Player.Health += 1;
If(Is Button Held(Event Player, Button(Crouch)) == True);
Wait(0.030, Abort When False);
Loop If Condition Is True;
End;
Else;
Small Message(Event Player, Custom String("Max Health!"));
}
}
rule("Defence Buy")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Distance Between(Event Player, Global.DefenseBuyPos) <= 1;
Is Game In Progress == True;
Is Button Held(Event Player, Button(Interact)) == True;
Event Player.LevelUpPoints >= 1;
}
actions
{
If(Event Player.DamageTaken > 40);
Event Player.LevelUpPoints -= 1;
Event Player.DamageTaken -= 0.100;
If(Is Button Held(Event Player, Button(Crouch)) == True);
Wait(0.030, Abort When False);
Loop If Condition Is True;
End;
Else;
Small Message(Event Player, Custom String("Max Defence!"));
}
}
rule("Damage Buy")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Distance Between(Event Player, Global.DamageBuyPos) <= 1;
Is Game In Progress == True;
Is Button Held(Event Player, Button(Interact)) == True;
Event Player.LevelUpPoints >= 1;
}
actions
{
If(Event Player.Damage < 1000);
Event Player.LevelUpPoints -= 1;
Event Player.Damage += 1;
If(Is Button Held(Event Player, Button(Crouch)) == True);
Wait(0.030, Abort When False);
Loop If Condition Is True;
End;
Else;
Small Message(Event Player, Custom String("Max Damage!"));
}
}
rule("Speed Buy")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Distance Between(Event Player, Global.SpeedBuyPos) <= 1;
Is Game In Progress == True;
Is Button Held(Event Player, Button(Interact)) == True;
Event Player.LevelUpPoints >= 1;
}
actions
{
If(Event Player.Speed < 700);
Event Player.Speed += 1;
Event Player.LevelUpPoints -= 1;
Else;
Small Message(Event Player, Custom String("Max Speed!"));
End;
If(Is Button Held(Event Player, Button(Crouch)) == True);
Wait(0.030, Abort When False);
Loop If Condition Is True;
End;
}
}
rule("Speed Reset")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Distance Between(Event Player, Global.SpeedBuyPos) <= 1;
Is Game In Progress == True;
Is Button Held(Event Player, Button(Reload)) == True;
Event Player.Speed > 100;
}
actions
{
Event Player.LevelUpPoints += Event Player.Speed - 100;
Event Player.Speed = 100;
Small Message(Event Player, Custom String("Reset speed"));
}
}
rule("Killstreak Announcements")
{
event
{
Player Dealt Final Blow;
All;
All;
}
actions
{
If(Event Player.Killstreak == 10);
Big Message(All Players(All Teams), Custom String("{0} is on a killstreak of 10!", Event Player));
End;
If(Event Player.Killstreak == 15);
Big Message(All Players(All Teams), Custom String("{0} is on a killstreak of 15!", Event Player));
End;
If(Event Player.Killstreak == 20);
Big Message(All Players(All Teams), Custom String("{0} is on a killstreak of 20!", Event Player));
End;
}
}
rule("Hero Change")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Distance Between(Event Player, Global.HeroChangePos) <= 1.500;
Is Button Held(Event Player, Button(Interact)) == True;
}
actions
{
Kill(Event Player, Null);
Small Message(Event Player, Custom String("Change heroes"));
}
}
rule("Blood Crystal")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Distance Between(Event Player, Global.BloodCrystalPos) <= 3;
Is Alive(Event Player) == True;
}
actions
{
Create Beam Effect(All Players(All Teams), Bad Beam, Vector(X Component Of(Global.BloodCrystalPos), Y Component Of(
Global.BloodCrystalPos) + 3, Z Component Of(Global.BloodCrystalPos)), Event Player, Color(Red),
Visible To Position and Radius);
Event Player.BloodCrystalBeam = Last Created Entity;
Create Effect(Event Player, Energy Sound, Color(White), Position Of(Event Player), 300, Visible To Position and Radius);
Event Player.BloodEnergySound = Last Created Entity;
Damage(Event Player, Null, Max Health(Event Player) * 0.200);
Event Player.RandomBloodCrystal = Random Integer(8, 14);
Event Player.Money += Event Player.RandomBloodCrystal;
Small Message(Event Player, Custom String("+{0} coins", Event Player.RandomBloodCrystal));
disabled Set Status(Event Player, Null, Burning, 0.750);
Wait(0.750, Ignore Condition);
Destroy Effect(Event Player.BloodCrystalBeam);
Destroy Effect(Event Player.BloodEnergySound);
Loop If Condition Is True;
}
}
rule("LevelUpPoints To Coins")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Distance Between(Event Player, Global.XPToGoldPos) <= 3;
Is Button Held(Event Player, Button(Interact)) == True;
Event Player.LevelUpPoints >= 1;
}
actions
{
Event Player.Money += 15;
Event Player.LevelUpPoints -= 1;
If(Is Button Held(Event Player, Button(Crouch)) == True);
Wait(0.030, Abort When False);
Loop If Condition Is True;
}
}
rule("Scale Up")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Distance Between(Event Player, Global.ScaleUpPos) <= 1;
Is Button Held(Event Player, Button(Interact)) == True;
Event Player.Money >= 20;
Event Player.Scale < 3;
}
actions
{
Event Player.Scale += 0.005;
Event Player.Money -= 20;
If(Is Button Held(Event Player, Button(Crouch)) == True);
Wait(0.030, Ignore Condition);
Loop If Condition Is True;
End;
}
}
rule("Scale Down")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Distance Between(Event Player, Global.ScaleDownPos) <= 1;
Is Button Held(Event Player, Button(Interact)) == True;
Event Player.Money >= 20;
Event Player.Scale > 0.350;
}
actions
{
Event Player.Scale -= 0.005;
Event Player.Money -= 20;
If(Is Button Held(Event Player, Button(Crouch)) == True);
Wait(0.030, Ignore Condition);
Loop If Condition Is True;
End;
}
}
rule("Bank Deposit")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Distance Between(Event Player, Global.BankDepositPos) <= 1;
Is Button Held(Event Player, Button(Interact)) == True;
}
actions
{
If(Event Player.Money >= 10);
Event Player.Bank += 10;
Event Player.Money -= 10;
If(Is Button Held(Event Player, Button(Crouch)) == True);
Wait(0.016, Abort When False);
Loop If Condition Is True;
End;
}
}
rule("Bank Withdraw")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Distance Between(Event Player, Global.BankWithdrawPos) <= 1;
Is Button Held(Event Player, Button(Interact)) == True;
}
actions
{
If(Event Player.Bank >= 10);
Event Player.Money += 10;
Event Player.Bank -= 10;
If(Is Button Held(Event Player, Button(Crouch)) == True);
Wait(0.016, Abort When False);
Loop If Condition Is True;
End;
}
}
rule("XP Pump")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Distance Between(Global.XPPumpPos, Event Player) <= 5;
}
actions
{
Chase Player Variable At Rate(Event Player, XP, 10000, 8 / Count Of(Filtered Array(All Living Players(All Teams), Distance Between(
Position Of(Current Array Element), Global.XPPumpPos) <= 5)) * Event Player.XPMultiplier, Destination and Rate);
End;
Small Message(Event Player, Custom String("Gaining XP"));
Create Beam Effect(All Players(All Teams), Bad Beam, Vector(X Component Of(Global.XPPumpPos), Y Component Of(Global.XPPumpPos) + 3,
Z Component Of(Global.XPPumpPos)), Event Player, Color(Blue), Visible To Position and Radius);
Event Player.XpPumpBeam = Last Created Entity;
Create Effect(Event Player, Beacon Sound, Color(White), Event Player, 200, Visible To Position and Radius);
Event Player.XpPumpSound = Last Created Entity;
Create Effect(Event Player, Decal Sound, Color(White), Event Player, 200, Visible To Position and Radius);
Event Player.XpPumpSound2 = Last Created Entity;
}
}
rule("Stepping off XP Pump")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Distance Between(Global.XPPumpPos, Event Player) > 5;
}
actions
{
Stop Chasing Player Variable(Event Player, XP);
Destroy Effect(Event Player.XpPumpBeam);
Destroy Effect(Event Player.XpPumpSound);
Destroy Effect(Event Player.XpPumpSound2);
}
}
rule("XP Pump Signal")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Distance Between(Global.XPPumpPos, Event Player) <= 5;
}
actions
{
Wait(Random Integer(14, 21), Abort When False);
Event Player.XPSignalReward = Random Integer(25, 40);
Event Player.XP += Event Player.XPSignalReward * Event Player.XPMultiplier;
Play Effect(Event Player, Ring Explosion, Color(White), Global.XPPumpPos, 5);
Play Effect(Event Player, Buff Explosion Sound, Color(White), Event Player, 200);
Wait(0.016, Ignore Condition);
Small Message(Event Player, Custom String("+{0} xp (xp pump)", Event Player.XPSignalReward));
Loop If Condition Is True;
}
}
rule("Regen Buy")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Is Game In Progress == True;
Is Button Held(Event Player, Button(Interact)) == True;
Event Player.Money >= 3000;
Distance Between(Event Player, Global.RegenBuyPos) <= 1;
}
actions
{
If(Event Player.Regen < 0.015);
Event Player.Money -= 3000;
Event Player.Regen += 0.001;
If(Is Button Held(Event Player, Button(Crouch)) == True);
Wait(0.016, Abort When False);
Loop If Condition Is True;
End;
Else;
Small Message(Event Player, Custom String("Max Regen!"));
End;
}
}
rule("Stun Buy")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Event Player.Stun == False;
Is Game In Progress == True;
Is Button Held(Event Player, Button(Interact)) == True;
Event Player.Money >= 3000;
Distance Between(Event Player, Global.StunBuyPos) <= 1;
}
actions
{
Event Player.Money -= 3000;
Event Player.Stun = True;
Small Message(Event Player, Custom String("Stun Bought"));
}
}
rule("Regen")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Event Player.Regen == True;
}
actions
{
Heal(Event Player, Null, Min(Event Player.Regen * Max Health(Event Player), 40));
Wait(1, Ignore Condition);
Loop If Condition Is True;
}
}
rule("Stun")
{
event
{
Player Dealt Damage;
All;
All;
}
conditions
{
Event Player.Stun == True;
Victim != Event Player;
(Event Damage >= 40) == True;
}
actions
{
If(Random Real(1, 100) <= 15);
Set Status(Victim, Null, Stunned, 0.650);
}
}
rule("Interest Buy")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Is Game In Progress == True;
Is Button Held(Event Player, Button(Interact)) == True;
Event Player.Money >= 200;
Distance Between(Event Player, Global.InterestBuyPos) <= 1;
Event Player.Interest < 0.400;
}
actions
{
Event Player.Money -= 200;
Event Player.Interest += 0.010;
If(Is Button Held(Event Player, Button(Crouch)) == True);
Wait(0.030, Abort When False);
Loop If Condition Is True;
End;
}
}
rule("Double Shot Buy")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Event Player.DoubleShot == False;
Is Game In Progress == True;
Is Button Held(Event Player, Button(Interact)) == True;
Event Player.Money >= 6000;
Distance Between(Event Player, Global.DoubleShotBuyPos) <= 1;
}
actions
{
Event Player.Money -= 6000;
Event Player.DoubleShot = True;
Small Message(Event Player, Custom String("Double-Shot Bought"));
}
}
rule("Corrosive Buy")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Event Player.CorrosiveAmmunition == False;
Is Game In Progress == True;
Is Button Held(Event Player, Button(Interact)) == True;
Event Player.Money >= 10000;
Distance Between(Event Player, Global.CorrosiveBuyPos) <= 1;
}
actions
{
Event Player.Money -= 10000;
Event Player.CorrosiveAmmunition = True;
Small Message(Event Player, Custom String("Corrosive Bought"));
}
}
rule("Interest")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Event Player.Interest > 0;
}
actions
{
Wait(120, Abort When False);
Event Player.Bank += Round To Integer(Event Player.Bank * Event Player.Interest, Up);
Loop If Condition Is True;
}
}
rule("Double Shot")
{
event
{
Player Dealt Damage;
All;
All;
}
conditions
{
Event Player.DoubleShot == True;
Victim != Event Player;
}
actions
{
If(Random Real(1, 100) <= 25);
Damage(Victim, Event Player, Event Damage);
}
}
rule("Inflict Poison")
{
event
{
Player Dealt Damage;
All;
All;
}
conditions
{
Event Player.CorrosiveAmmunition == True;
Victim != Event Player;
Event Damage >= 60;
Event Player.PoisonDamage != True;
}
actions
{
Victim.Poison += 3;
Small Message(Victim, Custom String("+3 Poison"));
Victim.Poisoner = Event Player;
}
}
rule("Poison Damage")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Event Player.Poison > 0;
}
actions
{
Small Message(Event Player, Custom String("Poison: {0}", Event Player.Poison));
Event Player.PoisonDamage = True;
Damage(Event Player, Event Player.Poisoner, Min(Event Player.Poison, 3));
Event Player.PoisonDamage = False;
Event Player.Poison -= 1;
Wait(1, Abort When False);
Loop If Condition Is True;
}
}
rule("Next To Kill Event")
{
event
{
Player Dealt Final Blow;
All;
All;
}
conditions
{
Global.NextToKill == True;
}
actions
{
Big Message(All Players(All Teams), Custom String("{0} won the event!", Event Player));
Event Player.Money += 1000;
Event Player.XP += 200;
Small Message(Event Player, Custom String("+1000 coins, +200 xp"));
Global.EventType = 0;
Global.NextToKill = 0;
}
}
rule("Move Event")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Global.MoveOrDie == True;
Is Moving(Event Player) == False;
}
actions
{
Wait(0.250, Abort When False);
Damage(Event Player, Null, Max Health(Event Player) / 16);
Loop If Condition Is True;
}
}
rule("Tenacity Buy")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Event Player.Tenacity == False;
Is Game In Progress == True;
Is Button Held(Event Player, Button(Interact)) == True;
Event Player.Money >= 7500;
Distance Between(Event Player, Global.TenacityPos) <= 1;
}
actions
{
Event Player.Money -= 7500;
Event Player.Tenacity = True;
Small Message(Event Player, Custom String("Tenacity Bought"));
}
}
rule("Contract")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Distance Between(Event Player, Global.ContractPosition) <= 1;
Is Button Held(Event Player, Button(Interact)) == True;
}
actions
{
If(Number Of Players(All Teams) >= 3);
Play Effect(Event Player, Debuff Impact Sound, Color(White), Event Player, 200);
Event Player.ContractKill = Random Value In Array(Filtered Array(All Players(All Teams), Current Array Element != Event Player));
Event Player.OnContract = True;
Event Player.ContractXP = Random Real(70, 120);
Event Player.ContractCoins = Random Integer(400, 700);
Event Player.ContractText = Custom String("Kill {0} ({1} coins, {2} xp)", Event Player.ContractKill, Event Player.ContractCoins,
Event Player.ContractXP);
Small Message(Event Player, Custom String("Contract Started"));
Wait(7, Ignore Condition);
Else;
Small Message(Event Player, Custom String("Must have at least 3 players to start a contract."));
}
}
rule("Bank Deposit All")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Distance Between(Event Player, Global.BankDepositPos) <= 1;
Is Button Held(Event Player, Button(Reload)) == True;
}
actions
{
Event Player.Bank += Event Player.Money;
Event Player.Money = 0;
}
}
rule("Bank Withdraw All")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Distance Between(Event Player, Global.BankWithdrawPos) <= 1;
Is Button Held(Event Player, Button(Reload)) == True;
}
actions
{
If(Is Button Held(Event Player, Button(Reload)) == True);
Event Player.Money += Event Player.Bank;
Event Player.Bank = 0;
}
}
rule("Dark Shop Teleport In")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Distance Between(Position Of(Event Player), Global.DarkShopPos) < 1;
Is Button Held(Event Player, Button(Interact)) == True;
}
actions
{
If(Event Player.HasClass == True);
Teleport(Event Player, Vector(-290, -2, 50));
Set Status(Event Player, Null, Invincible, 9999);
Else;
Small Message(Event Player, Custom String("Choose a class first!"));
}
}
rule("Dark Shop Teleport Out")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Distance Between(Position Of(Event Player), Global.DarkShopOutPos) < 1;
Is Button Held(Event Player, Button(Interact)) == True;
}
actions
{
Teleport(Event Player, Vector(-266.330, -5.090, 31.670));
Clear Status(Event Player, Invincible);
}
}
rule("Reset")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Distance Between(Position Of(Event Player), Global.ResetPos) <= 1;
Is Button Held(Event Player, Button(Interact)) == True;
}
actions
{
If(Event Player.Level >= Global.ResetLevel);
Big Message(All Players(All Teams), Custom String("{0} has reset!", Event Player));
Small Message(Event Player, Custom String("+{0} Dark Points", Global.ResetPoints));
Set Player Score(Event Player, 0);
Event Player.Level = 0;
Event Player.XP = 0;
Event Player.LevelUpPoints = 50;
Event Player.Health = 100;
Event Player.Speed = 100;
Event Player.DamageTaken = 100;
Event Player.Damage = 100;
Event Player.Money = Global.StartingMoney;
Event Player.Scale = 1;
Event Player.Bank = 0;
Event Player.CorrosiveAmmunition = 0;
Event Player.Tenacity = 0;
Event Player.Regen = 0;
Event Player.DoubleShot = 0;
Event Player.Stun = 0;
Event Player.Interest = 0;
Event Player.DarkPoints += Global.ResetPoints;
Play Effect(Event Player, Ring Explosion Sound, Color(White), Event Player, 200);
Else;
Small Message(Event Player, Custom String("You must be at least level {0} to reset.", Global.ResetLevel));
}
}
rule("Wheel Of Chance")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Distance Between(Position Of(Event Player), Global.ChanceWheelPos) <= 2;
Is Button Held(Event Player, Button(Interact)) == True;
}
actions
{
If(Event Player.WheelCooldown < 1);
If(Event Player.Money >= 500);
If(Event Player.Level >= 15);
Event Player.Money -= 500;
Event Player.WheelOfChance = Random Integer(1, 12);
Call Subroutine(WheelOfChance);
Event Player.WheelCooldown = 20;
Else;
Small Message(Event Player, Custom String("You must be at least level 15 to use this."));
End;
Else;
Small Message(Event Player, Custom String("Not enough money."));
End;
Else;
Small Message(Event Player, Custom String("Wait {0} seconds before trying again.", Event Player.WheelCooldown));
}
}
rule("Wheel Of Chance Subroutine")
{
event
{
Subroutine;
WheelOfChance;
}
actions
{
Small Message(Event Player, Custom String("Spinning..."));
Wait(4, Ignore Condition);
If(Event Player.WheelOfChance == 1);
Event Player.WheelMoneyReward = Random Integer(4000, 6000);
Event Player.Money += Event Player.WheelMoneyReward;
Small Message(Event Player, Custom String("+{0} coins", Event Player.WheelMoneyReward));
Else If(Event Player.WheelOfChance == 2);
All Players(All Teams).Money += Round To Integer(3000 / Number Of Players(All Teams), Up);
Small Message(Event Player, Custom String("Gave everyone {0} coins (including you)", Round To Integer(3000 / Number Of Players(
All Teams), Up)));
Small Message(Filtered Array(All Players(All Teams), Current Array Element != Event Player), Custom String(
"{0} gave you {1} coins", Event Player, Round To Integer(3000 / Number Of Players(All Teams), Up)));
Else If(Event Player.WheelOfChance == 3);
Small Message(Event Player, Custom String("Lose half of your held coins!"));
Event Player.Money /= 2;
Else If(Event Player.WheelOfChance == 4);
Event Player.WheelLevelReward = Random Integer(-3, -1);
Small Message(Event Player, Custom String("{0} Levels", Event Player.WheelLevelReward));
Event Player.XP = 0;
Event Player.Level += Event Player.WheelLevelReward;
Else If(Event Player.WheelOfChance == 5);
Event Player.WheelXPReward = Random Integer(250, 400);
Event Player.XP += Event Player.WheelXPReward;
Small Message(Event Player, Custom String("+{0} xp", Event Player.WheelXPReward));
Else If(Event Player.WheelOfChance == 6);
Set Player Health(Event Player, 1);
Set Status(Event Player, Null, Hacked, 15);
Set Status(Event Player, Null, Frozen, 5);
Small Message(Event Player, Custom String("Something bad happened..."));
Else If(Event Player.WheelOfChance == 7);
Small Message(Event Player, Custom String("Nothing happened."));
Else If(Event Player.WheelOfChance == 8);
Kill(Event Player, Null);
Small Message(Event Player, Custom String("You died?"));
Else If(Event Player.WheelOfChance == 9);
Event Player.DarkPoints += 100;
Small Message(Event Player, Custom String("+100 dark points"));
Else If(Event Player.WheelOfChance == 10);
Event Player.ReturnToSpawnReward = True;
Small Message(Event Player, Custom String("Return to spawn for a reward! "));
Else If(Event Player.WheelOfChance == 11);
Small Message(Event Player, Custom String("Lose 25% of your banked coins!"));
Event Player.Bank *= 0.750;
Else If(Event Player.WheelOfChance == 12);
Event Player.WheelMoneyReward = Random Integer(1000, 2000);
Event Player.Money += Event Player.WheelMoneyReward;
Small Message(Event Player, Custom String("+{0} coins", Event Player.WheelMoneyReward));
}
}
rule("Wheel Cooldown Counting")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Event Player.WheelCooldown > 0;
}
actions
{
Event Player.WheelCooldown -= 1;
Wait(1, Abort When False);
Loop If Condition Is True;
}
}
rule("Return")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Event Player.ReturnToSpawnReward == True;
Distance Between(Position Of(Event Player), Global.GlobalSpawn) <= 26;
}
actions
{
Event Player.Money += 3000;
Event Player.XP += 300;
Small Message(Event Player, Custom String("+300 xp, +3000 coins"));
Event Player.ReturnToSpawnReward = False;
}
}
rule("Heal Bubble")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Distance Between(Position Of(Event Player), Global.HealBubblePos) <= 2;
}
actions
{
If(Health(Event Player) != Max Health(Event Player));
Wait(1.500, Abort When False);
Small Message(Event Player, Custom String("Healed {0} ", Max Health(Event Player) * 0.100));
Heal(Event Player, Null, Max Health(Event Player) * 0.100);
Loop If Condition Is True;
Else;
Wait(1.500, Abort When False);
Small Message(Event Player, Custom String("Healed 0 (Max health)"));
Loop If Condition Is True;
}
}
rule("Contract Finish")
{
event
{
Player Dealt Final Blow;
All;
All;
}
conditions
{
Event Player.OnContract == True;
(Victim == Event Player.ContractKill) == True;
}
actions
{
Play Effect(Event Player, Buff Explosion Sound, Color(White), Event Player, 200);
Event Player.Money += Event Player.ContractCoins;
Event Player.XP += Event Player.ContractXP;
Event Player.ContractText = Custom String("None");
Event Player.OnContract = False;
Event Player.ContractKill = Null;
Small Message(Event Player, Custom String("Contract complete!"));
}
}
rule("Money to Dark")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Distance Between(Event Player, Global.MoneyToDarkPos) <= 1;
Is Button Held(Event Player, Button(Interact)) == True;
Event Player.Money >= 100000;
}
actions
{
Event Player.Money -= 100000;
Event Player.DarkPoints += 20;
Play Effect(Event Player, Ring Explosion, Color(White), Event Player, 15);
If(Is Button Held(Event Player, Button(Crouch)) == True);
Wait(0.030, Abort When False);
Loop If Condition Is True;
End;
}
}
rule("Dark Points Burning")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Distance Between(Event Player, Global.DarkPointsBurning) <= 1;
Is Button Held(Event Player, Button(Interact)) == True;
Event Player.DarkPoints >= 1;
}
actions
{
Event Player.Money += 20;
Event Player.DarkPoints -= 1;
If(Is Crouching(Event Player) == True);
Wait(0.020, Ignore Condition);
Loop If Condition Is True;
}
}
rule("Strength Training")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Distance Between(Position Of(Event Player), Global.StrengthTrainingPos) <= 1;
Is Button Held(Event Player, Button(Interact)) == True;
}
actions
{
If(Event Player.Level >= 5);
If(Event Player.StrengthTrainingCooldown >= 1);
Small Message(Event Player, Custom String("You must wait {0} seconds before trying again.",
Event Player.StrengthTrainingCooldown));
Else;
Small Message(Event Player, Custom String("Strength training starting in 5 seconds"));
Event Player.StrengthTraining = True;
Set Status(Event Player, Null, Rooted, 9999);
Wait(5, Ignore Condition);
Small Message(Event Player, Custom String("Press space as many times as you can!"));
Wait(3.500, Ignore Condition);
Small Message(Event Player, Custom String("5"));
Wait(1, Ignore Condition);
Small Message(Event Player, Custom String("4"));
Wait(1, Ignore Condition);
Small Message(Event Player, Custom String("3"));
Wait(1, Ignore Condition);
Small Message(Event Player, Custom String("2"));
Wait(1, Ignore Condition);
Small Message(Event Player, Custom String("1"));
Wait(1, Ignore Condition);
Event Player.StrengthTraining = False;
Event Player.Money += Event Player.StrengthTrainingScore * 6;
Event Player.XP += Event Player.StrengthTrainingScore * 3 * Event Player.XPMultiplier;
Small Message(Event Player, Custom String("Training ended. {2} presses, +{0} xp, +{1} coins",
Event Player.StrengthTrainingScore * 3 * Event Player.XPMultiplier, Event Player.StrengthTrainingScore * 6,
Event Player.StrengthTrainingScore));
Event Player.StrengthTrainingCooldown = 120;
Clear Status(Event Player, Rooted);
Wait(0.016, Ignore Condition);
Event Player.StrengthTrainingScore = 0;
End;
Else;
Small Message(Event Player, Custom String("You must be at least level 5 to use this."));
}
}
rule("Strength Training Scoring")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Event Player.StrengthTraining == True;
Is Button Held(Event Player, Button(Jump)) == True;
}
actions
{
Event Player.StrengthTrainingScore += 1;
}
}
rule("Strength Training Cooldown")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Event Player.StrengthTrainingCooldown > 0;
}
actions
{
Event Player.StrengthTrainingCooldown -= 1;
Wait(1, Ignore Condition);
Loop If Condition Is True;
}
}
rule("One Shot Select")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Distance Between(Position Of(Event Player), Global.OneShotPos) <= 1;
Is Button Held(Event Player, Button(Interact)) == True;
Event Player.SwitchingClass != True;
Event Player.OneShot != True;
}
actions
{
If(Event Player.DarkClasses == True);
Call Subroutine(ClassPurge);
If(Event Player.HasClass != True);
Small Message(Event Player, Custom String("One Shot class selected."));
Event Player.OneShot = True;
Event Player.HasClass = True;
Else;
Small Message(Event Player, Custom String("Switching class in 15 seconds."));
Event Player.SwitchingClass = True;
Wait(5, Ignore Condition);
Small Message(Event Player, Custom String("Respawning in 10 seconds"));
Wait(10, Ignore Condition);
Kill(Event Player, Null);
Event Player.OneShot = True;
Event Player.HasClass = True;
Event Player.SwitchingClass = False;
Small Message(Event Player, Custom String("One Shot class selected."));
End;
disabled Start Rule(Default, Restart Rule);
Event Player.ClassName = Custom String("One Shot");
Else;
Small Message(Event Player, Custom String("Unlock dark classes first."));
}
}
rule("One Shot Death")
{
event
{
Player Took Damage;
All;
All;
}
conditions
{
Event Player.OneShot == True;
Attacker != Null;
}
actions
{
Kill(Event Player, Attacker);
}
}
rule("One Shot Kill")
{
event
{
Player Dealt Damage;
All;
All;
}
conditions
{
Event Player.OneShot == True;
Is Alive(Event Player) == True;
}
actions
{
Kill(Victim, Event Player);
Kill(Event Player, Victim);
}
}
rule("Unlock Dark Classes")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Event Player.DarkClasses == False;
Is Button Held(Event Player, Button(Interact)) == True;
Distance Between(Position Of(Event Player), Global.DarkClassesPos) <= 1;
}
actions
{
If(Event Player.DarkPoints >= 1500);
Small Message(Event Player, Custom String("Bought"));
Play Effect(All Players(All Teams), Ring Explosion Sound, Color(White), Event Player, 1);
Play Effect(All Players(All Teams), Ring Explosion, Color(Aqua), Event Player, 5);
Event Player.DarkPoints -= 1500;
Event Player.DarkClasses = True;
Else;
Small Message(Event Player, Custom String("You do not have 1500 dark points"));
}
}
rule("Ghost Select")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Distance Between(Position Of(Event Player), Global.GhostPos) <= 1;
Is Button Held(Event Player, Button(Interact)) == True;
Event Player.SwitchingClass != True;
Event Player.Ghost != True;
}
actions
{
If(Event Player.DarkClasses == True);
Call Subroutine(ClassPurge);
If(Event Player.HasClass != True);
Small Message(Event Player, Custom String("Ghost class selected."));
Event Player.Ghost = True;
Event Player.HasClass = True;
Else;
Small Message(Event Player, Custom String("Switching class in 15 seconds."));
Event Player.SwitchingClass = True;
Wait(5, Ignore Condition);
Small Message(Event Player, Custom String("Respawning in 10 seconds"));
Wait(10, Ignore Condition);
Kill(Event Player, Null);
Event Player.Ghost = True;
Event Player.HasClass = True;
Event Player.SwitchingClass = False;
Small Message(Event Player, Custom String("Ghost class selected."));
End;
disabled Start Rule(Default, Restart Rule);
Event Player.ClassName = Custom String("Ghost");
Destroy In-World Text(Event Player.ClassText);
Set Invisible(Event Player, All);
Else;
Small Message(Event Player, Custom String("Unlock dark classes first."));
}
}
rule("Troll Select")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Distance Between(Position Of(Event Player), Global.TrollPos) <= 1;
Is Button Held(Event Player, Button(Interact)) == True;
Event Player.SwitchingClass != True;
Event Player.Troll != True;
}
actions
{
If(Event Player.DarkClasses == True);
Call Subroutine(ClassPurge);
If(Event Player.HasClass != True);
Small Message(Event Player, Custom String("Troll class selected."));
Event Player.Troll = True;
Event Player.HasClass = True;
Else;
Small Message(Event Player, Custom String("Switching class in 15 seconds."));
Event Player.SwitchingClass = True;
Wait(5, Ignore Condition);
Small Message(Event Player, Custom String("Respawning in 10 seconds"));
Wait(10, Ignore Condition);
Kill(Event Player, Null);
Event Player.Troll = True;
Event Player.HasClass = True;
Event Player.SwitchingClass = False;
Small Message(Event Player, Custom String("Troll class selected."));
End;
disabled Start Rule(Default, Restart Rule);
Event Player.ClassName = Custom String("Troll ");
Else;
Small Message(Event Player, Custom String("Unlock dark classes first."));
}
}
rule("Troll Effects")
{
event
{
Player Dealt Damage;
All;
All;
}
conditions
{
Event Player.Troll == True;
}
actions
{
If(Event Player.TrollMode == 1);
Apply Impulse(Victim, Facing Direction Of(Event Player), 25, To World, Cancel Contrary Motion);
Apply Impulse(Victim, Vector(0, 10000, 0), 3, To World, Cancel Contrary Motion);
Set Environment Credit Player(Victim, Event Player);
Else If(Event Player.TrollMode == 2);
Apply Impulse(Victim, Facing Direction Of(Event Player) - Facing Direction Of(Event Player) * 1000, 25, To World,
Cancel Contrary Motion);
Apply Impulse(Victim, Vector(0, 10000, 0), 3, To World, Cancel Contrary Motion);
Set Environment Credit Player(Victim, Event Player);
Else If(Event Player.TrollMode == 3);
Set Facing(Victim, Vector(Random Real(-1000, 1000), Random Real(-100, 250), Random Real(-1000, 1000)), To World);
Else If(Event Player.TrollMode == 4);
Set Status(Victim, Event Player, Frozen, 2);
Set Status(Victim, Event Player, Hacked, 4);
}
}
rule("Troll Change")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Event Player.Troll == True;
Is Button Held(Event Player, Button(Interact)) == True;
Is Button Held(Event Player, Button(Reload)) == True;
}
actions
{
If(Event Player.TrollMode == 0);
Event Player.TrollMode = 1;
Small Message(Event Player, Custom String("Knockback Mode"));
Else If(Event Player.TrollMode == 1);
Event Player.TrollMode = 2;
Small Message(Event Player, Custom String("Pull Mode"));
Else If(Event Player.TrollMode == 2);
Event Player.TrollMode = 3;
Small Message(Event Player, Custom String("Annoying Mode"));
Else If(Event Player.TrollMode == 3);
Event Player.TrollMode = 4;
Small Message(Event Player, Custom String("Freeze Mode"));
Else If(Event Player.TrollMode == 4);
Event Player.TrollMode = 1;
Small Message(Event Player, Custom String("Knockback Mode"));
}
}
rule("Billionaire Select")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Distance Between(Position Of(Event Player), Global.BillionairePos) <= 1;
Is Button Held(Event Player, Button(Interact)) == True;
Event Player.SwitchingClass != True;
Event Player.Billionaire != True;
}
actions
{
If(Event Player.DarkClasses == True);
Call Subroutine(ClassPurge);
If(Event Player.HasClass != True);
Small Message(Event Player, Custom String("Billionaire class selected."));
Event Player.Billionaire = True;
Event Player.HasClass = True;
Else;
Small Message(Event Player, Custom String("Switching class in 15 seconds."));
Event Player.SwitchingClass = True;
Wait(5, Ignore Condition);
Small Message(Event Player, Custom String("Respawning in 10 seconds"));
Wait(10, Ignore Condition);
Kill(Event Player, Null);
Event Player.Billionaire = True;
Event Player.HasClass = True;
Event Player.SwitchingClass = False;
Small Message(Event Player, Custom String("Billionaire class selected."));
End;
disabled Start Rule(Default, Restart Rule);
Event Player.ClassName = Custom String("Billionaire");
Else;
Small Message(Event Player, Custom String("Unlock dark classes first."));
}
}
rule("Billionaire Damage")
{
event
{
Player Dealt Damage;
All;
All;
}
conditions
{
Event Player.Money >= 1000;
Event Player.Billionaire == True;
}
actions
{
Event Player.Money -= 1000;
}
}
rule("Angel Buy")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Event Player.Angel == False;
Is Game In Progress == True;
Is Button Held(Event Player, Button(Interact)) == True;
Event Player.DarkPoints >= 300;
Distance Between(Event Player, Global.AngelPos) <= 1;
}
actions
{
Event Player.DarkPoints -= 300;
Event Player.Angel = True;
Small Message(Event Player, Custom String("Angel Bought. Hold space to fly."));
If(Event Player.Pacifist == True);
Event Player.ClassName = Custom String("Angel");
Else;
Log To Inspector(Custom String("This is a filler."));
End;
}
}
rule("Angel Fly")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Event Player.Angel == True;
Event Player.Pacifist == True;
Is Button Held(Event Player, Button(Jump)) == True;
Has Status(Event Player, Knocked Down) == False;
Has Status(Event Player, Rooted) == False;
Has Status(Event Player, Frozen) == False;
Has Status(Event Player, Asleep) == False;
Has Status(Event Player, Stunned) == False;
}
actions
{
Apply Impulse(Event Player, Vector(0, 10000, 0), 5, To World, Cancel Contrary Motion);
Wait(0.020, Ignore Condition);
Loop If Condition Is True;
}
}
rule("Dark XP Boost Buy")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Event Player.XPMultiplier < 5;
Is Game In Progress == True;
Is Button Held(Event Player, Button(Interact)) == True;
Event Player.DarkPoints >= 25;
Distance Between(Position Of(Event Player), Global.DarkXPBoostPos) <= 1;
}
actions
{
If(Event Player.XPMultiplier < 5);
Play Effect(Event Player, Ring Explosion, Color(White), Position Of(Event Player), 15);
Event Player.DarkPoints -= 25;
Event Player.XPMultiplier += 0.010;
If(Is Crouching(Event Player) == True);
Wait(0.016, Ignore Condition);
Loop If Condition Is True;
End;
Else;
Small Message(Event Player, Custom String("Max boost!"));
}
}
rule("Berserkerer Select")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Distance Between(Position Of(Event Player), Global.BerserkererPos) <= 1;
Is Button Held(Event Player, Button(Interact)) == True;
Event Player.SwitchingClass != True;
Event Player.Berserkerer != True;
}
actions
{
If(Event Player.DarkClasses == True);
Call Subroutine(ClassPurge);
If(Event Player.HasClass != True);
Small Message(Event Player, Custom String("Berserkerer class selected."));
Event Player.Berserkerer = True;
Event Player.HasClass = True;
Else;
Small Message(Event Player, Custom String("Switching class in 15 seconds."));
Event Player.SwitchingClass = True;
Wait(5, Ignore Condition);
Small Message(Event Player, Custom String("Respawning in 10 seconds"));
Wait(10, Ignore Condition);
Kill(Event Player, Null);
Event Player.Berserkerer = True;
Event Player.HasClass = True;
Event Player.SwitchingClass = False;
Small Message(Event Player, Custom String("Berserkerer class selected."));
End;
disabled Start Rule(Default, Restart Rule);
Event Player.ClassName = Custom String("Berserkerer [x2]");
Else;
Small Message(Event Player, Custom String("Unlock dark classes first."));
}
}
rule("Reward Orb")
{
event
{
Subroutine;
RewardOrb;
}
actions
{
Global.OrbPositionType = Random Integer(1, 10);
If(Global.OrbPositionType == 1);
Global.OrbPosition = Vector(-226.320, -0.500, -34.620);
Else If(Global.OrbPositionType == 2);
Global.OrbPosition = Vector(-221, 0.500, -29);
Else If(Global.OrbPositionType == 3);
Global.OrbPosition = Vector(-196, 1.500, -3.920);
Else If(Global.OrbPositionType == 4);
Global.OrbPosition = Vector(-208.340, -3, -16.720);
Else If(Global.OrbPositionType == 5);
Global.OrbPosition = Vector(-165.420, -4.500, -65.250);
Else If(Global.OrbPositionType == 6);
Global.OrbPosition = Vector(-138.100, -0.910, -75.860);
Else If(Global.OrbPositionType == 7);
Global.OrbPosition = Vector(-181.770, -0.470, -91.920);
Else If(Global.OrbPositionType == 8);
Global.OrbPosition = Vector(-259.730, -4.500, 1.890);
Else If(Global.OrbPositionType == 9);
Global.OrbPosition = Vector(-237.200, 5.030, 6);
Else If(Global.OrbPositionType == 10);
Global.OrbPosition = Vector(-244, -0.500, 1);
End;
Create Effect(All Players(All Teams), Orb, Color(Yellow), Global.OrbPosition, 1.500, Visible To Position and Radius);
Global.OrbID = Last Created Entity;
Create In-World Text(All Players(All Teams), Custom String("{1} Reward Orb (Spawning: {0}s)", Global.OrbTimer, Icon String(
Exclamation Mark)), Vector(X Component Of(Global.OrbPosition), Y Component Of(Global.OrbPosition) + 1, Z Component Of(
Global.OrbPosition)), 1, Do Not Clip, Visible To Position and String, Color(Yellow), Default Visibility);
Global.OrbTextID = Last Text ID;
Global.OrbTimer = 35;
}
}
rule("Orb Timer")
{
event
{
Ongoing - Global;
}
conditions
{
Global.OrbTimer > 0;
}
actions
{
Global.OrbTimer -= 1;
Wait(1, Ignore Condition);
Loop If Condition Is True;
}
}
rule("Orb Grab")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Distance Between(Event Player, Global.OrbPosition) <= 1.500;
Global.OrbTimer < 1;
Global.EventType == 7;
Global.OrbPositionType != 0;
Is Button Held(Event Player, Button(Interact)) == True;
}
actions
{
Destroy Effect(Global.OrbID);
Destroy In-World Text(Global.OrbTextID);
Global.OrbPosition = 0;
Small Message(Event Player, Custom String("+500 xp, +2000 coins"));
Big Message(All Players(All Teams), Custom String("Orb collected by {0}", Event Player));
Event Player.XP += 500;
Event Player.Money += 2000;
Global.EventType = 0;
Global.OrbPositionType = 0;
}
}
rule("Reaching Reset Level")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Event Player.Level == Global.ResetLevel;
}
actions
{
Big Message(Event Player, Custom String("You have enough levels to reset!"));
}
}
rule("Empty Select")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Distance Between(Position Of(Event Player), Global.EmptyPos) <= 1;
Is Button Held(Event Player, Button(Interact)) == True;
Event Player.SwitchingClass != True;
Event Player.Empty != True;
}
actions
{
Call Subroutine(ClassPurge);
If(Event Player.HasClass != True);
Small Message(Event Player, Custom String("Empty class selected."));
Event Player.Empty = True;
Event Player.HasClass = True;
Else;
Small Message(Event Player, Custom String("Switching class in 15 seconds."));
Event Player.SwitchingClass = True;
Wait(5, Ignore Condition);
Small Message(Event Player, Custom String("Respawning in 10 seconds"));
Wait(10, Ignore Condition);
Kill(Event Player, Null);
Event Player.Empty = True;
Event Player.HasClass = True;
Event Player.SwitchingClass = False;
Small Message(Event Player, Custom String("Empty class selected."));
End;
disabled Start Rule(Default, Restart Rule);
Event Player.ClassName = Custom String("Empty");
}
}
rule("Helper Select")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Distance Between(Position Of(Event Player), Global.HelperPos) <= 1;
Is Button Held(Event Player, Button(Interact)) == True;
Event Player.SwitchingClass != True;
Event Player.Helper != True;
}
actions
{
If(Event Player.DarkClasses == True);
Call Subroutine(ClassPurge);
If(Event Player.HasClass != True);
Small Message(Event Player, Custom String("Helper class selected."));
Event Player.Helper = True;
Event Player.HasClass = True;
Else;
Small Message(Event Player, Custom String("Switching class in 15 seconds."));
Event Player.SwitchingClass = True;
Wait(5, Ignore Condition);
Small Message(Event Player, Custom String("Respawning in 10 seconds"));
Wait(10, Ignore Condition);
Kill(Event Player, Null);
Event Player.Helper = True;
Event Player.HasClass = True;
Event Player.SwitchingClass = False;
Small Message(Event Player, Custom String("Helper class selected."));
End;
disabled Start Rule(Default, Restart Rule);
Event Player.ClassName = Custom String("Helper");
Else;
Small Message(Event Player, Custom String("Unlock dark classes first."));
}
}
rule("Helper")
{
event
{
Player Dealt Damage;
All;
All;
}
conditions
{
Event Player.Helper == True;
Attacker != Victim;
}
actions
{
Victim.XP += Min(10, Event Damage * 2);
Victim.Money += Random Integer(12, 15);
Heal(Victim, Null, Event Damage * 10);
}
}
rule("Lifesteal Buy")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Event Player.DarkPoints >= 50;
Event Player.LevelUpPoints >= 10;
Distance Between(Position Of(Event Player), Global.LifestealPos) <= 1;
Event Player.Lifesteal < 15;
Is Button Held(Event Player, Button(Interact)) == True;
}
actions
{
Event Player.Lifesteal += 0.100;
Event Player.LevelUpPoints -= 10;
Event Player.DarkPoints -= 50;
If(Is Crouching(Event Player) == True);
Wait(0.020, Ignore Condition);
Loop If Condition Is True;
}
}
rule("Lifesteal")
{
event
{
Player Dealt Damage;
All;
All;
}
conditions
{
Event Player.Lifesteal >= 0;
Attacker != Victim;
}
actions
{
Heal(Event Player, Null, Event Damage * Event Player.Lifesteal * 0.010);
}
}
rule("Third Person")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Is Button Held(Event Player, Button(Interact)) == True;
Distance Between(Position Of(Event Player), Global.ThirdPersonPos) <= 1;
}
actions
{
If(Event Player.ThirdPerson != True);
Event Player.ThirdPerson = True;
disabled Start Camera(Event Player, Ray Cast Hit Position(Event Player, Event Player + World Vector Of(Vector(-0.300, 0, 0.300),
Event Player, Rotation) + Up * 1.500 + Facing Direction Of(Event Player) * -2.250, Null, Event Player, False),
Event Player + Facing Direction Of(Event Player) * 1000, 40);
disabled Start Camera(Event Player, Ray Cast Hit Position(Event Player, Event Player + World Vector Of(Vector(-0.300 * Event Player.Scale,
0, 0.300 * Event Player.Scale), Event Player, Rotation) + Up * Event Player.Scale * 1.500 + Facing Direction Of(Event Player)
* Event Player.Scale * -2.250, Null, Event Player, False), Event Player + Facing Direction Of(Event Player) * 1000, 40);
Start Camera(Event Player, Ray Cast Hit Position(Event Player, Event Player + World Vector Of(Vector(-0.300 * Event Player.Scale,
Event Player.Scale * 0.100, 0.300 * Event Player.Scale), Event Player, Rotation)
+ Up * Event Player.Scale * 1.500 + Facing Direction Of(Event Player) * Event Player.Scale * -2.250, Null, Event Player,
False), Event Player + Facing Direction Of(Event Player) * 1000, 40);
Else;
Event Player.ThirdPerson = False;
Stop Camera(Event Player);
}
}
rule("Spectating")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Is Button Held(Event Player, Button(Interact)) == True;
Distance Between(Position Of(Event Player), Global.SpectatePos) <= 1;
Event Player.Spectating != True;
}
actions
{
Event Player.Spectating = True;
Event Player.SpectatorPlayer = Random Value In Array(Filtered Array(All Living Players(All Teams),
Current Array Element != Event Player));
Teleport(Event Player, Vector(-277.370, -2.820, 45.420));
Start Camera(Event Player, Ray Cast Hit Position(Event Player.SpectatorPlayer, Event Player.SpectatorPlayer + World Vector Of(
Vector(-0.300 * Event Player.SpectatorPlayer.Scale, 0, 0.300 * Event Player.SpectatorPlayer.Scale),
Event Player.SpectatorPlayer, Rotation) + Up * Event Player.SpectatorPlayer.Scale * 1.500 + Facing Direction Of(
Event Player.SpectatorPlayer) * Event Player.SpectatorPlayer.Scale * -2.250, Null, Event Player.SpectatorPlayer, False),
Event Player + Facing Direction Of(Event Player) * 1000 * Event Player.SpectatorPlayer.Scale, 40);
Small Message(Event Player, Custom String("Crouch to stop spectating; reload to switch player"));
Small Message(Event Player.SpectatorPlayer, Custom String("{0} is spectating you", Event Player));
Small Message(Event Player, Custom String("Spectating {0}", Event Player.SpectatorPlayer));
Set Status(Event Player, Null, Rooted, 9999);
disabled Start Camera(Event Player, Ray Cast Hit Position(Event Player.SpectatorPlayer, Event Player.SpectatorPlayer + World Vector Of(
Vector(-0.300, 0, 0.300), Event Player.SpectatorPlayer, Rotation) + Up * 1.500 + Facing Direction Of(
Event Player.SpectatorPlayer) * -2.250, Null, Event Player.SpectatorPlayer, False),
Event Player.SpectatorPlayer + Facing Direction Of(Event Player.SpectatorPlayer) * 1000, 40);
}
}
rule("Stop Spectating")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Is Button Held(Event Player, Button(Crouch)) == True;
Event Player.Spectating == True;
}
actions
{
Stop Camera(Event Player);
Event Player.ThirdPerson = False;
Event Player.Spectating = False;
Clear Status(Event Player, Rooted);
}
}
rule("Switch player spectating")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Is Button Held(Event Player, Button(Reload)) == True;
Event Player.Spectating == True;
}
actions
{
Event Player.SpectatorPlayer = Random Value In Array(Filtered Array(All Living Players(All Teams),
Current Array Element != Event Player && Current Array Element != Event Player.SpectatorPlayer));
disabled Start Camera(Event Player, Ray Cast Hit Position(Event Player.SpectatorPlayer, Event Player.SpectatorPlayer + World Vector Of(
Vector(-0.300, 0, 0.300), Event Player.SpectatorPlayer, Rotation) + Up * 1.500 + Facing Direction Of(
Event Player.SpectatorPlayer) * -2.250, Null, Event Player.SpectatorPlayer, False),
Event Player.SpectatorPlayer + Facing Direction Of(Event Player.SpectatorPlayer) * 1000, 40);
Start Camera(Event Player, Ray Cast Hit Position(Event Player.SpectatorPlayer, Event Player.SpectatorPlayer + World Vector Of(
Vector(-0.300 * Event Player.SpectatorPlayer.Scale, 0, 0.300 * Event Player.SpectatorPlayer.Scale),
Event Player.SpectatorPlayer, Rotation) + Up * Event Player.SpectatorPlayer.Scale * 1.500 + Facing Direction Of(
Event Player.SpectatorPlayer) * Event Player.SpectatorPlayer.Scale * -2.250, Null, Event Player.SpectatorPlayer, False),
Event Player + Facing Direction Of(Event Player) * 1000 * Event Player.SpectatorPlayer.Scale, 40);
Small Message(Event Player, Custom String("Spectating {0}", Event Player.SpectatorPlayer));
Small Message(Event Player.SpectatorPlayer, Custom String("{0} is spectating you", Event Player));
}
}
rule("LevelUpPoints To Coins")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Distance Between(Event Player, Global.XPToGoldPos) <= 3;
Is Button Held(Event Player, Button(Reload)) == True;
Event Player.LevelUpPoints >= 1;
}
actions
{
Event Player.Money += 15 * Event Player.LevelUpPoints;
Event Player.LevelUpPoints -= Event Player.LevelUpPoints;
}
}
rule("Lightweight double jump")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Event Player.DoubleJump2 == True;
Event Player.Lightweight == True;
Is Button Held(Event Player, Button(Jump)) == True;
Hero Of(Event Player) != Hero(Genji);
Event Player.DoubleJump == True;
Has Status(Event Player, Knocked Down) == False;
Has Status(Event Player, Rooted) == False;
Has Status(Event Player, Frozen) == False;
Has Status(Event Player, Asleep) == False;
Has Status(Event Player, Stunned) == False;
}
actions
{
Event Player.DoubleJump2 = False;
Event Player.DoubleJump = False;
Apply Impulse(Event Player, Up, 12, To World, Cancel Contrary Motion);
Play Effect(All Players(All Teams), Ring Explosion, Color(Yellow), Position Of(Event Player), 2.500);
Play Effect(Event Player, Explosion Sound, Color(White), Event Player, 200);
}
}
rule("Double jump recharge")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Is On Ground(Event Player) == True;
}
actions
{
Event Player.DoubleJump = True;
Event Player.DoubleJump2 = False;
}
}
rule("Double jump 2")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Is Button Held(Event Player, Button(Jump)) == False;
Altitude Of(Event Player) > 0.800;
}
actions
{
Event Player.DoubleJump2 = True;
}
}
rule("Force kill")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Is Button Held(Event Player, Button(Reload)) == True;
Is Button Held(Event Player, Button(Interact)) == True;
}
actions
{
Wait(10, Abort When False);
Small Message(Event Player, Custom String("Force Kill in 5 seconds (holding interact + reload)"));
Wait(5, Abort When False);
Kill(Event Player, Null);
}
}
rule("Crash relief")
{
event
{
Ongoing - Global;
}
conditions
{
Total Time Elapsed < 45;
Is Button Held(Host Player, Button(Interact)) == True;
Is Button Held(Host Player, Button(Melee)) == True;
Global.CrashRelief != True;
}
actions
{
Wait(1, Abort When False);
Small Message(Host Player, Custom String("Hold f for 5 more seconds for crash relief (host command)"));
Wait(5, Abort When False);
All Players(All Teams).XP += 3000;
All Players(All Teams).Money += 3500;
Small Message(All Players(All Teams), Custom String("Host: Crash relief (30 levels, 3500 coins)"));
Global.CrashRelief = True;
}
}
disabled rule("Minigame Events")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Event Player == Host Player;
Distance Between(Global.TestMinigame_Host, Position Of(Event Player)) <= 1;
Is Button Held(Event Player, Button(Interact)) == True;
Global.MinigameEventOn != True;
}
actions
{
Call Subroutine(MinigameEvents);
}
}
rule("MinigameSubroutine")
{
event
{
Subroutine;
MinigameEvents;
}
actions
{
Global.EventBubbleLocation = Vector(-208, 0, -16);
Create Effect(All Players(All Teams), Sphere, Color(Green), Global.EventBubbleLocation, 24, Visible To Position and Radius);
Global.EventBubbleID = Last Created Entity;
Global.AllParticipants = Filtered Array(All Players(All Teams), Current Array Element.EventParticipation == True);
Big Message(All Players(All Teams), Custom String("Minigame event starting..."));
Wait(3, Ignore Condition);
Clear Status(All Players(All Teams), Invincible);
Global.MinigameEvent = Random Integer(1, 2);
Global.MinigameEventOn = True;
Heal(All Players(All Teams), Null, 99999);
If(Global.MinigameEvent == 1);
Create HUD Text(All Players(All Teams), Custom String(" {0} Event: High Stakes", Icon String(Flag)), Custom String(
"All kills grant all bank and held money of victim, and steals 3 levels."), Custom String(
"Only receive rewards in the green bubble in the middle."), Top, 1000, Color(Yellow), Color(Green), Color(White),
Visible To and String, Default Visibility);
Global.EventText1 = Last Text ID;
Create HUD Text(All Players(All Teams), Null, Null, Custom String("Time: {0}", Global.MinigameTime), Top, 1000, Color(White),
Color(White), Color(Orange), Visible To and String, Default Visibility);
Global.EventText2 = Last Text ID;
Global.MinigameTime = 50;
Teleport(All Players(All Teams), Global.GlobalSpawn);
Wait Until(Global.MinigameTime <= 0, 55);
Destroy HUD Text(Global.EventText1);
Destroy HUD Text(Global.EventText2);
Global.MinigameEventOn = False;
Global.MinigameEvent = 0;
Else If(Global.MinigameEvent == 2);
Disable Built-In Game Mode Respawning(All Players(All Teams));
Teleport(All Players(All Teams), Vector(-218.950, 0, -27));
Create HUD Text(All Players(All Teams), Custom String(" {0} Event: Battle Royale", Icon String(Flag)), Custom String(
"You cannot respawn. Everyone alive at the end of the event earns 10 levels."), Custom String("No advice."), Top, 1000, Color(
Yellow), Color(Green), Color(White), Visible To and String, Default Visibility);
Global.EventText1 = Last Text ID;
Create HUD Text(All Players(All Teams), Null, Null, Custom String("Time: {0}", Global.MinigameTime), Top, 1000, Color(White),
Color(White), Color(Orange), Visible To and String, Default Visibility);
Global.EventText2 = Last Text ID;
Global.MinigameTime = 50;
Wait Until(Global.MinigameTime <= 0, 55);
Destroy HUD Text(Global.EventText1);
Destroy HUD Text(Global.EventText2);
Global.MinigameEventOn = False;
Global.MinigameEvent = 0;
Enable Built-In Game Mode Respawning(All Players(All Teams));
All Living Players(All Teams).XP += 1000;
End;
Destroy Effect(Global.EventBubbleID);
}
}
rule("Minigame Ticking")
{
event
{
Ongoing - Global;
}
conditions
{
Global.MinigameTime > 0;
}
actions
{
Global.MinigameTime -= 1;
Wait(1, Abort When False);
Loop If Condition Is True;
}
}
rule("High Stakes Rewards")
{
event
{
Player Dealt Final Blow;
All;
All;
}
conditions
{
Global.MinigameEvent == 1;
Distance Between(Position Of(Event Player), Global.EventBubbleLocation) <= 24;
Distance Between(Position Of(Victim), Global.EventBubbleLocation) <= 24;
}
actions
{
Event Player.Money += Victim.Bank + Victim.Money;
Victim.Money = 0;
Victim.Bank = 0;
Event Player.XP += 300;
Victim.Level -= 3;
Small Message(Event Player, Custom String("Rewards received."));
Small Message(Victim, Custom String("you tried?"));
}
}
rule("Cannot leave bubble")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Global.MinigameEvent == 2;
Distance Between(Position Of(Event Player), Global.EventBubbleLocation) > 24;
}
actions
{
Wait(0.500, Abort When False);
Damage(Event Player, Null, Max Health(Event Player) * 0.150);
Set Status(Event Player, Null, Burning, 0.600);
Loop If Condition Is True;
}
}
rule("Rule 119")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Is Dummy Bot(Event Player) == True;
}
actions
{
Press Button(Event Player, Button(Primary Fire));
Wait(3, Ignore Condition);
Loop;
}
}
- nothing to see here