v1.4.4
This commit is contained in:
commit
9c94d113d3
10260 changed files with 1237388 additions and 0 deletions
90
assets/devel/items/active/gnaremoob/gnaremoob.lua
Normal file
90
assets/devel/items/active/gnaremoob/gnaremoob.lua
Normal 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
|
Loading…
Add table
Add a link
Reference in a new issue