|
1 |
|
2 loadfile(GetDataPath() .. "Scripts/Animate.lua")() |
|
3 |
|
4 -----------------------------Constants--------------------------------- |
|
5 choiceAccept = 1 |
|
6 choiceRefuse = 2 |
|
7 choiceAttack = 3 |
|
8 |
|
9 leaksPos = {2067, 509} |
|
10 densePos = {1882, 503} |
|
11 waterPos = {3100, 930} |
|
12 buffaloPos = {2609, 494} |
|
13 chiefPos = {2538, 617} |
|
14 cannibalPos = {{2219, 1339}, {2322, 1357}, {805, 784}, {3876, 1048}, |
|
15 {1101, 916}, {2854, 1408}, {1974, 486}, {1103, 961}} |
|
16 |
|
17 HogNames = {"Olive", "Brain Stu", "Brainila", "Salivaslurper", |
|
18 "Spleenlover", "Tighlicker", "NomNom", "Mindy"} |
|
19 |
|
20 natives = {} |
|
21 -----------------------------Variables--------------------------------- |
|
22 cannibals = {} |
|
23 cannibalDead = {} |
|
24 cannibalHidden = {} |
|
25 cratesSpawned = {} |
|
26 healthCratesSpawned = {} |
|
27 |
|
28 denseDead = false |
|
29 leaksDead = false |
|
30 waterDead = false |
|
31 buffaloDead = false |
|
32 chiefDead = false |
|
33 nativesDead = {} |
|
34 |
|
35 m2Choice = 0 |
|
36 m2DenseDead = 0 |
|
37 |
|
38 startAnim = {} |
|
39 wave2Anim = {} |
|
40 finalAnim = {} |
|
41 --------------------------Anim skip functions-------------------------- |
|
42 function AfterStartAnim() |
|
43 local goal = "Defeat the cannibals!|" |
|
44 local chiefgoal = "Try to protect the chief! Unlike your other hogs, he won't return on future missions if he dies." |
|
45 TurnTimeLeft = TurnTime |
|
46 ShowMission("United We Stand", "Invasion", goal .. chiefgoal, 1, 6000) |
|
47 end |
|
48 |
|
49 function SkipStartAnim() |
|
50 SetGearPosition(water, 2467, 754) |
|
51 if cratesSpawned[1] ~= true then |
|
52 SpawnCrates(1) |
|
53 end |
|
54 if healthCratesSpawned[1] ~= true then |
|
55 SpawnHealthCrates(1) |
|
56 end |
|
57 if cannibalHidden[1] == true then |
|
58 RestoreWave(1) |
|
59 end |
|
60 AnimSwitchHog(leaks) |
|
61 end |
|
62 |
|
63 function SkipWave2Anim() |
|
64 if cratesSpawned[2] ~= true then |
|
65 SpawnCrates(2) |
|
66 end |
|
67 if healthCratesSpawned[2] ~= true then |
|
68 SpawnHealthCrates(2) |
|
69 end |
|
70 if cannibalHidden[5] == true then |
|
71 RestoreWave(2) |
|
72 end |
|
73 AnimSwitchHog(cannibals[5]) |
|
74 end |
|
75 |
|
76 function AfterWave2Anim() |
|
77 TurnTimeLeft = 0 |
|
78 end |
|
79 |
|
80 function AfterFinalAnim() |
|
81 if chiefDead == true then |
|
82 SaveCampaignVar("M4ChiefDead", "1") |
|
83 else |
|
84 SaveCampaignVar("M4ChiefDead", "0") |
|
85 end |
|
86 SaveCampaignVar("Progress", "4") |
|
87 ParseCommand("teamgone 011101001") |
|
88 TurnTimeLeft = 0 |
|
89 end |
|
90 -----------------------------Animations-------------------------------- |
|
91 |
|
92 function EmitDenseClouds(anim, dir) |
|
93 local dif |
|
94 if dir == "left" then |
|
95 dif = 10 |
|
96 else |
|
97 dif = -10 |
|
98 end |
|
99 AnimInsertStepNext({func = AnimVisualGear, args = {dense, GetX(dense) + dif, GetY(dense) + dif, vgtSteam, 0, true}, swh = false}) |
|
100 AnimInsertStepNext({func = AnimVisualGear, args = {dense, GetX(dense) + dif, GetY(dense) + dif, vgtSteam, 0, true}, swh = false}) |
|
101 AnimInsertStepNext({func = AnimVisualGear, args = {dense, GetX(dense) + dif, GetY(dense) + dif, vgtSteam, 0, true}, swh = false}) |
|
102 AnimInsertStepNext({func = AnimWait, args = {dense, 800}}) |
|
103 AnimInsertStepNext({func = AnimVisualGear, args = {dense, GetX(dense) + dif, GetY(dense) + dif, vgtSteam, 0, true}, swh = false}) |
|
104 AnimInsertStepNext({func = AnimVisualGear, args = {dense, GetX(dense) + dif, GetY(dense) + dif, vgtSteam, 0, true}, swh = false}) |
|
105 AnimInsertStepNext({func = AnimWait, args = {dense, 800}}) |
|
106 AnimInsertStepNext({func = AnimVisualGear, args = {dense, GetX(dense) + dif, GetY(dense) + dif, vgtSteam, 0, true}, swh = false}) |
|
107 end |
|
108 |
|
109 function AnimationSetup() |
|
110 table.insert(startAnim, {func = AnimWait, args = {leaks, 4000}}) |
|
111 table.insert(startAnim, {func = AnimCaption, args = {leaks, "Back in the village, after telling the villagers about the threat...", 5000}}) |
|
112 table.insert(startAnim, {func = AnimCaption, args = {leaks, "Their buildings were very primitive back then, even for an uncivilised island.", 7000}}) |
|
113 table.insert(startAnim, {func = AnimSay, args = {chief, "Young one, you are telling us that they can instantly change location without a shaman?", SAY_SAY, 8000}}) |
|
114 table.insert(startAnim, {func = AnimSay, args = {chief, "That is, indeed, very weird...", SAY_SAY, 3500}}) |
|
115 table.insert(startAnim, {func = AnimSay, args = {buffalo, "If they try coming here, they can have a taste of my delicious knuckles!", SAY_SHOUT, 8000}}) |
|
116 table.insert(startAnim, {func = AnimSay, args = {buffalo, "Haha!", SAY_SHOUT, 2000}}) |
|
117 if denseDead == false then |
|
118 table.insert(startAnim, {func = AnimSay, args = {dense, "I'm not sure about that!", SAY_SAY, 3400}}) |
|
119 table.insert(startAnim, {func = AnimSay, args = {dense, "They have weapons we've never seen before!", SAY_SAY, 5000}}) |
|
120 table.insert(startAnim, {func = AnimSay, args = {dense, "Luckily, I've managed to snatch some of them.", SAY_SAY, 5000}}) |
|
121 table.insert(startAnim, {func = AnimCustomFunction, args = {dense, SpawnCrates, {1}}}) |
|
122 table.insert(startAnim, {func = AnimSay, args = {dense, "Oops...I dropped them.", SAY_SAY, 3000}}) |
|
123 else |
|
124 table.insert(startAnim, {func = AnimSay, args = {leaks, "I'm not sure about that!", SAY_SAY, 3400}}) |
|
125 table.insert(startAnim, {func = AnimSay, args = {leaks, "They have weapons we've never seen before!", SAY_SAY, 5000}}) |
|
126 table.insert(startAnim, {func = AnimCustomFunction, args = {leaks, SpawnCrates, {1}}}) |
|
127 table.insert(startAnim, {func = AnimWait, args = {leaks, 1000}}) |
|
128 table.insert(startAnim, {func = AnimSay, args = {leaks, "They keep appearing like this. It's weird!", SAY_SAY, 5000}}) |
|
129 end |
|
130 table.insert(startAnim, {func = AnimSay, args = {chief, "Did anyone follow you?", SAY_SAY, 3000}}) |
|
131 table.insert(startAnim, {func = AnimSay, args = {leaks, "No, we made sure of that!", SAY_SAY, 3500}}) |
|
132 table.insert(startAnim, {func = AnimCustomFunction, args = {leaks, SpawnHealthCrates, {1}}}) |
|
133 table.insert(startAnim, {func = AnimWait, args = {leaks, 1000}}) |
|
134 table.insert(startAnim, {func = AnimSay, args = {chief, "First aid kits?!", SAY_SAY, 3000}}) |
|
135 table.insert(startAnim, {func = AnimSay, args = {leaks, "I've seen this before. They just appear out of thin air.", SAY_SAY, 7000}}) |
|
136 table.insert(startAnim, {func = AnimMove, args = {water, "left", 3000, 0}}) |
|
137 table.insert(startAnim, {func = AnimJump, args = {water, "long"}}) |
|
138 table.insert(startAnim, {func = AnimMove, args = {water, "left", 2655, 0}}) |
|
139 table.insert(startAnim, {func = AnimTurn, args = {water, "Right"}}) |
|
140 table.insert(startAnim, {func = AnimJump, args = {water, "back"}}) |
|
141 table.insert(startAnim, {func = AnimJump, args = {water, "back"}}) |
|
142 table.insert(startAnim, {func = AnimTurn, args = {water, "Left"}}) |
|
143 table.insert(startAnim, {func = AnimMove, args = {water, "left", 2467, 754}}) |
|
144 table.insert(startAnim, {func = AnimSay, args = {water, "Hey guys!", SAY_SAY, 2500}}) |
|
145 table.insert(startAnim, {func = AnimTurn, args = {chief, "Right"}}) |
|
146 table.insert(startAnim, {func = AnimSay, args = {chief, "...", SAY_THINK, 1500}}) |
|
147 table.insert(startAnim, {func = AnimSay, args = {chief, "Where have you been?", SAY_SAY, 4000}}) |
|
148 table.insert(startAnim, {func = AnimSay, args = {water, "Just on a walk.", SAY_SAY, 3000}}) |
|
149 table.insert(startAnim, {func = AnimSay, args = {chief, "You have chosen the perfect moment to leave.", SAY_SAY, 6000}}) |
|
150 table.insert(startAnim, {func = AnimCustomFunction, args = {chief, RestoreWave, {1}}}) |
|
151 for i = 1, 4 do |
|
152 table.insert(startAnim, {func = AnimOutOfNowhere, args = {cannibals[i], unpack(cannibalPos[i])}}) |
|
153 end |
|
154 table.insert(startAnim, {func = AnimWait, args = {chief, 1500}}) |
|
155 table.insert(startAnim, {func = AnimSay, args = {leaks, "HOW DO THEY KNOW WHERE WE ARE???", SAY_SHOUT, 5000}}) |
|
156 table.insert(startAnim, {func = AnimSay, args = {chief, "We have to protect the village!", SAY_SAY, 5000}}) |
|
157 table.insert(startAnim, {func = AnimSwitchHog, args = {leaks}}) |
|
158 AddSkipFunction(startAnim, SkipStartAnim, {}) |
|
159 |
|
160 table.insert(wave2Anim, {func = AnimCustomFunction, args = {leaks, RestoreWave, {2}}, swh = false}) |
|
161 for i = 5, 8 do |
|
162 table.insert(wave2Anim, {func = AnimOutOfNowhere, args = {cannibals[i], unpack(cannibalPos[i])}}) |
|
163 end |
|
164 table.insert(wave2Anim, {func = AnimCustomFunction, args = {leaks, SpawnCrates, {2}}, swh = false}) |
|
165 table.insert(wave2Anim, {func = AnimCustomFunction, args = {leaks, SpawnHealthCrates, {2}}, swh = false}) |
|
166 AddSkipFunction(wave2Anim, SkipWave2Anim, {}) |
|
167 end |
|
168 |
|
169 function SetupFinalAnim() |
|
170 local found = 0 |
|
171 local hogs = {} |
|
172 local i = 1 |
|
173 if nativesNum >= 2 then |
|
174 while found < 2 do |
|
175 if nativesDead[i] ~= true then |
|
176 found = found + 1 |
|
177 hogs[found] = natives[i] |
|
178 end |
|
179 i = i + 1 |
|
180 end |
|
181 if chiefDead ~= true then |
|
182 hogs[2] = chief |
|
183 end |
|
184 table.insert(finalAnim, {func = AnimCustomFunction, args = {hogs[1], CondNeedToTurn, {hogs[1], hogs[2]}}}) |
|
185 table.insert(finalAnim, {func = AnimSay, args = {hogs[1], "We can't hold them up much longer!", SAY_SAY, 5000}}) |
|
186 table.insert(finalAnim, {func = AnimSay, args = {hogs[1], "We need to move!", SAY_SAY, 3000}}) |
|
187 table.insert(finalAnim, {func = AnimSay, args = {hogs[2], "But where can we go?", SAY_SAY, 3000}}) |
|
188 table.insert(finalAnim, {func = AnimSay, args = {hogs[1], "To the caves...", SAY_SAY, 2500}}) |
|
189 table.insert(finalAnim, {func = AnimSay, args = {hogs[2], "Good idea, they'll never find us there!", SAY_SAY, 5000}}) |
|
190 else |
|
191 for i = 1, 5 do |
|
192 if nativesDead[i] ~= true then |
|
193 hogs[1] = natives[i] |
|
194 end |
|
195 end |
|
196 table.insert(finalAnim, {func = AnimSay, args = {hogs[1], "I need to move the tribe!", SAY_THINK, 4000}}) |
|
197 table.insert(finalAnim, {func = AnimSay, args = {hogs[1], "The caves are well hidden, they won't find us there!", SAY_THINK, 7000}}) |
|
198 end |
|
199 end |
|
200 -----------------------------Misc-------------------------------------- |
|
201 function RestoreWave(index) |
|
202 for i = (index - 1) * 4 + 1, index * 4 do |
|
203 RestoreHog(cannibals[i]) |
|
204 cannibalHidden[i] = false |
|
205 end |
|
206 end |
|
207 |
|
208 function GetVariables() |
|
209 m2DenseDead = tonumber(GetCampaignVar("M2DenseDead")) |
|
210 if m2DenseDead == 1 then |
|
211 denseDead = true |
|
212 end |
|
213 m2Choice = tonumber(GetCampaignVar("M2Choice")) |
|
214 end |
|
215 |
|
216 function SetupPlace() |
|
217 if m2DenseDead == true then |
|
218 DeleteGear(dense) |
|
219 end |
|
220 for i = 1, 8 do |
|
221 HideHog(cannibals[i]) |
|
222 cannibalHidden[i] = true |
|
223 end |
|
224 HideHog(cyborg) |
|
225 end |
|
226 |
|
227 function SetupEvents() |
|
228 AddEvent(CheckWaveDead, {1}, DoWaveDead, {1}, 0) |
|
229 AddEvent(CheckWaveDead, {2}, DoWaveDead, {2}, 0) |
|
230 end |
|
231 |
|
232 function SetupAmmo() |
|
233 AddAmmo(cannibals[1], amGrenade, 4) |
|
234 AddAmmo(cannibals[1], amBazooka, 4) |
|
235 AddAmmo(cannibals[1], amShotgun, 4) |
|
236 AddAmmo(cannibals[1], amMine, 2) |
|
237 AddAmmo(cannibals[2], amGrenade, 4) |
|
238 AddAmmo(cannibals[2], amBazooka, 4) |
|
239 AddAmmo(cannibals[2], amShotgun, 4) |
|
240 AddAmmo(cannibals[2], amMine, 2) |
|
241 AddAmmo(cannibals[2], amMolotov, 2) |
|
242 AddAmmo(cannibals[2], amFlamethrower, 3) |
|
243 end |
|
244 |
|
245 function AddHogs() |
|
246 AddTeam("Natives", 2567585, "Bone", "Island", "HillBilly", "cm_birdy") |
|
247 leaks = AddHog("Leaks A Lot", 0, 100, "Rambo") |
|
248 dense = AddHog("Dense Cloud", 0, 100, "RobinHood") |
|
249 water = AddHog("Fiery Water", 0, 100, "pirate_jack") |
|
250 buffalo = AddHog("Raging Buffalo", 0, 100, "zoo_Bunny") |
|
251 chief = AddHog("Righteous Beard", 0, 100, "IndianChief") |
|
252 natives = {leaks, dense, water, buffalo, chief} |
|
253 nativesNum = 5 |
|
254 |
|
255 AddTeam("Light Cannfantry", 14483456, "Skull", "Island", "Pirate", "cm_vampire") |
|
256 for i = 1, 4 do |
|
257 cannibals[i] = AddHog(HogNames[i], 3, 70, "Zombi") |
|
258 end |
|
259 |
|
260 AddTeam("Heavy Cannfantry", 14483456, "Skull", "Island", "Pirate", "cm_vampire") |
|
261 for i = 5, 8 do |
|
262 cannibals[i] = AddHog(HogNames[i], 2, 100, "vampirichog") |
|
263 end |
|
264 |
|
265 AddTeam("011101001", 14483456, "ring", "UFO", "Robot", "cm_star") |
|
266 cyborg = AddHog("Unit 334a$7%;.*", 0, 200, "cyborg1") |
|
267 |
|
268 SetGearPosition(leaks, unpack(leaksPos)) |
|
269 SetGearPosition(dense, unpack(densePos)) |
|
270 SetGearPosition(water, unpack(waterPos)) |
|
271 HogTurnLeft(water, true) |
|
272 SetGearPosition(buffalo, unpack(buffaloPos)) |
|
273 HogTurnLeft(buffalo, true) |
|
274 SetGearPosition(chief, unpack(chiefPos)) |
|
275 HogTurnLeft(chief, true) |
|
276 SetGearPosition(cyborg, 0, 0) |
|
277 for i = 1, 8 do |
|
278 SetGearPosition(cannibals[i], unpack(cannibalPos[i])) |
|
279 end |
|
280 end |
|
281 |
|
282 function CondNeedToTurn(hog1, hog2) |
|
283 xl, xd = GetX(hog1), GetX(hog2) |
|
284 if xl > xd then |
|
285 AnimInsertStepNext({func = AnimTurn, args = {hog1, "Left"}}) |
|
286 AnimInsertStepNext({func = AnimTurn, args = {hog2, "Right"}}) |
|
287 elseif xl < xd then |
|
288 AnimInsertStepNext({func = AnimTurn, args = {hog2, "Left"}}) |
|
289 AnimInsertStepNext({func = AnimTurn, args = {hog1, "Right"}}) |
|
290 end |
|
291 end |
|
292 |
|
293 function SpawnHealthCrates(index) |
|
294 SetHealth(SpawnHealthCrate(0, 0), 25) |
|
295 SetHealth(SpawnHealthCrate(0, 0), 25) |
|
296 SetHealth(SpawnHealthCrate(0, 0), 25) |
|
297 healthCratesSpawned[index] = true |
|
298 end |
|
299 |
|
300 function SpawnCrates(index) |
|
301 if index == 1 then |
|
302 SpawnAmmoCrate(1943, 408, amBazooka) |
|
303 SpawnAmmoCrate(1981, 464, amGrenade) |
|
304 SpawnAmmoCrate(1957, 459, amShotgun) |
|
305 SpawnAmmoCrate(1902, 450, amDynamite) |
|
306 SpawnUtilityCrate(1982, 405, amPickHammer) |
|
307 SpawnUtilityCrate(2028, 455, amRope) |
|
308 SpawnUtilityCrate(2025, 464, amTeleport) |
|
309 else |
|
310 SpawnUtilityCrate(1982, 405, amBlowTorch) |
|
311 SpawnAmmoCrate(2171, 428, amMolotov) |
|
312 SpawnAmmoCrate(2364, 346, amFlamethrower) |
|
313 SpawnAmmoCrate(2521, 303, amBazooka) |
|
314 SpawnAmmoCrate(2223, 967, amGrenade) |
|
315 SpawnAmmoCrate(1437, 371, amShotgun) |
|
316 end |
|
317 cratesSpawned[index] = true |
|
318 end |
|
319 |
|
320 -----------------------------Events------------------------------------ |
|
321 |
|
322 function CheckWaveDead(index) |
|
323 for i = (index - 1) * 4 + 1, index * 4 do |
|
324 if cannibalDead[i] ~= true then |
|
325 return false |
|
326 end |
|
327 end |
|
328 return true |
|
329 end |
|
330 |
|
331 function DoWaveDead(index) |
|
332 if index == 1 then |
|
333 AddAnim(wave2Anim) |
|
334 AddFunction({func = AfterWave2Anim, args = {}}) |
|
335 elseif index == 2 then |
|
336 SetupFinalAnim() |
|
337 AddAnim(finalAnim) |
|
338 AddFunction({func = AfterFinalAnim, args = {}}) |
|
339 end |
|
340 end |
|
341 |
|
342 |
|
343 -----------------------------Main Functions---------------------------- |
|
344 |
|
345 function onGameInit() |
|
346 Seed = 0 |
|
347 GameFlags = 0 |
|
348 TurnTime = 60000 |
|
349 CaseFreq = 0 |
|
350 MinesNum = 0 |
|
351 MinesTime = 3000 |
|
352 Explosives = 2 |
|
353 Delay = 10 |
|
354 Map = "Hogville" |
|
355 Theme = "Nature" |
|
356 SuddenDeathTurns = 3000 |
|
357 |
|
358 AddHogs() |
|
359 AnimInit() |
|
360 end |
|
361 |
|
362 function onGameStart() |
|
363 GetVariables() |
|
364 SetupAmmo() |
|
365 SetupPlace() |
|
366 AnimationSetup() |
|
367 SetupEvents() |
|
368 AddAnim(startAnim) |
|
369 AddFunction({func = AfterStartAnim, args = {}}) |
|
370 end |
|
371 |
|
372 function onGameTick() |
|
373 AnimUnWait() |
|
374 if ShowAnimation() == false then |
|
375 return |
|
376 end |
|
377 ExecuteAfterAnimations() |
|
378 CheckEvents() |
|
379 end |
|
380 |
|
381 function onGearDelete(gear) |
|
382 if gear == dense then |
|
383 denseDead = true |
|
384 nativesNum = nativesNum - 1 |
|
385 nativesDead[2] = true |
|
386 elseif gear == leaks then |
|
387 leaksDead = true |
|
388 nativesNum = nativesNum - 1 |
|
389 nativesDead[1] = true |
|
390 elseif gear == chief then |
|
391 chiefDead = true |
|
392 nativesNum = nativesNum - 1 |
|
393 nativesDead[5] = true |
|
394 elseif gear == water then |
|
395 waterDead = true |
|
396 nativesNum = nativesNum - 1 |
|
397 nativesDead[3] = true |
|
398 elseif gear == buffalo then |
|
399 buffaloDead = true |
|
400 nativesNum = nativesNum - 1 |
|
401 nativesDead[4] = true |
|
402 else |
|
403 for i = 1, 8 do |
|
404 if gear == cannibals[i] then |
|
405 cannibalDead[i] = true |
|
406 end |
|
407 end |
|
408 end |
|
409 end |
|
410 |
|
411 function onGearAdd(gear) |
|
412 end |
|
413 |
|
414 function onAmmoStoreInit() |
|
415 SetAmmo(amDEagle, 9, 0, 0, 0) |
|
416 SetAmmo(amSniperRifle, 9, 0, 0, 0) |
|
417 SetAmmo(amFirePunch, 9, 0, 0, 0) |
|
418 SetAmmo(amWhip, 9, 0, 0, 0) |
|
419 SetAmmo(amBaseballBat, 9, 0, 0, 0) |
|
420 SetAmmo(amHammer, 9, 0, 0, 0) |
|
421 SetAmmo(amLandGun, 9, 0, 0, 0) |
|
422 SetAmmo(amSnowball, 9, 0, 0, 0) |
|
423 SetAmmo(amGirder, 4, 0, 0, 2) |
|
424 SetAmmo(amParachute, 4, 0, 0, 2) |
|
425 SetAmmo(amSwitch, 8, 0, 0, 2) |
|
426 SetAmmo(amSkip, 9, 0, 0, 0) |
|
427 SetAmmo(amRope, 5, 0, 0, 3) |
|
428 SetAmmo(amBlowTorch, 3, 0, 0, 3) |
|
429 SetAmmo(amPickHammer, 0, 0, 0, 3) |
|
430 SetAmmo(amLowGravity, 0, 0, 0, 2) |
|
431 SetAmmo(amDynamite, 0, 0, 0, 3) |
|
432 SetAmmo(amBazooka, 0, 0, 0, 4) |
|
433 SetAmmo(amGrenade, 0, 0, 0, 5) |
|
434 SetAmmo(amMine, 0, 0, 0, 2) |
|
435 SetAmmo(amMolotov, 0, 0, 0, 3) |
|
436 SetAmmo(amFlamethrower, 0, 0, 0, 3) |
|
437 end |
|
438 |
|
439 function onNewTurn() |
|
440 if AnimInProgress() then |
|
441 TurnTimeLeft = -1 |
|
442 end |
|
443 end |
|
444 |
|
445 function onGearDamage(gear, damage) |
|
446 end |
|
447 |
|
448 function onPrecise() |
|
449 if GameTime > 2500 then |
|
450 SetAnimSkip(true) |
|
451 end |
|
452 end |
|
453 |