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,24 @@
{
"itemName" : "gnaremoob",
"level" : 1,
"maxStack" : 1,
"rarity" : "legendary",
"description" : "A ridiculous take on a classic.",
"shortdescription" : "Gnaremoob",
"tooltipKind" : "sword",
"weaponType" : "Boomerang",
"twoHanded" : true,
"inventoryIcon" : "gnaremoob.png",
"animation" : "gnaremoob.animation",
"scripts" : ["gnaremoob.lua"],
"windupTime" : 0.3,
"minFlyTime" : 0.3,
"flySpeed" : 80,
"controlForce" : 35,
"spinRate" : 15.0,
"snapDistance" : 1.5,
"flyCollisionPoly" : [ [-0.75, -1.0], [-0.35, -1.5], [0.35, -1.5], [0.75, -1.0], [0.75, 0.65], [0.35, 1.22], [-0.35, 1.22], [-0.75, 0.65] ]
}

View file

@ -0,0 +1,18 @@
{
"animatedParts" : {
"parts" : {
"gnaremoob" : {
"properties" : {
"centered" : true,
"image" : "gnaremoob.png",
"offset" : [0.5, 1.0],
"rotationGroup" : "gnaremoob"
}
}
}
},
"rotationGroups" : {
"gnaremoob" : {}
}
}

View file

@ -0,0 +1,90 @@
require "/scripts/vec2.lua"
function init()
self.aimAndDir = table.pack(activeItem.aimAngleAndDirection(-1, activeItem.ownerAimPosition()))
idle()
end
function uninit()
mcontroller.setRotation(0)
end
function update(dt, fireMode, shiftHeld)
if self.state == "idle" then
self.aimAndDir = table.pack(activeItem.aimAngleAndDirection(-1, activeItem.ownerAimPosition()))
activeItem.setArmAngle(self.aimAndDir[1])
activeItem.setFacingDirection(self.aimAndDir[2])
if fireMode == "primary" then
windup()
end
end
if self.state == "windup" then
self.stateTimer = math.max(0, self.stateTimer - dt)
if self.stateTimer == 0 then
flyout()
end
end
if self.state == "flyout" then
self.stateTimer = math.max(0, self.stateTimer - dt)
if (self.stateTimer > 0 or not mcontroller.isColliding()) and vec2.mag(mcontroller.velocity()) > 0.1 then
mcontroller.controlParameters({
gravityEnabled=false,
collisionPoly=config.getParameter("flyCollisionPoly"),
standingPoly=config.getParameter("flyCollisionPoly"),
crouchingPoly=config.getParameter("flyCollisionPoly")
})
mcontroller.controlModifiers({movementSuppressed=true})
mcontroller.controlApproachVelocity({0, 0}, config.getParameter("controlForce"))
self.rotation = self.rotation - config.getParameter("spinRate") * dt * self.aimAndDir[2]
mcontroller.setRotation(self.rotation)
else
flyback()
end
end
if self.state == "flyback" then
if world.magnitude(mcontroller.position(), self.returnPosition) > config.getParameter("snapDistance") then
mcontroller.controlParameters({gravityEnabled=false,collisionEnabled=false})
mcontroller.controlModifiers({movementSuppressed=true})
local toTargetVelocity = vec2.mul(vec2.norm(world.distance(self.returnPosition, mcontroller.position())), config.getParameter("flySpeed"))
mcontroller.controlApproachVelocity(toTargetVelocity, config.getParameter("controlForce"))
self.rotation = self.rotation - config.getParameter("spinRate") * dt * self.aimAndDir[2]
mcontroller.setRotation(self.rotation)
else
mcontroller.setVelocity({0, 0})
idle()
end
end
end
function idle()
self.state = "idle"
self.rotation = 0
mcontroller.setRotation(self.rotation)
activeItem.setTwoHandedGrip(false)
end
function windup()
self.state = "windup"
self.stateTimer = config.getParameter("windupTime")
activeItem.setArmAngle(self.aimAndDir[1] + 1.2)
end
function flyout()
self.state = "flyout"
self.stateTimer = config.getParameter("minFlyTime")
self.returnPosition = mcontroller.position()
local toTargetVelocity = vec2.rotate({config.getParameter("flySpeed"), 0}, self.aimAndDir[1])
toTargetVelocity[1] = toTargetVelocity[1] * self.aimAndDir[2]
mcontroller.setVelocity(toTargetVelocity)
activeItem.setTwoHandedGrip(true)
activeItem.setArmAngle(0)
end
function flyback()
self.state = "flyback"
activeItem.setTwoHandedGrip(true)
mcontroller.setVelocity(vec2.mul(mcontroller.velocity(), -1))
end

Binary file not shown.

After

Width:  |  Height:  |  Size: 434 B