v1.4.4
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"frameGrid" : {
|
||||
"size" : [19, 19],
|
||||
"dimensions" : [1, 1],
|
||||
|
||||
"names" : [
|
||||
[ "0" ]
|
||||
]
|
||||
}
|
||||
}
|
102
assets/devel/projectiles/activeitems/chainball/chainball.lua
Normal 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
|
BIN
assets/devel/projectiles/activeitems/chainball/chainball.png
Normal file
After Width: | Height: | Size: 266 B |
|
@ -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" ]
|
||||
}
|
10
assets/devel/projectiles/activeitems/drone/drone.frames
Normal file
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"frameGrid" : {
|
||||
"size" : [12, 12],
|
||||
"dimensions" : [4, 1],
|
||||
|
||||
"names" : [
|
||||
[ "0", "1", "2", "3" ]
|
||||
]
|
||||
}
|
||||
}
|
22
assets/devel/projectiles/activeitems/drone/drone.lua
Normal 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
|
BIN
assets/devel/projectiles/activeitems/drone/drone.png
Normal file
After Width: | Height: | Size: 448 B |
25
assets/devel/projectiles/activeitems/drone/drone.projectile
Normal 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
|
||||
}
|
BIN
assets/devel/projectiles/activeitems/vacuum/icon.png
Normal file
After Width: | Height: | Size: 262 B |
10
assets/devel/projectiles/activeitems/vacuum/vacuum.frames
Normal file
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"frameGrid" : {
|
||||
"size" : [8, 16],
|
||||
"dimensions" : [6, 1],
|
||||
|
||||
"names" : [
|
||||
[ "0", "1", "2", "3", "4", "5" ]
|
||||
]
|
||||
}
|
||||
}
|
BIN
assets/devel/projectiles/activeitems/vacuum/vacuum.png
Normal file
After Width: | Height: | Size: 205 B |
|
@ -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"
|
||||
}
|
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"frameGrid" : {
|
||||
"size" : [40, 19],
|
||||
"dimensions" : [3, 1],
|
||||
|
||||
"names" : [
|
||||
[ "0", "1", "2" ]
|
||||
]
|
||||
}
|
||||
}
|
After Width: | Height: | Size: 585 B |
|
@ -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
|
||||
}
|
6
assets/devel/projectiles/torpedo/torpedo.frames
Normal file
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"frameGrid" : {
|
||||
"size" : [48, 8],
|
||||
"dimensions" : [1, 4]
|
||||
}
|
||||
}
|
BIN
assets/devel/projectiles/torpedo/torpedo.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
31
assets/devel/projectiles/torpedo/torpedo.projectile
Normal 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"
|
||||
}
|
|
@ -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"
|
||||
}
|
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"frameGrid" : {
|
||||
"size" : [8, 8],
|
||||
"dimensions" : [1, 1],
|
||||
|
||||
"names" : [
|
||||
[ "0" ]
|
||||
]
|
||||
}
|
||||
}
|
After Width: | Height: | Size: 2.7 KiB |
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"frameGrid" : {
|
||||
"size" : [16, 9],
|
||||
"dimensions" : [7, 1],
|
||||
|
||||
"names" : [
|
||||
[ "0", "1", "2", "3", "4", "5", "6" ]
|
||||
]
|
||||
}
|
||||
}
|
After Width: | Height: | Size: 1.3 KiB |
|
@ -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" ]
|
||||
}
|
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"frameGrid" : {
|
||||
"size" : [8, 72],
|
||||
"dimensions" : [8, 1],
|
||||
|
||||
"names" : [
|
||||
[ "0", "1", "2", "3", "4", "5", "6", "7" ]
|
||||
]
|
||||
}
|
||||
}
|
After Width: | Height: | Size: 812 B |
|
@ -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]
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"frameGrid" : {
|
||||
"size" : [32, 8],
|
||||
"dimensions" : [2, 1]
|
||||
}
|
||||
}
|
3
assets/devel/projectiles/unsorted/platform/platform.lua
Normal file
|
@ -0,0 +1,3 @@
|
|||
function init()
|
||||
mcontroller.setRotation(0)
|
||||
end
|
BIN
assets/devel/projectiles/unsorted/platform/platform.png
Normal file
After Width: | Height: | Size: 339 B |
|
@ -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"
|
||||
}
|
10
assets/devel/projectiles/unsorted/railblade/railblade.frames
Normal file
|
@ -0,0 +1,10 @@
|
|||
{
|
||||
"frameGrid" : {
|
||||
"size" : [17, 17],
|
||||
"dimensions" : [3, 1],
|
||||
|
||||
"names" : [
|
||||
[ "0", "1", "2" ]
|
||||
]
|
||||
}
|
||||
}
|
17
assets/devel/projectiles/unsorted/railblade/railblade.lua
Normal 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
|
BIN
assets/devel/projectiles/unsorted/railblade/railblade.png
Normal file
After Width: | Height: | Size: 675 B |
|
@ -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"
|
||||
}
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"frameGrid" : {
|
||||
"size" : [32, 8],
|
||||
"dimensions" : [2, 1]
|
||||
}
|
||||
}
|
|
@ -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
|
BIN
assets/devel/projectiles/unsorted/railplatform/railplatform.png
Normal file
After Width: | Height: | Size: 243 B |
|
@ -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"
|
||||
}
|