-- Arm Medium Tank (Stumpy)
local base, flare, turret = piece ("base", "flare", "turret")
-- constants
local SIG_AIM = 2
local RESTORE_DELAY = Spring.UnitScript.GetLongestReloadTime(unitID) * 2
-- includes
include "rockunit.lua"
include "smokeunit.lua"
function script.Create(unitID)
Hide(flare)
StartThread(SmokeUnit)
end
local function RestoreAfterDelay(unitID)
Sleep(RESTORE_DELAY)
Turn(turret, y_axis, 0, math.rad(90))
Turn(barrel, x_axis, 0, math.rad(50))
end
function script.AimWeapon(weaponID, heading, pitch)
Signal(SIG_AIM)
SetSignalMask(SIG_AIM)
Turn(turret, y_axis, heading, math.rad(90))
Turn(barrel, x_axis, -pitch, math.rad(50))
WaitForTurn(turret, y_axis)
WaitForTurn(barrel, x_axis)
StartThread(RestoreAfterDelay)
return true
end
function script.FireWeapon(weaponID)
Show(flare)
Move(barrel, z_axis, -2.4, 500)
Sleep(150)
Hide(flare)
WaitForMove(barrel, z_axis)
Move(barrel, z_axis, 0, 3)
end
function script.AimFromWeapon() return turret end
function script.QueryWeapon() return flare end
function script.Killed(recentDamage, maxHealth)
local severity = recentDamage / maxHealth * 100
Hide(flare)
if severity <= 25 then
Explode(barrel, math.bit_or({SFX.BITMAPONLY, SFX.BITMAP1}))
return 1
elseif severity <= 50 then
Explode(barrel, math.bit_or({SFX.FALL, SFX.BITMAP1}))
return 2
else
Explode(barrel, math.bit_or({SFX.FALL, SFX.SMOKE, SFX.FIRE, SFX.EXPLODE_ON_HIT, SFX.BITMAP1}))
return 3
end
end