65 step: (stInit, stDelay1, stChDmg, stSweep, stTurnStats, stChWin1, |
65 step: (stInit, stDelay1, stChDmg, stSweep, stTurnStats, stChWin1, |
66 stTurnReact, stDelay2, stChWin2, stWater, stChWin3, |
66 stTurnReact, stDelay2, stChWin2, stWater, stChWin3, |
67 stChKing, stSuddenDeath, stDelay3, stHealth, stSpawn, stDelay4, |
67 stChKing, stSuddenDeath, stDelay3, stHealth, stSpawn, stDelay4, |
68 stNTurn); |
68 stNTurn); |
69 NewTurnTick: LongWord; |
69 NewTurnTick: LongWord; |
70 //SDMusic: shortstring; |
|
71 |
70 |
72 const delaySDStart = 1600; |
71 const delaySDStart = 1600; |
73 delaySDWarning = 1000; |
72 delaySDWarning = 1000; |
74 delayDamageTagFull = 1500; |
73 delayDamageTagFull = 1500; |
75 delayDamageTagShort = 500; |
74 delayDamageTagShort = 500; |
279 begin |
278 begin |
280 FreeAndNilTexture(curHandledGear^.Tex); |
279 FreeAndNilTexture(curHandledGear^.Tex); |
281 curHandledGear^.Tex:= RenderStringTex(ansistring(inttostr(curHandledGear^.Timer div 1000)), cWhiteColor, fntSmall); |
280 curHandledGear^.Tex:= RenderStringTex(ansistring(inttostr(curHandledGear^.Timer div 1000)), cWhiteColor, fntSmall); |
282 end; |
281 end; |
283 curHandledGear^.doStep(curHandledGear); |
282 curHandledGear^.doStep(curHandledGear); |
284 // might be useful later |
|
285 //ScriptCall('onGearStep', Gear^.uid); |
|
286 end |
283 end |
287 end |
284 end |
288 end; |
285 end; |
289 if stirFallers then |
286 if stirFallers then |
290 begin |
287 begin |
538 end |
535 end |
539 end; |
536 end; |
540 |
537 |
541 if TurnTimeLeft > 0 then |
538 if TurnTimeLeft > 0 then |
542 if IsClockRunning() then |
539 if IsClockRunning() then |
543 //(CurrentHedgehog^.CurAmmoType in [amShotgun, amDEagle, amSniperRifle]) |
|
544 begin |
540 begin |
545 if (cHedgehogTurnTime > TurnTimeLeft) |
541 if (cHedgehogTurnTime > TurnTimeLeft) |
546 and (CurrentHedgehog^.Gear <> nil) |
542 and (CurrentHedgehog^.Gear <> nil) |
547 and ((CurrentHedgehog^.Gear^.State and gstAttacked) = 0) |
543 and ((CurrentHedgehog^.Gear^.State and gstAttacked) = 0) |
548 and (not isGetAwayTime) and (ReadyTimeLeft = 0) then |
544 and (not isGetAwayTime) and (ReadyTimeLeft = 0) then |
626 if (CurrentTeam <> nil) then |
622 if (CurrentTeam <> nil) then |
627 with CurrentTeam^ do |
623 with CurrentTeam^ do |
628 for i:= 0 to cMaxHHIndex do |
624 for i:= 0 to cMaxHHIndex do |
629 with Hedgehogs[i] do |
625 with Hedgehogs[i] do |
630 begin |
626 begin |
631 (* |
|
632 if (SpeechGear <> nil) then |
|
633 begin |
|
634 DeleteVisualGear(SpeechGear); // remove to restore persisting beyond end of turn. Tiy says was too much of a gameplay issue |
|
635 SpeechGear:= nil |
|
636 end; |
|
637 *) |
|
638 |
627 |
639 if (Gear <> nil) then |
628 if (Gear <> nil) then |
640 begin |
629 begin |
641 if (GameFlags and gfInvulnerable) = 0 then |
630 if (GameFlags and gfInvulnerable) = 0 then |
642 Gear^.Hedgehog^.Effects[heInvulnerable]:= 0; |
631 Gear^.Hedgehog^.Effects[heInvulnerable]:= 0; |
796 rdy:=Gear^.Y-Hedgehogs[h].Gear^.Y; |
785 rdy:=Gear^.Y-Hedgehogs[h].Gear^.Y; |
797 if (Gear^.Angle < $FFFFFFFF) and |
786 if (Gear^.Angle < $FFFFFFFF) and |
798 ((rdx.Round+rdy.Round < Gear^.Angle) and |
787 ((rdx.Round+rdy.Round < Gear^.Angle) and |
799 (hwRound(hwSqr(rdx) + hwSqr(rdy)) < sqr(Gear^.Angle))) then |
788 (hwRound(hwSqr(rdx) + hwSqr(rdy)) < sqr(Gear^.Angle))) then |
800 begin |
789 begin |
801 // Debug line. Remove later |
|
802 // AddFileLog('Too Close to Hog @ (' + inttostr(rx) + ',' + inttostr(ry) + ')'); |
|
803 |
|
804 p:= 1 |
790 p:= 1 |
805 end |
791 end |
806 end; |
792 end; |
807 inc(h) |
793 inc(h) |
808 end; |
794 end; |
848 rx:= GetRandom(rightX-leftX)+leftX; |
834 rx:= GetRandom(rightX-leftX)+leftX; |
849 ry:= GetRandom(LAND_HEIGHT-topY)+topY; |
835 ry:= GetRandom(LAND_HEIGHT-topY)+topY; |
850 rdx:= _90-(GetRandomf*_360); |
836 rdx:= _90-(GetRandomf*_360); |
851 rdy:= _90-(GetRandomf*_360); |
837 rdy:= _90-(GetRandomf*_360); |
852 Gear:= AddGear(rx, ry, gtGenericFaller, gstInvisible, rdx, rdy, $FFFFFFFF); |
838 Gear:= AddGear(rx, ry, gtGenericFaller, gstInvisible, rdx, rdy, $FFFFFFFF); |
853 // Tag=1: This allows this generic faller to be displaced randomly by events |
839 // This allows this generic faller to be displaced randomly by events |
854 Gear^.Tag:= 1; |
840 Gear^.Tag:= 1; |
855 end; |
841 end; |
856 |
842 |
857 snowRight:= max(LAND_WIDTH,4096)+512; |
843 snowRight:= max(LAND_WIDTH,4096)+512; |
858 snowLeft:= -(snowRight-LAND_WIDTH); |
844 snowLeft:= -(snowRight-LAND_WIDTH); |
981 Unplaced:= true |
967 Unplaced:= true |
982 else |
968 else |
983 FindPlace(Gear, false, t, t + playWidth div ClansCount, true);// could make Gear == nil; |
969 FindPlace(Gear, false, t, t + playWidth div ClansCount, true);// could make Gear == nil; |
984 if Gear <> nil then |
970 if Gear <> nil then |
985 begin |
971 begin |
986 //AddCI(Gear); uncomment if new hogs should be able to spawn on top of old ones. |
|
987 Gear^.Pos:= GetRandom(49); |
972 Gear^.Pos:= GetRandom(49); |
988 // unless the world is wrapping, make outter teams face to map center |
973 // unless the world is wrapping, make outter teams face to map center |
989 if (WorldEdge <> weWrap) and ((p = 0) or (p = ClansCount - 1)) then |
974 if (WorldEdge <> weWrap) and ((p = 0) or (p = ClansCount - 1)) then |
990 Gear^.dX.isNegative:= (p <> 0) |
975 Gear^.dX.isNegative:= (p <> 0) |
991 else |
976 else |
1016 ar[i]^.Unplaced:= true |
1001 ar[i]^.Unplaced:= true |
1017 else |
1002 else |
1018 FindPlace(ar[i]^.Gear, false, leftX, rightX, true); |
1003 FindPlace(ar[i]^.Gear, false, leftX, rightX, true); |
1019 if ar[i]^.Gear <> nil then |
1004 if ar[i]^.Gear <> nil then |
1020 begin |
1005 begin |
1021 //AddCI(ar[i]^.Gear); uncomment if new hogs should be able to spawn on top of old ones |
|
1022 ar[i]^.Gear^.dX.isNegative:= hwRound(ar[i]^.Gear^.X) > leftX + playWidth div 2; |
1006 ar[i]^.Gear^.dX.isNegative:= hwRound(ar[i]^.Gear^.X) > leftX + playWidth div 2; |
1023 ar[i]^.Gear^.Pos:= GetRandom(19) |
1007 ar[i]^.Gear^.Pos:= GetRandom(19) |
1024 end; |
1008 end; |
1025 ar[i]:= ar[Count - 1]; |
1009 ar[i]:= ar[Count - 1]; |
1026 dec(Count) |
1010 dec(Count) |
1275 else if x < 4 then |
1259 else if x < 4 then |
1276 text:= copy(s, 3, Length(s) - 1) |
1260 text:= copy(s, 3, Length(s) - 1) |
1277 else text:= copy(s, 2, Length(s) - 1); |
1261 else text:= copy(s, 2, Length(s) - 1); |
1278 |
1262 |
1279 if text = '' then text:= '...'; |
1263 if text = '' then text:= '...'; |
1280 |
|
1281 (* |
|
1282 if CheckNoTeamOrHH then |
|
1283 begin |
|
1284 ParseCommand('say ' + text, true); |
|
1285 exit |
|
1286 end; |
|
1287 *) |
|
1288 |
1264 |
1289 if (x < 4) and (TeamsArray[t] <> nil) then |
1265 if (x < 4) and (TeamsArray[t] <> nil) then |
1290 begin |
1266 begin |
1291 // if team matches current hedgehog team, default to current hedgehog |
1267 // if team matches current hedgehog team, default to current hedgehog |
1292 if (i = 0) and (CurrentHedgehog <> nil) and (CurrentHedgehog^.Team = TeamsArray[t]) then |
1268 if (i = 0) and (CurrentHedgehog <> nil) and (CurrentHedgehog^.Team = TeamsArray[t]) then |