Merge pull request 'Added atomic handling for storyboard operations and fixed various bugs' (#4) from feature-storyboard-atomic into main
Reviewed-on: #4
This commit was merged in pull request #4.
This commit is contained in:
@@ -35,7 +35,7 @@ textbox_write:
|
|||||||
- queue stop <[queue]>
|
- queue stop <[queue]>
|
||||||
- run textbox_flush def.player:<[player]>
|
- run textbox_flush def.player:<[player]>
|
||||||
- stop
|
- stop
|
||||||
- define lines <[line3s].split[$$nl].parse_tag[<[parse_value].trim>]>
|
- define lines <[line3s].split[$$nl].parse_tag[<[parse_value].trim.replace[<&0>].with[<&6>]>]>
|
||||||
- flag <[player]> textbox_state:writing
|
- flag <[player]> textbox_state:writing
|
||||||
- flag <[player]> textbox_input:<[lines]>
|
- flag <[player]> textbox_input:<[lines]>
|
||||||
- flag <[player]> textbox_lines:<[lines].size>
|
- flag <[player]> textbox_lines:<[lines].size>
|
||||||
@@ -57,7 +57,7 @@ textbox_write:
|
|||||||
- stop
|
- stop
|
||||||
- if !<[player].is_online>:
|
- if !<[player].is_online>:
|
||||||
- stop
|
- stop
|
||||||
- bossbar update textbox_<[player].uuid>_<[loop_index]> title:<black><bold><[line].substring[1,<[value]>]>
|
- bossbar update textbox_<[player].uuid>_<[loop_index]> title:<&6><&l><[line].substring[1,<[value]>]>
|
||||||
- if <[value].sub[1].mod[3]> == 0:
|
- if <[value].sub[1].mod[3]> == 0:
|
||||||
- playsound sound:textbox.text <[player]> custom pitch:<util.random.decimal[0.98].to[1]> volume:<proc[settings_get].context[<[player]>|sound_textbox_volume].div[100].if_null[1]>
|
- playsound sound:textbox.text <[player]> custom pitch:<util.random.decimal[0.98].to[1]> volume:<proc[settings_get].context[<[player]>|sound_textbox_volume].div[100].if_null[1]>
|
||||||
- wait <[write_speed]>t
|
- wait <[write_speed]>t
|
||||||
@@ -100,7 +100,7 @@ textbox_skip:
|
|||||||
- bossbar create textbox_<[player].uuid>_<[value]> players:<[player]> title:<empty>
|
- bossbar create textbox_<[player].uuid>_<[value]> players:<[player]> title:<empty>
|
||||||
- define lines <[player].flag[textbox_input]>
|
- define lines <[player].flag[textbox_input]>
|
||||||
- foreach <[lines]> as:line:
|
- foreach <[lines]> as:line:
|
||||||
- bossbar update textbox_<[player].uuid>_<[loop_index]> title:<black><bold><[line]>
|
- bossbar update textbox_<[player].uuid>_<[loop_index]> title:<&6><&l><[line]>
|
||||||
- flag <[player]> textbox_state:continue
|
- flag <[player]> textbox_state:continue
|
||||||
|
|
||||||
# Clears textbox and flushes all flag memory values
|
# Clears textbox and flushes all flag memory values
|
||||||
@@ -208,12 +208,12 @@ textbox_handle_click:
|
|||||||
- ratelimit <player> 5t
|
- ratelimit <player> 5t
|
||||||
- else if <[state]> == continue:
|
- else if <[state]> == continue:
|
||||||
- determine cancelled passively
|
- determine cancelled passively
|
||||||
- playsound sound:textbox.close <player> custom volume:<proc[settings_get].context[<[player]>|sound_textbox_volume].div[100].if_null[1]>
|
- playsound sound:textbox.close <player> custom volume:<proc[settings_get].context[<player>|sound_textbox_volume].div[100].if_null[1]>
|
||||||
- ~run textbox_flush def.player:<player>
|
- ~run textbox_flush def.player:<player>
|
||||||
- ratelimit <player> 10t
|
- ratelimit <player> 10t
|
||||||
- else if <[state]> == choice:
|
- else if <[state]> == choice:
|
||||||
- determine cancelled passively
|
- determine cancelled passively
|
||||||
- playsound sound:input.ok <player> custom volume:<proc[settings_get].context[<[player]>|sound_textbox_volume].div[100].if_null[1]>
|
- playsound sound:input.ok <player> custom volume:<proc[settings_get].context[<player>|sound_textbox_volume].div[100].if_null[1]>
|
||||||
- flag <player> textbox_choice_select:<player.flag[textbox_choices].get[current]>
|
- flag <player> textbox_choice_select:<player.flag[textbox_choices].get[current]>
|
||||||
- ~run textbox_flush def.player:<player>
|
- ~run textbox_flush def.player:<player>
|
||||||
- ratelimit <player> 10t
|
- ratelimit <player> 10t
|
||||||
@@ -250,7 +250,13 @@ textbox_choice:
|
|||||||
- teleport <[player]> <[player].location.below.above.with_y[<[player].location.below.above.y.round_down>]>
|
- teleport <[player]> <[player].location.below.above.with_y[<[player].location.below.above.y.round_down>]>
|
||||||
- else:
|
- else:
|
||||||
- stop
|
- stop
|
||||||
- waituntil <[player].flag[textbox_state].if_null[null]> == null
|
- waituntil <[player].flag[textbox_state].if_null[null]> == null || !<[player].is_online>
|
||||||
|
- if !<[player].is_online>:
|
||||||
|
- if <[queue].if_null[null]> != null:
|
||||||
|
- debug log "[Textbox] Choice; cancelled queue <[queue].numeric_id><&at><[queue].script.name> for <[player].name>; offline"
|
||||||
|
- queue stop <[queue]>
|
||||||
|
- run textbox_flush def.player:<[player]>
|
||||||
|
- stop
|
||||||
- ~run textbox_flush def.player:<[player]>
|
- ~run textbox_flush def.player:<[player]>
|
||||||
- flag <[player]> textbox_state:choice
|
- flag <[player]> textbox_state:choice
|
||||||
- flag <[player]> textbox_choices:<map[].with[data].as[<[choices]>].with[current].as[left]>
|
- flag <[player]> textbox_choices:<map[].with[data].as[<[choices]>].with[current].as[left]>
|
||||||
@@ -284,35 +290,35 @@ textbox_internal_choice_select:
|
|||||||
- bossbar create textbox_<[player].uuid>_bottom players:<[player]> title:<empty>
|
- bossbar create textbox_<[player].uuid>_bottom players:<[player]> title:<empty>
|
||||||
- define choices <[player].flag[textbox_choices].get[data]>
|
- define choices <[player].flag[textbox_choices].get[data]>
|
||||||
#
|
#
|
||||||
- define left <&0><&l><[choices].get[left].get[text].if_null[null]>
|
- define left <&6><&l><[choices].get[left].get[text].if_null[null]>
|
||||||
- define right <&0><&l><[choices].get[right].get[text].if_null[null]>
|
- define right <&6><&l><[choices].get[right].get[text].if_null[null]>
|
||||||
- define top <&0><&l><[choices].get[top].get[text].if_null[null]>
|
- define top <&6><&l><[choices].get[top].get[text].if_null[null]>
|
||||||
- define bottom <&0><&l><[choices].get[bottom].get[text].if_null[null]>
|
- define bottom <&6><&l><[choices].get[bottom].get[text].if_null[null]>
|
||||||
#
|
#
|
||||||
- if <[choice_dir]> == left:
|
- if <[choice_dir]> == left:
|
||||||
- if <[left]> == <&0><&l>null:
|
- if <[left]> == <&6><&l>null:
|
||||||
- stop
|
- stop
|
||||||
- define left "<&4>❤ <&0><&l><[left]>"
|
- define left "<&4>❤ <&6><&l><[left]>"
|
||||||
- else if <[choice_dir]> == right:
|
- else if <[choice_dir]> == right:
|
||||||
- if <[right]> == <&0><&l>null:
|
- if <[right]> == <&6><&l>null:
|
||||||
- stop
|
- stop
|
||||||
- define right "<&4>❤ <&0><&l><[right]>"
|
- define right "<&4>❤ <&6><&l><[right]>"
|
||||||
- else if <[choice_dir]> == top:
|
- else if <[choice_dir]> == top:
|
||||||
- if <[top]> == <&0><&l>null:
|
- if <[top]> == <&6><&l>null:
|
||||||
- stop
|
- stop
|
||||||
- define top "<&4>❤ <&0><&l><[top]>"
|
- define top "<&4>❤ <&6><&l><[top]>"
|
||||||
- else:
|
- else:
|
||||||
- if <[bottom]> == <&0><&l>null:
|
- if <[bottom]> == <&6><&l>null:
|
||||||
- stop
|
- stop
|
||||||
- define bottom "<&4>❤ <&0><&l><[bottom]>"
|
- define bottom "<&4>❤ <&6><&l><[bottom]>"
|
||||||
#
|
#
|
||||||
- define mid_padding <element[<&sp>].repeat[<element[30].sub[<[left].strip_color.length>].sub[<[right].strip_color.length>]>]>
|
- define mid_padding <element[<&sp>].repeat[<element[30].sub[<[left].strip_color.length>].sub[<[right].strip_color.length>]>]>
|
||||||
#
|
#
|
||||||
- if <[top]> != <&0><&l>null:
|
- if <[top]> != <&6><&l>null:
|
||||||
- bossbar update textbox_<[player].uuid>_top title:<[top]>
|
- bossbar update textbox_<[player].uuid>_top title:<[top]>
|
||||||
- if <[left]> != <&0><&l>null || <[right]> != <&0><&l>null:
|
- if <[left]> != <&6><&l>null || <[right]> != <&6><&l>null:
|
||||||
- bossbar update textbox_<[player].uuid>_mid title:<[left]><[mid_padding]><[right]>
|
- bossbar update textbox_<[player].uuid>_mid title:<[left]><[mid_padding]><[right]>
|
||||||
- if <[bottom]> != <&0><&l>null:
|
- if <[bottom]> != <&6><&l>null:
|
||||||
- bossbar update textbox_<[player].uuid>_bottom title:<[bottom]>
|
- bossbar update textbox_<[player].uuid>_bottom title:<[bottom]>
|
||||||
- flag <[player]> textbox_choices:<map[].with[data].as[<[choices]>].with[current].as[<[choice_dir]>]>
|
- flag <[player]> textbox_choices:<map[].with[data].as[<[choices]>].with[current].as[<[choice_dir]>]>
|
||||||
- playsound BLOCK_NOTE_BLOCK_BIT <[player]> pitch:2 volume:<proc[settings_get].context[<[player]>|sound_textbox_volume].div[100].if_null[1]>
|
- playsound BLOCK_NOTE_BLOCK_BIT <[player]> pitch:2 volume:<proc[settings_get].context[<[player]>|sound_textbox_volume].div[100].if_null[1]>
|
||||||
@@ -22,7 +22,7 @@ compatibility_check_world:
|
|||||||
after player joins:
|
after player joins:
|
||||||
- if <proc[settings_get].context[<player>|general_ignore_version_compatibility_check]>:
|
- if <proc[settings_get].context[<player>|general_ignore_version_compatibility_check]>:
|
||||||
- stop
|
- stop
|
||||||
- define player_version <player.viaversion_version.split[-].get[1]>
|
- define player_version <player.viaversion_version.split[-].get[2]>
|
||||||
- define server_version <server.version.split[(].get[2].split[:].get[2].split[)].get[1].trim>
|
- define server_version <server.version.split[(].get[2].split[:].get[2].split[)].get[1].trim>
|
||||||
- if <proc[compatibility_check_compare_versions].context[<[player_version]>|<[server_version]>]> == -1:
|
- if <proc[compatibility_check_compare_versions].context[<[player_version]>|<[server_version]>]> == -1:
|
||||||
- wait 5s
|
- wait 5s
|
||||||
|
|||||||
@@ -34,6 +34,7 @@ ch1_1_marie_interact:
|
|||||||
1:
|
1:
|
||||||
click trigger:
|
click trigger:
|
||||||
script:
|
script:
|
||||||
|
- run storyboard_player_begin_atomic_sequence def.queue:<queue> def.player:<player>
|
||||||
- if <player.flag[textbox_state].if_null[null]> != null:
|
- if <player.flag[textbox_state].if_null[null]> != null:
|
||||||
- stop
|
- stop
|
||||||
- engage player duration:999999s
|
- engage player duration:999999s
|
||||||
@@ -97,9 +98,11 @@ ch1_1_marie_interact:
|
|||||||
- run storyboard_npc_state_set def.player:<player> def.name:marie def.key:opinion def.value:-1
|
- run storyboard_npc_state_set def.player:<player> def.name:marie def.key:opinion def.value:-1
|
||||||
- zap 2
|
- zap 2
|
||||||
- disengage player
|
- disengage player
|
||||||
|
- run storyboard_player_end_atomic_sequence def.queue:<queue> def.player:<player>
|
||||||
2:
|
2:
|
||||||
click trigger:
|
click trigger:
|
||||||
script:
|
script:
|
||||||
|
- run storyboard_player_begin_atomic_sequence def.queue:<queue> def.player:<player>
|
||||||
- if <player.flag[textbox_state].if_null[null]> != null:
|
- if <player.flag[textbox_state].if_null[null]> != null:
|
||||||
- stop
|
- stop
|
||||||
- engage player duration:999999s
|
- engage player duration:999999s
|
||||||
@@ -235,3 +238,4 @@ ch1_1_marie_interact:
|
|||||||
- inventory update
|
- inventory update
|
||||||
- zap 3
|
- zap 3
|
||||||
- disengage player
|
- disengage player
|
||||||
|
- run storyboard_player_end_atomic_sequence def.queue:<queue> def.player:<player>
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ dialogue_npc_kobayashi:
|
|||||||
1:
|
1:
|
||||||
click trigger:
|
click trigger:
|
||||||
script:
|
script:
|
||||||
|
- run storyboard_player_begin_atomic_sequence def.queue:<queue> def.player:<player>
|
||||||
- if <player.flag[textbox_state].if_null[null]> != null:
|
- if <player.flag[textbox_state].if_null[null]> != null:
|
||||||
- stop
|
- stop
|
||||||
- engage player
|
- engage player
|
||||||
@@ -45,3 +46,4 @@ dialogue_npc_kobayashi:
|
|||||||
- ~run textbox_write def.player:<player> def.queue:<queue> "def.line3s:Indeed, luv."
|
- ~run textbox_write def.player:<player> def.queue:<queue> "def.line3s:Indeed, luv."
|
||||||
- wait 1s
|
- wait 1s
|
||||||
- disengage player
|
- disengage player
|
||||||
|
- run storyboard_player_end_atomic_sequence def.queue:<queue> def.player:<player>
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ dialogue_npc_patchouli:
|
|||||||
1:
|
1:
|
||||||
click trigger:
|
click trigger:
|
||||||
script:
|
script:
|
||||||
|
- run storyboard_player_begin_atomic_sequence def.queue:<queue> def.player:<player>
|
||||||
- if <player.flag[textbox_state].if_null[null]> != null:
|
- if <player.flag[textbox_state].if_null[null]> != null:
|
||||||
- stop
|
- stop
|
||||||
- engage player
|
- engage player
|
||||||
@@ -23,3 +24,4 @@ dialogue_npc_patchouli:
|
|||||||
- wait 1s
|
- wait 1s
|
||||||
- disengage player
|
- disengage player
|
||||||
- ratelimit <player> 10t
|
- ratelimit <player> 10t
|
||||||
|
- run storyboard_player_end_atomic_sequence def.queue:<queue> def.player:<player>
|
||||||
|
|||||||
@@ -14,6 +14,7 @@ dialogue_npc_ryuko:
|
|||||||
1:
|
1:
|
||||||
click trigger:
|
click trigger:
|
||||||
script:
|
script:
|
||||||
|
- run storyboard_player_begin_atomic_sequence def.queue:<queue> def.player:<player>
|
||||||
- if <player.flag[textbox_state].if_null[null]> != null:
|
- if <player.flag[textbox_state].if_null[null]> != null:
|
||||||
- stop
|
- stop
|
||||||
- engage player
|
- engage player
|
||||||
@@ -29,3 +30,4 @@ dialogue_npc_ryuko:
|
|||||||
- wait 1s
|
- wait 1s
|
||||||
- disengage player
|
- disengage player
|
||||||
- ratelimit <player> 10t
|
- ratelimit <player> 10t
|
||||||
|
- run storyboard_player_end_atomic_sequence def.queue:<queue> def.player:<player>
|
||||||
|
|||||||
@@ -15,11 +15,13 @@ intro_interact_posters_task:
|
|||||||
debug: false
|
debug: false
|
||||||
type: task
|
type: task
|
||||||
script:
|
script:
|
||||||
|
- run storyboard_player_begin_atomic_sequence def.queue:<queue> def.player:<player>
|
||||||
- ~run textbox_write def.player:<player> def.queue:<queue> "def.line3s:Book-related posters are on the wall."
|
- ~run textbox_write def.player:<player> def.queue:<queue> "def.line3s:Book-related posters are on the wall."
|
||||||
- ~run textbox_write def.player:<player> def.queue:<queue> "def.line3s:<&o><&dq>Screw that. I'm running away.<&dq>"
|
- ~run textbox_write def.player:<player> def.queue:<queue> "def.line3s:<&o><&dq>Screw that. I'm running away.<&dq>"
|
||||||
- ~run textbox_write def.player:<player> def.queue:<queue> def.line3s:<&o><&dq>Where?<&dq>
|
- ~run textbox_write def.player:<player> def.queue:<queue> def.line3s:<&o><&dq>Where?<&dq>
|
||||||
- ~run textbox_write def.player:<player> def.queue:<queue> "def.line3s:<&o><&dq>Dunno. Do you want to come?<&dq>"
|
- ~run textbox_write def.player:<player> def.queue:<queue> "def.line3s:<&o><&dq>Dunno. Do you want to come?<&dq>"
|
||||||
- ~run textbox_write def.player:<player> def.queue:<queue> "def.line3s:<&o><&dq>Yes,<&dq> I said without thinking."
|
- ~run textbox_write def.player:<player> def.queue:<queue> "def.line3s:<&o><&dq>Yes,<&dq> I said without thinking."
|
||||||
|
- run storyboard_player_end_atomic_sequence def.queue:<queue> def.player:<player>
|
||||||
|
|
||||||
# Cirno
|
# Cirno
|
||||||
intro_interact_cirno:
|
intro_interact_cirno:
|
||||||
@@ -38,8 +40,10 @@ intro_interact_cirno_task:
|
|||||||
debug: false
|
debug: false
|
||||||
type: task
|
type: task
|
||||||
script:
|
script:
|
||||||
|
- run storyboard_player_begin_atomic_sequence def.queue:<queue> def.player:<player>
|
||||||
- ~run textbox_write def.player:<player> def.queue:<queue> "def.line3s:A quality, soft plushie of a beloved$$nlcharacter."
|
- ~run textbox_write def.player:<player> def.queue:<queue> "def.line3s:A quality, soft plushie of a beloved$$nlcharacter."
|
||||||
- ~run textbox_write def.player:<player> def.queue:<queue> "def.line3s:It seems familiar, as if there are a$$nlsubstantial amount of images circulating$$nlaround with this character."
|
- ~run textbox_write def.player:<player> def.queue:<queue> "def.line3s:It seems familiar, as if there are a$$nlsubstantial amount of images circulating$$nlaround with this character."
|
||||||
|
- run storyboard_player_end_atomic_sequence def.queue:<queue> def.player:<player>
|
||||||
|
|
||||||
# Laptop
|
# Laptop
|
||||||
intro_interact_laptop:
|
intro_interact_laptop:
|
||||||
@@ -58,6 +62,7 @@ intro_interact_laptop_task:
|
|||||||
debug: false
|
debug: false
|
||||||
type: task
|
type: task
|
||||||
script:
|
script:
|
||||||
|
- run storyboard_player_begin_atomic_sequence def.queue:<queue> def.player:<player>
|
||||||
- ~run textbox_write def.player:<player> def.queue:<queue> "def.line3s:It looks like a game is booted up.$$nlYou can see a city, and it looks like..."
|
- ~run textbox_write def.player:<player> def.queue:<queue> "def.line3s:It looks like a game is booted up.$$nlYou can see a city, and it looks like..."
|
||||||
- ~run textbox_write def.player:<player> def.queue:<queue> "def.line3s:. . ."
|
- ~run textbox_write def.player:<player> def.queue:<queue> "def.line3s:. . ."
|
||||||
- ~run textbox_write def.player:<player> def.queue:<queue> "def.line3s:It's <bold>you!$$nl. . .$$nlWell, it's your character."
|
- ~run textbox_write def.player:<player> def.queue:<queue> "def.line3s:It's <bold>you!$$nl. . .$$nlWell, it's your character."
|
||||||
@@ -73,6 +78,11 @@ intro_interact_laptop_task_name_callback:
|
|||||||
script:
|
script:
|
||||||
- define __player <[player]>
|
- define __player <[player]>
|
||||||
- define name <[input].substring[1,24]>
|
- define name <[input].substring[1,24]>
|
||||||
|
- if <server.flag[character_rpnames].contains[<[name]>]>:
|
||||||
|
- narrate targets:<[player]> "<&c>That RP name is already taken. Try a different one!"
|
||||||
|
- wait 1s
|
||||||
|
- run anvil_input def.player:<player> "def.prompt:Character Name" def.callback:intro_interact_laptop_task_name_callback
|
||||||
|
- stop
|
||||||
- execute as_player player:<[player]> "rpname <[name]>"
|
- execute as_player player:<[player]> "rpname <[name]>"
|
||||||
- ~run textbox_write def.player:<player> def.queue:<queue> def.line3s:<[name]>
|
- ~run textbox_write def.player:<player> def.queue:<queue> def.line3s:<[name]>
|
||||||
- ~run textbox_write def.player:<player> def.queue:<queue> "def.line3s:How nice!"
|
- ~run textbox_write def.player:<player> def.queue:<queue> "def.line3s:How nice!"
|
||||||
@@ -197,3 +207,4 @@ intro_interact_laptop_task_role_callback:
|
|||||||
- adjust <player> show_to_players
|
- adjust <player> show_to_players
|
||||||
- flag <player> intro:done
|
- flag <player> intro:done
|
||||||
- execute as_player player:<player> spawn
|
- execute as_player player:<player> spawn
|
||||||
|
- run storyboard_player_end_atomic_sequence def.queue:<queue> def.player:<player>
|
||||||
|
|||||||
@@ -60,6 +60,37 @@ storyboard_player_unfreeze:
|
|||||||
- adjust <player> walk_speed:<player.flag[storyboard_freeze_speed]>
|
- adjust <player> walk_speed:<player.flag[storyboard_freeze_speed]>
|
||||||
- flag <player> storyboard_freeze_speed:!
|
- flag <player> storyboard_freeze_speed:!
|
||||||
|
|
||||||
|
# Marks the script after this task as an atomic sequence, meaning that
|
||||||
|
# the script either fully completes or is restored back to this point.
|
||||||
|
# This task does not ensure the atomicity, instead it will block any
|
||||||
|
# futher executions of the given script (deduced from the queue) until
|
||||||
|
# storyboard_player_end_atomic_sequence is called, or until the player
|
||||||
|
# logs off (which basically negates the atomicity). The developer must
|
||||||
|
# ensure that the script enclosed by the begin and end tasks is atomic.
|
||||||
|
storyboard_player_begin_atomic_sequence:
|
||||||
|
debug: false
|
||||||
|
type: task
|
||||||
|
definitions: queue|player
|
||||||
|
script:
|
||||||
|
- if <[player].flag[storyboard_atomic].if_null[<map[]>].contains[<[queue].script.name>]>:
|
||||||
|
- queue <[queue]> stop
|
||||||
|
- stop
|
||||||
|
- flag <[player]> storyboard_atomic:<[player].flag[storyboard_atomic].if_null[<map[]>].with[<[queue].script.name>].as[<util.time_now>]>
|
||||||
|
|
||||||
|
# Ends the atomic sequence above this task. See the sibling task
|
||||||
|
# storyboard_player_begin_atomic_sequence for more details.
|
||||||
|
storyboard_player_end_atomic_sequence:
|
||||||
|
debug: false
|
||||||
|
type: task
|
||||||
|
definitions: queue|player
|
||||||
|
script:
|
||||||
|
- if !<[player].flag[storyboard_atomic].if_null[<map[]>].contains[<[queue].script.name>]>:
|
||||||
|
- debug error "Tried ending storyboard atomic sequence <[queue].script.name> before storyboard_player_begin_atomic_sequence was called! (Player UUID <[player].uuid>)"
|
||||||
|
- stop
|
||||||
|
- waituntil !<player.has_flag[textbox_state]>
|
||||||
|
- wait 5t
|
||||||
|
- flag <[player]> storyboard_atomic:<[player].flag[storyboard_atomic].if_null[<map[]>].exclude[<[queue].script.name>]>
|
||||||
|
|
||||||
## Internal only!
|
## Internal only!
|
||||||
storyboard_player_freeze_check:
|
storyboard_player_freeze_check:
|
||||||
debug: false
|
debug: false
|
||||||
@@ -68,3 +99,12 @@ storyboard_player_freeze_check:
|
|||||||
on player joins:
|
on player joins:
|
||||||
- if <player.has_flag[storyboard_freeze_speed]>:
|
- if <player.has_flag[storyboard_freeze_speed]>:
|
||||||
- run storyboard_player_unfreeze def.player:<player>
|
- run storyboard_player_unfreeze def.player:<player>
|
||||||
|
|
||||||
|
storyboard_player_atomic_sequence_disconnect_handler:
|
||||||
|
debug: false
|
||||||
|
type: world
|
||||||
|
events:
|
||||||
|
on player quit:
|
||||||
|
- flag <player> storyboard_atomic:!
|
||||||
|
on player joins:
|
||||||
|
- flag <player> storyboard_atomic:!
|
||||||
|
|||||||
@@ -4,7 +4,10 @@ tabcomplete_config:
|
|||||||
groups:
|
groups:
|
||||||
default:
|
default:
|
||||||
commands:
|
commands:
|
||||||
|
# please keep these here...
|
||||||
- plugins
|
- plugins
|
||||||
|
- denizenclickable
|
||||||
|
# anything else
|
||||||
- sit
|
- sit
|
||||||
- lay
|
- lay
|
||||||
- crawl
|
- crawl
|
||||||
|
|||||||
Reference in New Issue
Block a user