FILES ----- default_configuration.config universeflags.config universe_server.config behaviors\monsters\modular\movement\swarmapproach.behavior cinematics\artifacts\erchiuscrystal_name.png [NEW] cinematics\mods\bunny.png [NEW] cinematics\mods\default.frames [NEW] cinematics\mods\modloading.cinematic dialog\clues.config dungeons\other\outpost\outpost.json [NEW] dungeons\other\outpost\outpost_beakeasy1.dungeon [NEW] dungeons\other\outpost\outpost_beakeasy1.json [NEW] dungeons\other\outpost\outpost_beakeasy2.dungeon [NEW] dungeons\other\outpost\outpost_beakeasy2.json [NEW] dungeons\other\outpost\outpost_mazebound.dungeon [NEW] dungeons\other\outpost\outpost_mazebound.json interface\scripted\cropshipper\cropshippergui.config items\active\grapplinghooks\climbingrope\climbingrope.activeitem items\active\unsorted\railhook\railhook.activeitem items\generic\food\tier1\roastedmushrooms.consumable items\generic\food\tier2\baconpancakes.consumable items\generic\food\tier2\cake.consumable items\generic\food\tier2\carrotcake.consumable items\generic\food\tier2\carrotsoup.consumable items\generic\food\tier2\cheeseburger.consumable items\generic\food\tier2\chocolatecake.consumable items\generic\food\tier2\coffeecake.consumable items\generic\food\tier2\flatwhite.consumable items\generic\food\tier2\fluffyruffs.consumable items\generic\food\tier2\mocha.consumable items\generic\food\tier2\mushroombread.consumable items\generic\food\tier2\mushroomquiche.consumable items\generic\food\tier2\mushroomrice.consumable items\generic\food\tier2\omelette.consumable items\generic\food\tier2\pearlpeapancakes.consumable items\generic\food\tier2\pizzaslice.consumable items\generic\food\tier2\porridge.consumable items\generic\food\tier2\quichelorraine.consumable items\generic\food\tier2\ricepudding.consumable items\generic\food\tier2\specialrice.consumable items\generic\food\tier2\spikycookies.consumable items\generic\food\tier2\stuffedtomato.consumable items\generic\food\tier2\tomatosoup.consumable items\generic\food\tier3\apexfritter.consumable items\generic\food\tier3\automatoshake.consumable items\generic\food\tier3\bananacreamdonut.consumable items\generic\food\tier3\bananacreampie.consumable items\generic\food\tier3\bananaicecream.consumable items\generic\food\tier3\cactiicecream.consumable items\generic\food\tier3\campfirebanana.consumable items\generic\food\tier3\choconut.consumable items\generic\food\tier3\coconuticecream.consumable items\generic\food\tier3\coconutmilk.consumable items\generic\food\tier3\coconutrice.consumable items\generic\food\tier3\pineapplepizzaslice.consumable items\generic\food\tier3\spookydonut.consumable items\generic\food\tier3\stuffedautomato.consumable items\generic\food\tier3\tropicalpunch.consumable items\generic\food\tier4\avesmingoicecream.consumable items\generic\food\tier4\bananasplit.consumable items\generic\food\tier4\oculemonmeringue.consumable items\generic\food\tier4\pussplumpudding.consumable items\generic\food\tier4\reefshake.consumable items\generic\food\tier4\stuffeddirturchin.consumable items\generic\food\tier4\toxicjamdonut.consumable items\generic\food\tier5\8gbpizzap.consumable items\generic\food\tier5\boltos.consumable items\generic\food\tier5\eggshooticecream.consumable items\generic\food\tier5\piodia.consumable items\generic\food\tier6\wartweedjamdonut.consumable items\generic\produce\cocoa.item items\generic\produce\shroom.item items\generic\shop\cheese.consumable items\generic\shop\chocolate.consumable items\generic\shop\egg.consumable items\generic\shop\milk.consumable items\throwables\coconut.thrownitem monsters\generated\swimming\smallfish\fish.animation monsters\generated\swimming\smallfish\fish.monstertype monsters\generated\swimming\smallfish\smallFish.lua npcs\hostile.npctype npcs\biome\deadbeatscrounger.npctype npcs\mission\floranchieftain.npctype npcs\outpost\visitors\devs\devdoris.npctype [NEW] objects\generic\arcadegame\arcadegameclosed.frames [NEW] objects\generic\arcadegame\arcadegameclosed.object [NEW] objects\generic\arcadegame\arcadegameclosed.png [NEW] objects\generic\arcadegame\arcadegamelit.frames [NEW] objects\generic\arcadegame\arcadegamelit.png objects\generic\arcadegame\arcadegameobject.object objects\generic\carbed\carbed.object objects\glitch\sewagebarrel\sewagebarrel.object objects\hylotl\hylotlfloorornament\hylotlfloorornament.object objects\hylotl\hylotlpainting1\hylotlpainting1.object objects\hylotl\hylotlpainting2\hylotlpainting2.object objects\rails\railstop\railstop.lua objects\spawner\colonydeed\colonydeed.lua objects\themed\astronaut\marsmodel\marsmodel.object objects\themed\astronaut\saturnmodel\saturnmodel.object objects\traps\ancientbouldertrap\ancientbouldertrap.object objects\traps\ancientcrystaltrap\ancientcrystaltrap.object objects\traps\ancientflametrap\ancientflametrap.object objects\traps\ancienticetrap\ancienticetrap.object objects\traps\arenaflametrap\arenaflametrap.object objects\traps\bouldertrap\bouldertrap.object objects\traps\crystaltrap\crystaltrap.object objects\traps\flametrap\flametrap.object objects\traps\floranbouldertrap\floranbouldertrap.object objects\traps\freezetrap\freezetrap.object quests\generated\templates\build_home.questtemplate radiomessages\tutorial.radiomessages recipes\cookingtable1\desserts\chocolate.recipe scripts\pathing.lua scripts\actions\flying.lua scripts\actions\movement.lua scripts\companions\recruitable.lua stagehands\objecttracker.lua tilesets\packed\objects-by-category\decorative.json tilesets\packed\objects-by-category\other.json tilesets\packed\objects-by-category\storage.json tilesets\packed\objects-by-colonytag\misc.json tilesets\packed\objects-by-colonytag\outpost.json tilesets\packed\objects-by-colonytag\pretty.json tilesets\packed\objects-by-race\generic.json tilesets\packed\objects-by-type\container.json vehicles\boat\boat.animation vehicles\boat\boat.lua vehicles\boat\boat.vehicle vehicles\railplatform\railplatform.lua DIFFS ----- default_configuration.config 87,88c87,88 < "PlayerTechAction2" : [ { "type" : "key", "value" : "G", "mods" : [] } ], < "PlayerTechAction3" : [ { "type" : "key", "value" : "H", "mods" : [] } ], --- > "PlayerTechAction2" : [], > "PlayerTechAction3" : [], 133,136c133,136 < "InterfaceBar7" : [ { "type" : "key", "value" : "7", "mods" : [] } ], < "InterfaceBar8" : [ { "type" : "key", "value" : "8", "mods" : [] } ], < "InterfaceBar9" : [ { "type" : "key", "value" : "9", "mods" : [] } ], < "InterfaceBar10" : [ { "type" : "key", "value" : "0", "mods" : [] } ], --- > "InterfaceBar7" : [], > "InterfaceBar8" : [], > "InterfaceBar9" : [], > "InterfaceBar10" : [], universeflags.config 74a75,80 > }, > { > "type" : "placeDungeon", > "dungeonId" : "outpost_mazebound", > "targetInstance" : "outpost", > "targetPosition" : [444, 561] 102c108,114 < "dungeonId" : "outpost_beakeasy", --- > "dungeonId" : "outpost_beakeasy1", > "targetInstance" : "outpost", > "targetPosition" : [447, 567] > }, > { > "type" : "placeDungeon", > "dungeonId" : "outpost_beakeasy2", universe_server.config 9c9 < "updateMeasureWindow" : 2.0, --- > "updateMeasureWindow" : 0.5, behaviors\monsters\modular\movement\swarmapproach.behavior 5d4 < "/scripts/actions/monster.lua", 7,8d5 < "/scripts/actions/entity.lua", < "/monsters/monster.lua", 10,12c7,8 < "/scripts/actions/query.lua", < "/scripts/actions/entity.lua", < "/scripts/actions/flying.lua" --- > "/scripts/actions/flying.lua", > "/scripts/actions/movement.lua" 47c43 < "title": "parallel", --- > "title": "dynamic", 49,53c45,46 < "name": "parallel", < "parameters": { < "fail": 1, < "success": -1 < }, --- > "name": "dynamic", > "parameters": {}, 56,58c49,51 < "title": "entityPosition", < "type": "action", < "name": "entityPosition", --- > "title": "parallel", > "type": "composite", > "name": "parallel", 60c53,54 < "entity": "target" --- > "fail": 1, > "success": -1 62,64c56,79 < "output": { < "position": "targetPosition" < } --- > "children": [ > { > "title": "entityPosition", > "type": "action", > "name": "entityPosition", > "parameters": { > "entity": "target" > }, > "output": { > "position": "targetPosition" > } > }, > { > "title": "swarmPosition", > "type": "action", > "name": "swarmPosition", > "parameters": { > "maxRange": "", > "minMoveDistance": "", > "idleTime": "", > "center": "targetPosition" > } > } > ] 67c82 < "title": "swarmPosition", --- > "title": "moveToPosition", 69c84 < "name": "swarmPosition", --- > "name": "moveToPosition", 71,74c86,95 < "maxRange": "", < "minMoveDistance": "", < "idleTime": "", < "center": "targetPosition" --- > "avoidLiquid": true, > "failFast": false, > "groundPosition": false, > "pathOptions": {}, > "position": "targetPosition", > "run": false > }, > "output": { > "direction": "direction", > "pathfinding": "isPathfinding" dialog\clues.config 5,6d4 < "Hey I've never seen you at the outpost before, It's really nice to meet you!", < "Hey! It's nice to see a new face, welcome to the outpost!" 13,14c11,20 < "I hear floran captured big beast for this yearss event", < "Have you heard of Nuru? She best floran!" --- > "Floran hear huge beasst was captured for this year's Hunt!", > "Floran is a pretty good hunter - planning to compete thisss year.", > "Floran wantss to be a Wrangler one day!", > "Floran is the best! Well, sssecond best. You heard of Nuru?", > "Floran hasss been hunting in the dark - good practice for Caverns.", > "Floran really wants the fancy Hunt trophy!", > "You're pretty ssscrawny; Floran bets you wouldn't make it out of the Caverns.", > "Floran can't remember a word... It's the name of a big beasst. Ixylix? Oxulung?", > "The Hunt is soon!", > "You know about Nuru? She'ss best Floran!" 21,22c27,36 < "We hylotl are great keepers of information", < "It is said that hylotl of the past kept vast stores of books" --- > "We Hylotl are great custodians of knowledge and information.", > "There is a lot of value in the written word.", > "I enjoy collecting books, it's a big part of Hylotl culture.", > "Some relics still survive from the time all Hylotl resided on land.", > "A long time ago, we Hylotl sunk some of our greatest monuments beneath the waves, to protect them.", > "I'd like to become a librarian, but it's a lot of responsibility.", > "We lost a lot to the Floran hoards, but some things survived.", > "Protecting the wisdom of our ancestors sustain our culture.", > "Isn't it wondrous when treasures from the past are newly rediscovered? This happens not infrequently among the Hylotl.", > "It is said the Hylotl of the past kept vast repositories of books." 29,30c43,52 < "Praise Kluex!", < "I hope to one day visit the Great Sovereign Temple. Only... no one knows where it is." --- > "Our oldest and most impressive architecture is always centered around the worship of Kluex.", > "The Avoscript mentions objects of great power. I don't know what they might be.", > "A long time ago there were a lot of really big Avian temples. I think there's only one left now.", > "We Avians have big trouble with temple robbers - there are some pretty desirable antiquities in the older temples.", > "Some temples of Kluex have ancient guardians. But what are they guarding?", > "Not all the temples of Kluex are attended by Stargazers, some ancient ones are left in the hands of caretakers.", > "The depths of some temples are forbidden to all - it's how their secrets are protected.", > "There are temples of Kluex all over the universe, but some are more sacred than others.", > "I grew up hearing stories of items of immense power, bestowed by Kluex himself.", > "I hope to one day visit the Great Sovereign Temple, but barely anyone knows where it is." 37,38c59,68 < "I hear there are plans to take down the miniknog. Scary!", < "Have you heard of Lana, leader of the rebellion?" --- > "I hear there are plans to take down the Miniknog...", > "Miniknog territory is vast, with many bases and command posts.", > "The Miniknog guard all of our cultural heritage.", > "People call me a conspiracy theorist, but I know the Miniknog have secrets.", > "The Miniknog are always building new facilities for themselves, but they never close the old ones.", > "I heard stories of strange things held in the depths of Miniknog facilities.", > "Many say Big Ape has garnered huge wealth and a plethora of antiquities.", > "Rebels attack the Miniknog often nowadays, targeting established bases...", > "The Miniknog play their cards close to their chest - few know the extent of what they have and do.", > "The Miniknog keep all the wealth and all the treasures." 45,46c75,84 < "A lot of old glitch adventurers keep large caches of treasure they've found", < "I've heard stories of a glitch who calls himself The Baron. He is supposedly richer than any other glitch!" --- > "Jealous. A lot of old Glitch adventurers hoard the treasure they've found over the years.", > "Sulky. Important Glitch relics tend to get handed from Glitch to Glitch, but I've never had one.", > "Dreamy. I wonder what treasures I could amass if I travelled the universe. You hear such stories...", > "Fanciful. I once heard of a keep owned by an oddball and filled with wonders.", > "Scared. I have heard that purple robed cultist have been attacking a Glitch keep.", > "Bitter. Have you heard of the Baron? He took all my money in a game of cards! As if he needs it, with all those treasures.", > "Contemplative. Some Glitch keeps and castles hold ancient valuables within their walls.", > "Wistful. I wish I had wondrous treasures... Some Glitch have some troves of riches!", > "Worried. Have you heard of the Occasus? Apparently they're strange angry people who have been attacking a Glitch keep!", > "Envious. I've heard stories of a Glitch who calls himself the Baron. Apparently he owns mounds of treasure!" dungeons\other\outpost\outpost.json [TMX file differences are left out for huge size.] interface\scripted\cropshipper\cropshippergui.config 94a95 > "cacti", 96a98,99 > "cocoa", > "coconut", 184a188 > "chocolate", 322a327 > "egg", 324a330 > "leather", 325a332 > "milk", 328a336 > "smallbattery", items\active\grapplinghooks\climbingrope\climbingrope.activeitem 10c10 < "twoHanded" : true, --- > "twoHanded" : false, items\active\unsorted\railhook\railhook.activeitem 16c16 < "connectionOffset" : [0.75, 0], --- > "connectionOffset" : [1.0, 0], items\generic\food\tier1\roastedmushrooms.consumable 4c4 < "price" : 10, --- > "price" : 30, items\generic\food\tier2\baconpancakes.consumable 4c4 < "price" : 120, --- > "price" : 150, items\generic\food\tier2\cake.consumable 4c4 < "price" : 205, --- > "price" : 240, items\generic\food\tier2\carrotcake.consumable 4c4 < "price" : 280, --- > "price" : 315, items\generic\food\tier2\carrotsoup.consumable 4c4 < "price" : 200, --- > "price" : 225, items\generic\food\tier2\cheeseburger.consumable 4c4 < "price" : 450, --- > "price" : 475, 12c12 < "duration" : 405 --- > "duration" : 428 16c16 < "duration" : 405 --- > "duration" : 428 19c19 < "foodValue" : 90, --- > "foodValue" : 95, items\generic\food\tier2\chocolatecake.consumable 4c4 < "price" : 255, --- > "price" : 380, 12c12 < "duration" : 495 --- > "duration" : 540 15c15 < "foodValue" : 55, --- > "foodValue" : 60, items\generic\food\tier2\coffeecake.consumable 4c4 < "price" : 320, --- > "price" : 350, items\generic\food\tier2\flatwhite.consumable 4c4 < "price" : 140, --- > "price" : 165, items\generic\food\tier2\fluffyruffs.consumable 4c4 < "price" : 70, --- > "price" : 75, items\generic\food\tier2\mocha.consumable 4c4 < "price" : 190, --- > "price" : 305, 12c12 < "duration" : 315 --- > "duration" : 360 15c15 < "foodValue" : 35, --- > "foodValue" : 40, items\generic\food\tier2\mushroombread.consumable 4c4 < "price" : 55, --- > "price" : 80, items\generic\food\tier2\mushroomquiche.consumable 4c4 < "price" : 115, --- > "price" : 170, 12c12 < "duration" : 360 --- > "duration" : 405 15c15 < "foodValue" : 40, --- > "foodValue" : 45, items\generic\food\tier2\mushroomrice.consumable 4c4 < "price" : 100, --- > "price" : 130, items\generic\food\tier2\omelette.consumable 4c4 < "price" : 90, --- > "price" : 145, 12c12 < "duration" : 360 --- > "duration" : 405 15c15 < "foodValue" : 40, --- > "foodValue" : 45, items\generic\food\tier2\pearlpeapancakes.consumable 4c4 < "price" : 145, --- > "price" : 175, items\generic\food\tier2\pizzaslice.consumable 4c4 < "price" : 190, --- > "price" : 215, 12c12 < "duration" : 360 --- > "duration" : 405 15c15 < "foodValue" : 40, --- > "foodValue" : 45, items\generic\food\tier2\porridge.consumable 4c4 < "price" : 75, --- > "price" : 100, items\generic\food\tier2\quichelorraine.consumable 4c4 < "price" : 130, --- > "price" : 165, 12c12 < "duration" : 360 --- > "duration" : 405 15c15 < "foodValue" : 40, --- > "foodValue" : 45, items\generic\food\tier2\ricepudding.consumable 4c4 < "price" : 215, --- > "price" : 240, items\generic\food\tier2\specialrice.consumable 4c4 < "price" : 220, --- > "price" : 225, items\generic\food\tier2\spikycookies.consumable 4c4 < "price" : 225, --- > "price" : 255, items\generic\food\tier2\stuffedtomato.consumable 4c4 < "price" : 240, --- > "price" : 265, 12c12 < "duration" : 405 --- > "duration" : 450 15c15 < "foodValue" : 45, --- > "foodValue" : 50, items\generic\food\tier2\tomatosoup.consumable 4c4 < "price" : 200, --- > "price" : 225, items\generic\food\tier3\apexfritter.consumable 4c4 < "price" : 245, --- > "price" : 250, items\generic\food\tier3\automatoshake.consumable 4c4 < "price" : 125, --- > "price" : 150, items\generic\food\tier3\bananacreamdonut.consumable 4c4 < "price" : 355, --- > "price" : 390, items\generic\food\tier3\bananacreampie.consumable 4c4 < "price" : 340, --- > "price" : 365, items\generic\food\tier3\bananaicecream.consumable 4c4 < "price" : 290, --- > "price" : 315, items\generic\food\tier3\cactiicecream.consumable 4c4 < "price" : 155, --- > "price" : 180, items\generic\food\tier3\campfirebanana.consumable 4c4 < "price" : 200, --- > "price" : 295, 12c12 < "duration" : 225 --- > "duration" : 270 15c15 < "foodValue" : 25, --- > "foodValue" : 30, items\generic\food\tier3\choconut.consumable 4c4 < "price" : 280, --- > "price" : 415, items\generic\food\tier3\coconuticecream.consumable 3,4c3,4 < "rarity" : "Uncommon", < "price" : 165, --- > "rarity" : "Common", > "price" : 195, 12c12 < "duration" : 450 --- > "duration" : 405 15c15 < "foodValue" : 50, --- > "foodValue" : 45, items\generic\food\tier3\coconutmilk.consumable 12c12 < "duration" : 180 --- > "duration" : 135 15c15 < "foodValue" : 20, --- > "foodValue" : 15, items\generic\food\tier3\coconutrice.consumable 12c12 < "duration" : 315 --- > "duration" : 270 15c15 < "foodValue" : 35, --- > "foodValue" : 30, items\generic\food\tier3\pineapplepizzaslice.consumable 4c4 < "price" : 315, --- > "price" : 340, 12c12 < "duration" : 225 --- > "duration" : 248 16c16 < "duration" : 225 --- > "duration" : 248 19c19 < "foodValue" : 50, --- > "foodValue" : 55, items\generic\food\tier3\spookydonut.consumable 4c4 < "price" : 405, --- > "price" : 440, items\generic\food\tier3\stuffedautomato.consumable 4c4 < "price" : 265, --- > "price" : 290, 12c12 < "duration" : 405 --- > "duration" : 450 15c15 < "foodValue" : 45, --- > "foodValue" : 50, items\generic\food\tier3\tropicalpunch.consumable 4c4 < "price" : 525, --- > "price" : 530, 12c12 < "duration" : 225 --- > "duration" : 210 16c16 < "duration" : 225 --- > "duration" : 210 20c20 < "duration" : 225 --- > "duration" : 210 23c23 < "foodValue" : 75, --- > "foodValue" : 70, items\generic\food\tier4\avesmingoicecream.consumable 4c4 < "price" : 325, --- > "price" : 350, items\generic\food\tier4\bananasplit.consumable 4c4 < "price" : 725, --- > "price" : 845, 12c12 < "duration" : 405 --- > "duration" : 428 16c16 < "duration" : 405 --- > "duration" : 428 19c19 < "foodValue" : 90, --- > "foodValue" : 95, items\generic\food\tier4\oculemonmeringue.consumable 4c4 < "price" : 380, --- > "price" : 390, items\generic\food\tier4\pussplumpudding.consumable 4c4 < "price" : 400, --- > "price" : 425, items\generic\food\tier4\reefshake.consumable 4c4 < "price" : 215, --- > "price" : 240, items\generic\food\tier4\stuffeddirturchin.consumable 4c4 < "price" : 265, --- > "price" : 290, 12c12 < "duration" : 360 --- > "duration" : 405 15c15 < "foodValue" : 40, --- > "foodValue" : 45, items\generic\food\tier4\toxicjamdonut.consumable 4c4 < "price" : 570, --- > "price" : 600, items\generic\food\tier5\8gbpizzap.consumable 4c4 < "price" : 340, --- > "price" : 365, 12c12 < "duration" : 360 --- > "duration" : 405 15c15 < "foodValue" : 40, --- > "foodValue" : 45, items\generic\food\tier5\boltos.consumable 4c4 < "price" : 175, --- > "price" : 200, items\generic\food\tier5\eggshooticecream.consumable 4c4 < "price" : 290, --- > "price" : 315, items\generic\food\tier5\piodia.consumable 4c4 < "price" : 415, --- > "price" : 440, 12c12 < "duration" : 405 --- > "duration" : 450 15c15 < "foodValue" : 45, --- > "foodValue" : 50, items\generic\food\tier6\wartweedjamdonut.consumable 4c4 < "price" : 495, --- > "price" : 525, items\generic\produce\cocoa.item 4c4 < "price" : 20, --- > "price" : 90, items\generic\produce\shroom.item 4c4 < "price" : 40, --- > "price" : 5, items\generic\shop\cheese.consumable 4c4 < "price" : 6, --- > "price" : 50, 9c9 < "foodValue" : 10, --- > "foodValue" : 15, items\generic\shop\chocolate.consumable 4c4 < "price" : 4, --- > "price" : 120, 9c9 < "foodValue" : 10, --- > "foodValue" : 15, items\generic\shop\egg.consumable 4c4 < "price" : 4, --- > "price" : 20, items\generic\shop\milk.consumable 4c4 < "price" : 4, --- > "price" : 40, items\throwables\coconut.thrownitem 2a3 > "price" : 25, monsters\generated\swimming\smallfish\fish.animation 119,294c119,131 < { < "particle" : { < "type" : "animated", < "animation" : "/animations/puff2c/puff2c.animation", < "size" : 1, < "angularVelocity" : 35, < "fade" : 1, < "destructionTime" : 1, < "position" : [0, 0], < "initialVelocity" : [0, 0], < "finalVelocity" : [0, 0], < "approach" : [1, 1], < "timeToLive" : 0.4, < "layer" : "middle" < } < }, < { < "particle" : { < "type" : "animated", < "animation" : "/animations/fizz1/fizz1.animation", < "size" : 1, < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 1, < "position" : [0, 0], < "initialVelocity" : [-8, 8], < "finalVelocity" : [-3, -4], < "approach" : [15, 15], < "timeToLive" : 3.45, < "layer" : "middle", < "variance" : { < "initialVelocity" : [-4, 2], < "finalVelocity" : [-3, -4] < } < } < }, < { < "particle" : { < "type" : "animated", < "animation" : "/animations/fizz1/fizz1.animation", < "size" : 1, < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 1, < "position" : [0, 0], < "initialVelocity" : [8, 8], < "finalVelocity" : [3, -4], < "approach" : [15, 15], < "timeToLive" : 3.45, < "layer" : "middle", < "variance" : { < "initialVelocity" : [4, 2], < "finalVelocity" : [3, -4] < } < } < }, < { < "particle" : { < "type" : "animated", < "animation" : "/animations/fizz2/fizz2.animation", < "size" : 1, < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 1, < "position" : [0, 0], < "initialVelocity" : [-8, 8], < "finalVelocity" : [-3, -4], < "approach" : [15, 15], < "timeToLive" : 3.45, < "layer" : "middle", < "variance" : { < "initialVelocity" : [-4, 2], < "finalVelocity" : [-3, -4] < } < } < }, < { < "particle" : { < "type" : "animated", < "animation" : "/animations/fizz2/fizz2.animation", < "size" : 1, < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 1, < "position" : [0, 0], < "initialVelocity" : [8, 8], < "finalVelocity" : [3, -4], < "approach" : [15, 15], < "timeToLive" : 3.45, < "layer" : "middle", < "variance" : { < "initialVelocity" : [4, 2], < "finalVelocity" : [3, -4] < } < } < }, < { < "particle" : { < "type" : "animated", < "animation" : "/animations/fizz3/fizz3.animation", < "size" : 1, < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 1, < "position" : [0, 0], < "initialVelocity" : [-8, 8], < "finalVelocity" : [-3, -4], < "approach" : [15, 15], < "timeToLive" : 3.45, < "layer" : "middle", < "variance" : { < "initialVelocity" : [-4, 2], < "finalVelocity" : [-3, -4] < } < } < }, < { < "particle" : { < "type" : "animated", < "animation" : "/animations/fizz3/fizz3.animation", < "size" : 1, < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 1, < "position" : [0, 0], < "initialVelocity" : [8, 8], < "finalVelocity" : [3, -4], < "approach" : [15, 15], < "timeToLive" : 3.45, < "layer" : "middle", < "variance" : { < "initialVelocity" : [4, 2], < "finalVelocity" : [3, -4] < } < } < }, < { < "particle" : { < "type" : "animated", < "animation" : "/animations/fizz4/fizz4.animation", < "size" : 1, < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 1, < "position" : [0, 0], < "initialVelocity" : [-8, 8], < "finalVelocity" : [-3, -4], < "approach" : [15, 15], < "timeToLive" : 3.45, < "layer" : "middle", < "variance" : { < "initialVelocity" : [-4, 2], < "finalVelocity" : [-3, -4] < } < } < }, < { < "particle" : { < "type" : "animated", < "animation" : "/animations/fizz4/fizz4.animation", < "size" : 1, < "angularVelocity" : 20, < "fade" : 1, < "destructionTime" : 1, < "position" : [0, 0], < "initialVelocity" : [8, 8], < "finalVelocity" : [3, -4], < "approach" : [15, 15], < "timeToLive" : 3.45, < "layer" : "middle", < "variance" : { < "initialVelocity" : [4, 2], < "finalVelocity" : [3, -4] < } < } < } --- > { "particle" : "monstersplosion" }, > { "particle" : "deathember" }, > { "particle" : "deathember" }, > { "particle" : "deathember" }, > { "particle" : "deathember" }, > { "particle" : "deathfizz1left" }, > { "particle" : "deathfizz1right" }, > { "particle" : "deathfizz2left" }, > { "particle" : "deathfizz2right" }, > { "particle" : "deathfizz3left" }, > { "particle" : "deathfizz3right" }, > { "particle" : "deathfizz4left" }, > { "particle" : "deathfizz4right" } monsters\generated\swimming\smallfish\fish.monstertype 34c34 < "knockoutTime" : 0.5, --- > "knockoutTime" : 0.25, 129c129 < --- > monsters\generated\swimming\smallfish\smallFish.lua 9a10,16 > if animator.hasSound("deathPuff") then > monster.setDeathSound("deathPuff") > end > if config.getParameter("deathParticles") then > monster.setDeathParticleBurst(config.getParameter("deathParticles")) > end > npcs\hostile.npctype 7c7 < "damageTeam" : 0, --- > "damageTeam" : 2, npcs\biome\deadbeatscrounger.npctype 5c5,6 < "damageTeam" : 0, --- > "damageTeamType" : "enemy", > "damageTeam" : 2, npcs\mission\floranchieftain.npctype 25c25 < { "name" : "florantier5ahead", "parameters" : { "colorIndex" : 11 } } --- > { "name" : "greenfingerhead", "parameters" : { "colorIndex" : 0 } } 28c28 < { "name" : "florantier5achest", "parameters" : { "colorIndex" : 11 } } --- > { "name" : "florantier5mchest", "parameters" : { "colorIndex" : 3 } } 31c31 < { "name" : "florantier5apants", "parameters" : { "colorIndex" : 11 } } --- > { "name" : "florantier5spants", "parameters" : { "colorIndex" : 3 } } 37c37 < } --- > } \ No newline at end of file npcs\outpost\visitors\devs\devdoris.npctype 20c20 < "Hi I'm Doris. One day I will buy a boat, build a house on one of those ocean planets, and raise lots of rabbits. Never give up on your dreams!" --- > "'Ello I'm Doris. My 'overboard flew off a cliff and I 'av come 'ere to buy a new one." objects\generic\arcadegame\arcadegameobject.object 7c7 < "lightColor" : [150, 215, 235], --- > "lightColor" : [120, 173, 173], 14,15c14,15 < "apexDescription" : "I am not a fan of Mazebound64. I've heard horror stories about Miniknog testing... mazes give me the creeps.", < "avianDescription" : "Mazebound64 was developed by an Avian team. There aren't many Avian video games... perhaps I should make some.", --- > "apexDescription" : "I am not a fan of Mazebound64. I've heard horror stories about Miniknog testing... Mazes give me the creeps.", > "avianDescription" : "Mazebound64 was developed by an Avian team. There aren't many Avian video games... Perhaps I should make some.", objects\generic\carbed\carbed.object 23c23 < "apexDescription" : "A comfortable bed built to look like an antique earth vehicle.", --- > "apexDescription" : "A comfortable bed built to look like an antique Earth vehicle.", objects\glitch\sewagebarrel\sewagebarrel.object 15c15 < "humanDescription" : "Back on earth, you could be fined for dumping sewage.", --- > "humanDescription" : "Back on Earth, you could be fined for dumping sewage.", objects\hylotl\hylotlfloorornament\hylotlfloorornament.object 12c12 < "avianDescription" : "Several frog spawn swim around inside this thing. Who on earth would want this on display?", --- > "avianDescription" : "There's frog spawn floating around inside this thing. Who would want this on display?", objects\hylotl\hylotlpainting1\hylotlpainting1.object 16c16 < "humanDescription" : "I'm pretty sure we had this exact same painting on earth.", --- > "humanDescription" : "I'm pretty sure we had this exact same painting on Earth.", objects\hylotl\hylotlpainting2\hylotlpainting2.object 16c16 < "humanDescription" : "I'm pretty sure we had this exact same painting on earth.", --- > "humanDescription" : "I'm pretty sure we had this exact same painting on Earth.", objects\rails\railstop\railstop.lua 25c25 < function uninit() --- > function die() objects\spawner\colonydeed\colonydeed.lua 441a442,444 > if not overrides.damageTeam then > overrides.damageTeam = 0 > end objects\themed\astronaut\marsmodel\marsmodel.object 13c13 < "avianDescription" : "Mars is named after an ancient earth god of war. It's also known as the 'Red Planet'.", --- > "avianDescription" : "Mars is named after an ancient Earth god of war. It's also known as the 'Red Planet'.", objects\themed\astronaut\saturnmodel\saturnmodel.object 14c14 < "avianDescription" : "Saturn was named after an ancient earth god of agriculture. Avian culture has a god that's eerily familiar.", --- > "avianDescription" : "Saturn was named after an ancient Earth god of agriculture. Avian culture has a god that's eerily familiar.", objects\traps\ancientbouldertrap\ancientbouldertrap.object 85a86,87 > > "health" : 5, objects\traps\ancientcrystaltrap\ancientcrystaltrap.object 213a214,215 > > "health" : 5, objects\traps\ancientflametrap\ancientflametrap.object 155a156,157 > > "health" : 5, objects\traps\ancienticetrap\ancienticetrap.object 155a156,157 > > "health" : 5, objects\traps\arenaflametrap\arenaflametrap.object 164a165,166 > > "health" : 5, objects\traps\bouldertrap\bouldertrap.object 85a86,87 > > "health" : 5, objects\traps\crystaltrap\crystaltrap.object 213a214,215 > > "health" : 5, objects\traps\flametrap\flametrap.object 155a156,157 > > "health" : 5, objects\traps\floranbouldertrap\floranbouldertrap.object 85a86,87 > > "health" : 5, objects\traps\freezetrap\freezetrap.object 85a86,87 > > "health" : 5, quests\generated\templates\build_home.questtemplate 50c50 < "^cyan;I love to make friends. Could you help me setup a residence that might entice a new neighbour?", --- > "^cyan;I love to make friends. Help me setup a home that will entice a new neighbour!", 57c57 < "Finally, ^green;make a shelter and decorate it with ^orange;.^white;! Make sssure you ^green;place a ^orange;Colony deed,^white; too. Floran is ssso close to making a new friend! Floran hopes they enjoy hunting...", --- > "Finally, ^green;make a shelter and decorate it with ^orange;.^white;! Make sssure you ^green;place a ^orange;Colony deed,^white; too. Floran hopes new friend enjoyss hunting...", 65,66c65,66 < "I think we've gathered all the furnishings we need. Now we just need the house itself! ^green;Build a home and put ^orange;^green; inside.^white; Don't forget to place a ^orange;Colony Deed^white; as well!", < "The last thing is to ^green;place ^orange;^green; inside a house.^white; I'll let you handle the construction since I'm not much of a builder. Remember to ^green;place a ^orange;Colony Deed^white; to announce the unit is available to rent!" --- > "We've gathered all the furnishing, but we need the house itself! ^green;Build a home and put ^orange;^green; inside.^white; Don't forget to place a ^orange;Colony Deed^white; as well!", > "Finally, ^green;place ^orange;^green; in a house.^white; You trust you can handle the construction. Remember to ^green;place a ^orange;Colony Deed^white; when you're done!" radiomessages\tutorial.radiomessages 113c113 < "text" : "Erchius fuel for your FTL drive can be mined from moons. It should be noted that since earth's destruction, all moons scanned have delivered strange, unpleasant and indecipherable readings." --- > "text" : "Erchius fuel for your FTL drive can be mined from moons. It should be noted that since Earth's destruction, all moons scanned have delivered strange, unpleasant and indecipherable readings." recipes\cookingtable1\desserts\chocolate.recipe 3c3 < { "item" : "cocoa", "count" : 2 } --- > { "item" : "cocoa", "count" : 1 } scripts\pathing.lua 257,261d256 < if edgeDelta[1] ~= 0 then < self.deltaX = util.toDirection(edgeDelta[1]) < else < self.deltaX = mcontroller.facingDirection() < end 326a322 > self.deltaX = self.delta[1] 340,342c336,338 < --Approach the jump position more precisely to follow the jump arc accurately < if not self.jumped then < if vec2.mag(self.delta) < 0.5 then --- > if world.magnitude(mcontroller.position(), self.edge.source.position) < 1.0 then > if not self.jumpTimer then > self.jumpTimer = 0.2 344,347c340 < mcontroller.setVelocity({0, self.edge.jumpVelocity[2]}) < self.jumped = true < else < self:advancePath() --- > mcontroller.setVelocity({0,0}) 349,367c342,355 < end < --Try to not get slowed down by friction < mcontroller.controlParameters({ < airFriction = 0, < liquidFriction = 0, < liquidImpedance = 0, < groundFriction = 0 < }) < < if not mcontroller.liquidMovement() and not mcontroller.onGround() then < if not self.jumped then < -- If we haven't quite landed yet, wait until we do < mcontroller.setXVelocity(0) < if mcontroller.liquidMovement() and self.delta[2] >= 0 then < -- Jump point is above us, swim up to it < mcontroller.controlJump() < mcontroller.controlHoldJump() < end < return "running" --- > self.deltaX = self.edge.jumpVelocity[1] > > if self.jumpTimer <= 0 then > --Try to not get slowed down by friction > mcontroller.controlParameters({ > airFriction = 0, > liquidFriction = 0, > liquidImpedance = 0, > groundFriction = 0 > }) > > --Approach the jump position more precisely to follow the jump arc accurately > mcontroller.setVelocity({self.edge.jumpVelocity[1], self.edge.jumpVelocity[2]}) > self.jumpTimer = nil 369,373c357 < -- We've jumped and we're no longer on the ground. Move to the next node < mcontroller.setXVelocity(self.edge.jumpVelocity[1]) < self:advancePath() < self.jumped = nil < return "running" --- > self.jumpTimer = self.jumpTimer - script.updateDt() 375a360,363 > > if not self.jumpTimer then > self:advancePath() > end 382,383d369 < else < mcontroller.setPosition({self.nextPathPosition[1], self.position[2]}) 385a372 > mcontroller.setPosition({self.nextPathPosition[1], self.position[2]}) 394c381 < self.jumpCooldown = 0.5 --- > self.jumpCooldown = 0.3 410,411d396 < else < mcontroller.setPosition(self.edge.source.position) 441,446d425 < if mcontroller.liquidMovement() and self.delta[2] > 0 then < mcontroller.controlJump() < mcontroller.controlHoldJump() < end < moveX(self.delta[1], self.run) < 456a436,438 > if self.edge.target.velocity then > mcontroller.setVelocity(self.edge.target.velocity) > end 464c446,460 < moveX(self.delta[1], self.run) --- > local run = self.run > for i = 1, 5 do > if run then break end > local edge = self.finder:lookAhead(i) > if edge and edge.action == "Walk" then > if edge.target.velocity and math.abs(edge.target.velocity[1]) > mcontroller.baseParameters().walkSpeed then > run = true > end > else > break > end > end > > moveX(self.delta[1], run) > self.deltaX = self.delta[1] 479a476 > self.deltaX = self.delta[1] scripts\actions\flying.lua 139a140,143 > > if world.lineTileCollision(position, mcontroller.position()) then > return false > end 152a157,160 > > if world.rectTileCollision(rect.translate(rect.pad(bounds, 0.25), mcontroller.position())) then > return false > end scripts\actions\movement.lua 314c314 < if not setFacingDirection() then controlFace(pather.deltaX) end --- > if not setFacingDirection() and pather.deltaX ~= 0 then controlFace(pather.deltaX) end scripts\companions\recruitable.lua 10c10 < team = 1 -- Friendly NPCs always team 1 --- > team = 0 stagehands\objecttracker.lua 47c47,52 < world.entityQuery(rect.ll(area), rect.ur(area), { includedTypes = {"npc"}, callScript = "notify", callScriptArgs = {notification} }) --- > local npcs = world.entityQuery(rect.ll(area), rect.ur(area), { includedTypes = {"npc"} }) > for _,npcId in pairs(npcs) do > if world.entityDamageTeam(npcId).team == 1 then > world.sendEntityMessage(npcId, "notify", notification) > end > end tilesets\packed\objects-by-category\decorative.json 7c7 < "tilecount" : 1299, --- > "tilecount" : 1300, 2847a2848,2856 > "1299" : { > "//description" : "A customized signboard", > "//name" : "wiredcustomsign", > "//shortdescription" : "Sign", > "imagePositionX" : "-24", > "imagePositionY" : "-8", > "object" : "wiredcustomsign", > "tilesetDirection" : "right" > }, 11794a11804,11806 > }, > "1299" : { > "image" : "../../../../../tiled/packed/objects/wiredcustomsign.png" tilesets\packed\objects-by-category\other.json 7c7 < "tilecount" : 295, --- > "tilecount" : 296, 1654a1655,1663 > "295" : { > "//description" : "This would be a neat venue for a stall.", > "//name" : "arcadegameclosed", > "//shortdescription" : "Closed Mazebound64", > "imagePositionX" : "-8", > "imagePositionY" : "0", > "object" : "arcadegameclosed", > "tilesetDirection" : "right" > }, 2928a2938,2940 > }, > "295" : { > "image" : "../../../../../tiled/packed/objects/arcadegameclosed.png" tilesets\packed\objects-by-category\storage.json 1014c1014 < "//description" : "This device has a slot for a creature capture pod.", --- > "//description" : "A creature capture pod can be placed into this device, tethering the pet within its radius.", tilesets\packed\objects-by-colonytag\misc.json 400c400 < "//description" : "This device has a slot for a creature capture pod.", --- > "//description" : "A creature capture pod can be placed into this device, tethering the pet within its radius.", tilesets\packed\objects-by-colonytag\outpost.json 7c7 < "tilecount" : 96, --- > "tilecount" : 97, 855a856,864 > }, > "96" : { > "//description" : "This would be a neat venue for a stall.", > "//name" : "arcadegameclosed", > "//shortdescription" : "Closed Mazebound64", > "imagePositionX" : "-8", > "imagePositionY" : "0", > "object" : "arcadegameclosed", > "tilesetDirection" : "right" 1145a1155,1157 > }, > "96" : { > "image" : "../../../../../tiled/packed/objects/arcadegameclosed.png" tilesets\packed\objects-by-colonytag\pretty.json 7c7 < "tilecount" : 465, --- > "tilecount" : 466, 3555a3556,3564 > "465" : { > "//description" : "This would be a neat venue for a stall.", > "//name" : "arcadegameclosed", > "//shortdescription" : "Closed Mazebound64", > "imagePositionX" : "-8", > "imagePositionY" : "0", > "object" : "arcadegameclosed", > "tilesetDirection" : "right" > }, 5286a5296,5298 > }, > "465" : { > "image" : "../../../../../tiled/packed/objects/arcadegameclosed.png" tilesets\packed\objects-by-race\generic.json 7c7 < "tilecount" : 1762, --- > "tilecount" : 1764, 5006c5006 < "//description" : "This device has a slot for a creature capture pod.", --- > "//description" : "A creature capture pod can be placed into this device, tethering the pet within its radius.", 7172a7173,7190 > "1762" : { > "//description" : "This would be a neat venue for a stall.", > "//name" : "arcadegameclosed", > "//shortdescription" : "Closed Mazebound64", > "imagePositionX" : "-8", > "imagePositionY" : "0", > "object" : "arcadegameclosed", > "tilesetDirection" : "right" > }, > "1763" : { > "//description" : "A customized signboard", > "//name" : "wiredcustomsign", > "//shortdescription" : "Sign", > "imagePositionX" : "-24", > "imagePositionY" : "-8", > "object" : "wiredcustomsign", > "tilesetDirection" : "right" > }, 17374a17393,17398 > }, > "1762" : { > "image" : "../../../../../tiled/packed/objects/arcadegameclosed.png" > }, > "1763" : { > "image" : "../../../../../tiled/packed/objects/wiredcustomsign.png" tilesets\packed\objects-by-type\container.json 1485c1485 < "//description" : "This device has a slot for a creature capture pod.", --- > "//description" : "A creature capture pod can be placed into this device, tethering the pet within its radius.", vehicles\boat\boat.animation 4d3 < 8d6 < 10c8 < "frames" : 4, --- > "frames" : 4, 14,15c12 < }, < --- > }, 17c14 < "frames" : 4, --- > "frames" : 4, 21,22c18 < }, < --- > }, 24d19 < 26c21 < "frames" : 4, --- > "frames" : 4, 30,31c25 < }, < --- > }, 33c27 < "frames" : 4, --- > "frames" : 4, 37,38c31 < }, < --- > }, 40,44c33 < < "sinking" : {}, < < "sunk" : {} < --- > "sinking" : {} 74d62 < 80c68 < "offset" : [-0.5,4.75 ] --- > "offset" : [-0.5, 4.75 ] 85d72 < 89d75 < 95d80 < 101d85 < 107d90 < 111d93 < 115d96 < 120,125d100 < }, < < "sunk" : { < "properties" : { < "image" : "/vehicles/boat/boatforegroundtop.png:sail." < } 127d101 < 132d105 < 142d114 < 146d117 < 152d122 < 158d127 < 164d132 < 168d135 < 173d139 < 178,183d143 < }, < < "sunk" : { < "properties" : { < "image" : "/vehicles/boat/boatforeground.png:hull." < } 185d144 < 200d158 < 202d159 < 213,214d169 < < 218,219d172 < < 230,231d182 < < 235d185 < 262d211 < 266d214 < 325,328c273,277 < "collisionNotification" : [ "/sfx/tech/hoverbike_bump1.ogg", < "/sfx/tech/hoverbike_bump2.ogg", < "/sfx/tech/hoverbike_bump3.ogg" ], < --- > "collisionNotification" : [ > "/sfx/tech/hoverbike_bump1.ogg", > "/sfx/tech/hoverbike_bump2.ogg", > "/sfx/tech/hoverbike_bump3.ogg" > ], 330,334c279,283 < < "changeDamageState" : [ "/sfx/gun/grenadeblast_small_fire1.ogg", < "/sfx/gun/grenadeblast_small_fire2.ogg", < "/sfx/gun/grenadeblast_small_fire3.ogg" ], < --- > "changeDamageState" : [ > "/sfx/gun/grenadeblast_small_fire1.ogg", > "/sfx/gun/grenadeblast_small_fire2.ogg", > "/sfx/gun/grenadeblast_small_fire3.ogg" > ], vehicles\boat\boat.lua 61c61 < if (animState == "idle" or animState == "sinking" or animState == "sunk") then --- > if (animState == "idle" or animState == "sinking") then 94,95d93 < local sinkAngle = -math.pi*0.4 < 102c100 < world.debugText("warping",mcontroller.position(),"red") --- > -- world.debugText("warping",mcontroller.position(),"red") 106,108d103 < elseif (animState == "sunk") then < local targetAngle = calcGroundCollisionAngle(self.maxGroundSearchDistance) < self.angle = self.angle + (targetAngle - self.angle) * self.angleApproachFactor 110c105 < world.debugText("sinking", mcontroller.position(), "red") --- > -- world.debugText("sinking", mcontroller.position(), "red") 112c107 < self.angle = updateSinking(waterFactor, self.angle, sinkAngle) --- > self.angle = updateSinking(waterFactor, self.angle, -math.pi * 0.4) 114c109 < world.debugText("idle", mcontroller.position(), "green") --- > -- world.debugText("idle", mcontroller.position(), "green") 128c123 < world.debugText(string.format("WaterSurface=%s", self.waterBounds[2]), mcontroller.position(), "yellow") --- > -- world.debugText(string.format("WaterSurface=%s", self.waterBounds[2]), mcontroller.position(), "yellow") 139a135 > self.sinkTimer = config.getParameter("maxSinkTime") 186,195c182,187 < < if (mcontroller.onGround()) then < --not floating any more. Must have touched bottom. < animator.setAnimationState("base", "sunk") < < animator.setParticleEmitterActive("bubbles", false) < vehicle.setLoungeEnabled("drivingSeat", false) < < local targetAngle = calcGroundCollisionAngle(self.maxGroundSearchDistance) < currentAngle = currentAngle + (targetAngle - currentAngle) * self.angleApproachFactor --- > self.sinkTimer = self.sinkTimer - script.updateDt() > if self.sinkTimer <= 0 or mcontroller.onGround() then > animator.playSound("changeDamageState") > animator.setParticleEmitterBurstCount("damageShards", config.getParameter("destroyParticleBurstCount")) > animator.burstParticleEmitter("damageShards") > vehicle.destroy() 201,202c193,194 < local lerpFactor = math.cos(currentAngle) < local finalBuoyancy = (self.maxBuoyancy * lerpFactor) + (self.sinkingBuoyancy* (1.0 - lerpFactor)) --- > local lerpFactor = math.cos(currentAngle - sinkAngle) > local finalBuoyancy = (self.maxBuoyancy * (1.0 - lerpFactor)) + (self.sinkingBuoyancy * lerpFactor) 231c223 < local windAngle= windMaxAngle * (math.sin(self.rockingTimer / self.rockingInterval * (math.pi * 2))) --- > local windAngle = windMaxAngle * (math.sin(self.rockingTimer / self.rockingInterval * (math.pi * 2))) 384c376 < world.debugPoint(intPoint, {255, 255, 0, 255}) --- > -- world.debugPoint(intPoint, {255, 255, 0, 255}) 387c379 < world.debugPoint(endPoint, {255, 0, 0, 255}) --- > -- world.debugPoint(endPoint, {255, 0, 0, 255}) vehicles\boat\boat.vehicle 22,23d21 < < 25c23 < "collisionPoly" : [[-2.5, -2], [-5.0, -1], [-5, 1], [1.0, 5.0], [5.0, 1], [5.0, -1], [2.5,-2]], --- > "collisionPoly" : [[-2.5, -2], [-5.0, -1], [-4.5, 1.0], [5.0, 1.0], [5.0, -1], [2.5,-2]], 33,34d30 < < 39c35,36 < "orientation" : "stand" --- > "orientation" : "stand", > "exitBottomOffset" : [0, -0.5] 46c43,44 < "dance" : "titanic" --- > "dance" : "titanic", > "exitBottomOffset" : [0, -0.5] 57c55 < "rockingWindAngleMultiplier": 0.0075, --- > "rockingWindAngleMultiplier": -0.006, 68,70d65 < < //health and damage < 78c73 < "liquidBuoyancy" : 6 --- > "liquidBuoyancy" : 1.75 83c78 < "liquidBuoyancy" : 4 --- > "liquidBuoyancy" : 1.5 88c83 < "liquidBuoyancy" : 3 --- > "liquidBuoyancy" : 1.0 91,92c86,89 < "sinkingBuoyancy" : 0.75, < "sinkingFriction" : 70, --- > "sinkingBuoyancy" : 0.5, > "sinkingFriction" : 20, > "maxSinkTime" : 10, > "destroyParticleBurstCount" : 25, 100,101d96 < //Platform to stand on < 102a98,101 > "poopdeck" : { > "collision" : [ [-4.5, 0.5], [0, 0.5], [-0.75, 1.75], [-4.5, 1.75] ], > "attachToPart" : "seat" > }, 104c103 < "collision" : [ [-4.5, 0.0], [4.5, 0.0], [4.5, 0.6], [-4.5, 0.6] ], --- > "collision" : [ [-0.5, 0.0], [4.5, 0.0], [4.5, 1.0], [-0.5, 1.0] ], 109,110d107 < < // particle effects. 115,118d111 < < < < 120,122d112 < < < vehicles\railplatform\railplatform.lua 28c28 < if mcontroller.onGround() then --- > if mcontroller.isColliding() then