FILES ----- terrestrial_worlds.config behaviors\npc\chat.behavior behaviors\npc\friendlyidle.behavior behaviors\npc\play.behavior behaviors\npc\react.behavior behaviors\npc\reactionchat.behavior behaviors\npc\reactions\crouch.behavior behaviors\npc\reactions\crouchcollect.behavior behaviors\npc\reactions\gong.behavior behaviors\npc\reactions\hop.behavior behaviors\npc\reactions\jumpforjoy.behavior behaviors\npc\reactions\love.behavior behaviors\npc\reactions\nosebleed.behavior [NEW] behaviors\npc\reactions\pianoparty.behavior [NEW] behaviors\npc\reactions\playairhockey.behavior behaviors\npc\reactions\vomit.behavior biomes\surface_detached\alpine.biome biomes\surface_detached\bioluminescence.biome dialog\alpaca.config [NEW] dungeons\microdungeons\biomes\alpine\alpacahouseflat1.json [NEW] dungeons\microdungeons\biomes\alpine\alpacahouseflat2.json [NEW] dungeons\microdungeons\biomes\alpine\alpacahouseleft1.json [NEW] dungeons\microdungeons\biomes\alpine\alpacahouseleft2.json [NEW] dungeons\microdungeons\biomes\alpine\alpacahouseleft3.json [NEW] dungeons\microdungeons\biomes\alpine\alpacahouseleft4.json [NEW] dungeons\microdungeons\biomes\alpine\alpacahouseleft5.json [NEW] dungeons\microdungeons\biomes\alpine\alpacahouseright1.json [NEW] dungeons\microdungeons\biomes\alpine\alpacahouseright2.json [NEW] dungeons\microdungeons\biomes\alpine\alpacahouseright3.json [NEW] dungeons\microdungeons\biomes\alpine\alpacahouseright4.json [NEW] dungeons\microdungeons\biomes\alpine\alpacahouseright5.json [NEW] dungeons\microdungeons\biomes\alpine\alpinemicrodungeons.dungeon [NEW] dungeons\microdungeons\biomes\alpine\storagehut1.json [NEW] dungeons\microdungeons\biomes\alpine\storagehut2.json [NEW] dungeons\microdungeons\biomes\alpine\tunnel1.json [NEW] dungeons\microdungeons\biomes\snow\frozenwell1.json dungeons\microdungeons\biomes\snow\secretsnowcave2.json [NEW] dungeons\microdungeons\biomes\snow\secretsnowcave3.json [NEW] dungeons\microdungeons\biomes\snow\snowbeacon1.json [NEW] dungeons\microdungeons\biomes\snow\snowcabinruin1.json [NEW] dungeons\microdungeons\biomes\snow\snowhut3.json [NEW] dungeons\microdungeons\biomes\snow\snowhut4.json dungeons\microdungeons\biomes\snow\snowmicrodungeons.dungeon [NEW] dungeons\microdungeons\biomes\snow\snowsecret1.json [NEW] dungeons\microdungeons\biomes\snow\snowsecret2.json [NEW] dungeons\microdungeons\biomes\snow\snowsecret3.json [NEW] dungeons\microdungeons\biomes\snow\snowtunnel1.json [NEW] dungeons\microdungeons\biomes\snow\snowtunnel2.json [NEW] dungeons\microdungeons\biomes\snow\snowtunnel3.json [NEW] dungeons\microdungeons\biomes\snow\snowtunnel4.json [NEW] dungeons\microdungeons\biomes\snow\snowtunnel5.json items\armors\biome\bioluminescence\biolumin\bsleeve.png items\armors\biome\bioluminescence\biolumin\chestf.png items\armors\biome\bioluminescence\biolumin\chestm.png items\armors\biome\bioluminescence\biolumin\fsleeve.png items\armors\biome\bioluminescence\biolumin\head.png items\armors\biome\bioluminescence\biolumin\icons.png items\armors\biome\bioluminescence\biolumin\pants.png npcs\default_reactions.config objects\hylotl\arcadestarbound\arcadestarbound.object objects\hylotl\arcadeyellow\arcadeyellow.object objects\hylotl\hockeytable\hockeytable.object objects\minibiome\bioluminescence\glowtree\glowtree1.object objects\minibiome\bioluminescence\glowtree\glowtree1.png objects\minibiome\bioluminescence\glowtree\glowtree1lit.png objects\minibiome\bioluminescence\glowtree\glowtree2.object objects\minibiome\bioluminescence\glowtree\glowtree2.png objects\minibiome\bioluminescence\glowtree\glowtree2lit.png objects\minibiome\bioluminescence\glowtree\glowtree3.object objects\minibiome\bioluminescence\glowtree\glowtree3.png objects\minibiome\bioluminescence\glowtree\glowtree3lit.png objects\minibiome\bioluminescence\glowtree\glowtree4.png objects\minibiome\bioluminescence\glowtree\glowtree4lit.png objects\minibiome\bioluminescence\glowtree\glowtree5.png objects\minibiome\bioluminescence\glowtree\glowtree5lit.png objects\noisy\noisy.lua objects\themed\saloon\saloonpiano\saloonpiano.object scripts\actions\reaction.lua DIFFS ----- terrestrial_worlds.config 442c442 < "secondaryRegion" : [ "alpine" ], --- > "secondaryRegion" : [ "alpine", "bioluminescence" ], behaviors\npc\chat.behavior 221a222 > "title": "/behaviors/npc/reactionchat.behavior", 224d224 < "title": "/behaviors/npc/reactionchat.behavior", 334a335 > "title": "/behaviors/npc/finalreact.behavior", 337d337 < "title": "/behaviors/npc/finalreact.behavior", behaviors\npc\friendlyidle.behavior 8a9 > "title": "dynamic", 10c11 < "name": "selector", --- > "name": "dynamic", 14,51d14 < "title": "cooldown", < "type": "decorator", < "name": "cooldown", < "parameters": { < "cooldown": 30, < "onFail": false < }, < "child": { < "title": "NPC Chat", < "type": "module", < "name": "chat", < "parameters": {} < } < }, < { < "type": "module", < "name": "sleep", < "parameters": {} < }, < { < "type": "decorator", < "name": "cooldown", < "parameters": { < "cooldown": 60 < }, < "child": { < "type": "module", < "name": "sit", < "parameters": {} < } < }, < { < "title": "/behaviors/npc/play.behavior", < "type": "module", < "name": "play", < "parameters": {} < }, < { 53c16 < "name": "sequence", --- > "name": "selector", 58c21 < "name": "wander", --- > "name": "sleep", 62,64c25,54 < "title": "Idle", < "type": "action", < "name": "timer", --- > "title": "cooldown", > "type": "decorator", > "name": "cooldown", > "parameters": { > "cooldown": 30, > "onFail": false > }, > "child": { > "title": "NPC Chat", > "type": "module", > "name": "chat", > "parameters": {} > } > }, > { > "title": "/behaviors/npc/play.behavior", > "type": "module", > "name": "play", > "parameters": {} > } > ] > }, > { > "type": "composite", > "name": "selector", > "parameters": {}, > "children": [ > { > "type": "decorator", > "name": "cooldown", 66,69c56,61 < "time": [ < 2, < 10 < ] --- > "cooldown": 60 > }, > "child": { > "type": "module", > "name": "sit", > "parameters": {} 70a63,85 > }, > { > "type": "composite", > "name": "sequence", > "parameters": {}, > "children": [ > { > "type": "module", > "name": "wander", > "parameters": {} > }, > { > "title": "Idle", > "type": "action", > "name": "timer", > "parameters": { > "time": [ > 2, > 10 > ] > } > } > ] behaviors\npc\play.behavior 283,334d282 < "title": "selector", < "type": "composite", < "name": "selector", < "parameters": {}, < "children": [ < { < "title": "inverter", < "type": "decorator", < "name": "inverter", < "parameters": {}, < "child": { < "title": "isLoungeable", < "type": "action", < "name": "isLoungeable", < "parameters": { < "entity": "playTarget" < } < } < }, < { < "title": "sequence", < "type": "composite", < "name": "sequence", < "parameters": {}, < "children": [ < { < "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" < } < } < ] < } < ] < }, < { behaviors\npc\react.behavior 6d5 < "/scripts/actions/time.lua", 35,43d33 < "title": "sendInfluenceNotification", < "type": "action", < "name": "sendInfluenceNotification", < "parameters": { < "reaction": "reaction", < "target": "reactTarget" < } < }, < { 101c91 < "title": "timer", --- > "title": "sendInfluenceNotification", 103c93 < "name": "timer", --- > "name": "sendInfluenceNotification", 105c95,96 < "time": 2 --- > "reaction": "reaction", > "target": "reactTarget" behaviors\npc\reactionchat.behavior 87a88 > "title": "/behaviors/npc/react.behavior", 90d90 < "title": "/behaviors/npc/react.behavior", 98,111d97 < "title": "inverter", < "type": "decorator", < "name": "inverter", < "parameters": {}, < "child": { < "title": "isFinalReaction", < "type": "action", < "name": "isFinalReaction", < "parameters": { < "reaction": "reaction" < } < } < }, < { 125c111 < "title": "dynamic", --- > "title": "sequence", 127c113 < "name": "dynamic", --- > "name": "sequence", 137,139c123,125 < "title": "receivedInfluenceNotification", < "type": "action", < "name": "receivedInfluenceNotification", --- > "title": "inverter", > "type": "decorator", > "name": "inverter", 141,142c127,143 < "output": { < "influence": "influence" --- > "child": { > "title": "isFinalReaction", > "type": "action", > "name": "isFinalReaction", > "parameters": { > "reaction": "reaction" > } > } > }, > { > "title": "entityInRange", > "type": "action", > "name": "entityInRange", > "parameters": { > "entity": "reactTarget", > "xRange": 5, > "position": "self" 154c155,163 < "title": "selector", --- > "title": "emote", > "type": "action", > "name": "emote", > "parameters": { > "emote": "blabbering" > } > }, > { > "title": "parallel", 156,157c165,169 < "name": "selector", < "parameters": {}, --- > "name": "parallel", > "parameters": { > "fail": -1, > "success": 1 > }, 160,162c172,174 < "title": "sequence", < "type": "composite", < "name": "sequence", --- > "title": "receivedInfluenceNotification", > "type": "action", > "name": "receivedInfluenceNotification", 164,181c176,178 < "children": [ < { < "title": "isFinalReaction", < "type": "action", < "name": "isFinalReaction", < "parameters": { < "influence": "influence" < } < }, < { < "title": "timer", < "type": "action", < "name": "timer", < "parameters": { < "time": 1.5 < } < } < ] --- > "output": { > "influence": "influence" > } 184c181 < "title": "timer", --- > "title": "runner", 186,189c183,184 < "name": "timer", < "parameters": { < "time": 4 < } --- > "name": "runner", > "parameters": {} 192,206d186 < }, < { < "title": "resetReaction", < "type": "action", < "name": "resetReaction", < "parameters": {}, < "output": { < "reaction": "reaction" < } < }, < { < "type": "module", < "name": "react", < "title": "/behaviors/npc/react.behavior", < "parameters": {} 217,227c197,201 < "title": "inverter", < "type": "decorator", < "name": "inverter", < "parameters": {}, < "child": { < "title": "isFinalReaction", < "type": "action", < "name": "isFinalReaction", < "parameters": { < "reaction": "reaction" < } --- > "title": "timer", > "type": "action", > "name": "timer", > "parameters": { > "time": 1 231c205 < "title": "entityInRange", --- > "title": "faceEntity", 233c207 < "name": "entityInRange", --- > "name": "faceEntity", 235,237c209 < "entity": "reactTarget", < "xRange": 5, < "position": "self" --- > "entity": "reactTarget" 241,245c213,239 < "title": "emote", < "type": "action", < "name": "emote", < "parameters": { < "emote": "blabbering" --- > "title": "succeeder", > "type": "decorator", > "name": "succeeder", > "parameters": {}, > "child": { > "title": "sequence", > "type": "composite", > "name": "sequence", > "parameters": {}, > "children": [ > { > "title": "isFinalReaction", > "type": "action", > "name": "isFinalReaction", > "parameters": { > "influence": "influence" > } > }, > { > "title": "timer", > "type": "action", > "name": "timer", > "parameters": { > "time": 1.5 > } > } > ] 249c243 < "title": "timer", --- > "title": "resetReaction", 251,253c245,248 < "name": "timer", < "parameters": { < "time": 2 --- > "name": "resetReaction", > "parameters": {}, > "output": { > "reaction": "reaction" 254a250,255 > }, > { > "title": "/behaviors/npc/react.behavior", > "type": "module", > "name": "react", > "parameters": {} behaviors\npc\reactions\crouch.behavior 2a3 > "description": "", 44a46,53 > }, > { > "title": "timer", > "type": "action", > "name": "timer", > "parameters": { > "time": 0.5 > } behaviors\npc\reactions\crouchcollect.behavior 2a3 > "description": "", 45a47,54 > }, > { > "title": "timer", > "type": "action", > "name": "timer", > "parameters": { > "time": 0.5 > } behaviors\npc\reactions\gong.behavior 2a3 > "description": "", 44c45 < "time": 0.25 --- > "time": 1.75 behaviors\npc\reactions\hop.behavior 2a3 > "description": "", 4c5,6 < "/scripts/actions/movement.lua" --- > "/scripts/actions/movement.lua", > "/scripts/actions/time.lua" 8,10c10,12 < "title": "setVelocity", < "type": "action", < "name": "setVelocity", --- > "title": "sequence", > "type": "composite", > "name": "sequence", 12,16c14,39 < "velocity": [ < 0, < 25 < ] < } --- > "type": "sliding", > "state": "off", > "fromEntity": "attackTarget", > "toEntity": "fleeTarget" > }, > "children": [ > { > "title": "setVelocity", > "type": "action", > "name": "setVelocity", > "parameters": { > "velocity": [ > 0, > 25 > ] > } > }, > { > "title": "timer", > "type": "action", > "name": "timer", > "parameters": { > "time": 2 > } > } > ] behaviors\npc\reactions\jumpforjoy.behavior 2a3 > "description": "", 71a73,80 > } > }, > { > "title": "timer", > "type": "action", > "name": "timer", > "parameters": { > "time": 2 behaviors\npc\reactions\love.behavior 2a3 > "description": "", 36c37 < "time": 1.5 --- > "time": 2 behaviors\npc\reactions\nosebleed.behavior 2a3 > "description": "", 86a88,95 > }, > { > "title": "timer", > "type": "action", > "name": "timer", > "parameters": { > "time": 1 > } behaviors\npc\reactions\vomit.behavior 2a3 > "description": "", 97a99,106 > }, > { > "title": "timer", > "type": "action", > "name": "timer", > "parameters": { > "time": 1 > } biomes\surface_detached\alpine.biome 65c65 < "pool" : [ [1.0, "wildswordstoneseed" ] ], --- > "pool" : [ [0.5, "wildswordstoneseed" ] ], 84a85,93 > }, > { > "mode" : "floor", > "priority" : 1, > "variants" : 1, > "distribution" : "/biomes/distributions.config:mainBiomeMicrodungeon", > > "type" : "microdungeon", > "microdungeons" : [ "alpinemicrodungeons" ] biomes\surface_detached\bioluminescence.biome 24,25c24,25 < "mainBlock" : "slush", < "subBlocks" : [ "snow", "obsidian" ], --- > "mainBlock" : "snow", > "subBlocks" : [ "ice", "slush" ], 30c30 < "grassModDensity" : 0.2, --- > "grassModDensity" : 0.9, dialog\alpaca.config 7c7 < "I'm itching to batter some beasties.", --- > "I'm itching tae batter some beasties.", 19c19 < "I'm itching to batter some beasties.", --- > "I'm itching for a wee fight.", 128c128 < "Cut 'em te size!" --- > "Cut 'em tae size!" dungeons\microdungeons\biomes\snow\secretsnowcave2.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\snow\snowmicrodungeons.dungeon 8c8 < "anchor" : [ "icespikepit1", "icespikepit2", "frozenlake1", "frozenlake2", "secretsnowcave1", "secretsnowcave2", "snowarch1", "snowarch2", "snowarch3", "snowarch4", "snowbunker1", "snowcabin1", "snowcabin2", "snowhut1", "snowhut2", "snowpitfall1" ], --- > "anchor" : [ "frozenwell1", "secretsnowcave1", "secretsnowcave2", "secretsnowcave3", "snowarch1", "snowarch2", "snowarch3", "snowarch4", "snowbeacon1", "snowbunker1", "snowcabin1", "snowcabin2", "snowcabinruin1", "snowhut1", "snowhut2", "snowhut3", "snowhut4", "snowpitfall1", "snowsecret1", "snowsecret2", "snowsecret3", "snowtunnel1", "snowtunnel2", "snowtunnel3", "snowtunnel4", "snowtunnel5" ], 46a47,53 > "name" : "frozenwell1", > "rules" : [ > [ "maxSpawnCount", [1] ] > ], > "def" : [ "tmx", "frozenwell1.json" ] > }, > { 60a68,74 > "name" : "secretsnowcave3", > "rules" : [ > [ "maxSpawnCount", [1] ] > ], > "def" : [ "tmx", "secretsnowcave3.json" ] > }, > { 88a103,109 > "name" : "snowbeacon1", > "rules" : [ > [ "maxSpawnCount", [1] ] > ], > "def" : [ "tmx", "snowbeacon1.json" ] > }, > { 109a131,137 > "name" : "snowcabinruin1", > "rules" : [ > [ "maxSpawnCount", [1] ] > ], > "def" : [ "tmx", "snowcabinruin1.json" ] > }, > { 123a152,165 > "name" : "snowhut3", > "rules" : [ > [ "maxSpawnCount", [1] ] > ], > "def" : [ "tmx", "snowhut3.json" ] > }, > { > "name" : "snowhut4", > "rules" : [ > [ "maxSpawnCount", [1] ] > ], > "def" : [ "tmx", "snowhut4.json" ] > }, > { 128a171,226 > }, > { > "name" : "snowsecret1", > "rules" : [ > [ "maxSpawnCount", [1] ] > ], > "def" : [ "tmx", "snowsecret1.json" ] > }, > { > "name" : "snowsecret2", > "rules" : [ > [ "maxSpawnCount", [1] ] > ], > "def" : [ "tmx", "snowsecret2.json" ] > }, > { > "name" : "snowsecret3", > "rules" : [ > [ "maxSpawnCount", [1] ] > ], > "def" : [ "tmx", "snowsecret3.json" ] > }, > { > "name" : "snowtunnel1", > "rules" : [ > [ "maxSpawnCount", [1] ] > ], > "def" : [ "tmx", "snowtunnel1.json" ] > }, > { > "name" : "snowtunnel2", > "rules" : [ > [ "maxSpawnCount", [1] ] > ], > "def" : [ "tmx", "snowtunnel2.json" ] > }, > { > "name" : "snowtunnel3", > "rules" : [ > [ "maxSpawnCount", [1] ] > ], > "def" : [ "tmx", "snowtunnel3.json" ] > }, > { > "name" : "snowtunnel4", > "rules" : [ > [ "maxSpawnCount", [1] ] > ], > "def" : [ "tmx", "snowtunnel4.json" ] > }, > { > "name" : "snowtunnel5", > "rules" : [ > [ "maxSpawnCount", [1] ] > ], > "def" : [ "tmx", "snowtunnel5.json" ] npcs\default_reactions.config 134c134,135 < "emote" : "happy" --- > "emote" : "happy", > "duration" : 2.0 137c138,139 < "emote" : "sad" --- > "emote" : "sad", > "duration" : 2.0 140c142,143 < "dance" : "typing" --- > "dance" : "typing", > "duration" : 2.0 144c147,148 < "emote" : "blabbering" --- > "emote" : "blabbering", > "duration" : 2.0 147c151,152 < "emote" : "neutral" --- > "emote" : "neutral", > "duration" : 2.0 150c155,156 < "emote" : "laugh" --- > "emote" : "laugh", > "duration" : 2.0 153c159,160 < "emote" : "annoyed" --- > "emote" : "annoyed", > "duration" : 2.0 156c163,164 < "emote" : "oh" --- > "emote" : "oh", > "duration" : 2.0 159c167,168 < "emote" : "oooh" --- > "emote" : "oooh", > "duration" : 2.0 162c171,172 < "emote" : "wink" --- > "emote" : "wink", > "duration" : 2.0 166c176,177 < "dance" : "punch" --- > "dance" : "punch", > "duration" : 2.0 170c181,182 < "dance" : "pressbutton" --- > "dance" : "pressbutton", > "duration" : 2.0 174c186,187 < "dance" : "flipswitch" --- > "dance" : "flipswitch", > "duration" : 2.0 178c191,192 < "dance" : "drink" --- > "dance" : "drink", > "duration" : 2.0 181c195,196 < "dance" : "postmail" --- > "dance" : "postmail", > "duration" : 2.0 185c200,201 < "dance" : "hylotldance" --- > "dance" : "hylotldance", > "duration" : 2.0 189c205,206 < "dance" : "posedance" --- > "dance" : "posedance", > "duration" : 2.0 193c210,211 < "dance" : "wiggledance" --- > "dance" : "wiggledance", > "duration" : 2.0 197c215,216 < "dance" : "armswingdance" --- > "dance" : "armswingdance", > "duration" : 2.0 261a281,286 > }, > "pianoparty" : { > "behavior" : "reaction-pianoparty" > }, > "playairhockey" : { > "behavior" : "reaction-playairhockey" objects\hylotl\arcadestarbound\arcadestarbound.object 52,53c52,53 < "preciseStandPositionLeft" : [-0.5, 0.0], < "preciseStandPositionRight" : [2.0, 0.0], --- > "preciseStandPositionLeft" : [-1.5, 0.0], > "preciseStandPositionRight" : [1.5, 0.0], objects\hylotl\arcadeyellow\arcadeyellow.object 52,53c52,53 < "preciseStandPositionLeft" : [-0.5, 0.0], < "preciseStandPositionRight" : [2.0, 0.0], --- > "preciseStandPositionLeft" : [-1.5, 0.0], > "preciseStandPositionRight" : [1.5, 0.0], objects\hylotl\hockeytable\hockeytable.object 34c34,45 < "npcToy" : {} --- > "scripts" : [ "/scripts/npcToyObject.lua" ], > "npcToy" : { > "influence" : [ > "airhockey" > ], > "defaultReactions" : { > "airhockey" : [ > [1.0, "playairhockey"] > ] > }, > "maxNpcs": 2 > } objects\minibiome\bioluminescence\glowtree\glowtree1.object 22c22 < "lightColor" : [50, 80, 90], --- > "lightColor" : [255, 255, 167], objects\minibiome\bioluminescence\glowtree\glowtree2.object 22c22 < "lightColor" : [60, 90, 100], --- > "lightColor" : [255, 255, 167], objects\minibiome\bioluminescence\glowtree\glowtree3.object 22c22 < "lightColor" : [40, 70, 80], --- > "lightColor" : [255, 255, 167], objects\noisy\noisy.lua 14c14,17 < onInteraction() --- > local interact = entity.configParameter("npcToy.interactOnNpcPlayStart") > if interact == nil or interact ~= false then > onInteraction() > end objects\themed\saloon\saloonpiano\saloonpiano.object 60,61d59 < "piano", < "piano", 66c64 < [1.0, "playpiano"] --- > [1.0, "pianoparty"] 69c67,68 < "maxNpcs" : 1 --- > "interactOnNpcPlayStart": false, > "randomStandXRange" : [-8, 8] scripts\actions\reaction.lua 323a324,328 > local duration = reactionConfig.duration > while duration > 0 do > coroutine.yield("running") > duration = duration - args.dt > end