FILES ----- radiomessages.config terrestrial_worlds.config behaviors\monsters\boss\cultistboss\cultistboss.behavior behaviors\monsters\boss\cultistboss\dashattack.behavior behaviors\monsters\boss\cultistboss\sphereattack.behavior behaviors\npc\crewmember.behavior behaviors\sequences\sequentialdialog.behavior [NEW] behaviors\sequences\sequentialdialognoskip.behavior [NEW] behaviors\sequences\hylotlmission\koichiend.behavior cinematics\teleport.cinematic cinematics\intro\humanintrocomplete.cinematic cinematics\intro\humanintrostage.cinematic [NEW] cinematics\story\1.png [NEW] cinematics\story\2.png [NEW] cinematics\story\3.png [NEW] cinematics\story\4.png [NEW] cinematics\story\5.png [NEW] cinematics\story\6.png [NEW] cinematics\story\flunghumansleft.png [NEW] cinematics\story\flunghumansright.png cinematics\story\protectoratetentacles.png cinematics\story\protectorgrabbed.png cinematics\story\tentaclehole.png [NEW] cinematics\story\wreckedpodium.png [NEW] dungeons\hylotl\hylotloceancity\hylotlground1.json dungeons\hylotl\hylotloceancity\hylotloceancity.dungeon [NEW] dungeons\hylotl\hylotloceancity\hylotlvertical1.json [NEW] dungeons\hylotl\hylotloceancity\hylotlvertical2.json [NEW] dungeons\hylotl\hylotloceancity\hylotlvertical3.json dungeons\hylotl\hylotlvillage\hylotlvillagetemplate.json dungeons\missions\hylotlmissions\hylotlmission1.json dungeons\missions\protectorate\protectorate.json [NEW] humanoid\baron\backarm.png [NEW] humanoid\baron\dead.png [NEW] humanoid\baron\emote.png [NEW] humanoid\baron\femalebody.png [NEW] humanoid\baron\femalehead.png [NEW] humanoid\baron\frontarm.png [NEW] humanoid\baron\malebody.png [NEW] humanoid\baron\malehead.png [NEW] humanoid\baron\hair\1.png [NEW] humanoid\baron\hair\default.frames interface\chat\chat.config [NEW] interface\chatbubbles\baron.png [NEW] interface\crafting\tabicon_condiments.png interface\windowconfig\chatbubbles.config interface\windowconfig\craftingfood.config [NEW] items\armors\backitems\baroncape\back.png [NEW] items\armors\backitems\baroncape\baroncape.back [NEW] items\armors\backitems\baroncape\baroncapebackicon.png items\armors\decorative\hats\protectorateflower\head.png items\armors\decorative\hats\protectorateflower\icons.png items\armors\decorative\hats\protectorateflower\protectorateflower.head [NEW] items\generic\licenses\fakelicense1.item [NEW] items\generic\licenses\fakelicense2.item [NEW] items\generic\licenses\fakelicense3.item [NEW] items\generic\licenses\fakelicense4.item [NEW] items\generic\licenses\fakelicense5.item [NEW] items\generic\licenses\license1.item [NEW] items\generic\licenses\license1.png [NEW] items\generic\licenses\license2.item [NEW] items\generic\licenses\license2.png [NEW] items\generic\licenses\license3.item [NEW] items\generic\licenses\license3.png [NEW] items\generic\licenses\license4.item [NEW] items\generic\licenses\license4.png [NEW] items\generic\licenses\license5.item [NEW] items\generic\licenses\license5.png items\generic\produce\avesmingo.consumable items\generic\produce\pussplum.consumable items\generic\shop\cannedfood.consumable items\generic\shop\meatballs.consumable [NEW] items\generic\tier4\avesmingoicecream.consumable [NEW] items\generic\tier4\avesmingoicecream.png [NEW] items\generic\tier4\avesmingojuice.consumable [NEW] items\generic\tier4\avesmingojuice.png [NEW] items\generic\tier4\bananasplit.consumable [NEW] items\generic\tier4\bananasplit.png [NEW] items\generic\tier4\pussplumjam.consumable [NEW] items\generic\tier4\pussplumjam.png items\generic\tier4\pussplumtart.consumable items\generic\tier5\16gbpasty.consumable items\generic\tier5\8gbpizzap.consumable items\generic\tier5\boltos.consumable items\generic\tier5\eggshooticecream.consumable items\generic\tier5\eggshootsalad.consumable items\generic\tier5\eyebowls.consumable items\generic\tier5\nutsandbolts.consumable items\generic\tier5\piodia.consumable items\generic\tier5\smash.consumable items\generic\tier6\burningeyeballs.consumable items\generic\tier6\coralcreepcurry.consumable items\generic\tier6\hotbone.consumable items\generic\tier6\hothothotpot.consumable items\generic\tier6\neonmelonjam.consumable items\generic\tier6\pearlpeaparcels.consumable items\generic\tier6\pozest.consumable items\generic\tier6\spicyfeathercrown.consumable items\generic\tier6\spicyribs.consumable items\generic\tier6\ultimatejuice.consumable items\generic\tier6\volcanicsalsa.consumable items\generic\tier6\wartweedjam.consumable items\generic\tier6\wartweedjamdonut.consumable items\generic\tier6\wartweedstew.consumable monsters\boss\cultistboss\cultistboss.monstertype npcs\bmain.lua npcs\crewmember.npctype npcs\villager.npctype npcs\mission\protectoratehallstudent1.npctype npcs\mission\protectoratehallstudent2.npctype npcs\mission\protectoratehallstudent4.npctype npcs\mission\protectoratehallstudent5.npctype [NEW] npcs\story\baron.npctype [NEW] npcs\story\koichi.npctype npcs\story\koichihologram.npctype [NEW] objects\hylotl\clubceilinglights\clubceilinglights.animation objects\hylotl\clubceilinglights\clubceilinglights.frames objects\hylotl\clubceilinglights\clubceilinglights.object [NEW] objects\hylotl\clubceilinglights\clubceilinglightslit.frames [NEW] objects\hylotl\clubceilinglights\clubceilinglightslit.png [NEW] objects\hylotl\clubceilinglightsgreen\clubceilinglightsgreen.animation [NEW] objects\hylotl\clubceilinglightsgreen\clubceilinglightsgreen.frames [NEW] objects\hylotl\clubceilinglightsgreen\clubceilinglightsgreen.object [NEW] objects\hylotl\clubceilinglightsgreen\clubceilinglightsgreen.png [NEW] objects\hylotl\clubceilinglightsgreen\clubceilinglightsgreenicon.png [NEW] objects\hylotl\clubceilinglightsgreen\clubceilinglightsgreenlit.frames [NEW] objects\hylotl\clubceilinglightsgreen\clubceilinglightsgreenlit.png [NEW] objects\hylotl\clubceilinglightsred\clubceilinglightsred.animation [NEW] objects\hylotl\clubceilinglightsred\clubceilinglightsred.frames [NEW] objects\hylotl\clubceilinglightsred\clubceilinglightsred.object [NEW] objects\hylotl\clubceilinglightsred\clubceilinglightsred.png [NEW] objects\hylotl\clubceilinglightsred\clubceilinglightsredicon.png [NEW] objects\hylotl\clubceilinglightsred\clubceilinglightsredlit.frames [NEW] objects\hylotl\clubceilinglightsred\clubceilinglightsredlit.png [NEW] objects\hylotl\clubceilinglightsyellow\clubceilinglightsyellow.animation [NEW] objects\hylotl\clubceilinglightsyellow\clubceilinglightsyellow.frames [NEW] objects\hylotl\clubceilinglightsyellow\clubceilinglightsyellow.object [NEW] objects\hylotl\clubceilinglightsyellow\clubceilinglightsyellow.png [NEW] objects\hylotl\clubceilinglightsyellow\clubceilinglightsyellowicon.png [NEW] objects\hylotl\clubceilinglightsyellow\clubceilinglightsyellowlit.frames [NEW] objects\hylotl\clubceilinglightsyellow\clubceilinglightsyellowlit.png objects\outpost\penguinbay\penguinbay.object objects\outpost\shipyardcaptain\shipyardcaptain.object objects\protectorate\03\03back.png objects\protectorate\05\05back.png objects\protectorate\06\06back.png [NEW] objects\protectorate\07\07back.animation [NEW] objects\protectorate\07\07back.frames [NEW] objects\protectorate\07\07back.lua objects\protectorate\07\07back.object objects\protectorate\07\07back.png objects\protectorate\11\11back.png objects\protectorate\12\12back.png [NEW] objects\protectorate\objects\protectorateamp\protectorateamp.png [NEW] objects\protectorate\objects\protectoratebooks\protectoratebooks.png [NEW] objects\protectorate\objects\protectorateclock\protectorateclock.png objects\protectorate\objects\protectorateflower\protectorateflower.object [NEW] objects\protectorate\objects\protectorategamesconsole\protectorategamesconsole.png [NEW] objects\protectorate\objects\protectorateguitar\protectorateguitar.png [NEW] objects\protectorate\objects\protectoratehologlobe\hologlobe.png [NEW] objects\protectorate\objects\protectoratehologlobe\hologlobelit.png objects\protectorate\objects\protectoratelightrays\protectoratelightrays.object objects\protectorate\objects\protectoratelightrays\protectoratelightrays.png objects\protectorate\objects\protectorateship\protectorateship.object [NEW] objects\protectorate\objects\protectoratetoolbox\protectoratetoolbox.frames [NEW] objects\protectorate\objects\protectoratetoolbox\protectoratetoolbox.object [NEW] objects\protectorate\objects\protectoratetoolbox\protectoratetoolbox.png [NEW] objects\protectorate\objects\protectoratetoolbox\protectoratetoolboxicon.png [NEW] objects\protectorate\objects\protectoratetrash\protectoratetrash.png [NEW] objects\protectorate\objects\protectoratewastebin\protectoratewastebin.png [NEW] objects\protectorate\objects\protectoratewindbanner\protectoratewindbanner.frames [NEW] objects\protectorate\objects\protectoratewindbanner\protectoratewindbanner.object [NEW] objects\protectorate\objects\protectoratewindbanner\protectoratewindbanner.png [NEW] objects\protectorate\objects\protectoratewindbanner\protectoratewindbannericon.png [NEW] objects\protectorate\objects\protectoratewindbanner2\protectoratewindbanner2.frames [NEW] objects\protectorate\objects\protectoratewindbanner2\protectoratewindbanner2.object [NEW] objects\protectorate\objects\protectoratewindbanner2\protectoratewindbanner2.png [NEW] objects\protectorate\objects\protectoratewindbanner2\protectoratewindbanner2icon.png [NEW] objects\protectorate\objects\protectoratewindbanner3\protectoratewindbanner3.frames [NEW] objects\protectorate\objects\protectoratewindbanner3\protectoratewindbanner3.object [NEW] objects\protectorate\objects\protectoratewindbanner3\protectoratewindbanner3.png [NEW] objects\protectorate\objects\protectoratewindbanner3\protectoratewindbanner3icon.png [NEW] objects\scripts\breakoninteract.lua objects\spawner\colonydeed\colonydeed.lua objects\wired\alarm\alarm.lua projectiles\boss\cultistboss\energyshard\energyshard.projectile [NEW] quests\outpost\shipupgrade\shipupgrade1.questtemplate [NEW] quests\outpost\shipupgrade\shipupgrade2.questtemplate [NEW] quests\outpost\shipupgrade\shipupgrade3.questtemplate [NEW] quests\outpost\shipupgrade\shipupgrade4.questtemplate [NEW] quests\outpost\shipupgrade\shipupgrade5.questtemplate quests\scripts\main.lua quests\scripts\tutorial\protectorate.lua quests\tutorial\protectorate.questtemplate radiomessages\intro.radiomessages [NEW] radiomessages\ship.radiomessages [NEW] recipes\cookingtable1\condiments\alienfruitjam.recipe [NEW] recipes\cookingtable1\condiments\beakseedjam.recipe [NEW] recipes\cookingtable1\condiments\desertsalsa.recipe [NEW] recipes\cookingtable1\condiments\feathercrownjam.recipe [NEW] recipes\cookingtable1\condiments\kiwijam.recipe [NEW] recipes\cookingtable1\condiments\neonmelonjam.recipe [NEW] recipes\cookingtable1\condiments\oceansalsa.recipe [NEW] recipes\cookingtable1\condiments\pearlpeajam.recipe [NEW] recipes\cookingtable1\condiments\pineapplejam.recipe [NEW] recipes\cookingtable1\condiments\pussplumjam.recipe [NEW] recipes\cookingtable1\condiments\relish.recipe [NEW] recipes\cookingtable1\condiments\toxictopjam.recipe [NEW] recipes\cookingtable1\condiments\volcanicsalsa.recipe [NEW] recipes\cookingtable1\condiments\wartweedjam.recipe [NEW] recipes\cookingtable1\desserts\apegrapes.recipe [NEW] recipes\cookingtable1\desserts\applecrumble.recipe [NEW] recipes\cookingtable1\desserts\avesmingoicecream.recipe [NEW] recipes\cookingtable1\desserts\bananacreampie.recipe [NEW] recipes\cookingtable1\desserts\bananaicecream.recipe [NEW] recipes\cookingtable1\desserts\bananasplit.recipe [NEW] recipes\cookingtable1\desserts\batteredbanana.recipe [NEW] recipes\cookingtable1\desserts\beakseedtart.recipe [NEW] recipes\cookingtable1\desserts\bonbonbonbons.recipe recipes\cookingtable1\desserts\bonbons.recipe [NEW] recipes\cookingtable1\desserts\brineapple.recipe [NEW] recipes\cookingtable1\desserts\cactiicecream.recipe recipes\cookingtable1\desserts\cake.recipe [NEW] recipes\cookingtable1\desserts\campfirebanana.recipe [NEW] recipes\cookingtable1\desserts\carrotcake.recipe [NEW] recipes\cookingtable1\desserts\chocolatecake.recipe [NEW] recipes\cookingtable1\desserts\coconuticecream.recipe [NEW] recipes\cookingtable1\desserts\coffeecake.recipe [NEW] recipes\cookingtable1\desserts\eggshooticecream.recipe [NEW] recipes\cookingtable1\desserts\fruitsalad.recipe [NEW] recipes\cookingtable1\desserts\oculemonmeringue.recipe [NEW] recipes\cookingtable1\desserts\pussplumpudding.recipe [NEW] recipes\cookingtable1\desserts\pussplumtart.recipe [NEW] recipes\cookingtable1\desserts\ricepudding.recipe [NEW] recipes\cookingtable1\desserts\snowcone.recipe [NEW] recipes\cookingtable1\desserts\toxictart.recipe [NEW] recipes\cookingtable1\drinks\alienfruitjuice.recipe [NEW] recipes\cookingtable1\drinks\automatoshake.recipe [NEW] recipes\cookingtable1\drinks\avesmingojuice.recipe [NEW] recipes\cookingtable1\drinks\bloodypuss.recipe recipes\cookingtable1\drinks\bottledwater.recipe [NEW] recipes\cookingtable1\drinks\cactusjuice.recipe [NEW] recipes\cookingtable1\drinks\carrotjuice.recipe [NEW] recipes\cookingtable1\drinks\coconutmilk.recipe recipes\cookingtable1\drinks\coffee.recipe [NEW] recipes\cookingtable1\drinks\cyanider.recipe [NEW] recipes\cookingtable1\drinks\flatwhite.recipe [NEW] recipes\cookingtable1\drinks\grapejuice.recipe [NEW] recipes\cookingtable1\drinks\kiwijuice.recipe [NEW] recipes\cookingtable1\drinks\mocha.recipe [NEW] recipes\cookingtable1\drinks\pineapplejuice.recipe [NEW] recipes\cookingtable1\drinks\pozest.recipe [NEW] recipes\cookingtable1\drinks\reefjuice.recipe [NEW] recipes\cookingtable1\drinks\reefshake.recipe [NEW] recipes\cookingtable1\drinks\sweetpunch.recipe [NEW] recipes\cookingtable1\drinks\thornjuice.recipe [NEW] recipes\cookingtable1\drinks\tomatojuice.recipe [NEW] recipes\cookingtable1\drinks\toxicjuice.recipe [NEW] recipes\cookingtable1\drinks\tropicalpunch.recipe [NEW] recipes\cookingtable1\drinks\ultimatejuice.recipe [NEW] recipes\cookingtable1\mains\16gbpasty.recipe [NEW] recipes\cookingtable1\mains\8gbpizzap.recipe [NEW] recipes\cookingtable1\mains\apexfritter.recipe [NEW] recipes\cookingtable1\mains\automatostew.recipe [NEW] recipes\cookingtable1\mains\baconpancakes.recipe [NEW] recipes\cookingtable1\mains\boltos.recipe [NEW] recipes\cookingtable1\mains\cheeseburger.recipe [NEW] recipes\cookingtable1\mains\coralcreepcurry.recipe [NEW] recipes\cookingtable1\mains\cornpeckers.recipe [NEW] recipes\cookingtable1\mains\featherfood.recipe recipes\cookingtable1\mains\fishdumplings.recipe recipes\cookingtable1\mains\fishfingers.recipe [NEW] recipes\cookingtable1\mains\fishinabone.recipe recipes\cookingtable1\mains\fishnchips.recipe recipes\cookingtable1\mains\fishpie.recipe recipes\cookingtable1\mains\fishstew.recipe [NEW] recipes\cookingtable1\mains\hamburger.recipe [NEW] recipes\cookingtable1\mains\hothothotpot.recipe recipes\cookingtable1\mains\meatdumplings.recipe recipes\cookingtable1\mains\meatpie.recipe recipes\cookingtable1\mains\meatstew.recipe [NEW] recipes\cookingtable1\mains\mushroomquiche.recipe [NEW] recipes\cookingtable1\mains\oceanrisotto.recipe [NEW] recipes\cookingtable1\mains\oceansurprise.recipe [NEW] recipes\cookingtable1\mains\oculemonstew.recipe [NEW] recipes\cookingtable1\mains\omelette.recipe [NEW] recipes\cookingtable1\mains\pasty.recipe [NEW] recipes\cookingtable1\mains\pearlpeapancakes.recipe recipes\cookingtable1\mains\pearlpearisotto.recipe [NEW] recipes\cookingtable1\mains\pineapplepizzaslice.recipe [NEW] recipes\cookingtable1\mains\piodia.recipe [NEW] recipes\cookingtable1\mains\pizzaslice.recipe [NEW] recipes\cookingtable1\mains\porridge.recipe [NEW] recipes\cookingtable1\mains\quichelorraine.recipe [NEW] recipes\cookingtable1\mains\reefpodsurprise.recipe [NEW] recipes\cookingtable1\mains\roastdinner.recipe [NEW] recipes\cookingtable1\mains\seafoodgratin.recipe [NEW] recipes\cookingtable1\mains\spicyribs.recipe [NEW] recipes\cookingtable1\mains\spookypie.recipe [NEW] recipes\cookingtable1\mains\stickyribs.recipe [NEW] recipes\cookingtable1\mains\sushi.recipe [NEW] recipes\cookingtable1\mains\wartweedstew.recipe [NEW] recipes\cookingtable1\sides\2kbpotage.recipe [NEW] recipes\cookingtable1\sides\bananacon.recipe [NEW] recipes\cookingtable1\sides\beakseedbread.recipe recipes\cookingtable1\sides\boiledpearlpeas.recipe [NEW] recipes\cookingtable1\sides\bread.recipe [NEW] recipes\cookingtable1\sides\burningeyeballs.recipe [NEW] recipes\cookingtable1\sides\carrotbread.recipe [NEW] recipes\cookingtable1\sides\carrotsoup.recipe [NEW] recipes\cookingtable1\sides\coconutrice.recipe recipes\cookingtable1\sides\corncob.recipe [NEW] recipes\cookingtable1\sides\eggshootsalad.recipe [NEW] recipes\cookingtable1\sides\eyebowls.recipe [NEW] recipes\cookingtable1\sides\fluffyruffs.recipe [NEW] recipes\cookingtable1\sides\gardensalad.recipe [NEW] recipes\cookingtable1\sides\hotbone.recipe recipes\cookingtable1\sides\mashedpotato.recipe [NEW] recipes\cookingtable1\sides\mushroombread.recipe [NEW] recipes\cookingtable1\sides\mushroomrice.recipe recipes\cookingtable1\sides\pearlpeabroth.recipe [NEW] recipes\cookingtable1\sides\pearlpeaparcels.recipe [NEW] recipes\cookingtable1\sides\ricecake.recipe [NEW] recipes\cookingtable1\sides\saltsalad.recipe [NEW] recipes\cookingtable1\sides\smash.recipe [NEW] recipes\cookingtable1\sides\soggysack.recipe [NEW] recipes\cookingtable1\sides\specialrice.recipe [NEW] recipes\cookingtable1\sides\spicyfeathercrown.recipe [NEW] recipes\cookingtable1\sides\stuffedautomato.recipe [NEW] recipes\cookingtable1\sides\stuffeddirturchin.recipe [NEW] recipes\cookingtable1\sides\stuffedtomato.recipe [NEW] recipes\cookingtable1\sides\sweetmeat.recipe [NEW] recipes\cookingtable1\sides\tomatosoup.recipe [NEW] recipes\cookingtable1\snacks\bananacreamdonut.recipe [NEW] recipes\cookingtable1\snacks\candiedcorn.recipe [NEW] recipes\cookingtable1\snacks\candyapple.recipe [NEW] recipes\cookingtable1\snacks\candyautomato.recipe [NEW] recipes\cookingtable1\snacks\choconut.recipe [NEW] recipes\cookingtable1\snacks\luckydip.recipe [NEW] recipes\cookingtable1\snacks\nutsandbolts.recipe [NEW] recipes\cookingtable1\snacks\spikycookies.recipe [NEW] recipes\cookingtable1\snacks\spookydonut.recipe recipes\cookingtable1\snacks\sweetpopcorn.recipe [NEW] recipes\cookingtable1\snacks\toxicjamdonut.recipe [NEW] recipes\cookingtable1\snacks\wartweedjamdonut.recipe scripts\tenant.lua scripts\actions\dialog.lua scripts\companions\petspawner.lua scripts\companions\player.lua scripts\companions\recruitable.lua scripts\companions\recruitspawner.lua scripts\quest\participant.lua [NEW] ships\licenses.config stagehands\mission\protectoratemanager.lua stats\effects\bandage\bandage.animation stats\effects\rage\rageaugment1.statuseffect stats\effects\rage\rageaugment2.statuseffect stats\effects\rage\rageaugment3.statuseffect stats\effects\rage\ragecollar1.statuseffect stats\effects\rage\ragecollar2.statuseffect stats\effects\rage\ragecollar3.statuseffect stats\effects\rage\ragefood.statuseffect [NEW] stats\effects\rage\rageweak.lua stats\effects\thorns\nova.statuseffect tilesets\packed\objects-by-category\decorative.json tilesets\packed\objects-by-category\other.json tilesets\packed\objects-by-colonytag\hylotl.json tilesets\packed\objects-by-colonytag\hylotloceancity.json tilesets\packed\objects-by-colonytag\light.json tilesets\packed\objects-by-race\hylotl.json tilesets\packed\objects-by-race\protectorate.json treasure\starter.treasurepools DIFFS ----- radiomessages.config 18c18 < "senderName" : "^cyan;[SAIL]", --- > "senderName" : "SAIL", terrestrial_worlds.config 391c391,392 < "primaryRegion" : [ "oceanfloor" ] --- > "primaryRegion" : [ "oceanfloor" ], > "dungeons" : [ "hylotloceancity" ] behaviors\monsters\boss\cultistboss\cultistboss.behavior 5a6 > "/monsters/monster.lua", 7d7 < "/scripts/behavior.lua", 9c9 < "/monsters/monster.lua", --- > "/scripts/behavior.lua", 27a28,35 > "title": "setDying", > "type": "action", > "name": "setDying", > "parameters": { > "shouldDie": false > } > }, > { 75a84,92 > "title": "resourcePercentage", > "type": "action", > "name": "resourcePercentage", > "parameters": { > "percentage": 0, > "resource": "health" > } > }, > { 101,127c118,140 < "title": "repeater", < "type": "decorator", < "name": "repeater", < "parameters": { < "maxLoops": -1, < "untilSuccess": false < }, < "child": { < "title": "Reset", < "type": "composite", < "name": "sequence", < "parameters": {}, < "children": [ < { < "title": "halt", < "type": "action", < "name": "halt", < "parameters": {} < }, < { < "title": "cultistboss-flyingslash", < "type": "module", < "name": "cultistboss-flyingslash", < "parameters": { < "projectileAngleStep": 0.14, < "projectileCount": 8 < } --- > "title": "Reset", > "type": "composite", > "name": "sequence", > "parameters": {}, > "children": [ > { > "title": "sequentialdialognoskip", > "type": "module", > "name": "sequentialdialognoskip", > "parameters": { > "dialogWaitTime": 4, > "dialogEndWait": 4, > "dialogKey": "dialog.intro", > "dialogTarget": "target" > } > }, > { > "title": "repeater", > "type": "decorator", > "name": "repeater", > "parameters": { > "maxLoops": -1, > "untilSuccess": false 129c142 < { --- > "child": { 136c149,212 < "title": "cultistboss-dashattack", --- > "title": "halt", > "type": "action", > "name": "halt", > "parameters": {} > }, > { > "title": "cultistboss-flyingslash", > "type": "module", > "name": "cultistboss-flyingslash", > "parameters": { > "projectileAngleStep": 0.14, > "projectileCount": 8 > } > }, > { > "title": "Reset", > "type": "composite", > "name": "sequence", > "parameters": {}, > "children": [ > { > "title": "cultistboss-dashattack", > "type": "module", > "name": "cultistboss-dashattack", > "parameters": { > "dashSpeed": 75, > "dashTime": 0.43, > "teleportPosition": "cultistupperdashposition" > } > }, > { > "title": "cultistboss-dashattack", > "type": "module", > "name": "cultistboss-dashattack", > "parameters": { > "dashSpeed": 75, > "dashTime": 0.8, > "teleportPosition": "cultistlowerdashposition" > } > } > ] > }, > { > "title": "cultistboss-slash", > "type": "module", > "name": "cultistboss-slash", > "parameters": { > "idleTime": 2 > } > }, > { > "title": "cultistboss-sphereattack", > "type": "module", > "name": "cultistboss-sphereattack", > "parameters": {} > }, > { > "title": "cultistboss-exhaust", > "type": "module", > "name": "cultistboss-exhaust", > "parameters": {} > }, > { > "title": "cultistboss-beamattack", 138c214 < "name": "cultistboss-dashattack", --- > "name": "cultistboss-beamattack", 140,141c216 < "dashTime": 0.65, < "teleportPosition": "cultistupperdashposition" --- > "teleportPosition": "cultistbeamposition" 145c220 < "title": "cultistboss-dashattack", --- > "title": "cultistboss-slash", 147c222 < "name": "cultistboss-dashattack", --- > "name": "cultistboss-slash", 149,150c224 < "dashTime": 1.2, < "teleportPosition": "cultistlowerdashposition" --- > "idleTime": 2 154,189d227 < }, < { < "title": "cultistboss-slash", < "type": "module", < "name": "cultistboss-slash", < "parameters": { < "idleTime": 2 < } < }, < { < "title": "cultistboss-sphereattack", < "type": "module", < "name": "cultistboss-sphereattack", < "parameters": {} < }, < { < "title": "cultistboss-exhaust", < "type": "module", < "name": "cultistboss-exhaust", < "parameters": {} < }, < { < "title": "cultistboss-beamattack", < "type": "module", < "name": "cultistboss-beamattack", < "parameters": { < "teleportPosition": "cultistbeamposition" < } < }, < { < "title": "cultistboss-slash", < "type": "module", < "name": "cultistboss-slash", < "parameters": { < "idleTime": 2 < } 191c229,299 < ] --- > } > ] > } > ] > }, > { > "title": "Reset", > "type": "composite", > "name": "sequence", > "parameters": {}, > "children": [ > { > "title": "inverter", > "type": "decorator", > "name": "inverter", > "parameters": {}, > "child": { > "title": "resourcePercentage", > "type": "action", > "name": "resourcePercentage", > "parameters": { > "percentage": 0, > "resource": "health" > } > } > }, > { > "title": "setAnimationState", > "type": "action", > "name": "setAnimationState", > "parameters": { > "state": "idle", > "type": "body" > } > }, > { > "title": "sequentialdialognoskip", > "type": "module", > "name": "sequentialdialognoskip", > "parameters": { > "dialogWaitTime": 4, > "dialogEndWait": 0, > "dialogKey": "dialog.death", > "dialogTarget": "target" > } > }, > { > "title": "addEphemeralEffect", > "type": "action", > "name": "addEphemeralEffect", > "parameters": { > "name": "beamout" > } > }, > { > "title": "timer", > "type": "action", > "name": "timer", > "parameters": { > "time": 0.75 > }, > "output": { > "ratio": "" > } > }, > { > "title": "setDying", > "type": "action", > "name": "setDying", > "parameters": { > "shouldDie": true behaviors\monsters\boss\cultistboss\dashattack.behavior 3d2 < "description": "", 101c100 < "time": 0.6 --- > "time": 0.4 behaviors\monsters\boss\cultistboss\sphereattack.behavior 17c17,18 < "startTime": 0.4 --- > "startTime": 0.4, > "repeats": 8 147c148 < "maxLoops": 5, --- > "maxLoops": "", behaviors\npc\crewmember.behavior 27a28,33 > "title": "Tenant Baseline Behavior", > "type": "module", > "name": "Tenant Baseline Behavior", > "parameters": {} > }, > { 256a263,268 > }, > { > "title": "converse", > "type": "module", > "name": "converse", > "parameters": {} behaviors\sequences\sequentialdialog.behavior 4a5 > "/scripts/actions/dialog.lua", 6,7c7 < "/scripts/actions/time.lua", < "/scripts/actions/dialog.lua" --- > "/scripts/actions/time.lua" cinematics\teleport.cinematic 3d2 < // "scissor" : false, 5c4 < "backgroundFadeTime" : 0.1, --- > "backgroundFadeTime" : 0.0, 17,22d15 < "alpha" : 0.0, < "position" : [480, 270] < }, < { < "timecode" : 0.05, < "zoom" : 1.3, 49,54d41 < "zoom" : 4.5, < "alpha" : 0.0, < "position" : [480, 20] < }, < { < "timecode" : 0.05, cinematics\intro\humanintrocomplete.cinematic 1847c1847 < "timecode" : 15.0, --- > "timecode" : 15.5, 1893c1893 < "timecode" : 14.2, --- > "timecode" : 14.9, 1940c1940 < "timecode" : 13.2, --- > "timecode" : 14.1, cinematics\intro\humanintrostage.cinematic 713a714,1023 > // rumble 1 > { > "timecode" : 43.02, > "zoom" : 1.5, > "alpha" : 1, > "position" : [480, 152] > }, > { > "timecode" : 43.04, > "zoom" : 1.5, > "alpha" : 1, > "position" : [482, 152] > }, > { > "timecode" : 43.06, > "zoom" : 1.5, > "alpha" : 1, > "position" : [480, 152] > }, > { > "timecode" : 43.08, > "zoom" : 1.5, > "alpha" : 1, > "position" : [481, 152] > }, > { > "timecode" : 43.1, > "zoom" : 1.5, > "alpha" : 1, > "position" : [438, 152] > }, > { > "timecode" : 43.12, > "zoom" : 1.5, > "alpha" : 1, > "position" : [481, 152] > }, > { > "timecode" : 43.14, > "zoom" : 1.5, > "alpha" : 1, > "position" : [480, 152] > }, > { > "timecode" : 43.16, > "zoom" : 1.5, > "alpha" : 1, > "position" : [481, 152] > }, > { > "timecode" : 43.18, > "zoom" : 1.5, > "alpha" : 1, > "position" : [439, 152] > }, > { > "timecode" : 43.2, > "zoom" : 1.5, > "alpha" : 1, > "position" : [480, 152] > }, > { > "timecode" : 43.22, > "zoom" : 1.5, > "alpha" : 1, > "position" : [439, 152] > }, > { > "timecode" : 43.24, > "zoom" : 1.5, > "alpha" : 1, > "position" : [482, 152] > }, > { > "timecode" : 43.26, > "zoom" : 1.5, > "alpha" : 1, > "position" : [480, 152] > }, > { > "timecode" : 43.28, > "zoom" : 1.5, > "alpha" : 1, > "position" : [481, 152] > }, > { > "timecode" : 43.3, > "zoom" : 1.5, > "alpha" : 1, > "position" : [438, 152] > }, > { > "timecode" : 43.32, > "zoom" : 1.5, > "alpha" : 1, > "position" : [481, 152] > }, > { > "timecode" : 43.34, > "zoom" : 1.5, > "alpha" : 1, > "position" : [480, 152] > }, > { > "timecode" : 43.36, > "zoom" : 1.5, > "alpha" : 1, > "position" : [481, 152] > }, > { > "timecode" : 43.38, > "zoom" : 1.5, > "alpha" : 1, > "position" : [439, 152] > }, > { > "timecode" : 43.4, > "zoom" : 1.5, > "alpha" : 1, > "position" : [480, 152] > }, > { > "timecode" : 43.42, > "zoom" : 1.5, > "alpha" : 1, > "position" : [481, 152] > }, > { > "timecode" : 43.44, > "zoom" : 1.5, > "alpha" : 1, > "position" : [480, 152] > }, > { > "timecode" : 43.46, > "zoom" : 1.5, > "alpha" : 1, > "position" : [481, 152] > }, > { > "timecode" : 43.48, > "zoom" : 1.5, > "alpha" : 1, > "position" : [439, 152] > }, > { > "timecode" : 43.5, > "zoom" : 1.5, > "alpha" : 1, > "position" : [480, 152] > }, > // end rumble 1 > { > "timecode" : 44.0, > "zoom" : 1.5, > "alpha" : 1, > "position" : [480, 152] > }, > // rumble 2 > { > "timecode" : 47.02, > "zoom" : 1.5, > "alpha" : 1, > "position" : [480, 152] > }, > { > "timecode" : 47.04, > "zoom" : 1.5, > "alpha" : 1, > "position" : [482, 152] > }, > { > "timecode" : 47.06, > "zoom" : 1.5, > "alpha" : 1, > "position" : [480, 152] > }, > { > "timecode" : 47.08, > "zoom" : 1.5, > "alpha" : 1, > "position" : [481, 152] > }, > { > "timecode" : 47.1, > "zoom" : 1.5, > "alpha" : 1, > "position" : [438, 152] > }, > { > "timecode" : 47.12, > "zoom" : 1.5, > "alpha" : 1, > "position" : [481, 152] > }, > { > "timecode" : 47.14, > "zoom" : 1.5, > "alpha" : 1, > "position" : [480, 152] > }, > { > "timecode" : 47.16, > "zoom" : 1.5, > "alpha" : 1, > "position" : [481, 152] > }, > { > "timecode" : 47.18, > "zoom" : 1.5, > "alpha" : 1, > "position" : [439, 152] > }, > { > "timecode" : 47.2, > "zoom" : 1.5, > "alpha" : 1, > "position" : [480, 152] > }, > { > "timecode" : 47.22, > "zoom" : 1.5, > "alpha" : 1, > "position" : [439, 152] > }, > { > "timecode" : 47.24, > "zoom" : 1.5, > "alpha" : 1, > "position" : [482, 152] > }, > { > "timecode" : 47.26, > "zoom" : 1.5, > "alpha" : 1, > "position" : [480, 152] > }, > { > "timecode" : 47.28, > "zoom" : 1.5, > "alpha" : 1, > "position" : [481, 152] > }, > { > "timecode" : 47.3, > "zoom" : 1.5, > "alpha" : 1, > "position" : [438, 152] > }, > { > "timecode" : 47.32, > "zoom" : 1.5, > "alpha" : 1, > "position" : [481, 152] > }, > { > "timecode" : 47.34, > "zoom" : 1.5, > "alpha" : 1, > "position" : [480, 152] > }, > { > "timecode" : 47.36, > "zoom" : 1.5, > "alpha" : 1, > "position" : [481, 152] > }, > { > "timecode" : 47.38, > "zoom" : 1.5, > "alpha" : 1, > "position" : [439, 152] > }, > { > "timecode" : 47.4, > "zoom" : 1.5, > "alpha" : 1, > "position" : [480, 152] > }, > { > "timecode" : 47.42, > "zoom" : 1.5, > "alpha" : 1, > "position" : [481, 152] > }, > { > "timecode" : 47.44, > "zoom" : 1.5, > "alpha" : 1, > "position" : [480, 152] > }, > { > "timecode" : 47.46, > "zoom" : 1.5, > "alpha" : 1, > "position" : [481, 152] > }, > { > "timecode" : 47.48, > "zoom" : 1.5, > "alpha" : 1, > "position" : [439, 152] > }, > { > "timecode" : 47.5, > "zoom" : 1.5, > "alpha" : 1, > "position" : [480, 152] > }, > // end rumble 2 814c1124 < // ------------------ tentacle hole --- > // ------------------ wreckedpodium 819c1129 < "image" : "/cinematics/story/tentaclehole.png" --- > "image" : "/cinematics/story/wreckedpodium.png" 827c1137 < "position" : [470, 80.5] --- > "position" : [460, 190] 833c1143 < "position" : [470, 80.5] --- > "position" : [460, 190] 836c1146 < "timecode" : 61, --- > "timecode" : 60, 839c1149 < "position" : [470, 80.5] --- > "position" : [460, 200] 842c1152 < "timecode" : 61.3, --- > "timecode" : 60.25, 845c1155 < "position" : [470, 80.5] --- > "position" : [460, 200] 850c1160 < // ------------------ podium --- > // ------------------ tentacle hole 855c1165 < "image" : "/cinematics/story/podium.png" --- > "image" : "/cinematics/story/tentaclehole.png" 860c1170 < "timecode" : 2.01, --- > "timecode" : 53.4, 863c1173 < "position" : [480, 152] --- > "position" : [470, 80.5] 866c1176 < "timecode" : 2.3, --- > "timecode" : 53.45, 869c1179 < "position" : [480, 152] --- > "position" : [470, 80.5] 872c1182 < "timecode" : 53.4, --- > "timecode" : 61, 875c1185 < "position" : [480, 152] --- > "position" : [470, 80.5] 878c1188 < "timecode" : 53.45, --- > "timecode" : 61.3, 881c1191,1607 < "position" : [480, 152] --- > "position" : [470, 80.5] > } > ] > }, > > // ------------------ podium > > { > "drawables" : [ > { > "image" : "/cinematics/story/podium.png" > } > ], > "keyframes" : [ > { > "timecode" : 2.01, > "zoom" : 1.5, > "alpha" : 0, > "position" : [480, 152] > }, > { > "timecode" : 2.3, > "zoom" : 1.5, > "alpha" : 1, > "position" : [480, 152] > }, > // rumble 1 > { > "timecode" : 43.02, > "zoom" : 1.5, > "alpha" : 1, > "position" : [480, 152] > }, > { > "timecode" : 43.04, > "zoom" : 1.5, > "alpha" : 1, > "position" : [482, 152] > }, > { > "timecode" : 43.06, > "zoom" : 1.5, > "alpha" : 1, > "position" : [480, 152] > }, > { > "timecode" : 43.08, > "zoom" : 1.5, > "alpha" : 1, > "position" : [481, 152] > }, > { > "timecode" : 43.1, > "zoom" : 1.5, > "alpha" : 1, > "position" : [438, 152] > }, > { > "timecode" : 43.12, > "zoom" : 1.5, > "alpha" : 1, > "position" : [481, 152] > }, > { > "timecode" : 43.14, > "zoom" : 1.5, > "alpha" : 1, > "position" : [480, 152] > }, > { > "timecode" : 43.16, > "zoom" : 1.5, > "alpha" : 1, > "position" : [481, 152] > }, > { > "timecode" : 43.18, > "zoom" : 1.5, > "alpha" : 1, > "position" : [439, 152] > }, > { > "timecode" : 43.2, > "zoom" : 1.5, > "alpha" : 1, > "position" : [480, 152] > }, > { > "timecode" : 43.22, > "zoom" : 1.5, > "alpha" : 1, > "position" : [439, 152] > }, > { > "timecode" : 43.24, > "zoom" : 1.5, > "alpha" : 1, > "position" : [482, 152] > }, > { > "timecode" : 43.26, > "zoom" : 1.5, > "alpha" : 1, > "position" : [480, 152] > }, > { > "timecode" : 43.28, > "zoom" : 1.5, > "alpha" : 1, > "position" : [481, 152] > }, > { > "timecode" : 43.3, > "zoom" : 1.5, > "alpha" : 1, > "position" : [438, 152] > }, > { > "timecode" : 43.32, > "zoom" : 1.5, > "alpha" : 1, > "position" : [481, 152] > }, > { > "timecode" : 43.34, > "zoom" : 1.5, > "alpha" : 1, > "position" : [480, 152] > }, > { > "timecode" : 43.36, > "zoom" : 1.5, > "alpha" : 1, > "position" : [481, 152] > }, > { > "timecode" : 43.38, > "zoom" : 1.5, > "alpha" : 1, > "position" : [439, 152] > }, > { > "timecode" : 43.4, > "zoom" : 1.5, > "alpha" : 1, > "position" : [480, 152] > }, > { > "timecode" : 43.42, > "zoom" : 1.5, > "alpha" : 1, > "position" : [481, 152] > }, > { > "timecode" : 43.44, > "zoom" : 1.5, > "alpha" : 1, > "position" : [480, 152] > }, > { > "timecode" : 43.46, > "zoom" : 1.5, > "alpha" : 1, > "position" : [481, 152] > }, > { > "timecode" : 43.48, > "zoom" : 1.5, > "alpha" : 1, > "position" : [439, 152] > }, > { > "timecode" : 43.5, > "zoom" : 1.5, > "alpha" : 1, > "position" : [480, 152] > }, > // end rumble 1 > { > "timecode" : 44.0, > "zoom" : 1.5, > "alpha" : 1, > "position" : [480, 152] > }, > // rumble 2 > { > "timecode" : 47.02, > "zoom" : 1.5, > "alpha" : 1, > "position" : [480, 152] > }, > { > "timecode" : 47.04, > "zoom" : 1.5, > "alpha" : 1, > "position" : [482, 152] > }, > { > "timecode" : 47.06, > "zoom" : 1.5, > "alpha" : 1, > "position" : [480, 152] > }, > { > "timecode" : 47.08, > "zoom" : 1.5, > "alpha" : 1, > "position" : [481, 152] > }, > { > "timecode" : 47.1, > "zoom" : 1.5, > "alpha" : 1, > "position" : [438, 152] > }, > { > "timecode" : 47.12, > "zoom" : 1.5, > "alpha" : 1, > "position" : [481, 152] > }, > { > "timecode" : 47.14, > "zoom" : 1.5, > "alpha" : 1, > "position" : [480, 152] > }, > { > "timecode" : 47.16, > "zoom" : 1.5, > "alpha" : 1, > "position" : [481, 152] > }, > { > "timecode" : 47.18, > "zoom" : 1.5, > "alpha" : 1, > "position" : [439, 152] > }, > { > "timecode" : 47.2, > "zoom" : 1.5, > "alpha" : 1, > "position" : [480, 152] > }, > { > "timecode" : 47.22, > "zoom" : 1.5, > "alpha" : 1, > "position" : [439, 152] > }, > { > "timecode" : 47.24, > "zoom" : 1.5, > "alpha" : 1, > "position" : [482, 152] > }, > { > "timecode" : 47.26, > "zoom" : 1.5, > "alpha" : 1, > "position" : [480, 152] > }, > { > "timecode" : 47.28, > "zoom" : 1.5, > "alpha" : 1, > "position" : [481, 152] > }, > { > "timecode" : 47.3, > "zoom" : 1.5, > "alpha" : 1, > "position" : [438, 152] > }, > { > "timecode" : 47.32, > "zoom" : 1.5, > "alpha" : 1, > "position" : [481, 152] > }, > { > "timecode" : 47.34, > "zoom" : 1.5, > "alpha" : 1, > "position" : [480, 152] > }, > { > "timecode" : 47.36, > "zoom" : 1.5, > "alpha" : 1, > "position" : [481, 152] > }, > { > "timecode" : 47.38, > "zoom" : 1.5, > "alpha" : 1, > "position" : [439, 152] > }, > { > "timecode" : 47.4, > "zoom" : 1.5, > "alpha" : 1, > "position" : [480, 152] > }, > { > "timecode" : 47.42, > "zoom" : 1.5, > "alpha" : 1, > "position" : [481, 152] > }, > { > "timecode" : 47.44, > "zoom" : 1.5, > "alpha" : 1, > "position" : [480, 152] > }, > { > "timecode" : 47.46, > "zoom" : 1.5, > "alpha" : 1, > "position" : [481, 152] > }, > { > "timecode" : 47.48, > "zoom" : 1.5, > "alpha" : 1, > "position" : [439, 152] > }, > { > "timecode" : 47.5, > "zoom" : 1.5, > "alpha" : 1, > "position" : [480, 152] > }, > // end rumble 2 > { > "timecode" : 53.4, > "zoom" : 1.5, > "alpha" : 1, > "position" : [480, 152] > }, > { > "timecode" : 53.45, > "zoom" : 1.5, > "alpha" : 0, > "position" : [480, 152] > } > ] > }, > > // ------------------ flung people left > { > "drawables" : [ > { > "image" : "/cinematics/story/flunghumansleft.png" > } > ], > "keyframes" : [ > { > "timecode" : 48.199, > "zoom" : 0.5, > "alpha" : 0, > "position" : [340, 230] > }, > { > "timecode" : 48.2, > "zoom" : 0.5, > "alpha" : 1, > "position" : [340, 230] > }, > { > "timecode" : 53.299, > "zoom" : 0.5, > "alpha" : 1, > "position" : [350, 240] > }, > { > "timecode" : 53.3, > "zoom" : 0.5, > "alpha" : 0.0, > "position" : [350, 240] > } > ] > }, > > // ------------------ flung people right > { > "drawables" : [ > { > "image" : "/cinematics/story/flunghumansright.png" > } > ], > "keyframes" : [ > { > "timecode" : 48.199, > "zoom" : 0.5, > "alpha" : 0, > "position" : [620, 270] > }, > { > "timecode" : 48.2, > "zoom" : 0.5, > "alpha" : 1, > "position" : [620, 270] > }, > { > "timecode" : 53.299, > "zoom" : 0.5, > "alpha" : 1, > "position" : [615, 290] > }, > { > "timecode" : 53.3, > "zoom" : 0.5, > "alpha" : 0.0, > "position" : [615, 290] dungeons\hylotl\hylotloceancity\hylotloceancity.dungeon 36c36 < "name" : "ground1", --- > "name" : "hylotlground1", 42c42 < "def" : [ "tmx", "ground1.json" ], --- > "def" : [ "tmx", "hylotlground1.json" ], 46c46 < "name" : "vertical1", --- > "name" : "hylotlvertical1", 52c52,72 < "def" : [ "tmx", "vertical1.json" ], --- > "def" : [ "tmx", "hylotlvertical1.json" ], > "chance" : 1 > }, > { > "name" : "hylotlvertical2", > "rules" : [ > //[ "maxSpawnCount", [3] ], > // [ "doNotCombineWith", [ "examplepiece" ] ] > [ "ignorePartMaximumRule" ] > ], > "def" : [ "tmx", "hylotlvertical2.json" ], > "chance" : 1 > }, > { > "name" : "hylotlvertical3", > "rules" : [ > //[ "maxSpawnCount", [3] ], > // [ "doNotCombineWith", [ "examplepiece" ] ] > [ "ignorePartMaximumRule" ] > ], > "def" : [ "tmx", "hylotlvertical3.json" ], dungeons\hylotl\hylotlvillage\hylotlvillagetemplate.json [TMX file differences are left out for huge size.] dungeons\missions\hylotlmissions\hylotlmission1.json [TMX file differences are left out for huge size.] dungeons\missions\protectorate\protectorate.json [TMX file differences are left out for huge size.] interface\chat\chat.config 20c20,21 < "commandResult" : "^shadow,lightgray;" --- > "commandResult" : "^shadow,lightgray;", > "radioMessage" : "^shadow,cyan;" interface\windowconfig\chatbubbles.config 10c10 < "maxMessagePerEntity" : 2, --- > "maxMessagePerEntity" : 1, interface\windowconfig\craftingfood.config 221,222c221,222 < "file" : "/interface/crafting/tabicon_materials.png", < "position" : [144, 223], --- > "file" : "/interface/crafting/tabicon_condiments.png", > "position" : [144, 222], 275c275 < "filter" : [ "materials" ] --- > "filter" : [ "condiments" ] items\armors\decorative\hats\protectorateflower\protectorateflower.head 15,17d14 < "statusEffects" : [ < ], < 19,20c16,17 < /* denim */ < { "ffca8a" : "cacdd0", "e0975c" : "8599ad", "a85636" : "627890", "6f2919" : "515a7f" }, --- > /* PINK */ > { "ffca8a" : "eab3db", "e0975c" : "d35eae", "a85636" : "97276d", "6f2919" : "59163f" }, items\generic\produce\avesmingo.consumable 12c12,13 < ] --- > ], > "learnBlueprintsOnPickup" : [ "avesmingojuice", "avesmingoicecream" ] items\generic\produce\pussplum.consumable 14c14 < "learnBlueprintsOnPickup" : [ "pussplumtart" ] --- > "learnBlueprintsOnPickup" : [ "pussplumjam" ] items\generic\shop\cannedfood.consumable 4c4 < "price" : 20, --- > "price" : 50, 6c6 < "description" : "Canned food. Not the best, but it'll do in a pinch.", --- > "description" : "Not the best quality food, but it will keep for much longer.", items\generic\shop\meatballs.consumable 4c4 < "price" : 20, --- > "price" : 75, 6,7c6,7 < "description" : "Meatballs in a can. Not quite homemade, but then again, we're in space.", < "shortdescription" : "Meatballs", --- > "description" : "Meatballs in a can. Not quite homemade, but they'll keep a lot longer.", > "shortdescription" : "Canned Meatballs", items\generic\tier4\pussplumtart.consumable 4c4 < "price" : 240, --- > "price" : 280, 11c11,15 < "duration" : 225 --- > "duration" : 180 > }, > { > "effect" : "maxenergyscalingboostfood", > "duration" : 180 14c18 < "foodValue" : 25, --- > "foodValue" : 40, items\generic\tier5\16gbpasty.consumable 10,11c10,15 < "effect" : "foodheal25", < "duration" : 60 --- > "effect" : "maxhealthscalingboostfood", > "duration" : 248 > }, > { > "effect" : "maxenergyscalingboostfood", > "duration" : 248 13a18,19 > "foodValue" : 55, > "rottingMultiplier" : 1.0, items\generic\tier5\8gbpizzap.consumable 8d7 < "handPosition" : [-2, 4], 9a9,16 > { > "effect" : "maxenergyscalingboostfood", > "duration" : 360 > } > ] ], > "foodValue" : 40, > "rottingMultiplier" : 1.0, > "blockingEffects" : [ 11c18 < ] ] --- > ] items\generic\tier5\boltos.consumable 8d7 < "handPosition" : [0, -2], 9a9,16 > { > "effect" : "maxenergyscalingboostfood", > "duration" : 180 > } > ] ], > "foodValue" : 20, > "rottingMultiplier" : 1.0, > "blockingEffects" : [ 11c18 < ] ] --- > ] items\generic\tier5\eggshooticecream.consumable 10,11c10,11 < "effect" : "foodheal25", < "duration" : 60 --- > "effect" : "maxenergyscalingboostfood", > "duration" : 360 13a14,15 > "foodValue" : 40, > "rottingMultiplier" : 1.0, items\generic\tier5\eggshootsalad.consumable 8d7 < "handPosition" : [0, 12], 9a9,16 > { > "effect" : "jumpboostfood", > "duration" : 270 > } > ] ], > "foodValue" : 30, > "rottingMultiplier" : 1.0, > "blockingEffects" : [ 11c18 < ] ] --- > ] items\generic\tier5\eyebowls.consumable 8d7 < "handPosition" : [0, 4], 9a9,16 > { > "effect" : "maxhealthscalingboostfood", > "duration" : 270 > } > ] ], > "foodValue" : 30, > "rottingMultiplier" : 1.0, > "blockingEffects" : [ 11c18 < ] ] --- > ] items\generic\tier5\nutsandbolts.consumable 7,8c7 < "shortdescription" : "Nuts n' Bolts", < "handPosition" : [0, -4], --- > "shortdescription" : "Nuts'n'Bolts", 9a9,16 > { > "effect" : "maxenergyscalingboostfood", > "duration" : 225 > } > ] ], > "foodValue" : 25, > "rottingMultiplier" : 1.0, > "blockingEffects" : [ 11c18 < ] ] --- > ] items\generic\tier5\piodia.consumable 8d7 < "handPosition" : [-2, 4], 9a9,16 > { > "effect" : "maxenergyscalingboostfood", > "duration" : 405 > } > ] ], > "foodValue" : 45, > "rottingMultiplier" : 1.0, > "blockingEffects" : [ 11c18 < ] ] --- > ] items\generic\tier5\smash.consumable 8a9,16 > { > "effect" : "maxenergyscalingboostfood", > "duration" : 315 > } > ] ], > "foodValue" : 35, > "rottingMultiplier" : 1.0, > "blockingEffects" : [ 10c18 < ] ] --- > ] items\generic\tier6\burningeyeballs.consumable 8d7 < "handPosition" : [3, -4], 9a9,24 > { > "effect" : "maxhealthscalingboostfood", > "duration" : 158 > }, > { > "effect" : "nova", > "duration" : 158 > }, > { > "effect" : "burning", > "duration" : 5 > } > ] ], > "foodValue" : 35, > "rottingMultiplier" : 1.0, > "blockingEffects" : [ 11c26 < ] ] --- > ] items\generic\tier6\coralcreepcurry.consumable 8d7 < "handPosition" : [0, 4], 9a9,24 > { > "effect" : "maxhealthscalingboostfood", > "duration" : 225 > }, > { > "effect" : "nova", > "duration" : 225 > }, > { > "effect" : "burning", > "duration" : 5 > } > ] ], > "foodValue" : 50, > "rottingMultiplier" : 1.0, > "blockingEffects" : [ 11c26 < ] ] --- > ] items\generic\tier6\hotbone.consumable 3c3 < "rarity" : "Uncommon", --- > "rarity" : "Common", 8d7 < "handPosition" : [3, 0], 9a9,24 > { > "effect" : "ragefood", > "duration" : 158 > }, > { > "effect" : "nova", > "duration" : 158 > }, > { > "effect" : "burning", > "duration" : 5 > } > ] ], > "foodValue" : 35, > "rottingMultiplier" : 1.0, > "blockingEffects" : [ 11c26 < ] ] --- > ] items\generic\tier6\hothothotpot.consumable 3c3 < "rarity" : "Rare", --- > "rarity" : "Uncommon", 10,15c10,11 < "effect" : "burning", < "duration" : 10 < }, < { < "effect" : "runboost20", < "duration" : 60 --- > "effect" : "runboostfood", > "duration" : 150 18,19c14,15 < "effect" : "jumpboost20", < "duration" : 60 --- > "effect" : "maxhealthscalingboostfood", > "duration" : 150 22,23c18,19 < "effect" : "ragefood", < "duration" : 30 --- > "effect" : "nova", > "duration" : 150 26,27c22,23 < "effect" : "nova", < "duration" : 30 --- > "effect" : "burning", > "duration" : 5 29a26,27 > "foodValue" : 50, > "rottingMultiplier" : 1.0, items\generic\tier6\neonmelonjam.consumable 3c3 < "rarity" : "Uncommon", --- > "rarity" : "Common", 10,11c10,15 < "effect" : "foodheal25", < "duration" : 60 --- > "effect" : "runboostfood", > "duration" : 158 > }, > { > "effect" : "maxenergyscalingboostfood", > "duration" : 158 13a18,19 > "foodValue" : 35, > "rottingMultiplier" : 1.0, items\generic\tier6\pearlpeaparcels.consumable 8d7 < "handPosition" : [-8, 4], 9a9,16 > { > "effect" : "maxhealthscalingboostfood", > "duration" : 180 > } > ] ], > "foodValue" : 20, > "rottingMultiplier" : 1.0, > "blockingEffects" : [ 11c18 < ] ] --- > ] items\generic\tier6\pozest.consumable 9c9,16 < "wellfed" --- > { > "effect" : "runboostfood", > "duration" : 248 > }, > { > "effect" : "maxenergyscalingboostfood", > "duration" : 248 > } 10a18,22 > "foodValue" : 55, > "rottingMultiplier" : 1.0, > "blockingEffects" : [ > "wellfed" > ], items\generic\tier6\spicyfeathercrown.consumable 3c3 < "rarity" : "Uncommon", --- > "rarity" : "Common", 8a9,24 > { > "effect" : "jumpboostfood", > "duration" : 158 > }, > { > "effect" : "nova", > "duration" : 158 > }, > { > "effect" : "burning", > "duration" : 5 > } > ] ], > "foodValue" : 35, > "rottingMultiplier" : 1.0, > "blockingEffects" : [ 10c26 < ] ] --- > ] items\generic\tier6\spicyribs.consumable 3c3 < "rarity" : "Common", --- > "rarity" : "Uncommon", 10,11c10,11 < "effect" : "runboost20", < "duration" : 30 --- > "effect" : "maxhealthscalingboostfood", > "duration" : 180 14,15c14,15 < "effect" : "foodheal50", < "duration" : 60 --- > "effect" : "maxenergyscalingboostfood", > "duration" : 180 18,19c18,23 < "effect" : "maxhealthboost20", < "duration" : 105 --- > "effect" : "nova", > "duration" : 180 > }, > { > "effect" : "burning", > "duration" : 5 21a26,27 > "foodValue" : 60, > "rottingMultiplier" : 1.0, items\generic\tier6\ultimatejuice.consumable 8d7 < "handPosition" : [-2, 4], 10c9,28 < "wellfed" --- > { > "effect" : "runboostfood", > "duration" : 180 > }, > { > "effect" : "jumpboostfood", > "duration" : 180 > }, > { > "effect" : "ragefood", > "duration" : 180 > }, > { > "effect" : "maxhealthscalingboostfood", > "duration" : 180 > }, > { > "effect" : "maxenergyscalingboostfood", > "duration" : 180 > } 11a30,34 > "foodValue" : 100, > "rottingMultiplier" : 1.0, > "blockingEffects" : [ > "wellfed" > ], items\generic\tier6\volcanicsalsa.consumable 9c9,20 < "wellfed" --- > { > "effect" : "runboostfood", > "duration" : 180 > }, > { > "effect" : "nova", > "duration" : 180 > }, > { > "effect" : "burning", > "duration" : 5 > } 10a22,26 > "foodValue" : 40, > "rottingMultiplier" : 1.0, > "blockingEffects" : [ > "wellfed" > ], items\generic\tier6\wartweedjam.consumable 8d7 < "handPosition" : [-2, 4], 10c9,12 < "wellfed" --- > { > "effect" : "maxenergyscalingboostfood", > "duration" : 225 > } 11a14,18 > "foodValue" : 25, > "rottingMultiplier" : 1.0, > "blockingEffects" : [ > "wellfed" > ], items\generic\tier6\wartweedjamdonut.consumable 10,11c10,11 < "effect" : "foodheal25", < "duration" : 60 --- > "effect" : "maxenergyscalingboostfood", > "duration" : 630 13a14,15 > "foodValue" : 70, > "rottingMultiplier" : 1.0, items\generic\tier6\wartweedstew.consumable 8d7 < "handPosition" : [0, 4], 10c9,12 < "wellfed" --- > { > "effect" : "maxenergyscalingboostfood", > "duration" : 360 > } 11a14,18 > "foodValue" : 40, > "rottingMultiplier" : 1.0, > "blockingEffects" : [ > "wellfed" > ], monsters\boss\cultistboss\cultistboss.monstertype 24a25,48 > "chatPortrait" : "/interface/chatbubbles/nox.png", > "dialog" : { > "intro" : { > "default" : { > "default" : [ > "There are those who want power to help others...", > "And there are those who wish to use it to rule...", > "Me? I just want to slice up some protectorate scum.", > "Welcome to the terrordrome!" > ] > } > }, > "death" : { > "default" : { > "default" : [ > "Hahaha... you fool", > "While you were busy fighting me, my allies have activated the third insignia of dark destruction power", > "Take your artifact, we have no need of it", > "Ciao" > ] > } > } > }, > npcs\bmain.lua 61a62,63 > restorePreservedStorage() > 64a67,90 > -- The colony and crew systems repeatedly kill and respawn the same NPCs. > -- Certain things about them that change during their lifetime (item slots, > -- etc.) need to be preserved between spawns. > function restorePreservedStorage() > for k, v in pairs(config.getParameter("initialStorage", {})) do > if storage[k] == nil then > storage[k] = v > end > end > for slot, item in pairs(storage.itemSlots or {}) do > npc.setItemSlot(slot, item) > end > end > > function preservedStorage() > return { > itemSlots = storage.itemSlots, > relationships = storage.relationships, > criminal = storage.criminal, > stolen = storage.stolen, > extraMerchantItems = storage.extraMerchantItems > } > end > 148,151d173 < function setupTenant(...) < tenant.setHome(...) < end < 258c280 < storage.itemSlots[args.slot] = item --- > storage.itemSlots[string.lower(args.slot)] = item 300c322 < storage.itemSlots[slot] = item --- > storage.itemSlots[string.lower(slot)] = item npcs\crewmember.npctype 15a16,22 > "questGenerator" : { > // Disable participation of crewmembers in generated quests until the > // generated quest system knows how to deal with entities that can > // disappear from the world and/or change uniqueId. > "enableParticipation" : false > }, > 40a48,61 > } > }, > > "tenant" : { > "grumbles" : { > "tagCriteria" : "/dialog/grumble.config:tagCriteria", > "enclosedArea" : "/dialog/grumble.config:enclosedArea", > "otherDeed" : "/dialog/grumble.config:otherDeed", > "severe" : "/dialog/grumble.config:severe", > "final" : "/dialog/grumble.config:final" > }, > "arrivedHome" : { > "beacon" : "/dialog/arrivedhome.config:beacon", > "rent" : "/dialog/arrivedhome.config:rent" npcs\villager.npctype 13c13,18 < "enableParticipation" : true --- > "enableParticipation" : true, > > "graduation" : { > "nextNpcType" : [[1, "crewmember"]], > "chance" : 0.1 > } npcs\mission\protectoratehallstudent1.npctype 10c10 < "dropPools" : [ "villagertreasure" ], --- > "dropPools" : [ ], 22c22,23 < "Floran regrets drinking five Glorp sodas for breakfassst...", --- > "Not many Florans become Protectorsss. Floran is proud to be chosen!", > "Floran regretsss drinking five Glorp sodas for breakfassst...", npcs\mission\protectoratehallstudent2.npctype 10c10 < "dropPools" : [ "villagertreasure" ], --- > "dropPools" : [ ], 22d21 < "Proud. I cannot believe this day has finally come.", 23a23 > "Nervous. Do my bolts look big in this?", npcs\mission\protectoratehallstudent4.npctype 10c10 < "dropPools" : [ "villagertreasure" ], --- > "dropPools" : [ ], npcs\mission\protectoratehallstudent5.npctype 10c10 < "dropPools" : [ "villagertreasure" ], --- > "dropPools" : [ ], 23c23,24 < "I've been waiting here for hours..." --- > "I've been waiting here for hours...", > "Surely my dedication to timeliness will be recognized." npcs\story\koichihologram.npctype 59c59 < "Records say this library even predates our near-extinction at the hands of the, uh, Floran hoards." --- > "Records say this library even predates our near-extinction at the hands of the, uh, Floran hordes." objects\hylotl\clubceilinglights\clubceilinglights.frames 2d1 < 7c6 < [ "default", "default.off" ] --- > [ "default.1", "default.2" ] 8a8,12 > }, > > "aliases" : { > "default" : "default.1", > "default.off" : "default.2" objects\hylotl\clubceilinglights\clubceilinglights.object 7a8 > "lightPosition" : [0, 0], 20a22,30 > "flickerPeriod" : 0.4, > "flickerMinIntensity" : 0.85, > "flickerMaxIntensity" : 1.0, > "flickerPeriodVariance" : 0.2, > "flickerIntensityVariance" : 2.0, > "pointLight" : true, > "pointBeam" : 2, > "beamAmbience" : 0.5, > 24,28c34,49 < "dualImage" : "clubceilinglights.png:", < "imagePosition" : [-16, -8], < "frames" : 1, < "animationCycle" : 0.5, < --- > "image" : "clubceilinglights.png:", > "imagePosition" : [-8, 0], > "animationPosition" : [-8, 0], > "direction" : "right", > "lightPosition" : [0, 0], > "beamAngle" : -60, > "spaceScan" : 0.1, > "anchors" : [ "top" ] > }, > { > "image" : "clubceilinglights.png:", > "imagePosition" : [-8, 0], > "animationPosition" : [-8, 0], > "direction" : "left", > "lightPosition" : [0, 0], > "beamAngle" : -120, 31d51 < 33c53,64 < ] --- > ], > > "animation" : "clubceilinglights.animation", > "animationParts" : { > "bg" : "clubceilinglights.png", > "fg" : "clubceilinglightslit.png" > }, > > "scripts" : [ "/objects/wired/light/light.lua" ], > "scriptDelta" : 60, > > "inboundNodes" : [ [0, 4] ] objects\outpost\penguinbay\penguinbay.object 109,132c109,127 < "scripts" : [ "/scripts/chattyObject.lua" ], < "scriptDelta" : 20, < < "chatOptions" : [ < "Try making yourself useful around here, then we'll have something to talk about.", < "Scratch a few more backs around the Outpost and I just might scratch yours.", < "I've got some good stuff for the right person, but you're not quite right yet." < ], < < "offeredQuests" : [ < "license1.gearup", < "license2.gearup", < "license3.gearup", < "license4.gearup", < "license5.gearup" < ], < < "turnInQuests" : [ < "license1.gearup", < "license2.gearup", < "license3.gearup", < "license4.gearup", < "license5.gearup" < ], --- > "interactAction" : "OpenMerchantInterface", > "interactData" : { > "config" : "/interface/windowconfig/merchant.config", > "paneLayoutOverride" : { > "windowtitle" : { > "title" : " The Penguin Bay", > "subtitle" : " 100% legit ship licenses for sale." > } > }, > "buyFactor" : 1.0, > "sellFactor" : 0.2, > "items" : [ > { "item" : "fakelicense1", "prerequisiteShipLevel" : 3 }, > { "item" : "fakelicense2", "prerequisiteShipLevel" : 4 }, > { "item" : "fakelicense3", "prerequisiteShipLevel" : 5 }, > { "item" : "fakelicense4", "prerequisiteShipLevel" : 6 }, > { "item" : "fakelicense5", "prerequisiteShipLevel" : 7 } > ] > }, objects\outpost\shipyardcaptain\shipyardcaptain.object 40a41,48 > "turnInQuests" : [ > "shipupgrade1.gearup", > "shipupgrade2.gearup", > "shipupgrade3.gearup", > "shipupgrade4.gearup", > "shipupgrade5.gearup" > ], > objects\protectorate\07\07back.object 6c6 < "shortdescription" : "Protectorate Background", --- > "shortdescription" : "Protectorate Stage Background", 14c14 < "dualImage" : "07back.png", --- > "image" : "07back.png:default", 17a18 > "direction" : "right", 21c22,28 < ] --- > ], > > "animation" : "07back.animation", > "animationPosition" : [0, 40], > > "scripts" : ["07back.lua"], > "scriptDelta" : 0 objects\protectorate\objects\protectorateflower\protectorateflower.object 5c5 < "category" : "farmable", --- > "category" : "decorative", 8d7 < "objectType" : "farmable", 29a29,30 > "scripts" : ["/objects/scripts/breakoninteract.lua"], > "scriptDelta" : 0, 32,36c33,34 < [ [ "protectorateflower", 1, { } ] ] < ], < < "consumeSoilMoisture" : false, < "maxImmersion" : 0.25 --- > [ [ "protectorateflowerhead", 1, { } ] ] > ] objects\protectorate\objects\protectoratelightrays\protectoratelightrays.object 25c25 < "imagePosition" : [-5, 5], --- > "imagePosition" : [-5, -3], objects\protectorate\objects\protectorateship\protectorateship.object 5a6 > "scannable" : false, 28,31c29 < "spaceScan" : 0.1, < "anchors" : [], < "collision" : "platform" < --- > "anchors" : [] objects\spawner\colonydeed\colonydeed.lua 297,299c297,299 < function backupTenantStorage(uniqueId, preservedStorage) < if not storage.occupier then return nil end < for _,tenant in ipairs(storage.occupier.tenants) do --- > function findTenant(uniqueId) > if not storage.occupier then return end > for i,tenant in ipairs(storage.occupier.tenants) do 301,302c301 < tenant.preservedStorage = preservedStorage < break --- > return i 306a306,334 > function withTenant(uniqueId, func) > local i = findTenant(uniqueId) > if i then > func(storage.occupier.tenants[i]) > end > end > > function backupTenantStorage(uniqueId, preservedStorage) > withTenant(uniqueId, function (tenant) > tenant.overrides.scriptConfig = tenant.overrides.scriptConfig or {} > tenant.overrides.scriptConfig.initialStorage = preservedStorage > end) > end > > function replaceTenant(currentUniqueId, newTenantInfo) > withTenant(currentUniqueId, function (tenant) > util.mergeTable(tenant, newTenantInfo) > end) > end > > function detachTenant(uniqueId) > local i = findTenant(uniqueId) > assert(i ~= nil) > table.remove(storage.occupier.tenants, i) > if #storage.occupier.tenants == 0 then > object.smash(false) > end > end > 379c407,408 < local overrides = tenant.overrides or {} --- > tenant.overrides = tenant.overrides or {} > local overrides = tenant.overrides 394a424,426 > if not tenant.overrides.identity then > tenant.overrides.identity = world.callScriptedEntity(entity, "npc.humanoidIdentity") > end 444c476 < world.callScriptedEntity(entityId, "setupTenant", storage.house.floorPosition, storage.house.boundary, deedUniqueId(), tenant.preservedStorage) --- > world.callScriptedEntity(entityId, "tenant.setHome", storage.house.floorPosition, storage.house.boundary, deedUniqueId()) objects\wired\alarm\alarm.lua 9c9 < if object.getInboundNodeLevel(0) then --- > if not object.isInboundNodeConnected(0) or object.getInboundNodeLevel(0) then projectiles\boss\cultistboss\energyshard\energyshard.projectile 40c40 < "timeToLive" : 4.5, --- > "timeToLive" : 2.5, quests\scripts\main.lua 90a91,95 > local upgradeShip = config.getParameter("upgradeShip") > if upgradeShip then > player.upgradeShip(upgradeShip) > end > quests\scripts\tutorial\protectorate.lua 84,88c84,88 < -- 5 - enter auditorium -> get MM < -- 6 - get MM -> enter storeroom < -- 7 - enter storeroom -> get weapon < -- 8 - get weapon -> break barrier < -- 9 - break barrier -> reach ship --- > -- 5 - auditorium cutscene > -- 6 - has MM > -- 7 - storeroom > -- 8 - has weapon > -- 9 - 117c117 < player.radioMessage("protectorateStage7") --- > player.radioMessage("protectorateGetWeapon") 120c120 < player.radioMessage("protectorateStage8") --- > setPester("protectorateWeaponPester", 15) 192a193,194 > -- collapsedGallery > -- pastCollapsedGallery 194a197 > -- duct 196a200,201 > -- tentacleBarrier > -- shipPlatform 211,212c216,226 < elseif areaName == "floodedHallway" then < --- > elseif areaName == "collapsedGallery" then > if self.missionStage == 5 then > player.radioMessage("protectorateCollapsedGalleryNoMM") > else > player.radioMessage("protectorateCollapsedGallery") > setPester("protectorateCollapsedGalleryPester", 20) > end > elseif areaName == "pastCollapsedGallery" then > setPester() > elseif areaName == "floodedDoor" then > player.radioMessage("protectorateFloodedDoor") 214,216c228,230 < < elseif areaName == "collapsedHallway" then < --- > player.radioMessage("protectorateRooftop") > elseif areaName == "duct" then > player.radioMessage("protectorateDuct") 218c232,241 < --- > if self.missionStage < 7 then > setStage(7) > end > elseif areaName == "tentacleBarrier" then > if self.missionStage == 7 then > player.radioMessage("protectorateTentacleBarrier") > end > elseif areaName == "shipPlatform" then > setPester() > player.radioMessage("protectorateShipPlatform") quests\tutorial\protectorate.questtemplate 22c22,23 < "protectoratepants" --- > "protectoratepants", > "protectorateflowerhead" radiomessages\intro.radiomessages 4c4 < "text" : "You should not oversleep, you have important engagements today. Press A or D to get out of bed." --- > "text" : "You should not oversleep, you have important engagements today. ^#71f2f6;Press A or D to get out of bed^white;." 10c10 < "text" : "When you are ready, you should join the other students in the main hall. To interact with a nearby person, door, or other object, hover over it with your cursor and press E." --- > "text" : "When you are ready, you should join the other students in the main hall. To interact with a nearby person, door, or other object, ^#71f2f6;hover over it with your cursor and press E^white;." 15c15 < "text" : "If you do not leave the dormitory soon, you are likely to miss the ceremony! Remember that you can open a door by hovering over it with your cursor and pressing E." --- > "text" : "If you do not leave the dormitory soon, you are likely to miss the ceremony! Remember that you can open a door by ^#71f2f6;hovering over it with your cursor and pressing E^white;." 29c29 < "protectorateFloodedDoor" : { --- > "protectorateCollapsedGalleryNoMM" : { 32c32 < "text" : "The room beyond this door appears to be flooded. You'll need to find a way over it. Press spacebar to jump up to higher platforms!" --- > "text" : "You should take the Matter Manipulator that the Grand Protector dropped. You're going to need it!" 35c35,36 < "protectorateDuctExit" : { --- > "protectorateCollapsedGallery" : { > "important" : true, 37c38 < "text" : "You can jump down from a ledge by holding down and tapping spacebar." --- > "text" : "The ceiling seems to have collapsed. This is a good time for you to try out that Matter Manipulator. ^#71f2f6;Press the R key to equip it^white;, then click and hold on the pile of dirt to dig through it." 40c41 < "protectorateCollapsedHallway" : { --- > "protectorateCollapsedGalleryPester" : { 43c44 < "text" : "The ceiling seems to have collapsed. This is a good time for you to try out that Matter Manipulator. Press the R key to equip it, then click and hold on the pile of dirt to dig through it." --- > "text" : "You'll need to use your Matter Manipulator to get past that pile of dirt. You can ^#71f2f6;press the R key to equip it^white;." 46c47 < "protectorateCollapsedHallwayPester" : { --- > "protectorateFloodedDoor" : { 49c50 < "text" : "You'll need to use your Matter Manipulator to get past that pile of dirt. You can press the R key to equip it." --- > "text" : "The room beyond this door appears to be flooded. You'll need to find a way over it. ^#71f2f6;Press spacebar to jump^white; up to higher platforms!" 52c53,54 < "protectorateCollapsedHallwayRoof" : { --- > "protectorateRooftop" : { > "important" : true, 54c56 < "text" : "You won't be able to reach the shuttle pad this way. Try clearing the dirt out of that hallway with your Matter Manipulator." --- > "text" : "The scale of this disaster is beyond quantification. We should get off planet immediately." 57c59,65 < "protectorateStage7" : { --- > "protectorateDuct" : { > "important" : true, > "type" : "mission", > "text" : "You can jump down from a platform by ^#71f2f6;holding S to crouch, then tapping spacebar^white;." > }, > > "protectorateGetWeapon" : { 63c71,76 < "protectorateActionBar" : { --- > "protectorateWeaponPester" : { > "type" : "mission", > "text" : "Access a weapon conveniently by placing it in one of the action bar slots at the top of the screen, then pressing the corresponding number key to equip or unequip it." > }, > > "protectorateTentacleBarrier" : { 66c79 < "text" : "Try placing items into your action bar (at the top of the screen) for easy access." --- > "text" : "You'll need to destroy that tentacle to make it to the shuttle. See if you can find a weapon in that chest." 69c82 < "protectorateStage8" : { --- > "protectorateShipPlatform" : { 72c85 < "text" : "Good. The shuttle pad is just beyond that door! Keep moving!" --- > "text" : "I've bypassed the preflight checks. Get on board!" recipes\cookingtable1\desserts\bonbons.recipe 6c6 < "groups" : [ "craftingfood", "desserts", "foodhealing", "foodmobility" ] --- > "groups" : [ "craftingfood", "desserts" ] recipes\cookingtable1\desserts\cake.recipe 9c9 < "groups" : [ "craftingfood", "desserts", "foodhealing", "foodmobility" ] --- > "groups" : [ "craftingfood", "desserts" ] recipes\cookingtable1\drinks\bottledwater.recipe 7c7 < "groups" : [ "craftingfood", "drinks", "foodhealing" ] --- > "groups" : [ "craftingfood", "drinks" ] recipes\cookingtable1\drinks\coffee.recipe 6c6 < "groups" : [ "craftingfood", "coffee", "drinks" ] --- > "groups" : [ "craftingfood", "drinks", "coffee" ] recipes\cookingtable1\mains\fishdumplings.recipe 7c7 < "groups" : [ "craftingfood", "mains", "foodhealing" ] --- > "groups" : [ "craftingfood", "mains" ] recipes\cookingtable1\mains\fishfingers.recipe 7c7 < "groups" : [ "craftingfood", "mains", "foodhealing" ] --- > "groups" : [ "craftingfood", "mains" ] recipes\cookingtable1\mains\fishnchips.recipe 8c8 < "groups" : [ "craftingfood", "mains", "foodhealing", "foodhealthboost" ] --- > "groups" : [ "craftingfood", "mains" ] recipes\cookingtable1\mains\fishpie.recipe 7c7 < "groups" : [ "craftingfood", "mains", "foodhealing", "foodhealthboost" ] --- > "groups" : [ "craftingfood", "mains" ] recipes\cookingtable1\mains\fishstew.recipe 9c9 < "groups" : [ "craftingfood", "mains", "foodhealing" ] --- > "groups" : [ "craftingfood", "mains" ] recipes\cookingtable1\mains\meatdumplings.recipe 7c7 < "groups" : [ "craftingfood", "mains", "foodhealing" ] --- > "groups" : [ "craftingfood", "mains" ] recipes\cookingtable1\mains\meatpie.recipe 7c7 < "groups" : [ "craftingfood", "mains", "foodhealing", "foodhealthboost" ] --- > "groups" : [ "craftingfood", "mains" ] recipes\cookingtable1\mains\meatstew.recipe 9c9 < "groups" : [ "craftingfood", "mains", "foodhealing" ] --- > "groups" : [ "craftingfood", "mains" ] recipes\cookingtable1\mains\pearlpearisotto.recipe 7c7 < "groups" : [ "craftingfood", "mains", "foodhealing" ] --- > "groups" : [ "craftingfood", "mains" ] recipes\cookingtable1\sides\boiledpearlpeas.recipe 6c6 < "groups" : [ "craftingfood", "sides", "foodhealing" ] --- > "groups" : [ "craftingfood", "sides" ] recipes\cookingtable1\sides\corncob.recipe 6c6 < "groups" : [ "craftingfood", "sides", "foodhealing" ] --- > "groups" : [ "craftingfood", "sides" ] recipes\cookingtable1\sides\mashedpotato.recipe 6c6 < "groups" : [ "craftingfood", "sides", "foodhealing", "foodhealthboost" ] --- > "groups" : [ "craftingfood", "sides" ] recipes\cookingtable1\sides\pearlpeabroth.recipe 7c7 < "groups" : [ "craftingfood", "sides", "foodhealing" ] --- > "groups" : [ "craftingfood", "sides" ] recipes\cookingtable1\snacks\sweetpopcorn.recipe 7c7 < "groups" : [ "craftingfood", "snacks", "foodhealing", "foodmobility" ] --- > "groups" : [ "craftingfood", "snacks" ] scripts\tenant.lua 8c8 < tenant.despawn() --- > tenant.despawn(true) 11c11 < function tenant.despawn() --- > function tenant.despawn(visibly) 18c18 < if world.isVisibleToPlayer(collisionArea) then --- > if visibly and world.isVisibleToPlayer(collisionArea) then 26c26 < function tenant.setHome(position, boundary, deedUniqueId, preservedStorage) --- > function tenant.setHome(position, boundary, deedUniqueId, skipNotification) 30,38c30,31 < notify({ type = "tenant.setHome" }) < tenant.restore(preservedStorage) < end < < function tenant.restore(preservedStorage) < util.mergeTable(storage, preservedStorage or {}) < < for slot, item in pairs(storage.itemSlots or {}) do < npc.setItemSlot(slot, item) --- > if not skipNotification then > notify({ type = "tenant.setHome" }) 42,49c35,40 < function tenant.preservedStorage() < return { < itemSlots = storage.itemSlots, < relationships = storage.relationships, < criminal = storage.criminal, < stolen = storage.stolen, < extraMerchantItems = storage.extraMerchantItems < } --- > function tenant.detachFromSpawner() > if not storage.respawner then return end > local entityId = world.loadUniqueEntity(storage.respawner) > assert(entityId and world.entityExists(entityId)) > world.callScriptedEntity(entityId, "detachTenant", entity.uniqueId()) > storage.respawner = nil 53,54c44 < local uniqueId = entity.uniqueId() < if storage.respawner and uniqueId then --- > if storage.respawner and entity.uniqueId() then 57c47 < world.callScriptedEntity(entityId, "backupTenantStorage", uniqueId, tenant.preservedStorage()) --- > world.callScriptedEntity(entityId, "backupTenantStorage", entity.uniqueId(), preservedStorage()) 85a76,118 > end > > function tenant.setNpcType(npcType) > if npc.npcType() == npcType then return end > > -- Changing the tenant's npc type consists of: > -- 1. Spawning a new npc at our current position > -- 2. Updating the colonydeed with the new npc's npcType and uniqueId > -- 3. Killing ourself > -- This is done to turn villagers into crewmembers. > > -- Preserve head item slots, even if they haven't changed from the default: > storage.itemSlots = storage.itemSlots or {} > if not storage.itemSlots.headSoc and not storage.itemSlots.headsoc then > storage.itemSlots.headsoc = npc.getItemSlot("headsoc") > end > if not storage.itemSlots.head then > storage.itemSlots.head = npc.getItemSlot("head") > end > > local newUniqueId = sb.makeUuid() > local newEntityId = world.spawnNpc(entity.position(), npc.species(), npcType, npc.level(), npc.seed(), { > identity = npc.humanoidIdentity(), > scriptConfig = { > personality = personality(), > initialStorage = preservedStorage(), > uniqueId = newUniqueId > } > }) > > if storage.respawner then > assert(newUniqueId and newEntityId) > world.callScriptedEntity(newEntityId, "tenant.setHome", storage.homePosition, storage.homeBoundary, storage.respawner, true) > > local spawnerId = world.loadUniqueEntity(storage.respawner) > assert(spawnerId and world.entityExists(spawnerId)) > world.callScriptedEntity(spawnerId, "replaceTenant", entity.uniqueId(), { > uniqueId = newUniqueId, > type = npcType > }) > end > > tenant.despawn(false) scripts\actions\dialog.lua 0a1,4 > function context() > return _ENV[entity.entityType()] > end > 23c27 < local species = npc.species() --- > local species = context().species and context().species() or "default" 36c40 < math.randomseed(npc.seed()) --- > math.randomseed(context().seed()) 87,90c91,98 < local options = { < sound = randomChatSound() < } < npc.say(dialog, args.tags, options) --- > local options = {} > > -- Only NPCs have sound support > if entity.entityType() == "npc" then > options.sound = randomChatSound() > end > > context().say(dialog, args.tags, options) 126c134 < npc.say(args.content, args.tags, options) --- > context().say(args.content, args.tags, options) 128c136 < npc.sayPortrait(args.content, portrait, args.tags, options) --- > context().sayPortrait(args.content, portrait, args.tags, options) 145,147c153,156 < local options = { < sound = randomChatSound() < } --- > local options = {} > if entity.entityType() == "npc" then > options.sound = randomChatSound() > end 150c159 < npc.say(self.currentDialog[1], args.tags, options) --- > context().say(self.currentDialog[1], args.tags, options) 155c164 < npc.sayPortrait(self.currentDialog[1], portrait, args.tags, options) --- > context().sayPortrait(self.currentDialog[1], portrait, args.tags, options) scripts\companions\petspawner.lua 105c105 < self:_spawn(position, parameters) --- > local result = self:_spawn(position, parameters) 110a111,112 > > return result 114c116 < world.spawnMonster(self.spawnConfig.type, position, parameters) --- > return world.spawnMonster(self.spawnConfig.type, position, parameters) scripts\companions\player.lua 43c43 < recruitSpawner.crewLimit = player.shipUpgrades().crewSize --- > recruitSpawner.crewLimit = function() return player.shipUpgrades().crewSize end 124a125,137 > > if onOwnShip() and recruitSpawner:crewSize() >= recruitSpawner.crewLimit() then > grantNextLicense() > end > > if storage.pendingItem then > storage.pendingItemDelay = (storage.pendingItemDelay or 0) - dt > if storage.pendingItemDelay <= 0 then > player.giveItem(storage.pendingItem) > storage.pendingItem = nil > storage.pendingItemDelay = nil > end > end 222a236 > world.logInfo("Followers: %s / %s", recruitSpawner:followerCount(), recruitSpawner.activeCrewLimit) 227a242 > world.logInfo("Crew: %s / %s", recruitSpawner:crewSize(), recruitSpawner.crewLimit()) 274a290,310 > end > > function grantNextLicense() > local currentShipLevel = player.shipUpgrades().shipLevel > local licenses = root.assetJson("/ships/licenses.config") > local upgrade = licenses[tostring(currentShipLevel)] > if upgrade and upgrade.licenseLevel > (storage.licenseLevel or 0) then > if upgrade.cinematic then > player.playCinematic(upgrade.cinematic, true) > end > if upgrade.radioMessage then > player.radioMessage(upgrade.radioMessage, 0.1) > end > for _, command in pairs(upgrade.enableAiCommands or {}) do > player.enableAiCommand(command) > end > assert(upgrade.item) > storage.pendingItem = upgrade.item > storage.pendingItemDelay = upgrade.itemDelay or 0 > storage.licenseLevel = upgrade.licenseLevel > end scripts\companions\recruitable.lua 34c34,36 < status.addEphemeralEffect("beamin") --- > if storage.followingOwner then > status.addEphemeralEffect("beamin") > end 112,113c114,115 < personality = personality() < -- TODO equipment/clothing slots? --- > personality = personality(), > initialStorage = preservedStorage() 162c164,170 < if persistentEffects then --- > -- We can't take the effects of BOTH the NPC's level AND the player's armor > -- or we'd be overpowered. > -- This happens the first time the NPC is recruited, before we've beamed off > -- the planet and been respawned by the player. > local takePlayerArmorEffects = npc.level() <= 1 > > if persistentEffects and takePlayerArmorEffects then 249a258,259 > > tenant.detachFromSpawner() scripts\companions\recruitspawner.lua 20a21,24 > function Recruit:npcType() > return self.spawnConfig.type > end > 27c31 < world.spawnNpc(position, self.spawnConfig.species, self.spawnConfig.type, parameters.level, self.spawnConfig.seed, parameters) --- > return world.spawnNpc(position, self.spawnConfig.species, self.spawnConfig.type, parameters.level, self.spawnConfig.seed, parameters) 140c144 < if self:crewSize() >= self.crewLimit then --- > if self:crewSize() >= self.crewLimit() then scripts\quest\participant.lua 237a238,251 > > if entity.entityType() == "npc" and self.data.hadCompleteOfferedQuest and isEmpty(self.data.roles) then > -- We've been offering a quest and now it has completed and we're not > -- involved in any other quests. > -- Now we have a random chance at graduating / changing into a new npctype. > > local graduation = config.getParameter("questGenerator.graduation") > if graduation and math.random() < (graduation.chance or 1) then > local nextNpcType = util.weightedRandom(graduation.nextNpcType) > tenant.setNpcType(nextNpcType) > end > self.data.hadCompleteOfferedQuest = false > end > 293a308,319 > end > > -- If we were offering this quest, and it was the last in a sequence, > -- remember that it was completed successfully. > if role.offerQuest then > local lastQuestId = nil > for _,quest in pairs(loadQuestArcDescriptor(role.offerQuest).quests) do > lastQuestId = quest.questId > end > if questId == lastQuestId then > self.data.hadCompleteOfferedQuest = true > end stagehands\mission\protectoratemanager.lua 14c14,17 < showBeamaxe() --- > local beamaxeSearchArea = rect.translate({360, -10, 400, 10}, entity.position()) > world.objectQuery(rect.ll(beamaxeSearchArea), rect.ur(beamaxeSearchArea), {callScript = "showBeamaxe"}) > local propsSearchArea = rect.translate({320, -50, 440, 50}, entity.position()) > world.objectQuery(rect.ll(propsSearchArea), rect.ur(propsSearchArea), {callScript = "setDestroyed"}) 39,43d41 < end < < function showBeamaxe() < local beamaxeSearchArea = rect.translate({360, -10, 400, 10}, entity.position()) < world.objectQuery(rect.ll(beamaxeSearchArea), rect.ur(beamaxeSearchArea), {callScript = "showBeamaxe"}) stats\effects\bandage\bandage.animation 13d12 < "color" : [30, 250, 30, 230], stats\effects\rage\rageaugment1.statuseffect 9c9 < "rage.lua" --- > "rageweak.lua" stats\effects\rage\rageaugment2.statuseffect 9c9 < "rage.lua" --- > "rageweak.lua" stats\effects\rage\rageaugment3.statuseffect 9c9 < "rage.lua" --- > "rageweak.lua" stats\effects\rage\ragecollar1.statuseffect 9c9 < "rage.lua" --- > "rageweak.lua" stats\effects\rage\ragecollar2.statuseffect 9c9 < "rage.lua" --- > "rageweak.lua" stats\effects\rage\ragecollar3.statuseffect 9c9 < "rage.lua" --- > "rageweak.lua" stats\effects\rage\ragefood.statuseffect 9c9 < "rage.lua" --- > "rageweak.lua" stats\effects\thorns\nova.statuseffect 13c13 < "damageMultiplier" : 0.5, --- > "damageMultiplier" : 0.0, tilesets\packed\objects-by-category\decorative.json 7c7 < "tilecount" : 1171, --- > "tilecount" : 1176, 1646c1646 < "imagePositionY" : "0", --- > "imagePositionY" : "-8", 1674a1675,1718 > "1171" : { > "//description" : "What a lovely flower!", > "//name" : "protectorateflower", > "//shortdescription" : "Protectorate Flower", > "imagePositionX" : "0", > "imagePositionY" : "0", > "object" : "protectorateflower", > "tilesetDirection" : "right" > }, > "1172" : { > "//description" : "A very robust looking tool box.", > "//name" : "protectoratetoolbox", > "//shortdescription" : "Red Toolbox", > "imagePositionX" : "-8", > "imagePositionY" : "0", > "object" : "protectoratetoolbox" > }, > "1173" : { > "//description" : "Colorful ceiling lights found in clubs.", > "//name" : "clubceilinglightsgreen", > "//shortdescription" : "Club Lights", > "imagePositionX" : "-8", > "imagePositionY" : "0", > "object" : "clubceilinglightsgreen", > "tilesetDirection" : "right" > }, > "1174" : { > "//description" : "Colorful ceiling lights found in clubs.", > "//name" : "clubceilinglightsred", > "//shortdescription" : "Club Lights", > "imagePositionX" : "-8", > "imagePositionY" : "0", > "object" : "clubceilinglightsred", > "tilesetDirection" : "right" > }, > "1175" : { > "//description" : "Colorful ceiling lights found in clubs.", > "//name" : "clubceilinglightsyellow", > "//shortdescription" : "Club Lights", > "imagePositionX" : "-8", > "imagePositionY" : "0", > "object" : "clubceilinglightsyellow", > "tilesetDirection" : "right" > }, 6780,6781c6824,6825 < "imagePositionX" : "-16", < "imagePositionY" : "-8", --- > "imagePositionX" : "-8", > "imagePositionY" : "0", 10319a10364,10378 > }, > "1171" : { > "image" : "../../../../../tiled/packed/objects/protectorateflower.png" > }, > "1172" : { > "image" : "../../../../../tiled/packed/objects/protectoratetoolbox.png" > }, > "1173" : { > "image" : "../../../../../tiled/packed/objects/clubceilinglightsgreen.png" > }, > "1174" : { > "image" : "../../../../../tiled/packed/objects/clubceilinglightsred.png" > }, > "1175" : { > "image" : "../../../../../tiled/packed/objects/clubceilinglightsyellow.png" tilesets\packed\objects-by-category\other.json 7c7 < "tilecount" : 258, --- > "tilecount" : 264, 1323a1324,1336 > "258" : { > "//description" : "A Protectorate wallbanner from the Protectorate academy.", > "//name" : "protectoratewindbanner", > "//shortdescription" : "Protectorate Wall Banner", > "imagePositionX" : "-24", > "imagePositionY" : "0", > "object" : "protectoratewindbanner", > "tilesetDirection" : "right" > }, > "259" : { > "//name" : "protectoratewindbanner_orientation1", > "invalid" : "true" > }, 1332a1346,1371 > "260" : { > "//description" : "A Protectorate wallbanner from the Protectorate academy.", > "//name" : "protectoratewindbanner2", > "//shortdescription" : "Protectorate Wall Banner", > "imagePositionX" : "-16", > "imagePositionY" : "0", > "object" : "protectoratewindbanner2", > "tilesetDirection" : "right" > }, > "261" : { > "//name" : "protectoratewindbanner2_orientation1", > "invalid" : "true" > }, > "262" : { > "//description" : "A Protectorate wallbanner from the Protectorate academy.", > "//name" : "protectoratewindbanner3", > "//shortdescription" : "Protectorate Wall Banner", > "imagePositionX" : "-24", > "imagePositionY" : "0", > "object" : "protectoratewindbanner3", > "tilesetDirection" : "right" > }, > "263" : { > "//name" : "protectoratewindbanner3_orientation1", > "invalid" : "true" > }, 2527a2567,2572 > "258" : { > "image" : "../../../../../tiled/packed/objects/protectoratewindbanner.png" > }, > "259" : { > "image" : "../../../../../tiled/packed/../packed/invalid.png" > }, 2529a2575,2586 > }, > "260" : { > "image" : "../../../../../tiled/packed/objects/protectoratewindbanner2.png" > }, > "261" : { > "image" : "../../../../../tiled/packed/../packed/invalid.png" > }, > "262" : { > "image" : "../../../../../tiled/packed/objects/protectoratewindbanner3.png" > }, > "263" : { > "image" : "../../../../../tiled/packed/../packed/invalid.png" tilesets\packed\objects-by-colonytag\hylotl.json 7c7 < "tilecount" : 200, --- > "tilecount" : 203, 1003a1004,1030 > "200" : { > "//description" : "Colorful ceiling lights found in clubs.", > "//name" : "clubceilinglightsgreen", > "//shortdescription" : "Club Lights", > "imagePositionX" : "-8", > "imagePositionY" : "0", > "object" : "clubceilinglightsgreen", > "tilesetDirection" : "right" > }, > "201" : { > "//description" : "Colorful ceiling lights found in clubs.", > "//name" : "clubceilinglightsred", > "//shortdescription" : "Club Lights", > "imagePositionX" : "-8", > "imagePositionY" : "0", > "object" : "clubceilinglightsred", > "tilesetDirection" : "right" > }, > "202" : { > "//description" : "Colorful ceiling lights found in clubs.", > "//name" : "clubceilinglightsyellow", > "//shortdescription" : "Club Lights", > "imagePositionX" : "-8", > "imagePositionY" : "0", > "object" : "clubceilinglightsyellow", > "tilesetDirection" : "right" > }, 1261,1262c1288,1289 < "imagePositionX" : "-16", < "imagePositionY" : "-8", --- > "imagePositionX" : "-8", > "imagePositionY" : "0", 2088a2116,2124 > }, > "200" : { > "image" : "../../../../../tiled/packed/objects/clubceilinglightsgreen.png" > }, > "201" : { > "image" : "../../../../../tiled/packed/objects/clubceilinglightsred.png" > }, > "202" : { > "image" : "../../../../../tiled/packed/objects/clubceilinglightsyellow.png" tilesets\packed\objects-by-colonytag\hylotloceancity.json 7c7 < "tilecount" : 124, --- > "tilecount" : 127, 257a258,284 > "124" : { > "//description" : "Colorful ceiling lights found in clubs.", > "//name" : "clubceilinglightsgreen", > "//shortdescription" : "Club Lights", > "imagePositionX" : "-8", > "imagePositionY" : "0", > "object" : "clubceilinglightsgreen", > "tilesetDirection" : "right" > }, > "125" : { > "//description" : "Colorful ceiling lights found in clubs.", > "//name" : "clubceilinglightsred", > "//shortdescription" : "Club Lights", > "imagePositionX" : "-8", > "imagePositionY" : "0", > "object" : "clubceilinglightsred", > "tilesetDirection" : "right" > }, > "126" : { > "//description" : "Colorful ceiling lights found in clubs.", > "//name" : "clubceilinglightsyellow", > "//shortdescription" : "Club Lights", > "imagePositionX" : "-8", > "imagePositionY" : "0", > "object" : "clubceilinglightsyellow", > "tilesetDirection" : "right" > }, 437,438c464,465 < "imagePositionX" : "-16", < "imagePositionY" : "-8", --- > "imagePositionX" : "-8", > "imagePositionY" : "0", 1177a1205,1213 > }, > "124" : { > "image" : "../../../../../tiled/packed/objects/clubceilinglightsgreen.png" > }, > "125" : { > "image" : "../../../../../tiled/packed/objects/clubceilinglightsred.png" > }, > "126" : { > "image" : "../../../../../tiled/packed/objects/clubceilinglightsyellow.png" tilesets\packed\objects-by-colonytag\light.json 7c7 < "tilecount" : 313, --- > "tilecount" : 316, 1116,1117c1116,1117 < "imagePositionX" : "-16", < "imagePositionY" : "-8", --- > "imagePositionX" : "-8", > "imagePositionY" : "0", 2129a2130,2156 > "313" : { > "//description" : "Colorful ceiling lights found in clubs.", > "//name" : "clubceilinglightsgreen", > "//shortdescription" : "Club Lights", > "imagePositionX" : "-8", > "imagePositionY" : "0", > "object" : "clubceilinglightsgreen", > "tilesetDirection" : "right" > }, > "314" : { > "//description" : "Colorful ceiling lights found in clubs.", > "//name" : "clubceilinglightsred", > "//shortdescription" : "Club Lights", > "imagePositionX" : "-8", > "imagePositionY" : "0", > "object" : "clubceilinglightsred", > "tilesetDirection" : "right" > }, > "315" : { > "//description" : "Colorful ceiling lights found in clubs.", > "//name" : "clubceilinglightsyellow", > "//shortdescription" : "Club Lights", > "imagePositionX" : "-8", > "imagePositionY" : "0", > "object" : "clubceilinglightsyellow", > "tilesetDirection" : "right" > }, 3496a3524,3532 > }, > "313" : { > "image" : "../../../../../tiled/packed/objects/clubceilinglightsgreen.png" > }, > "314" : { > "image" : "../../../../../tiled/packed/objects/clubceilinglightsred.png" > }, > "315" : { > "image" : "../../../../../tiled/packed/objects/clubceilinglightsyellow.png" tilesets\packed\objects-by-race\hylotl.json 7c7 < "tilecount" : 210, --- > "tilecount" : 213, 82,83c82,83 < "imagePositionX" : "-16", < "imagePositionY" : "-8", --- > "imagePositionX" : "-8", > "imagePositionY" : "0", 1064a1065,1091 > "210" : { > "//description" : "Colorful ceiling lights found in clubs.", > "//name" : "clubceilinglightsgreen", > "//shortdescription" : "Club Lights", > "imagePositionX" : "-8", > "imagePositionY" : "0", > "object" : "clubceilinglightsgreen", > "tilesetDirection" : "right" > }, > "211" : { > "//description" : "Colorful ceiling lights found in clubs.", > "//name" : "clubceilinglightsred", > "//shortdescription" : "Club Lights", > "imagePositionX" : "-8", > "imagePositionY" : "0", > "object" : "clubceilinglightsred", > "tilesetDirection" : "right" > }, > "212" : { > "//description" : "Colorful ceiling lights found in clubs.", > "//name" : "clubceilinglightsyellow", > "//shortdescription" : "Club Lights", > "imagePositionX" : "-8", > "imagePositionY" : "0", > "object" : "clubceilinglightsyellow", > "tilesetDirection" : "right" > }, 2171a2199,2207 > }, > "210" : { > "image" : "../../../../../tiled/packed/objects/clubceilinglightsgreen.png" > }, > "211" : { > "image" : "../../../../../tiled/packed/objects/clubceilinglightsred.png" > }, > "212" : { > "image" : "../../../../../tiled/packed/objects/clubceilinglightsyellow.png" tilesets\packed\objects-by-race\protectorate.json 7c7 < "tilecount" : 45, --- > "tilecount" : 52, 316c316 < "imagePositionY" : "0", --- > "imagePositionY" : "-8", 335a336,370 > "45" : { > "//description" : "A Protectorate wallbanner from the Protectorate academy.", > "//name" : "protectoratewindbanner", > "//shortdescription" : "Protectorate Wall Banner", > "imagePositionX" : "-24", > "imagePositionY" : "0", > "object" : "protectoratewindbanner", > "tilesetDirection" : "right" > }, > "46" : { > "//name" : "protectoratewindbanner_orientation1", > "invalid" : "true" > }, > "47" : { > "//description" : "A Protectorate wallbanner from the Protectorate academy.", > "//name" : "protectoratewindbanner2", > "//shortdescription" : "Protectorate Wall Banner", > "imagePositionX" : "-16", > "imagePositionY" : "0", > "object" : "protectoratewindbanner2", > "tilesetDirection" : "right" > }, > "48" : { > "//name" : "protectoratewindbanner2_orientation1", > "invalid" : "true" > }, > "49" : { > "//description" : "A Protectorate wallbanner from the Protectorate academy.", > "//name" : "protectoratewindbanner3", > "//shortdescription" : "Protectorate Wall Banner", > "imagePositionX" : "-24", > "imagePositionY" : "0", > "object" : "protectoratewindbanner3", > "tilesetDirection" : "right" > }, 344a380,391 > "50" : { > "//name" : "protectoratewindbanner3_orientation1", > "invalid" : "true" > }, > "51" : { > "//description" : "A very robust looking tool box.", > "//name" : "protectoratetoolbox", > "//shortdescription" : "Red Toolbox", > "imagePositionX" : "-8", > "imagePositionY" : "0", > "object" : "protectoratetoolbox" > }, 500a548,562 > "45" : { > "image" : "../../../../../tiled/packed/objects/protectoratewindbanner.png" > }, > "46" : { > "image" : "../../../../../tiled/packed/../packed/invalid.png" > }, > "47" : { > "image" : "../../../../../tiled/packed/objects/protectoratewindbanner2.png" > }, > "48" : { > "image" : "../../../../../tiled/packed/../packed/invalid.png" > }, > "49" : { > "image" : "../../../../../tiled/packed/objects/protectoratewindbanner3.png" > }, 502a565,570 > }, > "50" : { > "image" : "../../../../../tiled/packed/../packed/invalid.png" > }, > "51" : { > "image" : "../../../../../tiled/packed/objects/protectoratetoolbox.png" treasure\starter.treasurepools 6c6,8 < {"item" : [ "torch", 10 ]} --- > {"item" : [ "torch", 10 ]}, > {"item" : [ "cannedfood", 1 ]}, > {"item" : [ "meatballs", 1 ]}