Create
Return to post

Comparing difference between and

View raw
  • settings
  • {
  • main
  • {
  • Description: "(FAXVX)たたかぶじゃんけん トーナメント Beat'n'Block Rock-Paper-Scissors Tournament 1.04 by @nakamoooooo *ヒーローが複数種類いると途中参加時にリセットが起きてしまうので、ドゥーム限定に変更 *「ポン」でじゃんけんの手が見える対象は、自分+相手+じゃんけんしてない人になるよう変更 *待ち状態の人が進入可能な円形の領域は見た目より1.5m狭くなった"
  • Description: "(FAXVX)たたかぶじゃんけん トーナメント Beat'n'Block Rock-Paper-Scissors Tournament 1.05 by @nakamoooooo *たたいてかぶってのテンポがだんだん速くなるよう変更 *勝者がたたいたらすぐ次の段階に移行するよう変更 *ゲームに勝利するポイントと、マッチに勝利するスコアをワークショップ設定から設定できるように変更"
  • }
  • lobby
  • {
  • Allow Players Who Are In Queue: Yes
  • Match Voice Chat: Enabled
  • }
  • modes
  • {
  • Deathmatch
  • {
  • Self Initiated Respawn: Off
  • enabled maps
  • {
  • Workshop Island
  • Workshop Island Night
  • }
  • }
  • General
  • {
  • Limit Roles: 2 Of Each Role Per Team
  • Respawn As Random Hero: On
  • }
  • }
  • heroes
  • {
  • General
  • {
  • D.Va
  • {
  • Spawn Without Mech: On
  • }
  • Reinhardt
  • {
  • Rocket Hammer Knockback Scalar: 0%
  • }
  • enabled heroes
  • {
  • Doomfist
  • }
  • }
  • }
  • }
  • variables
  • {
  • global:
  • 0: current_game_phase
  • 1: living_participants
  • 2: priority
  • 3: I_matchmaking
  • 4: center_pos
  • 5: area_radius
  • 6: hand_selection_radius
  • 7: tool_radius
  • 8: ttkb_win_points
  • 9: play_with_bots
  • 10: victory_scores
  • player:
  • 0: partner
  • 1: isMaster
  • 2: ttkb_player_angle
  • 3: isDoingTtkb
  • 4: ttkb_current_phase
  • 5: handsPositions
  • 6: handsFormArray
  • 7: hands_visibleto
  • 8: hand_selected_index
  • 9: hand_selected_form
  • 10: isJankenWinner
  • 11: tools_positions
  • 12: toolsKindArray
  • 13: ttkbjanken_points
  • 14: tool_selected_type
  • 15: tool_selected_index
  • 17: isTournamentParticipant
  • 18: sec_current_short_interval_clap
  • 19: sec_initial_short_interval_clap
  • 20: sec_minimum_short_interval_clap
  • }
  • subroutines
  • {
  • 0: short_clap
  • 1: long_clap
  • }
  • rule("const")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • actions
  • {
  • Disable Built-In Game Mode Scoring;
  • Global.victory_scores = 2;
  • Global.ttkb_win_points = 3;
  • Global.victory_scores = Workshop Setting Integer(Custom String("settings"), Custom String("match victory scores"), 2, 1, 7);
  • Global.ttkb_win_points = Workshop Setting Integer(Custom String("settings"), Custom String("game win points"), 3, 1, 10);
  • Global.tool_radius = 0.100;
  • Global.hand_selection_radius = 0.080;
  • Global.center_pos = Vector(0, 0, 0);
  • Global.area_radius = 12;
  • Create Effect(All Players(All Teams), Ring, Blue, Global.center_pos, Global.area_radius, Visible To);
  • Global.play_with_bots = Workshop Setting Toggle(Custom String("bots"), Custom String("play_with_bots"), False);
  • If(Global.play_with_bots);
  • Create Dummy Bot(Hero(Junkrat), All Teams, -1, Vector(0, 0, 0), Vector(0, 0, 0));
  • Create Dummy Bot(Hero(Junkrat), All Teams, -1, Vector(0, 0, 0), Vector(0, 0, 0));
  • Create Dummy Bot(Random Value In Array(All Heroes), All Teams, -1, Vector(0, 0, 0), Vector(0, 0, 0));
  • Create Dummy Bot(Random Value In Array(All Heroes), All Teams, -1, Vector(0, 0, 0), Vector(0, 0, 0));
  • End;
  • Create HUD Text(Host Player, String("{0}: {1}", String("Server Load"), Server Load), Null, Null, Right, 0, White, White, White,
  • Visible To and String, Default Visibility);
  • Create HUD Text(Host Player, String("{0}: {1}", String("Server Load Average"), Server Load Average), Null, Null, Right, 0, White,
  • White, White, Visible To and String, Default Visibility);
  • Create HUD Text(Host Player, String("{0}: {1}", String("Server Load Peak"), Server Load Peak), Null, Null, Right, 0, White, White,
  • White, Visible To and String, Default Visibility);
  • }
  • }
  • rule("on game start")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • }
  • actions
  • {
  • Global.current_game_phase = 1;
  • }
  • }
  • rule("phase 1")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.current_game_phase == 1;
  • }
  • actions
  • {
  • Wait(0.250, Ignore Condition);
  • Global.living_participants = Randomized Array(All Living Players(All Teams));
  • All Players(All Teams).isTournamentParticipant = True;
  • Global.current_game_phase = 2;
  • }
  • }
  • rule("phase 1.5")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.current_game_phase == 1.500;
  • }
  • actions
  • {
  • Wait(0.250, Ignore Condition);
  • If(Entity Exists(Global.priority));
  • Global.living_participants = Append To Array(Array(Global.priority), Remove From Array(All Living Players(All Teams),
  • Global.priority));
  • Else;
  • Global.living_participants = Randomized Array(All Living Players(All Teams));
  • End;
  • Global.current_game_phase = 2;
  • }
  • }
  • rule("phase 2")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.current_game_phase == 2;
  • }
  • actions
  • {
  • Wait(0.250, Ignore Condition);
  • For Global Variable(I_matchmaking, 1, Count Of(Global.living_participants), 2);
  • Global.living_participants[Global.I_matchmaking].partner = Global.living_participants[-1 + Global.I_matchmaking];
  • Global.living_participants[-1 + Global.I_matchmaking].partner = Global.living_participants[Global.I_matchmaking];
  • Global.living_participants[Global.I_matchmaking].isMaster = True;
  • Global.living_participants[-1 + Global.I_matchmaking].isMaster = False;
  • Global.living_participants[Global.I_matchmaking].ttkb_player_angle = 30 * Global.I_matchmaking;
  • End;
  • If(Count Of(Global.living_participants) % 2 == 1);
  • Global.priority = Last Of(Global.living_participants);
  • Else;
  • Global.priority = Null;
  • End;
  • Global.living_participants.ttkb_current_phase = 0;
  • Global.living_participants.isDoingTtkb = True;
  • Global.priority.ttkb_current_phase = 0;
  • Global.priority.isDoingTtkb = False;
  • Global.current_game_phase = 3;
  • }
  • }
  • rule("phase3 master 0")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.current_game_phase == 3;
  • Event Player.isMaster == True;
  • Event Player.ttkb_current_phase == 0;
  • Global.priority != Event Player;
  • Event Player.isDoingTtkb == True;
  • }
  • actions
  • {
  • Wait(0.250, Abort When False);
  • Array(Event Player, Event Player.partner).ttkbjanken_points = 0;
  • disabled Start Forcing Player Position(Event Player, Global.center_pos + (1 + Global.area_radius) * Direction From Angles(
  • Event Player.ttkb_player_angle, 0), False);
  • disabled Start Forcing Player Position(Event Player.partner, Global.center_pos + (3 + Global.area_radius) * Direction From Angles(
  • Event Player.ttkb_player_angle, 0), False);
  • Set Status(Array(Event Player, Event Player.partner), Null, Rooted, 9999);
  • Teleport(Event Player, Global.center_pos + (1 + Global.area_radius) * Direction From Angles(Event Player.ttkb_player_angle, 0));
  • Teleport(Event Player.partner, Global.center_pos + (1 + Global.area_radius) * Direction From Angles(
  • 12 + Event Player.ttkb_player_angle, 0));
  • Apply Impulse(Array(Event Player, Event Player.partner), Down, 0.001, To World, Cancel Contrary Motion);
  • Apply Impulse(Array(Event Player, Event Player.partner), Up, 0.001, To World, Cancel Contrary Motion);
  • Apply Impulse(Array(Event Player, Event Player.partner), Left, 0.001, To World, Cancel Contrary Motion);
  • Apply Impulse(Array(Event Player, Event Player.partner), Right, 0.001, To World, Cancel Contrary Motion);
  • Apply Impulse(Array(Event Player, Event Player.partner), Forward, 0.001, To World, Cancel Contrary Motion);
  • Apply Impulse(Array(Event Player, Event Player.partner), Backward, 0.001, To World, Cancel Contrary Motion);
  • Event Player.sec_initial_short_interval_clap = 0.250;
  • Event Player.sec_minimum_short_interval_clap = 0.125;
  • Event Player.sec_current_short_interval_clap = Event Player.sec_initial_short_interval_clap;
  • Array(Event Player, Event Player.partner).ttkb_current_phase = 0.500;
  • }
  • }
  • rule("phase3 master 0.5")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.current_game_phase == 3;
  • Event Player.isMaster == True;
  • Event Player.ttkb_current_phase == 0.500;
  • Global.priority != Event Player;
  • Event Player.isDoingTtkb == True;
  • }
  • actions
  • {
  • Wait(0.250, Abort When False);
  • Event Player.handsFormArray = Randomized Array(Array(0, 10, 20));
  • Event Player.partner.handsFormArray = Randomized Array(Array(0, 10, 20));
  • Event Player.hands_visibleto = Array(Event Player, Event Player, Event Player);
  • Event Player.partner.hands_visibleto = Array(Event Player.partner, Event Player.partner, Event Player.partner);
  • Array(Event Player, Event Player.partner).toolsKindArray = Randomized Array(Array(100, 200));
  • Event Player.tools_positions = Array(Vector(X Component Of(Position Of(Event Player)), 1.100, Z Component Of(Position Of(
  • Event Player))) + 0.800 * Direction From Angles(Horizontal Angle From Direction(Direction Towards(Position Of(Event Player),
  • Position Of(Event Player.partner))), 0), Vector(X Component Of(Position Of(Event Player)), 1.400, Z Component Of(Position Of(
  • Event Player))) + 0.800 * Direction From Angles(Horizontal Angle From Direction(Direction Towards(Position Of(Event Player),
  • Position Of(Event Player.partner))), 0));
  • Event Player.partner.tools_positions = Array(Vector(X Component Of(Position Of(Event Player.partner)), 1.100, Z Component Of(
  • Position Of(Event Player.partner))) + 0.800 * Direction From Angles(Horizontal Angle From Direction(Direction Towards(
  • Position Of(Event Player.partner), Position Of(Event Player))), 0), Vector(X Component Of(Position Of(Event Player.partner)),
  • 1.400, Z Component Of(Position Of(Event Player.partner))) + 0.800 * Direction From Angles(Horizontal Angle From Direction(
  • Direction Towards(Position Of(Event Player.partner), Position Of(Event Player))), 0));
  • Event Player.handsPositions[0] = Vector(X Component Of(Position Of(Event Player)), 1, Z Component Of(Position Of(Event Player)))
  • + 1.200 * Direction From Angles(-16 + Horizontal Angle From Direction(Direction Towards(Position Of(Event Player), Position Of(
  • Event Player.partner))), 0);
  • Event Player.handsPositions[1] = Vector(X Component Of(Position Of(Event Player)), 1, Z Component Of(Position Of(Event Player)))
  • + 1.200 * Direction From Angles(-24 + Horizontal Angle From Direction(Direction Towards(Position Of(Event Player), Position Of(
  • Event Player.partner))), 0);
  • Event Player.handsPositions[2] = Vector(X Component Of(Position Of(Event Player)), 1, Z Component Of(Position Of(Event Player)))
  • + 1.200 * Direction From Angles(-32 + Horizontal Angle From Direction(Direction Towards(Position Of(Event Player), Position Of(
  • Event Player.partner))), 0);
  • Event Player.partner.handsPositions[0] = Vector(X Component Of(Position Of(Event Player.partner)), 1, Z Component Of(Position Of(
  • Event Player.partner))) + 1.200 * Direction From Angles(-16 + Horizontal Angle From Direction(Direction Towards(Position Of(
  • Event Player.partner), Position Of(Event Player))), 0);
  • Event Player.partner.handsPositions[1] = Vector(X Component Of(Position Of(Event Player.partner)), 1, Z Component Of(Position Of(
  • Event Player.partner))) + 1.200 * Direction From Angles(-24 + Horizontal Angle From Direction(Direction Towards(Position Of(
  • Event Player.partner), Position Of(Event Player))), 0);
  • Event Player.partner.handsPositions[2] = Vector(X Component Of(Position Of(Event Player.partner)), 1, Z Component Of(Position Of(
  • Event Player.partner))) + 1.200 * Direction From Angles(-32 + Horizontal Angle From Direction(Direction Towards(Position Of(
  • Event Player.partner), Position Of(Event Player))), 0);
  • Set Facing(Event Player, Direction Towards(Eye Position(Event Player), Eye Position(Event Player.partner)), To World);
  • Set Facing(Event Player.partner, Direction Towards(Eye Position(Event Player.partner), Eye Position(Event Player)), To World);
  • Big Message(Array(Event Player, Event Player.partner), Array(Custom String("よーい!"))[0]);
  • disabled Wait(Random Real(2, 8), Ignore Condition);
  • disabled Kill(Random Value In Array(Array(Event Player, Event Player.partner)), Null);
  • disabled Event Player.hands_visibleto = Array(Array(Event Player, Event Player.partner), Array(Event Player, Event Player.partner), Array(
  • Event Player, Event Player.partner));
  • disabled Event Player.partner.hands_visibleto = Array(Array(Event Player, Event Player.partner), Array(Event Player, Event Player.partner),
  • Array(Event Player, Event Player.partner));
  • Wait(1, Abort When False);
  • Array(Event Player, Event Player.partner).hand_selected_index = -1;
  • Array(Event Player, Event Player.partner).hand_selected_form = -10;
  • Array(Event Player, Event Player.partner).tool_selected_index = -1;
  • Array(Event Player, Event Player.partner).tool_selected_type = 0;
  • Array(Event Player, Event Player.partner).ttkb_current_phase = 1;
  • }
  • }
  • rule("ttkb if one die")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.current_game_phase == 3;
  • Event Player.isDoingTtkb == True;
  • (!Entity Exists(Event Player.partner) || !Is Alive(Event Player.partner)) == True;
  • Global.priority != Event Player;
  • }
  • actions
  • {
  • Wait(1, Ignore Condition);
  • disabled Stop Forcing Player Position(Array(Event Player, Event Player.partner));
  • Clear Status(Array(Event Player, Event Player.partner), Rooted);
  • Array(Event Player, Event Player.partner).hands_visibleto = Array(Event Player, Event Player, Event Player);
  • Teleport(Array(Event Player, Event Player.partner), Global.center_pos);
  • Event Player.isDoingTtkb = False;
  • Event Player.partner.isDoingTtkb = False;
  • Array(Event Player, Event Player.partner).hands_visibleto = Array(Empty Array, Empty Array, Empty Array);
  • }
  • }
  • rule("phase 3 global no one doing ttkb")
  • {
  • event
  • {
  • Ongoing - Global;
  • }
  • conditions
  • {
  • Global.current_game_phase == 3;
  • Count Of(Filtered Array(All Players(All Teams), Current Array Element.isDoingTtkb)) == 0;
  • }
  • actions
  • {
  • Wait(1, Ignore Condition);
  • If(Count Of(All Living Players(All Teams)) >= 2);
  • Wait(1, Ignore Condition);
  • Global.current_game_phase = 1.500;
  • Else;
  • Modify Player Score(First Of(All Living Players(All Teams)), 1);
  • Big Message(All Players(All Teams), String("{0}: {1}", String("Winner"), First Of(All Living Players(All Teams))));
  • Wait(3, Ignore Condition);
  • All Players(All Teams).isTournamentParticipant = True;
  • Resurrect(All Dead Players(All Teams));
  • Wait(1, Ignore Condition);
  • Global.current_game_phase = 1;
  • End;
  • }
  • }
  • rule("player settings")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • actions
  • {
  • Set Respawn Max Time(Event Player, 1800);
  • Disable Built-In Game Mode Respawning(Event Player);
  • Enable Death Spectate All Players(Event Player);
  • disabled Create Effect(All Players(All Teams), Sphere, White, Position Of(Event Player), Is Alive(Event Player)
  • && Event Player.isJankenWinner ? 1 : 0, Visible To Position and Radius);
  • Start Accelerating(Event Player, Direction From Angles(Horizontal Angle From Direction(Direction Towards(Position Of(Event Player),
  • Global.center_pos)), -2), !Event Player.isDoingTtkb && Distance Between(Position Of(Event Player), Global.center_pos)
  • > Global.area_radius + -1.500 ? 100 : 0, 20, To World, Direction Rate and Max Speed);
  • Disallow Button(Event Player, Ability 1);
  • Disallow Button(Event Player, Ability 2);
  • Disallow Button(Event Player, Ultimate);
  • Set Melee Enabled(Event Player, False);
  • Set Secondary Fire Enabled(Event Player, False);
  • Set Primary Fire Enabled(Event Player, False);
  • Set Status(Event Player, Null, Invincible, 9999);
  • Wait(0.200 * Slot Of(Event Player), Ignore Condition);
  • Create Effect(Event Player.hands_visibleto[Index Of Array Value(Event Player.handsFormArray, 0)], Sphere, Red,
  • Event Player.handsPositions[Index Of Array Value(Event Player.handsFormArray, 0)], Global.hand_selection_radius,
  • Visible To Position and Radius);
  • Create Effect(Event Player.hands_visibleto[Index Of Array Value(Event Player.handsFormArray, 10)], Sphere, Green,
  • Event Player.handsPositions[Index Of Array Value(Event Player.handsFormArray, 10)], Global.hand_selection_radius,
  • Visible To Position and Radius);
  • Create Effect(Event Player.hands_visibleto[Index Of Array Value(Event Player.handsFormArray, 20)], Sphere, Blue,
  • Event Player.handsPositions[Index Of Array Value(Event Player.handsFormArray, 20)], Global.hand_selection_radius,
  • Visible To Position and Radius);
  • Create In-World Text(Event Player.hands_visibleto[Index Of Array Value(Event Player.handsFormArray, 0)], Array(String("{0} {1}",
  • Ability Icon String(Hero(Ana), Button(Melee)), Custom String("\r\nグー")))[0], Event Player.handsPositions[Index Of Array Value(
  • Event Player.handsFormArray, 0)], 2, Do Not Clip, Visible To Position and String, Red, Default Visibility);
  • Create In-World Text(Event Player.hands_visibleto[Index Of Array Value(Event Player.handsFormArray, 10)], Array(String("{0} {1}",
  • Ability Icon String(Hero(D.Va), Button(Ultimate)), Custom String("\r\nチョキ")))[0],
  • Event Player.handsPositions[Index Of Array Value(Event Player.handsFormArray, 10)], 2, Do Not Clip,
  • Visible To Position and String, Green, Default Visibility);
  • Create In-World Text(Event Player.hands_visibleto[Index Of Array Value(Event Player.handsFormArray, 20)], Array(String("{0} {1}",
  • Icon String(Stop), Custom String("\r\nパー")))[0], Event Player.handsPositions[Index Of Array Value(Event Player.handsFormArray,
  • 20)], 2, Do Not Clip, Visible To Position and String, Blue, Default Visibility);
  • Wait(0.050, Ignore Condition);
  • Create Effect(Event Player.ttkb_current_phase == 3 ? Event Player : Null, Sphere, Orange,
  • Event Player.tools_positions[Index Of Array Value(Event Player.toolsKindArray, 100)], Global.tool_radius,
  • Visible To Position and Radius);
  • Create Effect(Event Player.ttkb_current_phase == 3 ? Event Player : Null, Sphere, Aqua,
  • Event Player.tools_positions[Index Of Array Value(Event Player.toolsKindArray, 200)], Global.tool_radius,
  • Visible To Position and Radius);
  • Create In-World Text(Event Player.ttkb_current_phase == 3 ? Event Player : Null, Array(String("{0} {1}", Ability Icon String(Hero(
  • Doomfist), Button(Primary Fire)), Custom String("\r\nたたく")))[0], Event Player.tools_positions[Index Of Array Value(
  • Event Player.toolsKindArray, 100)], 2, Do Not Clip, Visible To Position and String, Orange, Default Visibility);
  • Create In-World Text(Event Player.ttkb_current_phase == 3 ? Event Player : Null, Array(String("{0} {1}", Ability Icon String(Hero(
  • Mei), Button(Ability 1)), Custom String("\r\nかぶる")))[0], Event Player.tools_positions[Index Of Array Value(
  • Event Player.toolsKindArray, 200)], 2, Do Not Clip, Visible To Position and String, Aqua, Default Visibility);
  • Create In-World Text(Event Player.isDoingTtkb ? All Players(All Teams) : Empty Array, Event Player, Vector(0, -0.200, 0)
  • + Event Player.handsPositions[1], 1, Do Not Clip, Visible To Position and String, White, Default Visibility);
  • Create In-World Text(Event Player.isDoingTtkb ? All Players(All Teams) : Empty Array, String("{0} {1}",
  • Event Player.ttkbjanken_points, Custom String("pts.")), Vector(0, 0.200, 0) + Event Player.handsPositions[1], 2, Do Not Clip,
  • Visible To Position and String, White, Default Visibility);
  • }
  • }
  • rule("dead player no longer master")
  • {
  • event
  • {
  • Player Died;
  • All;
  • All;
  • }
  • actions
  • {
  • Wait(0.250, Ignore Condition);
  • Event Player.isMaster = False;
  • }
  • }
  • rule("phase3 master 1")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.current_game_phase == 3;
  • Event Player.isMaster == True;
  • Event Player.ttkb_current_phase == 1;
  • Global.priority != Event Player;
  • Event Player.isDoingTtkb == True;
  • }
  • actions
  • {
  • Small Message(Array(Event Player, Event Player.partner), Array(Custom String("たたいて"))[0]);
  • Play Effect(Array(Event Player, Event Player.partner), Explosion Sound, White, (Eye Position(Event Player) + Eye Position(
  • Event Player.partner)) / 2, 50);
  • Wait(0.250, Abort When False);
  • Call Subroutine(short_clap);
  • Play Effect(Array(Event Player, Event Player.partner), Explosion Sound, White, (Eye Position(Event Player) + Eye Position(
  • Event Player.partner)) / 2, 50);
  • Wait(0.500, Abort When False);
  • Call Subroutine(long_clap);
  • Play Effect(Array(Event Player, Event Player.partner), Explosion Sound, White, (Eye Position(Event Player) + Eye Position(
  • Event Player.partner)) / 2, 50);
  • Wait(0.250, Abort When False);
  • Call Subroutine(short_clap);
  • Small Message(Array(Event Player, Event Player.partner), Array(Custom String("かぶって"))[0]);
  • Play Effect(Array(Event Player, Event Player.partner), Explosion Sound, White, (Eye Position(Event Player) + Eye Position(
  • Event Player.partner)) / 2, 50);
  • Wait(0.250, Abort When False);
  • Call Subroutine(short_clap);
  • Play Effect(Array(Event Player, Event Player.partner), Explosion Sound, White, (Eye Position(Event Player) + Eye Position(
  • Event Player.partner)) / 2, 50);
  • Wait(0.500, Abort When False);
  • Call Subroutine(long_clap);
  • Play Effect(Array(Event Player, Event Player.partner), Explosion Sound, White, (Eye Position(Event Player) + Eye Position(
  • Event Player.partner)) / 2, 50);
  • Wait(0.250, Abort When False);
  • Call Subroutine(short_clap);
  • Small Message(Array(Event Player, Event Player.partner), Array(Custom String("じゃん"))[0]);
  • Play Effect(Array(Event Player, Event Player.partner), Explosion Sound, White, (Eye Position(Event Player) + Eye Position(
  • Event Player.partner)) / 2, 50);
  • Wait(0.500, Abort When False);
  • Call Subroutine(long_clap);
  • Array(Event Player, Event Player.partner).ttkb_current_phase = 2;
  • }
  • }
  • rule("phase3 master 2")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.current_game_phase == 3;
  • Event Player.isMaster == True;
  • Event Player.ttkb_current_phase == 2;
  • Global.priority != Event Player;
  • Event Player.isDoingTtkb == True;
  • }
  • actions
  • {
  • Small Message(Array(Event Player, Event Player.partner), Array(Custom String("けん"))[0]);
  • Play Effect(Array(Event Player, Event Player.partner), Explosion Sound, White, (Eye Position(Event Player) + Eye Position(
  • Event Player.partner)) / 2, 50);
  • Wait(0.500, Abort When False);
  • Call Subroutine(long_clap);
  • "あいこ"
  • If(Event Player.hand_selected_form == Event Player.partner.hand_selected_form);
  • Event Player.isJankenWinner = False;
  • Event Player.partner.isJankenWinner = False;
  • "masterの勝ち"
  • Else If(Is True For Any(Array(-10, 20),
  • Event Player.hand_selected_form - Event Player.partner.hand_selected_form == Current Array Element));
  • Event Player.isJankenWinner = True;
  • Event Player.partner.isJankenWinner = False;
  • "masterじゃないほうの勝ち"
  • Else;
  • Event Player.isJankenWinner = False;
  • Event Player.partner.isJankenWinner = True;
  • End;
  • Array(Event Player, Event Player.partner).ttkb_current_phase = 3;
  • }
  • }
  • rule("phase3 master 3")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.current_game_phase == 3;
  • Event Player.isMaster == True;
  • Event Player.ttkb_current_phase == 3;
  • Global.priority != Event Player;
  • Event Player.isDoingTtkb == True;
  • }
  • actions
  • {
  • Small Message(Array(Event Player, Event Player.partner), Array(Custom String("ぽん"))[0]);
  • Play Effect(Array(Event Player, Event Player.partner), Explosion Sound, White, (Eye Position(Event Player) + Eye Position(
  • Event Player.partner)) / 2, 50);
  • Wait(Event Player.hand_selected_form == Event Player.partner.hand_selected_form ? 1 : 2, Abort When False);
  • Array(Event Player, Event Player.partner).ttkb_current_phase = 4;
  • }
  • }
  • rule("phase3 master 4")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.current_game_phase == 3;
  • Event Player.isMaster == True;
  • Event Player.ttkb_current_phase == 4;
  • Global.priority != Event Player;
  • Event Player.isDoingTtkb == True;
  • }
  • actions
  • {
  • "勝者が存在して"
  • If(Event Player.isJankenWinner || Event Player.partner.isJankenWinner);
  • "勝者が何もしてなかったら"
  • If(First Of(Filtered Array(Array(Event Player, Event Player.partner), Current Array Element.isJankenWinner))
  • .tool_selected_type == 0);
  • "敗者がかぶっていたら"
  • If(First Of(Filtered Array(Array(Event Player, Event Player.partner), !Current Array Element.isJankenWinner))
  • .tool_selected_type == 200);
  • "敗者に1加点"
  • First Of(Filtered Array(Array(Event Player.partner, Event Player), !Current Array Element.isJankenWinner)).ttkbjanken_points += 1;
  • "勝者をスタン"
  • Set Status(First Of(Filtered Array(Array(Event Player, Event Player.partner), Current Array Element.isJankenWinner)), Null,
  • Stunned, 0.500);
  • "(どちらも何もしてなければポイント増減なし)"
  • End;
  • End;
  • End;
  • "勝者がかぶって"
  • If(First Of(Filtered Array(Array(Event Player, Event Player.partner), Current Array Element.isJankenWinner))
  • .tool_selected_type == 200);
  • "敗者が何もしていない"
  • If(First Of(Filtered Array(Array(Event Player, Event Player.partner), !Current Array Element.isJankenWinner))
  • .tool_selected_type == 0);
  • "勝者に(も今ここで)1加点"
  • First Of(Filtered Array(Array(Event Player.partner, Event Player), Current Array Element.isJankenWinner)).ttkbjanken_points += 1;
  • "敗者をスタン"
  • Set Status(First Of(Filtered Array(Array(Event Player, Event Player.partner), !Current Array Element.isJankenWinner)), Null,
  • Stunned, 0.500);
  • End;
  • End;
  • Wait(0.200, Ignore Condition);
  • Clear Status(Array(Event Player, Event Player.partner), Frozen);
  • Wait(0.800, Abort When False);
  • Event Player.sec_current_short_interval_clap = Max(Event Player.sec_minimum_short_interval_clap,
  • Event Player.sec_current_short_interval_clap - 0.013);
  • Array(Event Player, Event Player.partner).ttkb_current_phase = 0.500;
  • }
  • }
  • rule("phase3 player phase 1 click")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.current_game_phase == 3;
  • Event Player.ttkb_current_phase == 1;
  • Global.priority != Event Player;
  • Is Button Held(Event Player, Primary Fire) == True;
  • Event Player.hand_selected_index == -1;
  • }
  • actions
  • {
  • Event Player.hand_selected_index = Index Of Array Value(Event Player.handsPositions, First Of(Filtered Array(
  • Event Player.handsPositions, Distance Between(Vector(0, 0, 0), Cross Product(Current Array Element - Eye Position(
  • Event Player), Facing Direction Of(Event Player))) / 1 < Global.hand_selection_radius)));
  • If(Event Player.hand_selected_index != -1);
  • Play Effect(Event Player, Good Explosion, White, Eye Position(Event Player) + Facing Direction Of(Event Player), 0.100);
  • Event Player.hands_visibleto = Array(Empty Array, Empty Array, Empty Array);
  • Event Player.hands_visibleto[Event Player.hand_selected_index] = Array(Event Player);
  • Event Player.hand_selected_form = Event Player.handsFormArray[Event Player.hand_selected_index];
  • End;
  • }
  • }
  • rule("phase3 player phase 2 if not selected")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.current_game_phase == 3;
  • Event Player.ttkb_current_phase == 2;
  • Global.priority != Event Player;
  • Event Player.hand_selected_index == -1;
  • }
  • actions
  • {
  • Event Player.hand_selected_index = Random Integer(0, 2);
  • Event Player.hands_visibleto = Array(Empty Array, Empty Array, Empty Array);
  • Event Player.hands_visibleto[Event Player.hand_selected_index] = Array(Event Player);
  • Event Player.hand_selected_form = Event Player.handsFormArray[Event Player.hand_selected_index];
  • }
  • }
  • rule("phase3 player phase 3 selected hand reveal")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.current_game_phase == 3;
  • Event Player.ttkb_current_phase == 3;
  • Global.priority != Event Player;
  • }
  • actions
  • {
  • Event Player.hands_visibleto[Event Player.hand_selected_index] = Append To Array(Array(Event Player, Event Player.partner),
  • Filtered Array(All Players(All Teams), !Current Array Element.isDoingTtkb));
  • }
  • }
  • rule("phase3 player phase 3 click")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.current_game_phase == 3;
  • Event Player.ttkb_current_phase == 3;
  • Global.priority != Event Player;
  • Is Button Held(Event Player, Primary Fire) == True;
  • Event Player.tool_selected_index == -1;
  • }
  • actions
  • {
  • Event Player.tool_selected_index = Index Of Array Value(Event Player.tools_positions, First Of(Filtered Array(
  • Event Player.tools_positions, Distance Between(Vector(0, 0, 0), Cross Product(Current Array Element - Eye Position(
  • Event Player), Facing Direction Of(Event Player))) / 1 < Global.tool_radius)));
  • If(Event Player.tool_selected_index != -1);
  • Event Player.tool_selected_type = Event Player.toolsKindArray[Event Player.tool_selected_index];
  • Play Effect(Event Player, Good Explosion, White, Eye Position(Event Player) + Facing Direction Of(Event Player), 0.100);
  • "たたく"
  • If(Event Player.tool_selected_type == 100);
  • If(Hero Of(Event Player) == Hero(Reinhardt));
  • Communicate(Event Player, Attacking);
  • End;
  • Set Melee Enabled(Event Player, True);
  • Press Button(Event Player, Melee);
  • "自分が勝者"
  • If(Event Player.isJankenWinner);
  • "相手がかぶってなければ"
  • If(Event Player.partner.tool_selected_type != 200);
  • Event Player.ttkbjanken_points += 1;
  • Set Status(Event Player.partner, Null, Stunned, 0.500);
  • "相手がかぶってたら"
  • Else;
  • Event Player.ttkbjanken_points += 0;
  • End;
  • "勝者がたたいたらすぐ次へ"
  • Array(Event Player, Event Player.partner).ttkb_current_phase = 4;
  • "自分が敗者かあいこ"
  • Else;
  • "相手が勝者で、すでに叩いた場合を除いて"
  • If(!(Event Player.partner.isJankenWinner && Event Player.partner.tool_selected_type == 100));
  • Event Player.partner.ttkbjanken_points += 1;
  • Set Status(Event Player, Null, Stunned, 0.500);
  • End;
  • End;
  • Wait(0.016, Ignore Condition);
  • Set Melee Enabled(Event Player, False);
  • End;
  • "かぶる"
  • If(Event Player.tool_selected_type == 200);
  • Set Status(Event Player, Null, Frozen, 3);
  • "自分が勝者"
  • If(Event Player.isJankenWinner);
  • Event Player.partner.ttkbjanken_points += 1;
  • Set Status(Event Player, Null, Stunned, 0.500);
  • "あいこ"
  • Else If(Event Player.isJankenWinner == False && Event Player.partner.isJankenWinner == False);
  • Event Player.partner.ttkbjanken_points += 1;
  • Set Status(Event Player, Null, Stunned, 0.500);
  • End;
  • End;
  • End;
  • }
  • }
  • rule("phase3 player phase 3or4 reach win points")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Global.current_game_phase == 3;
  • (Event Player.ttkb_current_phase == 3 || Event Player.ttkb_current_phase == 4) == True;
  • Global.priority != Event Player;
  • Event Player.ttkbjanken_points >= Global.ttkb_win_points;
  • }
  • actions
  • {
  • Kill(Event Player.partner, Event Player);
  • Array(Event Player, Event Player.partner).ttkb_current_phase = 5;
  • }
  • }
  • rule("bot settings")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • }
  • actions
  • {
  • Start Facing(Event Player, Direction Towards(Eye Position(Event Player), Event Player.tools_positions[0]), 100, To World,
  • Direction and Turn Rate);
  • Start Throttle In Direction(Event Player, Direction From Angles(360 * Slot Of(Event Player) * Total Time Elapsed, 0), 1, To World,
  • Replace existing throttle, Direction and Magnitude);
  • }
  • }
  • rule("bot ttkb phase 3")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • Event Player.ttkb_current_phase == 3;
  • }
  • actions
  • {
  • Wait(1, Ignore Condition);
  • If(Random Real(0, 1) > 0.500);
  • Press Button(Event Player, Primary Fire);
  • End;
  • }
  • }
  • rule("bot jump")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Dummy Bot(Event Player) == True;
  • }
  • actions
  • {
  • Press Button(Event Player, Jump);
  • Wait(0.800, Ignore Condition);
  • Loop;
  • }
  • }
  • rule("victory")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Game In Progress == True;
  • Score Of(Event Player) >= Global.victory_scores;
  • }
  • actions
  • {
  • Declare Player Victory(Event Player);
  • }
  • }
  • disabled rule("(old)midgame spawner")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Has Spawned(Event Player) == True;
  • }
  • actions
  • {
  • If(Is Game In Progress);
  • If(Event Player.isTournamentParticipant == False);
  • While(Is Alive(Event Player));
  • Disable Built-In Game Mode Respawning(Event Player);
  • Set Respawn Max Time(Event Player, 1800);
  • Enable Death Spectate All Players(Event Player);
  • Kill(Event Player, Event Player);
  • Disable Built-In Game Mode Respawning(Event Player);
  • Enable Death Spectate All Players(Event Player);
  • Wait(0.800, Ignore Condition);
  • End;
  • End;
  • End;
  • }
  • }
  • disabled rule("debug crouch kill")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Crouch) == True;
  • }
  • actions
  • {
  • Kill(Event Player.partner, Null);
  • }
  • }
  • disabled rule("debug interact join")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Interact) == True;
  • }
  • actions
  • {
  • Create Dummy Bot(Random Value In Array(All Heroes), All Teams, -1, Vector(0, 0, 0), Vector(0, 0, 0));
  • }
  • }
  • disabled rule("debug ultimate self kill")
  • {
  • event
  • {
  • Ongoing - Each Player;
  • All;
  • All;
  • }
  • conditions
  • {
  • Is Button Held(Event Player, Ultimate) == True;
  • }
  • actions
  • {
  • Kill(Event Player, Null);
  • }
  • }
  • rule("midgame spawner")
  • {
  • event
  • {
  • Player Joined Match;
  • All;
  • All;
  • }
  • actions
  • {
  • If(Is Game In Progress);
  • If(Event Player.isTournamentParticipant == False);
  • While(Is Alive(Event Player));
  • Disable Built-In Game Mode Respawning(Event Player);
  • Set Respawn Max Time(Event Player, 1800);
  • Enable Death Spectate All Players(Event Player);
  • Kill(Event Player, Event Player);
  • Disable Built-In Game Mode Respawning(Event Player);
  • Enable Death Spectate All Players(Event Player);
  • Wait(0.800, Ignore Condition);
  • End;
  • End;
  • End;
  • }
  • }
  • rule("short clap")
  • {
  • event
  • {
  • Subroutine;
  • short_clap;
  • }
  • actions
  • {
  • Wait(Event Player.sec_current_short_interval_clap, Ignore Condition);
  • }
  • }
  • rule("long clap")
  • {
  • event
  • {
  • Subroutine;
  • long_clap;
  • }
  • actions
  • {
  • Wait(2 * Event Player.sec_current_short_interval_clap, Ignore Condition);
  • }
  • }
Join the Workshop.codes Discord