Create
Return to post

Comparing difference between and

View raw
  • settings
  • {
  • main
  • {
  • Description: "Ability Shuffle Mode v0.81 by Rikan ([email protected])"
  • Description: "Ability Shuffle Mode v0.82 by Rikan ([email protected])"
  • }
  • lobby
  • {
  • Max Spectators: 12
  • Max Team 1 Players: 5
  • Max Team 2 Players: 5
  • }
  • modes
  • {
  • Team Deathmatch
  • {
  • Game Length In Minutes: 5
  • Score To Win: 20
  • enabled maps
  • {
  • Workshop Chamber
  • }
  • }
  • General
  • {
  • Game Mode Start: Immediately
  • Hero Limit: Off
  • }
  • }
  • heroes
  • {
  • General
  • {
  • Ultimate Generation: 150%
  • Ultimate Generation - Combat: 120%
  • Ultimate Generation - Passive: 150%
  • Tracer
  • {
  • Blink: Off
  • }
  • }
  • }
  • extensions
  • {
  • Beam Effects
  • Beam Sounds
  • Buff Status Effects
  • Debuff Status Effects
  • Buff and Debuff Sounds
  • Energy Explosion Effects
  • Kinetic Explosion Effects
  • Explosion Sounds
  • Spawn More Dummy Bots
  • }
  • }
  • variables
  • {
  • global:
  • 0: ab1
  • 1: ab2
  • 2: ult
  • 3: ab1hero
  • 4: ab2hero
  • 5: ulthero
  • 6: botskill
  • 7: GRAVITY
  • 8: V0
  • 9: elastic
  • 10: workrandom
  • player:
  • 0: ab1cool
  • 1: ab2cool
  • 2: dvaulticon
  • 3: cantuse
  • 4: sombraeffect
  • 5: sominvisible
  • 8: somteleonline
  • 9: dvaultsound
  • 10: dvaulteffect
  • 11: tracercool
  • 12: DVabooster
  • 13: tra1
  • 14: tra2
  • 15: tra3
  • 16: tra4
  • 17: tra5
  • 18: tra6
  • 19: tra7
  • 20: tra8
  • 21: tra9
  • 22: tra10
  • 23: tra11
  • 24: tra12
  • 25: dvaultlocation
  • 26: kingballsound
  • 27: kingballeffect
  • 28: kingballshield
  • 29: hogvictim
  • 30: hogvictimlocation
  • 31: hogchain
  • 32: hoghealeffect
  • 33: hoghealsound
  • 34: hoghealeffect2
  • 35: reapershadow
  • 36: davbostereft1
  • 37: dvabostereft2
  • 38: reapershadoweffect
  • 39: genjigum
  • 40: genjiraycast
  • 41: doomvictim
  • 42: reapereffect
  • 43: reapershadoweffect2
  • 44: reapershadowlocation
  • 45: meiiceheal
  • 46: reaperulteffect
  • 48: reaperult
  • 49: somposition
  • 50: somVelocity
  • 51: somnormal
  • 52: somD
  • 53: meieffect
  • 54: meiposition
  • 55: meiVelocity
  • 56: meinormal
  • 57: meiD
  • 58: meiult
  • 59: meiultvictim
  • 62: dummybot
  • }
  • rule("made by Rikan ([email protected])")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • }
  • rule("Rule 91")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • condition
  • {
  • Is Assembling Heroes == True;
  • }
  • action
  • {
  • Set Match Time(1);
  • }
  • }
  • rule("Rule 92")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • condition
  • {
  • Is Game In Progress == True;
  • }
  • action
  • {
  • Set Match Time(150);
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • Global.workrandom = Workshop Setting Toggle(Custom String("Ability Random Setting"), Custom String("Random Setting"), True, 0);
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.workrandom == False;
  • }
  • actions
  • {
  • Global.botskill = Workshop Setting Combo(Custom String("Dummy bot Ability"), Custom String("Ability throughs dummy bots"), 0,
  • Array(Custom String("Ability 2"), Custom String("Ultimate")), 0);
  • If(Global.botskill == 0);
  • Global.ab2 = 100 + Workshop Setting Combo(Custom String("Dummy bot Ability"), Custom String("Ability 2 (Only selected ones work)"),
  • 0, Array(Custom String("Orisa - Protective Barrier"), Custom String("Winston - Barrier Projector"), Custom String(
  • "Soldier 76 - Biotic Field"), Custom String("Ashe - Dynamite"), Custom String("Ana - Biotic Grenade")), 2);
  • Else If(Global.botskill == 1);
  • Global.ult = 100 + Workshop Setting Combo(Custom String("Dummy bot Ability"), Custom String("Ultimate (Only selected ones work)"),
  • 0, Array(Custom String("Zarya - Graviton Surge"), Custom String("Wreacking Ball - Minefield"), Custom String(
  • "Orisa - Supercharger"), Custom String("Ashe - B.O.B"), Custom String("Tracer - Pulse Bomb")), 3);
  • End;
  • Global.ab1 = Workshop Setting Combo(Custom String("General Ability"), Custom String("Ability 1"), 0, Array(Custom String(
  • "Roadhog - Chain Hook"), Custom String("Sombra - Stealth"), Custom String("McCree - Combat Roll"), Custom String(
  • "Tracer - Blink"), Custom String("D.Va - Boosters"), Custom String("Winston - Jump Pack"), Custom String(
  • "Genji - Swift Strike"), Custom String("Doomfist - Rising Uppercut"), Custom String("Reaper - Wraith Form"), Custom String(
  • "Mei - Cryo-Freeze"), Custom String("Moira - Fade")), 0);
  • End;
  • If(Global.botskill != 0);
  • Global.ab2 = Workshop Setting Combo(Custom String("General Ability"), Custom String("Ability 2 (disable when used dummy bot)"), 0,
  • Array(Custom String("Sombra - Translocator"), Custom String("McCree - Flashbang"), Custom String("Tracer - Recall"),
  • Custom String("Wrecking Ball - Adaptive Shield"), Custom String("Roadhog - Take a Breather"), Custom String(
  • "Reaper - Shadow Step")), 1);
  • End;
  • If(Global.botskill != 1);
  • Global.ult = Workshop Setting Combo(Custom String("General Ability"), Custom String("Ultimate (disable when used dummy bot)"), 0,
  • Array(Custom String("Sombra - EMP"), Custom String("D.Va - Self-Destruct"), Custom String("Reinhardt - Earthshatter"),
  • Custom String("Reaper - Death Blossom"), Custom String("Mei - Blizzard")), 2);
  • End;
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == False;
  • }
  • actions
  • {
  • Create HUD Text(Event Player, Null, Null, Custom String(
  • " \n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n \n \n \n \n \n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n \n \n \n \n \n "), Top, 1, Color(White),
  • Color(White), Color(Green), Visible To and String, Default Visibility);
  • If(Global.ab1 == 3);
  • Create HUD Text(Event Player, Custom String(" {0}{1}: {2} ", Hero Icon String(Global.ab1hero), Ability Icon String(Global.ab1hero,
  • Button(Ability 1)), Event Player.tracercool), Custom String(
  • " "), Null, Top, 2, Color(White), Color(White), Color(
  • White), Visible To and String, Default Visibility);
  • Else;
  • Create HUD Text(Event Player, Custom String(" {0}{1}: {2} ", Hero Icon String(Global.ab1hero), Ability Icon String(Global.ab1hero,
  • Button(Ability 1)), Round To Integer(Event Player.ab1cool, Up)), Custom String(
  • " "), Null, Top, 2, Color(White), Color(White), Color(
  • White), Visible To and String, Default Visibility);
  • End;
  • Create HUD Text(Event Player, Custom String(" {0}{1}: {2} ", Hero Icon String(Global.ab2hero), Ability Icon String(Global.ab2hero,
  • Button(Ability 2)), Round To Integer(Event Player.ab2cool, Up)), Custom String(
  • " "), Null, Top, 3, Color(White), Color(White), Color(
  • White), Visible To and String, Default Visibility);
  • Create HUD Text(Event Player, Custom String(" {0}{1} ", Hero Icon String(Global.ulthero), Ability Icon String(Global.ulthero,
  • Button(Ultimate))), Custom String(" "), Null, Top, 4,
  • Color(White), Color(White), Color(White), Visible To and String, Default Visibility);
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.workrandom == True;
  • }
  • actions
  • {
  • Global.botskill = Random Integer(0, 1);
  • Global.ab1 = Random Integer(0, 10);
  • If(Global.botskill == 0);
  • Global.ab2 = Random Integer(100, 104);
  • Else;
  • Global.ab2 = Random Integer(0, 5);
  • End;
  • If(Global.botskill == 1);
  • Global.ult = Random Integer(100, 104);
  • Else;
  • Global.ult = Random Integer(0, 4);
  • End;
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == False;
  • }
  • actions
  • {
  • Disallow Button(Event Player, Button(Ability 1));
  • Disallow Button(Event Player, Button(Ability 2));
  • Disallow Button(Event Player, Button(Ultimate));
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.ab1cool > 0;
  • }
  • actions
  • {
  • Chase Player Variable At Rate(Event Player, ab1cool, 0, 1, Destination and Rate);
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.ab2cool > 0;
  • }
  • actions
  • {
  • Chase Player Variable At Rate(Event Player, ab2cool, 0, 1, Destination and Rate);
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == False;
  • (Global.ab2 >= 100 || Global.ult >= 100) == True;
  • Has Spawned(Event Player) == True;
  • }
  • actions
  • {
  • If(Global.botskill == 0);
  • Create Dummy Bot(Global.ab2hero, Team Of(Event Player), 5 + Slot Of(Event Player), Vector(999, 999, 999), Vector(0, 0, 0));
  • Else If(Global.botskill == 1);
  • Create Dummy Bot(Global.ulthero, Team Of(Event Player), 5 + Slot Of(Event Player), Vector(999, 999, 999), Vector(0, 0, 0));
  • End;
  • Event Player.dummybot = Players In Slot(5 + Slot Of(Event Player), Team Of(Event Player));
  • Set Status(Event Player.dummybot, Null, Phased Out, 9999);
  • Set Status(Event Player.dummybot, Null, Unkillable, 9999);
  • Set Gravity(Event Player.dummybot, 0);
  • Set Invisible(Event Player.dummybot, All);
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Players In Slot(Slot Of(Event Player) - 5, Team Of(Event Player)) == 0;
  • }
  • actions
  • {
  • Destroy Dummy Bot(Team Of(Event Player), Slot Of(Event Player));
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.ab1 == 0;
  • }
  • actions
  • {
  • Global.ab1hero = Hero(Roadhog);
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.ab1 == 1;
  • }
  • actions
  • {
  • Global.ab1hero = Hero(Sombra);
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.ab1 == 2;
  • }
  • actions
  • {
  • Global.ab1hero = Hero(McCree);
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.ab1 == 3;
  • }
  • actions
  • {
  • Global.ab1hero = Hero(Tracer);
  • Event Player.tracercool = 3;
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.ab1 == 4;
  • }
  • actions
  • {
  • Global.ab1hero = Hero(D.Va);
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.ab1 == 5;
  • }
  • actions
  • {
  • Global.ab1hero = Hero(Winston);
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.ab1 == 6;
  • }
  • actions
  • {
  • Global.ab1hero = Hero(Genji);
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.ab1 == 7;
  • }
  • actions
  • {
  • Global.ab1hero = Hero(Doomfist);
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.ab1 == 8;
  • }
  • actions
  • {
  • Global.ab1hero = Hero(Reaper);
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.ab1 == 9;
  • }
  • actions
  • {
  • Global.ab1hero = Hero(Mei);
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.ab1 == 10;
  • }
  • actions
  • {
  • Global.ab1hero = Hero(Moira);
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.ab2 == 0;
  • }
  • actions
  • {
  • Global.ab2hero = Hero(Sombra);
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.ab2 == 1;
  • }
  • actions
  • {
  • Global.ab2hero = Hero(McCree);
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.ab2 == 2;
  • }
  • actions
  • {
  • Global.ab2hero = Hero(Tracer);
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.ab2 == 3;
  • }
  • actions
  • {
  • Global.ab2hero = Hero(Wrecking Ball);
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.ab2 == 4;
  • }
  • actions
  • {
  • Global.ab2hero = Hero(Roadhog);
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.ab2 == 5;
  • }
  • actions
  • {
  • Global.ab2hero = Hero(Reaper);
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.ab2 == 100;
  • }
  • actions
  • {
  • Global.ab2hero = Hero(Orisa);
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.ab2 == 101;
  • }
  • actions
  • {
  • Global.ab2hero = Hero(Winston);
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.ab2 == 102;
  • }
  • actions
  • {
  • Global.ab2hero = Hero(Soldier: 76);
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.ab2 == 103;
  • }
  • actions
  • {
  • Global.ab2hero = Hero(Ashe);
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.ab2 == 104;
  • }
  • actions
  • {
  • Global.ab2hero = Hero(Ana);
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.ult == 0;
  • }
  • actions
  • {
  • Global.ulthero = Hero(Sombra);
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.ult == 1;
  • }
  • actions
  • {
  • Global.ulthero = Hero(D.Va);
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.ult == 2;
  • }
  • actions
  • {
  • Global.ulthero = Hero(Reinhardt);
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.ult == 3;
  • }
  • actions
  • {
  • Global.ulthero = Hero(Reaper);
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.ult == 4;
  • }
  • actions
  • {
  • Global.ulthero = Hero(Mei);
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.ult == 100;
  • }
  • actions
  • {
  • Global.ulthero = Hero(Zarya);
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.ult == 101;
  • }
  • actions
  • {
  • Global.ulthero = Hero(Wrecking Ball);
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.ult == 102;
  • }
  • actions
  • {
  • Global.ulthero = Hero(Orisa);
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.ult == 103;
  • }
  • actions
  • {
  • Global.ulthero = Hero(Ashe);
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.ult == 104;
  • }
  • actions
  • {
  • Global.ulthero = Hero(Tracer);
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.ab1 == 0;
  • Event Player.ab1cool == 0;
  • Is Button Held(Event Player, Button(Ability 1)) == True;
  • Is Alive(Event Player) == True;
  • Has Status(Event Player, Hacked) == False;
  • Has Status(Event Player, Knocked Down) == False;
  • Has Status(Event Player, Asleep) == False;
  • Has Status(Event Player, Frozen) == False;
  • Has Status(Event Player, Stunned) == False;
  • Has Status(Event Player, Rooted) == False;
  • Is Dummy Bot(Event Player) == False;
  • Event Player.cantuse == 0;
  • }
  • actions
  • {
  • Event Player.ab1cool = 6;
  • Event Player.hogvictim = Ray Cast Hit Player(Eye Position(Event Player), Eye Position(Event Player) + Facing Direction Of(
  • Event Player) * 20, All Players(Opposite Team Of(Team Of(Event Player))), Event Player, True);
  • If(Event Player.hogvictim != Null);
  • Set Move Speed(Event Player, 20);
  • Event Player.hogvictimlocation = Position Of(Event Player.hogvictim);
  • Set Status(Event Player.hogvictim, Event Player, Stunned, 1);
  • Create Beam Effect(All Players(All Teams), Brigitte Flail Chain Beam, Event Player, Event Player.hogvictim, Color(Black),
  • Visible To Position and Radius);
  • Event Player.hogchain = Last Created Entity;
  • Start Forcing Player Position(Event Player.hogvictim, Event Player.hogvictimlocation, True);
  • Chase Player Variable Over Time(Event Player, hogvictimlocation, Position Of(Event Player), 0.500, Destination and Duration);
  • Wait(0.500, Ignore Condition);
  • Destroy Effect(Event Player.hogchain);
  • Stop Forcing Player Position(Event Player.hogvictim);
  • Set Move Speed(Event Player, 100);
  • Else;
  • Play Effect(Event Player, Debuff Impact Sound, Color(White), Event Player, 100);
  • Create Beam Effect(All Players(All Teams), Brigitte Flail Chain Beam, Event Player, Ray Cast Hit Position(Eye Position(
  • Event Player), Eye Position(Event Player) + Facing Direction Of(Event Player) * 20, All Players(All Teams), Event Player,
  • True), Color(Black), None);
  • Event Player.hogchain = Last Created Entity;
  • Set Move Speed(Event Player, 20);
  • Wait(0.500, Ignore Condition);
  • Destroy Effect(Event Player.hogchain);
  • disabled Event Player.hoghealeffect = Ray Cast Hit Position(Eye Position(Event Player), Eye Position(Event Player) + Facing Direction Of(
  • Event Player) * 20, All Players(All Teams), Event Player, True);
  • disabled Create Effect(All Players(All Teams), Sphere, Color(White), Event Player.hoghealeffect, 0.200, Visible To Position and Radius);
  • Set Move Speed(Event Player, 100);
  • End;
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.ab1 == 1;
  • Event Player.ab1cool == 0;
  • Is Button Held(Event Player, Button(Ability 1)) == True;
  • Is Alive(Event Player) == True;
  • Has Status(Event Player, Hacked) == False;
  • Has Status(Event Player, Knocked Down) == False;
  • Has Status(Event Player, Asleep) == False;
  • Has Status(Event Player, Frozen) == False;
  • Has Status(Event Player, Stunned) == False;
  • Event Player.cantuse == 0;
  • Event Player.sominvisible == 0;
  • }
  • actions
  • {
  • Play Effect(All Players(All Teams), Buff Impact Sound, Color(White), Position Of(Event Player), 100);
  • Play Effect(All Players(All Teams), Good Explosion, Color(Purple), Position Of(Event Player), 1);
  • Create Effect(Event Player, Sphere, Color(Purple), Event Player, 1.500, Visible To Position and Radius);
  • Event Player.sombraeffect = Last Created Entity;
  • Set Invisible(Event Player, Enemies);
  • Set Move Speed(Event Player, 150);
  • Set Primary Fire Enabled(Event Player, False);
  • Set Secondary Fire Enabled(Event Player, False);
  • Set Melee Enabled(Event Player, False);
  • Event Player.cantuse = 1;
  • Wait(1, Ignore Condition);
  • Event Player.sominvisible = 1;
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.ab1 == 1;
  • Is Button Held(Event Player, Button(Ability 1)) == True;
  • Event Player.sominvisible == 1;
  • }
  • actions
  • {
  • Play Effect(All Players(All Teams), Debuff Impact Sound, Color(White), Position Of(Event Player), 100);
  • Play Effect(All Players(All Teams), Bad Explosion, Color(Purple), Position Of(Event Player), 1);
  • Destroy Effect(Event Player.sombraeffect);
  • Set Invisible(Event Player, None);
  • Set Move Speed(Event Player, 100);
  • Event Player.ab1cool = 6;
  • Wait(0.500, Ignore Condition);
  • Event Player.cantuse = 0;
  • Set Primary Fire Enabled(Event Player, True);
  • Set Secondary Fire Enabled(Event Player, True);
  • Set Melee Enabled(Event Player, True);
  • Event Player.sominvisible = 0;
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Player Took Damage;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.ab1 == 1;
  • Event Player.sominvisible == 1;
  • }
  • actions
  • {
  • Play Effect(All Players(All Teams), Debuff Impact Sound, Color(White), Position Of(Event Player), 100);
  • Play Effect(All Players(All Teams), Bad Explosion, Color(Purple), Position Of(Event Player), 1);
  • Destroy Effect(Event Player.sombraeffect);
  • Set Invisible(Event Player, None);
  • Set Move Speed(Event Player, 100);
  • Event Player.ab1cool = 6;
  • Wait(0.500, Ignore Condition);
  • Event Player.cantuse = 0;
  • Set Primary Fire Enabled(Event Player, True);
  • Set Secondary Fire Enabled(Event Player, True);
  • Set Melee Enabled(Event Player, True);
  • Event Player.sominvisible = 0;
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Player Died;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.ab1 == 1;
  • Event Player.sominvisible == 1;
  • }
  • actions
  • {
  • Play Effect(All Players(All Teams), Debuff Impact Sound, Color(White), Position Of(Event Player), 100);
  • Play Effect(All Players(All Teams), Bad Explosion, Color(Purple), Position Of(Event Player), 1);
  • Destroy Effect(Event Player.sombraeffect);
  • Set Invisible(Event Player, None);
  • Set Move Speed(Event Player, 100);
  • Event Player.ab1cool = 6;
  • Wait(0.500, Ignore Condition);
  • Event Player.cantuse = 0;
  • Set Primary Fire Enabled(Event Player, True);
  • Set Secondary Fire Enabled(Event Player, True);
  • Set Melee Enabled(Event Player, True);
  • Event Player.sominvisible = 0;
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.ab1 == 2;
  • Event Player.ab1cool == 0;
  • Is Button Held(Event Player, Button(Ability 1)) == True;
  • Is Alive(Event Player) == True;
  • Has Status(Event Player, Hacked) == False;
  • Has Status(Event Player, Knocked Down) == False;
  • Has Status(Event Player, Asleep) == False;
  • Has Status(Event Player, Frozen) == False;
  • Has Status(Event Player, Stunned) == False;
  • Has Status(Event Player, Rooted) == False;
  • Is Dummy Bot(Event Player) == False;
  • Event Player.cantuse == 0;
  • }
  • actions
  • {
  • Play Effect(All Players(All Teams), Soldier: 76 Sprint Start Sound, Color(White), Event Player, 300);
  • Set Ammo(Event Player, 0, Max Ammo(Event Player, 0));
  • If((X Component Of(Throttle Of(Event Player)) || Z Component Of(Throttle Of(Event Player))) == 0);
  • Apply Impulse(Event Player, Facing Direction Of(Event Player) * Vector(1.300, 0, 1.300) + Vector(0, 0.300, 0), 18, To World,
  • Cancel Contrary Motion XYZ);
  • Else;
  • Apply Impulse(Event Player, Throttle Of(Event Player) + Vector(0, 0.300, 0), 18, To Player, Cancel Contrary Motion XYZ);
  • End;
  • Event Player.ab1cool = 6;
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • (X Component Of(Throttle Of(Event Player)) || Z Component Of(Throttle Of(Event Player))) != 0;
  • Event Player.tracercool > 0;
  • Global.ab1 == 3;
  • Event Player.ab1cool == 0;
  • Is Button Held(Event Player, Button(Ability 1)) == True;
  • Is Alive(Event Player) == True;
  • Has Status(Event Player, Hacked) == False;
  • Has Status(Event Player, Knocked Down) == False;
  • Has Status(Event Player, Asleep) == False;
  • Has Status(Event Player, Frozen) == False;
  • Has Status(Event Player, Stunned) == False;
  • Event Player.cantuse == 0;
  • Has Status(Event Player, Rooted) == False;
  • Is Dummy Bot(Event Player) == False;
  • }
  • actions
  • {
  • Play Effect(Event Player, Debuff Impact Sound, Color(White), Position Of(Event Player), 100);
  • Apply Impulse(Event Player, Throttle Of(Event Player) + Vector(0, 0.200, 0), 25, To Player, Cancel Contrary Motion XYZ);
  • Event Player.tracercool -= 1;
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.tracercool < 3;
  • Global.ab1 == 3;
  • Is Dummy Bot(Event Player) == False;
  • }
  • actions
  • {
  • Wait(4, Ignore Condition);
  • Event Player.tracercool += 1;
  • Play Effect(Event Player, Brigitte Repair Pack Armor Sound, Color(White), Event Player, 100);
  • Loop If Condition Is True;
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.ab1 == 4;
  • Event Player.ab1cool == 0;
  • Is Button Held(Event Player, Button(Ability 1)) == True;
  • Is Alive(Event Player) == True;
  • Has Status(Event Player, Hacked) == False;
  • Has Status(Event Player, Knocked Down) == False;
  • Has Status(Event Player, Asleep) == False;
  • Has Status(Event Player, Frozen) == False;
  • Has Status(Event Player, Stunned) == False;
  • Event Player.cantuse == 0;
  • Event Player.DVabooster == 0;
  • Has Status(Event Player, Rooted) == False;
  • Is Dummy Bot(Event Player) == False;
  • }
  • actions
  • {
  • Event Player.DVabooster = 1;
  • Create Effect(All Players(All Teams), Torbjörn Overloading Sound, Color(White), Event Player, 100, Visible To Position and Radius);
  • Event Player.davbostereft1 = Last Created Entity;
  • Create Effect(All Players(All Teams), Soldier: 76 Sprinting Effect, Color(White), Event Player, 1, Visible To Position and Radius);
  • Event Player.dvabostereft2 = Last Created Entity;
  • Set Status(Event Player, Null, Rooted, 2);
  • Set Gravity(Event Player, 0);
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.ab1 == 4;
  • Event Player.DVabooster == 1;
  • Is Dummy Bot(Event Player) == False;
  • }
  • actions
  • {
  • Apply Impulse(Event Player, Facing Direction Of(Event Player), 10, To World, Cancel Contrary Motion);
  • Wait(0.050, Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.ab1 == 4;
  • Event Player.DVabooster == 1;
  • Is Dummy Bot(Event Player) == False;
  • }
  • actions
  • {
  • Wait Until((Has Status(Event Player, Hacked) || Has Status(Event Player, Knocked Down) || Has Status(Event Player, Asleep)
  • || Has Status(Event Player, Frozen) || Has Status(Event Player, Stunned)) == True, 0.500);
  • Wait Until((Is Button Held(Event Player, Button(Ability 1)) || Has Status(Event Player, Hacked) || Has Status(Event Player,
  • Knocked Down) || Has Status(Event Player, Asleep) || Has Status(Event Player, Frozen) || Has Status(Event Player, Stunned))
  • == True, 1.500);
  • Destroy Effect(Event Player.davbostereft1);
  • Destroy Effect(Event Player.dvabostereft2);
  • Clear Status(Event Player, Rooted);
  • Set Gravity(Event Player, 100);
  • Play Effect(All Players(All Teams), Debuff Impact Sound, Color(White), Event Player, 100);
  • Event Player.ab1cool = 4;
  • Event Player.DVabooster = 0;
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Distance Between(Event Player, Closest Player To(Event Player, Opposite Team Of(Team Of(Event Player)))) < 3;
  • Event Player.DVabooster == 1;
  • Global.ab1 == 4;
  • Is Dummy Bot(Event Player) == False;
  • }
  • actions
  • {
  • Damage(Players Within Radius(Event Player, 3, Opposite Team Of(Team Of(Event Player)), Off), Event Player, 5);
  • Apply Impulse(Players Within Radius(Event Player, 3, Opposite Team Of(Team Of(Event Player)), Off), Vector(0, 5, -5), 10,
  • To Player, Cancel Contrary Motion);
  • Wait(0.400, Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.ab1 == 5;
  • Event Player.ab1cool == 0;
  • Is Button Held(Event Player, Button(Ability 1)) == True;
  • Is Alive(Event Player) == True;
  • Has Status(Event Player, Hacked) == False;
  • Has Status(Event Player, Knocked Down) == False;
  • Has Status(Event Player, Asleep) == False;
  • Has Status(Event Player, Frozen) == False;
  • Has Status(Event Player, Stunned) == False;
  • Event Player.cantuse == 0;
  • Has Status(Event Player, Rooted) == False;
  • Is Dummy Bot(Event Player) == False;
  • }
  • actions
  • {
  • Event Player.ab1cool = 10;
  • Play Effect(All Players(All Teams), Junkrat Concussion Mine Explosion Sound, Color(White), Position Of(Event Player), 100);
  • Apply Impulse(Event Player, Vector(0, 30, 30), 30, To Player, Cancel Contrary Motion);
  • Wait(0.200, Ignore Condition);
  • Wait Until(Is On Ground(Event Player), 99999);
  • Damage(Players Within Radius(Event Player, 5, Opposite Team Of(Team Of(Event Player)), Surfaces And All Barriers), Event Player,
  • 20);
  • Apply Impulse(Players Within Radius(Event Player, 5, Opposite Team Of(Team Of(Event Player)), Surfaces And All Barriers), Vector(0,
  • 5, -5), 10, To Player, Cancel Contrary Motion);
  • Play Effect(All Players(All Teams), Bastion Tank Cannon Explosion Sound, Color(White), Position Of(Event Player), 100);
  • Play Effect(All Players(All Teams), Winston Jump Pack Landing Effect, Color(White), Position Of(Event Player), 100);
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.ab1 == 6;
  • Event Player.ab1cool == 0;
  • Is Button Held(Event Player, Button(Ability 1)) == True;
  • Is Alive(Event Player) == True;
  • Has Status(Event Player, Hacked) == False;
  • Has Status(Event Player, Knocked Down) == False;
  • Has Status(Event Player, Asleep) == False;
  • Has Status(Event Player, Frozen) == False;
  • Has Status(Event Player, Stunned) == False;
  • Event Player.cantuse == 0;
  • Has Status(Event Player, Rooted) == False;
  • Is Dummy Bot(Event Player) == False;
  • }
  • actions
  • {
  • Play Effect(All Players(All Teams), Brigitte Repair Pack Armor Sound, Color(White), Event Player, 150);
  • Event Player.genjigum = Position Of(Event Player);
  • Event Player.genjiraycast = Ray Cast Hit Position(Eye Position(Event Player), Eye Position(Event Player) + Facing Direction Of(
  • Event Player) * 15, Null, Null, False);
  • Set Gravity(Event Player, 0);
  • Chase Player Variable Over Time(Event Player, genjigum, Event Player.genjiraycast, 0.230, None);
  • Start Forcing Player Position(Event Player, Event Player.genjigum, True);
  • Wait(0.280, Ignore Condition);
  • Stop Forcing Player Position(Event Player);
  • Stop Chasing Player Variable(Event Player, genjigum);
  • Apply Impulse(Event Player, Vector(-0.500, -0.500, -0.500), 0.500, To Player, Cancel Contrary Motion XYZ);
  • Set Gravity(Event Player, 100);
  • Event Player.ab1cool = 6;
  • Event Player.genjigum = False;
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Distance Between(Event Player, Closest Player To(Event Player, Opposite Team Of(Team Of(Event Player)))) < 3;
  • Event Player.genjigum != False;
  • Global.ab1 == 6;
  • Is Dummy Bot(Event Player) == False;
  • }
  • actions
  • {
  • Damage(Players Within Radius(Event Player, 3, Opposite Team Of(Team Of(Event Player)), Off), Event Player, 50);
  • Wait(0.400, Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.ab1 == 7;
  • Event Player.ab1cool == 0;
  • Is Button Held(Event Player, Button(Ability 1)) == True;
  • Is Alive(Event Player) == True;
  • Has Status(Event Player, Hacked) == False;
  • Has Status(Event Player, Knocked Down) == False;
  • Has Status(Event Player, Asleep) == False;
  • Has Status(Event Player, Frozen) == False;
  • Has Status(Event Player, Stunned) == False;
  • Has Status(Event Player, Rooted) == False;
  • Event Player.cantuse == 0;
  • Is Dummy Bot(Event Player) == False;
  • }
  • actions
  • {
  • Event Player.doomvictim = Players Within Radius(Facing Direction Of(Event Player) * 2 + Position Of(Event Player) + Vector(0,
  • 1.500, 0), 2.500, Opposite Team Of(Team Of(Event Player)), Off);
  • If(Event Player.doomvictim != False);
  • Play Effect(All Players(All Teams), Doomfist Rising Uppercut Impact Effect, Color(White), Event Player.doomvictim, 1);
  • End;
  • Play Effect(All Players(All Teams), Doomfist Rising Uppercut Leap Effect, Color(White), Position Of(Event Player), 1);
  • Play Effect(All Players(All Teams), Doomfist Rising Uppercut Leap Sound, Color(White), Position Of(Event Player), 120);
  • Apply Impulse(Event Player, Vector(0, 20, 8), 15, To Player, Cancel Contrary Motion);
  • Apply Impulse(Event Player.doomvictim, Facing Direction Of(Event Player) * Vector(10, 0, 10) + Vector(0, 20, 0), 15, To World,
  • Cancel Contrary Motion);
  • Damage(Event Player.doomvictim, Event Player, 50);
  • Event Player.ab1cool = 6;
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.ab1 == 8;
  • Event Player.ab1cool == 0;
  • Is Button Held(Event Player, Button(Ability 1)) == True;
  • Is Alive(Event Player) == True;
  • Has Status(Event Player, Hacked) == False;
  • Has Status(Event Player, Knocked Down) == False;
  • Has Status(Event Player, Asleep) == False;
  • Has Status(Event Player, Frozen) == False;
  • Has Status(Event Player, Stunned) == False;
  • Has Status(Event Player, Rooted) == False;
  • Is Dummy Bot(Event Player) == False;
  • Event Player.cantuse == 0;
  • }
  • actions
  • {
  • Set Primary Fire Enabled(Event Player, False);
  • Set Secondary Fire Enabled(Event Player, False);
  • Set Melee Enabled(Event Player, False);
  • Event Player.cantuse = 1;
  • Set Move Speed(Event Player, 150);
  • Play Effect(All Players(All Teams), Reaper Wraith Form Sound, Color(White), Event Player, 100);
  • Create Effect(All Players(All Teams), Reaper Wraith Form Effect, Color(White), Event Player, 1, Visible To Position and Radius);
  • Modify Player Variable(Event Player, reapereffect, Append To Array, Last Created Entity);
  • Create Effect(Event Player, Widowmaker Venom Mine Target Effect, Color(White), Event Player, 1, Visible To Position and Radius);
  • Modify Player Variable(Event Player, reapereffect, Append To Array, Last Created Entity);
  • Set Status(Event Player, Null, Phased Out, 3);
  • Wait(3, Ignore Condition);
  • Set Primary Fire Enabled(Event Player, True);
  • Set Secondary Fire Enabled(Event Player, True);
  • Set Melee Enabled(Event Player, True);
  • Event Player.cantuse = 0;
  • Set Move Speed(Event Player, 100);
  • Clear Status(Event Player, Phased Out);
  • Destroy Effect(Event Player.reapereffect);
  • Event Player.ab1cool = 8;
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.ab1 == 9;
  • Event Player.ab1cool == 0;
  • Is Button Held(Event Player, Button(Ability 1)) == True;
  • Is Alive(Event Player) == True;
  • Has Status(Event Player, Hacked) == False;
  • Has Status(Event Player, Knocked Down) == False;
  • Has Status(Event Player, Asleep) == False;
  • Has Status(Event Player, Frozen) == False;
  • Has Status(Event Player, Stunned) == False;
  • Has Status(Event Player, Rooted) == False;
  • Event Player.cantuse == 0;
  • Is Dummy Bot(Event Player) == False;
  • }
  • actions
  • {
  • Start Camera(Event Player, Ray Cast Hit Position(Eye Position(Event Player), Eye Position(Event Player) - Facing Direction Of(
  • Event Player) * 5, All Players(All Teams), Event Player, True), Eye Position(Event Player), 30);
  • Start Heal Over Time(Event Player, Event Player, 4, 50);
  • Event Player.meiiceheal = Last Heal Over Time ID;
  • Create Effect(All Players(All Teams), Mei Frozen Sound, Color(White), Position Of(Event Player), 100,
  • Visible To Position and Radius);
  • Modify Player Variable(Event Player, meieffect, Append To Array, Last Created Entity);
  • If(Team Of(Event Player) == Team 1);
  • Create Effect(All Players(All Teams), Sphere, Color(Team 1), Event Player, 1.500, Visible To Position and Radius);
  • Else;
  • Create Effect(All Players(All Teams), Sphere, Color(Team 2), Event Player, 1.500, Visible To Position and Radius);
  • End;
  • Modify Player Variable(Event Player, meieffect, Append To Array, Last Created Entity);
  • Set Status(Event Player, Null, Invincible, 4);
  • Set Status(Event Player, Null, Frozen, 4);
  • Event Player.cantuse = 1;
  • Wait(0.500, Ignore Condition);
  • Wait Until(Is Button Held(Event Player, Button(Ability 1)), 3.500);
  • Clear Status(Event Player, Frozen);
  • Clear Status(Event Player, Invincible);
  • Stop Heal Over Time(Event Player.meiiceheal);
  • Destroy Effect(Event Player.meieffect);
  • Stop Camera(Event Player);
  • Event Player.ab1cool = 12;
  • Event Player.cantuse = 0;
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.ab1 == 10;
  • Event Player.ab1cool == 0;
  • Is Button Held(Event Player, Button(Ability 1)) == True;
  • Is Alive(Event Player) == True;
  • Has Status(Event Player, Hacked) == False;
  • Has Status(Event Player, Knocked Down) == False;
  • Has Status(Event Player, Asleep) == False;
  • Has Status(Event Player, Frozen) == False;
  • Has Status(Event Player, Stunned) == False;
  • Has Status(Event Player, Rooted) == False;
  • Is Dummy Bot(Event Player) == False;
  • Event Player.cantuse == 0;
  • }
  • actions
  • {
  • Play Effect(All Players(All Teams), Moira Fade Disappear Sound, Color(White), Position Of(Event Player), 100);
  • Play Effect(All Players(All Teams), Moira Fade Disappear Effect, Color(White), Position Of(Event Player), 1);
  • Set Invisible(Event Player, All);
  • Set Move Speed(Event Player, 300);
  • Set Status(Event Player, Null, Phased Out, 0.800);
  • Wait(0.800, Ignore Condition);
  • Set Invisible(Event Player, None);
  • Set Move Speed(Event Player, 100);
  • Event Player.ab1cool = 6;
  • Play Effect(All Players(All Teams), Moira Fade Disappear Sound, Color(White), Position Of(Event Player), 100);
  • Play Effect(All Players(All Teams), Moira Fade Disappear Effect, Color(White), Position Of(Event Player), 1);
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.ab2 == 0;
  • }
  • actions
  • {
  • Global.GRAVITY = Vector(0, -15, 0);
  • Global.V0 = 23;
  • Global.elastic = 0.200;
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.ab2 == 0;
  • Is Dummy Bot(Event Player) == False;
  • }
  • actions
  • {
  • If(Team Of(Event Player) == Team 1);
  • "공의 위치를 표시한다."
  • Create Effect(All Players(All Teams), Sphere, Color(Team 1), Event Player.somposition, 0.300, Visible To Position and Radius);
  • Else;
  • "공의 위치를 표시한다."
  • Create Effect(All Players(All Teams), Sphere, Color(Team 2), Event Player.somposition, 0.300, Visible To Position and Radius);
  • End;
  • Event Player.somposition = Vector(-999, -999, -999);
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.ab2 == 0;
  • Event Player.ab2cool == 0;
  • Is Button Held(Event Player, Button(Ability 2)) == True;
  • Is Alive(Event Player) == True;
  • Has Status(Event Player, Hacked) == False;
  • Has Status(Event Player, Knocked Down) == False;
  • Has Status(Event Player, Asleep) == False;
  • Has Status(Event Player, Frozen) == False;
  • Has Status(Event Player, Stunned) == False;
  • Has Status(Event Player, Rooted) == False;
  • Event Player.somteleonline == 0;
  • Is Dummy Bot(Event Player) == False;
  • }
  • actions
  • {
  • Play Effect(All Players(All Teams), Sombra Translocating Sound, Color(White), Position Of(Event Player), 100);
  • "초기위치설정"
  • Event Player.somposition = Eye Position(Event Player);
  • "초기속도는 보는방향*초기속력"
  • Event Player.somVelocity = Facing Direction Of(Event Player) * Global.V0;
  • "위치는 위치+속도로 속력(|속도|)만큼 빠르게 다가간다."
  • Chase Player Variable At Rate(Event Player, somposition, Event Player.somposition + Event Player.somVelocity, Absolute Value(
  • Event Player.somVelocity), Destination and Rate);
  • "속도는 속도+가속도방향으로 가속력(|가속도|)만큼 빠르게 다가간다."
  • Chase Player Variable At Rate(Event Player, somVelocity, Event Player.somVelocity + Global.GRAVITY, Absolute Value(Global.GRAVITY),
  • Destination and Rate);
  • Wait(0.500, Ignore Condition);
  • Event Player.somteleonline = 1;
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • "운동을 할때(속도가 0이 아닐 때) 액션을 실행한다."
  • Event Player.somVelocity == True;
  • "레이저를 쏘아 맞은 곳과의 거리가 0.5미터 이하라면 벽에 닿은 것으로 간주한다. normalize한 후 10을 곱하여 크기가 10인 벡터로 변환한다. 공중에서 속도가 0이 되는 시간에는 동작하지 않게 하기 위함이다."
  • Distance Between(Event Player.somposition, Ray Cast Hit Position(Event Player.somposition, Event Player.somposition + Normalize(
  • Event Player.somVelocity) * 10, All Players(All Teams), Event Player, True)) < 0.500;
  • Global.ab2 == 0;
  • Is Dummy Bot(Event Player) == False;
  • }
  • actions
  • {
  • Event Player.somnormal = Ray Cast Hit Normal(Event Player.somposition, Event Player.somposition + Normalize(
  • Event Player.somVelocity), All Players(All Teams), Event Player, True);
  • Event Player.somD = 2 * Event Player.somnormal * Dot Product(-1 * Event Player.somVelocity, Event Player.somnormal);
  • Event Player.somVelocity += Event Player.somD;
  • "속력을 탄성계수만큼 줄인다."
  • Event Player.somVelocity *= Global.elastic;
  • "속력이 0.5 이하라면 운동을 멈춘다."
  • If(Absolute Value(Event Player.somVelocity) < 0.500);
  • Stop Chasing Player Variable(Event Player, somposition);
  • Stop Chasing Player Variable(Event Player, somVelocity);
  • Event Player.somVelocity = 0;
  • Else;
  • "반사가 빠르게 재실행될 경우 룰이 무시될 수 있어 0.016(최소시간)의 간격을 둔 뒤 다시 검사한다."
  • Wait(0.016, Ignore Condition);
  • Loop If Condition Is True;
  • End;
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.ab2 == 0;
  • Is Button Held(Event Player, Button(Ability 2)) == True;
  • Is Alive(Event Player) == True;
  • Has Status(Event Player, Hacked) == False;
  • Has Status(Event Player, Knocked Down) == False;
  • Has Status(Event Player, Asleep) == False;
  • Has Status(Event Player, Frozen) == False;
  • Has Status(Event Player, Stunned) == False;
  • Event Player.somteleonline == 1;
  • Has Status(Event Player, Rooted) == False;
  • Is Dummy Bot(Event Player) == False;
  • }
  • actions
  • {
  • If(Team Of(Event Player) == Team 1);
  • Play Effect(All Players(All Teams), Sombra Translocator Disappear Effect, Color(Team 1), Position Of(Event Player), 1);
  • Else;
  • Play Effect(All Players(All Teams), Sombra Translocator Disappear Effect, Color(Team 2), Position Of(Event Player), 1);
  • End;
  • Play Effect(All Players(All Teams), Sombra Translocating Material Effect, Color(Team 1), Event Player, 1);
  • Play Effect(All Players(All Teams), Sombra Translocator Disappear Sound, Color(White), Position Of(Event Player), 100);
  • Teleport(Event Player, Event Player.somposition);
  • Event Player.ab2cool = 6;
  • If(Team Of(Event Player) == Team 1);
  • Play Effect(All Players(All Teams), Sombra Translocator Reappear Effect, Color(Team 1), Position Of(Event Player), 1);
  • Else;
  • Play Effect(All Players(All Teams), Sombra Translocator Reappear Effect, Color(Team 2), Position Of(Event Player), 1);
  • End;
  • Play Effect(All Players(All Teams), Sombra Translocator Reappear Sound, Color(White), Position Of(Event Player), 100);
  • Wait(0.200, Ignore Condition);
  • Event Player.somteleonline = 0;
  • Event Player.somposition = Vector(-999, -999, -999);
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Player Died;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.ab2 == 0;
  • Event Player.somteleonline == 1;
  • Is Dummy Bot(Event Player) == False;
  • }
  • actions
  • {
  • Event Player.somteleonline = 0;
  • Event Player.somposition = Vector(-999, -999, -999);
  • Event Player.ab2cool = 6;
  • Wait(0.500, Ignore Condition);
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Player Left Match;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.ab2 == 0;
  • Event Player.somteleonline == 1;
  • Is Dummy Bot(Event Player) == False;
  • }
  • actions
  • {
  • Event Player.somteleonline = 0;
  • Event Player.somposition = Vector(-999, -999, -999);
  • Event Player.ab2cool = 6;
  • Wait(0.500, Ignore Condition);
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.ab2 == 1;
  • Event Player.ab2cool == 0;
  • Is Button Held(Event Player, Button(Ability 2)) == True;
  • Is Alive(Event Player) == True;
  • Has Status(Event Player, Hacked) == False;
  • Has Status(Event Player, Knocked Down) == False;
  • Has Status(Event Player, Asleep) == False;
  • Has Status(Event Player, Frozen) == False;
  • Has Status(Event Player, Stunned) == False;
  • Event Player.cantuse == 0;
  • Is Dummy Bot(Event Player) == False;
  • }
  • actions
  • {
  • If(Team Of(Event Player) == Team 1);
  • Play Effect(All Players(All Teams), McCree Flashbang Explosion Effect, Color(Team 1), Facing Direction Of(Event Player)
  • * 4 + Vector(0, 1.500, 0) + Position Of(Event Player), 1);
  • Else;
  • Play Effect(All Players(All Teams), McCree Flashbang Explosion Effect, Color(Team 2), Facing Direction Of(Event Player)
  • * 4 + Vector(0, 1.500, 0) + Position Of(Event Player), 1);
  • End;
  • Play Effect(All Players(All Teams), McCree Flashbang Explosion Sound, Color(White), Position Of(Event Player), 100);
  • Set Status(Players Within Radius(Facing Direction Of(Event Player) * 5 + Vector(0, 1.500, 0) + Position Of(Event Player), 3,
  • Opposite Team Of(Team Of(Event Player)), Surfaces And All Barriers), Event Player, Stunned, 0.800);
  • Damage(Remove From Array(Players Within Radius(Facing Direction Of(Event Player) * 5 + Vector(0, 1.500, 0) + Position Of(
  • Event Player), 3, All Teams, Surfaces And All Barriers), Event Player), Event Player, 25);
  • Event Player.ab2cool = 10;
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.ab2 == 2;
  • Event Player.ab2cool == 0;
  • Event Player.tra12 != 0;
  • Is Button Held(Event Player, Button(Ability 2)) == True;
  • Is Alive(Event Player) == True;
  • Has Status(Event Player, Hacked) == False;
  • Has Status(Event Player, Knocked Down) == False;
  • Has Status(Event Player, Asleep) == False;
  • Has Status(Event Player, Frozen) == False;
  • Has Status(Event Player, Stunned) == False;
  • Event Player.cantuse == 0;
  • Has Status(Event Player, Rooted) == False;
  • Is Dummy Bot(Event Player) == False;
  • }
  • actions
  • {
  • Heal(Event Player, Null, 200);
  • If(Team Of(Event Player) == Team 1);
  • Play Effect(All Players(All Teams), Tracer Recall Disappear Effect, Team 1, Position Of(Event Player), 1);
  • Else;
  • Play Effect(All Players(All Teams), Tracer Recall Disappear Effect, Team 2, Position Of(Event Player), 1);
  • End;
  • Play Effect(All Players(All Teams), Tracer Recall Disappear Sound, Color(White), Position Of(Event Player), 100);
  • Teleport(Event Player, Event Player.tra12);
  • If(Team Of(Event Player) == Team 1);
  • Play Effect(All Players(All Teams), Tracer Recall Reappear Effect, Team 1, Position Of(Event Player), 1);
  • Else;
  • Play Effect(All Players(All Teams), Tracer Recall Reappear Effect, Team 2, Position Of(Event Player), 1);
  • End;
  • Play Effect(All Players(All Teams), Tracer Recall Reappear Sound, Color(White), Position Of(Event Player), 100);
  • Wait(0.250, Ignore Condition);
  • Event Player.ab2cool = 12;
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.ab2 == 2;
  • Is Dummy Bot(Event Player) == False;
  • }
  • actions
  • {
  • Event Player.tra12 = Event Player.tra11;
  • Event Player.tra11 = Event Player.tra10;
  • Event Player.tra10 = Event Player.tra9;
  • Event Player.tra9 = Event Player.tra8;
  • Event Player.tra8 = Event Player.tra7;
  • Event Player.tra7 = Event Player.tra6;
  • Event Player.tra6 = Event Player.tra5;
  • Event Player.tra5 = Event Player.tra4;
  • Event Player.tra4 = Event Player.tra3;
  • Event Player.tra3 = Event Player.tra2;
  • Event Player.tra2 = Event Player.tra1;
  • Event Player.tra1 = Position Of(Event Player);
  • Wait(0.250, Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.ab2 == 3;
  • Event Player.ab2cool == 0;
  • Is Button Held(Event Player, Button(Ability 2)) == True;
  • Is Alive(Event Player) == True;
  • Has Status(Event Player, Hacked) == False;
  • Has Status(Event Player, Knocked Down) == False;
  • Has Status(Event Player, Asleep) == False;
  • Has Status(Event Player, Frozen) == False;
  • Has Status(Event Player, Stunned) == False;
  • Event Player.cantuse == 0;
  • Is Dummy Bot(Event Player) == False;
  • }
  • actions
  • {
  • Event Player.ab2cool = 15;
  • Add Health Pool To Player(Event Player, Shields, 100 + Count Of(Players Within Radius(Event Player, 8, Opposite Team Of(Team Of(
  • Event Player)), Off)) * 75, False, False);
  • Event Player.kingballshield = Last Created Health Pool;
  • Create Effect(All Players(All Teams), Wrecking Ball Adaptive Shield Target Sound, Color(White), Position Of(Event Player), 100,
  • Visible To Position and Radius);
  • Event Player.kingballsound = Last Created Entity;
  • If(Team Of(Event Player) == Team 1);
  • Create Effect(All Players(All Teams), Wrecking Ball Adaptive Shield Target Effect, Color(Team 1), Event Player, 100,
  • Visible To Position and Radius);
  • Event Player.kingballeffect = Last Created Entity;
  • Else;
  • Create Effect(All Players(All Teams), Wrecking Ball Adaptive Shield Target Effect, Color(Team 2), Event Player, 100,
  • Visible To Position and Radius);
  • Event Player.kingballeffect = Last Created Entity;
  • End;
  • Wait(7, Ignore Condition);
  • Destroy Effect(Event Player.kingballsound);
  • Destroy Effect(Event Player.kingballeffect);
  • Remove Health Pool From Player(Event Player.kingballshield);
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.ab2 == 4;
  • Event Player.ab2cool == 0;
  • Is Button Held(Event Player, Button(Ability 2)) == True;
  • Is Alive(Event Player) == True;
  • Has Status(Event Player, Hacked) == False;
  • Has Status(Event Player, Knocked Down) == False;
  • Has Status(Event Player, Asleep) == False;
  • Has Status(Event Player, Frozen) == False;
  • Has Status(Event Player, Stunned) == False;
  • Event Player.cantuse == 0;
  • Is Dummy Bot(Event Player) == False;
  • }
  • actions
  • {
  • Event Player.ab2cool = 8;
  • Set Primary Fire Enabled(Event Player, False);
  • Set Secondary Fire Enabled(Event Player, False);
  • Set Melee Enabled(Event Player, False);
  • Event Player.cantuse = 1;
  • Create Effect(All Players(All Teams), Baptiste Immortality Field Protected Effect, Color(White), Event Player, 1,
  • Visible To Position and Radius);
  • Event Player.hoghealeffect2 = Last Created Entity;
  • Create Effect(All Players(All Teams), Heal Target Active Effect, Color(White), Event Player, 1, Visible To Position and Radius);
  • Event Player.hoghealeffect = Last Created Entity;
  • Create Effect(All Players(All Teams), Mercy Heal Beam Sound, Color(White), Event Player, 100, Visible To Position and Radius);
  • Event Player.hoghealsound = Last Created Entity;
  • Set Damage Received(Event Player, 50);
  • Wait(0.300, Ignore Condition);
  • Heal(Event Player, Event Player, 100);
  • Wait(0.800, Ignore Condition);
  • Heal(Event Player, Event Player, 100);
  • Wait(0.800, Ignore Condition);
  • Heal(Event Player, Event Player, 100);
  • Set Damage Received(Event Player, 100);
  • Destroy Effect(Event Player.hoghealeffect);
  • Destroy Effect(Event Player.hoghealsound);
  • Destroy Effect(Event Player.hoghealeffect2);
  • Event Player.cantuse = 0;
  • Set Primary Fire Enabled(Event Player, True);
  • Set Secondary Fire Enabled(Event Player, True);
  • Set Melee Enabled(Event Player, True);
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.ab2 == 5;
  • Event Player.ab2cool == 0;
  • Is Button Held(Event Player, Button(Ability 2)) == True;
  • Is Alive(Event Player) == True;
  • Has Status(Event Player, Hacked) == False;
  • Has Status(Event Player, Knocked Down) == False;
  • Has Status(Event Player, Asleep) == False;
  • Has Status(Event Player, Frozen) == False;
  • Has Status(Event Player, Stunned) == False;
  • Has Status(Event Player, Rooted) == False;
  • Event Player.cantuse == 0;
  • Event Player.reapershadow == 0;
  • Is Dummy Bot(Event Player) == False;
  • }
  • actions
  • {
  • Set Primary Fire Enabled(Event Player, False);
  • Set Secondary Fire Enabled(Event Player, False);
  • Create Effect(Event Player, Ring, Color(Purple), Nearest Walkable Position(Ray Cast Hit Position(Event Player,
  • Event Player + Facing Direction Of(Event Player) * 15, Null, Event Player, True)), 1, Visible To Position and Radius);
  • Event Player.reapershadoweffect = Last Created Entity;
  • Wait(0.200, Ignore Condition);
  • Event Player.reapershadow = 1;
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.ab2 == 5;
  • Is Button Held(Event Player, Button(Secondary Fire)) == True;
  • Is Alive(Event Player) == True;
  • Has Status(Event Player, Hacked) == False;
  • Has Status(Event Player, Knocked Down) == False;
  • Has Status(Event Player, Asleep) == False;
  • Has Status(Event Player, Frozen) == False;
  • Has Status(Event Player, Stunned) == False;
  • Has Status(Event Player, Rooted) == False;
  • Event Player.reapershadow == 1;
  • Is Dummy Bot(Event Player) == False;
  • }
  • actions
  • {
  • Event Player.reapershadow = 0;
  • Destroy Effect(Event Player.reapershadoweffect);
  • Set Primary Fire Enabled(Event Player, True);
  • Set Secondary Fire Enabled(Event Player, True);
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.ab2 == 5;
  • Is Button Held(Event Player, Button(Primary Fire)) == True;
  • Is Alive(Event Player) == True;
  • Has Status(Event Player, Hacked) == False;
  • Has Status(Event Player, Knocked Down) == False;
  • Has Status(Event Player, Asleep) == False;
  • Has Status(Event Player, Frozen) == False;
  • Has Status(Event Player, Stunned) == False;
  • Has Status(Event Player, Rooted) == False;
  • Event Player.reapershadow == 1;
  • Is Dummy Bot(Event Player) == False;
  • }
  • actions
  • {
  • Set Jump Enabled(Event Player, False);
  • Event Player.reapershadow = 2;
  • Set Gravity(Event Player, 20);
  • Play Effect(All Players(All Teams), Reaper Wraith Form Sound, Color(White), Event Player, 100);
  • Event Player.cantuse = 1;
  • Event Player.reapershadowlocation = Nearest Walkable Position(Ray Cast Hit Position(Event Player,
  • Event Player + Facing Direction Of(Event Player) * 15, Null, Event Player, True));
  • Destroy Effect(Event Player.reapershadoweffect);
  • Set Move Speed(Event Player, 0);
  • Start Camera(Event Player, Ray Cast Hit Position(Eye Position(Event Player), Eye Position(Event Player) - Facing Direction Of(
  • Event Player) * 5, All Players(All Teams), Event Player, True), Eye Position(Event Player), 30);
  • Wait(0.050, Ignore Condition);
  • Create Effect(All Players(All Teams), Cloud, Color(Purple), Event Player, 1, Visible To Position and Radius);
  • Modify Player Variable(Event Player, reapershadoweffect2, Append To Array, Last Created Entity);
  • Create Effect(All Players(All Teams), Cloud, Color(Purple), Event Player.reapershadowlocation, 1, Visible To Position and Radius);
  • Modify Player Variable(Event Player, reapershadoweffect2, Append To Array, Last Created Entity);
  • Wait(2.950, Ignore Condition);
  • Teleport(Event Player, Event Player.reapershadowlocation);
  • Destroy Effect(Event Player.reapershadoweffect2);
  • Set Primary Fire Enabled(Event Player, True);
  • Set Secondary Fire Enabled(Event Player, True);
  • Set Move Speed(Event Player, 100);
  • Event Player.cantuse = 0;
  • Stop Camera(Event Player);
  • Event Player.ab2cool = 10;
  • Event Player.reapershadow = 0;
  • Set Gravity(Event Player, 100);
  • Set Jump Enabled(Event Player, True);
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Player Died;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.ab2 == 5;
  • Is Dummy Bot(Event Player) == False;
  • }
  • actions
  • {
  • Destroy Effect(Event Player.reapershadoweffect);
  • Destroy Effect(Event Player.reapershadoweffect2);
  • Event Player.reapershadow = 0;
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Player Left Match;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.ab2 == 5;
  • Is Dummy Bot(Event Player) == False;
  • }
  • actions
  • {
  • Destroy Effect(Event Player.reapershadoweffect);
  • Destroy Effect(Event Player.reapershadoweffect2);
  • Event Player.reapershadow = 0;
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.ab2 >= 100;
  • Event Player.ab2cool == 0;
  • Is Button Held(Event Player, Button(Ability 2)) == True;
  • Is Alive(Event Player) == True;
  • Has Status(Event Player, Hacked) == False;
  • Has Status(Event Player, Knocked Down) == False;
  • Has Status(Event Player, Asleep) == False;
  • Has Status(Event Player, Frozen) == False;
  • Has Status(Event Player, Stunned) == False;
  • Event Player.cantuse == 0;
  • Is Dummy Bot(Event Player) == False;
  • }
  • actions
  • {
  • Set Ability Cooldown(Event Player.dummybot, Button(Ability 2), 0);
  • Event Player.ab2cool = 10;
  • Teleport(Event Player.dummybot, Event Player);
  • Set Facing(Event Player.dummybot, Facing Direction Of(Event Player), To World);
  • Wait(0.016, Ignore Condition);
  • Press Button(Event Player.dummybot, Button(Ability 2));
  • Wait(1, Ignore Condition);
  • Teleport(Event Player.dummybot, Vector(999, 999, 999));
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.ult == 0;
  • Is Button Held(Event Player, Button(Ultimate)) == True;
  • Ultimate Charge Percent(Event Player) == 100;
  • Is Alive(Event Player) == True;
  • Has Status(Event Player, Hacked) == False;
  • Has Status(Event Player, Knocked Down) == False;
  • Has Status(Event Player, Asleep) == False;
  • Has Status(Event Player, Frozen) == False;
  • Has Status(Event Player, Stunned) == False;
  • Has Status(Event Player, Rooted) == False;
  • Event Player.cantuse == 0;
  • Is Dummy Bot(Event Player) == False;
  • }
  • actions
  • {
  • If(Team Of(Event Player) == Team 1);
  • Play Effect(All Players(All Teams), Sombra EMP Explosion Effect, Color(Team 1), Position Of(Event Player), 1);
  • Else;
  • Play Effect(All Players(All Teams), Sombra EMP Explosion Effect, Color(Team 2), Position Of(Event Player), 1);
  • End;
  • Play Effect(All Players(All Teams), Sombra EMP Explosion Effect, Color(Team 1), Position Of(Event Player), 1);
  • Play Effect(All Players(All Teams), Sombra EMP Explosion Sound, Color(White), Position Of(Event Player), 100);
  • Apply Impulse(Event Player, Vector(0, 10, 0), 10, To Player, Cancel Contrary Motion);
  • Set Status(Players Within Radius(Position Of(Event Player), 15, Opposite Team Of(Team Of(Event Player)), Off), Event Player,
  • Hacked, 5);
  • Set Ultimate Charge(Event Player, 0);
  • Wait(0.500, Ignore Condition);
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.ult == 1;
  • Is Button Held(Event Player, Button(Ultimate)) == True;
  • Ultimate Charge Percent(Event Player) == 100;
  • Is Alive(Event Player) == True;
  • Has Status(Event Player, Hacked) == False;
  • Has Status(Event Player, Knocked Down) == False;
  • Has Status(Event Player, Asleep) == False;
  • Has Status(Event Player, Frozen) == False;
  • Has Status(Event Player, Stunned) == False;
  • Has Status(Event Player, Rooted) == False;
  • Event Player.cantuse == 0;
  • Is Dummy Bot(Event Player) == False;
  • }
  • actions
  • {
  • Event Player.dvaultlocation = Position Of(Event Player);
  • Apply Impulse(Event Player, Vector(0, 10, -10), 10, To Player, Cancel Contrary Motion);
  • Set Ultimate Charge(Event Player, 0);
  • If(Team Of(Event Player) == Team 1);
  • Create Effect(All Players(All Teams), Orb, Color(Team 1), Position Of(Event Player), 20, None);
  • Event Player.dvaulteffect = Last Created Entity;
  • Else;
  • Create Effect(All Players(All Teams), Orb, Color(Team 2), Position Of(Event Player), 20, None);
  • Event Player.dvaulteffect = Last Created Entity;
  • End;
  • Create Effect(All Players(All Teams), Lúcio Sound Barrier Protected Sound, Color(White), Position Of(Event Player), 300, None);
  • Event Player.dvaultsound = Last Created Entity;
  • Create Icon(All Players(Opposite Team Of(Team Of(Event Player))), Position Of(Event Player), Warning, None, Color(Red), True);
  • Event Player.dvaulticon = Last Created Entity;
  • Wait(4, Ignore Condition);
  • Destroy Icon(Event Player.dvaulticon);
  • Destroy Effect(Event Player.dvaultsound);
  • Destroy Effect(Event Player.dvaulteffect);
  • If(Team Of(Event Player) == Team 1);
  • Play Effect(All Players(All Teams), DVa Self Destruct Explosion Effect, Color(Team 1), Event Player.dvaultlocation, 100);
  • Else;
  • Play Effect(All Players(All Teams), DVa Self Destruct Explosion Effect, Color(Team 2), Event Player.dvaultlocation, 100);
  • End;
  • Play Effect(All Players(All Teams), DVa Self Destruct Explosion Sound, Color(White), Event Player.dvaultlocation, 100);
  • Damage(Players Within Radius(Event Player.dvaultlocation, 20, Opposite Team Of(Team Of(Event Player)), Surfaces And All Barriers),
  • Event Player, 1000);
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.ult == 2;
  • Is Button Held(Event Player, Button(Ultimate)) == True;
  • Ultimate Charge Percent(Event Player) == 100;
  • Is Alive(Event Player) == True;
  • Has Status(Event Player, Hacked) == False;
  • Has Status(Event Player, Knocked Down) == False;
  • Has Status(Event Player, Asleep) == False;
  • Has Status(Event Player, Frozen) == False;
  • Has Status(Event Player, Stunned) == False;
  • Has Status(Event Player, Rooted) == False;
  • Event Player.cantuse == 0;
  • Is Dummy Bot(Event Player) == False;
  • }
  • actions
  • {
  • Set Ultimate Charge(Event Player, 0);
  • Play Effect(All Players(All Teams), Reinhardt Fire Strike Target Impact Sound, Color(White), Position Of(Event Player), 100);
  • Play Effect(All Players(All Teams), Doomfist Meteor Strike Impact Effect, Color(White), (Facing Direction Of(Event Player)
  • * 7 + Position Of(Event Player)) * Vector(1, 0, 1), 1);
  • Set Status(Players Within Radius((Facing Direction Of(Event Player) * 7 + Position Of(Event Player)) * Vector(1, 0, 1), 7,
  • Opposite Team Of(Team Of(Event Player)), Surfaces And All Barriers), Event Player, Knocked Down, 2.500);
  • Damage(Players Within Radius((Facing Direction Of(Event Player) * 7 + Position Of(Event Player)) * Vector(1, 0, 1), 7,
  • Opposite Team Of(Team Of(Event Player)), Surfaces And All Barriers), Event Player, 50);
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.ult == 3;
  • Is Button Held(Event Player, Button(Ultimate)) == True;
  • Ultimate Charge Percent(Event Player) == 100;
  • Is Alive(Event Player) == True;
  • Has Status(Event Player, Hacked) == False;
  • Has Status(Event Player, Knocked Down) == False;
  • Has Status(Event Player, Asleep) == False;
  • Has Status(Event Player, Frozen) == False;
  • Has Status(Event Player, Stunned) == False;
  • Has Status(Event Player, Rooted) == False;
  • Event Player.cantuse == 0;
  • Is Dummy Bot(Event Player) == False;
  • }
  • actions
  • {
  • Set Primary Fire Enabled(Event Player, False);
  • Set Secondary Fire Enabled(Event Player, False);
  • Set Melee Enabled(Event Player, False);
  • Event Player.cantuse = 1;
  • Event Player.reaperult = 1;
  • Set Ultimate Charge(Event Player, 0);
  • Start Camera(Event Player, Ray Cast Hit Position(Eye Position(Event Player), Eye Position(Event Player) - Facing Direction Of(
  • Event Player) * 5, All Players(All Teams), Event Player, True), Eye Position(Event Player), 30);
  • Set Move Speed(Event Player, 50);
  • Create Effect(All Players(All Teams), Energy Sound, Color(White), Event Player, 300, Visible To Position and Radius);
  • Modify Player Variable(Event Player, reaperulteffect, Append To Array, Last Created Entity);
  • If(Team Of(Event Player) == Team 1);
  • Create Effect(All Players(All Teams), Ring, Color(Team 1), Event Player, 8, Visible To Position and Radius);
  • Else;
  • Create Effect(All Players(All Teams), Ring, Color(Team 2), Event Player, 8, Visible To Position and Radius);
  • End;
  • Modify Player Variable(Event Player, reaperulteffect, Append To Array, Last Created Entity);
  • If(Team Of(Event Player) == Team 1);
  • Create Effect(All Players(All Teams), Cloud, Color(Team 1), Event Player, 8, Visible To Position and Radius);
  • Else;
  • Create Effect(All Players(All Teams), Cloud, Color(Team 2), Event Player, 8, Visible To Position and Radius);
  • End;
  • Modify Player Variable(Event Player, reaperulteffect, Append To Array, Last Created Entity);
  • Wait Until((Is Dead(Event Player) || Has Status(Event Player, Hacked) || Has Status(Event Player, Knocked Down) || Has Status(
  • Event Player, Asleep) || Has Status(Event Player, Frozen) || Has Status(Event Player, Stunned)) == True, 3);
  • Destroy Effect(Event Player.reaperulteffect);
  • Set Move Speed(Event Player, 100);
  • Stop Camera(Event Player);
  • Event Player.reaperult = 0;
  • Set Primary Fire Enabled(Event Player, True);
  • Set Secondary Fire Enabled(Event Player, True);
  • Set Melee Enabled(Event Player, True);
  • Event Player.cantuse = 0;
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.ult == 3;
  • Event Player.reaperult == 1;
  • Is Dummy Bot(Event Player) == False;
  • }
  • actions
  • {
  • Damage(Players Within Radius(Event Player, 8, Opposite Team Of(Team Of(Event Player)), Surfaces And All Barriers), Event Player,
  • 20);
  • Wait(0.200, Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.ult == 4;
  • }
  • actions
  • {
  • Global.GRAVITY = Vector(0, -15, 0);
  • Global.V0 = 23;
  • Global.elastic = 0.200;
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.ult == 4;
  • Is Dummy Bot(Event Player) == False;
  • }
  • actions
  • {
  • If(Team Of(Event Player) == Team 1);
  • "공의 위치를 표시한다."
  • Create Effect(All Players(All Teams), Sphere, Color(Team 1), Event Player.meiposition, 0.300, Visible To Position and Radius);
  • Else;
  • "공의 위치를 표시한다."
  • Create Effect(All Players(All Teams), Sphere, Color(Team 2), Event Player.meiposition, 0.300, Visible To Position and Radius);
  • End;
  • Event Player.meiposition = Vector(-999, -999, -999);
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • "운동을 할때(속도가 0이 아닐 때) 액션을 실행한다."
  • Event Player.meiVelocity == True;
  • "레이저를 쏘아 맞은 곳과의 거리가 0.5미터 이하라면 벽에 닿은 것으로 간주한다. normalize한 후 10을 곱하여 크기가 10인 벡터로 변환한다. 공중에서 속도가 0이 되는 시간에는 동작하지 않게 하기 위함이다."
  • Distance Between(Event Player.meiposition, Ray Cast Hit Position(Event Player.meiposition, Event Player.meiposition + Normalize(
  • Event Player.meiVelocity) * 10, All Players(All Teams), Event Player, True)) < 0.500;
  • Global.ult == 4;
  • Is Dummy Bot(Event Player) == False;
  • }
  • actions
  • {
  • Event Player.meinormal = Ray Cast Hit Normal(Event Player.meiposition, Event Player.meiposition + Normalize(
  • Event Player.meiVelocity), All Players(All Teams), Event Player, True);
  • Event Player.meiD = 2 * Event Player.meinormal * Dot Product(-1 * Event Player.meiVelocity, Event Player.meinormal);
  • Event Player.meiVelocity += Event Player.meiD;
  • "속력을 탄성계수만큼 줄인다."
  • Event Player.meiVelocity *= Global.elastic;
  • "속력이 0.5 이하라면 운동을 멈춘다."
  • If(Absolute Value(Event Player.meiVelocity) < 0.500);
  • Stop Chasing Player Variable(Event Player, meiposition);
  • Stop Chasing Player Variable(Event Player, meiVelocity);
  • Event Player.meiVelocity = 0;
  • Else;
  • "반사가 빠르게 재실행될 경우 룰이 무시될 수 있어 0.016(최소시간)의 간격을 둔 뒤 다시 검사한다."
  • Wait(0.016, Ignore Condition);
  • Loop If Condition Is True;
  • End;
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.ult == 4;
  • Is Button Held(Event Player, Button(Ultimate)) == True;
  • Ultimate Charge Percent(Event Player) == 100;
  • Is Alive(Event Player) == True;
  • Has Status(Event Player, Hacked) == False;
  • Has Status(Event Player, Knocked Down) == False;
  • Has Status(Event Player, Asleep) == False;
  • Has Status(Event Player, Frozen) == False;
  • Has Status(Event Player, Stunned) == False;
  • Has Status(Event Player, Rooted) == False;
  • Event Player.cantuse == 0;
  • Is Dummy Bot(Event Player) == False;
  • }
  • actions
  • {
  • Set Ultimate Charge(Event Player, 0);
  • Play Effect(All Players(All Teams), Lúcio Sound Barrier Cast Sound, Color(White), Position Of(Event Player), 100);
  • "초기위치설정"
  • Event Player.meiposition = Eye Position(Event Player);
  • "초기속도는 보는방향*초기속력"
  • Event Player.meiVelocity = Facing Direction Of(Event Player) * Global.V0;
  • "위치는 위치+속도로 속력(|속도|)만큼 빠르게 다가간다."
  • Chase Player Variable At Rate(Event Player, meiposition, Event Player.meiposition + Event Player.meiVelocity, Absolute Value(
  • Event Player.meiVelocity), Destination and Rate);
  • "속도는 속도+가속도방향으로 가속력(|가속도|)만큼 빠르게 다가간다."
  • Chase Player Variable At Rate(Event Player, meiVelocity, Event Player.meiVelocity + Global.GRAVITY, Absolute Value(Global.GRAVITY),
  • Destination and Rate);
  • Wait(0.500, Ignore Condition);
  • Wait Until(Event Player.meiVelocity == 0, 99999);
  • If(Team Of(Event Player) == Team 1);
  • Create Effect(All Players(All Teams), Ring, Color(Team 1), Event Player.meiposition, 10, Visible To Position and Radius);
  • Modify Player Variable(Event Player, meieffect, Append To Array, Last Created Entity);
  • Create Effect(All Players(All Teams), Cloud, Color(Team 1), Event Player.meiposition, 10, Visible To Position and Radius);
  • Modify Player Variable(Event Player, meieffect, Append To Array, Last Created Entity);
  • Else;
  • Create Effect(All Players(All Teams), Ring, Color(Team 2), Event Player.meiposition, 10, Visible To Position and Radius);
  • Modify Player Variable(Event Player, meieffect, Append To Array, Last Created Entity);
  • Create Effect(All Players(All Teams), Cloud, Color(Team 2), Event Player.meiposition, 10, Visible To Position and Radius);
  • Modify Player Variable(Event Player, meieffect, Append To Array, Last Created Entity);
  • End;
  • Event Player.meiult = 1;
  • Wait(2, Ignore Condition);
  • Set Status(Players Within Radius(Event Player.meiposition, 10, Opposite Team Of(Team Of(Event Player)), Surfaces And All Barriers),
  • Event Player, Frozen, 4);
  • Wait(2.250, Ignore Condition);
  • Event Player.meiposition = Vector(-999, -999, -999);
  • Event Player.meiult = 0;
  • Destroy Effect(Event Player.meieffect);
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.ult == 4;
  • Event Player.meiult == 1;
  • Is Dummy Bot(Event Player) == False;
  • }
  • actions
  • {
  • Event Player.meiultvictim = Players Within Radius(Event Player.meiposition, 10, Opposite Team Of(Team Of(Event Player)),
  • Surfaces And All Barriers);
  • Set Move Speed(Event Player.meiultvictim, 50);
  • Damage(Players Within Radius(Event Player.meiposition, 10, Opposite Team Of(Team Of(Event Player)), Surfaces And All Barriers),
  • Event Player, 7);
  • Wait(0.300, Ignore Condition);
  • Damage(Players Within Radius(Event Player.meiposition, 10, Opposite Team Of(Team Of(Event Player)), Surfaces And All Barriers),
  • Event Player, 7);
  • Wait(0.300, Ignore Condition);
  • Damage(Players Within Radius(Event Player.meiposition, 10, Opposite Team Of(Team Of(Event Player)), Surfaces And All Barriers),
  • Event Player, 7);
  • Wait(0.300, Ignore Condition);
  • Set Move Speed(Event Player.meiultvictim, 100);
  • Loop If Condition Is True;
  • }
  • }
  • rule("")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.ult >= 100;
  • Is Button Held(Event Player, Button(Ultimate)) == True;
  • Ultimate Charge Percent(Event Player) == 100;
  • Is Alive(Event Player) == True;
  • Has Status(Event Player, Hacked) == False;
  • Has Status(Event Player, Knocked Down) == False;
  • Has Status(Event Player, Asleep) == False;
  • Has Status(Event Player, Frozen) == False;
  • Has Status(Event Player, Stunned) == False;
  • Has Status(Event Player, Rooted) == False;
  • Event Player.cantuse == 0;
  • Is Dummy Bot(Event Player) == False;
  • }
  • actions
  • {
  • Set Ultimate Charge(Event Player.dummybot, 100);
  • Set Ultimate Charge(Event Player, 0);
  • Teleport(Event Player.dummybot, Event Player);
  • Set Facing(Event Player.dummybot, Facing Direction Of(Event Player), To World);
  • Wait(0.016, Ignore Condition);
  • Press Button(Event Player.dummybot, Button(Ultimate));
  • Wait(1, Ignore Condition);
  • Teleport(Event Player.dummybot, Vector(999, 999, 999));
  • }
  • }
Join the Workshop.codes Discord