FILES ----- sky.config spawner.config behaviors\npc\chat.behavior behaviors\npc\combat.behavior [NEW] behaviors\npc\finalreact.behavior behaviors\npc\friendlyidle.behavior behaviors\npc\play.behavior [NEW] behaviors\npc\react.behavior [NEW] behaviors\npc\reactionchat.behavior [NEW] behaviors\npc\tutorial.behavior behaviors\tenant\returnhome.behavior biomes\surface\alien.biome biomes\surface\garden.biome biomes\surface_detached\eyepatch.biome [NEW] dungeons\microdungeons\biomes\garden\gardenbridge1.json [NEW] dungeons\microdungeons\biomes\garden\gardenbridge2.json [NEW] dungeons\microdungeons\biomes\garden\gardenhouseruin1.json [NEW] dungeons\microdungeons\biomes\garden\gardenmicrodungeons.dungeon [NEW] dungeons\microdungeons\biomes\garden\large1.json [NEW] dungeons\microdungeons\biomes\garden\med1.json [NEW] dungeons\microdungeons\biomes\garden\mediumgardenflowers.json [NEW] dungeons\microdungeons\biomes\garden\mediumgardenruin1.json [NEW] dungeons\microdungeons\biomes\garden\mediumgardenruincamp.json [NEW] dungeons\microdungeons\biomes\garden\mediumgardenruinplain.json [NEW] dungeons\microdungeons\biomes\garden\mediumgardenruintall.json [NEW] dungeons\microdungeons\biomes\garden\small1.json [NEW] dungeons\microdungeons\biomes\garden\smallgardenflowers.json [NEW] dungeons\microdungeons\biomes\garden\smalltower.json [NEW] dungeons\microdungeons\biomes\garden\smalltower2.json [NEW] dungeons\microdungeons\biomes\garden\templateterrain.dungeon [NEW] dungeons\microdungeons\biomes\garden\xtra1.json [NEW] dungeons\microdungeons\subbiomes\glacier\1-objects.png [NEW] dungeons\microdungeons\subbiomes\glacier\1.png [NEW] dungeons\microdungeons\subbiomes\glacier\2-objects.png [NEW] dungeons\microdungeons\subbiomes\glacier\2.png [NEW] dungeons\microdungeons\subbiomes\glacier\3-objects.png [NEW] dungeons\microdungeons\subbiomes\glacier\3.png [NEW] dungeons\microdungeons\subbiomes\glacier\4-objects.png [NEW] dungeons\microdungeons\subbiomes\glacier\4.png [NEW] dungeons\microdungeons\subbiomes\glacier\5-objects.png [NEW] dungeons\microdungeons\subbiomes\glacier\5.png [NEW] dungeons\microdungeons\subbiomes\glacier\glacier.dungeon [NEW] dungeons\microdungeons\subbiomes\glacier\key with grid.png [NEW] dungeons\microdungeons\subbiomes\glacier\key.png [NEW] dungeons\microdungeons\subbiomes\ice\1-objects.png [NEW] dungeons\microdungeons\subbiomes\ice\1.png [NEW] dungeons\microdungeons\subbiomes\ice\2-objects.png [NEW] dungeons\microdungeons\subbiomes\ice\2.png [NEW] dungeons\microdungeons\subbiomes\ice\3-objects.png [NEW] dungeons\microdungeons\subbiomes\ice\3.png [NEW] dungeons\microdungeons\subbiomes\ice\4-objects.png [NEW] dungeons\microdungeons\subbiomes\ice\4.png [NEW] dungeons\microdungeons\subbiomes\ice\5-objects.png [NEW] dungeons\microdungeons\subbiomes\ice\5.png [NEW] dungeons\microdungeons\subbiomes\ice\ice.dungeon [NEW] dungeons\microdungeons\subbiomes\ice\key with grid.png [NEW] dungeons\microdungeons\subbiomes\ice\key.png [NEW] dungeons\microdungeons\subbiomes\igloo\1-objects.png [NEW] dungeons\microdungeons\subbiomes\igloo\1.png [NEW] dungeons\microdungeons\subbiomes\igloo\2-objects.png [NEW] dungeons\microdungeons\subbiomes\igloo\2.png [NEW] dungeons\microdungeons\subbiomes\igloo\3-objects.png [NEW] dungeons\microdungeons\subbiomes\igloo\3.png [NEW] dungeons\microdungeons\subbiomes\igloo\4-objects.png [NEW] dungeons\microdungeons\subbiomes\igloo\4.png [NEW] dungeons\microdungeons\subbiomes\igloo\5-objects.png [NEW] dungeons\microdungeons\subbiomes\igloo\5.png [NEW] dungeons\microdungeons\subbiomes\igloo\6-objects.png [NEW] dungeons\microdungeons\subbiomes\igloo\6.png [NEW] dungeons\microdungeons\subbiomes\igloo\igloo.dungeon [NEW] dungeons\microdungeons\subbiomes\igloo\key with grid.png [NEW] dungeons\microdungeons\subbiomes\oasis\1-objects.png [NEW] dungeons\microdungeons\subbiomes\oasis\1.png [NEW] dungeons\microdungeons\subbiomes\oasis\2-objects.png [NEW] dungeons\microdungeons\subbiomes\oasis\2.png [NEW] dungeons\microdungeons\subbiomes\oasis\3-objects.png [NEW] dungeons\microdungeons\subbiomes\oasis\3.png [NEW] dungeons\microdungeons\subbiomes\oasis\4-objects.png [NEW] dungeons\microdungeons\subbiomes\oasis\4.png [NEW] dungeons\microdungeons\subbiomes\oasis\5-objects.png [NEW] dungeons\microdungeons\subbiomes\oasis\5.png [NEW] dungeons\microdungeons\subbiomes\oasis\key with grid.png [NEW] dungeons\microdungeons\subbiomes\oasis\key.png [NEW] dungeons\microdungeons\subbiomes\oasis\oasis.dungeon [NEW] dungeons\microdungeons\subbiomes\ocean\oceanencounter.dungeon [NEW] dungeons\microdungeons\subbiomes\ocean\oceankind1.json [NEW] dungeons\microdungeons\subbiomes\ocean\oceankind10.json [NEW] dungeons\microdungeons\subbiomes\ocean\oceankind2.json [NEW] dungeons\microdungeons\subbiomes\ocean\oceankind3.json [NEW] dungeons\microdungeons\subbiomes\ocean\oceankind4.json [NEW] dungeons\microdungeons\subbiomes\ocean\oceankind5.json [NEW] dungeons\microdungeons\subbiomes\ocean\oceankind6.json [NEW] dungeons\microdungeons\subbiomes\ocean\oceankind7.json [NEW] dungeons\microdungeons\subbiomes\ocean\oceankind8.json [NEW] dungeons\microdungeons\subbiomes\ocean\oceankind9.json [NEW] dungeons\microdungeons\subbiomes\ocean\oceanship1a.json [NEW] dungeons\microdungeons\subbiomes\ocean\oceanship1b.json [NEW] dungeons\microdungeons\subbiomes\ocean\oceanship2.json [NEW] dungeons\microdungeons\subbiomes\sandstone\1.png [NEW] dungeons\microdungeons\subbiomes\sandstone\2.png [NEW] dungeons\microdungeons\subbiomes\sandstone\3.png [NEW] dungeons\microdungeons\subbiomes\sandstone\4.png [NEW] dungeons\microdungeons\subbiomes\sandstone\5.png [NEW] dungeons\microdungeons\subbiomes\sandstone\key with grid.png [NEW] dungeons\microdungeons\subbiomes\sandstone\key.png [NEW] dungeons\microdungeons\subbiomes\sandstone\sandstone.dungeon [NEW] dungeons\microdungeons\subbiomes\tar\1-objects.png [NEW] dungeons\microdungeons\subbiomes\tar\1.png [NEW] dungeons\microdungeons\subbiomes\tar\2-objects.png [NEW] dungeons\microdungeons\subbiomes\tar\2.png [NEW] dungeons\microdungeons\subbiomes\tar\3-objects.png [NEW] dungeons\microdungeons\subbiomes\tar\3.png [NEW] dungeons\microdungeons\subbiomes\tar\4-objects.png [NEW] dungeons\microdungeons\subbiomes\tar\4.png [NEW] dungeons\microdungeons\subbiomes\tar\5-objects.png [NEW] dungeons\microdungeons\subbiomes\tar\5.png [NEW] dungeons\microdungeons\subbiomes\tar\key with grid.png [NEW] dungeons\microdungeons\subbiomes\tar\key.png [NEW] dungeons\microdungeons\subbiomes\tar\tar.dungeon [NEW] dungeons\microdungeons\subbiomes\toxicplains\1-objects.png [NEW] dungeons\microdungeons\subbiomes\toxicplains\1.png [NEW] dungeons\microdungeons\subbiomes\toxicplains\2-objects.png [NEW] dungeons\microdungeons\subbiomes\toxicplains\2.png [NEW] dungeons\microdungeons\subbiomes\toxicplains\3-objects.png [NEW] dungeons\microdungeons\subbiomes\toxicplains\3.png [NEW] dungeons\microdungeons\subbiomes\toxicplains\4-objects.png [NEW] dungeons\microdungeons\subbiomes\toxicplains\4.png [NEW] dungeons\microdungeons\subbiomes\toxicplains\5-objects.png [NEW] dungeons\microdungeons\subbiomes\toxicplains\5.png [NEW] dungeons\microdungeons\subbiomes\toxicplains\6-objects.png [NEW] dungeons\microdungeons\subbiomes\toxicplains\6.png [NEW] dungeons\microdungeons\subbiomes\toxicplains\7-objects.png [NEW] dungeons\microdungeons\subbiomes\toxicplains\7.png [NEW] dungeons\microdungeons\subbiomes\toxicplains\key with grid.png [NEW] dungeons\microdungeons\subbiomes\toxicplains\key.png [NEW] dungeons\microdungeons\subbiomes\toxicplains\toxicplains.dungeon [NEW] dungeons\microdungeons\template\templateextralarge.json [NEW] dungeons\microdungeons\template\templatelarge.json [NEW] dungeons\microdungeons\template\templatemedium.json [NEW] dungeons\microdungeons\template\templatesmall.json [NEW] dungeons\microdungeons\template\templateterrain.dungeon dungeons\missions\floranmissions\floranmission1-objects.png dungeons\missions\floranmissions\floranmission1-wires1.png dungeons\other\naturalcave\campsite1-objects.png dungeons\other\naturalcave\campsite2-objects.png dungeons\other\naturalcave\campsite3-objects.png dungeons\other\naturalcave\campsite4-objects.png dungeons\other\naturalcave\campsite5-objects.png dungeons\other\naturalcave\campsite6-objects.png dungeons\other\naturalcave\naturalcave.dungeon dungeons\other\outpost\outpoststatic-objects.png [NEW] items\armors\backerhats\fancap\fancap.head [NEW] items\armors\backerhats\fancap\head.png [NEW] items\armors\backerhats\fancap\icons.png [NEW] items\armors\backerhats\fancap\mask.png [NEW] items\armors\backerhats\glitchplague\head.png [NEW] items\armors\backerhats\glitchplague\icons.png [NEW] items\armors\backerhats\glitchplague\mask.png [NEW] items\armors\backerhats\glitchplague\plaguemaster.head [NEW] items\armors\backerhats\multicamoperator\head.png [NEW] items\armors\backerhats\multicamoperator\icons.png [NEW] items\armors\backerhats\multicamoperator\mask.png [NEW] items\armors\backerhats\multicamoperator\multicamoperator.head [NEW] items\armors\backerhats\plumeknight\head.png [NEW] items\armors\backerhats\plumeknight\headicon.png [NEW] items\armors\backerhats\plumeknight\mask.png [NEW] items\armors\backerhats\plumeknight\plumeknight.head items\armors\backerhats\thehrodgard\head.png items\armors\backerhats\thehrodgard\headicon.png items\armors\decorative\costumes\rock\rock.chest items\armors\decorative\costumes\rock\rock.legs items\armors\other\bedouin\bedouin.chest items\armors\other\bedouin\bedouin.head items\armors\other\bedouin\bedouin.legs items\armors\other\bedouin\chestf.png monsters\bmonster.lua monsters\critter\bouncebagcritter\body.monsterpart [NEW] monsters\critter\bouncebagcritter\bouncebagcritter.animation [NEW] monsters\critter\bouncebagcritter\bouncebagcritter.monstertype [NEW] monsters\critter\eyefriend\body.frames [NEW] monsters\critter\eyefriend\body.monsterpart [NEW] monsters\critter\eyefriend\body.png [NEW] monsters\critter\eyefriend\eyefriend.animation [NEW] monsters\critter\eyefriend\eyefriend.monstertype [NEW] monsters\critter\floatbagcritter\body.frames [NEW] monsters\critter\floatbagcritter\body.monsterpart [NEW] monsters\critter\floatbagcritter\body.png [NEW] monsters\critter\floatbagcritter\floatbagcritter.animation [NEW] monsters\critter\floatbagcritter\floatbagcritter.monstertype monsters\critter\sackbagcritter\body.monsterpart [NEW] monsters\critter\sackbagcritter\sackbagcritter.animation [NEW] monsters\critter\sackbagcritter\sackbagcritter.monstertype monsters\critter\snail\body.png [NEW] monsters\critter\snooglecritter\body.frames [NEW] monsters\critter\snooglecritter\body.monsterpart [NEW] monsters\critter\snooglecritter\body.png [NEW] monsters\critter\snooglecritter\snooglecritter.animation [NEW] monsters\critter\snooglecritter\snooglecritter.monstertype monsters\unique\bunny\bunny.animation npcs\bmain.lua [NEW] npcs\default_reactions.config npcs\merchant.npctype [NEW] npcs\tutorial.npctype npcs\villager.npctype objects\generic\arcademachine\arcademachine.object [NEW] objects\generic\stonechest\icon.png [NEW] objects\generic\stonechest\ironchest.frames [NEW] objects\generic\stonechest\ironchest.object [NEW] objects\generic\stonechest\ironchest.png [NEW] objects\generic\travellersbeacon\travellersbeacon.frames [NEW] objects\generic\travellersbeacon\travellersbeacon.object [NEW] objects\generic\travellersbeacon\travellersbeacon.png [NEW] objects\generic\travellersbeacon\travellersbeaconicon.png [NEW] objects\generic\travellersbeacon\travellersbeaconlit.frames [NEW] objects\generic\travellersbeacon\travellersbeaconlit.png [NEW] objects\generic\woodenchest\icon.png [NEW] objects\generic\woodenchest\woodenchest.frames [NEW] objects\generic\woodenchest\woodenchest.object [NEW] objects\generic\woodenchest\woodenchest.png [NEW] objects\hylotl\thefickletype\icon.png [NEW] objects\hylotl\thefickletype\tenstudiesplaque.frames [NEW] objects\hylotl\thefickletype\tenstudiesplaque.object [NEW] objects\hylotl\thefickletype\tenstudiesplaque.png parallax\timeofdaycorrelation.functions parallax\images\clouds1\base\1.png parallax\images\clouds1\base\2.png parallax\images\clouds2\base\1.png parallax\images\clouds2\base\2.png parallax\images\clouds3\base\1.png parallax\images\clouds3\base\2.png parallax\surface\garden.parallax scripts\behavior.lua scripts\actions\movement.lua [NEW] scripts\actions\reaction.lua stagehands\coordinator.lua stagehands\coordinator.stagehand [NEW] stats\effects\npcemote\blush.lua [NEW] stats\effects\npcemote\blush.statuseffect [NEW] stats\effects\npcemote\bored.animation [NEW] stats\effects\npcemote\bored.lua [NEW] stats\effects\npcemote\bored.statuseffect tiles\materials\plantmatter.material DIFFS ----- sky.config 38c38 < "radius" : 350 --- > "radius" : 250 spawner.config 930c930,972 < }, --- > }, > > "floatbagcritter" : { > "spawnParameters" : { > "area" : "surface", > "region" : "exposed", > "time" : "day" > }, > > "targetDensity" : 0.02, > "monsterType" : "floatbagcritter", > "monsterParameters" : { > "aggressive" : false > } > }, > > "snooglecritter" : { > "spawnParameters" : { > "area" : "surface", > "region" : "all", > "time" : "all" > }, > > "targetDensity" : 0.01, > "monsterType" : "snooglecritter", > "monsterParameters" : { > "aggressive" : false > } > }, > > "eyefriend" : { > "spawnParameters" : { > "area" : "surface", > "region" : "all", > "time" : "all" > }, > > "targetDensity" : 0.01, > "monsterType" : "eyefriend", > "monsterParameters" : { > "aggressive" : false > } > }, behaviors\npc\chat.behavior 8c8 < "/scripts/actions/time.lua", --- > "/scripts/actions/reaction.lua", 10c10 < "/scripts/actions/personality.lua" --- > "/scripts/actions/time.lua" 195,210c195,206 < "title": "task", < "type": "decorator", < "name": "task", < "parameters": { < "groupId": "chat", < "taskId": "first", < "minMembers": 1, < "maxMembers": 1 < }, < "child": { < "title": "repeater", < "type": "decorator", < "name": "repeater", < "parameters": { < "maxLoops": 3, < "untilSuccess": false --- > "title": "sequence", > "type": "composite", > "name": "sequence", > "parameters": {}, > "children": [ > { > "title": "getPersonality", > "type": "action", > "name": "getPersonality", > "parameters": { > "target": "self" > } 212,215c208,219 < "child": { < "title": "sequence", < "type": "composite", < "name": "sequence", --- > { > "title": "getPersonality", > "type": "action", > "name": "getPersonality", > "parameters": { > "target": "chatfriend" > } > }, > { > "title": "succeeder", > "type": "decorator", > "name": "succeeder", 217,242c221,226 < "children": [ < { < "title": "timer", < "type": "action", < "name": "timer", < "parameters": { < "time": 2 < } < }, < { < "title": "emote", < "type": "action", < "name": "emote", < "parameters": { < "emote": "blabbering" < } < }, < { < "title": "timer", < "type": "action", < "name": "timer", < "parameters": { < "time": 2 < } < } < ] --- > "child": { > "type": "module", > "path": "/behaviors/npc/reactionchat.behavior", > "title": "/behaviors/npc/reactionchat.behavior", > "parameters": {} > } 244c228 < } --- > ] 247,266c231,244 < "title": "repeater", < "type": "decorator", < "name": "repeater", < "parameters": { < "maxLoops": 3, < "untilSuccess": false < }, < "child": { < "title": "sequence", < "type": "composite", < "name": "sequence", < "parameters": {}, < "children": [ < { < "title": "emote", < "type": "action", < "name": "emote", < "parameters": { < "emote": "blabbering" < } --- > "title": "selector", > "type": "composite", > "name": "selector", > "parameters": {}, > "children": [ > { > "title": "task", > "type": "decorator", > "name": "task", > "parameters": { > "groupId": "chat", > "taskId": "first", > "minMembers": 1, > "maxMembers": 1 268,271c246,249 < { < "title": "timer", < "type": "action", < "name": "timer", --- > "child": { > "title": "repeater", > "type": "decorator", > "name": "repeater", 273c251,276 < "time": 4 --- > "maxLoops": 3, > "untilSuccess": false > }, > "child": { > "title": "sequence", > "type": "composite", > "name": "sequence", > "parameters": {}, > "children": [ > { > "title": "emote", > "type": "action", > "name": "emote", > "parameters": { > "emote": "blabbering" > } > }, > { > "title": "timer", > "type": "action", > "name": "timer", > "parameters": { > "time": 4 > } > } > ] 276,277c279,321 < ] < } --- > }, > { > "title": "repeater", > "type": "decorator", > "name": "repeater", > "parameters": { > "maxLoops": 3, > "untilSuccess": false > }, > "child": { > "title": "sequence", > "type": "composite", > "name": "sequence", > "parameters": {}, > "children": [ > { > "title": "timer", > "type": "action", > "name": "timer", > "parameters": { > "time": 2 > } > }, > { > "title": "emote", > "type": "action", > "name": "emote", > "parameters": { > "emote": "blabbering" > } > }, > { > "title": "timer", > "type": "action", > "name": "timer", > "parameters": { > "time": 2 > } > } > ] > } > } > ] 291,313c335,338 < "title": "sequence", < "type": "composite", < "name": "sequence", < "parameters": {}, < "children": [ < { < "title": "entityInfluence", < "type": "action", < "name": "entityInfluence", < "parameters": { < "target": "chatfriend" < }, < "output": { < "influence": "influence" < } < }, < { < "type": "module", < "path": "/behaviors/npc/personality.behavior", < "title": "/behaviors/npc/personality.behavior", < "parameters": {} < } < ] --- > "type": "module", > "path": "/behaviors/npc/finalreact.behavior", > "title": "/behaviors/npc/finalreact.behavior", > "parameters": {} behaviors\npc\combat.behavior 7c7,8 < "/scripts/actions/movement.lua" --- > "/scripts/actions/movement.lua", > "/scripts/actions/position.lua" 37c38 < "title": "parallel", --- > "title": "dynamic", 39,43c40,41 < "name": "parallel", < "parameters": { < "fail": -1, < "success": -1 < }, --- > "name": "dynamic", > "parameters": {}, 46c44 < "title": "dynamic", --- > "title": "parallel", 48,49c46,50 < "name": "dynamic", < "parameters": {}, --- > "name": "parallel", > "parameters": { > "fail": 1, > "success": -1 > }, 52c53,75 < "title": "parallel", --- > "title": "canFire", > "type": "action", > "name": "canFire", > "parameters": {} > }, > { > "title": "inverter", > "type": "decorator", > "name": "inverter", > "parameters": {}, > "child": { > "title": "entityInRange", > "type": "action", > "name": "entityInRange", > "parameters": { > "entity": "target", > "xRange": 10, > "position": "self" > } > } > }, > { > "title": "selector", 54,58c77,78 < "name": "parallel", < "parameters": { < "fail": 1, < "success": -1 < }, --- > "name": "selector", > "parameters": {}, 61c81 < "title": "canFire", --- > "title": "hasRangedPrimary", 63c83 < "name": "canFire", --- > "name": "hasRangedPrimary", 67,83c87 < "title": "inverter", < "type": "decorator", < "name": "inverter", < "parameters": {}, < "child": { < "title": "entityInRange", < "type": "action", < "name": "entityInRange", < "parameters": { < "entity": "target", < "xRange": 5, < "position": "self" < } < } < }, < { < "title": "selector", --- > "title": "sequence", 85,86c89,95 < "name": "selector", < "parameters": {}, --- > "name": "sequence", > "parameters": { > "type": "sliding", > "state": "off", > "fromEntity": "attackTarget", > "toEntity": "fleeTarget" > }, 89c98 < "title": "hasRangedPrimary", --- > "title": "hasRangedSheathed", 91c100 < "name": "hasRangedPrimary", --- > "name": "hasRangedSheathed", 95c104,135 < "title": "sequence", --- > "title": "swapItemSlots", > "type": "action", > "name": "swapItemSlots", > "parameters": {} > } > ] > } > ] > }, > { > "title": "task", > "type": "decorator", > "name": "task", > "parameters": { > "groupId": "combat", > "taskId": "ranged", > "minMembers": 1, > "maxMembers": 4 > }, > "child": { > "title": "dynamic", > "type": "composite", > "name": "dynamic", > "parameters": {}, > "children": [ > { > "title": "failer", > "type": "decorator", > "name": "failer", > "parameters": {}, > "child": { > "title": "dynamic", 97,103c137,138 < "name": "sequence", < "parameters": { < "type": "sliding", < "state": "off", < "fromEntity": "attackTarget", < "toEntity": "fleeTarget" < }, --- > "name": "dynamic", > "parameters": {}, 106,109c141,175 < "title": "hasRangedSheathed", < "type": "action", < "name": "hasRangedSheathed", < "parameters": {} --- > "title": "sequence", > "type": "composite", > "name": "sequence", > "parameters": { > "type": "sliding", > "state": "off", > "fromEntity": "attackTarget", > "toEntity": "fleeTarget" > }, > "children": [ > { > "title": "entityInSight", > "type": "action", > "name": "entityInSight", > "parameters": { > "entity": "target" > } > }, > { > "title": "entityInRange", > "type": "action", > "name": "entityInRange", > "parameters": { > "entity": "target", > "range": 20, > "position": "self" > } > }, > { > "title": "onGround", > "type": "action", > "name": "onGround", > "parameters": {} > } > ] 112c178,285 < "title": "swapItemSlots", --- > "title": "parallel", > "type": "composite", > "name": "parallel", > "parameters": { > "fail": -1, > "success": -1 > }, > "children": [ > { > "title": "entityPosition", > "type": "action", > "name": "entityPosition", > "parameters": { > "entity": "target" > }, > "output": { > "position": "targetPosition" > } > }, > { > "title": "moveToPosition", > "type": "action", > "name": "moveToPosition", > "parameters": { > "avoidLiquid": true, > "groundPosition": true, > "maxGround": 5, > "minGround": -10, > "position": "targetPosition", > "run": true, > "failFast": false > }, > "output": { > "direction": "direction" > } > }, > { > "title": "faceDirection", > "type": "action", > "name": "faceDirection", > "parameters": { > "direction": "direction" > } > } > ] > } > ] > } > }, > { > "title": "failer", > "type": "decorator", > "name": "failer", > "parameters": {}, > "child": { > "title": "cleanup", > "type": "composite", > "name": "cleanup", > "parameters": {}, > "children": [ > { > "title": "parallel", > "type": "composite", > "name": "parallel", > "parameters": { > "fail": -1, > "success": -1 > }, > "children": [ > { > "title": "beginPrimaryFire", > "type": "action", > "name": "beginPrimaryFire", > "parameters": {} > }, > { > "title": "entityPosition", > "type": "action", > "name": "entityPosition", > "parameters": { > "entity": "target" > }, > "output": { > "position": "targetPosition" > } > }, > { > "title": "setAimPosition", > "type": "action", > "name": "setAimPosition", > "parameters": { > "offset": [ > 0, > 0 > ], > "position": "targetPosition" > } > }, > { > "title": "runner", > "type": "action", > "name": "runner", > "parameters": {} > } > ] > }, > { > "title": "endPrimaryFire", 114c287 < "name": "swapItemSlots", --- > "name": "endPrimaryFire", 119c292,323 < ] --- > }, > { > "title": "runner", > "type": "action", > "name": "runner", > "parameters": {} > } > ] > } > } > ] > }, > { > "title": "parallel", > "type": "composite", > "name": "parallel", > "parameters": { > "fail": 1, > "success": -1 > }, > "children": [ > { > "title": "selector", > "type": "composite", > "name": "selector", > "parameters": {}, > "children": [ > { > "title": "hasMeleePrimary", > "type": "action", > "name": "hasMeleePrimary", > "parameters": {} 122,124c326,328 < "title": "task", < "type": "decorator", < "name": "task", --- > "title": "sequence", > "type": "composite", > "name": "sequence", 126,129c330,333 < "groupId": "combat", < "taskId": "ranged", < "minMembers": 1, < "maxMembers": 4 --- > "type": "sliding", > "state": "off", > "fromEntity": "attackTarget", > "toEntity": "fleeTarget" 131,139c335,340 < "child": { < "title": "sequence", < "type": "composite", < "name": "sequence", < "parameters": { < "type": "sliding", < "state": "off", < "fromEntity": "attackTarget", < "toEntity": "fleeTarget" --- > "children": [ > { > "title": "hasMeleeSheathed", > "type": "action", > "name": "hasMeleeSheathed", > "parameters": {} 141,148c342,379 < "children": [ < { < "title": "say", < "type": "action", < "name": "say", < "parameters": { < "content": "I will shoot you in the face" < } --- > { > "title": "swapItemSlots", > "type": "action", > "name": "swapItemSlots", > "parameters": {} > } > ] > } > ] > }, > { > "title": "task", > "type": "decorator", > "name": "task", > "parameters": { > "groupId": "combat", > "taskId": "melee", > "minMembers": 1, > "maxMembers": 4 > }, > "child": { > "title": "dynamic", > "type": "composite", > "name": "dynamic", > "parameters": {}, > "children": [ > { > "title": "failer", > "type": "decorator", > "name": "failer", > "parameters": {}, > "child": { > "title": "parallel", > "type": "composite", > "name": "parallel", > "parameters": { > "fail": -1, > "success": -1 150,162c381,389 < { < "title": "dynamic", < "type": "composite", < "name": "dynamic", < "parameters": {}, < "children": [ < { < "title": "inverter", < "type": "decorator", < "name": "inverter", < "parameters": {}, < "child": { < "title": "dynamic", --- > "children": [ > { > "title": "dynamic", > "type": "composite", > "name": "dynamic", > "parameters": {}, > "children": [ > { > "title": "sequence", 164,165c391,397 < "name": "dynamic", < "parameters": {}, --- > "name": "sequence", > "parameters": { > "type": "sliding", > "state": "off", > "fromEntity": "attackTarget", > "toEntity": "fleeTarget" > }, 168,170c400,402 < "title": "sequence", < "type": "composite", < "name": "sequence", --- > "title": "entityPosition", > "type": "action", > "name": "entityPosition", 172,175c404 < "type": "sliding", < "state": "off", < "fromEntity": "attackTarget", < "toEntity": "fleeTarget" --- > "entity": "target" 176a406,414 > "output": { > "position": "movePosition" > } > }, > { > "title": "dynamic", > "type": "composite", > "name": "dynamic", > "parameters": {}, 179,181c417,419 < "title": "entityInSight", < "type": "action", < "name": "entityInSight", --- > "title": "task", > "type": "decorator", > "name": "task", 183c421,439 < "entity": "target" --- > "groupId": "combat", > "taskId": "closeleft", > "minMembers": 1, > "maxMembers": 1 > }, > "child": { > "title": "offsetPosition", > "type": "action", > "name": "offsetPosition", > "parameters": { > "offset": [ > -2, > 0 > ], > "position": "movePosition" > }, > "output": { > "position": "movePosition" > } 187,189c443,445 < "title": "entityInRange", < "type": "action", < "name": "entityInRange", --- > "title": "task", > "type": "decorator", > "name": "task", 191,193c447,465 < "entity": "target", < "range": 20, < "position": "self" --- > "groupId": "combat", > "taskId": "closeright", > "minMembers": 1, > "maxMembers": 1 > }, > "child": { > "title": "offsetPosition", > "type": "action", > "name": "offsetPosition", > "parameters": { > "offset": [ > 2, > 0 > ], > "position": "movePosition" > }, > "output": { > "position": "movePosition" > } 197,200c469,518 < "title": "onGround", < "type": "action", < "name": "onGround", < "parameters": {} --- > "title": "task", > "type": "decorator", > "name": "task", > "parameters": { > "groupId": "combat", > "taskId": "farleft", > "minMembers": 1, > "maxMembers": 1 > }, > "child": { > "title": "offsetPosition", > "type": "action", > "name": "offsetPosition", > "parameters": { > "offset": [ > -4, > 0 > ], > "position": "movePosition" > }, > "output": { > "position": "movePosition" > } > } > }, > { > "title": "task", > "type": "decorator", > "name": "task", > "parameters": { > "groupId": "combat", > "taskId": "farright", > "minMembers": 1, > "maxMembers": 1 > }, > "child": { > "title": "offsetPosition", > "type": "action", > "name": "offsetPosition", > "parameters": { > "offset": [ > 4, > 0 > ], > "position": "movePosition" > }, > "output": { > "position": "movePosition" > } > } 205,207c523,525 < "title": "parallel", < "type": "composite", < "name": "parallel", --- > "title": "groundPosition", > "type": "action", > "name": "groundPosition", 209,210c527,530 < "fail": -1, < "success": -1 --- > "avoidLiquid": true, > "maxHeight": 5, > "minHeight": -25, > "position": "movePosition" 211a532,592 > "output": { > "position": "movePosition" > } > }, > { > "title": "entityInSight", > "type": "action", > "name": "entityInSight", > "parameters": { > "entity": "target" > } > }, > { > "title": "inRange", > "type": "action", > "name": "inRange", > "parameters": { > "position": "self", > "target": "movePosition", > "range": 1 > } > }, > { > "title": "onGround", > "type": "action", > "name": "onGround", > "parameters": {} > } > ] > }, > { > "title": "parallel", > "type": "composite", > "name": "parallel", > "parameters": { > "fail": -1, > "success": -1 > }, > "children": [ > { > "title": "moveToPosition", > "type": "action", > "name": "moveToPosition", > "parameters": { > "avoidLiquid": true, > "groundPosition": false, > "maxGround": 5, > "minGround": -10, > "position": "movePosition", > "run": true, > "failFast": false > }, > "output": { > "direction": "direction" > } > }, > { > "title": "selector", > "type": "composite", > "name": "selector", > "parameters": {}, 214,227c595,597 < "title": "entityPosition", < "type": "action", < "name": "entityPosition", < "parameters": { < "entity": "target" < }, < "output": { < "position": "targetPosition" < } < }, < { < "title": "moveToPosition", < "type": "action", < "name": "moveToPosition", --- > "title": "sequence", > "type": "composite", > "name": "sequence", 229,235c599,602 < "avoidLiquid": true, < "groundPosition": true, < "maxGround": 5, < "minGround": -10, < "position": "targetPosition", < "run": true, < "failFast": false --- > "type": "sliding", > "state": "off", > "fromEntity": "attackTarget", > "toEntity": "fleeTarget" 237,239c604,623 < "output": { < "direction": "direction" < } --- > "children": [ > { > "title": "entityInRange", > "type": "action", > "name": "entityInRange", > "parameters": { > "entity": "target", > "xRange": 5, > "position": "self" > } > }, > { > "title": "faceEntity", > "type": "action", > "name": "faceEntity", > "parameters": { > "entity": "target" > } > } > ] 253,264c637,651 < }, < { < "title": "cleanup", < "type": "composite", < "name": "cleanup", < "parameters": {}, < "children": [ < { < "title": "beginPrimaryFire", < "type": "action", < "name": "beginPrimaryFire", < "parameters": {} --- > ] > }, > { > "title": "cleanup", > "type": "composite", > "name": "cleanup", > "parameters": {}, > "children": [ > { > "title": "parallel", > "type": "composite", > "name": "parallel", > "parameters": { > "fail": -1, > "success": -1 266,280c653,697 < { < "title": "parallel", < "type": "composite", < "name": "parallel", < "parameters": { < "fail": -1, < "success": -1 < }, < "children": [ < { < "title": "entityPosition", < "type": "action", < "name": "entityPosition", < "parameters": { < "entity": "target" --- > "children": [ > { > "title": "selector", > "type": "composite", > "name": "selector", > "parameters": {}, > "children": [ > { > "title": "sequence", > "type": "composite", > "name": "sequence", > "parameters": { > "type": "sliding", > "state": "off", > "fromEntity": "attackTarget", > "toEntity": "fleeTarget" > }, > "children": [ > { > "title": "entityInRange", > "type": "action", > "name": "entityInRange", > "parameters": { > "entity": "target", > "yRange": 4, > "position": "self" > } > }, > { > "title": "entityInRange", > "type": "action", > "name": "entityInRange", > "parameters": { > "entity": "target", > "xRange": 4, > "position": "self" > } > }, > { > "title": "beginPrimaryFire", > "type": "action", > "name": "beginPrimaryFire", > "parameters": {} > } > ] 282,295c699,703 < "output": { < "position": "targetPosition" < } < }, < { < "title": "setAimPosition", < "type": "action", < "name": "setAimPosition", < "parameters": { < "offset": [ < 0, < 0 < ], < "position": "targetPosition" --- > { > "title": "endPrimaryFire", > "type": "action", > "name": "endPrimaryFire", > "parameters": {} 296a705,712 > ] > }, > { > "title": "entityPosition", > "type": "action", > "name": "entityPosition", > "parameters": { > "entity": "target" 298,302c714,715 < { < "title": "runner", < "type": "action", < "name": "runner", < "parameters": {} --- > "output": { > "position": "targetPosition" 304,363c717,744 < ] < }, < { < "title": "endPrimaryFire", < "type": "action", < "name": "endPrimaryFire", < "parameters": {} < } < ] < } < ] < } < ] < } < } < ] < }, < { < "title": "parallel", < "type": "composite", < "name": "parallel", < "parameters": { < "fail": 1, < "success": -1 < }, < "children": [ < { < "title": "selector", < "type": "composite", < "name": "selector", < "parameters": {}, < "children": [ < { < "title": "hasMeleePrimary", < "type": "action", < "name": "hasMeleePrimary", < "parameters": {} < }, < { < "title": "sequence", < "type": "composite", < "name": "sequence", < "parameters": { < "type": "sliding", < "state": "off", < "fromEntity": "attackTarget", < "toEntity": "fleeTarget" < }, < "children": [ < { < "title": "hasMeleeSheathed", < "type": "action", < "name": "hasMeleeSheathed", < "parameters": {} < }, < { < "title": "swapItemSlots", < "type": "action", < "name": "swapItemSlots", < "parameters": {} --- > }, > { > "title": "setAimPosition", > "type": "action", > "name": "setAimPosition", > "parameters": { > "offset": [ > 0, > 0 > ], > "position": "targetPosition" > } > }, > { > "title": "runner", > "type": "action", > "name": "runner", > "parameters": {} > } > ] > }, > { > "title": "endPrimaryFire", > "type": "action", > "name": "endPrimaryFire", > "parameters": {} > } > ] 367,377d747 < ] < }, < { < "title": "task", < "type": "decorator", < "name": "task", < "parameters": { < "groupId": "combat", < "taskId": "melee", < "minMembers": 1, < "maxMembers": 8 379,404c749,753 < "child": { < "title": "sequence", < "type": "composite", < "name": "sequence", < "parameters": { < "type": "sliding", < "state": "off", < "fromEntity": "attackTarget", < "toEntity": "fleeTarget" < }, < "children": [ < { < "title": "say", < "type": "action", < "name": "say", < "parameters": { < "content": "I will bash you dead!" < } < }, < { < "title": "runner", < "type": "action", < "name": "runner", < "parameters": {} < } < ] --- > { > "title": "runner", > "type": "action", > "name": "runner", > "parameters": {} 406,407c755,756 < } < ] --- > ] > } 410,415d758 < }, < { < "title": "runner", < "type": "action", < "name": "runner", < "parameters": {} behaviors\npc\friendlyidle.behavior 19c19 < "cooldown": 60, --- > "cooldown": 30, behaviors\npc\play.behavior 2a3 > "description": "", 6,8c7,8 < "/scripts/actions/personality.lua", < "/scripts/actions/movement.lua", < "/scripts/actions/time.lua" --- > "/scripts/actions/reaction.lua", > "/scripts/actions/movement.lua" 30c30 < "cooldown": 1, --- > "cooldown": 30, 44c44 < "withoutEntity": "playTarget" --- > "withoutEntity": "lastUsedPlayTarget" 103c103 < "title": "entityInfluence", --- > "title": "objectInfluenceSequence", 105c105 < "name": "entityInfluence", --- > "name": "objectInfluenceSequence", 108,110d107 < }, < "output": { < "influence": "influence" 189c186 < "title": "timer", --- > "title": "objectInfluenceSequence", 191c188 < "name": "timer", --- > "name": "objectInfluenceSequence", 193c190,255 < "time": 5 --- > "target": "playTarget" > }, > "output": { > "list": "influences" > } > }, > { > "title": "setEntity", > "type": "action", > "name": "setEntity", > "parameters": { > "entity": "playTarget" > }, > "output": { > "entity": "reactTarget" > } > }, > { > "title": "repeater", > "type": "decorator", > "name": "repeater", > "parameters": { > "maxLoops": -1, > "untilSuccess": true > }, > "child": { > "title": "inverter", > "type": "decorator", > "name": "inverter", > "parameters": {}, > "child": { > "title": "sequence", > "type": "composite", > "name": "sequence", > "parameters": { > "type": "sliding", > "state": "off", > "fromEntity": "attackTarget", > "toEntity": "fleeTarget" > }, > "children": [ > { > "title": "listPopInfluence", > "type": "action", > "name": "listPopInfluence", > "parameters": { > "list": "influences" > }, > "output": { > "influence": "influence" > } > }, > { > "title": "succeeder", > "type": "decorator", > "name": "succeeder", > "parameters": {}, > "child": { > "type": "module", > "path": "/behaviors/npc/react.behavior", > "title": "/behaviors/npc/react.behavior", > "parameters": {} > } > } > ] > } 197,200c259,268 < "type": "module", < "path": "/behaviors/npc/personality.behavior", < "title": "/behaviors/npc/personality.behavior", < "parameters": {} --- > "title": "succeeder", > "type": "decorator", > "name": "succeeder", > "parameters": {}, > "child": { > "type": "module", > "path": "/behaviors/npc/finalreact.behavior", > "title": "/behaviors/npc/finalreact.behavior", > "parameters": {} > } behaviors\tenant\returnhome.behavior 14c14 < "title": "sequence", --- > "title": "selector", 16c16 < "name": "sequence", --- > "name": "selector", 20,31c20 < "title": "getStorage", < "type": "action", < "name": "getStorage", < "parameters": { < "key": "homePosition" < }, < "output": { < "position": "homePosition" < } < }, < { < "title": "selector", --- > "title": "sequence", 33c22 < "name": "selector", --- > "name": "sequence", 37,64c26,34 < "title": "sequence", < "type": "composite", < "name": "sequence", < "parameters": {}, < "children": [ < { < "title": "entityConfigParameter", < "type": "action", < "name": "entityConfigParameter", < "parameters": { < "path": "returnHome.minDistance", < "default": 3 < }, < "output": { < "number": "minDistance" < } < }, < { < "title": "inRange", < "type": "action", < "name": "inRange", < "parameters": { < "position": "self", < "target": "homePosition", < "range": "minDistance" < } < } < ] --- > "title": "getStorage", > "type": "action", > "name": "getStorage", > "parameters": { > "key": "homePosition" > }, > "output": { > "position": "homePosition" > } 67c37 < "title": "sequence", --- > "title": "selector", 69c39 < "name": "sequence", --- > "name": "selector", 73,96c43,71 < "title": "moveToPosition", < "type": "action", < "name": "moveToPosition", < "parameters": { < "avoidLiquid": true, < "groundPosition": true, < "maxGround": 5, < "minGround": -5, < "position": "homePosition", < "run": false, < "failFast": true < }, < "output": { < "direction": "direction" < } < } < ] < }, < { < "title": "sequence", < "type": "composite", < "name": "sequence", < "parameters": {}, < "children": [ --- > "title": "sequence", > "type": "composite", > "name": "sequence", > "parameters": {}, > "children": [ > { > "title": "entityConfigParameter", > "type": "action", > "name": "entityConfigParameter", > "parameters": { > "path": "returnHome.minDistance", > "default": 3 > }, > "output": { > "number": "minDistance" > } > }, > { > "title": "inRange", > "type": "action", > "name": "inRange", > "parameters": { > "position": "self", > "target": "homePosition", > "range": "minDistance" > } > } > ] > }, 98,103c73,95 < "title": "addEphemeralEffect", < "type": "action", < "name": "addEphemeralEffect", < "parameters": { < "name": "beamoutandteleport" < } --- > "title": "sequence", > "type": "composite", > "name": "sequence", > "parameters": {}, > "children": [ > { > "title": "moveToPosition", > "type": "action", > "name": "moveToPosition", > "parameters": { > "avoidLiquid": true, > "groundPosition": true, > "maxGround": 5, > "minGround": -5, > "position": "homePosition", > "run": false, > "failFast": true > }, > "output": { > "direction": "direction" > } > } > ] 106c98 < "title": "dynamic", --- > "title": "sequence", 108c100 < "name": "dynamic", --- > "name": "sequence", 112c104,112 < "title": "sequence", --- > "title": "addEphemeralEffect", > "type": "action", > "name": "addEphemeralEffect", > "parameters": { > "name": "beamoutandteleport" > } > }, > { > "title": "dynamic", 114c114 < "name": "sequence", --- > "name": "dynamic", 118,132c118,151 < "title": "receivedNotification", < "type": "action", < "name": "receivedNotification", < "parameters": { < "type": "performTeleport" < } < }, < { < "title": "setPosition", < "type": "action", < "name": "setPosition", < "parameters": { < "position": "homePosition", < "footPosition": true < } --- > "title": "sequence", > "type": "composite", > "name": "sequence", > "parameters": {}, > "children": [ > { > "title": "receivedNotification", > "type": "action", > "name": "receivedNotification", > "parameters": { > "type": "performTeleport" > } > }, > { > "title": "setPosition", > "type": "action", > "name": "setPosition", > "parameters": { > "position": "homePosition", > "footPosition": true > } > }, > { > "title": "timer", > "type": "action", > "name": "timer", > "parameters": { > "time": [ > 2, > 2 > ] > } > } > ] 135c154 < "title": "timer", --- > "title": "runner", 137,143c156,157 < "name": "timer", < "parameters": { < "time": [ < 2, < 2 < ] < } --- > "name": "runner", > "parameters": {} 146,151d159 < }, < { < "title": "runner", < "type": "action", < "name": "runner", < "parameters": {} 157a166,182 > }, > { > "title": "moveToPosition", > "type": "action", > "name": "moveToPosition", > "parameters": { > "avoidLiquid": true, > "groundPosition": true, > "maxGround": 5, > "minGround": -5, > "position": "spawn", > "run": false, > "failFast": true > }, > "output": { > "direction": "direction" > } biomes\surface\alien.biome 10c10 < "extraSpawns" : [ "greentip", "blueback", "sackbagcritter", "bouncebagcritter" ], --- > "extraSpawns" : [ "greentip", "blueback", "sackbagcritter", "bouncebagcritter", "floatbagcritter", "snooglecritter" ], 17c17 < "extraSpawns" : [ "blueback", "redwing", "sackbagcritter", "sackbagcritter" ], --- > "extraSpawns" : [ "blueback", "redwing", "sackbagcritter", "sackbagcritter", "floatbagcritter", "snooglecritter" ], biomes\surface\garden.biome 32,73d31 < // light lavenderish + red night < "mainColor" : [255, 255, 255], < < "morningColors" : [ [255, 151, 153], [255, 196, 197] ], < "dayColors" : [ [233, 179, 255], [245, 221, 225] ], < "eveningColors" : [ [195, 151, 255], [233, 217, 255] ], < "nightColors" : [ [50, 0, 0, 80], [50, 0, 0, 160] ], < < "morningLightColor" : [176, 81, 83], < "dayLightColor" : [182, 137, 200], < "eveningLightColor" : [150, 115, 199], < "nightLightColor" : [56, 17, 17] < }, < { < // light reddish + overcast night < "mainColor" : [255, 255, 255], < < "morningColors" : [ [255, 224, 129], [252, 230, 164] ], < "dayColors" : [ [255, 152, 107], [255, 183, 152] ], < "eveningColors" : [ [254, 121, 69], [254, 165, 129] ], < "nightColors" : [ [40, 17, 17, 80], [40, 17, 17, 160] ], < < "morningLightColor" : [202, 177, 100], < "dayLightColor" : [202, 138, 100], < "eveningLightColor" : [202, 100, 100], < "nightLightColor" : [40, 17, 17] < }, < { < // light muted blueish < "mainColor" : [255, 255, 255], < < "morningColors" : [ [203, 167, 56], [203, 108, 56] ], < "dayColors" : [ [179, 223, 251], [190, 190, 210] ], < "eveningColors" : [ [201, 169, 59], [195, 47, 44] ], < "nightColors" : [ [17, 19, 56, 80], [17, 19, 56, 160] ], < < "morningLightColor" : [158, 121, 42], < "dayLightColor" : [190, 190, 210], < "eveningLightColor" : [124, 50, 38], < "nightLightColor" : [17, 19, 56] < }, < { 77,80c35,38 < "morningColors" : [ [140, 140, 180], [120, 120, 180] ], < "dayColors" : [ [190, 190, 210], [170, 170, 210] ], < "eveningColors" : [ [160, 120, 180], [140, 100, 180] ], < "nightColors" : [ [26, 26, 31, 80], [26, 26, 31, 160] ], --- > "morningColors" : [ [242, 120, 0], [255, 230, 176] ], > "dayColors" : [ [115, 224, 255], [255, 255, 255] ], > "eveningColors" : [ [125, 17, 158], [210, 52, 50] ], > "nightColors" : [ [24, 38, 53, 80], [58, 42, 70, 160] ], 82,83c40,41 < "morningLightColor" : [140, 140, 180], < "dayLightColor" : [190, 190, 210], --- > "morningLightColor" : [140, 71, 0], > "dayLightColor" : [200, 200, 200], 85,127c43 < "nightLightColor" : [26, 26, 31] < }, < { < // light aqua with yellow sunrise < "mainColor" : [255, 255, 255], < < "morningColors" : [ [227, 209, 123], [244, 196, 66] ], < "dayColors" : [ [197, 236, 246], [133, 185, 235] ], < "eveningColors" : [ [246, 220, 186], [246, 177, 88] ], < "nightColors" : [ [26, 26, 31, 60], [26, 26, 31, 180] ], < < "morningLightColor" : [192, 174, 126], < "dayLightColor" : [190, 202, 204], < "eveningLightColor" : [192, 125, 80], < "nightLightColor" : [26, 26, 31] < }, < { < // light aqua with pinkish sunrise/sunset < "mainColor" : [255, 255, 255], < < "morningColors" : [ [219, 119, 184], [246, 153, 177] ], < "dayColors" : [ [197, 236, 246], [133, 185, 235] ], < "eveningColors" : [ [189, 143, 172], [255, 194, 192] ], < "nightColors" : [ [29, 26, 31, 60], [29, 26, 31, 180] ], < < "morningLightColor" : [200, 158, 169], < "dayLightColor" : [190, 202, 204], < "eveningLightColor" : [163, 134, 134], < "nightLightColor" : [29, 26, 31] < }, < { < // pinkish all around < "mainColor" : [255, 255, 255], < < "morningColors" : [ [255, 167, 152], [255, 163, 208] ], < "dayColors" : [ [228, 152, 169], [243, 205, 193] ], < "eveningColors" : [ [221, 186, 235], [247, 73, 121] ], < "nightColors" : [ [28, 14, 14, 60], [28, 14, 14, 180] ], < < "morningLightColor" : [195, 156, 149], < "dayLightColor" : [197, 184, 182], < "eveningLightColor" : [197, 98, 126], < "nightLightColor" : [28, 14, 14] --- > "nightLightColor" : [40, 20, 60] 211a128,140 > > // MICRO DUNGEONS > > { > "mode" : "floor", > "priority" : 3, > "variants" : 1, > "distribution" : "/biomes/distributions.config:scatteredLarge", > > "type" : "microdungeon", > "microdungeons" : [ "gardenmicrodungeons" ] > }, > biomes\surface_detached\eyepatch.biome 8c8 < "extraSpawns" : [ ], --- > "extraSpawns" : [ "eyefriend" ], dungeons\other\naturalcave\naturalcave.dungeon 705a706,717 > > { > "value" : [125, 194, 66, 255], > "comment" : "tutorial man", > "brush" : [ [ "npc", > { > "kind" : "npc", > "species" : "human", > "typeName" : "tutorial" > } > ] ] > }, items\armors\decorative\costumes\rock\rock.chest 8c8 < "description" : "A chest made of rock.", --- > "description" : "Chest armor made of rocks. How inconvenient!", items\armors\decorative\costumes\rock\rock.legs 8c8 < "description" : "This pants make me feel so heavy.", --- > "description" : "These pants make me feel so heavy.", items\armors\other\bedouin\bedouin.chest 8,9c8,9 < "description" : "A bedouin's chestpiece.", < "shortdescription" : "bedouin Chestpiece", --- > "description" : "A layered guise for those willing to brave the unknown.", > "shortdescription" : "Desert Cloak", items\armors\other\bedouin\bedouin.head 8,9c8,9 < "description" : "A bedouin's head armour", < "shortdescription" : "bedouin Head Armour", --- > "description" : "For those who want to brave the elements without fear.", > "shortdescription" : "Desert Head Scarf", items\armors\other\bedouin\bedouin.legs 8,9c8,9 < "description" : "A bedouin's leg armour", < "shortdescription" : "bedouin Leg Armour", --- > "description" : "Walk through thick and thin.", > "shortdescription" : "Desert Pants", monsters\bmonster.lua 12d11 < self.groups = {} 24d22 < self.behavior:loadScripts() monsters\critter\bouncebagcritter\body.monsterpart 2,3c2,3 < "name" : "bouncebag", < "category" : "bouncebag", --- > "name" : "bouncebagcritter", > "category" : "bouncebagcritter", monsters\critter\sackbagcritter\body.monsterpart 2,3c2,3 < "name" : "sackbag", < "category" : "sackbag", --- > "name" : "sackbagcritter", > "category" : "sackbagcritter", monsters\unique\bunny\bunny.animation 139c139 < "animation" : "/animations/puff2c/puff2c.animation", --- > "animation" : "/animations/monstersplosion/monstersplosion.animation", 148c148 < "timeToLive" : 0.4, --- > "timeToLive" : 0.35, 153a154,341 > "type" : "ember", > "size" : 1, > "color" : [255, 0, 0, 255], > "angularVelocity" : 20, > "fade" : 1, > "destructionTime" : 7, > "position" : [0, 0], > "initialVelocity" : [0, 8], > "finalVelocity" : [0, -8], > "approach" : [15, 15], > "timeToLive" : 1, > "layer" : "middle", > "variance" : { > "initialVelocity" : [4, 2], > "finalVelocity" : [4, 3], > "size" : 1.3 > } > } > }, > { > "particle" : { > "type" : "ember", > "size" : 1, > "color" : [255, 0, 0, 255], > "angularVelocity" : 20, > "fade" : 1, > "destructionTime" : 7, > "position" : [0, 0], > "initialVelocity" : [0, 8], > "finalVelocity" : [0, -8], > "approach" : [15, 15], > "timeToLive" : 1, > "layer" : "middle", > "variance" : { > "initialVelocity" : [4, 2], > "finalVelocity" : [4, 3], > "size" : 1.3 > } > } > }, > { > "particle" : { > "type" : "ember", > "size" : 1, > "color" : [255, 0, 0, 255], > "angularVelocity" : 20, > "fade" : 1, > "destructionTime" : 7, > "position" : [0, 0], > "initialVelocity" : [0, 8], > "finalVelocity" : [0, -8], > "approach" : [15, 15], > "timeToLive" : 1, > "layer" : "middle", > "variance" : { > "initialVelocity" : [4, 2], > "finalVelocity" : [4, 3], > "size" : 1.3 > } > } > }, > { > "particle" : { > "type" : "ember", > "size" : 1, > "color" : [255, 0, 0, 255], > "angularVelocity" : 20, > "fade" : 1, > "destructionTime" : 7, > "position" : [0, 0], > "initialVelocity" : [0, 8], > "finalVelocity" : [0, -8], > "approach" : [15, 15], > "timeToLive" : 1, > "layer" : "middle", > "variance" : { > "initialVelocity" : [4, 2], > "finalVelocity" : [4, 3], > "size" : 1.3 > } > } > }, > { > "particle" : { > "type" : "animated", > "animation" : "/animations/fizz1/fizz1.animation", > "size" : 1, > "angularVelocity" : 20, > "fade" : 1, > "destructionTime" : 7, > "position" : [0, 0], > "initialVelocity" : [-8, 8], > "finalVelocity" : [-3, -4], > "approach" : [15, 15], > "timeToLive" : 1, > "layer" : "middle", > "variance" : { > "initialVelocity" : [-4, 2], > "finalVelocity" : [-3, -4] > } > } > }, > { > "particle" : { > "type" : "ember", > "size" : 1, > "color" : [255, 0, 0, 255], > "angularVelocity" : 20, > "fade" : 1, > "destructionTime" : 7, > "position" : [0, 0], > "initialVelocity" : [0, 8], > "finalVelocity" : [0, -8], > "approach" : [15, 15], > "timeToLive" : 1, > "layer" : "middle", > "variance" : { > "initialVelocity" : [4, 2], > "finalVelocity" : [4, 3], > "size" : 1.3 > } > } > }, > { > "particle" : { > "type" : "ember", > "size" : 1, > "color" : [255, 0, 0, 255], > "angularVelocity" : 20, > "fade" : 1, > "destructionTime" : 7, > "position" : [0, 0], > "initialVelocity" : [0, 8], > "finalVelocity" : [0, -8], > "approach" : [15, 15], > "timeToLive" : 1, > "layer" : "middle", > "variance" : { > "initialVelocity" : [4, 2], > "finalVelocity" : [4, 3], > "size" : 1.3 > } > } > }, > { > "particle" : { > "type" : "ember", > "size" : 1, > "color" : [255, 0, 0, 255], > "angularVelocity" : 20, > "fade" : 1, > "destructionTime" : 7, > "position" : [0, 0], > "initialVelocity" : [0, 8], > "finalVelocity" : [0, -8], > "approach" : [15, 15], > "timeToLive" : 1, > "layer" : "middle", > "variance" : { > "initialVelocity" : [4, 2], > "finalVelocity" : [4, 3], > "size" : 1.3 > } > } > }, > { > "particle" : { > "type" : "ember", > "size" : 1, > "color" : [255, 0, 0, 255], > "angularVelocity" : 20, > "fade" : 1, > "destructionTime" : 7, > "position" : [0, 0], > "initialVelocity" : [0, 8], > "finalVelocity" : [0, -8], > "approach" : [15, 15], > "timeToLive" : 1, > "layer" : "middle", > "variance" : { > "initialVelocity" : [4, 2], > "finalVelocity" : [4, 3], > "size" : 1.3 > } > } > }, > { > "particle" : { 164c352 < "timeToLive" : 3.45, --- > "timeToLive" : 1, npcs\bmain.lua 11d10 < self.groups = {} 19d17 < self.behavior:loadScripts() 272d269 < world.logInfo("SWAPPY SWAP") npcs\merchant.npctype 1961c1961,1962 < { "name" : "humantier1pants", "parameters" : { "colorIndex" : 1 } }, { "name" : "humantier1pants", "parameters" : { "colorIndex" : 2 } }, { "name" : "humantier1pants", "parameters" : { "colorIndex" : 3 } }, { "name" : "humantier1pants", "parameters" : { "colorIndex" : 8 } }, { "name" : "humantier1pants", "parameters" : { "colorIndex" : 4 } } ] --- > { "name" : "humantier1pants", "parameters" : { "colorIndex" : 1 } }, { "name" : "humantier1pants", "parameters" : { "colorIndex" : 2 } }, { "name" : "humantier1pants", "parameters" : { "colorIndex" : 3 } }, { "name" : "humantier1pants", "parameters" : { "colorIndex" : 8 } }, { "name" : "humantier1pants", "parameters" : { "colorIndex" : 4 } } > ] npcs\villager.npctype 1074d1073 < "Bring back the Eighties, I say!", 1087d1085 < "I really miss Jim Carrey movies.", 1093d1090 < "We should get drunk and reminisce about the olden days.", objects\generic\arcademachine\arcademachine.object 32,38c32,36 < "npcPlay": { < "duration": 5.0, < "influence": [ < [["scary"], "beBored"], < [[], "beHappy"] < ] < }, --- > "npcInfluenceSequence": [ > "computer", > "computer", > "finishedVideogame" > ], parallax\timeofdaycorrelation.functions 2c2,4 < "nightVisible" : ["linear", "clamp", [0, 0], [0.55, 0], [0.65, 1], [0.85, 1], [0.95, 0]] --- > "nightVisible" : ["linear", "clamp", [0, 0], [0.55, 0], [0.65, 1], [0.85, 1], [0.95, 0]], > "dayCloudVisible" : ["linear", "clamp", [0, 0], [0.15, 1], [0.45, 1], [0.55, 0], [0.95, 0]], > "nightCloudVisible" : ["linear", "clamp", [0, 1], [0.15, 0], [0.45, 0], [0.55, 1], [0.95, 1]] parallax\surface\garden.parallax 113a114,116 > > // Day Clouds > 117c120 < "offset" : [0, 120], --- > "offset" : [0, 240], 119,121c122,126 < "minSpeed" : 5000, < "maxSpeed" : 10000, < "fadePercent" : 0.15 --- > "minSpeed" : 1000, > "maxSpeed" : 5000, > "fadePercent" : 0.0, > "unlit" : true, > "timeOfDayCorrelation" : "dayCloudVisible" 126c131 < "offset" : [0, 140], --- > "offset" : [0, 280], 128c133,155 < "minSpeed" : 2000, --- > "minSpeed" : 500, > "maxSpeed" : 2500, > "fadePercent" : 0.0, > "unlit" : true, > "timeOfDayCorrelation" : "dayCloudVisible" > }, > { > "kind" : "clouds1", > "baseCount" : 2, > "offset" : [0, 300], > "parallax" : 6, > "minSpeed" : 1000, > "maxSpeed" : 5000, > "fadePercent" : 0.0, > "unlit" : true, > "timeOfDayCorrelation" : "dayCloudVisible" > }, > { > "kind" : "clouds3", > "baseCount" : 2, > "offset" : [0, 120], > "parallax" : 9, > "minSpeed" : 1000, 130c157,170 < "fadePercent" : 0.06 --- > "fadePercent" : 0.0, > "unlit" : true, > "timeOfDayCorrelation" : "dayCloudVisible" > }, > { > "kind" : "clouds2", > "baseCount" : 2, > "offset" : [0, 160], > "parallax" : 14, > "minSpeed" : 500, > "maxSpeed" : 2500, > "fadePercent" : 0.0, > "unlit" : true, > "timeOfDayCorrelation" : "dayCloudVisible" 135c175 < "offset" : [0, 150], --- > "offset" : [0, 200], 137,139c177,181 < "minSpeed" : 5000, < "maxSpeed" : 10000, < "fadePercent" : 0.04 --- > "minSpeed" : 1000, > "maxSpeed" : 5000, > "fadePercent" : 0.0, > "unlit" : true, > "timeOfDayCorrelation" : "dayCloudVisible" 144c186 < "offset" : [0, 60], --- > "offset" : [0, 2], 146,148c188,192 < "minSpeed" : 5000, < "maxSpeed" : 10000, < "fadePercent" : 0.15 --- > "minSpeed" : 1000, > "maxSpeed" : 5000, > "fadePercent" : 0.0, > "unlit" : true, > "timeOfDayCorrelation" : "dayCloudVisible" 153c197 < "offset" : [0, 80], --- > "offset" : [0, 40], 155c199,224 < "minSpeed" : 2000, --- > "minSpeed" : 500, > "maxSpeed" : 2500, > "fadePercent" : 0.0, > "unlit" : true, > "timeOfDayCorrelation" : "dayCloudVisible" > }, > { > "kind" : "clouds1", > "baseCount" : 2, > "offset" : [0, 80], > "parallax" : 6, > "minSpeed" : 1000, > "maxSpeed" : 5000, > "fadePercent" : 0.0, > "unlit" : true, > "timeOfDayCorrelation" : "dayCloudVisible" > }, > > // Night Clouds > > { > "kind" : "clouds3", > "baseCount" : 2, > "offset" : [0, 240], > "parallax" : 9, > "minSpeed" : 1000, 157c226,239 < "fadePercent" : 0.06 --- > "fadePercent" : 0.0, > "unlit" : false, > "timeOfDayCorrelation" : "nightCloudVisible" > }, > { > "kind" : "clouds2", > "baseCount" : 2, > "offset" : [0, 280], > "parallax" : 14, > "minSpeed" : 500, > "maxSpeed" : 2500, > "fadePercent" : 0.0, > "unlit" : false, > "timeOfDayCorrelation" : "nightCloudVisible" 162c244 < "offset" : [0, 100], --- > "offset" : [0, 300], 164,166c246,250 < "minSpeed" : 5000, < "maxSpeed" : 10000, < "fadePercent" : 0.04 --- > "minSpeed" : 1000, > "maxSpeed" : 5000, > "fadePercent" : 0.0, > "unlit" : false, > "timeOfDayCorrelation" : "nightCloudVisible" 171c255 < "offset" : [0, 1], --- > "offset" : [0, 120], 173,175c257,261 < "minSpeed" : 5000, < "maxSpeed" : 10000, < "fadePercent" : 0.15 --- > "minSpeed" : 1000, > "maxSpeed" : 5000, > "fadePercent" : 0.0, > "unlit" : false, > "timeOfDayCorrelation" : "nightCloudVisible" 180c266 < "offset" : [0, 20], --- > "offset" : [0, 160], 182,184c268,272 < "minSpeed" : 2000, < "maxSpeed" : 5000, < "fadePercent" : 0.06 --- > "minSpeed" : 500, > "maxSpeed" : 2500, > "fadePercent" : 0.0, > "unlit" : false, > "timeOfDayCorrelation" : "nightCloudVisible" 188a277,298 > "offset" : [0, 200], > "parallax" : 6, > "minSpeed" : 1000, > "maxSpeed" : 5000, > "fadePercent" : 0.0, > "unlit" : false, > "timeOfDayCorrelation" : "nightCloudVisible" > }, > { > "kind" : "clouds3", > "baseCount" : 2, > "offset" : [0, 2], > "parallax" : 9, > "minSpeed" : 1000, > "maxSpeed" : 5000, > "fadePercent" : 0.0, > "unlit" : false, > "timeOfDayCorrelation" : "nightCloudVisible" > }, > { > "kind" : "clouds2", > "baseCount" : 2, 189a300,310 > "parallax" : 14, > "minSpeed" : 500, > "maxSpeed" : 2500, > "fadePercent" : 0.0, > "unlit" : false, > "timeOfDayCorrelation" : "nightCloudVisible" > }, > { > "kind" : "clouds1", > "baseCount" : 2, > "offset" : [0, 80], 191,193c312,316 < "minSpeed" : 5000, < "maxSpeed" : 10000, < "fadePercent" : 0.04 --- > "minSpeed" : 1000, > "maxSpeed" : 5000, > "fadePercent" : 0.0, > "unlit" : false, > "timeOfDayCorrelation" : "nightCloudVisible" scripts\behavior.lua 23c23 < newTree.root = nodeFromJson(behavior.root) --- > newTree.root = nodeFromJson(behavior.root, behavior.parameters) 25a26,27 > self:loadScripts(behavior.scripts) > 32c34 < updateGroups() --- > BGroup:updateGroups() 37,38c39,40 < function BTree:loadScripts() < for _,script in ipairs(self.behavior.scripts) do --- > function BTree:loadScripts(scripts) > for _,script in ipairs(scripts) do 49c51 < updateGroups() --- > BGroup:updateGroups() 87,88c89,90 < function BTComposite.fromJson(node) < return composites[node.name].fromJson(node) --- > function BTComposite.fromJson(node, parameters) > return composites[node.name].fromJson(node, parameters) 140c142 < function BTSequence.fromJson(node) --- > function BTSequence.fromJson(node, parameters) 143c145 < table.insert(children, nodeFromJson(child)) --- > table.insert(children, nodeFromJson(child, parameters)) 187c189 < function BTCleanup.fromJson(node) --- > function BTCleanup.fromJson(node, parameters) 190c192 < table.insert(children, nodeFromJson(child)) --- > table.insert(children, nodeFromJson(child, parameters)) 244c246 < function BTSelector.fromJson(node) --- > function BTSelector.fromJson(node, parameters) 247c249 < table.insert(children, nodeFromJson(child)) --- > table.insert(children, nodeFromJson(child, parameters)) 290c292 < function BTDynamic.fromJson(node) --- > function BTDynamic.fromJson(node, parameters) 293c295 < table.insert(children, nodeFromJson(child)) --- > table.insert(children, nodeFromJson(child, parameters)) 353c355 < function BTParallel.fromJson(node) --- > function BTParallel.fromJson(node, parameters) 356c358 < table.insert(children, nodeFromJson(child)) --- > table.insert(children, nodeFromJson(child, parameters)) 421c423 < function BTRandomize.fromJson(node) --- > function BTRandomize.fromJson(node, parameters) 424c426 < table.insert(children, nodeFromJson(child)) --- > table.insert(children, nodeFromJson(child, parameters)) 456,457c458,459 < function BTDecorator.fromJson(node) < return decorators[node.name].fromJson(node) --- > function BTDecorator.fromJson(node, parameters) > return decorators[node.name].fromJson(node, parameters) 496,497c498,499 < function BTInverter.fromJson(node) < return BTInverter.new(nodeFromJson(node.child)) --- > function BTInverter.fromJson(node, parameters) > return BTInverter.new(nodeFromJson(node.child, parameters)) 523,524c525,526 < function BTSucceeder.fromJson(node) < return BTSucceeder.new(nodeFromJson(node.child)) --- > function BTSucceeder.fromJson(node, parameters) > return BTSucceeder.new(nodeFromJson(node.child, parameters)) 548,549c550,551 < function BTFailer.fromJson(node) < return BTFailer.new(nodeFromJson(node.child)) --- > function BTFailer.fromJson(node, parameters) > return BTFailer.new(nodeFromJson(node.child, parameters)) 577c579 < function BTLimiter.fromJson(node) --- > function BTLimiter.fromJson(node, parameters) 579c581 < return BTLimiter.new(nodeFromJson(node.child), parameters.limit) --- > return BTLimiter.new(nodeFromJson(node.child, parameters), parameters.limit) 611c613 < function BTCooldown.fromJson(node) --- > function BTCooldown.fromJson(node, parameters) 613c615 < return BTCooldown.new(args.cooldown, args.onFail, nodeFromJson(node.child)) --- > return BTCooldown.new(args.cooldown, args.onFail, nodeFromJson(node.child, parameters)) 644c646 < function BTRepeater.fromJson(node) --- > function BTRepeater.fromJson(node, parameters) 650c652 < return BTRepeater.new(args.maxLoops, args.untilSuccess, nodeFromJson(node.child)) --- > return BTRepeater.new(args.maxLoops, args.untilSuccess, nodeFromJson(node.child, parameters)) 695c697 < function BTGroup.fromJson(node) --- > function BTGroup.fromJson(node, parameters) 699c701 < return BTGroup.new(args, nodeFromJson(node.child)) --- > return BTGroup.new(args, nodeFromJson(node.child, parameters)) 709c711 < local groupResult = joinGroup(self.group, position) --- > local groupResult = BGroup:joinGroup(self.group, position) 713c715 < leaveGroup(self.group.groupId) --- > BGroup:leaveGroup(self.group.groupId) 720c722 < leaveGroup(self.group.groupId) --- > BGroup:leaveGroup(self.group.groupId) 722c724 < setGroupSuccess(self.group.groupId) --- > BGroup:setGroupSuccess(self.group.groupId) 767c769 < function BTTask.fromJson(node) --- > function BTTask.fromJson(node, parameters) 771c773 < return BTTask.new(args, nodeFromJson(node.child)) --- > return BTTask.new(args, nodeFromJson(node.child, parameters)) 775,779c777 < if joinTask(self.groupId, self.task) then < local result = self:runChild(dt) < if result == true or result == false then < leaveTask(self.groupId, self.task.taskId) < end --- > if BGroup:joinTask(self.groupId, self.task) then 804c802 < function BTAction.fromJson(node) --- > function BTAction.fromJson(node, parameters) 841c839 < function nodeFromJson(node) --- > function nodeFromJson(node, parameters) 843c841 < return BTAction.fromJson(node) --- > return BTAction.fromJson(node, parameters) 845c843 < return BTComposite.fromJson(node) --- > return BTComposite.fromJson(node, parameters) 847c845,849 < return BTDecorator.fromJson(node) --- > return BTDecorator.fromJson(node, parameters) > elseif node.type == "module" then > local module = root.behaviorModule(node.path, parameters) > BTree:loadScripts(module.scripts) > return nodeFromJson(module.root, module.parameters) 993c995,1002 < function findGroupPosition(goalType, goal) --- > BGroup = { > groups = {}, > joinedGroups = {}, > tasks = {}, > joinedTasks = {} > } > > function BGroup.findGroupPosition(goalType, goal) 1003c1012 < function joinGroup(group, position) --- > function BGroup:joinGroup(group, position) 1006c1015 < return requestJoinGroup(self.groups[group.groupId], group.groupId, group.goalType, group.goal) --- > return self:requestJoinGroup(self.groups[group.groupId], group.groupId, group.goalType, group.goal) 1011c1020 < position = position or findGroupPosition(group.goalType, group.goal) --- > position = position or BGroup.findGroupPosition(group.goalType, group.goal) 1017c1026 < local result = requestJoinGroup(stagehandId, group.groupId, group.goalType, group.goal) --- > local result = self:requestJoinGroup(stagehandId, group.groupId, group.goalType, group.goal) 1026,1027c1035,1036 < local stagehandId = world.spawnStagehand(position, "coordinator", {scriptConfig = group}) < return requestJoinGroup(stagehandId, group.groupId, group.goalType, group.goal) --- > local stagehandId = world.spawnStagehand(position, "coordinator", {scriptConfig = group, behavior = group.behavior}) > return self:requestJoinGroup(stagehandId, group.groupId, group.goalType, group.goal) 1030,1031c1039,1040 < function requestJoinGroup(entityId, groupId, goalType, goal) < self.joined = self.joined or {} --- > function BGroup:requestJoinGroup(entityId, groupId, goalType, goal) > self.joinedGroups = self.joinedGroups or {} 1034c1043 < self.joined[groupId] = entityId --- > self.joinedGroups[groupId] = entityId 1042,1043c1051,1052 < function leaveGroup(groupId) < local coordinator = groupCoordinator(groupId) --- > function BGroup:leaveGroup(groupId) > local coordinator = self:groupCoordinator(groupId) 1050c1059 < function updateGroups() --- > function BGroup:updateGroups() 1052,1053d1060 < self.tasks = self.tasks or {} < self.joinedTasks = self.joinedTasks or {} 1056c1063 < leaveTask(task.groupId, task.taskId) --- > self:leaveTask(task.groupId, task.taskId) 1063,1064d1069 < self.groups = self.groups or {} < self.joined = self.joined or {} 1066,1067c1071,1072 < if self.joined[groupId] == nil or self.joined[groupId] ~= entityId then < leaveGroup(groupId) --- > if self.joinedGroups[groupId] == nil or self.joinedGroups[groupId] ~= entityId then > BGroup:leaveGroup(groupId) 1070,1071c1075,1076 < self.groups = self.joined < self.joined = {} --- > self.groups = self.joinedGroups > self.joinedGroups = {} 1074c1079 < function joinTask(groupId, task) --- > function BGroup:joinTask(groupId, task) 1076c1081 < local coordinator = groupCoordinator(groupId) --- > local coordinator = self:groupCoordinator(groupId) 1086,1087c1091,1092 < function leaveTask(groupId, taskId) < local coordinator = groupCoordinator(groupId) --- > function BGroup:leaveTask(groupId, taskId) > local coordinator = self:groupCoordinator(groupId) 1093,1094c1098,1099 < function setGroupSuccess(groupId, taskId) < local coordinator = groupCoordinator(groupId) --- > function BGroup:setGroupSuccess(groupId, taskId) > local coordinator = self:groupCoordinator(groupId) 1100c1105 < function groupCoordinator(groupId) --- > function BGroup:groupCoordinator(groupId) scripts\actions\movement.lua 107,112d106 < local position = BData:getPosition(args.position) < if args.groundPosition then < position = findGroundPosition(position, args.minGround, args.maxGround, args.avoidLiquid) < end < if not position then return false end < 115a110,117 > local position = BData:getPosition(args.position) > if args.groundPosition then > position = findGroundPosition(position, args.minGround, args.maxGround, args.avoidLiquid) > end > if not position then return false end > world.debugLine(mcontroller.position(), position, "yellow") > world.debugPoint(position, "yellow") > stagehands\coordinator.lua 11a12,17 > local behavior = entity.behavior() > if behavior.root ~= nil then > self.btree = BTree:new(behavior) > self.btree:loadScripts() > end > 26a33,36 > end > > if self.btree and self.btree:run(dt) ~= "running" then > self.btree:reset() stagehands\coordinator.stagehand 10c10,11 < "/stagehands/coordinator.lua" --- > "/stagehands/coordinator.lua", > "/scripts/behavior.lua" tiles\materials\plantmatter.material 7c7 < "shortdescription" : "plantmatterstone", --- > "shortdescription" : "Plant Matter",