Return to post
- settings
- {
- main
- {
Description: "(FAXVX)たたかぶじゃんけん トーナメント Beat'n'Block Rock-Paper-Scissors Tournament 1.07 by @nakamoooooo *初期たたかぶ拍手間隔を0.25秒から0.21秒に変更 *たたかぶしている人がいなくなった後の移行時間を約1秒減少"
- 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
- }
- }
- }
workshop
{
game win points: 2
match victory scores: 7
}
- }
- 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 = Workshop Setting Integer(Custom String("settings"), Custom String("match victory scores"), 2, 1, 7, 0);
Global.ttkb_win_points = Workshop Setting Integer(Custom String("settings"), Custom String("game win points"), 3, 1, 10, 0);
- 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, Color(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, 0);
- 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, Color(White), Color(
White), Color(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, Color(
White), Color(White), Color(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, Color(White),
Color(White), Color(White), Visible To and String, Default Visibility);
Create HUD Text(All Players(All Teams), Custom String("じゃんけんに勝ったらたたく、\r\n負けたらかぶるを選ぼう。\r\nあいこの時は何も選ぶな。"), Null, Null, Right, 3,
Color(White), Color(White), Color(White), Visible To, Default Visibility);
- 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.210;
- 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(4 * Event Player.sec_current_short_interval_clap, Abort When False);
- 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(0.016, Ignore Condition);
- 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, Color(White), Position Of(Event Player), Is Alive(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, Button(Ability 1));
Disallow Button(Event Player, Button(Ability 2));
Disallow Button(Event Player, Button(Ultimate));
- 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, Color(Red),
- 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, Color(Green),
- 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, Color(Blue),
- 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, Color(Red), Default Visibility);
- 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, Color(Green), Default Visibility);
- 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, Color(Blue), Default Visibility);
- 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, Color(Orange),
- 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, Color(Aqua),
- 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, Color(Orange), Default Visibility);
- 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, Color(Aqua), Default Visibility);
- 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, Color(White), Default Visibility);
- + 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, Color(White), Default Visibility);
Create HUD Text(Is Alive(Event Player) ? Null : Event Player, Array(Custom String(" 最後の一人が決まるまでお待ちください "), Custom String(
"*最後の一人が決まるまでお待ちください*"))[Round To Integer(Total Time Elapsed % 2, Down)], Null, Null, Top, 1, Color(Blue), Color(White), Color(
White), Visible To and String, Default Visibility);
- 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, Color(White), (Eye Position(Event Player) + Eye Position(
- Play Effect(Array(Event Player, Event Player.partner), Explosion Sound, White, (Eye Position(Event Player) + Eye Position(
- Event Player.partner)) / 2, 50);
- Call Subroutine(short_clap);
Play Effect(Array(Event Player, Event Player.partner), Explosion Sound, Color(White), (Eye Position(Event Player) + Eye Position(
- Play Effect(Array(Event Player, Event Player.partner), Explosion Sound, White, (Eye Position(Event Player) + Eye Position(
- Event Player.partner)) / 2, 50);
- Call Subroutine(long_clap);
Play Effect(Array(Event Player, Event Player.partner), Explosion Sound, Color(White), (Eye Position(Event Player) + Eye Position(
- Play Effect(Array(Event Player, Event Player.partner), Explosion Sound, White, (Eye Position(Event Player) + Eye Position(
- Event Player.partner)) / 2, 50);
- 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, Color(White), (Eye Position(Event Player) + Eye Position(
- Play Effect(Array(Event Player, Event Player.partner), Explosion Sound, White, (Eye Position(Event Player) + Eye Position(
- Event Player.partner)) / 2, 50);
- Call Subroutine(short_clap);
Play Effect(Array(Event Player, Event Player.partner), Explosion Sound, Color(White), (Eye Position(Event Player) + Eye Position(
- Play Effect(Array(Event Player, Event Player.partner), Explosion Sound, White, (Eye Position(Event Player) + Eye Position(
- Event Player.partner)) / 2, 50);
- Call Subroutine(long_clap);
Play Effect(Array(Event Player, Event Player.partner), Explosion Sound, Color(White), (Eye Position(Event Player) + Eye Position(
- Play Effect(Array(Event Player, Event Player.partner), Explosion Sound, White, (Eye Position(Event Player) + Eye Position(
- Event Player.partner)) / 2, 50);
- 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, Color(White), (Eye Position(Event Player) + Eye Position(
- Play Effect(Array(Event Player, Event Player.partner), Explosion Sound, White, (Eye Position(Event Player) + Eye Position(
- Event Player.partner)) / 2, 50);
- 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, Color(White), (Eye Position(Event Player) + Eye Position(
- Play Effect(Array(Event Player, Event Player.partner), Explosion Sound, White, (Eye Position(Event Player) + Eye Position(
- Event Player.partner)) / 2, 50);
- 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, Color(White), (Eye Position(Event Player) + Eye Position(
- 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, Button(Primary Fire)) == True;
- 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, Color(White), Eye Position(Event Player) + Facing Direction Of(Event Player), 0.100);
- 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, Button(Primary Fire)) == True;
- 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, Color(White), Eye Position(Event Player) + Facing Direction Of(Event Player), 0.100);
- 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, Button(Melee));
- 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, Button(Primary Fire));
- 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, Button(Jump));
- 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, Button(Crouch)) == True;
- 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, Button(Interact)) == True;
- 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, Button(Ultimate)) == True;
- 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);
- }
- }