"The Void" Tutorial

This in-game tutorial introduced players to the level clearing functionality of "The Void". In this tutorial, players are tasked with killing a set number of monsters before being tasked with defeating the final boss. Upon defeating the boss, the tutorial ends and the player is rewarded.

See Script Below

display_name: '&5Void Intro Quest'

#permission_start_restriction: start.interactive.tutorial

completion:
  max_completions: 999

description: 
  - Introduce players to The Void with an interactive quest that covers the
  - fundamental systems that make up the gameplay experience

status_items:
  AVAILABLE:
    type: EMERALD
    name: '&aVoid Intro - Available'
    lore: 
      - '&aObjective: &7An introduction to the Void!.'
      - '&7>'
      - '&e&lEstimated Time:'
      - '&710 Minutes'
  PROGRESS:
    type: SUNFLOWER
    name: '&aVoid Intro - In Progress'
    lore: 
      - '&aObjective: &7An introduction to the Void!.'
      - '&7>'
      - '&e&lEstimated Time:'
      - '&710 Minutes'
    enchantments:
      damage_all: 1
    flags: HIDE_ENCHANTS
  UNAVAILABLE:
    type: BARRIER
    name: '&cVoid Intro - Unavailable'
    lore: 
      - '&aObjective: &7An introduction to the Void!.'
      - '&7>'
      - '&e&lEstimated Time:'
      - '&710 Minutes'
  COMPLETED:
    type: LIME_STAINED_GLASS_PANE
    name: '&aVoid Intro - Completed'
    lore: 
      - '&aObjective: &7An introduction to the Void!.'
      - '&7>'
      - '&e&lEstimated Time:'
      - '&710 Minutes'

branches:

  main:
    starts_at: saveatoms #dialogue_1
    starts_directly: true
    objects:

      saveatoms:
        type: SERVER_LOGIC_VARIABLE
        goto: OBJECT 00_start_tutorialtp
        variable: CurrentAtoms
        value_formula: '%xprison_atoms_raw%'

      00_start_tutorialtp:
        hide_chat: true
        type: SERVER_ACTIONS
        actions: 
          - PERFORM_COMMAND lp user %player_name% parent add intro
          - PERFORM_COMMAND lp user %player_name% parent remove default
          - PERFORM_COMMAND lp user %player_name% permission set progress.interactive.rewards false
          - PERFORM_COMMAND saveinventory %player_name%
          - WAIT_TICKS 10
          - PERFORM_COMMAND setchannel %player_name% tutorial
          - PERFORM_COMMAND lp user %player_name% permission unset intro.mobpit.access
          - PERFORM_COMMAND lp user %player_name% permission unset intro.boss.path  
          - PERFORM_COMMAND lp user %player_name% permission unset intro.boss.access 
          - PERFORM_COMMAND lp user %player_name% permission set progress.milestones false
          - WAIT_TICKS 10
          - PERFORM_COMMAND clear %player_name% **
          - PERFORM_COMMAND warp intro %player_name%
          - WAIT_TICKS 20
          - PERFORM_COMMAND qc gpson %player_name%
          - PERFORM_COMMAND kit give StarterKit %player_name%
          - SEND_MESSAGE &0
          - 'SEND_MESSAGE &a&lInteractive Void Intro Quest Starting...'
          - SEND_MESSAGE &0
          - WAIT_TICKS 60
          - SEND_SOUND BLOCK_NOTE_BLOCK_PLING
          - SEND_SOUND ENTITY_VILLAGER_AMBIENT
          - 'SEND_MESSAGE &a> &7Chat is disabled while in the Quest.'
          - SEND_MESSAGE &0
          - WAIT_TICKS 60
          - 'SEND_MESSAGE &a> &7Failure to proceed in the quest will cancel the quest.'
          - SEND_MESSAGE &0
          - WAIT_TICKS 60
          - 'SEND_MESSAGE &a> &7You must complete it all the way through or your progress will not be saved.'
          - SEND_MESSAGE &0
          - WAIT_TICKS 60
          - 'SEND_MESSAGE &a> &7&oIf you become stuck at any point, type &c&oendtutorial&7.'
          - SEND_MESSAGE &0
          - WAIT_TICKS 100
          - SEND_SOUND BLOCK_NOTE_BLOCK_PLING
          - 'SEND_MESSAGE &8[&e&lIntro&8] &aConfirm start of Intro Quest?'
          - 'SEND_MESSAGE &7&o (Select an option in chat)'
          - SEND_MESSAGE &0
        goto: OBJECT 00_start_diverge
        time_limit:
          duration: 3 minute
          fail_goto: BRANCH branch_timed_out

      00_start_diverge:
        type: DIVERGE_CHAT
        hide_chat: true
        choices:
          no:
            text: '&c&lNO'
            goto: OBJECT select_end_quest
          yes:
            text: '&a&lYES'
            goto: OBJECT start
        repeat_delay: 15 SECOND
        time_limit:
          duration: 3 minute
          fail_goto: BRANCH branch_timed_out

      start:
        type: SERVER_ACTIONS
        hide_chat: true
        goto: OBJECT dialogue_1
        #      progress_conditions:
        #        conditions:
        #          a:
        #            type: POSITION
        #            position:
        #              type: WORLDGUARD_REGION_INSIDE
        #              world: NewSpawnWorld
        #              region: intro
        actions: 
          - SEND_SOUND BLOCK_PORTAL_TRAVEL
          - SEND_MESSAGE &0
          - 'SEND_MESSAGE &5&l&oInterdimensional Anomaly...'
          - 'SEND_MESSAGE &7&oEnergy levels unstable...'
          - SEND_MESSAGE &0

      dialogue_1:
        type: SERVER_ACTIONS
        hide_chat: true
        goto: OBJECT mob_pit_portal
        progress_conditions:
          conditions:
            a:
              type: POSITION
              position:
                type: WORLDGUARD_REGION_INSIDE
                world: world_the_end
                region: premobpit
        checkpoint:
          save_location: true
          save_specific_location: 'world_the_end,-542,58,-316,-125,0'
          save_branches: true
          save_individual_branches: false
          save_model_variables: false
          restore_on_respawn: INDIVIDUAL
          restore_on_connect: INDIVIDUAL
          restore_on_resume: INDIVIDUAL
        # this is the perm that allows the player down into the pit to kill 50 zombies
        actions: 
          - SEND_SOUND BLOCK_NOTE_BLOCK_PLING
          - SEND_MESSAGE &0
          - SEND_MESSAGE &e&lVOID INTRO INCOMING
          - SEND_MESSAGE &0
          - WAIT_TICKS 80
          - SEND_SOUND ENTITY_VILLAGER_HURT
          - 'SEND_MESSAGE &8[&e&lNPC&8] &aSnorky &e» &b%player_name%,&7 we need your help!'
          - SEND_MESSAGE &0
          - WAIT_TICKS 80
          - SEND_SOUND ENTITY_VILLAGER_HURT
          - 'SEND_MESSAGE &8[&e&lNPC&8] &aSnorky &e» &5The Void&7 is overflowing with evil creatures, and it''s overwhelming our soldiers!'
          - SEND_MESSAGE &0
          - WAIT_TICKS 80
          - SEND_SOUND ENTITY_VILLAGER_HURT
          - 'SEND_MESSAGE &8[&e&lNPC&8] &aSnorky &e» &7Go down into the pit and kill off some of the mobs, that way we might have a chance of holding them off for another day...'
          - SEND_MESSAGE &0
          - WAIT_TICKS 80
          - SEND_SOUND ENTITY_VILLAGER_HURT
          - 'SEND_MESSAGE &8[&e&lNPC&8] &aSnorky &e» &7Equip your gear and get down there! Time is running out!'
          - SEND_MESSAGE &0
          - WAIT_TICKS 80
          - SEND_SOUND ITEM_TOTEM_USE
          - SEND_MESSAGE &a&lFIRST OBJECTIVE
          - SEND_MESSAGE &bKill 25 Void Zombies
          - SEND_SOUND BLOCK_NOTE_BLOCK_PLING
          - 'SEND_TITLE 20 40 20 &a&lFIRST OBJECTIVE,&bKill 25 Void Zombies'
          - SEND_PARTICLES FIREWORKS_SPARK 3 true
          - SEND_MESSAGE &0
          - PERFORM_COMMAND lp user %player_name% permission set intro.mobpit.access true prison
        gps:
          enabled: true
          mode: GPS
          custom_point: INTROSAFETY

      mob_pit_portal:
        type: NONE
        hide_chat: true
        goto: OBJECT mob_kills_1
        progress_conditions:
          conditions:
            a:
              type: POSITION
              position:
                type: WORLDGUARD_REGION_INSIDE
                world: world_the_end
                region: inmobpit
        gps:
          enabled: true
          mode: GPS
          custom_point: mobpitportal
        time_limit:
          duration: 3 minute
          fail_goto: BRANCH branch_timed_out

      mob_kills_1:
        type: PLAYER_MYTHICMOBS_MOBS_KILL
        name_long: 'Kill Mobs.'
        name_short: '&7Kill Mobs.'
        hide_chat: true
        goto: OBJECT dialogue_2
        goals:
          a:
            mobs: VoidTutorialZombie
            goal: 25
        progress_notify:
          message: '&5&lKill Void Zombies: &a{objective_progression:main:mob_kills_1:a}&7/&a{objective_goal:main:mob_kills_1:a}'
        progress_notify_delay: 5 SECOND
        update_notify:
          message: '&e&l&oKill &5&l&oVoid Zombies &e&l&oin the pit, or type &c&l&oendtutorial&e&l&o to cancel the intro...'
        update_notify_delay: 10 SECOND
        time_limit:
          duration: 10 minute
          fail_goto: BRANCH branch_timed_out

      dialogue_2:
        type: SERVER_ACTIONS
        hide_chat: true
        goto: OBJECT leave_mob_pit
        actions: 
          - SEND_SOUND UI_TOAST_IN
          - SEND_SOUND ENTITY_PLAYER_LEVELUP
          - 'SEND_TITLE 20 40 20 &a&lOBJETIVE COMPLETE,&fKill 25 Void Zombies'
          - SEND_PARTICLES FIREWORKS_SPARK 3 true
          - SEND_SOUND ENTITY_VILLAGER_YES
          - SEND_MESSAGE &6&lOBJECTIVE COMPLETE
          - SEND_MESSAGE &bKill 25 Void Zombies
          - SEND_MESSAGE &7
          - WAIT_TICKS 60
          - SEND_SOUND ENTITY_VILLAGER_HURT
          - 'SEND_MESSAGE &8[&e&lNPC&8] &aSnorky &e» &7A true hero! That should be enough to keep our soldiers in the fight for a little while longer.'
          - SEND_MESSAGE &0
          - WAIT_TICKS 80
          - SEND_SOUND ENTITY_VILLAGER_HURT
          - 'SEND_MESSAGE &8[&e&lNPC&8] &aSnorky &e» &7Hurry up and &e&oGet Back to Safety&7!'
          - SEND_MESSAGE &0
          - WAIT_TICKS 80
          - SEND_SOUND BLOCK_NOTE_BLOCK_PLING
          - 'SEND_TITLE 20 40 20 &a&lNEXT OBJECTIVE,&fGet Back to Safety!'
          - SEND_MESSAGE &0
          - SEND_MESSAGE &a&lNEXT OBJECTIVE
          - SEND_MESSAGE &eGet Back to Safety
          - SEND_PARTICLES FIREWORKS_SPARK 3 true
          - SEND_MESSAGE &0

      leave_mob_pit:
        type: NONE
        hide_chat: true
        goto: OBJECT safety
        progress_conditions:
          conditions:
            a:
              type: POSITION
              position:
                type: WORLDGUARD_REGION_INSIDE
                world: world_the_end
                region: premobpit
        gps:
          enabled: true
          mode: GPS
          custom_point: leavemobpit
        time_limit:
          duration: 3 minute
          fail_goto: BRANCH branch_timed_out

      safety:
        type: SERVER_ACTIONS
        hide_chat: true
        goto: OBJECT boss_diverge
        progress_conditions:
          conditions:
            a:
              type: POSITION
              position:
                type: WORLDGUARD_REGION_INSIDE
                world: world_the_end
                region: premobpit
        actions: 
          - SEND_SOUND UI_TOAST_IN
          - SEND_SOUND ENTITY_PLAYER_LEVELUP
          - 'SEND_TITLE 20 40 20 &a&lOBJECTIVE COMPLETE,&eGet Back to Safety'
          - SEND_PARTICLES FIREWORKS_SPARK 3 true
          - PERFORM_COMMAND lp user %player_name% permission set intro.mobpit.access false 
          - SEND_MESSAGE &0
          - SEND_SOUND ENTITY_VILLAGER_YES
          - SEND_MESSAGE &6&lOBJECTIVE COMPLETE
          - SEND_MESSAGE &eGet Back to Safety
          - SEND_MESSAGE &0
          - WAIT_TICKS 80
          - SEND_SOUND ENTITY_VILLAGER_HURT
          - 'SEND_MESSAGE &8[&e&lNPC&8] &aSnorky &e» &7That was a close one! Glad you made it back in one piece.'
          - SEND_MESSAGE &0
          - WAIT_TICKS 80
          - SEND_SOUND ENTITY_VILLAGER_HURT
          - 'SEND_MESSAGE &8[&e&lNPC&8] &aSnorky &e» &7Those were some impressive fighting skills down there...'
          - SEND_MESSAGE &0
          - WAIT_TICKS 80
          - 'SEND_MESSAGE &8[&e&lNPC&8] &aSnorky &e» &7For future reference, you can keep track of your progress in any area of the Void by typing &5/void&f.'
          - SEND_MESSAGE &0
          - WAIT_TICKS 120
          - SEND_SOUND ENTITY_VILLAGER_HURT
          - 'SEND_MESSAGE &8[&e&lNPC&8] &aSnorky &e» &7Now, you might be of great assistance with the &4Boss&7 lurking ahead.'
          - SEND_MESSAGE &0
          - WAIT_TICKS 80
          - SEND_SOUND ENTITY_VILLAGER_HURT
          - 'SEND_MESSAGE &8[&e&lNPC&8] &aSnorky &e» &7Do you think you could help out with a bigger, more dangerous problem?'
          - SEND_MESSAGE &0
          - WAIT_TICKS 80
          - SEND_SOUND BLOCK_NOTE_BLOCK_PLING
          - 'SEND_MESSAGE &e&lChoose an Option:'
          - SEND_MESSAGE &0
        gps:
          enabled: true
          mode: GPS
          custom_point: INTROSAFETY
        time_limit:
          duration: 3 minute
          fail_goto: BRANCH branch_timed_out

      boss_diverge:
        type: DIVERGE_CHAT
        choices:
          no:
            text: '&cI don''t know, that sounds too dangerous for me...'
            goto: OBJECT dialogue_3_2
          yes:
            text: '&aOf course I can help! Where do I need to go!?'
            goto: OBJECT dialogue_3_1
        repeat_delay: 10 SECOND
        update_notify:
          message: '&e&lChoose an Option, or type &c&l&oendtutorial&e&l&o to cancel the intro...'
        update_notify_delay: 10 SECOND
        time_limit:
          duration: 3 minute
          fail_goto: BRANCH branch_timed_out

      dialogue_3_1:
        type: SERVER_ACTIONS
        hide_chat: true
        goto: OBJECT 01_upgrade
        #         #- PERFORM_COMMAND give %player_name% diamond_sword 1
        actions: 
          - SEND_MESSAGE &0
          - SEND_SOUND ENTITY_VILLAGER_YES
          - 'SEND_MESSAGE &8[&e&lNPC&8] &aSnorky &e» &7How brave of you! You might just have the potential to turn the tides of this war...'
          - SEND_MESSAGE &0
          - WAIT_TICKS 80
          - SEND_SOUND ENTITY_VILLAGER_HURT
          - 'SEND_MESSAGE &8[&e&lNPC&8] &aSnorky &e» &7You''re going to need to upgrade your &aSword&7 if you want to stand a chance against the &4Boss&7.'
          - SEND_MESSAGE &0
          - WAIT_TICKS 80
          - SEND_SOUND ENTITY_VILLAGER_HURT
          - 'SEND_MESSAGE &8[&e&lNPC&8] &aSnorky &e» &7I''m giving you some &bAtoms &7now so you can upgrade your gear.'
          - SEND_MESSAGE &0
          - WAIT_TICKS 80
          - SEND_SOUND ENTITY_VILLAGER_HURT
          - 'SEND_MESSAGE &8[&e&lNPC&8] &aSnorky &e» &7Go ahead and type &b/upgrade &7while holding your sword, and equip it with &aSharpness III&7.'
          - SEND_MESSAGE &0
          - WAIT_TICKS 80
          - SEND_SOUND BLOCK_NOTE_BLOCK_PLING
          - 'SEND_TITLE 20 40 20 &a&lNEW OBJECTIVE,&bUpgrade your Sword!'
          - SEND_MESSAGE &0
          - SEND_MESSAGE &a&lNEW OBJECTIVE
          - 'SEND_MESSAGE &7Type &b/upgrade&7 with your &aSword&7 in your main hand, and upgrade it with &aSharpness III&7.'
          - SEND_MESSAGE &0
          - PERFORM_COMMAND atoms add %player_name% 25000

      dialogue_3_2:
        type: SERVER_ACTIONS
        hide_chat: true
        goto: OBJECT 01_upgrade
        #         #- PERFORM_COMMAND give %player_name% diamond_sword 1
        actions: 
          - SEND_MESSAGE &7
          - SEND_SOUND ENTITY_VILLAGER_HURT
          - 'SEND_MESSAGE &8[&e&lNPC&8] &aSnorky &e» &7No need to worry. I believe in you!'
          - SEND_MESSAGE &0
          - WAIT_TICKS 80
          - SEND_SOUND ENTITY_VILLAGER_HURT
          - 'SEND_MESSAGE &8[&e&lNPC&8] &aSnorky &e» &7As long as you use strong gear, you''ll be great in battle!'
          - SEND_MESSAGE &0
          - WAIT_TICKS 80
          - SEND_SOUND ENTITY_VILLAGER_HURT
          - 'SEND_MESSAGE &8[&e&lNPC&8] &aSnorky &e» &7I''m giving you some &bAtoms &7now so you can upgrade your gear.'
          - SEND_MESSAGE &0
          - WAIT_TICKS 80
          - SEND_SOUND ENTITY_VILLAGER_HURT
          - 'SEND_MESSAGE &8[&e&lNPC&8] &aSnorky &e» &7Go ahead and type &b/upgrade &7while holding your sword, and equip it with &aSharpness III&7.'
          - SEND_MESSAGE &0
          - WAIT_TICKS 80
          - SEND_SOUND BLOCK_NOTE_BLOCK_PLING
          - 'SEND_TITLE 20 40 20 &a&lNEW OBJECTIVE,&bUpgrade your Sword!'
          - SEND_MESSAGE &0
          - SEND_MESSAGE &a&lNEW OBJECTIVE
          - 'SEND_MESSAGE &7Type &b/upgrade&7 with your &aSword&7 in your main hand, and upgrade it with &aSharpness III&7.'
          - SEND_MESSAGE &0
          - PERFORM_COMMAND atoms add %player_name% 25000

      01_upgrade:
        type: PLAYER_ITEMS_REQUIRE
        hide_chat: true
        goto: OBJECT dialogue_4
        items:
          items:
            a:
              item:
                type: DIAMOND_SWORD
                enchantments:
                  damage_all: 3
                flags: HIDE_ENCHANTS
              #name: '&9&m]-&7&m--&8&m--&9 Atomic-Sword &8&m--&7&m--&9&m-['
              check: SameBase
          count: 1
        #error_message: '&cUse &a/upgrade&c to upgrade your &aSword&c to &eSharpness III&c to face the boss!'
        update_notify:
          message: '&b&l&oUpgrade your &a&l&oSword &b&l&owith &a&l&oSharpness III&b&l&o using &b&l&o/upgrade&e&l&o, or type &c&l&oendtutorial&e&l&o to cancel the intro...'
        update_notify_delay: 10 SECOND
        time_limit:
          duration: 5 minute
          fail_goto: BRANCH branch_timed_out

      dialogue_4:
        type: SERVER_ACTIONS
        hide_chat: true
        goto: OBJECT back_into_mob_pit
        #this is the perm that lets a player teleport up the rock wall
        actions: 
          - SEND_SOUND UI_TOAST_IN
          - SEND_SOUND ENTITY_PLAYER_LEVELUP
          - 'SEND_TITLE 20 40 20 &a&lOBJECTIVE COMPLETE,&bUpgrade your Sword!'
          - SEND_PARTICLES FIREWORKS_SPARK 3 true
          - SEND_MESSAGE &0
          - SEND_SOUND ENTITY_VILLAGER_YES
          - SEND_MESSAGE &6&lOBJECTIVE COMPLETE
          - 'SEND_MESSAGE &bUpgrade Your Sword!'
          - SEND_MESSAGE &0
          - WAIT_TICKS 60
          - SEND_SOUND ENTITY_VILLAGER_HURT
          - 'SEND_MESSAGE &8[&e&lNPC&8] &aSnorky &e» &7Well done &b%player_name%&7! With that new sword, you''ll really be able to show that boss &7&owho''s boss&7...'
          - SEND_MESSAGE &0
          - WAIT_TICKS 80
          - SEND_SOUND ENTITY_VILLAGER_HURT
          - 'SEND_MESSAGE &8[&e&lNPC&8] &aSnorky &e» &7If you make it out of this warzone alive, you will be able to equip other enchants using that same upgrade menu.'
          - SEND_MESSAGE &0
          - WAIT_TICKS 100
          - SEND_SOUND ENTITY_VILLAGER_HURT
          - 'SEND_MESSAGE &8[&e&lNPC&8] &aSnorky &e» &7Now - &e&oFind Your Way to the Rock Wall &7- the soldiers have set up a &5teleporter &7to ascend it.'
          - SEND_MESSAGE &0
          - WAIT_TICKS 80
          - SEND_SOUND ENTITY_VILLAGER_HURT
          - 'SEND_MESSAGE &8[&e&lNPC&8] &aSnorky &e» &7From there - &6&oTraverse the Stalagmites&7 to reach the &4Boss''s Lair.'
          - SEND_MESSAGE &0
          - WAIT_TICKS 80
          - SEND_SOUND ENTITY_VILLAGER_HURT
          - 'SEND_MESSAGE &8[&e&lNPC&8] &aSnorky &e» &7I have a lot of vested faith in you... show us all what you are capable of!'
          - PERFORM_COMMAND lp user %player_name% permission set intro.boss.path true 
          - PERFORM_COMMAND lp user %player_name% permission set intro.mobpit.access true 
          - SEND_MESSAGE &0
          - WAIT_TICKS 80
          - SEND_SOUND BLOCK_NOTE_BLOCK_PLING
          - 'SEND_TITLE 20 40 20 &a&lNEXT OBJECTIVE,&fLocate the Boss...'
          - SEND_MESSAGE &0
          - SEND_MESSAGE &a&lNEXT OBJECTIVE
          - 'SEND_MESSAGE &4Locate the Boss...'
          - SEND_PARTICLES FIREWORKS_SPARK 3 true
          - SEND_MESSAGE &0

      back_into_mob_pit:
        type: NONE
        hide_chat: true
        goto: OBJECT rock_wall_teleporter
        progress_conditions:
          conditions:
            a:
              type: POSITION
              position:
                type: WORLDGUARD_REGION_INSIDE
                world: world_the_end
                region: inmobpit
        gps:
          enabled: true
          mode: GPS
          custom_point: mobpitportal
        time_limit:
          duration: 3 minute
          fail_goto: BRANCH branch_timed_out

      rock_wall_teleporter:
        type: NONE
        hide_chat: true
        goto: OBJECT dialogue_5
        progress_conditions:
          conditions:
            a:
              type: POSITION
              position:
                type: WORLDGUARD_REGION_INSIDE
                world: world_the_end
                region: intro_parkourpit
        gps:
          enabled: true
          mode: GPS
          custom_point: rockwallportal
        time_limit:
          duration: 3 minute
          fail_goto: BRANCH branch_timed_out

      dialogue_5:
        type: SERVER_ACTIONS
        hide_chat: true
        goto: OBJECT dialogue_6
        progress_conditions:
          conditions:
            a:
              type: POSITION
              position:
                type: WORLDGUARD_REGION_INSIDE
                world: world_the_end
                region: intro_parkourpit
        checkpoint:
          save_location: true
          save_branches: true
          restore_on_respawn: INDIVIDUAL
          restore_on_connect: INDIVIDUAL
          restore_on_resume: INDIVIDUAL
        #this is the perm that allows a player to go into the boss arena and fight
        actions: 
          - SEND_SOUND ENTITY_VILLAGER_HURT
          - 'SEND_MESSAGE &8[&e&lNPC&8] &aSnorky &e» &7You''re almost there &b%player_name%!'
          - SEND_MESSAGE &0
          - WAIT_TICKS 80
          - SEND_SOUND ENTITY_VILLAGER_HURT
          - 'SEND_MESSAGE &8[&e&lNPC&8] &aSnorky &e» &eParkour your way across the stalagmites &7to get to the boss''s lair!'
          - SEND_MESSAGE &0

      dialogue_6:
        type: SERVER_ACTIONS
        hide_chat: true
        goto: OBJECT dialogue_7
        progress_conditions:
          conditions:
            a:
              type: POSITION
              position:
                type: WORLDGUARD_REGION_INSIDE
                world: world_the_end
                region: bossfrontdoor
        checkpoint:
          save_location: true
          save_branches: true
          restore_on_respawn: INDIVIDUAL
          restore_on_connect: INDIVIDUAL
          restore_on_resume: INDIVIDUAL
        #this is the perm that allows a player to go into the boss arena and fight
        actions: 
          - SEND_SOUND UI_TOAST_IN
          - SEND_SOUND ENTITY_PLAYER_LEVELUP
          - 'SEND_TITLE 20 40 20 &a&lOBJECTIVE COMPLETE,&fLocate the Boss...'
          - SEND_PARTICLES FIREWORKS_SPARK 3 true
          - SEND_SOUND ENTITY_VILLAGER_YES
          - SEND_MESSAGE &6&lOBJECTIVE COMPLETE
          - 'SEND_MESSAGE &bLocate the Boss...'
          - SEND_MESSAGE &0
        gps:
          enabled: true
          mode: GPS
          custom_point: FRONTBOSSLAIR
        time_limit:
          duration: 10 minute
          fail_goto: BRANCH branch_timed_out

      dialogue_7:
        type: SERVER_ACTIONS
        hide_chat: true
        goto: OBJECT await_boss_arena
        actions: 
          - WAIT_TICKS 60
          - SEND_SOUND ENTITY_VILLAGER_HURT
          - 'SEND_MESSAGE &8[&e&lNPC&8] &aSnorky &e» &7You''re right there, &b%player_name%&7 - you can do this!'
          - SEND_MESSAGE &0
          - WAIT_TICKS 80
          - SEND_SOUND ENTITY_VILLAGER_HURT
          - 'SEND_MESSAGE &8[&e&lNPC&8] &aSnorky &e» &7Use the teleporter to get into the bosses lair.'
          - SEND_MESSAGE &0
          - WAIT_TICKS 80
          - SEND_SOUND ENTITY_VILLAGER_HURT
          - 'SEND_MESSAGE &8[&e&lNPC&8] &aSnorky &e» &7Good luck in your battle... we believe in you!'
          - SEND_MESSAGE &0
          - WAIT_TICKS 80
          - SEND_SOUND UI_TOAST_IN
          - SEND_SOUND ENTITY_PLAYER_LEVELUP
          - SEND_PARTICLES FIREWORKS_SPARK 3 true
          - 'SEND_TITLE 20 40 20 &a&lNEXT OBJECTIVE,&4Kill the Boss...'
          - SEND_MESSAGE &a&lNEXT OBJECTIVE
          - 'SEND_MESSAGE &4Kill the Boss!'
          - PERFORM_COMMAND lp user %player_name% permission set intro.boss.access true 
          - SEND_MESSAGE &0
        gps:
          enabled: true
          mode: GPS
          custom_point: FRONTBOSSLAIR

      await_boss_arena:
        type: NONE
        hide_chat: true
        goto: OBJECT 01_kill_boss
        progress_conditions:
          conditions:
            a:
              type: POSITION
              position:
                type: WORLDGUARD_REGION_INSIDE
                world: world_the_end
                region: introbossarenas
        gps:
          enabled: true
          mode: GPS
          custom_point: FRONTBOSSLAIR

      01_kill_boss:
        type: PLAYER_MYTHICMOBS_MOBS_KILL
        name_long: 'Kill Mobs.'
        name_short: '&7Kill Mobs.'
        hide_chat: true
        goto: OBJECT dialogue_8
        checkpoint:
          save_specific_location: 'world_the_end,-365,57,-339,0,0'
          save_location: true
          save_branches: true
          restore_on_respawn: INDIVIDUAL
          restore_on_connect: INDIVIDUAL
          restore_on_resume: INDIVIDUAL
        goals:
          a:
            mobs: IntroBoss
            goal: 1
        time_limit:
          duration: 30 minute
          fail_goto: BRANCH branch_timed_out

      dialogue_8:
        type: SERVER_ACTIONS
        hide_chat: true
        goto: OBJECT end_quest
        #this is the perm that allows a player to go into the boss arena and fight
        #  playerLeave:
        #    display_name: playerLeave
        #    starts_at: playerLeave
        #    objects:
        #      playerLeave:
        #        hide_chat: false
        #        goto: OBJECT cancel
        #        type: PLAYER_DISCONNECT
        #      cancel:
        #        type: NONE
        #        hide_chat: false
        #        hide_players: false
        #        goto: QUEST_CANCEL
        #  playerJoin:
        #    display_name: playerJoin
        #    starts_at: playerJoin
        #    objects:
        #      playerJoin:
        #        hide_chat: false
        #        hide_players: false
        #        goto: OBJECT wait
        #        type: PLAYER_CONNECT
        #      wait:
        #        hide_chat: false
        #        hide_players: false
        #        goto: OBJECT cancel
        #        type: SERVER_ACTIONS
        #        actions: [WAIT_TICKS 100]
        #      cancel:
        #        type: NONE
        #        hide_chat: false
        #        hide_players: false
        #        goto: QUEST_CANCEL
        #         #- SEND_SOUND ENTITY_VILLAGER_HURT
        #         #- 'SEND_MESSAGE &8[&e&lNPC&8] &aSnorky &e» &7We''ll be sending you a gift for all of the trouble!'
        #         #- SEND_MESSAGE &0
        #         #- WAIT_TICKS 80
        #         #- SEND_SOUND ENTITY_VILLAGER_HURT
        actions: 
          - SEND_SOUND UI_TOAST_IN
          - SEND_SOUND ENTITY_PLAYER_LEVELUP
          - 'SEND_TITLE 20 40 20 &a&lOBJECTIVE COMPLETE,&fKill the Boss!'
          - SEND_PARTICLES FIREWORKS_SPARK 3 true
          - SEND_SOUND ENTITY_VILLAGER_YES
          - SEND_MESSAGE &6&lOBJECTIVE COMPLETE
          - SEND_MESSAGE &bKill the Boss
          - SEND_MESSAGE &0
          - WAIT_TICKS 60
          - SEND_SOUND ENTITY_VILLAGER_HURT
          - PERFORM_COMMAND xbossfight stop %player_name%
          - PERFORM_COMMAND warp spawn %player_name%
          - PERFORM_COMMAND restoreinventory %player_name%
          - 'SEND_MESSAGE &8[&e&lNPC&8] &aSnorky &e» &7Well done &b%player_name%&7, you defeated the boss!'
          - SEND_MESSAGE &0
          - WAIT_TICKS 80
          - SEND_SOUND ENTITY_VILLAGER_HURT
          - 'SEND_MESSAGE &8[&e&lNPC&8] &aSnorky &e» &7You''ve helped the soldiers out tremendously with your true power and bravery.'
          - SEND_MESSAGE &0
          - WAIT_TICKS 80
          - SEND_SOUND ENTITY_VILLAGER_HURT
          - 'SEND_MESSAGE &8[&e&lNPC&8] &aSnorky &e» &7Thank you for the help!'
          - WAIT_TICKS 80
          - SEND_MESSAGE &0
          - 'SEND_MESSAGE &8[&e&lNPC&8] &aSnorky &e» &7Good luck in the prison, prisoner... you should be just fine.'
          - SEND_MESSAGE &0

      end_quest:
        type: SERVER_ACTIONS
        hide_chat: false
        goto: QUEST_SUCCESS
        actions: 
          - PERFORM_COMMAND warp spawn %player_name%
          - PERFORM_COMMAND lp user %player_name% parent add default
          - PERFORM_COMMAND lp user %player_name% parent remove intro
          - PERFORM_COMMAND lp user %player_name% permission unset intro.boss.access 
          - PERFORM_COMMAND lp user %player_name% permission unset intro.boss.path 
          - PERFORM_COMMAND lp user %player_name% permission unset intro.mobpit.access 
          - PERFORM_COMMAND restoreinventory %player_name%
          - WAIT_TICKS 10
          - PERFORM_COMMAND setchannel %player_name% global
          - PERFORM_COMMAND atoms set %player_name% {variable:CurrentAtoms}
          - SEND_SOUND ENTITY_PLAYER_LEVELUP
          - SEND_MESSAGE &0
          - 'SEND_MESSAGE &a&lVOID INTRO COMPLETE!'
          - SEND_MESSAGE &0
          - WAIT_TICKS 80
          - 'SEND_MESSAGE &f&7Please refer &e&l/help&7 and &a&l/tutorials&7 to orient yourself on the server.'
          - SEND_MESSAGE &0
          - 'SEND_MESSAGE &7Be sure to join the &9&lDiscord&f!'
          - 'SEND_MESSAGE &9https://www.discord.gg/atomixnetwork'
          - PERFORM_COMMAND lp user %player_name% permission unset progress.milestones 
          - PERFORM_COMMAND lp user %player_name% permission set interactive.void.complete true
          - PERFORM_COMMAND lp user %player_name% permission unset progress.interactive.rewards 
          - SEND_MESSAGE &0


      select_end_quest:
        type: SERVER_ACTIONS
        hide_chat: false
        goto: QUEST_CANCEL
        #activators: [activator_auto]
        actions: 
          - PERFORM_COMMAND xbossfight stop %player_name%
          - PERFORM_COMMAND lp user %player_name% parent add default
          - PERFORM_COMMAND lp user %player_name% parent remove intro
          - PERFORM_COMMAND lp user %player_name% permission unset intro.boss.access 
          - PERFORM_COMMAND lp user %player_name% permission unset intro.boss.path 
          - PERFORM_COMMAND lp user %player_name% permission unset intro.mobpit.access 
          - PERFORM_COMMAND restoreinventory %player_name%
          - WAIT_TICKS 10
          - PERFORM_COMMAND setchannel %player_name% global
          - PERFORM_COMMAND atoms set %player_name% {variable:CurrentAtoms}
          - SEND_SOUND ENTITY_PLAYER_LEVELUP
          - SEND_MESSAGE &0
          - 'SEND_MESSAGE &c&lSERVER INTRO CANCELED!'
          - SEND_MESSAGE &0
          - PERFORM_COMMAND warp spawn %player_name%
          - PERFORM_COMMAND lp user %player_name% permission unset progress.milestones 
          - PERFORM_COMMAND lp user %player_name% permission unset progress.interactive.rewards 
          - SEND_MESSAGE &0

  branch_timed_out:
    starts_at: time_out_delay #dialogue_1
    starts_directly: false
    objects:

      time_out_delay:
        type: SERVER_ACTIONS
        hide_chat: true
        goto: OBJECT timed_out
        actions: 
          - WAIT_TICKS 100

      timed_out:
        type: SERVER_ACTIONS
        hide_chat: false
        goto: QUEST_CANCEL
        actions: 
          - PERFORM_COMMAND xbossfight stop %player_name%
          - PERFORM_COMMAND lp user %player_name% parent add default
          - PERFORM_COMMAND lp user %player_name% parent remove intro
          - PERFORM_COMMAND lp user %player_name% permission unset intro.boss.access 
          - PERFORM_COMMAND lp user %player_name% permission unset intro.boss.path 
          - PERFORM_COMMAND lp user %player_name% permission unset intro.mobpit.access 
          - PERFORM_COMMAND restoreinventory %player_name%
          - WAIT_TICKS 10
          - PERFORM_COMMAND setchannel %player_name% global
          - PERFORM_COMMAND atoms set %player_name% {variable:CurrentAtoms}
          - SEND_SOUND ENTITY_PLAYER_LEVELUP
          - SEND_MESSAGE &0
          - 'SEND_MESSAGE &c&lSERVER INTRO CANCELED!'
          - SEND_MESSAGE &0
          - PERFORM_COMMAND warp spawn %player_name%
          - PERFORM_COMMAND lp user %player_name% permission unset progress.milestones 
          - PERFORM_COMMAND lp user %player_name% permission unset progress.interactive.rewards 
          - SEND_MESSAGE &0

  cancel:
    display_name: cancel
    starts_at: cancel
    objects:

      cancel:
        hide_chat: true
        type: PLAYER_CHAT
        whitelist: [endtutorial, /endtutorial]
        goto: OBJECT end_quest_end
        update_notify:
          message: | 
            &r
            &8&l(&c&l!&8&l) &cYou are currently in the Interactive Void Tutorial. 
            &eCertain features and commands will not work while this is active. 
            &cType &e/endtutorial&c to exit the tutorial and return normal function.
            &r
        update_notify_delay: 30 SECOND

      end_quest_end:
        type: SERVER_ACTIONS
        hide_chat: false
        goto: QUEST_CANCEL
        #activators: [activator_auto]
        actions: 
          - PERFORM_COMMAND xbossfight stop %player_name%
          - PERFORM_COMMAND lp user %player_name% parent add default
          - PERFORM_COMMAND lp user %player_name% parent remove intro
          - PERFORM_COMMAND lp user %player_name% permission unset intro.boss.access 
          - PERFORM_COMMAND lp user %player_name% permission unset intro.boss.path 
          - PERFORM_COMMAND lp user %player_name% permission unset intro.mobpit.access 
          - PERFORM_COMMAND restoreinventory %player_name%
          - WAIT_TICKS 10
          - PERFORM_COMMAND setchannel %player_name% global
          - PERFORM_COMMAND atoms set %player_name% {variable:CurrentAtoms}
          - SEND_SOUND ENTITY_PLAYER_LEVELUP
          - SEND_MESSAGE &0
          - 'SEND_MESSAGE &c&lSERVER INTRO CANCELED!'
          - SEND_MESSAGE &0
          - WAIT_TICKS 20
          - PERFORM_COMMAND warp spawn %player_name%
          - PERFORM_COMMAND lp user %player_name% permission unset progress.milestones 
          - PERFORM_COMMAND lp user %player_name% permission unset progress.interactive.rewards 
          - SEND_MESSAGE &0

progress_notify_scoreboard: false

"The Prison" Tutorial

In this tutorial, players are introduced to the fundamental level progression functionality that yields experience and rewards. Players are tasked with mining to earn progress, upgrading their pickaxe, leveraging progress multipliers, and advancing through several levels.

See Script Below

display_name: '&aPrison Intro Quest'

completion:
  max_completions: 999

description: 
  - Bring players through an interactive tutorial where they learn to
  - mine resources, upgrade their pickaxe, and climb levels with progress boosters.

status_items:
  AVAILABLE:
    type: EMERALD
    name: '&aPrison Intro - Available'
    lore: 
      - '&aObjective: &7An introduction to the Prison!.'
      - '&7>'
      - '&e&lEstimated Time:'
      - '&710 Minutes'
  PROGRESS:
    type: SUNFLOWER
    name: '&aPrison Intro - In Progress'
    lore: 
      - '&aObjective: &7An introduction to the Prison!.'
      - '&7>'
      - '&e&lEstimated Time:'
      - '&710 Minutes'
    enchantments:
      damage_all: 1
    flags: HIDE_ENCHANTS
  UNAVAILABLE:
    type: BARRIER
    name: '&cPrison Intro - Unavailable'
    lore: 
      - '&aObjective: &7An introduction to the Prison!.'
      - '&7>'
      - '&e&lEstimated Time:'
      - '&710 Minutes'
  COMPLETED:
    type: LIME_STAINED_GLASS_PANE
    name: '&aPrison Intro - Completed'
    lore: 
      - '&aObjective: &7An introduction to the Prison!.'
      - '&7>'
      - '&e&lEstimated Time:'
      - '&710 Minutes'

branches:

  main:
    starts_at: saveatoms #dialogue_1
    starts_directly: true
    objects:

      saveatoms:
        type: SERVER_LOGIC_VARIABLE
        goto: OBJECT saveprogress
        variable: CurrentAtoms
        value_formula: '%xprison_atoms_raw%'

      saveprogress:
        type: SERVER_LOGIC_VARIABLE
        goto: OBJECT savelevel
        variable: CurrentProgress
        value_formula: '%vault_eco_balance_fixed%'

      savelevel:
        type: SERVER_LOGIC_VARIABLE
        goto: OBJECT savemultipliervalue
        variable: CurrentLevel
        value_formula: '%xprison_level%'

      savemultipliervalue:
        type: SERVER_LOGIC_VARIABLE
        goto: OBJECT savemultiplierminutes
        variable: CurrentMultiplier
        value_formula: '%multiplier_progress_amount%'

      savemultiplierminutes:
        type: SERVER_LOGIC_VARIABLE
        goto: OBJECT savetokens
        variable: CurrentMultiplierMinutes
        value_formula: '%multiplier_progress_duration%'

      savetokens:
        type: SERVER_LOGIC_VARIABLE
        goto: OBJECT 00_start_tutorialtp
        variable: CurrentTokens
        value_formula: '%tm_tokens%'

      00_start_tutorialtp:
        hide_chat: true
        type: SERVER_ACTIONS
        actions: 
          - PERFORM_COMMAND lp user %player_name% parent add prisonintro
          - PERFORM_COMMAND lp user %player_name% parent remove default
          - PERFORM_COMMAND lp user %player_name% permission set progress.interactive.rewards false
          - PERFORM_COMMAND saveinventory %player_name%
          - 'PERFORM_COMMAND warp prisonintro %player_name%'
          - PERFORM_COMMAND lp user %player_name% permission set progress.milestones false
          - WAIT_TICKS 10
          - PERFORM_COMMAND setchannel %player_name% tutorial
          - WAIT_TICKS 10
          - PERFORM_COMMAND clear %player_name% **
          - PERFORM_COMMAND asa setmultiplier %player_name% 0 1
          - PERFORM_COMMAND tm set %player_name% 0
          - PERFORM_COMMAND atoms set %player_name% 0
          - PERFORM_COMMAND eco reset %player_name%
          - PERFORM_COMMAND level set %player_name% 0
          - WAIT_TICKS 20
          - 'PERFORM_COMMAND qc gpson %player_name%'
          - 'PERFORM_COMMAND kit give prisonintropick %player_name%'
          - SEND_MESSAGE &0
          - 'SEND_MESSAGE &a&lInteractive Prison Intro Quest Starting...'
          - SEND_MESSAGE &0
          - WAIT_TICKS 60
          - SEND_SOUND BLOCK_NOTE_BLOCK_PLING
          - SEND_SOUND ENTITY_VILLAGER_AMBIENT
          - 'SEND_MESSAGE &a> &7Chat is disabled while in the Quest.'
          - SEND_MESSAGE &0
          - WAIT_TICKS 60
          - 'SEND_MESSAGE &a> &7Failure to proceed in the quest will cancel the quest.'
          - SEND_MESSAGE &0
          - WAIT_TICKS 60
          - 'SEND_MESSAGE &a> &7You must complete it all the way through or your progress will not be saved.'
          - SEND_MESSAGE &0
          - WAIT_TICKS 60
          - 'SEND_MESSAGE &a> &7&oIf you become stuck at any point, type &c&oendtutorial&7.'
          - SEND_MESSAGE &0
          - WAIT_TICKS 100
          - SEND_SOUND BLOCK_NOTE_BLOCK_PLING
          - 'SEND_MESSAGE &8[&e&lIntro&8] &aConfirm start of Prison Intro Quest?'
          - 'SEND_MESSAGE &7&o (Select an option in chat)'
          - SEND_MESSAGE &0
        goto: OBJECT 00_start_diverge
        time_limit:
          duration: 3 minute
          fail_goto: BRANCH branch_timed_out

      00_start_diverge:
        type: DIVERGE_CHAT
        hide_chat: true
        choices:
          no:
            text: '&c&lNO'
            goto: OBJECT select_end_quest
          yes:
            text: '&a&lYES'
            goto: OBJECT start
        repeat_delay: 15 SECOND
        time_limit:
          duration: 3 minute
          fail_goto: BRANCH branch_timed_out

      start:
        type: SERVER_ACTIONS
        hide_chat: true
        goto: OBJECT dialogue_1
        #      progress_conditions:
        #        conditions:
        #          a:
        #            type: POSITION
        #            position:
        #              type: WORLDGUARD_REGION_INSIDE
        #              world: NewSpawnWorld
        #              region: intro
        actions: 
          - SEND_SOUND BLOCK_PORTAL_TRAVEL
          - SEND_MESSAGE &0
          - 'SEND_MESSAGE &c&l&oTO THE MINES, PRISONER!'
          - SEND_MESSAGE &0

      dialogue_1:
        type: SERVER_ACTIONS
        hide_chat: true
        goto: OBJECT mineorientation
        # this is the perm that allows the player down into the pit to kill 50 zombies
        actions: 
          - SEND_SOUND BLOCK_NOTE_BLOCK_PLING
          - SEND_MESSAGE &0
          - SEND_MESSAGE &e&lPRISON INTRO INCOMING
          - SEND_MESSAGE &0
          - WAIT_TICKS 80
          - SEND_SOUND ENTITY_VILLAGER_HURT
          - 'SEND_MESSAGE &8[&e&lNPC&8] &aSnorky &e» &7So &b%player_name%,&7 you''ve made it to the mines...'
          - SEND_MESSAGE &0
          - WAIT_TICKS 80
          - SEND_SOUND ENTITY_VILLAGER_HURT
          - 'SEND_MESSAGE &8[&e&lNPC&8] &aSnorky &e» &7I hope you''re ready to work!'
          - SEND_MESSAGE &0
          - WAIT_TICKS 80
          - SEND_SOUND ENTITY_VILLAGER_HURT
          - 'SEND_MESSAGE &8[&e&lNPC&8] &aSnorky &e» &7To begin, equip your pickaxe and begin mining blocks in the mine.'
          - SEND_MESSAGE &0
          - WAIT_TICKS 80
          - SEND_SOUND ENTITY_VILLAGER_HURT
          - 'SEND_MESSAGE &8[&e&lNPC&8] &aSnorky &e» &7I''ll call you back here when you reach &aLevel 1&7.'
          - SEND_MESSAGE &0
          - WAIT_TICKS 80
          - SEND_SOUND ITEM_TOTEM_USE
          - SEND_MESSAGE &a&lFIRST OBJECTIVE
          - SEND_MESSAGE &bReach Level 1
          - SEND_SOUND BLOCK_NOTE_BLOCK_PLING
          - 'SEND_TITLE 20 40 20 &a&lFIRST OBJECTIVE,&bReach Level 1'
          - SEND_PARTICLES FIREWORKS_SPARK 3 true
          - SEND_MESSAGE &0
          - PERFORM_COMMAND lp user %player_name% permission set jetsprisonmines.blockbreak.lvl.1 true 

      mineorientation:
        type: SERVER_ACTIONS
        hide_chat: true
        goto: OBJECT entermine
        # this is the perm that allows the player down into the pit to kill 50 zombies
        actions: 
          - WAIT_TICKS 60
          - SEND_SOUND BLOCK_NOTE_BLOCK_PLING
          - SEND_MESSAGE &0
          - SEND_MESSAGE &7&lMake your way into the mine and reach &a&lLevel 1&7&l by mining blocks!
          - SEND_MESSAGE &0
          - WAIT_TICKS 80
        gps:
          enabled: true
          mode: GPS
          custom_point: lvl1mine

      entermine:
        type: NONE
        hide_chat: true
        goto: OBJECT level_up_to_one
        progress_conditions:
          conditions:
            a:
              type: POSITION
              position:
                type: WORLDGUARD_REGION_INSIDE
                world: MineWorldv2
                region: lvl1mine
        gps:
          enabled: true
          mode: GPS
          custom_point: lvl1mine
        time_limit:
          duration: 1 minute
          fail_goto: OBJECT level_up_to_one

      level_up_to_one:
        type: NONE
        progress_conditions:
          conditions:
            a:
              type: LOGIC
              logic: '%xprison_level% >= 1'
        goto: OBJECT leveled_up
        update_notify:
          message: '&b&l&oMine in the mine to reach Level 1...'
        update_notify_delay: 10 SECOND  

      leveled_up:
        type: SERVER_ACTIONS
        hide_chat: true
        goto: OBJECT upgradepickaxe
        actions: 
          - SEND_SOUND UI_TOAST_IN
          - SEND_SOUND ENTITY_PLAYER_LEVELUP
          - 'SEND_TITLE 20 40 20 &a&lOBJETIVE COMPLETE,&fReach Level 1'
          - PERFORM_COMMAND lp user %player_name% permission set jetsprisonmines.blockbreak.lvl.1 false 
          - SEND_PARTICLES FIREWORKS_SPARK 3 true
          - SEND_SOUND ENTITY_VILLAGER_YES
          - SEND_MESSAGE &6&lOBJECTIVE COMPLETE
          - SEND_MESSAGE &bReach Level 1
          - SEND_MESSAGE &7
          - WAIT_TICKS 60
          - SEND_SOUND ENTITY_VILLAGER_HURT
          - 'SEND_MESSAGE &8[&e&lNPC&8] &aSnorky &e» &7Well done %player_name%, you''re getting the hang of it.'
          - SEND_MESSAGE &0
          - WAIT_TICKS 80
          - SEND_SOUND ENTITY_VILLAGER_HURT
          - 'SEND_MESSAGE &8[&e&lNPC&8] &aSnorky &e» &7Let''s try and speed this process up a bit&7!'
          - SEND_MESSAGE &0
          - WAIT_TICKS 80
          - SEND_SOUND ENTITY_VILLAGER_HURT
          - 'SEND_MESSAGE &8[&e&lNPC&8] &aSnorky &e» &7If you want to earn more progress faster, go ahead and upgrade your pickaxe with some stronger enchantments.'
          - SEND_MESSAGE &0
          - WAIT_TICKS 80
          - SEND_SOUND ENTITY_VILLAGER_HURT
          - 'SEND_MESSAGE &8[&e&lNPC&8] &aSnorky &e» &7To upgrade your pickaxe, hold it in your main hand and type &b/upgrade&7.'
          - SEND_MESSAGE &0
          - WAIT_TICKS 80
          - SEND_SOUND ENTITY_VILLAGER_HURT
          - 'SEND_MESSAGE &8[&e&lNPC&8] &aSnorky &e» &7From there, go ahead and click the &eFortune&7 enchantment to add a level.'
          - SEND_MESSAGE &0
          - WAIT_TICKS 80
          - SEND_SOUND ENTITY_VILLAGER_HURT
          - 'SEND_MESSAGE &8[&e&lNPC&8] &aSnorky &e» &7Once you do this, I''ll give you your next instructions.'
          - SEND_MESSAGE &0
          - WAIT_TICKS 80
          - SEND_SOUND ENTITY_VILLAGER_HURT
          - 'SEND_MESSAGE &8[&e&lNPC&8] &aSnorky &e» &7Here are some &bAtoms &7to use toward your upgrade!'
          - PERFORM_COMMAND atoms add %player_name% 10000000
          - SEND_MESSAGE &0
          - WAIT_TICKS 80
          - SEND_SOUND BLOCK_NOTE_BLOCK_PLING
          - 'SEND_TITLE 20 40 20 &a&lNEXT OBJECTIVE,&fUpgrade Your Pickaxe with Fortune 100'
          - SEND_MESSAGE &0
          - SEND_MESSAGE &a&lNEXT OBJECTIVE
          - SEND_MESSAGE &eUpgrade Your Pickaxe with Fortune 100
          - SEND_PARTICLES FIREWORKS_SPARK 3 true
          - SEND_MESSAGE &0

      upgradepickaxe:
        type: PLAYER_ITEMS_REQUIRE
        hide_chat: true
        goto: OBJECT upgradesuccess
        items:
          items:
            a:
              item:
                type: DIAMOND_PICKAXE
                enchantments:
                  LOOT_BONUS_BLOCKS: 100
                flags: HIDE_ENCHANTS
              #name: '&9&m]-&7&m--&8&m--&9 Atomic-Sword &8&m--&7&m--&9&m-['
              check: SameBase
          count: 1
        #error_message: '&cUse &a/upgrade&c to upgrade your &aSword&c to &eSharpness III&c to face the boss!'
        update_notify:
          message: '&7&l&oUpgrade your &a&l&oPickaxe &7&l&owith &e&l&oFortune 100&7&l&o using &b&l&o/upgrade&7&l&o, or type &c&l&oendtutorial&7&l&o to cancel the intro...'
        update_notify_delay: 10 SECOND
        #time_limit:
          #duration: 5 minute
          #fail_goto: BRANCH branch_timed_out

      upgradesuccess:
        type: SERVER_ACTIONS
        hide_chat: true
        goto: OBJECT reach_level_two
        #this is the perm that lets a player teleport up the rock wall
        actions: 
          - SEND_SOUND UI_TOAST_IN
          - SEND_SOUND ENTITY_PLAYER_LEVELUP
          - 'SEND_TITLE 20 40 20 &a&lOBJECTIVE COMPLETE,&bUpgrade your Pickaxe!'
          - SEND_PARTICLES FIREWORKS_SPARK 3 true
          - SEND_MESSAGE &0
          - SEND_SOUND ENTITY_VILLAGER_YES
          - SEND_MESSAGE &6&lOBJECTIVE COMPLETE
          - 'SEND_MESSAGE &bUpgrade Your Pickaxe!'
          - SEND_MESSAGE &0
          - WAIT_TICKS 60
          - SEND_SOUND ENTITY_VILLAGER_HURT
          - 'SEND_MESSAGE &8[&e&lNPC&8] &aSnorky &e» &7Well done &b%player_name%&7! With an upgraded Pickaxe, you''ll climb through the levels at a faster pace.'
          - SEND_MESSAGE &0
          - WAIT_TICKS 80
          - SEND_SOUND ENTITY_VILLAGER_HURT
          - 'SEND_MESSAGE &8[&e&lNPC&8] &aSnorky &e» &7Go ahead now and use that pickaxe to reach &aLevel 2&7.'
          - SEND_MESSAGE &0
          - WAIT_TICKS 80
          - SEND_SOUND BLOCK_NOTE_BLOCK_PLING
          - 'SEND_TITLE 20 40 20 &a&lNEXT OBJECTIVE,&fReach Level 2'
          - SEND_MESSAGE &0
          - SEND_MESSAGE &a&lNEXT OBJECTIVE
          - SEND_MESSAGE &eContinue to Mine and Reach Level 2
          - PERFORM_COMMAND lp user %player_name% permission set jetsprisonmines.blockbreak.lvl.1 true 
          - SEND_PARTICLES FIREWORKS_SPARK 3 true
          - SEND_MESSAGE &0
     
      reach_level_two:
        type: NONE
        progress_conditions:
          conditions:
            a:
              type: LOGIC
              logic: '%xprison_level% >= 2'
        goto: OBJECT leveled_up_again   
        update_notify:
          message: '&b&l&oContinue mining to reach Level 2...'
        update_notify_delay: 10 SECOND  

      leveled_up_again:
        type: SERVER_ACTIONS
        hide_chat: true
        goto: OBJECT purchasemultiplier
        actions: 
          - SEND_SOUND UI_TOAST_IN
          - SEND_SOUND ENTITY_PLAYER_LEVELUP
          - 'SEND_TITLE 20 40 20 &a&lOBJECTIVE COMPLETE,&eReach Level 2'
          - PERFORM_COMMAND lp user %player_name% permission set jetsprisonmines.blockbreak.lvl.1 false 
          - SEND_PARTICLES FIREWORKS_SPARK 3 true
          - SEND_MESSAGE &0
          - SEND_SOUND ENTITY_VILLAGER_YES
          - SEND_MESSAGE &6&lOBJECTIVE COMPLETE
          - SEND_MESSAGE &eReach Level 2
          - SEND_MESSAGE &0
          - WAIT_TICKS 80
          - SEND_SOUND ENTITY_VILLAGER_HURT
          - 'SEND_MESSAGE &8[&e&lNPC&8] &aSnorky &e» &7You''re practically a pro already, &b%player_name%&7!'
          - SEND_MESSAGE &0
          - WAIT_TICKS 80
          - SEND_SOUND ENTITY_VILLAGER_HURT
          - 'SEND_MESSAGE &8[&e&lNPC&8] &aSnorky &e» &7Let''s kick it up a notch before we set you loose on your own in this prison...'
          - SEND_MESSAGE &0
          - WAIT_TICKS 80
          - 'SEND_MESSAGE &8[&e&lNPC&8] &aSnorky &e» &7I''m going to give you some &eTokens&7 so you can purchase a &aProgress Multiplier&7 in the shop.'
          - SEND_MESSAGE &0
          - WAIT_TICKS 80
          - SEND_SOUND ENTITY_VILLAGER_HURT
          - 'SEND_MESSAGE &8[&e&lNPC&8] &aSnorky &e» &7To purchase a multiplier, &7run the &e/tokenshop &7command and select the &a&lMultipliers &7category.'
          - SEND_MESSAGE &0
          - WAIT_TICKS 80
          - SEND_SOUND ENTITY_VILLAGER_HURT
          - 'SEND_MESSAGE &8[&e&lNPC&8] &aSnorky &e» &7From there, purchase the &a+1x Multi for 3m. &7multiplier for &e100,000 Tokens&7 and redeem the voucher to activate it.'
          - SEND_MESSAGE &0
          - WAIT_TICKS 80
          - SEND_SOUND BLOCK_NOTE_BLOCK_PLING
          - 'SEND_TITLE 20 40 20 &a&lNEXT OBJECTIVE,&fPurchase a Progress Multiplier'
          - SEND_MESSAGE &0
          - SEND_MESSAGE &a&lNEXT OBJECTIVE
          - SEND_MESSAGE &ePurchase a &a1x for 3m Progress Multiplier &efrom the Tokenshop
          - PERFORM_COMMAND tm add %player_name% 10000000 -s
          - SEND_PARTICLES FIREWORKS_SPARK 3 true
          - SEND_MESSAGE &0

      purchasemultiplier:
        type: NONE
        progress_conditions:
          conditions:
            a:
              type: LOGIC
              logic: '%multiplier_progress_amount% >= 1'
        goto: OBJECT multipliersecured  
        update_notify:
          message: '&b&l&oPurchase a &a+1x Multi for 3m. &7from the &e/tokenshop &7and redeem the voucher.'
        update_notify_delay: 10 SECOND  
        time_limit:
          duration: 2 minutes
          fail_goto: OBJECT multipliernotsecured

      multipliersecured:
        type: SERVER_ACTIONS
        hide_chat: true
        goto: OBJECT level_up_to_three
        #this is the perm that lets a player teleport up the rock wall
        actions: 
          - SEND_SOUND UI_TOAST_IN
          - SEND_SOUND ENTITY_PLAYER_LEVELUP
          - 'SEND_TITLE 20 40 20 &a&lOBJECTIVE COMPLETE,&bPurchase a Progress Multiplier!'
          - SEND_PARTICLES FIREWORKS_SPARK 3 true
          - SEND_MESSAGE &0
          - SEND_SOUND ENTITY_VILLAGER_YES
          - SEND_MESSAGE &6&lOBJECTIVE COMPLETE
          - SEND_MESSAGE &bPurchase a Progress Multiplier
          - SEND_MESSAGE &0
          - WAIT_TICKS 60
          - SEND_SOUND ENTITY_VILLAGER_HURT
          - 'SEND_MESSAGE &8[&e&lNPC&8] &aSnorky &e» &7Well done &b%player_name%&7! That multiplier will speed up your the rate at which you level up!'
          - SEND_MESSAGE &0
          - WAIT_TICKS 80
          - SEND_SOUND ENTITY_VILLAGER_HURT
          - 'SEND_MESSAGE &8[&e&lNPC&8] &aSnorky &e» &7Go ahead now and use that multiplier to reach &aLevel 3&7.'
          - SEND_MESSAGE &0
          - WAIT_TICKS 80
          - SEND_SOUND BLOCK_NOTE_BLOCK_PLING
          - 'SEND_TITLE 20 40 20 &a&lNEXT OBJECTIVE,&fReach Level 3'
          - SEND_MESSAGE &0
          - SEND_MESSAGE &a&lNEXT OBJECTIVE
          - SEND_MESSAGE &eContinue to Mine and Reach Level 3
          - PERFORM_COMMAND lp user %player_name% permission set jetsprisonmines.blockbreak.lvl.1 true 
          - SEND_PARTICLES FIREWORKS_SPARK 3 true
          - SEND_MESSAGE &0

      level_up_to_three:
        type: NONE
        progress_conditions:
          conditions:
            a:
              type: LOGIC
              logic: '%xprison_level% >= 3'
        goto: OBJECT leveled_up_final   
        update_notify:
          message: '&b&l&oContinue mining to reach Level 3...'
        update_notify_delay: 10 SECOND 

      multipliernotsecured:
        type: SERVER_ACTIONS
        hide_chat: true
        goto: OBJECT level_up_to_three
        #this is the perm that lets a player teleport up the rock wall
        actions: 
          - SEND_SOUND UI_TOAST_IN
          - SEND_SOUND block_amethyst_cluster_break
          - 'SEND_TITLE 20 40 20 &c&lOBJECTIVE FAILED,&bPurchase a Progress Multiplier!'
          - SEND_PARTICLES FIREWORKS_SPARK 3 true
          - SEND_MESSAGE &0
          - SEND_SOUND ENTITY_VILLAGER_YES
          - SEND_MESSAGE &c&lOBJECTIVE FAILED
          - SEND_MESSAGE &bPurchase a Progress Multiplier
          - SEND_MESSAGE &0
          - WAIT_TICKS 60
          - SEND_SOUND ENTITY_VILLAGER_HURT
          - 'SEND_MESSAGE &8[&e&lNPC&8] &aSnorky &e» &7Well &b%player_name%&7, you didn''t quite follow directions there!'
          - SEND_MESSAGE &0
          - WAIT_TICKS 80
          - SEND_SOUND ENTITY_VILLAGER_HURT
          - 'SEND_MESSAGE &8[&e&lNPC&8] &aSnorky &e» &7When browsing the &eTokenshop&7, pay close attention to your options.'
          - SEND_MESSAGE &0
          - WAIT_TICKS 80
          - SEND_SOUND ENTITY_VILLAGER_HURT
          - 'SEND_MESSAGE &8[&e&lNPC&8] &aSnorky &e» &7For now, I''ll set you up with a &a1x for 3m Progress Multiplier&7.'
          - SEND_MESSAGE &0
          - WAIT_TICKS 80
          - SEND_SOUND ENTITY_VILLAGER_HURT
          - 'SEND_MESSAGE &8[&e&lNPC&8] &aSnorky &e» &7Go ahead and proceed with the tutorial...'
          - SEND_MESSAGE &0
          - WAIT_TICKS 80
          - SEND_SOUND BLOCK_NOTE_BLOCK_PLING
          - 'SEND_TITLE 20 40 20 &a&lNEXT OBJECTIVE,&fReach Level 3'
          - SEND_MESSAGE &0
          - SEND_MESSAGE &a&lNEXT OBJECTIVE
          - SEND_MESSAGE &eContinue to Mine and Reach Level 3
          - PERFORM_COMMAND asa setmultiplier %player_name% 1 3
          - PERFORM_COMMAND lp user %player_name% permission set jetsprisonmines.blockbreak.lvl.1 true 
          - SEND_PARTICLES FIREWORKS_SPARK 3 true
          - SEND_MESSAGE &0 

      leveled_up_final:
        type: SERVER_ACTIONS
        hide_chat: true
        goto: OBJECT end_quest
        actions: 
          - SEND_SOUND UI_TOAST_IN
          - SEND_SOUND ENTITY_PLAYER_LEVELUP
          - 'SEND_TITLE 20 40 20 &a&lOBJECTIVE COMPLETE,&eReach Level 3'
          - SEND_PARTICLES FIREWORKS_SPARK 3 true
          - SEND_MESSAGE &0
          - SEND_SOUND ENTITY_VILLAGER_YES
          - SEND_MESSAGE &6&lOBJECTIVE COMPLETE
          - SEND_MESSAGE &eReach Level 3
          - SEND_MESSAGE &0
          - WAIT_TICKS 80
          - SEND_SOUND ENTITY_VILLAGER_HURT
          - 'SEND_MESSAGE &8[&e&lNPC&8] &aSnorky &e» &7You''ve done it, &b%player_name%&7!'
          - SEND_MESSAGE &0
          - WAIT_TICKS 80
          - SEND_SOUND ENTITY_VILLAGER_HURT
          - 'SEND_MESSAGE &8[&e&lNPC&8] &aSnorky &e» &7I think you now have what you need to go ahead and climb the ranks of this Prison.'
          - SEND_MESSAGE &0
          - WAIT_TICKS 80
          - 'SEND_MESSAGE &8[&e&lNPC&8] &aSnorky &e» &7I''m going to return you to the prison now!'
          - SEND_MESSAGE &0
          - WAIT_TICKS 80
          - SEND_SOUND ENTITY_VILLAGER_HURT
          - 'SEND_MESSAGE &8[&e&lNPC&8] &aSnorky &e» &7Continue your grind, &b%player_name%&7...'
          - SEND_MESSAGE &0
          - WAIT_TICKS 80

  
      end_quest:
        type: SERVER_ACTIONS
        hide_chat: false
        goto: QUEST_SUCCESS
        actions: 
          - PERFORM_COMMAND lp user %player_name% parent add default
          - PERFORM_COMMAND lp user %player_name% parent remove prisonintro
          - PERFORM_COMMAND restoreinventory %player_name%
          - WAIT_TICKS 10
          - PERFORM_COMMAND setchannel %player_name% global
          - SEND_SOUND ENTITY_PLAYER_LEVELUP
          - SEND_MESSAGE &0
          - 'SEND_MESSAGE &a&lPRISON INTRO COMPLETE!'
          - SEND_MESSAGE &0
          - PERFORM_COMMAND level set %player_name% {variable:CurrentLevel} false
          - PERFORM_COMMAND warp spawn %player_name%
          - PERFORM_COMMAND atoms set %player_name% {variable:CurrentAtoms}
          - PERFORM_COMMAND tm set %player_name% {variable:CurrentTokens}
          - PERFORM_COMMAND asa setmultiplier %player_name% {variable:CurrentMultiplier} {variable:CurrentMultiplierMinutes}
          - WAIT_TICKS 20
          - PERFORM_COMMAND eco set %player_name% {variable:CurrentProgress}
          - PERFORM_COMMAND lp user %player_name% permission unset progress.milestones 
          - PERFORM_COMMAND lp user %player_name% permission set interactive.prison.complete true
          - PERFORM_COMMAND lp user %player_name% permission unset progress.interactive.rewards 
          - SEND_MESSAGE &0


      select_end_quest:
        type: SERVER_ACTIONS
        hide_chat: false
        goto: QUEST_CANCEL
        #activators: [activator_auto]
        actions: 
          - PERFORM_COMMAND lp user %player_name% parent add default
          - PERFORM_COMMAND lp user %player_name% parent remove prisonintro
          - PERFORM_COMMAND restoreinventory %player_name%
          - WAIT_TICKS 10
          - PERFORM_COMMAND setchannel %player_name% global
          - SEND_SOUND ENTITY_PLAYER_LEVELUP
          - SEND_MESSAGE &0
          - 'SEND_MESSAGE &c&lSERVER INTRO CANCELLED'
          - SEND_MESSAGE &0
          - PERFORM_COMMAND level set %player_name% {variable:CurrentLevel} false
          - PERFORM_COMMAND warp spawn %player_name%
          - PERFORM_COMMAND atoms set %player_name% {variable:CurrentAtoms}
          - PERFORM_COMMAND tm set %player_name% {variable:CurrentTokens}
          - PERFORM_COMMAND asa setmultiplier %player_name% {variable:CurrentMultiplier} {variable:CurrentMultiplierMinutes}
          - WAIT_TICKS 20
          - PERFORM_COMMAND eco set %player_name% {variable:CurrentProgress}
          - PERFORM_COMMAND lp user %player_name% permission unset progress.milestones 
          - PERFORM_COMMAND lp user %player_name% permission unset progress.interactive.rewards 
          - SEND_MESSAGE &0

  branch_timed_out:
    starts_at: time_out_delay #dialogue_1
    starts_directly: false
    objects:

      time_out_delay:
        type: SERVER_ACTIONS
        hide_chat: true
        goto: OBJECT timed_out
        actions: 
          - WAIT_TICKS 100

      timed_out:
        type: SERVER_ACTIONS
        hide_chat: false
        goto: QUEST_CANCEL
        actions: 
          - PERFORM_COMMAND lp user %player_name% parent add default
          - PERFORM_COMMAND lp user %player_name% parent remove prisonintro
          - PERFORM_COMMAND restoreinventory %player_name%
          - WAIT_TICKS 10
          - PERFORM_COMMAND setchannel %player_name% global
          - SEND_SOUND ENTITY_PLAYER_LEVELUP
          - SEND_MESSAGE &0
          - 'SEND_MESSAGE &c&lSERVER INTRO CANCELLED'
          - SEND_MESSAGE &0
          - PERFORM_COMMAND level set %player_name% {variable:CurrentLevel} false
          - PERFORM_COMMAND warp spawn %player_name%
          - PERFORM_COMMAND atoms set %player_name% {variable:CurrentAtoms}
          - PERFORM_COMMAND tm set %player_name% {variable:CurrentTokens}
          - PERFORM_COMMAND asa setmultiplier %player_name% {variable:CurrentMultiplier} {variable:CurrentMultiplierMinutes}
          - WAIT_TICKS 20
          - PERFORM_COMMAND eco set %player_name% {variable:CurrentProgress}
          - PERFORM_COMMAND lp user %player_name% permission unset progress.milestones 
          - PERFORM_COMMAND lp user %player_name% permission unset progress.interactive.rewards 
          - SEND_MESSAGE &0

  cancel:
    display_name: cancel
    starts_at: cancel
    objects:

      cancel:
        hide_chat: true
        type: PLAYER_CHAT
        whitelist: [endtutorial, /endtutorial]
        goto: OBJECT end_quest_end
        update_notify:
          message: | 
            &r
            &8&l(&c&l!&8&l) &cYou are currently in the Interactive Prison Tutorial. 
            &eCertain features and commands will not work while this is active. 
            &cType &e/endtutorial&c to exit the tutorial and return normal function.
            &r
        update_notify_delay: 30 SECOND

      end_quest_end:
        type: SERVER_ACTIONS
        hide_chat: false
        goto: QUEST_CANCEL
        #activators: [activator_auto]
        actions: 
          - PERFORM_COMMAND lp user %player_name% parent add default
          - PERFORM_COMMAND lp user %player_name% parent remove prisonintro
          - PERFORM_COMMAND restoreinventory %player_name%
          - WAIT_TICKS 10
          - PERFORM_COMMAND setchannel %player_name% global
          - SEND_SOUND ENTITY_PLAYER_LEVELUP
          - SEND_MESSAGE &0
          - 'SEND_MESSAGE &c&lSERVER INTRO CANCELLED'
          - SEND_MESSAGE &0
          - PERFORM_COMMAND level set %player_name% {variable:CurrentLevel} false
          - PERFORM_COMMAND warp spawn %player_name%
          - PERFORM_COMMAND atoms set %player_name% {variable:CurrentAtoms}
          - PERFORM_COMMAND tm set %player_name% {variable:CurrentTokens}
          - PERFORM_COMMAND asa setmultiplier %player_name% {variable:CurrentMultiplier} {variable:CurrentMultiplierMinutes}
          - WAIT_TICKS 20
          - PERFORM_COMMAND eco set %player_name% {variable:CurrentProgress}
          - PERFORM_COMMAND lp user %player_name% permission unset progress.milestones 
          - PERFORM_COMMAND lp user %player_name% permission unset progress.interactive.rewards 
          - SEND_MESSAGE &0


progress_notify_scoreboard: false