2380 |
2380 |
2381 PlaySound(sndSwitchHog); |
2381 PlaySound(sndSwitchHog); |
2382 |
2382 |
2383 repeat |
2383 repeat |
2384 CurrentTeam^.CurrHedgehog := Succ(CurrentTeam^.CurrHedgehog) mod (CurrentTeam^.HedgehogsNumber); |
2384 CurrentTeam^.CurrHedgehog := Succ(CurrentTeam^.CurrHedgehog) mod (CurrentTeam^.HedgehogsNumber); |
2385 until (CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Gear <> nil) and (CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Gear^.Damage = 0); |
2385 until (CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Gear <> nil) and (CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Gear^.Damage = 0) and (CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog].Effects[heFrozen]=0); |
2386 |
2386 |
2387 SwitchCurrentHedgehog(@CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog]); |
2387 SwitchCurrentHedgehog(@CurrentTeam^.Hedgehogs[CurrentTeam^.CurrHedgehog]); |
2388 AmmoMenuInvalidated:= true; |
2388 AmmoMenuInvalidated:= true; |
2389 |
2389 |
2390 HHGear := CurrentHedgehog^.Gear; |
2390 HHGear := CurrentHedgehog^.Gear; |
5128 begin |
5128 begin |
5129 iceSurface:= SpritesData[sprIceTexture].Surface; |
5129 iceSurface:= SpritesData[sprIceTexture].Surface; |
5130 pictureX := x mod iceSurface^.w; |
5130 pictureX := x mod iceSurface^.w; |
5131 pictureY := y mod iceSurface^.h; |
5131 pictureY := y mod iceSurface^.h; |
5132 icePixels := iceSurface^.pixels; |
5132 icePixels := iceSurface^.pixels; |
5133 LandPixels[y, x] := icePixels^[pictureX + pictureY * iceSurface^.w]; |
5133 LandPixels[y, x]:= addBgColor(LandPixels[y, x], icePixels^[pictureX + pictureY * iceSurface^.w]); |
|
5134 |
5134 Land[y, x] := land[y, x] or lfIce; |
5135 Land[y, x] := land[y, x] or lfIce; |
5135 end; |
5136 end; |
5136 |
5137 |
5137 procedure DrawIce(Gear: PGear; x, y: Longint); |
5138 procedure DrawIce(Gear: PGear; x, y: Longint); |
5138 const iceSize :Longint = 35; |
5139 const iceSize :Longint = 35; |
5153 end else |
5154 end else |
5154 begin |
5155 begin |
5155 if isLanscapeEdge(weight) then |
5156 if isLanscapeEdge(weight) then |
5156 begin |
5157 begin |
5157 LandPixels[j, i] := $FFB2AF8A; |
5158 LandPixels[j, i] := $FFB2AF8A; |
|
5159 if Land[j, i] > 255 then Land[j, i] := Land[j, i] or lfIce; |
5158 end; |
5160 end; |
5159 end; |
5161 end; |
5160 end; |
5162 end; |
5161 end; |
5163 end; |
5162 UpdateLandTexture(x - iceHalfSize, iceSize, y - iceHalfSize, iceSize, true); |
5164 UpdateLandTexture(x - iceHalfSize, iceSize, y - iceHalfSize, iceSize, true); |
5233 DrawIce(Gear, Target.X, Target.Y); |
5235 DrawIce(Gear, Target.X, Target.Y); |
5234 IceState := iceWaitNextTarget; |
5236 IceState := iceWaitNextTarget; |
5235 end; |
5237 end; |
5236 |
5238 |
5237 // freeze nearby hogs |
5239 // freeze nearby hogs |
5238 hogs := GearsNear(int2hwFloat(Target.X), int2hwFloat(Target.Y), gtHedgehog, Gear^.Radius); |
5240 hogs := GearsNear(int2hwFloat(Target.X), int2hwFloat(Target.Y), gtHedgehog, Gear^.Radius*2); |
5239 if hogs.size > 0 then |
5241 if hogs.size > 0 then |
5240 for i:= 0 to hogs.size - 1 do |
5242 for i:= 0 to hogs.size - 1 do |
5241 begin |
5243 begin |
5242 if hogs.ar^[i] <> HHGear then |
5244 if hogs.ar^[i] <> HHGear then |
5243 begin |
5245 begin |
5244 if GameTicks mod 10 = 0 then |
5246 if GameTicks mod 10 = 0 then |
5245 if hogs.ar^[i]^.Hedgehog^.Effects[heFrozen] < 256 then |
5247 if hogs.ar^[i]^.Hedgehog^.Effects[heFrozen] < 256 then |
5246 hogs.ar^[i]^.Hedgehog^.Effects[heFrozen] := hogs.ar^[i]^.Hedgehog^.Effects[heFrozen] + 1; |
5248 hogs.ar^[i]^.Hedgehog^.Effects[heFrozen] := hogs.ar^[i]^.Hedgehog^.Effects[heFrozen] + 1 |
|
5249 else if hogs.ar^[i]^.Hedgehog^.Effects[heFrozen] = 256 then |
|
5250 hogs.ar^[i]^.Hedgehog^.Effects[heFrozen]:= 100000; |
5247 end; |
5251 end; |
5248 end; |
5252 end; |
5249 inc(Pos) |
5253 inc(Pos) |
5250 end |
5254 end |
5251 else if (t > 400) and ((gY > cWaterLine) or |
5255 else if (t > 400) and ((gY > cWaterLine) or |