equal
deleted
inserted
replaced
62 |
62 |
63 var delay: LongWord; |
63 var delay: LongWord; |
64 delay2: LongWord; |
64 delay2: LongWord; |
65 step: (stInit, stDelay, stChDmg, stSweep, stTurnStats, stChWin1, |
65 step: (stInit, stDelay, stChDmg, stSweep, stTurnStats, stChWin1, |
66 stTurnReact, stAfterDelay, stChWin2, stWater, stChWin3, |
66 stTurnReact, stAfterDelay, stChWin2, stWater, stChWin3, |
67 stHealth, stSpawn, stNTurn); |
67 stChKing, stHealth, stSpawn, stNTurn); |
68 NewTurnTick: LongWord; |
68 NewTurnTick: LongWord; |
69 //SDMusic: shortstring; |
69 //SDMusic: shortstring; |
70 |
70 |
71 function CheckNoDamage: boolean; // returns TRUE in case of no damaged hhs |
71 function CheckNoDamage: boolean; // returns TRUE in case of no damaged hhs |
72 var Gear: PGear; |
72 var Gear: PGear; |
84 if (Gear^.Damage <> 0) and ((Gear^.Hedgehog^.Effects[heInvulnerable] = 0)) then |
84 if (Gear^.Damage <> 0) and ((Gear^.Hedgehog^.Effects[heInvulnerable] = 0)) then |
85 begin |
85 begin |
86 CheckNoDamage:= false; |
86 CheckNoDamage:= false; |
87 |
87 |
88 dmg:= Gear^.Damage; |
88 dmg:= Gear^.Damage; |
89 if Gear^.Health < dmg then |
89 if (Gear^.Health < dmg) then |
90 begin |
90 begin |
91 Gear^.Active:= true; |
91 Gear^.Active:= true; |
92 Gear^.Health:= 0 |
92 Gear^.Health:= 0 |
93 end |
93 end |
94 else |
94 else |
103 spawnHealthTagForHH(Gear, dmg); |
103 spawnHealthTagForHH(Gear, dmg); |
104 |
104 |
105 RenderHealth(Gear^.Hedgehog^); |
105 RenderHealth(Gear^.Hedgehog^); |
106 RecountTeamHealth(Gear^.Hedgehog^.Team); |
106 RecountTeamHealth(Gear^.Hedgehog^.Team); |
107 |
107 |
108 end; |
108 end |
|
109 else if ((GameFlags and gfKing) <> 0) and (not Gear^.Hedgehog^.Team^.hasKing) then |
|
110 begin |
|
111 Gear^.Active:= true; |
|
112 Gear^.Health:= 0; |
|
113 RenderHealth(Gear^.Hedgehog^); |
|
114 RecountTeamHealth(Gear^.Hedgehog^.Team); |
|
115 end; |
|
116 |
109 if (not isInMultiShoot) then |
117 if (not isInMultiShoot) then |
110 Gear^.Karma:= 0; |
118 Gear^.Karma:= 0; |
111 Gear^.Damage:= 0 |
119 Gear^.Damage:= 0 |
112 end; |
120 end; |
113 Gear:= Gear^.NextGear |
121 Gear:= Gear^.NextGear |
114 end; |
122 end; |
|
123 end; |
|
124 |
|
125 function CheckMinionsDie: boolean; |
|
126 var Gear: PGear; |
|
127 begin |
|
128 CheckMinionsDie:= false; |
|
129 if (GameFlags and gfKing) = 0 then |
|
130 exit; |
|
131 |
|
132 Gear:= GearsList; |
|
133 while Gear <> nil do |
|
134 begin |
|
135 if (Gear^.Kind = gtHedgehog) and (not Gear^.Hedgehog^.King) and (not Gear^.Hedgehog^.Team^.hasKing) then |
|
136 begin |
|
137 CheckMinionsDie:= true; |
|
138 exit; |
|
139 end; |
|
140 Gear:= Gear^.NextGear; |
|
141 end; |
115 end; |
142 end; |
116 |
143 |
117 procedure HealthMachine; |
144 procedure HealthMachine; |
118 var Gear: PGear; |
145 var Gear: PGear; |
119 team: PTeam; |
146 team: PTeam; |
355 CheckForWin; |
382 CheckForWin; |
356 bDuringWaterRise:= false; |
383 bDuringWaterRise:= false; |
357 inc(step) |
384 inc(step) |
358 end; |
385 end; |
359 |
386 |
|
387 stChKing: |
|
388 begin |
|
389 if (not isInMultiShoot) and (CheckMinionsDie) then |
|
390 step:= stChDmg |
|
391 else |
|
392 inc(step); |
|
393 end; |
360 stHealth: |
394 stHealth: |
361 begin |
395 begin |
362 if (cWaterRise <> 0) or (cHealthDecrease <> 0) then |
396 if (cWaterRise <> 0) or (cHealthDecrease <> 0) then |
363 begin |
397 begin |
364 if (TotalRoundsPre = cSuddenDTurns) and (not SuddenDeath) and (not isInMultiShoot) then |
398 if (TotalRoundsPre = cSuddenDTurns) and (not SuddenDeath) and (not isInMultiShoot) then |
365 StartSuddenDeath() |
399 StartSuddenDeath() |
366 else if (TotalRoundsPre < cSuddenDTurns) and (not isInMultiShoot) then |
400 else if (TotalRoundsPre < cSuddenDTurns) and (not isInMultiShoot) then |
367 begin |
401 begin |
368 i:= cSuddenDTurns - TotalRoundsPre; |
402 i:= cSuddenDTurns - TotalRoundsPre; |