-
Notifications
You must be signed in to change notification settings - Fork 217
/
Copy pathspiderantiheavy.lua
189 lines (147 loc) · 4.9 KB
/
spiderantiheavy.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
include "constants.lua"
local base = piece 'base'
local turret = piece 'turret'
local barrel = piece 'barrel'
local flare = piece 'flare'
local lfrontleg = piece 'lfrontleg'
local lfrontleg1 = piece 'lfrontleg_1'
local rfrontleg = piece 'rfrontleg'
local rfrontleg1 = piece 'rfrontleg_1'
local laftleg = piece 'laftleg'
local laftleg1 = piece 'laftleg_1'
local raftleg = piece 'raftleg'
local raftleg1 = piece 'raftleg_1'
local SIG_Walk = 1
local SIG_Aim = 2
--constants
local sa = math.rad(-10)
local ma = math.rad(40)
local pause = 280
local forward = 3.6
local backward = 3.5
local up = 2.2
local LOWER_LEG_ANGLE = math.rad(14)
local LOWER_LEG_SPEED = 3
local smokePiece = {base, barrel}
local function RestoreAfterDelay()
Sleep(2750)
Turn(turret, y_axis, 0, math.rad(90))
Turn(barrel, x_axis, 0, math.rad(90))
end
local function Walk()
Signal(SIG_Walk)
SetSignalMask(SIG_Walk)
while (true) do
Turn(lfrontleg, y_axis, 1.5*ma, forward) -- right front forward
Turn(lfrontleg, z_axis, -ma, up) -- right front up
Turn(lfrontleg1, z_axis, -LOWER_LEG_ANGLE, LOWER_LEG_SPEED)
Turn(laftleg, y_axis, -1.5*ma, backward) -- right back backward
Turn(laftleg, z_axis, 0, 4*up) -- right back down
Turn(laftleg1, z_axis, 0, LOWER_LEG_SPEED)
Turn(rfrontleg, y_axis, sa, backward) -- left front backward
Turn(rfrontleg, z_axis, 0, 4*up) -- left front down
Turn(rfrontleg1, z_axis, -LOWER_LEG_ANGLE/2, LOWER_LEG_SPEED)
Turn(raftleg, y_axis, -sa, forward) -- left back forward
Turn(raftleg, z_axis, ma, up) -- left back up
Turn(raftleg1, z_axis, LOWER_LEG_ANGLE, LOWER_LEG_SPEED)
Sleep(pause)
Turn(lfrontleg, y_axis, -sa, backward) -- right front backward
Turn(lfrontleg, z_axis, 0, 4*up) -- right front down
Turn(lfrontleg1, z_axis, LOWER_LEG_ANGLE/2, LOWER_LEG_SPEED)
Turn(laftleg, y_axis, sa, forward) -- right back forward
Turn(laftleg, z_axis, -ma, up) -- right back up
Turn(laftleg1, z_axis, -LOWER_LEG_ANGLE, LOWER_LEG_SPEED)
Turn(rfrontleg, y_axis, -1.5*ma, forward) -- left front forward
Turn(rfrontleg, z_axis, ma, up) -- left front up
Turn(rfrontleg1, z_axis, LOWER_LEG_ANGLE, LOWER_LEG_SPEED)
Turn(raftleg, y_axis, 1.5*ma, backward) -- left back backward
Turn(raftleg, z_axis, 0, 4*up) -- left back down
Turn(raftleg1, z_axis, LOWER_LEG_ANGLE, LOWER_LEG_SPEED)
Sleep(pause)
end
end
local function StopWalk()
Signal(SIG_Walk)
SetSignalMask(SIG_Walk)
Move(base, y_axis, 0, 4*up)
Turn(lfrontleg, y_axis, 0) -- right front forward
Turn(lfrontleg, z_axis, 0, up)
Turn(lfrontleg1, z_axis, 0, up)
Turn(laftleg, y_axis, 0) -- right back backward
Turn(laftleg, z_axis, 0, up)
Turn(laftleg1, z_axis, 0, up)
Turn(rfrontleg, y_axis, 0) -- left front backward
Turn(rfrontleg, z_axis, 0, up)
Turn(rfrontleg1, z_axis, 0, up)
Turn(raftleg, y_axis, 0) -- left back forward
Turn(raftleg, z_axis, 0, up)
Turn(raftleg1, z_axis, 0, up)
Turn(lfrontleg, y_axis, math.rad(45), forward)
Turn(rfrontleg, y_axis, math.rad(-45), forward)
Turn(laftleg, y_axis, math.rad(-45), forward)
Turn(raftleg, y_axis, math.rad(45), forward)
end
function script.StartMoving()
StartThread(Walk)
end
function script.StopMoving()
StartThread(StopWalk)
end
function script.Create()
Turn(lfrontleg, y_axis, math.rad(45))
Turn(rfrontleg, y_axis, math.rad(-45))
Turn(laftleg, y_axis, math.rad(-45))
Turn(raftleg, y_axis, math.rad(45))
StartThread(GG.Script.SmokeUnit, unitID, smokePiece)
end
function script.AimWeapon(num, heading, pitch)
Signal(SIG_Aim)
SetSignalMask(SIG_Aim)
Turn(turret, y_axis, heading, math.rad(360)) -- left-right
Turn(barrel, x_axis, -pitch, math.rad(270)) --up-down
WaitForTurn(turret, y_axis)
WaitForTurn(barrel, x_axis)
StartThread(RestoreAfterDelay)
return true
end
function script.AimFromWeapon(num)
return turret
end
function script.QueryWeapon(num)
return flare
end
function script.BlockShot(num, targetID)
if (targetID and GG.DontFireRadar_CheckBlock(unitID, targetID)) then
return true
end
-- Hax to refresh the target's quadfield presence, since otherwise
-- the lightning bolt can fail to connect due to stale quad cache.
-- See https://springrts.com/mantis/view.php?id=6421
if targetID and not Spring.MoveCtrl.GetTag(targetID) then
local bx, by, bz = Spring.GetUnitPosition(targetID)
if bx then
local height = Spring.GetGroundHeight(bx, bz)
if math.abs(height - by) < 0.01 then
Spring.SetUnitPosition(targetID, bx, bz)
elseif by < 0.1 and by > -0.01 then
Spring.SetUnitPosition(targetID, bx, bz, true)
end
end
end
return false
end
function script.Killed(recentDamage, maxHealth)
local severity = recentDamage/maxHealth
if severity <= .25 then
Explode(base, SFX.NONE)
return 1
elseif severity <= .50 then
Explode(base, SFX.NONE)
Explode(barrel, SFX.FALL + SFX.SMOKE)
return 1
else
Explode(base, SFX.SHATTER)
Explode(barrel, SFX.FALL + SFX.SMOKE + SFX.FIRE + SFX.EXPLODE)
return 2
end
end