Return to post
settings
{
main
{
Description: "Instagib | Created by scort#11221"
Description: "Instagib v1.7.1 | Created by scort#11221 | 10/01/20\r\n- Hold down Jump to gain speed by bunny hopping\r\n- Press Secondary Fire (Right Click) to fire a knockback orb to displace enemies or to give yourself more mobility\r\n-Press Ability 1 (Shift) to dodge in any direction\r\n- Press Ability 2 (E) to throw out a grappling hook to attach to walls or pull players\r\n- Buffs are littered throughout the map that change your weapon drastically"
}
lobby
{
Allow Players Who Are In Queue: Yes
Map Rotation: After A Game
Max Spectators: 12
Return To Lobby: Never
}
modes
{
Deathmatch
{
enabled maps
{
Black Forest
Black Forest Winter
Blizzard World
Blizzard World Winter
Castillo
Château Guillard
Dorado
Ecopoint: Antarctica
Ecopoint: Antarctica Winter
Eichenwalde
Havana
Hollywood
King's Row
King's Row Winter
Lijiang Control Center
Lijiang Control Center Lunar New Year
Necropolis
Paris
}
}
General
{
Game Mode Start: Immediately
Hero Limit: Off
Respawn Time Scalar: 10%
Spawn Health Packs: Disabled
}
}
heroes
{
General
{
McCree
{
Combat Roll: Off
Damage Dealt: 500%
Damage Received: 500%
Flashbang: Off
No Ammunition Requirement: On
Quick Melee: Off
Secondary Fire: Off
Ultimate Ability Deadeye: Off
}
enabled heroes
{
McCree
}
}
}
}
variables
{
global:
2: DEFAULT_START_SPEED
3: BHOP_MAX_SPEED
4: BHOP_SPEED_RATE
5: GRAPPLE_PULL_SPEED
6: SECONDARY_PROJECTILE_SPEED
7: MATCH_TIME_LIMIT
8: matchStarted
9: buffsEnabled
10: buffsSpawnImmediately
11: validBuffMap
12: buffEffect
13: buffPos
14: buffIcon
15: cdText
16: spawnWallbang
17: spawnWithWallbang
18: NUM_WALLBANGS
19: wallbangCD
20: WALLBANG_CD
21: WALLBANG_DUR
22: spawnLife
23: spawnWithLife
24: lifeCD
25: LIFE_CD
26: spawnRicochet
27: spawnWithRicochet
28: NUM_RICOCHETS
29: ricochetCD
30: RICOCHET_CD
31: RICOCHET_DUR
32: spawnBuckshot
33: spawnWithBuckshot
34: BUCKSHOT_SPREAD
35: buckshotCD
36: BUCKSHOT_CD
37: BUCKSHOT_DUR
38: spreadDiag
39: spreadHori
40: randomSpread
9: DODGE_FORCE
10: buffsEnabled
11: buffsSpawnImmediately
12: validBuffMap
13: buffEffect
14: buffPos
15: buffIcon
16: cdText
17: spawnWallbang
18: spawnWithWallbang
19: NUM_WALLBANGS
20: WALLBANG_DUR
21: WALLBANG_CD
22: canPickupWallbang
23: wallbangCD
24: wallbangUser
25: spawnRicochet
26: spawnWithRicochet
27: NUM_RICOCHETS
28: RICOCHET_CD
29: RICOCHET_DUR
30: canPickupRicochet
31: ricochetCD
32: ricochetUser
33: spawnBuckshot
34: spawnWithBuckshot
35: randomSpread
36: BUCKSHOT_SPREAD
37: BUCKSHOT_CD
38: BUCKSHOT_DUR
39: canPickupBuckshot
40: buckshotCD
41: buckshotUser
42: spreadDiag
43: spreadHori
44: spawnLife
45: spawnWithLife
46: LIFE_CD
47: lifeCD
player:
1: bhopSpeed
2: speedAccumInAir
3: isChasing
4: primaryHit
5: primaryStartPos
6: primaryBeam
7: secondaryHit
8: secondaryEyePos
9: secondaryOrb
11: grappleEyePos
12: grappleBeamEffect
13: usingGrapple
14: grappleHit
15: grappleHitSphere
16: grapplePlayerBeamEffect
17: grappleHitPlayer
18: grappleHitPlayerSphere
19: livingEnemies
20: hudText
21: wallbangEffect
22: wallbangEnabled
23: wallbangDur
24: extraLife
25: extraLifeIcon
26: ricochetEnabled
27: ricochetDur
28: ricochetBuffEffect
29: normals
30: hitPos
31: hitPosPlayer
32: ricochets
33: hitPosRicochets
34: hitPosPlayerRicochets
35: eyePos
36: facing
37: buckshotHitPos
38: buckshotHitPlayer
39: buckshotCenter
40: buckshotEnabled
41: buckshotDur
42: buckshotBuffEffect
43: randomizedSpreadHori
44: randomizedSpreadDiag
45: lifeKills
46: spreeInWorld
47: spreeEffects
48: wallbangBuffEffect
49: i
50: players
51: loop
52: sound
53: gunPos
54: wallbangHitPos
55: wallbangLivingEnemies
56: wallbangHitPlayer
57: wallbangCount
58: sound_0
59: ricochetEffects
60: ricochetEffect
61: loop_0
62: i_0
63: sound_1
64: gunPos_0
65: buckshotBeam
66: centerBeam
67: hori
68: diag
69: pellets
70: beams
20: throttleOf
21: canDodge
22: hudText
23: wallbangEffect
24: wallbangEnabled
25: wallbangDur
26: wallbangBuffEffect
27: ricochetEnabled
28: ricochetDur
29: ricochetBuffEffect
30: normals
31: hitPos
32: hitPosPlayer
33: ricochets
34: hitPosRicochets
35: hitPosPlayerRicochets
36: eyePos
37: facing
38: buckshotHitPos
39: buckshotHitPlayer
40: buckshotCenter
41: buckshotEnabled
42: buckshotDur
43: buckshotBuffEffect
44: randomizedSpreadHori
45: randomizedSpreadDiag
46: extraLife
47: extraLifeIcon
48: lifeKills
49: spreeInWorld
50: spreeEffects
51: spreeHud
52: killsHud
53: i
54: players
55: loop
56: sound
57: gunPos
58: wallbangHitPos
59: wallbangLivingEnemies
60: wallbangHitPlayer
61: wallbangCount
62: sound_0
63: ricochetEffects
64: ricochetEffect
65: loop_0
66: i_0
67: sound_1
68: gunPos_0
69: buckshotBeam
70: centerBeam
71: hori
72: diag
73: pellets
74: beams
}
subroutines
{
0: WallbangCooldown
1: RicochetCooldown
2: BuckshotCooldown
3: LifeCooldown
}
rule("[Sub] :: Wallbang Cooldown")
{
event
{
Subroutine;
WallbangCooldown;
}
actions
{
If(!Global.spawnWithWallbang && Global.spawnWallbang && !Entity Exists(Global.buffEffect[0]));
If(!Global.spawnWithWallbang && Global.spawnWallbang);
Global.wallbangCD = Global.WALLBANG_CD;
Chase Global Variable At Rate(wallbangCD, 0, 1, None);
Create In-World Text(All Players(All Teams), Custom String("{0}", Round To Integer(Global.wallbangCD, Up)), Global.buffPos[0], 2,
Clip Against Surfaces, Visible To Position and String, White, Default Visibility);
Global.cdText[0] = Last Text ID;
Chase Global Variable At Rate(wallbangCD, 0, 1, None);
End;
}
}
rule("[Sub] :: Ricochet Cooldown")
{
event
{
Subroutine;
RicochetCooldown;
}
actions
{
If(!Global.spawnWithRicochet && Global.spawnRicochet && !Entity Exists(Global.buffEffect[1]));
If(!Global.spawnWithRicochet && Global.spawnRicochet);
Global.ricochetCD = Global.RICOCHET_CD;
Chase Global Variable At Rate(ricochetCD, 0, 1, None);
Create In-World Text(All Players(All Teams), Custom String("{0}", Round To Integer(Global.ricochetCD, Up)), Global.buffPos[1], 2,
Clip Against Surfaces, Visible To Position and String, White, Default Visibility);
Global.cdText[1] = Last Text ID;
Chase Global Variable At Rate(ricochetCD, 0, 1, None);
End;
}
}
rule("[Sub] :: Buckshot Cooldown")
{
event
{
Subroutine;
BuckshotCooldown;
}
actions
{
If(!Global.spawnWithBuckshot && Global.spawnBuckshot && !Entity Exists(Global.buffEffect[2]));
If(!Global.spawnWithBuckshot && Global.spawnBuckshot);
Global.buckshotCD = Global.BUCKSHOT_CD;
Chase Global Variable At Rate(buckshotCD, 0, 1, None);
Create In-World Text(All Players(All Teams), Custom String("{0}", Round To Integer(Global.buckshotCD, Up)), Global.buffPos[2], 2,
Clip Against Surfaces, Visible To Position and String, White, Default Visibility);
Global.cdText[2] = Last Text ID;
Chase Global Variable At Rate(buckshotCD, 0, 1, None);
End;
}
}
rule("[Sub] :: Life Cooldown")
{
event
{
Subroutine;
LifeCooldown;
}
actions
{
If(!Global.spawnWithLife && Global.spawnLife);
Global.lifeCD = Global.LIFE_CD;
Chase Global Variable At Rate(lifeCD, 0, 1, None);
Create In-World Text(All Players(All Teams), Custom String("{0}", Round To Integer(Global.lifeCD, Up)), Global.buffPos[3], 2,
Clip Against Surfaces, Visible To Position and String, White, Default Visibility);
Global.cdText[3] = Last Text ID;
Chase Global Variable At Rate(lifeCD, 0, 1, None);
End;
}
}
rule("[Main] :: Initial Global")
{
event
{
Ongoing - Global;
}
actions
{
Disable Built-In Game Mode Completion;
Disable Built-In Game Mode Announcer;
Create HUD Text(All Players(All Teams), Null, Custom String("ㅤInstagib: v1.6.2 | Created by scort#11221"), Custom String(
Create HUD Text(All Players(All Teams), Null, Custom String("ㅤInstagib: v1.7.1 | Created by scort#11221"), Custom String(
"ㅤ Share Code: APPPX"), Right, 0, White, White, White, Visible To and String, Default Visibility);
Global.cdText = Empty Array;
Global.buffEffect = Empty Array;
Global.buffPos = Empty Array;
Global.buffIcon = Empty Array;
Global.matchStarted = False;
Global.DEFAULT_START_SPEED = Workshop Setting Integer(Custom String("BHop"), Custom String("Starting Speed (100)"), 100, 25, 300);
Global.BHOP_MAX_SPEED = Workshop Setting Integer(Custom String("BHop"), Custom String("Maximum Speed Possible From Hops (320)"),
320, 25, 10000);
Global.BHOP_SPEED_RATE = Workshop Setting Real(Custom String("BHop"), Custom String("Speed gain rate (12.5)"), 12.500, 1, 100);
Global.buffsSpawnImmediately = Workshop Setting Toggle(Custom String("Buff Spawns"), Custom String(
Global.buffsSpawnImmediately = Workshop Setting Toggle(Custom String("Buff General"), Custom String(
"Buffs Spawn Immediately When Match Starts (Off)"), False);
Global.buffsEnabled = Workshop Setting Toggle(Custom String("Buff Spawns"), Custom String("Spawn Buffs (On)"), True);
Global.buffsEnabled = Workshop Setting Toggle(Custom String("Buff General"), Custom String("Spawn Buffs (On)"), True);
Global.NUM_WALLBANGS = Workshop Setting Integer(Custom String("Wallbang Buff Settings"), Custom String("Wallbang Amount (5)"), 5,
2, 100);
Global.WALLBANG_CD = Workshop Setting Integer(Custom String("Wallbang Buff Settings"), Custom String(
"Wallbang Orb Spawn Time (75)"), 75, 1, 300);
"Wallbang Orb Spawn Time (65)"), 65, 1, 300);
Global.WALLBANG_DUR = Workshop Setting Integer(Custom String("Wallbang Buff Settings"), Custom String(
"Wallbang Buff Duration (25)"), 25, 1, 300);
Global.spawnWallbang = Workshop Setting Toggle(Custom String("Wallbang Buff Settings"), Custom String("Spawn Wallbang Orb (On)"),
True);
Global.spawnWithWallbang = Workshop Setting Toggle(Custom String("Wallbang Buff Settings"), Custom String(
"Spawn With Wallbang (Lasts Forever) (Off)"), False);
Global.RICOCHET_CD = Workshop Setting Integer(Custom String("Ricochet Buff Settings"), Custom String(
"Ricochet Orb Spawn Time (65)"), 65, 1, 300);
"Ricochet Orb Spawn Time (55)"), 55, 1, 300);
Global.RICOCHET_DUR = Workshop Setting Integer(Custom String("Ricochet Buff Settings"), Custom String(
"Ricochet Buff Duration (25)"), 25, 1, 300);
Global.NUM_RICOCHETS = Workshop Setting Integer(Custom String("Ricochet Buff Settings"), Custom String("Ricochet Amount (4)"), 4,
1, 64);
Global.spawnRicochet = Workshop Setting Toggle(Custom String("Ricochet Buff Settings"), Custom String("Spawn Ricochet Orb (On)"),
True);
Global.spawnWithRicochet = Workshop Setting Toggle(Custom String("Ricochet Buff Settings"), Custom String(
"Spawn With Ricochet (Lasts Forever) (Off)"), False);
Global.BUCKSHOT_CD = Workshop Setting Integer(Custom String("Buckshot Buff Settings"), Custom String(
"Buckshot Orb Spawn Time (95)"), 95, 1, 300);
"Buckshot Orb Spawn Time (85)"), 85, 1, 300);
Global.BUCKSHOT_DUR = Workshop Setting Integer(Custom String("Buckshot Buff Settings"), Custom String(
"Buckshot Buff Duration (20)"), 20, 1, 300);
Global.BUCKSHOT_SPREAD = Workshop Setting Real(Custom String("Buckshot Buff Settings"), Custom String(
"Buckshot Spread (Lower is Tighter) (3.5)"), 3.500, 0.100, 20);
Global.randomSpread = Workshop Setting Toggle(Custom String("Buckshot Buff Settings"), Custom String(
"Randomized Buckshot Spread (Off)"), False);
Global.spawnBuckshot = Workshop Setting Toggle(Custom String("Buckshot Buff Settings"), Custom String("Spawn Buckshot Orb (On)"),
True);
Global.spawnWithBuckshot = Workshop Setting Toggle(Custom String("Buckshot Buff Settings"), Custom String(
"Spawn With Buckshot (Lasts Forever) (Off)"), False);
Global.LIFE_CD = Workshop Setting Integer(Custom String("Extra Life Buff Settings"), Custom String(
"Extra Life Orb Spawn Time (120)"), 120, 1, 400);
"Extra Life Orb Spawn Time (140)"), 140, 1, 400);
Global.spawnLife = Workshop Setting Toggle(Custom String("Extra Life Buff Settings"), Custom String("Spawn Extra Life Orb (On)"),
True);
Global.spawnWithLife = Workshop Setting Toggle(Custom String("Extra Life Buff Settings"), Custom String(
"Spawn With Extra Life (Off)"), False);
Global.SECONDARY_PROJECTILE_SPEED = Workshop Setting Integer(Custom String("Secondary Fire"), Custom String(
"Secondary Projectile Speed (110)"), 110, 10, 500);
Global.MATCH_TIME_LIMIT = Workshop Setting Integer(Custom String("Misc"), Custom String("Match Time (Minutes) (20)"), 20, 1, 60)
* 60;
Global.GRAPPLE_PULL_SPEED = Workshop Setting Real(Custom String("Misc"), Custom String("Grapple Pull Speed (3.5)"), 3.500, 1, 10);
Global.GRAPPLE_PULL_SPEED = Workshop Setting Real(Custom String("Misc"), Custom String("Grapple Pull Speed (3.5)"), 3.500, 0.500,
10);
Global.DODGE_FORCE = Workshop Setting Real(Custom String("Misc"), Custom String("Dodge Force (14)"), 14, 1, 100);
}
}
rule("[Main] :: Initial Player Join")
rule("[Main] :: Player Join")
{
event
{
Player Joined Match;
All;
All;
}
actions
{
Event Player.wallbangDur = Global.WALLBANG_DUR;
Event Player.ricochetDur = Global.RICOCHET_DUR;
Event Player.buckshotDur = Global.BUCKSHOT_DUR;
Event Player.hudText = Empty Array;
Event Player.spreeInWorld = Empty Array;
Event Player.spreeEffects = Empty Array;
}
}
rule("[Main] :: Start Match")
{
event
{
Ongoing - Global;
}
conditions
{
(!Global.matchStarted && Count Of(All Living Players(All Teams)) > 0 && !Is Waiting For Players) == True;
}
actions
{
Set Match Time(10);
Wait(10.500, Ignore Condition);
Set Match Time(Global.MATCH_TIME_LIMIT);
Global.matchStarted = True;
If(Global.validBuffMap && !Global.buffsSpawnImmediately && !Is Waiting For Players);
Call Subroutine(LifeCooldown);
Call Subroutine(WallbangCooldown);
Call Subroutine(RicochetCooldown);
Call Subroutine(BuckshotCooldown);
Call Subroutine(LifeCooldown);
End;
If(Global.buffsEnabled);
If(!Global.spawnWithWallbang && Global.spawnWallbang);
Create HUD Text(All Players(All Teams), Custom String("{0}", Ability Icon String(Hero(Baptiste), Button(Ultimate))), Null,
Global.wallbangCD != 0 ? Custom String("{0}", Round To Integer(Global.wallbangCD, Up)) : (Entity Exists(Global.buffEffect[0])
? Custom String("{0}", Icon String(Checkmark)) : Custom String("In-Use")), Left, 1, Yellow, White, White,
Visible To and String, Default Visibility);
? Custom String("{0}", Icon String(Checkmark)) : Custom String("In-Use by {0}", Global.wallbangUser)), Left, 1, Yellow, White,
White, Visible To and String, Default Visibility);
End;
If(!Global.spawnWithRicochet && Global.spawnRicochet);
Create HUD Text(All Players(All Teams), Custom String("{0}", Ability Icon String(Hero(Winston), Button(Ability 1))), Null,
Global.ricochetCD != 0 ? Custom String("{0}", Round To Integer(Global.ricochetCD, Up)) : (Entity Exists(Global.buffEffect[1])
? Custom String("{0}", Icon String(Checkmark)) : Custom String("In-Use")), Left, 2, Purple, White, White,
Visible To and String, Default Visibility);
? Custom String("{0}", Icon String(Checkmark)) : Custom String("In-Use by {0}", Global.ricochetUser)), Left, 2, Purple, White,
White, Visible To and String, Default Visibility);
End;
If(!Global.spawnWithBuckshot && Global.spawnBuckshot);
Create HUD Text(All Players(All Teams), Custom String("{0}", Ability Icon String(Hero(Ashe), Button(Ability 1))), Null,
Global.buckshotCD != 0 ? Custom String("{0}", Round To Integer(Global.buckshotCD, Up)) : (Entity Exists(Global.buffEffect[2])
? Custom String("{0}", Icon String(Checkmark)) : Custom String("In-Use")), Left, 3, Green, White, White, Visible To and String,
Default Visibility);
? Custom String("{0}", Icon String(Checkmark)) : Custom String("In-Use by {0}", Global.buckshotUser)), Left, 3, Green, White,
White, Visible To and String, Default Visibility);
End;
If(!Global.spawnWithLife && Global.spawnLife);
Create HUD Text(All Players(All Teams), Custom String("{0}", Ability Icon String(Hero(Mercy), Button(Ability 2))), Null,
Global.lifeCD != 0 ? Custom String("{0}", Round To Integer(Global.lifeCD, Up)) : (Entity Exists(Global.buffEffect[3])
? Custom String("{0}", Icon String(Checkmark)) : Custom String("{0}", Icon String(Checkmark))), Left, 4, Sky Blue, White,
White, Visible To and String, Default Visibility);
End;
End;
}
}
rule("[Main] :: Player Spawned")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
(Has Spawned(Event Player) && Global.matchStarted) == True;
}
actions
{
Small Message(Event Player, Custom String("Welcome!"));
Wait(3, Ignore Condition);
Small Message(Event Player, Custom String("Holding down {0} will let you gain speed by bunny hopping", Input Binding String(Button(
Jump))));
Wait(3, Ignore Condition);
Small Message(Event Player, Custom String(
"Press {0} to throw out a grappling hook to pull you towards a surface or to pull players towards you", Input Binding String(
Button(Ability 2))));
Wait(3, Ignore Condition);
Small Message(Event Player, Custom String(
"Press {0} to fire an orb that knocks players back, including yourself allowing for extra mobility", Input Binding String(
Button(Secondary Fire))));
Wait(3, Ignore Condition);
Small Message(Event Player, Custom String("Press {0} to dodge in any direction", Input Binding String(Button(Ability 1))));
Wait(3, Ignore Condition);
Small Message(Event Player, Custom String("Buffs are littered thorughout the map that give you special changes to your weapon"));
Wait(3, Ignore Condition);
Small Message(Event Player, Custom String("Happy Fragging!"));
}
}
rule("[Main] :: Speedometer")
{
event
{
Ongoing - Each Player;
All;
All;
}
actions
{
Create HUD Text(Event Player, Null, Null, Custom String(" \n{0} M/S\n{1}% Modifier", Horizontal Speed Of(Event Player),
Round To Integer(Event Player.bhopSpeed - Global.DEFAULT_START_SPEED, Up)), Left, 6, White, White, White,
Visible To and String, Default Visibility);
}
}
rule("[Main] :: End Game")
{
event
{
Ongoing - Global;
}
conditions
{
Global.matchStarted == True;
}
actions
{
Wait(Global.MATCH_TIME_LIMIT, Ignore Condition);
Enable Built-In Game Mode Completion;
}
}
rule("[Main] :: Primary Effect")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
(!Event Player.wallbangEnabled && !Event Player.ricochetEnabled && !Event Player.buckshotEnabled && Is Firing Primary(
Event Player)) == True;
}
actions
{
Event Player.primaryBeam = Empty Array;
Event Player.livingEnemies = Filtered Array(All Players(Opposite Team Of(Team Of(Event Player))), Is Alive(Current Array Element));
Event Player.primaryStartPos = World Vector Of(Right - Vector(0, 0.300, 0), Event Player, Rotation) * 0.180;
Event Player.primaryHit = Ray Cast Hit Position(Eye Position(Event Player), Eye Position(Event Player) + Facing Direction Of(
Event Player) * 100, Event Player.livingEnemies, Event Player, True);
Play Effect(Event Player, Good Explosion, Aqua, Event Player.primaryHit, 0.200);
Play Effect(Remove From Array(All Players(Opposite Team Of(Team Of(Event Player))), Event Player), Good Explosion, Red,
Event Player.primaryHit, 0.200);
Create Beam Effect(Event Player, Bad Beam, Eye Position(Event Player) + Facing Direction Of(Event Player)
+ Event Player.primaryStartPos, Event Player.primaryHit, Aqua, None);
Event Player.primaryBeam[0] = Last Created Entity;
Create Beam Effect(Remove From Array(All Players(Opposite Team Of(Team Of(Event Player))), Event Player), Bad Beam, Eye Position(
Event Player) + Facing Direction Of(Event Player) + Event Player.primaryStartPos, Event Player.primaryHit, Red, None);
Event Player.primaryBeam[1] = Last Created Entity;
Wait(0.150, Ignore Condition);
Destroy Effect(Event Player.primaryBeam[0]);
Destroy Effect(Event Player.primaryBeam[1]);
}
}
disabled rule("---------------- Killing Spree Notifs ----------------")
{
event
{
Ongoing - Global;
}
}
rule("[Killspree] :: Record Kills While Alive")
{
event
{
Player Dealt Final Blow;
All;
All;
}
actions
{
Event Player.lifeKills += 1;
}
}
rule("[Killspree] :: Reset Kills on death")
{
event
{
Player Died;
All;
All;
}
actions
{
Small Message(Event Player, Custom String("{0} player kill spree!", Event Player.lifeKills));
If(Event Player.lifeKills > 5);
Big Message(All Players(All Teams), !Event Was Environment ? Custom String("{0}'s {1} player spree was put to an end by {2}!",
Victim, Event Player.lifeKills, Attacker) : Custom String("{0}'s {1} player spree was put to an end by the world!", Victim,
Big Message(All Players(All Teams), !Event Was Environment ? Custom String("{0}'s {1} player spree was ended by {2}!", Victim,
Event Player.lifeKills, Attacker) : Custom String("{0}'s {1} player spree was ended by the world!", Victim,
Event Player.lifeKills));
End;
Event Player.i = 0;
While(Event Player.i < 7);
Destroy Effect(Event Player.spreeEffects[Event Player.i]);
Destroy In-World Text(Event Player.spreeInWorld[Event Player.i]);
Destroy HUD Text(Event Player.spreeHud[Event Player.i]);
Event Player.i += 1;
End;
Wait(0.032, Ignore Condition);
Event Player.lifeKills = 0;
Event Player.spreeInWorld = Empty Array;
Event Player.spreeEffects = Empty Array;
Event Player.spreeHud = Empty Array;
}
}
rule("[Killspree] :: 5 Kills")
{
event
{
Player Dealt Final Blow;
All;
All;
}
conditions
{
Event Player.lifeKills == 5;
}
actions
{
Big Message(All Players(All Teams), Custom String("{0} is on a Killing Spree!", Event Player));
Create In-World Text(Event Player, Custom String("Killing Spree!"), Position Of(Victim) + Up, 3, Do Not Clip, None, White,
Default Visibility);
Event Player.spreeInWorld[0] = Last Text ID;
Create Effect(All Players(All Teams), Sparkles, White, Event Player, 1, Visible To Position and Radius);
Event Player.spreeEffects[0] = Last Created Entity;
Create HUD Text(Event Player, Null, Null, Custom String(" \n{0} Kill Spree", Event Player.lifeKills), Left, 9, White, White, White,
Visible To and String, Default Visibility);
Event Player.killsHud = Last Text ID;
Create HUD Text(Event Player, Null, Null, Custom String("Killing Spree"), Left, 10, White, White, White, Visible To and String,
Default Visibility);
Event Player.spreeHud[0] = Last Text ID;
Wait(2, Ignore Condition);
Destroy In-World Text(Event Player.spreeInWorld[0]);
}
}
rule("[Killspree] :: 8 Kills")
{
event
{
Player Dealt Final Blow;
All;
All;
}
conditions
{
Event Player.lifeKills == 8;
}
actions
{
Destroy Effect(Event Player.spreeEffects[0]);
Destroy HUD Text(Event Player.spreeHud[0]);
Big Message(All Players(All Teams), Custom String("{0} is on a Rampage!", Event Player));
Create In-World Text(Event Player, Custom String("Rampage!"), Position Of(Victim) + Up, 3, Do Not Clip, None, Lime Green,
Default Visibility);
Event Player.spreeInWorld[1] = Last Text ID;
Create Effect(All Players(All Teams), Sparkles, Lime Green, Event Player, 1, Visible To Position and Radius);
Event Player.spreeEffects[1] = Last Created Entity;
Create HUD Text(Event Player, Null, Null, Custom String("Rampage"), Left, 10, White, White, Lime Green, Visible To and String,
Default Visibility);
Event Player.spreeHud[1] = Last Text ID;
Wait(2, Ignore Condition);
Destroy In-World Text(Event Player.spreeInWorld[1]);
}
}
rule("[Killspree] :: 11 Kills")
{
event
{
Player Dealt Final Blow;
All;
All;
}
conditions
{
Event Player.lifeKills == 11;
}
actions
{
Destroy Effect(Event Player.spreeEffects[1]);
Destroy HUD Text(Event Player.spreeHud[1]);
Big Message(All Players(All Teams), Custom String("{0} is Dominating!", Event Player));
Create In-World Text(Event Player, Custom String("Dominating!"), Position Of(Victim) + Up, 3, Do Not Clip, None, Blue,
Default Visibility);
Event Player.spreeInWorld[2] = Last Text ID;
Create Effect(All Players(All Teams), Sparkles, Blue, Event Player, 1, Visible To Position and Radius);
Event Player.spreeEffects[2] = Last Created Entity;
Create HUD Text(Event Player, Null, Null, Custom String("Dominating"), Left, 10, White, White, Blue, Visible To and String,
Default Visibility);
Event Player.spreeHud[2] = Last Text ID;
Wait(2, Ignore Condition);
Destroy In-World Text(Event Player.spreeInWorld[2]);
}
}
rule("[Killspree] :: 14 Kills")
{
event
{
Player Dealt Final Blow;
All;
All;
}
conditions
{
Event Player.lifeKills == 14;
}
actions
{
Destroy Effect(Event Player.spreeEffects[2]);
Destroy HUD Text(Event Player.spreeHud[2]);
Big Message(All Players(All Teams), Custom String("{0} is Unstoppable!", Event Player));
Create In-World Text(Event Player, Custom String("Unstoppable!"), Position Of(Victim) + Up, 3, Do Not Clip, None, Purple,
Default Visibility);
Event Player.spreeInWorld[3] = Last Text ID;
Create Effect(All Players(All Teams), Sparkles, Purple, Event Player, 1, Visible To Position and Radius);
Event Player.spreeEffects[3] = Last Created Entity;
Create HUD Text(Event Player, Null, Null, Custom String("Unstoppable"), Left, 10, White, White, Purple, Visible To and String,
Default Visibility);
Event Player.spreeHud[3] = Last Text ID;
Wait(2, Ignore Condition);
Destroy In-World Text(Event Player.spreeInWorld[3]);
}
}
rule("[Killspree] :: 17 Kills")
{
event
{
Player Dealt Final Blow;
All;
All;
}
conditions
{
Event Player.lifeKills == 17;
}
actions
{
Destroy Effect(Event Player.spreeEffects[3]);
Destroy HUD Text(Event Player.spreeHud[3]);
Big Message(All Players(All Teams), Custom String("{0} is Godlike!", Event Player));
Create In-World Text(Event Player, Custom String("Godlike!"), Position Of(Victim) + Up, 3, Do Not Clip, None, Yellow,
Default Visibility);
Event Player.spreeInWorld[4] = Last Text ID;
Create Effect(All Players(All Teams), Sparkles, Yellow, Event Player, 1, Visible To Position and Radius);
Event Player.spreeEffects[4] = Last Created Entity;
Create HUD Text(Event Player, Null, Null, Custom String("Godlike"), Left, 10, White, White, Yellow, Visible To and String,
Default Visibility);
Event Player.spreeHud[4] = Last Text ID;
Wait(2, Ignore Condition);
Destroy In-World Text(Event Player.spreeInWorld[4]);
}
}
rule("[Killspree] :: 21 Kills")
{
event
{
Player Dealt Final Blow;
All;
All;
}
conditions
{
Event Player.lifeKills == 21;
}
actions
{
Destroy Effect(Event Player.spreeEffects[4]);
Destroy HUD Text(Event Player.spreeHud[4]);
Big Message(All Players(All Teams), Custom String("{0} is Divine!", Event Player));
Create In-World Text(Event Player, Custom String("Divine!"), Position Of(Victim) + Up, 3, Do Not Clip, None, Orange,
Default Visibility);
Event Player.spreeInWorld[5] = Last Text ID;
Create Effect(All Players(All Teams), Sparkles, Orange, Event Player, 1, Visible To Position and Radius);
Event Player.spreeEffects[5] = Last Created Entity;
Create HUD Text(Event Player, Null, Null, Custom String("Divine"), Left, 10, White, White, Orange, Visible To and String,
Default Visibility);
Event Player.spreeHud[5] = Last Text ID;
Wait(2, Ignore Condition);
Destroy In-World Text(Event Player.spreeInWorld[5]);
}
}
rule("[Killspree] :: 24 Kills")
{
event
{
Player Dealt Final Blow;
All;
All;
}
conditions
{
Event Player.lifeKills == 24;
}
actions
{
Destroy Effect(Event Player.spreeEffects[5]);
Destroy HUD Text(Event Player.spreeHud[5]);
Big Message(All Players(All Teams), Custom String("{0} is Empyreal!", Event Player));
Create In-World Text(Event Player, Custom String("Empyreal!"), Position Of(Victim) + Up, 3, Do Not Clip, None, Red,
Default Visibility);
Event Player.spreeInWorld[6] = Last Text ID;
Create Effect(All Players(All Teams), Sparkles, Red, Event Player, 1, Visible To Position and Radius);
Event Player.spreeEffects[6] = Last Created Entity;
Create HUD Text(Event Player, Null, Null, Custom String("Empyreal"), Left, 10, White, White, Red, Visible To and String,
Default Visibility);
Event Player.spreeHud[6] = Last Text ID;
Wait(2, Ignore Condition);
Destroy In-World Text(Event Player.spreeInWorld[6]);
}
}
disabled rule("---------------- Bhop ----------------")
{
event
{
Ongoing - Global;
}
}
rule("[Bhop] :: Auto Hop")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
(Is On Ground(Event Player) && Is Button Held(Event Player, Jump)) == True;
}
actions
{
Disallow Button(Event Player, Jump);
Wait(0.016, Ignore Condition);
Allow Button(Event Player, Jump);
}
}
rule("[Bhop] :: Starting Speed")
{
event
{
Ongoing - Each Player;
All;
All;
}
actions
{
Event Player.bhopSpeed = Global.DEFAULT_START_SPEED;
}
}
rule("[Bhop] :: If Airborne")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
((!Event Player.usingGrapple && Is Jumping(Event Player) && Horizontal Speed Of(Event Player)
> Global.DEFAULT_START_SPEED / 33.330) || (Event Player.usingGrapple && Is In Air(Event Player) && Distance Between(
Event Player.grappleEyePos, Event Player.grappleHit) < 40)) == True;
}
actions
{
Event Player.speedAccumInAir = Horizontal Speed Of(Event Player);
Wait(0.050, Ignore Condition);
Chase Player Variable At Rate(Event Player, bhopSpeed, Global.BHOP_MAX_SPEED, Global.BHOP_SPEED_RATE, Destination and Rate);
Event Player.isChasing = True;
}
}
rule("[Bhop] :: Update Speed")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Event Player.isChasing == True;
}
actions
{
Event Player.speedAccumInAir = Horizontal Speed Of(Event Player);
Set Move Speed(Event Player, Event Player.bhopSpeed);
Wait(0.032, Ignore Condition);
Loop If Condition Is True;
}
}
rule("[Bhop] :: Update isChasing")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
((Event Player.isChasing && Event Player.bhopSpeed == Global.BHOP_MAX_SPEED) || (
Event Player.bhopSpeed == Global.DEFAULT_START_SPEED)) == True;
}
actions
{
Stop Chasing Player Variable(Event Player, bhopSpeed);
Event Player.isChasing = False;
}
}
rule("[Bhop] :: Reset speed if turning too fast")
rule("[Bhop] :: Stop chasing if too slow")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Horizontal Speed Of(Event Player) < Event Player.speedAccumInAir - 0.450;
(!Event Player.usingGrapple && (Event Player.isChasing || Event Player.bhopSpeed == Global.BHOP_MAX_SPEED) && Horizontal Speed Of(
Event Player) < Global.DEFAULT_START_SPEED / 22.200) == True;
}
actions
{
Stop Chasing Player Variable(Event Player, bhopSpeed);
Event Player.isChasing = False;
Event Player.bhopSpeed = Global.DEFAULT_START_SPEED;
Set Move Speed(Event Player, Event Player.bhopSpeed);
Wait(0.032, Ignore Condition);
Loop If Condition Is True;
}
}
rule("[Bhop] :: Stop chasing if too slow")
rule("[Bhop] :: Stop if player is on ground")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
(!Event Player.usingGrapple && Event Player.isChasing && Horizontal Speed Of(Event Player) <= Global.DEFAULT_START_SPEED / 66.660)
== True;
(Is On Ground(Event Player) && !Event Player.usingGrapple && Event Player.bhopSpeed > Global.DEFAULT_START_SPEED) == True;
}
actions
{
Wait(0.200, Abort When False);
Stop Chasing Player Variable(Event Player, bhopSpeed);
Event Player.isChasing = False;
Event Player.bhopSpeed = Global.DEFAULT_START_SPEED;
Set Move Speed(Event Player, Event Player.bhopSpeed);
Wait(0.032, Ignore Condition);
Loop If Condition Is True;
}
}
rule("[Bhop] :: Stop if player is on ground")
disabled rule("---------------- Dodge ----------------")
{
event
{
Ongoing - Global;
}
}
rule("[Dodge] :: Action")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
(Is On Ground(Event Player) && !Event Player.usingGrapple && Event Player.bhopSpeed > Global.DEFAULT_START_SPEED) == True;
(Event Player.canDodge && Is Button Held(Event Player, Ability 1)) == True;
}
actions
{
Wait(0.200, Abort When False);
Stop Chasing Player Variable(Event Player, bhopSpeed);
Event Player.bhopSpeed = Global.DEFAULT_START_SPEED;
Set Move Speed(Event Player, Event Player.bhopSpeed);
Event Player.throttleOf = Throttle Of(Event Player) + Vector(0, 0.500, 0);
If(Event Player.throttleOf == Vector(0, 0.500, 0));
Event Player.throttleOf = Vector(0, 0.500, 1);
End;
Apply Impulse(Event Player, Event Player.throttleOf, Global.DODGE_FORCE, To Player, Cancel Contrary Motion);
If(Event Player.bhopSpeed < Global.DEFAULT_START_SPEED + 20);
Event Player.bhopSpeed += Global.BHOP_SPEED_RATE * 3;
End;
Event Player.canDodge = False;
}
}
rule("[Dodge] :: On Ground")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Is On Ground(Event Player) == True;
}
actions
{
Event Player.canDodge = True;
}
}
disabled rule("---------------- Secondary Fire ----------------")
{
event
{
Ongoing - Global;
}
}
rule("[Secondary Fire] :: Projectile")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
(Global.matchStarted && Is Button Held(Event Player, Secondary Fire) && Is Alive(Event Player)) == True;
}
actions
{
Event Player.livingEnemies = Filtered Array(All Players(Opposite Team Of(Team Of(Event Player))), Is Alive(Current Array Element));
Event Player.secondaryHit = Ray Cast Hit Position(Eye Position(Event Player), Eye Position(Event Player) + Facing Direction Of(
Event Player) * 100, Event Player.livingEnemies, Event Player, True);
Event Player.secondaryEyePos = Eye Position(Event Player);
Destroy Effect(Event Player.secondaryOrb);
Play Effect(All Players(All Teams), Ring Explosion Sound, White, Event Player, 50);
Create Effect(All Players(All Teams), Orb, Red, Event Player.secondaryEyePos, 0.100, Visible To Position and Radius);
Event Player.secondaryOrb = Last Created Entity;
Chase Player Variable At Rate(Event Player, secondaryEyePos, Event Player.secondaryHit, Global.SECONDARY_PROJECTILE_SPEED,
Destination and Rate);
Wait(0.500, Ignore Condition);
}
}
rule("[Secondary Fire] :: Impulse")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
(Distance Between(Event Player.secondaryEyePos, Event Player.secondaryHit) < 0.100 || Ray Cast Hit Player(Eye Position(
Event Player), Event Player.secondaryEyePos, All Living Players(All Teams), Event Player, True) != Null) == True;
}
actions
{
Stop Chasing Player Variable(Event Player, secondaryEyePos);
Event Player.players = Filtered Array(All Living Players(All Teams), Distance Between(Current Array Element,
Event Player.secondaryEyePos) <= 4.500);
For Player Variable(Event Player, loop, 0, Count Of(Event Player.players), 1);
Apply Impulse(Event Player.players[Event Player.loop], Direction Towards(Event Player.secondaryEyePos,
Event Player.players[Event Player.loop] + Vector(0, Y Component Of(Eye Position(Event Player.players[Event Player.loop])
- Event Player.players[Event Player.loop]) / 2, 0) + Up), 15, To World, Incorporate Contrary Motion);
End;
Play Effect(All Players(All Teams), Good Explosion, Red, Event Player.secondaryHit, 2.500);
Destroy Effect(Event Player.secondaryOrb);
}
}
disabled rule("---------------- Grapple ----------------")
{
event
{
Ongoing - Global;
}
}
rule("[Grapple] :: Grapple Start")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
(Global.matchStarted && Is Button Held(Event Player, Ability 2) && Is Alive(Event Player)) == True;
}
actions
{
Event Player.livingEnemies = Filtered Array(All Players(Opposite Team Of(Team Of(Event Player))), Is Alive(Current Array Element));
Event Player.grappleHit = Ray Cast Hit Position(Eye Position(Event Player), Eye Position(Event Player) + Facing Direction Of(
Event Player) * 40, Event Player.livingEnemies, Event Player, True);
Event Player.grappleHitPlayer = Ray Cast Hit Player(Eye Position(Event Player), Eye Position(Event Player) + Facing Direction Of(
Event Player) * 40, Event Player.livingEnemies, Event Player, True);
Event Player.grappleEyePos = Eye Position(Event Player);
If(Event Player.grappleHitPlayer);
Create Beam Effect(All Players(All Teams), Grapple Beam, Event Player, Event Player.grappleHitPlayer, Yellow,
Visible To Position and Radius);
Event Player.grappleBeamEffect = Last Created Entity;
Create Effect(All Players(All Teams), Sphere, Yellow, Event Player.grappleHitPlayer, 0.200, Visible To Position and Radius);
Event Player.grappleHitPlayerSphere = Last Created Entity;
If(Distance Between(Event Player.grappleEyePos, Event Player.grappleHit) != 40);
Create Effect(All Players(All Teams), Sphere, Yellow, Event Player.grappleHitPlayer, 0.200, Visible To Position and Radius);
Event Player.grappleHitPlayerSphere = Last Created Entity;
End;
Else;
Create Beam Effect(All Players(All Teams), Grapple Beam, Event Player, Event Player.grappleHit, Yellow,
Visible To Position and Radius);
Event Player.grappleBeamEffect = Last Created Entity;
Create Effect(All Players(All Teams), Sphere, Yellow, Event Player.grappleHit, 0.200, Visible To Position and Radius);
Event Player.grappleHitSphere = Last Created Entity;
If(Distance Between(Event Player.grappleEyePos, Event Player.grappleHit) != 40);
Create Effect(All Players(All Teams), Sphere, Yellow, Event Player.grappleHit, 0.200, Visible To Position and Radius);
Event Player.grappleHitSphere = Last Created Entity;
End;
End;
Play Effect(All Players(All Teams), Bad Explosion, Yellow, Event Player, 0.330);
Play Effect(All Players(All Teams), Buff Impact Sound, White, Event Player, 100);
Play Effect(All Players(All Teams), Bad Explosion, Yellow, Event Player.grappleHit, 0.200);
Play Effect(All Players(All Teams), Buff Impact Sound, White, Event Player.grappleHit, 50);
Event Player.usingGrapple = True;
If(Distance Between(Event Player.grappleEyePos, Event Player.grappleHit) == 40);
Wait(0.250, Ignore Condition);
Event Player.usingGrapple = False;
Destroy Effect(Event Player.grappleBeamEffect);
Destroy Effect(Event Player.grapplePlayerBeamEffect);
Destroy Effect(Event Player.grappleHitSphere);
Destroy Effect(Event Player.grappleHitPlayerSphere);
Else;
Play Effect(All Players(All Teams), Bad Explosion, Yellow, Event Player.grappleHit, 0.200);
Play Effect(All Players(All Teams), Buff Impact Sound, White, Event Player.grappleHit, 50);
Play Effect(All Players(All Teams), Bad Explosion, Yellow, Event Player, 0.330);
Play Effect(All Players(All Teams), Buff Impact Sound, White, Event Player, 100);
End;
Wait(0.500, Ignore Condition);
}
}
rule("[Grapple] :: Pull")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
(Event Player.usingGrapple && Distance Between(Event Player.grappleEyePos, Event Player.grappleHit) < 40) == True;
}
actions
{
Start Forcing Throttle(Event Player, 0, 0.050, 0, 0.050, 0, 0.050);
If(Event Player.grappleHitPlayer && Is Alive(Event Player.grappleHitPlayer));
Apply Impulse(Event Player.grappleHitPlayer, Vector(0, 0.300, 0) + Direction Towards(Event Player.grappleHitPlayer, Eye Position(
Event Player)), Global.GRAPPLE_PULL_SPEED / 1.250, To World, Incorporate Contrary Motion);
Else;
If(Is Button Held(Event Player, Jump));
Apply Impulse(Event Player, Vector(0, 0.300, 0) + Direction Towards(Eye Position(Event Player), Event Player.grappleHit),
Global.GRAPPLE_PULL_SPEED, To World, Incorporate Contrary Motion);
Else;
Apply Impulse(Event Player, Direction Towards(Eye Position(Event Player), Event Player.grappleHit), Global.GRAPPLE_PULL_SPEED,
To World, Incorporate Contrary Motion);
End;
End;
Wait(0.064, Ignore Condition);
Loop If Condition Is True;
}
}
rule("[Grapple] :: Grapple End")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
(!Is Button Held(Event Player, Ability 2) || Is Dead(Event Player) || Is Dead(Event Player.grappleHitPlayer)
|| !Is In Line of Sight(Event Player, Event Player.grappleHitPlayer, Barriers Do Not Block LOS) || !Is In View Angle(
Event Player, Event Player.grappleHitPlayer, 105)) == True;
}
actions
{
Event Player.usingGrapple = False;
}
}
rule("[Grapple] :: Destroy Effects")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
!Event Player.usingGrapple == True;
}
actions
{
Destroy Effect(Event Player.grappleBeamEffect);
Destroy Effect(Event Player.grapplePlayerBeamEffect);
Destroy Effect(Event Player.grappleHitSphere);
Destroy Effect(Event Player.grappleHitPlayerSphere);
Stop Forcing Throttle(Event Player);
}
}
disabled rule("---------------- Buff ----------------")
{
event
{
Ongoing - Global;
}
}
rule("[Buff] :: Locations Switch")
rule("[Buff] :: Player With Buff Doesn't Exist")
{
event
{
Player Left Match;
All;
All;
}
actions
{
If(!Entity Exists(Global.wallbangUser) && !Entity Exists(Global.buffEffect[0])
&& Global.wallbangUser != Null && !Global.spawnWithWallbang);
Global.wallbangUser.wallbangEnabled = False;
Global.wallbangUser.wallbangDur = 0;
Wait(1, Ignore Condition);
Call Subroutine(WallbangCooldown);
Else If(!Entity Exists(Global.ricochetUser) && !Entity Exists(Global.buffEffect[1])
&& Global.ricochetUser != Null && !Global.spawnWithRicochet);
Global.ricochetUser.ricochetEnabled = False;
Global.ricochetUser.ricochetDur = 0;
Wait(1, Ignore Condition);
Call Subroutine(RicochetCooldown);
Else If(!Entity Exists(Global.buckshotUser) && !Entity Exists(Global.buffEffect[2])
&& Global.buckshotUser != Null && !Global.spawnWithBuckshot);
Global.buckshotUser.buckshotEnabled = False;
Global.buckshotUser.buckshotDur = 0;
Wait(1, Ignore Condition);
Call Subroutine(BuckshotCooldown);
End;
}
}
rule("[Buff] :: Map Locations")
{
event
{
Ongoing - Global;
}
actions
{
"i do not recommend opening the large action in-game"
Global.validBuffMap = False;
Skip(Array(83, 0, 6, 12, 18, 24, 30, 36, 42, 48, 54, 60, 66, 72, 78)[Index Of Array Value(Array((
Global.buffsEnabled && Current Map == Map(Workshop Chamber)) || (Current Map == Map(Workshop Expanse)) || Current Map == Map(
Workshop Expanse Night) || Current Map == Map(Workshop Island) || Current Map == Map(Workshop Island Night), (
Global.buffsEnabled && Current Map == Map(Blizzard World)) || (Current Map == Map(Blizzard World Winter)), (
Global.buffsEnabled && Current Map == Map(Château Guillard)) || (Current Map == Map(Château Guillard Halloween)),
Global.buffsEnabled && Current Map == Map(Dorado), (Global.buffsEnabled && Current Map == Map(Ecopoint: Antarctica)) || (
Current Map == Map(Ecopoint: Antarctica Winter)), (Global.buffsEnabled && Current Map == Map(Eichenwalde)) || (
Current Map == Map(Eichenwalde Halloween)), (Global.buffsEnabled && Current Map == Map(Hollywood)) || (Current Map == Map(
Hollywood Halloween)), (Global.buffsEnabled && Current Map == Map(King's Row)) || (Current Map == Map(King's Row Winter)), (
Global.buffsEnabled && Current Map == Map(Lijiang Control Center)) || (Current Map == Map(
Lijiang Control Center Lunar New Year)), Global.buffsEnabled && Current Map == Map(Necropolis),
Global.buffsEnabled && Current Map == Map(Paris), Global.buffsEnabled && Current Map == Map(Havana),
Global.buffsEnabled && Current Map == Map(Castillo), (Global.buffsEnabled && Current Map == Map(Black Forest)) || (
Current Map == Map(Black Forest Winter))), True) + 1]);
Global.validBuffMap = True;
Global.buffPos[0] = Vector(0, 1, 2);
Global.buffPos[1] = Vector(0, 1, -2);
Global.buffPos[2] = Vector(0, 1, -6);
Global.buffPos[3] = Vector(0, 1, 6);
Skip(77);
Global.validBuffMap = True;
Global.buffPos[0] = Vector(-32.500, 0.610, 73.150);
Global.buffPos[1] = Vector(-77.280, 5.880, 66.150);
Global.buffPos[2] = Vector(-54.500, 0.610, 110.200);
Global.buffPos[3] = Vector(-67.550, 1.750, 138.740);
Skip(71);
Global.validBuffMap = True;
Global.buffPos[0] = Vector(206.210, 16.500, 87);
Global.buffPos[1] = Vector(206.150, 1, 77.420);
Global.buffPos[0] = Vector(206.310, 9.030, 101.900);
Global.buffPos[1] = Vector(206.310, 9, 61.910);
Global.buffPos[2] = Vector(180.600, 10, 101.930);
Global.buffPos[3] = Vector(196.350, 17.500, 47.060);
Global.buffPos[3] = Vector(206.190, 1, 77.960);
Skip(65);
Global.validBuffMap = True;
Global.buffPos[0] = Vector(102.460, 12.010, 9.680);
Global.buffPos[0] = Vector(115.660, 8.730, -7.080);
Global.buffPos[1] = Vector(64.440, 15.010, 25.150);
Global.buffPos[2] = Vector(114.300, 12, 44.920);
Global.buffPos[3] = Vector(128.330, 10.020, -23.860);
Global.buffPos[2] = Vector(98.040, 19.010, 15.260);
Global.buffPos[3] = Vector(131.270, 12.050, 26.120);
Skip(59);
Global.validBuffMap = True;
Global.buffPos[0] = Vector(1.660, 12.630, -25);
Global.buffPos[1] = Vector(-32.270, 10, 0);
Global.buffPos[1] = Vector(-19.500, 13, 0);
Global.buffPos[2] = Vector(1.660, 12.630, 25);
Global.buffPos[3] = Vector(29.600, 4, 0);
Global.buffPos[3] = Vector(20.500, 10, 0);
Skip(53);
Global.validBuffMap = True;
Global.buffPos[0] = Vector(55.700, 22, -67.840);
Global.buffPos[1] = Vector(58.330, 5.720, -90.390);
Global.buffPos[2] = Vector(54.740, 11.720, -121.020);
Global.buffPos[3] = Vector(103.960, 13.720, -109.470);
Global.buffPos[2] = Vector(76.030, 11.690, -109.660);
Global.buffPos[3] = Vector(88.130, 13.670, -67.390);
Skip(47);
Global.validBuffMap = True;
Global.buffPos[0] = Vector(-11.910, 2.730, -74.640);
Global.buffPos[1] = Vector(-4.090, 2.600, -15.870);
Global.buffPos[2] = Vector(20.670, 2.600, -51.820);
Global.buffPos[3] = Vector(7.870, 13.900, -48.380);
Skip(41);
Global.validBuffMap = True;
Global.buffPos[0] = Vector(-49.460, 1, 2.690);
Global.buffPos[1] = Vector(-31.190, 10, -13.400);
Global.buffPos[2] = Vector(-93.670, 8.500, -29.380);
Global.buffPos[3] = Vector(-69.640, 1.500, -35.480);
Skip(35);
Global.validBuffMap = True;
Global.buffPos[0] = Vector(-33.500, 268, 323);
Global.buffPos[0] = Vector(-26.800, 268, 308);
Global.buffPos[1] = Vector(0, 271, 323);
Global.buffPos[2] = Vector(33.500, 268, 323);
Global.buffPos[2] = Vector(26.800, 268, 308);
Global.buffPos[3] = Vector(0, 271, 267.500);
Skip(29);
Global.validBuffMap = True;
Global.buffPos[0] = Vector(0, -5, 0);
Global.buffPos[1] = Vector(-29.500, 3, 0);
Global.buffPos[2] = Vector(1.060, 4, -23.070);
Global.buffPos[3] = Vector(1.060, 4, 23.070);
Global.buffPos[0] = Vector(1.680, 12.700, 17.250);
Global.buffPos[1] = Vector(-21.050, 13.710, 0);
Global.buffPos[2] = Vector(1.800, 12.700, -16.410);
Global.buffPos[3] = Vector(8.500, 2.010, 0);
Skip(23);
Global.validBuffMap = True;
Global.buffPos[0] = Vector(-104, 16, -100);
Global.buffPos[0] = Vector(-104.100, 16, -100.650);
Global.buffPos[1] = Vector(-109.180, 11, -60.600);
Global.buffPos[2] = Vector(-57.190, 14, -82);
Global.buffPos[3] = Vector(-73.390, 11.020, -38.230);
Skip(17);
Global.validBuffMap = True;
Global.buffPos[0] = Vector(0, 7, -79.230);
Global.buffPos[1] = Vector(32.090, 5, -97.450);
Global.buffPos[2] = Vector(64.200, 5, -65.680);
Global.buffPos[3] = Vector(64.500, 13, -83.330);
Skip(11);
Global.validBuffMap = True;
Global.buffPos[0] = Vector(-106.180, 40.560, 43.200);
Global.buffPos[1] = Vector(-128.200, 35.380, 63.400);
Global.buffPos[2] = Vector(-100.350, 40.560, 73.750);
Global.buffPos[3] = Vector(-74.820, 33, 52.930);
Skip(5);
Global.validBuffMap = True;
Global.buffPos[0] = Vector(16.790, 12.440, 29.480);
Global.buffPos[1] = Vector(4.660, 18.280, 5);
Global.buffPos[2] = Vector(16.180, 12.360, -20.110);
Global.buffPos[3] = Vector(-25.490, 13.090, 5);
}
}
disabled rule("---------------- wallbang ----------------")
disabled rule("---------------- Wallbang ----------------")
{
event
{
Ongoing - Global;
}
}
rule("[Buff] :: Wallbang : Create Orb")
{
event
{
Ongoing - Global;
}
conditions
{
(Global.validBuffMap && !Global.spawnWithWallbang && Global.spawnWallbang && Global.wallbangCD == 0 && (
Global.matchStarted || Global.buffsSpawnImmediately)) == True;
}
actions
{
Play Effect(All Players(All Teams), Good Pickup Effect, Yellow, Global.buffPos[0], 1);
Destroy In-World Text(Global.cdText[0]);
Create Effect(All Players(All Teams), Orb, Yellow, Global.buffPos[0], 2, Visible To Position and Radius);
Global.buffEffect[0] = Last Created Entity;
Play Effect(All Players(All Teams), Good Pickup Effect, Yellow, Global.buffPos[0], 1);
Create In-World Text(All Players(All Teams), Ability Icon String(Hero(Baptiste), Button(Ultimate)), Global.buffPos[0], 2,
Clip Against Surfaces, Visible To Position and String, White, Default Visibility);
Global.buffIcon[0] = Last Text ID;
Destroy In-World Text(Global.cdText[0]);
Global.canPickupWallbang = True;
}
}
rule("[Buff] :: Wallbang : Collect")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
((Global.matchStarted && Entity Exists(Global.buffEffect[0]) && Distance Between(Global.buffPos[0], Event Player)
< 2.500 && Has Spawned(Event Player) && Is Alive(Event Player)) || Global.spawnWithWallbang) == True;
((Global.matchStarted && Global.canPickupWallbang && Entity Exists(Global.buffEffect[0]) && Distance Between(Global.buffPos[0],
Event Player) < 2.500 && Has Spawned(Event Player) && Is Alive(Event Player)) || Global.spawnWithWallbang) == True;
}
actions
{
Global.canPickupWallbang = False;
Event Player.wallbangEnabled = True;
Global.wallbangUser = Event Player;
If(!Global.spawnWithWallbang);
Destroy In-World Text(Global.cdText[0]);
Destroy In-World Text(Global.buffIcon[0]);
Destroy Effect(Global.buffEffect[0]);
Play Effect(All Players(All Teams), Good Pickup Effect, Yellow, Global.buffPos[0], 1);
Play Effect(All Players(All Teams), Buff Explosion Sound, Yellow, Global.buffPos[0], 200);
Event Player.wallbangDur = Global.WALLBANG_DUR;
Chase Player Variable At Rate(Event Player, wallbangDur, 0, 1, None);
Create HUD Text(Event Player, Null, Null, Custom String("{0} Wallbang: {1} {0}", Ability Icon String(Hero(Baptiste), Button(
Ultimate)), Round To Integer(Event Player.wallbangDur, Up)), Top, 1, White, White, White, Visible To and String,
Ultimate)), Round To Integer(Event Player.wallbangDur, Up)), Top, 2, White, White, White, Visible To and String,
Default Visibility);
Event Player.hudText[0] = Last Text ID;
Small Message(Event Player, Custom String("Your bullets go through walls!"));
Big Message(Event Player, Custom String("Wallbang"));
Create Effect(Is Alive(Event Player) ? All Players(All Teams) : Null, Good Aura, Yellow, Event Player, 0.750,
Visible To Position and Radius);
Event Player.wallbangBuffEffect = Last Created Entity;
Wait(Global.WALLBANG_DUR - 4, Ignore Condition);
For Player Variable(Event Player, sound, 0, 4, 1);
Play Effect(All Players(All Teams), Debuff Impact Sound, White, Event Player, 100);
Wait(1, Ignore Condition);
End;
Else;
Create HUD Text(Event Player, Null, Null, Custom String("{0} Wallbang: Forever {0}", Ability Icon String(Hero(Baptiste), Button(
Ultimate))), Top, 1, White, White, White, Visible To and String, Default Visibility);
Event Player.hudText[0] = Last Text ID;
End;
}
}
rule("[Buff] :: Wallbang : Remove")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
(!Global.spawnWithWallbang && Event Player.wallbangDur == 0) == True;
}
actions
{
Wait(0.128, Ignore Condition);
Destroy HUD Text(Event Player.hudText[0]);
Destroy Effect(Event Player.wallbangBuffEffect);
Stop Chasing Player Variable(Event Player, wallbangDur);
Event Player.wallbangEnabled = False;
Global.wallbangUser = Null;
Event Player.wallbangDur = Global.WALLBANG_DUR;
Call Subroutine(WallbangCooldown);
}
}
rule("[Buff] :: Wallbang : Action")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
(Event Player.wallbangEnabled && Is Firing Primary(Event Player)) == True;
}
actions
{
Event Player.gunPos = Eye Position(Event Player) + Facing Direction Of(Event Player) + World Vector Of(Right - Vector(0, 0.300, 0),
Event Player, Rotation) * 0.180;
Event Player.wallbangHitPos = Eye Position(Event Player);
Event Player.wallbangLivingEnemies = 0;
Event Player.wallbangHitPlayer = 0;
Event Player.wallbangCount = 0;
While(Distance Between(Event Player.gunPos, Event Player.wallbangHitPos)
< 100 && Event Player.wallbangCount < Global.NUM_WALLBANGS);
Event Player.wallbangLivingEnemies = Filtered Array(All Players(Opposite Team Of(Team Of(Event Player))), Is Alive(
Current Array Element));
Event Player.wallbangHitPos = Ray Cast Hit Position(Event Player.wallbangHitPos + Facing Direction Of(Event Player),
Event Player.wallbangHitPos + Facing Direction Of(Event Player) * (100 - Distance Between(Event Player.gunPos,
Event Player.wallbangHitPos)), Event Player.wallbangLivingEnemies, Event Player, True);
Play Effect(All Players(All Teams), Good Explosion, Yellow, Event Player.wallbangHitPos, 0.200);
Event Player.wallbangHitPlayer = Ray Cast Hit Player(Event Player.wallbangHitPos,
Event Player.wallbangHitPos + Facing Direction Of(Event Player) * (100 - Distance Between(Event Player.gunPos,
Event Player.wallbangHitPos)), Event Player.wallbangLivingEnemies, Event Player, True);
If(Event Player.wallbangHitPlayer != Null && Event Player.wallbangHitPlayer != Event Player);
Damage(Event Player.wallbangHitPlayer, Event Player, 10000);
End;
Event Player.wallbangCount += 1;
End;
Create Beam Effect(All Players(All Teams), Bad Beam, Event Player.gunPos, Event Player.wallbangHitPos, Yellow, None);
Event Player.wallbangEffect[0] = Last Created Entity;
Wait(0.250, Ignore Condition);
Destroy Effect(Event Player.wallbangEffect[0]);
}
}
rule("[Buff] :: Wallbang : Remove")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
(!Global.spawnWithWallbang && Event Player.wallbangDur == 0) == True;
}
actions
{
Destroy HUD Text(Event Player.hudText[0]);
Destroy Effect(Event Player.wallbangBuffEffect);
Event Player.wallbangEnabled = False;
Call Subroutine(WallbangCooldown);
}
}
disabled rule("---------------- ricochet ----------------")
disabled rule("---------------- Ricochet ----------------")
{
event
{
Ongoing - Global;
}
}
rule("[Buff] :: Ricochet : Create Orb")
{
event
{
Ongoing - Global;
}
conditions
{
(Global.validBuffMap && !Global.spawnWithRicochet && Global.spawnRicochet && Global.ricochetCD == 0 && (
Global.matchStarted || Global.buffsSpawnImmediately)) == True;
}
actions
{
Play Effect(All Players(All Teams), Good Pickup Effect, Purple, Global.buffPos[1], 1);
Destroy In-World Text(Global.cdText[1]);
Create Effect(All Players(All Teams), Orb, Purple, Global.buffPos[1], 2, Visible To Position and Radius);
Global.buffEffect[1] = Last Created Entity;
Play Effect(All Players(All Teams), Good Pickup Effect, Purple, Global.buffPos[1], 1);
Create In-World Text(All Players(All Teams), Ability Icon String(Hero(Winston), Button(Ability 1)), Global.buffPos[1], 2,
Clip Against Surfaces, Visible To Position and String, White, Default Visibility);
Global.buffIcon[1] = Last Text ID;
Destroy In-World Text(Global.cdText[1]);
Global.canPickupRicochet = True;
}
}
rule("[Buff] :: Ricochet : Collect")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
((Global.matchStarted && Entity Exists(Global.buffEffect[1]) && Distance Between(Global.buffPos[1], Event Player)
< 2.500 && Has Spawned(Event Player) && Is Alive(Event Player)) || Global.spawnWithRicochet) == True;
((Global.matchStarted && Global.canPickupRicochet && Entity Exists(Global.buffEffect[1]) && Distance Between(Global.buffPos[1],
Event Player) < 2.500 && Has Spawned(Event Player) && Is Alive(Event Player)) || Global.spawnWithRicochet) == True;
}
actions
{
Global.canPickupRicochet = False;
Event Player.ricochetEnabled = True;
Global.ricochetUser = Event Player;
If(!Global.spawnWithRicochet);
Destroy In-World Text(Global.cdText[1]);
Destroy In-World Text(Global.buffIcon[1]);
Destroy Effect(Global.buffEffect[1]);
Play Effect(All Players(All Teams), Good Pickup Effect, Purple, Global.buffPos[1], 1);
Play Effect(All Players(All Teams), Buff Explosion Sound, Purple, Global.buffPos[1], 200);
Event Player.ricochetDur = Global.RICOCHET_DUR;
Chase Player Variable At Rate(Event Player, ricochetDur, 0, 1, None);
Create HUD Text(Event Player, Null, Null, Custom String("{0} Ricochet Bullets: {1} {0}", Ability Icon String(Hero(Winston), Button(
Ability 1)), Round To Integer(Event Player.ricochetDur, Up)), Top, 2, White, White, White, Visible To and String,
Ability 1)), Round To Integer(Event Player.ricochetDur, Up)), Top, 3, White, White, White, Visible To and String,
Default Visibility);
Event Player.hudText[1] = Last Text ID;
Small Message(Event Player, Custom String("Your bullets ricochet off walls!"));
Big Message(Event Player, Custom String("Ricochet Bullets"));
Create Effect(Is Alive(Event Player) ? All Players(All Teams) : Null, Good Aura, Purple, Event Player, 0.750,
Visible To Position and Radius);
Event Player.ricochetBuffEffect = Last Created Entity;
Wait(Global.RICOCHET_DUR - 4, Ignore Condition);
For Player Variable(Event Player, sound_0, 0, 4, 1);
Play Effect(All Players(All Teams), Debuff Impact Sound, White, Event Player, 100);
Wait(1, Ignore Condition);
End;
Else;
Create HUD Text(Event Player, Null, Null, Custom String("{0} Ricochet Bullets: Forever {0}", Ability Icon String(Hero(Winston),
Button(Ability 1))), Top, 2, White, White, White, Visible To and String, Default Visibility);
Event Player.hudText[1] = Last Text ID;
End;
}
}
rule("[Buff] :: Ricochet : Remove")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
(Event Player.ricochetDur == 0 && !Global.spawnWithRicochet) == True;
}
actions
{
Wait(0.128, Ignore Condition);
Destroy HUD Text(Event Player.hudText[1]);
Destroy Effect(Event Player.ricochetBuffEffect);
Stop Chasing Player Variable(Event Player, ricochetDur);
Event Player.ricochetEnabled = False;
Global.ricochetUser = Null;
Event Player.ricochetDur = Global.RICOCHET_DUR;
Call Subroutine(RicochetCooldown);
}
}
rule("[Buff] :: Ricochet : Action")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
(Event Player.ricochetEnabled && Is Firing Primary(Event Player)) == True;
}
actions
{
"https://math.stackexchange.com/questions/13261/how-to-get-a-reflection-vector"
Event Player.normals = Empty Array;
Event Player.hitPos = Empty Array;
Event Player.hitPosPlayer = Empty Array;
Event Player.ricochets = Empty Array;
Event Player.hitPosRicochets = Empty Array;
Event Player.hitPosPlayerRicochets = Empty Array;
Event Player.ricochetEffects = Empty Array;
Event Player.ricochetEffect = Empty Array;
Event Player.loop_0 = 0;
While(Event Player.loop_0 < Global.NUM_RICOCHETS);
If(Event Player.loop_0 > 0);
Event Player.eyePos = Event Player.hitPos[Event Player.loop_0 - 1];
Event Player.facing = Event Player.ricochets[Event Player.loop_0 - 1];
Else;
Event Player.eyePos = Eye Position(Event Player) + Facing Direction Of(Event Player) + World Vector Of(Right - Vector(0, 0.300, 0),
Event Player, Rotation) * 0.180;
Event Player.facing = Facing Direction Of(Event Player);
End;
Event Player.normals[Event Player.loop_0] = Ray Cast Hit Normal(Event Player.eyePos,
Event Player.eyePos + Event Player.facing * 100, All Players(All Teams), Event Player, True);
Event Player.hitPos[Event Player.loop_0] = Ray Cast Hit Position(Event Player.eyePos,
Event Player.eyePos + Event Player.facing * 100, All Players(All Teams), Event Player, True);
Event Player.hitPosPlayer[Event Player.loop_0] = Ray Cast Hit Player(Event Player.eyePos,
Event Player.eyePos + Event Player.facing * 100, All Players(All Teams), Event Player, True);
Event Player.ricochets[Event Player.loop_0] = Event Player.facing - 2 * Event Player.normals[Event Player.loop_0] * Dot Product(
Event Player.facing, Event Player.normals[Event Player.loop_0]);
Event Player.hitPosRicochets[Event Player.loop_0] = Ray Cast Hit Position(Event Player.hitPos[Event Player.loop_0],
Event Player.hitPos[Event Player.loop_0] + Event Player.ricochets[Event Player.loop_0] * 100, All Living Players(All Teams),
Event Player, True);
Event Player.hitPosPlayerRicochets[Event Player.loop_0] = Ray Cast Hit Player(Event Player.hitPos[Event Player.loop_0],
Event Player.hitPos[Event Player.loop_0] + Event Player.ricochets[Event Player.loop_0] * 100, All Living Players(All Teams),
Event Player, True);
Create Beam Effect(All Players(All Teams), Bad Beam, Event Player.eyePos, Event Player.hitPos[Event Player.loop_0], Purple, None);
Event Player.ricochetEffect[Event Player.loop_0] = Last Created Entity;
Create Beam Effect(All Players(All Teams), Bad Beam, Event Player.hitPos[Event Player.loop_0],
Event Player.hitPosRicochets[Event Player.loop_0], Purple, None);
Event Player.ricochetEffects[Event Player.loop_0] = Last Created Entity;
Play Effect(All Players(All Teams), Good Explosion, Purple, Event Player.hitPos[Event Player.loop_0], 0.200);
Play Effect(All Players(All Teams), Good Explosion, Purple, Event Player.hitPosRicochets[Event Player.loop_0], 0.200);
Damage(Event Player.hitPosPlayer[Event Player.loop_0], Event Player, 10000);
Damage(Event Player.hitPosPlayerRicochets[Event Player.loop_0], Event Player, 10000);
Event Player.loop_0 += 1;
End;
Wait(0.150, Ignore Condition);
Event Player.i_0 = 0;
While(Event Player.i_0 < Global.NUM_RICOCHETS);
Destroy Effect(Event Player.ricochetEffect[Event Player.i_0]);
Destroy Effect(Event Player.ricochetEffects[Event Player.i_0]);
Event Player.i_0 += 1;
End;
}
}
rule("[Buff] :: Ricochet : Remove")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
(!Global.spawnWithRicochet && Event Player.ricochetDur == 0) == True;
}
actions
{
Destroy HUD Text(Event Player.hudText[1]);
Destroy Effect(Event Player.ricochetBuffEffect);
Event Player.ricochetEnabled = False;
Call Subroutine(RicochetCooldown);
}
}
disabled rule("---------------- buckshot ----------------")
disabled rule("---------------- Buckshot ----------------")
{
event
{
Ongoing - Global;
}
}
rule("[Buff] :: Buckshot : Create Orb")
{
event
{
Ongoing - Global;
}
conditions
{
(Global.validBuffMap && !Global.spawnWithBuckshot && Global.spawnBuckshot && Global.buckshotCD == 0 && (
Global.matchStarted || Global.buffsSpawnImmediately)) == True;
}
actions
{
Play Effect(All Players(All Teams), Good Pickup Effect, Green, Global.buffPos[2], 1);
Destroy In-World Text(Global.cdText[2]);
Create Effect(All Players(All Teams), Orb, Green, Global.buffPos[2], 2, Visible To Position and Radius);
Global.buffEffect[2] = Last Created Entity;
Play Effect(All Players(All Teams), Good Pickup Effect, Green, Global.buffPos[2], 1);
Create In-World Text(All Players(All Teams), Ability Icon String(Hero(Ashe), Button(Ability 1)), Global.buffPos[2], 2,
Clip Against Surfaces, Visible To Position and String, White, Default Visibility);
Global.buffIcon[2] = Last Text ID;
Destroy In-World Text(Global.cdText[2]);
Global.canPickupBuckshot = True;
}
}
rule("[Buff] :: Buckshot : Collect")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
((Global.matchStarted && Entity Exists(Global.buffEffect[2]) && Distance Between(Global.buffPos[2], Event Player)
< 2.500 && Has Spawned(Event Player) && Is Alive(Event Player)) || Global.spawnWithBuckshot) == True;
((Global.matchStarted && Global.canPickupBuckshot && Entity Exists(Global.buffEffect[2]) && Distance Between(Global.buffPos[2],
Event Player) < 2.500 && Has Spawned(Event Player) && Is Alive(Event Player)) || Global.spawnWithBuckshot) == True;
}
actions
{
Global.canPickupBuckshot = False;
Event Player.buckshotEnabled = True;
Global.buckshotUser = Event Player;
If(!Global.spawnWithBuckshot);
Destroy In-World Text(Global.cdText[2]);
Destroy In-World Text(Global.buffIcon[2]);
Destroy Effect(Global.buffEffect[2]);
Play Effect(All Players(All Teams), Good Pickup Effect, Green, Global.buffPos[2], 1);
Play Effect(All Players(All Teams), Buff Explosion Sound, Green, Global.buffPos[2], 200);
Event Player.buckshotDur = Global.BUCKSHOT_DUR;
Chase Player Variable At Rate(Event Player, buckshotDur, 0, 1, Destination and Rate);
Create HUD Text(Event Player, Null, Null, Custom String("{0} Buckshot: {1} {0}", Ability Icon String(Hero(Ashe), Button(
Ability 1)), Round To Integer(Event Player.buckshotDur, Up)), Top, 3, White, White, White, Visible To and String,
Ability 1)), Round To Integer(Event Player.buckshotDur, Up)), Top, 4, White, White, White, Visible To and String,
Default Visibility);
Event Player.hudText[2] = Last Text ID;
Big Message(Event Player, Custom String("Buckshot"));
Small Message(Event Player, Custom String("Your bullets spread like a shotgun!"));
Create Effect(Is Alive(Event Player) ? All Players(All Teams) : Null, Good Aura, Green, Event Player, 0.750,
Visible To Position and Radius);
Event Player.buckshotBuffEffect = Last Created Entity;
Wait(Global.BUCKSHOT_DUR - 4, Ignore Condition);
For Player Variable(Event Player, sound_1, 0, 4, 1);
Play Effect(All Players(All Teams), Debuff Impact Sound, White, Event Player, 100);
Wait(1, Ignore Condition);
End;
Else;
Create HUD Text(Event Player, Null, Null, Custom String("{0} Buckshot: Forever {0}", Ability Icon String(Hero(Ashe), Button(
Ability 1))), Top, 3, White, White, White, Visible To and String, Default Visibility);
Event Player.hudText[2] = Last Text ID;
End;
}
}
rule("[Buff] :: Buckshot : Remove")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
(!Global.spawnWithBuckshot && Event Player.buckshotDur == 0) == True;
}
actions
{
Wait(0.128, Ignore Condition);
Destroy HUD Text(Event Player.hudText[2]);
Destroy Effect(Event Player.buckshotBuffEffect);
Stop Chasing Player Variable(Event Player, buckshotDur);
Event Player.buckshotEnabled = False;
Global.buckshotUser = Null;
Event Player.buckshotDur = Global.BUCKSHOT_DUR;
Call Subroutine(BuckshotCooldown);
}
}
rule("[Buff] :: Buckshot : Action")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
(Event Player.buckshotEnabled && Is Firing Primary(Event Player)) == True;
}
actions
{
Event Player.buckshotHitPos = Empty Array;
Event Player.buckshotHitPlayer = Empty Array;
Event Player.livingEnemies = Filtered Array(All Players(Opposite Team Of(Team Of(Event Player))), Is Alive(Current Array Element));
Event Player.gunPos_0 = World Vector Of(Right - Vector(0, 0.300, 0), Event Player, Rotation) * 0.180;
Event Player.buckshotBeam = Empty Array;
Event Player.centerBeam = 0;
Global.spreadDiag = Global.BUCKSHOT_SPREAD - Global.BUCKSHOT_SPREAD * 0.330;
Global.spreadHori = Global.BUCKSHOT_SPREAD;
If(Global.randomSpread);
Event Player.randomizedSpreadHori = Empty Array;
Event Player.randomizedSpreadDiag = Empty Array;
Event Player.hori = 0;
While(Event Player.hori < 4);
Event Player.randomizedSpreadHori[Event Player.hori] = Random Real(Global.spreadHori / 5, Global.spreadHori + 1.500);
Event Player.hori += 1;
End;
Event Player.diag = 0;
While(Event Player.diag < 4);
Event Player.randomizedSpreadDiag[Event Player.diag] = Random Real(Global.spreadHori / 5, Global.spreadDiag + 1.500);
Event Player.diag += 1;
End;
End;
If(!Global.randomSpread);
Event Player.buckshotHitPos[0] = Ray Cast Hit Position(Eye Position(Event Player), Eye Position(Event Player) + World Vector Of(
Vector(Tangent From Degrees(Global.spreadDiag) * 100, 0, 0), Event Player, Rotation) + Direction From Angles(
Horizontal Facing Angle Of(Event Player), Vertical Facing Angle Of(Event Player) + Global.spreadDiag) * 100,
All Living Players(All Teams), Event Player, False);
Event Player.buckshotHitPlayer[0] = Ray Cast Hit Player(Eye Position(Event Player), Eye Position(Event Player) + World Vector Of(
Vector(Tangent From Degrees(Global.spreadDiag) * 100, 0, 0), Event Player, Rotation) + Direction From Angles(
Horizontal Facing Angle Of(Event Player), Vertical Facing Angle Of(Event Player) + Global.spreadDiag) * 100,
All Living Players(All Teams), Event Player, False);
Else;
Event Player.buckshotHitPos[0] = Ray Cast Hit Position(Eye Position(Event Player), Eye Position(Event Player) + World Vector Of(
Vector(Tangent From Degrees(Event Player.randomizedSpreadDiag[0]) * 100, 0, 0), Event Player, Rotation)
+ Direction From Angles(Horizontal Facing Angle Of(Event Player), Vertical Facing Angle Of(Event Player)
+ Event Player.randomizedSpreadDiag[0]) * 100, All Living Players(All Teams), Event Player, False);
Event Player.buckshotHitPlayer[0] = Ray Cast Hit Player(Eye Position(Event Player), Eye Position(Event Player) + World Vector Of(
Vector(Tangent From Degrees(Event Player.randomizedSpreadDiag[0]) * 100, 0, 0), Event Player, Rotation)
+ Direction From Angles(Horizontal Facing Angle Of(Event Player), Vertical Facing Angle Of(Event Player)
+ Event Player.randomizedSpreadDiag[0]) * 100, All Living Players(All Teams), Event Player, False);
End;
If(!Global.randomSpread);
Event Player.buckshotHitPos[1] = Ray Cast Hit Position(Eye Position(Event Player), Eye Position(Event Player) + World Vector Of(
Vector(Tangent From Degrees(Global.spreadDiag) * 100, 0, 0), Event Player, Rotation) + Direction From Angles(
Horizontal Facing Angle Of(Event Player), Vertical Facing Angle Of(Event Player) + Global.spreadDiag * -1) * 100,
All Living Players(All Teams), Event Player, False);
Event Player.buckshotHitPlayer[1] = Ray Cast Hit Player(Eye Position(Event Player), Eye Position(Event Player) + World Vector Of(
Vector(Tangent From Degrees(Global.spreadDiag) * 100, 0, 0), Event Player, Rotation) + Direction From Angles(
Horizontal Facing Angle Of(Event Player), Vertical Facing Angle Of(Event Player) + Global.spreadDiag * -1) * 100,
All Living Players(All Teams), Event Player, False);
Else;
Event Player.buckshotHitPos[1] = Ray Cast Hit Position(Eye Position(Event Player), Eye Position(Event Player) + World Vector Of(
Vector(Tangent From Degrees(Event Player.randomizedSpreadDiag[1]) * 100, 0, 0), Event Player, Rotation)
+ Direction From Angles(Horizontal Facing Angle Of(Event Player), Vertical Facing Angle Of(Event Player)
+ Event Player.randomizedSpreadDiag[1] * -1) * 100, All Living Players(All Teams), Event Player, False);
Event Player.buckshotHitPlayer[1] = Ray Cast Hit Player(Eye Position(Event Player), Eye Position(Event Player) + World Vector Of(
Vector(Tangent From Degrees(Event Player.randomizedSpreadDiag[1]) * 100, 0, 0), Event Player, Rotation)
+ Direction From Angles(Horizontal Facing Angle Of(Event Player), Vertical Facing Angle Of(Event Player)
+ Event Player.randomizedSpreadDiag[1] * -1) * 100, All Living Players(All Teams), Event Player, False);
End;
If(!Global.randomSpread);
Event Player.buckshotHitPos[2] = Ray Cast Hit Position(Eye Position(Event Player), Eye Position(Event Player) + World Vector Of(
Vector(Tangent From Degrees(Global.spreadDiag * -1) * 100, 0, 0), Event Player, Rotation) + Direction From Angles(
Horizontal Facing Angle Of(Event Player), Vertical Facing Angle Of(Event Player) + Global.spreadDiag) * 100,
All Living Players(All Teams), Event Player, False);
Event Player.buckshotHitPlayer[2] = Ray Cast Hit Player(Eye Position(Event Player), Eye Position(Event Player) + World Vector Of(
Vector(Tangent From Degrees(Global.spreadDiag * -1) * 100, 0, 0), Event Player, Rotation) + Direction From Angles(
Horizontal Facing Angle Of(Event Player), Vertical Facing Angle Of(Event Player) + Global.spreadDiag) * 100,
All Living Players(All Teams), Event Player, False);
Else;
Event Player.buckshotHitPos[2] = Ray Cast Hit Position(Eye Position(Event Player), Eye Position(Event Player) + World Vector Of(
Vector(Tangent From Degrees(Event Player.randomizedSpreadDiag[2] * -1) * 100, 0, 0), Event Player, Rotation)
+ Direction From Angles(Horizontal Facing Angle Of(Event Player), Vertical Facing Angle Of(Event Player)
+ Event Player.randomizedSpreadDiag[2]) * 100, All Living Players(All Teams), Event Player, False);
Event Player.buckshotHitPlayer[2] = Ray Cast Hit Player(Eye Position(Event Player), Eye Position(Event Player) + World Vector Of(
Vector(Tangent From Degrees(Event Player.randomizedSpreadDiag[2] * -1) * 100, 0, 0), Event Player, Rotation)
+ Direction From Angles(Horizontal Facing Angle Of(Event Player), Vertical Facing Angle Of(Event Player)
+ Event Player.randomizedSpreadDiag[2]) * 100, All Living Players(All Teams), Event Player, False);
End;
If(!Global.randomSpread);
Event Player.buckshotHitPos[3] = Ray Cast Hit Position(Eye Position(Event Player), Eye Position(Event Player) + World Vector Of(
Vector(Tangent From Degrees(Global.spreadDiag * -1) * 100, 0, 0), Event Player, Rotation) + Direction From Angles(
Horizontal Facing Angle Of(Event Player), Vertical Facing Angle Of(Event Player) + Global.spreadDiag * -1) * 100,
All Living Players(All Teams), Event Player, False);
Event Player.buckshotHitPlayer[3] = Ray Cast Hit Player(Eye Position(Event Player), Eye Position(Event Player) + World Vector Of(
Vector(Tangent From Degrees(Global.spreadDiag * -1) * 100, 0, 0), Event Player, Rotation) + Direction From Angles(
Horizontal Facing Angle Of(Event Player), Vertical Facing Angle Of(Event Player) + Global.spreadDiag * -1) * 100,
All Living Players(All Teams), Event Player, False);
Else;
Event Player.buckshotHitPos[3] = Ray Cast Hit Position(Eye Position(Event Player), Eye Position(Event Player) + World Vector Of(
Vector(Tangent From Degrees(Event Player.randomizedSpreadDiag[3] * -1) * 100, 0, 0), Event Player, Rotation)
+ Direction From Angles(Horizontal Facing Angle Of(Event Player), Vertical Facing Angle Of(Event Player)
+ Event Player.randomizedSpreadDiag[3] * -1) * 100, All Living Players(All Teams), Event Player, False);
Event Player.buckshotHitPlayer[3] = Ray Cast Hit Player(Eye Position(Event Player), Eye Position(Event Player) + World Vector Of(
Vector(Tangent From Degrees(Event Player.randomizedSpreadDiag[3] * -1) * 100, 0, 0), Event Player, Rotation)
+ Direction From Angles(Horizontal Facing Angle Of(Event Player), Vertical Facing Angle Of(Event Player)
+ Event Player.randomizedSpreadDiag[3] * -1) * 100, All Living Players(All Teams), Event Player, False);
End;
If(!Global.randomSpread);
Event Player.buckshotHitPos[4] = Ray Cast Hit Position(Eye Position(Event Player), Eye Position(Event Player) + World Vector Of(
Vector(Tangent From Degrees(0) * 100, 0, 0), Event Player, Rotation) + Direction From Angles(Horizontal Facing Angle Of(
Event Player), Vertical Facing Angle Of(Event Player) + Global.spreadHori) * 100, All Living Players(All Teams), Event Player,
False);
Event Player.buckshotHitPlayer[4] = Ray Cast Hit Player(Eye Position(Event Player), Eye Position(Event Player) + World Vector Of(
Vector(Tangent From Degrees(0) * 100, 0, 0), Event Player, Rotation) + Direction From Angles(Horizontal Facing Angle Of(
Event Player), Vertical Facing Angle Of(Event Player) + Global.spreadHori) * 100, All Living Players(All Teams), Event Player,
False);
Else;
Event Player.buckshotHitPos[4] = Ray Cast Hit Position(Eye Position(Event Player), Eye Position(Event Player) + World Vector Of(
Vector(Tangent From Degrees(0) * 100, 0, 0), Event Player, Rotation) + Direction From Angles(Horizontal Facing Angle Of(
Event Player), Vertical Facing Angle Of(Event Player) + Event Player.randomizedSpreadHori[0]) * 100, All Living Players(
All Teams), Event Player, False);
Event Player.buckshotHitPlayer[4] = Ray Cast Hit Player(Eye Position(Event Player), Eye Position(Event Player) + World Vector Of(
Vector(Tangent From Degrees(0) * 100, 0, 0), Event Player, Rotation) + Direction From Angles(Horizontal Facing Angle Of(
Event Player), Vertical Facing Angle Of(Event Player) + Event Player.randomizedSpreadHori[0]) * 100, All Living Players(
All Teams), Event Player, False);
End;
If(!Global.randomSpread);
Event Player.buckshotHitPos[5] = Ray Cast Hit Position(Eye Position(Event Player), Eye Position(Event Player) + World Vector Of(
Vector(Tangent From Degrees(0) * 100, 0, 0), Event Player, Rotation) + Direction From Angles(Horizontal Facing Angle Of(
Event Player), Vertical Facing Angle Of(Event Player) + Global.spreadHori * -1) * 100, All Living Players(All Teams),
Event Player, False);
Event Player.buckshotHitPlayer[5] = Ray Cast Hit Player(Eye Position(Event Player), Eye Position(Event Player) + World Vector Of(
Vector(Tangent From Degrees(0) * 100, 0, 0), Event Player, Rotation) + Direction From Angles(Horizontal Facing Angle Of(
Event Player), Vertical Facing Angle Of(Event Player) + Global.spreadHori * -1) * 100, All Living Players(All Teams),
Event Player, False);
Else;
Event Player.buckshotHitPos[5] = Ray Cast Hit Position(Eye Position(Event Player), Eye Position(Event Player) + World Vector Of(
Vector(Tangent From Degrees(0) * 100, 0, 0), Event Player, Rotation) + Direction From Angles(Horizontal Facing Angle Of(
Event Player), Vertical Facing Angle Of(Event Player) + Event Player.randomizedSpreadHori[1] * -1) * 100, All Living Players(
All Teams), Event Player, False);
Event Player.buckshotHitPlayer[5] = Ray Cast Hit Player(Eye Position(Event Player), Eye Position(Event Player) + World Vector Of(
Vector(Tangent From Degrees(0) * 100, 0, 0), Event Player, Rotation) + Direction From Angles(Horizontal Facing Angle Of(
Event Player), Vertical Facing Angle Of(Event Player) + Event Player.randomizedSpreadHori[1] * -1) * 100, All Living Players(
All Teams), Event Player, False);
End;
If(!Global.randomSpread);
Event Player.buckshotHitPos[6] = Ray Cast Hit Position(Eye Position(Event Player), Eye Position(Event Player) + World Vector Of(
Vector(Tangent From Degrees(Global.spreadHori) * 100, 0, 0), Event Player, Rotation) + Direction From Angles(
Horizontal Facing Angle Of(Event Player), Vertical Facing Angle Of(Event Player) + 0) * 100, All Living Players(All Teams),
Event Player, False);
Event Player.buckshotHitPlayer[6] = Ray Cast Hit Player(Eye Position(Event Player), Eye Position(Event Player) + World Vector Of(
Vector(Tangent From Degrees(Global.spreadHori) * 100, 0, 0), Event Player, Rotation) + Direction From Angles(
Horizontal Facing Angle Of(Event Player), Vertical Facing Angle Of(Event Player) + 0) * 100, All Living Players(All Teams),
Event Player, False);
Else;
Event Player.buckshotHitPos[6] = Ray Cast Hit Position(Eye Position(Event Player), Eye Position(Event Player) + World Vector Of(
Vector(Tangent From Degrees(Event Player.randomizedSpreadHori[2]) * 100, 0, 0), Event Player, Rotation)
+ Direction From Angles(Horizontal Facing Angle Of(Event Player), Vertical Facing Angle Of(Event Player) + 0) * 100,
All Living Players(All Teams), Event Player, False);
Event Player.buckshotHitPlayer[6] = Ray Cast Hit Player(Eye Position(Event Player), Eye Position(Event Player) + World Vector Of(
Vector(Tangent From Degrees(Event Player.randomizedSpreadHori[2]) * 100, 0, 0), Event Player, Rotation)
+ Direction From Angles(Horizontal Facing Angle Of(Event Player), Vertical Facing Angle Of(Event Player) + 0) * 100,
All Living Players(All Teams), Event Player, False);
End;
If(!Global.randomSpread);
Event Player.buckshotHitPos[7] = Ray Cast Hit Position(Eye Position(Event Player), Eye Position(Event Player) + World Vector Of(
Vector(Tangent From Degrees(Global.spreadHori * -1) * 100, 0, 0), Event Player, Rotation) + Direction From Angles(
Horizontal Facing Angle Of(Event Player), Vertical Facing Angle Of(Event Player) + 0) * 100, All Living Players(All Teams),
Event Player, False);
Event Player.buckshotHitPlayer[7] = Ray Cast Hit Player(Eye Position(Event Player), Eye Position(Event Player) + World Vector Of(
Vector(Tangent From Degrees(Global.spreadHori * -1) * 100, 0, 0), Event Player, Rotation) + Direction From Angles(
Horizontal Facing Angle Of(Event Player), Vertical Facing Angle Of(Event Player) + 0) * 100, All Living Players(All Teams),
Event Player, False);
Else;
Event Player.buckshotHitPos[7] = Ray Cast Hit Position(Eye Position(Event Player), Eye Position(Event Player) + World Vector Of(
Vector(Tangent From Degrees(Event Player.randomizedSpreadHori[3] * -1) * 100, 0, 0), Event Player, Rotation)
+ Direction From Angles(Horizontal Facing Angle Of(Event Player), Vertical Facing Angle Of(Event Player) + 0) * 100,
All Living Players(All Teams), Event Player, False);
Event Player.buckshotHitPlayer[7] = Ray Cast Hit Player(Eye Position(Event Player), Eye Position(Event Player) + World Vector Of(
Vector(Tangent From Degrees(Event Player.randomizedSpreadHori[3] * -1) * 100, 0, 0), Event Player, Rotation)
+ Direction From Angles(Horizontal Facing Angle Of(Event Player), Vertical Facing Angle Of(Event Player) + 0) * 100,
All Living Players(All Teams), Event Player, False);
End;
Event Player.buckshotCenter = Ray Cast Hit Position(Eye Position(Event Player), Eye Position(Event Player) + Facing Direction Of(
Event Player) * 100, Event Player.livingEnemies, Event Player, True);
Play Effect(All Players(All Teams), Good Explosion, Green, Event Player.buckshotCenter, 0.200);
Create Beam Effect(All Players(All Teams), Bad Beam, Eye Position(Event Player) + Facing Direction Of(Event Player)
+ Event Player.gunPos_0, Event Player.buckshotCenter, Green, None);
Event Player.centerBeam = Last Created Entity;
Event Player.pellets = 0;
While(Event Player.pellets < 8);
Damage(Event Player.buckshotHitPlayer[Event Player.pellets], Event Player, 10000);
Play Effect(All Players(All Teams), Good Explosion, Green, Event Player.buckshotHitPos[Event Player.pellets], 0.200);
Create Beam Effect(All Players(All Teams), Bad Beam, Eye Position(Event Player) + Facing Direction Of(Event Player)
+ Event Player.gunPos_0, Event Player.buckshotHitPos[Event Player.pellets], Green, None);
Event Player.buckshotBeam[Event Player.pellets] = Last Created Entity;
Event Player.pellets += 1;
End;
Wait(0.150, Ignore Condition);
Destroy Effect(Event Player.centerBeam);
Event Player.beams = 0;
While(Event Player.beams < 8);
Destroy Effect(Event Player.buckshotBeam[Event Player.beams]);
Event Player.beams += 1;
End;
}
}
rule("[Buff] :: Buckshot : Remove")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
(!Global.spawnWithBuckshot && Event Player.buckshotDur == 0) == True;
}
actions
{
Destroy HUD Text(Event Player.hudText[2]);
Destroy Effect(Event Player.buckshotBuffEffect);
Event Player.buckshotEnabled = False;
Call Subroutine(BuckshotCooldown);
}
}
disabled rule("---------------- extra life ----------------")
disabled rule("---------------- Extra Life ----------------")
{
event
{
Ongoing - Global;
}
}
rule("[Buff] :: Extra Life : Create Orb")
{
event
{
Ongoing - Global;
}
conditions
{
(Global.validBuffMap && !Global.spawnWithLife && Global.spawnLife && Global.lifeCD == 0 && (
Global.matchStarted || Global.buffsSpawnImmediately)) == True;
}
actions
{
Play Effect(All Players(All Teams), Good Pickup Effect, Sky Blue, Global.buffPos[3], 1);
Create Effect(All Players(All Teams), Orb, Sky Blue, Global.buffPos[3], 2, Visible To Position and Radius);
Global.buffEffect[3] = Last Created Entity;
Play Effect(All Players(All Teams), Good Pickup Effect, Sky Blue, Global.buffPos[3], 1);
Create In-World Text(All Players(All Teams), Ability Icon String(Hero(Mercy), Button(Ability 2)), Global.buffPos[3], 2,
Clip Against Surfaces, Visible To Position and String, White, Default Visibility);
Global.buffIcon[3] = Last Text ID;
Destroy In-World Text(Global.cdText[3]);
}
}
rule("[Buff] :: Extra Life : Collect")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
((Global.matchStarted && !Event Player.extraLife && Entity Exists(Global.buffEffect[3]) && Distance Between(Global.buffPos[3],
Event Player) < 2.500 && Has Spawned(Event Player) && Is Alive(Event Player)) || (Global.spawnWithLife && Is Alive(
Event Player))) == True;
}
actions
{
Event Player.extraLife = True;
Set Status(Event Player, Null, Unkillable, 10000);
If(!Global.spawnWithLife);
Destroy In-World Text(Global.cdText[3]);
Destroy In-World Text(Global.buffIcon[3]);
Destroy Effect(Global.buffEffect[3]);
Play Effect(All Players(All Teams), Good Pickup Effect, Sky Blue, Global.buffPos[3], 1);
Play Effect(All Players(All Teams), Buff Explosion Sound, Sky Blue, Global.buffPos[3], 200);
Small Message(Event Player, Custom String("Extra life"));
Big Message(Event Player, Custom String("Extra Life"));
Call Subroutine(LifeCooldown);
End;
Create HUD Text(Event Player, Null, Null, Custom String("{0} Extra Life {0}", Ability Icon String(Hero(Mercy), Button(Ability 2))),
Top, 1, White, White, White, Visible To and String, Default Visibility);
Event Player.hudText[3] = Last Text ID;
Create In-World Text(All Players(All Teams), Ability Icon String(Hero(Mercy), Button(Ability 2)), Event Player, 1,
Clip Against Surfaces, Visible To Position and String, White, Default Visibility);
Event Player.extraLifeIcon = Last Text ID;
}
}
rule("[Buff] :: Extra Life : Remove")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
(Event Player.extraLife && (Health(Event Player) == 1 || (Is Dead(Event Player) && !Global.spawnWithLife))) == True;
}
actions
{
Event Player.extraLife = False;
Clear Status(Event Player, Unkillable);
Small Message(Event Player, Custom String("Extra life used"));
Play Effect(Event Player, Debuff Impact Sound, White, Event Player, 200);
Destroy In-World Text(Event Player.extraLifeIcon);
Destroy HUD Text(Event Player.hudText[3]);
Wait(0.500, Ignore Condition);
Set Player Health(Event Player, Max Health(Event Player));
}
}
rule("[Debug] :: Position")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Event Player == Host Player;
}
actions
{
Create HUD Text(Event Player, Null, Null, Position Of(Event Player), Top, 10, White, White, White, Visible To and String,
Default Visibility);
}
}
rule("[Debug] :: Bots")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
(Event Player == Host Player && Is Button Held(Event Player, Interact) && !Is Button Held(Event Player, Crouch)) == True;
}
actions
{
Create Dummy Bot(Hero Of(Event Player), Opposite Team Of(Team Of(Event Player)), -1, Ray Cast Hit Position(Eye Position(
Event Player), Eye Position(Event Player) + Facing Direction Of(Event Player) * 100, Null, Event Player, True),
Facing Direction Of(Event Player) * -1);
}
}
rule("[Debug] :: Destroy Bots")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
(Event Player == Host Player && Is Button Held(Event Player, Crouch) && Is Button Held(Event Player, Interact)) == True;
}
actions
{
Destroy All Dummy Bots;
}
}