# HG changeset patch # User Urbertar@gmail.com # Date 1361734806 -7200 # Node ID 18330b24b92c5a7621d8056739a80a86f47fe355 # Parent 84a279d0556c2934a8ad69e12981465dacfac21d Add freezing hogs with icegun diff -r 84a279d0556c -r 18330b24b92c hedgewars/GSHandlers.inc --- a/hedgewars/GSHandlers.inc Sat Feb 23 19:34:02 2013 +0200 +++ b/hedgewars/GSHandlers.inc Sun Feb 24 21:40:06 2013 +0200 @@ -5061,6 +5061,8 @@ procedure updateTarget(Gear:PGear; newX, newY:HWFloat); + var + iter:PGear; begin with Gear^ do begin @@ -5071,15 +5073,15 @@ LastDamage:= nil; X:= Hedgehog^.Gear^.X; Y:= Hedgehog^.Gear^.Y; - (* unfreeze all semifrozen hogs - make this generic hog cleanup + //unfreeze all semifrozen hogs - make this generic hog cleanup iter := GearsList; while iter <> nil do begin if (iter^.Kind = gtHedgehog) and - (iter^.Hedgehog^.Effects[heFrozen] < 0) then + (iter^.Hedgehog^.Effects[heFrozen] and $FF = 0) then iter^.Hedgehog^.Effects[heFrozen]:= 0; iter:= iter^.NextGear - end *) + end end; end; @@ -5233,13 +5235,15 @@ end; // freeze nearby hogs - hogs := GearsNear(Gear^.X, Gear^.Y, gtHedgehog, Gear^.Radius); + hogs := GearsNear(int2hwFloat(Target.X), int2hwFloat(Target.Y), gtHedgehog, Gear^.Radius); if hogs.size > 0 then for i:= 0 to hogs.size - 1 do begin if hogs.ar^[i] <> HHGear then begin - //if Gear^.Hedgehog^.Effects[heFrozen]:= 0; + if GameTicks mod 10 = 0 then + if hogs.ar^[i]^.Hedgehog^.Effects[heFrozen] < 256 then + hogs.ar^[i]^.Hedgehog^.Effects[heFrozen] := hogs.ar^[i]^.Hedgehog^.Effects[heFrozen] + 1; end; end; inc(Pos) @@ -5253,14 +5257,14 @@ X:= HHGear^.X; Y:= HHGear^.Y end; - if (gX > max(LAND_WIDTH,4096)*2) or + {if (gX > max(LAND_WIDTH,4096)*2) or (gX < -max(LAND_WIDTH,4096)) or (gY < -max(LAND_HEIGHT,4096)) or (gY > max(LAND_HEIGHT,4096)+512) then begin X:= HHGear^.X; Y:= HHGear^.Y - end + end} end end; end; diff -r 84a279d0556c -r 18330b24b92c hedgewars/uGearsHedgehog.pas --- a/hedgewars/uGearsHedgehog.pas Sat Feb 23 19:34:02 2013 +0200 +++ b/hedgewars/uGearsHedgehog.pas Sun Feb 24 21:40:06 2013 +0200 @@ -374,7 +374,10 @@ end; //amStructure: newGear:= AddGear(hwRound(lx) + hwSign(dX) * 7, hwRound(ly), gtStructure, gstWait, SignAs(_0_02, dX), _0, 3000); amTardis: newGear:= AddGear(hwRound(X), hwRound(Y), gtTardis, 0, _0, _0, 5000); - amIceGun: newGear:= AddGear(hwRound(X), hwRound(Y), gtIceGun, 0, _0, _0, 0); + amIceGun: begin + newGear:= AddGear(hwRound(X), hwRound(Y), gtIceGun, 0, _0, _0, 0); + newGear^.radius := 8; + end; end; if altUse and (newGear <> nil) then begin diff -r 84a279d0556c -r 18330b24b92c hedgewars/uGearsRender.pas --- a/hedgewars/uGearsRender.pas Sat Feb 23 19:34:02 2013 +0200 +++ b/hedgewars/uGearsRender.pas Sun Feb 24 21:40:06 2013 +0200 @@ -211,6 +211,8 @@ defaultPos, HatVisible: boolean; HH: PHedgehog; CurWeapon: PAmmo; + iceOffset:Longint; + r:TSDL_Rect; begin HH:= Gear^.Hedgehog; if HH^.Unplaced then @@ -247,6 +249,7 @@ Tint($FF, $FF, $FF, $FF) end; + if ((Gear^.State and gstWinner) <> 0) and ((CurAmmoGear = nil) or (CurAmmoGear^.Kind <> gtPickHammer)) then begin @@ -917,6 +920,22 @@ Tint($FF, $FF, $FF, max($40, round($FF * abs(1 - ((RealTicks div 2 + Gear^.uid * 491) mod 1500) / 750)))); DrawSprite(sprInvulnerable, sx - 24, sy - 24, 0); end; + + if HH^.Effects[heFrozen] <> 0 then + begin + /// Tint($00, $FF, $40, $40); + iceOffset := trunc(HH^.Effects[heFrozen] / 256 * 64); + Tint($FF, $FF, $FF, $FF); + r.x := 0; + r.y := 64 - iceOffset; + r.w := 64; + r.h := iceOffset; + DrawTextureFromRect(sx-32, sy-iceoffset+32, @r, SpritesData[sprFrozenHog].texture); + + Tint($FF, $FF, $FF, $FF); + end; + + if cVampiric and (CurrentHedgehog^.Gear <> nil) and (CurrentHedgehog^.Gear = Gear) then diff -r 84a279d0556c -r 18330b24b92c hedgewars/uTypes.pas --- a/hedgewars/uTypes.pas Sat Feb 23 19:34:02 2013 +0200 +++ b/hedgewars/uTypes.pas Sun Feb 24 21:40:06 2013 +0200 @@ -86,7 +86,7 @@ sprHandResurrector, sprCross, sprAirDrill, sprNapalmBomb, sprBulletHit, sprSnowball, sprHandSnowball, sprSnow, sprSDFlake, sprSDWater, sprSDCloud, sprSDSplash, sprSDDroplet, sprTardis, - sprSlider, sprBotlevels, sprHandKnife, sprKnife, sprStar, sprIceTexture, sprIceGun + sprSlider, sprBotlevels, sprHandKnife, sprKnife, sprStar, sprIceTexture, sprIceGun, sprFrozenHog ); // Gears that interact with other Gears and/or Land diff -r 84a279d0556c -r 18330b24b92c hedgewars/uVariables.pas --- a/hedgewars/uVariables.pas Sat Feb 23 19:34:02 2013 +0200 +++ b/hedgewars/uVariables.pas Sun Feb 24 21:40:06 2013 +0200 @@ -667,7 +667,9 @@ (FileName: 'icetexture'; Path: ptGraphics; AltPath: ptNone; Texture: nil; Surface: nil; Width: 32; Height: 32; imageWidth: 32; imageHeight: 32; saveSurf: true; priority: tpLow; getDimensions: false; getImageDimensions: true), // sprIceTexture (FileName: 'amIceGun'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; - Width: 64; Height: 64; imageWidth: 64; imageHeight: 64; saveSurf: false; priority: tpLow; getDimensions: false; getImageDimensions: false) // sprIceGun + Width: 64; Height: 64; imageWidth: 64; imageHeight: 64; saveSurf: false; priority: tpLow; getDimensions: false; getImageDimensions: false), // sprIceGun + (FileName: 'amFrozenHog'; Path: ptHedgehog; AltPath: ptNone; Texture: nil; Surface: nil; + Width: 64; Height: 64; imageWidth: 64; imageHeight: 64; saveSurf: false; priority: tpLow; getDimensions: false; getImageDimensions: false) // sprFrozenHog ); const diff -r 84a279d0556c -r 18330b24b92c share/hedgewars/Data/Graphics/Hedgehog/amFrozenHog.png Binary file share/hedgewars/Data/Graphics/Hedgehog/amFrozenHog.png has changed