Return to post
settings
{
main
{
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: 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
47: canPickupLife
48: 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: 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
71: i_1
72: pellets
73: beams
}
subroutines
{
0: WallbangCooldown
1: RicochetCooldown
2: BuckshotCooldown
3: LifeCooldown
}
rule("[Sub] :: Wallbang Cooldown")
{
event
{
Subroutine;
WallbangCooldown;
}
actions
{
If(!Global.spawnWithWallbang && Global.spawnWallbang);
Global.wallbangCD = Global.WALLBANG_CD;
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);
Global.ricochetCD = Global.RICOCHET_CD;
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);
Global.buckshotCD = Global.BUCKSHOT_CD;
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;
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 Inspector Recording;
Disable Built-In Game Mode Completion;
Disable Built-In Game Mode Announcer;
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 General"), Custom String(
"Buffs Spawn Immediately When Match Starts (Off)"), False);
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 (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 (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 (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 (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(
Global.MATCH_TIME_LIMIT = Workshop Setting Integer(Custom String("Miscellaneous"), Custom String("Match Time (Minutes) (20)"), 20,
1, 60) * 60;
Global.GRAPPLE_PULL_SPEED = Workshop Setting Real(Custom String("Miscellaneous"), Custom String("Grapple Pull Speed (3.5)"), 3.500,
0.500, 10);
Global.SECONDARY_PROJECTILE_SPEED = Workshop Setting Integer(Custom String("Miscellaneous"), 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, 0.500,
10);
Global.DODGE_FORCE = Workshop Setting Real(Custom String("Misc"), Custom String("Dodge Force (14)"), 14, 1, 100);
Global.DODGE_FORCE = Workshop Setting Real(Custom String("Miscellaneous"), Custom String("Dodge Force (14)"), 14, 1, 100);
}
}
rule("[Main] :: Player Join")
{
event
{
Player Joined Match;
All;
All;
}
actions
{
Preload Hero(Event Player, Hero(McCree));
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(WallbangCooldown);
Call Subroutine(RicochetCooldown);
Call Subroutine(BuckshotCooldown);
Call Subroutine(LifeCooldown);
End;
If(Global.buffsEnabled);
If(Global.buffsEnabled && Global.validBuffMap);
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 by {0}", Global.wallbangUser)), Left, 1, Yellow, White,
White, Visible To and String, Default Visibility);
Global.wallbangCD != 0 ? Custom String("{0}", Round To Integer(Global.wallbangCD, Up)) : (
Global.canPickupWallbang ? 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 by {0}", Global.ricochetUser)), Left, 2, Purple, White,
White, Visible To and String, Default Visibility);
Global.ricochetCD != 0 ? Custom String("{0}", Round To Integer(Global.ricochetCD, Up)) : (
Global.canPickupRicochet ? 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 by {0}", Global.buckshotUser)), Left, 3, Green, White,
White, Visible To and String, Default Visibility);
Global.buckshotCD != 0 ? Custom String("{0}", Round To Integer(Global.buckshotCD, Up)) : (
Global.canPickupBuckshot ? 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,
Round To Integer(Event Player.bhopSpeed - Global.DEFAULT_START_SPEED, Up)), Left, 15, 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));
Destroy HUD Text(Event Player.killsHud);
If(Event Player.lifeKills > 5);
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));
Small Message(Event Player, Custom String("{0} player kill spree!", 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);
Create HUD Text(Event Player, Null, Custom String(" \n{0} Kill Spree", Event Player.lifeKills), 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);
Create HUD Text(Event Player, Null, Custom String(" \n{0} Kill Spree", Event Player.lifeKills), 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);
Create HUD Text(Event Player, Null, Custom String(" \n{0} Kill Spree", Event Player.lifeKills), 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);
Create HUD Text(Event Player, Null, Custom String(" \n{0} Kill Spree", Event Player.lifeKills), 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);
Create HUD Text(Event Player, Null, Custom String(" \n{0} Kill Spree", Event Player.lifeKills), 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);
Create HUD Text(Event Player, Null, Custom String(" \n{0} Kill Spree", Event Player.lifeKills), 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);
Create HUD Text(Event Player, Null, Custom String(" \n{0} Kill Spree", Event Player.lifeKills), 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] :: Stop chasing if too slow")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
(!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 if player is on ground")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
(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.bhopSpeed = Global.DEFAULT_START_SPEED;
Set Move Speed(Event Player, Event Player.bhopSpeed);
}
}
disabled rule("---------------- Dodge ----------------")
{
event
{
Ongoing - Global;
}
}
rule("[Dodge] :: Action")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
(Event Player.canDodge && Is Button Held(Event Player, Ability 1)) == True;
}
actions
{
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);
Wait(0.750, Ignore Condition);
Loop If(Is Button Held(Event Player, Secondary Fire));
}
}
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;
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;
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;
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);
Loop If(Is Button Held(Event Player, Ability 2) && Distance Between(Event Player.grappleEyePos, Event Player.grappleHit) == 40);
}
}
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] :: 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]);
Skip(Array(83, 0, 6, 12, 18, 24, 30, 36, 42, 48, 54, 60, 66, 72, 78)[Index Of Array Value(Array(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), Current Map == Map(Blizzard World) || Current Map == Map(
Blizzard World Winter), Current Map == Map(Château Guillard) || Current Map == Map(Château Guillard Halloween),
Current Map == Map(Dorado), Current Map == Map(Ecopoint: Antarctica) || Current Map == Map(Ecopoint: Antarctica Winter),
Current Map == Map(Eichenwalde) || Current Map == Map(Eichenwalde Halloween), Current Map == Map(Hollywood)
|| Current Map == Map(Hollywood Halloween), Current Map == Map(King's Row) || Current Map == Map(King's Row Winter),
Current Map == Map(Lijiang Control Center) || Current Map == Map(Lijiang Control Center Lunar New Year), Current Map == Map(
Necropolis), Current Map == Map(Paris), Current Map == Map(Havana), Current Map == Map(Castillo), Current Map == Map(
Black Forest) || Current Map == Map(Black Forest Winter)), Global.buffsEnabled) + 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.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(206.190, 1, 77.960);
Skip(65);
Global.validBuffMap = True;
Global.buffPos[0] = Vector(115.660, 8.730, -7.080);
Global.buffPos[1] = Vector(64.440, 15.010, 25.150);
Global.buffPos[1] = Vector(85.300, 13.750, 29.840);
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(-19.500, 13, 0);
Global.buffPos[2] = Vector(1.660, 12.630, 25);
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(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);
Global.buffPos[3] = Vector(-48.850, 9.120, -37.620);
Skip(35);
Global.validBuffMap = True;
Global.buffPos[0] = Vector(-26.800, 268, 308);
Global.buffPos[1] = Vector(0, 271, 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(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.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[0] = Vector(9.500, 7, -79.230);
Global.buffPos[1] = Vector(37.640, 11, -94.230);
Global.buffPos[2] = Vector(27.920, 13, -61.960);
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 ----------------")
{
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
{
Destroy In-World Text(Global.cdText[0]);
Global.canPickupWallbang = True;
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;
Global.canPickupWallbang = True;
Destroy In-World Text(Global.cdText[0]);
}
}
rule("[Buff] :: Wallbang : Collect")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
((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;
((Global.matchStarted && Global.canPickupWallbang && 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, 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]);
}
}
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
{
Destroy In-World Text(Global.cdText[1]);
Global.canPickupRicochet = True;
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 && 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;
((Global.matchStarted && Global.canPickupRicochet && 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, 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;
}
}
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
{
Destroy In-World Text(Global.cdText[2]);
Global.canPickupBuckshot = True;
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 && 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;
((Global.matchStarted && Global.canPickupBuckshot && 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, 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;
Event Player.i_1 = 0;
While(Event Player.i_1 < 4);
Event Player.randomizedSpreadHori[Event Player.i_1] = Random Real(Global.spreadHori / 5, Global.spreadHori + 1.500);
Event Player.randomizedSpreadDiag[Event Player.i_1] = Random Real(Global.spreadDiag / 5, Global.spreadDiag + 1.500);
Event Player.i_1 += 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(
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.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);
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.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.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.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.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)) * 100, All Living Players(All Teams),
Event Player, False);
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)) * 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,
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[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(
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);
Event Player.buckshotHitPlayer[2] = Ray Cast Hit Player(Eye Position(Event Player), Eye Position(Event Player) + World Vector Of(
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) * 100,
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[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);
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);
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)) * 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)) * 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)
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[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(
+ Event Player.randomizedSpreadDiag[0]) * 100, All Living Players(All Teams), Event Player, False);
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.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);
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.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)) * 100,
All Living Players(All Teams), Event Player, False);
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)) * 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);
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);
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);
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);
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);
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,
+ Direction From Angles(Horizontal Facing Angle Of(Event Player), Vertical Facing Angle Of(Event Player)) * 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,
+ Direction From Angles(Horizontal Facing Angle Of(Event Player), Vertical Facing Angle Of(Event Player)) * 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;
}
}
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
{
Global.canPickupLife = True;
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;
((Global.matchStarted && !Event Player.extraLife && Global.canPickupLife && 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
{
Global.canPickupLife = False;
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;
}
}