This commit is contained in:
Aria 2025-03-21 22:23:30 +11:00
commit 9c94d113d3
Signed by untrusted user who does not match committer: aria
GPG key ID: 19AB7AA462B8AB3B
10260 changed files with 1237388 additions and 0 deletions

View file

@ -0,0 +1,117 @@
function init()
self.specialLast = false
self.active = false
tech.setVisible(false)
self.honkTimer = 0
self.energyCostPerSecond = config.getParameter("energyCostPerSecond")
self.carCustomMovementParameters = config.getParameter("carCustomMovementParameters")
self.parentOffset = config.getParameter("parentOffset")
self.collisionPoly = mcontroller.baseParameters().standingPoly
end
function uninit()
if self.active then
local transformPosition = transformPoly(self.collisionPoly)
if transformPosition then
mcontroller.setPosition(transformPosition)
end
deactivate()
end
end
function update(args)
local specialActivated = not self.specialLast and args.moves["special1"]
self.specialLast = args.moves["special1"]
if not self.active and not tech.parentLounging() and specialActivated then
local transformPosition = transformPoly(self.carCustomMovementParameters.standingPoly)
if transformPosition and status.overConsumeResource("energy", self.energyCostPerSecond * args.dt) then
mcontroller.setPosition(transformPosition)
activate()
else
-- Make some kind of error noise
end
elseif self.active and (specialActivated or not status.overConsumeResource("energy", self.energyCostPerSecond * args.dt)) then
local transformPosition = transformPoly(self.collisionPoly)
if transformPosition then
mcontroller.setPosition(transformPosition)
end
deactivate()
end
if self.active then
local diff = world.distance(tech.aimPosition(), mcontroller.position())
local aimAngle = math.atan(diff[2], diff[1])
local flip = aimAngle > math.pi / 2 or aimAngle < -math.pi / 2
mcontroller.controlParameters(self.carCustomMovementParameters)
if flip then
animator.setFlipped(true)
tech.setParentOffset({-self.parentOffset[1], self.parentOffset[2]})
mcontroller.controlFace(-1)
else
animator.setFlipped(false)
tech.setParentOffset(self.parentOffset)
mcontroller.controlFace(1)
end
if not mcontroller.onGround() then
if mcontroller.velocity()[2] > 0 then
animator.setAnimationState("movement", "jump")
else
animator.setAnimationState("movement", "fall")
end
elseif mcontroller.walking() or mcontroller.running() then
if flip and mcontroller.facingDirection() == 1 or not flip and mcontroller.facingDirection() == -1 then
animator.setAnimationState("movement", "driveReverse")
else
animator.setAnimationState("movement", "driveForward")
end
else
animator.setAnimationState("movement", "idle")
end
if args.moves["primaryFire"] and self.honkTimer <= 0 then
animator.playSound("carHorn")
self.honkTimer = config.getParameter("honkTime")
end
if self.honkTimer > 0 then self.honkTimer = self.honkTimer - args.dt end
end
end
function activate()
animator.burstParticleEmitter("carActivateParticles")
tech.setVisible(true)
tech.setParentState("sit")
tech.setToolUsageSuppressed(true)
self.active = true
end
function deactivate()
animator.burstParticleEmitter("carDeactivateParticles")
tech.setVisible(false)
tech.setParentState()
tech.setToolUsageSuppressed(false)
tech.setParentOffset({0, 0})
self.active = false
end
function transformPoly(toPoly)
local position = mcontroller.position()
local yAdjust = collisionBottom(mcontroller.collisionPoly()) - collisionBottom(toPoly)
return world.resolvePolyCollision(toPoly, {position[1], position[2] + yAdjust}, 1)
end
function collisionBottom(collisionPoly)
local lowest = 0
for _,point in pairs(collisionPoly) do
if point[2] < lowest then
lowest = point[2]
end
end
return lowest
end

View file

@ -0,0 +1,91 @@
{
"animatedParts" : {
"stateTypes" : {
"movement" : {
"default" : "idle",
"states" : {
"idle" : { },
"jump" : {
"frames" : 2,
"cycle" : 0.5,
"mode" : "end",
"properties" : {
"immediateSound" : "/sfx/tech/tech_doublejump.ogg"
}
},
"fall" : {
"frames" : 2,
"cycle" : 0.5,
"mode" : "end"
},
"driveForward" : {
"frames" : 4,
"cycle" : 0.5,
"mode" : "loop"
},
"driveReverse" : {
"frames" : 4,
"cycle" : 0.5,
"mode" : "loop"
}
}
}
},
"parts" : {
"foreground" : {
"properties" : {
"centered" : true,
"zLevel" : 1
},
"partStates" : {
"movement" : {
"idle" : {
"properties" : {
"image" : "humancarforeground.png:idle.<frame>"
}
},
"jump" : {
"properties" : {
"image" : "humancarforeground.png:jump.<frame>"
}
},
"fall" : {
"properties" : {
"image" : "humancarforeground.png:fall.<frame>"
}
},
"driveForward" : {
"properties" : {
"image" : "humancarforeground.png:move.<frame>"
}
},
"driveReverse" : {
"properties" : {
"image" : "humancarforeground.png:bmove.<frame>"
}
}
}
}
}
}
},
"sounds" : {
"carHorn" : ["/sfx/tech/honk.ogg"]
},
"particleEmitters" : {
"carActivateParticles" : {
"particles" : [ ]
},
"carDeactivateParticles" : {
"particles" : [ ]
}
}
}

View file

@ -0,0 +1,56 @@
{
"name" : "humancar",
"type" : "head",
"scripts" : [
"/scripts/vec2.lua",
"/tech/automobile/car.lua"
],
"animator" : "humancar.animation",
"description" : "Press F to use this. Traverses rough terrain quicker.",
"shortDescription" : "Human Car",
"rarity" : "Legendary",
"icon" : "/tech/humancar.png",
"chipCost" : 8,
"carCustomMovementParameters" : {
"standingPoly" : [ [-3.5, 0.25], [-2, -2.25], [2, -2.25], [3.5, 0.25], [3.5, 0.5], [2, 0.5], [-2, 0.5], [-3.5, 0.5] ],
"crouchingPoly" : [ [-3.5, 0.25], [-2, -2.25], [2, -2.25], [3.5, 0.25], [3.5, 0.5], [2, 0.5], [-2, 0.5], [-3.5, 0.5] ],
"mass" : 5.0,
"normalGroundFriction" : 50.0,
"ambulatingGroundFriction" : 6.0,
"groundForce" : 160.0,
"airForce" : 50.0,
"liquidForce" : 70.0,
"walkSpeed" : 6.0,
"runSpeed" : 30.0,
"airJumpProfile" : {
"jumpSpeed" : 20.0,
"jumpControlForce" : 700.0,
"jumpInitialPercentage" : 0.75,
"jumpHoldTime" : 0.15
},
"liquidJumpProfile" : {
"jumpSpeed" : 8.0,
"jumpControlForce" : 400.0,
"jumpInitialPercentage" : 0.75,
"jumpHoldTime" : 0.1
}
},
"energyCostPerSecond" : 10,
"parentOffset" : [0.0, 0.4],
"carCollisionTest" : [-3.5, -2.5, 3.5, 5],
"honkTime" : 1.0
}

View file

@ -0,0 +1,20 @@
{
"frameGrid" : {
"size" : [70, 38],
"dimensions" : [4, 3],
"names" : [
[ "move.1", "move.2", "move.3", "move.4" ],
[ "fall.1", "fall.2", "idle.1" ],
[ "jump.1", "jump.2" ]
]
},
"aliases" : {
"bmove.4" : "move.1",
"bmove.3" : "move.2",
"bmove.2" : "move.3",
"bmove.1" : "move.4"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

View file

@ -0,0 +1,128 @@
{
"animatedParts" : {
"stateTypes" : {
"movement" : {
"default" : "idle",
"states" : {
"idle" : { },
"jump" : {
"frames" : 2,
"cycle" : 0.5,
"mode" : "end",
"properties" : {
"immediateSound" : "/sfx/tech/tech_doublejump.ogg"
}
},
"fall" : {
"frames" : 2,
"cycle" : 0.5,
"mode" : "end"
},
"driveForward" : {
"frames" : 4,
"cycle" : 0.5,
"mode" : "loop"
},
"driveReverse" : {
"frames" : 4,
"cycle" : 0.5,
"mode" : "loop"
}
}
}
},
"parts" : {
"background" : {
"properties" : {
"centered" : true,
"zLevel" : -1
},
"partStates" : {
"movement" : {
"idle" : {
"properties" : {
"image" : "humanjeepbackground.png:idle.<frame>"
}
},
"jump" : {
"properties" : {
"image" : "humanjeepbackground.png:jump.<frame>"
}
},
"fall" : {
"properties" : {
"image" : "humanjeepbackground.png:fall.<frame>"
}
},
"driveForward" : {
"properties" : {
"image" : "humanjeepbackground.png:move.<frame>"
}
},
"driveReverse" : {
"properties" : {
"image" : "humanjeepbackground.png:bmove.<frame>"
}
}
}
}
},
"foreground" : {
"properties" : {
"centered" : true,
"zLevel" : 1
},
"partStates" : {
"movement" : {
"idle" : {
"properties" : {
"image" : "humanjeepforeground.png:idle.<frame>"
}
},
"jump" : {
"properties" : {
"image" : "humanjeepforeground.png:jump.<frame>"
}
},
"fall" : {
"properties" : {
"image" : "humanjeepforeground.png:fall.<frame>"
}
},
"driveForward" : {
"properties" : {
"image" : "humanjeepforeground.png:move.<frame>"
}
},
"driveReverse" : {
"properties" : {
"image" : "humanjeepforeground.png:bmove.<frame>"
}
}
}
}
}
}
},
"sounds" : {
"carHorn" : ["/sfx/tech/honk.ogg"]
},
"particleEmitters" : {
"carActivateParticles" : {
"particles" : [ ]
},
"carDeactivateParticles" : {
"particles" : [ ]
}
}
}

View file

@ -0,0 +1,56 @@
{
"name" : "humanjeep",
"type" : "head",
"scripts" : [
"/scripts/vec2.lua",
"/tech/automobile/car.lua"
],
"animator" : "humanjeep.animation",
"description" : "Press F to use this. Traverses rough terrain quicker.",
"shortDescription" : "Human Jeep",
"rarity" : "Legendary",
"icon" : "/tech/humanjeep.png",
"chipCost" : 8,
"carCustomMovementParameters" : {
"standingPoly" : [ [-3.5, 0.25], [-2, -1.75], [2, -1.75], [3.5, 0.25], [3.5, 0.5], [2, 0.5], [-2, 0.5], [-3.5, 0.5] ],
"crouchingPoly" : [ [-3.5, 0.25], [-2, -1.75], [2, -1.75], [3.5, 0.25], [3.5, 0.5], [2, 0.5], [-2, 0.5], [-3.5, 0.5] ],
"mass" : 5.0,
"normalGroundFriction" : 50.0,
"ambulatingGroundFriction" : 6.0,
"groundForce" : 160.0,
"airForce" : 50.0,
"liquidForce" : 70.0,
"walkSpeed" : 6.0,
"runSpeed" : 30.0,
"airJumpProfile" : {
"jumpSpeed" : 20.0,
"jumpControlForce" : 700.0,
"jumpInitialPercentage" : 0.75,
"jumpHoldTime" : 0.15
},
"liquidJumpProfile" : {
"jumpSpeed" : 8.0,
"jumpControlForce" : 400.0,
"jumpInitialPercentage" : 0.75,
"jumpHoldTime" : 0.1
}
},
"energyCostPerSecond" : 10,
"parentOffset" : [-1.0, 1.2],
"carCollisionTest" : [-3.5, -2.5, 3.5, 5],
"honkTime" : 1.0
}

View file

@ -0,0 +1,20 @@
{
"frameGrid" : {
"size" : [54, 32],
"dimensions" : [4, 3],
"names" : [
[ "move.1", "move.2", "move.3", "move.4" ],
[ "fall.1", "fall.2", "idle.1" ],
[ "jump.1", "jump.2" ]
]
},
"aliases" : {
"bmove.4" : "move.1",
"bmove.3" : "move.2",
"bmove.2" : "move.3",
"bmove.1" : "move.4"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 482 B

View file

@ -0,0 +1,20 @@
{
"frameGrid" : {
"size" : [54, 32],
"dimensions" : [4, 3],
"names" : [
[ "move.1", "move.2", "move.3", "move.4" ],
[ "fall.1", "fall.2", "idle.1" ],
[ "jump.1", "jump.2" ]
]
},
"aliases" : {
"bmove.4" : "move.1",
"bmove.3" : "move.2",
"bmove.2" : "move.3",
"bmove.1" : "move.4"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

View file

@ -0,0 +1,128 @@
{
"animatedParts" : {
"stateTypes" : {
"movement" : {
"default" : "idle",
"states" : {
"idle" : { },
"jump" : {
"frames" : 2,
"cycle" : 0.5,
"mode" : "end",
"properties" : {
"immediateSound" : "/sfx/tech/tech_doublejump.ogg"
}
},
"fall" : {
"frames" : 2,
"cycle" : 0.5,
"mode" : "end"
},
"driveForward" : {
"frames" : 4,
"cycle" : 0.5,
"mode" : "loop"
},
"driveReverse" : {
"frames" : 4,
"cycle" : 0.5,
"mode" : "loop"
}
}
}
},
"parts" : {
"background" : {
"properties" : {
"centered" : true,
"zLevel" : -1
},
"partStates" : {
"movement" : {
"idle" : {
"properties" : {
"image" : "penguintankbackground.png:idle.<frame>"
}
},
"jump" : {
"properties" : {
"image" : "penguintankbackground.png:jump.<frame>"
}
},
"fall" : {
"properties" : {
"image" : "penguintankbackground.png:fall.<frame>"
}
},
"driveForward" : {
"properties" : {
"image" : "penguintankbackground.png:move.<frame>"
}
},
"driveReverse" : {
"properties" : {
"image" : "penguintankbackground.png:bmove.<frame>"
}
}
}
}
},
"foreground" : {
"properties" : {
"centered" : true,
"zLevel" : 1
},
"partStates" : {
"movement" : {
"idle" : {
"properties" : {
"image" : "penguintankforeground.png:idle.<frame>"
}
},
"jump" : {
"properties" : {
"image" : "penguintankforeground.png:jump.<frame>"
}
},
"fall" : {
"properties" : {
"image" : "penguintankforeground.png:fall.<frame>"
}
},
"driveForward" : {
"properties" : {
"image" : "penguintankforeground.png:move.<frame>"
}
},
"driveReverse" : {
"properties" : {
"image" : "penguintankforeground.png:bmove.<frame>"
}
}
}
}
}
}
},
"sounds" : {
"carHorn" : ["/sfx/tech/honk.ogg"]
},
"particleEmitters" : {
"carActivateParticles" : {
"particles" : [ ]
},
"carDeactivateParticles" : {
"particles" : [ ]
}
}
}

View file

@ -0,0 +1,56 @@
{
"name" : "penguintank",
"type" : "head",
"scripts" : [
"/scripts/vec2.lua",
"/tech/automobile/car.lua"
],
"animator" : "penguintank.animation",
"description" : "Press F to use this. Traverses rough terrain quicker.",
"shortDescription" : "Penguin Tank",
"rarity" : "Legendary",
"icon" : "/tech/humanjeep.png",
"chipCost" : 8,
"carCustomMovementParameters" : {
"standingPoly" : [ [-2.5, -1.75], [2.5, -1.75], [1.5, 0.5], [-1.5, 0.5] ],
"crouchingPoly" : [ [-2.5, -1.75], [2.5, -1.75], [1.5, 0.5], [-1.5, 0.5] ],
"mass" : 5.0,
"normalGroundFriction" : 50.0,
"ambulatingGroundFriction" : 6.0,
"groundForce" : 160.0,
"airForce" : 50.0,
"liquidForce" : 70.0,
"walkSpeed" : 3.0,
"runSpeed" : 15.0,
"airJumpProfile" : {
"jumpSpeed" : 10.0,
"jumpControlForce" : 700.0,
"jumpInitialPercentage" : 0.75,
"jumpHoldTime" : 0.15
},
"liquidJumpProfile" : {
"jumpSpeed" : 5.0,
"jumpControlForce" : 400.0,
"jumpInitialPercentage" : 0.75,
"jumpHoldTime" : 0.1
}
},
"energyCostPerSecond" : 10,
"parentOffset" : [-0.7, 1.6],
"carCollisionTest" : [-3.5, -2.5, 3.5, 5],
"honkTime" : 1.0
}

View file

@ -0,0 +1,20 @@
{
"frameGrid" : {
"size" : [46, 31],
"dimensions" : [4, 3],
"names" : [
[ "move.1", "move.2", "move.3", "move.4" ],
[ "fall.1", "fall.2", "idle.1" ],
[ "jump.1", "jump.2" ]
]
},
"aliases" : {
"bmove.4" : "move.1",
"bmove.3" : "move.2",
"bmove.2" : "move.3",
"bmove.1" : "move.4"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

View file

@ -0,0 +1,20 @@
{
"frameGrid" : {
"size" : [46, 31],
"dimensions" : [4, 3],
"names" : [
[ "move.1", "move.2", "move.3", "move.4" ],
[ "fall.1", "fall.2", "idle.1" ],
[ "jump.1", "jump.2" ]
]
},
"aliases" : {
"bmove.4" : "move.1",
"bmove.3" : "move.2",
"bmove.2" : "move.3",
"bmove.1" : "move.4"
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB