Create
Return to post

Comparing difference between and

View raw
  • settings
  • {
  • main
  • {
  • Description: "PokéWatch v1.0 by Caaethil#2559 - Code: DDWQX - Battle and catch wild NPC Pokémon and level up your team! Sell Pokémon and buy Poké Balls at the Poké Mart, and heal your Pokémon at the Pokémon Center. All Pokémon are controlled by bots."
  • Description: "PokéWatch v1.0 by Caaethil#2559 - Code: GRTDM - Battle and catch wild NPC Pokémon and level up your team! Sell Pokémon and buy Poké Balls at the Poké Mart, and heal your Pokémon at the Pokémon Center. All Pokémon are controlled by bots."
  • }
  • lobby
  • {
  • Max Team 1 Players: 5
  • Max Team 2 Players: 0
  • }
  • modes
  • {
  • Skirmish
  • {
  • enabled maps
  • {
  • Busan
  • }
  • }
  • General
  • {
  • Allow Hero Switching: Off
  • Limit Valid Control Points: First
  • Respawn As Random Hero: On
  • Skins: Off
  • Spawn Health Packs: Disabled
  • }
  • }
  • heroes
  • {
  • General
  • {
  • Ana
  • {
  • Biotic Grenade Cooldown Time: 20%
  • }
  • D.Va
  • {
  • Spawn Without Mech: On
  • }
  • enabled heroes
  • {
  • Ana
  • }
  • }
  • }
  • extensions
  • {
  • Spawn More Dummy Bots
  • }
  • }
  • variables
  • {
  • global:
  • 0: i
  • 1: all_spawns
  • 2: available_spawns
  • 3: mart_pos
  • 4: initialised
  • 5: pokecenter_pos
  • 6: player_spawn
  • 7: green
  • 8: red
  • 9: blue
  • 10: new_wild_spawn
  • player:
  • 0: party
  • 1: random
  • 2: rarity
  • 3: rarity_effect
  • 4: selected_slot
  • 5: following
  • 6: owner
  • 7: party_slot
  • 8: scale
  • 9: shake_chance
  • 10: spawn
  • 11: new_wild_spawn
  • 12: money
  • 13: text1
  • 14: text20
  • 15: selected_value
  • 16: text3
  • 17: in_mart
  • 18: facing_lock
  • 19: menu_button_released
  • 20: poke_balls
  • 21: used_poke_ball
  • 22: poke_mart_mode
  • 23: primary_fire_released
  • 24: text21
  • 25: party_capacity
  • 26: target
  • 27: target_icon
  • 28: damage_is_ball
  • 29: level
  • 30: party_entry
  • 31: i
  • 32: using_pokecenter
  • 33: leveled
  • 34: shake_count
  • 35: shake_i
  • 36: summon_complete
  • 37: poke_ball_target
  • 38: selected_bot
  • 39: type
  • 40: type_icon
  • 41: weapon_charge_time
  • 42: reload_timer
  • 43: in_mech
  • 44: using_party_entry
  • 45: regen_timer
  • }
  • rule("Initialise Game")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • Pause Match Time;
  • Set Objective Description(All Players(All Teams), Custom String(""), Visible To and String);
  • Global.green = Array(Hero(D.Va), Hero(Wrecking Ball), Hero(Zarya), Hero(Bastion), Hero(Genji), Hero(Hanzo), Hero(McCree), Hero(
  • Symmetra), Hero(Ana), Hero(Lúcio), Hero(Zenyatta));
  • Global.red = Array(Hero(Roadhog), Hero(Sigma), Hero(Ashe), Hero(Doomfist), Hero(Junkrat), Hero(Reaper), Hero(Sombra), Hero(
  • Widowmaker), Hero(Baptiste), Hero(Moira));
  • Global.blue = Array(Hero(Orisa), Hero(Reinhardt), Hero(Winston), Hero(Echo), Hero(Mei), Hero(Pharah), Hero(Soldier: 76), Hero(
  • Torbjörn), Hero(Tracer), Hero(Brigitte), Hero(Mercy));
  • Global.all_spawns = Array(Vector(-4.371, 17.185, -111.812), Vector(-4.490, 17.185, -142.160), Vector(18.857, 14.250, -132.005),
  • Vector(19.526, 9.250, -84.023), Vector(85.619, 14.250, -109.683), Vector(86.096, 14.250, -136.472), Vector(107.799, 17.185,
  • -111.651), Vector(108.692, 17.185, -146.337), Vector(63.004, 11.250, -129.393), Vector(52.158, 13.180, -100.394), Vector(
  • 58.389, 7.250, -89.222), Vector(46.019, 7.250, -97.477), Vector(18.739, 14.250, -108.813), Vector(85.102, 9.250, -85.040),
  • Vector(40.069, 11.250, -129.183), Vector(37.063, 11.250, -108.048), Vector(67.162, 11.250, -106.648), Vector(46.133, 6.122,
  • -77.364));
  • Global.all_spawns = Randomized Array(Global.all_spawns);
  • Global.available_spawns = Array Slice(Global.all_spawns, 10 - Count Of(Filtered Array(All Players(Team 1), !Is Dummy Bot(
  • Current Array Element))), Count Of(Global.all_spawns) - 8);
  • Global.pokecenter_pos = Vector(-38.299, 18.250, -129.015);
  • Global.mart_pos = Vector(-38.322, 18.250, -121.771);
  • Create Effect(All Players(All Teams), Ring, Color(Red), Global.pokecenter_pos, 1.500, Visible To Position and Radius);
  • Create Effect(All Players(All Teams), Ring, Color(Blue), Global.mart_pos, 1.500, Visible To Position and Radius);
  • Create In-World Text(All Players(All Teams), Custom String("Pokémon Center: Heal Your Pokémon Here", Input Binding String(Button(
  • Interact))), Global.pokecenter_pos + Vector(0, 0.500, 0), 1, Clip Against Surfaces, Visible To Position and String, Color(Red),
  • Default Visibility);
  • Create In-World Text(All Players(All Teams), Custom String("Poké Mart: Sell Your Pokémon and Buy Poké Balls Here",
  • Input Binding String(Button(Interact))), Global.mart_pos + Vector(0, 0.500, 0), 1, Clip Against Surfaces,
  • Visible To Position and String, Color(Blue), Default Visibility);
  • Wait(3, Ignore Condition);
  • For Global Variable(i, 0, 10 - Count Of(Filtered Array(All Players(Team 1), !Is Dummy Bot(Current Array Element))), 1);
  • Create Dummy Bot(Random Value In Array(All Heroes), Team 2, -1, Global.all_spawns[Global.i], Vector(Random Real(-1, 1), 0,
  • Random Real(-1, 1)));
  • Last Created Entity.spawn = Global.all_spawns[Global.i];
  • Wait(0.016, Ignore Condition);
  • End;
  • disabled Create Effect(All Players(All Teams), Light Shaft, Color(Blue), Vector(-328.512, 0, 140.632), 20, Visible To Position and Radius);
  • disabled Create Effect(All Players(All Teams), Light Shaft, Color(Blue), Vector(225.532, 0, 248.473), 20, Visible To Position and Radius);
  • disabled Create Effect(All Players(All Teams), Light Shaft, Color(Blue), Vector(-387.340, 0, 162.440), 20, Visible To Position and Radius);
  • disabled Create Effect(All Players(All Teams), Light Shaft, Color(Blue), Vector(209.378, 10.312, 211.021), 20,
  • Visible To Position and Radius);
  • Global.initialised = True;
  • }
  • }
  • rule("Initialise Player")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == False;
  • }
  • actions
  • {
  • Global.player_spawn = Vector(-45.100, 18.250, -125.436);
  • Teleport(Event Player, Global.player_spawn);
  • Set Damage Dealt(Event Player, 1);
  • Set Healing Dealt(Event Player, 1);
  • Set Damage Received(Event Player, 0);
  • Set Ability 1 Enabled(Event Player, False);
  • Set Melee Enabled(Event Player, False);
  • Set Primary Fire Enabled(Event Player, False);
  • Set Secondary Fire Enabled(Event Player, False);
  • Set Ultimate Ability Enabled(Event Player, False);
  • Event Player.party_capacity = 6;
  • Event Player.party[0] = Random Value In Array(Array(Array(Hero(McCree), Custom String(""), 5, 0, 5 ^ 3 - 4 ^ 3, 0.100 * 225 * 5,
  • 0.100 * 225 * 5, 0), Array(Hero(Reaper), Custom String(""), 5, 0, 5 ^ 3 - 4 ^ 3, 0.100 * 250 * 5, 0.100 * 250 * 5, 0), Array(
  • Hero(Tracer), Custom String(""), 5, 0, 5 ^ 3 - 4 ^ 3, 0.100 * 150 * 5, 0.100 * 150 * 5, 0)));
  • disabled Event Player.party[0] = Array(Hero(D.Va), Custom String(""), 100, 0, 100 ^ 3 - 99 ^ 3, 0.100 * 600 * 100, 0.100 * 600 * 100, 1);
  • Event Player.selected_slot = 0;
  • Event Player.selected_value = 10;
  • Event Player.poke_balls = 10;
  • Event Player.used_poke_ball = False;
  • Event Player.damage_is_ball = True;
  • Event Player.menu_button_released = True;
  • Event Player.primary_fire_released = True;
  • Event Player.using_pokecenter = False;
  • Event Player.in_mart = False;
  • Create HUD Text(Event Player, Null, Null, Custom String("Your Party ({0}/{1}):", Count Of(Event Player.party),
  • Event Player.party_capacity), Left, 0, Color(White), Color(White), Color(White), Visible To and String, Default Visibility);
  • Create HUD Text(Count Of(Event Player.party) > 0 ? Event Player : Null, Null, Custom String(" Lv. {0}{1} | HP: {2}",
  • Event Player.party[0][2], Event Player.party[0][2] < 100 ? Custom String(" | EXP: {0}/{1}", Round To Integer(
  • Event Player.party[0][3], Up), Round To Integer(Event Player.party[0][4], Up)) : Custom String(""), Custom String("{0}/{1}",
  • Round To Integer(Event Player.party[0][5], Up), Round To Integer(Event Player.party[0][6], Up))), Custom String("{0} {1}{2}",
  • Hero Icon String(Event Player.party[0][0]), Event Player.party[0][1], Event Player.party[0][0]), Left, 2, Color(White), Color(
  • White), Event Player.selected_slot == 0 ? Color(Green) : Color(White), Visible To String and Color, Default Visibility);
  • Create HUD Text(Count Of(Event Player.party) > 1 ? Event Player : Null, Null, Custom String(" Lv. {0}{1} | HP: {2}",
  • Event Player.party[1][2], Event Player.party[1][2] < 100 ? Custom String(" | EXP: {0}/{1}", Round To Integer(
  • Event Player.party[1][3], Up), Round To Integer(Event Player.party[1][4], Up)) : Custom String(""), Custom String("{0}/{1}",
  • Round To Integer(Event Player.party[1][5], Up), Round To Integer(Event Player.party[1][6], Up))), Custom String("{0} {1}{2}",
  • Hero Icon String(Event Player.party[1][0]), Event Player.party[1][1], Event Player.party[1][0]), Left, 3, Color(White), Color(
  • White), Event Player.selected_slot == 1 ? Color(Green) : Color(White), Visible To String and Color, Default Visibility);
  • Create HUD Text(Count Of(Event Player.party) > 2 ? Event Player : Null, Null, Custom String(" Lv. {0}{1} | HP: {2}",
  • Event Player.party[2][2], Event Player.party[2][2] < 100 ? Custom String(" | EXP: {0}/{1}", Round To Integer(
  • Event Player.party[2][3], Up), Round To Integer(Event Player.party[2][4], Up)) : Custom String(""), Custom String("{0}/{1}",
  • Round To Integer(Event Player.party[2][5], Up), Round To Integer(Event Player.party[2][6], Up))), Custom String("{0} {1}{2}",
  • Hero Icon String(Event Player.party[2][0]), Event Player.party[2][1], Event Player.party[2][0]), Left, 4, Color(White), Color(
  • White), Event Player.selected_slot == 2 ? Color(Green) : Color(White), Visible To String and Color, Default Visibility);
  • Create HUD Text(Count Of(Event Player.party) > 3 ? Event Player : Null, Null, Custom String(" Lv. {0}{1} | HP: {2}",
  • Event Player.party[3][2], Event Player.party[3][2] < 100 ? Custom String(" | EXP: {0}/{1}", Round To Integer(
  • Event Player.party[3][3], Up), Round To Integer(Event Player.party[3][4], Up)) : Custom String(""), Custom String("{0}/{1}",
  • Round To Integer(Event Player.party[3][5], Up), Round To Integer(Event Player.party[3][6], Up))), Custom String("{0} {1}{2}",
  • Hero Icon String(Event Player.party[3][0]), Event Player.party[3][1], Event Player.party[3][0]), Left, 5, Color(White), Color(
  • White), Event Player.selected_slot == 3 ? Color(Green) : Color(White), Visible To String and Color, Default Visibility);
  • Create HUD Text(Count Of(Event Player.party) > 4 ? Event Player : Null, Null, Custom String(" Lv. {0}{1} | HP: {2}",
  • Event Player.party[4][2], Event Player.party[4][2] < 100 ? Custom String(" | EXP: {0}/{1}", Round To Integer(
  • Event Player.party[4][3], Up), Round To Integer(Event Player.party[4][4], Up)) : Custom String(""), Custom String("{0}/{1}",
  • Round To Integer(Event Player.party[4][5], Up), Round To Integer(Event Player.party[4][6], Up))), Custom String("{0} {1}{2}",
  • Hero Icon String(Event Player.party[4][0]), Event Player.party[4][1], Event Player.party[4][0]), Left, 6, Color(White), Color(
  • White), Event Player.selected_slot == 4 ? Color(Green) : Color(White), Visible To String and Color, Default Visibility);
  • Create HUD Text(Count Of(Event Player.party) > 5 ? Event Player : Null, Null, Custom String(" Lv. {0}{1} | HP: {2}",
  • Event Player.party[5][2], Event Player.party[5][2] < 100 ? Custom String(" | EXP: {0}/{1}", Round To Integer(
  • Event Player.party[5][3], Up), Round To Integer(Event Player.party[5][4], Up)) : Custom String(""), Custom String("{0}/{1}",
  • Round To Integer(Event Player.party[5][5], Up), Round To Integer(Event Player.party[5][6], Up))), Custom String("{0} {1}{2}",
  • Hero Icon String(Event Player.party[5][0]), Event Player.party[5][1], Event Player.party[5][0]), Left, 7, Color(White), Color(
  • White), Event Player.selected_slot == 5 ? Color(Green) : Color(White), Visible To String and Color, Default Visibility);
  • Create HUD Text(Event Player, Null, Null, Custom String("Hold {0} for info on how to play", Input Binding String(Button(Crouch))),
  • Right, -50, Color(White), Color(White), Color(Aqua), Visible To and String, Default Visibility);
  • Create HUD Text(Is Button Held(Event Player, Button(Crouch)) ? Event Player : Null, Null, Null, Custom String(
  • "Press {0} to cycle through your party Pokémon.", Input Binding String(Button(Secondary Fire))), Right, -49, Color(White),
  • Color(White), Color(White), Visible To and String, Default Visibility);
  • Create HUD Text(Is Button Held(Event Player, Button(Crouch)) ? Event Player : Null, Null, Null, Custom String(
  • "Press {0} to send out or withdraw your selected party Pokémon.", Input Binding String(Button(Ability 1))), Right, -48, Color(
  • White), Color(White), Color(White), Visible To and String, Default Visibility);
  • Create HUD Text(Is Button Held(Event Player, Button(Crouch)) ? Event Player : Null, Null, Null, Custom String(
  • "Press {0} while looking at a wild Pokémon to target them, or while looking away to untarget.", Input Binding String(Button(
  • Primary Fire))), Right, -47, Color(White), Color(White), Color(White), Visible To and String, Default Visibility);
  • Create HUD Text(Is Button Held(Event Player, Button(Crouch)) ? Event Player : Null, Null, Null, Custom String(
  • "Any Pokémon you send out will automatically battle your current target."), Right, -46, Color(White), Color(White), Color(
  • White), Visible To and String, Default Visibility);
  • Create HUD Text(Is Button Held(Event Player, Button(Crouch)) ? Event Player : Null, Null, Null, Custom String(
  • "If your Pokémon knocks out a wild Pokémon, it will gain Exp. Points. Gain enough Exp. Points to level up."), Right, -45,
  • Color(White), Color(White), Color(White), Visible To and String, Default Visibility);
  • Create HUD Text(Is Button Held(Event Player, Button(Crouch)) ? Event Player : Null, Null, Null, Custom String(
  • "Press {0} to throw a Poké Ball at a wild Pokémon. Reduce the target's health for better chances.", Input Binding String(
  • Button(Ability 2))), Right, -44, Color(White), Color(White), Color(White), Visible To and String, Default Visibility);
  • Create HUD Text(Is Button Held(Event Player, Button(Crouch)) ? Event Player : Null, Null, Null, Custom String(
  • "Heal your injured Pokémon by pressing {0} at the Pokémon Center in the spawn room.", Input Binding String(Button(Interact))),
  • Right, -43, Color(White), Color(White), Color(White), Visible To and String, Default Visibility);
  • Create HUD Text(Is Button Held(Event Player, Button(Crouch)) ? Event Player : Null, Null, Null, Custom String(
  • "Sell Pokémon for money by pressing {0} at the Poké Mart in the spawn room. You also gain some money passively.",
  • Input Binding String(Button(Interact))), Right, -42, Color(White), Color(White), Color(White), Visible To and String,
  • Default Visibility);
  • Create HUD Text(Is Button Held(Event Player, Button(Crouch)) ? Event Player : Null, Null, Null, Custom String(
  • "You can also buy more Poké Balls at the Poké Mart."), Right, -41, Color(White), Color(White), Color(White),
  • Visible To and String, Default Visibility);
  • Create HUD Text(Is Button Held(Event Player, Button(Crouch)) ? Event Player : Null, Null, Null, Custom String(
  • "Each Pokémon has a type. ● is strong against ■, ■ is strong against ▲, and ▲ is strong against ●."), Right, -40, Color(White),
  • Color(White), Color(White), Visible To and String, Default Visibility);
  • Create HUD Text(Is Button Held(Event Player, Button(Crouch)) ? Event Player : Null, Null, Null, Custom String(
  • "Sparkling Pokémon can appear rarely. These Pokémon have reduced catch rates and sell for more money."), Right, -39, Color(
  • White), Color(White), Color(White), Visible To and String, Default Visibility);
  • Create HUD Text(Event Player, Null, Null, Custom String("Money: ${0}", Event Player.money), Right, -2, Color(White), Color(White),
  • Color(Green), Visible To and String, Default Visibility);
  • Event Player.poke_balls = 10;
  • Create HUD Text(Event Player, Null, Null, Custom String("Poké Balls: {0}", Event Player.poke_balls), Right, -1, Color(White),
  • Color(White), Color(White), Visible To and String, Default Visibility);
  • Create Icon(Event Player.target != Null ? Event Player : Null, Event Player.target, Arrow: Down, Visible To and Position, Color(
  • White), True);
  • Event Player.target_icon = Last Created Entity;
  • }
  • }
  • rule("Initialise Wild Pokemon")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Team Of(Event Player) == Team 2;
  • }
  • actions
  • {
  • Event Player.random = Random Real(0, 1);
  • If(Event Player.random <= 0.800);
  • Event Player.rarity = Custom String("");
  • Else If(Event Player.random <= 0.950);
  • Event Player.rarity = Custom String("Rare ");
  • Create Effect(All Players(All Teams), Sparkles, Color(Blue), Event Player, 1, Visible To Position and Radius);
  • Event Player.rarity_effect = Last Created Entity;
  • Else If(Event Player.random <= 0.990);
  • Event Player.rarity = Custom String("Epic ");
  • Create Effect(All Players(All Teams), Sparkles, Color(Purple), Event Player, 1, Visible To Position and Radius);
  • Event Player.rarity_effect = Last Created Entity;
  • Else;
  • Event Player.rarity = Custom String("Legendary ");
  • Create Effect(All Players(All Teams), Sparkles, Color(Orange), Event Player, 1, Visible To Position and Radius);
  • Event Player.rarity_effect = Last Created Entity;
  • End;
  • If(Array Contains(Global.green, Hero Of(Event Player)));
  • Event Player.type = Color(Green);
  • Create In-World Text(All Players(All Teams), Custom String("●"), Event Player, 1, Clip Against Surfaces,
  • Visible To Position and String, Event Player.type, Default Visibility);
  • Event Player.type_icon = Last Text ID;
  • Else If(Array Contains(Global.red, Hero Of(Event Player)));
  • Event Player.type = Color(Red);
  • Create In-World Text(All Players(All Teams), Custom String("▲"), Event Player, 1, Clip Against Surfaces,
  • Visible To Position and String, Event Player.type, Default Visibility);
  • Event Player.type_icon = Last Text ID;
  • Else If(Array Contains(Global.blue, Hero Of(Event Player)));
  • Event Player.type = Color(Blue);
  • Create In-World Text(All Players(All Teams), Custom String("■"), Event Player, 1, Clip Against Surfaces,
  • Visible To Position and String, Event Player.type, Default Visibility);
  • Event Player.type_icon = Last Text ID;
  • End;
  • Event Player.level = Max(1, Last Of(Sorted Array(Random Value In Array(Filtered Array(All Players(Team 1), Is Dummy Bot(
  • Current Array Element) == False)).party, Current Array Element[2]))[2] - Random Integer(2, 3));
  • Set Damage Dealt(Event Player, 1.500 * Event Player.level);
  • Set Healing Dealt(Event Player, 1.500 * Event Player.level);
  • Set Max Health(Event Player, 10 * Event Player.level);
  • If(Hero Of(Event Player) == Hero(D.Va));
  • Event Player.in_mech = 1;
  • End;
  • Start Forcing Dummy Bot Name(Event Player, Custom String("{0}{1} [Lv. {2}]", Event Player.rarity, Hero Of(Event Player),
  • Event Player.level));
  • If(Event Player.in_mech == 1);
  • Set Ultimate Charge(Event Player, 100);
  • Wait(0.100, Ignore Condition);
  • Press Button(Event Player, Button(Ultimate));
  • End;
  • }
  • }
  • rule("Trainer Pokemon Movement Loop")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Team Of(Event Player) == Team 1;
  • Event Player.owner.summon_complete == True;
  • Event Player.owner.target == 0;
  • }
  • actions
  • {
  • Set Facing(Event Player, Direction Towards(Event Player, Event Player.owner), To World);
  • If(Distance Between(Event Player, Event Player.owner) > 10);
  • Event Player.following.scale = 1;
  • Start Scaling Player(Event Player, Event Player.scale, True);
  • Chase Player Variable At Rate(Event Player, scale, 0, 10, Destination and Rate);
  • Wait(0.100, Ignore Condition);
  • Stop Scaling Player(Event Player.following);
  • Teleport(Event Player, Nearest Walkable Position(Event Player + Facing Direction Of(Event Player) * (Distance Between(Event Player,
  • Event Player.owner) - 7)));
  • Start Scaling Player(Event Player, Event Player.scale, True);
  • Chase Player Variable At Rate(Event Player, scale, 1, 10, Destination and Rate);
  • Wait(0.100, Ignore Condition);
  • Stop Scaling Player(Event Player.following);
  • Else If(Distance Between(Event Player, Event Player.owner) > 7);
  • Start Throttle In Direction(Event Player, Facing Direction Of(Event Player), 1, To World, Replace existing throttle,
  • Direction and Magnitude);
  • Else If(Distance Between(Event Player, Event Player.owner) < 4);
  • Stop Throttle In Direction(Event Player);
  • End;
  • Wait(0.050, Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • rule("Trainer Pokemon Communicate")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == False;
  • Team Of(Event Player) == Team 1;
  • Event Player.summon_complete == True;
  • Event Player.target == 0;
  • Is Communicating Any(Event Player) == True;
  • }
  • actions
  • {
  • If(Is Communicating(Event Player, Hello) == True);
  • Wait(1.500, Ignore Condition);
  • Communicate(Event Player.following, Hello);
  • Else If(Is Communicating(Event Player, Group Up));
  • Wait(1.500, Ignore Condition);
  • Communicate(Event Player.following, Acknowledge);
  • Else If(Is Communicating(Event Player, Thanks));
  • Wait(1.500, Ignore Condition);
  • Communicate(Event Player.following, You are Welcome);
  • End;
  • Wait(0.500, Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • rule("Cycle Party")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Secondary Fire)) == True;
  • }
  • actions
  • {
  • Event Player.selected_slot = (Event Player.selected_slot + 1) % Count Of(Event Player.party);
  • If(Event Player.party[Event Player.selected_slot][1] == Custom String(""));
  • Event Player.selected_value = 10;
  • Else If(Event Player.party[Event Player.selected_slot][1] == Custom String("Rare "));
  • Event Player.selected_value = 50;
  • Else If(Event Player.party[Event Player.selected_slot][1] == Custom String("Epic "));
  • Event Player.selected_value = 100;
  • Else;
  • Event Player.selected_value = 200;
  • End;
  • }
  • }
  • rule("Send Out/Withdraw Pokemon")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Ability 1)) == True;
  • Event Player.using_pokecenter == False;
  • Event Player.in_mart == False;
  • }
  • actions
  • {
  • If(Event Player.party[Event Player.selected_slot][5] == 0);
  • Small Message(Event Player, Custom String("Your {0}{1} has fainted! Visit the Pokémon Center in the spawn room!",
  • Event Player.party[Event Player.selected_slot][1], Event Player.party[Event Player.selected_slot][0]));
  • Else;
  • Event Player.summon_complete = False;
  • If(Event Player.following != 0);
  • Stop Holding Button(Event Player.following, Hero Of(Event Player.following) != Hero(Moira) ? Button(Primary Fire) : Button(
  • Secondary Fire));
  • Wait(0.050, Ignore Condition);
  • For Player Variable(Event Player, i, 0, Count Of(All Players(Team 2)), 1);
  • If(All Players(Team 2)[Event Player.i].target == Event Player.following);
  • All Players(Team 2)[Event Player.i].target = 0;
  • End;
  • Wait(0.016, Ignore Condition);
  • End;
  • If(Event Player.selected_slot == Event Player.following.party_slot);
  • Small Message(Event Player, Custom String("Withdrew {0}{1}", Event Player.following.rarity, Hero Of(Event Player.following)));
  • End;
  • Destroy Effect(Event Player.following.rarity_effect);
  • Destroy In-World Text(Event Player.following.type_icon);
  • Event Player.following.scale = 1;
  • Start Scaling Player(Event Player.following, Event Player.following.scale, True);
  • Chase Player Variable At Rate(Event Player.following, scale, 0, 10, Destination and Rate);
  • Wait(0.100, Ignore Condition);
  • Stop Scaling Player(Event Player.following);
  • Destroy Dummy Bot(Team 1, Slot Of(Event Player.following));
  • End;
  • If(Event Player.following == 0 || Event Player.selected_slot != Event Player.following.party_slot);
  • Create Dummy Bot(Event Player.party[Event Player.selected_slot][0], Team 1, -1, Position Of(Event Player) + Vector(X Component Of(
  • Facing Direction Of(Event Player)), 9999, Z Component Of(Facing Direction Of(Event Player))) * 4, Event Player);
  • Event Player.following = Last Created Entity;
  • Event Player.following.owner = Event Player;
  • Event Player.following.party_slot = Event Player.selected_slot;
  • Event Player.following.rarity = Event Player.party[Event Player.following.party_slot][1];
  • Event Player.following.level = Event Player.party[Event Player.following.party_slot][2];
  • Set Damage Dealt(Event Player.following, 1.500 * Event Player.following.level);
  • Set Healing Dealt(Event Player.following, 1.500 * Event Player.following.level);
  • Set Max Health(Event Player.following, 10 * Event Player.following.level);
  • Set Player Health(Event Player.following, Event Player.party[Event Player.following.party_slot][5]);
  • Event Player.following.in_mech = Event Player.party[Event Player.following.party_slot][7];
  • If(Event Player.following.rarity == Custom String("Rare "));
  • Create Effect(All Players(All Teams), Sparkles, Color(Blue), Event Player.following, 1, Visible To Position and Radius);
  • Event Player.following.rarity_effect = Last Created Entity;
  • Else If(Event Player.following.rarity == Custom String("Epic "));
  • Create Effect(All Players(All Teams), Sparkles, Color(Purple), Event Player.following, 1, Visible To Position and Radius);
  • Event Player.following.rarity_effect = Last Created Entity;
  • Else If(Event Player.following.rarity == Custom String("Legendary "));
  • Create Effect(All Players(All Teams), Sparkles, Color(Orange), Event Player.following, 1, Visible To Position and Radius);
  • Event Player.following.rarity_effect = Last Created Entity;
  • End;
  • If(Array Contains(Global.green, Hero Of(Event Player.following)));
  • Event Player.following.type = Color(Green);
  • Create In-World Text(All Players(All Teams), Custom String("●"), Event Player.following, 1, Clip Against Surfaces,
  • Visible To Position and String, Event Player.following.type, Default Visibility);
  • Event Player.following.type_icon = Last Text ID;
  • Else If(Array Contains(Global.red, Hero Of(Event Player.following)));
  • Event Player.following.type = Color(Red);
  • Create In-World Text(All Players(All Teams), Custom String("▲"), Event Player.following, 1, Clip Against Surfaces,
  • Visible To Position and String, Event Player.following.type, Default Visibility);
  • Event Player.following.type_icon = Last Text ID;
  • Else If(Array Contains(Global.blue, Hero Of(Event Player.following)));
  • Event Player.following.type = Color(Blue);
  • Create In-World Text(All Players(All Teams), Custom String("■"), Event Player.following, 1, Clip Against Surfaces,
  • Visible To Position and String, Event Player.following.type, Default Visibility);
  • Event Player.following.type_icon = Last Text ID;
  • End;
  • Start Forcing Dummy Bot Name(Event Player.following, Custom String("{0}'s {1} [Lv. {2}]", Event Player, Custom String("{0}{1}",
  • Event Player.following.rarity, Hero Of(Event Player.following)), Event Player.following.level));
  • If(Event Player.following.in_mech == 1);
  • Set Ultimate Charge(Event Player.following, 100);
  • End;
  • Start Scaling Player(Event Player.following, Event Player.following.scale, True);
  • Set Damage Received(Event Player.following, 0);
  • Wait(0.016, Ignore Condition);
  • Teleport(Event Player.following, Nearest Walkable Position(Vector(X Component Of(Position Of(Event Player.following)),
  • Y Component Of(Position Of(Event Player)), Z Component Of(Position Of(Event Player.following)))));
  • Chase Player Variable At Rate(Event Player.following, scale, 1, 10, Destination and Rate);
  • Wait(0.100, Ignore Condition);
  • Stop Scaling Player(Event Player.following);
  • Play Effect(All Players(All Teams), Ring Explosion, Color(Aqua), Position Of(Event Player.following), 1.500);
  • Small Message(Event Player, Custom String("Sent out {0}{1}", Event Player.following.rarity, Hero Of(Event Player.following)));
  • If(Event Player.following.in_mech == 1);
  • Press Button(Event Player.following, Button(Ultimate));
  • Wait(2, Ignore Condition);
  • Set Player Health(Event Player.following, Event Player.party[Event Player.following.party_slot][5]);
  • End;
  • Set Damage Received(Event Player.following, 100);
  • Event Player.summon_complete = True;
  • Else;
  • Event Player.following = 0;
  • End;
  • End;
  • }
  • }
  • rule("Set Target")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Primary Fire)) == True;
  • Is Dummy Bot(Event Player) == False;
  • }
  • actions
  • {
  • Event Player.target = Ray Cast Hit Player(Eye Position(Event Player), Eye Position(Event Player) + Facing Direction Of(
  • Event Player) * 1000, All Living Players(Opposite Team Of(Team Of(Event Player))), Event Player, True);
  • If(Event Player.target != 0);
  • Event Player.damage_is_ball = False;
  • Damage(Event Player.target, Event Player, 1);
  • Heal(Event Player.target, Null, 1);
  • Wait(0.016, Ignore Condition);
  • Event Player.damage_is_ball = True;
  • End;
  • }
  • }
  • rule("Trainer Pokemon Attack")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Team Of(Event Player) == Team 1;
  • Event Player.owner.summon_complete == True;
  • Event Player.owner.target != 0;
  • }
  • actions
  • {
  • Set Facing(Event Player, Direction Towards(Eye Position(Event Player), Eye Position(Event Player.owner.target)), To World);
  • If(Distance Between(Event Player, Event Player.owner.target) > 3);
  • Start Throttle In Direction(Event Player, Facing Direction Of(Event Player), 1, To World, Replace existing throttle,
  • Direction and Magnitude);
  • Else If(Distance Between(Event Player, Event Player.owner.target) <= 3);
  • Stop Throttle In Direction(Event Player);
  • End;
  • If(Hero Of(Event Player) == Hero(Ashe));
  • If(Ammo(Event Player, 0) == 0);
  • Event Player.weapon_charge_time = 0;
  • Stop Holding Button(Event Player, Button(Primary Fire));
  • Event Player.reload_timer = 3.500;
  • Chase Player Variable At Rate(Event Player, reload_timer, 0, 1, Destination and Rate);
  • Else If(!Is Button Held(Event Player, Button(Primary Fire)) && Ammo(Event Player, 0)
  • > 0 && Event Player.weapon_charge_time < 0.250);
  • Chase Player Variable At Rate(Event Player, weapon_charge_time, 0.250, 1, Destination and Rate);
  • Start Holding Button(Event Player, Button(Primary Fire));
  • Else If(Event Player.weapon_charge_time == 0.250);
  • Event Player.weapon_charge_time = 0;
  • Stop Holding Button(Event Player, Button(Primary Fire));
  • End;
  • Else If(Hero Of(Event Player) == Hero(Hanzo));
  • If(!Is Button Held(Event Player, Button(Primary Fire)) && Event Player.weapon_charge_time < 0.750);
  • Chase Player Variable At Rate(Event Player, weapon_charge_time, 0.750, 1, Destination and Rate);
  • Start Holding Button(Event Player, Button(Primary Fire));
  • Else If(Event Player.weapon_charge_time == 0.750);
  • Event Player.weapon_charge_time = 0;
  • Stop Holding Button(Event Player, Button(Primary Fire));
  • End;
  • Else;
  • If(!Is Button Held(Event Player, Hero Of(Event Player) != Hero(Moira) ? Button(Primary Fire) : Button(Secondary Fire)));
  • Start Holding Button(Event Player, Hero Of(Event Player) != Hero(Moira) ? Button(Primary Fire) : Button(Secondary Fire));
  • End;
  • End;
  • Wait(0.050, Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • rule("Trainer Pokemon Kill")
  • {
  • event
  • {
  • Player Earned Elimination;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Team Of(Event Player) == Team 1;
  • Event Player.owner.summon_complete == True;
  • Event Player.owner.target == Victim;
  • }
  • actions
  • {
  • If(Event Player.owner.target == Victim);
  • Event Player.owner.target = 0;
  • End;
  • If(Event Player.level < 100);
  • Event Player.using_party_entry = True;
  • Event Player.party_entry = Event Player.owner.party[Event Player.party_slot];
  • Event Player.party_entry[3] = Event Player.party_entry[3] + 10 * Victim.level;
  • Small Message(Event Player.owner, Custom String("{0} gained {1} Exp. Points!", Event Player.party_entry[0], 10 * Victim.level));
  • While(Event Player.party_entry[3] >= Event Player.party_entry[4] && Event Player.level < 100);
  • Event Player.leveled = True;
  • Event Player.level += 1;
  • Event Player.party_entry[3] = Event Player.party_entry[3] - Event Player.party_entry[4];
  • Event Player.party_entry[4] = Event Player.level ^ 3 - (Event Player.level - 1) ^ 3;
  • Wait(0.016, Ignore Condition);
  • End;
  • If(Event Player.leveled);
  • Event Player.party_entry[2] = Event Player.level;
  • Big Message(Event Player.owner, Custom String("{0} grew to level {1}!", Event Player.party_entry[0], Event Player.level));
  • Set Damage Dealt(Event Player, 1.500 * Event Player.level);
  • Set Healing Dealt(Event Player, 1.500 * Event Player.level);
  • Set Max Health(Event Player, 10 * Event Player.level);
  • Start Forcing Dummy Bot Name(Event Player, Custom String("{0}'s {1} [Lv. {2}]", Event Player.owner, Custom String("{0}{1}",
  • Event Player.rarity, Hero Of(Event Player)), Event Player.level));
  • Wait(0.016, Ignore Condition);
  • Event Player.party_entry[6] = Max Health(Event Player);
  • Event Player.leveled = False;
  • End;
  • Event Player.owner.party[Event Player.party_slot] = Event Player.party_entry;
  • Event Player.using_party_entry = False;
  • End;
  • }
  • }
  • rule("Trainer Pokemon Death")
  • {
  • event
  • {
  • Player Died;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Team Of(Event Player) == Team 1;
  • }
  • actions
  • {
  • Small Message(Event Player.owner, Custom String("{0}{1} fainted!", Event Player.rarity, Hero Of(Event Player)));
  • Destroy Effect(Event Player.rarity_effect);
  • Destroy In-World Text(Event Player.type_icon);
  • Chase Player Variable At Rate(Event Player, scale, 0, 10, Destination and Rate);
  • Wait(0.100, Ignore Condition);
  • Destroy Dummy Bot(Team 1, Slot Of(Event Player));
  • Event Player.owner.following = 0;
  • }
  • }
  • rule("Throw Poke Ball")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == False;
  • Is Button Held(Event Player, Button(Ability 2)) == True;
  • }
  • actions
  • {
  • If(Is Using Ability 2(Event Player) && Event Player.used_poke_ball == False);
  • Event Player.used_poke_ball = True;
  • Event Player.poke_balls = Event Player.poke_balls - 1;
  • If(Event Player.poke_balls == 0);
  • Set Ability 2 Enabled(Event Player, False);
  • End;
  • Wait Until(Ability Cooldown(Event Player, Button(Ability 2)) > 0, 99999);
  • Event Player.used_poke_ball = False;
  • Else If(Event Player.poke_balls == 0);
  • Small Message(Event Player, Custom String("You have no Poké Balls! Buy some at the Poké Mart in the spawn room!"));
  • End;
  • }
  • }
  • rule("Capture Pokemon (Hit Target)")
  • {
  • event
  • {
  • Player Dealt Damage;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == False;
  • Is Dummy Bot(Victim) == True;
  • Event Player.damage_is_ball == True;
  • Event Player.poke_ball_target == Null;
  • }
  • actions
  • {
  • Wait(0.016, Ignore Condition);
  • Event Player.poke_ball_target[Count Of(Event Player.poke_ball_target)] = Victim;
  • }
  • }
  • rule("Capture Pokemon (Final Target)")
  • {
  • event
  • {
  • Player Dealt Damage;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == False;
  • Is Dummy Bot(Victim) == True;
  • Event Player.damage_is_ball == True;
  • Count Of(Event Player.poke_ball_target) == 0;
  • }
  • actions
  • {
  • Wait(0.100, Ignore Condition);
  • Event Player.poke_ball_target = First Of(Sorted Array(Event Player.poke_ball_target, Health(Current Array Element) / Max Health(
  • Current Array Element)));
  • Event Player.poke_ball_target.regen_timer = 0;
  • If(Event Player.poke_ball_target.rarity == Custom String(""));
  • Event Player.shake_chance = 100;
  • Else If(Event Player.poke_ball_target.rarity == Custom String("Rare "));
  • Event Player.shake_chance = 70;
  • Else If(Event Player.poke_ball_target.rarity == Custom String("Epic "));
  • Event Player.shake_chance = 40;
  • Else;
  • Event Player.shake_chance = 10;
  • End;
  • Event Player.shake_chance = 65536 / (255 * 3 * Max Health(Event Player.poke_ball_target) / (Event Player.shake_chance * (
  • 3 * Max Health(Event Player.poke_ball_target) - 2 * Health(Event Player.poke_ball_target)))) ^ 0.188;
  • Event Player.shake_count = 0;
  • For Player Variable(Event Player, shake_i, 0, 4, 1);
  • If(Random Integer(0, 65535) < Event Player.shake_chance);
  • Event Player.shake_count = Event Player.shake_count + 1;
  • End;
  • End;
  • If(Event Player.shake_count == 4);
  • If(Count Of(Event Player.party) < Event Player.party_capacity);
  • If(Event Player.target == Event Player.poke_ball_target);
  • Event Player.target = 0;
  • End;
  • Event Player.party[Count Of(Event Player.party)] = Array(Hero Of(Event Player.poke_ball_target),
  • Event Player.poke_ball_target.rarity, Event Player.poke_ball_target.level, 0, Event Player.poke_ball_target.level ^ 3 - (
  • Event Player.poke_ball_target.level - 1) ^ 3, Health(Event Player.poke_ball_target), Max Health(Event Player.poke_ball_target),
  • Event Player.poke_ball_target.in_mech);
  • Big Message(Event Player, Custom String("Captured {0}{1}!", Last Of(Event Player.party)[1], Last Of(Event Player.party)[0]));
  • Destroy Effect(Event Player.poke_ball_target.rarity_effect);
  • Destroy In-World Text(Event Player.poke_ball_target.type_icon);
  • Global.available_spawns = Append To Array(Global.available_spawns, Event Player.poke_ball_target.spawn);
  • Destroy Dummy Bot(Team 2, Slot Of(Event Player.poke_ball_target));
  • Event Player.new_wild_spawn = Random Value In Array(Filtered Array(Global.all_spawns, Array Contains(Global.available_spawns,
  • Current Array Element)));
  • Global.available_spawns = Remove From Array(Global.available_spawns, Event Player.new_wild_spawn);
  • Create Dummy Bot(Random Value In Array(All Heroes), Team 2, -1, Event Player.new_wild_spawn, Vector(Random Real(-1, 1), 0,
  • Random Real(-1, 1)));
  • Last Created Entity.spawn = Event Player.new_wild_spawn;
  • Else;
  • Heal(Event Player.poke_ball_target, Null, Event Damage);
  • Big Message(Event Player, Custom String("Your party is full!"));
  • End;
  • Else If(Event Player.shake_count == 3);
  • Small Message(Event Player, Custom String("Gah! It was so close, too!"));
  • Else If(Event Player.shake_count == 2);
  • Small Message(Event Player, Custom String("Aargh! Almost had it!"));
  • Else If(Event Player.shake_count == 1);
  • Small Message(Event Player, Custom String("Aww! It appeared to be caught!"));
  • Else;
  • Small Message(Event Player, Custom String("Oh no! The Pokémon broke free!"));
  • End;
  • End;
  • Event Player.poke_ball_target = Null;
  • }
  • }
  • rule("Wild Pokemon Look Loop")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Team Of(Event Player) == Team 2;
  • Event Player.target == 0;
  • }
  • actions
  • {
  • Stop Facing(Event Player);
  • Set Facing(Event Player, Vector(Random Real(-1, 1), 0, Random Real(-1, 1)), To World);
  • Wait(Random Real(0.250, 5), Abort When False);
  • Loop If Condition Is True;
  • }
  • }
  • rule("Wild Pokemon Walk Loop")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Team Of(Event Player) == Team 2;
  • Event Player.target == 0;
  • }
  • actions
  • {
  • If(Throttle Of(Event Player) == Vector(0, 0, 0));
  • Start Throttle In Direction(Event Player, Vector(0, 0, 1), 1, To Player, Replace existing throttle, Direction and Magnitude);
  • Else;
  • Stop Throttle In Direction(Event Player);
  • End;
  • Wait(Random Real(0.250, 5), Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • rule("Wild Pokemon Death")
  • {
  • event
  • {
  • Player Died;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Team Of(Event Player) == Team 2;
  • }
  • actions
  • {
  • Destroy Effect(Event Player.rarity_effect);
  • Destroy In-World Text(Event Player.type_icon);
  • Wait(9, Ignore Condition);
  • Global.available_spawns = Append To Array(Global.available_spawns, Event Player.spawn);
  • Destroy Dummy Bot(Team 2, Slot Of(Event Player));
  • Event Player.new_wild_spawn = Random Value In Array(Filtered Array(Global.all_spawns, Array Contains(Global.available_spawns,
  • Current Array Element)));
  • Global.available_spawns = Remove From Array(Global.available_spawns, Event Player.new_wild_spawn);
  • Create Dummy Bot(Random Value In Array(All Heroes), Team 2, -1, Event Player.new_wild_spawn, Vector(Random Real(-1, 1), 0,
  • Random Real(-1, 1)));
  • Last Created Entity.spawn = Event Player.new_wild_spawn;
  • }
  • }
  • rule("Wild Pokemon Take Damage")
  • {
  • event
  • {
  • Player Took Damage;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Team Of(Event Player) == Team 2;
  • Event Player.target == 0;
  • Attacker.owner != 0;
  • }
  • actions
  • {
  • Event Player.target = Attacker;
  • Event Player.regen_timer = 0;
  • }
  • }
  • rule("Wild Pokemon Attack")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Team Of(Event Player) == Team 2;
  • Event Player.target != 0;
  • }
  • actions
  • {
  • Set Facing(Event Player, Direction Towards(Eye Position(Event Player), Eye Position(Event Player.target)), To World);
  • If(Distance Between(Event Player, Event Player.target) > 7);
  • Start Throttle In Direction(Event Player, Facing Direction Of(Event Player), 1, To World, Replace existing throttle,
  • Direction and Magnitude);
  • Else If(Distance Between(Event Player, Event Player.target) < 4);
  • Stop Throttle In Direction(Event Player);
  • End;
  • If(Hero Of(Event Player) == Hero(Ashe));
  • If(Ammo(Event Player, 0) == 0);
  • Event Player.weapon_charge_time = 0;
  • Stop Holding Button(Event Player, Button(Primary Fire));
  • Event Player.reload_timer = 3.500;
  • Chase Player Variable At Rate(Event Player, reload_timer, 0, 1, Destination and Rate);
  • Else If(!Is Button Held(Event Player, Button(Primary Fire))
  • && Event Player.reload_timer == 0 && Event Player.weapon_charge_time < 0.250);
  • Chase Player Variable At Rate(Event Player, weapon_charge_time, 0.250, 1, Destination and Rate);
  • Start Holding Button(Event Player, Button(Primary Fire));
  • Else If(Event Player.weapon_charge_time == 0.250);
  • Event Player.weapon_charge_time = 0;
  • Stop Holding Button(Event Player, Button(Primary Fire));
  • End;
  • Else If(Hero Of(Event Player) == Hero(Hanzo));
  • If(!Is Button Held(Event Player, Button(Primary Fire)) && Event Player.weapon_charge_time < 0.750);
  • Chase Player Variable At Rate(Event Player, weapon_charge_time, 0.750, 1, Destination and Rate);
  • Start Holding Button(Event Player, Button(Primary Fire));
  • Else If(Event Player.weapon_charge_time == 0.750);
  • Event Player.weapon_charge_time = 0;
  • Stop Holding Button(Event Player, Button(Primary Fire));
  • End;
  • Else;
  • If(!Is Button Held(Event Player, Hero Of(Event Player) != Hero(Moira) ? Button(Primary Fire) : Button(Secondary Fire)));
  • Start Holding Button(Event Player, Hero Of(Event Player) != Hero(Moira) ? Button(Primary Fire) : Button(Secondary Fire));
  • End;
  • End;
  • Wait(0.050, Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • rule("Wild Pokemon Kill")
  • {
  • event
  • {
  • Player Earned Elimination;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Team Of(Event Player) == Team 2;
  • }
  • actions
  • {
  • If(Event Player.target == Victim);
  • Event Player.target = 0;
  • End;
  • }
  • }
  • rule("Wild Pokemon Regen")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Team Of(Event Player) == Team 2;
  • Event Player.target == Null;
  • Health(Event Player) < Max Health(Event Player);
  • }
  • actions
  • {
  • If(Event Player.regen_timer < 20);
  • Wait(1, Ignore Condition);
  • Event Player.regen_timer = Event Player.regen_timer + 1;
  • Loop If Condition Is True;
  • Else;
  • Heal(Event Player, Null, Max Health(Event Player));
  • Event Player.regen_timer = 0;
  • }
  • }
  • rule("Pokemon No Target")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • ((Event Player.owner != Null && Event Player.owner.target == 0) || (Event Player.owner == Null && Event Player.target == 0))
  • == True;
  • }
  • actions
  • {
  • Stop Holding Button(Event Player, Hero Of(Event Player) != Hero(Moira) ? Button(Primary Fire) : Button(Secondary Fire));
  • }
  • }
  • rule("Player Enter Pokemon Center Radius")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == False;
  • Distance Between(Event Player, Global.pokecenter_pos) <= 2;
  • }
  • actions
  • {
  • Small Message(Event Player, Custom String("Press {0} to Enter the Pokémon Center", Input Binding String(Button(Interact))));
  • }
  • }
  • rule("Player Use Pokemon Center")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == False;
  • Distance Between(Event Player, Global.pokecenter_pos) <= 2;
  • Is Button Held(Event Player, Button(Interact)) == True;
  • }
  • actions
  • {
  • Set Status(Event Player, Null, Phased Out, 9999);
  • Set Move Speed(Event Player, 0);
  • Event Player.using_pokecenter = True;
  • Set Ability 2 Enabled(Event Player, False);
  • Set Crouch Enabled(Event Player, False);
  • For Player Variable(Event Player, i, 3, 0, -1);
  • Small Message(Event Player, Custom String("{0}...", Event Player.i));
  • Wait(1, Ignore Condition);
  • End;
  • For Player Variable(Event Player, i, 0, Count Of(Event Player.party), 1);
  • Event Player.party_entry = Event Player.party[Event Player.i];
  • If(Event Player.party_entry[0] == Hero(D.Va));
  • Event Player.party_entry[6] = 60 * Event Player.party_entry[2];
  • Event Player.party_entry[7] = 1;
  • End;
  • Event Player.party_entry[5] = Event Player.party_entry[6];
  • Event Player.party[Event Player.i] = Event Player.party_entry;
  • Wait(0.016, Ignore Condition);
  • End;
  • If(Hero Of(Event Player.following) == Hero(D.Va));
  • Event Player.following.in_mech = 1;
  • End;
  • Small Message(Event Player, Custom String("Your Pokémon have been fully healed!"));
  • Set Move Speed(Event Player, 100);
  • Event Player.using_pokecenter = False;
  • If(Event Player.poke_balls > 0);
  • Set Ability 2 Enabled(Event Player, True);
  • End;
  • Set Crouch Enabled(Event Player, True);
  • Clear Status(Event Player, Phased Out);
  • If(Hero Of(Event Player.following) == Hero(D.Va) && Is In Alternate Form(Event Player.following));
  • Set Ultimate Charge(Event Player.following, 100);
  • Wait(0.100, Ignore Condition);
  • Press Button(Event Player.following, Button(Ultimate));
  • End;
  • }
  • }
  • rule("Player Enter Poke Mart Radius")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == False;
  • Distance Between(Event Player, Global.mart_pos) <= 2;
  • }
  • actions
  • {
  • Small Message(Event Player, Custom String("Press {0} to Enter the Poké Mart", Input Binding String(Button(Interact))));
  • }
  • }
  • rule("Player Enter Poke Mart Menu")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == False;
  • Distance Between(Event Player, Global.mart_pos) <= 2;
  • Is Button Held(Event Player, Button(Interact)) == True;
  • Event Player.menu_button_released == True;
  • Event Player.in_mart == False;
  • }
  • actions
  • {
  • Set Status(Event Player, Null, Phased Out, 9999);
  • Set Move Speed(Event Player, 0);
  • Set Ability 2 Enabled(Event Player, False);
  • Set Crouch Enabled(Event Player, False);
  • Event Player.facing_lock = Vector(X Component Of(Facing Direction Of(Event Player)), 0, Z Component Of(Facing Direction Of(
  • Event Player)));
  • Start Facing(Event Player, Event Player.facing_lock, 300, To World, Direction and Turn Rate);
  • Wait(0.320, Ignore Condition);
  • Create In-World Text(Event Player, Custom String("Welcome to the Poké Mart! You can sell your Pokémon and buy Poké Balls here."),
  • Eye Position(Event Player) + Facing Direction Of(Event Player), 1.200, Do Not Clip, Visible To Position and String, Color(
  • White), Default Visibility);
  • Event Player.text1 = Last Text ID;
  • Create In-World Text(Event Player.poke_mart_mode == 0 ? Event Player : Null, Custom String("Sell your {0} for ${1}?",
  • Custom String("{0} {1}{2}", Hero Icon String(Event Player.party[Event Player.selected_slot][0]),
  • Event Player.party[Event Player.selected_slot][1], Event Player.party[Event Player.selected_slot][0]),
  • Event Player.selected_value), Eye Position(Event Player) + Facing Direction Of(Event Player) + Vector(0, -0.100, 0), 1.200,
  • Do Not Clip, Visible To Position and String, Color(Green), Default Visibility);
  • Event Player.text20 = Last Text ID;
  • Create In-World Text(Event Player.poke_mart_mode == 1 ? Event Player : Null, Custom String("Buy a {0} Poké Ball for $5?",
  • Ability Icon String(Hero(Ana), Button(Ability 2))), Eye Position(Event Player) + Facing Direction Of(Event Player) + Vector(0,
  • -0.100, 0), 1.200, Do Not Clip, Visible To Position and String, Color(Green), Default Visibility);
  • Event Player.text21 = Last Text ID;
  • Create In-World Text(Event Player, Custom String("{0}: Accept {1}: Cycle Options {2}", Input Binding String(Button(
  • Primary Fire)), Input Binding String(Button(Secondary Fire)), Custom String("{0}: Switch to {1} Shop {2}: Leave Poké Mart",
  • Input Binding String(Button(Ability 1)), Event Player.poke_mart_mode == 0 ? Custom String("Buy") : Custom String("Sell"),
  • Input Binding String(Button(Interact)))), Eye Position(Event Player) + Facing Direction Of(Event Player) + Vector(0, -0.200,
  • 0), 1.200, Do Not Clip, Visible To Position and String, Color(Yellow), Default Visibility);
  • Event Player.text3 = Last Text ID;
  • Event Player.menu_button_released = False;
  • Event Player.in_mart = True;
  • }
  • }
  • rule("Player Release Menu Button")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.menu_button_released == False;
  • Is Button Held(Event Player, Button(Interact)) == False;
  • }
  • actions
  • {
  • Event Player.menu_button_released = True;
  • }
  • }
  • rule("Player Toggle Poke Mart")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == False;
  • Is Button Held(Event Player, Button(Ability 1)) == True;
  • Event Player.in_mart == True;
  • }
  • actions
  • {
  • Event Player.poke_mart_mode = (Event Player.poke_mart_mode + 1) % 2;
  • }
  • }
  • rule("Player Sell Pokemon")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == False;
  • Event Player.in_mart == True;
  • Event Player.poke_mart_mode == 0;
  • Event Player.primary_fire_released == True;
  • Is Button Held(Event Player, Button(Primary Fire)) == True;
  • }
  • actions
  • {
  • Event Player.primary_fire_released = False;
  • If(Count Of(Event Player.party) == 1);
  • Small Message(Event Player, Custom String("You can't sell your only Pokémon!"));
  • Else;
  • Small Message(Event Player, Custom String("Sold {0}{1} for ${2}!", Event Player.party[Event Player.selected_slot][1],
  • Event Player.party[Event Player.selected_slot][0], Event Player.selected_value));
  • Wait(0.016, Ignore Condition);
  • If(Event Player.following.party_slot == Event Player.selected_slot);
  • Destroy Effect(Event Player.following.rarity_effect);
  • Destroy In-World Text(Event Player.following.type_icon);
  • Chase Player Variable At Rate(Event Player.following, scale, 0, 10, Destination and Rate);
  • Wait(0.100, Ignore Condition);
  • Destroy Dummy Bot(Team 1, Slot Of(Event Player.following));
  • Event Player.following = 0;
  • End;
  • Event Player.party = Append To Array(Array Slice(Event Player.party, 0, Event Player.selected_slot), Array Slice(
  • Event Player.party, Event Player.selected_slot + 1, Count Of(Event Player.party)));
  • If(Event Player.selected_slot == Count Of(Event Player.party));
  • Event Player.selected_slot = Event Player.selected_slot - 1;
  • End;
  • Event Player.money = Event Player.money + Event Player.selected_value;
  • If(Event Player.party[Event Player.selected_slot][1] == Custom String(""));
  • Event Player.selected_value = 20;
  • Else If(Event Player.party[Event Player.selected_slot][1] == Custom String("Rare "));
  • Event Player.selected_value = 60;
  • Else If(Event Player.party[Event Player.selected_slot][1] == Custom String("Epic "));
  • Event Player.selected_value = 180;
  • Else;
  • Event Player.selected_value = 540;
  • End;
  • End;
  • }
  • }
  • rule("Player Buy Item")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == False;
  • Event Player.in_mart == True;
  • Event Player.poke_mart_mode == 1;
  • Event Player.primary_fire_released == True;
  • Is Button Held(Event Player, Button(Primary Fire)) == True;
  • }
  • actions
  • {
  • Event Player.primary_fire_released = False;
  • If(Event Player.money >= 5);
  • Event Player.money = Event Player.money - 5;
  • Event Player.poke_balls = Event Player.poke_balls + 1;
  • Small Message(Event Player, Custom String("Bought a Poké Ball for $5!"));
  • Else;
  • Small Message(Event Player, Custom String("You don't have enough money!"));
  • End;
  • }
  • }
  • rule("Player Release Primary Fire")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Event Player.primary_fire_released == False;
  • Is Button Held(Event Player, Button(Primary Fire)) == False;
  • }
  • actions
  • {
  • Event Player.primary_fire_released = True;
  • }
  • }
  • rule("Player Leave Poke Mart Menu")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == False;
  • Is Button Held(Event Player, Button(Interact)) == True;
  • Event Player.menu_button_released == True;
  • Event Player.in_mart == True;
  • }
  • actions
  • {
  • Destroy In-World Text(Event Player.text1);
  • Destroy In-World Text(Event Player.text20);
  • Destroy In-World Text(Event Player.text21);
  • Destroy In-World Text(Event Player.text3);
  • If(Event Player.poke_balls > 0);
  • Set Ability 2 Enabled(Event Player, True);
  • End;
  • Set Crouch Enabled(Event Player, True);
  • Stop Facing(Event Player);
  • Set Move Speed(Event Player, 100);
  • Event Player.poke_mart_mode = 0;
  • Event Player.menu_button_released = False;
  • Event Player.in_mart = False;
  • Clear Status(Event Player, Phased Out);
  • }
  • }
  • rule("Respawn Player")
  • {
  • event
  • {
  • Player Died;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == False;
  • }
  • actions
  • {
  • Wait Until(Is Alive(Event Player), 99999);
  • Teleport(Event Player, Global.player_spawn);
  • }
  • }
  • rule("Passive Income")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == False;
  • }
  • actions
  • {
  • Wait(20, Ignore Condition);
  • Event Player.money = Event Player.money + 1;
  • Loop If Condition Is True;
  • }
  • }
  • rule("Update Trainer Pokemon Party HP")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Team Of(Event Player) == Team 1;
  • Event Player.using_party_entry == False;
  • Event Player.owner.summon_complete == True;
  • Event Player.owner.using_pokecenter == False;
  • Health(Event Player) != Event Player.owner.party[Event Player.party_slot][5];
  • }
  • actions
  • {
  • Event Player.party_entry = Event Player.owner.party[Event Player.party_slot];
  • Event Player.party_entry[5] = Health(Event Player);
  • Event Player.owner.party[Event Player.party_slot] = Event Player.party_entry;
  • Wait(0.016, Abort When False);
  • Loop If Condition Is True;
  • }
  • }
  • rule("Cancel Trainer Pokemon Healing From Player")
  • {
  • event
  • {
  • Player Received Healing;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Healer) == False;
  • }
  • actions
  • {
  • Damage(Event Player, Null, Event Healing);
  • }
  • }
  • rule("Player Join")
  • {
  • event
  • {
  • Player Joined Match;
  • Team 1;
  • All;
  • }
  • conditions
  • {
  • Global.initialised == True;
  • Is Dummy Bot(Event Player) == False;
  • }
  • actions
  • {
  • Event Player.selected_bot = Last Of(Sorted Array(Filtered Array(All Players(Team 2), Is Dummy Bot(Current Array Element)
  • && Current Array Element.owner == Null), Health(Current Array Element) / Max Health(Current Array Element)));
  • Global.available_spawns = Append To Array(Global.available_spawns, Event Player.selected_bot.spawn);
  • Destroy Dummy Bot(Team 2, Slot Of(Event Player.selected_bot));
  • }
  • }
  • rule("Player Leave")
  • {
  • event
  • {
  • Player Left Match;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.initialised == True;
  • Count Of(All Players(Team 2)) < 10 - Count Of(Filtered Array(All Players(Team 1), !Is Dummy Bot(Event Player)));
  • }
  • actions
  • {
  • For Global Variable(i, 0, Count Of(Filtered Array(All Players(Team 1), Is Dummy Bot(Current Array Element))), 1);
  • If(!Array Contains(All Players(Team 1), Global.i.owner));
  • Destroy Effect(Global.i.rarity_effect);
  • Destroy In-World Text(Global.i.type_icon);
  • Destroy Dummy Bot(Team 1, Slot Of(Global.i));
  • Event Player.following = 0;
  • End;
  • Wait(0.016, Ignore Condition);
  • End;
  • Global.new_wild_spawn = Random Value In Array(Filtered Array(Global.all_spawns, Array Contains(Global.available_spawns,
  • Current Array Element)));
  • Global.available_spawns = Remove From Array(Global.available_spawns, Global.new_wild_spawn);
  • Create Dummy Bot(Random Value In Array(All Heroes), Team 2, -1, Global.new_wild_spawn, Vector(Random Real(-1, 1), 0, Random Real(
  • -1, 1)));
  • Last Created Entity.spawn = Global.new_wild_spawn;
  • Wait(0.016, Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • rule("Deal Type Effectiveness Damage")
  • {
  • event
  • {
  • Player Dealt Damage;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • }
  • actions
  • {
  • If((Event Player.type == Color(Green) && Victim.type == Color(Blue)) || (Event Player.type == Color(Blue) && Victim.type == Color(
  • Red)) || (Event Player.type == Color(Red) && Victim.type == Color(Green)));
  • Damage(Victim, Event Player, 0.500 * Event Damage);
  • Else If((Event Player.type == Color(Green) && Victim.type == Color(Green)) || (Event Player.type == Color(Blue)
  • && Victim.type == Color(Blue)) || (Event Player.type == Color(Red) && Victim.type == Color(Red)));
  • Damage(Victim, Event Player, 0.250 * Event Damage);
  • End;
  • }
  • }
  • rule("Detect D.Va Demech")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • D.Va;
  • }
  • conditions
  • {
  • Health(Event Player) <= 1;
  • }
  • actions
  • {
  • Event Player.using_party_entry = True;
  • Event Player.in_mech = 0;
  • Event Player.party_entry = Event Player.owner.party[Event Player.party_slot];
  • Event Player.party_entry[7] = 0;
  • Event Player.party_entry[6] = 15 * Event Player.level;
  • Event Player.owner.party[Event Player.party_slot] = Event Player.party_entry;
  • Event Player.using_party_entry = False;
  • }
  • }
  • disabled rule("[DEBUG] Teleport to Map 2")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Crouch)) == True;
  • Is Button Held(Event Player, Button(Primary Fire)) == True;
  • }
  • actions
  • {
  • Teleport(Event Player, Vector(-339.576, 9.457, 140.439));
  • }
  • }
  • disabled rule("[DEBUG] Teleport to Map 3")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Crouch)) == True;
  • Is Button Held(Event Player, Button(Secondary Fire)) == True;
  • }
  • actions
  • {
  • Teleport(Event Player, Vector(229.300, 10.978, 239.135));
  • }
  • }
Join the Workshop.codes Discord