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,10 @@
{
"frameGrid" : {
"size" : [19, 19],
"dimensions" : [1, 1],
"names" : [
[ "0" ]
]
}
}

View file

@ -0,0 +1,102 @@
require "/scripts/vec2.lua"
require "/scripts/util.lua"
require "/scripts/projectiles/orbit.lua"
function init()
self.ownerId = projectile.sourceEntity()
self.orbitPosition = world.entityPosition(self.ownerId)
self.orbitDistance = config.getParameter("orbitDistance")
self.orbitSpeed = config.getParameter("orbitSpeed")
self.orbitParameters = config.getParameter("orbitParameters")
mcontroller.applyParameters(self.orbitParameters)
self.landed = false
self.released = false
self.releaseAngleTolerance = 0.2
self.releaseParameters = config.getParameter("releaseParameters")
self.pickupDistance = config.getParameter("pickupDistance")
end
function update(dt)
if self.ownerId and world.entityExists(self.ownerId) then
if not self.released then
-- if not self.orbitParameters.collisionEnabled == false and mcontroller.isColliding() then
-- if self.releaseAngle then
-- sb.logInfo("angle %s was within %s of %s",
-- mcontroller.rotation(),
-- math.abs(util.angleDiff(mcontroller.rotation(), self.releaseAngle)),
-- self.releaseAngle)
-- end
if self.releaseAngle and math.abs(util.angleDiff(mcontroller.rotation(), self.releaseAngle)) < self.releaseAngleTolerance then
mcontroller.setVelocity(vec2.withAngle(self.releaseAngle, vec2.mag(mcontroller.velocity())))
release()
else
orbit(self.orbitPosition, self.orbitDistance, self.orbitSpeed)
end
elseif not self.landed then
self.landed = mcontroller.onGround() and vec2.mag(mcontroller.velocity()) < 0.2
end
else
projectile.die()
end
end
function updateOrbit(orbitPosition, orbitSpeed)
self.orbitPosition = orbitPosition
self.orbitSpeed = orbitSpeed
projectile.setTimeToLive(5.0)
end
-- function holdChain()
-- local holdVector = world.distance(self.orbitPosition, mcontroller.position())
-- local orbitDistance = vec2.mag(holdVector)
-- sb.logInfo("Holding chain! length is %s, target length %s", orbitDistance, self.orbitDistance)
-- mcontroller.setVelocity(vec2.mul(vec2.norm(mcontroller.velocity()), self.baseSpeed))
-- if orbitDistance >= self.orbitDistance then
-- local holdAngle = vec2.angle(holdVector)
-- local holdVelocity = 20 * (orbitDistance - self.orbitDistance)
-- sb.logInfo("Holding at angle %s with target velocity %s", holdAngle, holdVelocity)
-- mcontroller.approachVelocityAlongAngle(holdAngle, holdVelocity, 1000, true)
-- end
-- projectile.setTimeToLive(2.0)
-- end
function pullChain(position, velocity, controlForce)
local pullVector = world.distance(position, mcontroller.position())
if vec2.mag(pullVector) < self.pickupDistance then
kill()
else
local pullAngle = vec2.angle(pullVector)
mcontroller.approachVelocityAlongAngle(pullAngle, velocity, controlForce, true)
projectile.setTimeToLive(2.0)
end
end
function speed()
return vec2.mag(mcontroller.velocity())
end
function requestRelease(releaseAngle)
self.releaseAngle = releaseAngle
end
function release()
self.released = true
mcontroller.applyParameters(self.releaseParameters)
end
function released()
return self.released
end
function landed()
return self.landed
end
function kill()
projectile.die()
end

Binary file not shown.

After

Width:  |  Height:  |  Size: 266 B

View file

@ -0,0 +1,21 @@
{
"projectileName" : "chainball",
"image" : "chainball.png",
"animationCycle" : 1.0,
"frameNumber" : 1,
"pointLight" : false,
"flippable" : false,
"actionOnReap" : [ ],
"statusEffects" : [ ],
"power" : 0.0,
"speed" : 30,
"damageKind" : "default",
"physics" : "chainball",
"bounces" : -1,
"piercing" : true,
"timeToLive" : 0.5,
"onlyHitTerrain" : true,
"scripts" : [ "chainball.lua" ]
}

View file

@ -0,0 +1,10 @@
{
"frameGrid" : {
"size" : [12, 12],
"dimensions" : [4, 1],
"names" : [
[ "0", "1", "2", "3" ]
]
}
}

View file

@ -0,0 +1,22 @@
require "/scripts/vec2.lua"
function init()
end
function update()
end
function control(direction)
mcontroller.approachVelocity(vec2.mul(vec2.norm(direction), config.getParameter("maxSpeed")), config.getParameter("controlForce"))
end
function controlTo(position)
local offset = world.distance(position, mcontroller.position())
mcontroller.approachVelocity(vec2.mul(vec2.norm(offset), config.getParameter("maxSpeed")), config.getParameter("controlForce"))
end
function isDrone()
return true
end

Binary file not shown.

After

Width:  |  Height:  |  Size: 448 B

View file

@ -0,0 +1,25 @@
{
"projectileName" : "drone",
"clientEntityMode" : "ClientPresenceMaster",
"physics" : "hover",
"image" : "drone.png",
"animationCycle" : 0.04,
"pointLight" : true,
"lightColor" : [170, 210, 255],
"frameNumber" : 4,
"damageKindImage" : "icon.png",
"timeToLive" : 60,
"actionOnReap" : [
{
"action" : "config",
"file" : "/projectiles/explosions/regularexplosion2/regularexplosion2.config"
}
],
"speed" : 10,
"power" : 0,
"onlyHitTerrain" : true,
"damageKind" : "default",
"scripts" : [ "drone.lua" ],
"controlForce" : 20,
"maxSpeed" : 20
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 262 B

View file

@ -0,0 +1,10 @@
{
"frameGrid" : {
"size" : [8, 16],
"dimensions" : [6, 1],
"names" : [
[ "0", "1", "2", "3", "4", "5" ]
]
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 205 B

View file

@ -0,0 +1,14 @@
{
"projectileName" : "vacuum",
"image" : "vacuum.png",
"physics" : "illusion",
"animationCycle" : 0.5,
"damageKindImage" : "icon.png",
"frameNumber" : 6,
"power" : 0,
"speed" : -30,
"timeToLive" : 0.5,
"bounces" : 0,
"piercing" : true,
"damageKind" : "slash"
}

View file

@ -0,0 +1,10 @@
{
"frameGrid" : {
"size" : [40, 19],
"dimensions" : [3, 1],
"names" : [
[ "0", "1", "2" ]
]
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 585 B

View file

@ -0,0 +1,17 @@
{
"projectileName" : "stattestswoosh",
"image" : "stattestswoosh.png",
"animationCycle" : 0.07,
"frameNumber" : 3,
"speed" : 0,
"orientationLocked" : true,
"damagePoly" : [ [-28, 9.5], [2, 9.5], [13, 6.5], [20, 1.5], [20, -1.5], [17, -4.5], [1, -9.5], [-28, -9.5] ],
"animationLoops" : false,
"piercing" : true,
"bounces" : -1,
"flippable" : true,
"damageKind" : "1hsword",
"statusEffects" : [ "weakpoison" ],
"knockback" : 100,
"knockbackDirectional" : true
}

View file

@ -0,0 +1,6 @@
{
"frameGrid" : {
"size" : [48, 8],
"dimensions" : [1, 4]
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

View file

@ -0,0 +1,31 @@
{
"projectileName" : "torpedo",
"image" : "torpedo.png",
"animationCycle" : 0.25,
"frameNumber" : 4,
"piercing" : true,
"flippable" : true,
"emitters" : [ "bubbletrail" ],
"physics" : "torpedo",
"damageTeam" : { "type" : "indiscriminate" },
"damageType" : "NoDamage",
"damageKind" : "default",
"speed" : 100,
"acceleration" : 20,
"timeToLive" : 30,
"actionOnHit" : [
{
"action" : "config",
"file" : "/projectiles/explosions/regularexplosion2/regularexplosionknockback.config"
}
],
"persistentAudio" : "/sfx/tech/forcefield_loop.ogg"
}

View file

@ -0,0 +1,26 @@
{
"projectileName" : "groundfire",
"image" : "invisibleprojectile.png",
"physics" : "groundspread",
"onlyHitTerrain" : true,
"hydrophobic" : true,
"frameNumber" : 1,
"flippable" : true,
"speed" : 10,
"timeToLive" : 0.8,
"bounces" : -1,
"periodicActions" : [
{
"time" : 0.1,
"repeat" : true,
"action" : "projectile",
"type" : "groundfireburst",
"angle" : 0,
"inheritDamageFactor" : 1.0
}
],
// "lightColor" : [255, 180, 0],
"damageType" : "NoDamage",
"damageKind" : "default"
}

View file

@ -0,0 +1,10 @@
{
"frameGrid" : {
"size" : [8, 8],
"dimensions" : [1, 1],
"names" : [
[ "0" ]
]
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

View file

@ -0,0 +1,10 @@
{
"frameGrid" : {
"size" : [16, 9],
"dimensions" : [7, 1],
"names" : [
[ "0", "1", "2", "3", "4", "5", "6" ]
]
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

View file

@ -0,0 +1,29 @@
{
"projectileName" : "groundfirebomb",
"physics" : "grenade",
"bounces" : 0,
"timeToLive" : 5,
"image" : "groundfirebomb.png",
"animationCycle" : 5,
"lightColor" : [105, 64, 0],
"frameNumber" : 7,
"actionOnReap" : [
{
"action" : "projectile",
"type" : "groundfire",
"angle" : 0,
"inheritDamageFactor" : 0.5
},
{
"action" : "projectile",
"type" : "groundfire",
"angle" : 180,
"inheritDamageFactor" : 0.5
}
],
"power" : 50,
"damageType" : "NoDamage",
"damageKind" : "default",
"damagePoly" : [ [-6, 0], [-4, -4], [0, -6], [4, -4], [6, 0], [4, 4], [0, 6], [-4, 4] ],
"emitters" : [ "sparks" ]
}

View file

@ -0,0 +1,10 @@
{
"frameGrid" : {
"size" : [8, 72],
"dimensions" : [8, 1],
"names" : [
[ "0", "1", "2", "3", "4", "5", "6", "7" ]
]
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 812 B

View file

@ -0,0 +1,14 @@
{
"projectileName" : "groundfireburst",
"image" : "groundfireburst.png",
"animationCycle" : 0.2,
"frameNumber" : 8,
"speed" : 0,
"damagePoly" : [ [-4, 0], [4, 0], [0, 40] ],
"animationLoops" : false,
"piercing" : true,
"flippable" : true,
"damageTeam" : { "type" : "indiscriminate" },
"damageKind" : "default",
"lightColor" : [255, 220, 50]
}

View file

@ -0,0 +1,6 @@
{
"frameGrid" : {
"size" : [32, 8],
"dimensions" : [2, 1]
}
}

View file

@ -0,0 +1,3 @@
function init()
mcontroller.setRotation(0)
end

Binary file not shown.

After

Width:  |  Height:  |  Size: 339 B

View file

@ -0,0 +1,35 @@
{
"projectileName" : "platform",
"image" : "platform.png",
"animationCycle" : 0.25,
"physics" : "illusion",
"frameNumber" : 2,
"pointLight" : false,
"speed" : 10,
"power" : 0.0,
"bounces" : -1,
"timeToLive" : 10,
"orientationLocked" : true,
"physicsCollisions" : {
"platform" : {
"collision" : [
[-2, -0.5],
[2, -0.5],
[2, 0.5],
[-2, 0.5]
],
"collisionKind" : "platform"
}
},
"scripts" : [ "platform.lua" ],
"scriptDelta" : 0,
"damageTeam" : { "type" : "ghostly" },
"clientEntityMode" : "ClientSlaveOnly"
}

View file

@ -0,0 +1,10 @@
{
"frameGrid" : {
"size" : [17, 17],
"dimensions" : [3, 1],
"names" : [
[ "0", "1", "2" ]
]
}
}

View file

@ -0,0 +1,17 @@
require "/scripts/rails.lua"
function init()
local railConfig = config.getParameter("railConfig", {})
railConfig.speed = config.getParameter("speed")
self.railRider = Rails.createRider(railConfig)
self.railRider:init()
end
function update(dt)
self.railRider:update(dt)
end
function uninit()
self.railRider:uninit()
end

Binary file not shown.

After

Width:  |  Height:  |  Size: 675 B

View file

@ -0,0 +1,23 @@
{
"projectileName" : "railblade",
"image" : "railblade.png",
"physics" : "grenade",
"animationCycle" : 0.2,
"frameNumber" : 3,
"pointLight" : false,
"speed" : 30,
"power" : 10.0,
"damagePoly" : [[-8, 4], [-4, 8], [4, 8], [8, 4], [8, -4], [4, -8], [-4, -8], [-8, -4]],
"bounces" : 0,
"piercing" : true,
"timeToLive" : 10,
"orientationLocked" : true,
"scripts" : [ "railblade.lua" ],
"scriptDelta" : 2,
"clientEntityMode" : "ClientSlaveOnly"
}

View file

@ -0,0 +1,6 @@
{
"frameGrid" : {
"size" : [32, 8],
"dimensions" : [2, 1]
}
}

View file

@ -0,0 +1,23 @@
require "/scripts/rails.lua"
function init()
mcontroller.setRotation(0)
local railConfig = config.getParameter("railConfig", {})
railConfig.speed = config.getParameter("speed")
self.railRider = Rails.createRider(railConfig)
self.railRider:init()
end
function update(dt)
self.railRider:update(dt)
if self.railRider:onRail() then
projectile.setTimeToLive(5)
end
end
function uninit()
self.railRider:uninit()
end

Binary file not shown.

After

Width:  |  Height:  |  Size: 243 B

View file

@ -0,0 +1,42 @@
{
"projectileName" : "railplatform",
"image" : "railplatform.png",
"animationCycle" : 0.25,
"physics" : "grenade",
"frameNumber" : 2,
"pointLight" : false,
"speed" : 20,
"power" : 0.0,
"bounces" : 0,
"timeToLive" : 10,
"actionOnReap" : [
{
"action" : "config",
"file" : "/projectiles/explosions/smallregularexplosion/smallregularexplosion.config"
}
],
"orientationLocked" : true,
"physicsCollisions" : {
"platform" : {
"collision" : [
[-2, -0.5],
[2, -0.5],
[2, 0.5],
[-2, 0.5]
],
"collisionKind" : "platform"
}
},
"scripts" : [ "railplatform.lua" ],
"scriptDelta" : 2,
"damageTeam" : { "type" : "ghostly" },
"clientEntityMode" : "ClientSlaveOnly"
}