Return to post
settings
{
main
{
Description: "24 Hogs One Hole. Workshop Maps only; includes settings for dynamic hole size and position. By Puppetsquid. Based on 12 Pigs One Hole by Scrumrot and Block#12425. Code: K6KFM"
Description: "24 Hogs One Hole. By Puppetsquid. Based on 12 Pigs One Hole by Scrumrot and Block#12425. Code: K6KFM"
}
lobby
{
Allow Players Who Are In Queue: Yes
Match Voice Chat: Enabled
Max Spectators: 12
Max Spectators: 1
Return To Lobby: Never
}
modes
{
Deathmatch
{
enabled maps
{
Workshop Island
Workshop Island Night
}
}
General
{
Allow Hero Switching: Off
Game Mode Start: Immediately
Hero Limit: Off
Respawn As Random Hero: On
Respawn Time Scalar: 1%
Score To Win: 100
Self Initiated Respawn: Off
Skins: Off
Spawn Health Packs: Disabled
}
}
heroes
{
General
{
Roadhog
{
Chain Hook Cooldown Time: 25%
Healing Dealt: 10%
Jump Vertical Speed: 200%
Movement Gravity: 130%
Movement Speed: 140%
Primary Fire: Off
Secondary Fire: Off
Take a Breather Cooldown Time: 50%
Ultimate Generation - Combat Whole Hog: 0%
Ultimate Generation - Passive Whole Hog: 0%
Ultimate Generation Whole Hog: 50%
Whole Hog Knockback Scalar: 0%
}
enabled heroes
{
Roadhog
}
}
}
workshop
{
Auto Restart After POTG: On
}
extensions
{
Kinetic Explosion Effects
Buff Status Effects
Play More Effects
Spawn More Dummy Bots
}
}
variables
{
global:
0: init
1: tinyModeUnused
2: PigStrings
6: fakeHoleWidth
7: fakeHolePos
8: It
9: holeTargetLoc
10: speed
11: holeTargetWidth
12: customSpawnpoints
13: customNames
14: minHoleWidth
15: maxHoleWidth
16: holeInit
17: maxAI
25: QuickRestart
30: CloudSize
31: MaxKillStealChainTimer
34: CurrentUltSize
37: TopPlayerScore
38: TopPlayer
player:
18: SafeEffects
19: hasSpawned
20: hasPigged
21: hoggOffset
22: hoogLR
23: pigPos
24: pigTarget
25: hasdied
26: InitPlayer
29: ultReadyEffectId1
30: ultReadyEffectId2
31: HudIdAbility2
32: HookCount
33: KillStealChainTimer
34: TextIdHookCount
35: bonusAuraId1
39: overLooking
44: prepKillSteal
45: triggerKillStealChain
46: HUDPlayerKillBonusId
47: KeepSummerSafe
52: MeleeHudId
}
rule("Define Hole and Spawns")
{
event
{
Ongoing - Global;
}
actions
{
Global.maxAI = Workshop Setting Integer(Custom String("Game Settings"), Custom String("Max AI"), 12, 0, 12, 0);
Wait(0.250, Ignore Condition);
Global.customSpawnpoints = Empty Array;
For Global Variable(It, 0, 1, 0.010);
Create Effect(All Players(All Teams), Ring, Color(Black), Global.fakeHolePos, (0.500 + Global.fakeHoleWidth) * Evaluate Once(
Global.It), Visible To Position and Radius);
Wait(0.016, Ignore Condition);
End;
Create Effect(All Players(All Teams), Light Shaft, Color(Black), Global.fakeHolePos + Vector(0, -10, 0),
Global.fakeHoleWidth + 0.500, Visible To Position and Radius);
For Global Variable(It, -14, 14, 4);
Modify Global Variable(customSpawnpoints, Append To Array, Vector(Global.It, 0, 18));
Modify Global Variable(customSpawnpoints, Append To Array, Vector(Global.It, 0, -18));
Modify Global Variable(customSpawnpoints, Append To Array, Vector(18, 0, Global.It));
Modify Global Variable(customSpawnpoints, Append To Array, Vector(-18, 0, Global.It));
End;
If(Global.maxAI > 0);
For Global Variable(It, 0, 12 + Global.maxAI, 1);
For Global Variable(It, 0, 11 + Global.maxAI, 1);
Create Dummy Bot(Hero(Roadhog), All Teams, -1, Last Of(Filtered Array(Global.customSpawnpoints, Distance Between(
Current Array Element, Closest Player To(Current Array Element, All Teams)))), Vector(0, 0, 0));
Wait(0.100, Ignore Condition);
End;
For Global Variable(It, 0, 12, 1);
Destroy Dummy Bot(All Teams, Global.It);
End;
End;
Global.init = True;
}
}
rule("CustomSpawning")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Is Alive(Event Player) == True;
Has Spawned(Event Player) == True;
Count Of(Global.customSpawnpoints) > 20;
}
actions
{
Teleport(Event Player, Last Of(Filtered Array(Sorted Array(Global.customSpawnpoints, Distance Between(Current Array Element,
Closest Player To(Current Array Element, All Teams))), Distance Between(Current Array Element, Global.fakeHolePos)
> Global.fakeHoleWidth + 4)));
Wait Until(Is On Ground(Event Player), 99999);
While(Distance Between(Facing Direction Of(Event Player), Direction Towards(Eye Position(Event Player), Vector(0, 1, 0))) > 1);
Set Facing(Event Player, Direction Towards(Event Player, Vector(0, 1, 0)), To World);
Wait(0.100, Ignore Condition);
End;
Event Player.hasSpawned = True;
}
}
rule("Player init")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Event Player.InitPlayer != True;
Global.init == True;
}
actions
{
Event Player.HookCount = 1;
Event Player.InitPlayer = True;
If(Global.tinyModeUnused);
Start Scaling Player(Event Player, 0.500, True);
End;
}
}
rule("Outlines")
{
event
{
Ongoing - Each Player;
All;
All;
}
actions
{
Start Forcing Player Outlines(Filtered Array(All Players(All Teams), Is Dummy Bot(Current Array Element)), All Players(All Teams),
True, Color(Black), Default);
}
}
rule("Out of bounds")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Is Dummy Bot(Event Player) != True;
Is Using Ultimate(Event Player) != True;
Is On Ground(Event Player) == True;
(16 < Max(Absolute Value(X Component Of(Position Of(Event Player))), Absolute Value(Z Component Of(Position Of(Event Player)))))
== True;
}
actions
{
Wait(0.016, Ignore Condition);
Skip If(Event Player.hasdied, 1);
Set Status(Event Player, Null, Phased Out, 9999);
Set Ability 1 Enabled(Event Player, False);
Cancel Primary Action(Event Player);
Event Player.hasdied = True;
}
}
rule("In of bounds")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Is Dummy Bot(Event Player) != True;
(16 < Max(Absolute Value(X Component Of(Position Of(Event Player))), Absolute Value(Z Component Of(Position Of(Event Player)))))
== False;
Event Player.hasSpawned == True;
}
actions
{
Clear Status(Event Player, Phased Out);
Set Ability 1 Enabled(Event Player, True);
Event Player.hasPigged = True;
}
}
disabled rule("============== Custom Hole ==============")
{
event
{
Ongoing - Global;
}
}
rule("Setup Hole")
{
event
{
Ongoing - Global;
}
actions
{
Global.fakeHolePos = Vector(0, 0, 0);
Global.fakeHoleWidth = 0;
Global.holeTargetWidth = Workshop Setting Integer(Custom String("Game Settings"), Custom String("Default Hole Width"), 7, 3, 12,
0);
If(Global.tinyModeUnused);
Global.holeTargetWidth = 3.500;
End;
Wait(5, Ignore Condition);
Global.holeTargetLoc = Vector(0, 0.200, 0);
Global.minHoleWidth = Workshop Setting Integer(Custom String("Dynamic Settings"), Custom String("Min Hole Width"), 3, 2, 5, 0);
Global.maxHoleWidth = Workshop Setting Integer(Custom String("Dynamic Settings"), Custom String("Max Hole Width"), 10, 5, 12, 0);
Global.holeInit = True;
}
}
rule("Change Hole Pos / Size Target")
{
event
{
Ongoing - Global;
}
conditions
{
Is Game In Progress == True;
Global.init == True;
Workshop Setting Toggle(Custom String("Game Settings"), Custom String("Dynamic Hole"), False, 0) == True;
}
actions
{
Wait(Random Real(1, 10), Ignore Condition);
Global.holeTargetLoc = Vector(Random Real(-10, 10), 0, Random Real(-10, 10));
Global.speed = Random Integer(0, 6) * 0.500;
Global.holeTargetWidth = (Random Integer(Global.minHoleWidth, Global.maxHoleWidth) + Random Integer(Global.minHoleWidth,
Global.maxHoleWidth)) * 0.500;
Loop;
}
}
rule("Hole Pos Over Time")
{
event
{
Ongoing - Global;
}
conditions
{
disabled Global.fakeHolePos != Global.holeTargetLoc;
Global.holeInit == True;
(Global.fakeHoleWidth != Global.holeTargetWidth || Global.fakeHolePos != Global.holeTargetLoc) == True;
}
actions
{
Global.fakeHolePos = Global.fakeHolePos + Direction Towards(Global.fakeHolePos, Global.holeTargetLoc) * 0.010;
Global.fakeHolePos = Global.fakeHolePos + Direction Towards(Global.fakeHolePos, Global.holeTargetLoc) * 0.005;
Global.fakeHoleWidth = Global.fakeHoleWidth + (Global.holeTargetWidth - Global.fakeHoleWidth) * 0.010;
Wait(0.020, Ignore Condition);
Wait(0.030, Ignore Condition);
Loop If Condition Is True;
}
}
rule("Make Hole Unsolid")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Distance Between(Position Of(Event Player) * Vector(1, 0, 1), Global.fakeHolePos) < Global.fakeHoleWidth;
}
actions
{
Disable Movement Collision With Environment(Event Player, True);
}
}
rule("Make Floor Solid")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Distance Between(Position Of(Event Player) * Vector(1, 0, 1), Global.fakeHolePos) > Global.fakeHoleWidth;
Y Component Of(Position Of(Event Player)) > -0.500;
Distance Between(Position Of(Event Player) * Vector(1, 0, 1), Global.fakeHolePos) > Global.fakeHoleWidth;
}
actions
{
Enable Movement Collision With Environment(Event Player);
}
}
disabled rule("============== AI CODE ==============")
{
event
{
Ongoing - Global;
}
}
rule("AI Setup")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Is Dummy Bot(Event Player) == True;
}
actions
{
Event Player.pigTarget = Random Value In Array(Remove From Array(All Living Players(All Teams), Event Player));
}
}
rule("AI: Dir Input")
{
event
{
Ongoing - Each Player;
All;
Roadhog;
}
conditions
{
Is Dummy Bot(Event Player) == True;
}
actions
{
Event Player.pigPos = Vector(0, 0, 0);
Start Throttle In Direction(Event Player, Direction Towards(Event Player, Nearest Walkable Position(
Global.fakeHolePos + Direction From Angles(Horizontal Angle From Direction(Direction Towards(Global.fakeHolePos, Event Player))
+ Event Player.hoogLR, 0) * Max(Global.fakeHoleWidth + 2, Event Player.hoggOffset))), 1, To World, Replace existing throttle,
Direction and Magnitude);
}
}
rule("AI: Set Random Directions")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Is Dummy Bot(Event Player) == True;
}
actions
{
Event Player.hoggOffset = Random Real(3, Global.fakeHoleWidth * 0.500 + 15);
Wait(Random Integer(0.500, 2), Ignore Condition);
Event Player.hoogLR = Random Integer(-5, 5);
Wait(Random Integer(1, 2.500), Ignore Condition);
Loop;
}
}
rule("AI: Do Hook")
{
event
{
Ongoing - Each Player;
All;
Roadhog;
}
conditions
{
Is Dummy Bot(Event Player) == True;
Is Alive(Event Player) == True;
Ability Cooldown(Event Player, Button(Ability 1)) == 0;
Distance Between(Event Player, Event Player.pigTarget) < 20;
Distance Between(Event Player, Global.fakeHolePos) < Global.fakeHoleWidth + 3;
disabled Distance Between(Event Player, Event Player.pigTarget) < 20;
disabled Distance Between(Event Player, Global.fakeHolePos) < Global.fakeHoleWidth + 3;
}
actions
{
Wait(Random Real(0.500, 2), Ignore Condition);
Press Button(Event Player, Button(Ability 1));
Wait(Random Real(0.500, 2), Ignore Condition);
Loop If Condition Is True;
}
}
rule("AI: Hook Flick")
{
event
{
Player Dealt Damage;
All;
Roadhog;
}
conditions
{
Is Dummy Bot(Event Player) == True;
Event Ability == Button(Ability 1);
}
actions
{
Start Facing(Event Player, Direction Towards(Eye Position(Event Player), Global.fakeHolePos), 150, To World,
Direction and Turn Rate);
}
}
rule("AI: Target On Cooldown")
{
event
{
Ongoing - Each Player;
All;
Roadhog;
}
conditions
{
Is Dummy Bot(Event Player) == True;
Is On Ground(Event Player) == True;
Ability Cooldown(Event Player, Button(Ability 1)) == 0;
Is Using Ability 1(Event Player) != True;
Is Using Ultimate(Event Player) != True;
disabled Ability Cooldown(Event Player, Button(Ability 1)) == 0;
Has Status(Event Player, Phased Out) != True;
}
actions
{
Wait(Random Real(0.100, 2), Ignore Condition);
Event Player.pigTarget = Random Value In Array(Remove From Array(All Living Players(All Teams), Event Player));
Start Facing(Event Player, Direction Towards(Eye Position(Event Player), Eye Position(Event Player.pigTarget)), 120, To World,
Direction and Turn Rate);
}
}
rule("AI: Target On Death")
disabled rule("AI: Target On Death")
{
event
{
Ongoing - Each Player;
All;
Roadhog;
}
conditions
{
Is Dummy Bot(Event Player) == True;
Is Dead(Event Player.pigTarget) == True;
}
actions
{
Wait(Random Real(0.100, 2), Ignore Condition);
Event Player.pigTarget = Random Value In Array(Remove From Array(All Living Players(All Teams), Event Player));
Start Facing(Event Player, Direction Towards(Eye Position(Event Player), Eye Position(Event Player.pigTarget)), 120, To World,
Direction and Turn Rate);
}
}
rule("AI: Do Breather")
{
event
{
Player Took Damage;
All;
All;
}
conditions
{
Is Dummy Bot(Event Player) == True;
}
actions
{
Wait Until(!Has Status(Event Player, Stunned), 2);
Abort If(Distance Between(Event Player, Global.fakeHolePos) > Global.fakeHoleWidth);
Wait(Random Real(0, 0.750), Ignore Condition);
Wait(Random Real(0.100, 0.750), Ignore Condition);
Press Button(Event Player, Button(Ability 2));
}
}
rule("AI: Do Ult")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Is Dummy Bot(Event Player) == True;
Y Component Of(Position Of(Event Player)) < -5;
Ultimate Charge Percent(Event Player) == 100;
}
actions
{
Wait(Random Real(0, 3), Ignore Condition);
Press Button(Event Player, Button(Ultimate));
}
}
rule("AI: Do Jump")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Is Dummy Bot(Event Player) == True;
Horizontal Speed Of(Event Player) < 1;
}
actions
{
Press Button(Event Player, Button(Jump));
}
}
rule("AI: Followup")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Is Dummy Bot(Event Player) == True;
Is Using Ability 1(Event Player) != True;
}
actions
{
Wait(Random Real(0, 2), Ignore Condition);
If(Random Real(0, 5) == 5);
If(Random Real(0, 5) == 3);
Communicate(Event Player, Hello);
Else;
Press Button(Event Player, Button(Melee));
End;
}
}
rule("Setup Custom names")
{
event
{
Ongoing - Global;
}
actions
{
Global.customNames = Array(Custom String("Jasper"), Custom String("Clara"), Custom String("Lawrence"), Custom String("Clarence"),
Custom String("Claude"), Custom String("Grace"), Custom String("Alice"), Custom String("Cora"), Custom String("Amos"),
Custom String("Lillian"), Custom String("Emil"), Custom String("Pearl"), Custom String("Julius"), Custom String("Rose"),
Custom String("Edwin"), Custom String("Ada"), Custom String("Herbert"), Custom String("Nettie"), Custom String("Oscar"),
Custom String("Flora"), Custom String("Walter"), Custom String("Puppetsquid"), Custom String("Scumrot"), Custom String(
"Block"));
Modify Global Variable(customNames, Append To Array, Array(Custom String("K6KFM"), Custom String("38SY3")));
}
}
rule("Grant Name to Dummy")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Is Dummy Bot(Event Player) == True;
}
actions
{
Start Forcing Dummy Bot Name(Event Player, Random Value In Array(Global.customNames));
Modify Global Variable(customNames, Remove From Array By Value, Custom String("{0}", Event Player));
}
}
disabled rule("12 Hooks 1 Hole: When Pigs Fly! by Block#12425 & Scrumrot.")
{
event
{
Ongoing - Global;
}
}
disabled rule("============== Ultimate Rules ==============")
{
event
{
Ongoing - Global;
}
}
rule("Using Ultimate @ Block#12425")
{
event
{
Ongoing - Each Player;
All;
Roadhog;
}
conditions
{
Is Using Ultimate(Event Player) == True;
Event Player.InitPlayer == True;
}
actions
{
Set Knockback Dealt(Event Player, 0);
Event Player.HookCount += 1;
Set Damage Dealt(Event Player, 0);
Apply Impulse(Event Player, Up, 13, To World, Cancel Contrary Motion);
Start Accelerating(Event Player, Up, 70, 10, To Player, Direction Rate and Max Speed);
Start Facing(Event Player, Vector(0, -1, 0), 400, To Player, Direction and Turn Rate);
Wait(0.600, Ignore Condition);
Set Status(Event Player, Null, Frozen, 0.100);
Stop Accelerating(Event Player);
Stop Facing(Event Player);
Set Damage Dealt(Event Player, 100);
Set Knockback Dealt(Event Player, 100);
Wait(1, Ignore Condition);
Event Player.KillStealChainTimer = Global.MaxKillStealChainTimer + 0;
Event Player.prepKillSteal = True;
Event Player.triggerKillStealChain = True;
}
}
rule("Stop on Stun Ultimate @ Scrumrot")
{
event
{
Ongoing - Each Player;
All;
Roadhog;
}
conditions
{
Has Status(Event Player, Stunned) == True;
}
actions
{
Wait(0.100, Ignore Condition);
Stop Accelerating(Event Player);
Stop Facing(Event Player);
Set Damage Dealt(Event Player, 100);
}
}
rule("Set Ultimate Charge to 100% on Kill @ Block#12425")
{
event
{
Player Dealt Final Blow;
All;
Roadhog;
}
conditions
{
Event Player.InitPlayer == True;
}
actions
{
Set Ultimate Charge(Event Player, 100);
}
}
disabled rule("============== Player In Game Effects ==============")
{
event
{
Ongoing - Global;
}
}
rule("Show Ult Ready @ Scrumrot")
{
event
{
Ongoing - Each Player;
All;
Roadhog;
}
conditions
{
Ultimate Charge Percent(Event Player) == 100;
Event Player.InitPlayer == True;
}
actions
{
Create Effect(All Players(All Teams), Good Aura, Color(Orange), Event Player, Global.CurrentUltSize - 0.100,
Visible To Position and Radius);
Event Player.ultReadyEffectId1 = Last Created Entity;
Create Effect(All Players(All Teams), Good Aura, Color(Red), Event Player, Global.CurrentUltSize, Visible To Position and Radius);
Event Player.ultReadyEffectId2 = Last Created Entity;
}
}
rule("Remove Ult Ready @ Scrumrot")
{
event
{
Ongoing - Each Player;
All;
Roadhog;
}
conditions
{
Ultimate Charge Percent(Event Player) < 100;
Event Player.InitPlayer == True;
}
actions
{
Destroy Effect(Event Player.ultReadyEffectId1);
Event Player.ultReadyEffectId1 = Null;
Destroy Effect(Event Player.ultReadyEffectId2);
Event Player.ultReadyEffectId2 = Null;
Event Player.prepKillSteal = True;
}
}
disabled rule("============== Gas Powered Stick Rules ==============")
{
event
{
Ongoing - Global;
}
}
rule("Gas Powered Stick! @ Scrumrot")
{
event
{
Ongoing - Each Player;
All;
Roadhog;
}
conditions
{
Is Using Ability 2(Event Player) == True;
Event Player.InitPlayer == True;
}
actions
{
Apply Impulse(Event Player, Up, 8.800, To World, Cancel Contrary Motion);
Play Effect(All Players(All Teams), Explosion Sound, Color(White), Event Player, 50);
Play Effect(All Players(All Teams), Bad Explosion, Color(Red), Position Of(Event Player) + Vector(0, 0.500, -0.100),
Global.CloudSize);
Wait(0.050, Ignore Condition);
Play Effect(All Players(All Teams), Good Explosion, Color(Orange), Position Of(Event Player) + Vector(0, 0.500, -0.100),
Global.CloudSize);
Wait(0.050, Ignore Condition);
Play Effect(All Players(All Teams), Bad Explosion, Color(Yellow), Position Of(Event Player) + Vector(0, 0.500, -0.100),
Global.CloudSize);
}
}
disabled rule("============== Kill Steal Rules ==============")
{
event
{
Ongoing - Global;
}
}
rule("If Player Took Damage && !prepKillSteal => prepKillSteal = true @ Scrumrot")
{
event
{
Player Took Damage;
All;
Roadhog;
}
conditions
{
Event Player.InitPlayer == True;
Is Alive(Event Player) == True;
Event Player.prepKillSteal == False;
Is Using Ability 1(Attacker) == True;
Distance Between(Vector(X Component Of(Global.fakeHolePos), 0, Z Component Of(Global.fakeHolePos)), Vector(X Component Of(
Position Of(Event Player)), 0, Z Component Of(Position Of(Event Player)))) <= 20;
Is Using Ability 1(Attacker) == True;
}
actions
{
Event Player.prepKillSteal = True;
Heal(Event Player, Null, Event Damage);
}
}
rule("HookCount Timer @ Scrumrot")
{
event
{
Ongoing - Each Player;
All;
Roadhog;
}
conditions
{
Event Player.KillStealChainTimer > 0;
Event Player.InitPlayer == True;
}
actions
{
Wait(1, Ignore Condition);
Event Player.KillStealChainTimer = Max(Event Player.KillStealChainTimer - 1, 0);
Loop If Condition Is True;
}
}
rule("HookCount Icon @ Scrumrot")
{
event
{
Ongoing - Each Player;
All;
Roadhog;
}
conditions
{
Event Player.HookCount > 1;
Event Player.InitPlayer == True;
}
actions
{
Destroy In-World Text(Event Player.TextIdHookCount);
Create In-World Text(All Players(All Teams), Custom String("{0}x{1}", Icon String(Skull), Event Player.HookCount), Position Of(
Event Player) + Vector(0, 2, 0), 1.750, Clip Against Surfaces, Visible To Position and String, Color(Green),
Default Visibility);
Event Player.TextIdHookCount = Last Text ID;
Create Effect(All Players(All Teams), Bad Aura, Color(Green), Event Player, Global.CurrentUltSize, Visible To Position and Radius);
Create Effect(Remove From Array(All Players(All Teams), Event Player), Bad Aura, Color(Green), Event Player, Global.CurrentUltSize,
Visible To Position and Radius);
Event Player.bonusAuraId1 = Last Created Entity;
}
}
rule("On KillStealChainTimer <= 1 : Destroy HookCount Icon @ Scrumrot")
{
event
{
Ongoing - Each Player;
All;
Roadhog;
}
conditions
{
Event Player.KillStealChainTimer <= 1;
Event Player.InitPlayer == True;
}
actions
{
Wait(0.050, Abort When False);
Destroy In-World Text(Event Player.TextIdHookCount);
Event Player.TextIdHookCount = Null;
Destroy Effect(Event Player.bonusAuraId1);
Event Player.bonusAuraId1 = Null;
Event Player.HookCount = 1;
Event Player.triggerKillStealChain = False;
Event Player.prepKillSteal = False;
}
}
rule("If prepKillSteal == true && player is within TheWellPosition || using their ult: Reset KillStealChainTimer @ Scrumrot")
{
event
{
Ongoing - Each Player;
All;
Roadhog;
}
conditions
{
Event Player.prepKillSteal == True;
Is On Ground(Event Player) != True;
(Distance Between(Vector(X Component Of(Global.fakeHolePos), 0, Z Component Of(Global.fakeHolePos)), Vector(X Component Of(
Position Of(Event Player)), 0, Z Component Of(Position Of(Event Player)))) <= Global.fakeHoleWidth || Is Using Ultimate(
Event Player)) == True;
}
actions
{
Skip If(Event Player.triggerKillStealChain == True, 1);
Wait(0.016, Ignore Condition);
Event Player.triggerKillStealChain = True;
Event Player.KillStealChainTimer = Global.MaxKillStealChainTimer;
Wait(1, Ignore Condition);
Loop If Condition Is True;
}
}
rule("Add to Hook Count @ Scrumrot")
{
event
{
Player Took Damage;
All;
Roadhog;
}
conditions
{
Event Player.InitPlayer == True;
Is Alive(Event Player) == True;
Event Player.triggerKillStealChain == True;
Is Using Ability 1(Attacker) == True;
}
actions
{
Wait(0.016, Ignore Condition);
Event Player.HookCount += 1;
Heal(Event Player, Null, Event Damage);
}
}
disabled rule("============== Top Score ==============")
{
event
{
Ongoing - Global;
}
}
rule("Set Top Player @ Scrumrot")
{
event
{
Ongoing - Each Player;
All;
Roadhog;
}
conditions
{
Score Of(Event Player) > Global.TopPlayerScore;
Score Of(Event Player) > 1;
Event Player.InitPlayer == True;
}
actions
{
Wait(0.100, Ignore Condition);
Global.TopPlayerScore = Score Of(Event Player);
Global.TopPlayer = Event Player;
}
}
disabled rule("============== Melee ==============")
{
event
{
Player Dealt Damage;
All;
All;
}
}
rule("Make Melee push the Victim @ Block#12425 && Scrumrot")
{
event
{
Player Dealt Damage;
Player Dealt Knockback;
All;
All;
}
conditions
{
Is Using Ability 1(Event Player) == False;
disabled Is Using Ability 1(Event Player) == False;
Event Ability == Button(Melee);
}
actions
{
Skip If(!Is Crouching(Event Player), 1);
Apply Impulse(Victim, Up, 6, To World, Cancel Contrary Motion);
Apply Impulse(Victim, Direction From Angles(Horizontal Facing Angle Of(Event Player), -1), 19, To World, Cancel Contrary Motion);
Skip If(Victim.triggerKillStealChain == False, 1);
Victim.HookCount += 1;
Heal(Victim, Null, Event Damage);
Heal(Victim, Null, 30);
}
}
disabled rule("============== Player Hud ==============")
{
event
{
Ongoing - Global;
}
}
rule("HUD: Ability 2 @ Scrumrot")
{
event
{
Ongoing - Each Player;
All;
Roadhog;
}
conditions
{
Event Player.InitPlayer == True;
Event Player.HudIdAbility2 == False;
}
actions
{
Create HUD Text(Event Player, Custom String("{0} Gas Powered Stick! {1}", Icon String(Radioactive), Hero Icon String(Hero(
Roadhog))), Custom String("USE ~TAKE A BREATHER~ (ABILITY 2)", Icon String(Asterisk)), Custom String("AIR JUMP UP {0}",
Icon String(Arrow: Up)), Left, 0, Color(Orange), Color(Red), Color(Yellow), Visible To and String, Default Visibility);
Event Player.HudIdAbility2 = Last Text ID;
}
}
rule("HUD: Melee @ Scrumrot")
{
event
{
Ongoing - Each Player;
All;
Roadhog;
}
conditions
{
Event Player.InitPlayer == True;
Event Player.MeleeHudId == False;
}
actions
{
Create HUD Text(Event Player, Custom String("{0} Shove {1}", Icon String(Happy), Hero Icon String(Hero(Roadhog))), Custom String(
"USE MELEE TO", Icon String(Asterisk)), Custom String("{0} KNOCKBACK TARGET", Icon String(Arrow: Right)), Left, 1, Color(
Orange), Color(Red), Color(Yellow), Visible To and String, Default Visibility);
Event Player.MeleeHudId = Last Text ID;
}
}
rule("HUD: Kill Bonus @ Scrumrot")
{
event
{
Ongoing - Each Player;
All;
Roadhog;
}
conditions
{
Event Player.InitPlayer == True;
(Has Status(Event Player, Phased Out) && Event Player.overLooking) == False;
Event Player.HUDPlayerKillBonusId == False;
Event Player.KeepSummerSafe == False;
}
actions
{
Destroy HUD Text(Event Player.HUDPlayerKillBonusId);
Create HUD Text(Event Player, Custom String("{0} X {1}", Icon String(Skull), Event Player.HookCount), Null, Null, Top, 0, Color(
Green), Color(Green), Color(Green), Visible To and String, Default Visibility);
Event Player.HUDPlayerKillBonusId = Last Text ID;
}
}
rule("HUD: Remove Kill Bonus @ Scrumrot")
{
event
{
Ongoing - Each Player;
All;
Roadhog;
}
conditions
{
Event Player.HUDPlayerKillBonusId == True;
Event Player.KeepSummerSafe == True;
}
actions
{
Destroy HUD Text(Event Player.HUDPlayerKillBonusId);
Event Player.HUDPlayerKillBonusId = Null;
}
}
disabled rule("============== On Death Rules ==============")
{
event
{
Ongoing - Global;
}
}
rule("OnDeath: Reset HookCount @ Scrumrot")
{
event
{
Player Died;
All;
Roadhog;
}
actions
{
Skip If(Attacker == Event Player, 3);
Skip If(Event Player.HookCount <= 1, 2);
Set Player Score(Attacker, Score Of(Attacker) + Max(Event Player.HookCount - 1, 0));
Big Message(Attacker, Custom String("{0} Kill Steal Bonus {1}! {0} ", Icon String(Skull), Event Player.HookCount));
Wait(0.050, Ignore Condition);
Event Player.HookCount = 0;
Event Player.KillStealChainTimer = 0;
Destroy In-World Text(Event Player.TextIdHookCount);
Event Player.TextIdHookCount = Null;
Event Player.prepKillSteal = False;
Event Player.prepKillSteal = False;
Play Effect(All Players(All Teams), Bad Pickup Effect, Color(Orange), Event Player, 8);
Wait(0.100, Ignore Condition);
Play Effect(All Players(All Teams), Good Explosion, Color(White), Event Player, 4);
Wait(0.016, Ignore Condition);
Play Effect(All Players(All Teams), Debuff Impact Sound, Color(Orange), Event Player, 40);
}
}
rule("OnDeath: Reset Saftey")
{
event
{
Player Died;
All;
All;
}
actions
{
Event Player.hasdied = False;
Event Player.hasSpawned = False;
Respawn(Event Player);
}
}
rule("Rule 100")
{
event
{
Ongoing - Global;
}
conditions
{
Is Match Complete == True;
}
actions
{
Wait(22, Ignore Condition);
Wait(3.500, Ignore Condition);
disabled Global.holeTargetLoc = Vector(0, 0, -8);
disabled Global.fakeHolePos = Vector(0, 0, -8);
Wait(20.500, Ignore Condition);
Restart Match;
}
}
rule("resetsettings")
{
event
{
Ongoing - Global;
}
actions
{
Global.QuickRestart = Workshop Setting Toggle(Custom String("LOBBY SETTINGS"), Custom String("Auto Restart After POTG"), False, 0);
}
}
rule("Disable Inspector")
{
event
{
Ongoing - Global;
}
actions
{
Disable Inspector Recording;
}
}
rule("Melee Primary")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Is Button Held(Event Player, Button(Primary Fire)) == True;
Has Status(Event Player, Phased Out) != True;
}
actions
{
Press Button(Event Player, Button(Melee));
}
}
rule("Melee Secondary (charged)")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Is Button Held(Event Player, Button(Secondary Fire)) == True;
Has Status(Event Player, Phased Out) != True;
}
actions
{
Start Holding Button(Event Player, Button(Crouch));
Wait(0.500, Ignore Condition);
Wait Until(!Is Button Held(Event Player, Button(Secondary Fire)), 1.500);
Press Button(Event Player, Button(Melee));
Wait(0.250, Ignore Condition);
Stop Holding Button(Event Player, Button(Crouch));
}
}
disabled rule("TWENTY FOUR PIGS")
{
event
{
Ongoing - Global;
}
conditions
{
Number Of Players(All Teams) == 24;
Is True For All(All Players(All Teams), Current Array Element.hasPigged) == True;
}
actions
{
Big Message(All Players(All Teams), Random Value In Array(Global.PigStrings));
Wait(15, Ignore Condition);
}
}
rule("strings")
{
event
{
Ongoing - Global;
}
actions
{
Global.PigStrings = Array(Custom String("24 Hogs 1 Hole!"), Custom String("24 Hooks 1 Hole!"), Custom String("TWENTY FOUR HOGS"),
Custom String("{0} 24!", Hero(Roadhog)), Custom String("TWENTY FOUR HOOKS!"));
Modify Global Variable(PigStrings, Append To Array, Global.PigStrings);
Modify Global Variable(PigStrings, Append To Array, Global.PigStrings);
Modify Global Variable(PigStrings, Append To Array, Array(Custom String("WHOLE HOG!"), Custom String("FULL PEN!"), Custom String(
"{0} {0} {0} {0} {0} {0} {0} {0} {0} {0} {0} {0} {0} {0} {0} {0} {0} {0} {0} {0} {0} {0} {0} {0}", Hero Icon String(Hero(
Roadhog))), Custom String("{0} x24!", Hero Icon String(Hero(Roadhog)))));
Modify Global Variable(PigStrings, Append To Array, Array(Custom String("THE GANGS ALL HERE"), Custom String(
"Here pig pig pig..."), Custom String("MUCHAS PIGGOS"), Custom String("SOMETHING MAGIC JUST HAPPENED."), Custom String(
"OVERHOG!")));
}
}
rule("Show Saftey Pen")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Is Dummy Bot(Event Player) != True;
}
actions
{
Create Effect(Has Status(Event Player, Phased Out) ? All Players(All Teams) : Empty Array,
Baptiste Immortality Field Protected Effect, Color(White), Event Player, 1, Visible To Position and Radius);
Event Player.SafeEffects = Last Created Entity;
}
}
rule("Remove Saftey")
{
event
{
Player Left Match;
All;
All;
}
actions
{
Destroy Effect(Event Player.SafeEffects);
}
}
disabled rule("Rule 65")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Host Player == Event Player;
}
actions
{
Create HUD Text(Event Player, Server Load, Null, Null, Right, 0, Color(White), Color(White), Color(White), Visible To and String,
Default Visibility);
}
}
rule("Get in the pit")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Is Match Complete == True;
Is Dummy Bot(Event Player) == True;
Is On Ground(Event Player) == True;
}
actions
{
Wait(Random Real(0, 2), Ignore Condition);
Start Throttle In Direction(Event Player, Direction Towards(Event Player, Global.fakeHolePos), 1, To World,
Replace existing throttle, Direction and Magnitude);
Wait(Random Real(0, 2), Ignore Condition);
Press Button(Event Player, Button(Jump));
}
}
disabled rule("Save from void")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Distance Between(Event Player, Vector(0, 0, 0)) > 100;
}
actions
{
Kill(Event Player, Null);
}
}
disabled rule("Blind effects (ty Josbird!)")
{
event
{
Ongoing - Global;
}
actions
{
Create Effect(Is Alive(Local Player) && Y Component Of(Eye Position(Local Player)) < 0 ? Local Player : Null, Orb, Color(Black),
Update Every Frame(True * Eye Position(Local Player) + -1.050 * Cross Product(Facing Direction Of(Local Player),
Direction From Angles(Horizontal Angle From Direction(Facing Direction Of(Local Player)), Vertical Angle From Direction(
Facing Direction Of(Local Player)) - 90)) + Empty Array * Direction From Angles(Horizontal Angle From Direction(
Facing Direction Of(Local Player)), Vertical Angle From Direction(Facing Direction Of(Local Player)) - 90)
+ 0.900 * Facing Direction Of(Local Player)), 0, Visible To Position and Radius);
Create Effect(Is Alive(Local Player) && Y Component Of(Eye Position(Local Player)) < 0 ? Local Player : Null, Orb, Color(Black),
Update Every Frame(True * Eye Position(Local Player) + -1.050 * Cross Product(Facing Direction Of(Local Player),
Direction From Angles(Horizontal Angle From Direction(Facing Direction Of(Local Player)), Vertical Angle From Direction(
Facing Direction Of(Local Player)) - 90)) + -0.700 * Direction From Angles(Horizontal Angle From Direction(Facing Direction Of(
Local Player)), Vertical Angle From Direction(Facing Direction Of(Local Player)) - 90) + 0.900 * Facing Direction Of(
Local Player)), 0, Visible To Position and Radius);
Create Effect(Is Alive(Local Player) && Y Component Of(Eye Position(Local Player)) < 0 ? Local Player : Null, Orb, Color(Black),
Update Every Frame(True * Eye Position(Local Player) + -1.050 * Cross Product(Facing Direction Of(Local Player),
Direction From Angles(Horizontal Angle From Direction(Facing Direction Of(Local Player)), Vertical Angle From Direction(
Facing Direction Of(Local Player)) - 90)) + 0.700 * Direction From Angles(Horizontal Angle From Direction(Facing Direction Of(
Local Player)), Vertical Angle From Direction(Facing Direction Of(Local Player)) - 90) + 0.900 * Facing Direction Of(
Local Player)), 0, Visible To Position and Radius);
Create Effect(Is Alive(Local Player) && Y Component Of(Eye Position(Local Player)) < 0 ? Local Player : Null, Orb, Color(Black),
Update Every Frame(True * Eye Position(Local Player) + -0.350 * Cross Product(Facing Direction Of(Local Player),
Direction From Angles(Horizontal Angle From Direction(Facing Direction Of(Local Player)), Vertical Angle From Direction(
Facing Direction Of(Local Player)) - 90)) + Empty Array * Direction From Angles(Horizontal Angle From Direction(
Facing Direction Of(Local Player)), Vertical Angle From Direction(Facing Direction Of(Local Player)) - 90)
+ 0.900 * Facing Direction Of(Local Player)), 0, Visible To Position and Radius);
Create Effect(Is Alive(Local Player) && Y Component Of(Eye Position(Local Player)) < 0 ? Local Player : Null, Orb, Color(Black),
Update Every Frame(True * Eye Position(Local Player) + -0.350 * Cross Product(Facing Direction Of(Local Player),
Direction From Angles(Horizontal Angle From Direction(Facing Direction Of(Local Player)), Vertical Angle From Direction(
Facing Direction Of(Local Player)) - 90)) + -0.700 * Direction From Angles(Horizontal Angle From Direction(Facing Direction Of(
Local Player)), Vertical Angle From Direction(Facing Direction Of(Local Player)) - 90) + 0.900 * Facing Direction Of(
Local Player)), 0, Visible To Position and Radius);
Create Effect(Is Alive(Local Player) && Y Component Of(Eye Position(Local Player)) < 0 ? Local Player : Null, Orb, Color(Black),
Update Every Frame(True * Eye Position(Local Player) + -0.350 * Cross Product(Facing Direction Of(Local Player),
Direction From Angles(Horizontal Angle From Direction(Facing Direction Of(Local Player)), Vertical Angle From Direction(
Facing Direction Of(Local Player)) - 90)) + 0.700 * Direction From Angles(Horizontal Angle From Direction(Facing Direction Of(
Local Player)), Vertical Angle From Direction(Facing Direction Of(Local Player)) - 90) + 0.900 * Facing Direction Of(
Local Player)), 0, Visible To Position and Radius);
Create Effect(Is Alive(Local Player) && Y Component Of(Eye Position(Local Player)) < 0 ? Local Player : Null, Orb, Color(Black),
Update Every Frame(True * Eye Position(Local Player) + 0.350 * Cross Product(Facing Direction Of(Local Player),
Direction From Angles(Horizontal Angle From Direction(Facing Direction Of(Local Player)), Vertical Angle From Direction(
Facing Direction Of(Local Player)) - 90)) + Empty Array * Direction From Angles(Horizontal Angle From Direction(
Facing Direction Of(Local Player)), Vertical Angle From Direction(Facing Direction Of(Local Player)) - 90)
+ 0.900 * Facing Direction Of(Local Player)), 0, Visible To Position and Radius);
Create Effect(Is Alive(Local Player) && Y Component Of(Eye Position(Local Player)) < 0 ? Local Player : Null, Orb, Color(Black),
Update Every Frame(True * Eye Position(Local Player) + 0.350 * Cross Product(Facing Direction Of(Local Player),
Direction From Angles(Horizontal Angle From Direction(Facing Direction Of(Local Player)), Vertical Angle From Direction(
Facing Direction Of(Local Player)) - 90)) + -0.700 * Direction From Angles(Horizontal Angle From Direction(Facing Direction Of(
Local Player)), Vertical Angle From Direction(Facing Direction Of(Local Player)) - 90) + 0.900 * Facing Direction Of(
Local Player)), 0, Visible To Position and Radius);
Create Effect(Is Alive(Local Player) && Y Component Of(Eye Position(Local Player)) < 0 ? Local Player : Null, Orb, Color(Black),
Update Every Frame(True * Eye Position(Local Player) + 0.350 * Cross Product(Facing Direction Of(Local Player),
Direction From Angles(Horizontal Angle From Direction(Facing Direction Of(Local Player)), Vertical Angle From Direction(
Facing Direction Of(Local Player)) - 90)) + 0.700 * Direction From Angles(Horizontal Angle From Direction(Facing Direction Of(
Local Player)), Vertical Angle From Direction(Facing Direction Of(Local Player)) - 90) + 0.900 * Facing Direction Of(
Local Player)), 0, Visible To Position and Radius);
Create Effect(Is Alive(Local Player) && Y Component Of(Eye Position(Local Player)) < 0 ? Local Player : Null, Orb, Color(Black),
Update Every Frame(True * Eye Position(Local Player) + 1.050 * Cross Product(Facing Direction Of(Local Player),
Direction From Angles(Horizontal Angle From Direction(Facing Direction Of(Local Player)), Vertical Angle From Direction(
Facing Direction Of(Local Player)) - 90)) + Empty Array * Direction From Angles(Horizontal Angle From Direction(
Facing Direction Of(Local Player)), Vertical Angle From Direction(Facing Direction Of(Local Player)) - 90)
+ 0.900 * Facing Direction Of(Local Player)), 0, Visible To Position and Radius);
Create Effect(Is Alive(Local Player) && Y Component Of(Eye Position(Local Player)) < 0 ? Local Player : Null, Orb, Color(Black),
Update Every Frame(True * Eye Position(Local Player) + 1.050 * Cross Product(Facing Direction Of(Local Player),
Direction From Angles(Horizontal Angle From Direction(Facing Direction Of(Local Player)), Vertical Angle From Direction(
Facing Direction Of(Local Player)) - 90)) + -0.700 * Direction From Angles(Horizontal Angle From Direction(Facing Direction Of(
Local Player)), Vertical Angle From Direction(Facing Direction Of(Local Player)) - 90) + 0.900 * Facing Direction Of(
Local Player)), 0, Visible To Position and Radius);
Create Effect(Is Alive(Local Player) && Y Component Of(Eye Position(Local Player)) < 0 ? Local Player : Null, Orb, Color(Black),
Update Every Frame(True * Eye Position(Local Player) + 1.050 * Cross Product(Facing Direction Of(Local Player),
Direction From Angles(Horizontal Angle From Direction(Facing Direction Of(Local Player)), Vertical Angle From Direction(
Facing Direction Of(Local Player)) - 90)) + 0.700 * Direction From Angles(Horizontal Angle From Direction(Facing Direction Of(
Local Player)), Vertical Angle From Direction(Facing Direction Of(Local Player)) - 90) + 0.900 * Facing Direction Of(
Local Player)), 0, Visible To Position and Radius);
}
}
disabled rule("Blind effects (ty Josbird!)")
{
event
{
Ongoing - Global;
}
actions
{
Create Effect(Is Alive(Local Player) && 0.500 + Y Component Of(Eye Position(Local Player)) < 0 ? Local Player : Null, Orb, Color(
Black), Update Every Frame(True * Eye Position(Local Player) + 1.050 * Cross Product(Facing Direction Of(Local Player),
Direction From Angles(Horizontal Angle From Direction(Facing Direction Of(Local Player)), Vertical Angle From Direction(
Facing Direction Of(Local Player)) - 90)) + 0.700 * Direction From Angles(Horizontal Angle From Direction(Facing Direction Of(
Local Player)), Vertical Angle From Direction(Facing Direction Of(Local Player)) - 90) + 0.900 * Facing Direction Of(
Local Player)), 0, Visible To Position and Radius);
Create Effect(Is Alive(Local Player) && 1 + Y Component Of(Eye Position(Local Player)) < 0 ? Local Player : Null, Orb, Color(
Black), Update Every Frame(True * Eye Position(Local Player) + -1.050 * Cross Product(Facing Direction Of(Local Player),
Direction From Angles(Horizontal Angle From Direction(Facing Direction Of(Local Player)), Vertical Angle From Direction(
Facing Direction Of(Local Player)) - 90)) + Empty Array * Direction From Angles(Horizontal Angle From Direction(
Facing Direction Of(Local Player)), Vertical Angle From Direction(Facing Direction Of(Local Player)) - 90)
+ 0.900 * Facing Direction Of(Local Player)), 0, Visible To Position and Radius);
Create Effect(Is Alive(Local Player) && 1.500 + Y Component Of(Eye Position(Local Player)) < 0 ? Local Player : Null, Orb, Color(
Black), Update Every Frame(True * Eye Position(Local Player) + -1.050 * Cross Product(Facing Direction Of(Local Player),
Direction From Angles(Horizontal Angle From Direction(Facing Direction Of(Local Player)), Vertical Angle From Direction(
Facing Direction Of(Local Player)) - 90)) + -0.700 * Direction From Angles(Horizontal Angle From Direction(Facing Direction Of(
Local Player)), Vertical Angle From Direction(Facing Direction Of(Local Player)) - 90) + 0.900 * Facing Direction Of(
Local Player)), 0, Visible To Position and Radius);
Create Effect(Is Alive(Local Player) && 2 + Y Component Of(Eye Position(Local Player)) < 0 ? Local Player : Null, Orb, Color(
Black), Update Every Frame(True * Eye Position(Local Player) + -1.050 * Cross Product(Facing Direction Of(Local Player),
Direction From Angles(Horizontal Angle From Direction(Facing Direction Of(Local Player)), Vertical Angle From Direction(
Facing Direction Of(Local Player)) - 90)) + 0.700 * Direction From Angles(Horizontal Angle From Direction(Facing Direction Of(
Local Player)), Vertical Angle From Direction(Facing Direction Of(Local Player)) - 90) + 0.900 * Facing Direction Of(
Local Player)), 0, Visible To Position and Radius);
Create Effect(Is Alive(Local Player) && 2.500 + Y Component Of(Eye Position(Local Player)) < 0 ? Local Player : Null, Orb, Color(
Black), Update Every Frame(True * Eye Position(Local Player) + -0.350 * Cross Product(Facing Direction Of(Local Player),
Direction From Angles(Horizontal Angle From Direction(Facing Direction Of(Local Player)), Vertical Angle From Direction(
Facing Direction Of(Local Player)) - 90)) + Empty Array * Direction From Angles(Horizontal Angle From Direction(
Facing Direction Of(Local Player)), Vertical Angle From Direction(Facing Direction Of(Local Player)) - 90)
+ 0.900 * Facing Direction Of(Local Player)), 0, Visible To Position and Radius);
Create Effect(Is Alive(Local Player) && 3 + Y Component Of(Eye Position(Local Player)) < 0 ? Local Player : Null, Orb, Color(
Black), Update Every Frame(True * Eye Position(Local Player) + -0.350 * Cross Product(Facing Direction Of(Local Player),
Direction From Angles(Horizontal Angle From Direction(Facing Direction Of(Local Player)), Vertical Angle From Direction(
Facing Direction Of(Local Player)) - 90)) + -0.700 * Direction From Angles(Horizontal Angle From Direction(Facing Direction Of(
Local Player)), Vertical Angle From Direction(Facing Direction Of(Local Player)) - 90) + 0.900 * Facing Direction Of(
Local Player)), 0, Visible To Position and Radius);
Create Effect(Is Alive(Local Player) && 3.500 + Y Component Of(Eye Position(Local Player)) < 0 ? Local Player : Null, Orb, Color(
Black), Update Every Frame(True * Eye Position(Local Player) + -0.350 * Cross Product(Facing Direction Of(Local Player),
Direction From Angles(Horizontal Angle From Direction(Facing Direction Of(Local Player)), Vertical Angle From Direction(
Facing Direction Of(Local Player)) - 90)) + 0.700 * Direction From Angles(Horizontal Angle From Direction(Facing Direction Of(
Local Player)), Vertical Angle From Direction(Facing Direction Of(Local Player)) - 90) + 0.900 * Facing Direction Of(
Local Player)), 0, Visible To Position and Radius);
Create Effect(Is Alive(Local Player) && 4 + Y Component Of(Eye Position(Local Player)) < 0 ? Local Player : Null, Orb, Color(
Black), Update Every Frame(True * Eye Position(Local Player) + 0.350 * Cross Product(Facing Direction Of(Local Player),
Direction From Angles(Horizontal Angle From Direction(Facing Direction Of(Local Player)), Vertical Angle From Direction(
Facing Direction Of(Local Player)) - 90)) + Empty Array * Direction From Angles(Horizontal Angle From Direction(
Facing Direction Of(Local Player)), Vertical Angle From Direction(Facing Direction Of(Local Player)) - 90)
+ 0.900 * Facing Direction Of(Local Player)), 0, Visible To Position and Radius);
Create Effect(Is Alive(Local Player) && 4.500 + Y Component Of(Eye Position(Local Player)) < 0 ? Local Player : Null, Orb, Color(
Black), Update Every Frame(True * Eye Position(Local Player) + 0.350 * Cross Product(Facing Direction Of(Local Player),
Direction From Angles(Horizontal Angle From Direction(Facing Direction Of(Local Player)), Vertical Angle From Direction(
Facing Direction Of(Local Player)) - 90)) + -0.700 * Direction From Angles(Horizontal Angle From Direction(Facing Direction Of(
Local Player)), Vertical Angle From Direction(Facing Direction Of(Local Player)) - 90) + 0.900 * Facing Direction Of(
Local Player)), 0, Visible To Position and Radius);
Create Effect(Is Alive(Local Player) && 5 + Y Component Of(Eye Position(Local Player)) < 0 ? Local Player : Null, Orb, Color(
Black), Update Every Frame(True * Eye Position(Local Player) + 0.350 * Cross Product(Facing Direction Of(Local Player),
Direction From Angles(Horizontal Angle From Direction(Facing Direction Of(Local Player)), Vertical Angle From Direction(
Facing Direction Of(Local Player)) - 90)) + 0.700 * Direction From Angles(Horizontal Angle From Direction(Facing Direction Of(
Local Player)), Vertical Angle From Direction(Facing Direction Of(Local Player)) - 90) + 0.900 * Facing Direction Of(
Local Player)), 0, Visible To Position and Radius);
Create Effect(Is Alive(Local Player) && 5.500 + Y Component Of(Eye Position(Local Player)) < 0 ? Local Player : Null, Orb, Color(
Black), Update Every Frame(True * Eye Position(Local Player) + 1.050 * Cross Product(Facing Direction Of(Local Player),
Direction From Angles(Horizontal Angle From Direction(Facing Direction Of(Local Player)), Vertical Angle From Direction(
Facing Direction Of(Local Player)) - 90)) + Empty Array * Direction From Angles(Horizontal Angle From Direction(
Facing Direction Of(Local Player)), Vertical Angle From Direction(Facing Direction Of(Local Player)) - 90)
+ 0.900 * Facing Direction Of(Local Player)), 0, Visible To Position and Radius);
Create Effect(Is Alive(Local Player) && 6 + Y Component Of(Eye Position(Local Player)) < 0 ? Local Player : Null, Orb, Color(
Black), Update Every Frame(True * Eye Position(Local Player) + 1.050 * Cross Product(Facing Direction Of(Local Player),
Direction From Angles(Horizontal Angle From Direction(Facing Direction Of(Local Player)), Vertical Angle From Direction(
Facing Direction Of(Local Player)) - 90)) + -0.700 * Direction From Angles(Horizontal Angle From Direction(Facing Direction Of(
Local Player)), Vertical Angle From Direction(Facing Direction Of(Local Player)) - 90) + 0.900 * Facing Direction Of(
Local Player)), 0, Visible To Position and Radius);
}
}
rule("Blind effects (ty Josbird!)")
{
event
{
Ongoing - Global;
}
actions
{
Wait(0.111, Ignore Condition);
Create Effect(Is Alive(Local Player) && Y Component Of(Eye Position(Local Player)) < 0 ? Local Player : Null, Sphere, Color(Black),
Vector(0, -10, 0), 20, Visible To Position and Radius);
Wait(0.111, Ignore Condition);
Create Effect(Is Alive(Local Player) && Y Component Of(Eye Position(Local Player)) < 0 ? Local Player : Null, Sphere, Color(Black),
Vector(0, -10, 0), 19.500, Visible To Position and Radius);
Wait(0.111, Ignore Condition);
Create Effect(Is Alive(Local Player) && Y Component Of(Eye Position(Local Player)) < 0 ? Local Player : Null, Sphere, Color(Black),
Vector(0, -10, 0), 19, Visible To Position and Radius);
Wait(0.111, Ignore Condition);
Create Effect(Is Alive(Local Player) && Y Component Of(Eye Position(Local Player)) < 0 ? Local Player : Null, Sphere, Color(Black),
Vector(0, -10, 0), 18.500, Visible To Position and Radius);
Wait(0.111, Ignore Condition);
Create Effect(Is Alive(Local Player) && Y Component Of(Eye Position(Local Player)) < 0 ? Local Player : Null, Sphere, Color(Black),
Vector(0, -10, 0), 18, Visible To Position and Radius);
Wait(0.111, Ignore Condition);
Create Effect(Is Alive(Local Player) && Y Component Of(Eye Position(Local Player)) < 0 ? Local Player : Null, Sphere, Color(Black),
Vector(0, -10, 0), 17.500, Visible To Position and Radius);
Wait(0.111, Ignore Condition);
Create Effect(Is Alive(Local Player) && Y Component Of(Eye Position(Local Player)) < 0 ? Local Player : Null, Sphere, Color(Black),
Vector(0, -10, 0), 17, Visible To Position and Radius);
Wait(0.111, Ignore Condition);
Create Effect(Is Alive(Local Player) && Y Component Of(Eye Position(Local Player)) < 0 ? Local Player : Null, Sphere, Color(Black),
Vector(0, -10, 0), 16.500, Visible To Position and Radius);
Wait(0.111, Ignore Condition);
Create Effect(Is Alive(Local Player) && Y Component Of(Eye Position(Local Player)) < 0 ? Local Player : Null, Sphere, Color(Black),
Vector(0, -10, 0), 16, Visible To Position and Radius);
Wait(0.111, Ignore Condition);
Create Effect(Is Alive(Local Player) && Y Component Of(Eye Position(Local Player)) < 0 ? Local Player : Null, Sphere, Color(Black),
Vector(0, -10, 0), 20, Visible To Position and Radius);
Wait(0.111, Ignore Condition);
Create Effect(Is Alive(Local Player) && Y Component Of(Eye Position(Local Player)) < 0 ? Local Player : Null, Sphere, Color(Black),
Vector(0, -10, 0), 20, Visible To Position and Radius);
Wait(0.111, Ignore Condition);
Create Effect(Is Alive(Local Player) && Y Component Of(Eye Position(Local Player)) < 0 ? Local Player : Null, Sphere, Color(Black),
Vector(0, -10, 0), 20, Visible To Position and Radius);
Wait(0.111, Ignore Condition);
Create Effect(Is Alive(Local Player) && Y Component Of(Eye Position(Local Player)) < 0 ? Local Player : Null, Sphere, Color(Black),
Vector(0, -10, 0), 20, Visible To Position and Radius);
Wait(0.111, Ignore Condition);
Create Effect(Is Alive(Local Player) && Y Component Of(Eye Position(Local Player)) < 0 ? Local Player : Null, Sphere, Color(Black),
Vector(0, -10, 0), 20, Visible To Position and Radius);
Wait(0.111, Ignore Condition);
Create Effect(Is Alive(Local Player) && Y Component Of(Eye Position(Local Player)) < 0 ? Local Player : Null, Sphere, Color(Black),
Vector(0, -10, 0), 20, Visible To Position and Radius);
Wait(0.111, Ignore Condition);
Create Effect(Is Alive(Local Player) && Y Component Of(Eye Position(Local Player)) < 0 ? Local Player : Null, Sphere, Color(Black),
Vector(0, -10, 0), 20, Visible To Position and Radius);
Wait(0.111, Ignore Condition);
Create Effect(Is Alive(Local Player) && Y Component Of(Eye Position(Local Player)) < 0 ? Local Player : Null, Sphere, Color(Black),
Vector(0, -10, 0), 20, Visible To Position and Radius);
Wait(0.111, Ignore Condition);
Create Effect(Is Alive(Local Player) && Y Component Of(Eye Position(Local Player)) < 0 ? Local Player : Null, Sphere, Color(Black),
Vector(0, -10, 0), 20, Visible To Position and Radius);
Wait(0.111, Ignore Condition);
Create Effect(Is Alive(Local Player) && Y Component Of(Eye Position(Local Player)) < 0 ? Local Player : Null, Sphere, Color(Black),
Vector(0, -10, 0), 20, Visible To Position and Radius);
Wait(0.111, Ignore Condition);
Create Effect(Is Alive(Local Player) && Y Component Of(Eye Position(Local Player)) < 0 ? Local Player : Null, Sphere, Color(Black),
Vector(0, -10, 0), 20, Visible To Position and Radius);
Wait(0.111, Ignore Condition);
Create Effect(Is Alive(Local Player) && Y Component Of(Eye Position(Local Player)) < 0 ? Local Player : Null, Sphere, Color(Black),
Vector(0, -10, 0), 20, Visible To Position and Radius);
Wait(0.111, Ignore Condition);
Create Effect(Is Alive(Local Player) && Y Component Of(Eye Position(Local Player)) < 0 ? Local Player : Null, Sphere, Color(Black),
Vector(0, -10, 0), 20, Visible To Position and Radius);
Wait(0.111, Ignore Condition);
Create Effect(Is Alive(Local Player) && Y Component Of(Eye Position(Local Player)) < 0 ? Local Player : Null, Sphere, Color(Black),
Vector(0, -10, 0), 20, Visible To Position and Radius);
Wait(0.111, Ignore Condition);
Create Effect(Is Alive(Local Player) && Y Component Of(Eye Position(Local Player)) < 0 ? Local Player : Null, Sphere, Color(Black),
Vector(0, -10, 0), 20, Visible To Position and Radius);
Wait(0.111, Ignore Condition);
Create Effect(Is Alive(Local Player) && Y Component Of(Eye Position(Local Player)) < 0 ? Local Player : Null, Sphere, Color(Black),
Vector(0, -10, 0), 20, Visible To Position and Radius);
}
}
rule("Not Using Ultimate (Stuck fix)")
{
event
{
Ongoing - Each Player;
All;
Roadhog;
}
conditions
{
Is Using Ultimate(Event Player) != True;
Event Player.InitPlayer == True;
Is Alive(Event Player) == True;
}
actions
{
Stop Accelerating(Event Player);
Stop Facing(Event Player);
Set Damage Dealt(Event Player, 100);
Set Knockback Dealt(Event Player, 100);
}
}