Create
Return to post

Comparing difference between and

View raw
  • settings
  • {
  • main
  • {
  • Description: "(JS6GW)棒の先の玉テスト010 by @nakamoooooo *tipsを右上に表示 *玉とボールの摩擦を追加*マグヌス力の係数を0.17から0.25に変更 *重い原因になってるかもしれない移動・ジャンプ速度の変更の頻度を毎フレームから6フレームごと下げた"
  • Description: "(JS6GW)棒の先の玉テスト011 by @nakamoooooo *ボールを打つとクールタイムが発生し棒の色が薄くなるよう変更 *棒とボールの反発係数を0.7に変更 *相手のゴールのほうへボールに力を加えるとultがたまる *ult中は反発係数が1になり、移動速度とジャンプ力が50%ポイントプラス"
  • }
  • lobby
  • {
  • Allow Players Who Are In Queue: Yes
  • Max Spectators: 12
  • Max Team 1 Players: 5
  • Max Team 2 Players: 5
  • }
  • modes
  • {
  • Team Deathmatch
  • {
  • Game Length In Minutes: 5
  • Imbalanced Team Score To Win: On
  • Score To Win: 7
  • Self Initiated Respawn: Off
  • enabled maps
  • {
  • Workshop Expanse Night
  • }
  • }
  • General
  • {
  • Hero Limit: Off
  • Respawn As Random Hero: On
  • }
  • }
  • heroes
  • {
  • General
  • {
  • McCree
  • {
  • Flashbang Cooldown Time: 75%
  • Primary Fire: Off
  • Quick Melee: Off
  • Secondary Fire: Off
  • Ultimate Ability Deadeye: Off
  • }
  • Wrecking Ball
  • {
  • Roll Always Active: On
  • }
  • enabled heroes
  • {
  • McCree
  • }
  • }
  • }
  • }
  • variables
  • {
  • global:
  • 0: theball
  • 1: anotherball
  • 2: dome_center
  • 3: dome_radius
  • 4: t2goal_pos
  • 5: goal_radius
  • 6: team_get_score
  • 7: balljumppad_pos
  • 8: balljumppad_radius
  • 9: max_length_gap_fac_direction
  • 10: max_reach
  • 11: min_reach
  • 12: ball_radius
  • 13: vec_ball_center_offset
  • 14: friction_spd_change_gnd_mpf2
  • 15: max_index_of_tips
  • 16: kaigyou_code
  • 17: frameduration_movespeedchange
  • 18: hanpatu_keisuu_normal
  • 19: hanpatu_keisuu_ult
  • player:
  • 0: theballs_rotate_axis_ang_vel
  • 1: theballs_previous_pos
  • 2: theballs_delta_pos
  • 3: theballs_dpos_magnitude
  • 4: theballs_dpos_direction
  • 5: theballs_magnus_vector
  • 7: theballs_right_dir
  • 8: theballs_up_dir
  • 9: theballs_roll_dome_vector
  • 10: tips_index
  • 11: player_dmg_target
  • 12: player_ray_player
  • 13: player_ray_normal
  • 14: player_entry_angle
  • 15: player_torque_vec
  • 16: player_move_vec
  • 17: player_rotate_axis_ang_vel
  • 18: player_ability_damage_dealt
  • 19: pl_previous_fac_direction
  • 20: pl_raw_gap_fac_direction
  • 21: pl_maxLimited_gap_fac_direction
  • 22: pl_length_of_raw_gap_fac_dir
  • 23: pl_current_reach
  • 24: pl_pos_of_current_tama
  • 25: pl_reach_change_0kaplmi1
  • 26: theballs_rod_theta_degree
  • 27: theballs_rod_axis_vec_normalized
  • 28: pl_delta_pos
  • 29: pl_prev_pos
  • 30: pl_tama_delta_pos_total
  • 31: pl_tama_delta_pos_swing_onHitpos
  • 32: pl_tama_delta_pos_pushpull
  • 33: pl_tama_radius
  • 34: LOA_pl_dir_tama_to_ball
  • 35: pl_tama_is_touching_ball
  • 36: theball_center_pos
  • 37: pl_tama_delta_pos_total_in_LOA
  • 38: pl_ball_delta_pos_in_LOA
  • 39: pl_tama_and_ball_getting_close
  • 40: pl_current_tama_ball_distance
  • 41: pl_prev_tama_ball_distance
  • 42: pl_impulse_spd_boop_ball
  • 43: pl_reach_change_spd
  • 44: pl_pos_tama_hit_ball
  • 45: pl_distance_tamahitpos_eye
  • 46: pl_reach_percent
  • 47: pl_angle_radianMaxLimit_fac_dir
  • 48: pl_axis_vector_fac_dir_change
  • 49: pl_vec_from_eye_to_currentHitpos
  • 50: pl_vec_from_eye_to_prevHitpos
  • 51: is_calc_new
  • 52: theballs_vec_pos_delta_gnd_roll
  • 53: theballs_dir_pos_delta_gnd_roll
  • 54: theballs_total_vec_deltaGndRoll
  • 55: theballs_vec_fricforce_gnd
  • 56: theballs_isActive
  • 57: pl_tama_delta_pos_total_on_CS
  • 58: bool_show_tips
  • 59: pl_ball_delta_pos_total_on_CS
  • 60: pl_total_vec_tama_frict_to_ball
  • 61: pl_vec_fricforce_to_ball
  • 62: masatuyaru
  • 63: movespeedchangecount
  • 64: cooltime_frames
  • 65: current_hanpatsu_keisuu_bou_ball
  • 66: ult_plus_percent
  • 67: isUlting
  • }
  • subroutines
  • {
  • 0: stoptheball
  • 2: reach_change
  • 3: getSwingDeltaOnHitpos
  • }
  • rule("global hud and ball bot summon")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • Create Dummy Bot(Hero(Wrecking Ball), Team 2, 5, Vector(0, 0, 0), Vector(0, 0, 0));
  • Global.theball = Last Created Entity;
  • Create Dummy Bot(Hero(Wrecking Ball), Team 1, 5, Vector(0, 0, 0), Vector(0, 0, 0));
  • Global.anotherball = Last Created Entity;
  • Attach Players(Global.anotherball, Global.theball, Vector(0, 0, 0));
  • Create HUD Text(All Players(All Teams), String("{0}:{1}", Custom String("peak"), Server Load Peak), String("{0}:{1}",
  • Custom String("average"), Server Load Average), Null, Left, 0, Color(White), Color(White), Color(White), Visible To and String,
  • Default Visibility);
  • Global.dome_center = Vector(0, 0, 0);
  • Global.dome_radius = 45;
  • Create Effect(All Players(All Teams), Sphere, Color(Orange), Global.dome_center, Global.dome_radius, Visible To);
  • Global.t2goal_pos = Vector(Global.dome_radius, 0, 0);
  • Global.goal_radius = 7.250;
  • Create Effect(All Players(All Teams), Sphere, Color(Team 2), Global.t2goal_pos, Global.goal_radius, Visible To);
  • Create Effect(All Players(All Teams), Sphere, Color(Team 1), -1 * Global.t2goal_pos, Global.goal_radius, Visible To);
  • Create Effect(All Players(All Teams), Sphere, Color(Team 2), Global.t2goal_pos, -0.050 + Global.goal_radius, Visible To);
  • Create Effect(All Players(All Teams), Sphere, Color(Team 1), -1 * Global.t2goal_pos, -0.050 + Global.goal_radius, Visible To);
  • Global.balljumppad_pos = Vector(0, 0, Global.dome_radius);
  • Global.balljumppad_radius = 6;
  • Create Effect(All Players(All Teams), Good Aura, Color(White), Global.balljumppad_pos, Global.balljumppad_radius, Visible To);
  • Create Effect(All Players(All Teams), Good Aura, Color(White), -1 * Global.balljumppad_pos, Global.balljumppad_radius, Visible To);
  • Global.max_length_gap_fac_direction = 0.100;
  • Global.min_reach = 2;
  • Global.max_reach = 5;
  • Global.ball_radius = 0.800;
  • Global.vec_ball_center_offset = Vector(0, Global.ball_radius, 0);
  • Disable Built-In Game Mode Completion;
  • Global.friction_spd_change_gnd_mpf2 = 0.150;
  • Disable Inspector Recording;
  • Global.max_index_of_tips = 4;
  • Global.kaigyou_code = Custom String("\r\n");
  • Global.frameduration_movespeedchange = 6;
  • Global.hanpatu_keisuu_normal = 0.700;
  • Global.hanpatu_keisuu_ult = 1;
  • }
  • }
  • rule("ball bot settings")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • (Event Player == Global.theball || Event Player == Global.anotherball) == True;
  • }
  • actions
  • {
  • Set Status(Event Player, Null, Unkillable, 9999);
  • }
  • }
  • rule("ball bot auto heal")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • (Event Player == Global.theball || Event Player == Global.anotherball) == True;
  • Health(Event Player) <= 300;
  • }
  • actions
  • {
  • Heal(Event Player, Null, 400 - Health(Event Player));
  • Wait(0.250, Ignore Condition);
  • Loop If Condition Is True;
  • }
  • }
  • rule("player is phased out")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == False;
  • Has Status(Event Player, Phased Out) == False;
  • }
  • actions
  • {
  • Set Status(Event Player, Null, Phased Out, 9999);
  • }
  • }
  • rule("theball settings")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.theball == Event Player;
  • Has Spawned(Event Player) == True;
  • }
  • actions
  • {
  • Event Player.theballs_rotate_axis_ang_vel = Vector(0, 0.050, 0);
  • Event Player.theballs_previous_pos = Vector(0, 0, 0);
  • Create Beam Effect(All Players(All Teams), Good Beam, Vector(0, 4, 0) + Position Of(Event Player), Vector(0, 4, 0) + Position Of(
  • Event Player) + 5 * Event Player.theballs_rotate_axis_ang_vel, Color(White), Visible To Position and Radius);
  • Create Effect(All Players(All Teams), Sphere, Color(White), Position Of(Event Player), 0.050, Visible To Position and Radius);
  • Create Effect(All Players(All Teams), Light Shaft, Color(White), Vector(X Component Of(Position Of(Event Player)), 0,
  • Z Component Of(Position Of(Event Player))), 0.030, Visible To Position and Radius);
  • Event Player.theballs_up_dir = Up;
  • Event Player.theballs_right_dir = Right;
  • Create Beam Effect(All Players(All Teams), Good Beam, Vector(0, 0.800, 0) + Position Of(Event Player)
  • + 2 * Event Player.theballs_right_dir, Vector(0, 0.800, 0) + Position Of(Event Player) + -2 * Event Player.theballs_right_dir,
  • Color(Green), Visible To Position and Radius);
  • Create Beam Effect(All Players(All Teams), Good Beam, Vector(0, 0.800, 0) + Position Of(Event Player)
  • + 2 * Event Player.theballs_up_dir, Vector(0, 0.800, 0) + Position Of(Event Player) + -2 * Event Player.theballs_up_dir, Color(
  • Aqua), Visible To Position and Radius);
  • Event Player.theballs_delta_pos = Vector(0, 0, 0);
  • Event Player.theballs_isActive = True;
  • }
  • }
  • rule("theball motion")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.theball == Event Player;
  • Event Player.theballs_isActive == True;
  • }
  • actions
  • {
  • Event Player.theball_center_pos = Position Of(Event Player) + Global.vec_ball_center_offset;
  • Event Player.theballs_delta_pos = Position Of(Event Player) - Event Player.theballs_previous_pos;
  • disabled If(True);
  • If(Event Player.theballs_previous_pos != Vector(0, 0, 0));
  • Event Player.theballs_dpos_magnitude = Distance Between(Vector(0, 0, 0), Event Player.theballs_delta_pos);
  • Event Player.theballs_dpos_direction = Normalize(Event Player.theballs_delta_pos);
  • If(Is In Air(Event Player));
  • Event Player.theballs_magnus_vector = 0.250 * Cross Product(Event Player.theballs_rotate_axis_ang_vel,
  • Event Player.theballs_delta_pos);
  • Apply Impulse(Event Player, Event Player.theballs_magnus_vector, Absolute Value(Distance Between(Vector(0, 0, 0),
  • Event Player.theballs_magnus_vector)), To World, Incorporate Contrary Motion);
  • End;
  • End;
  • Event Player.theballs_previous_pos = Position Of(Event Player);
  • If((Is On Ground(Event Player) || Y Component Of(Position Of(Event Player)) < 0) && Event Player.theballs_isActive);
  • "atterutoomou"
  • Event Player.theballs_dir_pos_delta_gnd_roll = Normalize(Cross Product(Event Player.theballs_rotate_axis_ang_vel, Down));
  • Event Player.theballs_vec_pos_delta_gnd_roll = Event Player.theballs_dir_pos_delta_gnd_roll * Global.ball_radius * Distance Between(
  • Vector(0, 0, 0), Event Player.theballs_rotate_axis_ang_vel);
  • Event Player.theballs_total_vec_deltaGndRoll = Event Player.theballs_vec_pos_delta_gnd_roll + Vector(X Component Of(
  • Event Player.theballs_delta_pos), 0, Z Component Of(Event Player.theballs_delta_pos));
  • If(Distance Between(Vector(0, 0, 0), Event Player.theballs_total_vec_deltaGndRoll) > Global.friction_spd_change_gnd_mpf2);
  • Event Player.theballs_vec_fricforce_gnd = -1 * Global.friction_spd_change_gnd_mpf2 * Normalize(
  • Event Player.theballs_total_vec_deltaGndRoll);
  • Else;
  • Event Player.theballs_vec_fricforce_gnd = -0.500 * Distance Between(Vector(0, 0, 0), Event Player.theballs_total_vec_deltaGndRoll)
  • * Normalize(Event Player.theballs_total_vec_deltaGndRoll);
  • End;
  • Apply Impulse(Event Player, Direction From Angles(Horizontal Angle From Direction(Event Player.theballs_vec_fricforce_gnd), 0),
  • 62 * Global.friction_spd_change_gnd_mpf2, To World, Incorporate Contrary Motion);
  • Event Player.theballs_rotate_axis_ang_vel = Event Player.theballs_rotate_axis_ang_vel + Distance Between(Vector(0, 0, 0),
  • Event Player.theballs_vec_fricforce_gnd) / Global.ball_radius * Normalize(Cross Product(Down,
  • Event Player.theballs_vec_fricforce_gnd));
  • "high load"
  • disabled Play Effect(All Players(All Teams), Bad Explosion, Color(Blue), Position Of(Event Player), 0.010);
  • End;
  • If(Distance Between(Global.dome_center, Position Of(Event Player)) > Global.dome_radius);
  • Event Player.theballs_roll_dome_vector = Cross Product(Direction Towards(Global.dome_center, Position Of(Event Player)),
  • Event Player.theballs_rotate_axis_ang_vel);
  • Apply Impulse(Event Player, Event Player.theballs_roll_dome_vector, 1.200 * Distance Between(Vector(0, 0, 0),
  • Event Player.theballs_roll_dome_vector), To World, Incorporate Contrary Motion);
  • Event Player.theballs_rotate_axis_ang_vel *= 0.999 - 0.200 * Sine From Degrees(Angle Between Vectors(Direction Towards(
  • Global.dome_center, Position Of(Event Player)), Event Player.theballs_rotate_axis_ang_vel));
  • Play Effect(All Players(All Teams), Bad Explosion, Color(Green), 0.800 * Direction Towards(Global.dome_center, Position Of(
  • Event Player)) + Vector(0, 0.800, 0) + Position Of(Event Player), 0.010);
  • End;
  • "axis effect rotate"
  • Event Player.theballs_rod_theta_degree = 180 / 3.142 * Distance Between(Vector(0, 0, 0),
  • Event Player.theballs_rotate_axis_ang_vel);
  • Event Player.theballs_rod_axis_vec_normalized = Normalize(Event Player.theballs_rotate_axis_ang_vel);
  • Event Player.theballs_right_dir = Event Player.theballs_right_dir * Cosine From Degrees(Event Player.theballs_rod_theta_degree) + (
  • 1 - Cosine From Degrees(Event Player.theballs_rod_theta_degree)) * Dot Product(Event Player.theballs_right_dir,
  • Event Player.theballs_rod_axis_vec_normalized) * Event Player.theballs_rod_axis_vec_normalized + Cross Product(
  • Event Player.theballs_rod_axis_vec_normalized, Event Player.theballs_right_dir) * Sine From Degrees(
  • Event Player.theballs_rod_theta_degree);
  • Event Player.theballs_up_dir = Event Player.theballs_up_dir * Cosine From Degrees(Event Player.theballs_rod_theta_degree) + (
  • 1 - Cosine From Degrees(Event Player.theballs_rod_theta_degree)) * Dot Product(Event Player.theballs_up_dir,
  • Event Player.theballs_rod_axis_vec_normalized) * Event Player.theballs_rod_axis_vec_normalized + Cross Product(
  • Event Player.theballs_rod_axis_vec_normalized, Event Player.theballs_up_dir) * Sine From Degrees(
  • Event Player.theballs_rod_theta_degree);
  • Wait(0.016, Ignore Condition);
  • Loop;
  • }
  • }
  • rule("player shoot ball")
  • {
  • event
  • {
  • Player Dealt Damage;
  • All;
  • All;
  • }
  • actions
  • {
  • Event Player.player_ability_damage_dealt = Event Ability;
  • If(Event Player.player_ability_damage_dealt == Button(Ability 2));
  • Call Subroutine(stoptheball);
  • Apply Impulse(Global.theball, Up, 9.800, To World, Cancel Contrary Motion);
  • Else If(Event Player.player_ability_damage_dealt == Button(Melee));
  • Apply Impulse(Global.theball, Direction From Angles(Horizontal Angle From Direction(Facing Direction Of(Event Player)), Max(-89,
  • -10 + Vertical Angle From Direction(Facing Direction Of(Event Player)))), 8, To World, Cancel Contrary Motion);
  • Else;
  • Event Player.player_dmg_target = Team Of(Event Player) == Team 1 ? Global.theball : Global.anotherball;
  • Event Player.player_ray_player = Ray Cast Hit Player(Eye Position(Event Player), Eye Position(Event Player)
  • + 100 * Event Direction, Event Player.player_dmg_target, Null, False);
  • Event Player.player_ray_normal = Ray Cast Hit Normal(Eye Position(Event Player), Eye Position(Event Player)
  • + 100 * Event Direction, Event Player.player_dmg_target, Null, False);
  • If(Event Player.player_ray_player == Event Player.player_dmg_target);
  • Event Player.player_entry_angle = Absolute Value(Angle Between Vectors(Event Player.player_ray_normal, -1 * Event Direction));
  • Event Player.player_torque_vec = Event Direction + Cosine From Degrees(Event Player.player_entry_angle)
  • * Event Player.player_ray_normal;
  • Event Player.player_rotate_axis_ang_vel = Event Damage * 0.020 * Cross Product(Event Player.player_ray_normal,
  • Event Player.player_torque_vec);
  • Event Player.player_move_vec = -1 * Cosine From Degrees(Event Player.player_entry_angle) * Event Player.player_ray_normal;
  • Global.theball.theballs_rotate_axis_ang_vel += Event Player.player_rotate_axis_ang_vel;
  • Apply Impulse(Global.theball, Direction From Angles(Horizontal Angle From Direction(Event Player.player_move_vec), Max(-89,
  • -10 + Vertical Angle From Direction(Event Player.player_move_vec))), 0.150 * Distance Between(Vector(0, 0, 0),
  • Event Player.player_move_vec) * Event Damage, To World, Incorporate Contrary Motion);
  • End;
  • End;
  • Play Effect(Event Player, Buff Explosion Sound, Color(White), Event Player, 60);
  • }
  • }
  • rule("player and bot")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • actions
  • {
  • Start Accelerating(Event Player, Direction Towards(Position Of(Event Player), Vector(0, 1, 0) + Global.dome_center),
  • Distance Between(Global.dome_center, Position Of(Event Player)) > Global.dome_radius ? 100 : 0, 20, To World,
  • Direction Rate and Max Speed);
  • }
  • }
  • rule("stoptheball")
  • {
  • event
  • {
  • Subroutine;
  • stoptheball;
  • }
  • actions
  • {
  • Apply Impulse(Global.theball, Up, 0.001, To World, Cancel Contrary Motion);
  • Apply Impulse(Global.theball, Down, 0.001, To World, Cancel Contrary Motion);
  • Apply Impulse(Global.theball, Right, 0.001, To World, Cancel Contrary Motion);
  • Apply Impulse(Global.theball, Left, 0.001, To World, Cancel Contrary Motion);
  • Apply Impulse(Global.theball, Backward, 0.001, To World, Cancel Contrary Motion);
  • Apply Impulse(Global.theball, Forward, 0.001, To World, Cancel Contrary Motion);
  • }
  • }
  • rule("theball goal in")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.theball == Event Player;
  • Distance Between(Global.t2goal_pos, Vector(Absolute Value(X Component Of(Position Of(Event Player))), Y Component Of(Position Of(
  • Event Player)), Z Component Of(Position Of(Event Player)))) < Global.goal_radius;
  • }
  • actions
  • {
  • Global.team_get_score = X Component Of(Position Of(Event Player)) > 0 ? Team 1 : Team 2;
  • If(Is Game In Progress);
  • Modify Team Score(Global.team_get_score, 1);
  • End;
  • Communicate(All Players(Global.team_get_score), Thanks);
  • Communicate(All Players(Opposite Team Of(Global.team_get_score)), Sorry);
  • Play Effect(All Players(All Teams), Good Explosion, Color(White), Event Player, 10);
  • Wait(2, Ignore Condition);
  • Call Subroutine(Sub1);
  • }
  • }
  • rule("the ball or player step jumppad")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • (!Is Dummy Bot(Event Player) || Global.theball == Event Player) == True;
  • Distance Between(Global.balljumppad_pos, Vector(X Component Of(Position Of(Event Player)), Y Component Of(Position Of(
  • Event Player)), Absolute Value(Z Component Of(Position Of(Event Player))))) < Global.balljumppad_radius;
  • }
  • actions
  • {
  • Play Effect(All Players(All Teams), Ring Explosion, Color(White), Event Player, 15);
  • Apply Impulse(Event Player, Vector(0, 1, Z Component Of(Position Of(Event Player)) > 0 ? -1 : 1), 17, To World,
  • Cancel Contrary Motion);
  • Play Effect(All Players(All Teams), Explosion Sound, Color(White), Event Player, 40);
  • }
  • }
  • rule("reset")
  • {
  • event
  • {
  • Subroutine;
  • Sub1;
  • }
  • actions
  • {
  • Global.theball.theballs_isActive = False;
  • Teleport(Global.theball, Vector(0, 0, Random Real(-15, 15)));
  • Call Subroutine(stoptheball);
  • Global.theball.theballs_rotate_axis_ang_vel = Vector(0, 1 / 100000, 0);
  • Wait(0.016, Ignore Condition);
  • Teleport(Filtered Array(All Players(Team 1), !Is Dummy Bot(Current Array Element)), Vector(-0.600 * Global.dome_radius, 0, 0));
  • Teleport(Filtered Array(All Players(Team 2), !Is Dummy Bot(Current Array Element)), Vector(0.600 * Global.dome_radius, 0, 0));
  • Set Facing(All Players(Team 1), Direction Towards(Vector(-1 * Global.dome_radius, 0, 0), Position Of(Global.theball)), To World);
  • Set Facing(All Players(Team 2), Direction Towards(Vector(Global.dome_radius, 0, 0), Position Of(Global.theball)), To World);
  • }
  • }
  • rule("game start reset")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • }
  • actions
  • {
  • Call Subroutine(Sub1);
  • }
  • }
  • rule("nodummy setting")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == False;
  • }
  • actions
  • {
  • disabled Create HUD Text(Event Player, Event Player.pl_raw_gap_fac_direction, Null, Null, Left, 0, Color(White), Color(White), Color(White),
  • Visible To and String, Default Visibility);
  • disabled Create HUD Text(Event Player, Distance Between(Vector(0, 0, 0), Event Player.pl_raw_gap_fac_direction), Null, Null, Left, 0, Color(
  • White), Color(White), Color(White), Visible To and String, Default Visibility);
  • disabled Create Effect(Event Player, Sphere, Color(White), Update Every Frame(Eye Position(Event Player) + 5 * (Facing Direction Of(
  • Event Player) + Event Player.pl_maxLimited_gap_fac_direction)), 1, Visible To Position and Radius);
  • disabled Create Effect(Event Player, Sphere, Color(Orange), Update Every Frame(Eye Position(Event Player) + 5 * (Facing Direction Of(
  • Event Player) + Event Player.pl_raw_gap_fac_direction)), 1, Visible To Position and Radius);
  • Event Player.pl_current_reach = 3;
  • Create Effect(All Players(All Teams), Sphere, Color(Lime Green), Update Every Frame(Eye Position(Event Player)
  • Create Effect(All Players(All Teams), Sphere, Event Player.cooltime_frames == 0 ? (Event Player.isUlting ? Color(Orange) : Color(
  • Lime Green)) : Color(Gray), Update Every Frame(Eye Position(Event Player)
  • + Event Player.pl_current_reach * Facing Direction Of(Event Player)), Event Player.pl_tama_radius,
  • Visible To Position Radius and Color);
  • Event Player.pl_tama_radius = 1;
  • disabled Create HUD Text(Event Player, Event Player.pl_angle_radianMaxLimit_fac_dir, Null, Null, Left, 0, Color(Orange), Color(White),
  • Color(White), Visible To and String, Default Visibility);
  • Create Beam Effect(All Players(All Teams), Grapple Beam, Update Every Frame(Eye Position(Event Player) + Vector(0, -0.100, 0)
  • + 0.700 * Facing Direction Of(Event Player) + 0.200 * Direction From Angles(-90 + Horizontal Angle From Direction(
  • Facing Direction Of(Event Player)), 0)), Update Every Frame(Eye Position(Event Player)
  • + Event Player.pl_current_reach * Facing Direction Of(Event Player)), Color(White), Visible To Position and Radius);
  • Create Progress Bar HUD Text(Event Player, 100 * ((Event Player.pl_current_reach - Global.min_reach) / (
  • Global.max_reach - Global.min_reach)), Custom String("ハンマーの長さ {0}m", Event Player.pl_current_reach), Top, 2, Color(Rose),
  • Color(White), Values, Default Visibility);
  • Create HUD Text(Event Player, Custom String("{0}:ハンマー伸ばす {1}:縮める ", Input Binding String(Button(Primary Fire)),
  • Input Binding String(Button(Secondary Fire))), Null, Null, Top, 1, Color(White), Color(White), Color(White), String,
  • Default Visibility);
  • Create HUD Text(Event Player.bool_show_tips ? Event Player : Null, Array(Custom String("{0}でハンマーを短くすると、{2}速く移動でき、ジャンプ力も上がる。",
  • Input Binding String(Button(Secondary Fire)), Null, Global.kaigyou_code), Custom String(
  • "{0}でハンマーを長くすると、{2}振ったときにより強い力をボールに与える。", Input Binding String(Button(Primary Fire)), Null, Global.kaigyou_code),
  • Custom String("ハンマーをゆっくり振るだけでも、{2}十分速くボールは飛ぶ。{2}振りが速すぎると当たらない仕組みなので注意。", Null, Null, Global.kaigyou_code), Custom String(
  • "{0}は、ボールの動きを完全に止めたあと、{2}真上に軽く浮かせる。{2}ハンマーと組み合わせる等、{2}使い方は豊富。", Ability Icon String(Hero(McCree), Button(Ability 2)), Null,
  • Global.kaigyou_code), Custom String("ジャンプや{0}での自分の移動も、{2}ボールの飛びに影響を及ぼす。{2}例えば、{1}で突きながら前へ{0}すると、{2}より強く前方への力をボールに与える。",
  • Ability Icon String(Hero(McCree), Button(Ability 1)), Input Binding String(Button(Primary Fire)), Global.kaigyou_code))
  • [Event Player.tips_index], Null, Custom String("{1}{1}{0}で次へ{1}{1}{2}と{1}{0}で隠す", Input Binding String(Button(Interact)),
  • Global.kaigyou_code, Input Binding String(Button(Crouch))), Right, 1, Color(White), Color(White), Color(White),
  • Visible To and String, Default Visibility);
  • Event Player.bool_show_tips = True;
  • Event Player.cooltime_frames = 0;
  • Event Player.current_hanpatsu_keisuu_bou_ball = Global.hanpatu_keisuu_normal;
  • Clear Status(Event Player, Burning);
  • Event Player.isUlting = False;
  • }
  • }
  • rule("notdummy loop")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == False;
  • }
  • actions
  • {
  • Event Player.pl_delta_pos = Position Of(Event Player) - Event Player.pl_prev_pos;
  • Event Player.pl_raw_gap_fac_direction = Facing Direction Of(Event Player) - Event Player.pl_previous_fac_direction;
  • Event Player.pl_length_of_raw_gap_fac_dir = Distance Between(Vector(0, 0, 0), Event Player.pl_raw_gap_fac_direction);
  • Event Player.pl_maxLimited_gap_fac_direction = Event Player.pl_length_of_raw_gap_fac_dir > Global.max_length_gap_fac_direction ? Global.max_length_gap_fac_direction / Event Player.pl_length_of_raw_gap_fac_dir * Event Player.pl_raw_gap_fac_direction : Event Player.pl_raw_gap_fac_direction;
  • Call Subroutine(reach_change);
  • "syoutotu junbi"
  • Event Player.pl_tama_is_touching_ball = Distance Between(Event Player.pl_pos_of_current_tama, Global.theball.theball_center_pos)
  • < Global.ball_radius + Event Player.pl_tama_radius;
  • Event Player.pl_current_tama_ball_distance = Distance Between(Event Player.pl_pos_of_current_tama,
  • Global.theball.theball_center_pos);
  • Event Player.pl_tama_and_ball_getting_close = Event Player.pl_current_tama_ball_distance < Event Player.pl_prev_tama_ball_distance;
  • If(Event Player.pl_tama_and_ball_getting_close && Event Player.pl_tama_is_touching_ball);
  • If(Event Player.pl_tama_and_ball_getting_close && Event Player.pl_tama_is_touching_ball && Event Player.cooltime_frames == 0);
  • Event Player.LOA_pl_dir_tama_to_ball = Direction Towards(Event Player.pl_pos_of_current_tama, Global.theball.theball_center_pos);
  • Event Player.pl_pos_tama_hit_ball = Event Player.pl_pos_of_current_tama + Event Player.pl_tama_radius * Event Player.LOA_pl_dir_tama_to_ball;
  • Event Player.pl_distance_tamahitpos_eye = Distance Between(Eye Position(Event Player), Event Player.pl_pos_tama_hit_ball);
  • Call Subroutine(getSwingDeltaOnHitpos);
  • Event Player.pl_tama_delta_pos_pushpull = Facing Direction Of(Event Player) * Event Player.pl_reach_change_spd;
  • Event Player.pl_tama_delta_pos_total = Event Player.pl_delta_pos + Event Player.pl_tama_delta_pos_swing_onHitpos + Event Player.pl_tama_delta_pos_pushpull;
  • "old sottenai"
  • disabled Event Player.pl_tama_delta_pos_total_in_LOA = Cosine From Degrees(Angle Between Vectors(Event Player.pl_tama_delta_pos_total,
  • Event Player.LOA_pl_dir_tama_to_ball)) * Event Player.pl_tama_delta_pos_total;
  • "old sottenai"
  • disabled Event Player.pl_ball_delta_pos_in_LOA = Cosine From Degrees(Angle Between Vectors(Global.theball.theballs_delta_pos,
  • Event Player.LOA_pl_dir_tama_to_ball)) * Global.theball.theballs_delta_pos;
  • "new sou"
  • Event Player.pl_tama_delta_pos_total_in_LOA = Cosine From Degrees(Angle Between Vectors(Event Player.pl_tama_delta_pos_total,
  • Event Player.LOA_pl_dir_tama_to_ball)) * Distance Between(Vector(0, 0, 0), Event Player.pl_tama_delta_pos_total)
  • * Event Player.LOA_pl_dir_tama_to_ball;
  • "new sou"
  • Event Player.pl_ball_delta_pos_in_LOA = Cosine From Degrees(Angle Between Vectors(Global.theball.theballs_delta_pos,
  • Event Player.LOA_pl_dir_tama_to_ball)) * Distance Between(Vector(0, 0, 0), Global.theball.theballs_delta_pos)
  • * Event Player.LOA_pl_dir_tama_to_ball;
  • Event Player.pl_impulse_spd_boop_ball = 62 * Distance Between(Vector(0, 0, 0),
  • Event Player.pl_tama_delta_pos_total_in_LOA - Event Player.pl_ball_delta_pos_in_LOA);
  • Event Player.pl_impulse_spd_boop_ball = (1 + Event Player.current_hanpatsu_keisuu_bou_ball) * 62 * Distance Between(Vector(0, 0,
  • 0), Event Player.pl_tama_delta_pos_total_in_LOA - Event Player.pl_ball_delta_pos_in_LOA);
  • Apply Impulse(Global.theball, Direction From Angles(Horizontal Angle From Direction(Event Player.LOA_pl_dir_tama_to_ball), Max(
  • -89.900, -5 + Vertical Angle From Direction(Event Player.LOA_pl_dir_tama_to_ball))), Event Player.pl_impulse_spd_boop_ball,
  • To World, Incorporate Contrary Motion);
  • If(Event Player.isUlting == False);
  • Event Player.ult_plus_percent = 0.600 * Max(0, Event Player.pl_impulse_spd_boop_ball * Cosine From Degrees(Angle Between Vectors(
  • Event Player.LOA_pl_dir_tama_to_ball, Direction Towards(Position Of(Global.theball), Vector((Team Of(Event Player)
  • == Team 1 ? 1 : -1) * Global.dome_radius, 0, 0)))));
  • Set Ultimate Charge(Event Player, Event Player.ult_plus_percent + Ultimate Charge Percent(Event Player));
  • End;
  • If(4 * Event Player.pl_impulse_spd_boop_ball > 10);
  • Play Effect(All Players(All Teams), Buff Explosion Sound, Color(White), Global.theball, 4 * Event Player.pl_impulse_spd_boop_ball);
  • End;
  • disabled If(Event Player.masatuyaru);
  • "masatu"
  • Event Player.pl_tama_delta_pos_total_on_CS = Event Player.pl_tama_delta_pos_total - Event Player.pl_tama_delta_pos_total_in_LOA;
  • Event Player.pl_ball_delta_pos_total_on_CS = Global.theball.theballs_delta_pos - Event Player.pl_ball_delta_pos_in_LOA + Global.ball_radius * Cross Product(
  • Event Player.LOA_pl_dir_tama_to_ball * 1, Global.theball.theballs_rotate_axis_ang_vel);
  • Event Player.pl_total_vec_tama_frict_to_ball = Event Player.pl_tama_delta_pos_total_on_CS - Event Player.pl_ball_delta_pos_total_on_CS;
  • "old"
  • disabled Event Player.pl_vec_fricforce_to_ball = 0.200 * Event Player.pl_total_vec_tama_frict_to_ball;
  • "new"
  • Event Player.pl_vec_fricforce_to_ball = 0.350 * Distance Between(Vector(0, 0, 0),
  • Event Player.pl_tama_delta_pos_total_in_LOA - Event Player.pl_ball_delta_pos_in_LOA) * Normalize(
  • Event Player.pl_total_vec_tama_frict_to_ball);
  • Apply Impulse(Global.theball, Event Player.pl_vec_fricforce_to_ball, Distance Between(Vector(0, 0, 0),
  • 62 * Event Player.pl_vec_fricforce_to_ball), To World, Incorporate Contrary Motion);
  • Global.theball.theballs_rotate_axis_ang_vel += Distance Between(Vector(0, 0, 0), Event Player.pl_vec_fricforce_to_ball)
  • / Global.ball_radius * Normalize(Cross Product(Normalize(Event Player.pl_vec_fricforce_to_ball),
  • Event Player.LOA_pl_dir_tama_to_ball));
  • disabled End;
  • Global.theball.theballs_isActive = True;
  • Event Player.cooltime_frames = 13;
  • End;
  • "step out"
  • Event Player.pl_previous_fac_direction = Facing Direction Of(Event Player);
  • Event Player.pl_prev_pos = Position Of(Event Player);
  • Event Player.pl_prev_tama_ball_distance = Event Player.pl_current_tama_ball_distance;
  • Event Player.cooltime_frames += Event Player.cooltime_frames == 0 ? 0 : -1;
  • Wait(0.016, Ignore Condition);
  • Loop;
  • }
  • }
  • rule("reach_change")
  • {
  • event
  • {
  • Subroutine;
  • reach_change;
  • }
  • actions
  • {
  • "reach change"
  • Event Player.pl_reach_change_0kaplmi1 = 0;
  • Event Player.pl_reach_change_0kaplmi1 += Is Button Held(Event Player, Button(Primary Fire)) ? 1 : 0;
  • Event Player.pl_reach_change_0kaplmi1 += Is Button Held(Event Player, Button(Secondary Fire)) ? -1 : 0;
  • If(Event Player.pl_reach_change_0kaplmi1 == 0 || False);
  • Event Player.pl_reach_change_spd = 0;
  • Else;
  • Event Player.pl_reach_change_spd += 0.010 * Event Player.pl_reach_change_0kaplmi1;
  • End;
  • Event Player.pl_current_reach += Event Player.pl_reach_change_spd;
  • disabled Event Player.pl_current_reach = Event Player.pl_current_reach > Global.max_reach ? Global.max_reach : Event Player.pl_current_reach;
  • disabled Event Player.pl_current_reach = Event Player.pl_current_reach < Global.min_reach ? Global.min_reach : Event Player.pl_current_reach;
  • If(Event Player.pl_current_reach > Global.max_reach);
  • Event Player.pl_current_reach = Global.max_reach;
  • Event Player.pl_reach_change_spd = 0;
  • Else If(Event Player.pl_current_reach < Global.min_reach);
  • Event Player.pl_current_reach = Global.min_reach;
  • Event Player.pl_reach_change_spd = 0;
  • End;
  • Event Player.pl_pos_of_current_tama = Eye Position(Event Player) + Event Player.pl_current_reach * Facing Direction Of(
  • Event Player);
  • "move speed calc"
  • Event Player.pl_reach_percent = 100 * ((Event Player.pl_current_reach - Global.min_reach) / (Global.max_reach - Global.min_reach));
  • Event Player.movespeedchangecount += 1;
  • If(Event Player.movespeedchangecount % Global.frameduration_movespeedchange == 0);
  • Set Move Speed(Event Player, 130 + -0.500 * Event Player.pl_reach_percent);
  • Set Jump Vertical Speed(Event Player, 180 + -0.900 * Event Player.pl_reach_percent);
  • Set Move Speed(Event Player, 130 + (Event Player.isUlting ? 50 : 0) + -0.500 * Event Player.pl_reach_percent);
  • Set Jump Vertical Speed(Event Player, 180 + (Event Player.isUlting ? 50 : 0) + -0.900 * Event Player.pl_reach_percent);
  • End;
  • }
  • }
  • rule("getswingdelta")
  • {
  • event
  • {
  • Subroutine;
  • getSwingDeltaOnHitpos;
  • }
  • actions
  • {
  • Event Player.pl_angle_radianMaxLimit_fac_dir = Distance Between(Vector(0, 0, 0), Event Player.pl_maxLimited_gap_fac_direction);
  • Event Player.pl_axis_vector_fac_dir_change = Normalize(Cross Product(Event Player.pl_previous_fac_direction, Facing Direction Of(
  • Event Player)));
  • Event Player.pl_vec_from_eye_to_currentHitpos = Event Player.pl_pos_tama_hit_ball - Eye Position(Event Player);
  • Event Player.pl_vec_from_eye_to_prevHitpos = Event Player.pl_vec_from_eye_to_currentHitpos * Cosine From Radians(
  • Event Player.pl_angle_radianMaxLimit_fac_dir) + Cross Product(Event Player.pl_axis_vector_fac_dir_change,
  • Event Player.pl_vec_from_eye_to_currentHitpos) * Sine From Radians(Event Player.pl_angle_radianMaxLimit_fac_dir) + (
  • 1 - Cosine From Radians(Event Player.pl_angle_radianMaxLimit_fac_dir)) * Dot Product(
  • Event Player.pl_vec_from_eye_to_currentHitpos, Event Player.pl_axis_vector_fac_dir_change)
  • * Event Player.pl_axis_vector_fac_dir_change;
  • disabled If(Event Player.is_calc_new);
  • Event Player.pl_tama_delta_pos_swing_onHitpos = Event Player.pl_vec_from_eye_to_currentHitpos - Event Player.pl_vec_from_eye_to_prevHitpos;
  • disabled Else;
  • "tama delta pos swing on hitpos"
  • disabled Event Player.pl_tama_delta_pos_swing_onHitpos = Event Player.pl_distance_tamahitpos_eye * Event Player.pl_maxLimited_gap_fac_direction;
  • disabled End;
  • }
  • }
  • rule("interact change tips")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Interact)) == True;
  • }
  • actions
  • {
  • If(Is Button Held(Event Player, Button(Crouch)) == True);
  • Event Player.bool_show_tips = !Event Player.bool_show_tips;
  • Abort;
  • End;
  • Event Player.tips_index += 1;
  • If(Event Player.tips_index > Global.max_index_of_tips);
  • Event Player.tips_index = 0;
  • End;
  • }
  • }
  • rule("game set")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Match Time == 0;
  • Team Score(Team 1) != Team Score(Team 2);
  • }
  • actions
  • {
  • Declare Team Victory(Team Score(Team 1) > Team Score(Team 2) ? Team 1 : Team 2);
  • }
  • }
  • disabled rule("debug crouch")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Crouching(Event Player) == True;
  • }
  • actions
  • {
  • Global.theball.theballs_rotate_axis_ang_vel = Facing Direction Of(Event Player);
  • }
  • }
  • disabled rule("debug ult")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Button(Ultimate)) == True;
  • }
  • actions
  • {
  • Event Player.masatuyaru = !Event Player.masatuyaru;
  • Small Message(Event Player, Event Player.masatuyaru ? Custom String("masatu ari") : Custom String("masatu nasi"));
  • }
  • }
  • rule("player ult")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Using Ultimate(Event Player) == True;
  • }
  • actions
  • {
  • Cancel Primary Action(Event Player);
  • Set Status(Event Player, Null, Burning, 10);
  • Event Player.isUlting = True;
  • Event Player.current_hanpatsu_keisuu_bou_ball = Global.hanpatu_keisuu_ult;
  • Wait(10, Ignore Condition);
  • Clear Status(Event Player, Burning);
  • Event Player.isUlting = False;
  • Event Player.current_hanpatsu_keisuu_bou_ball = Global.hanpatu_keisuu_normal;
  • }
  • }
Join the Workshop.codes Discord