mirror of
https://github.com/AquariaOSE/Aquaria.git
synced 2025-10-10 08:23:22 +00:00
initial commit. This is icculus version 5542b94cae02a6333845854bbbd1abe0a259f1a4
This commit is contained in:
commit
3096eaf5e2
2519 changed files with 816064 additions and 0 deletions
172
game_scripts/scripts/entities/gearcommon.lua
Normal file
172
game_scripts/scripts/entities/gearcommon.lua
Normal file
|
@ -0,0 +1,172 @@
|
|||
-- Copyright (C) 2007, 2010 - Bit-Blot
|
||||
--
|
||||
-- This file is part of Aquaria.
|
||||
--
|
||||
-- Aquaria is free software; you can redistribute it and/or
|
||||
-- modify it under the terms of the GNU General Public License
|
||||
-- as published by the Free Software Foundation; either version 2
|
||||
-- of the License, or (at your option) any later version.
|
||||
--
|
||||
-- This program is distributed in the hope that it will be useful,
|
||||
-- but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
--
|
||||
-- See the GNU General Public License for more details.
|
||||
--
|
||||
-- You should have received a copy of the GNU General Public License
|
||||
-- along with this program; if not, write to the Free Software
|
||||
-- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
|
||||
if not v then v = {} end
|
||||
if not AQUARIA_VERSION then dofile("scripts/entities/entityinclude.lua") end
|
||||
|
||||
v.rotSpd = 0.0
|
||||
v.n = 0
|
||||
v.gear = 0
|
||||
v.gearBack = 0
|
||||
v.actDelay = 0
|
||||
v.t = 15
|
||||
v.soundTimer =0
|
||||
|
||||
v.useSetRotSpd = 0
|
||||
|
||||
function v.commonInit(me, usrs)
|
||||
v.useSetRotSpd = usrs
|
||||
entity_setEntityType(me, ET_NEUTRAL)
|
||||
--entity_setTexture(me, "")
|
||||
entity_initSkeletal(me, "Gear")
|
||||
--entity_setWidth(me, 64)
|
||||
--entity_setHeight(me, 64)
|
||||
entity_setUpdateCull(me, -1)
|
||||
v.n = getNaija()
|
||||
|
||||
entity_setCollideRadius(me, 160)
|
||||
|
||||
v.gear = entity_getBoneByName(me, "Gear")
|
||||
v.gearBack = entity_getBoneByName(me, "GearBack")
|
||||
|
||||
entity_scale(me, 1.5, 1.5)
|
||||
|
||||
loadSound("GearTurn")
|
||||
loadSound("GearWaterLevel")
|
||||
|
||||
esetv(me, EV_BEASTBURST, 0)
|
||||
esetv(me, EV_LOOKAT, 0)
|
||||
end
|
||||
|
||||
function postInit(me)
|
||||
v.mult = 1
|
||||
local node = entity_getNearestNode(me, "FLIP")
|
||||
if node ~= 0 and node_isEntityIn(node, me) then
|
||||
v.useSetRotSpd = -v.useSetRotSpd
|
||||
end
|
||||
end
|
||||
|
||||
function enterState(me)
|
||||
end
|
||||
|
||||
function exitState(me)
|
||||
end
|
||||
|
||||
function activate(me)
|
||||
end
|
||||
|
||||
function songNote(me, note)
|
||||
end
|
||||
|
||||
function damage(me)
|
||||
return false
|
||||
end
|
||||
|
||||
local function doFunction(me)
|
||||
if v.actDelay == 0 then
|
||||
v.actDelay = v.t
|
||||
local node = entity_getNearestNode(me)
|
||||
if node ~= 0 and node_isEntityIn(node, me) then
|
||||
node_activate(node)
|
||||
end
|
||||
playSfx("GearWaterLevel")
|
||||
end
|
||||
end
|
||||
|
||||
function update(me, dt)
|
||||
local spinning = false
|
||||
if v.actDelay > 0 then
|
||||
v.actDelay = v.actDelay - dt
|
||||
if v.actDelay < 0 then
|
||||
v.actDelay = 0
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
if v.useSetRotSpd == 0 then
|
||||
if entity_isEntityInRange(me, v.n, 600) then
|
||||
if entity_isUnderWater(v.n) and avatar_isRolling() then
|
||||
v.rotSpd = v.rotSpd + 90*dt*avatar_getRollDirection()
|
||||
if v.rotSpd > 360 then
|
||||
v.rotSpd = 360
|
||||
elseif v.rotSpd < -360 then
|
||||
v.rotSpd = -360
|
||||
end
|
||||
v.spinning = true
|
||||
|
||||
end
|
||||
end
|
||||
else
|
||||
v.spinning = true
|
||||
v.rotSpd = v.useSetRotSpd
|
||||
end
|
||||
--debugLog(string.format("rotspd:%d", v.rotSpd))
|
||||
if v.rotSpd ~= 0 then
|
||||
|
||||
entity_rotate(me, entity_getRotation(me)+v.rotSpd*dt)
|
||||
--bone_rotate(gear, bone_getRotation(gear)+v.rotSpd*dt)
|
||||
bone_rotate(v.gearBack, bone_getRotation(v.gearBack)-v.rotSpd*2*dt)
|
||||
|
||||
if bone_getRotation(v.gear) > 360 then
|
||||
bone_rotate(v.gear, bone_getRotation(v.gear)-360)
|
||||
--entity_sound(me, "GearTurn")
|
||||
elseif bone_getRotation(v.gear) < -360 then
|
||||
bone_rotate(v.gear, bone_getRotation(v.gear)+360)
|
||||
--entity_sound(me, "GearTurn")
|
||||
end
|
||||
v.soundTimer = v.soundTimer + v.rotSpd*dt
|
||||
--debugLog(string.format("soundTimer: %f", v.soundTimer))
|
||||
local intv = 90
|
||||
if v.soundTimer > intv then
|
||||
v.soundTimer = 0
|
||||
entity_sound(me, "GearTurn")
|
||||
end
|
||||
if v.soundTimer < -intv then
|
||||
v.soundTimer = 0
|
||||
entity_sound(me, "GearTurn")
|
||||
end
|
||||
|
||||
if not spinning then
|
||||
local dir = 1
|
||||
if v.rotSpd > 0 then
|
||||
dir = -1
|
||||
end
|
||||
v.rotSpd = v.rotSpd + (30.0*dt*dir)
|
||||
if dir == 1 and v.rotSpd > 0 then
|
||||
v.rotSpd = 0
|
||||
elseif dir == -1 and v.rotSpd < 0 then
|
||||
v.rotSpd = 0
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
local minSpd = 300
|
||||
if v.rotSpd > minSpd or v.rotSpd < -minSpd then
|
||||
doFunction(me)
|
||||
end
|
||||
|
||||
if entity_touchAvatarDamage(me, entity_getCollideRadius(me), 0) then
|
||||
if avatar_isLockable() and entity_setBoneLock(v.n, me) then
|
||||
else
|
||||
local x, y = entity_getVectorToEntity(me, v.n, 8000)
|
||||
entity_addVel(v.n, x, y)
|
||||
end
|
||||
end
|
||||
entity_handleShotCollisions(me)
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue