FILES ----- [NEW] .metadata instance_worlds.config player.config versioning.config achievements\achievements\complete\craftallarmor.achievement achievements\achievements\complete\uniquetenants.achievement achievements\achievements\items\craftarmor.achievement achievements\achievements\items\planetblocks.achievement achievements\events\newtenant.event humanoid\floran\hair\27.png interface\games\fossilgame\fossilgame.lua interface\games\fossilgame\tools.lua [NEW] interface\modsmenu\body.png [NEW] interface\modsmenu\footer.png [NEW] interface\modsmenu\header.png [NEW] interface\modsmenu\modbackground.png [NEW] interface\modsmenu\modselected.png [NEW] interface\modsmenu\modsmenu.config [NEW] interface\modsmenu\scrollbg.png interface\scripted\cropshipper\cropshippergui.config interface\scripted\mmupgrade\mmupgradegui.config [NEW] interface\title\mods.png [NEW] interface\title\modsover.png interface\windowconfig\title.config items\active\weapons\bossdrop\ixodoomclaw\ixodoomclaw.activeitem items\active\weapons\bossdrop\kluexstaff\kluexstaff.activeitem items\active\weapons\bossdrop\miniknoglauncher\miniknoglauncher.activeitem items\active\weapons\bossdrop\soluskatana\soluskatana.activeitem objects\crafting\capturestation\capturestation.object objects\floran\plantorb\plantorb.object objects\generic\mannequin\mannequin.object objects\ship\aviantechstation\aviantechstation.object objects\ship\florantechstation\florantechstation.object objects\ship\glitchtechstation\glitchtechstation.object objects\ship\humantechstation\humantechstation.object objects\ship\hylotltechstation\hylotltechstation.object objects\ship\novakidtechstation\novakidtechstation.object objects\ship\techstation\techstation.object quests\scripts\artifact.lua quests\scripts\turnin.lua quests\scripts\story\bootship.lua quests\scripts\story\destroyruin.lua quests\scripts\story\gaterepair.lua quests\scripts\story\human_mission1.lua quests\scripts\story\shiprepair.lua quests\scripts\tutorial\protectorate.lua tech\distortionsphere\spikesphere.lua tech\distortionsphere\spikesphere.tech vehicles\hoverbike\hoverbikered.vehicle [NEW] versioning\Statistics_1_2.lua DIFFS ----- instance_worlds.config 1098a1099 > "disableDeathDrops" : true, player.config 335c335,336 < { "item" : "pethealingstation" } --- > { "item" : "pethealingstation" }, > { "item" : "pettether" } versioning.config 7c7 < "Statistics" : 1, --- > "Statistics" : 2, achievements\achievements\complete\craftallarmor.achievement 23c23 < "name" : "itemSet.category.headarmour ", --- > "name" : "itemSet.category.headarmour", achievements\achievements\complete\uniquetenants.achievement 5c5 < "tenants.type." --- > "tenantTypes" 11c11 < "name" : "tenants.type.", --- > "name" : "tenantTypes", achievements\achievements\items\craftarmor.achievement 5,7c5,7 < "item.category.headarmor", < "item.category.chestarmor", < "item.category.legarmor" --- > "item.category.headarmour", > "item.category.chestarmour", > "item.category.legarmour" 13c13 < "name" : "item.category.headarmor", --- > "name" : "item.category.headarmour", 18c18 < "name" : "item.category.chestarmor", --- > "name" : "item.category.chestarmour", 23c23 < "name" : "item.category.legarmor", --- > "name" : "item.category.legarmour", achievements\achievements\items\planetblocks.achievement 5c5 < "item.category.materials" --- > "item.category.block" 11c11 < "name" : "item.category.materials", --- > "name" : "item.category.block", achievements\events\newtenant.event 41a42,46 > "type" : "int", > "op" : "increment" > }, > { > "name" : "tenantTypes", interface\games\fossilgame\fossilgame.lua 327c327 < if tool.name ~= "Brush" then --- > if tool.uses > -1 then interface\games\fossilgame\tools.lua 13c13 < uses = uses or -1, --- > uses = uses or 0, interface\scripted\cropshipper\cropshippergui.config 86a87,123 > // SEEDS > "automatoseed", > "avesmingoseed", > "bananaseed", > "beakseedseed", > "boltbulbseed", > "bonebooseed", > "carrotseed", > "chiliseed", > "cocoaseed", > "coffeeseed", > "coralcreepseed", > "cornseed", > "cottonseed", > "crystalplantseed", > "currentcornseed", > "dirturchinseed", > "eggshootseed", > "feathercrownseed", > "grapesseed", > "kiwiseed", > "mushroomseed", > "neonmelonseed", > "oculemonseed", > "pearlpeaseed", > "pineappleseed", > "potatoseed", > "pussplumseed", > "reefpodseed", > "riceseed", > "sugarcaneseed", > "thornplant", > "tomatoseed", > "toxictopseed", > "wartweedseed", > "wheatseed", > 95a133 > "cannedfood", interface\scripted\mmupgrade\mmupgradegui.config 215c215 < }, --- > } 218,224c218,224 < "btnResetTools" : { < "type" : "button", < "base" : "/interface/scripted/mmupgrade/resetbutton.png", < "pressedOffset" : [0, -1], < "position" : [10, 22], < "callback" : "resetTools" < } --- > // "btnResetTools" : { > // "type" : "button", > // "base" : "/interface/scripted/mmupgrade/resetbutton.png", > // "pressedOffset" : [0, -1], > // "position" : [10, 22], > // "callback" : "resetTools" > // } interface\windowconfig\title.config 2,6c2,40 < "mainMenuButtonsKeys" : [ "singleplayer", "multiplayer", "options", "quit", "back" ], < "mainMenuButtons" : [ "/interface/title/singleplayer.png", "/interface/title/multiplayer.png", "/interface/title/options.png", "/interface/title/quit.png", "/interface/title/back.png" ], < "mainMenuButtonsDisabled" : [ "", "", "", "", "" ], < "mainMenuButtonsHover" : [ "/interface/title/singleplayerover.png", "/interface/title/multiplayerover.png", "/interface/title/optionsover.png", "/interface/title/quitover.png", "/interface/title/backover.png" ], < "mainMenuButtonsOffsets" : [ [0, 85], [0, 60], [0, 35], [0, 10], [0, 10] ], --- > "mainMenuButtons" : [ > { > "key" : "singleplayer", > "button" : "/interface/title/singleplayer.png", > "hover" : "/interface/title/singleplayerover.png", > "offset" : [0, 85] > }, > { > "key" : "multiplayer", > "button" : "/interface/title/multiplayer.png", > "hover" : "/interface/title/multiplayerover.png", > "offset" : [0, 60] > }, > { > "key" : "options", > "button" : "/interface/title/options.png", > "hover" : "/interface/title/optionsover.png", > "offset" : [0, 35] > }, > { > "key" : "quit", > "button" : "/interface/title/quit.png", > "hover" : "/interface/title/quitover.png", > "offset" : [0, 10] > }, > { > "key" : "back", > "button" : "/interface/title/back.png", > "hover" : "/interface/title/backover.png", > "offset" : [0, 10] > }, > { > "key" : "mods", > "button" : "/interface/title/mods.png", > "hover" : "/interface/title/modsover.png", > "offset" : [-22, 2], > "rightAnchored" : true > } > ], items\active\weapons\bossdrop\ixodoomclaw\ixodoomclaw.activeitem 4c4 < "level" : 2, --- > "level" : 3, items\active\weapons\bossdrop\kluexstaff\kluexstaff.activeitem 5c5 < "level" : 6, --- > "level" : 5, items\active\weapons\bossdrop\miniknoglauncher\miniknoglauncher.activeitem 12c12 < "level" : 1, --- > "level" : 6, items\active\weapons\bossdrop\soluskatana\soluskatana.activeitem 4c4 < "level" : 6, --- > "level" : 4, objects\crafting\capturestation\capturestation.object 19d18 < "radioMessagesOnPickup" : [ "pickupcapturestation" ], 26c25 < --- > objects\floran\plantorb\plantorb.object 42,43c42,43 < "openSounds" : [ "/sfx/objects/stonedoor_open.ogg" ], < "closeSounds" : [ "/sfx/objects/stonedoor_close.ogg" ], --- > "openSounds" : [ "/sfx/objects/florancrate_open.ogg" ], > "closeSounds" : [ "/sfx/objects/florancrate_close.ogg" ], objects\generic\mannequin\mannequin.object 9c9 < "description" : "Display and easily equip armor sets!", --- > "description" : "Display and easily equip armour sets!", objects\ship\aviantechstation\aviantechstation.object 39d38 < "turnInQuests" : [ "gaterepair" ], objects\ship\florantechstation\florantechstation.object 39d38 < "turnInQuests" : [ "gaterepair" ], objects\ship\glitchtechstation\glitchtechstation.object 39d38 < "turnInQuests" : [ "gaterepair" ], objects\ship\humantechstation\humantechstation.object 39d38 < "turnInQuests" : [ "gaterepair" ], objects\ship\hylotltechstation\hylotltechstation.object 39d38 < "turnInQuests" : [ "gaterepair" ], objects\ship\novakidtechstation\novakidtechstation.object 39d38 < "turnInQuests" : [ "gaterepair" ], objects\ship\techstation\techstation.object 40d39 < "turnInQuests" : [ "gaterepair" ], quests\scripts\artifact.lua 3a4 > require "/quests/scripts/questutil.lua" 39a41 > questutil.questCompleteActions() quests\scripts\turnin.lua 1a2 > require "/quests/scripts/questutil.lua" 15a17 > questutil.questCompleteActions() quests\scripts\story\bootship.lua 74a75,78 > > function questComplete() > questutil.questCompleteActions() > end quests\scripts\story\destroyruin.lua 56a57 > questutil.questCompleteActions() quests\scripts\story\gaterepair.lua 238a239 > questutil.questCompleteActions() quests\scripts\story\human_mission1.lua 49a50 > questutil.questCompleteActions() 93c94 < end \ No newline at end of file --- > end quests\scripts\story\shiprepair.lua 54a55 > questutil.questCompleteActions() quests\scripts\tutorial\protectorate.lua 1a2 > require("/quests/scripts/questutil.lua") 53c54 < player.startQuest(config.getParameter("followUp")) --- > questutil.questCompleteActions() tech\distortionsphere\spikesphere.lua 12a13,14 > self.headingAngle = nil > 49,56c51,52 < local ground, headingDirection, headingAngle = setGroundDirection(groundDirection) < < -- Rotate to ground slope < local newDirection = groundSlopeDirection(headingAngle) < if newDirection then < headingDirection = newDirection < headingAngle = math.atan(headingDirection[2], headingDirection[1]) < ground = vec2.rotate(headingDirection, -math.pi / 2) --- > if not self.headingAngle then > self.headingAngle = (math.atan(groundDirection[2], groundDirection[1]) + math.pi / 2) % (math.pi * 2) 59,85c55,69 < mcontroller.controlApproachVelocity(vec2.mul(ground, self.ballSpeed), 300) < < local moveInput = 0 < < -- more complicated controls < -- if ground[1] < -0.1 then < -- if args.moves["up"] then moveInput = moveInput - 1 end < -- if args.moves["down"] then moveInput = moveInput + 1 end < -- elseif ground[1] > 0.1 then < -- if args.moves["up"] then moveInput = moveInput + 1 end < -- if args.moves["down"] then moveInput = moveInput - 1 end < -- end < < -- if ground[2] < -0.1 then < -- if args.moves["right"] then moveInput = moveInput + 1 end < -- if args.moves["left"] then moveInput = moveInput - 1 end < -- elseif ground[2] > 0.1 then < -- if args.moves["right"] then moveInput = moveInput - 1 end < -- if args.moves["left"] then moveInput = moveInput + 1 end < -- end < < -- simpler controls < if args.moves["left"] then < moveInput = -1 < elseif args.moves["right"] then < moveInput = 1 < end --- > local moveX = 0 > if args.moves["right"] then moveX = moveX + 1 end > if args.moves["left"] then moveX = moveX - 1 end > if moveX ~= 0 then > -- find any collisions in the moving direction, and adjust heading angle *up* until there is no collision > -- this makes the heading direction follow concave corners > local adjustment = 0 > for a = 0, math.pi, math.pi / 4 do > local testPos = vec2.add(mcontroller.position(), vec2.rotate({moveX * 0.25, 0}, self.headingAngle + (moveX * a))) > adjustment = moveX * a > if not world.polyCollision(poly.translate(poly.scale(mcontroller.collisionPoly(), 1.0), testPos), nil, self.normalCollisionSet) then > break > end > end > self.headingAngle = self.headingAngle + adjustment 87,88c71,82 < if moveInput ~= 0 then < moveInput = math.min(1, math.max(-1, moveInput)) --- > -- find empty space in the moving direction and adjust heading angle *down* until it collides > -- adjust to the angle *before* the collision occurs > -- this makes the heading direction follow convex corners > adjustment = 0 > for a = 0, -math.pi, -math.pi / 4 do > local testPos = vec2.add(mcontroller.position(), vec2.rotate({moveX * 0.25, 0}, self.headingAngle + (moveX * a))) > if world.polyCollision(poly.translate(poly.scale(mcontroller.collisionPoly(), 1.0), testPos), nil, self.normalCollisionSet) then > break > end > adjustment = moveX * a > end > self.headingAngle = self.headingAngle + adjustment 90c84,89 < local moveDirection = vec2.mul(headingDirection, moveInput) --- > -- apply a gravitation like force in the ground direction, while moving in the controlled direction > -- Note: this ground force causes weird collision when moving up slopes, result is you move faster up slopes > local groundAngle = self.headingAngle - (math.pi / 2) > mcontroller.controlApproachVelocity(vec2.withAngle(groundAngle, self.ballSpeed), 300) > > local moveDirection = vec2.rotate({moveX, 0}, self.headingAngle) 91a91 > world.debugLine(mcontroller.position(), vec2.add(mcontroller.position(), vec2.mul(moveDirection, 3)), "yellow") 93,99c93 < self.angularVelocity = self.ballSpeed * -moveInput < < if self.ignorePlatforms then < mcontroller.controlDown() < end < < -- world.debugLine(mcontroller.position(), vec2.add(vec2.mul(moveDirection, 5), mcontroller.position()), "yellow") --- > self.angularVelocity = -moveX * self.ballSpeed 100a95 > mcontroller.controlApproachVelocity({0,0}, 2000) 102d96 < mcontroller.controlApproachVelocity({0, 0}, 500) 105c99,100 < -- world.debugLine(mcontroller.position(), vec2.add(mcontroller.position(), vec2.mul(vec2.rotate(headingDirection, -math.pi / 2), 5)), "blue") --- > mcontroller.controlDown() > updateAngularVelocity(args.dt) 116a112,113 > else > self.headingAngle = nil 128,150d124 < end < < function groundSlopeDirection(headingAngle) < local bounds = mcontroller.boundBox() < < local leftLine = poly.translate(poly.rotate({{bounds[1] - 0.1, bounds[4] - 0.5}, {bounds[1] - 0.1, bounds[2] - 1}}, headingAngle), mcontroller.position()) < local rightLine = poly.translate(poly.rotate({{bounds[3] + 0.1, bounds[4] - 0.5}, {bounds[3] + 0.1, bounds[2] - 1}}, headingAngle), mcontroller.position()) < < -- world.debugLine(leftLine[1], leftLine[2], "red") < -- world.debugLine(rightLine[1], rightLine[2], "red") < < local collisionSet = leftLine[2][2] < leftLine[1][2] and self.platformCollisionSet or self.normalCollisionSet < local leftIntersect = world.lineCollision(leftLine[1], leftLine[2], collisionSet) or leftLine[2] < local rightIntersect = world.lineCollision(rightLine[1], rightLine[2], collisionSet) or rightLine[2] < if leftIntersect and rightIntersect then < return vec2.norm(world.distance(rightIntersect, leftIntersect)) < end < end < < function setGroundDirection(ground) < local headingDirection = {-ground[2], ground[1]} < local headingAngle = math.atan(headingDirection[2], headingDirection[1]) < return ground, headingDirection, headingAngle tech\distortionsphere\spikesphere.tech 21c21 < "collisionPoly" : [ [-0.85, -0.45], [-0.45, -0.85], [0.45, -0.85], [0.85, -0.45], [0.85, 0.45], [0.45, 0.85], [-0.45, 0.85], [-0.85, 0.45] ], --- > "collisionPoly" : [ [-0.85, -0.35], [-0.35, -0.85], [0.35, -0.85], [0.85, -0.35], [0.85, 0.35], [0.35, 0.85], [-0.35, 0.85], [-0.85, 0.35] ], vehicles\hoverbike\hoverbikered.vehicle 80c80 < "maxHealth" : 100, --- > "maxHealth" : 1000,