Return to post
- settings
- {
- main
- {
Description: "(7Q6E9)2D/3D Maze 1.03 by @nakamoooooo *3dで見れる距離をユークリッド距離2までに拡大 *3dのときの上昇・下降の方法をhudで表示"
- Description: "(7Q6E9)Maze beta 0015 by @nakamoooooo *獲得するスコアは幅と等しくなった。*クリアするたびに幅を増やすことができるようになった。workshop設定から幅の増加を設定できる。*hudを一部非表示にした *VCを追加 *開始時ゴールのほうを向くように変更"
- }
- lobby
- {
- Allow Players Who Are In Queue: Yes
- Match Voice Chat: Enabled
- }
- modes
- {
- Deathmatch
- {
- Game Length In Minutes: 5
- Score To Win: 50
- enabled maps
- {
- Workshop Expanse Night
- }
- }
- General
- {
- Game Mode Start: Immediately
- Limit Roles: 2 Of Each Role Per Team
- Respawn As Random Hero: On
- }
- }
- heroes
- {
- General
- {
- Soldier: 76
- {
- Biotic Field: Off
- Helix Rockets: Off
- Primary Fire: Off
- Quick Melee: Off
- Ultimate Ability Tactical Visor: Off
- }
- enabled heroes
- {
- Soldier: 76
- }
- }
- }
- workshop
- {
dimension 次元2は平面 3は立体: 3
game length in minutes ゲームの長さ(分): 60
number of rooms per line 一行あたりの部屋数: 5
}
extensions
{
Play More Effects
- number of rooms per line 一行あたりの部屋数: 3
- size Increasing amount幅の増加量: 1
- }
- }
- variables
- {
- global:
- 0: group_num_with_room_num
- 1: create_var0
- 2: room_nums_have_breakable_wall
- 3: number_of_rooms_per_line
- 4: number_of_total_rooms
5: walls_bits_with_room_num
6: dimension_of_maze
- 5: walls_4bit_with_room_num
- 7: const_binary_num_with_digit
8: i_create_beam_of_local_player
9: j_create_beam_direction_iterator
- 10: current_first_chosen_room_num
- 11: adjacent_room_num_list
- 12: different_group_room_num_list
- 13: current_second_chosen_room_num
- 14: room_num_1_2_difference
- 15: group_num_higher
- 16: group_num_lower
- 17: room_num_that_has_higher_g_num
18: create_maze_while_count
- 20: width_meter_per_a_room
- 22: pillar_radius
- 23: wall_effect_size
- 24: wall_effect_height
- 26: MazeHasBeenCreated
- 27: sizeIncreaseEveryAfterClear
28: game_length_in_minutes
29: array_visible_room_ofset_vec
30: array_all_dirs_at_now_dimension
- player:
- 0: room_num_of_current_pos
- 1: bool_player_is_out_of_maze
- 2: center_pos_of_the_room_you_are
- 3: current_room_xindex
- 4: current_room_zindex
- 5: pl_adjacent_room_list
- 6: pl_room_list_show_wall
- 8: I_show_wall
- 9: xIndex_show_wall
- 10: zIndex_show_wall
- 11: center_pos_of_room_show_wall
12: yIndex_show_wall
- 13: room_num_of_previous_pos
- 14: did_hit_wall
- 15: center_pos_of_the_previous_room
- 16: room_num_gap
- 17: move_direction_as_bit
- 18: is_in_goal
19: current_room_yindex
20: is3dwallhigh_low
21: num_current_rounded_fac_dir
22: array_visible_room_ofset_vec_pl
23: i_get_visibles
- }
- subroutines
- {
- 0: create_maze
- 1: listup_adjucent_room_list
- 2: equalize_groups_of_two_rooms
- 3: set_wall_bits
- 4: pl_listup_adjucent_room_list
- 5: pl_wall_hit
6: playwalleffects
7: get_visibles
- }
- disabled rule("")
- {
- event
- {
- Ongoing - Each Player;
- All;
- All;
- }
- actions
- {
disabled Play Effect(All Players(All Teams), Ring Explosion, Color(Green), Ray Cast Hit Position(Eye Position(Event Player), Eye Position(
- disabled Play Effect(All Players(All Teams), Ring Explosion, Green, Ray Cast Hit Position(Eye Position(Event Player), Eye Position(
- Event Player) + Direction From Angles(Random Real(-10, 10) + Horizontal Facing Angle Of(Event Player), Random Real(-10, 10)
- + Vertical Facing Angle Of(Event Player)) * 20, All Players(All Teams), Event Player, True), 0.100);
Play Effect(All Players(All Teams), Ring Explosion, Color(Purple), Position Of(Event Player), 1);
- Play Effect(All Players(All Teams), Ring Explosion, Purple, Position Of(Event Player), 1);
- Wait(0.400, Ignore Condition);
- Loop;
- }
- }
- rule("var init")
- {
- event
- {
- Ongoing - Global;
- }
- actions
- {
- Disable Built-In Game Mode Scoring;
- Global.wall_effect_height = 0.700;
- Global.wall_effect_size = 1.500;
- Global.pillar_radius = 0.500;
- Global.const_binary_num_with_digit = Array(0, 1, 2, 4, 8);
- Global.sizeIncreaseEveryAfterClear = Workshop Setting Integer(Custom String("maze settings"), Custom String(
"size Increasing amount(幅の増加量)"), 1, 0, 5, 0);
- "size Increasing amount(幅の増加量)"), 1, 0, 5);
- Global.number_of_rooms_per_line = Workshop Setting Integer(Custom String("maze settings"), Custom String(
"number of rooms per line 一行あたりの部屋数"), 3, 3, 31, 0);
Global.dimension_of_maze = Workshop Setting Integer(Custom String("maze settings"), Custom String("dimension (次元,2は平面 3は立体)"), 2,
2, 3, 0);
- "number of rooms per line 一行あたりの部屋数"), 3, 3, 30);
- disabled Global.create_var0 = Empty Array;
- disabled Global.create_var0[Global.number_of_total_rooms - 1] = 0;
- disabled Global.group_num_with_room_num = Mapped Array(Global.create_var0, Current Array Index);
- disabled Global.room_nums_have_breakable_wall = Mapped Array(Global.create_var0, Current Array Index);
disabled Global.walls_bits_with_room_num = Empty Array;
disabled Global.walls_bits_with_room_num[Global.number_of_total_rooms - 1] = 0;
- disabled Global.walls_4bit_with_room_num = Empty Array;
- disabled Global.walls_4bit_with_room_num[Global.number_of_total_rooms - 1] = 0;
- Global.width_meter_per_a_room = 4;
If(Global.dimension_of_maze == 2);
Create Effect(All Players(All Teams), Sphere, Color(White), Vector(
0.500 * Global.number_of_rooms_per_line * Global.width_meter_per_a_room, 1,
0.500 * Global.number_of_rooms_per_line * Global.width_meter_per_a_room), 1 / Square Root(2)
* Global.number_of_rooms_per_line * Global.width_meter_per_a_room, Visible To Position and Radius);
Create Icon(All Players(All Teams), Vector((-0.500 + Global.number_of_rooms_per_line) * Global.width_meter_per_a_room, 0, (
-0.500 + Global.number_of_rooms_per_line) * Global.width_meter_per_a_room), Flag, Visible To and Position, Color(Team 2),
True);
Global.array_visible_room_ofset_vec = Array(Vector(0, 0, 0), Vector(1, 0, 0), Vector(0, 0, 1), Vector(-1, 0, 0), Vector(0, 0, -1),
Vector(2, 0, 0), Vector(1, 0, 1), Vector(0, 0, 2), Vector(-1, 0, 1), Vector(-2, 0, 0), Vector(-1, 0, -1), Vector(0, 0, -2),
Vector(1, 0, -1));
"順番を壁の通行可能可否を表すアレとそろえておきたい"
Global.array_all_dirs_at_now_dimension = Array(Vector(1, 0, 0), Vector(-1, 0, 0), Vector(0, 0, 1), Vector(0, 0, -1));
"3d"
Else;
Create Effect(All Players(All Teams), Sphere, Color(White), Vector(
0.500 * Global.number_of_rooms_per_line * Global.width_meter_per_a_room,
0.500 * Global.number_of_rooms_per_line * Global.width_meter_per_a_room,
0.500 * Global.number_of_rooms_per_line * Global.width_meter_per_a_room), Distance Between(Vector(0, 0, 0), Vector(
0.500 * Global.number_of_rooms_per_line * Global.width_meter_per_a_room,
0.500 * Global.number_of_rooms_per_line * Global.width_meter_per_a_room,
0.500 * Global.number_of_rooms_per_line * Global.width_meter_per_a_room)), Visible To Position and Radius);
Create Icon(All Players(All Teams), Vector((-0.500 + Global.number_of_rooms_per_line) * Global.width_meter_per_a_room, (
-0.500 + Global.number_of_rooms_per_line) * Global.width_meter_per_a_room, (-0.500 + Global.number_of_rooms_per_line)
* Global.width_meter_per_a_room), Flag, Visible To and Position, Color(Team 2), True);
Global.array_visible_room_ofset_vec = Array(Vector(0, 0, 0), Vector(1, 0, 0), Vector(0, 0, 1), Vector(-1, 0, 0), Vector(0, 0, -1),
Vector(0, 1, 0), Vector(0, -1, 0), Vector(0, 2, 0), Vector(1, 1, 0), Vector(0, 1, 1), Vector(-1, 1, 0), Vector(0, 1, -1),
Vector(2, 0, 0), Vector(1, 0, 1), Vector(0, 0, 2), Vector(-1, 0, 1), Vector(-2, 0, 0), Vector(-1, 0, -1), Vector(0, 0, -2),
Vector(1, 0, -1), Vector(1, -1, 0), Vector(0, -1, 1), Vector(-1, -1, 0), Vector(0, -1, -1), Vector(0, -2, 0));
"順番を壁の通行可能可否を表すアレとそろえておきたい"
Global.array_all_dirs_at_now_dimension = Array(Vector(1, 0, 0), Vector(-1, 0, 0), Vector(0, 0, 1), Vector(0, 0, -1), Vector(0, 1,
0), Vector(0, -1, 0));
End;
- Create Effect(All Players(All Teams), Sphere, White, Vector(
- 0.500 * Global.number_of_rooms_per_line * Global.width_meter_per_a_room, 1,
- 0.500 * Global.number_of_rooms_per_line * Global.width_meter_per_a_room), 1 / Square Root(2)
- * Global.number_of_rooms_per_line * Global.width_meter_per_a_room, Visible To Position and Radius);
- Create Icon(All Players(All Teams), Vector((-0.500 + Global.number_of_rooms_per_line) * Global.width_meter_per_a_room, 0, (
- -0.500 + Global.number_of_rooms_per_line) * Global.width_meter_per_a_room), Flag, Visible To and Position, Team 2, True);
- disabled Wait(10, Ignore Condition);
- Big Message(All Players(All Teams), Custom String("gp"));
- Call Subroutine(create_maze);
For Global Variable(i_create_beam_of_local_player, 0, Count Of(Global.array_visible_room_ofset_vec), 1);
For Global Variable(j_create_beam_direction_iterator, 0, Count Of(Global.array_all_dirs_at_now_dimension), 1);
"通行可否がまだ"
disabled Create Beam Effect(Local Player.array_visible_room_ofset_vec_pl[Evaluate Once(Global.i_create_beam_of_local_player)
] != Null ? Local Player : Empty Array, Good Beam,
Local Player.center_pos_of_the_room_you_are + Local Player.array_visible_room_ofset_vec_pl[Evaluate Once(
Global.i_create_beam_of_local_player)] * Global.width_meter_per_a_room,
0.500 * Global.width_meter_per_a_room * Global.array_all_dirs_at_now_dimension[Evaluate Once(
Global.j_create_beam_direction_iterator)
] + Local Player.center_pos_of_the_room_you_are + Local Player.array_visible_room_ofset_vec_pl[Evaluate Once(
Global.i_create_beam_of_local_player)] * Global.width_meter_per_a_room, Round To Integer((
Local Player.room_num_of_current_pos + X Component Of(Vector(0, 0, 0)) + Global.number_of_rooms_per_line * Z Component Of(
Vector(0, 0, 0)) + Global.number_of_rooms_per_line * Global.number_of_rooms_per_line * Y Component Of(Vector(0, 0, 0)))
/ 2 ^ Global.j_create_beam_direction_iterator, Down) % 2 == 1 ? Color(White) : Color(Black),
Visible To Position Radius and Color);
"通行可否ができた?"
disabled Create Beam Effect(Local Player.array_visible_room_ofset_vec_pl[Evaluate Once(Global.i_create_beam_of_local_player)
] != Null ? Local Player : Empty Array, Good Beam,
Local Player.center_pos_of_the_room_you_are + Local Player.array_visible_room_ofset_vec_pl[Evaluate Once(
Global.i_create_beam_of_local_player)] * Global.width_meter_per_a_room,
0.500 * Global.width_meter_per_a_room * Global.array_all_dirs_at_now_dimension[Evaluate Once(
Global.j_create_beam_direction_iterator)
] + Local Player.center_pos_of_the_room_you_are + Local Player.array_visible_room_ofset_vec_pl[Evaluate Once(
Global.i_create_beam_of_local_player)] * Global.width_meter_per_a_room, Round To Integer((
Local Player.room_num_of_current_pos + X Component Of(Local Player.array_visible_room_ofset_vec_pl[Evaluate Once(
Global.i_create_beam_of_local_player)]) + Global.number_of_rooms_per_line * Z Component Of(
Local Player.array_visible_room_ofset_vec_pl[Evaluate Once(Global.i_create_beam_of_local_player)])
+ Global.number_of_rooms_per_line * Global.number_of_rooms_per_line * Y Component Of(
Local Player.array_visible_room_ofset_vec_pl[Evaluate Once(Global.i_create_beam_of_local_player)]))
/ 2 ^ Global.j_create_beam_direction_iterator, Down) % 2 == 1 ? Color(White) : Color(Black),
Visible To Position Radius and Color);
"通行可否ができた?"
Create Beam Effect(Local Player.array_visible_room_ofset_vec_pl[Evaluate Once(Global.i_create_beam_of_local_player)
] != Null ? Local Player : Empty Array, Good Beam,
Local Player.center_pos_of_the_room_you_are + Local Player.array_visible_room_ofset_vec_pl[Evaluate Once(
Global.i_create_beam_of_local_player)] * Global.width_meter_per_a_room,
0.500 * Global.width_meter_per_a_room * Global.array_all_dirs_at_now_dimension[Evaluate Once(
Global.j_create_beam_direction_iterator)
] + Local Player.center_pos_of_the_room_you_are + Local Player.array_visible_room_ofset_vec_pl[Evaluate Once(
Global.i_create_beam_of_local_player)] * Global.width_meter_per_a_room, Round To Integer(
Global.walls_bits_with_room_num[Local Player.room_num_of_current_pos + X Component Of(
Local Player.array_visible_room_ofset_vec_pl[Evaluate Once(Global.i_create_beam_of_local_player)])
+ Global.number_of_rooms_per_line * Z Component Of(Local Player.array_visible_room_ofset_vec_pl[Evaluate Once(
Global.i_create_beam_of_local_player)]) + Global.number_of_rooms_per_line * Global.number_of_rooms_per_line * Y Component Of(
Local Player.array_visible_room_ofset_vec_pl[Evaluate Once(Global.i_create_beam_of_local_player)])] / 2 ^ Evaluate Once(
Global.j_create_beam_direction_iterator), Down) % 2 == 1 ? Color(Yellow) : Color(Black), Visible To Position Radius and Color);
End;
End;
- }
- }
- rule("create maze")
- {
- event
- {
- Subroutine;
- create_maze;
- }
- actions
- {
- Global.MazeHasBeenCreated = False;
If(Global.dimension_of_maze == 3);
Global.number_of_rooms_per_line = Min(10, Global.number_of_rooms_per_line);
End;
Global.create_maze_while_count = 0;
Global.number_of_total_rooms = Global.number_of_rooms_per_line ^ Global.dimension_of_maze;
- Global.number_of_total_rooms = Global.number_of_rooms_per_line ^ 2;
- Global.create_var0 = Empty Array;
- Global.create_var0[Global.number_of_total_rooms - 1] = 0;
- Global.group_num_with_room_num = Mapped Array(Global.create_var0, Current Array Index);
- Global.room_nums_have_breakable_wall = Mapped Array(Global.create_var0, Current Array Index);
Global.walls_bits_with_room_num = Empty Array;
Global.walls_bits_with_room_num[Global.number_of_total_rooms - 1] = 0;
- Global.walls_4bit_with_room_num = Empty Array;
- Global.walls_4bit_with_room_num[Global.number_of_total_rooms - 1] = 0;
- While(Is True For Any(Global.group_num_with_room_num, Current Array Element > 0));
- disabled While(Count Of(Global.room_nums_have_breakable_wall) > 0);
- Global.current_first_chosen_room_num = Random Value In Array(Global.room_nums_have_breakable_wall);
- Call Subroutine(listup_adjucent_room_list);
- Global.different_group_room_num_list = Filtered Array(Global.adjacent_room_num_list,
- Global.group_num_with_room_num[Global.current_first_chosen_room_num] != Global.group_num_with_room_num[Current Array Element]);
- If(Count Of(Global.different_group_room_num_list) > 0);
- Global.current_second_chosen_room_num = Random Value In Array(Global.different_group_room_num_list);
- Call Subroutine(equalize_groups_of_two_rooms);
- Call Subroutine(set_wall_bits);
- Else;
- Modify Global Variable(room_nums_have_breakable_wall, Remove From Array By Value, Global.current_first_chosen_room_num);
- End;
Global.create_maze_while_count += 1;
If(Global.create_maze_while_count % 2 == 1);
Wait(0.016, Ignore Condition);
End;
- Wait(0.016, Ignore Condition);
- End;
- Small Message(All Players(All Teams), Custom String("complete"));
- Global.MazeHasBeenCreated = True;
- }
- }
- rule("listup adjucent_room_list")
- {
- event
- {
- Subroutine;
- listup_adjucent_room_list;
- }
- actions
- {
- Global.adjacent_room_num_list = Empty Array;
If(Global.dimension_of_maze == 2);
"右端じゃない"
If(Global.current_first_chosen_room_num % Global.number_of_rooms_per_line != 0);
Modify Global Variable(adjacent_room_num_list, Append To Array, Global.current_first_chosen_room_num - 1);
End;
"左端じゃない"
If(Global.current_first_chosen_room_num % Global.number_of_rooms_per_line != Global.number_of_rooms_per_line - 1);
Modify Global Variable(adjacent_room_num_list, Append To Array, Global.current_first_chosen_room_num + 1);
End;
"下端じゃない"
If(Global.current_first_chosen_room_num >= Global.number_of_rooms_per_line);
Modify Global Variable(adjacent_room_num_list, Append To Array,
Global.current_first_chosen_room_num - Global.number_of_rooms_per_line);
End;
"上端じゃない"
If(Global.number_of_total_rooms - Global.number_of_rooms_per_line > Global.current_first_chosen_room_num);
Modify Global Variable(adjacent_room_num_list, Append To Array,
Global.current_first_chosen_room_num + Global.number_of_rooms_per_line);
End;
"3d"
Else;
"右端じゃない"
If(Global.current_first_chosen_room_num % Global.number_of_rooms_per_line != 0);
Modify Global Variable(adjacent_room_num_list, Append To Array, Global.current_first_chosen_room_num - 1);
End;
"左端じゃない"
If(Global.current_first_chosen_room_num % Global.number_of_rooms_per_line != Global.number_of_rooms_per_line - 1);
Modify Global Variable(adjacent_room_num_list, Append To Array, Global.current_first_chosen_room_num + 1);
End;
"手前端じゃない"
If(Global.current_first_chosen_room_num % Global.number_of_rooms_per_line ^ 2 >= Global.number_of_rooms_per_line);
Modify Global Variable(adjacent_room_num_list, Append To Array,
Global.current_first_chosen_room_num - Global.number_of_rooms_per_line);
End;
"奥端じゃない"
If((Global.number_of_rooms_per_line + Global.current_first_chosen_room_num)
% Global.number_of_rooms_per_line ^ 2 >= Global.number_of_rooms_per_line);
Modify Global Variable(adjacent_room_num_list, Append To Array,
Global.current_first_chosen_room_num + Global.number_of_rooms_per_line);
End;
"低端じゃない"
If(Global.current_first_chosen_room_num >= Global.number_of_rooms_per_line ^ 2);
Modify Global Variable(adjacent_room_num_list, Append To Array,
Global.current_first_chosen_room_num - Global.number_of_rooms_per_line ^ 2);
End;
"高端じゃない"
If(Global.current_first_chosen_room_num < (Global.number_of_rooms_per_line - 1) * Global.number_of_rooms_per_line ^ 2);
Modify Global Variable(adjacent_room_num_list, Append To Array,
Global.current_first_chosen_room_num + Global.number_of_rooms_per_line ^ 2);
End;
- "右端じゃない"
- If(Global.current_first_chosen_room_num % Global.number_of_rooms_per_line != 0);
- Modify Global Variable(adjacent_room_num_list, Append To Array, Global.current_first_chosen_room_num - 1);
- End;
- "左端じゃない"
- If(Global.current_first_chosen_room_num % Global.number_of_rooms_per_line != Global.number_of_rooms_per_line - 1);
- Modify Global Variable(adjacent_room_num_list, Append To Array, Global.current_first_chosen_room_num + 1);
- End;
- "下端じゃない"
- If(Global.current_first_chosen_room_num >= Global.number_of_rooms_per_line);
- Modify Global Variable(adjacent_room_num_list, Append To Array,
- Global.current_first_chosen_room_num - Global.number_of_rooms_per_line);
- End;
- "上端じゃない"
- If(Global.number_of_total_rooms - Global.number_of_rooms_per_line > Global.current_first_chosen_room_num);
- Modify Global Variable(adjacent_room_num_list, Append To Array,
- Global.current_first_chosen_room_num + Global.number_of_rooms_per_line);
- End;
- }
- }
- rule("equalize group two rooms")
- {
- event
- {
- Subroutine;
- equalize_groups_of_two_rooms;
- }
- actions
- {
- Global.group_num_higher = Max(Global.group_num_with_room_num[Global.current_first_chosen_room_num],
- Global.group_num_with_room_num[Global.current_second_chosen_room_num]);
- Global.group_num_lower = Min(Global.group_num_with_room_num[Global.current_first_chosen_room_num],
- Global.group_num_with_room_num[Global.current_second_chosen_room_num]);
- disabled If(
- Global.group_num_with_room_num[Global.current_first_chosen_room_num] > Global.group_num_with_room_num[Global.current_second_chosen_room_num]);
- disabled Global.group_num_with_room_num[Global.current_first_chosen_room_num] = Global.group_num_with_room_num[Global.current_second_chosen_room_num];
- disabled Else;
- disabled Global.group_num_with_room_num[Global.current_second_chosen_room_num] = Global.group_num_with_room_num[Global.current_first_chosen_room_num];
- disabled End;
- While(True);
- Global.room_num_that_has_higher_g_num = Index Of Array Value(Global.group_num_with_room_num, Global.group_num_higher);
- If(Global.room_num_that_has_higher_g_num > -1);
- Global.group_num_with_room_num[Global.room_num_that_has_higher_g_num] = Global.group_num_lower;
- Else;
- Break;
- End;
- End;
- }
- }
- rule("set wall bits")
- {
- event
- {
- Subroutine;
- set_wall_bits;
- }
- actions
- {
- Global.room_num_1_2_difference = Global.current_first_chosen_room_num - Global.current_second_chosen_room_num;
- "firstの左にsecond"
- If(Global.room_num_1_2_difference == -1);
Global.walls_bits_with_room_num[Global.current_first_chosen_room_num] += 1;
Global.walls_bits_with_room_num[Global.current_second_chosen_room_num] += 2;
- Global.walls_4bit_with_room_num[Global.current_first_chosen_room_num] += 1;
- Global.walls_4bit_with_room_num[Global.current_second_chosen_room_num] += 2;
- "firstの右にsecond"
- Else If(Global.room_num_1_2_difference == 1);
Global.walls_bits_with_room_num[Global.current_first_chosen_room_num] += 2;
Global.walls_bits_with_room_num[Global.current_second_chosen_room_num] += 1;
"firstの奥にsecond"
- Global.walls_4bit_with_room_num[Global.current_first_chosen_room_num] += 2;
- Global.walls_4bit_with_room_num[Global.current_second_chosen_room_num] += 1;
- "firstの上にsecond"
- Else If(Global.room_num_1_2_difference == -1 * Global.number_of_rooms_per_line);
Global.walls_bits_with_room_num[Global.current_first_chosen_room_num] += 4;
Global.walls_bits_with_room_num[Global.current_second_chosen_room_num] += 8;
"firstの手前にsecond"
- Global.walls_4bit_with_room_num[Global.current_first_chosen_room_num] += 4;
- Global.walls_4bit_with_room_num[Global.current_second_chosen_room_num] += 8;
- "firstの下にsecond"
- Else If(Global.room_num_1_2_difference == 1 * Global.number_of_rooms_per_line);
Global.walls_bits_with_room_num[Global.current_first_chosen_room_num] += 8;
Global.walls_bits_with_room_num[Global.current_second_chosen_room_num] += 4;
End;
"only 3d"
If(Global.dimension_of_maze == 3);
"firstの上にsecond"
If(Global.room_num_1_2_difference == -1 * Global.number_of_rooms_per_line ^ 2);
Global.walls_bits_with_room_num[Global.current_first_chosen_room_num] += 16;
Global.walls_bits_with_room_num[Global.current_second_chosen_room_num] += 32;
"firstの下にsecond"
Else If(Global.room_num_1_2_difference == 1 * Global.number_of_rooms_per_line ^ 2);
Global.walls_bits_with_room_num[Global.current_first_chosen_room_num] += 32;
Global.walls_bits_with_room_num[Global.current_second_chosen_room_num] += 16;
End;
- Global.walls_4bit_with_room_num[Global.current_first_chosen_room_num] += 8;
- Global.walls_4bit_with_room_num[Global.current_second_chosen_room_num] += 4;
- End;
- }
- }
- rule("hud")
- {
- event
- {
- Ongoing - Global;
- }
- actions
- {
- Create HUD Text(All Players(All Teams), String("{0} - {1} - {2}", Server Load, Server Load Average, Server Load Peak), Null, Null,
Right, 0, Color(White), Color(White), Color(White), Visible To and String, Default Visibility);
If(Global.dimension_of_maze == 3);
Create HUD Text(All Players(All Teams), Custom String("{0} {1}", Input Binding String(Button(Jump)), String("Up")), Null, Null,
Top, 1, Color(White), Color(White), Color(White), Visible To and String, Default Visibility);
Create HUD Text(All Players(All Teams), Custom String("{0} {1}", Input Binding String(Button(Crouch)), String("Down")), Null, Null,
Top, 2, Color(White), Color(White), Color(White), Visible To and String, Default Visibility);
End;
- Right, 0, White, White, White, Visible To and String, Default Visibility);
- }
- }
- rule("player set")
- {
- event
- {
- Ongoing - Each Player;
- All;
- All;
- }
- actions
- {
Event Player.is3dwallhigh_low = True;
- disabled Create HUD Text(Event Player, Position Of(Event Player), Null, Null, Top, 0, White, White, White, Visible To and String,
- Default Visibility);
- disabled Create HUD Text(Event Player, Event Player.room_num_of_current_pos, Null, Null, Top, 0, White, White, White, Visible To and String,
- Default Visibility);
- Create Effect(Event Player, Orb, Green, Event Player.center_pos_of_the_room_you_are + Vector(0.500 * Global.width_meter_per_a_room,
- Global.wall_effect_height, 0.500 * Global.width_meter_per_a_room), Global.pillar_radius, Position and Radius);
- Create Effect(Event Player, Orb, Green, Event Player.center_pos_of_the_room_you_are + Vector(0.500 * Global.width_meter_per_a_room,
- Global.wall_effect_height, -0.500 * Global.width_meter_per_a_room), Global.pillar_radius, Position and Radius);
- Create Effect(Event Player, Orb, Green, Event Player.center_pos_of_the_room_you_are + Vector(
- -0.500 * Global.width_meter_per_a_room, Global.wall_effect_height, -0.500 * Global.width_meter_per_a_room),
- Global.pillar_radius, Position and Radius);
- Create Effect(Event Player, Orb, Green, Event Player.center_pos_of_the_room_you_are + Vector(
- -0.500 * Global.width_meter_per_a_room, Global.wall_effect_height, 0.500 * Global.width_meter_per_a_room),
- Global.pillar_radius, Position and Radius);
- Disable Movement Collision With Players(Event Player);
Set Gravity(Event Player, Global.dimension_of_maze == 2 ? 100 : 0);
If(Global.dimension_of_maze == 2);
disabled Create Effect(Event Player, Orb, Color(Green), Event Player.center_pos_of_the_room_you_are + Vector(
0.500 * Global.width_meter_per_a_room, Global.wall_effect_height, 0.500 * Global.width_meter_per_a_room), Global.pillar_radius,
Position and Radius);
disabled Create Effect(Event Player, Orb, Color(Green), Event Player.center_pos_of_the_room_you_are + Vector(
0.500 * Global.width_meter_per_a_room, Global.wall_effect_height, -0.500 * Global.width_meter_per_a_room),
Global.pillar_radius, Position and Radius);
disabled Create Effect(Event Player, Orb, Color(Green), Event Player.center_pos_of_the_room_you_are + Vector(
-0.500 * Global.width_meter_per_a_room, Global.wall_effect_height, -0.500 * Global.width_meter_per_a_room),
Global.pillar_radius, Position and Radius);
disabled Create Effect(Event Player, Orb, Color(Green), Event Player.center_pos_of_the_room_you_are + Vector(
-0.500 * Global.width_meter_per_a_room, Global.wall_effect_height, 0.500 * Global.width_meter_per_a_room),
Global.pillar_radius, Position and Radius);
Else;
disabled Create Effect(Event Player, Orb, Color(Green), Event Player.center_pos_of_the_room_you_are + Vector(
0.500 * Global.width_meter_per_a_room, -0.500 * Global.width_meter_per_a_room, 0.500 * Global.width_meter_per_a_room),
Global.pillar_radius, Position and Radius);
disabled Create Effect(Event Player, Orb, Color(Green), Event Player.center_pos_of_the_room_you_are + Vector(
0.500 * Global.width_meter_per_a_room, -0.500 * Global.width_meter_per_a_room, -0.500 * Global.width_meter_per_a_room),
Global.pillar_radius, Position and Radius);
disabled Create Effect(Event Player, Orb, Color(Green), Event Player.center_pos_of_the_room_you_are + Vector(
-0.500 * Global.width_meter_per_a_room, -0.500 * Global.width_meter_per_a_room, -0.500 * Global.width_meter_per_a_room),
Global.pillar_radius, Position and Radius);
disabled Create Effect(Event Player, Orb, Color(Green), Event Player.center_pos_of_the_room_you_are + Vector(
-0.500 * Global.width_meter_per_a_room, -0.500 * Global.width_meter_per_a_room, 0.500 * Global.width_meter_per_a_room),
Global.pillar_radius, Position and Radius);
disabled Create Effect(Event Player, Orb, Color(Green), Event Player.center_pos_of_the_room_you_are + Vector(
0.500 * Global.width_meter_per_a_room, 0.500 * Global.width_meter_per_a_room, 0.500 * Global.width_meter_per_a_room),
Global.pillar_radius, Position and Radius);
disabled Create Effect(Event Player, Orb, Color(Green), Event Player.center_pos_of_the_room_you_are + Vector(
0.500 * Global.width_meter_per_a_room, 0.500 * Global.width_meter_per_a_room, -0.500 * Global.width_meter_per_a_room),
Global.pillar_radius, Position and Radius);
disabled Create Effect(Event Player, Orb, Color(Green), Event Player.center_pos_of_the_room_you_are + Vector(
-0.500 * Global.width_meter_per_a_room, 0.500 * Global.width_meter_per_a_room, -0.500 * Global.width_meter_per_a_room),
Global.pillar_radius, Position and Radius);
disabled Create Effect(Event Player, Orb, Color(Green), Event Player.center_pos_of_the_room_you_are + Vector(
-0.500 * Global.width_meter_per_a_room, 0.500 * Global.width_meter_per_a_room, 0.500 * Global.width_meter_per_a_room),
Global.pillar_radius, Position and Radius);
disabled Create Beam Effect(Round To Integer(Global.walls_bits_with_room_num[Event Player.room_num_of_current_pos] / 1, Down)
% 2 == 1 ? Event Player : Null, Grapple Beam, Event Player.center_pos_of_the_room_you_are,
Event Player.center_pos_of_the_room_you_are + Global.width_meter_per_a_room * Left, Color(White),
Visible To Position and Radius);
disabled Create Beam Effect(Round To Integer(Global.walls_bits_with_room_num[Event Player.room_num_of_current_pos] / 2, Down)
% 2 == 1 ? Event Player : Null, Grapple Beam, Event Player.center_pos_of_the_room_you_are,
Event Player.center_pos_of_the_room_you_are + Global.width_meter_per_a_room * Right, Color(White),
Visible To Position and Radius);
disabled Create Beam Effect(Round To Integer(Global.walls_bits_with_room_num[Event Player.room_num_of_current_pos] / 4, Down)
% 2 == 1 ? Event Player : Null, Grapple Beam, Event Player.center_pos_of_the_room_you_are,
Event Player.center_pos_of_the_room_you_are + Global.width_meter_per_a_room * Forward, Color(White),
Visible To Position and Radius);
disabled Create Beam Effect(Round To Integer(Global.walls_bits_with_room_num[Event Player.room_num_of_current_pos] / 8, Down)
% 2 == 1 ? Event Player : Null, Grapple Beam, Event Player.center_pos_of_the_room_you_are,
Event Player.center_pos_of_the_room_you_are + Global.width_meter_per_a_room * Backward, Color(White),
Visible To Position and Radius);
disabled Create Beam Effect(Round To Integer(Global.walls_bits_with_room_num[Event Player.room_num_of_current_pos] / 16, Down)
% 2 == 1 ? Event Player : Null, Grapple Beam, Event Player.center_pos_of_the_room_you_are,
Event Player.center_pos_of_the_room_you_are + Global.width_meter_per_a_room * Vector(0.001, 1, 0), Color(White),
Visible To Position and Radius);
disabled Create Beam Effect(Round To Integer(Global.walls_bits_with_room_num[Event Player.room_num_of_current_pos] / 32, Down)
% 2 == 1 ? Event Player : Null, Grapple Beam, Event Player.center_pos_of_the_room_you_are,
Event Player.center_pos_of_the_room_you_are + Global.width_meter_per_a_room * Vector(-0.001, -1, 0), Color(White),
Visible To Position and Radius);
Start Scaling Player(Event Player, 0.100, False);
End;
- }
- }
- rule("player ongoing")
- {
- event
- {
- Ongoing - Each Player;
- All;
- All;
- }
- conditions
- {
- Global.MazeHasBeenCreated == True;
- Event Player.is_in_goal == False;
- }
- actions
- {
- Event Player.bool_player_is_out_of_maze[0] = X Component Of(Position Of(Event Player))
- > Global.width_meter_per_a_room * Global.number_of_rooms_per_line;
- Event Player.bool_player_is_out_of_maze[1] = X Component Of(Position Of(Event Player)) < 0;
- Event Player.bool_player_is_out_of_maze[2] = Z Component Of(Position Of(Event Player))
- > Global.width_meter_per_a_room * Global.number_of_rooms_per_line;
- Event Player.bool_player_is_out_of_maze[3] = Z Component Of(Position Of(Event Player)) < 0;
If(Global.dimension_of_maze == 3);
Event Player.bool_player_is_out_of_maze[4] = Y Component Of(Position Of(Event Player))
> Global.width_meter_per_a_room * Global.number_of_rooms_per_line;
Event Player.bool_player_is_out_of_maze[5] = Y Component Of(Position Of(Event Player)) < 0;
End;
- If(Is True For Any(Event Player.bool_player_is_out_of_maze, Current Array Element == True));
- Event Player.room_num_of_current_pos = -1;
- Else;
- Event Player.current_room_xindex = Round To Integer(X Component Of(Position Of(Event Player)) / Global.width_meter_per_a_room,
- Down);
- Event Player.current_room_zindex = 1 * Round To Integer(Z Component Of(Position Of(Event Player)) / Global.width_meter_per_a_room,
- Down);
Event Player.current_room_yindex = Round To Integer(Y Component Of(Position Of(Event Player)) / Global.width_meter_per_a_room,
Down);
If(Global.dimension_of_maze == 2);
Event Player.room_num_of_current_pos = Event Player.current_room_xindex + Global.number_of_rooms_per_line * Event Player.current_room_zindex;
"3d"
Else;
Event Player.room_num_of_current_pos = Event Player.current_room_xindex + Event Player.current_room_zindex * Global.number_of_rooms_per_line + Event Player.current_room_yindex * Global.number_of_rooms_per_line ^ 2;
End;
- Event Player.room_num_of_current_pos = Event Player.current_room_xindex + Global.number_of_rooms_per_line * Event Player.current_room_zindex;
- Call Subroutine(pl_listup_adjucent_room_list);
- Event Player.pl_room_list_show_wall = Append To Array(Event Player.pl_adjacent_room_list, Event Player.room_num_of_current_pos);
"3dで特定方向の壁だけが表示されづらくなるのを防ぐ"
Event Player.pl_room_list_show_wall = Randomized Array(Event Player.pl_room_list_show_wall);
Event Player.center_pos_of_the_room_you_are = Vector((0.500 + Event Player.current_room_xindex) * Global.width_meter_per_a_room,
Global.dimension_of_maze == 2 ? 0.200 : (0.500 + Event Player.current_room_yindex) * Global.width_meter_per_a_room, (
0.500 + Event Player.current_room_zindex) * Global.width_meter_per_a_room);
disabled Start Rule(playwalleffects, Do Nothing);
Call Subroutine(get_visibles);
- Event Player.center_pos_of_the_room_you_are = Vector((0.500 + Event Player.current_room_xindex) * Global.width_meter_per_a_room, 0,
- (0.500 + Event Player.current_room_zindex) * Global.width_meter_per_a_room);
- For Player Variable(Event Player, I_show_wall, 0, Count Of(Event Player.pl_room_list_show_wall), 1);
- Event Player.xIndex_show_wall = Event Player.pl_room_list_show_wall[Event Player.I_show_wall] % Global.number_of_rooms_per_line;
- Event Player.zIndex_show_wall = Round To Integer(
- Event Player.pl_room_list_show_wall[Event Player.I_show_wall] / Global.number_of_rooms_per_line, Down);
- Event Player.center_pos_of_room_show_wall = Vector((0.500 + Event Player.xIndex_show_wall) * Global.width_meter_per_a_room, 0, (
- 0.500 + Event Player.zIndex_show_wall) * Global.width_meter_per_a_room);
- "左に壁がある"
- If(Round To Integer(Global.walls_4bit_with_room_num[Event Player.pl_room_list_show_wall[Event Player.I_show_wall]] / 1, Down)
- % 2 == 0);
- Play Effect(Event Player, Ring Explosion, Green, Event Player.center_pos_of_room_show_wall + Vector(
- 0.500 * Global.width_meter_per_a_room, Global.wall_effect_height, 0), Global.wall_effect_size);
- End;
- "右に壁がある"
- If(Round To Integer(Global.walls_4bit_with_room_num[Event Player.pl_room_list_show_wall[Event Player.I_show_wall]] / 2, Down)
- % 2 == 0);
- Play Effect(Event Player, Ring Explosion, Green, Event Player.center_pos_of_room_show_wall + Vector(
- -0.500 * Global.width_meter_per_a_room, Global.wall_effect_height, 0), Global.wall_effect_size);
- End;
- "上に壁がある"
- If(Round To Integer(Global.walls_4bit_with_room_num[Event Player.pl_room_list_show_wall[Event Player.I_show_wall]] / 4, Down)
- % 2 == 0);
- Play Effect(Event Player, Ring Explosion, Green, Event Player.center_pos_of_room_show_wall + Vector(0, Global.wall_effect_height,
- 0.500 * Global.width_meter_per_a_room), Global.wall_effect_size);
- End;
- "下に壁がある"
- If(Round To Integer(Global.walls_4bit_with_room_num[Event Player.pl_room_list_show_wall[Event Player.I_show_wall]] / 8, Down)
- % 2 == 0);
- Play Effect(Event Player, Ring Explosion, Green, Event Player.center_pos_of_room_show_wall + Vector(0, Global.wall_effect_height,
- -0.500 * Global.width_meter_per_a_room), Global.wall_effect_size);
- End;
- End;
- End;
- Call Subroutine(pl_wall_hit);
- Event Player.room_num_of_previous_pos = Event Player.room_num_of_current_pos;
- If(Event Player.room_num_of_current_pos == Global.number_of_total_rooms - 1);
- Modify Player Score(Event Player, Global.number_of_rooms_per_line);
- Set Status(Event Player, Null, Rooted, 9999);
- Event Player.is_in_goal = True;
Play Effect(All Players(All Teams), Good Explosion, Color(Yellow), Event Player, 3);
Apply Impulse(Event Player, Right, 0.001, To World, Cancel Contrary Motion);
Apply Impulse(Event Player, Left, 0.001, To World, Cancel Contrary Motion);
Apply Impulse(Event Player, Forward, 0.001, To World, Cancel Contrary Motion);
Apply Impulse(Event Player, Backward, 0.001, To World, Cancel Contrary Motion);
Apply Impulse(Event Player, Up, 0.001, To World, Cancel Contrary Motion);
Apply Impulse(Event Player, Down, 0.001, To World, Cancel Contrary Motion);
- Play Effect(All Players(All Teams), Good Explosion, Yellow, Event Player, 3);
- End;
- Event Player.center_pos_of_the_previous_room = Event Player.center_pos_of_the_room_you_are;
- Wait(0.250, Ignore Condition);
- Loop If Condition Is True;
- }
- }
- rule("pl_listup adjucent_room_list")
- {
- event
- {
- Subroutine;
- pl_listup_adjucent_room_list;
- }
- actions
- {
- Event Player.pl_adjacent_room_list = Empty Array;
If(Global.dimension_of_maze == 2);
"右端じゃない"
If(Event Player.room_num_of_current_pos % Global.number_of_rooms_per_line != 0);
Modify Player Variable(Event Player, pl_adjacent_room_list, Append To Array, Event Player.room_num_of_current_pos - 1);
End;
"左端じゃない"
If(Event Player.room_num_of_current_pos % Global.number_of_rooms_per_line != Global.number_of_rooms_per_line - 1);
Modify Player Variable(Event Player, pl_adjacent_room_list, Append To Array, Event Player.room_num_of_current_pos + 1);
End;
"下端じゃない"
If(Event Player.room_num_of_current_pos >= Global.number_of_rooms_per_line);
Modify Player Variable(Event Player, pl_adjacent_room_list, Append To Array,
Event Player.room_num_of_current_pos - Global.number_of_rooms_per_line);
End;
"上端じゃない"
If(Global.number_of_total_rooms - Global.number_of_rooms_per_line > Event Player.room_num_of_current_pos);
Modify Player Variable(Event Player, pl_adjacent_room_list, Append To Array,
Event Player.room_num_of_current_pos + Global.number_of_rooms_per_line);
End;
"3d"
Else;
"右端じゃない"
If(Event Player.room_num_of_current_pos % Global.number_of_rooms_per_line != 0);
Modify Player Variable(Event Player, pl_adjacent_room_list, Append To Array, Event Player.room_num_of_current_pos + -1);
End;
"左端じゃない"
If(Event Player.room_num_of_current_pos % Global.number_of_rooms_per_line != Global.number_of_rooms_per_line - 1);
Modify Player Variable(Event Player, pl_adjacent_room_list, Append To Array, Event Player.room_num_of_current_pos + 1);
End;
"手前端じゃない"
If(Event Player.room_num_of_current_pos % Global.number_of_rooms_per_line ^ 2 >= Global.number_of_rooms_per_line);
Modify Player Variable(Event Player, pl_adjacent_room_list, Append To Array,
Event Player.room_num_of_current_pos - Global.number_of_rooms_per_line);
End;
"奥端じゃない"
If((Global.number_of_rooms_per_line + Event Player.room_num_of_current_pos)
% Global.number_of_rooms_per_line ^ 2 >= Global.number_of_rooms_per_line);
Modify Player Variable(Event Player, pl_adjacent_room_list, Append To Array,
Event Player.room_num_of_current_pos + Global.number_of_rooms_per_line);
End;
"低端じゃない"
If(Event Player.room_num_of_current_pos >= Global.number_of_rooms_per_line ^ 2);
Modify Player Variable(Event Player, pl_adjacent_room_list, Append To Array,
Event Player.room_num_of_current_pos - Global.number_of_rooms_per_line ^ 2);
End;
"高端じゃない"
If(Event Player.room_num_of_current_pos < (Global.number_of_rooms_per_line - 1) * Global.number_of_rooms_per_line ^ 2);
Modify Player Variable(Event Player, pl_adjacent_room_list, Append To Array,
Event Player.room_num_of_current_pos + Global.number_of_rooms_per_line ^ 2);
End;
- "右端じゃない"
- If(Event Player.room_num_of_current_pos % Global.number_of_rooms_per_line != 0);
- Modify Player Variable(Event Player, pl_adjacent_room_list, Append To Array, Event Player.room_num_of_current_pos - 1);
- End;
- "左端じゃない"
- If(Event Player.room_num_of_current_pos % Global.number_of_rooms_per_line != Global.number_of_rooms_per_line - 1);
- Modify Player Variable(Event Player, pl_adjacent_room_list, Append To Array, Event Player.room_num_of_current_pos + 1);
- End;
- "下端じゃない"
- If(Event Player.room_num_of_current_pos >= Global.number_of_rooms_per_line);
- Modify Player Variable(Event Player, pl_adjacent_room_list, Append To Array,
- Event Player.room_num_of_current_pos - Global.number_of_rooms_per_line);
- End;
- "上端じゃない"
- If(Global.number_of_total_rooms - Global.number_of_rooms_per_line > Event Player.room_num_of_current_pos);
- Modify Player Variable(Event Player, pl_adjacent_room_list, Append To Array,
- Event Player.room_num_of_current_pos + Global.number_of_rooms_per_line);
- End;
- }
- }
- rule("player maze is not created")
- {
- event
- {
- Ongoing - Each Player;
- All;
- All;
- }
- conditions
- {
- Global.MazeHasBeenCreated == False;
- }
- actions
- {
- Set Status(Event Player, Null, Rooted, 9999);
- Teleport(Event Player, Vector(1, 0, 1));
- Event Player.room_num_of_previous_pos = 0;
- Event Player.is_in_goal = False;
Set Facing(Event Player, Global.dimension_of_maze == 2 ? Vector(1, 0, 1) : Vector(1, 1, 1), To World);
- Set Facing(Event Player, Vector(1, 0, 1), To World);
- }
- }
- rule("player maze is created")
- {
- event
- {
- Ongoing - Each Player;
- All;
- All;
- }
- conditions
- {
- Global.MazeHasBeenCreated == True;
- }
- actions
- {
- Clear Status(Event Player, Rooted);
- Teleport(Event Player, Vector(1, 0, 1));
- Event Player.room_num_of_previous_pos = 0;
- Event Player.is_in_goal = False;
- }
- }
- rule("player wall hit")
- {
- event
- {
- Subroutine;
- pl_wall_hit;
- }
- actions
- {
- Event Player.room_num_gap = Event Player.room_num_of_current_pos - Event Player.room_num_of_previous_pos;
If(Array Contains(Global.dimension_of_maze == 2 ? Array(1, Global.number_of_rooms_per_line) : Array(1,
Global.number_of_rooms_per_line, Global.number_of_rooms_per_line ^ 2), Absolute Value(Event Player.room_num_gap)));
If(Global.dimension_of_maze == 2);
Event Player.move_direction_as_bit = Array(1, 2, 4, 8)[Index Of Array Value(Array(1, -1, Global.number_of_rooms_per_line,
-1 * Global.number_of_rooms_per_line), Event Player.room_num_gap)];
"3d"
Else;
Event Player.move_direction_as_bit = Array(1, 2, 4, 8, 16, 32)[Index Of Array Value(Array(1, -1, Global.number_of_rooms_per_line,
-1 * Global.number_of_rooms_per_line, Global.number_of_rooms_per_line ^ 2, -1 * Global.number_of_rooms_per_line ^ 2),
Event Player.room_num_gap)];
End;
- If(Array Contains(Array(1, Global.number_of_rooms_per_line), Absolute Value(Event Player.room_num_gap)));
- Event Player.move_direction_as_bit = Array(1, 2, 4, 8)[Index Of Array Value(Array(1, -1, Global.number_of_rooms_per_line,
- -1 * Global.number_of_rooms_per_line), Event Player.room_num_gap)];
- "壁がある"
If(Round To Integer(Global.walls_bits_with_room_num[Event Player.room_num_of_previous_pos] / Event Player.move_direction_as_bit,
- If(Round To Integer(Global.walls_4bit_with_room_num[Event Player.room_num_of_previous_pos] / Event Player.move_direction_as_bit,
- Down) % 2 == 0);
- Event Player.did_hit_wall = True;
- Else;
- Event Player.did_hit_wall = False;
- End;
- Else;
- Event Player.did_hit_wall = Event Player.room_num_gap == 0 ? False : True;
- End;
- If(Event Player.did_hit_wall == True);
- Set Status(Event Player, Null, Stunned, 0.400);
- Teleport(Event Player, Event Player.center_pos_of_the_previous_room);
- Event Player.room_num_of_current_pos = Event Player.room_num_of_previous_pos;
- End;
- }
- }
- rule("goaled player over 1")
- {
- event
- {
- Ongoing - Global;
- }
- conditions
- {
- Count Of(Filtered Array(All Players(All Teams), Current Array Element.is_in_goal == True)) >= 1;
- }
- actions
- {
- Big Message(All Players(All Teams), String("Goal"));
- Wait(5, Ignore Condition);
- Global.number_of_rooms_per_line += Global.sizeIncreaseEveryAfterClear;
Global.number_of_rooms_per_line = Min(31, Global.number_of_rooms_per_line);
- Call Subroutine(create_maze);
- }
}
rule("game start time set")
{
event
{
Ongoing - Global;
}
conditions
{
Is Game In Progress == True;
}
actions
{
Global.game_length_in_minutes = Workshop Setting Integer(Custom String("time"), Custom String("game length in minutes ゲームの長さ(分)"),
5, 1, 60, 0);
Set Match Time(60 * Global.game_length_in_minutes);
}
}
rule("playwalleffects")
{
event
{
Subroutine;
playwalleffects;
}
actions
{
Event Player.is3dwallhigh_low = !Event Player.is3dwallhigh_low;
For Player Variable(Event Player, I_show_wall, 0, Count Of(Event Player.pl_room_list_show_wall), 1);
"ok"
If(Global.dimension_of_maze == 2);
Event Player.xIndex_show_wall = Event Player.pl_room_list_show_wall[Event Player.I_show_wall] % Global.number_of_rooms_per_line;
Event Player.zIndex_show_wall = Round To Integer(
Event Player.pl_room_list_show_wall[Event Player.I_show_wall] / Global.number_of_rooms_per_line, Down);
Event Player.center_pos_of_room_show_wall = Vector((0.500 + Event Player.xIndex_show_wall) * Global.width_meter_per_a_room,
Global.wall_effect_height, (0.500 + Event Player.zIndex_show_wall) * Global.width_meter_per_a_room);
"3d"
Else;
Event Player.xIndex_show_wall = Event Player.pl_room_list_show_wall[Event Player.I_show_wall] % Global.number_of_rooms_per_line;
Event Player.yIndex_show_wall = Round To Integer(
Event Player.pl_room_list_show_wall[Event Player.I_show_wall] / Global.number_of_rooms_per_line ^ 2, Down);
Event Player.zIndex_show_wall = Round To Integer((
Event Player.pl_room_list_show_wall[Event Player.I_show_wall] - Event Player.yIndex_show_wall * Global.number_of_rooms_per_line * Global.number_of_rooms_per_line)
/ Global.number_of_rooms_per_line, Down);
Event Player.center_pos_of_room_show_wall = Vector((0.500 + Event Player.xIndex_show_wall) * Global.width_meter_per_a_room, 0 + (
0.500 + Event Player.yIndex_show_wall) * Global.width_meter_per_a_room, (0.500 + Event Player.zIndex_show_wall)
* Global.width_meter_per_a_room);
End;
If(Global.dimension_of_maze == 2);
"左に壁がある"
If(Round To Integer(Global.walls_bits_with_room_num[Event Player.pl_room_list_show_wall[Event Player.I_show_wall]] / 1, Down)
% 2 == 0);
Play Effect(Event Player, Ring Explosion, Color(Green), Event Player.center_pos_of_room_show_wall + Vector(
0.500 * Global.width_meter_per_a_room, 0, 0), Global.wall_effect_size);
End;
"右に壁がある"
If(Round To Integer(Global.walls_bits_with_room_num[Event Player.pl_room_list_show_wall[Event Player.I_show_wall]] / 2, Down)
% 2 == 0);
Play Effect(Event Player, Ring Explosion, Color(Green), Event Player.center_pos_of_room_show_wall + Vector(
-0.500 * Global.width_meter_per_a_room, 0, 0), Global.wall_effect_size);
End;
"奥に壁がある"
If(Round To Integer(Global.walls_bits_with_room_num[Event Player.pl_room_list_show_wall[Event Player.I_show_wall]] / 4, Down)
% 2 == 0);
Play Effect(Event Player, Ring Explosion, Color(Green), Event Player.center_pos_of_room_show_wall + Vector(0, 0,
0.500 * Global.width_meter_per_a_room), Global.wall_effect_size);
End;
"手前に壁がある"
If(Round To Integer(Global.walls_bits_with_room_num[Event Player.pl_room_list_show_wall[Event Player.I_show_wall]] / 8, Down)
% 2 == 0);
Play Effect(Event Player, Ring Explosion, Color(Green), Event Player.center_pos_of_room_show_wall + Vector(0, 0,
-0.500 * Global.width_meter_per_a_room), Global.wall_effect_size);
End;
"3d"
Else;
"左に壁がある"
If(Round To Integer(Global.walls_bits_with_room_num[Event Player.pl_room_list_show_wall[Event Player.I_show_wall]] / 1, Down)
% 2 == 0);
Play Effect(Event Player, Ring Explosion, Color(Green), Event Player.center_pos_of_room_show_wall + Vector(
0.500 * Global.width_meter_per_a_room, (Event Player.is3dwallhigh_low ? 0.250 : -0.250) * Global.width_meter_per_a_room, 0),
Global.wall_effect_size);
End;
"右に壁がある"
If(Round To Integer(Global.walls_bits_with_room_num[Event Player.pl_room_list_show_wall[Event Player.I_show_wall]] / 2, Down)
% 2 == 0);
Play Effect(Event Player, Ring Explosion, Color(Green), Event Player.center_pos_of_room_show_wall + Vector(
-0.500 * Global.width_meter_per_a_room, (Event Player.is3dwallhigh_low ? 0.250 : -0.250) * Global.width_meter_per_a_room, 0),
Global.wall_effect_size);
End;
"奥に壁がある"
If(Round To Integer(Global.walls_bits_with_room_num[Event Player.pl_room_list_show_wall[Event Player.I_show_wall]] / 4, Down)
% 2 == 0);
Play Effect(Event Player, Ring Explosion, Color(Green), Event Player.center_pos_of_room_show_wall + Vector(0, (
Event Player.is3dwallhigh_low ? 0.250 : -0.250) * Global.width_meter_per_a_room, 0.500 * Global.width_meter_per_a_room),
Global.wall_effect_size);
End;
"手前に壁がある"
If(Round To Integer(Global.walls_bits_with_room_num[Event Player.pl_room_list_show_wall[Event Player.I_show_wall]] / 8, Down)
% 2 == 0);
Play Effect(Event Player, Ring Explosion, Color(Green), Event Player.center_pos_of_room_show_wall + Vector(0, (
Event Player.is3dwallhigh_low ? 0.250 : -0.250) * Global.width_meter_per_a_room, -0.500 * Global.width_meter_per_a_room),
Global.wall_effect_size);
End;
"上に壁がある"
If(Round To Integer(Global.walls_bits_with_room_num[Event Player.pl_room_list_show_wall[Event Player.I_show_wall]] / 16, Down)
% 2 == 0);
Play Effect(Event Player, Ring Explosion, Color(Aqua), Event Player.center_pos_of_room_show_wall + Vector(0,
0.500 * Global.width_meter_per_a_room, 0), 3);
End;
"下に壁がある"
If(Round To Integer(Global.walls_bits_with_room_num[Event Player.pl_room_list_show_wall[Event Player.I_show_wall]] / 32, Down)
% 2 == 0);
Play Effect(Event Player, Ring Explosion, Color(Aqua), Event Player.center_pos_of_room_show_wall + Vector(0,
-0.500 * Global.width_meter_per_a_room, 0), 3);
End;
Wait(0.016, Ignore Condition);
End;
End;
}
}
rule("player 3d jump key")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Global.dimension_of_maze == 3;
Is Button Held(Event Player, Button(Jump)) == True;
Has Status(Event Player, Rooted) == False;
Is Game In Progress == True;
}
actions
{
Apply Impulse(Event Player, Up, 8, To World, Cancel Contrary Motion);
}
}
rule("player 3d jump key release")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Global.dimension_of_maze == 3;
Is Button Held(Event Player, Button(Jump)) == False;
}
actions
{
Apply Impulse(Event Player, Down, 0.001, To World, Cancel Contrary Motion);
}
}
rule("player 3d crouch key")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Global.dimension_of_maze == 3;
Is Button Held(Event Player, Button(Crouch)) == True;
Has Status(Event Player, Rooted) == False;
Is Game In Progress == True;
}
actions
{
Apply Impulse(Event Player, Down, 8, To World, Cancel Contrary Motion);
}
}
rule("player 3d crouch key release")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Global.dimension_of_maze == 3;
Is Button Held(Event Player, Button(Crouch)) == False;
}
actions
{
Apply Impulse(Event Player, Up, 0.001, To World, Cancel Contrary Motion);
}
}
rule("player 3d 0 throttle")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Global.dimension_of_maze == 3;
Throttle Of(Event Player) == Vector(0, 0, 0);
}
actions
{
Apply Impulse(Event Player, Right, 0.001, To World, Cancel Contrary Motion);
Apply Impulse(Event Player, Left, 0.001, To World, Cancel Contrary Motion);
Apply Impulse(Event Player, Forward, 0.001, To World, Cancel Contrary Motion);
Apply Impulse(Event Player, Backward, 0.001, To World, Cancel Contrary Motion);
}
}
rule("player 3d view direction")
{
event
{
Ongoing - Each Player;
All;
All;
}
conditions
{
Global.dimension_of_maze == 3;
}
actions
{
"おk"
Event Player.num_current_rounded_fac_dir = Index Of Array Value(Array(Left, Right, Forward, Backward, Up, Down), First Of(
Sorted Array(Array(Left, Right, Forward, Backward, Up, Down), Angle Between Vectors(Current Array Element, Facing Direction Of(
Event Player)))));
Wait(0.510, Ignore Condition);
Loop;
}
}
rule("get_visibles")
{
event
{
Subroutine;
get_visibles;
}
actions
{
Event Player.array_visible_room_ofset_vec_pl = Empty Array;
For Player Variable(Event Player, i_get_visibles, 0, Count Of(Global.array_visible_room_ofset_vec), 1);
Event Player.array_visible_room_ofset_vec_pl[Event Player.i_get_visibles] = Null;
"x範囲内"
If(Event Player.current_room_xindex + X Component Of(Global.array_visible_room_ofset_vec[Event Player.i_get_visibles])
>= 0 && Event Player.current_room_xindex + X Component Of(Global.array_visible_room_ofset_vec[Event Player.i_get_visibles])
< Global.number_of_rooms_per_line);
"z範囲内"
If(Event Player.current_room_zindex + Z Component Of(Global.array_visible_room_ofset_vec[Event Player.i_get_visibles])
>= 0 && Event Player.current_room_zindex + Z Component Of(Global.array_visible_room_ofset_vec[Event Player.i_get_visibles])
< Global.number_of_rooms_per_line);
"y範囲内"
If((Event Player.current_room_yindex + Y Component Of(Global.array_visible_room_ofset_vec[Event Player.i_get_visibles])
>= 0 && Event Player.current_room_yindex + Y Component Of(Global.array_visible_room_ofset_vec[Event Player.i_get_visibles])
< Global.number_of_rooms_per_line) || (Global.dimension_of_maze == 2));
Event Player.array_visible_room_ofset_vec_pl[Event Player.i_get_visibles] = Global.array_visible_room_ofset_vec[Event Player.i_get_visibles];
End;
End;
End;
End;
}
- }