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
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
61: EmptyPos
62: HelperPos
64: LifestealPos
65: ThirdPersonPos
66: SpectatePos
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: Flight
68: Helper
69: DarkRegen
70: Empty
71: Lifesteal
72: ThirdPerson
73: Spectating
74: SpectatorPlayer
75: TrollMode
76: PoisonDamage
77: DoubleJump
78: DoubleJump2
}
subroutines
{
0: PreInitiate
1: PostInitiate
2: Default
3: ClassPurge
4: Events
5: WheelOfChance
6: Spawn
7: RewardOrb
}
disabled rule("Made by ShadowDragon#1166969")
{
event
{
Ongoing - Global;
}
}
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);
}
}
rule("Local Player Hud")
{
event
{
Ongoing - Global;
}
actions
{
disabled Create In-World Text(All Players(All Teams), Custom String("Class: {2} | Level {0}", Local Player.Level, Round To Integer(
Max Health(Local Player), To Nearest), Local Player.ClassName), Local Player, 1.200, Clip Against Surfaces,
Visible To Position and String, Color(White), Default Visibility);
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\nFlight: {1}s \r\nContract: {2}",
Local Player.Killstreak, Local Player.Flight, 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);
disabled 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. Heal 30% of damage dealt, but deal 25% less."), 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 (4 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."), 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);
}
}
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);
disabled Create HUD Text(Event Player, Null, Null, Custom String("Killstreak: {0} \r\nFlight: {1}s \r\nContract: {2}",
Event Player.Killstreak, Event Player.Flight, Event Player.ContractText), Top, 10, Color(White), Color(Green), Color(Green),
Visible To and String, 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);
disabled Create HUD Text(Event Player, Custom String(""), Custom String("", Event Player.Flight), Custom String("Flight: {0}s",
Event Player.Flight), Top, 11, Color(White), Color(White), Color(Yellow), Visible To and String, Default Visibility);
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);
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;
If(Event Player.Farmer == True);
Heal(Event Player, Null, Event Damage * 0.300);
}
}
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);
disabled If(Event Player.Killstreak >= 10);
disabled Event Player.XP += 200;
disabled Small Message(All Players(All Teams), Custom String("+200 xp for high streak"));
disabled If(Event Player.Killstreak >= 15);
disabled Small Message(All Players(All Teams), Custom String("+300 xp for high streak"));
disabled Event Player.XP += 300;
disabled If(Event Player.Killstreak >= 20);
disabled Small Message(All Players(All Teams), Custom String("+500 xp for high streak"));
disabled Event Player.XP += 500;
disabled End;
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
{
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;
Small Message(Event Player, Custom String("+{0} xp", Event Player.XPKillReward));
Event Player.XP += Event Player.XPKillReward;
Event Player.Killstreak += 1;
Small Message(Victim, Custom String("-{0} coins (-20%)", Round To Integer(Victim.Money * 0.200, To Nearest) * 1));
Small Message(Event Player, Custom String("+{0} coins", Round To Integer(Victim.Money * 0.200, To Nearest) + 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);
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, 4 * 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("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, 20));
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(1000 / Number Of Players(All Teams), Up);
Small Message(Event Player, Custom String("Gave everyone {0} coins (including you)", Round To Integer(1000 / 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}",
Event Player, Round To Integer(1000 / 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.Bounty += 2000;
Big Message(Filtered Array(All Players(All Teams), Current Array Element != Event Player), Custom String(
"{0} has a bounty of {1} coins! Kill them to receive it", Event Player, Event Player.Bounty));
Small Message(Event Player, Custom String("+2000 bounty! (others might target you)"));
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 half of your banked coins!"));
Event Player.Bank /= 2;
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;
Small Message(Event Player, Custom String("Training ended. {2} presses, +{0} xp, +{1} coins",
Event Player.StrengthTrainingScore * 3, 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;
}
actions
{
Kill(Victim, Event Player);
}
}
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, Null, Frozen, 2);
Set Status(Victim, Null, 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;
Event Player.Flight >= 0.020;
}
actions
{
Apply Impulse(Event Player, Vector(0, 10000, 0), 5, To World, Cancel Contrary Motion);
Event Player.Flight -= 0.020;
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), 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("Flight Tick Up")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Event Player.Flight <= 9.980;
Altitude Of(Event Player) < 1;
}
actions
{
Wait(1, Abort When False);
Event Player.Flight += 0.100;
Loop If Condition Is True;
}
}
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(5, Event Damage * 10);
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.SpectatorPlayer + Facing Direction Of(Event Player.SpectatorPlayer) * 1000 * Event Player.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));
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);
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);
}
}
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("The final anti crash")
{
event
{
Ongoing - Global;
}
actions
{
Wait(9600, Ignore Condition);
Small Message(All Players(All Teams), Custom String("Game is at a high risk of crashing. Slow motion activated."));
Set Slow Motion(80);
}
}
- nothing to see here