FILES ----- rendering.config behaviors\monsters\modular\basemonster.behavior behaviors\monsters\modular\actions\charge.behavior behaviors\monsters\modular\actions\swoop.behavior behaviors\monsters\modular\movement\land-fly.behavior biomes\underground\undergroundbrainssolid.biome [NEW] cinematics\upgrading\shipupgrade.cinematic [NEW] cinematics\upgrading\upgrading.frames [NEW] cinematics\upgrading\upgrading.png [NEW] cinematics\upgrading\apex\default.frames dialog\crewmember.config dialog\grumble.config dungeons\missions\hylotlmissions\hylotlmission1.json interface\crafting\amount.png interface\easel\signdispenser.config interface\games\fossilgame\tileset.lua interface\objectcrafting\fossilstation.config interface\windowconfig\crafting.config interface\windowconfig\crafting3dprinter.config interface\windowconfig\craftinganvil.config interface\windowconfig\craftingcampfire.config interface\windowconfig\craftingfarming.config interface\windowconfig\craftingfood.config interface\windowconfig\craftingfurnace.config interface\windowconfig\craftingfurniture.config interface\windowconfig\craftingfurniturestore.config interface\windowconfig\craftingmedical.config interface\windowconfig\craftingmerchant.config interface\windowconfig\craftingnocategories.config interface\windowconfig\craftingwheel.config interface\windowconfig\inventorstable.config interface\windowconfig\pixelcompressor.config interface\windowconfig\questfailed.config interface\windowconfig\wiringstation.config items\active\unsorted\wateringcan\wateringcan.animation items\active\weapons\melee\abilities\broadsword\flipslash\flipslash.lua items\active\weapons\npc\npcdeadbeataxe.activeitem items\active\weapons\protectorate\feroziumstaff\feroziumstaff.activeitem items\active\weapons\staff\staff.animation items\active\weapons\staff\abilities\controlprojectile\controlprojectile.lua items\active\weapons\staff\abilities\controlprojectile\elementswarm.weaponability items\active\weapons\staff\abilities\controlprojectile\kluexshooter.lua items\active\weapons\staff\abilities\controlprojectile\plasmabarrage.lua items\active\weapons\staff\abilities\guidedbolt\guidedbolt.lua items\active\weapons\staff\abilities\guidedbolt\guidedbolt.weaponability items\active\weapons\staff\teslastaff\staffglow.png items\active\weapons\staff\teslastaff\teslastaff.activeitem items\active\weapons\staff\teslastaff\teslastaff.png items\armors\biome\alpine\alpaca\alpacaguard\alpacaguard.chest items\armors\biome\alpine\alpaca\alpacaguard\alpacaguard.head items\armors\biome\alpine\alpaca\alpacaguard\alpacaguard.legs items\armors\biome\alpine\alpaca\alpacavillager\alpacavillager.chest items\armors\biome\alpine\alpaca\alpacavillager\alpacavillager.head items\armors\biome\alpine\alpaca\alpacavillager\alpacavillager.legs [NEW] items\armors\biome\hive\larvanpc\bsleeve.png [NEW] items\armors\biome\hive\larvanpc\chest.png [NEW] items\armors\biome\hive\larvanpc\fsleeve.png [NEW] items\armors\biome\hive\larvanpc\head.png [NEW] items\armors\biome\hive\larvanpc\icons.png [NEW] items\armors\biome\hive\larvanpc\larva.chest [NEW] items\armors\biome\hive\larvanpc\larva.head [NEW] items\armors\biome\hive\larvanpc\larva.legs [NEW] items\armors\biome\hive\larvanpc\mask.png [NEW] items\armors\biome\hive\larvanpc\pants.png items\generic\food\tier1\toast.consumable items\generic\food\tier1\toast.png items\generic\other\rottenfood.png items\generic\produce\avesmingo.png items\generic\produce\banana.png items\generic\produce\cocoa.item items\generic\produce\eggshoot.png items\generic\produce\feathercrown.png items\materials\platform2.matitem items\materials\woodenplatform.matitem items\throwables\bomb.png monsters\boss\penguinminiufo\penguinminiufo.lua monsters\critter\floatinggeodecritter\floatinggeodecritter.monstertype monsters\ghosts\erchiusghost\erchiusghost.lua monsters\ghosts\erchiusghost\erchiusghost.monstertype monsters\pets\groundpet.lua [NEW] names\profanityfilter.config npcs\base.npctype npcs\friendlyguard.npctype npcs\guard.npctype npcs\merchantpools.config npcs\villageguard.npctype npcs\villager.npctype npcs\crew\crewmemberengineer.npctype npcs\crew\crewmembertailor.npctype npcs\dungeon\apexcamp\apexrebelvillager.npctype npcs\dungeon\aviannativevillage\stargazer.npctype npcs\furniture\gothic.npctype npcs\furniture\spooky.npctype npcs\outpost\visitors\maggotmanvisitor.npctype [NEW] npcs\subbiometenants\alpacatenant.npctype npcs\subbiometenants\colourful.npctype npcs\subbiometenants\eyepatch.npctype npcs\tenants\apexresearchlab.npctype npcs\tenants\aviantomb.npctype npcs\tenants\chefmerchanttenant.npctype [NEW] npcs\tenants\feneroxtenant.npctype npcs\tenants\friendlycultist.npctype npcs\tenants\friendlyguardtenant.npctype npcs\tenants\generictenant.npctype npcs\tenants\humanprison.npctype npcs\tenants\philanthropist.npctype npcs\tenants\shroommerchanttenant.npctype npcs\tenants\socialite.npctype objects\apex\apexconsole1\apexconsole1.object objects\apex\apextent\apextent.object objects\apex\classicapestatuenohead\classicapestatuenohead.object objects\avian\consoletribal2\consoletribal2.object objects\biome\savannah\dustybed\dustybed.object objects\biome\savannah\dustychair\dustychair.object objects\biome\savannah\dustytable\dustytable.object objects\crafting\upgradeablecraftingobjects\craftinganvil\craftinganvil.object objects\crafting\upgradeablecraftingobjects\craftingfurnace\craftingfurnace.object objects\crafting\upgradeablecraftingobjects\craftingwheel\craftingwheel.object objects\crafting\upgradeablecraftingobjects\inventorstable\inventorstable.object objects\farmables\cocoa\cocoaseed.object objects\farmables\cocoa\cocoaseed.png objects\farmables\coffee\coffeeseed.object objects\glitch\medievalarmorarmed\medievalarmorarmed.object objects\glitch\medievalmap\medievalmap.object objects\human\vendingmachine\vendingmachine.object objects\protectorate\objects\protectoratelobbyvending\protectoratelobbyvending.object parallax\underground\brains.parallax [NEW] parallax\underground\corebrains.parallax particles\electricswoosh1.particle plants\grass\ceiling\decorative\ceilingroots\ceilingroots.grass [NEW] projectiles\activeitems\staff\balllightning\balllightning.lua [NEW] projectiles\activeitems\staff\balllightning\balllightning.png [NEW] projectiles\activeitems\staff\balllightning\balllightning.projectile [NEW] projectiles\activeitems\staff\balllightning\default.frames projectiles\activeitems\staff\boltguide\boltguide.png quests\generated\pools\farmable.config quests\generated\pools\furniture.config quests\generated\pools\furnituresets.config quests\generated\questpools\common.config quests\generated\questpools\guard.config quests\generated\templates\barter.questtemplate quests\generated\templates\kidnapping.questtemplate quests\generated\templates\protect.questtemplate quests\outpost\protectoratesword.questtemplate quests\outpost\ursaminer1.questtemplate quests\outpost\shipupgrade\illegalshipupgrade1.questtemplate quests\outpost\shipupgrade\illegalshipupgrade2.questtemplate quests\outpost\shipupgrade\illegalshipupgrade3.questtemplate quests\outpost\shipupgrade\illegalshipupgrade4.questtemplate quests\outpost\shipupgrade\illegalshipupgrade5.questtemplate quests\outpost\shipupgrade\shipupgrade1.questtemplate quests\outpost\shipupgrade\shipupgrade2.questtemplate quests\outpost\shipupgrade\shipupgrade3.questtemplate quests\outpost\shipupgrade\shipupgrade4.questtemplate quests\outpost\shipupgrade\shipupgrade5.questtemplate quests\story\apex_mission1.questtemplate quests\story\bootship.questtemplate quests\story\destroyruin.questtemplate quests\story\glitch_mission1.questtemplate quests\story\hylotl_mission1.questtemplate quests\story\protectorate.questtemplate radiomessages\exploration.radiomessages recipes\campfire\potatogrids.recipe recipes\campfire\toast.recipe scripts\tenant.lua scripts\actions\quests.lua scripts\quest\participant.lua [NEW] sfx\environmental\spooky.ogg sfx\interface\crafting_anvil.ogg [NEW] sfx\interface\crafting_compress.ogg [NEW] sfx\interface\crafting_cooking.ogg [NEW] sfx\interface\crafting_furnace.ogg [NEW] sfx\interface\crafting_furnacetech.ogg sfx\interface\crafting_general1.ogg sfx\interface\crafting_hands.ogg [NEW] sfx\interface\crafting_sewing.ogg [NEW] sfx\interface\crafting_tech.ogg sfx\interface\crafting_wheel.ogg sfx\npc\quadruped\catmhead_attack1.ogg sfx\npc\quadruped\catmhead_idle1.ogg sfx\npc\quadruped\catmhead_idle2.ogg sfx\npc\quadruped\catmhead_pain1.ogg sfx\npc\quadruped\catmhead_pain2.ogg [NEW] sfx\objects\vendingmachine_close1.ogg [NEW] sfx\objects\vendingmachine_open1.ogg [NEW] sfx\projectiles\hooked.ogg [NEW] sfx\tools\wateringcan1.ogg [NEW] sfx\tools\wateringcan2.ogg [NEW] sfx\tools\wateringcan3.ogg [NEW] sfx\tools\wateringcan4.ogg species\novakid.species stats\effects\erchiussickness\erchiussickness.animation stats\effects\erchiussickness\erchiussickness.lua stats\effects\erchiussickness\erchiussickness.statuseffect [NEW] tenants\other\fenerox.tenant tiles\platforms\platform2.material tiles\platforms\woodenplatform.material DIFFS ----- rendering.config 19c19 < "minimumCameraChange" : 0.001 --- > "minimumCameraChange" : 0.002 behaviors\monsters\modular\basemonster.behavior 3d2 < "description": "", 6,7d4 < "/scripts/actions/monster.lua", < "/scripts/actions/animator.lua", 9d5 < "/monsters/monster.lua", 13,15c9,10 < "/scripts/actions/query.lua", < "/scripts/actions/entity.lua", < "/scripts/actions/pets.lua" --- > "/scripts/actions/pets.lua", > "/scripts/actions/animator.lua" 38c33,34 < "tetherDistance": 10 --- > "tetherDistance": 10, > "stopState": "idle" 741,743c737,739 < "title": "entityInRange", < "type": "action", < "name": "entityInRange", --- > "title": "sequence", > "type": "composite", > "name": "sequence", 745,750c741,768 < "entity": "target", < "range": "", < "xRange": "", < "yRange": "", < "position": "self" < } --- > "type": "sliding", > "state": "off", > "fromEntity": "attackTarget", > "toEntity": "fleeTarget" > }, > "children": [ > { > "title": "entityInRange", > "type": "action", > "name": "entityInRange", > "parameters": { > "entity": "target", > "range": "", > "xRange": "", > "yRange": "", > "position": "self" > } > }, > { > "title": "setAnimationState", > "type": "action", > "name": "setAnimationState", > "parameters": { > "state": "", > "type": "body" > } > } > ] behaviors\monsters\modular\actions\charge.behavior 6,13d5 < "/scripts/actions/world.lua", < "/scripts/actions/query.lua", < "/scripts/actions/entity.lua", < "/scripts/actions/math.lua", < "/scripts/actions/monster.lua", < "/scripts/actions/animator.lua", < "/scripts/actions/entity.lua", < "/monsters/monster.lua", 14a7,9 > "/scripts/actions/math.lua", > "/scripts/actions/animator.lua", > "/scripts/actions/monster.lua", 170a166,185 > { > "title": "selector", > "type": "composite", > "name": "selector", > "parameters": {}, > "children": [ > { > "title": "gravityEnabled", > "type": "action", > "name": "gravityEnabled", > "parameters": {} > }, > { > "title": "controlDown", > "type": "action", > "name": "controlDown", > "parameters": {} > } > ] > }, behaviors\monsters\modular\actions\swoop.behavior 2a3 > "description": "", 5,7c6,8 < "/scripts/actions/query.lua", < "/scripts/actions/entity.lua", < "/scripts/actions/math.lua", --- > "/scripts/actions/projectiles.lua", > "/scripts/actions/movement.lua", > "/scripts/actions/math.lua", 10,12d10 < "/scripts/actions/movement.lua", < "/scripts/actions/projectiles.lua", < "/scripts/actions/monster.lua", 14,15d11 < "/scripts/actions/entity.lua", < "/monsters/monster.lua", 142c138 < "category" : "monsterattack", --- > "category": "monsterattack", 224a221,226 > "title": "controlDown", > "type": "action", > "name": "controlDown", > "parameters": {} > }, > { 379c381 < "category" : "monsterattack" --- > "category": "monsterattack" 397c399 < "category" : "monsterattack" --- > "category": "monsterattack" behaviors\monsters\modular\movement\land-fly.behavior 2a3 > "description": "", 8d8 < "/scripts/actions/monster.lua", 10,11d9 < "/scripts/actions/entity.lua", < "/monsters/monster.lua", 100a99,104 > }, > { > "title": "controlDown", > "type": "action", > "name": "controlDown", > "parameters": {} biomes\underground\undergroundbrainssolid.biome 6a7,8 > "parallax" : "/parallax/underground/corebrains.parallax", > dialog\crewmember.config 4c4 < "default" : [ "I have nothing to say to you" ] --- > "default" : [ "I have nothing to say to you." ] dialog\grumble.config 17,18c17,18 < "Ssstop sstealing stuff...", < "Put my home back how it wasss.", --- > "Ssstop taking away my nice ssstuff.", > "Put Floran's home back how it wasss.", dungeons\missions\hylotlmissions\hylotlmission1.json [TMX file differences are left out for huge size.] interface\easel\signdispenser.config 9c9 < "lblAmountInput" : { --- > "imgAmountInput" : { 11c11 < "file" : "/objects/outpost/signstore/signdispenserright.png", --- > "file" : "/objects/outpost/signstore/signdispenserright.png", 14c14 < "centered" : true, --- > "centered" : true, 24c24 < }, --- > }, 32c32 < "itemGrid2" : { --- > "itemGrid2" : { 35c35 < "slotOffset" : 8, --- > "slotOffset" : 8, 46c46 < "pointer" : { --- > "pointer" : { interface\games\fossilgame\tileset.lua 99,100c99,100 < local colorYOffset = root.imageSize(self.materialPath)[2] - 24 < local texCoords = {4 + (16 * variant), colorYOffset + 4, 12 + (16 * variant), colorYOffset + 12} --- > local yOff = root.imageSize(self.materialPath)[2] - 24 -- color y offset > local texCoords = {4 + (16 * variant), yOff + 4, 12 + (16 * variant), yOff + 12} 119c119 < console.canvasDrawImageRect(self.materialPath, {texCoords[1] - 4, 16, texCoords[1], 20}, {quad[1], quad[4], quad[3] - 4*scale, quad[4] + 4*scale}, self.color) --corner --- > console.canvasDrawImageRect(self.materialPath, {texCoords[1] - 4, yOff + 16, texCoords[1], yOff + 20}, {quad[1], quad[4], quad[3] - 4*scale, quad[4] + 4*scale}, self.color) --corner 122c122 < console.canvasDrawImageRect(self.materialPath, {texCoords[1], 16, texCoords[1] + 4, 20}, {quad[1] + 4*scale, quad[4], quad[3], quad[4] + 4*scale}, self.color) --corner --- > console.canvasDrawImageRect(self.materialPath, {texCoords[1], yOff + 16, texCoords[1] + 4, yOff + 20}, {quad[1] + 4*scale, quad[4], quad[3], quad[4] + 4*scale}, self.color) --corner 125c125 < console.canvasDrawImageRect(self.materialPath, {texCoords[1] - 4, 16, texCoords[1] + 4, 20}, {quad[1], quad[4], quad[3], quad[4] + 4*scale}, self.color) --corner --- > console.canvasDrawImageRect(self.materialPath, {texCoords[1] - 4, yOff + 16, texCoords[1] + 4, yOff + 20}, {quad[1], quad[4], quad[3], quad[4] + 4*scale}, self.color) --corner 133c133 < console.canvasDrawImageRect(self.materialPath, {texCoords[1] - 4, 20, texCoords[1], 24}, {quad[1], quad[2] - 4*scale, quad[3] - 4*scale, quad[2]}, self.color) -- corner --- > console.canvasDrawImageRect(self.materialPath, {texCoords[1] - 4, yOff + 20, texCoords[1], yOff + 24}, {quad[1], quad[2] - 4*scale, quad[3] - 4*scale, quad[2]}, self.color) -- corner 136c136 < console.canvasDrawImageRect(self.materialPath, {texCoords[1], 20, texCoords[1] + 4, 24}, {quad[1] + 4*scale, quad[2] - 4*scale, quad[3], quad[2]}, self.color) -- corner --- > console.canvasDrawImageRect(self.materialPath, {texCoords[1], yOff + 20, texCoords[1] + 4, yOff + 24}, {quad[1] + 4*scale, quad[2] - 4*scale, quad[3], quad[2]}, self.color) -- corner 139c139 < console.canvasDrawImageRect(self.materialPath, {texCoords[1] - 4, 20, texCoords[1] + 4, 24}, {quad[1], quad[2] - 4*scale, quad[3], quad[2]}, self.color) -- corner --- > console.canvasDrawImageRect(self.materialPath, {texCoords[1] - 4, yOff + 20, texCoords[1] + 4, yOff + 24}, {quad[1], quad[2] - 4*scale, quad[3], quad[2]}, self.color) -- corner interface\objectcrafting\fossilstation.config 5a6 > "craftingSound" : "/sfx/interface/crafting_general1.ogg", 53c54 < "upOffset" : 34 --- > "upOffset" : 36 59,60c60,61 < "maxWidth" : 15, < "regex" : "x?\\d{0,3}", --- > "maxWidth" : 16, > "regex" : "x?\\d{0,4}", 63c64 < "lblAmountInput" : { --- > "imgAmountInput" : { interface\windowconfig\crafting.config 59c59 < "upOffset" : 34 --- > "upOffset" : 36 65,66c65,66 < "maxWidth" : 15, < "regex" : "x?\\d{0,3}", --- > "maxWidth" : 16, > "regex" : "x?\\d{0,4}", 69c69 < "lblAmountInput" : { --- > "imgAmountInput" : { interface\windowconfig\crafting3dprinter.config 62c62 < "upOffset" : 34 --- > "upOffset" : 36 68,69c68,69 < "maxWidth" : 15, < "regex" : "x?\\d{0,3}", --- > "maxWidth" : 16, > "regex" : "x?\\d{0,4}", 72c72 < "lblAmountInput" : { --- > "imgAmountInput" : { interface\windowconfig\craftinganvil.config 61c61 < "upOffset" : 34 --- > "upOffset" : 36 67,68c67,68 < "maxWidth" : 15, < "regex" : "x?\\d{0,3}", --- > "maxWidth" : 16, > "regex" : "x?\\d{0,4}", 71c71 < "lblAmountInput" : { --- > "imgAmountInput" : { interface\windowconfig\craftingcampfire.config 2a3 > "craftingSound" : "/sfx/interface/crafting_furnace.ogg", 58c59 < "upOffset" : 34 --- > "upOffset" : 36 64,65c65,66 < "maxWidth" : 15, < "regex" : "x?\\d{0,3}", --- > "maxWidth" : 16, > "regex" : "x?\\d{0,4}", 68c69 < "lblAmountInput" : { --- > "imgAmountInput" : { interface\windowconfig\craftingfarming.config 6c6 < "craftingSound" : "/sfx/interface/crafting_general7.ogg", --- > "craftingSound" : "/sfx/interface/crafting_general1.ogg", 61c61 < "upOffset" : 34 --- > "upOffset" : 36 67,68c67,68 < "maxWidth" : 15, < "regex" : "x?\\d{0,3}", --- > "maxWidth" : 16, > "regex" : "x?\\d{0,4}", 71c71 < "lblAmountInput" : { --- > "imgAmountInput" : { interface\windowconfig\craftingfood.config 2c2 < "craftingSound" : "/sfx/interface/crafting_general7.ogg", --- > "craftingSound" : "/sfx/interface/crafting_cooking.ogg", 57c57 < "upOffset" : 34 --- > "upOffset" : 36 63,64c63,64 < "maxWidth" : 15, < "regex" : "x?\\d{0,3}", --- > "maxWidth" : 16, > "regex" : "x?\\d{0,4}", 67c67 < "lblAmountInput" : { --- > "imgAmountInput" : { interface\windowconfig\craftingfurnace.config 6c6 < "craftingSound" : "/sfx/interface/crafting_general7.ogg", --- > "craftingSound" : "/sfx/interface/crafting_furnace.ogg", 61c61 < "upOffset" : 34 --- > "upOffset" : 36 67,68c67,68 < "maxWidth" : 15, < "regex" : "x?\\d{0,3}", --- > "maxWidth" : 16, > "regex" : "x?\\d{0,4}", 71c71 < "lblAmountInput" : { --- > "imgAmountInput" : { interface\windowconfig\craftingfurniture.config 61c61 < "upOffset" : 34 --- > "upOffset" : 36 67,68c67,68 < "maxWidth" : 15, < "regex" : "x?\\d{0,3}", --- > "maxWidth" : 16, > "regex" : "x?\\d{0,4}", 71c71 < "lblAmountInput" : { --- > "imgAmountInput" : { interface\windowconfig\craftingfurniturestore.config 56c56 < "upOffset" : 34 --- > "upOffset" : 36 62,63c62,63 < "maxWidth" : 15, < "regex" : "x?\\d{0,3}", --- > "maxWidth" : 16, > "regex" : "x?\\d{0,4}", 66c66 < "lblAmountInput" : { --- > "imgAmountInput" : { interface\windowconfig\craftingmedical.config 61c61 < "upOffset" : 34 --- > "upOffset" : 36 67,68c67,68 < "maxWidth" : 15, < "regex" : "x?\\d{0,3}", --- > "maxWidth" : 16, > "regex" : "x?\\d{0,4}", 71c71 < "lblAmountInput" : { --- > "imgAmountInput" : { interface\windowconfig\craftingmerchant.config 57c57 < "upOffset" : 34 --- > "upOffset" : 36 63,64c63,64 < "maxWidth" : 15, < "regex" : "x?\\d{0,3}", --- > "maxWidth" : 16, > "regex" : "x?\\d{0,4}", 67c67 < "lblAmountInput" : { --- > "imgAmountInput" : { interface\windowconfig\craftingnocategories.config 47c47 < "upOffset" : 34 --- > "upOffset" : 36 53,54c53,54 < "maxWidth" : 15, < "regex" : "x?\\d{0,3}", --- > "maxWidth" : 16, > "regex" : "x?\\d{0,4}", 57c57 < "lblAmountInput" : { --- > "imgAmountInput" : { interface\windowconfig\craftingwheel.config 62c62 < "upOffset" : 34 --- > "upOffset" : 36 68,69c68,69 < "maxWidth" : 15, < "regex" : "x?\\d{0,3}", --- > "maxWidth" : 16, > "regex" : "x?\\d{0,4}", 72c72 < "lblAmountInput" : { --- > "imgAmountInput" : { interface\windowconfig\inventorstable.config 62c62 < "upOffset" : 34 --- > "upOffset" : 36 68,69c68,69 < "maxWidth" : 15, < "regex" : "x?\\d{0,3}", --- > "maxWidth" : 16, > "regex" : "x?\\d{0,4}", 72c72 < "lblAmountInput" : { --- > "imgAmountInput" : { interface\windowconfig\pixelcompressor.config 7c7 < "craftingSound" : "/sfx/interface/crafting_general7.ogg", --- > "craftingSound" : "/sfx/interface/crafting_compress.ogg", 62c62 < "upOffset" : 34 --- > "upOffset" : 36 68,69c68,69 < "maxWidth" : 15, < "regex" : "x?\\d{0,3}", --- > "maxWidth" : 16, > "regex" : "x?\\d{0,4}", 72c72 < "lblAmountInput" : { --- > "imgAmountInput" : { interface\windowconfig\questfailed.config 2,4c2 < "onShowSound" : [ < "/sfx/interface/quest_event.wav" < ], --- > "onShowSound" : [], interface\windowconfig\wiringstation.config 7c7 < "craftingSound" : "/sfx/interface/crafting_general7.ogg", --- > "craftingSound" : "/sfx/interface/crafting_tech.ogg", 55c55 < "upOffset" : 34 --- > "upOffset" : 36 61,62c61,62 < "maxWidth" : 15, < "regex" : "x?\\d{0,3}", --- > "maxWidth" : 16, > "regex" : "x?\\d{0,4}", 65c65 < "lblAmountInput" : { --- > "imgAmountInput" : { items\active\unsorted\wateringcan\wateringcan.animation 16c16 < "water" : [ "/sfx/blocks/water_getout.ogg", "/sfx/blocks/water_swim.ogg" ] --- > "water" : [ "/sfx/tools/wateringcan2.ogg", "/sfx/tools/wateringcan3.ogg" ] items\active\weapons\melee\abilities\broadsword\flipslash\flipslash.lua 30a31,32 > status.setPersistentEffects("movementAbility", {{stat = "activeMovementAbilities", amount = 1}}) > 67a70,71 > > status.clearPersistentEffects("movementAbility") items\active\weapons\npc\npcdeadbeataxe.activeitem 27,34c27,28 < "fireTime" : 1.2, < "baseDps" : 5, < "stances" : { < "windup" : { < "duration" : 0.45, < "minWindup" : 0.4 < } < } --- > "fireTime" : 0.5, > "baseDps" : 5 items\active\weapons\protectorate\feroziumstaff\feroziumstaff.activeitem 26,37d25 < "particleEmitters" : { < "physicalcharge" : { < "active" : false, < "transformationGroups" : ["weapon"], < "emissionRate" : 10, < "offsetRegion" : [-0.5, 1.0, 0.5, 2.5], < "particles" : [ < {"particle" : "energyblade"}, < {"particle" : "energyblade2"} < ] < } < }, 99c87 < --- > items\active\weapons\staff\staff.animation 96a97,162 > "lights" : { > "glow" : { > "active" : true, > "position" : [0, 3.0], > "color" : [0, 0, 0], > "transformationGroups" : ["weapon"] > } > }, > > "particleEmitters" : { > "physicalcharge" : { > "active" : false, > "transformationGroups" : ["weapon"], > "emissionRate" : 10, > "offsetRegion" : [-0.5, 1.25, 0.5, 2.75], > "particles" : [ > {"particle" : "energyblade"}, > {"particle" : "energyblade2"} > ] > }, > "firecharge" : { > "active" : false, > "transformationGroups" : ["weapon"], > "emissionRate" : 10, > "offsetRegion" : [-0.5, 1.25, 0.5, 2.75], > "particles" : [ > {"particle" : "fireswoosh1"}, > {"particle" : "fireswoosh2"}, > {"particle" : "fireswoosh3"} > ] > }, > "electriccharge" : { > "active" : false, > "transformationGroups" : ["weapon"], > "emissionRate" : 10, > "offsetRegion" : [-0.5, 1.25, 0.5, 2.75], > "particles" : [ > {"particle" : "electricswoosh1"}, > {"particle" : "electricswoosh2"}, > {"particle" : "electricswoosh2"} > ] > }, > "poisoncharge" : { > "active" : false, > "transformationGroups" : ["weapon"], > "emissionRate" : 10, > "offsetRegion" : [-0.5, 1.25, 0.5, 2.75], > "particles" : [ > {"particle" : "poisonswoosh1"}, > {"particle" : "poisonswoosh2"}, > {"particle" : "fireswoosh2"} > ] > }, > "icecharge" : { > "active" : false, > "transformationGroups" : ["weapon"], > "emissionRate" : 10, > "offsetRegion" : [-0.5, 1.25, 0.5, 2.75], > "particles" : [ > {"particle" : "iceswoosh1"}, > {"particle" : "iceswoosh2"}, > {"particle" : "iceswoosh3"} > ] > } > }, > 128c194 < } \ No newline at end of file --- > } items\active\weapons\staff\abilities\controlprojectile\controlprojectile.lua 91c91 < self:createProjectile() --- > self:createProjectiles() 138,139c138,140 < function ControlProjectile:createProjectile() < local fireDirection = world.distance(activeItem.ownerAimPosition(), self:focusPosition())[1] > 0 and 1 or -1 --- > function ControlProjectile:createProjectiles() > local aimPosition = activeItem.ownerAimPosition() > local fireDirection = world.distance(aimPosition, self:focusPosition())[1] > 0 and 1 or -1 160a162 > world.sendEntityMessage(projectileId, "updateProjectile", aimPosition) items\active\weapons\staff\abilities\controlprojectile\elementswarm.weaponability 17,62d16 < }, < < "stances" : { < "idle" : { < "armRotation" : -90, < "weaponRotation" : 0, < "twoHanded" : false, < < "allowRotate" : false, < "allowFlip" : true < }, < "charge" : { < "duration" : 1.3, < "armRotation" : 20, < "weaponRotation" : -20, < "twoHanded" : true, < < "allowRotate" : false, < "allowFlip" : true < }, < "charged" : { < "armRotation" : 20, < "weaponRotation" : -20, < "twoHanded" : true, < < "allowRotate" : false, < "allowFlip" : false < }, < "discharge" : { < "duration" : 0.5, < "armRotation" : -10, < "weaponRotation" : -50, < "twoHanded" : true, < < "allowRotate" : true, < "allowFlip" : true < }, < "cooldown" : { < "duration" : 0.3, < "armRotation" : -45, < "weaponRotation" : 0, < "twoHanded" : true, < < "allowRotate" : false, < "allowFlip" : false < } items\active\weapons\staff\abilities\controlprojectile\kluexshooter.lua 23c23 < self:createProjectile() --- > self:createProjectiles() items\active\weapons\staff\abilities\controlprojectile\plasmabarrage.lua 3,4c3,5 < function ControlProjectile:createProjectile() < local fireDirection = world.distance(activeItem.ownerAimPosition(), self:focusPosition())[1] > 0 and 1 or -1 --- > function ControlProjectile:createProjectiles() > local aimPosition = activeItem.ownerAimPosition() > local fireDirection = world.distance(aimPosition, self:focusPosition())[1] > 0 and 1 or -1 34a36 > world.sendEntityMessage(projectileId, "updateProjectile", aimPosition) items\active\weapons\staff\abilities\guidedbolt\guidedbolt.lua 15a16,17 > self.stances = config.getParameter("stances") > 47a50 > animator.setParticleEmitterActive(self.elementalType .. "charge", true) 75a79 > animator.setParticleEmitterActive(self.elementalType .. "charge", true) 101a106 > animator.setParticleEmitterActive(self.elementalType .. "charge", false) 249a255,256 > animator.stopAllSounds(self.elementalType.."chargedloop") > animator.stopAllSounds(self.elementalType.."fullcharge") 250a258 > animator.setParticleEmitterActive(self.elementalType .. "charge", false) items\active\weapons\staff\abilities\guidedbolt\guidedbolt.weaponability 52,98c52,53 < "timeoutGroup" : "primary" < }, < < "stances" : { < "idle" : { < "armRotation" : -90, < "weaponRotation" : 0, < "twoHanded" : false, < < "allowRotate" : false, < "allowFlip" : true < }, < "charge" : { < "duration" : 1.3, < "armRotation" : 20, < "weaponRotation" : -20, < "twoHanded" : true, < < "allowRotate" : false, < "allowFlip" : true < }, < "charged" : { < "armRotation" : 20, < "weaponRotation" : -20, < "twoHanded" : true, < < "allowRotate" : false, < "allowFlip" : false < }, < "discharge" : { < "duration" : 0.5, < "armRotation" : 20, < "weaponRotation" : -20, < "twoHanded" : true, < < "allowRotate" : false, < "allowFlip" : false < }, < "cooldown" : { < "duration" : 0.5, < "armRotation" : -45, < "weaponRotation" : 0, < "twoHanded" : true, < < "allowRotate" : false, < "allowFlip" : false < } --- > "timeoutGroup" : "primary", > "statusEffects" : [ "electrified" ] items\active\weapons\staff\teslastaff\teslastaff.activeitem 19a20,26 > "animationCustom" : { > "particleEmitters" : { > "electriccharge" : { > "offsetRegion" : [-0.5, 1.75, 0.5, 3.25] > } > } > }, 24a32,77 > "stances" : { > "idle" : { > "armRotation" : -90, > "weaponRotation" : 0, > "twoHanded" : false, > > "allowRotate" : false, > "allowFlip" : true > }, > "charge" : { > "duration" : 1.3, > "armRotation" : 20, > "weaponRotation" : -20, > "twoHanded" : true, > > "allowRotate" : false, > "allowFlip" : true > }, > "charged" : { > "armRotation" : 20, > "weaponRotation" : -20, > "twoHanded" : true, > > "allowRotate" : false, > "allowFlip" : false > }, > "discharge" : { > "duration" : 0.5, > "armRotation" : 20, > "weaponRotation" : -20, > "twoHanded" : true, > > "allowRotate" : false, > "allowFlip" : false > }, > "cooldown" : { > "duration" : 0.5, > "armRotation" : -45, > "weaponRotation" : 0, > "twoHanded" : true, > > "allowRotate" : false, > "allowFlip" : false > } > }, > 29a83,100 > }, > > "altAbility" : { > "type" : "balllightning", > "name" : "Ball Lightning", > "scripts" : ["/items/active/weapons/staff/abilities/controlprojectile/controlprojectile.lua"], > "class" : "ControlProjectile", > > "energyCost" : 80, > > "maxCastRange" : 25, > > "projectileCount" : 3, > "projectileDistance" : 2.5, > "projectileType" : "balllightning", > "projectileParameters" : { > "baseDamage" : 10 > } items\armors\biome\alpine\alpaca\alpacaguard\alpacaguard.chest 10a11 > "hideBody" : true, items\armors\biome\alpine\alpaca\alpacaguard\alpacaguard.head 10a11 > "hideBody" : true, items\armors\biome\alpine\alpaca\alpacaguard\alpacaguard.legs 10a11 > "hideBody" : true, items\armors\biome\alpine\alpaca\alpacavillager\alpacavillager.chest 10a11 > "hideBody" : true, items\armors\biome\alpine\alpaca\alpacavillager\alpacavillager.head 10a11 > "hideBody" : true, items\armors\biome\alpine\alpaca\alpacavillager\alpacavillager.legs 10a11 > "hideBody" : true, items\generic\food\tier1\toast.consumable 7,8c7,8 < "description" : "A slice of warm, toasted bread. Comforting.", < "shortdescription" : "Toast", --- > "description" : "A slice of warm, eggy bread. Delicious.", > "shortdescription" : "Eggy Toast", items\generic\produce\cocoa.item 8,9c8,9 < "description" : "Some cocoa beans are within. -todo-", < "shortdescription" : "Cocoa Beans", --- > "description" : "A large pod packed full of rich cocoa beans. Grind it up and you've got chocolate!", > "shortdescription" : "Cocoa Pod", items\materials\platform2.matitem 11d10 < "learnBlueprintsOnPickup" : [ "platform2" ], items\materials\woodenplatform.matitem 13,14c13 < "materialId" : 70, < "learnBlueprintsOnPickup" : [ "woodenplatform" ] --- > "materialId" : 70 monsters\boss\penguinminiufo\penguinminiufo.lua 7a8,11 > > if animator.hasSound("deathPuff") then > monster.setDeathSound("deathPuff") > end monsters\critter\floatinggeodecritter\floatinggeodecritter.monstertype 95c95 < "capturable" : true, --- > "capturable" : false, monsters\ghosts\erchiusghost\erchiusghost.lua 1a2 > require "/scripts/interp.lua" 11d11 < self.minSpeed = config.getParameter("minSpeed") 13a14,18 > self.erchiusRange = config.getParameter("erchiusRange") > self.minSpeedRange = config.getParameter("minSpeedRange") > self.speedupFunction = config.getParameter("speedupFunction") > self.targetErchius = 0 > 20a26,30 > self.targetErchius = 0 > message.setHandler("setErchiusLevel", function(_,_,amount) > self.targetErchius = amount > end) > 23a34,38 > function minSpeed() > local ratio = math.min(1.0, math.max(0.0, self.targetErchius / (self.erchiusRange[2] - self.erchiusRange[1]))) > return interp.linear(math.sqrt(ratio), self.minSpeedRange[1], self.minSpeedRange[2]) > end > 44c59 < local speed = self.minSpeed + (speedDistanceRatio * self.maxSpeed) --- > local speed = minSpeed() + (speedDistanceRatio * self.maxSpeed) monsters\ghosts\erchiusghost\erchiusghost.monstertype 18,19c18 < "speedupRange" : [50, 175], < "minSpeed" : 3, --- > "speedupRange" : [75, 175], 20a20,23 > > // The min speed depends on the erchius amount of the player > "minSpeedRange" : [0.5, 10], > "erchiusRange" : [0, 5000], monsters\pets\groundpet.lua 60a61,63 > > self.lastInteract = 0 > monster.setInteractive(true) 64a68,75 > end > > > function interact() > if world.time() - self.lastInteract > config.getParameter("interactCooldown", 3.0) then > emote("happy") > self.lastInteract = world.time() > end npcs\base.npctype 158,159c158 < "maxBoostedChance" : 0.5, < "maxRolls" : 1 --- > "maxBoostedChance" : 0.5 npcs\friendlyguard.npctype 20c20,26 < "enableParticipation" : true --- > "enableParticipation" : true, > > "timeLimit" : 30, > "nearbyQuestLimit" : 2, > "nearbyQuestRange" : 50, > "chance" : 0.02, > "questCountRange" : [1, 4] npcs\guard.npctype 19a20,36 > "questGenerator" : { > "pools" : ["common", "guard"], > "enableParticipation" : true, > "timeLimit" : 30, > "nearbyQuestLimit" : 2, > "nearbyQuestRange" : 50, > "questCountRange" : [1, 4], > > "graduation" : { > "nextNpcType" : [ > [1, "crewmember"], > [0.5, "crewmemberengineer"], > [0.5, "crewmembermechanic"] > ] > } > }, > npcs\merchantpools.config 306,311d305 < "baronmerchant" : [ < [0, [ < { "item" : { "name" : "protectorsbroadsword" } } < ]] < ], < npcs\villageguard.npctype 23c23,35 < "enableParticipation" : true --- > "enableParticipation" : true, > "timeLimit" : 30, > "nearbyQuestLimit" : 2, > "nearbyQuestRange" : 50, > "questCountRange" : [1, 4], > > "graduation" : { > "nextNpcType" : [ > [1, "crewmember"], > [0.5, "crewmemberengineer"], > [0.5, "crewmembermechanic"] > ] > } npcs\villager.npctype 30a31 > "questCountRange" : [1, 4], 44,45c45 < ], < "chance" : 0.01 --- > ] npcs\crew\crewmemberengineer.npctype 15c15 < "uniformColorIndex" : 2, --- > "uniformColorIndex" : 5, npcs\crew\crewmembertailor.npctype 15c15 < "uniformColorIndex" : 1 --- > "uniformColorIndex" : 9 npcs\dungeon\apexcamp\apexrebelvillager.npctype 20a21 > "questCountRange" : [1, 4], 28,29c29 < ], < "chance" : 0.01 --- > ] 184c184 < } \ No newline at end of file --- > } npcs\dungeon\aviannativevillage\stargazer.npctype 6a7,14 > "questGenerator" : { > "pools" : ["common", "tenant","shady"], > "graduation" : { > "nextNpcType" : [] > } > } > }, > 9a18 > 30,31c39 < } < }, --- > }, npcs\furniture\gothic.npctype 8c8 < "pools" : ["tenant", "common"] --- > "pools" : ["tenant", "common","shady"] npcs\furniture\spooky.npctype 8c8 < "pools" : ["tenant", "common"] --- > "pools" : ["tenant", "common", "shady"] npcs\outpost\visitors\maggotmanvisitor.npctype 54c54 < { "name" : "larvahead", "parameters" : { "colorIndex" : 0 } } --- > { "name" : "larvanpchead", "parameters" : { "colorIndex" : 0 } } 57c57 < { "name" : "larvachest", "parameters" : { "colorIndex" : 0 } } --- > { "name" : "larvanpcchest", "parameters" : { "colorIndex" : 0 } } 60c60 < { "name" : "larvalegs", "parameters" : { "colorIndex" : 0 } } --- > { "name" : "larvanpclegs", "parameters" : { "colorIndex" : 0 } } npcs\subbiometenants\colourful.npctype 5a6,9 > "questGenerator" : { > "pools" : ["tenant", "common"] > }, > npcs\subbiometenants\eyepatch.npctype 3c3 < "baseType" : "friendlyguard", --- > "baseType" : "friendlyguardtenant", 5a6,8 > "questGenerator" : { > "pools" : ["tenant", "common"] > }, npcs\tenants\apexresearchlab.npctype 28c28,36 < "pools" : ["common", "tenant", "shady"] --- > "pools" : ["common", "tenant", "shady"], > "graduation" : { > "nextNpcType" : [ > [0.25, "crewmemberchemistblue"], > [0.25, "crewmemberchemistgreen"], > [0.25, "crewmemberchemistyellow"], > [0.25, "crewmemberchemistorange"] > ] > } npcs\tenants\aviantomb.npctype 8c8,12 < "pools" : ["common", "tenant"] --- > "pools" : ["common", "tenant","shady"], > "graduation" : { > "nextNpcType" : [] > } > } 30,31c34 < } < }, --- > }, 38c41 < { "name" : "aviantier1head", "parameters" : { "colorIndex" : 6 } } --- > { "name" : "phoenixhat", "parameters" : { "colorIndex" : 6 } } npcs\tenants\chefmerchanttenant.npctype 13,14c13 < "chance" : 0.01, < "maxRolls" : -1 --- > "chance" : 0.01 npcs\tenants\friendlycultist.npctype 30c30 < { "name" : "cultisthead", "parameters" : { "colorIndex" : 1 } } --- > { "name" : "cultisthead", "parameters" : { "colorIndex" : 0 } } 33c33 < { "name" : "cultistchest", "parameters" : { "colorIndex" : 1 } } --- > { "name" : "cultistchest", "parameters" : { "colorIndex" : 0 } } 36c36 < { "name" : "cultistlegs", "parameters" : { "colorIndex" : 1 } } --- > { "name" : "cultistlegs", "parameters" : { "colorIndex" : 0 } } npcs\tenants\friendlyguardtenant.npctype 16,17d15 < "maxRolls" : -1, < npcs\tenants\generictenant.npctype 18,23c18 < "chance" : 0.02, < "maxRolls" : -1, < < "graduation" : { < "chance" : 0.3 < } --- > "chance" : 0.02 npcs\tenants\humanprison.npctype 28c28,35 < "pools" : ["common", "tenant", "shady"] --- > "pools" : ["common", "tenant", "shady"], > "graduation" : { > "nextNpcType" : [ > [0.25, "crewmemberengineer"], > [0.5, "crewmember"], > [0.25, "crewmembermechanic"] > ] > } npcs\tenants\philanthropist.npctype 8c8,12 < "pools" : ["common", "tenant"] --- > "graduation" : { > "nextNpcType" : [ > [1, "crewmembertailor"] > ] > } npcs\tenants\shroommerchanttenant.npctype 21,22c21 < "chance" : 0.01, < "maxRolls" : -1 --- > "chance" : 0.01 npcs\tenants\socialite.npctype 8c8,12 < "pools" : ["common", "tenant"] --- > "graduation" : { > "nextNpcType" : [ > [1, "crewmembertailor"] > ] > } objects\apex\apexconsole1\apexconsole1.object 8c8 < "description" : "That big red level should probably be left alone.", --- > "description" : "That big red lever should probably be left alone.", objects\apex\apextent\apextent.object 24a25,30 > "sitEmote" : "sleep", > "sitStatusEffects" : [ > "regeneration1", > "nude", > "intents" > ], objects\apex\classicapestatuenohead\classicapestatuenohead.object 8c8 < "shortdescription" : "Headless Big Ape Monument", --- > "shortdescription" : "Headless Big Ape Statue", objects\avian\consoletribal2\consoletribal2.object 7c7 < "description" : "An access panel with an egg is etched into its base.", --- > "description" : "An access panel with an egg etched into its base.", objects\biome\savannah\dustybed\dustybed.object 3c3 < "colonyTags" : ["misc"], --- > "colonyTags" : ["fenerox"], objects\biome\savannah\dustychair\dustychair.object 3c3 < "colonyTags" : ["misc"], --- > "colonyTags" : ["fenerox"], objects\biome\savannah\dustytable\dustytable.object 3c3 < "colonyTags" : ["commerce"], --- > "colonyTags" : ["fenerox","commerce"], objects\crafting\upgradeablecraftingobjects\craftinganvil\craftinganvil.object 169c169,170 < "initialRecipeUnlocks" : [ "acceleratoraddon", "separatoraddon", "manipulatoraddon" ] --- > "initialRecipeUnlocks" : [ "acceleratoraddon", "separatoraddon", "manipulatoraddon" ], > "craftingSound" : "/sfx/interface/crafting_tech.ogg" objects\crafting\upgradeablecraftingobjects\craftingfurnace\craftingfurnace.object 169a170 > "craftingSound" : "/sfx/interface/crafting_furnacetech.ogg", objects\crafting\upgradeablecraftingobjects\craftingwheel\craftingwheel.object 117c117,118 < "filter" : [ "craftingwheel", "craftingwheel2" ] --- > "filter" : [ "craftingwheel", "craftingwheel2" ], > "craftingSound" : "/sfx/interface/crafting_sewing.ogg" objects\crafting\upgradeablecraftingobjects\inventorstable\inventorstable.object 162c162,163 < "filter" : [ "inventorstable", "inventorstable2", "inventorstable3" ] --- > "filter" : [ "inventorstable", "inventorstable2", "inventorstable3" ], > "craftingSound" : "/sfx/interface/crafting_tech.ogg" objects\farmables\cocoa\cocoaseed.object 6c6 < "description" : "Cocoa beans can be brewed to make a tasty beverage.", --- > "description" : "A cocoa plant. Once ripe, the pods can be turned into chocolate.", 12,18c12,18 < "apexDescription" : "Cocoa is sought after for its pep-giving properties", < "avianDescription" : "Cocoa beans look a tempting treat, but are extremely bitter.", < "floranDescription" : "Cocoa keepsss Floran awake.", < "glitchDescription" : "Ponderous. Glitch see no good use for these bitter beans.", < "humanDescription" : "Cocoa, the perkiest plant known to man.", < "hylotlDescription" : "See beyond its bitter taste and Cocoa is a useful resource.", < "novakidDescription" : "Cocoa smells good, but I've never noticed any beneficial side-effects to drinkin' the stuff.", --- > "apexDescription" : "A source of cocoa, used to make delicious chocolate.", > "avianDescription" : "The contents of a cocoa pod can be ground into a tasty paste.", > "floranDescription" : "When pods are ripe, Floran can make tasssty paste.", > "glitchDescription" : "Intrigued. A cocoa plant, the origin of chocolate.", > "humanDescription" : "Cocoa is what chocolate is made from! It's a chocolate tree!", > "hylotlDescription" : "Sunshine, water, and a little patience is the secret to a bountiful harvest.", > "novakidDescription" : "Chocolate growin' on trees.", objects\farmables\coffee\coffeeseed.object 12c12 < "apexDescription" : "Coffee is sought after for its pep-giving properties", --- > "apexDescription" : "Coffee is sought after for its pep-giving properties.", objects\glitch\medievalarmorarmed\medievalarmorarmed.object 17c17 < "novakidDescription" : "Seems unnecessary to wear somethin' this when fightin'.", --- > "novakidDescription" : "Seems unnecessary to wear somethin' like this when fightin'.", objects\glitch\medievalmap\medievalmap.object 6c6 < "shortdescription" : "medieval Map", --- > "shortdescription" : "Medieval Map", objects\human\vendingmachine\vendingmachine.object 34,35c34 < { "item" : "bottledwater" }, < { "item" : "chocolate" } --- > { "item" : "bottledwater" } objects\protectorate\objects\protectoratelobbyvending\protectoratelobbyvending.object 49c49,58 < ] --- > ], > > "soundEffect" : "/sfx/objects/fluorescent_light_loud.ogg", > "soundEffectRangeMultiplier" : 0.5 > > //"onSound" : "/sfx/objects/vendingmachine_open1.ogg", > //"offSound" : "/sfx/objects/vendingmachine_close1.ogg", > > //"openSounds" : [ "/sfx/objects/vendingmachine_open1.ogg" ], > //"closeSounds" : [ "/sfx/objects/vendingmachine_close1.ogg" ] parallax\underground\brains.parallax 8a9 > "noRandomOffset" : true, 16a18 > "noRandomOffset" : true, 25a28 > "noRandomOffset" : true, 34a38 > "noRandomOffset" : true, 43a48 > "noRandomOffset" : true, 52a58 > "noRandomOffset" : true, 61a68 > "noRandomOffset" : true, 70a78 > "noRandomOffset" : true, 75,76d82 < < 82a89 > "noRandomOffset" : true, 91a99 > "noRandomOffset" : true, 100a109 > "noRandomOffset" : true, 109a119 > "noRandomOffset" : true, 118a129 > "noRandomOffset" : true, 127a139 > "noRandomOffset" : true, 136a149 > "noRandomOffset" : true, 141,142d153 < < 148a160 > "noRandomOffset" : true, 157a170 > "noRandomOffset" : true, 166a180 > "noRandomOffset" : true, 175a190 > "noRandomOffset" : true, 184a200 > "noRandomOffset" : true, 193a210 > "noRandomOffset" : true, 202a220 > "noRandomOffset" : true, 207,208d224 < < 214a231 > "noRandomOffset" : true, 219c236 < } \ No newline at end of file --- > } particles\electricswoosh1.particle 7c7 < "position" : [0.5, 0], --- > "position" : [0, 0], 12a13 > "fullbright" : true, plants\grass\ceiling\decorative\ceilingroots\ceilingroots.grass 4a5 > "scannable" : false, quests\generated\pools\farmable.config 29d28 < ["mushroomseed", "shroom"], 36c35,36 < ["pearlpeaseed", "pearlpea"] --- > ["pearlpeaseed", "pearlpea"], > ["cottonseed", "cotton"] quests\generated\pools\furniture.config 59,82d58 < ["tier5", "tier5chair"], < ["tier5", "tier5table"], < ["tier5", "tier5light"], < < ["tier6", "tier6chair"], < ["tier6", "tier6table"], < ["tier6", "tier6light"], < < ["tier7", "tier7chair"], < ["tier7", "tier7table"], < ["tier7", "tier7light"], < < ["tier8", "tier8chair"], < ["tier8", "tier8table"], < ["tier8", "tier8light"], < < ["tier9", "tier9chair"], < ["tier9", "tier9table"], < ["tier9", "tier9light"], < < ["tier10", "tier10chair"], < ["tier10", "tier10table"], < ["tier10", "tier10light"], < quests\generated\pools\furnituresets.config 40,59d39 < ]], < [5, [ < ["tier5door", "tier5light"], < ["tier8door", "tier8light"], < ["tier9door", "tier9light", "tier9chair"], < ["tier8door", "tier8light", "tier8chair"], < ["tier5door", "tier5light", "tier5table"] < ]], < [6, [ < ["tier10door", "tier10light"], < ["tier6door", "tier6light"], < ["tier10door", "tier10light", "tier10chair"], < ["tier10door", "tier10light"], < ["tier10door", "tier7light", "tier6chair"], < ["tier7door", "tier7light", "tier7chair"], < ["tier7door", "tier7light"], < ["tier7door", "tier8light", "tier9chair"], < ["tier6door", "tier6light", "tier9table"], < ["tier6door", "tier6light"], < ["tier6door", "tier6light", "tier6table"] quests\generated\questpools\common.config 345c345 < "spawnCount" : [2, 10], --- > "spawnCount" : [3, 6], 511c511 < "spawnCount" : [2, 10], --- > "spawnCount" : [3, 6], 600c600 < "spawnCount" : [2, 10], --- > "spawnCount" : [3, 6], quests\generated\questpools\guard.config 74c74 < "spawnCount" : [2, 10], --- > "spawnCount" : [3, 6], quests\generated\templates\barter.questtemplate 61c61 < "Bright. Next, travelling merchant arrived at the ^orange;^white; a short time ago. has agreed to provide us with the ^orange;^white; we require in exchange for the ^orange;^white;. Could you ^green;take the goods to ^orange;^white;?" --- > "Bright. Next, travelling merchant arrived at the ^orange;^white; a short time ago. has agreed to provide us with the ^orange;^white; we require in exchange for the ^orange;^white;. Could you ^green;take the goods to ^orange;^white;?" quests\generated\templates\kidnapping.questtemplate 132,133c132,133 < ["seperated", [ < "we were seperated", --- > ["separated", [ > "we were separated", 183c183 < "I was out with my ^orange;^white; , when . I saw some ^orange;^white; sneaking around and worry has been ! I last saw near the ^orange;^white;. ^green;Can you go and find ^white;?" --- > "I was out with my ^orange;^white; , when . I saw some ^orange;^white; sneaking around and worry has been ! I last saw near the ^orange;^white;. ^green;Can you go and find ^white;?" 190c190 < "Worried. I was out with my ^orange;^white; , when . I saw some ^orange;^white; sneaking around and worry has been ! I last saw near the ^orange;^white;. ^green;Can you go and find ^white;?" --- > "Worried. I was out with my ^orange;^white; , when . I saw some ^orange;^white; sneaking around and worry has been ! I last saw near the ^orange;^white;. ^green;Can you go and find ^white;?" quests\generated\templates\protect.questtemplate 52c52 < "^cyan;Worried. I wish to win the favour of , and now I hear is in danger. ", --- > "^cyan;Worried. I wish to win the favour of , and now I hear is in danger. ", 96c96 < "Restless. I've received word that the ^orange;^white; at the ^orange;^white; are coming for ^orange;! ^green;You must help me protect ,^white; before it is too late!" --- > "Restless. I've received word that the ^orange;^white; at the ^orange;^white; are coming for ^orange;^white;! ^green;You must help me protect ^white;, before it is too late!" 140c140 < "Exuberant. You defeated the and saved ! You are no doubt a noble warrior! And is no doubt indebted to me!" --- > "Exuberant. You defeated the and saved ! You are no doubt a noble warrior! And no doubt indebted to me!" quests\outpost\protectoratesword.questtemplate 5c5 < "title" : "The Hero's Forge", --- > "title" : "^green;The Hero's Forge", 10c10 < [ [ "protectorsbroadsword", 1 ] ] --- > [ [ "protectoratebroadsword", 1 ] ] quests\outpost\ursaminer1.questtemplate 3c3 < "title" : "The Lost Teddy", --- > "title" : "^green;The Lost Teddy", quests\outpost\shipupgrade\illegalshipupgrade1.questtemplate 4,5c4,6 < "text" : "This ship license is printed on a length of soft perforated tissue. Everything looks to be in order. Visit the shipyard with ^orange;2 Upgrade Modules^reset; to upgrade your ship.", < "completionText" : "I've upgraded yer ship. I'm sure yer'll be pleased with the level of craftsmanship.", --- > "text" : "This ship license is definitely legitimate. ^green;Visit Penguin Pete^reset; with ^orange;2 Upgrade Modules^reset; to upgrade your ship.", > "completionText" : "I'll upgrade yer ship now. I'm sure yer'll be pleased with the level of craftsmanship.", > "completionCinema" : "/cinematics/upgrading/shipupgrade.cinematic", 20d20 < "preCompletionCinema" : "/cinematics/repair/shipupgrade.cinematic", quests\outpost\shipupgrade\illegalshipupgrade2.questtemplate 4,5c4,6 < "text" : "This ship license looks legitimate, regardless of its unusual size. Visit the shipyard with ^orange;4 Upgrade Modules^reset; to upgrade your ship.", < "completionText" : "Yer ship's all upgraded. The penguins have done a fine job.", --- > "text" : "This ship license is unquestionably authentic. ^green;Visit Penguin Pete^reset; with ^orange;4 Upgrade Modules^reset; to upgrade your ship.", > "completionText" : "Yer ship'll be upgraded right away. The penguins always do a fine job.", > "completionCinema" : "/cinematics/upgrading/shipupgrade.cinematic", 20d20 < "preCompletionCinema" : "/cinematics/repair/shipupgrade.cinematic", quests\outpost\shipupgrade\illegalshipupgrade3.questtemplate 4,5c4,6 < "text" : "Falcon Class Ship Upgrade license number 999999 activated. Visit the shipyard with ^orange;6 Upgrade Modules^reset; to upgrade your ship.", < "completionText" : "Yer upgrade is complete, enjoy yer ship.", --- > "text" : "This ship license is indisputably lawful.^green;Visit Penguin Pete^reset; with ^orange;6 Upgrade Modules^reset; to upgrade your ship.", > "completionText" : "One ship upgrade comin' up!", > "completionCinema" : "/cinematics/upgrading/shipupgrade.cinematic", 20d20 < "preCompletionCinema" : "/cinematics/repair/shipupgrade.cinematic", quests\outpost\shipupgrade\illegalshipupgrade4.questtemplate 3,5c3,6 < "title" : "^green;Eagle Ship upgrade", < "text" : "This ship license is literally just an apple. For some reason it's recognized as an Eagle Class Ship License. Visit the shipyard with ^orange;8 Upgrade Modules^reset; to upgrade your ship.", < "completionText" : "Yer lucky there's so much space in space! Yer ship's upgraded, with room to spare.", --- > "title" : "^green;Eagle Ship Upgrade", > "text" : "This ship licence is entirely and completely legal, for sure. ^green;Visit Penguin Pete^reset; with ^orange;8 Upgrade Modules^reset; to upgrade your ship.", > "completionText" : "Yer lucky there's so much space in space! Yer ship'll have room to spare after this upgrade.", > "completionCinema" : "/cinematics/upgrading/shipupgrade.cinematic", 20d20 < "preCompletionCinema" : "/cinematics/repair/shipupgrade.cinematic", quests\outpost\shipupgrade\illegalshipupgrade5.questtemplate 3,5c3,6 < "title" : "^green;Corndog Ship Upgrade", < "text" : "This license reads \"Corndog Class Ship License\", but it seems to check out. Bring ^orange;10 upgrade modules^reset; to the outpost shipyard to upgrade your ship.", < "completionText" : "The Penguins have finished up yer ship with the final upgrade. I thank ye for yer custom.", --- > "title" : "^green;Condor Ship Upgrade", > "text" : "This ship license is... Fine, probably. ^green;Bring ^orange;10 upgrade modules^green; to Penguin Pete^white; to upgrade your ship.", > "completionText" : "I'll have the penguins finish up yer ship with the final upgrade. I thank ye for yer custom.", > "completionCinema" : "/cinematics/upgrading/shipupgrade.cinematic", 20d20 < "preCompletionCinema" : "/cinematics/repair/shipupgrade.cinematic", quests\outpost\shipupgrade\shipupgrade1.questtemplate 4,5c4,6 < "text" : "Congratulations! With a functional crew this large, you now qualify for the Sparrow License! Visit the shipyard on the outpost with 2 Upgrade Modules to upgrade your ship.", < "completionText" : "I've upgraded yer ship. I'm sure yer'll be pleased with the level of craftsmanship.", --- > "text" : "Congratulations! Now you have two crew members you qualify for the Sparrow License. You can upgrade your ship! ^green;Visit Penguin Pete on the outpost^reset; with ^orange;2 Upgrade Modules^reset;.", > "completionText" : "I'll upgrade yer ship now. I'm sure yer'll be pleased with the level of craftsmanship.", > "completionCinema" : "/cinematics/upgrading/shipupgrade.cinematic", 20d20 < "preCompletionCinema" : "/cinematics/repair/shipupgrade.cinematic", quests\outpost\shipupgrade\shipupgrade2.questtemplate 4,5c4,6 < "text" : "Congratulations! With a functional crew this large, you now qualify for the Kestrel License! Visit the shipyard with 4 Upgrade Modules to upgrade your ship.", < "completionText" : "Yer ship's all upgraded. The penguins have done a fine job.", --- > "text" : "You have four crew memebers! With a crew this size, you now qualify for the Kestrel License. Congratulations! ^green;Visit Penguin Pete^reset; with ^orange;4 Upgrade Modules^reset; to upgrade your ship.", > "completionText" : "Yer ship'll be upgraded right away. The penguins always do a fine job.", > "completionCinema" : "/cinematics/upgrading/shipupgrade.cinematic", 20d20 < "preCompletionCinema" : "/cinematics/repair/shipupgrade.cinematic", quests\outpost\shipupgrade\shipupgrade3.questtemplate 4,5c4,6 < "text" : "Congratulations! With a functional crew this large, you now qualify for the Falcon License! Visit the shipyard with 6 Upgrade Modules to upgrade your ship.", < "completionText" : "Yer upgrade is complete, enjoy yer ship.", --- > "text" : "Congratulations - with six crew members you now qualify for the Falcon License! ^green;Visit Penguin Pete^reset; with ^orange;6 Upgrade Modules^reset; to upgrade your ship.", > "completionText" : "One ship upgrade comin' up!", > "completionCinema" : "/cinematics/upgrading/shipupgrade.cinematic", 20d20 < "preCompletionCinema" : "/cinematics/repair/shipupgrade.cinematic", quests\outpost\shipupgrade\shipupgrade4.questtemplate 3,5c3,6 < "title" : "^green;Eagle Ship upgrade", < "text" : "Congratulations! With a functional crew this large, you now qualify for the Eagle License! Visit the shipyard with 8 Upgrade Modules to upgrade your ship.", < "completionText" : "Yer lucky there's so much space in space! Yer ship's upgraded, with room to spare.", --- > "title" : "^green;Eagle Ship Upgrade", > "text" : "Eight crew members! Congratulations - you now qualify for the Eagle License! ^green;Visit Penguin Pete^reset; with ^orange;8 Upgrade Modules^reset; to upgrade your ship.", > "completionText" : "Yer lucky there's so much space in space! Yer ship'll have room to spare after this upgrade.", > "completionCinema" : "/cinematics/upgrading/shipupgrade.cinematic", 20d20 < "preCompletionCinema" : "/cinematics/repair/shipupgrade.cinematic", quests\outpost\shipupgrade\shipupgrade5.questtemplate 4,5c4,6 < "text" : "Congratulations! With a functional crew this large, you now qualify for the Condor License! Visit the shipyard with 10 Upgrade Modules to upgrade your ship.", < "completionText" : "The Penguins have finished up yer ship with the final upgrade. I thank ye for yer custom.", --- > "text" : "Congratulations! With a crew of ten you now qualify for the Condor License! ^green;Visit Penguin Pete^reset; with ^orange;10 Upgrade Modules^reset; to upgrade your ship.", > "completionText" : "I'll have the penguins finish up yer ship with the final upgrade. I thank ye for yer custom.", > "completionCinema" : "/cinematics/upgrading/shipupgrade.cinematic", 20d20 < "preCompletionCinema" : "/cinematics/repair/shipupgrade.cinematic", quests\story\apex_mission1.questtemplate 54c54 < "paintingapespear" : 2, --- > "paintingapespeare" : 2, 80c80 < "text" : "Hmm, this map indicates the supposed whereabouts of Big Ape. I see the Miniknog likes to keep it's most important assets close to hand. I think this will be a very useful clue, dear.", --- > "text" : "Hmm, this map indicates the supposed whereabouts of Big Ape. I see the Miniknog likes to keep its most important assets close to hand. I think this will be a very useful clue, dear.", quests\story\bootship.questtemplate 12c12 < [ ["rewardbag", 1] ] --- > [ ] quests\story\destroyruin.questtemplate 25c25 < "destroyRuin" : "Go through the ^orange;Ark^reset; and ^green;destroy ^orange;Ruin^reset;", --- > "destroyRuin" : "Go through the ^orange;Ark^reset; and ^green;destroy ^orange;the Ruin^reset;", quests\story\glitch_mission1.questtemplate 46c46 < "glitchbloodbank" : 2, --- > "medievalweaponrack" : 2, quests\story\hylotl_mission1.questtemplate 6c6 < "text" : "We should start work on finding the ^orange;Hylotl artifact^reset; now. Search around ^orange;temperate stars^reset;, ^green;and hunt for ^orange;clues^white; on planets with vaste tracts of ^orange;ocean^reset;, where the Hylotl reside both above and below the waves. ^green;Come back here when your search is complete^reset;; and look after yourself.", --- > "text" : "We should start work on finding the ^orange;Hylotl artifact^reset; now. Search around ^orange;temperate stars^reset;, ^green;and hunt for ^orange;clues^white; on planets with vast tracts of ^orange;ocean^reset;, where the Hylotl reside both above and below the waves. ^green;Come back here when your search is complete^reset;; and look after yourself.", 45c45 < "hylotoshojiscreen" : 2, --- > "hylotlshojiscreen" : 2, 87c87 < "text" : "The Hylotl protect and preserve knowledge like the most precious treasure... Books are their most precious commodity, could their artifact be stored amongst a repository of tomes?.", --- > "text" : "The Hylotl protect and preserve knowledge like the most precious treasure... Books are their most precious commodity, could their artifact be stored amongst a repository of tomes?", 95c95 < "text" : "This Library is modeled in equisite detail - a palace of knowledge! Perhaps their artifact is housed in a place such as this.", --- > "text" : "This Library is modelled in exquisite detail - a palace of knowledge! Perhaps their artifact is housed in a place such as this.", quests\story\protectorate.questtemplate 6c6 < "completionText" : "The years of training payed off - you survived graduation day!", --- > "completionText" : "The years of training paid off - you survived graduation day!", radiomessages\exploration.radiomessages 33c33 < "text" : "It may be worth noting that this moon has no atmosphere and that you are slowly suffocating. I suggest you leave, and return when you have crafted a breathing EPP.", --- > "text" : "It may be worth noting that this celestial body has no atmosphere and that you are slowly suffocating. I suggest you leave, and return when you have crafted a breathing EPP.", 34a35,41 > }, > > "erchiussickness" : { > "unique" : false, > "senderName" : "Esther Bright", > "portraitImage" : "/interface/chatbubbles/estherthoughtful.png:", > "text" : "-placeholder- Be careful! Removing erchius from its source attracts an entity known only as an ^orange;erchius ghost^reset;. The ^orange;more erchius you carry^reset;, the more ^orange;viciously^reset; the ghost will ^orange;chase you.^reset;" recipes\campfire\potatogrids.recipe 3c3 < { "item" : "mashedpotato", "count" : 1 } --- > { "item" : "mashedpotato", "count" : 2 } recipes\campfire\toast.recipe 3c3,4 < { "item" : "bread", "count" : 1 } --- > { "item" : "bread", "count" : 1 }, > { "item" : "egg", "count" : 1 } scripts\tenant.lua 151c151 < if graduation and math.random() < (graduation.chance or 1) then --- > if graduation and #graduation.nextNpcType > 0 then scripts\actions\quests.lua 137a138,158 > function tooManyQuestsNearby() > local searchRadius = config.getParameter("questGenerator.nearbyQuestRange", 50) > local questManagers = 0 > local entities = world.entityQuery(entity.position(), searchRadius) > for _,entity in pairs(entities) do > if world.entityName(entity) == "questgentest" then > -- Testing object suppresses automatic quest generation > return false > end > > if world.entityType(entity) == "stagehand" and world.stagehandType(entity) == "questmanager" then > questManagers = questManagers + 1 > end > end > > if questManagers >= config.getParameter("questGenerator.nearbyQuestLimit", 2) then > return true > end > return false > end > 163,177c184 < local searchRadius = config.getParameter("questGenerator.nearbyQuestRange", 50) < local questManagers = 0 < local entities = world.entityQuery(entity.position(), searchRadius) < for _,entity in pairs(entities) do < if world.entityName(entity) == "questgentest" then < -- Testing object suppresses automatic quest generation < return false < end < < if world.entityType(entity) == "stagehand" and world.stagehandType(entity) == "questmanager" then < questManagers = questManagers + 1 < end < end < < if questManagers > config.getParameter("nearbyQuestLimit", 2) then --- > if tooManyQuestsNearby() then 194,199c201 < local rolls = math.floor(elapsed / period) < local maxRolls = config.getParameter("questGenerator.maxRolls", -1) < if maxRolls > 0 then < return math.min(maxRolls, rolls) < end < return rolls --- > return math.floor(elapsed / period) 206c208 < self.isGeneratingQuest = nil --- > self.isGeneratingQuest = false 231a234,241 > > -- Check at the end of generation as well to make nearbyQuestLimit a hard > -- limit. > -- Check may be expensive (it does an entityQuery) so cannot repeat this > -- throughout generation, only at beginning and end. > if tooManyQuestsNearby() then > return false > end scripts\quest\participant.lua 17a18,20 > > self.data.questsRemaining = self.data.questsRemaining or util.randomIntInRange(config.getParameter("questGenerator.questCountRange")) > 265c268,273 < tenant.graduate() --- > if self.data.questsRemaining then > self.data.questsRemaining = self.data.questsRemaining - 1 > if self.data.questsRemaining <= 0 then > tenant.graduate() > end > end species\novakid.species 17c17 < "charGenTextLabels" : [ "Gas colour", "Hair style", "Shirt", "Legwear", "---", "Brand", "Shirt colour", "Legwear colour", "NOVAKID", "Personality" ], --- > "charGenTextLabels" : [ "Gas colour", "Hair style", "Shirt", "Legwear", "", "Brand", "Shirt colour", "Legwear colour", "NOVAKID", "Personality" ], stats\effects\erchiussickness\erchiussickness.animation 20a21,25 > "glow" : { > "active" : false, > "position" : [0, 0], > "color" : [140, 70, 140] > } stats\effects\erchiussickness\erchiussickness.lua 2a3 > require "/scripts/interp.lua" 4a6 > self.effectMaxErchius = config.getParameter("effectMaxErchius") 7a10,11 > self.light = config.getParameter("lightColor") > self.multiply = config.getParameter("multiplyColor") 12c16 < self.monsterUniqueId = sb.makeUuid() --- > self.monsterUniqueId = string.format("%s-ghost", world.entityUniqueId(entity.id()) or sb.makeUuid()) 13a18 > self.saturation = 0 21c26,30 < if self.spawnTimer > 0 then --- > local erchiusCount = 0 > erchiusCount = erchiusCount + (world.entityHasCountOfItem(entity.id(), "liquidfuel") or 0) > erchiusCount = erchiusCount + (world.entityHasCountOfItem(entity.id(), "solidfuel") or 0) > local erchiusRatio = math.sqrt(math.min(1.0, erchiusCount / self.effectMaxErchius)) > if erchiusCount > 0 and self.spawnTimer > 0 then 28a38,42 > if not self.messaged then > world.sendEntityMessage(entity.id(), "queueRadioMessage", "erchiussickness") > self.messaged = true > end > 33,37d46 < local effectDistanceRatio = 1 - math.min(1.0, math.max(0.0, vec2.mag(distance) / self.effectDistance)) < animator.setParticleEmitterActive("smoke", true) < animator.setParticleEmitterEmissionRate("smoke", self.emissionRate * effectDistanceRatio) < effect.setParentDirectives(string.format("?saturation=%d", math.floor(-self.desaturateAmount * effectDistanceRatio))) < 40,48c49,72 < elseif monsterPosition == nil and self.spawnTimer < 0 then < local parameters = { < level = world.threatLevel(), < target = entity.id(), < aggressive = true, < uniqueId = self.monsterUniqueId, < keepAlive = true < } < self.ghostId = world.spawnMonster("erchiusghost", vec2.add(mcontroller.position(), config.getParameter("ghostSpawnOffset")), parameters) --- > > local effectDistance = interp.linear(erchiusRatio, self.effectDistance[1], self.effectDistance[2]) > local effectDistanceRatio = 1 - math.min(1.0, math.max(0.0, vec2.mag(distance) / effectDistance)) > animator.setParticleEmitterEmissionRate("smoke", self.emissionRate * effectDistanceRatio) > animator.setParticleEmitterActive("smoke", effectDistanceRatio > 0) > > self.saturation = math.floor(-self.desaturateAmount * effectDistanceRatio) > > world.sendEntityMessage(self.monsterUniqueId, "setErchiusLevel", erchiusCount) > elseif monsterPosition == nil then > self.saturation = 0 > animator.setLightActive("glow", false) > > if self.spawnTimer < 0 then > local parameters = { > level = world.threatLevel(), > target = entity.id(), > aggressive = true, > uniqueId = self.monsterUniqueId, > keepAlive = true > } > world.spawnMonster("erchiusghost", vec2.add(mcontroller.position(), config.getParameter("ghostSpawnOffset")), parameters) > self.spawnTimer = 1.0 > end 49a74,86 > > animator.setLightColor("glow", {self.light[1] * erchiusRatio, self.light[2] * erchiusRatio, self.light[3] * erchiusRatio}) > animator.setLightActive("glow", true) > > local multiply = {255 + self.multiply[1] * erchiusRatio, 255 + self.multiply[2] * erchiusRatio, 255 + self.multiply[3] * erchiusRatio} > local multiplyHex = string.format("%s%s%s", toHex(multiply[1]), toHex(multiply[2]), toHex(multiply[3])) > effect.setParentDirectives(string.format("?saturation=%d?multiply=%s", self.saturation, multiplyHex)) > end > > function toHex(num) > local hex = string.format("%X", math.floor(num + 0.5)) > if num < 16 then hex = "0"..hex end > return hex stats\effects\erchiussickness\erchiussickness.statuseffect 8c8,9 < "effectDistance" : 25, --- > "effectMaxErchius" : 5000, > "effectDistance" : [25, 50], 10a12,13 > "lightColor" : [180, 90, 180], > "multiplyColor" : [0, -150, 0], 12c15 < "ghostSpawnOffset" : [0, 150] --- > "ghostSpawnOffset" : [0, -150] tiles\platforms\platform2.material 5c5 < "itemDrop" : "platform2", --- > "itemDrop" : "platform", tiles\platforms\woodenplatform.material 5c5 < "itemDrop" : "woodenplatform", --- > "itemDrop" : "platform",