FILES ----- behaviors\monsters\boss\spiderboss\main.behavior behaviors\monsters\boss\spiderboss\stage1.behavior behaviors\monsters\boss\spiderboss\stage2.behavior behaviors\monsters\boss\spiderboss\stage3.behavior behaviors\monsters\critter\blooping.behavior behaviors\monsters\critter\swimming.behavior behaviors\monsters\unique\ixoling.behavior behaviors\npc\chat.behavior behaviors\npc\combat.behavior behaviors\npc\combatvillager.behavior behaviors\npc\finalreact.behavior behaviors\npc\flee.behavior behaviors\npc\floranspectator.behavior behaviors\npc\follower.behavior behaviors\npc\friendlyidle.behavior behaviors\npc\guard.behavior behaviors\npc\guardidle.behavior behaviors\npc\hostileguard.behavior behaviors\npc\idler.behavior behaviors\npc\merchant.behavior behaviors\npc\pather.behavior behaviors\npc\play.behavior behaviors\npc\react.behavior behaviors\npc\reactionchat.behavior behaviors\npc\tenant.behavior behaviors\npc\tutorial.behavior behaviors\npc\tutorialtenant.behavior behaviors\npc\villageguard.behavior behaviors\npc\villager.behavior [NEW] behaviors\npc\reactions\bored.behavior [NEW] behaviors\npc\reactions\drum.behavior [NEW] behaviors\npc\reactions\flee.behavior behaviors\npc\reactions\follow.behavior [NEW] behaviors\npc\reactions\gohome.behavior [NEW] behaviors\npc\reactions\gong.behavior [NEW] behaviors\npc\reactions\hop.behavior [NEW] behaviors\npc\reactions\jumpforjoy.behavior [NEW] behaviors\npc\reactions\love.behavior [NEW] behaviors\npc\reactions\mourn.behavior [NEW] behaviors\npc\reactions\nosebleed.behavior [NEW] behaviors\npc\reactions\posedance.behavior [NEW] behaviors\npc\reactions\punch.behavior [NEW] behaviors\npc\reactions\vomit.behavior behaviors\sequences\floranmission\floranmissionstart.behavior behaviors\sequences\floranmission\nuruboss.behavior behaviors\tenant\returnhome.behavior [NEW] humanoid\dances\mourn.dance humanoid\dances\typing.dance items\armors\chest.frames items\armors\chestf.frames items\armors\chestm.frames monsters\boss\spiderboss\spiderboss.monstertype monsters\critter\armadillo\armadillo.monstertype monsters\critter\birdcritter\birdcritter.monstertype monsters\critter\blipcritter\blipcritter.monstertype monsters\critter\bouncebagcritter\bouncebagcritter.monstertype monsters\critter\bowbirdcritter\bowbirdcritter.monstertype monsters\critter\bunny\bunny.monstertype monsters\critter\crabcritter\crabcritter.monstertype monsters\critter\deserttortoisecritter\deserttortoisecritter.monstertype monsters\critter\eyefriend\eyefriend.monstertype monsters\critter\eyepodcritter\eyepodcritter.monstertype monsters\critter\fishcritter\fishcritter.monstertype monsters\critter\floatbagcritter\floatbagcritter.monstertype monsters\critter\frog\frog.monstertype monsters\critter\groopcritter\groopcritter.monstertype monsters\critter\gullcritter\gullcritter.monstertype monsters\critter\hedgehogcritter\hedgehogcritter.monstertype monsters\critter\jellycritter\jellycritter.monstertype monsters\critter\mousecritter\mousecritter.monstertype monsters\critter\owlcritter\owlcritter.monstertype monsters\critter\ravencritter\ravencritter.monstertype monsters\critter\reasonablecritter\reasonablecritter.monstertype monsters\critter\redbreastcritter\redbreastcritter.monstertype monsters\critter\sackbagcritter\sackbagcritter.monstertype monsters\critter\snail\snail.monstertype monsters\critter\snooglecritter\snooglecritter.monstertype monsters\critter\sporelingcritter\sporelingcritter.monstertype monsters\critter\squeekcritter\squeekcritter.monstertype monsters\critter\squidcritter\squidcritter.monstertype monsters\critter\squirrelcritter\squirrelcritter.monstertype monsters\critter\tortoise\tortoise.monstertype monsters\critter\vulturecritter\vulturecritter.monstertype monsters\critter\wintercritter\wintercritter.monstertype monsters\critter\wurmcritter\wurmcritter.monstertype monsters\unique\ixoling\ixoling.monstertype npcs\default_reactions.config npcs\follower.npctype npcs\guard.npctype npcs\hostile.npctype npcs\merchant.npctype npcs\nakedvillager.npctype npcs\towerascendant.npctype npcs\tutorial.npctype npcs\tutorialtenant.npctype npcs\villageguard.npctype npcs\villager.npctype npcs\mission\florancelebrator.npctype npcs\mission\floranspectator.npctype npcs\story\nuru.npctype objects\apex\apexconsole1\apexconsole1.object objects\avian\tombstone1\tombstone1.object objects\avian\tombstone10\tombstone10.object objects\avian\tombstone11\tombstone11.object objects\avian\tombstone2\tombstone2.object objects\avian\tombstone3\tombstone3.object objects\avian\tombstone4\tombstone4.object objects\avian\tombstone5\tombstone5.object objects\avian\tombstone6\tombstone6.object objects\avian\tombstone7\tombstone7.object objects\avian\tombstone8\tombstone8.object objects\avian\tombstone9\tombstone9.object objects\generic\wreckconsole1\wreckconsole1.object objects\human\bunkerconsole1\bunkerconsole1.object objects\human\bunkerconsole2\bunkerconsole2.object objects\human\bunkerconsole3\bunkerconsole3.object objects\human\bunkerconsole4\bunkerconsole4.object objects\minibiome\smashablerocks\copperrock\copperrock.object objects\minibiome\smashablerocks\copperrocksmall\copperrocksmall.object objects\minibiome\smashablerocks\diamondrock\diamondrock.object objects\minibiome\smashablerocks\diamondrocksmall\diamondrocksmall.object objects\minibiome\smashablerocks\goldrock\goldrock.object objects\minibiome\smashablerocks\goldrocksmall\goldrocksmall.object objects\minibiome\smashablerocks\platinumrock\platinumrock.object objects\minibiome\smashablerocks\platinumrocksmall\platinumrocksmall.object objects\minibiome\smashablerocks\silverrock\silverrock.object objects\minibiome\smashablerocks\silverrocksmall\silverrocksmall.object objects\mission\lunarbaseconsole\lunarbaseconsole.object objects\noisy\noisy.lua objects\outpost\outpostconsole\outpostconsole.object objects\outpost\outpostsecurityconsole\outpostsecurityconsole.object objects\themed\saloon\saloonpiano\saloonpiano.object scripts\behavior.lua scripts\actions\entities.lua scripts\actions\movement.lua scripts\actions\reaction.lua DIFFS ----- behaviors\monsters\boss\spiderboss\main.behavior 29c29 < "path": "/behaviors/monsters/tracking.behavior", --- > "name": "tracking", 216c216 < "path": "/behaviors/monsters/boss/spiderboss/stage1.behavior", --- > "name": "spiderboss-stage1", 226c226 < "path": "/behaviors/monsters/boss/spiderboss/hurt.behavior", --- > "name": "spiderboss-hurt", 268c268 < "path": "/behaviors/monsters/boss/spiderboss/stage1.behavior", --- > "name": "spiderboss-stage1", 282c282 < "path": "/behaviors/monsters/boss/spiderboss/setstage.behavior", --- > "name": "spiderboss-setstage", 315c315 < "path": "/behaviors/monsters/boss/spiderboss/stage2.behavior", --- > "name": "spiderboss-stage2", 325c325 < "path": "/behaviors/monsters/boss/spiderboss/hurt.behavior", --- > "name": "spiderboss-hurt", 367c367 < "path": "/behaviors/monsters/boss/spiderboss/stage2.behavior", --- > "name": "spiderboss-stage2", 381c381 < "path": "/behaviors/monsters/boss/spiderboss/setstage.behavior", --- > "name": "spiderboss-setstage", 414c414 < "path": "/behaviors/monsters/boss/spiderboss/stage3.behavior", --- > "name": "spiderboss-stage3", 424c424 < "path": "/behaviors/monsters/boss/spiderboss/hurt.behavior", --- > "name": "spiderboss-hurt", 466c466 < "path": "/behaviors/monsters/boss/spiderboss/stage3.behavior", --- > "name": "spiderboss-stage3", 494c494 < "path": "/behaviors/monsters/boss/spiderboss/return.behavior", --- > "name": "spiderboss-return", 699c699 < "path": "/behaviors/monsters/boss/spiderboss/return.behavior", --- > "name": "spiderboss-return", behaviors\monsters\boss\spiderboss\stage1.behavior 20c20 < "path": "/behaviors/monsters/boss/spiderboss/slam.behavior", --- > "name": "spiderboss-slam", 50c50 < "path": "/behaviors/monsters/boss/spiderboss/return.behavior", --- > "name": "spiderboss-return", 94c94 < "path": "/behaviors/monsters/boss/spiderboss/hatch.behavior", --- > "name": "spiderboss-hatch", 112c112 < "path": "/behaviors/monsters/boss/spiderboss/acidspray.behavior", --- > "name": "spiderboss-acid", behaviors\monsters\boss\spiderboss\stage2.behavior 20c20 < "path": "/behaviors/monsters/boss/spiderboss/slam.behavior", --- > "name": "spiderboss-slam", 26c26 < "path": "/behaviors/monsters/boss/spiderboss/sweep.behavior", --- > "name": "spiderboss-sweep", 56c56 < "path": "/behaviors/monsters/boss/spiderboss/return.behavior", --- > "name": "spiderboss-return", 100c100 < "path": "/behaviors/monsters/boss/spiderboss/hatch.behavior", --- > "name": "spiderboss-hatch", behaviors\monsters\boss\spiderboss\stage3.behavior 21c21 < "path": "/behaviors/monsters/boss/spiderboss/return.behavior", --- > "name": "spiderboss-return", 65c65 < "path": "/behaviors/monsters/boss/spiderboss/hatch.behavior", --- > "name": "spiderboss-hatch", 79c79 < "path": "/behaviors/monsters/boss/spiderboss/slam.behavior", --- > "name": "spiderboss-slam", 85c85 < "path": "/behaviors/monsters/boss/spiderboss/acidspray.behavior", --- > "name": "spiderboss-acid", 91c91 < "path": "/behaviors/monsters/boss/spiderboss/sweep.behavior", --- > "name": "spiderboss-sweep", behaviors\monsters\critter\blooping.behavior 2c2 < "name": "A Behavior Tree", --- > "name": "blooping", behaviors\monsters\critter\swimming.behavior 2c2 < "name": "A Behavior Tree", --- > "name": "swimming", behaviors\monsters\unique\ixoling.behavior 172c172 < "path": "/behaviors/monsters/tracking.behavior", --- > "name": "tracking", behaviors\npc\chat.behavior 223c223 < "path": "/behaviors/npc/reactionchat.behavior", --- > "name": "reactionchat", 336c336 < "path": "/behaviors/npc/finalreact.behavior", --- > "name": "finalreact", behaviors\npc\combat.behavior 98c98 < "behavior": "/behaviors/coordinator/npccombat.behavior" --- > "behavior": "combatcoordinator" 133c133 < "path": "/behaviors/npc/combat/melee.behavior", --- > "name": "meleecombat", 167c167 < "path": "/behaviors/npc/combat/ranged.behavior", --- > "name": "rangedcombat", 201c201 < "path": "/behaviors/npc/combat/meleestandby.behavior", --- > "name": "meleestandby", behaviors\npc\combatvillager.behavior 13c13 < "path": "/behaviors/npc/tenant.behavior", --- > "name": "Tenant Baseline Behavior", 28c28 < "path": "/behaviors/npc/tracking.behavior", --- > "name": "npctracking", 36c36 < "path": "/behaviors/npc/combat.behavior", --- > "name": "npccombat", 44c44 < "path": "/behaviors/npc/converse.behavior", --- > "name": "converse", 49c49 < "path": "/behaviors/npc/friendlyidle.behavior", --- > "name": "Friendly NPC Idle Behavior", behaviors\npc\finalreact.behavior 5,8c5 < "/scripts/actions/reaction.lua", < "/scripts/actions/time.lua", < "/scripts/behavior.lua", < "/npcs/bmain.lua" --- > "/scripts/actions/reaction.lua" 18,46c15,21 < "title": "sequence", < "type": "composite", < "name": "sequence", < "parameters": {}, < "children": [ < { < "title": "isReaction", < "type": "action", < "name": "isReaction", < "parameters": { < "reactionVar": "reaction", < "reactionName": "gohome" < } < }, < { < "type": "module", < "path": "/behaviors/tenant/returnhome.behavior", < "title": "/behaviors/tenant/returnhome.behavior", < "parameters": {} < }, < { < "title": "timer", < "type": "action", < "name": "timer", < "parameters": { < "time": 2 < } < } < ] --- > "title": "isReaction", > "type": "action", > "name": "isReaction", > "parameters": { > "reactionVar": "reaction", > "reactionName": "quit" > } 49,155c24,29 < "title": "sequence", < "type": "composite", < "name": "sequence", < "parameters": {}, < "children": [ < { < "title": "isReaction", < "type": "action", < "name": "isReaction", < "parameters": { < "reactionVar": "reaction", < "reactionName": "flee" < } < }, < { < "title": "setEntity", < "type": "action", < "name": "setEntity", < "parameters": { < "entity": "reactTarget" < }, < "output": { < "entity": "fleeTarget" < } < }, < { < "title": "emote", < "type": "action", < "name": "emote", < "parameters": { < "emote": "oooh" < } < }, < { < "type": "module", < "path": "/behaviors/npc/runaway.behavior", < "title": "/behaviors/npc/runaway.behavior", < "parameters": {} < } < ] < }, < { < "title": "sequence", < "type": "composite", < "name": "sequence", < "parameters": {}, < "children": [ < { < "title": "isReaction", < "type": "action", < "name": "isReaction", < "parameters": { < "reactionVar": "reaction", < "reactionName": "quit" < } < } < ] < }, < { < "title": "sequence", < "type": "composite", < "name": "sequence", < "parameters": {}, < "children": [ < { < "title": "isReaction", < "type": "action", < "name": "isReaction", < "parameters": { < "reactionVar": "reaction", < "reactionName": "follow" < } < }, < { < "type": "module", < "path": "/behaviors/npc/reactions/follow.behavior", < "title": "/behaviors/npc/reactions/follow.behavior", < "parameters": { < "duration": 60 < } < } < ] < }, < { < "title": "sequence", < "type": "composite", < "name": "sequence", < "parameters": {}, < "children": [ < { < "title": "isReaction", < "type": "action", < "name": "isReaction", < "parameters": { < "reactionVar": "reaction", < "reactionName": "chase" < } < }, < { < "type": "module", < "path": "/behaviors/npc/reactions/follow.behavior", < "title": "/behaviors/npc/reactions/follow.behavior", < "parameters": { < "duration": 3 < } < } < ] --- > "title": "playBehaviorReaction", > "type": "action", > "name": "playBehaviorReaction", > "parameters": { > "reaction": "reaction" > } behaviors\npc\flee.behavior 107c107 < "path": "/behaviors/npc/runaway.behavior", --- > "name": "Run Away", behaviors\npc\floranspectator.behavior 35c35 < "path": "/behaviors/npc/converse.behavior" --- > "name": "converse" behaviors\npc\follower.behavior 34c34 < "path": "/behaviors/npc/hostiletracking.behavior", --- > "name": "hostiletracking", 42c42 < "path": "/behaviors/npc/combat.behavior", --- > "name": "npccombat", 175c175 < "path": "/behaviors/npc/hostiletracking.behavior", --- > "name": "hostiletracking", 228c228 < "path": "/behaviors/npc/combat.behavior", --- > "name": "npccombat", 659c659 < "path": "/behaviors/npc/guardidle.behavior", --- > "name": "Guard NPC Idle Behavior", behaviors\npc\friendlyidle.behavior 24c24 < "path": "/behaviors/npc/chat.behavior", --- > "name": "chat", 36c36 < "path": "/behaviors/npc/sleep.behavior", --- > "name": "sleep", 47c47 < "path": "/behaviors/npc/sit.behavior", --- > "name": "sit", 53c53 < "path": "/behaviors/npc/play.behavior", --- > "name": "play", 64c64 < "path": "/behaviors/npc/wander.behavior", --- > "name": "wander", behaviors\npc\guard.behavior 18,19d17 < "type": "module", < "path": "/behaviors/npc/tenant.behavior", 20a19,20 > "type": "module", > "name": "Tenant Baseline Behavior", 33,34d32 < "type": "module", < "path": "/behaviors/npc/tracking.behavior", 35a34,35 > "type": "module", > "name": "npctracking", 221,222d220 < "type": "module", < "path": "/behaviors/npc/combat.behavior", 223a222,223 > "type": "module", > "name": "npccombat", 232c232 < "path": "/behaviors/npc/converse.behavior", --- > "name": "converse", 236,237d235 < "type": "module", < "path": "/behaviors/npc/guardidle.behavior", 238a237,238 > "type": "module", > "name": "Guard NPC Idle Behavior", behaviors\npc\guardidle.behavior 25c25 < "path": "/behaviors/npc/chat.behavior", --- > "name": "chat", 37c37 < "path": "/behaviors/npc/sleep.behavior", --- > "name": "sleep", behaviors\npc\hostileguard.behavior 28c28 < "path": "/behaviors/npc/hostiletracking.behavior", --- > "name": "hostiletracking", 216c216 < "path": "/behaviors/npc/combat.behavior", --- > "name": "npccombat", 226c226 < "path": "/behaviors/npc/guardidle.behavior", --- > "name": "Guard NPC Idle Behavior", behaviors\npc\idler.behavior 13c13 < "path": "/behaviors/npc/tenant.behavior", --- > "name": "Tenant Baseline Behavior", 19c19 < "path": "/behaviors/npc/flee.behavior", --- > "name": "flee", 24c24 < "path": "/behaviors/npc/converse.behavior", --- > "name": "converse", behaviors\npc\merchant.behavior 27c27 < "path": "merchant.storeRadius" --- > "name": "merchant.storeRadius" 39c39 < "path": "merchant.waitTime" --- > "name": "merchant.waitTime" 109c109 < "path": "/behaviors/npc/tenant.behavior", --- > "name": "Tenant Baseline Behavior", 115c115 < "path": "/behaviors/npc/flee.behavior", --- > "name": "flee", 245c245 < "path": "/behaviors/tenant/returnhome.behavior", --- > "name": "Tenant - Return Home", 412c412 < "path": "noticePlayersRadius" --- > "name": "noticePlayersRadius" 492c492 < "path": "/behaviors/tenant/returnhome.behavior", --- > "name": "Tenant - Return Home", 500c500 < "path": "/behaviors/npc/friendlyidle.behavior", --- > "name": "Friendly NPC Idle Behavior", behaviors\npc\pather.behavior 2c2 < "name": "follower", --- > "name": "pather", behaviors\npc\play.behavior 8c8,9 < "/scripts/actions/movement.lua" --- > "/scripts/actions/movement.lua", > "/npcs/bmain.lua" 281a283,326 > "title": "succeeder", > "type": "decorator", > "name": "succeeder", > "parameters": {}, > "child": { > "title": "sequence", > "type": "composite", > "name": "sequence", > "parameters": {}, > "children": [ > { > "title": "isLoungeable", > "type": "action", > "name": "isLoungeable", > "parameters": { > "entity": "playTarget" > } > }, > { > "title": "inverter", > "type": "decorator", > "name": "inverter", > "parameters": {}, > "child": { > "title": "loungableOccupied", > "type": "action", > "name": "loungableOccupied", > "parameters": { > "entity": "playTarget" > } > } > }, > { > "title": "setLounging", > "type": "action", > "name": "setLounging", > "parameters": { > "entity": "playTarget" > } > } > ] > } > }, > { 370c415 < "path": "/behaviors/npc/react.behavior", --- > "name": "react", 381a427,432 > "title": "resetLounging", > "type": "action", > "name": "resetLounging", > "parameters": {} > }, > { 398c449 < "path": "/behaviors/npc/finalreact.behavior", --- > "name": "finalreact", behaviors\npc\react.behavior 6d5 < "/npcs/bmain.lua", 8,11c7 < "/scripts/actions/status.lua", < "/scripts/actions/movement.lua", < "/scripts/actions/entities.lua", < "/scripts/actions/math.lua" --- > "/npcs/bmain.lua" 53c49 < "title": "selector", --- > "title": "sequence", 55,56c51,57 < "name": "selector", < "parameters": {}, --- > "name": "sequence", > "parameters": { > "type": "sliding", > "state": "off", > "fromEntity": "attackTarget", > "toEntity": "fleeTarget" > }, 59,445c60,69 < "title": "playSimpleReaction", < "type": "action", < "name": "playSimpleReaction", < "parameters": { < "reaction": "reaction" < } < }, < { < "title": "sequence", < "type": "composite", < "name": "sequence", < "parameters": {}, < "children": [ < { < "title": "isReaction", < "type": "action", < "name": "isReaction", < "parameters": { < "reactionVar": "reaction", < "reactionName": "bored" < } < }, < { < "title": "emote", < "type": "action", < "name": "emote", < "parameters": { < "emote": "sleep" < } < }, < { < "title": "timer", < "type": "action", < "name": "timer", < "parameters": { < "time": 0.5 < } < }, < { < "title": "addEphemeralEffect", < "type": "action", < "name": "addEphemeralEffect", < "parameters": { < "name": "bored", < "duration": "2" < } < }, < { < "title": "timer", < "type": "action", < "name": "timer", < "parameters": { < "time": 1.5 < } < }, < { < "title": "setVelocity", < "type": "action", < "name": "setVelocity", < "parameters": { < "velocity": [ < 0, < 15 < ] < } < } < ] < }, < { < "title": "sequence", < "type": "composite", < "name": "sequence", < "parameters": {}, < "children": [ < { < "title": "isReaction", < "type": "action", < "name": "isReaction", < "parameters": { < "reactionVar": "reaction", < "reactionName": "hop" < } < }, < { < "title": "setVelocity", < "type": "action", < "name": "setVelocity", < "parameters": { < "velocity": [ < 0, < 25 < ] < } < } < ] < }, < { < "title": "sequence", < "type": "composite", < "name": "sequence", < "parameters": {}, < "children": [ < { < "title": "isReaction", < "type": "action", < "name": "isReaction", < "parameters": { < "reactionVar": "reaction", < "reactionName": "jumpforjoy" < } < }, < { < "title": "emote", < "type": "action", < "name": "emote", < "parameters": { < "emote": "happy" < } < }, < { < "title": "repeater", < "type": "decorator", < "name": "repeater", < "parameters": { < "maxLoops": 3, < "untilSuccess": false < }, < "child": { < "title": "repeater", < "type": "decorator", < "name": "repeater", < "parameters": { < "maxLoops": -1, < "untilSuccess": true < }, < "child": { < "title": "sequence", < "type": "composite", < "name": "sequence", < "parameters": {}, < "children": [ < { < "title": "timer", < "type": "action", < "name": "timer", < "parameters": { < "time": 0.2 < } < }, < { < "title": "onGround", < "type": "action", < "name": "onGround", < "parameters": {} < }, < { < "title": "setVelocity", < "type": "action", < "name": "setVelocity", < "parameters": { < "velocity": [ < 0, < 15 < ] < } < } < ] < } < } < } < ] < }, < { < "title": "sequence", < "type": "composite", < "name": "sequence", < "parameters": {}, < "children": [ < { < "title": "isReaction", < "type": "action", < "name": "isReaction", < "parameters": { < "reactionVar": "reaction", < "reactionName": "love" < } < }, < { < "title": "emote", < "type": "action", < "name": "emote", < "parameters": { < "emote": "happy" < } < }, < { < "title": "addEphemeralEffect", < "type": "action", < "name": "addEphemeralEffect", < "parameters": { < "name": "love" < } < }, < { < "title": "timer", < "type": "action", < "name": "timer", < "parameters": { < "time": 1.5 < } < } < ] < }, < { < "title": "sequence", < "type": "composite", < "name": "sequence", < "parameters": {}, < "children": [ < { < "title": "isReaction", < "type": "action", < "name": "isReaction", < "parameters": { < "reactionVar": "reaction", < "reactionName": "nosebleed" < } < }, < { < "title": "emote", < "type": "action", < "name": "emote", < "parameters": { < "emote": "happy" < } < }, < { < "title": "timer", < "type": "action", < "name": "timer", < "parameters": { < "time": 1 < } < }, < { < "title": "entityDirection", < "type": "action", < "name": "entityDirection", < "parameters": { < "entity": "self", < "target": "reactTarget" < }, < "output": { < "direction": "direction" < } < }, < { < "title": "selector", < "type": "composite", < "name": "selector", < "parameters": {}, < "children": [ < { < "title": "sequence", < "type": "composite", < "name": "sequence", < "parameters": {}, < "children": [ < { < "title": "greaterThan", < "type": "action", < "name": "greaterThan", < "parameters": { < "first": "direction", < "second": 0 < } < }, < { < "title": "addEphemeralEffect", < "type": "action", < "name": "addEphemeralEffect", < "parameters": { < "name": "nosebleedright", < "duration": 0.2 < } < } < ] < }, < { < "title": "addEphemeralEffect", < "type": "action", < "name": "addEphemeralEffect", < "parameters": { < "name": "nosebleedleft", < "duration": 0.2 < } < } < ] < } < ] < }, < { < "title": "sequence", < "type": "composite", < "name": "sequence", < "parameters": {}, < "children": [ < { < "title": "isReaction", < "type": "action", < "name": "isReaction", < "parameters": { < "reactionVar": "reaction", < "reactionName": "vomit" < } < }, < { < "title": "emote", < "type": "action", < "name": "emote", < "parameters": { < "emote": "oooh" < } < }, < { < "title": "timer", < "type": "action", < "name": "timer", < "parameters": { < "time": 1 < } < }, < { < "title": "entityDirection", < "type": "action", < "name": "entityDirection", < "parameters": { < "entity": "self", < "target": "reactTarget" < }, < "output": { < "direction": "direction", < "vector": "" < } < }, < { < "title": "selector", < "type": "composite", < "name": "selector", < "parameters": {}, < "children": [ < { < "title": "sequence", < "type": "composite", < "name": "sequence", < "parameters": {}, < "children": [ < { < "title": "greaterThan", < "type": "action", < "name": "greaterThan", < "parameters": { < "first": "direction", < "second": 0 < } < }, < { < "title": "addEphemeralEffect", < "type": "action", < "name": "addEphemeralEffect", < "parameters": { < "name": "vomitright", < "duration": 0.2 < } < } < ] < }, < { < "title": "addEphemeralEffect", < "type": "action", < "name": "addEphemeralEffect", < "parameters": { < "name": "vomitleft", < "duration": 0.2 < } < } < ] --- > "title": "inverter", > "type": "decorator", > "name": "inverter", > "parameters": {}, > "child": { > "title": "isFinalReaction", > "type": "action", > "name": "isFinalReaction", > "parameters": { > "reaction": "reaction" 447,624c71 < ] < }, < { < "title": "sequence", < "type": "composite", < "name": "sequence", < "parameters": {}, < "children": [ < { < "title": "isReaction", < "type": "action", < "name": "isReaction", < "parameters": { < "reactionVar": "reaction", < "reactionName": "punch" < } < }, < { < "title": "emote", < "type": "action", < "name": "emote", < "parameters": { < "emote": "annoyed" < } < }, < { < "title": "timer", < "type": "action", < "name": "timer", < "parameters": { < "time": 0.5 < } < }, < { < "title": "dance", < "type": "action", < "name": "dance", < "parameters": { < "dance": "punch" < } < }, < { < "title": "timer", < "type": "action", < "name": "timer", < "parameters": { < "time": 1.5 < } < } < ] < }, < { < "title": "sequence", < "type": "composite", < "name": "sequence", < "parameters": {}, < "children": [ < { < "title": "isReaction", < "type": "action", < "name": "isReaction", < "parameters": { < "reactionVar": "reaction", < "reactionName": "gong" < } < }, < { < "title": "dance", < "type": "action", < "name": "dance", < "parameters": { < "dance": "punch" < } < }, < { < "title": "timer", < "type": "action", < "name": "timer", < "parameters": { < "time": 0.25 < } < }, < { < "title": "interactObject", < "type": "action", < "name": "interactObject", < "parameters": { < "entity": "reactTarget" < } < }, < { < "title": "timer", < "type": "action", < "name": "timer", < "parameters": { < "time": 0.25 < } < } < ] < }, < { < "title": "sequence", < "type": "composite", < "name": "sequence", < "parameters": {}, < "children": [ < { < "title": "isReaction", < "type": "action", < "name": "isReaction", < "parameters": { < "reactionVar": "reaction", < "reactionName": "drum" < } < }, < { < "title": "dance", < "type": "action", < "name": "dance", < "parameters": { < "dance": "typing" < } < }, < { < "title": "emote", < "type": "action", < "name": "emote", < "parameters": { < "emote": "happy" < } < }, < { < "title": "repeater", < "type": "decorator", < "name": "repeater", < "parameters": { < "maxLoops": 8, < "untilSuccess": false < }, < "child": { < "title": "sequence", < "type": "composite", < "name": "sequence", < "parameters": { < "type": "sliding", < "state": "off", < "fromEntity": "attackTarget", < "toEntity": "fleeTarget" < }, < "children": [ < { < "title": "interactObject", < "type": "action", < "name": "interactObject", < "parameters": { < "entity": "reactTarget" < } < }, < { < "title": "timer", < "type": "action", < "name": "timer", < "parameters": { < "time": 0.25 < } < } < ] < } < }, < { < "title": "timer", < "type": "action", < "name": "timer", < "parameters": { < "time": 0.25 < } < } < ] --- > } 627c74 < "title": "sequence", --- > "title": "selector", 629c76 < "name": "sequence", --- > "name": "selector", 633,666c80 < "title": "isReaction", < "type": "action", < "name": "isReaction", < "parameters": { < "reactionVar": "reaction", < "reactionName": "posedance" < } < }, < { < "title": "emote", < "type": "action", < "name": "emote", < "parameters": { < "emote": "happy" < } < }, < { < "title": "faceEntity", < "type": "action", < "name": "faceEntity", < "parameters": { < "entity": "reactTarget" < } < }, < { < "title": "dance", < "type": "action", < "name": "dance", < "parameters": { < "dance": "posedance" < } < }, < { < "title": "timer", --- > "title": "playSimpleReaction", 668c82 < "name": "timer", --- > "name": "playSimpleReaction", 670c84 < "time": 1 --- > "reaction": "reaction" 674c88 < "title": "reverseDirection", --- > "title": "playBehaviorReaction", 676c90 < "name": "reverseDirection", --- > "name": "playBehaviorReaction", 678,681c92 < "direction": "direction" < }, < "output": { < "direction": "" --- > "reaction": "reaction" behaviors\npc\reactionchat.behavior 89c89 < "path": "/behaviors/npc/react.behavior", --- > "name": "react", 204c204 < "path": "/behaviors/npc/react.behavior", --- > "name": "react", behaviors\npc\tenant.behavior 75c75 < "path": "/behaviors/tenant/returnhome.behavior", --- > "name": "Tenant - Return Home", 151c151 < "path": "/behaviors/tenant/returnhome.behavior", --- > "name": "Tenant - Return Home", 272c272 < "path": "/behaviors/tenant/returnhome.behavior", --- > "name": "Tenant - Return Home", 278c278 < "path": "/behaviors/tenant/grumble.behavior", --- > "name": "Tenant - Grumble", 300c300 < "path": "/behaviors/tenant/grumble.behavior", --- > "name": "Tenant - Grumble", behaviors\npc\tutorial.behavior 13c13 < "path": "/behaviors/npc/flee.behavior", --- > "name": "flee", 18c18 < "path": "/behaviors/npc/converseseq.behavior", --- > "name": "converseseq", 24c24 < "path": "/behaviors/npc/friendlyidle.behavior", --- > "name": "Friendly NPC Idle Behavior", behaviors\npc\tutorialtenant.behavior 13c13 < "path": "/behaviors/npc/tenant.behavior", --- > "name": "Tenant Baseline Behavior", 19c19 < "path": "/behaviors/npc/flee.behavior", --- > "name": "flee", 24c24 < "path": "/behaviors/npc/converseseq.behavior", --- > "name": "converseseq", 30c30 < "path": "/behaviors/npc/friendlyidle.behavior", --- > "name": "Friendly NPC Idle Behavior", behaviors\npc\villageguard.behavior 2c2 < "name": "guard", --- > "name": "villageguard", 19c19 < "path": "/behaviors/npc/tenant.behavior", --- > "name": "Tenant Baseline Behavior", 34c34 < "path": "/behaviors/npc/tracking.behavior", --- > "name": "npctracking", 222c222 < "path": "/behaviors/npc/combat.behavior", --- > "name": "npccombat", 232c232 < "path": "/behaviors/npc/hound.behavior", --- > "name": "hound", 238c238 < "path": "/behaviors/npc/converse.behavior", --- > "name": "converse", 243c243 < "path": "/behaviors/npc/guardidle.behavior", --- > "name": "Guard NPC Idle Behavior", behaviors\npc\villager.behavior 14c14 < "path": "/behaviors/npc/tenant.behavior", --- > "name": "Tenant Baseline Behavior", 20c20 < "path": "/behaviors/npc/flee.behavior", --- > "name": "flee", 25c25 < "path": "/behaviors/npc/converse.behavior", --- > "name": "converse", 30c30 < "path": "/behaviors/npc/friendlyidle.behavior", --- > "name": "Friendly NPC Idle Behavior", behaviors\npc\reactions\follow.behavior 2c2 < "name": "Follow reaction", --- > "name": "reaction-follow", behaviors\sequences\floranmission\floranmissionstart.behavior 226c226 < "path": "/behaviors/npc/converseseq.behavior" --- > "name": "converseseq" 245c245 < "path": "/behaviors/sequences/beamout.behavior" --- > "name": "beamout" behaviors\sequences\floranmission\nuruboss.behavior 32c32 < "path": "/behaviors/monsters/tracking.behavior", --- > "name": "tracking", 94c94 < "path": "/behaviors/sequences/floranmission/nurustartboss.behavior", --- > "name": "nurustartboss", 200c200 < "path": "/behaviors/sequences/floranmission/nurucombat.behavior", --- > "name": "nurucombat", 212c212 < "path": "/behaviors/sequences/floranmission/nuruendscene.behavior", --- > "name": "nuruendscene", behaviors\tenant\returnhome.behavior 53c53 < "path": "returnHome.minDistance", --- > "name": "returnHome.minDistance", humanoid\dances\typing.dance 3c3 < "states" : ["idle"], --- > "states" : ["idle","sit"], 9,12c9,12 < [ "idle.2", "rotation", "swimIdle.1", [0, 0], [2, 0], [-2, 0] ], < [ "idle.2", "rotation", "swimIdle.2", [-1, 0], [2, -1], [-1, 0] ], < [ "idle.2", "rotation", "swimIdle.1", [-1, 0], [1, 0], [-2, 1] ], < [ "idle.2", "rotation", "swimIdle.2", [0, 0], [1, -1], [-1, 1] ] --- > [ null, "rotation", "swimIdle.1", [0, 0], [2, -2], [-2, -2] ], > [ null, "rotation", "swimIdle.2", [-1, 0], [2, -3], [-1, -2] ], > [ null, "rotation", "swimIdle.1", [-1, 0], [1, -2], [-2, -1] ], > [ null, "rotation", "swimIdle.2", [0, 0], [1, -3], [-1, -1] ] items\armors\chest.frames 15c15,16 < "idle.5" : "chest.1" --- > "idle.5" : "chest.1", > "duck.1" : "duck" items\armors\chestf.frames 15c15,16 < "idle.5" : "chest.1" --- > "idle.5" : "chest.1", > "duck.1" : "duck" items\armors\chestm.frames 15c15,16 < "idle.5" : "chest.1" --- > "idle.5" : "chest.1", > "duck.1" : "duck" monsters\boss\spiderboss\spiderboss.monstertype 20c20 < "behavior" : "/behaviors/monsters/boss/spiderboss/main.behavior", --- > "behavior" : "spiderboss", monsters\critter\armadillo\armadillo.monstertype 20c20 < "behavior" : "/behaviors/monsters/critter/walking.behavior", --- > "behavior" : "walkingcritter", monsters\critter\birdcritter\birdcritter.monstertype 20c20 < "behavior" : "/behaviors/monsters/critter/flying.behavior", --- > "behavior" : "flyingcritter", monsters\critter\blipcritter\blipcritter.monstertype 21c21 < "behavior" : "/behaviors/monsters/critter/walking.behavior", --- > "behavior" : "walkingcritter", monsters\critter\bouncebagcritter\bouncebagcritter.monstertype 20c20 < "behavior" : "/behaviors/monsters/critter/walking.behavior", --- > "behavior" : "walkingcritter", monsters\critter\bowbirdcritter\bowbirdcritter.monstertype 20c20 < "behavior" : "/behaviors/monsters/critter/flying.behavior", --- > "behavior" : "flyingcritter", monsters\critter\bunny\bunny.monstertype 21c21 < "behavior" : "/behaviors/monsters/critter/walking.behavior", --- > "behavior" : "walkingcritter", monsters\critter\crabcritter\crabcritter.monstertype 21c21 < "behavior" : "/behaviors/monsters/critter/walking.behavior", --- > "behavior" : "walkingcritter", monsters\critter\deserttortoisecritter\deserttortoisecritter.monstertype 21c21 < "behavior" : "/behaviors/monsters/critter/walking.behavior", --- > "behavior" : "walkingcritter", monsters\critter\eyefriend\eyefriend.monstertype 21c21 < "behavior" : "/behaviors/monsters/critter/walking.behavior", --- > "behavior" : "walkingcritter", monsters\critter\eyepodcritter\eyepodcritter.monstertype 21c21 < "behavior" : "/behaviors/monsters/critter/walking.behavior", --- > "behavior" : "walkingcritter", monsters\critter\fishcritter\fishcritter.monstertype 21c21 < "behavior" : "/behaviors/monsters/critter/swimming.behavior", --- > "behavior" : "swimming", monsters\critter\floatbagcritter\floatbagcritter.monstertype 20c20 < "behavior" : "/behaviors/monsters/critter/flying.behavior", --- > "behavior" : "flyingcritter", monsters\critter\frog\frog.monstertype 21c21 < "behavior" : "/behaviors/monsters/critter/walking.behavior", --- > "behavior" : "walkingcritter", monsters\critter\groopcritter\groopcritter.monstertype 21c21 < "behavior" : "/behaviors/monsters/critter/walking.behavior", --- > "behavior" : "walkingcritter", monsters\critter\gullcritter\gullcritter.monstertype 20c20 < "behavior" : "/behaviors/monsters/critter/flying.behavior", --- > "behavior" : "flyingcritter", monsters\critter\hedgehogcritter\hedgehogcritter.monstertype 20c20 < "behavior" : "/behaviors/monsters/critter/walking.behavior", --- > "behavior" : "walkingcritter", monsters\critter\jellycritter\jellycritter.monstertype 21c21 < "behavior" : "/behaviors/monsters/critter/blooping.behavior", --- > "behavior" : "blooping", monsters\critter\mousecritter\mousecritter.monstertype 20c20 < "behavior" : "/behaviors/monsters/critter/walking.behavior", --- > "behavior" : "walkingcritter", monsters\critter\owlcritter\owlcritter.monstertype 20c20 < "behavior" : "/behaviors/monsters/critter/flying.behavior", --- > "behavior" : "flyingcritter", monsters\critter\ravencritter\ravencritter.monstertype 20c20 < "behavior" : "/behaviors/monsters/critter/flying.behavior", --- > "behavior" : "flyingcritter", monsters\critter\reasonablecritter\reasonablecritter.monstertype 20c20 < "behavior" : "/behaviors/monsters/critter/walking.behavior", --- > "behavior" : "walkingcritter", monsters\critter\redbreastcritter\redbreastcritter.monstertype 20c20 < "behavior" : "/behaviors/monsters/critter/flying.behavior", --- > "behavior" : "flyingcritter", monsters\critter\sackbagcritter\sackbagcritter.monstertype 20c20 < "behavior" : "/behaviors/monsters/critter/walking.behavior", --- > "behavior" : "walkingcritter", monsters\critter\snail\snail.monstertype 20c20 < "behavior" : "/behaviors/monsters/critter/walking.behavior", --- > "behavior" : "walkingcritter", monsters\critter\snooglecritter\snooglecritter.monstertype 20c20 < "behavior" : "/behaviors/monsters/critter/walking.behavior", --- > "behavior" : "walkingcritter", monsters\critter\sporelingcritter\sporelingcritter.monstertype 21c21 < "behavior" : "/behaviors/monsters/critter/walking.behavior", --- > "behavior" : "walkingcritter", monsters\critter\squeekcritter\squeekcritter.monstertype 21c21 < "behavior" : "/behaviors/monsters/critter/walking.behavior", --- > "behavior" : "walkingcritter", monsters\critter\squidcritter\squidcritter.monstertype 21c21 < "behavior" : "/behaviors/monsters/critter/blooping.behavior", --- > "behavior" : "blooping", monsters\critter\squirrelcritter\squirrelcritter.monstertype 20c20 < "behavior" : "/behaviors/monsters/critter/walking.behavior", --- > "behavior" : "walkingcritter", monsters\critter\tortoise\tortoise.monstertype 20c20 < "behavior" : "/behaviors/monsters/critter/walking.behavior", --- > "behavior" : "walkingcritter", monsters\critter\vulturecritter\vulturecritter.monstertype 20c20 < "behavior" : "/behaviors/monsters/critter/flying.behavior", --- > "behavior" : "flyingcritter", monsters\critter\wintercritter\wintercritter.monstertype 21c21 < "behavior" : "/behaviors/monsters/critter/walking.behavior", --- > "behavior" : "walkingcritter", monsters\critter\wurmcritter\wurmcritter.monstertype 21c21 < "behavior" : "/behaviors/monsters/critter/walking.behavior", --- > "behavior" : "walkingcritter", monsters\unique\ixoling\ixoling.monstertype 18c18 < "behavior" : "/behaviors/monsters/unique/ixoling.behavior", --- > "behavior" : "ixoling", npcs\default_reactions.config 68a69,71 > "console" : [ > [1.0, "typing"] > ], 127a131,134 > "playpiano" : { > "dance" : "typing", > "emote" : "blabbering" > }, 147c154 < "emote" : "happy", --- > "emote" : "annoyed", 160a168,222 > } > }, > > // Maps reaction names to behavior trees > "behaviorReactions" : { > "bored" : { > "behavior" : "reaction-bored" > }, > "drum" : { > "behavior" : "reaction-drum" > }, > "flee" : { > "behavior" : "reaction-flee" > }, > "follow" : { > "behavior" : "reaction-follow", > "parameters" : { > "duration" : 60 > } > }, > "chase" : { > "behavior" : "reaction-follow", > "parameters" : { > "duration" : 3 > } > }, > "gohome" : { > "behavior" : "reaction-gohome" > }, > "gong" : { > "behavior" : "reaction-gong" > }, > "hop" : { > "behavior" : "reaction-hop" > }, > "jumpforjoy" : { > "behavior" : "reaction-jumpforjoy" > }, > "love" : { > "behavior" : "reaction-love" > }, > "mourn" : { > "behavior" : "reaction-mourn" > }, > "nosebleed" : { > "behavior" : "reaction-nosebleed" > }, > "posedance" : { > "behavior" : "reaction-posedance" > }, > "punch" : { > "behavior" : "reaction-punch" > }, > "vomit" : { > "behavior" : "reaction-vomit" npcs\follower.npctype 13c13 < "behavior" : "/behaviors/npc/follower.behavior", --- > "behavior" : "follower", npcs\guard.npctype 10c10 < "behavior" : "/behaviors/npc/guard.behavior", --- > "behavior" : "guard", npcs\hostile.npctype 12c12 < "behavior" : "/behaviors/npc/hostileguard.behavior", --- > "behavior" : "hostileguard", npcs\merchant.npctype 16c16 < "behavior" : "/behaviors/npc/merchant.behavior", --- > "behavior" : "merchant", npcs\nakedvillager.npctype 9c9 < "behavior" : "/behaviors/npc/villager.behavior", --- > "behavior" : "villager", npcs\towerascendant.npctype 6c6 < "behavior" : "/behaviors/npc/idler.behavior", --- > "behavior" : "idler", npcs\tutorial.npctype 10c10 < "behavior" : "/behaviors/npc/tutorial.behavior", --- > "behavior" : "tutorial", npcs\tutorialtenant.npctype 10c10 < "behavior" : "/behaviors/npc/tutorialtenant.behavior", --- > "behavior" : "tutorialtenant", npcs\villageguard.npctype 10c10 < "behavior" : "/behaviors/npc/villageguard.behavior", --- > "behavior" : "villageguard", npcs\villager.npctype 9c9 < "behavior" : "/behaviors/npc/villager.behavior", --- > "behavior" : "villager", npcs\mission\florancelebrator.npctype 13c13 < "behavior" : "/behaviors/npc/floranspectator.behavior", --- > "behavior" : "spectator", npcs\mission\floranspectator.npctype 13c13 < "behavior" : "/behaviors/npc/floranspectator.behavior", --- > "behavior" : "spectator", npcs\story\nuru.npctype 22c22 < "behavior" : "/behaviors/sequences/floranmission/nuruboss.behavior", --- > "behavior" : "nuruboss", objects\apex\apexconsole1\apexconsole1.object 29c29,32 < "scripts" : [ "/objects/wired/switch/switch.lua" ], --- > "scripts" : [ > "/objects/wired/switch/switch.lua", > "/scripts/npcToyObject.lua" > ], 44c47,57 < "outboundNodes" : [ [0, 0] ] --- > "outboundNodes" : [ [0, 0] ], > > "npcToy" : { > "influence" : [ > "wallswitch" > ], > "defaultReactions" : {}, > "preciseStandPositionLeft" : [-1.5, 0.0], > "preciseStandPositionRight" : [2.0, 0.0], > "maxNpcs" : 1 > } objects\avian\tombstone1\tombstone1.object 33c33,53 < "npcToy" : {} --- > "scripts" : [ > "/scripts/npcToyObject.lua" > ], > > "npcToy" : { > "influence" : [ > "tombstone", > "tombstoneComplete" > ], > "defaultReactions" : { > "tombstone" : [ > [1.0, "mourn"] > ], > "tombstoneComplete" : [ > [1.0, "cry"] > ] > }, > "preciseStandPositionLeft" : [-2.5, 0.0], > "preciseStandPositionRight" : [2.5, 0.0], > "maxNpcs" : 1 > } objects\avian\tombstone10\tombstone10.object 33c33,53 < "npcToy" : {} --- > "scripts" : [ > "/scripts/npcToyObject.lua" > ], > > "npcToy" : { > "influence" : [ > "tombstone", > "tombstoneComplete" > ], > "defaultReactions" : { > "tombstone" : [ > [1.0, "mourn"] > ], > "tombstoneComplete" : [ > [1.0, "cry"] > ] > }, > "preciseStandPositionLeft" : [-2.5, 0.0], > "preciseStandPositionRight" : [2.5, 0.0], > "maxNpcs" : 1 > } objects\avian\tombstone11\tombstone11.object 33c33,53 < "npcToy" : {} --- > "scripts" : [ > "/scripts/npcToyObject.lua" > ], > > "npcToy" : { > "influence" : [ > "tombstone", > "tombstoneComplete" > ], > "defaultReactions" : { > "tombstone" : [ > [1.0, "mourn"] > ], > "tombstoneComplete" : [ > [1.0, "cry"] > ] > }, > "preciseStandPositionLeft" : [-2.5, 0.0], > "preciseStandPositionRight" : [2.5, 0.0], > "maxNpcs" : 1 > } objects\avian\tombstone2\tombstone2.object 33c33,53 < "npcToy" : {} --- > "scripts" : [ > "/scripts/npcToyObject.lua" > ], > > "npcToy" : { > "influence" : [ > "tombstone", > "tombstoneComplete" > ], > "defaultReactions" : { > "tombstone" : [ > [1.0, "mourn"] > ], > "tombstoneComplete" : [ > [1.0, "cry"] > ] > }, > "preciseStandPositionLeft" : [-2.5, 0.0], > "preciseStandPositionRight" : [2.5, 0.0], > "maxNpcs" : 1 > } objects\avian\tombstone3\tombstone3.object 33c33,53 < "npcToy" : {} --- > "scripts" : [ > "/scripts/npcToyObject.lua" > ], > > "npcToy" : { > "influence" : [ > "tombstone", > "tombstoneComplete" > ], > "defaultReactions" : { > "tombstone" : [ > [1.0, "mourn"] > ], > "tombstoneComplete" : [ > [1.0, "cry"] > ] > }, > "preciseStandPositionLeft" : [-2.5, 0.0], > "preciseStandPositionRight" : [2.5, 0.0], > "maxNpcs" : 1 > } objects\avian\tombstone4\tombstone4.object 33c33,53 < "npcToy" : {} --- > "scripts" : [ > "/scripts/npcToyObject.lua" > ], > > "npcToy" : { > "influence" : [ > "tombstone", > "tombstoneComplete" > ], > "defaultReactions" : { > "tombstone" : [ > [1.0, "mourn"] > ], > "tombstoneComplete" : [ > [1.0, "cry"] > ] > }, > "preciseStandPositionLeft" : [-2.5, 0.0], > "preciseStandPositionRight" : [2.5, 0.0], > "maxNpcs" : 1 > } objects\avian\tombstone5\tombstone5.object 33c33,53 < "npcToy" : {} --- > "scripts" : [ > "/scripts/npcToyObject.lua" > ], > > "npcToy" : { > "influence" : [ > "tombstone", > "tombstoneComplete" > ], > "defaultReactions" : { > "tombstone" : [ > [1.0, "mourn"] > ], > "tombstoneComplete" : [ > [1.0, "cry"] > ] > }, > "preciseStandPositionLeft" : [-2.5, 0.0], > "preciseStandPositionRight" : [2.5, 0.0], > "maxNpcs" : 1 > } objects\avian\tombstone6\tombstone6.object 33c33,53 < "npcToy" : {} --- > "scripts" : [ > "/scripts/npcToyObject.lua" > ], > > "npcToy" : { > "influence" : [ > "tombstone", > "tombstoneComplete" > ], > "defaultReactions" : { > "tombstone" : [ > [1.0, "mourn"] > ], > "tombstoneComplete" : [ > [1.0, "cry"] > ] > }, > "preciseStandPositionLeft" : [-2.5, 0.0], > "preciseStandPositionRight" : [2.5, 0.0], > "maxNpcs" : 1 > } objects\avian\tombstone7\tombstone7.object 33c33,53 < "npcToy" : {} --- > "scripts" : [ > "/scripts/npcToyObject.lua" > ], > > "npcToy" : { > "influence" : [ > "tombstone", > "tombstoneComplete" > ], > "defaultReactions" : { > "tombstone" : [ > [1.0, "mourn"] > ], > "tombstoneComplete" : [ > [1.0, "cry"] > ] > }, > "preciseStandPositionLeft" : [-2.5, 0.0], > "preciseStandPositionRight" : [2.5, 0.0], > "maxNpcs" : 1 > } objects\avian\tombstone8\tombstone8.object 33c33,53 < "npcToy" : {} --- > "scripts" : [ > "/scripts/npcToyObject.lua" > ], > > "npcToy" : { > "influence" : [ > "tombstone", > "tombstoneComplete" > ], > "defaultReactions" : { > "tombstone" : [ > [1.0, "mourn"] > ], > "tombstoneComplete" : [ > [1.0, "cry"] > ] > }, > "preciseStandPositionLeft" : [-2.5, 0.0], > "preciseStandPositionRight" : [2.5, 0.0], > "maxNpcs" : 1 > } objects\avian\tombstone9\tombstone9.object 33c33,53 < "npcToy" : {} --- > "scripts" : [ > "/scripts/npcToyObject.lua" > ], > > "npcToy" : { > "influence" : [ > "tombstone", > "tombstoneComplete" > ], > "defaultReactions" : { > "tombstone" : [ > [1.0, "mourn"] > ], > "tombstoneComplete" : [ > [1.0, "cry"] > ] > }, > "preciseStandPositionLeft" : [-2.5, 0.0], > "preciseStandPositionRight" : [2.5, 0.0], > "maxNpcs" : 1 > } objects\generic\wreckconsole1\wreckconsole1.object 31c31,48 < ] --- > ], > > "scripts" : [ "/scripts/npcToyObject.lua" ], > "npcToy" : { > "influence" : [ > "wallbutton", > "brokenConsole" > ], > "defaultReactions" : { > "brokenConsole" : [ > [1.0, "annoyed"], > [1.0, "punch"] > ] > }, > "preciseStandPositionLeft" : [-0.5, 0.0], > "preciseStandPositionRight" : [2.0, 0.0], > "maxNpcs" : 1 > } objects\human\bunkerconsole1\bunkerconsole1.object 32c32,41 < "npcToy" : {} --- > "scripts" : [ "/scripts/npcToyObject.lua" ], > "npcToy" : { > "influence" : [ > "console" > ], > "defaultReactions" : {}, > "preciseStandPositionLeft" : [-0.5, 0.0], > "preciseStandPositionRight" : [1.0, 0.0], > "maxNpcs" : 1 > } objects\human\bunkerconsole2\bunkerconsole2.object 50c50,53 < "scripts" : [ "/objects/wired/light/light.lua" ], --- > "scripts" : [ > "/objects/wired/light/light.lua", > "/scripts/npcToyObject.lua" > ], 59c62,70 < "npcToy" : {} --- > "npcToy" : { > "influence" : [ > "console" > ], > "defaultReactions" : {}, > "preciseStandPositionLeft" : [-1.0, 0.0], > "preciseStandPositionRight" : [1.5, 0.0], > "maxNpcs" : 1 > } objects\human\bunkerconsole3\bunkerconsole3.object 51c51,54 < "scripts" : [ "/objects/wired/light/light.lua" ], --- > "scripts" : [ > "/objects/wired/light/light.lua", > "/scripts/npcToyObject.lua" > ], 60c63,71 < "npcToy" : {} --- > "npcToy" : { > "influence" : [ > "wallbutton" > ], > "defaultReactions" : {}, > "preciseStandPositionLeft" : [-1.0, 0.0], > "preciseStandPositionRight" : [1.5, 0.0], > "maxNpcs" : 1 > } objects\human\bunkerconsole4\bunkerconsole4.object 50c50,53 < "scripts" : [ "/objects/wired/light/light.lua" ], --- > "scripts" : [ > "/objects/wired/light/light.lua", > "/scripts/npcToyObject.lua" > ], 59c62,70 < "npcToy" : {} --- > "npcToy" : { > "influence" : [ > "wallbutton" > ], > "defaultReactions" : {}, > "preciseStandPositionLeft" : [-1.0, 0.0], > "preciseStandPositionRight" : [1.5, 0.0], > "maxNpcs" : 1 > } objects\minibiome\smashablerocks\copperrock\copperrock.object 57,58d56 < "health" : 20, < 60c58 < "smashParticles" : [ { "count" : 6, "particle" : "rockshard" } ], --- > "smashParticles" : [ { "count" : 8, "particle" : "rockshard" } ], objects\minibiome\smashablerocks\copperrocksmall\copperrocksmall.object 56,57d55 < < "health" : 10, objects\minibiome\smashablerocks\diamondrock\diamondrock.object 56,57d55 < < "health" : 60, 60c58 < "smashParticles" : [ { "count" : 6, "particle" : "rockshard" } ], --- > "smashParticles" : [ { "count" : 8, "particle" : "rockshard" } ], objects\minibiome\smashablerocks\diamondrocksmall\diamondrocksmall.object 56,57d55 < < "health" : 30, objects\minibiome\smashablerocks\goldrock\goldrock.object 57,58d56 < "health" : 40, < 60c58 < "smashParticles" : [ { "count" : 6, "particle" : "rockshard" } ], --- > "smashParticles" : [ { "count" : 8, "particle" : "rockshard" } ], objects\minibiome\smashablerocks\goldrocksmall\goldrocksmall.object 56,57d55 < < "health" : 20, objects\minibiome\smashablerocks\platinumrock\platinumrock.object 57,58d56 < "health" : 50, < 60c58 < "smashParticles" : [ { "count" : 6, "particle" : "rockshard" } ], --- > "smashParticles" : [ { "count" : 8, "particle" : "rockshard" } ], objects\minibiome\smashablerocks\platinumrocksmall\platinumrocksmall.object 57,58d56 < "health" : 25, < objects\minibiome\smashablerocks\silverrock\silverrock.object 57,58d56 < "health" : 30, < 60c58 < "smashParticles" : [ { "count" : 6, "particle" : "rockshard" } ], --- > "smashParticles" : [ { "count" : 8, "particle" : "rockshard" } ], objects\minibiome\smashablerocks\silverrocksmall\silverrocksmall.object 57,58d56 < "health" : 15, < objects\mission\lunarbaseconsole\lunarbaseconsole.object 55c55,58 < "scripts" : [ "/objects/wired/switch/switch.lua" ], --- > "scripts" : [ > "/objects/wired/switch/switch.lua", > "/scripts/npcToyObject.lua" > ], 71c74,84 < "outboundNodes" : [ [0, 0] ] --- > "outboundNodes" : [ [0, 0] ], > > "npcToy" : { > "influence" : [ > "console" > ], > "defaultReactions" : {}, > "preciseStandPositionLeft" : [-0.5, 0.0], > "preciseStandPositionRight" : [2.0, 0.0], > "maxNpcs" : 1 > } objects\noisy\noisy.lua 11c11,15 < end \ No newline at end of file --- > end > > function onNpcPlay(npcId) > onInteraction() > end objects\outpost\outpostconsole\outpostconsole.object 56c56,59 < "scripts" : [ "/objects/wired/switch/switch.lua" ], --- > "scripts" : [ > "/objects/wired/switch/switch.lua", > "/scripts/npcToyObject.lua" > ], 72c75,85 < "outboundNodes" : [ [0, 0] ] --- > "outboundNodes" : [ [0, 0] ], > > "npcToy" : { > "influence" : [ > "console" > ], > "defaultReactions" : {}, > "preciseStandPositionLeft" : [-0.5, 0.0], > "preciseStandPositionRight" : [2.0, 0.0], > "maxNpcs" : 1 > } objects\outpost\outpostsecurityconsole\outpostsecurityconsole.object 46c46,58 < ] --- > ], > > "scripts" : [ "/scripts/npcToyObject.lua" ], > > "npcToy" : { > "influence" : [ > "console" > ], > "defaultReactions" : {}, > "preciseStandPositionLeft" : [-0.5, 0.0], > "preciseStandPositionRight" : [2.0, 0.0], > "maxNpcs" : 1 > } objects\themed\saloon\saloonpiano\saloonpiano.object 48c48,49 < "/objects/noisy/noisy.lua" --- > "/objects/noisy/noisy.lua", > "/scripts/npcToyObject.lua" 53c54,70 < "npcToy" : {} --- > "objectType" : "loungeable", > "sitFlipDirection" : true, > "sitPosition" : [-16, 22], > > "npcToy" : { > "influence" : [ > "piano", > "piano", > "piano" > ], > "defaultReactions" : { > "piano" : [ > [1.0, "playpiano"] > ] > }, > "maxNpcs" : 1 > } scripts\behavior.lua 25a26 > 251c252 < path = module.path --- > name = module.name 259c260 < path = node.path, --- > name = node.name, 266c267 < local tree = root.behaviorModule(self.path) --- > local tree = root.behaviorModule(self.name) scripts\actions\entities.lua 220a221,230 > -- param entity > function isLoungeable(args, output) > args = parseArgs(args, { > entity = "loungeable" > }) > local entityId = BData:getEntity(args.entity) > if entityId == nil then return false end > return world.objectConfigParameter(entityId, "objectType") == "loungeable" > end > scripts\actions\movement.lua 73a74,79 > function controlCrouch(args, output) > args = parseArgs(args, {}) > mcontroller.controlCrouch() > return true > end > scripts\actions\reaction.lua 306a307,327 > > -- param reaction > function playBehaviorReaction(args, output) > args = parseArgs(args, { > reaction = "" > }) > > local reactionName = BData:get("reaction", args.reaction) > if reactionName == nil then return false end > local reaction = root.assetJson("/npcs/default_reactions.config:behaviorReactions")[reactionName] > if reaction == nil then return false end > > local treeModule = BTModule.new({name = reaction.behavior, parameters = reaction.parameters}) > while true do > local result = treeModule:run(args.dt) > if result ~= "running" then > return result > end > coroutine.yield("running") > end > end \ No newline at end of file