# HG changeset patch # User nemo # Date 1312741751 14400 # Node ID 5fb06333314ea9e4b9abbcb880a91672f8d65c30 # Parent 40b7f95d9f18c90e2b02ebc7661ec82f9fb91ee0 Experimental area-of-effect Seduction diff -r 40b7f95d9f18 -r 5fb06333314e hedgewars/GSHandlers.inc --- a/hedgewars/GSHandlers.inc Sun Aug 07 22:27:57 2011 +0400 +++ b/hedgewars/GSHandlers.inc Sun Aug 07 14:29:11 2011 -0400 @@ -2942,10 +2942,26 @@ //////////////////////////////////////////////////////////////////////////////// procedure doStepSeductionWork(Gear: PGear); var - x, y: LongInt; + x, y, i: LongInt; + hogs: TPGearArray; + d: hwFloat; begin AllInactive := false; - + hogs := GearsNear(Gear^.X, Gear^.Y, gtHedgehog, Gear^.Radius); + if Length(hogs) > 0 then + begin + for i:= 0 to High(hogs) do + begin + //d:= Distance(Gear^.X - hogs[i]^.X, Gear^.Y - hogs[i]^.Y); + hogs[i]^.dX:= _0_25 * (Gear^.X - hogs[i]^.X) / _250; + //if Gear^.X < hogs[i]^.X then hogs[i]^.dX.isNegative:= true; + hogs[i]^.dY:= -_0_25; + hogs[i]^.Active:= true; + end; + end ; + AfterAttack; + DeleteGear(Gear); +(* Gear^.X := Gear^.X + Gear^.dX; Gear^.Y := Gear^.Y + Gear^.dY; x := hwRound(Gear^.X); @@ -2967,7 +2983,7 @@ begin AfterAttack; DeleteGear(Gear) - end + end*) end; procedure doStepSeductionWear(Gear: PGear); @@ -2989,7 +3005,7 @@ procedure doStepSeduction(Gear: PGear); begin AllInactive := false; - DeleteCI(Gear^.Hedgehog^.Gear); + //DeleteCI(Gear^.Hedgehog^.Gear); Gear^.doStep := @doStepSeductionWear end; diff -r 40b7f95d9f18 -r 5fb06333314e hedgewars/uGears.pas --- a/hedgewars/uGears.pas Sun Aug 07 22:27:57 2011 +0400 +++ b/hedgewars/uGears.pas Sun Aug 07 14:29:11 2011 -0400 @@ -313,6 +313,9 @@ gear^.Elasticity:= _0_9; gear^.Tag:= getRandom(32); end; + gtSeduction: begin + gear^.Radius:= 250; + end; gtShotgunShot: begin gear^.Timer:= 900; gear^.Radius:= 2 diff -r 40b7f95d9f18 -r 5fb06333314e hedgewars/uGearsRender.pas --- a/hedgewars/uGearsRender.pas Sun Aug 07 22:27:57 2011 +0400 +++ b/hedgewars/uGearsRender.pas Sun Aug 07 14:29:11 2011 -0400 @@ -600,7 +600,10 @@ amGasBomb: DrawRotated(sprHandCheese, hx, hy, sign, aangle); amMine: DrawRotated(sprHandMine, hx, hy, sign, aangle); amSMine: DrawRotated(sprHandSMine, hx, hy, sign, aangle); - amSeduction: DrawRotated(sprHandSeduction, hx, hy, sign, aangle); + amSeduction: begin + DrawRotated(sprHandSeduction, hx, hy, sign, aangle); + DrawCircle(ox, oy, 240, 4, $FF, $00, $00, $AA); + end; amVampiric: DrawRotatedF(sprHandVamp, hx, hy, (RealTicks div 125) mod 4, sign, aangle); amRCPlane: begin DrawRotated(sprHandPlane, hx, hy, sign, 0);