"Lumberjack": type: assignment default constants: logs: oak_log|birch_log|spruce_log leaves: leaves|birch_leaves|spruce_leaves initialRange: 10 interact scripts: - 10 Lumberjack life actions: on assignment: - trigger name:click toggle:true - trigger name:proximity toggle:true range:5 - flag npc ready_to_cut:! - flag npc actualRange: - anchor add "id:startPosition" on complete navigation: - if { - run "defineTree" } } on cancel navigation: - queue clear "Lumberjack Life": Requirements: Mode: ALL type: interact steps: 1: proximity trigger: entry: script: - lookclose state:true - run "Greetings" click trigger: script: - run "lookForTrees" "Greetings": type: task script: - chat targets:p@ "Hello there !" "lookForTrees": type: task script: - flag npc found_trees:! - foreach ].within[].as_list> { - if { - flag npc found_trees:|:%value% } } - if == 0 { - narrate targets:p@ "There is no trees in range of blocks." - flag npc actualRange:++:10 - narrate targets:p@ "Looking for trees in range of blocks." - run "lookForTrees" } else { - flag npc current_tree:1 - lookclose state:false - walkto ]> - flag npc ready_to_cut:true - queue clear } "defineTree": type: task script: - look ]> - flag npc tree_elems:! - flag npc tree_elems:|:]> - flag npc current_elem:1 - run "checkBlockAbove" "checkBlockAbove": type: task script: - define currentBlock ]> - if { - animate animation:arm_swing - flag npc tree_elems:|:<%currentBlock%.above> - flag npc current_elem:++ - run "checkBlockAbove" } else { - run "lookForLeaves" } "lookForLeaves": type: task script: - define topBlock ]> - foreach <%topBlock%.find.blocks[].within[3].as_list> { - flag npc tree_elems:|:%value% } - run "cutTree" "cutTree": type: task script: - foreach { - modifyblock %value% 0 } - modifyblock ]> 6 - flag npc current_tree:++ - if |]> { - run "goToStart" } else { - walkto ]> } "isLogAbove": type: procedure debug: false definitions: block script: - if <%block%.above.material.id> == <%block%.material.id> { - ^determine true } else { - ^determine false } "isTreeHump": type: procedure debug: false definitions: block script: - ^if <%block%.below.material.id> == 3 || <%block%.below.material.id> == 1 { - if <%block%.above.material.id> == <%block%.material.id> { - ^determine true } else { - ^determine false } } else { - ^determine false } "wasLast": type: procedure debug: false definitions: index|total script: - if %index% > %total% { - ^determine true } else { - ^determine false } "goToStart": type: task script: - flag npc ready_to_cut:! - flag npc actualRange: - walkto