FILES ----- dungeon_worlds.config instance_worlds.config player.config versioning.config animations\1hswordhitspark\1hswordhitspark.animation behaviors\monsters\boss\apeboss\fistattack.behavior behaviors\monsters\boss\apeboss\missileattack.behavior behaviors\monsters\boss\apeboss\needleattack.behavior behaviors\monsters\boss\apeboss\pelletattack.behavior behaviors\monsters\boss\apeboss\sweepattack.behavior behaviors\monsters\modular\targeting.behavior behaviors\npc\combat.behavior behaviors\npc\idle.behavior [NEW] behaviors\npc\inspect.behavior behaviors\npc\tracking.behavior behaviors\npc\crew\combat.behavior behaviors\npc\crew\crewmember.behavior [NEW] behaviors\npc\crew\fieldbenefits.behavior behaviors\npc\crew\notifications.behavior [NEW] behaviors\npc\unique\cultistinvader.behavior [NEW] behaviors\sequences\glitchmission\baronstart.behavior dungeons\hylotl\hylotloceancity\hylotlbedrooms2.json dungeons\hylotl\hylotloceancity\hylotlground2.json [NEW] dungeons\hylotl\hylotloceancity\hylotlground3.json dungeons\hylotl\hylotloceancity\hylotloceancity.dungeon dungeons\hylotl\hylotloceancity\hylotlrestaurant1.json dungeons\hylotl\hylotloceancity\hylotlroofdojo1.json dungeons\hylotl\hylotloceancity\hylotlroofgenerator.json dungeons\hylotl\hylotloceancity\hylotlroofgraveyard1.json dungeons\hylotl\hylotloceancity\hylotlvertical2.json dungeons\hylotl\hylotloceancity\hylotlvertical3.json [NEW] dungeons\hylotl\hylotloceancity\hylotlverticalwindows.json dungeons\missions\glitchmissions\glitchmission1.dungeon [NEW] dungeons\missions\glitchmissions\glitchmission1.json [NEW] dungeons\missions\glitchmissions\glitchmissionreference_old.png interface\codex\body_blank.png interface\codex\scrollbg.png interface\confirmation\recruitconfirmation.config [NEW] interface\confirmation\resetuniformconfirmation.config [NEW] interface\confirmation\setuniformconfirmation.config [NEW] interface\escmenu\x.png [NEW] interface\escmenu\xhover.png [NEW] interface\escmenu\xpress.png interface\optionsmenu\body_blank.png interface\optionsmenu\footer.png interface\optionsmenu\header.png interface\optionsmenu\optionsmenu.config interface\optionsmenu\shine.png [NEW] interface\optionsmenu\x.png [NEW] interface\optionsmenu\xhover.png [NEW] interface\optionsmenu\xpress.png interface\windowconfig\codex.config [NEW] interface\windowconfig\portraitconfirmation.config items\active\effects\chain.lua items\active\weapons\weapon.lua [NEW] items\active\weapons\whip\default.frames [NEW] items\active\weapons\whip\energybeam.png [NEW] items\active\weapons\whip\energybeamend.png [NEW] items\active\weapons\whip\energywhip.activeitem [NEW] items\active\weapons\whip\energywhip.png [NEW] items\active\weapons\whip\energywhipfullbright.png items\active\weapons\whip\testwhip.activeitem [NEW] items\active\weapons\whip\vinelink.png [NEW] items\active\weapons\whip\vinewhip.png items\active\weapons\whip\whip.animation items\active\weapons\whip\whip.lua items\active\weapons\whip\whipcrack.lua [NEW] items\active\weapons\whip\altabilities\energyorb.altability [NEW] items\active\weapons\whip\altabilities\energyorb.lua [NEW] items\buildscripts\buildwhip.lua [NEW] items\materials\brainsblock.matitem [NEW] items\materials\brainsblock.png [NEW] items\materials\jellyblock.matitem [NEW] items\materials\jellyblock.png [NEW] items\materials\tentacleblock.matitem [NEW] items\materials\tentacleblock.png [NEW] liquids\jellyliquid.liquid [NEW] liquids\jellytex.png liquids\lava.liquid monsters\boss\apeboss\apeboss.animation monsters\boss\apeboss\apeboss.monstertype monsters\boss\apebossprojector\apebossprojector.animation monsters\boss\apebossprojector\apebossprojector.monstertype npcs\bmain.lua npcs\hostile.npctype npcs\hostilelookout.npctype npcs\crew\crewmember.npctype npcs\crew\crewmemberchemist.npctype npcs\crew\crewmemberengineer.npctype npcs\crew\crewmemberjanitor.npctype npcs\crew\crewmembermechanic.npctype npcs\crew\crewmembermedic.npctype [NEW] npcs\crew\crewmembertailor.npctype [NEW] npcs\mission\cultistinvader.npctype [NEW] npcs\mission\cultistknight.npctype npcs\story\baron.npctype objects\biome\foundry\foundrylogic\foundryxor.object [NEW] objects\biome\tentacle\tentaclespike\tentaclespike.object [NEW] objects\biome\tentacle\tentaclespike\tentaclespikebottom.frames [NEW] objects\biome\tentacle\tentaclespike\tentaclespikebottom.png [NEW] objects\biome\tentacle\tentaclespike\tentaclespikeicon.png [NEW] objects\biome\tentacle\tentaclespike\tentaclespikeleft.frames [NEW] objects\biome\tentacle\tentaclespike\tentaclespikeleft.png [NEW] objects\biome\tentacle\tentaclespike\tentaclespikeright.frames [NEW] objects\biome\tentacle\tentaclespike\tentaclespikeright.png [NEW] objects\biome\tentacle\tentaclespike\tentaclespiketop.frames [NEW] objects\biome\tentacle\tentaclespike\tentaclespiketop.png objects\hylotl\hylotlliquidsensor\hylotlliquidsensor.object objects\hylotl\hylotlpainting3\hylotlpainting3.object objects\hylotl\hylotlpainting3\hylotlpainting3.png objects\hylotl\hylotlpainting3\hylotlpainting3icon.png objects\mission\apexmission\fistlauncher\fistlauncher.animation objects\protectorate\objects\protectoratedormmirror\protectoratedormmirror.object objects\protectorate\objects\protectoratedormtoiletroll\protectoratedormtoiletroll.object objects\protectorate\objects\protectorateincap1\protectorateincap1.object objects\protectorate\objects\protectorateincap2\protectorateincap2.object objects\protectorate\objects\protectorateincap3\protectorateincap3.object objects\protectorate\objects\protectorateincap4\protectorateincap4.object objects\protectorate\objects\protectorateincap5\protectorateincap5.object objects\protectorate\objects\protectorateincap6\protectorateincap6.object objects\wired\alarm\alarm.object objects\wired\bigredbutton\bigredbutton.object objects\wired\drain\drain.object [NEW] projectiles\activeitems\whip\whipcrackelectric.projectile [NEW] projectiles\activeitems\whip\whipcrackphysical.frames [NEW] projectiles\activeitems\whip\whipcrackphysical.png [NEW] projectiles\activeitems\whip\whipcrackphysical.projectile [NEW] projectiles\activeitems\whip\whipenergyorb.frames [NEW] projectiles\activeitems\whip\whipenergyorb.png [NEW] projectiles\activeitems\whip\whipenergyorb.projectile scripts\behavior.lua scripts\util.lua scripts\actions\crew.lua scripts\actions\dialog.lua scripts\actions\entities.lua scripts\companions\crewbenefits.lua scripts\companions\petspawner.lua scripts\companions\player.lua scripts\companions\recruitable.lua scripts\companions\recruitspawner.lua [NEW] sfx\npc\unique\apeboss_death.ogg [NEW] sfx\npc\unique\apeboss_glitch1.ogg [NEW] sfx\npc\unique\apeboss_glitch2.ogg [NEW] sfx\npc\unique\apeboss_glitch3.ogg [NEW] sfx\npc\unique\apeboss_spawn.ogg [NEW] sfx\npc\unique\apeboss_stage1_attack1.ogg [NEW] sfx\npc\unique\apeboss_stage1_attack2.ogg [NEW] sfx\npc\unique\apeboss_stage2_loop.ogg [NEW] sfx\npc\unique\apeboss_stage3_attack.ogg [NEW] sfx\npc\unique\apeboss_stage3_loop.ogg [NEW] sfx\npc\unique\apeboss_stage4_attack.ogg [NEW] sfx\npc\unique\apeboss_stage4_loop.ogg [NEW] sfx\projectiles\fistlauncher_shot.ogg [NEW] sfx\projectiles\missile_loop.ogg [NEW] stagehands\mission\glitchmissionmanager.lua [NEW] stagehands\mission\glitchmissionmanager.stagehand [NEW] stagehands\mission\glitchmissionspawnpoint.stagehand [NEW] tiles\materials\brainsblock.material [NEW] tiles\materials\brainsblock.png [NEW] tiles\materials\jellyblock.material [NEW] tiles\materials\jellyblock.png [NEW] tiles\materials\tentacleblock.material [NEW] tiles\materials\tentacleblock.png treasure\common.treasurepools treasure\dungeon.treasurepools vehicles\mech\mech.lua [NEW] vehicles\mech\glitchmech\glitchmech.animation vehicles\mech\glitchmech\glitchmech.vehicle [NEW] versioning\npcentity_9_10.lua DIFFS ----- dungeon_worlds.config 107a108,119 > "glitchmission1" : { > "primaryDungeon" : "glitchmission1", > "threatLevel" : 6, > "gravity" : 80, > "worldSize" : [2000, 2000], > "dungeonBaseHeight" : 1230, > "dungeonSurfaceHeight" : 1070, > "ambientLightLevel" : [32, 32, 32], > "biome" : "forest", > "musicTrack" : "/music/event-horizon.ogg" > }, > instance_worlds.config 500,508c500,574 < "morningColors" : [[24, 38, 53, 80], [58, 42, 70, 160]], < "dayColors" : [[24, 38, 53, 80], [58, 42, 70, 160]], < "eveningColors" : [[24, 38, 53, 80], [58, 42, 70, 160]], < "nightColors" : [[24, 38, 53, 80], [58, 42, 70, 160]], < < "morningLightColor" : [40, 20, 60], < "dayLightColor" : [40, 20, 60], < "eveningLightColor" : [40, 20, 60], < "nightLightColor" : [40, 20, 60] --- > "morningColors" : [[125, 17, 158], [210, 52, 50]], > "dayColors" : [[125, 17, 158], [210, 52, 50]], > "eveningColors" : [[125, 17, 158], [210, 52, 50]], > "nightColors" : [[125, 17, 158], [210, 52, 50]], > > "morningLightColor" : [160, 120, 180], > "dayLightColor" : [160, 120, 180], > "eveningLightColor" : [160, 120, 180], > "nightLightColor" : [160, 120, 180] > }, > > "satellites" : [ { > "pos" : [ 0.310561, 0.35497 ], > "layers" : [ { > "scale" : 0.055, > "image" : "/celestial/system/terrestrial/liquids/water.png" > }, { > "scale" : 0.055, > "image" : "/celestial/system/terrestrial/biomes/forest/maskie3.png?hueshift=-45?addmask=/celestial/system/terrestrial/dynamics/temperate/2.png" > }, { > "scale" : 0.055, > "image" : "/celestial/system/terrestrial/biomes/forest/maskie2.png?hueshift=-45?addmask=/celestial/system/terrestrial/dynamics/temperate/20.png" > }, { > "scale" : 0.055, > "image" : "/celestial/system/terrestrial/biomes/forest/maskie1.png?hueshift=-45?addmask=/celestial/system/terrestrial/dynamics/temperate/5.png" > }, { > "scale" : 0.055, > "image" : "/celestial/system/terrestrial/shadows/9.png" > } ] > } ], > "planet" : { > "pos" : [ 0.00538729, 0.46961 ], > "layers" : [ { > "scale" : 0.15, > "image" : "/celestial/system/gas_giant/gas_giant_base.png?hueshift=-80" > }, { > "scale" : 0.15, > "image" : "/celestial/system/gas_giant/gas_giant_clouds_0.png?hueshift=-70?addmask=/celestial/system/gas_giant/gas_giant_dynamics/3.png+/celestial/system/gas_giant/gas_giant_dynamics/29.png" > }, { > "scale" : 0.15, > "image" : "/celestial/system/gas_giant/gas_giant_clouds_1.png?hueshift=-77?addmask=/celestial/system/gas_giant/gas_giant_dynamics/28.png+/celestial/system/gas_giant/gas_giant_dynamics/29.png" > }, { > "scale" : 0.15, > "image" : "/celestial/system/gas_giant/shadows/9.png" > } ] > }, > "horizonImages" : [ ] > } > }, > > "glitchmission1" : { > "type" : "FloatingDungeon", > "dungeonWorld" : "glitchmission1", > "seed" : 1111, > "spawningEnabled" : false, > > "skyParameters" : { > "dayLength" : 10000, > "surfaceLevel" : 1000, > "spaceLevel" : 3000, > "seed" : -5288806180628666923, > > "skyType" : "atmospheric", > "skyColoring" : { > "mainColor" : [200, 200, 255], > > "morningColors" : [ [120, 125, 200], [230, 150, 85] ], > "dayColors" : [ [120, 125, 200], [230, 150, 85] ], > "eveningColors" : [ [120, 125, 200], [230, 150, 85] ], > "nightColors" : [ [120, 125, 200], [230, 150, 85] ], > > "morningLightColor" : [120, 140, 200], > "dayLightColor" : [120, 140, 200], > "eveningLightColor" : [120, 140, 200], > "nightLightColor" : [120, 140, 200] player.config 783a784,788 > }, > "uniformSlots" : { > "chest" : ["chestsoc", "chest"], > "legs" : ["legssoc", "legs"], > "back" : ["backsoc", "back"] versioning.config 13c13 < "NpcEntity" : 9, --- > "NpcEntity" : 10, animations\1hswordhitspark\1hswordhitspark.animation 5c5 < "animationCycle" : 0.3, --- > "animationCycle" : 0.2, behaviors\monsters\boss\apeboss\fistattack.behavior 2a3 > "description": "", 79a81,92 > } > }, > { > "title": "apeboss-stagesound", > "type": "module", > "name": "apeboss-stagesound", > "parameters": { > "projectorCount": "projectorCount", > "stage1": "stage1Attack", > "stage2": "stage2Attack", > "stage3": "stage3Attack", > "stage4": "stage4Attack" behaviors\monsters\boss\apeboss\missileattack.behavior 2a3 > "description": "", 69a71,82 > } > }, > { > "title": "apeboss-stagesound", > "type": "module", > "name": "apeboss-stagesound", > "parameters": { > "projectorCount": "projectorCount", > "stage1": "stage1Attack", > "stage2": "stage2Attack", > "stage3": "stage3Attack", > "stage4": "stage4Attack" behaviors\monsters\boss\apeboss\needleattack.behavior 190a191,202 > "title": "apeboss-stagesound", > "type": "module", > "name": "apeboss-stagesound", > "parameters": { > "projectorCount": "projectorCount", > "stage1": "stage1Attack", > "stage2": "stage2Attack", > "stage3": "stage3Attack", > "stage4": "stage4Attack" > } > }, > { behaviors\monsters\boss\apeboss\pelletattack.behavior 76a77,88 > "title": "apeboss-stagesound", > "type": "module", > "name": "apeboss-stagesound", > "parameters": { > "projectorCount": "projectorCount", > "stage1": "stage1Attack", > "stage2": "stage2Attack", > "stage3": "stage3Attack", > "stage4": "stage4Attack" > } > }, > { behaviors\monsters\boss\apeboss\sweepattack.behavior 2a3 > "description": "", 151a153,164 > } > }, > { > "title": "apeboss-stagesound", > "type": "module", > "name": "apeboss-stagesound", > "parameters": { > "projectorCount": "projectorCount", > "stage1": "stage1Attack", > "stage2": "stage2Attack", > "stage3": "stage3Attack", > "stage4": "stage4Attack" behaviors\monsters\modular\targeting.behavior 8c8,9 < "/scripts/actions/time.lua" --- > "/scripts/actions/time.lua", > "/scripts/actions/pets.lua" 280c281,284 < "parameters": {} --- > "parameters": {}, > "output": { > "damageSource": "damageSource" > } 428a433,474 > }, > { > "title": "selector", > "type": "composite", > "name": "selector", > "parameters": {}, > "children": [ > { > "title": "inverter", > "type": "decorator", > "name": "inverter", > "parameters": {}, > "child": { > "title": "hasOwner", > "type": "action", > "name": "hasOwner", > "parameters": { > "owner": "" > } > } > }, > { > "title": "entityInTypes", > "type": "action", > "name": "entityInTypes", > "parameters": { > "entity": "filterItem", > "types": [ > "player", > "monster" > ] > } > }, > { > "title": "entityAggressive", > "type": "action", > "name": "entityAggressive", > "parameters": { > "entity": "filterItem" > } > } > ] behaviors\npc\combat.behavior 6c6,7 < "/scripts/actions/time.lua" --- > "/scripts/actions/time.lua", > "/scripts/behavior.lua" 105c106 < "title": "parallel", --- > "title": "cleanup", 107,111c108,109 < "name": "parallel", < "parameters": { < "fail": 1, < "success": -1 < }, --- > "name": "cleanup", > "parameters": {}, 114,121d111 < "title": "isValidTarget", < "type": "action", < "name": "isValidTarget", < "parameters": { < "entity": "target" < } < }, < { 126c116 < "fail": -1, --- > "fail": 1, 131,177c121,134 < "title": "cleanup", < "type": "composite", < "name": "cleanup", < "parameters": {}, < "children": [ < { < "title": "inverter", < "type": "decorator", < "name": "inverter", < "parameters": {}, < "child": { < "title": "parallel", < "type": "composite", < "name": "parallel", < "parameters": { < "fail": 1, < "success": -1 < }, < "children": [ < { < "title": "hasShield", < "type": "action", < "name": "hasShield", < "parameters": {} < }, < { < "title": "beginAltFire", < "type": "action", < "name": "beginAltFire", < "parameters": {} < }, < { < "title": "runner", < "type": "action", < "name": "runner", < "parameters": {} < } < ] < } < }, < { < "title": "endAltFire", < "type": "action", < "name": "endAltFire", < "parameters": {} < } < ] --- > "title": "isValidTarget", > "type": "action", > "name": "isValidTarget", > "parameters": { > "entity": "target" > } > }, > { > "title": "setAggressive", > "type": "action", > "name": "setAggressive", > "parameters": { > "aggressive": true > } 180c137 < "title": "dynamic", --- > "title": "parallel", 182,183c139,143 < "name": "dynamic", < "parameters": {}, --- > "name": "parallel", > "parameters": { > "fail": -1, > "success": -1 > }, 186c146 < "title": "parallel", --- > "title": "cleanup", 188,192c148,149 < "name": "parallel", < "parameters": { < "fail": 1, < "success": -1 < }, --- > "name": "cleanup", > "parameters": {}, 195c152,187 < "title": "hasMeleePrimary", --- > "title": "inverter", > "type": "decorator", > "name": "inverter", > "parameters": {}, > "child": { > "title": "parallel", > "type": "composite", > "name": "parallel", > "parameters": { > "fail": 1, > "success": -1 > }, > "children": [ > { > "title": "hasShield", > "type": "action", > "name": "hasShield", > "parameters": {} > }, > { > "title": "beginAltFire", > "type": "action", > "name": "beginAltFire", > "parameters": {} > }, > { > "title": "runner", > "type": "action", > "name": "runner", > "parameters": {} > } > ] > } > }, > { > "title": "endAltFire", 197c189 < "name": "hasMeleePrimary", --- > "name": "endAltFire", 199c191,199 < }, --- > } > ] > }, > { > "title": "dynamic", > "type": "composite", > "name": "dynamic", > "parameters": {}, > "children": [ 201,203c201,203 < "title": "cooldown", < "type": "decorator", < "name": "cooldown", --- > "title": "parallel", > "type": "composite", > "name": "parallel", 205,207c205,206 < "cooldown": 2, < "onFail": true, < "onSuccess": false --- > "fail": 1, > "success": -1 209,217c208,213 < "child": { < "title": "task", < "type": "decorator", < "name": "task", < "parameters": { < "groupId": "combat", < "taskId": "melee", < "minMembers": 1, < "maxMembers": 8 --- > "children": [ > { > "title": "hasMeleePrimary", > "type": "action", > "name": "hasMeleePrimary", > "parameters": {} 219,222c215,218 < "child": { < "title": "sequence", < "type": "composite", < "name": "sequence", --- > { > "title": "cooldown", > "type": "decorator", > "name": "cooldown", 224,227c220,222 < "type": "sliding", < "state": "off", < "fromEntity": "attackTarget", < "toEntity": "fleeTarget" --- > "cooldown": 2, > "onFail": true, > "onSuccess": false 229,231c224,235 < "children": [ < { < "title": "dynamic", --- > "child": { > "title": "task", > "type": "decorator", > "name": "task", > "parameters": { > "groupId": "combat", > "taskId": "melee", > "minMembers": 1, > "maxMembers": 8 > }, > "child": { > "title": "sequence", 233,234c237,243 < "name": "dynamic", < "parameters": {}, --- > "name": "sequence", > "parameters": { > "type": "sliding", > "state": "off", > "fromEntity": "attackTarget", > "toEntity": "fleeTarget" > }, 237,251c246,248 < "title": "groupResource", < "type": "action", < "name": "groupResource", < "parameters": { < "groupId": "combat", < "name": "meleePosition" < }, < "output": { < "position": "movePosition" < } < }, < { < "title": "failer", < "type": "decorator", < "name": "failer", --- > "title": "dynamic", > "type": "composite", > "name": "dynamic", 253,258c250,275 < "child": { < "title": "timer", < "type": "action", < "name": "timer", < "parameters": { < "time": 0.5 --- > "children": [ > { > "title": "groupResource", > "type": "action", > "name": "groupResource", > "parameters": { > "groupId": "combat", > "name": "meleePosition" > }, > "output": { > "position": "movePosition" > } > }, > { > "title": "failer", > "type": "decorator", > "name": "failer", > "parameters": {}, > "child": { > "title": "timer", > "type": "action", > "name": "timer", > "parameters": { > "time": 0.5 > } > } 260c277,283 < } --- > ] > }, > { > "title": "NPC Melee", > "type": "module", > "name": "meleecombat", > "parameters": {} 263,268d285 < }, < { < "title": "NPC Melee", < "type": "module", < "name": "meleecombat", < "parameters": {} 270c287 < ] --- > } 272,289c289 < } < } < ] < }, < { < "title": "parallel", < "type": "composite", < "name": "parallel", < "parameters": { < "fail": 1, < "success": -1 < }, < "children": [ < { < "title": "hasRangedPrimary", < "type": "action", < "name": "hasRangedPrimary", < "parameters": {} --- > ] 292,294c292,294 < "title": "task", < "type": "decorator", < "name": "task", --- > "title": "parallel", > "type": "composite", > "name": "parallel", 296,299c296,297 < "groupId": "combat", < "taskId": "ranged", < "minMembers": 1, < "maxMembers": 8 --- > "fail": 1, > "success": -1 301,323c299,323 < "child": { < "title": "NPC Ranged", < "type": "module", < "name": "rangedcombat", < "parameters": {} < } < } < ] < }, < { < "title": "parallel", < "type": "composite", < "name": "parallel", < "parameters": { < "fail": 1, < "success": -1 < }, < "children": [ < { < "title": "hasMeleePrimary", < "type": "action", < "name": "hasMeleePrimary", < "parameters": {} --- > "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": "NPC Ranged", > "type": "module", > "name": "rangedcombat", > "parameters": {} > } > } > ] 326,328c326,328 < "title": "task", < "type": "decorator", < "name": "task", --- > "title": "parallel", > "type": "composite", > "name": "parallel", 330,333c330,331 < "groupId": "combat", < "taskId": "meleeStandby", < "minMembers": 1, < "maxMembers": 8 --- > "fail": 1, > "success": -1 335,340c333,363 < "child": { < "title": "NPC Melee Standby", < "type": "module", < "name": "meleestandby", < "parameters": {} < } --- > "children": [ > { > "title": "hasMeleePrimary", > "type": "action", > "name": "hasMeleePrimary", > "parameters": {} > }, > { > "title": "task", > "type": "decorator", > "name": "task", > "parameters": { > "groupId": "combat", > "taskId": "meleeStandby", > "minMembers": 1, > "maxMembers": 8 > }, > "child": { > "title": "NPC Melee Standby", > "type": "module", > "name": "meleestandby", > "parameters": {} > } > } > ] > }, > { > "title": "runner", > "type": "action", > "name": "runner", > "parameters": {} 343,348d365 < }, < { < "title": "runner", < "type": "action", < "name": "runner", < "parameters": {} 352a370,389 > }, > { > "title": "entityConfigParameter", > "type": "action", > "name": "entityConfigParameter", > "parameters": { > "default": false, > "path": "aggressive" > }, > "output": { > "bool": "aggressive" > } > }, > { > "title": "setAggressive", > "type": "action", > "name": "setAggressive", > "parameters": { > "aggressive": "aggressive" > } 359c396 < } \ No newline at end of file --- > } behaviors\npc\idle.behavior 3d2 < "description": "", 27c26,31 < "beamOutWhenNotInUse": false --- > "beamOutWhenNotInUse": false, > "inspectObjects": false, > "inspectCooldown": [ > 60, > 180 > ] 789a794,817 > "parameters": {} > } > } > }, > { > "title": "cooldown", > "type": "decorator", > "name": "cooldown", > "parameters": { > "cooldown": "", > "onFail": false, > "onSuccess": true > }, > "child": { > "title": "optional", > "type": "decorator", > "name": "optional", > "parameters": { > "shouldRun": "" > }, > "child": { > "title": "npcinspect", > "type": "module", > "name": "npcinspect", behaviors\npc\tracking.behavior 5a6 > "/scripts/behavior/bdata.lua", 8d8 < "/scripts/behavior/bdata.lua", 16c16 < "title": "dynamic", --- > "title": "parallel", 18,19c18,22 < "name": "dynamic", < "parameters": {}, --- > "name": "parallel", > "parameters": { > "fail": 1, > "success": -1 > }, 22c25,77 < "title": "sequence", --- > "title": "filter", > "type": "decorator", > "name": "filter", > "parameters": { > "list": "targets", > "type": "entity" > }, > "child": { > "title": "sequence", > "type": "composite", > "name": "sequence", > "parameters": {}, > "children": [ > { > "title": "isValidTarget", > "type": "action", > "name": "isValidTarget", > "parameters": { > "entity": "filterItem" > } > }, > { > "title": "selector", > "type": "composite", > "name": "selector", > "parameters": {}, > "children": [ > { > "title": "entityInTypes", > "type": "action", > "name": "entityInTypes", > "parameters": { > "entity": "filterItem", > "types": [ > "player" > ] > } > }, > { > "title": "entityAggressive", > "type": "action", > "name": "entityAggressive", > "parameters": { > "entity": "filterItem" > } > } > ] > } > ] > } > }, > { > "title": "dynamic", 24c79 < "name": "sequence", --- > "name": "dynamic", 28,36c83 < "title": "listClear", < "type": "action", < "name": "listClear", < "parameters": { < "list": "newTargets" < } < }, < { < "title": "selector", --- > "title": "sequence", 38c85 < "name": "selector", --- > "name": "sequence", 42,118c89,91 < "title": "sequence", < "type": "composite", < "name": "sequence", < "parameters": {}, < "children": [ < { < "title": "wasDamaged", < "type": "action", < "name": "wasDamaged", < "parameters": {} < }, < { < "title": "entityInTypes", < "type": "action", < "name": "entityInTypes", < "parameters": { < "entity": "damageSource", < "types": [ < "monster", < "npc", < "player" < ] < } < }, < { < "title": "entityInRange", < "type": "action", < "name": "entityInRange", < "parameters": { < "entity": "damageSource", < "range": "" < } < }, < { < "title": "inverter", < "type": "decorator", < "name": "inverter", < "parameters": {}, < "child": { < "title": "listContains", < "type": "action", < "name": "listContains", < "parameters": { < "list": "targets", < "entity": "damageSource" < } < } < }, < { < "title": "listPush", < "type": "action", < "name": "listPush", < "parameters": { < "list": "newTargets", < "entity": "damageSource" < } < }, < { < "title": "broadcastNotification", < "type": "action", < "name": "broadcastNotification", < "parameters": { < "position": "self", < "range": 40, < "entityTypes": [ < "npc" < ], < "type": "attack", < "target": "newTarget" < } < } < ] < }, < { < "title": "sequence", < "type": "composite", < "name": "sequence", --- > "title": "listClear", > "type": "action", > "name": "listClear", 120,169c93,94 < "type": "sliding", < "state": "off", < "fromEntity": "attackTarget", < "toEntity": "fleeTarget" < }, < "children": [ < { < "title": "receivedNotification", < "type": "action", < "name": "receivedNotification", < "parameters": { < "type": "attack" < }, < "output": { < "source": "notificationSource", < "target": "notificationTarget" < } < }, < { < "title": "inverter", < "type": "decorator", < "name": "inverter", < "parameters": {}, < "child": { < "title": "isValidTarget", < "type": "action", < "name": "isValidTarget", < "parameters": { < "entity": "notificationSource" < } < } < }, < { < "title": "entityInSight", < "type": "action", < "name": "entityInSight", < "parameters": { < "entity": "notificationSource" < } < }, < { < "title": "listPush", < "type": "action", < "name": "listPush", < "parameters": { < "list": "newTargets", < "entity": "notificationTarget" < } < } < ] --- > "list": "newTargets" > } 172c97 < "title": "sequence", --- > "title": "selector", 174,180c99,100 < "name": "sequence", < "parameters": { < "type": "sliding", < "state": "off", < "fromEntity": "attackTarget", < "toEntity": "fleeTarget" < }, --- > "name": "selector", > "parameters": {}, 183,185c103,105 < "title": "inverter", < "type": "decorator", < "name": "inverter", --- > "title": "sequence", > "type": "composite", > "name": "sequence", 187,192c107,134 < "child": { < "title": "", < "type": "action", < "name": "listGet", < "parameters": { < "list": "targets" --- > "children": [ > { > "title": "wasDamaged", > "type": "action", > "name": "wasDamaged", > "parameters": {} > }, > { > "title": "entityInTypes", > "type": "action", > "name": "entityInTypes", > "parameters": { > "entity": "damageSource", > "types": [ > "monster", > "npc", > "player" > ] > } > }, > { > "title": "entityInRange", > "type": "action", > "name": "entityInRange", > "parameters": { > "entity": "damageSource", > "range": "" > } 194,195c136,172 < "output": { < "entity": "target" --- > { > "title": "inverter", > "type": "decorator", > "name": "inverter", > "parameters": {}, > "child": { > "title": "listContains", > "type": "action", > "name": "listContains", > "parameters": { > "list": "targets", > "entity": "damageSource" > } > } > }, > { > "title": "listPush", > "type": "action", > "name": "listPush", > "parameters": { > "list": "newTargets", > "entity": "damageSource" > } > }, > { > "title": "broadcastNotification", > "type": "action", > "name": "broadcastNotification", > "parameters": { > "position": "self", > "range": 40, > "entityTypes": [ > "npc" > ], > "type": "attack", > "target": "newTarget" > } 197c174 < } --- > ] 200,205c177,184 < "title": "cooldown", < "type": "decorator", < "name": "cooldown", < "parameters": { < "cooldown": 1, < "onFail": true --- > "title": "sequence", > "type": "composite", > "name": "sequence", > "parameters": { > "type": "sliding", > "state": "off", > "fromEntity": "attackTarget", > "toEntity": "fleeTarget" 207,220c186,219 < "child": { < "title": "queryEntity", < "type": "action", < "name": "queryEntity", < "parameters": { < "entityTypes": [ < "monster", < "npc", < "player" < ], < "orderBy": "nearest", < "position": "self", < "range": "", < "withoutEntity": "self" --- > "children": [ > { > "title": "receivedNotification", > "type": "action", > "name": "receivedNotification", > "parameters": { > "type": "attack" > }, > "output": { > "source": "notificationSource", > "target": "notificationTarget" > } > }, > { > "title": "inverter", > "type": "decorator", > "name": "inverter", > "parameters": {}, > "child": { > "title": "isValidTarget", > "type": "action", > "name": "isValidTarget", > "parameters": { > "entity": "notificationSource" > } > } > }, > { > "title": "entityInSight", > "type": "action", > "name": "entityInSight", > "parameters": { > "entity": "notificationSource" > } 222,223c221,228 < "output": { < "list": "queriedTargets" --- > { > "title": "listPush", > "type": "action", > "name": "listPush", > "parameters": { > "list": "newTargets", > "entity": "notificationTarget" > } 225,234c230 < } < }, < { < "title": "damageTeam", < "type": "action", < "name": "damageTeam", < "parameters": {}, < "output": { < "damageTeam": "damageTeam" < } --- > ] 237,242c233,240 < "title": "filter", < "type": "decorator", < "name": "filter", < "parameters": { < "list": "queriedTargets", < "type": "entity" --- > "title": "sequence", > "type": "composite", > "name": "sequence", > "parameters": { > "type": "sliding", > "state": "off", > "fromEntity": "attackTarget", > "toEntity": "fleeTarget" 244,252c242,258 < "child": { < "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": "", > "type": "action", > "name": "listGet", > "parameters": { > "list": "targets" > }, > "output": { > "entity": "target" > } > } 254,256c260,269 < "children": [ < { < "title": "entityInSight", --- > { > "title": "cooldown", > "type": "decorator", > "name": "cooldown", > "parameters": { > "cooldown": 1, > "onFail": true > }, > "child": { > "title": "queryEntity", 258c271 < "name": "entityInSight", --- > "name": "queryEntity", 260c273,284 < "entity": "filterItem" --- > "entityTypes": [ > "monster", > "npc", > "player" > ], > "orderBy": "nearest", > "position": "self", > "range": "", > "withoutEntity": "self" > }, > "output": { > "list": "queriedTargets" 261a286,303 > } > }, > { > "title": "damageTeam", > "type": "action", > "name": "damageTeam", > "parameters": {}, > "output": { > "damageTeam": "damageTeam" > } > }, > { > "title": "filter", > "type": "decorator", > "name": "filter", > "parameters": { > "list": "queriedTargets", > "type": "entity" 263,264c305,306 < { < "title": "selector", --- > "child": { > "title": "sequence", 266,267c308,314 < "name": "selector", < "parameters": {}, --- > "name": "sequence", > "parameters": { > "type": "sliding", > "state": "off", > "fromEntity": "attackTarget", > "toEntity": "fleeTarget" > }, 270,272c317,319 < "title": "sequence", < "type": "composite", < "name": "sequence", --- > "title": "entityInSight", > "type": "action", > "name": "entityInSight", 274,278c321,328 < "type": "sliding", < "state": "off", < "fromEntity": "attackTarget", < "toEntity": "fleeTarget" < }, --- > "entity": "filterItem" > } > }, > { > "title": "selector", > "type": "composite", > "name": "selector", > "parameters": {}, 281,283c331,333 < "title": "isNpc", < "type": "action", < "name": "isNpc", --- > "title": "sequence", > "type": "composite", > "name": "sequence", 285,286c335,364 < "entity": "filterItem" < } --- > "type": "sliding", > "state": "off", > "fromEntity": "attackTarget", > "toEntity": "fleeTarget" > }, > "children": [ > { > "title": "isNpc", > "type": "action", > "name": "isNpc", > "parameters": { > "entity": "filterItem" > } > }, > { > "title": "inverter", > "type": "decorator", > "name": "inverter", > "parameters": {}, > "child": { > "title": "isNpc", > "type": "action", > "name": "isNpc", > "parameters": { > "entity": "filterItem", > "damageTeam": "damageTeam" > } > } > } > ] 289,299c367,395 < "title": "inverter", < "type": "decorator", < "name": "inverter", < "parameters": {}, < "child": { < "title": "isNpc", < "type": "action", < "name": "isNpc", < "parameters": { < "entity": "filterItem", < "damageTeam": "damageTeam" --- > "title": "sequence", > "type": "composite", > "name": "sequence", > "parameters": { > "type": "sliding", > "state": "off", > "fromEntity": "attackTarget", > "toEntity": "fleeTarget" > }, > "children": [ > { > "title": "entityInTypes", > "type": "action", > "name": "entityInTypes", > "parameters": { > "entity": "filterItem", > "types": [ > "player" > ] > } > }, > { > "title": "listContains", > "type": "action", > "name": "listContains", > "parameters": { > "list": "attackonsight", > "entity": "filterItem" > } 301,315c397,398 < } < } < ] < }, < { < "title": "sequence", < "type": "composite", < "name": "sequence", < "parameters": { < "type": "sliding", < "state": "off", < "fromEntity": "attackTarget", < "toEntity": "fleeTarget" < }, < "children": [ --- > ] > }, 323c406 < "player" --- > "monster" 326,334d408 < }, < { < "title": "listContains", < "type": "action", < "name": "listContains", < "parameters": { < "list": "attackonsight", < "entity": "filterItem" < } 339c413 < "title": "entityInTypes", --- > "title": "listPush", 341c415 < "name": "entityInTypes", --- > "name": "listPush", 343,546c417,424 < "entity": "filterItem", < "types": [ < "monster" < ] < } < } < ] < }, < { < "title": "listPush", < "type": "action", < "name": "listPush", < "parameters": { < "list": "newTargets", < "entity": "filterItem" < } < } < ] < } < } < ] < } < ] < }, < { < "title": "filter", < "type": "decorator", < "name": "filter", < "parameters": { < "list": "newTargets", < "type": "entity" < }, < "child": { < "title": "sequence", < "type": "composite", < "name": "sequence", < "parameters": { < "type": "sliding", < "state": "off", < "fromEntity": "attackTarget", < "toEntity": "fleeTarget" < }, < "children": [ < { < "title": "isValidTarget", < "type": "action", < "name": "isValidTarget", < "parameters": { < "entity": "filterItem" < } < }, < { < "title": "inverter", < "type": "decorator", < "name": "inverter", < "parameters": {}, < "child": { < "title": "listContains", < "type": "action", < "name": "listContains", < "parameters": { < "list": "targets", < "entity": "filterItem" < } < } < }, < { < "title": "failer", < "type": "decorator", < "name": "failer", < "parameters": {}, < "child": { < "title": "listPushBack", < "type": "action", < "name": "listPushBack", < "parameters": { < "entity": "filterItem", < "list": "targets" < } < } < } < ] < } < }, < { < "title": "succeeder", < "type": "decorator", < "name": "succeeder", < "parameters": {}, < "child": { < "title": "sequence", < "type": "composite", < "name": "sequence", < "parameters": { < "type": "sliding", < "state": "off", < "fromEntity": "attackTarget", < "toEntity": "fleeTarget" < }, < "children": [ < { < "title": "isValidTarget", < "type": "action", < "name": "isValidTarget", < "parameters": { < "entity": "newTarget" < } < }, < { < "title": "entityInTypes", < "type": "action", < "name": "entityInTypes", < "parameters": { < "entity": "newTarget", < "types": [ < "player" < ] < } < }, < { < "title": "inverter", < "type": "decorator", < "name": "inverter", < "parameters": {}, < "child": { < "title": "listContains", < "type": "action", < "name": "listContains", < "parameters": { < "list": "attackonsight", < "entity": "newTarget" < } < } < }, < { < "title": "listPush", < "type": "action", < "name": "listPush", < "parameters": { < "list": "attackonsight", < "entity": "newTarget" < } < } < ] < } < }, < { < "title": "listGet", < "type": "action", < "name": "listGet", < "parameters": { < "list": "targets" < }, < "output": { < "entity": "target" < } < } < ] < }, < { < "title": "sequence", < "type": "composite", < "name": "sequence", < "parameters": { < "type": "sliding", < "state": "off", < "fromEntity": "attackTarget", < "toEntity": "fleeTarget" < }, < "children": [ < { < "title": "filter", < "type": "decorator", < "name": "filter", < "parameters": { < "list": "targets", < "type": "entity" < }, < "child": { < "title": "sequence", < "type": "composite", < "name": "sequence", < "parameters": { < "type": "sliding", < "state": "off", < "fromEntity": "attackTarget", < "toEntity": "fleeTarget" < }, < "children": [ < { < "title": "entityExists", < "type": "action", < "name": "entityExists", < "parameters": { < "entity": "filterItem" < } < }, < { < "title": "entityInRange", < "type": "action", < "name": "entityInRange", < "parameters": { < "entity": "filterItem", < "range": "" --- > "list": "newTargets", > "entity": "filterItem" > } > } > ] > } > } > ] 547a426,434 > ] > }, > { > "title": "filter", > "type": "decorator", > "name": "filter", > "parameters": { > "list": "newTargets", > "type": "entity" 549,550c436,437 < { < "title": "selector", --- > "child": { > "title": "sequence", 552,553c439,445 < "name": "selector", < "parameters": {}, --- > "name": "sequence", > "parameters": { > "type": "sliding", > "state": "off", > "fromEntity": "attackTarget", > "toEntity": "fleeTarget" > }, 556c448 < "title": "entityInSight", --- > "title": "isValidTarget", 558c450 < "name": "entityInSight", --- > "name": "isValidTarget", 563a456,470 > "title": "inverter", > "type": "decorator", > "name": "inverter", > "parameters": {}, > "child": { > "title": "listContains", > "type": "action", > "name": "listContains", > "parameters": { > "list": "targets", > "entity": "filterItem" > } > } > }, > { 569c476 < "title": "listPush", --- > "title": "listPushBack", 571c478 < "name": "listPush", --- > "name": "listPushBack", 573,574c480,481 < "list": "outOfSight", < "entity": "filterItem" --- > "entity": "filterItem", > "list": "targets" 580,606d486 < ] < } < }, < { < "title": "listGet", < "type": "action", < "name": "listGet", < "parameters": { < "list": "targets" < }, < "output": { < "entity": "target" < } < }, < { < "title": "succeeder", < "type": "decorator", < "name": "succeeder", < "parameters": {}, < "child": { < "title": "cooldown", < "type": "decorator", < "name": "cooldown", < "parameters": { < "cooldown": 3, < "onFail": false, < "onSuccess": true 608,609c488,551 < "child": { < "title": "broadcastNotification", --- > { > "title": "succeeder", > "type": "decorator", > "name": "succeeder", > "parameters": {}, > "child": { > "title": "sequence", > "type": "composite", > "name": "sequence", > "parameters": { > "type": "sliding", > "state": "off", > "fromEntity": "attackTarget", > "toEntity": "fleeTarget" > }, > "children": [ > { > "title": "isValidTarget", > "type": "action", > "name": "isValidTarget", > "parameters": { > "entity": "newTarget" > } > }, > { > "title": "entityInTypes", > "type": "action", > "name": "entityInTypes", > "parameters": { > "entity": "newTarget", > "types": [ > "player" > ] > } > }, > { > "title": "inverter", > "type": "decorator", > "name": "inverter", > "parameters": {}, > "child": { > "title": "listContains", > "type": "action", > "name": "listContains", > "parameters": { > "list": "attackonsight", > "entity": "newTarget" > } > } > }, > { > "title": "listPush", > "type": "action", > "name": "listPush", > "parameters": { > "list": "attackonsight", > "entity": "newTarget" > } > } > ] > } > }, > { > "title": "listGet", 611c553 < "name": "broadcastNotification", --- > "name": "listGet", 613,619c555,558 < "position": "self", < "range": 40, < "entityTypes": [ < "npc" < ], < "type": "attack", < "target": "target" --- > "list": "targets" > }, > "output": { > "entity": "target" 622,634c561,562 < } < } < ] < }, < { < "title": "parallel", < "type": "composite", < "name": "parallel", < "parameters": { < "fail": 1, < "success": -1 < }, < "children": [ --- > ] > }, 651c579 < "list": "outOfSight", --- > "list": "targets", 689,699c617,621 < "title": "inverter", < "type": "decorator", < "name": "inverter", < "parameters": {}, < "child": { < "title": "entityInSight", < "type": "action", < "name": "entityInSight", < "parameters": { < "entity": "filterItem" < } --- > "title": "entityInSight", > "type": "action", > "name": "entityInSight", > "parameters": { > "entity": "filterItem" 708c630 < "title": "listPushBack", --- > "title": "listPush", 710c632 < "name": "listPushBack", --- > "name": "listPush", 712,713c634,635 < "entity": "filterItem", < "list": "targets" --- > "list": "outOfSight", > "entity": "filterItem" 723,725c645,658 < "title": "selector", < "type": "composite", < "name": "selector", --- > "title": "listGet", > "type": "action", > "name": "listGet", > "parameters": { > "list": "targets" > }, > "output": { > "entity": "target" > } > }, > { > "title": "succeeder", > "type": "decorator", > "name": "succeeder", 727,737c660,667 < "children": [ < { < "title": "listGet", < "type": "action", < "name": "listGet", < "parameters": { < "list": "outOfSight" < }, < "output": { < "entity": "target" < } --- > "child": { > "title": "cooldown", > "type": "decorator", > "name": "cooldown", > "parameters": { > "cooldown": 3, > "onFail": false, > "onSuccess": true 739,740c669,670 < { < "title": "listGet", --- > "child": { > "title": "broadcastNotification", 742c672 < "name": "listGet", --- > "name": "broadcastNotification", 744,747c674,680 < "list": "targets" < }, < "output": { < "entity": "target" --- > "position": "self", > "range": 40, > "entityTypes": [ > "npc" > ], > "type": "attack", > "target": "target" 750c683 < ] --- > } 755c688 < "title": "sequence", --- > "title": "parallel", 757c690 < "name": "sequence", --- > "name": "parallel", 759,762c692,693 < "type": "sliding", < "state": "off", < "fromEntity": "attackTarget", < "toEntity": "fleeTarget" --- > "fail": 1, > "success": -1 766,768c697,699 < "title": "timer", < "type": "action", < "name": "timer", --- > "title": "sequence", > "type": "composite", > "name": "sequence", 770,771c701,813 < "time": 10 < } --- > "type": "sliding", > "state": "off", > "fromEntity": "attackTarget", > "toEntity": "fleeTarget" > }, > "children": [ > { > "title": "filter", > "type": "decorator", > "name": "filter", > "parameters": { > "list": "outOfSight", > "type": "entity" > }, > "child": { > "title": "sequence", > "type": "composite", > "name": "sequence", > "parameters": { > "type": "sliding", > "state": "off", > "fromEntity": "attackTarget", > "toEntity": "fleeTarget" > }, > "children": [ > { > "title": "entityExists", > "type": "action", > "name": "entityExists", > "parameters": { > "entity": "filterItem" > } > }, > { > "title": "entityInRange", > "type": "action", > "name": "entityInRange", > "parameters": { > "entity": "filterItem", > "range": "" > } > }, > { > "title": "selector", > "type": "composite", > "name": "selector", > "parameters": {}, > "children": [ > { > "title": "inverter", > "type": "decorator", > "name": "inverter", > "parameters": {}, > "child": { > "title": "entityInSight", > "type": "action", > "name": "entityInSight", > "parameters": { > "entity": "filterItem" > } > } > }, > { > "title": "failer", > "type": "decorator", > "name": "failer", > "parameters": {}, > "child": { > "title": "listPushBack", > "type": "action", > "name": "listPushBack", > "parameters": { > "entity": "filterItem", > "list": "targets" > } > } > } > ] > } > ] > } > }, > { > "title": "selector", > "type": "composite", > "name": "selector", > "parameters": {}, > "children": [ > { > "title": "listGet", > "type": "action", > "name": "listGet", > "parameters": { > "list": "outOfSight" > }, > "output": { > "entity": "target" > } > }, > { > "title": "listGet", > "type": "action", > "name": "listGet", > "parameters": { > "list": "targets" > }, > "output": { > "entity": "target" > } > } > ] > } > ] 774,776c816,818 < "title": "listClear", < "type": "action", < "name": "listClear", --- > "title": "sequence", > "type": "composite", > "name": "sequence", 778,779c820,842 < "list": "outOfSight" < } --- > "type": "sliding", > "state": "off", > "fromEntity": "attackTarget", > "toEntity": "fleeTarget" > }, > "children": [ > { > "title": "timer", > "type": "action", > "name": "timer", > "parameters": { > "time": 10 > } > }, > { > "title": "listClear", > "type": "action", > "name": "listClear", > "parameters": { > "list": "outOfSight" > } > } > ] behaviors\npc\crew\combat.behavior 4c4,10 < "/scripts/actions/entities.lua" --- > "/scripts/actions/entities.lua", > "/scripts/actions/status.lua", > "/scripts/actions/crew.lua", > "/scripts/actions/movement.lua", > "/scripts/behavior.lua", > "/scripts/actions/time.lua", > "/scripts/actions/dialog.lua" 6c12,16 < "parameters": {}, --- > "parameters": { > "combatBenefitCooldown": 60, > "combatBenefitRange": 3, > "targetDangerRange": 8 > }, 17c27 < "title": "NPC Hostile Tracking", --- > "title": "npctracking", 19c29 < "name": "hostiletracking", --- > "name": "npctracking", 40,43c50,350 < "title": "NPC Combat", < "type": "module", < "name": "npccombat", < "parameters": {} --- > "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 > }, > "children": [ > { > "title": "resourcePercentage", > "type": "action", > "name": "resourcePercentage", > "parameters": { > "percentage": 0.1, > "resource": "health" > } > }, > { > "title": "cooldown", > "type": "decorator", > "name": "cooldown", > "parameters": { > "cooldown": "", > "onFail": false, > "onSuccess": true > }, > "child": { > "title": "sequence", > "type": "composite", > "name": "sequence", > "parameters": { > "type": "sliding", > "state": "off", > "fromEntity": "attackTarget", > "toEntity": "fleeTarget" > }, > "children": [ > { > "title": "hasCombatBenefit", > "type": "action", > "name": "hasCombatBenefit", > "parameters": {} > }, > { > "title": "recruiterEntity", > "type": "action", > "name": "recruiterEntity", > "parameters": {}, > "output": { > "entity": "player" > } > }, > { > "title": "entityPosition", > "type": "action", > "name": "entityPosition", > "parameters": { > "entity": "target" > }, > "output": { > "position": "targetPosition" > } > }, > { > "title": "entityInRange", > "type": "action", > "name": "entityInRange", > "parameters": { > "entity": "player", > "range": "", > "position": "targetPosition" > } > }, > { > "title": "group", > "type": "decorator", > "name": "group", > "parameters": { > "goal": "player", > "goalType": "entity", > "groupId": "combatBenefits", > "maxMembers": 5, > "minMembers": 1, > "position": "self" > }, > "child": { > "title": "task", > "type": "decorator", > "name": "task", > "parameters": { > "groupId": "combatBenefits", > "taskId": "benefitGiver", > "minMembers": 1, > "maxMembers": 1 > }, > "child": { > "title": "sequence", > "type": "composite", > "name": "sequence", > "parameters": { > "type": "sliding", > "state": "off", > "fromEntity": "attackTarget", > "toEntity": "fleeTarget" > }, > "children": [ > { > "title": "succeeder", > "type": "decorator", > "name": "succeeder", > "parameters": {}, > "child": { > "title": "sequence", > "type": "composite", > "name": "sequence", > "parameters": { > "type": "sliding", > "state": "off", > "fromEntity": "attackTarget", > "toEntity": "fleeTarget" > }, > "children": [ > { > "title": "entityHoldingWeapon", > "type": "action", > "name": "entityHoldingWeapon", > "parameters": { > "entity": "self" > } > }, > { > "title": "swapItemSlots", > "type": "action", > "name": "swapItemSlots", > "parameters": {} > } > ] > } > }, > { > "title": "parallel", > "type": "composite", > "name": "parallel", > "parameters": { > "fail": 1, > "success": -1 > }, > "children": [ > { > "title": "entityPosition", > "type": "action", > "name": "entityPosition", > "parameters": { > "entity": "player" > }, > "output": { > "position": "playerPosition" > } > }, > { > "title": "dynamic", > "type": "composite", > "name": "dynamic", > "parameters": {}, > "children": [ > { > "title": "entityInRange", > "type": "action", > "name": "entityInRange", > "parameters": { > "entity": "player", > "range": "", > "position": "self" > } > }, > { > "title": "parallel", > "type": "composite", > "name": "parallel", > "parameters": { > "fail": 1, > "success": -1 > }, > "children": [ > { > "title": "moveToPosition", > "type": "action", > "name": "moveToPosition", > "parameters": { > "avoidLiquid": true, > "failFast": false, > "groundPosition": true, > "maxGround": 5, > "minGround": -5, > "pathOptions": {}, > "position": "playerPosition", > "run": true > }, > "output": { > "direction": "direction", > "pathfinding": "isPathfinding" > } > }, > { > "title": "dynamic", > "type": "composite", > "name": "dynamic", > "parameters": {}, > "children": [ > { > "title": "inverter", > "type": "decorator", > "name": "inverter", > "parameters": {}, > "child": { > "title": "hasFlag", > "type": "action", > "name": "hasFlag", > "parameters": { > "name": "isPathfinding" > } > } > }, > { > "title": "failer", > "type": "decorator", > "name": "failer", > "parameters": {}, > "child": { > "title": "timer", > "type": "action", > "name": "timer", > "parameters": { > "time": 1 > }, > "output": { > "ratio": "" > } > } > } > ] > } > ] > } > ] > } > ] > }, > { > "title": "sayToEntity", > "type": "action", > "name": "sayToEntity", > "parameters": { > "dialogType": "dialog.crewmember.combatBenefit", > "entity": "player", > "tags": {}, > "static": false > } > }, > { > "title": "triggerCombatBenefit", > "type": "action", > "name": "triggerCombatBenefit", > "parameters": {} > }, > { > "title": "timer", > "type": "action", > "name": "timer", > "parameters": { > "time": 2 > } > } > ] > } > } > } > ] > } > } > ] > } > }, > { > "title": "NPC Combat", > "type": "module", > "name": "npccombat", > "parameters": {} > } > ] behaviors\npc\crew\crewmember.behavior 66a67,72 > "title": "crewmember-fieldbenefits", > "type": "module", > "name": "crewmember-fieldbenefits", > "parameters": {} > }, > { behaviors\npc\crew\notifications.behavior 2a3 > "description": "", 280a282,323 > } > ] > }, > { > "title": "sequence", > "type": "composite", > "name": "sequence", > "parameters": { > "type": "sliding", > "state": "off", > "fromEntity": "attackTarget", > "toEntity": "fleeTarget" > }, > "children": [ > { > "title": "receivedNotification", > "type": "action", > "name": "receivedNotification", > "parameters": { > "type": "respawned" > }, > "output": { > "source": "player" > } > }, > { > "title": "faceEntity", > "type": "action", > "name": "faceEntity", > "parameters": { > "entity": "player" > } > }, > { > "title": "sayToEntity", > "type": "action", > "name": "sayToEntity", > "parameters": { > "dialogType": "dialog.crewmember.respawned", > "entity": "player", > "tags": {} > } dungeons\hylotl\hylotloceancity\hylotlbedrooms2.json [TMX file differences are left out for huge size.] dungeons\hylotl\hylotloceancity\hylotlground2.json [TMX file differences are left out for huge size.] dungeons\hylotl\hylotloceancity\hylotloceancity.dungeon 55a56,65 > "name" : "hylotlground3", > "rules" : [ > //[ "maxSpawnCount", [3] ], > // [ "doNotCombineWith", [ "examplepiece" ] ] > [ "ignorePartMaximumRule" ] > ], > "def" : [ "tmx", "hylotlground3.json" ], > "chance" : 1 > }, > { 112a123,132 > "chance" : 1 > }, > { > "name" : "hylotlverticalwindows", > "rules" : [ > //[ "maxSpawnCount", [3] ], > // [ "doNotCombineWith", [ "examplepiece" ] ] > [ "ignorePartMaximumRule" ] > ], > "def" : [ "tmx", "hylotlverticalwindows.json" ], dungeons\hylotl\hylotloceancity\hylotlrestaurant1.json [TMX file differences are left out for huge size.] dungeons\hylotl\hylotloceancity\hylotlroofdojo1.json [TMX file differences are left out for huge size.] dungeons\hylotl\hylotloceancity\hylotlroofgenerator.json [TMX file differences are left out for huge size.] dungeons\hylotl\hylotloceancity\hylotlroofgraveyard1.json [TMX file differences are left out for huge size.] dungeons\hylotl\hylotloceancity\hylotlvertical2.json [TMX file differences are left out for huge size.] dungeons\hylotl\hylotloceancity\hylotlvertical3.json [TMX file differences are left out for huge size.] dungeons\missions\glitchmissions\glitchmission1.dungeon 4c4 < "species" : "dummy", --- > "species" : "glitch", 10c10,11 < "maxParts" : 100 --- > "maxParts" : 100, > "protected" : true 12,2157d12 < "tiles" : [ < { < "value" : [255, 0, 220, 255], < "comment" : "magic pinkppp, a no-op value" < }, < { < "value" : [0, 0, 0, 255], < "rules" : [ [ "worldGenMustContainAirBackground" ], [ "allowOverdrawing" ] ], < "brush" : [ [ "clear" ] ] < }, < { < "value" : [120, 120, 120, 255], < "rules" : [ [ "worldGenMustContainAirForeground" ], [ "allowOverdrawing" ] ] < }, < { < "value" : [255, 255, 255, 255], < "rules" : [ [ "worldGenMustContainSolidBackground" ], [ "allowOverdrawing" ] ], < "brush" : [ [ "surface" ] ] < }, < { < "value" : [0, 38, 255, 255], < "comment" : "bright blue, room coupler", < "connector" : true < }, < < { < "value" : [0, 255, 186, 255], < "comment" : "bright aqua, alternate coupler", < "connector" : true < }, < < { < "value" : [168, 255, 0, 255], < "comment" : "bright green, alternate coupler #2", < "connector" : true < }, < < { < "value" : [255, 168, 0, 255], < "comment" : "bright orange, alternate coupler #3", < "connector" : true < }, < < { < "value" : [32, 32, 32, 255], < "comment" : "Empty hole", < "brush" : [ [ "clear" ] ] < }, < < { < "value" : [48, 48, 48, 255], < "comment" : "Empty hole overwritable", < "rules" : [ [ "allowOverdrawing" ] ], < "brush" : [ [ "clear" ] ] < }, < < { < "value" : [128, 128, 128, 255], < "comment" : "Biome tile brush", < "rules" : [ [ "allowOverdrawing" ] ], < "brush" : [ [ "surface" ] ] < }, < < { < "value" : [100, 100, 100, 255], < "comment" : "Biome tile brush non-overwritable", < "brush" : [ [ "surface" ] ] < }, < < { < "value" : [200, 200, 200, 255], < "comment" : "Biome tile background brush", < "brush" : [ [ "clear" ], [ "surfacebackground" ] ] < }, < < { < "value" : [54, 63, 105, 255], < "comment" : "water pool foreground", < "brush" : [ [ "clear" ], [ "liquid", "water" ] ] < }, < < { < "value" : [150, 255, 0, 255], < "comment" : "poison pool foreground", < "brush" : [ [ "clear" ], [ "liquid", "poison" ] ] < }, < < { < "value" : [255, 232, 178, 255], < "comment" : "background main biome block", < "brush" : [ [ "clear" ], [ "surfacebackground", { "variant" : 0 } ] ] < }, < < { < "value" : [255, 222, 178, 255], < "comment" : "overwritable background main biome block", < "rules" : [ [ "allowOverdrawing" ] ], < "brush" : [ [ "clear" ], [ "surfacebackground", { "variant" : 0 } ] ] < }, < < { < "value" : [204, 186, 143, 255], < "comment" : "foreground main biome block", < "brush" : [ [ "surface", { "variant" : 0 } ] ] < }, < < { < "value" : [204, 176, 143, 255], < "comment" : "overwritable foreground main biome block", < "rules" : [ [ "allowOverdrawing" ] ], < "brush" : [ [ "surface", { "variant" : 0 } ] ] < }, < < { < "value" : [178, 232, 255, 255], < "comment" : "background sub biome block #1", < "brush" : [ [ "clear" ], [ "surfacebackground", { "variant" : 1 } ] ] < }, < < { < "value" : [178, 222, 255, 255], < "comment" : "overwritable background sub biome block #1", < "rules" : [ [ "allowOverdrawing" ] ], < "brush" : [ [ "clear" ], [ "surfacebackground", { "variant" : 1 } ] ] < }, < < { < "value" : [143, 186, 204, 255], < "comment" : "foreground sub biome block #1", < "brush" : [ [ "surface", { "variant" : 1 } ] ] < }, < < { < "value" : [143, 176, 204, 255], < "comment" : "overwritable foreground sub biome block #1", < "rules" : [ [ "allowOverdrawing" ] ], < "brush" : [ [ "surface", { "variant" : 1 } ] ] < }, < < { < "value" : [222, 255, 178, 255], < "comment" : "background sub biome block #2", < "brush" : [ [ "clear" ], [ "surfacebackground", { "variant" : 2 } ] ] < }, < < { < "value" : [222, 245, 178, 255], < "comment" : "overwritable background sub biome block #2", < "rules" : [ [ "allowOverdrawing" ] ], < "brush" : [ [ "clear" ], [ "surfacebackground", { "variant" : 2 } ] ] < }, < < { < "value" : [177, 204, 143, 255], < "comment" : "foreground sub biome block #2", < "brush" : [ [ "surface", { "variant" : 2 } ] ] < }, < < { < "value" : [177, 194, 143, 255], < "comment" : "overwritable foreground sub biome block #2", < "rules" : [ [ "allowOverdrawing" ] ], < "brush" : [ [ "surface", { "variant" : 2 } ] ] < }, < < { < "value" : [255, 0, 0, 255], < "comment" : "wire #1 Red", < "brush" : [ [ "wire", { "group" : "group1", "local" : true } ] ] < }, < < { < "value" : [0, 255, 0, 255], < "comment" : "wire #2 Green", < "brush" : [ [ "wire", { "group" : "group2", "local" : true } ] ] < }, < < { < "value" : [0, 0, 255, 255], < "comment" : "wire #3 Blue", < "brush" : [ [ "wire", { "group" : "group3", "local" : true } ] ] < }, < < { < "value" : [26, 77, 0, 255], < "comment" : "biome tree", < "rules" : [ [ "allowOverdrawing" ] ], < "brush" : [ [ "biometree" ] ] < }, < < { < "value" : [34, 102, 0, 255], < "comment" : "biome flora", < "rules" : [ [ "allowOverdrawing" ] ], < "brush" : [ [ "biomeitems" ] ] < }, < < { < "value" : [85, 255, 0, 255], < "comment" : "Player Spawn", < "brush" : [ [ "playerstart" ] ] < }, < < { < "value" : [55, 140, 140, 255], < "comment" : "background castlewalls1", < "brush" : [ [ "clear" ], [ "back", "castlewalls1" ] ] < }, < < { < "value" : [40, 102, 102, 255], < "comment" : "background castlewalls1 overwritable", < "rules" : [ [ "allowOverdrawing" ] ], < "brush" : [ [ "clear" ], [ "back", "castlewalls1" ] ] < }, < < { < "value" : [85, 217, 217, 255], < "comment" : "foreground castlewalls1", < "brush" : [ [ "clear" ], [ "back", "castlewalls1" ], [ "front", "castlewalls1" ] ] < }, < < { < "value" : [70, 179, 179, 255], < "comment" : "foreground castlewalls1 overwritable", < "rules" : [ [ "allowOverdrawing" ] ], < "brush" : [ [ "clear" ], [ "back", "castlewalls1" ], [ "front", "castlewalls1" ] ] < }, < < { < "value" : [55, 63, 140, 255], < "comment" : "background castlewalls2", < "brush" : [ [ "clear" ], [ "back", "castlewalls2" ] ] < }, < < { < "value" : [40, 46, 102, 255], < "comment" : "background castlewalls2 overwritable", < "rules" : [ [ "allowOverdrawing" ] ], < "brush" : [ [ "clear" ], [ "back", "castlewalls2" ] ] < }, < < { < "value" : [85, 98, 217, 255], < "comment" : "foreground castlewalls2", < "brush" : [ [ "clear" ], [ "back", "castlewalls2" ], [ "front", "castlewalls2" ] ] < }, < < { < "value" : [70, 81, 179, 255], < "comment" : "foreground castlewalls2 overwritable", < "rules" : [ [ "allowOverdrawing" ] ], < "brush" : [ [ "clear" ], [ "back", "castlewalls2" ], [ "front", "castlewalls2" ] ] < }, < < { < "value" : [140, 55, 55, 255], < "comment" : "background rooftiles", < "brush" : [ [ "clear" ], [ "back", "rooftiles" ] ] < }, < < { < "value" : [102, 40, 40, 255], < "comment" : "background rooftiles overwritable", < "rules" : [ [ "allowOverdrawing" ] ], < "brush" : [ [ "clear" ], [ "back", "rooftiles" ] ] < }, < < { < "value" : [217, 85, 85, 255], < "comment" : "foreground rooftiles", < "brush" : [ [ "clear" ], [ "back", "rooftiles" ], [ "front", "rooftiles" ] ] < }, < < { < "value" : [179, 70, 70, 255], < "comment" : "foreground rooftiles overwritable", < "rules" : [ [ "allowOverdrawing" ] ], < "brush" : [ [ "clear" ], [ "back", "rooftiles" ], [ "front", "rooftiles" ] ] < }, < < { < "value" : [166, 140, 65, 255], < "comment" : "background darkwood", < "brush" : [ [ "clear" ], [ "back", "darkwood" ] ] < }, < < { < "value" : [217, 184, 85, 255], < "comment" : "foreground darkwood", < "brush" : [ [ "clear" ], [ "back", "darkwood" ], [ "front", "darkwood" ] ] < }, < < { < "value" : [98, 166, 65, 255], < "comment" : "background bookpiles", < "rules" : [ [ "allowOverdrawing" ] ], < "brush" : [ [ "clear" ], [ "back", "bookpiles" ] ] < }, < < { < "value" : [129, 217, 85, 255], < "comment" : "foreground bookpiles", < "brush" : [ [ "clear" ], [ "front", "bookpiles" ] ] < }, < < { < "value" : [117, 65, 166, 255], < "comment" : "background bars", < "rules" : [ [ "allowOverdrawing" ] ], < "brush" : [ [ "clear" ], [ "back", "bars" ] ] < }, < < { < "value" : [153, 85, 217, 255], < "comment" : "foreground bars", < "brush" : [ [ "clear" ], [ "front", "bars" ] ] < }, < < { < "value" : [166, 89, 65, 255], < "comment" : "background crosshatch", < "rules" : [ [ "allowOverdrawing" ] ], < "brush" : [ [ "clear" ], [ "back", "crosshatch" ] ] < }, < < { < "value" : [217, 115, 85, 255], < "comment" : "foreground crosshatch", < "brush" : [ [ "clear" ], [ "front", "crosshatch" ] ] < }, < < { < "value" : [147, 166, 65, 255], < "comment" : "background fadedblocks", < "brush" : [ [ "clear" ], [ "back", "fadedblocks" ] ] < }, < < { < "value" : [193, 217, 85, 255], < "comment" : "foreground fadedblocks", < "brush" : [ [ "clear" ], [ "back", "fadedblocks" ], [ "front", "fadedblocks" ] ] < }, < < { < "value" : [110, 65, 166, 255], < "comment" : "background woodenwindow1", < "rules" : [ [ "allowOverdrawing" ] ], < "brush" : [ [ "clear" ], [ "back", "woodenwindow1" ] ] < }, < < { < "value" : [144, 85, 217, 255], < "comment" : "foreground woodenwindow1", < "brush" : [ [ "clear" ], [ "front", "woodenwindow1" ] ] < }, < < { < "value" : [166, 54, 31, 255], < "comment" : "background thatch", < "brush" : [ [ "clear" ], [ "back", "thatch" ] ] < }, < < { < "value" : [217, 70, 41, 255], < "comment" : "foreground thatch", < "brush" : [ [ "clear" ], [ "back", "thatch" ], [ "front", "thatch" ] ] < }, < < { < "value" : [166, 115, 65, 255], < "comment" : "background fence", < "rules" : [ [ "allowOverdrawing" ] ], < "brush" : [ [ "clear" ], [ "back", "fence" ] ] < }, < < { < "value" : [217, 151, 85, 255], < "comment" : "foreground fence", < "brush" : [ [ "clear" ], [ "front", "fence" ] ] < }, < < { < "value" : [166, 148, 98, 255], < "comment" : "background dirt", < "brush" : [ [ "clear" ], [ "back", "dirt" ] ] < }, < < { < "value" : [217, 193, 128, 255], < "comment" : "tilled foreground dirt", < "brush" : [ [ "clear" ], [ "back", "dirt" ], [ "front", "dirt", "tilled" ] ] < }, < < { < "value" : [115, 99, 48, 255], < "comment" : "background fullwood1", < "brush" : [ [ "clear" ], [ "back", "fullwood1" ] ] < }, < < { < "value" : [166, 143, 70, 255], < "comment" : "foreground fullwood1", < "brush" : [ [ "clear" ], [ "back", "fullwood1" ], [ "front", "fullwood1" ] ] < }, < < { < "value" : [166, 65, 117, 255], < "comment" : "background sewage", < "brush" : [ [ "clear" ], [ "back", "sewage" ] ] < }, < < { < "value" : [128, 50, 50, 255], < "comment" : "background sewage overwritable", < "rules" : [ [ "allowOverdrawing" ] ], < "brush" : [ [ "clear" ], [ "back", "sewage" ] ] < }, < < { < "value" : [217, 85, 153, 255], < "comment" : "foreground sewage", < "brush" : [ [ "clear" ], [ "back", "sewage" ], [ "front", "sewage" ] ] < }, < < { < "value" : [179, 70, 126, 255], < "comment" : "foreground sewage overwritable", < "rules" : [ [ "allowOverdrawing" ] ], < "brush" : [ [ "clear" ], [ "back", "sewage" ], [ "front", "sewage" ] ] < }, < < { < "value" : [204, 80, 144, 255], < "comment" : "foreground only sewage", < "brush" : [ [ "clear" ], [ "front", "sewage" ] ] < }, < < { < "value" : [155, 166, 65, 255], < "comment" : "background sewerpipe", < "brush" : [ [ "clear" ], [ "back", "sewerpipe" ] ] < }, < < { < "value" : [118, 128, 50, 255], < "comment" : "background sewerpipe overwritable", < "rules" : [ [ "allowOverdrawing" ] ], < "brush" : [ [ "clear" ], [ "back", "sewerpipe" ] ] < }, < < { < "value" : [201, 217, 85, 255], < "comment" : "foreground sewerpipe", < "brush" : [ [ "clear" ], [ "back", "sewerpipe" ], [ "front", "sewerpipe" ] ] < }, < < { < "value" : [166, 179, 70, 255], < "comment" : "foreground sewerpipe overwritable", < "rules" : [ [ "allowOverdrawing" ] ], < "brush" : [ [ "clear" ], [ "back", "sewerpipe" ], [ "front", "sewerpipe" ] ] < }, < < { < "value" : [189, 204, 80, 255], < "comment" : "foreground only sewerpipe", < "brush" : [ [ "clear" ], [ "front", "sewerpipe" ] ] < }, < < { < "value" : [65, 166, 71, 255], < "comment" : "background plantmatter", < "brush" : [ [ "clear" ], [ "back", "plantmatter" ] ] < }, < < { < "value" : [85, 217, 94, 255], < "comment" : "foreground plantmatter", < "brush" : [ [ "clear" ], [ "back", "plantmatter" ], [ "front", "plantmatter" ] ] < }, < < { < "value" : [80, 204, 88, 255], < "comment" : "foreground only plantmatter", < "brush" : [ [ "clear" ], [ "front", "plantmatter" ] ] < }, < < { < "value" : [179, 141, 89, 255], < "comment" : "stairs/platform", < "brush" : [ [ "clear" ], [ "front", "platform" ] ] < }, < < { < "value" : [179, 126, 89, 255], < "comment" : "wooden stairs/platform", < "brush" : [ [ "clear" ], [ "front", "woodenplatform" ] ] < }, < < { < "value" : [179, 112, 89, 255], < "comment" : "copper stairs/platform", < "brush" : [ [ "clear" ], [ "front", "copperplatform" ] ] < }, < < { < "value" : [26, 255, 217, 255], < "comment" : "anvil facing left", < "brush" : [ [ "clear" ], [ "object", "anvil", { "direction" : "left" } ] ] < }, < < { < "value" : [24, 242, 206, 255], < "comment" : "anvil facing right", < "brush" : [ [ "clear" ], [ "object", "anvil", { "direction" : "right" } ] ] < }, < < { < "value" : [255, 102, 26, 255], < "comment" : "ballandchain facing left", < "brush" : [ [ "clear" ], [ "object", "ballandchain", { "direction" : "left" } ] ] < }, < < { < "value" : [242, 97, 24, 255], < "comment" : "ballandchain facing right", < "brush" : [ [ "clear" ], [ "object", "ballandchain", { "direction" : "right" } ] ] < }, < < { < "value" : [255, 106, 26, 255], < "comment" : "bannermedievallarge", < "brush" : [ [ "clear" ], [ "object", "bannermedievallarge" ] ] < }, < < { < "value" : [255, 110, 26, 255], < "comment" : "bannermedievalsmall", < "brush" : [ [ "clear" ], [ "object", "bannermedievalsmall" ] ] < }, < < { < "value" : [255, 0, 85, 255], < "comment" : "barrel", < "brush" : [ [ "clear" ], [ "object", "barrel", { "parameters" : { "treasurePools" : [ "naturalcaveTreasure" ] } } ] ] < }, < < { < "value" : [255, 0, 77, 255], < "comment" : "barrellarge", < "brush" : [ [ "clear" ], [ "object", "barrellarge", { "parameters" : { "treasurePools" : [ "naturalcaveTreasureLarge" ] } } ] ] < }, < < { < "value" : [255, 113, 26, 255], < "comment" : "battlestandard facing left", < "brush" : [ [ "clear" ], [ "object", "battlestandard", { "direction" : "left" } ] ] < }, < < { < "value" : [242, 108, 24, 255], < "comment" : "battlestandard facing right", < "brush" : [ [ "clear" ], [ "object", "battlestandard", { "direction" : "right" } ] ] < }, < < { < "value" : [179, 119, 89, 255], < "comment" : "castledoor", < "brush" : [ [ "clear" ], [ "object", "castledoor", { "direction" : "left" } ] ] < }, < < { < "value" : [173, 116, 87, 255], < "comment" : "castledoor", < "brush" : [ [ "clear" ], [ "object", "castledoor", { "direction" : "right" } ] ] < }, < < { < "value" : [179, 134, 89, 255], < "comment" : "castledungeondoor", < "brush" : [ [ "clear" ], [ "object", "castledungeondoor" ] ] < }, < < { < "value" : [179, 149, 89, 255], < "comment" : "castlehiddendoor", < "brush" : [ [ "clear" ], [ "object", "castlehiddendoor" ] ] < }, < < { < "value" : [140, 255, 26, 255], < "comment" : "castleswitch facing left", < "brush" : [ [ "clear" ], [ "object", "castleswitch", { "direction" : "left" } ] ] < }, < < { < "value" : [133, 242, 24, 255], < "comment" : "castleswitch facing right", < "brush" : [ [ "clear" ], [ "object", "castleswitch", { "direction" : "right" } ] ] < }, < < { < "value" : [255, 117, 26, 255], < "comment" : "chessbishop facing left", < "brush" : [ [ "clear" ], [ "object", "chessbishop", { "direction" : "left" } ] ] < }, < < { < "value" : [242, 111, 24, 255], < "comment" : "chessbishop facing right", < "brush" : [ [ "clear" ], [ "object", "chessbishop", { "direction" : "right" } ] ] < }, < < { < "value" : [255, 121, 26, 255], < "comment" : "chessking facing left", < "brush" : [ [ "clear" ], [ "object", "chessking", { "direction" : "left" } ] ] < }, < < { < "value" : [242, 115, 24, 255], < "comment" : "chessking facing right", < "brush" : [ [ "clear" ], [ "object", "chessking", { "direction" : "right" } ] ] < }, < < { < "value" : [255, 125, 26, 255], < "comment" : "chessknight facing left", < "brush" : [ [ "clear" ], [ "object", "chessknight", { "direction" : "left" } ] ] < }, < < { < "value" : [242, 119, 24, 255], < "comment" : "chessknight facing right", < "brush" : [ [ "clear" ], [ "object", "chessknight", { "direction" : "right" } ] ] < }, < < { < "value" : [255, 129, 26, 255], < "comment" : "chesspawn facing left", < "brush" : [ [ "clear" ], [ "object", "chesspawn", { "direction" : "left" } ] ] < }, < < { < "value" : [242, 122, 24, 255], < "comment" : "chesspawn facing right", < "brush" : [ [ "clear" ], [ "object", "chesspawn", { "direction" : "right" } ] ] < }, < < { < "value" : [255, 133, 26, 255], < "comment" : "chessqueen facing left", < "brush" : [ [ "clear" ], [ "object", "chessqueen", { "direction" : "left" } ] ] < }, < < { < "value" : [242, 126, 24, 255], < "comment" : "chessqueen facing right", < "brush" : [ [ "clear" ], [ "object", "chessqueen", { "direction" : "right" } ] ] < }, < < { < "value" : [255, 136, 26, 255], < "comment" : "chessrook facing left", < "brush" : [ [ "clear" ], [ "object", "chessrook", { "direction" : "left" } ] ] < }, < < { < "value" : [242, 130, 24, 255], < "comment" : "chessrook facing right", < "brush" : [ [ "clear" ], [ "object", "chessrook", { "direction" : "right" } ] ] < }, < < { < "value" : [255, 140, 26, 255], < "comment" : "crossroadssign facing left", < "brush" : [ [ "clear" ], [ "object", "crossroadssign", { "direction" : "left" } ] ] < }, < < { < "value" : [242, 133, 24, 255], < "comment" : "crossroadssign facing right", < "brush" : [ [ "clear" ], [ "object", "crossroadssign", { "direction" : "right" } ] ] < }, < < { < "value" : [255, 144, 26, 255], < "comment" : "fireplacetools facing left", < "brush" : [ [ "clear" ], [ "object", "fireplacetools", { "direction" : "left" } ] ] < }, < < { < "value" : [242, 137, 24, 255], < "comment" : "fireplacetools facing right", < "brush" : [ [ "clear" ], [ "object", "fireplacetools", { "direction" : "right" } ] ] < }, < < { < "value" : [255, 148, 26, 255], < "comment" : "glitchianman", < "brush" : [ [ "clear" ], [ "object", "glitchianman" ] ] < }, < < { < "value" : [255, 152, 26, 255], < "comment" : "glitchspeare", < "brush" : [ [ "clear" ], [ "object", "glitchspeare" ] ] < }, < < { < "value" : [255, 156, 26, 255], < "comment" : "hourglass", < "brush" : [ [ "clear" ], [ "object", "hourglass" ] ] < }, < < { < "value" : [255, 159, 26, 255], < "comment" : "juicekeg facing left", < "brush" : [ [ "clear" ], [ "object", "juicekeg", { "direction" : "left" } ] ] < }, < < { < "value" : [242, 151, 24, 255], < "comment" : "juicekeg facing right", < "brush" : [ [ "clear" ], [ "object", "juicekeg", { "direction" : "right" } ] ] < }, < < { < "value" : [255, 163, 26, 255], < "comment" : "largebell facing left", < "brush" : [ [ "clear" ], [ "object", "largebell", { "direction" : "left" } ] ] < }, < < { < "value" : [242, 155, 24, 255], < "comment" : "largebell facing right", < "brush" : [ [ "clear" ], [ "object", "largebell", { "direction" : "right" } ] ] < }, < < { < "value" : [179, 138, 89, 255], < "comment" : "largecastledoor", < "brush" : [ [ "clear" ], [ "object", "largecastledoor", { "direction" : "left" } ] ] < }, < < { < "value" : [166, 128, 83, 255], < "comment" : "largecastledoor", < "brush" : [ [ "clear" ], [ "object", "largecastledoor", { "direction" : "right" } ] ] < }, < < { < "value" : [128, 0, 255, 255], < "comment" : "largewoodencrate facing left", < "brush" : [ [ "clear" ], [ "object", "largewoodencrate", { "direction" : "left", "parameters" : { "treasurePools" : [ "naturalcaveTreasureLarge" ] } } ] ] < }, < < { < "value" : [121, 0, 242, 255], < "comment" : "largewoodencrate facing right", < "brush" : [ [ "clear" ], [ "object", "largewoodencrate", { "direction" : "right", "parameters" : { "treasurePools" : [ "naturalcaveTreasureLarge" ] } } ] ] < }, < < { < "value" : [255, 167, 26, 255], < "comment" : "medievalarmor facing left", < "brush" : [ [ "clear" ], [ "object", "medievalarmor", { "direction" : "left" } ] ] < }, < < { < "value" : [242, 159, 24, 255], < "comment" : "medievalarmor facing right", < "brush" : [ [ "clear" ], [ "object", "medievalarmor", { "direction" : "right" } ] ] < }, < < { < "value" : [255, 171, 26, 255], < "comment" : "medievalarmorarmed facing left", < "brush" : [ [ "clear" ], [ "object", "medievalarmorarmed", { "direction" : "left" } ] ] < }, < < { < "value" : [242, 162, 24, 255], < "comment" : "medievalarmorarmed facing right", < "brush" : [ [ "clear" ], [ "object", "medievalarmorarmed", { "direction" : "right" } ] ] < }, < < { < "value" : [111, 255, 38, 255], < "comment" : "medievalarmorswitch facing left", < "brush" : [ [ "clear" ], [ "object", "medievalarmorswitch", { "direction" : "left" } ] ] < }, < < { < "value" : [105, 242, 36, 255], < "comment" : "medievalarmorswitch facing right", < "brush" : [ [ "clear" ], [ "object", "medievalarmorswitch", { "direction" : "right" } ] ] < }, < < { < "value" : [255, 175, 26, 255], < "comment" : "medievalaxedisplay", < "brush" : [ [ "clear" ], [ "object", "medievalaxedisplay" ] ] < }, < < { < "value" : [26, 255, 224, 255], < "comment" : "medievalbed facing left", < "brush" : [ [ "clear" ], [ "object", "medievalbed", { "direction" : "left" } ] ] < }, < < { < "value" : [24, 242, 213, 255], < "comment" : "medievalbed facing right", < "brush" : [ [ "clear" ], [ "object", "medievalbed", { "direction" : "right" } ] ] < }, < < { < "value" : [255, 0, 68, 255], < "comment" : "medievalbookcase facing left", < "brush" : [ [ "clear" ], [ "object", "medievalbookcase", { "direction" : "left", "parameters" : { "treasurePools" : [ "glitchCastleLore" ] } } ] ] < }, < < { < "value" : [242, 0, 65, 255], < "comment" : "medievalbookcase facing right", < "brush" : [ [ "clear" ], [ "object", "medievalbookcase", { "direction" : "right", "parameters" : { "treasurePools" : [ "glitchCastleLore" ] } } ] ] < }, < < { < "value" : [102, 255, 26, 255], < "comment" : "medievalbookcaseswitch facing left", < "brush" : [ [ "clear" ], [ "object", "medievalbookcaseswitch", { "direction" : "left" } ] ] < }, < < { < "value" : [97, 242, 24, 255], < "comment" : "medievalbookcaseswitch facing right", < "brush" : [ [ "clear" ], [ "object", "medievalbookcaseswitch", { "direction" : "right" } ] ] < }, < < { < "value" : [255, 179, 26, 255], < "comment" : "medievalbowl", < "brush" : [ [ "clear" ], [ "object", "medievalbowl" ] ] < }, < < { < "value" : [229, 92, 23, 255], < "comment" : "medievalbucket", < "brush" : [ [ "clear" ], [ "object", "medievalbucket" ] ] < }, < < { < "value" : [255, 0, 60, 255], < "comment" : "medievalcabinet facing left", < "brush" : [ [ "clear" ], [ "object", "medievalcabinet", { "direction" : "left", "parameters" : { "treasurePools" : [ "stimtreasure" ] } } ] ] < }, < < { < "value" : [242, 0, 57, 255], < "comment" : "medievalcabinet facing right", < "brush" : [ [ "clear" ], [ "object", "medievalcabinet", { "direction" : "right", "parameters" : { "treasurePools" : [ "stimtreasure" ] } } ] ] < }, < < { < "value" : [255, 198, 26, 255], < "comment" : "medievalcandle facing left", < "brush" : [ [ "clear" ], [ "object", "medievalcandle", { "direction" : "left" } ] ] < }, < < { < "value" : [242, 188, 24, 255], < "comment" : "medievalcandle facing right", < "brush" : [ [ "clear" ], [ "object", "medievalcandle", { "direction" : "right" } ] ] < }, < < { < "value" : [26, 102, 255, 255], < "comment" : "medievalcellbed facing left", < "brush" : [ [ "clear" ], [ "object", "medievalcellbed", { "direction" : "left" } ] ] < }, < < { < "value" : [24, 97, 242, 255], < "comment" : "medievalcellbed facing right", < "brush" : [ [ "clear" ], [ "object", "medievalcellbed", { "direction" : "right" } ] ] < }, < < { < "value" : [26, 255, 232, 255], < "comment" : "medievalchair facing left", < "brush" : [ [ "clear" ], [ "object", "medievalchair", { "direction" : "left" } ] ] < }, < < { < "value" : [24, 242, 220, 255], < "comment" : "medievalchair facing right", < "brush" : [ [ "clear" ], [ "object", "medievalchair", { "direction" : "right" } ] ] < }, < < { < "value" : [255, 217, 26, 255], < "comment" : "medievalchandelier", < "brush" : [ [ "clear" ], [ "object", "medievalchandelier" ] ] < }, < < { < "value" : [255, 56, 26, 255], < "comment" : "medievalchest facing left", < "brush" : [ [ "clear" ], [ "object", "medievalchest", { "direction" : "left", "parameters" : { "treasurePools" : [ "basicChestTreasure" ] } } ] ] < }, < < { < "value" : [242, 53, 24, 255], < "comment" : "medievalchest facing right", < "brush" : [ [ "clear" ], [ "object", "medievalchest", { "direction" : "right", "parameters" : { "treasurePools" : [ "basicChestTreasure" ] } } ] ] < }, < < { < "value" : [229, 95, 23, 255], < "comment" : "medievalclock facing left", < "brush" : [ [ "clear" ], [ "object", "medievalclock", { "direction" : "left" } ] ] < }, < < { < "value" : [217, 90, 22, 255], < "comment" : "medievalclock facing right", < "brush" : [ [ "clear" ], [ "object", "medievalclock", { "direction" : "right" } ] ] < }, < < { < "value" : [229, 99, 23, 255], < "comment" : "medievalcodex facing left", < "brush" : [ [ "clear" ], [ "object", "medievalcodex", { "direction" : "left" } ] ] < }, < < { < "value" : [217, 93, 22, 255], < "comment" : "medievalcodex facing right", < "brush" : [ [ "clear" ], [ "object", "medievalcodex", { "direction" : "right" } ] ] < }, < < { < "value" : [229, 102, 23, 255], < "comment" : "medievalcup facing left", < "brush" : [ [ "clear" ], [ "object", "medievalcup", { "direction" : "left" } ] ] < }, < < { < "value" : [217, 96, 22, 255], < "comment" : "medievalcup facing right", < "brush" : [ [ "clear" ], [ "object", "medievalcup", { "direction" : "right" } ] ] < }, < < { < "value" : [255, 0, 51, 255], < "comment" : "medievaldesk facing left", < "brush" : [ [ "clear" ], [ "object", "medievaldesk", { "direction" : "left" } ] ] < }, < < { < "value" : [242, 0, 48, 255], < "comment" : "medievaldesk facing right", < "brush" : [ [ "clear" ], [ "object", "medievaldesk", { "direction" : "right" } ] ] < }, < < { < "value" : [26, 83, 255, 255], < "comment" : "medievaldiningtable facing left", < "brush" : [ [ "clear" ], [ "object", "medievaldiningtable", { "direction" : "left" } ] ] < }, < < { < "value" : [24, 79, 242, 255], < "comment" : "medievaldiningtable facing right", < "brush" : [ [ "clear" ], [ "object", "medievaldiningtable", { "direction" : "right" } ] ] < }, < < { < "value" : [149, 0, 255, 255], < "comment" : "medievaldresser facing left", < "brush" : [ [ "clear" ], [ "object", "medievaldresser", { "direction" : "left", "parameters" : { "treasurePools" : [ "stimtreasure" ] } } ] ] < }, < < { < "value" : [141, 0, 242, 255], < "comment" : "medievaldresser facing right", < "brush" : [ [ "clear" ], [ "object", "medievaldresser", { "direction" : "right", "parameters" : { "treasurePools" : [ "stimtreasure" ] } } ] ] < }, < < { < "value" : [255, 236, 26, 255], < "comment" : "medievalfireplace facing left", < "brush" : [ [ "clear" ], [ "object", "medievalfireplace", { "direction" : "left" } ] ] < }, < < { < "value" : [242, 224, 24, 255], < "comment" : "medievalfireplace facing right", < "brush" : [ [ "clear" ], [ "object", "medievalfireplace", { "direction" : "right" } ] ] < }, < < { < "value" : [229, 106, 23, 255], < "comment" : "medievalflagpole facing left", < "brush" : [ [ "clear" ], [ "object", "medievalflagpole", { "direction" : "left" } ] ] < }, < < { < "value" : [217, 100, 22, 255], < "comment" : "medievalflagpole facing right", < "brush" : [ [ "clear" ], [ "object", "medievalflagpole", { "direction" : "right" } ] ] < }, < < { < "value" : [229, 109, 23, 255], < "comment" : "medievalglobe facing left", < "brush" : [ [ "clear" ], [ "object", "medievalglobe", { "direction" : "left" } ] ] < }, < < { < "value" : [217, 103, 22, 255], < "comment" : "medievalglobe facing right", < "brush" : [ [ "clear" ], [ "object", "medievalglobe", { "direction" : "right" } ] ] < }, < < { < "value" : [255, 255, 26, 255], < "comment" : "medievallargecookingpot facing left", < "brush" : [ [ "clear" ], [ "object", "medievallargecookingpot", { "direction" : "left" } ] ] < }, < < { < "value" : [242, 242, 24, 255], < "comment" : "medievallargecookingpot facing right", < "brush" : [ [ "clear" ], [ "object", "medievallargecookingpot", { "direction" : "right" } ] ] < }, < < { < "value" : [229, 112, 23, 255], < "comment" : "medievalmap", < "brush" : [ [ "clear" ], [ "object", "medievalmap" ] ] < }, < < { < "value" : [26, 64, 255, 255], < "comment" : "medievalpedestal facing left", < "brush" : [ [ "clear" ], [ "object", "medievalpedestal", { "direction" : "left" } ] ] < }, < < { < "value" : [24, 61, 242, 255], < "comment" : "medievalpedestal facing right", < "brush" : [ [ "clear" ], [ "object", "medievalpedestal", { "direction" : "right" } ] ] < }, < < { < "value" : [229, 116, 23, 255], < "comment" : "medievalplate", < "brush" : [ [ "clear" ], [ "object", "medievalplate" ] ] < }, < < { < "value" : [133, 255, 26, 255], < "comment" : "medievalpressureplate", < "brush" : [ [ "clear" ], [ "object", "medievalpressureplate" ] ] < }, < < { < "value" : [26, 45, 255, 255], < "comment" : "medievalscaffolding facing left", < "brush" : [ [ "clear" ], [ "object", "medievalscaffolding", { "direction" : "left" } ] ] < }, < < { < "value" : [24, 42, 242, 255], < "comment" : "medievalscaffolding facing right", < "brush" : [ [ "clear" ], [ "object", "medievalscaffolding", { "direction" : "right" } ] ] < }, < < { < "value" : [229, 119, 23, 255], < "comment" : "medievalshelf facing left", < "brush" : [ [ "clear" ], [ "object", "medievalshelf", { "direction" : "left" } ] ] < }, < < { < "value" : [217, 113, 22, 255], < "comment" : "medievalshelf facing right", < "brush" : [ [ "clear" ], [ "object", "medievalshelf", { "direction" : "right" } ] ] < }, < < { < "value" : [229, 119, 23, 255], < "comment" : "medievalshelf facing left", < "brush" : [ [ "clear" ], [ "object", "medievalshelf", { "direction" : "left" } ] ] < }, < < { < "value" : [217, 113, 22, 255], < "comment" : "medievalshelf facing right", < "brush" : [ [ "clear" ], [ "object", "medievalshelf", { "direction" : "right" } ] ] < }, < < { < "value" : [229, 123, 23, 255], < "comment" : "medievalspikes facing left", < "brush" : [ [ "clear" ], [ "object", "medievalspikes", { "direction" : "left" } ] ] < }, < < { < "value" : [217, 116, 22, 255], < "comment" : "medievalspikes facing right", < "brush" : [ [ "clear" ], [ "object", "medievalspikes", { "direction" : "right" } ] ] < }, < < { < "value" : [229, 126, 23, 255], < "comment" : "medievalstock facing left", < "brush" : [ [ "clear" ], [ "object", "medievalstock", { "direction" : "left" } ] ] < }, < < { < "value" : [217, 119, 22, 255], < "comment" : "medievalstock facing right", < "brush" : [ [ "clear" ], [ "object", "medievalstock", { "direction" : "right" } ] ] < }, < < { < "value" : [125, 255, 26, 255], < "comment" : "medievalswitchhidden", < "brush" : [ [ "clear" ], [ "object", "medievalswitchhidden" ] ] < }, < < { < "value" : [117, 255, 26, 255], < "comment" : "medievalswitchlever facing left", < "brush" : [ [ "clear" ], [ "object", "medievalswitchlever", { "direction" : "left" } ] ] < }, < < { < "value" : [111, 242, 24, 255], < "comment" : "medievalswitchlever facing right", < "brush" : [ [ "clear" ], [ "object", "medievalswitchlever", { "direction" : "right" } ] ] < }, < < { < "value" : [110, 255, 26, 255], < "comment" : "medievalswitchshackle facing left", < "brush" : [ [ "clear" ], [ "object", "medievalswitchshackle", { "direction" : "left" } ] ] < }, < < { < "value" : [104, 242, 24, 255], < "comment" : "medievalswitchshackle facing right", < "brush" : [ [ "clear" ], [ "object", "medievalswitchshackle", { "direction" : "right" } ] ] < }, < < { < "value" : [229, 130, 23, 255], < "comment" : "medievalsworddisplay facing left", < "brush" : [ [ "clear" ], [ "object", "medievalsworddisplay", { "direction" : "left" } ] ] < }, < < { < "value" : [217, 122, 22, 255], < "comment" : "medievalsworddisplay facing right", < "brush" : [ [ "clear" ], [ "object", "medievalsworddisplay", { "direction" : "right" } ] ] < }, < < { < "value" : [26, 26, 255, 255], < "comment" : "medievaltable facing left", < "brush" : [ [ "clear" ], [ "object", "medievaltable", { "direction" : "left" } ] ] < }, < < { < "value" : [24, 24, 242, 255], < "comment" : "medievaltable facing right", < "brush" : [ [ "clear" ], [ "object", "medievaltable", { "direction" : "right" } ] ] < }, < < { < "value" : [26, 255, 240, 255], < "comment" : "medievaltoilet facing left", < "brush" : [ [ "clear" ], [ "object", "medievaltoilet", { "direction" : "left" } ] ] < }, < < { < "value" : [24, 242, 228, 255], < "comment" : "medievaltoilet facing right", < "brush" : [ [ "clear" ], [ "object", "medievaltoilet", { "direction" : "right" } ] ] < }, < < { < "value" : [236, 255, 26, 255], < "comment" : "medievaltorch", < "brush" : [ [ "clear" ], [ "object", "medievaltorch" ] ] < }, < < { < "value" : [229, 133, 23, 255], < "comment" : "medievalweaponrack facing left", < "brush" : [ [ "clear" ], [ "object", "medievalweaponrack", { "direction" : "left" } ] ] < }, < < { < "value" : [217, 126, 22, 255], < "comment" : "medievalweaponrack facing right", < "brush" : [ [ "clear" ], [ "object", "medievalweaponrack", { "direction" : "right" } ] ] < }, < < { < "value" : [229, 137, 23, 255], < "comment" : "persistenceofpixels", < "brush" : [ [ "clear" ], [ "object", "persistenceofpixels" ] ] < }, < < { < "value" : [26, 255, 247, 255], < "comment" : "royalbed facing left", < "brush" : [ [ "clear" ], [ "object", "royalbed", { "direction" : "left" } ] ] < }, < < { < "value" : [24, 242, 235, 255], < "comment" : "royalbed facing right", < "brush" : [ [ "clear" ], [ "object", "royalbed", { "direction" : "right" } ] ] < }, < < { < "value" : [255, 71, 26, 255], < "comment" : "royalbookcase facing left", < "brush" : [ [ "clear" ], [ "object", "royalbookcase", { "direction" : "left", "parameters" : { "treasurePools" : [ "glitchCastleLore" ] } } ] ] < }, < < { < "value" : [242, 68, 24, 255], < "comment" : "royalbookcase facing right", < "brush" : [ [ "clear" ], [ "object", "royalbookcase", { "direction" : "right", "parameters" : { "treasurePools" : [ "glitchCastleLore" ] } } ] ] < }, < < { < "value" : [255, 79, 26, 255], < "comment" : "royalcabinet facing left", < "brush" : [ [ "clear" ], [ "object", "royalcabinet", { "direction" : "left", "parameters" : { "treasurePools" : [ "glitchCastleLore" ] } } ] ] < }, < < { < "value" : [242, 75, 24, 255], < "comment" : "royalcabinet facing right", < "brush" : [ [ "clear" ], [ "object", "royalcabinet", { "direction" : "right", "parameters" : { "treasurePools" : [ "glitchCastleLore" ] } } ] ] < }, < < { < "value" : [255, 204, 51, 255], < "comment" : "royalcandles", < "brush" : [ [ "clear" ], [ "object", "royalcandles" ] ] < }, < < { < "value" : [229, 140, 23, 255], < "comment" : "royalchalice facing left", < "brush" : [ [ "clear" ], [ "object", "royalchalice", { "direction" : "left" } ] ] < }, < < { < "value" : [217, 132, 22, 255], < "comment" : "royalchalice facing right", < "brush" : [ [ "clear" ], [ "object", "royalchalice", { "direction" : "right" } ] ] < }, < < { < "value" : [255, 87, 26, 255], < "comment" : "royalchest facing left", < "brush" : [ [ "clear" ], [ "object", "royalchest", { "direction" : "left", "parameters" : { "treasurePools" : [ "royaltreasure" ] } } ] ] < }, < < { < "value" : [242, 82, 24, 255], < "comment" : "royalchest facing right", < "brush" : [ [ "clear" ], [ "object", "royalchest", { "direction" : "right", "parameters" : { "treasurePools" : [ "royaltreasure" ] } } ] ] < }, < < { < "value" : [255, 0, 42, 255], < "comment" : "royaldesk facing left", < "brush" : [ [ "clear" ], [ "object", "royaldesk", { "direction" : "left", "parameters" : { "treasurePools" : [ "glitchCastleLore" ] } } ] ] < }, < < { < "value" : [242, 0, 40, 255], < "comment" : "royaldesk facing right", < "brush" : [ [ "clear" ], [ "object", "royaldesk", { "direction" : "right", "parameters" : { "treasurePools" : [ "glitchCastleLore" ] } } ] ] < }, < < { < "value" : [26, 255, 255, 255], < "comment" : "royalthrone facing left", < "brush" : [ [ "clear" ], [ "object", "royalthrone", { "direction" : "left" } ] ] < }, < < { < "value" : [24, 242, 242, 255], < "comment" : "royalthrone facing right", < "brush" : [ [ "clear" ], [ "object", "royalthrone", { "direction" : "right" } ] ] < }, < < { < "value" : [26, 247, 255, 255], < "comment" : "royaltoilet facing left", < "brush" : [ [ "clear" ], [ "object", "royaltoilet", { "direction" : "left" } ] ] < }, < < { < "value" : [24, 235, 242, 255], < "comment" : "royaltoilet facing right", < "brush" : [ [ "clear" ], [ "object", "royaltoilet", { "direction" : "right" } ] ] < }, < < { < "value" : [178, 26, 255, 255], < "comment" : "smallwoodencrate facing left", < "brush" : [ [ "clear" ], [ "object", "smallwoodencrate", { "direction" : "left", "parameters" : { "treasurePools" : [ "naturalcaveTreasure" ] } } ] ] < }, < < { < "value" : [170, 24, 242, 255], < "comment" : "smallwoodencrate facing right", < "brush" : [ [ "clear" ], [ "object", "smallwoodencrate", { "direction" : "right", "parameters" : { "treasurePools" : [ "naturalcaveTreasure" ] } } ] ] < }, < < { < "value" : [229, 161, 23, 255], < "comment" : "wallshackles facing left", < "brush" : [ [ "clear" ], [ "object", "wallshackles", { "direction" : "left" } ] ] < }, < < { < "value" : [217, 152, 22, 255], < "comment" : "wallshackles facing right", < "brush" : [ [ "clear" ], [ "object", "wallshackles", { "direction" : "right" } ] ] < }, < < { < "value" : [229, 143, 23, 255], < "comment" : "wickerbasket1", < "brush" : [ [ "clear" ], [ "object", "wickerbasket1" ] ] < }, < < { < "value" : [229, 147, 23, 255], < "comment" : "wickerbasket2", < "brush" : [ [ "clear" ], [ "object", "wickerbasket2" ] ] < }, < < { < "value" : [229, 150, 23, 255], < "comment" : "wickerbasket3", < "brush" : [ [ "clear" ], [ "object", "wickerbasket3" ] ] < }, < < { < "value" : [229, 154, 23, 255], < "comment" : "wickerbasket4", < "brush" : [ [ "clear" ], [ "object", "wickerbasket4" ] ] < }, < < { < "value" : [229, 157, 23, 255], < "comment" : "wickerbasket5", < "brush" : [ [ "clear" ], [ "object", "wickerbasket5" ] ] < }, < < { < "value" : [166, 110, 83, 255], < "comment" : "castlehiddentrapdoor", < "brush" : [ [ "clear" ], [ "object", "castlehiddentrapdoor" ] ] < }, < < { < "value" : [204, 143, 20, 255], < "comment" : "woodsupport", < "brush" : [ [ "clear" ], [ "object", "woodsupport" ] ] < }, < < { < "value" : [204, 82, 20, 255], < "comment" : "burlapsack facing left", < "brush" : [ [ "clear" ], [ "object", "burlapsack", { "direction" : "left" } ] ] < }, < < { < "value" : [191, 77, 19, 255], < "comment" : "burlapsack facing right", < "brush" : [ [ "clear" ], [ "object", "burlapsack", { "direction" : "right" } ] ] < }, < < { < "value" : [204, 85, 20, 255], < "comment" : "farmtools facing left", < "brush" : [ [ "clear" ], [ "object", "farmtools", { "direction" : "left" } ] ] < }, < < { < "value" : [191, 79, 19, 255], < "comment" : "farmtools facing right", < "brush" : [ [ "clear" ], [ "object", "farmtools", { "direction" : "right" } ] ] < }, < < { < "value" : [204, 88, 20, 255], < "comment" : "garagetools facing left", < "brush" : [ [ "clear" ], [ "object", "garagetools", { "direction" : "left" } ] ] < }, < < { < "value" : [191, 82, 19, 255], < "comment" : "garagetools facing right", < "brush" : [ [ "clear" ], [ "object", "garagetools", { "direction" : "right" } ] ] < }, < < { < "value" : [26, 240, 255, 255], < "comment" : "haypile facing left", < "brush" : [ [ "clear" ], [ "object", "haypile", { "direction" : "left" } ] ] < }, < < { < "value" : [24, 228, 242, 255], < "comment" : "haypile facing right", < "brush" : [ [ "clear" ], [ "object", "haypile", { "direction" : "right" } ] ] < }, < < { < "value" : [204, 91, 20, 255], < "comment" : "hayroll facing left", < "brush" : [ [ "clear" ], [ "object", "hayroll", { "direction" : "left" } ] ] < }, < < { < "value" : [191, 85, 19, 255], < "comment" : "hayroll facing right", < "brush" : [ [ "clear" ], [ "object", "hayroll", { "direction" : "right" } ] ] < }, < < { < "value" : [204, 94, 20, 255], < "comment" : "haystack facing left", < "brush" : [ [ "clear" ], [ "object", "haystack", { "direction" : "left" } ] ] < }, < < { < "value" : [191, 88, 19, 255], < "comment" : "haystack facing right", < "brush" : [ [ "clear" ], [ "object", "haystack", { "direction" : "right" } ] ] < }, < < { < "value" : [204, 97, 20, 255], < "comment" : "kitchentools facing left", < "brush" : [ [ "clear" ], [ "object", "kitchentools", { "direction" : "left" } ] ] < }, < < { < "value" : [191, 91, 19, 255], < "comment" : "kitchentools facing right", < "brush" : [ [ "clear" ], [ "object", "kitchentools", { "direction" : "right" } ] ] < }, < < { < "value" : [45, 26, 255, 255], < "comment" : "medievalcounter facing left", < "brush" : [ [ "clear" ], [ "object", "medievalcounter", { "direction" : "left" } ] ] < }, < < { < "value" : [42, 24, 242, 255], < "comment" : "medievalcounter facing right", < "brush" : [ [ "clear" ], [ "object", "medievalcounter", { "direction" : "right" } ] ] < }, < { < "value" : [255, 221, 51, 255], < "comment" : "medievalfurnace facing left", < "brush" : [ [ "clear" ], [ "object", "medievalfurnace", { "direction" : "left" } ] ] < }, < < { < "value" : [242, 210, 48, 255], < "comment" : "medievalfurnace facing right", < "brush" : [ [ "clear" ], [ "object", "medievalfurnace", { "direction" : "right" } ] ] < }, < < { < "value" : [204, 100, 20, 255], < "comment" : "medievalregister facing left", < "brush" : [ [ "clear" ], [ "object", "medievalregister", { "direction" : "left" } ] ] < }, < < { < "value" : [191, 94, 19, 255], < "comment" : "medievalregister facing right", < "brush" : [ [ "clear" ], [ "object", "medievalregister", { "direction" : "right" } ] ] < }, < < { < "value" : [64, 26, 255, 255], < "comment" : "medievalwallshelf facing left", < "brush" : [ [ "clear" ], [ "object", "medievalwallshelf", { "direction" : "left" } ] ] < }, < < { < "value" : [61, 24, 242, 255], < "comment" : "medievalwallshelf facing right", < "brush" : [ [ "clear" ], [ "object", "medievalwallshelf", { "direction" : "right" } ] ] < }, < < { < "value" : [204, 103, 20, 255], < "comment" : "target facing left", < "brush" : [ [ "clear" ], [ "object", "target", { "direction" : "left" } ] ] < }, < < { < "value" : [191, 97, 19, 255], < "comment" : "target facing right", < "brush" : [ [ "clear" ], [ "object", "target", { "direction" : "right" } ] ] < }, < < { < "value" : [204, 106, 20, 255], < "comment" : "targetdummy facing left", < "brush" : [ [ "clear" ], [ "object", "targetdummy", { "direction" : "left" } ] ] < }, < < { < "value" : [191, 99, 19, 255], < "comment" : "targetdummy facing right", < "brush" : [ [ "clear" ], [ "object", "targetdummy", { "direction" : "right" } ] ] < }, < < { < "value" : [204, 109, 20, 255], < "comment" : "trough facing left", < "brush" : [ [ "clear" ], [ "object", "trough", { "direction" : "left" } ] ] < }, < < { < "value" : [191, 102, 19, 255], < "comment" : "trough facing right", < "brush" : [ [ "clear" ], [ "object", "trough", { "direction" : "right" } ] ] < }, < < { < "value" : [166, 117, 83, 255], < "comment" : "villagedoor", < "brush" : [ [ "clear" ], [ "object", "villagedoor" ] ] < }, < < { < "value" : [204, 112, 20, 255], < "comment" : "wallshield", < "brush" : [ [ "clear" ], [ "object", "wallshield" ] ] < }, < < { < "value" : [204, 115, 20, 255], < "comment" : "wellcover facing left", < "brush" : [ [ "clear" ], [ "object", "wellcover", { "direction" : "left" } ] ] < }, < < { < "value" : [191, 108, 19, 255], < "comment" : "wellcover facing right", < "brush" : [ [ "clear" ], [ "object", "wellcover", { "direction" : "right" } ] ] < }, < < { < "value" : [26, 232, 255, 255], < "comment" : "wheelbarrow facing left", < "brush" : [ [ "clear" ], [ "object", "wheelbarrow", { "direction" : "left" } ] ] < }, < < { < "value" : [24, 220, 242, 255], < "comment" : "wheelbarrow facing right", < "brush" : [ [ "clear" ], [ "object", "wheelbarrow", { "direction" : "right" } ] ] < }, < < { < "value" : [26, 224, 255, 255], < "comment" : "woodenstool facing left", < "brush" : [ [ "clear" ], [ "object", "woodenstool", { "direction" : "left" } ] ] < }, < < { < "value" : [24, 213, 242, 255], < "comment" : "woodenstool facing right", < "brush" : [ [ "clear" ], [ "object", "woodenstool", { "direction" : "right" } ] ] < }, < < { < "value" : [255, 0, 34, 255], < "comment" : "craftingwheel facing left", < "brush" : [ [ "clear" ], [ "object", "craftingwheel", { "direction" : "left" } ] ] < }, < < { < "value" : [242, 0, 32, 255], < "comment" : "craftingwheel facing right", < "brush" : [ [ "clear" ], [ "object", "craftingwheel", { "direction" : "right" } ] ] < }, < < { < "value" : [255, 238, 51, 255], < "comment" : "medievalstreetlamp facing left", < "brush" : [ [ "clear" ], [ "object", "medievalstreetlamp", { "direction" : "left" } ] ] < }, < < { < "value" : [242, 226, 48, 255], < "comment" : "medievalstreetlamp facing right", < "brush" : [ [ "clear" ], [ "object", "medievalstreetlamp", { "direction" : "right" } ] ] < }, < < { < "value" : [255, 255, 51, 255], < "comment" : "medievallamp facing left", < "brush" : [ [ "clear" ], [ "object", "medievallamp", { "direction" : "left" } ] ] < }, < < { < "value" : [242, 242, 48, 255], < "comment" : "medievallamp facing right", < "brush" : [ [ "clear" ], [ "object", "medievallamp", { "direction" : "right" } ] ] < }, < < { < "value" : [204, 118, 20, 255], < "comment" : "signarmorshop", < "brush" : [ [ "clear" ], [ "object", "signarmorshop" ] ] < }, < < { < "value" : [204, 121, 20, 255], < "comment" : "signforge", < "brush" : [ [ "clear" ], [ "object", "signforge" ] ] < }, < < { < "value" : [204, 124, 20, 255], < "comment" : "signinn", < "brush" : [ [ "clear" ], [ "object", "signinn" ] ] < }, < < { < "value" : [204, 128, 20, 255], < "comment" : "signlibrary", < "brush" : [ [ "clear" ], [ "object", "signlibrary" ] ] < }, < < { < "value" : [204, 131, 20, 255], < "comment" : "signproduce", < "brush" : [ [ "clear" ], [ "object", "signproduce" ] ] < }, < < { < "value" : [204, 134, 20, 255], < "comment" : "signweaponshop", < "brush" : [ [ "clear" ], [ "object", "signweaponshop" ] ] < }, < < { < "value" : [255, 0, 25, 255], < "comment" : "automato crop", < "brush" : [ [ "clear" ], [ "object", "automatoseed", { "direction" : "right", "parameters" : { "startingStage" : 2 } } ] ] < }, < < { < "value" : [255, 0, 17, 255], < "comment" : "wilddiodia crop", < "brush" : [ [ "clear" ], [ "object", "diodiaseed", { "direction" : "right", "parameters" : { "startingStage" : 2 } } ] ] < }, < < { < "value" : [255, 0, 8, 255], < "comment" : "wildboltbulb crop", < "brush" : [ [ "clear" ], [ "object", "boltbulbseed", { "direction" : "right", "parameters" : { "startingStage" : 2 } } ] ] < }, < < { < "value" : [166, 124, 83, 255], < "comment" : "woodengate", < "brush" : [ [ "clear" ], [ "object", "woodengate" ] ] < }, < < { < "value" : [204, 137, 20, 255], < "comment" : "fireflowerpot facing left", < "brush" : [ [ "clear" ], [ "object", "fireflowerpot", { "direction" : "left" } ] ] < }, < < { < "value" : [191, 128, 19, 255], < "comment" : "fireflowerpot facing right", < "brush" : [ [ "clear" ], [ "object", "fireflowerpot", { "direction" : "right" } ] ] < }, < < { < "value" : [204, 140, 20, 255], < "comment" : "wflowerpot facing left", < "brush" : [ [ "clear" ], [ "object", "wflowerpot", { "direction" : "left" } ] ] < }, < < { < "value" : [191, 131, 19, 255], < "comment" : "wflowerpot facing right", < "brush" : [ [ "clear" ], [ "object", "wflowerpot", { "direction" : "right" } ] ] < }, < < { < "value" : [255, 94, 26, 255], < "comment" : "outhouse facing left", < "brush" : [ [ "clear" ], [ "object", "outhouse", { "direction" : "left" } ] ] < }, < < { < "value" : [242, 90, 24, 255], < "comment" : "outhouse facing right", < "brush" : [ [ "clear" ], [ "object", "outhouse", { "direction" : "right" } ] ] < }, < < { < "value" : [179, 71, 18, 255], < "comment" : "poisonsign facing left", < "brush" : [ [ "clear" ], [ "object", "poisonsign", { "direction" : "left" } ] ] < }, < < { < "value" : [166, 66, 17, 255], < "comment" : "poisonsign facing right", < "brush" : [ [ "clear" ], [ "object", "poisonsign", { "direction" : "right" } ] ] < }, < < { < "value" : [179, 74, 18, 255], < "comment" : "poop facing left", < "brush" : [ [ "clear" ], [ "object", "poop", { "direction" : "left" } ] ] < }, < < { < "value" : [166, 69, 17, 255], < "comment" : "poop facing right", < "brush" : [ [ "clear" ], [ "object", "poop", { "direction" : "right" } ] ] < }, < < { < "value" : [179, 77, 18, 255], < "comment" : "sewagebarrel facing left", < "brush" : [ [ "clear" ], [ "object", "sewagebarrel", { "direction" : "left" } ] ] < }, < < { < "value" : [166, 71, 17, 255], < "comment" : "sewagebarrel facing right", < "brush" : [ [ "clear" ], [ "object", "sewagebarrel", { "direction" : "right" } ] ] < }, < < { < "value" : [179, 79, 18, 255], < "comment" : "sewergauge", < "brush" : [ [ "clear" ], [ "object", "sewergauge" ] ] < }, < < { < "value" : [179, 82, 18, 255], < "comment" : "sewertank facing left", < "brush" : [ [ "clear" ], [ "object", "sewertank", { "direction" : "left" } ] ] < }, < < { < "value" : [166, 76, 17, 255], < "comment" : "sewertank facing right", < "brush" : [ [ "clear" ], [ "object", "sewertank", { "direction" : "right" } ] ] < }, < < { < "value" : [92, 229, 23, 255], < "comment" : "sewervalve", < "brush" : [ [ "clear" ], [ "object", "sewervalve" ] ] < }, < < { < "value" : [179, 85, 18, 255], < "comment" : "sewerwallgrate facing left", < "brush" : [ [ "clear" ], [ "object", "sewerwallgrate", { "direction" : "left" } ] ] < }, < < { < "value" : [166, 79, 17, 255], < "comment" : "sewerwallgrate facing right", < "brush" : [ [ "clear" ], [ "object", "sewerwallgrate", { "direction" : "right" } ] ] < }, < < { < "value" : [179, 87, 18, 255], < "comment" : "toxicwastebarrel facing left", < "brush" : [ [ "clear" ], [ "object", "toxicwastebarrel", { "direction" : "left" } ] ] < }, < < { < "value" : [166, 81, 17, 255], < "comment" : "toxicwastebarrel facing right", < "brush" : [ [ "clear" ], [ "object", "toxicwastebarrel", { "direction" : "right" } ] ] < }, < < { < "value" : [179, 98, 18, 255], < "comment" : "trashbag facing left", < "brush" : [ [ "clear" ], [ "object", "trashbag", { "direction" : "left", "parameters" : { "treasurePools" : [ "glitchSewerLore" ] } } ] ] < }, < < { < "value" : [166, 91, 17, 255], < "comment" : "trashbag facing right", < "brush" : [ [ "clear" ], [ "object", "trashbag", { "direction" : "right", "parameters" : { "treasurePools" : [ "glitchSewerLore" ] } } ] ] < }, < < { < "value" : [179, 95, 18, 255], < "comment" : "trashcan facing left", < "brush" : [ [ "clear" ], [ "object", "trashcan", { "direction" : "left", "parameters" : { "treasurePools" : [ "glitchSewerLore" ] } } ] ] < }, < < { < "value" : [166, 89, 17, 255], < "comment" : "trashcan facing right", < "brush" : [ [ "clear" ], [ "object", "trashcan", { "direction" : "right", "parameters" : { "treasurePools" : [ "glitchSewerLore" ] } } ] ] < }, < < { < "value" : [166, 131, 83, 255], < "comment" : "sewerflooddoor", < "brush" : [ [ "clear" ], [ "object", "sewerflooddoor" ] ] < }, < < { < "value" : [179, 90, 18, 255], < "comment" : "wallpipe facing left", < "brush" : [ [ "clear" ], [ "object", "wallpipe", { "direction" : "left" } ] ] < }, < < { < "value" : [166, 84, 17, 255], < "comment" : "wallpipe facing right", < "brush" : [ [ "clear" ], [ "object", "wallpipe", { "direction" : "right" } ] ] < }, < < { < "value" : [179, 93, 18, 255], < "comment" : "sewergear turning left", < "brush" : [ [ "clear" ], [ "object", "sewergear", { "direction" : "left" } ] ] < }, < < { < "value" : [166, 86, 17, 255], < "comment" : "sewergear turning right", < "brush" : [ [ "clear" ], [ "object", "sewergear", { "direction" : "right" } ] ] < }, < < // NPC MONSTER SPAWN BRUSHES // < < { < "value" : [0, 150, 0, 255], < "comment" : "robotchicken npc", < "brush" : [ [ "npc", < { < "kind" : "monster", < "typeName" : "robotchicken" < } < ] ] < }, < < { < "value" : [0, 175, 0, 255], < "comment" : "passive quadruped npc", < "brush" : [ [ "npc", < { < "kind" : "monster", < "typeName" : "largequadruped", < "seed" : "stable", < "parameters" : { < "aggressive" : false < } < } < ] ] < }, < < { < "value" : [0, 200, 0, 255], < "comment" : "glitch villager npc", < "brush" : [ [ "npc", < { < "kind" : "npc", < "species" : "glitch", < "typeName" : "villager" < } < ] ] < }, < < { < "value" : [175, 0, 0, 255], < "comment" : "glitch food merchant npc", < "brush" : [ [ "npc", < { < "kind" : "npc", < "species" : "glitch", < "typeName" : "merchant", < "parameters" : { < "scriptConfig" : { < "noticePlayersRadius" : 20.0, < "merchant" : { < "storeRadius" : 2, < "categories" : { "default" : [ "glitchingredients" ] }, < "priceVarianceRange" : [0.8, 1.2], < "numItems" : 10 < }, < "sit" : { < "searchRadius" : 8 < }, < "sleep" : { < "searchRadius" : 20 < } < } < } < } < ] ] < }, < < { < "value" : [200, 0, 0, 255], < "comment" : "glitch weapons merchant npc", < "brush" : [ [ "npc", < { < "kind" : "npc", < "species" : "glitch", < "typeName" : "merchant", < "parameters" : { < "scriptConfig" : { < "noticePlayersRadius" : 20.0, < "merchant" : { < "storeRadius" : 2, < "categories" : { "default" : [ "glitchweaponblueprints", "randomswords" ] }, < "priceVarianceRange" : [0.8, 1.2], < "numItems" : 15 < }, < "sit" : { < "searchRadius" : 8 < }, < "sleep" : { < "searchRadius" : 20 < } < } < } < } < ] ] < }, < < { < "value" : [225, 0, 0, 255], < "comment" : "glitch armor/clothes merchant npc", < "brush" : [ [ "npc", < { < "kind" : "npc", < "species" : "glitch", < "typeName" : "merchant", < "parameters" : { < "scriptConfig" : { < "noticePlayersRadius" : 20.0, < "merchant" : { < "storeRadius" : 2, < "categories" : { "default" : [ "glitcharmorblueprints", "glitchclothes" ] }, < "priceVarianceRange" : [0.8, 1.2], < "numItems" : 25 < }, < "sit" : { < "searchRadius" : 8 < }, < "sleep" : { < "searchRadius" : 20 < } < } < } < } < ] ] < }, < < { < "value" : [0, 0, 200, 255], < "comment" : "glitch village guard npc", < "brush" : [ [ "npc", < { < "kind" : "npc", < "species" : "glitch", < "typeName" : "villageguard" < } < ] ] < }, < < { < "value" : [0, 0, 225, 255], < "comment" : "glitch village guard captain npc", < "brush" : [ [ "npc", < { < "kind" : "npc", < "species" : "glitch", < "typeName" : "villageguardcaptain" < } < ] ] < }, < < { < "value" : [0, 200, 200, 255], < "comment" : "glitch castle guard npc", < "brush" : [ [ "npc", < { < "kind" : "npc", < "species" : "glitch", < "typeName" : "castleguard" < } < ] ] < }, < < { < "value" : [0, 215, 215, 255], < "comment" : "glitch castle guard lookout npc", < "brush" : [ [ "npc", < { < "kind" : "npc", < "species" : "glitch", < "typeName" : "castleguardlookout" < } < ] ] < }, < < { < "value" : [0, 225, 225, 255], < "comment" : "glitch castle royal guard npc", < "brush" : [ [ "npc", < { < "kind" : "npc", < "species" : "glitch", < "typeName" : "castleroyalguard" < } < ] ] < }, < < { < "value" : [0, 250, 250, 255], < "comment" : "glitch castle lord npc", < "brush" : [ [ "npc", < { < "kind" : "npc", < "species" : "glitch", < "typeName" : "castlelord", < "parameters" : { < "scriptConfig" : { < "guard" : { < "patrolDistance" : 5 < } < } < } < } < ] ] < }, < < { < "value" : [250, 200, 0, 255], < "comment" : "glitch knight", < "brush" : [ [ "npc", < { < "kind" : "monster", < "typeName" : "glitchknight" < } < ] ] < }, < < { < "value" : [0, 225, 0, 255], < "comment" : "glitch servant npc", < "brush" : [ [ "npc", < { < "kind" : "npc", < "species" : "glitch", < "typeName" : "servant" < } < ] ] < }, < < { < "value" : [200, 200, 0, 255], < "comment" : "megapo npc", < "brush" : [ [ "npc", < { < "kind" : "monster", < "typeName" : "megapo" < } < ] ] < }, < < { < "value" : [225, 225, 0, 255], < "comment" : "pogolem npc", < "brush" : [ [ "npc", < { < "kind" : "monster", < "typeName" : "pogolem" < } < ] ] < }, < < { < "value" : [225, 175, 0, 255], < "comment" : "glitchspider npc", < "brush" : [ [ "npc", < { < "kind" : "monster", < "typeName" : "glitchspider" < } < ] ] < }, < < { < "value" : [0, 175, 250, 255], < "comment" : "sewerfly npc", < "brush" : [ [ "npc", < { < "kind" : "monster", < "typeName" : "sewerfly" < } < ] ] < } < ], 2165c20 < "def" : [ "image", [ "glitchmission1.png", "glitchmission1-objects.png" ] ] --- > "def" : [ "tmx", "glitchmission1.json" ] interface\confirmation\recruitconfirmation.config 1a2 > "paneLayout" : "/interface/windowconfig/portraitconfirmation.config:paneLayout", 4,5c5,6 < "subtitle" : " ", < "message" : " would like to join your crew as a . Invite aboard?", --- > "subtitle" : ", ", > "message" : " would like to join your crew as a . Invite aboard?^gray;\n\n \n Rank: \n Status: ", 7c8,11 < "cancelCaption" : "NOT NOW" --- > "cancelCaption" : "NOT NOW", > "images" : { > "portrait" : [] > } interface\optionsmenu\optionsmenu.config 54a55,60 > "bgShine" : { > "type" : "image", > "file" : "/interface/optionsmenu/shine.png", > "position" : [16, 9], > "zlevel" : -1 > }, 135c141 < "position" : [42, 11], --- > "position" : [42, 30], 142c148 < "position" : [140, 11], --- > "position" : [140, 30], interface\windowconfig\codex.config 72c72 < "position" : [41, 7] --- > "position" : [41, 20] 76c76 < "rect" : [1, 30, 152, 214], --- > "rect" : [1, 45, 152, 214], items\active\effects\chain.lua 19a20,21 > local image = self.chain.segmentImage > if i == segmentCount and self.chain.endSegmentImage then image = self.chain.endSegmentImage end 21c23 < image = self.chain.segmentImage, --- > image = image, 25c27,28 < position = thisOffset --- > position = thisOffset, > fullbright = self.chain.fullbright or false items\active\weapons\weapon.lua 127c127 < --- > 164a165,171 > local damageLine, damagePoly > if #damageArea == 2 then > damageLine = damageArea > else > damagePoly = damageArea > end > 166c173,174 < poly = damageArea, --- > poly = damagePoly, > line = damageLine, items\active\weapons\whip\testwhip.activeitem 6c6 < "description" : "Get cracking.", --- > "description" : "Get cracking!", 8c8 < "tooltipKind" : "base", --- > "tooltipKind" : "sword", 10c10 < "twoHanded" : false, --- > "twoHanded" : true, 16c16,17 < "weapon" : "testwhip.png" --- > "weapon" : "testwhip.png", > "weaponFullbright" : "" 18a20 > "particleEmitters" : { "crack" : { "particles" : [ ]}}, 29a32,33 > "altAbility" : "/items/active/weapons/whip/altabilities/energyorb.altability", > 32,34c36,37 < "baseDps" : 7.0, < < "damagePoly" : [ [-0.75, 0], [0, 0.75], [0.75, 0], [0, -0.75] ], --- > "chainDps" : 2.0, > "crackDps" : 6.0, 38,39c41 < "damageSourceKind" : "whip", < "knockback" : [0, 15], --- > "damageSourceKind" : "lash", 41c43 < "timeout" : 0.1 --- > "timeout" : 0.3 44,47c46,54 < "chainStartOffset" : [0.625, 0.125], < "chainLength" : [3, 8], < "chainSegmentImage" : "/items/active/weapons/whip/chainlink3.png", < "chainSegmentSize" : 0.375 --- > "projectileType" : "whipcrackphysical", > "projectileConfig" : {} > }, > > "chain" : { > "startOffset" : [0.625, 0.125], > "length" : [3, 12], > "segmentImage" : "/items/active/weapons/whip/chainlink3.png", > "segmentSize" : 0.375 90,91c97 < } < // , --- > }, 93c99 < // "builder" : "/items/buildscripts/buildwhip.lua" --- > "builder" : "/items/buildscripts/buildwhip.lua" items\active\weapons\whip\whip.animation 10c10 < "cycle" : 0.2, --- > "cycle" : 0.25, 14,15c14,15 < "frames" : 3, < "cycle" : 0.15, --- > "frames" : 1, > "cycle" : 0.01, 27a28,60 > "zLevel" : 0 > }, > > "partStates" : { > "attack" : { > "idle" : { > "properties" : { > "image" : ":idle" > } > }, > "windup" : { > "properties" : { > "image" : ":windup." > } > }, > "extend" : { > "properties" : { > "image" : ":extend." > } > }, > "fire" : { > "properties" : { > "image" : ":fire" > } > } > } > } > }, > "weaponFullbright" : { > "properties" : { > "transformationGroups" : ["weapon"], > "centered" : true, > "fullbright" : true, 67,73c100 < "burstCount" : 5, < "offsetRegion" : [-0.5, -0.5, 0.5, 0.5], < "particles" : [ < { "particle" : "fireswoosh1"}, < { "particle" : "fireswoosh2"}, < { "particle" : "fireswoosh3"} < ] --- > "particles" : [] items\active\weapons\whip\whip.lua 7a8,9 > activeItem.setCursor("/cursors/reticle0.cursor") > 15,20c17,22 < -- local comboFinisherConfig = config.getParameter("comboFinisher") < -- for _, script in ipairs(comboFinisherConfig.scripts) do < -- require(script) < -- end < -- self.comboFinisher = setupComboFinisher(comboFinisherConfig) < -- self.weapon:addAbility(self.comboFinisher) --- > local altAbilityConfig = config.getParameter("altAbility") > for _, script in ipairs(altAbilityConfig.scripts) do > require(script) > end > self.altAbility = setupAltAbility(altAbilityConfig) > self.weapon:addAbility(self.altAbility) items\active\weapons\whip\whipcrack.lua 9c9 < self.damageConfig.baseDamage = self.baseDps * self.fireTime --- > self.damageConfig.baseDamage = self.chainDps * self.fireTime 17a18,21 > > self.projectileConfig = self.projectileConfig or {} > > self.chain = config.getParameter("chain") 56a61 > animator.setAnimationState("attack", "fire") 65,74c70,74 < local chainLength = vec2.mag(vec2.sub(self.attackTargetOffset, activeItem.handPosition(self.chainStartOffset))) < chainLength = math.min(self.chainLength[2], math.max(self.chainLength[1], chainLength)) < self.chainEndOffset = vec2.add(self.chainStartOffset, {chainLength, 0}) < < activeItem.setScriptedAnimationParameter("chain", { < startOffset = self.chainStartOffset, < endOffset = self.chainEndOffset, < segmentImage = self.chainSegmentImage, < segmentSize = self.chainSegmentSize < }) --- > local chainLength = vec2.mag(vec2.sub(self.attackTargetOffset, activeItem.handPosition(self.chain.startOffset))) > chainLength = math.min(self.chain.length[2], math.max(self.chain.length[1], chainLength)) > self.chain.endOffset = vec2.add(self.chain.startOffset, {chainLength, 0}) > > activeItem.setScriptedAnimationParameter("chain", self.chain) 76d75 < animator.setAnimationState("attack", "fire") 78c77 < animator.translateTransformationGroup("endpoint", self.chainEndOffset) --- > animator.translateTransformationGroup("endpoint", self.chain.endOffset) 82,83c81,82 < util.wait(self.stances.fire.duration, function() < local damageArea = poly.translate(self.damagePoly, self.chainEndOffset) --- > self.projectileConfig.power = self:crackDamage() > self.projectileConfig.powerMultiplier = activeItem.ownerPowerMultiplier() 85c84,94 < self.weapon:setDamage(self.damageConfig, damageArea, self.fireTime) --- > world.spawnProjectile( > self.projectileType, > vec2.add(mcontroller.position(), activeItem.handPosition(self.chain.endOffset)), > activeItem.ownerEntityId(), > vec2.withAngle(self.weapon.aimAngle), > false, > self.projectileConfig > ) > > util.wait(self.stances.fire.duration, function() > self.weapon:setDamage(self.damageConfig, {self.chain.startOffset, self.chain.endOffset}, self.fireTime) 99a109,116 > end > > function WhipCrack:chainDamage() > return (self.chainDps * self.fireTime) * config.getParameter("damageLevelMultiplier") > end > > function WhipCrack:crackDamage() > return (self.crackDps * self.fireTime) * config.getParameter("damageLevelMultiplier") liquids\lava.liquid 20c20 < "textureMovementFactor" : 2.6 --- > "textureMovementFactor" : 0.5 monsters\boss\apeboss\apeboss.animation 17c17,20 < "transition" : "idle" --- > "transition" : "idle", > "frameProperties" : { > "immediateSound" : [ "/sfx/interface/ship_confirm2.ogg", "", "", "", "", "", "", "", "", "","", "", "", "/sfx/npc/unique/apeboss_spawn.ogg", "","", "", "", "", "","", "", "", "", "","", "", "", "", "","", "", "", "", "","", "", "", "", "", "", "" ] > } 78c81 < "persistentSound" : "/sfx/objects/bigclock_loop.ogg" --- > // "persistentSound" : "/sfx/npc/unique/apeboss_stage2_loop.ogg" 83c86 < "persistentSound" : "/sfx/objects/bunkerserver.ogg" --- > "persistentSound" : "/sfx/npc/unique/apeboss_stage2_loop.ogg" 88c91 < "persistentSound" : "/sfx/objects/brokenfuelhatch.ogg" --- > "persistentSound" : "/sfx/npc/unique/apeboss_stage3_loop.ogg" 93c96 < "persistentSound" : "/sfx/objects/arcademachine.ogg" --- > "persistentSound" : "/sfx/npc/unique/apeboss_stage4_loop.ogg" 105c108 < "persistentSound" : "/sfx/objects/mechanical_elevator_loop.ogg" --- > // "persistentSound" : "/sfx/objects/mechanical_elevator_loop.ogg" 110c113 < "persistentSound" : "/sfx/objects/bunkerpanel1.ogg" --- > // "persistentSound" : "/sfx/objects/bunkerpanel1.ogg" 115c118 < "persistentSound" : "/sfx/objects/bunkervent.ogg" --- > // "persistentSound" : "/sfx/objects/bunkervent.ogg" 233,239c236,246 < "stage1Glitch" : [ "/sfx/projectiles/goo_spit1.ogg"], < "stage2Glitch" : [ "/sfx/gun/rocket1.ogg"], < "stage3Glitch" : [ "/sfx/gun/shattergun1.ogg"], < "stage4Glitch" : [ "/sfx/gun/uzi1.ogg"], < "stage2Transition" : [ "/sfx/gun/gnome_throw1.ogg"], < "stage3Transition" : [ "/sfx/gun/flamethrower_start.ogg"], < "stage4Transition" : [ "/sfx/gun/squeaky1.ogg"], --- > "stage1Glitch" : [ "/sfx/npc/unique/apeboss_glitch1.ogg"], > "stage2Glitch" : [ "/sfx/npc/unique/apeboss_glitch1.ogg"], > "stage3Glitch" : [ "/sfx/npc/unique/apeboss_glitch2.ogg"], > "stage4Glitch" : [ "/sfx/npc/unique/apeboss_glitch3.ogg"], > "stage1Attack" : [ "/sfx/npc/unique/apeboss_stage1_attack1.ogg", "/sfx/npc/unique/apeboss_stage1_attack2.ogg" ], > "stage2Attack" : [ "/sfx/npc/unique/apeboss_stage1_attack1.ogg", "/sfx/npc/unique/apeboss_stage1_attack2.ogg" ], > "stage3Attack" : [ "/sfx/npc/unique/apeboss_stage3_attack.ogg" ], > "stage4Attack" : [ "/sfx/npc/unique/apeboss_stage4_attack.ogg" ], > "stage2Transition" : [ ], > "stage3Transition" : [ ], > "stage4Transition" : [ ], 241c248 < "death" : [ "/sfx/gun/squeaky1.ogg"], --- > "death" : [ "/sfx/npc/unique/apeboss_death.ogg" ], 243,244c250,251 < "fireNeedle" : [ "/sfx/projectiles/bloodvomit1.ogg" ], < "firePellet" : [ "/sfx/projectiles/tar_hit_organic1.ogg" ] --- > "fireNeedle" : [ "/sfx/projectiles/plasma3.ogg" ], > "firePellet" : [ "/sfx/gun/plasma_mp2.ogg" ] monsters\boss\apeboss\apeboss.monstertype 95c95 < "poisonImmunity" : { --- > "fireImmunity" : { 98c98,104 < "fireImmunity" : { --- > "iceImmunity" : { > "baseValue" : 1.0 > }, > "electricImmunity" : { > "baseValue" : 1.0 > }, > "poisonImmunity" : { monsters\boss\apebossprojector\apebossprojector.animation 164,165c164,165 < "deathPuff" : [ "/sfx/melee/kill_robotic1.ogg" ], < "missileLaunch" : [ "/sfx/gun/rocket1.ogg" ] --- > "deathPuff" : [ "/sfx/objects/metalbarrel_break1.ogg", "/sfx/objects/metalbarrel_break2.ogg", "/sfx/objects/metalbarrel_break3.ogg" ], > "missileLaunch" : [ "/sfx/gun/rocket2.ogg" ] monsters\boss\apebossprojector\apebossprojector.monstertype 107a108,116 > }, > "fireImmunity" : { > "baseValue" : 1.0 > }, > "poisonImmunity" : { > "baseValue" : 1.0 > }, > "iceImmunity" : { > "baseValue" : 1.0 npcs\bmain.lua 61a62 > npc.setAggressive(config.getParameter("aggressive", false)) 211c212 < npc.setStatusText(randomStatusText(personality)) --- > storage.statusText = randomStatusText(personality) 213c214 < npc.setStatusText(nil) --- > storage.statusText = nil 214a216 > npc.setStatusText(storage.statusText) 233a236,247 > end > > -- param aggressive > function setAggressive(args, output) > args = parseArgs(args, { > aggressive = false > }) > local aggressive = BData:getBool(args.aggressive) > if aggressive == nil then return false end > > npc.setAggressive(aggressive) > return true npcs\hostile.npctype 7c7 < "damageTeam" : 2, --- > "damageTeam" : 3, 12a13,14 > > "aggressive" : true, npcs\hostilelookout.npctype 13a14,15 > "aggressive" : true, > npcs\crew\crewmember.npctype 12a13,15 > "behaviorConfig" : { > "inspectObjects" : true > }, 19c22,23 < "field" : "Security" --- > "field" : "Security", > "uniformColorIndex" : 0 20a25 > 53c58 < "Independent Head of ", --- > "Independent Head of Operations", 56c61 < "Master of ", --- > "Master of Matters", 64c69,77 < ] --- > ], > > "defaultUniform" : { > "slots" : [ "chest", "legs", "back" ], > "items" : { > "chest" : "protectoratechest", > "legs" : "protectoratepants" > } > } 108a122,132 > ] > } > }, > "respawned" : { > "default" : { > "default" : [ > "Hehe, dying tickles.", > "What just happened?", > "I don't think I respawned properly...", > "My head hurts.", > "What was I doing just before I died?" npcs\crew\crewmemberchemist.npctype 13c13,14 < "field" : "Pharmaceutical" --- > "field" : "Pharmaceutical", > "uniformColorIndex" : 6 22a24,30 > ] > } > }, > "combatBenefit" : { > "default" : { > "default" : [ > "Let me give you a boost real quick!" npcs\crew\crewmemberengineer.npctype 10a11 > "uniformColorIndex" : 2, npcs\crew\crewmemberjanitor.npctype 10c10,11 < "field" : "Cleanliness" --- > "field" : "Cleanliness", > "uniformColorIndex" : 11 npcs\crew\crewmembermechanic.npctype 10a11 > "uniformColorIndex" : 8, npcs\crew\crewmembermedic.npctype 10a11 > "uniformColorIndex" : 10, 26a28,41 > ] > } > }, > "fieldBenefit" : { > "default" : { > "default" : [ > "You look hurt! Let me help you." > ] > } > }, > "combatBenefit" : { > "default" : { > "default" : [ > "Quickly! Take this!" npcs\story\baron.npctype 29c29 < "tonauac" : { --- > "baron" : { 33,120c33 < "Oh!", < "Hello, friend! What brings you here? You... Aren't here to rob the tomb, are you?", < "I'm sure I can trust you! My name is Tonauac, and I'm the caretaker for this temple.", < "Oh! I bet you're here to learn everything there is to know about our god Kluex!", < "Let me take you on one of my world famous tours!" < ] < } < }, < "continue" : { < "default" : { < "default": [ < "Come on in, it's perfectly safe! ...Mostly safe, at least." < ] < } < }, < "maskDescription" : { < "default" : { < "default": [ < "These are some ancient ceremonial masks! They're... Too big and heavy to wear.", < "Did you know Kluex thinks stone masks are really neat? He's also a fan of live sacrifices." < ] < } < }, < "altarDescription" : { < "default" : { < "default": [ < "If you look closely, you can just about make out the blood stains on this altar!", < "Say, did you know Kluex built this temple with his bare hands?", < "It was such a great miracle that 5000 nearby slave workers dropped dead at the sight!" < ] < } < }, < "statueDescription" : { < "default" : { < "default": [ < "This is a statue of an old Avian warrior! He might have even used these spears once!", < "...Obviously he can't use them anymore, because he's, um, dead." < ] < } < }, < "endTour" : { < "default" : { < "default": [ < "Well, that concludes the tour! Thanks for coming all this way.", < "Feel free to take a look around, but, um, don't wander off too far!", < "Let me open this door for you." < ] < } < }, < "feelingTired" : { < "default" : { < "default": [ < "The rest of the temple is too unsafe for public viewings, after all...", < "I feel tired now, I might have a nap." < ] < } < }, < "doorGreeting" : { < "default" : { < "default": [ < "Oh, there you are! Did you get lost?", < "You've, uh, diverted from the tour quite a bit. You're really not supposed to be here!", < "...Neither am I in fact. Let's find a way back before anyone notices." < ] < } < }, < "doorOpened" : { < "default" : { < "default": [ < "This door is a little too small for me. Don't worry, this happens a lot...", < "You should check through there, and I'll try and find another exit on this side." < ] < } < }, < "giveRelic" : { < "default" : { < "default": [ < "...I know what you're up to! You weren't here for the tour at all!", < "...You're trying to spread the good word of Kluex! You should take this artifact, then.", < "The Stargazers say these Avolite crystals contain fragments of Kluex's will.", < "...Please, let me come with you! I want to help spread Kluex's love too!" < ] < } < }, < "end" : { < "default" : { < "default": [ < "This teleporter can take us out. Who, uh, put this here? Oh well, it's helpful!" --- > "Hey, defend my castle now" objects\biome\foundry\foundrylogic\foundryxor.object 5,6c5,6 < "description" : "-todo-", < "shortdescription" : "Foundry X Or Switch", --- > "description" : "An XOR switch. The output will be on when exactly one of the inputs is on.", > "shortdescription" : "Foundry XOR Switch", 10a11,18 > > "apexDescription" : "An XOR switch. The output will be on when exactly one of the inputs is on.", > "avianDescription" : "An XOR switch. The output will be on when exactly one of the inputs is on.", > "floranDescription" : "XOR ssswitch. The output will be on when exactly one of the inputsss is on.", > "glitchDescription" : "Impressed. An XOR switch. The output will be on when exactly one of the inputs is on.", > "humanDescription" : "An XOR switch. The output will be on when exactly one of the inputs is on.", > "hylotlDescription" : "An XOR switch. The output will be on when exactly one of the inputs is on.", > "novakidDescription" : "An XOR switch. The output will be on when exactly one of the inputs is on.", objects\hylotl\hylotlliquidsensor\hylotlliquidsensor.object 10a11,18 > "apexDescription" : "A useful object, it can be used for the detection of liquids.", > "avianDescription" : "I have heard of these, they somehow detect liquids.", > "floranDescription" : "Sssensor detects liquidsss. Can trip wiresss.", > "glitchDescription" : "Impressed. This device can detect liquid for use in wiring set-ups.", > "humanDescription" : "I've heard of these, the Hylotl made these to detect liquid for fancy wiring set-ups.", > "hylotlDescription" : "One of my favourite devices, this automatically detects the presence of liquids.", > "novakidDescription" : "This is one of those fancy liquid detectors.", > objects\hylotl\hylotlpainting3\hylotlpainting3.object 8,9c8,9 < "shortdescription" : "Traditional Wave Painting", < "description" : "It's a painting of a great big wave.", --- > "shortdescription" : "Traditional Bridge Painting", > "description" : "It's a painting of a bridge over still water.", 12,18c12,18 < "apexDescription" : "This painting is quite nice.", < "avianDescription" : "Not bad! Brushwork's a bit sloppy, though.", < "floranDescription" : "Floran not care for silly frogman painting.", < "glitchDescription" : "Critical. Scans indicate a numbered grid below the paint. It's a paint-by-numbers kit.", < "humanDescription" : "I'm pretty sure we had this exact same painting on earth.", < "hylotlDescription" : "Each brush stroke drips with emotion, the beauty of the waves captured for all eternity.", < "novakidDescription" : "I believe this is a classic Hylotl painting.", --- > "apexDescription" : "This bridge doesn't look structurally sound, but it is pretty.", > "avianDescription" : "What a pretty scene! I'd like to visit this place, if it was real.", > "floranDescription" : "Floran wantsss to hide under bridge to ssscare people.", > "glitchDescription" : "Impressed. The bridge in this painting appears fairly safe to cross.", > "humanDescription" : "What a nice painting. If this bridge was real, I'd cross it again and again.", > "hylotlDescription" : "The subdued strokes of this painting accentuate the tranquility of the scene.", > "novakidDescription" : "I wonder if a carriage could cross a small bridge like this beauty.", objects\mission\apexmission\fistlauncher\fistlauncher.animation 94c94 < "fire" : [ ] --- > "fire" : [ "/sfx/projectiles/fistlauncher_shot.ogg" ] objects\protectorate\objects\protectoratedormmirror\protectoratedormmirror.object 13c13 < "floranDescription" : "Clean water for washing or drinking.", --- > "floranDescription" : "Clean water for sssplashing or washing.", objects\protectorate\objects\protectoratedormtoiletroll\protectoratedormtoiletroll.object 13c13 < "floranDescription" : "Plenty of toilet roll left.", --- > "floranDescription" : "Toilet roll is almossst empty!", objects\protectorate\objects\protectorateincap1\protectorateincap1.object 13c13 < "floranDescription" : "Floran .", --- > "floranDescription" : "So sssad...", objects\protectorate\objects\protectorateincap2\protectorateincap2.object 13c13 < "floranDescription" : "Floran .", --- > "floranDescription" : "So sssad...", objects\protectorate\objects\protectorateincap3\protectorateincap3.object 13c13 < "floranDescription" : "Floran .", --- > "floranDescription" : "So sssad...", objects\protectorate\objects\protectorateincap4\protectorateincap4.object 13c13 < "floranDescription" : "Floran .", --- > "floranDescription" : "So sssad...", objects\protectorate\objects\protectorateincap5\protectorateincap5.object 13c13 < "floranDescription" : "Floran .", --- > "floranDescription" : "So sssad...", objects\protectorate\objects\protectorateincap6\protectorateincap6.object 13c13 < "floranDescription" : "Floran .", --- > "floranDescription" : "So sssad...", objects\wired\alarm\alarm.object 11a12,19 > "apexDescription" : "These are used as a deterrent, but also as security.", > "avianDescription" : "This flashing light will alert everyone to misdeeds.", > "floranDescription" : "Thisss will alert all the guardsss.", > "glitchDescription" : "Alarmed. This will alert many, I should be careful.", > "humanDescription" : "If this was a movie I bet this would go off just as I left.", > "hylotlDescription" : "An alarm. Used to alert guards to ruffians.", > "novakidDescription" : "This here alarm sure will make getting away with loot hard.", > objects\wired\bigredbutton\bigredbutton.object 15c15 < "glitchDescription" : "Desire. Experiencing overwhelming urge to push button.", --- > "glitchDescription" : "Resistance. Experiencing overwhelming urge to push button.", 17a18 > "novakidDescription" : "Well I just gotta push that button!", objects\wired\drain\drain.object 12a13,20 > "apexDescription" : "This is designed to drain water away.", > "avianDescription" : "This will drain away water, good for keeping my feathers dry!", > "floranDescription" : "Drainsss take away water.", > "glitchDescription" : "Impressed. This drains away water with ease.", > "humanDescription" : "This'll drain that water away fast!", > "hylotlDescription" : "A useful device for draining water away. For those who like that.", > "novakidDescription" : "This'll get rid of that pesky water!", > scripts\behavior.lua 406a407,425 > -- param property > -- output number > -- output bool > -- output table > function worldProperty(args, output) > args = parseArgs(args, { > property = "" > }) > > local value = world.getProperty(args.property) > if not value then return false end > > local setType, name = BData.findType(output) > if setType then > BData:set(setType, name, value) > end > return true > end > scripts\util.lua 218a219,230 > function util.interval(time, func) > local interval = time > local time = 0 > return function(dt) > time = time + dt > if time > interval then > time = time - interval > func() > end > end > end > 671a684,687 > if state == nil then > self.state = nil > return > end scripts\actions\crew.lua 29a30,65 > > function hasFieldBenefit(args, output) > args = parseArgs(args, {}) > > local benefits = config.getParameter("crew.role.benefits", {}) > for _,benefit in pairs(benefits) do > if benefit.type == "Regeneration" then > return true > end > end > return false > end > > function hasCombatBenefit(args, output) > args = parseArgs(args, {}) > > local benefits = config.getParameter("crew.role.benefits", {}) > for _,benefit in pairs(benefits) do > if benefit.type == "Regeneration" or benefit.type == "EphemeralEffect" then > return true > end > end > return false > end > > function triggerFieldBenefit(args, output) > args = parseArgs(args, {}) > recruitable.triggerFieldBenefits() > return true > end > > function triggerCombatBenefit(args, output) > args = parseArgs(args, {}) > recruitable.triggerCombatBenefits() > return true > end scripts\actions\dialog.lua 101a102,123 > -- param entity > function inspectEntity(args, output) > args = parseArgs(args, { > entity = "target" > }) > local entityId = BData:getEntity(args.entity) > if not entityId or not world.entityExists(entityId) then return false end > > local options = {} > local species = nil > if entity.entityType() == "npc" then > species = npc.species() > options.sound = randomChatSound() > end > > local dialog = world.entityDescription(entityId, species) > if not dialog then return false end > > context().say(dialog, {}, options) > return true > end > scripts\actions\entities.lua 12a13,22 > function entityAggressive(args, output) > args = parseArgs(args, { > entity = "self" > }) > > local entityId = BData:getEntity(args.entity) > if not entityId or not world.entityExists(entityId) then return false end > return world.entityAggressive(entityId) > end > 538a549,566 > -- output number > function entityHealthPercentage(args, output) > args = parseArgs(args, { > entity = "" > }) > > local entity = BData:getEntity(args.entity) > if entity == nil then return false end > local health = world.entityHealth(entity) > if health == nil then return false end > > if output.number then > BData:setNumber(output.number, health[1]/health[2]) > end > return true > end > > -- param entity 587a616,632 > end > > -- param entity > -- param species > function hasSpeciesSpecificDescription(args, output) > args = parseArgs(args, { > entity = "target", > species = (entity.entityType() == "npc" and npc.species()) or "human" > }) > > local entityId = BData:getEntity(args.entity) > if not entityId or not world.entityExists(entityId) then return false end > > -- Return success if the species description is non-generic. > -- If the description is default (or a duplicate of default) it's not > -- species-specific > return world.entityDescription(entityId, args.species) ~= world.entityDescription(entityId) scripts\companions\crewbenefits.lua 162a163,169 > > function getRegenerationEffect(regeneration) > if regeneration == 0 then return nil end > local regenEffects = config.getParameter("crewBenefits.regeneration") > local effectName = regenEffects[regeneration] or regenEffects[#regenEffects] > return effectName > end scripts\companions\petspawner.lua 85c85 < parameters.persistent = false --- > parameters.persistent = self.persistent 247a248 > self.status.dead = true scripts\companions\player.lua 43c43,45 < message.setHandler("recruits.setActiveCrewItemSlots", simpleHandler(setActiveCrewItemSlots)) --- > message.setHandler("recruits.offerUniformUpdate", simpleHandler(offerUniformUpdate)) > message.setHandler("recruits.triggerFieldBenefits", simpleHandler(triggerFieldBenefits)) > message.setHandler("recruits.triggerCombatBenefits", simpleHandler(triggerCombatBenefits)) 53a56,59 > local followers = playerCompanions.getCompanions("followers") > for _,follower in pairs(followers) do > follower.uniqueId = nil > end 55c61 < followers = playerCompanions.getCompanions("followers"), --- > followers = followers, 79c85,87 < recruit:spawn() --- > if not recruit:dead() then > recruit:spawn() > end 106d113 < storage.recruits = recruitSpawner:store() 107a115,118 > for category, companions in pairs(recruitSpawner:storeCrew()) do > playerCompanions.setCompanions(category, companions) > end > storage.recruits = recruitSpawner:store() 301a313,333 > function recruitTags(recruit) > return { > name = recruit.name, > role = recruit.role.name, > field = recruit.role.field, > rank = recruit.rank, > status = recruit.statusText > } > end > > function createConfirmationDialog(configPath, recruit) > local dialogConfig = root.assetJson(configPath) > local tags = recruitTags(recruit) > for key,value in pairs(dialogConfig) do > if type(value) == "string" then > dialogConfig[key] = sb.replaceTags(value, tags) > end > end > return dialogConfig > end > 309,319c341,343 < local roleName = getRoleName(root.npcConfig(recruit:npcType())) < < local dialogConfig = root.assetJson("/interface/confirmation/recruitconfirmation.config") < local tags = { < name = recruit.name or "?", < role = roleName < } < for key,value in pairs(dialogConfig) do < if type(value) == "string" then < dialogConfig[key] = sb.replaceTags(value, tags) < end --- > local dialogConfig = createConfirmationDialog("/interface/confirmation/recruitconfirmation.config", recruit) > if recruit.portrait then > dialogConfig.images.portrait = recruit.portrait 349c373 < function setActiveCrewItemSlots(slots, recruitUuid) --- > function getPlayerUniform() 351,353c375,378 < local slotNames = {} < for slotName,playerSlots in pairs(slots) do < table.insert(slotNames, slotName) --- > local slots = {} > local uniformSlots = config.getParameter("uniformSlots") > for slotName,playerSlots in pairs(uniformSlots) do > table.insert(slots, slotName) 360a386,390 > return { > slots = slots, > items = items > } > end 362,369c392,421 < for _,recruit in pairs(recruitSpawner.followers) do < recruit:setItemSlots(slotNames, items) < end < if recruitUuid then < local recruit = recruitSpawner:getRecruit(recruitUuid) < if recruit then < recruit:setItemSlots(slotNames, items) < end --- > function setUniform(items) > recruitSpawner.uniform = items > end > > function updateUniform() > setUniform(getPlayerUniform()) > end > > function resetUniform() > setUniform(nil) > end > > function offerUniformUpdate(recruitUuid) > local recruit = recruitSpawner:getRecruit(recruitUuid) > if not recruit then return end > > if not recruitSpawner.uniform then > local dialogConfig = createConfirmationDialog("/interface/confirmation/setuniformconfirmation.config", recruit) > promises:add(player.confirm(dialogConfig), function (choice) > if choice then > updateUniform() > end > end) > else > local dialogConfig = createConfirmationDialog("/interface/confirmation/resetuniformconfirmation.config", recruit) > promises:add(player.confirm(dialogConfig), function (choice) > if choice then > resetUniform() > end > end) 400a453,472 > end > > function triggerFieldBenefits(recruitUuid) > local recruit = recruitSpawner:getRecruit(recruitUuid) > if not recruit then > world.logInfo("Cannot trigger field benefits for unknown recruit %s", recruitUuid) > return > end > > status.addEphemeralEffects(recruit:fieldBenefits()) > end > > function triggerCombatBenefits(recruitUuid) > local recruit = recruitSpawner:getRecruit(recruitUuid) > if not recruit then > world.logInfo("Cannot trigger combat benefits for unknown recruit %s", recruitUuid) > return > end > > status.addEphemeralEffects(recruit:combatBenefits()) scripts\companions\recruitable.lua 21c21 < message.setHandler("recruit.setItemSlots", simpleHandler(recruitable.setItemSlots)) --- > message.setHandler("recruit.setUniform", simpleHandler(recruitable.setUniform)) 39a40,43 > if recruitable.ownerUuid() or recruitable.isRecruitable() then > recruitable.setUniform(storage.crewUniform or config.getParameter("crew.uniform")) > end > 41c45 < if storage.followingOwner then --- > if not storage.beamedIn then 42a47,49 > storage.beamedIn = true > end > if storage.followingOwner then 101a109,116 > function recruitable.triggerFieldBenefits() > recruitable.messageOwner("recruits.triggerFieldBenefits", recruitable.recruitUuid()) > end > > function recruitable.triggerCombatBenefits() > recruitable.messageOwner("recruits.triggerCombatBenefits", recruitable.recruitUuid()) > end > 149a165,166 > storage.statusText = storage.statusText or randomStatusText(personalityType()) > 155c172 < statusText = randomStatusText(personalityType()), --- > statusText = storage.statusText, 156a174 > uniform = storage.crewUniform, 214,222d231 < if storage.behaviorFollowing then < storage.behaviorFollowing = false < if not world.getProperty("ephemeral") then < recruitable.requestUnfollow() < end < else < storage.behaviorFollowing = true < recruitable.requestFollow() < end 225a235,236 > -- Tailor, etc. offer to update your uniform instead of following you > -- around. 229a241,252 > else > > -- No role-specific behavior, so just follow the player > if storage.behaviorFollowing then > storage.behaviorFollowing = false > if not world.getProperty("ephemeral") then > recruitable.requestUnfollow() > end > else > storage.behaviorFollowing = true > recruitable.requestFollow() > end 270,277d292 < function recruitable.setItemSlots(slotNames, items) < if not recruitable.ownerUuid() then return end < for _, slotName in pairs(slotNames) do < setNpcItemSlot(slotName, items[slotName]) < end < return preservedStorage() < end < 313a329,348 > function recruitable.dyeUniformItem(item) > local colorIndex = config.getParameter("crew.role.uniformColorIndex") > if not item or not colorIndex then return item end > > local item = copy(item) > if type(item) == "string" then item = { name = item, count = 1 } end > item.parameters = item.parameters or {} > item.parameters.colorIndex = colorIndex > > return item > end > > function recruitable.setUniform(uniform) > storage.crewUniform = uniform > > if not uniform then uniform = config.getParameter("crew.defaultUniform") end > for _, slotName in pairs(uniform.slots) do > setNpcItemSlot(slotName, recruitable.dyeUniformItem(uniform.items[slotName])) > end > end scripts\companions\recruitspawner.lua 17a18 > self.uniform = json.uniform 19a21 > self.hasDied = json.hasDied or false 25d26 < self.damageTeamChangeRequiresRespawn = false 33a35 > json.uniform = self.uniform 34a37 > json.hasDied = self.hasDied 43a47,54 > function Recruit:setUniform(uniform) > if compare(self.uniform, uniform) then return end > if self.uniqueId and not self.spawning then > self:sendMessage("recruit.setUniform", uniform) > self.uniform = uniform > end > end > 59,69d69 < function Recruit:setItemSlots(slotNames, items) < local promise = self:sendMessage("recruit.setItemSlots", slotNames, items) < if promise then < promises:add(promise, function (storage) < -- Receive an updated storage object -- which contains the npc's current < -- equipment -- so we can respawn them with these items too. < self.storage = storage < end) < end < end < 75a76 > self.uniform = nil 78a80,101 > function Recruit:fieldBenefits() > local regeneration = self.benefits:regenerationAmount() > return { getRegenerationEffect(regeneration) } > end > > function Recruit:combatBenefits() > local effects = copy(self.benefits:ephemeralEffects()) > local regeneration = self.benefits:regenerationAmount() > table.insert(effects, getRegenerationEffect(regeneration)) > return effects > end > > function Recruit:update(dt) > Pet.update(self, dt) > if self:dead() then > self.hasDied = true > elseif self.hasDied and self.uniqueId and not self.spawning then > self:sendMessage("notify", { type = "respawned", sourceId = entity.id() }) > self.hasDied = false > end > end > 90a114,115 > self.uniform = nil > 118c143,144 < beenOnShip = self.beenOnShip --- > beenOnShip = self.beenOnShip, > uniform = self.uniform 134a161 > self.uniform = stored.uniform 140a168 > recruit.uniqueId = nil 185,187c213 < local regenEffects = config.getParameter("crewBenefits.regeneration") < local effectName = regenEffects[regeneration] or regenEffects[#regenEffects] < table.insert(effects, effectName) --- > table.insert(effects, getRegenerationEffect(regeneration)) 204a231 > recruit:setUniform(self.uniform) 215a243 > local toRespawn = {} 218,220c246 < recruit:despawn() < recruit.status = nil < recruit:spawn() --- > toRespawn[recruit.podUuid] = recruit 224a251,268 > > for uuid, recruit in pairs(toRespawn) do > self:respawnRecruit(uuid, recruit) > end > end > > function recruitSpawner:respawnRecruit(uuid, recruit) > self.followers[uuid] = nil > self.shipCrew[uuid] = recruit > > recruit.uniqueId = nil > recruit.status = nil > recruit.persistent = true > recruit.storage = recruit.storage or {} > recruit.storage.followingOwner = false > recruit.storage.behaviorFollowing = false > > recruit:spawn() treasure\common.treasurepools 863a864,879 > "foodTreasureMedium" : [ > [0, { > "pool" : [ > {"weight" : 1.0, "pool" : "produce"} > ], > "poolRounds" : [ > [0.1, 1], > [0.6, 2], > [0.3, 3], > [0.15, 4], > [0.05, 5] > ], > "allowDuplication" : true > }] > ], > treasure\dungeon.treasurepools 260a261,310 > "hylotlcityTreasureLarge" : [ > [1, { > "pool" : [ > {"weight" : 1.0, "pool" : "hylotlcityTreasure"} > ], > "poolRounds" : [ > [0.1, 1], > [0.2, 2], > [0.2, 3], > [0.6, 4], > [0.25, 5] > ], > "allowDuplication" : true > }] > ], > > "hylotlcityTreasureMedium" : [ > [1, { > "pool" : [ > {"weight" : 1.0, "pool" : "hylotlcityTreasure"} > ], > "poolRounds" : [ > [0.1, 1], > [0.6, 2], > [0.3, 3], > [0.15, 4], > [0.05, 5] > ], > "allowDuplication" : true > }] > ], > > "hylotlcityTreasure" : [ > [1, { > "pool" : [ > {"weight" : 0.2, "pool" : "money"}, > {"weight" : 0.2, "pool" : "ore"}, > {"weight" : 0.15, "item" : ["pressurisedbeam", 15]}, > {"weight" : 0.15, "item" : ["pressurisedgirder", 10]}, > {"weight" : 0.15, "item" : ["pressurisedplatform", 10]}, > {"weight" : 0.15, "item" : [ "climbingrope", 3]}, > {"weight" : 0.1, "item" : [ "torch", 5]}, > {"weight" : 0.1, "pool" : "tool"}, > {"weight" : 0.05, "item" : [ "underwaterlight", 1]}, > {"weight" : 0.02, "pool" : "weapon"} > ], > "allowDuplication" : false > }] > ], > vehicles\mech\mech.lua 73a74,79 > if onGround then > self.groundFrames = offGroundFrames > else > self.groundFrames = self.groundFrames - 1 > end > 79,84d84 < end < < if onGround then < self.groundFrames = offGroundFrames < else < self.groundFrames = self.groundFrames - 1 vehicles\mech\glitchmech\glitchmech.vehicle 9c9 < "animation" : "/vehicles/mech/mech.animation", --- > "animation" : "/vehicles/mech/glitchmech/glitchmech.animation", 34c34 < "mass" : 5, --- > "mass" : 3, 37c37,38 < "ignorePlatformCollision" : true --- > "ignorePlatformCollision" : true, > "groundForce" : 400 53,54c54,55 < "mechFireCycle" : 0.25, < "mechProjectile" : "standardbullet", --- > "mechFireCycle" : 1.5, > "mechProjectile" : "snowball", 56c57,58 < "power" : 4 --- > "power" : 4, > "speed" : 50