Create
Return to post

Comparing difference between and

View raw
  • settings
  • {
  • main
  • {
  • Description: "(WDVTF)Wavy Aim Trainer 0.14 by @nakamoooooo *新プリセット\"for Hanzo\"を追加 *workshop設定 solopractice hanzoを追加"
  • Description: "(WDVTF)Wavy Aim Trainer 0.15 by @nakamoooooo *HanzoからCritical Onlyに名称を訂正しました *workshop設定からレベルアップ・ダウンになるクリティカルの数を設定可能になりました"
  • }
  • lobby
  • {
  • Allow Players Who Are In Queue: Yes
  • Max FFA Players: 11
  • Max Spectators: 12
  • }
  • modes
  • {
  • Deathmatch
  • {
  • enabled maps
  • {
  • Workshop Chamber
  • }
  • }
  • General
  • {
  • Game Mode Start: Manual
  • Hero Limit: Off
  • Respawn Time Scalar: 60%
  • }
  • }
  • heroes
  • {
  • General
  • {
  • Bastion
  • {
  • Reconfigure: Off
  • }
  • Brigitte
  • {
  • Whip Shot Cooldown Time: 0%
  • }
  • Doomfist
  • {
  • No Ammunition Requirement: On
  • }
  • Hanzo
  • {
  • Storm Arrows Cooldown Time: 0%
  • Storm Arrows Quantity: 12
  • }
  • Reinhardt
  • {
  • Barrier Field: Off
  • Fire Strike Cooldown Time: 0%
  • }
  • Sigma
  • {
  • Experimental Barrier: Off
  • }
  • disabled heroes
  • {
  • Winston
  • }
  • }
  • }
  • }
  • variables
  • {
  • global:
  • 0: theBot
  • 1: isSettingMode
  • 2: toString_WaveForms
  • 3: pos_presets
  • 4: name_presets
  • 5: radius_preset_sphere
  • 6: i_create_sphere_txt
  • 7: isHz
  • 8: current_distance_of_bot
  • 9: center_of_chamber
  • 10: outside_center
  • 11: current_center
  • 12: soloPractice_Hanzo
  • 12: soloPractice_CriticalOnly
  • 13: levelup_critical_count
  • 14: leveldown_critical_count
  • 26: current_round
  • 27: time_per_round
  • 28: last_round_winner
  • player:
  • 0: forcePos
  • 1: Pos_horizontalAngle
  • 2: Pos_verticalAngle
  • 3: delta_hori
  • 4: delta_verti
  • 5: Amplitudes
  • 6: Frequencies
  • 7: Phase_differences
  • 8: HorizontalCenter
  • 9: VerticalCenter
  • 10: totaltime_elapsed
  • 11: modifying_wave_number
  • 12: bot_EachWaves
  • 13: bot_i_wave_number
  • 14: OnOffs
  • 15: WaveForms
  • 16: setting_rayhitpos
  • 17: sub_phase
  • 18: Hanzo_headshot_count
  • 26: damage_dealts
  • }
  • subroutines
  • {
  • 0: player_pos_init
  • 1: generate_a_wave
  • 2: preset_effect_play
  • }
  • rule("player_pos_init")
  • {
  • event
  • {
  • Subroutine;
  • player_pos_init;
  • }
  • actions
  • {
  • Set Status(Event Player, Null, Phased Out, 9999);
  • Set Invisible(Event Player, All);
  • Teleport(Event Player, Vector(0, 0, 0));
  • Set Status(Event Player, Null, Rooted, 9999);
  • Wait(0.120, Ignore Condition);
  • Set Gravity(Event Player, 0);
  • Wait(0.120, Ignore Condition);
  • Teleport(Event Player, Global.current_center);
  • Set Facing(Event Player, Vector(0, 0, 1), To World);
  • }
  • }
  • rule("Rule 2")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • Global.soloPractice_Hanzo = Workshop Setting Toggle(Custom String("Solo Practice"), Custom String("Hanzo"), False);
  • Global.soloPractice_CriticalOnly = Workshop Setting Toggle(Custom String("Solo Practice"), Custom String("Critical Only"), False);
  • Create Dummy Bot(Hero(Lúcio), All Teams, 11, Vector(0, 0, 0), Vector(0, 0, 0));
  • Create HUD Text(All Players(All Teams), String("{0} {1}", String("Server Load"), Server Load), String("{0} {1}", String(
  • "Server Load Average"), Server Load Average), String("{0} {1}", String("Server Load Peak"), Server Load Peak), Left, 0, White,
  • White, White, Visible To and String, Default Visibility);
  • Create HUD Text(All Players(All Teams), Custom String("Host Crouch → start/stop settings"), Null, Null, Left, 0, White, White,
  • White, Visible To, Default Visibility);
  • Create HUD Text(All Players(All Teams), Custom String("Hold Interact long → self kill"), Null, Null, Left, 0, White, White, White,
  • Visible To, Default Visibility);
  • Global.toString_WaveForms = Array(Custom String("Sine"), Custom String("Triangle"), Custom String("Random"));
  • Disable Inspector Recording;
  • Global.pos_presets = Array(Vector(18, 32, 20), Vector(15, 32, 20), Vector(12, 32, 20), Vector(9, 32, 20));
  • Global.name_presets = Array(Custom String("simple flick"), Custom String("DVD logo"), Custom String("heptagram"), Custom String(
  • "for Hanzo"));
  • Global.radius_preset_sphere = 1;
  • For Global Variable(i_create_sphere_txt, 0, Count Of(Global.pos_presets), 1);
  • Create Effect(Global.isSettingMode ? All Players(All Teams) : Null, Sphere, Yellow, Global.pos_presets[Global.i_create_sphere_txt],
  • Global.radius_preset_sphere, Visible To);
  • Create In-World Text(Global.isSettingMode ? All Players(All Teams) : Null, Global.name_presets[Global.i_create_sphere_txt],
  • Global.pos_presets[Global.i_create_sphere_txt], 1.500, Do Not Clip, Visible To, White, Default Visibility);
  • End;
  • Global.isHz = True;
  • Global.current_distance_of_bot = 18;
  • Global.center_of_chamber = Vector(0, 18, 0);
  • Global.outside_center = Vector(100, 200, 0);
  • Global.current_center = Global.center_of_chamber;
  • Global.levelup_critical_count = Workshop Setting Integer(Custom String("level"), Custom String("up count"), 7, 1, 200);
  • Global.leveldown_critical_count = Workshop Setting Integer(Custom String("level"), Custom String("down count"), 5, 0, 199);
  • }
  • }
  • disabled rule("bot setting(old)")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • }
  • actions
  • {
  • Set Respawn Max Time(Event Player, 0.500);
  • Start Forcing Player Position(Event Player, Event Player.forcePos, True);
  • Event Player.forcePos = Vector(0, 0, 0);
  • Event Player.Pos_horizontalAngle = 180;
  • Event Player.Pos_verticalAngle = 0;
  • Event Player.delta_hori = 0;
  • Event Player.delta_verti = 0.500;
  • While(True);
  • Event Player.delta_hori = 1.300 * Sine From Degrees(65 * Total Time Elapsed);
  • Event Player.delta_verti = 1 * Sine From Degrees(30 * Total Time Elapsed);
  • Event Player.Pos_horizontalAngle += Event Player.delta_hori;
  • Event Player.Pos_verticalAngle += Event Player.delta_verti;
  • Event Player.forcePos = Vector(0, 18, 0) + 18 * Direction From Angles(Event Player.Pos_horizontalAngle,
  • Event Player.Pos_verticalAngle);
  • Wait(0.016, Ignore Condition);
  • End;
  • }
  • }
  • rule("bot setting(new)")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • }
  • actions
  • {
  • Start Facing(Event Player, Direction Towards(Eye Position(Event Player), Global.current_center), 1000, To World,
  • Direction and Turn Rate);
  • Set Max Health(Event Player, 1000);
  • Global.theBot = Event Player;
  • Set Respawn Max Time(Event Player, 0.500);
  • Start Forcing Player Position(Event Player, Event Player.forcePos, True);
  • Event Player.Amplitudes = Array(15, 0, 15, 0);
  • Event Player.Frequencies = Array(1, 1, 1, 1);
  • Event Player.Phase_differences = Array(0, 0, 25, 0);
  • Event Player.OnOffs = Array(True, True, True, True);
  • Event Player.WaveForms = Array(0, 0, 0, 0);
  • Event Player.HorizontalCenter = 0;
  • Event Player.VerticalCenter = 0;
  • Event Player.forcePos = Vector(0, 0, 0);
  • While(True);
  • Event Player.totaltime_elapsed = Total Time Elapsed;
  • For Player Variable(Event Player, bot_i_wave_number, 0, 4, 1);
  • Call Subroutine(generate_a_wave);
  • End;
  • Event Player.Pos_horizontalAngle = Event Player.HorizontalCenter + Event Player.bot_EachWaves[0] + Event Player.bot_EachWaves[1];
  • Event Player.Pos_verticalAngle = Event Player.VerticalCenter + Event Player.bot_EachWaves[2] + Event Player.bot_EachWaves[3];
  • Event Player.forcePos = (Global.isSettingMode ? Global.center_of_chamber : Global.outside_center)
  • + Global.current_distance_of_bot * Direction From Angles(Event Player.Pos_horizontalAngle, Event Player.Pos_verticalAngle);
  • Wait(0.016, Ignore Condition);
  • End;
  • }
  • }
  • rule("effects")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • Create Beam Effect(Global.isSettingMode ? All Players(All Teams) : Null, Good Beam, Vector(16, 30, 20), Vector(16, 10, 20), White,
  • Visible To);
  • Create Beam Effect(Global.isSettingMode ? All Players(All Teams) : Null, Good Beam, Vector(8, 30, 20), Vector(8, 10, 20), White,
  • Visible To);
  • Create Beam Effect(Global.isSettingMode ? All Players(All Teams) : Null, Good Beam, Vector(0, 30, 20), Vector(0, 10, 20), White,
  • Visible To);
  • Create Beam Effect(Global.isSettingMode ? All Players(All Teams) : Null, Good Beam, Vector(-8, 30, 20), Vector(-8, 10, 20), White,
  • Visible To);
  • Create Beam Effect(Global.isSettingMode ? All Players(All Teams) : Null, Good Beam, Vector(20, 30, 20), Vector(-20, 30, 20), White,
  • Visible To);
  • Create Beam Effect(Global.isSettingMode ? All Players(All Teams) : Null, Good Beam, Vector(20, 26, 20), Vector(-20, 26, 20), White,
  • Visible To);
  • Create Beam Effect(Global.isSettingMode ? All Players(All Teams) : Null, Good Beam, Vector(20, 22, 20), Vector(-20, 22, 20), White,
  • Visible To);
  • Create Beam Effect(Global.isSettingMode ? All Players(All Teams) : Null, Good Beam, Vector(20, 18, 20), Vector(-20, 18, 20), White,
  • Visible To);
  • Create Beam Effect(Global.isSettingMode ? All Players(All Teams) : Null, Good Beam, Vector(20, 14, 20), Vector(-20, 14, 20), White,
  • Visible To);
  • Create Beam Effect(Global.isSettingMode ? All Players(All Teams) : Null, Good Beam, Vector(20, 10, 20), Vector(-20, 10, 20), White,
  • Visible To);
  • Create In-World Text(Global.isSettingMode ? All Players(All Teams) : Null, Global.isHz ? String("{0} {1}",
  • Global.theBot.Frequencies[0], Custom String(" Hz")) : String("{0} {1}", 1 / Global.theBot.Frequencies[0], Custom String(
  • " sec")), Vector(12, 24, 20), 2, Do Not Clip, Visible To and String, White, Default Visibility);
  • Create In-World Text(Global.isSettingMode ? All Players(All Teams) : Null, Global.isHz ? String("{0} {1}",
  • Global.theBot.Frequencies[1], Custom String(" Hz")) : String("{0} {1}", 1 / Global.theBot.Frequencies[1], Custom String(
  • " sec")), Vector(12, 20, 20), 2, Do Not Clip, Visible To and String, White, Default Visibility);
  • Create In-World Text(Global.isSettingMode ? All Players(All Teams) : Null, Global.isHz ? String("{0} {1}",
  • Global.theBot.Frequencies[2], Custom String(" Hz")) : String("{0} {1}", 1 / Global.theBot.Frequencies[2], Custom String(
  • " sec")), Vector(12, 16, 20), 2, Do Not Clip, Visible To and String, White, Default Visibility);
  • Create In-World Text(Global.isSettingMode ? All Players(All Teams) : Null, Global.isHz ? String("{0} {1}",
  • Global.theBot.Frequencies[3], Custom String(" Hz")) : String("{0} {1}", 1 / Global.theBot.Frequencies[3], Custom String(
  • " sec")), Vector(12, 12, 20), 2, Do Not Clip, Visible To and String, White, Default Visibility);
  • disabled Create In-World Text(Global.isSettingMode ? All Players(All Teams) : Null, Array(Custom String("horizontal 1\\r\\n"),
  • Global.theBot.OnOffs[0] ? Custom String("On") : Custom String("Off")), Vector(18, 24, 20), 2, Do Not Clip,
  • Visible To and String, White, Default Visibility);
  • disabled Create In-World Text(Global.isSettingMode ? All Players(All Teams) : Null, Custom String("horizontal 2"), Vector(18, 20, 20), 2,
  • Do Not Clip, Visible To, White, Default Visibility);
  • disabled Create In-World Text(Global.isSettingMode ? All Players(All Teams) : Null, Custom String("vertical 1"), Vector(18, 16, 20), 2,
  • Do Not Clip, Visible To, White, Default Visibility);
  • disabled Create In-World Text(Global.isSettingMode ? All Players(All Teams) : Null, Custom String("vertical 2"), Vector(18, 12, 20), 2,
  • Do Not Clip, Visible To, White, Default Visibility);
  • Create In-World Text(Global.isSettingMode ? All Players(All Teams) : Null, Global.isHz ? Custom String("Frequency")
  • : Custom String("Wave Period"), Vector(12, 28, 20), 2, Do Not Clip, Visible To and String, White, Default Visibility);
  • Create In-World Text(Global.isSettingMode ? All Players(All Teams) : Null, Custom String("Amplitude"), Vector(4, 28, 20), 2,
  • Do Not Clip, Visible To, White, Default Visibility);
  • Create In-World Text(Global.isSettingMode ? All Players(All Teams) : Null, Custom String("Phase difference"), Vector(-4, 28, 20),
  • 2, Do Not Clip, Visible To, White, Default Visibility);
  • Create In-World Text(Global.isSettingMode ? All Players(All Teams) : Null, String("{0} {1}", Global.theBot.Amplitudes[0],
  • Custom String("°")), Vector(4, 24, 20), 2, Do Not Clip, Visible To and String, White, Default Visibility);
  • Create In-World Text(Global.isSettingMode ? All Players(All Teams) : Null, String("{0} {1}", Global.theBot.Amplitudes[1],
  • Custom String("°")), Vector(4, 20, 20), 2, Do Not Clip, Visible To and String, White, Default Visibility);
  • Create In-World Text(Global.isSettingMode ? All Players(All Teams) : Null, String("{0} {1}", Global.theBot.Amplitudes[2],
  • Custom String("°")), Vector(4, 16, 20), 2, Do Not Clip, Visible To and String, White, Default Visibility);
  • Create In-World Text(Global.isSettingMode ? All Players(All Teams) : Null, String("{0} {1}", Global.theBot.Amplitudes[3],
  • Custom String("°")), Vector(4, 12, 20), 2, Do Not Clip, Visible To and String, White, Default Visibility);
  • Create In-World Text(Global.isSettingMode ? All Players(All Teams) : Null, String("{0} {1}", Global.theBot.Phase_differences[0],
  • Custom String("%")), Vector(-4, 24, 20), 2, Do Not Clip, Visible To and String, White, Default Visibility);
  • Create In-World Text(Global.isSettingMode ? All Players(All Teams) : Null, String("{0} {1}", Global.theBot.Phase_differences[1],
  • Custom String("%")), Vector(-4, 20, 20), 2, Do Not Clip, Visible To and String, White, Default Visibility);
  • Create In-World Text(Global.isSettingMode ? All Players(All Teams) : Null, String("{0} {1}", Global.theBot.Phase_differences[2],
  • Custom String("%")), Vector(-4, 16, 20), 2, Do Not Clip, Visible To and String, White, Default Visibility);
  • Create In-World Text(Global.isSettingMode ? All Players(All Teams) : Null, String("{0} {1}", Global.theBot.Phase_differences[3],
  • Custom String("%")), Vector(-4, 12, 20), 2, Do Not Clip, Visible To and String, White, Default Visibility);
  • Create In-World Text(Global.isSettingMode ? All Players(All Teams) : Null, String("{0} {1}", Custom String("horizontal 1\r\n"),
  • Global.theBot.OnOffs[0] ? Custom String("On") : Custom String("off")), Vector(18, 22, 20), 2, Do Not Clip,
  • Visible To and String, White, Default Visibility);
  • Create In-World Text(Global.isSettingMode ? All Players(All Teams) : Null, String("{0} {1}", Custom String("horizontal 2\r\n"),
  • Global.theBot.OnOffs[1] ? Custom String("On") : Custom String("off")), Vector(18, 18, 20), 2, Do Not Clip,
  • Visible To and String, White, Default Visibility);
  • Create In-World Text(Global.isSettingMode ? All Players(All Teams) : Null, String("{0} {1}", Custom String("vertical 1\r\n"),
  • Global.theBot.OnOffs[2] ? Custom String("On") : Custom String("off")), Vector(18, 14, 20), 2, Do Not Clip,
  • Visible To and String, White, Default Visibility);
  • Create In-World Text(Global.isSettingMode ? All Players(All Teams) : Null, String("{0} {1}", Custom String("vertical 2\r\n"),
  • Global.theBot.OnOffs[3] ? Custom String("On") : Custom String("off")), Vector(18, 10, 20), 2, Do Not Clip,
  • Visible To and String, White, Default Visibility);
  • Create In-World Text(Global.isSettingMode ? All Players(All Teams) : Null, Global.toString_WaveForms[Global.theBot.WaveForms[0]],
  • Vector(-12, 24, 20), 2, Do Not Clip, Visible To and String, White, Default Visibility);
  • Create In-World Text(Global.isSettingMode ? All Players(All Teams) : Null, Global.toString_WaveForms[Global.theBot.WaveForms[1]],
  • Vector(-12, 20, 20), 2, Do Not Clip, Visible To and String, White, Default Visibility);
  • Create In-World Text(Global.isSettingMode ? All Players(All Teams) : Null, Global.toString_WaveForms[Global.theBot.WaveForms[2]],
  • Vector(-12, 16, 20), 2, Do Not Clip, Visible To and String, White, Default Visibility);
  • Create In-World Text(Global.isSettingMode ? All Players(All Teams) : Null, Global.toString_WaveForms[Global.theBot.WaveForms[3]],
  • Vector(-12, 12, 20), 2, Do Not Clip, Visible To and String, White, Default Visibility);
  • Create In-World Text(Global.isSettingMode ? All Players(All Teams) : Null, Custom String("Wave form"), Vector(-12, 28, 20), 2,
  • Do Not Clip, Visible To, White, Default Visibility);
  • Create In-World Text(Global.isSettingMode ? All Players(All Teams) : Null, String("{0} -> {1}", Custom String("ability 2"),
  • Custom String("bot range up")), Vector(16, 0, 20), 1, Do Not Clip, Visible To, White, Default Visibility);
  • Create In-World Text(Global.isSettingMode ? All Players(All Teams) : Null, String("{0} -> {1}", Custom String("ultimate"),
  • Custom String("bot range down")), Vector(16, -2, 20), 1, Do Not Clip, Visible To, White, Default Visibility);
  • Create In-World Text(Global.isSettingMode ? All Players(All Teams) : Null, String("{0} {1}", Custom String("bot range"), String(
  • "{0} m", Global.current_distance_of_bot)), Vector(12, 1, 20), 3, Do Not Clip, Visible To and String, White,
  • Default Visibility);
  • Create Effect(All Players(All Teams), Sphere, White, Global.outside_center + Vector(0, 0, 100), 10, Visible To);
  • Create Effect(All Players(All Teams), Sphere, Yellow, Global.outside_center + Vector(0, 100, 0), 10, Visible To);
  • }
  • }
  • rule("owner crouch toggle setting")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Game In Progress == False;
  • Event Player == Host Player;
  • Is Button Held(Event Player, Crouch) == True;
  • }
  • actions
  • {
  • Global.isSettingMode = Global.isSettingMode ? False : True;
  • Set Primary Fire Enabled(Event Player, Global.isSettingMode ? False : True);
  • Set Ultimate Ability Enabled(Event Player, Global.isSettingMode ? False : True);
  • Set Ability 2 Enabled(Event Player, Global.isSettingMode ? False : True);
  • Global.current_center = Global.isSettingMode ? Global.center_of_chamber : Global.outside_center;
  • Teleport(Remove From Array(All Players(All Teams), Global.theBot), Global.current_center);
  • }
  • }
  • rule("owner setting primary")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Game In Progress == False;
  • Event Player == Host Player;
  • Global.isSettingMode == True;
  • Is Button Held(Event Player, Primary Fire) == True;
  • }
  • actions
  • {
  • Event Player.setting_rayhitpos = Ray Cast Hit Position(Eye Position(Event Player), Eye Position(Event Player)
  • + 100 * Facing Direction Of(Event Player), Empty Array, Null, False);
  • If(Y Component Of(Event Player.setting_rayhitpos) >= 26);
  • If(Distance Between(Event Player.setting_rayhitpos, Global.pos_presets[0]) < Global.radius_preset_sphere);
  • Call Subroutine(preset_effect_play);
  • Global.theBot.Amplitudes = Array(35, 0, 25, 0);
  • Global.theBot.Frequencies = Array(1, 1, 1, 1);
  • Global.theBot.Phase_differences = Array(0, 0, 0, 0);
  • Global.theBot.WaveForms = Array(2, 0, 2, 0);
  • Global.theBot.OnOffs = Array(True, True, True, True);
  • Else If(Distance Between(Event Player.setting_rayhitpos, Global.pos_presets[1]) < Global.radius_preset_sphere);
  • Call Subroutine(preset_effect_play);
  • Global.theBot.Amplitudes = Array(60, 0, 45, 0);
  • Global.theBot.Frequencies = Array(0.090, 1, 0.080, 1);
  • Global.theBot.Phase_differences = Array(25, 0, 25, 0);
  • Global.theBot.WaveForms = Array(1, 0, 1, 0);
  • Global.theBot.OnOffs = Array(True, True, True, True);
  • Else If(Distance Between(Event Player.setting_rayhitpos, Global.pos_presets[2]) < Global.radius_preset_sphere);
  • Call Subroutine(preset_effect_play);
  • Global.theBot.Amplitudes = Array(30, 12, 30, 12);
  • Global.theBot.Frequencies = Array(0.240, 0.320, 0.240, 0.320);
  • Global.theBot.Phase_differences = Array(0, 0, 25, 75);
  • Global.theBot.WaveForms = Array(0, 0, 0, 0);
  • Global.theBot.OnOffs = Array(True, True, True, True);
  • Else If(Distance Between(Event Player.setting_rayhitpos, Global.pos_presets[3]) < Global.radius_preset_sphere);
  • Call Subroutine(preset_effect_play);
  • Global.theBot.Amplitudes = Array(35, 12, 25, 0);
  • Global.theBot.Frequencies = Array(0.500, 0.440, 0.500, 1);
  • Global.theBot.Phase_differences = Array(0, 0, 0, 0);
  • Global.theBot.WaveForms = Array(2, 1, 2, 0);
  • Global.theBot.OnOffs = Array(True, True, True, True);
  • Else If(Y Component Of(Event Player.setting_rayhitpos) < 30 && X Component Of(Event Player.setting_rayhitpos)
  • > 8 && X Component Of(Event Player.setting_rayhitpos) < 16);
  • Play Effect(All Players(All Teams), Ring Explosion, White, Event Player.setting_rayhitpos, 12);
  • Global.isHz = Global.isHz ? False : True;
  • End;
  • Abort;
  • End;
  • If(Y Component Of(Event Player.setting_rayhitpos) < 26);
  • Event Player.modifying_wave_number = 0;
  • End;
  • If(Y Component Of(Event Player.setting_rayhitpos) < 22);
  • Event Player.modifying_wave_number = 1;
  • End;
  • If(Y Component Of(Event Player.setting_rayhitpos) < 18);
  • Event Player.modifying_wave_number = 2;
  • End;
  • If(Y Component Of(Event Player.setting_rayhitpos) < 14);
  • Event Player.modifying_wave_number = 3;
  • End;
  • If(Y Component Of(Event Player.setting_rayhitpos) < 10);
  • Abort;
  • End;
  • If(X Component Of(Event Player.setting_rayhitpos) > 16 && Z Component Of(Event Player.setting_rayhitpos) > 19);
  • Play Effect(All Players(All Teams), Good Explosion, White, Event Player.setting_rayhitpos, 1);
  • Global.theBot.OnOffs[Event Player.modifying_wave_number] = !Global.theBot.OnOffs[Event Player.modifying_wave_number];
  • Abort;
  • End;
  • If(X Component Of(Event Player.setting_rayhitpos) > 8 && X Component Of(Event Player.setting_rayhitpos) <= 16);
  • While(True);
  • Play Effect(All Players(All Teams), Good Explosion, Red, Event Player.setting_rayhitpos, 1);
  • Global.theBot.Frequencies[Event Player.modifying_wave_number] = Round To Integer(100 * 2 ^ ((16 - X Component Of(
  • Event Player.setting_rayhitpos)) * 0.750 - 3), Down) / 100;
  • Wait(0.124, Abort When False);
  • Event Player.setting_rayhitpos = Ray Cast Hit Position(Eye Position(Event Player), Eye Position(Event Player)
  • + 100 * Facing Direction Of(Event Player), Empty Array, Null, False);
  • End;
  • End;
  • If(X Component Of(Event Player.setting_rayhitpos) > 0 && X Component Of(Event Player.setting_rayhitpos) <= 8);
  • While(True);
  • Play Effect(All Players(All Teams), Good Explosion, Aqua, Event Player.setting_rayhitpos, 1);
  • Global.theBot.Amplitudes[Event Player.modifying_wave_number] = Round To Integer((8 - X Component Of(
  • Event Player.setting_rayhitpos)) * (90 / 8), To Nearest);
  • Wait(0.124, Abort When False);
  • Event Player.setting_rayhitpos = Ray Cast Hit Position(Eye Position(Event Player), Eye Position(Event Player)
  • + 100 * Facing Direction Of(Event Player), Empty Array, Null, False);
  • End;
  • End;
  • If(X Component Of(Event Player.setting_rayhitpos) > -8 && X Component Of(Event Player.setting_rayhitpos) <= 0);
  • While(True);
  • Play Effect(All Players(All Teams), Good Explosion, Purple, Event Player.setting_rayhitpos, 1);
  • Global.theBot.Phase_differences[Event Player.modifying_wave_number] = Round To Integer(100 / -8 * X Component Of(
  • Event Player.setting_rayhitpos), To Nearest);
  • Wait(0.124, Abort When False);
  • Event Player.setting_rayhitpos = Ray Cast Hit Position(Eye Position(Event Player), Eye Position(Event Player)
  • + 100 * Facing Direction Of(Event Player), Empty Array, Null, False);
  • End;
  • End;
  • If(X Component Of(Event Player.setting_rayhitpos) <= -8 && Z Component Of(Event Player.setting_rayhitpos) > 19);
  • Play Effect(All Players(All Teams), Good Explosion, Green, Event Player.setting_rayhitpos, 1);
  • Global.theBot.WaveForms[Event Player.modifying_wave_number] = (1 + Global.theBot.WaveForms[Event Player.modifying_wave_number])
  • % Count Of(Global.toString_WaveForms);
  • Abort;
  • End;
  • }
  • }
  • rule("self kill")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Interact) == True;
  • }
  • actions
  • {
  • Play Effect(Event Player, Debuff Impact Sound, White, Event Player, 50);
  • Wait(1, Abort When False);
  • Kill(Event Player, Null);
  • }
  • }
  • rule("on spawn")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == False;
  • Has Spawned(Event Player) == True;
  • }
  • actions
  • {
  • Call Subroutine(player_pos_init);
  • }
  • }
  • rule("on alive")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == False;
  • Is Alive(Event Player) == True;
  • }
  • actions
  • {
  • Call Subroutine(player_pos_init);
  • }
  • }
  • rule("generate_a_wave")
  • {
  • event
  • {
  • Subroutine;
  • generate_a_wave;
  • }
  • actions
  • {
  • If(Event Player.OnOffs[Event Player.bot_i_wave_number] == True);
  • Event Player.sub_phase = 360 * (
  • Event Player.Frequencies[Event Player.bot_i_wave_number] * Event Player.totaltime_elapsed + Event Player.Phase_differences[Event Player.bot_i_wave_number] / 100)
  • % 360;
  • If(Event Player.WaveForms[Event Player.bot_i_wave_number] == 0);
  • Event Player.bot_EachWaves[Event Player.bot_i_wave_number] = Event Player.Amplitudes[Event Player.bot_i_wave_number] * Sine From Degrees(
  • Event Player.sub_phase);
  • Else If(Event Player.WaveForms[Event Player.bot_i_wave_number] == 1);
  • If(Event Player.sub_phase <= 90);
  • Event Player.bot_EachWaves[Event Player.bot_i_wave_number] = Event Player.Amplitudes[Event Player.bot_i_wave_number] * (
  • Event Player.sub_phase / 90);
  • Else If(Event Player.sub_phase > 270);
  • Event Player.bot_EachWaves[Event Player.bot_i_wave_number] = Event Player.Amplitudes[Event Player.bot_i_wave_number] * (
  • Event Player.sub_phase / 90 - 4);
  • Else;
  • Event Player.bot_EachWaves[Event Player.bot_i_wave_number] = Event Player.Amplitudes[Event Player.bot_i_wave_number] * (
  • Event Player.sub_phase / -90 + 2);
  • End;
  • Else If(Event Player.WaveForms[Event Player.bot_i_wave_number] == 2);
  • If(Round To Integer(
  • Event Player.Frequencies[Event Player.bot_i_wave_number] * Event Player.totaltime_elapsed + Event Player.Phase_differences[Event Player.bot_i_wave_number] / 100,
  • Down) != Round To Integer(Event Player.Frequencies[Event Player.bot_i_wave_number] * (Event Player.totaltime_elapsed - 0.016)
  • + Event Player.Phase_differences[Event Player.bot_i_wave_number] / 100, Down));
  • Event Player.bot_EachWaves[Event Player.bot_i_wave_number] = Event Player.Amplitudes[Event Player.bot_i_wave_number] * Random Real(
  • -1, 1);
  • End;
  • End;
  • Else;
  • Event Player.bot_EachWaves[Event Player.bot_i_wave_number] = 0;
  • End;
  • }
  • }
  • rule("presetEffectPlay")
  • {
  • event
  • {
  • Subroutine;
  • preset_effect_play;
  • }
  • actions
  • {
  • Play Effect(All Players(All Teams), Bad Explosion, Orange, Event Player.setting_rayhitpos, 3);
  • }
  • }
  • rule("game start player")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Is Dummy Bot(Event Player) == False;
  • }
  • actions
  • {
  • Event Player.damage_dealts = Empty Array;
  • Create HUD Text(All Players(All Teams), String("{0} {1} {2}", Hero Icon String(Hero Of(Event Player)), Event Player,
  • Event Player.damage_dealts[Global.current_round]), Null, Null, Right, Last Of(Event Player.damage_dealts), White, White, White,
  • Visible To Sort Order and String, Default Visibility);
  • Set Ultimate Ability Enabled(Event Player, False);
  • }
  • }
  • rule("player deal damage")
  • {
  • event
  • {
  • Player Dealt Damage;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Match Time != 0;
  • }
  • actions
  • {
  • Event Player.damage_dealts[Global.current_round] += Event Damage;
  • }
  • }
  • rule("game start global")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • }
  • actions
  • {
  • Global.isSettingMode = False;
  • Set Primary Fire Enabled(Host Player, True);
  • Set Ability 2 Enabled(Host Player, True);
  • Global.time_per_round = 15;
  • Global.current_round = 0;
  • Disable Built-In Game Mode Completion;
  • Disable Built-In Game Mode Announcer;
  • Disable Built-In Game Mode Music;
  • Disable Built-In Game Mode Scoring;
  • Set Match Time(Global.time_per_round);
  • }
  • }
  • rule("match time zero global")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Match Time == 0;
  • }
  • actions
  • {
  • Global.last_round_winner = Last Of(Sorted Array(All Players(All Teams),
  • Current Array Element.damage_dealts[Global.current_round]));
  • Big Message(All Players(All Teams), String("{0} {1} {2}", String("{0} {1}", String("Round {0}", Global.current_round), String(
  • "Winner")), String("{0} {1}", Hero Icon String(Hero Of(Global.last_round_winner)), Global.last_round_winner), String("{0} {1}",
  • Global.last_round_winner.damage_dealts[Global.current_round], String("Damage"))));
  • Modify Player Score(Global.last_round_winner, 1);
  • Wait(2, Ignore Condition);
  • If(Score Of(Global.last_round_winner) == 10);
  • Declare Player Victory(Global.last_round_winner);
  • Else;
  • Set Match Time(Global.time_per_round);
  • Global.current_round += 1;
  • End;
  • }
  • }
  • rule("match time zero player")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Match Time == 0;
  • }
  • actions
  • {
  • Modify Player Variable(Event Player, damage_dealts, Append To Array, 0);
  • If(Is Dummy Bot(Event Player));
  • Set Status(Event Player, Null, Frozen, 2);
  • End;
  • }
  • }
  • rule("assemble heroes match time shorten")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Assembling Heroes == True;
  • }
  • actions
  • {
  • Set Match Time(10);
  • }
  • }
  • rule("bot auto heal")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Health(Event Player) <= 0.300 * Max Health(Event Player);
  • }
  • actions
  • {
  • Heal(Event Player, Null, 100000);
  • }
  • }
  • rule("owner setting ab2")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Game In Progress == False;
  • Event Player == Host Player;
  • Global.isSettingMode == True;
  • Is Button Held(Event Player, Ability 2) == True;
  • }
  • actions
  • {
  • Global.current_distance_of_bot += Max(1, Round To Integer(Global.current_distance_of_bot / 20, To Nearest));
  • Wait(0.120, Abort When False);
  • Loop;
  • }
  • }
  • rule("owner setting ult")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Game In Progress == False;
  • Event Player == Host Player;
  • Global.isSettingMode == True;
  • Is Button Held(Event Player, Ultimate) == True;
  • }
  • actions
  • {
  • Global.current_distance_of_bot -= Max(1, Round To Integer(Global.current_distance_of_bot / 20, To Nearest));
  • Wait(0.120, Abort When False);
  • Loop;
  • }
  • }
  • rule("soloPractice_Hanzo_global")
  • rule("soloPractice_critical_global")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.isSettingMode == False;
  • Global.soloPractice_Hanzo == True;
  • Global.soloPractice_CriticalOnly == True;
  • Entity Exists(Host Player) == True;
  • }
  • actions
  • {
  • Wait(20, Abort When False);
  • If(Host Player.Hanzo_headshot_count >= 6);
  • If(Host Player.Hanzo_headshot_count >= Global.levelup_critical_count);
  • Global.current_distance_of_bot *= 1.050;
  • Play Effect(Host Player, Buff Impact Sound, White, Host Player, 40);
  • Small Message(All Players(All Teams), Custom String("level up"));
  • Else If(Host Player.Hanzo_headshot_count <= 4);
  • Else If(Host Player.Hanzo_headshot_count <= Global.leveldown_critical_count);
  • Global.current_distance_of_bot /= 1.050;
  • Play Effect(Host Player, Debuff Impact Sound, White, Host Player, 40);
  • Small Message(All Players(All Teams), Custom String("level down"));
  • Else;
  • Small Message(All Players(All Teams), Custom String("level no change"));
  • End;
  • Host Player.Hanzo_headshot_count = 0;
  • Big Message(Host Player, String("{0} {1}", Custom String("current distance: "), String("{0} m", Global.current_distance_of_bot)));
  • Loop If Condition Is True;
  • }
  • }
  • rule("soloPractice_hanzo_host headshot")
  • rule("soloPractice_critical_host headshot")
  • {
  • event
  • {
  • Player Dealt Damage;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.soloPractice_Hanzo == True;
  • Global.soloPractice_CriticalOnly == True;
  • Global.isSettingMode == False;
  • Event Player == Host Player;
  • Event Was Critical Hit == True;
  • }
  • actions
  • {
  • Event Player.Hanzo_headshot_count += 1;
  • If(Random Real(0, 1) < 0.400);
  • Small Message(Event Player, Random Value In Array(Array(Custom String("nice!"), Custom String("good!"), Custom String("great!"),
  • Custom String("super!"), Custom String("awesome!"))));
  • End;
  • }
  • }
  • rule("solopractice hanzo host player")
  • rule("solopractice critical host player")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.soloPractice_Hanzo == True;
  • Global.soloPractice_CriticalOnly == True;
  • Host Player == Event Player;
  • }
  • actions
  • {
  • Create HUD Text(Event Player, String("{0} {1}", Custom String("critical: "), Event Player.Hanzo_headshot_count), Null, Null, Top,
  • 1, White, White, White, Visible To and String, Default Visibility);
  • }
  • }
Join the Workshop.codes Discord