Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- -- 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
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement