FILES ----- humanoid.config liquids.config [NEW] behaviors\monsters\critter\swimming.behavior behaviors\npc\combat.behavior behaviors\npc\guard.behavior [NEW] behaviors\npc\guardidle.behavior [NEW] behaviors\npc\hostileguard.behavior [NEW] behaviors\npc\hostiletracking.behavior behaviors\npc\merchant.behavior behaviors\npc\play.behavior biomes\surface\forest.biome biomes\surface_detached\spring.biome dungeons\apex\apexresearchlab\apexresearchlab.dungeon dungeons\apex\apextestchamber\apextestchamber.dungeon dungeons\apex\apextowerblock\apextowerblock.dungeon dungeons\avian\avianairship\avianairship.dungeon dungeons\avian\aviantemple\aviantemple.dungeon dungeons\avian\aviantomb\aviantomb.dungeon dungeons\avian\aviantower\aviantower.dungeon dungeons\avian\avianvillage\avianvillage.dungeon dungeons\floran\floranhell\floranhell.dungeon dungeons\floran\floranhuntinggrounds\floranhuntinggrounds.dungeon dungeons\floran\floranvillagetower\floranvillagetower.dungeon dungeons\glitch\glitchcastle\glitchcastle.dungeon dungeons\glitch\glitchsewer\glitchsewer.dungeon dungeons\glitch\glitchvillage\glitchvillage.dungeon dungeons\microdungeons\biomes\forest\clearing2.json dungeons\microdungeons\biomes\forest\clearing3.json dungeons\microdungeons\biomes\forest\clearing4.json dungeons\microdungeons\biomes\forest\forestmicrodungeons.dungeon dungeons\microdungeons\biomes\forest\forestwell1.json dungeons\microdungeons\biomes\forest\forestwell2.json dungeons\microdungeons\biomes\forest\lake1.json dungeons\microdungeons\biomes\forest\lake2.json dungeons\microdungeons\biomes\forest\lake3.json dungeons\microdungeons\biomes\forest\largepond1.json dungeons\microdungeons\biomes\forest\largepond2.json dungeons\microdungeons\biomes\forest\medpond1.json dungeons\microdungeons\biomes\forest\medpond2.json dungeons\microdungeons\biomes\forest\medpond3.json dungeons\microdungeons\biomes\forest\pondcamp.json dungeons\microdungeons\biomes\forest\ruinlarge1.json dungeons\microdungeons\biomes\forest\ruinmedium1.json dungeons\microdungeons\biomes\forest\ruinmedium2.json dungeons\microdungeons\biomes\forest\ruinsmall1.json dungeons\microdungeons\biomes\forest\smallpond2.json dungeons\microdungeons\biomes\forest\smallpond3.json dungeons\microdungeons\biomes\garden\archway.json dungeons\microdungeons\biomes\garden\archway1.json dungeons\microdungeons\biomes\garden\gardenbridge1.json dungeons\microdungeons\biomes\garden\gardenbridge2.json dungeons\microdungeons\biomes\garden\gardenhouseruin1.json dungeons\microdungeons\biomes\garden\grave1.json dungeons\microdungeons\biomes\garden\grave2.json dungeons\microdungeons\biomes\garden\graveyard.json dungeons\microdungeons\biomes\garden\graveyardflowers.json dungeons\microdungeons\biomes\garden\lake3.json dungeons\microdungeons\biomes\garden\large1.json dungeons\microdungeons\biomes\garden\littlecave1.json dungeons\microdungeons\biomes\garden\med1.json dungeons\microdungeons\biomes\garden\mediumburriedruin.json dungeons\microdungeons\biomes\garden\mediumgardenflowers.json dungeons\microdungeons\biomes\garden\mediumgardenruin1.json dungeons\microdungeons\biomes\garden\mediumgardenruincamp.json dungeons\microdungeons\biomes\garden\mediumgardenruintall.json dungeons\microdungeons\biomes\garden\mediumruin.json dungeons\microdungeons\biomes\garden\moundmedium.json dungeons\microdungeons\biomes\garden\small1.json dungeons\microdungeons\biomes\garden\smallcamp.json dungeons\microdungeons\biomes\garden\smallgardenflowers.json dungeons\microdungeons\biomes\garden\smallpile.json dungeons\microdungeons\biomes\garden\smallstonehouse.json dungeons\microdungeons\biomes\garden\smalltower.json dungeons\microdungeons\biomes\garden\smalltower2.json dungeons\microdungeons\biomes\garden\tunnelsmall1.json dungeons\microdungeons\biomes\garden\wall1.json dungeons\microdungeons\biomes\garden\wall2.json dungeons\microdungeons\biomes\garden\wall3.json dungeons\microdungeons\biomes\garden\well1.json dungeons\microdungeons\biomes\garden\well2.json dungeons\microdungeons\biomes\garden\well3.json dungeons\microdungeons\biomes\garden\xtra1.json dungeons\microdungeons\biomes\shroom\shroomhouse1.json [NEW] dungeons\microdungeons\biomes\shroom\shroomhouse2.json [NEW] dungeons\microdungeons\biomes\shroom\shroomhouse3.json [NEW] dungeons\microdungeons\biomes\shroom\shroomhouse4.json [NEW] dungeons\microdungeons\biomes\shroom\shroomhouse5.json [NEW] dungeons\microdungeons\biomes\shroom\shroomtemplate.json dungeons\microdungeons\biomes\spring\crittergroup3.json dungeons\microdungeons\biomes\spring\largepool5.json dungeons\microdungeons\biomes\spring\largepool7.json [NEW] dungeons\microdungeons\biomes\spring\springmicrodungeons.dungeon dungeons\microdungeons\randomencounter\apexunderground\apexundergroundencounter.dungeon dungeons\microdungeons\randomencounter\avianunderground\avianundergroundencounter.dungeon dungeons\microdungeons\randomencounter\floranunderground\floranundergroundencounter.dungeon dungeons\microdungeons\randomencounter\glitchunderground\glitchundergroundencounter.dungeon dungeons\microdungeons\randomencounter\unsorted\avian\avianencounter.dungeon dungeons\microdungeons\randomencounter\unsorted\generic\cultistobjects1.png dungeons\microdungeons\randomencounter\unsorted\generic\cultistobjects2.png dungeons\microdungeons\randomencounter\unsorted\generic\miniboss.dungeon dungeons\microdungeons\randomencounter\unsorted\generic\randomencounter.dungeon dungeons\microdungeons\randomencounter\unsorted\glitch\glitchencounter.dungeon dungeons\microdungeons\randomencounter\unsorted\shroomencounter\shroomencounter.dungeon dungeons\microdungeons\randomencounter\unsorted\treasureroom\treasureroom.dungeon dungeons\microdungeons\template\templateextralarge.json dungeons\microdungeons\template\templatelarge.json dungeons\microdungeons\template\templatemedium.json dungeons\microdungeons\template\templatesmall.json dungeons\missions\floranmissions\floranmission1.dungeon dungeons\missions\glitchmissions\glitchmission1.dungeon dungeons\missions\missiontest1\missiontest1.dungeon dungeons\missions\penguinmissions\penguinmission1.dungeon dungeons\missions\penguinmissions\penguinmission2.dungeon dungeons\other\ancientgateway\ancientgateway.dungeon dungeons\other\scifidungeon\scifidungeon.dungeon [NEW] humanoid\dances\posedance.dance [NEW] humanoid\dances\typing.dance [NEW] monsters\critter\fishcritter\body.frames [NEW] monsters\critter\fishcritter\body.monsterpart [NEW] monsters\critter\fishcritter\body.png [NEW] monsters\critter\fishcritter\fishcritter.animation [NEW] monsters\critter\fishcritter\fishcritter.monstertype [NEW] npcs\biome\forestvillager.npctype npcs\mission\florangladiator.npctype npcs\mission\floranpredator.npctype npcs\mission\floransniper.npctype [NEW] npcs\subbiometenants\spring.npctype [NEW] npcs\subbiometenants\tar.npctype objects\farmables\beakseed\beakseedseed.object objects\farmables\beakseed\wildbeakseedseed.object objects\farmables\boltbulb\boltbulbseed.object objects\farmables\boltbulb\wildboltbulbseed.object objects\farmables\carrot\carrotseed.object objects\farmables\carrot\wildcarrotseed.object objects\farmables\eggshoot\eggshootseed.object objects\farmables\eggshoot\wildeggshootseed.object objects\farmables\feathercrown\feathercrownseed.object objects\farmables\feathercrown\wildfeathercrownseed.object objects\farmables\kiwi\kiwiseed.object objects\farmables\kiwi\wildkiwiseed.object objects\farmables\potatoes\potatoseed.object objects\farmables\potatoes\wildpotatoseed.object objects\farmables\pussplum\pussplumseed.object objects\farmables\pussplum\wildpussplumseed.object objects\generic\arcademachine\arcademachine.object objects\generic\wooddoor\wooddoor.png objects\generic\wooddoor\wooddooricon.png objects\generic\woodenarmchair1\woodenarmchair1.png objects\generic\woodenarmchair1\woodenarmchair1cover.png objects\generic\woodenbed\woodenbed.png objects\generic\woodenbed\woodenbedcover.png objects\generic\woodenbed\woodenbedicon.png objects\generic\woodenbed2\woodenbed2.png objects\generic\woodenbed2\woodenbed2icon.png objects\generic\woodenbookcase\woodenbookcase.png objects\generic\woodenbookcase\woodenbookcaseicon.png objects\generic\woodencabinet1\woodencabinet1.png objects\generic\woodencabinet1\woodencabinet1icon.png objects\generic\woodencabinet2\woodencabinet2.png objects\generic\woodencabinet2\woodencabinet2icon.png objects\generic\woodencabinet3\woodencabinet3.png objects\generic\woodencabinet3\woodencabinet3icon.png objects\generic\woodenceilingbookcase1\woodenceilingbookcase1.png objects\generic\woodenceilingbookcase1\woodenceilingbookcase1icon.png objects\generic\woodenceilingcabinet1\woodenceilingcabinet1.png objects\generic\woodenceilingcabinet1\woodenceilingcabinet1icon.png objects\generic\woodenceilingcabinet2\woodenceilingcabinet2.png objects\generic\woodenceilingcabinet2\woodenceilingcabinet2icon.png objects\generic\woodenchair\woodenchair.frames objects\generic\woodenchair\woodenchair.png objects\generic\woodencouch1\woodencouch1.png objects\generic\woodendesk\woodendesk.png objects\generic\woodendesk\woodendeskicon.png objects\generic\woodenendtable\woodenendtable.png objects\generic\woodenendtable\woodenendtableicon.png objects\generic\woodenlamp1\woodenlamp1.png objects\generic\woodenlamp1\woodenlamp1icon.png objects\generic\woodenlamp2\woodenlamp2.png objects\generic\woodenlamp2\woodenlamp2icon.png objects\generic\woodenlamp3\woodenlamp3.png objects\generic\woodenlamp3\woodenlamp3icon.png objects\generic\woodensink\woodensink.png objects\generic\woodensink\woodensinkicon.png objects\generic\woodenstand1\woodenstand1.png objects\generic\woodenstand1\woodenstand1icon.png objects\generic\woodenstand2\woodenstand2.png objects\generic\woodtable\woodtable.png objects\generic\woodtable\woodtableicon.png objects\generic\woodtoilet\woodtoilet.png objects\generic\woodtoilet\woodtoileticon.png parallax\timeofdaycorrelation.functions parallax\surface\forest.parallax plants\trees\forest\foliage\bubbles\parallax\forestcanopy\base\1.png plants\trees\forest\foliage\cloudy\parallax\forestcanopy\base\1.png plants\trees\forest\foliage\orangeflower\parallax\forestcanopy\base\1.png plants\trees\forest\foliage\redleaves\parallax\forestcanopy\base\1.png plants\trees\forest\foliage\scraggy\parallax\forestcanopy\base\1.png plants\trees\forest\foliage\spikeyfoliage\parallax\forestcanopy\base\1.png [NEW] plants\trees\forest\stem\birch\parallax\forestlargetree\base\1.png [NEW] plants\trees\forest\stem\birch\parallax\forestsmalltree\base\1.png [NEW] plants\trees\forest\stem\birch\parallax\foresttreesback\base\1.png [NEW] plants\trees\forest\stem\birch\parallax\treeback\base\1.png [NEW] plants\trees\forest\stem\birch\parallax\treefront\base\1.png [NEW] plants\trees\forest\stem\cocoa\parallax\forestlargetree\base\1.png [NEW] plants\trees\forest\stem\cocoa\parallax\forestsmalltree\base\1.png [NEW] plants\trees\forest\stem\cocoa\parallax\foresttreesback\base\1.png [NEW] plants\trees\forest\stem\fleshy\parallax\forestlargetree\base\1.png [NEW] plants\trees\forest\stem\fleshy\parallax\forestsmalltree\base\1.png [NEW] plants\trees\forest\stem\fleshy\parallax\foresttreesback\base\1.png [NEW] plants\trees\forest\stem\grumpy\parallax\forestlargetree\base\1.png [NEW] plants\trees\forest\stem\grumpy\parallax\forestsmalltree\base\1.png [NEW] plants\trees\forest\stem\grumpy\parallax\foresttreesback\base\1.png [NEW] plants\trees\forest\stem\metal\parallax\forestlargetree\base\1.png [NEW] plants\trees\forest\stem\metal\parallax\forestsmalltree\base\1.png [NEW] plants\trees\forest\stem\metal\parallax\foresttreesback\base\1.png [NEW] plants\trees\forest\stem\pine\parallax\forestlargetree\base\1.png [NEW] plants\trees\forest\stem\pine\parallax\forestsmalltree\base\1.png [NEW] plants\trees\forest\stem\pine\parallax\foresttreesback\base\1.png [NEW] plants\trees\forest\stem\pineytree\parallax\forestlargetree\base\1.png [NEW] plants\trees\forest\stem\pineytree\parallax\forestsmalltree\base\1.png [NEW] plants\trees\forest\stem\pineytree\parallax\foresttreesback\base\1.png [NEW] plants\trees\forest\stem\roottree\parallax\forestlargetree\base\1.png [NEW] plants\trees\forest\stem\roottree\parallax\forestsmalltree\base\1.png [NEW] plants\trees\forest\stem\roottree\parallax\foresttreesback\base\1.png [NEW] plants\trees\forest\stem\slimey\parallax\forestlargetree\base\1.png [NEW] plants\trees\forest\stem\slimey\parallax\forestsmalltree\base\1.png [NEW] plants\trees\forest\stem\slimey\parallax\foresttreesback\base\1.png [NEW] plants\trees\forest\stem\slobby\parallax\forestlargetree\base\1.png [NEW] plants\trees\forest\stem\slobby\parallax\forestsmalltree\base\1.png [NEW] plants\trees\forest\stem\slobby\parallax\foresttreesback\base\1.png [NEW] plants\trees\forest\stem\something\parallax\forestlargetree\base\1.png [NEW] plants\trees\forest\stem\something\parallax\forestsmalltree\base\1.png [NEW] plants\trees\forest\stem\something\parallax\foresttreesback\base\1.png [NEW] plants\trees\forest\stem\spikey\parallax\forestlargetree\base\1.png [NEW] plants\trees\forest\stem\spikey\parallax\forestsmalltree\base\1.png [NEW] plants\trees\forest\stem\spikey\parallax\foresttreesback\base\1.png [NEW] plants\trees\forest\stem\twisted\parallax\forestlargetree\base\1.png [NEW] plants\trees\forest\stem\twisted\parallax\forestsmalltree\base\1.png [NEW] plants\trees\forest\stem\twisted\parallax\foresttreesback\base\1.png [NEW] plants\trees\forest\stem\wood\parallax\forestlargetree\base\1.png [NEW] plants\trees\forest\stem\wood\parallax\forestsmalltree\base\1.png [NEW] plants\trees\forest\stem\wood\parallax\foresttreesback\base\1.png scripts\behavior.lua scripts\pathing.lua scripts\actions\movement.lua scripts\actions\reaction.lua scripts\behavior\composite.lua scripts\behavior\decorator.lua stagehands\coordinator\npccombat.lua tiles\materials\heavyironbars.png DIFFS ----- humanoid.config 99,131d98 < "dances" : { < "posedance" : { < "states" : ["idle"], < "cycle" : 2.0, < "cyclic" : true, < "stances" : [ < // body, frontArm, backArm, headOffset, frontArmOffset, backArmOffset < [ "idle.1", "idle.1", "idle.1", [0, 0], [0, 0], [0, 0] ], < [ "idle.2", "idle.2", "idle.2", [-1, 0], [0, 0], [0, 0] ], < [ "idle.3", "idle.3", "idle.3", [-1, 0], [0, 0], [0, 0] ], < [ "idle.4", "idle.4", "idle.4", [-1, 0], [0, 0], [0, 0] ], < [ "idle.5", "idle.5", "idle.5", [0, 0], [0, 0], [0, 0] ], < [ "idle.2", "idle.5", "idle.5", [-1, 0], [0, 0], [0, 0] ], < [ "idle.4", "idle.3", "idle.3", [-1, 0], [1, 0], [1, 0] ], < [ "idle.5", "idle.2", "idle.2", [0, 0], [0, 0], [0, 0] ], < [ "idle.4", "idle.1", "idle.1", [0, 0], [0, 0], [0, 0] ], < [ "idle.5", "idle.3", "idle.3", [0, 0], [2, 0], [2, 0] ] < ] < }, < "typing" : { < "states" : ["idle"], < "cycle" : 0.5, < "cyclic" : true, < "stances" : [ < // body, frontArm, backArm, headOffset, frontArmOffset, backArmOffset < [ "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] ] < ] < } < }, < liquids.config 36c36,40 < } --- > } , > { > "liquid": 6, > "liquidResult" : 6 > } 115a120 > behaviors\npc\combat.behavior 12,14c12,14 < "title": "parallel", < "type": "composite", < "name": "parallel", --- > "title": "group", > "type": "decorator", > "name": "group", 16,17c16,21 < "fail": 1, < "success": -1 --- > "goal": "target", > "goalType": "entity", > "groupId": "combat", > "maxMembers": 8, > "minMembers": 1, > "behavior": "/behaviors/coordinator/npccombat.behavior" 19,41c23,30 < "children": [ < { < "type": "module", < "path": "/behaviors/npc/tracking.behavior", < "title": "NPC Tracking", < "parameters": { < "trackingRange": 50 < } < }, < { < "title": "group", < "type": "decorator", < "name": "group", < "parameters": { < "goal": "target", < "goalType": "entity", < "groupId": "combat", < "maxMembers": 8, < "minMembers": 1, < "behavior": "/behaviors/coordinator/npccombat.behavior" < }, < "child": { < "title": "dynamic", --- > "child": { > "title": "dynamic", > "type": "composite", > "name": "dynamic", > "parameters": {}, > "children": [ > { > "title": "parallel", 43,44c32,36 < "name": "dynamic", < "parameters": {}, --- > "name": "parallel", > "parameters": { > "fail": 1, > "success": -1 > }, 47,49c39,47 < "title": "parallel", < "type": "composite", < "name": "parallel", --- > "title": "hasMeleePrimary", > "type": "action", > "name": "hasMeleePrimary", > "parameters": {} > }, > { > "title": "task", > "type": "decorator", > "name": "task", 51,52c49,52 < "fail": 1, < "success": -1 --- > "groupId": "combat", > "taskId": "melee", > "minMembers": 1, > "maxMembers": 4 54,59c54,60 < "children": [ < { < "title": "hasMeleePrimary", < "type": "action", < "name": "hasMeleePrimary", < "parameters": {} --- > "child": { > "title": "parallel", > "type": "composite", > "name": "parallel", > "parameters": { > "fail": -1, > "success": -1 61,71c62,63 < { < "title": "task", < "type": "decorator", < "name": "task", < "parameters": { < "groupId": "combat", < "taskId": "melee", < "minMembers": 1, < "maxMembers": 4 < }, < "child": { --- > "children": [ > { 81c73 < "title": "parallel", --- > "title": "selector", 83,87c75,107 < "name": "parallel", < "parameters": { < "fail": -1, < "success": -1 < }, --- > "name": "selector", > "parameters": {}, > "children": [ > { > "title": "groupResource", > "type": "action", > "name": "groupResource", > "parameters": { > "groupId": "combat", > "name": "movePosition" > }, > "output": { > "position": "movePosition" > } > }, > { > "title": "entityPosition", > "type": "action", > "name": "entityPosition", > "parameters": { > "entity": "target" > }, > "output": { > "position": "targetPosition" > } > } > ] > }, > { > "title": "dynamic", > "type": "composite", > "name": "dynamic", > "parameters": {}, 96c116 < "title": "groupResource", --- > "title": "moveToPosition", 98c118 < "name": "groupResource", --- > "name": "moveToPosition", 100,101c120,126 < "groupId": "combat", < "name": "movePosition" --- > "avoidLiquid": true, > "groundPosition": false, > "maxGround": 5, > "minGround": -10, > "position": "movePosition", > "run": true, > "failFast": false 104c129 < "position": "movePosition" --- > "direction": "direction" 108c133 < "title": "entityPosition", --- > "title": "moveToPosition", 110c135 < "name": "entityPosition", --- > "name": "moveToPosition", 112c137,143 < "entity": "target" --- > "avoidLiquid": true, > "groundPosition": true, > "maxGround": 5, > "minGround": -20, > "position": "targetPosition", > "run": true, > "failFast": false 115c146 < "position": "targetPosition" --- > "direction": "direction" 121c152 < "title": "dynamic", --- > "title": "parallel", 123,124c154,158 < "name": "dynamic", < "parameters": {}, --- > "name": "parallel", > "parameters": { > "fail": -1, > "success": -1 > }, 127,166c161,166 < "title": "selector", < "type": "composite", < "name": "selector", < "parameters": {}, < "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": "moveToPosition", < "type": "action", < "name": "moveToPosition", < "parameters": { < "avoidLiquid": true, < "groundPosition": true, < "maxGround": 5, < "minGround": -20, < "position": "targetPosition", < "run": true, < "failFast": false < }, < "output": { < "direction": "direction" < } < } < ] --- > "title": "entityInSight", > "type": "action", > "name": "entityInSight", > "parameters": { > "entity": "target" > } 169,171c169,171 < "title": "parallel", < "type": "composite", < "name": "parallel", --- > "title": "cooldown", > "type": "decorator", > "name": "cooldown", 173,174c173,174 < "fail": -1, < "success": -1 --- > "cooldown": 20, > "onFail": false 176,183c176,184 < "children": [ < { < "title": "entityInSight", < "type": "action", < "name": "entityInSight", < "parameters": { < "entity": "target" < } --- > "child": { > "title": "sequence", > "type": "composite", > "name": "sequence", > "parameters": { > "type": "sliding", > "state": "off", > "fromEntity": "attackTarget", > "toEntity": "fleeTarget" 185,196c186,190 < { < "title": "cooldown", < "type": "decorator", < "name": "cooldown", < "parameters": { < "cooldown": 20, < "onFail": false < }, < "child": { < "title": "sequence", < "type": "composite", < "name": "sequence", --- > "children": [ > { > "title": "timer", > "type": "action", > "name": "timer", 198,232c192,198 < "type": "sliding", < "state": "off", < "fromEntity": "attackTarget", < "toEntity": "fleeTarget" < }, < "children": [ < { < "title": "timer", < "type": "action", < "name": "timer", < "parameters": { < "time": 2 < } < }, < { < "title": "say", < "type": "action", < "name": "say", < "parameters": { < "content": "Get over here, fiend!", < "tags": {} < } < } < ] < } < }, < { < "title": "failer", < "type": "decorator", < "name": "failer", < "parameters": {}, < "child": { < "title": "sequence", < "type": "composite", < "name": "sequence", --- > "time": 2 > } > }, > { > "title": "say", > "type": "action", > "name": "say", 234,258c200,202 < "type": "sliding", < "state": "off", < "fromEntity": "attackTarget", < "toEntity": "fleeTarget" < }, < "children": [ < { < "title": "canFire", < "type": "action", < "name": "canFire", < "parameters": {} < }, < { < "title": "hasRangedSheathed", < "type": "action", < "name": "hasRangedSheathed", < "parameters": {} < }, < { < "title": "swapItemSlots", < "type": "action", < "name": "swapItemSlots", < "parameters": {} < } < ] --- > "content": "Get over here, fiend!", > "tags": {} > } 260,261c204,205 < } < ] --- > ] > } 264,278c208,220 < "title": "sequence", < "type": "composite", < "name": "sequence", < "parameters": { < "type": "sliding", < "state": "off", < "fromEntity": "attackTarget", < "toEntity": "fleeTarget" < }, < "children": [ < { < "title": "hasRangedSheathed", < "type": "action", < "name": "hasRangedSheathed", < "parameters": {} --- > "title": "failer", > "type": "decorator", > "name": "failer", > "parameters": {}, > "child": { > "title": "sequence", > "type": "composite", > "name": "sequence", > "parameters": { > "type": "sliding", > "state": "off", > "fromEntity": "attackTarget", > "toEntity": "fleeTarget" 280,286c222,242 < { < "title": "swapItemSlots", < "type": "action", < "name": "swapItemSlots", < "parameters": {} < } < ] --- > "children": [ > { > "title": "canFire", > "type": "action", > "name": "canFire", > "parameters": {} > }, > { > "title": "hasRangedSheathed", > "type": "action", > "name": "hasRangedSheathed", > "parameters": {} > }, > { > "title": "swapItemSlots", > "type": "action", > "name": "swapItemSlots", > "parameters": {} > } > ] > } 302,323d257 < "title": "inverter", < "type": "decorator", < "name": "inverter", < "parameters": {}, < "child": { < "title": "entityInRange", < "type": "action", < "name": "entityInRange", < "parameters": { < "entity": "target", < "xRange": 15, < "position": "self" < } < } < }, < { < "title": "canFire", < "type": "action", < "name": "canFire", < "parameters": {} < }, < { 335a270,298 > } > ] > }, > { > "title": "sequence", > "type": "composite", > "name": "sequence", > "parameters": { > "type": "sliding", > "state": "off", > "fromEntity": "attackTarget", > "toEntity": "fleeTarget" > }, > "children": [ > { > "title": "inverter", > "type": "decorator", > "name": "inverter", > "parameters": {}, > "child": { > "title": "entityInRange", > "type": "action", > "name": "entityInRange", > "parameters": { > "entity": "target", > "range": 15, > "position": "self" > } > } 337a301,384 > "title": "canFire", > "type": "action", > "name": "canFire", > "parameters": {} > }, > { > "title": "hasRangedSheathed", > "type": "action", > "name": "hasRangedSheathed", > "parameters": {} > }, > { > "title": "swapItemSlots", > "type": "action", > "name": "swapItemSlots", > "parameters": {} > } > ] > }, > { > "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", > "xRange": 5, > "position": "self" > } > }, > { > "title": "faceEntity", > "type": "action", > "name": "faceEntity", > "parameters": { > "entity": "target" > } > } > ] > }, > { > "title": "faceDirection", > "type": "action", > "name": "faceDirection", > "parameters": { > "direction": "direction" > } > } > ] > } > ] > }, > { > "title": "cleanup", > "type": "composite", > "name": "cleanup", > "parameters": {}, > "children": [ > { > "title": "parallel", > "type": "composite", > "name": "parallel", > "parameters": { > "fail": -1, > "success": -1 > }, > "children": [ > { 360c407 < "xRange": 5, --- > "yRange": 4, 365c412 < "title": "faceEntity", --- > "title": "entityInRange", 367c414 < "name": "faceEntity", --- > "name": "entityInRange", 369c416,418 < "entity": "target" --- > "entity": "target", > "xRange": 4, > "position": "self" 371,444d419 < } < ] < }, < { < "title": "faceDirection", < "type": "action", < "name": "faceDirection", < "parameters": { < "direction": "direction" < } < } < ] < } < ] < }, < { < "title": "cleanup", < "type": "composite", < "name": "cleanup", < "parameters": {}, < "children": [ < { < "title": "parallel", < "type": "composite", < "name": "parallel", < "parameters": { < "fail": -1, < "success": -1 < }, < "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": {} < } < ] 447c422 < "title": "endPrimaryFire", --- > "title": "beginPrimaryFire", 449c424 < "name": "endPrimaryFire", --- > "name": "beginPrimaryFire", 455c430 < "title": "entityPosition", --- > "title": "endPrimaryFire", 457,480c432 < "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", --- > "name": "endPrimaryFire", 486,550d437 < "title": "endPrimaryFire", < "type": "action", < "name": "endPrimaryFire", < "parameters": {} < } < ] < } < ] < } < } < ] < }, < { < "title": "parallel", < "type": "composite", < "name": "parallel", < "parameters": { < "fail": 1, < "success": -1 < }, < "children": [ < { < "title": "hasRangedPrimary", < "type": "action", < "name": "hasRangedPrimary", < "parameters": {} < }, < { < "title": "task", < "type": "decorator", < "name": "task", < "parameters": { < "groupId": "combat", < "taskId": "ranged", < "minMembers": 1, < "maxMembers": 4 < }, < "child": { < "title": "parallel", < "type": "composite", < "name": "parallel", < "parameters": { < "fail": 1, < "success": -1 < }, < "children": [ < { < "title": "selector", < "type": "composite", < "name": "selector", < "parameters": {}, < "children": [ < { < "title": "groupResource", < "type": "action", < "name": "groupResource", < "parameters": { < "groupId": "combat", < "name": "movePosition" < }, < "output": { < "position": "movePosition" < } < }, < { 558c445 < "position": "movePosition" --- > "position": "targetPosition" 560,568c447 < } < ] < }, < { < "title": "dynamic", < "type": "composite", < "name": "dynamic", < "parameters": {}, < "children": [ --- > }, 570c449 < "title": "moveToPosition", --- > "title": "setAimPosition", 572c451 < "name": "moveToPosition", --- > "name": "setAimPosition", 574,583c453,457 < "avoidLiquid": true, < "groundPosition": false, < "maxGround": 5, < "minGround": -10, < "position": "movePosition", < "run": true, < "failFast": false < }, < "output": { < "direction": "direction" --- > "offset": [ > 0, > 0 > ], > "position": "targetPosition" 595c469,584 < "title": "selector", --- > "title": "endPrimaryFire", > "type": "action", > "name": "endPrimaryFire", > "parameters": {} > } > ] > } > ] > } > } > ] > }, > { > "title": "parallel", > "type": "composite", > "name": "parallel", > "parameters": { > "fail": 1, > "success": -1 > }, > "children": [ > { > "title": "hasRangedPrimary", > "type": "action", > "name": "hasRangedPrimary", > "parameters": {} > }, > { > "title": "task", > "type": "decorator", > "name": "task", > "parameters": { > "groupId": "combat", > "taskId": "ranged", > "minMembers": 1, > "maxMembers": 8 > }, > "child": { > "title": "parallel", > "type": "composite", > "name": "parallel", > "parameters": { > "fail": 1, > "success": -1 > }, > "children": [ > { > "title": "selector", > "type": "composite", > "name": "selector", > "parameters": {}, > "children": [ > { > "title": "groupResource", > "type": "action", > "name": "groupResource", > "parameters": { > "groupId": "combat", > "name": "movePosition" > }, > "output": { > "position": "movePosition" > } > }, > { > "title": "entityPosition", > "type": "action", > "name": "entityPosition", > "parameters": { > "entity": "target" > }, > "output": { > "position": "movePosition" > } > } > ] > }, > { > "title": "dynamic", > "type": "composite", > "name": "dynamic", > "parameters": {}, > "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": "runner", > "type": "action", > "name": "runner", > "parameters": {} > } > ] > }, > { > "title": "selector", > "type": "composite", > "name": "selector", > "parameters": {}, > "children": [ > { > "title": "sequence", 597,598c586,592 < "name": "selector", < "parameters": {}, --- > "name": "sequence", > "parameters": { > "type": "sliding", > "state": "off", > "fromEntity": "attackTarget", > "toEntity": "fleeTarget" > }, 601,633c595,598 < "title": "sequence", < "type": "composite", < "name": "sequence", < "parameters": { < "type": "sliding", < "state": "off", < "fromEntity": "attackTarget", < "toEntity": "fleeTarget" < }, < "children": [ < { < "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": 5, < "position": "self" < } < } < } < ] --- > "title": "canFire", > "type": "action", > "name": "canFire", > "parameters": {} 636c601 < "title": "succeeder", --- > "title": "inverter", 638c603 < "name": "succeeder", --- > "name": "inverter", 641,643c606,608 < "title": "sequence", < "type": "composite", < "name": "sequence", --- > "title": "entityInRange", > "type": "action", > "name": "entityInRange", 645,671c610,613 < "type": "sliding", < "state": "off", < "fromEntity": "attackTarget", < "toEntity": "fleeTarget" < }, < "children": [ < { < "title": "entityInSight", < "type": "action", < "name": "entityInSight", < "parameters": { < "entity": "target" < } < }, < { < "title": "hasMeleeSheathed", < "type": "action", < "name": "hasMeleeSheathed", < "parameters": {} < }, < { < "title": "swapItemSlots", < "type": "action", < "name": "swapItemSlots", < "parameters": {} < } < ] --- > "entity": "target", > "range": 5, > "position": "self" > } 677,679c619,621 < "title": "cleanup", < "type": "composite", < "name": "cleanup", --- > "title": "succeeder", > "type": "decorator", > "name": "succeeder", 680a623,672 > "child": { > "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": "hasMeleeSheathed", > "type": "action", > "name": "hasMeleeSheathed", > "parameters": {} > }, > { > "title": "swapItemSlots", > "type": "action", > "name": "swapItemSlots", > "parameters": {} > } > ] > } > } > ] > }, > { > "title": "cleanup", > "type": "composite", > "name": "cleanup", > "parameters": {}, > "children": [ > { > "title": "parallel", > "type": "composite", > "name": "parallel", > "parameters": { > "fail": 1, > "success": -1 > }, 683c675 < "title": "parallel", --- > "title": "selector", 685,689c677,678 < "name": "parallel", < "parameters": { < "fail": 1, < "success": -1 < }, --- > "name": "selector", > "parameters": {}, 692c681 < "title": "selector", --- > "title": "sequence", 694,695c683,689 < "name": "selector", < "parameters": {}, --- > "name": "sequence", > "parameters": { > "type": "sliding", > "state": "off", > "fromEntity": "attackTarget", > "toEntity": "fleeTarget" > }, 698,700c692,694 < "title": "sequence", < "type": "composite", < "name": "sequence", --- > "title": "entityInRange", > "type": "action", > "name": "entityInRange", 702,769c696,713 < "type": "sliding", < "state": "off", < "fromEntity": "attackTarget", < "toEntity": "fleeTarget" < }, < "children": [ < { < "title": "entityInRange", < "type": "action", < "name": "entityInRange", < "parameters": { < "entity": "target", < "xRange": 40, < "position": "self" < } < }, < { < "title": "inverter", < "type": "decorator", < "name": "inverter", < "parameters": {}, < "child": { < "title": "entityInRange", < "type": "action", < "name": "entityInRange", < "parameters": { < "entity": "target", < "xRange": 15, < "position": "self" < } < } < }, < { < "title": "entityInSight", < "type": "action", < "name": "entityInSight", < "parameters": { < "entity": "target" < } < }, < { < "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" < } --- > "entity": "target", > "range": 40, > "position": "self" > } > }, > { > "title": "inverter", > "type": "decorator", > "name": "inverter", > "parameters": {}, > "child": { > "title": "entityInRange", > "type": "action", > "name": "entityInRange", > "parameters": { > "entity": "target", > "range": 15, > "position": "self" 771c715 < ] --- > } 774c718,743 < "title": "faceDirection", --- > "title": "entityInSight", > "type": "action", > "name": "entityInSight", > "parameters": { > "entity": "target" > } > }, > { > "title": "beginPrimaryFire", > "type": "action", > "name": "beginPrimaryFire", > "parameters": {} > }, > { > "title": "entityPosition", > "type": "action", > "name": "entityPosition", > "parameters": { > "entity": "target" > }, > "output": { > "position": "targetPosition" > } > }, > { > "title": "setAimPosition", 776c745 < "name": "faceDirection", --- > "name": "setAimPosition", 778c747,751 < "direction": "direction" --- > "offset": [ > 0, > 0 > ], > "position": "targetPosition" 784c757 < "title": "runner", --- > "title": "faceDirection", 786,787c759,762 < "name": "runner", < "parameters": {} --- > "name": "faceDirection", > "parameters": { > "direction": "direction" > } 792c767 < "title": "endPrimaryFire", --- > "title": "runner", 794c769 < "name": "endPrimaryFire", --- > "name": "runner", 797a773,778 > }, > { > "title": "endPrimaryFire", > "type": "action", > "name": "endPrimaryFire", > "parameters": {} 801,802c782,783 < } < ] --- > ] > } 806,807c787,788 < } < ] --- > ] > } behaviors\npc\guard.behavior 19,22c19,41 < "type": "module", < "path": "/behaviors/npc/combat.behavior", < "title": "NPC Combat", < "parameters": {} --- > "title": "parallel", > "type": "composite", > "name": "parallel", > "parameters": { > "fail": 1, > "success": -1 > }, > "children": [ > { > "type": "module", > "path": "/behaviors/npc/tracking.behavior", > "title": "NPC Tracking", > "parameters": { > "trackingRange": 50 > } > }, > { > "type": "module", > "path": "/behaviors/npc/combat.behavior", > "title": "NPC Combat", > "parameters": {} > } > ] 37,38c56,57 < "path": "/behaviors/npc/friendlyidle.behavior", < "title": "/behaviors/npc/friendlyidle.behavior", --- > "path": "/behaviors/npc/guardidle.behavior", > "title": "NPC Guard Idle", behaviors\npc\merchant.behavior 125,250c125,147 < "title": "selector", < "type": "composite", < "name": "selector", < "parameters": {}, < "children": [ < { < "title": "sequence", < "type": "composite", < "name": "sequence", < "parameters": {}, < "children": [ < { < "title": "wasInteracted", < "type": "action", < "name": "wasInteracted", < "parameters": {} < }, < { < "title": "setEntity", < "type": "action", < "name": "setEntity", < "parameters": { < "entity": "interactionSource" < }, < "output": { < "entity": "customer" < } < }, < { < "title": "", < "type": "action", < "name": "faceEntity", < "parameters": { < "entity": "interactionSource" < } < }, < { < "title": "unsetFlag", < "type": "action", < "name": "unsetFlag", < "parameters": { < "name": "sayTout" < } < } < ] < }, < { < "title": "sequence", < "type": "composite", < "name": "sequence", < "parameters": {}, < "children": [ < { < "title": "entityConfigParameter", < "type": "action", < "name": "entityConfigParameter", < "parameters": { < "default": -1, < "path": "noticePlayersRadius" < }, < "output": { < "number": "noticePlayersRadius" < } < }, < { < "title": "greaterThan", < "type": "action", < "name": "greaterThan", < "parameters": { < "first": "noticePlayersRadius", < "second": 0 < } < }, < { < "title": "cooldown", < "type": "decorator", < "name": "cooldown", < "parameters": { < "cooldown": 20, < "onFail": false < }, < "child": { < "title": "queryEntity", < "type": "action", < "name": "queryEntity", < "parameters": { < "entityTypes": [ < "player" < ], < "orderBy": "nearest", < "position": "self", < "range": "noticePlayersRadius", < "withoutEntity": "self" < }, < "output": { < "entity": "customer" < } < } < }, < { < "title": "entityInSight", < "type": "action", < "name": "entityInSight", < "parameters": { < "entity": "customer" < } < }, < { < "title": "", < "type": "action", < "name": "faceEntity", < "parameters": { < "entity": "customer" < } < }, < { < "title": "setFlag", < "type": "action", < "name": "setFlag", < "parameters": { < "name": "sayTout" < } < } < ] < } < ] --- > "title": "wasInteracted", > "type": "action", > "name": "wasInteracted", > "parameters": {} > }, > { > "title": "setEntity", > "type": "action", > "name": "setEntity", > "parameters": { > "entity": "interactionSource" > }, > "output": { > "entity": "customer" > } > }, > { > "title": "", > "type": "action", > "name": "faceEntity", > "parameters": { > "entity": "interactionSource" > } 310,335c207 < "title": "selector", < "type": "composite", < "name": "selector", < "parameters": {}, < "children": [ < { < "title": "hasFlag", < "type": "action", < "name": "hasFlag", < "parameters": { < "name": "sayTout" < } < }, < { < "title": "sayToEntity", < "type": "action", < "name": "sayToEntity", < "parameters": { < "dialogType": "merchant.dialog.start", < "entity": "customer" < } < } < ] < }, < { < "title": "timer", --- > "title": "sayToEntity", 337c209 < "name": "timer", --- > "name": "sayToEntity", 339c211,212 < "time": "waitTime" --- > "dialogType": "merchant.dialog.start", > "entity": "customer" 341,365d213 < }, < { < "title": "selector", < "type": "composite", < "name": "selector", < "parameters": {}, < "children": [ < { < "title": "hasFlag", < "type": "action", < "name": "hasFlag", < "parameters": { < "name": "sayTout" < } < }, < { < "title": "sayToEntity", < "type": "action", < "name": "sayToEntity", < "parameters": { < "dialogType": "merchant.dialog.end", < "entity": "customer" < } < } < ] 376,398c224,230 < "title": "selector", < "type": "composite", < "name": "selector", < "parameters": {}, < "children": [ < { < "title": "hasFlag", < "type": "action", < "name": "hasFlag", < "parameters": { < "name": "sayTout" < } < }, < { < "title": "sayToEntity", < "type": "action", < "name": "sayToEntity", < "parameters": { < "dialogType": "returnToStore.dialog.follow", < "entity": "customer" < } < } < ] --- > "title": "sayToEntity", > "type": "action", > "name": "sayToEntity", > "parameters": { > "dialogType": "returnToStore.dialog.follow", > "entity": "customer" > } 406,409c238,268 < "type": "module", < "path": "/behaviors/tenant/returnhome.behavior", < "title": "/behaviors/tenant/returnhome.behavior", < "parameters": {} --- > "title": "sequence", > "type": "composite", > "name": "sequence", > "parameters": {}, > "children": [ > { > "type": "module", > "path": "/behaviors/tenant/returnhome.behavior", > "title": "/behaviors/tenant/returnhome.behavior", > "parameters": {} > }, > { > "title": "entityInRange", > "type": "action", > "name": "entityInRange", > "parameters": { > "entity": "customer", > "range": "storeRadius", > "position": "self" > } > }, > { > "title": "sayToEntity", > "type": "action", > "name": "sayToEntity", > "parameters": { > "dialogType": "returnToStore.dialog.welcome", > "entity": "customer" > } > } > ] 411,418c270,325 < }, < { < "title": "selector", < "type": "composite", < "name": "selector", < "parameters": {}, < "children": [ < { --- > } > ] > } > ] > }, > { > "title": "entityInRange", > "type": "action", > "name": "entityInRange", > "parameters": { > "entity": "customer", > "range": "storeRadius", > "position": "self" > } > }, > { > "title": "", > "type": "action", > "name": "faceEntity", > "parameters": { > "entity": "customer" > } > }, > { > "title": "succeeder", > "type": "decorator", > "name": "succeeder", > "parameters": {}, > "child": { > "title": "parallel", > "type": "composite", > "name": "parallel", > "parameters": { > "fail": 1, > "success": -1 > }, > "children": [ > { > "title": "failer", > "type": "decorator", > "name": "failer", > "parameters": {}, > "child": { > "title": "repeater", > "type": "decorator", > "name": "repeater", > "parameters": { > "maxLoops": -1, > "untilSuccess": true > }, > "child": { > "title": "inverter", > "type": "decorator", > "name": "inverter", > "parameters": {}, > "child": { 425c332 < "title": "hasFlag", --- > "title": "entityInRange", 427c334 < "name": "hasFlag", --- > "name": "entityInRange", 429c336,338 < "name": "sayTout" --- > "entity": "customer", > "range": "storeRadius", > "position": "self" 433c342 < "title": "sayToEntity", --- > "title": "timer", 435c344 < "name": "sayToEntity", --- > "name": "timer", 437,438c346 < "dialogType": "returnToStore.dialog.tout", < "entity": "customer" --- > "time": 1 442,506d349 < }, < { < "title": "sayToEntity", < "type": "action", < "name": "sayToEntity", < "parameters": { < "dialogType": "returnToStore.dialog.welcome", < "entity": "customer" < } < } < ] < }, < { < "title": "parallel", < "type": "composite", < "name": "parallel", < "parameters": { < "fail": 1, < "success": -1 < }, < "children": [ < { < "title": "enableTrading", < "type": "action", < "name": "enableTrading", < "parameters": {} < }, < { < "title": "inverter", < "type": "decorator", < "name": "inverter", < "parameters": {}, < "child": { < "title": "timer", < "type": "action", < "name": "timer", < "parameters": { < "time": "waitTime" < } < } < } < ] < }, < { < "title": "selector", < "type": "composite", < "name": "selector", < "parameters": {}, < "children": [ < { < "title": "hasFlag", < "type": "action", < "name": "hasFlag", < "parameters": { < "name": "sayTout" < } < }, < { < "title": "sayToEntity", < "type": "action", < "name": "sayToEntity", < "parameters": { < "dialogType": "merchant.dialog.end", < "entity": "customer" < } 508c351 < ] --- > } 510c353,417 < ] --- > }, > { > "title": "sequence", > "type": "composite", > "name": "sequence", > "parameters": {}, > "children": [ > { > "title": "", > "type": "action", > "name": "faceEntity", > "parameters": { > "entity": "customer" > } > }, > { > "title": "enableTrading", > "type": "action", > "name": "enableTrading", > "parameters": {} > } > ] > } > ] > } > }, > { > "title": "sayToEntity", > "type": "action", > "name": "sayToEntity", > "parameters": { > "dialogType": "merchant.dialog.end", > "entity": "customer" > } > } > ] > }, > { > "title": "sequence", > "type": "composite", > "name": "sequence", > "parameters": {}, > "children": [ > { > "title": "greaterThan", > "type": "action", > "name": "greaterThan", > "parameters": { > "first": "storeRadius", > "second": 0 > } > }, > { > "title": "inverter", > "type": "decorator", > "name": "inverter", > "parameters": {}, > "child": { > "title": "inRange", > "type": "action", > "name": "inRange", > "parameters": { > "position": "self", > "target": "spawn", > "range": "storeRadius" 512c419,509 < ] --- > } > }, > { > "title": "entityConfigParameter", > "type": "action", > "name": "entityConfigParameter", > "parameters": { > "default": -1, > "path": "noticePlayersRadius" > }, > "output": { > "number": "noticePlayersRadius" > } > }, > { > "title": "greaterThan", > "type": "action", > "name": "greaterThan", > "parameters": { > "first": "noticePlayersRadius", > "second": 0 > } > }, > { > "title": "cooldown", > "type": "decorator", > "name": "cooldown", > "parameters": { > "cooldown": 20, > "onFail": false > }, > "child": { > "title": "queryEntity", > "type": "action", > "name": "queryEntity", > "parameters": { > "entityTypes": [ > "player" > ], > "orderBy": "nearest", > "position": "self", > "range": "noticePlayersRadius", > "withoutEntity": "self" > }, > "output": { > "entity": "customer" > } > } > }, > { > "title": "entityInSight", > "type": "action", > "name": "entityInSight", > "parameters": { > "entity": "customer" > } > }, > { > "title": "succeeder", > "type": "decorator", > "name": "succeeder", > "parameters": {}, > "child": { > "title": "resetLounging", > "type": "action", > "name": "resetLounging", > "parameters": {} > } > }, > { > "title": "", > "type": "action", > "name": "faceEntity", > "parameters": { > "entity": "customer" > } > }, > { > "title": "sayToEntity", > "type": "action", > "name": "sayToEntity", > "parameters": { > "dialogType": "returnToStore.dialog.tout", > "entity": "customer" > } > }, > { > "type": "module", > "path": "/behaviors/tenant/returnhome.behavior", > "title": "/behaviors/tenant/returnhome.behavior", > "parameters": {} behaviors\npc\play.behavior 193a194,215 > }, > { > "title": "setPosition", > "type": "action", > "name": "setPosition", > "parameters": { > "position": "standPosition", > "footPosition": false > } > }, > { > "title": "setVelocity", > "type": "action", > "name": "setVelocity", > "parameters": { > "velocity": [ > 0, > 0 > ], > "x": null, > "y": null > } biomes\surface\forest.biome 41c41 < "dayLightColor" : [150, 150, 150], --- > "dayLightColor" : [200, 200, 200], 55c55 < "dayLightColor" : [150, 150, 150], --- > "dayLightColor" : [200, 200, 200], 69c69 < "dayLightColor" : [150, 150, 150], --- > "dayLightColor" : [200, 200, 200], 83c83 < "dayLightColor" : [150, 150, 150], --- > "dayLightColor" : [200, 200, 200], 97c97 < "dayLightColor" : [150, 150, 150], --- > "dayLightColor" : [200, 200, 200], biomes\surface_detached\spring.biome 49a50,58 > "priority" : 1, > "variants" : 1, > "distribution" : "/biomes/distributions.config:mainBiomeMicrodungeon", > > "type" : "microdungeon", > "microdungeons" : [ "springMicroDungeons" ] > }, > { > "mode" : "floor", dungeons\apex\apexresearchlab\apexresearchlab.dungeon 1739c1739 < "categories" : [ "apexingredients" ], --- > "categories" : { "default" : [ "apexingredients" ] }, dungeons\apex\apextestchamber\apextestchamber.dungeon 1739c1739 < "categories" : [ "apexingredients" ], --- > "categories" : { "default" : [ "apexingredients" ] }, dungeons\apex\apextowerblock\apextowerblock.dungeon 1731c1731 < "categories" : [ "apexingredients" ], --- > "categories" : { "default" : [ "apexingredients" ] }, dungeons\avian\avianairship\avianairship.dungeon 2216c2216 < "categories" : [ "avianingredients" ], --- > "categories" : { "default" : [ "avianingredients" ] }, 2242c2242 < "categories" : [ "avianweaponblueprints", "randomswords" ], --- > "categories" : { "default" : [ "avianweaponblueprints", "randomswords" ] }, 2268c2268 < "categories" : [ "avianarmorblueprints", "avianclothes" ], --- > "categories" : { "default" : [ "avianarmorblueprints", "avianclothes" ] }, 2317c2317 < "categories" : [ "avianweaponblueprints", "avianarmorblueprints", "randomguns", "randomswords" ], --- > "categories" : { "default" : [ "avianweaponblueprints", "avianarmorblueprints", "randomguns", "randomswords" ] }, dungeons\avian\aviantemple\aviantemple.dungeon 2216c2216 < "categories" : [ "avianingredients" ], --- > "categories" : { "default" : [ "avianingredients" ] }, 2242c2242 < "categories" : [ "avianweaponblueprints", "randomswords" ], --- > "categories" : { "default" : [ "avianweaponblueprints", "randomswords" ] }, 2268c2268 < "categories" : [ "avianarmorblueprints", "avianclothes" ], --- > "categories" : { "default" : [ "avianarmorblueprints", "avianclothes" ] }, 2317c2317 < "categories" : [ "avianweaponblueprints", "avianarmorblueprints", "randomguns", "randomswords" ], --- > "categories" : { "default" : [ "avianweaponblueprints", "avianarmorblueprints", "randomguns", "randomswords" ] }, dungeons\avian\aviantomb\aviantomb.dungeon 2216c2216 < "categories" : [ "avianingredients" ], --- > "categories" : { "default" : [ "avianingredients" ] }, 2242c2242 < "categories" : [ "avianweaponblueprints", "randomswords" ], --- > "categories" : { "default" : [ "avianweaponblueprints", "randomswords" ] }, 2268c2268 < "categories" : [ "avianarmorblueprints", "avianclothes" ], --- > "categories" : { "default" : [ "avianarmorblueprints", "avianclothes" ] }, 2317c2317 < "categories" : [ "avianweaponblueprints", "avianarmorblueprints", "randomguns", "randomswords" ], --- > "categories" : { "default" : [ "avianweaponblueprints", "avianarmorblueprints", "randomguns", "randomswords" ] }, dungeons\avian\aviantower\aviantower.dungeon 2216c2216 < "categories" : [ "avianingredients" ], --- > "categories" : { "default" : [ "avianingredients" ] }, 2242c2242 < "categories" : [ "avianweaponblueprints", "randomswords" ], --- > "categories" : { "default" : [ "avianweaponblueprints", "randomswords" ] }, 2268c2268 < "categories" : [ "avianarmorblueprints", "avianclothes" ], --- > "categories" : { "default" : [ "avianarmorblueprints", "avianclothes" ] }, 2317c2317 < "categories" : [ "avianweaponblueprints", "avianarmorblueprints", "randomguns", "randomswords" ], --- > "categories" : { "default" : [ "avianweaponblueprints", "avianarmorblueprints", "randomguns", "randomswords" ] }, dungeons\avian\avianvillage\avianvillage.dungeon 2216c2216 < "categories" : [ "avianingredients" ], --- > "categories" : { "default" : [ "avianingredients" ] }, 2242c2242 < "categories" : [ "avianweaponblueprints", "randomswords" ], --- > "categories" : { "default" : [ "avianweaponblueprints", "randomswords" ] }, 2268c2268 < "categories" : [ "avianarmorblueprints", "avianclothes" ], --- > "categories" : { "default" : [ "avianarmorblueprints", "avianclothes" ] }, 2317c2317 < "categories" : [ "avianweaponblueprints", "avianarmorblueprints", "randomguns", "randomswords" ], --- > "categories" : { "default" : [ "avianweaponblueprints", "avianarmorblueprints", "randomguns", "randomswords" ] }, dungeons\floran\floranhell\floranhell.dungeon 2395c2395 < "categories" : [ "floraningredients" ], --- > "categories" : { "default" : [ "floraningredients" ] }, dungeons\floran\floranhuntinggrounds\floranhuntinggrounds.dungeon 2395c2395 < "categories" : [ "floraningredients" ], --- > "categories" : { "default" : [ "floraningredients" ] }, dungeons\floran\floranvillagetower\floranvillagetower.dungeon 2401c2401 < "categories" : [ "floraningredients" ], --- > "categories" : { "default" : [ "floraningredients" ] }, dungeons\glitch\glitchcastle\glitchcastle.dungeon 2214c2214 < "categories" : [ "glitchingredients" ], --- > "categories" : { "default" : [ "glitchingredients" ] }, 2243c2243 < "categories" : [ "glitchweaponblueprints", "randomswords" ], --- > "categories" : { "default" : [ "glitchweaponblueprints", "randomswords" ] }, 2272c2272 < "categories" : [ "glitcharmorblueprints", "glitchclothes" ], --- > "categories" : { "default" : [ "glitcharmorblueprints", "glitchclothes" ] }, dungeons\glitch\glitchsewer\glitchsewer.dungeon 2232c2232 < "categories" : [ "glitchingredients" ], --- > "categories" : { "default" : [ "glitchingredients" ] }, 2261c2261 < "categories" : [ "glitchweaponblueprints", "randomswords" ], --- > "categories" : { "default" : [ "glitchweaponblueprints", "randomswords" ] }, 2290c2290 < "categories" : [ "glitcharmorblueprints", "glitchclothes" ], --- > "categories" : { "default" : [ "glitcharmorblueprints", "glitchclothes" ] }, dungeons\glitch\glitchvillage\glitchvillage.dungeon 2214c2214 < "categories" : [ "glitchingredients" ], --- > "categories" : { "default" : [ "glitchingredients" ] }, 2243c2243 < "categories" : [ "glitchweaponblueprints", "randomswords" ], --- > "categories" : { "default" : [ "glitchweaponblueprints", "randomswords" ] }, 2272c2272 < "categories" : [ "glitcharmorblueprints", "glitchclothes" ], --- > "categories" : { "default" : [ "glitcharmorblueprints", "glitchclothes" ] }, dungeons\microdungeons\biomes\forest\clearing2.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\forest\clearing3.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\forest\clearing4.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\forest\forestmicrodungeons.dungeon 7c7,8 < "anchor" : [ "lake1", "lake2", "lake3", "clearing1", "clearing2", "clearing3", "clearing4", "ruinsmall1" ], --- > > "anchor" : [ "lake1", "lake2", "lake3", "clearing2", "clearing3", "clearing4", "ruinsmall1" ], 38,44d38 < "name" : "clearing1", < "rules" : [ < [ "maxSpawnCount", [1] ] < ], < "def" : [ "tmx", "clearing1.json" ] < }, < { 71c65 < } --- > } dungeons\microdungeons\biomes\forest\forestwell1.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\forest\forestwell2.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\forest\lake1.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\forest\lake2.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\forest\lake3.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\forest\largepond1.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\forest\largepond2.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\forest\medpond1.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\forest\medpond2.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\forest\medpond3.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\forest\pondcamp.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\forest\ruinlarge1.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\forest\ruinmedium1.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\forest\ruinmedium2.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\forest\ruinsmall1.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\forest\smallpond2.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\forest\smallpond3.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\garden\archway.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\garden\archway1.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\garden\gardenbridge1.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\garden\gardenbridge2.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\garden\gardenhouseruin1.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\garden\grave1.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\garden\grave2.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\garden\graveyard.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\garden\graveyardflowers.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\garden\lake3.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\garden\large1.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\garden\littlecave1.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\garden\med1.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\garden\mediumburriedruin.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\garden\mediumgardenflowers.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\garden\mediumgardenruin1.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\garden\mediumgardenruincamp.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\garden\mediumgardenruintall.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\garden\mediumruin.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\garden\moundmedium.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\garden\small1.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\garden\smallcamp.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\garden\smallgardenflowers.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\garden\smallpile.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\garden\smallstonehouse.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\garden\smalltower.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\garden\smalltower2.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\garden\tunnelsmall1.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\garden\wall1.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\garden\wall2.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\garden\wall3.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\garden\well1.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\garden\well2.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\garden\well3.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\garden\xtra1.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\shroom\shroomhouse1.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\spring\crittergroup3.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\spring\largepool5.json [TMX file differences are left out for huge size.] dungeons\microdungeons\biomes\spring\largepool7.json [TMX file differences are left out for huge size.] dungeons\microdungeons\randomencounter\apexunderground\apexundergroundencounter.dungeon 1749c1749 < "categories" : [ "apexingredients" ], --- > "categories" : { "default" : [ "apexingredients" ] }, dungeons\microdungeons\randomencounter\avianunderground\avianundergroundencounter.dungeon 2215c2215 < "categories" : [ "avianingredients" ], --- > "categories" : { "default" : [ "avianingredients" ] }, 2241c2241 < "categories" : [ "avianweaponblueprints", "randomswords" ], --- > "categories" : { "default" : [ "avianweaponblueprints", "randomswords" ] }, 2267c2267 < "categories" : [ "avianarmorblueprints", "avianclothes" ], --- > "categories" : { "default" : [ "avianarmorblueprints", "avianclothes" ] }, 2316c2316 < "categories" : [ "avianweaponblueprints", "avianarmorblueprints", "randomguns", "randomswords" ], --- > "categories" : { "default" : [ "avianweaponblueprints", "avianarmorblueprints", "randomguns", "randomswords" ] }, dungeons\microdungeons\randomencounter\floranunderground\floranundergroundencounter.dungeon 2394c2394 < "categories" : [ "floraningredients" ], --- > "categories" : { "default" : [ "floraningredients" ] }, dungeons\microdungeons\randomencounter\glitchunderground\glitchundergroundencounter.dungeon 2214c2214 < "categories" : [ "glitchingredients" ], --- > "categories" : { "default" : [ "glitchingredients" ] }, 2243c2243 < "categories" : [ "glitchweaponblueprints", "randomswords" ], --- > "categories" : { "default" : [ "glitchweaponblueprints", "randomswords" ] }, 2272c2272 < "categories" : [ "glitcharmorblueprints", "glitchclothes" ], --- > "categories" : { "default" : [ "glitcharmorblueprints", "glitchclothes" ] }, dungeons\microdungeons\randomencounter\unsorted\avian\avianencounter.dungeon 1813c1813 < "categories" : [ "avianingredients" ], --- > "categories" : { "default" : [ "avianingredients" ] }, 1839c1839 < "categories" : [ "avianweaponblueprints", "randomswords" ], --- > "categories" : { "default" : [ "avianweaponblueprints", "randomswords" ] }, 1865c1865 < "categories" : [ "avianarmorblueprints", "avianclothes" ], --- > "categories" : { "default" : [ "avianarmorblueprints", "avianclothes" ] }, 1914c1914 < "categories" : [ "avianweaponblueprints", "avianarmorblueprints", "randomguns", "randomswords" ], --- > "categories" : { "default" : [ "avianweaponblueprints", "avianarmorblueprints", "randomguns", "randomswords" ] }, dungeons\microdungeons\randomencounter\unsorted\generic\miniboss.dungeon 162c162 < "categories" : [ "humanclothes" ], --- > "categories" : { "default" : [ "humanclothes" ] }, 183c183 < "categories" : [ "humanclothes" ], --- > "categories" : { "default" : [ "humanclothes" ] }, 204c204 < "categories" : [ "humanclothes" ], --- > "categories" : { "default" : [ "humanclothes" ] }, 225c225 < "categories" : [ "humanclothes" ], --- > "categories" : { "default" : [ "humanclothes" ] }, 246c246 < "categories" : [ "humanclothes" ], --- > "categories" : { "default" : [ "humanclothes" ] }, 267c267 < "categories" : [ "humanclothes" ], --- > "categories" : { "default" : [ "humanclothes" ] }, dungeons\microdungeons\randomencounter\unsorted\generic\randomencounter.dungeon 162c162 < "categories" : [ "humanclothes" ], --- > "categories" : { "default" : [ "humanclothes" ] }, 183c183 < "categories" : [ "humanclothes" ], --- > "categories" : { "default" : [ "humanclothes" ] }, 204c204 < "categories" : [ "humanclothes" ], --- > "categories" : { "default" : [ "humanclothes" ] }, 225c225 < "categories" : [ "humanclothes" ], --- > "categories" : { "default" : [ "humanclothes" ] }, 246c246 < "categories" : [ "humanclothes" ], --- > "categories" : { "default" : [ "humanclothes" ] }, 267c267 < "categories" : [ "humanclothes" ], --- > "categories" : { "default" : [ "humanclothes" ] }, dungeons\microdungeons\randomencounter\unsorted\glitch\glitchencounter.dungeon 2051c2051 < "categories" : [ "glitchingredients" ], --- > "categories" : { "default" : [ "glitchingredients" ] }, 2080c2080 < "categories" : [ "glitchweaponblueprints", "randomswords" ], --- > "categories" : { "default" : [ "glitchweaponblueprints", "randomswords" ] }, 2109c2109 < "categories" : [ "glitchweaponblueprints", "floranweaponblueprints", "randomswords" ], --- > "categories" : { "default" : [ "glitchweaponblueprints", "floranweaponblueprints", "randomswords" ] }, 2138c2138 < "categories" : [ "glitcharmorblueprints", "floranarmorblueprints", "glitchclothes", "floranclothes" ], --- > "categories" : { "default" : [ "glitcharmorblueprints", "floranarmorblueprints", "glitchclothes", "floranclothes" ] }, 2167c2167 < "categories" : [ "glitcharmorblueprints", "glitchclothes" ], --- > "categories" : { "default" : [ "glitcharmorblueprints", "glitchclothes" ] }, dungeons\microdungeons\randomencounter\unsorted\shroomencounter\shroomencounter.dungeon 178c178 < "categories" : [ "humanclothes" ], --- > "categories" : { "default" : [ "humanclothes" ] }, 199c199 < "categories" : [ "humanclothes" ], --- > "categories" : { "default" : [ "humanclothes" ] }, 220c220 < "categories" : [ "humanclothes" ], --- > "categories" : { "default" : [ "humanclothes" ] }, 241c241 < "categories" : [ "humanclothes" ], --- > "categories" : { "default" : [ "humanclothes" ] }, 262c262 < "categories" : [ "humanclothes" ], --- > "categories" : { "default" : [ "humanclothes" ] }, 283c283 < "categories" : [ "humanclothes" ], --- > "categories" : { "default" : [ "humanclothes" ] }, dungeons\microdungeons\randomencounter\unsorted\treasureroom\treasureroom.dungeon 2051c2051 < "categories" : [ "glitchingredients" ], --- > "categories" : { "default" : [ "glitchingredients" ] }, 2080c2080 < "categories" : [ "glitchweaponblueprints", "randomswords" ], --- > "categories" : { "default" : [ "glitchweaponblueprints", "randomswords" ] }, 2109c2109 < "categories" : [ "glitchweaponblueprints", "floranweaponblueprints", "randomswords" ], --- > "categories" : { "default" : [ "glitchweaponblueprints", "floranweaponblueprints", "randomswords" ] }, 2138c2138 < "categories" : [ "glitcharmorblueprints", "floranarmorblueprints", "glitchclothes", "floranclothes" ], --- > "categories" : { "default" : [ "glitcharmorblueprints", "floranarmorblueprints", "glitchclothes", "floranclothes" ] }, 2167c2167 < "categories" : [ "glitcharmorblueprints", "glitchclothes" ], --- > "categories" : { "default" : [ "glitcharmorblueprints", "glitchclothes" ] }, dungeons\microdungeons\template\templateextralarge.json [TMX file differences are left out for huge size.] dungeons\microdungeons\template\templatelarge.json [TMX file differences are left out for huge size.] dungeons\microdungeons\template\templatemedium.json [TMX file differences are left out for huge size.] dungeons\microdungeons\template\templatesmall.json [TMX file differences are left out for huge size.] dungeons\missions\floranmissions\floranmission1.dungeon 2548c2548 < "categories" : [ "floraningredients" ], --- > "categories" : { "default" : [ "floraningredients" ] }, dungeons\missions\glitchmissions\glitchmission1.dungeon 1944c1944 < "categories" : [ "glitchingredients" ], --- > "categories" : { "default" : [ "glitchingredients" ] }, 1973c1973 < "categories" : [ "glitchweaponblueprints", "randomswords" ], --- > "categories" : { "default" : [ "glitchweaponblueprints", "randomswords" ] }, 2002c2002 < "categories" : [ "glitcharmorblueprints", "glitchclothes" ], --- > "categories" : { "default" : [ "glitcharmorblueprints", "glitchclothes" ] }, dungeons\missions\missiontest1\missiontest1.dungeon 2186c2186 < "categories" : [ "glitchingredients" ], --- > "categories" : { "default" : [ "glitchingredients" ] }, 2215c2215 < "categories" : [ "glitchweaponblueprints", "randomswords" ], --- > "categories" : { "default" : [ "glitchweaponblueprints", "randomswords" ] }, 2244c2244 < "categories" : [ "glitcharmorblueprints", "glitchclothes" ], --- > "categories" : { "default" : [ "glitcharmorblueprints", "glitchclothes" ] }, dungeons\missions\penguinmissions\penguinmission1.dungeon 2425c2425 < "categories" : [ "floraningredients" ], --- > "categories" : { "default" : [ "floraningredients" ] }, dungeons\missions\penguinmissions\penguinmission2.dungeon 2432c2432 < "categories" : [ "floraningredients" ], --- > "categories" : { "default" : [ "floraningredients" ] }, dungeons\other\ancientgateway\ancientgateway.dungeon 1792c1792 < "categories" : [ "glitchingredients" ], --- > "categories" : { "default" : [ "glitchingredients" ] }, 1821c1821 < "categories" : [ "glitchweaponblueprints", "randomswords" ], --- > "categories" : { "default" : [ "glitchweaponblueprints", "randomswords" ] }, 1850c1850 < "categories" : [ "glitcharmorblueprints", "glitchclothes" ], --- > "categories" : { "default" : [ "glitcharmorblueprints", "glitchclothes" ] }, dungeons\other\scifidungeon\scifidungeon.dungeon 1191c1191 < "categories" : [ "apexingredients" ], --- > "categories" : { "default" : [ "apexingredients" ] }, npcs\mission\florangladiator.npctype 11,23c11 < "/npcs/main.lua", < "/scripts/pathing.lua", < "/npcs/timers.lua", < "/scripts/sensors.lua", < "/scripts/stateMachine.lua", < "/scripts/util.lua", < "/scripts/vec2.lua", < < "/npcs/meleeAttackState.lua", < "/npcs/rangedAttackState.lua", < < "/npcs/guard/guardState.lua", < "/npcs/guard/returnToPostState.lua" --- > "/npcs/bmain.lua" 26a15,16 > "behavior" : "/behaviors/npc/hostileguard.behavior", > npcs\mission\floranpredator.npctype 11,23c11 < "/npcs/main.lua", < "/scripts/pathing.lua", < "/npcs/timers.lua", < "/scripts/sensors.lua", < "/scripts/stateMachine.lua", < "/scripts/util.lua", < "/scripts/vec2.lua", < < "/npcs/meleeAttackState.lua", < "/npcs/rangedAttackState.lua", < < "/npcs/guard/guardState.lua", < "/npcs/guard/returnToPostState.lua" --- > "/npcs/bmain.lua" 26a15,16 > "behavior" : "/behaviors/npc/hostileguard.behavior", > npcs\mission\floransniper.npctype 11,23c11 < "/npcs/main.lua", < "/scripts/pathing.lua", < "/npcs/timers.lua", < "/scripts/sensors.lua", < "/scripts/stateMachine.lua", < "/scripts/util.lua", < "/scripts/vec2.lua", < < "/npcs/meleeAttackState.lua", < "/npcs/rangedAttackState.lua", < < "/npcs/guard/guardState.lua", < "/npcs/guard/returnToPostState.lua" --- > "/npcs/bmain.lua" 26a15,16 > "behavior" : "/behaviors/npc/hostileguard.behavior", > objects\farmables\beakseed\beakseedseed.object 27c27 < "spaces" : [ [1, 0], [0, 0], [1, 1], [0, 1] ], --- > "spaces" : [ [0, 0], [0, 1] ], objects\farmables\beakseed\wildbeakseedseed.object 28c28 < "spaces" : [ [1, 0], [0, 0], [1, 1], [0, 1] ], --- > "spaces" : [ [0, 0], [0, 1] ], objects\farmables\boltbulb\boltbulbseed.object 27c27 < "spaces" : [ [1, 0], [0, 0], [1, 1], [0, 1] ], --- > "spaces" : [ [0, 0], [0, 1] ], objects\farmables\boltbulb\wildboltbulbseed.object 28c28 < "spaces" : [ [1, 0], [0, 0], [1, 1], [0, 1] ], --- > "spaces" : [ [0, 0], [0, 1] ], objects\farmables\carrot\carrotseed.object 27c27 < "spaces" : [ [1, 0], [0, 0], [1, 1], [0, 1] ], --- > "spaces" : [ [0, 0], [0, 1] ], objects\farmables\carrot\wildcarrotseed.object 28c28 < "spaces" : [ [1, 0], [0, 0], [1, 1], [0, 1] ], --- > "spaces" : [ [0, 0], [0, 1] ], objects\farmables\eggshoot\eggshootseed.object 25c25 < "spaces" : [ [1, 0], [0, 0], [1, 1], [0, 1] ], --- > "spaces" : [ [0, 0], [0, 1] ], objects\farmables\eggshoot\wildeggshootseed.object 28c28 < "spaces" : [ [1, 0], [0, 0], [1, 1], [0, 1] ], --- > "spaces" : [ [0, 0], [0, 1] ], objects\farmables\feathercrown\feathercrownseed.object 27c27 < "spaces" : [ [1, 0], [0, 0], [1, 1], [0, 1] ], --- > "spaces" : [ [0, 0], [0, 1] ], objects\farmables\feathercrown\wildfeathercrownseed.object 28c28 < "spaces" : [ [1, 0], [0, 0], [1, 1], [0, 1] ], --- > "spaces" : [ [0, 0], [0, 1] ], objects\farmables\kiwi\kiwiseed.object 27c27 < "spaces" : [ [1, 0], [0, 0], [1, 1], [0, 1] ], --- > "spaces" : [ [0, 0], [0, 1] ], objects\farmables\kiwi\wildkiwiseed.object 28c28 < "spaces" : [ [1, 0], [0, 0], [1, 1], [0, 1] ], --- > "spaces" : [ [0, 0], [0, 1] ], objects\farmables\potatoes\potatoseed.object 27c27 < "spaces" : [ [1, 0], [0, 0], [1, 1], [0, 1] ], --- > "spaces" : [ [0, 0], [0, 1] ], objects\farmables\potatoes\wildpotatoseed.object 28c28 < "spaces" : [ [1, 0], [0, 0], [1, 1], [0, 1] ], --- > "spaces" : [ [0, 0], [0, 1] ], objects\farmables\pussplum\pussplumseed.object 27c27 < "spaces" : [ [1, 0], [0, 0], [1, 1], [0, 1] ], --- > "spaces" : [ [0, 0], [0, 1] ], objects\farmables\pussplum\wildpussplumseed.object 28c28 < "spaces" : [ [1, 0], [0, 0], [1, 1], [0, 1] ], --- > "spaces" : [ [0, 0], [0, 1] ], objects\generic\arcademachine\arcademachine.object 38c38,39 < "standPosition" : [0.0, 0.0] --- > "standPositionLeft" : [-0.5, 3.0], > "standPositionRight" : [2.0, 3.0] objects\generic\woodenchair\woodenchair.frames 4c4 < "size" : [14, 20], --- > "size" : [16, 20], parallax\timeofdaycorrelation.functions 2a3 > "dayVisible" : ["linear", "clamp", [0, 0], [0.05, 1], [0.45, 1], [0.5, 0]], parallax\surface\forest.parallax 32c32 < "kind" : "forestlargetree", --- > "kind" : "stem/forestlargetree", 45a46 > "timeOfDayCorrelation" : "dayVisible", 49c50 < "kind" : "forestlargetree", --- > "kind" : "stem/forestlargetree", 60c61 < "kind" : "forestsmalltree", --- > "kind" : "stem/forestsmalltree", 65c66 < "kind" : "forestsmalltree", --- > "kind" : "stem/forestsmalltree", 70c71 < "kind" : "foresttreesback", --- > "kind" : "stem/foresttreesback", scripts\behavior.lua 27c27 < newTree.root = nodeFromJson(behavior.root, behavior.parameters) --- > newTree.root = nodeFromJson(behavior.root, behavior.parameters, behavior.name) 103,104c103,104 < function BTComposite.fromJson(node, parameters) < return composites[node.name].fromJson(node, parameters) --- > function BTComposite.fromJson(node) > return composites[node.name].fromJson(node) 158,159c158,159 < function BTDecorator.fromJson(node, parameters) < return decorators[node.name].fromJson(node, parameters) --- > function BTDecorator.fromJson(node) > return decorators[node.name].fromJson(node) 202c202 < function BTAction.fromJson(node, parameters) --- > function BTAction.fromJson(node) 222c222 < world.logInfo("Action %s broke: %s", self.name, result) --- > world.logInfo("Action '%s' in '%s' broke: %s", self.name, self.moduleName, result) 249c249 < function BTModule.fromJson(node, parameters) --- > function BTModule.fromJson(node) 261c261 < self.node = nodeFromJson(tree.root, parameters) --- > self.node = nodeFromJson(tree.root, parameters, tree.name) 287c287 < function nodeFromJson(node, parameters) --- > function nodeFromJson(node, parameters, moduleName) 293c293 < --- > local newNode 295c295 < return BTAction.fromJson(node, parameters) --- > newNode = BTAction.fromJson(node) 297c297,303 < return BTComposite.fromJson(node, parameters) --- > newNode = BTComposite.fromJson(node) > > --Load children > newNode.children = {} > for _,child in ipairs(node.children) do > table.insert(newNode.children, nodeFromJson(child, parameters, moduleName)) > end 299c305,308 < return BTDecorator.fromJson(node, parameters) --- > newNode = BTDecorator.fromJson(node) > > --Load child > newNode.child = nodeFromJson(node.child, parameters, moduleName) 301c310 < return BTModule.fromJson(node, parameters) --- > newNode = BTModule.fromJson(node) 304a314,316 > > newNode.moduleName = moduleName > return newNode scripts\pathing.lua 58a59,62 > if self.pathOptions.mustEndOnGround and not validStandingPosition(self.targetPosition, false) then > return false > end > 73c77 < keepDropping(dt, options) --- > self:keepDropping(dt, options) 276c280 < mcontroller.setPosition({nextPathPosition[1], self.position[2]}) --- > mcontroller.setPosition({self.nextPathPosition[1], self.position[2]}) 279c283 < timedDrop(math.max(timeToFall(-self.delta[2]), 0.05)) --- > self:timedDrop(math.max(timeToFall(-self.delta[2]), 0.05)) scripts\actions\movement.lua 183c183 < --- > 209a210,219 > end > > -- param percentage > function inLiquid(args, output) > args = parseArgs(args, { > percentage = "percentage" > }) > local percentage = BData:getNumber(args.percentage) or 1.0 > > return mcontroller.liquidPercentage() >= percentage scripts\actions\reaction.lua 147c147,154 < local standPosition = world.callScriptedEntity(target, "entity.configParameter", "npcPlay.standPosition") --- > local objectDirection = world.callScriptedEntity(target, "entity.direction") > local standPosition > if objectDirection == -1 then > standPosition = world.callScriptedEntity(target, "entity.configParameter", "npcPlay.standPositionLeft") > else > standPosition = world.callScriptedEntity(target, "entity.configParameter", "npcPlay.standPositionRight") > end > 149d155 < standPosition[1] = standPosition[1] * world.callScriptedEntity(target, "entity.direction") scripts\behavior\composite.lua 6,9c6,7 < function BTSequence.new(children) < local newNode = { < children = children or {}, < } --- > function BTSequence.new() > local newNode = {} 14,18c12 < function BTSequence.fromJson(node, parameters) < local children = {} < for _,child in pairs(node.children) do < table.insert(children, nodeFromJson(child, parameters)) < end --- > function BTSequence.fromJson(node) 52c46 < function BTCleanup.new(children) --- > function BTCleanup.new() 54d47 < children = children or {}, 61,66c54,55 < function BTCleanup.fromJson(node, parameters) < local children = {} < for _,child in pairs(node.children) do < table.insert(children, nodeFromJson(child, parameters)) < end < return BTCleanup.new(children) --- > function BTCleanup.fromJson(node) > return BTCleanup.new() 69a59,60 > if self.current == nil then self.current = 1 end > 86,88c77 < self.current = self.current + 1 < while self.current <= #self.children do < self:runChild(self.current, dt) --- > if self.current then 89a79,83 > while self.current <= #self.children do > self.children[self.current]:run(dt) > self.children[self.current]:reset() > self.current = self.current + 1 > end 101c95 < self.current = 1 --- > self.current = nil 109,113c103,104 < function BTSelector.new(children) < local newNode = { < children = children or {}, < state = {} -- reset on every success or fail < } --- > function BTSelector.new() > local newNode = {} 118,123c109,110 < function BTSelector.fromJson(node, parameters) < local children = {} < for _,child in pairs(node.children) do < table.insert(children, nodeFromJson(child, parameters)) < end < return BTSelector.new(children) --- > function BTSelector.fromJson(node) > return BTSelector.new() 156,159c143 < local newNode = { < children = children or {}, < state = {} -- reset on every success or fail < } --- > local newNode = {} 164,169c148,149 < function BTDynamic.fromJson(node, parameters) < local children = {} < for _,child in pairs(node.children) do < table.insert(children, nodeFromJson(child, parameters)) < end < return BTDynamic.new(children) --- > function BTDynamic.fromJson(node) > return BTDynamic.new() 216c196 < function BTParallel.new(parameters, children) --- > function BTParallel.new(parameters) 218d197 < children = children or {}, 227,233c206,207 < function BTParallel.fromJson(node, parameters) < local children = {} < for _,child in pairs(node.children) do < table.insert(children, nodeFromJson(child, parameters)) < end < local newNode = BTParallel.new(node.parameters, children) < return newNode --- > function BTParallel.fromJson(node) > return BTParallel.new(node.parameters) 287c261 < function BTRandomize.new(children) --- > function BTRandomize.new() 289d262 < children = children or {}, 295,300c268,269 < function BTRandomize.fromJson(node, parameters) < local children = {} < for _,child in pairs(node.children) do < table.insert(children, nodeFromJson(child, parameters)) < end < return BTRandomize.new(children) --- > function BTRandomize.fromJson(node) > return BTRandomize.new() scripts\behavior\decorator.lua 8c8 < function BTInverter.new(child) --- > function BTInverter.new() 11d10 < newNode:setChild(child) 15,16c14,15 < function BTInverter.fromJson(node, parameters) < return BTInverter.new(nodeFromJson(node.child, parameters)) --- > function BTInverter.fromJson(node) > return BTInverter.new() 35c34 < function BTSucceeder.new(child) --- > function BTSucceeder.new() 38d36 < newNode:setChild(child) 42,43c40,41 < function BTSucceeder.fromJson(node, parameters) < return BTSucceeder.new(nodeFromJson(node.child, parameters)) --- > function BTSucceeder.fromJson(node) > return BTSucceeder.new() 60c58 < function BTFailer.new(child) --- > function BTFailer.new() 63d60 < newNode:setChild(child) 67,68c64,65 < function BTFailer.fromJson(node, parameters) < return BTFailer.new(nodeFromJson(node.child, parameters)) --- > function BTFailer.fromJson(node) > return BTFailer.new() 86c83 < function BTLimiter.new(child, limit) --- > function BTLimiter.new(limit) 92d88 < newNode:setChild(child) 96c92 < function BTLimiter.fromJson(node, parameters) --- > function BTLimiter.fromJson(node) 98c94 < return BTLimiter.new(nodeFromJson(node.child, parameters), parameters.limit) --- > return BTLimiter.new(parameters.limit) 118c114 < function BTCooldown.new(cooldown, onFail, child) --- > function BTCooldown.new(cooldown, onFail) 130c126 < function BTCooldown.fromJson(node, parameters) --- > function BTCooldown.fromJson(node) 132c128 < return BTCooldown.new(args.cooldown, args.onFail, nodeFromJson(node.child, parameters)) --- > return BTCooldown.new(args.cooldown, args.onFail) 152c148 < function BTRepeater.new(maxLoops, untilSuccess, child) --- > function BTRepeater.new(maxLoops, untilSuccess) 163c159 < function BTRepeater.fromJson(node, parameters) --- > function BTRepeater.fromJson(node) 169c165 < return BTRepeater.new(args.maxLoops, args.untilSuccess, nodeFromJson(node.child, parameters)) --- > return BTRepeater.new(args.maxLoops, args.untilSuccess) 196c192 < function BTGroup.new(args, child) --- > function BTGroup.new(args) 214c210 < function BTGroup.fromJson(node, parameters) --- > function BTGroup.fromJson(node) 218c214 < return BTGroup.new(args, nodeFromJson(node.child, parameters)) --- > return BTGroup.new(args) 272c268 < function BTTask.new(args, child) --- > function BTTask.new(args) 286c282 < function BTTask.fromJson(node, parameters) --- > function BTTask.fromJson(node) 290c286 < return BTTask.new(args, nodeFromJson(node.child, parameters)) --- > return BTTask.new(args) stagehands\coordinator\npccombat.lua 6a7,10 > if not world.entityExists(self.goal) then > self.success = true > return > end 72c76 < dirRanges[dir] = newRange or maxRange --- > dirRanges[dir] = newRange and newRange - 2 or maxRange