# HG changeset patch # User nemo # Date 1310835671 14400 # Node ID 94e26612e2ec5846194fa8c63e5c2d6c8614265d # Parent 6786f672d30b7662db52814a07613aa61cd01f68 Adjust "sticky" fire (molotov) so it makes better fire pits, by making the kicks more regular, yet of random left/right. Tweak napalm slightly along same lines. Probably needs more balancing. diff -r 6786f672d30b -r 94e26612e2ec hedgewars/GSHandlers.inc --- a/hedgewars/GSHandlers.inc Tue Jul 12 21:12:07 2011 +0400 +++ b/hedgewars/GSHandlers.inc Sat Jul 16 13:01:11 2011 -0400 @@ -500,9 +500,9 @@ gX := hwRound(Gear^.X); gY := hwRound(Gear^.Y); //doMakeExplosion(hwRound(Gear^.X), hwRound(Gear^.Y), 5, EXPLAutoSound); - for i:= 0 to 20 do + for i:= 0 to 24 do begin - dX := AngleCos(i * 2) * ((_0_1*(i div 5))) * (GetRandom + _1); + dX := AngleCos(i * 2) * ((_0_15*(i div 5))) * (GetRandom + _1); dY := AngleSin(i * 8) * _0_5 * (GetRandom + _1); Fire := AddGear(gX, gY, gtFlame, 0, dX, dY, 0); Fire^.State := Fire^.State or gsttmpFlag; @@ -2114,6 +2114,7 @@ gX,gY,i: LongInt; sticky: Boolean; vgt: PVisualGear; + tdX,tdY: HWFloat; begin sticky:= (Gear^.State and gsttmpFlag) <> 0; if not sticky then AllInactive := false; @@ -2159,7 +2160,15 @@ if sticky then begin Gear^.Radius := 7; - AmmoShove(Gear, 2, 30); + tdX:= Gear^.dX; + tdY:= Gear^.dY; + Gear^.dX.QWordValue:= 214748365; + Gear^.dY.QWordValue:= 429496730; + Gear^.dX.isNegative:= getrandom(2)<>1; + Gear^.dY.isNegative:= true; + AmmoShove(Gear, 2, 125); + Gear^.dX:= tdX; + Gear^.dY:= tdY; Gear^.Radius := 1 end; if Gear^.Timer > 0 then @@ -2177,10 +2186,18 @@ if ((GameTicks and $1) = 0) then begin Gear^.Radius := 7; - AmmoShove(Gear, 4, 150); + tdX:= Gear^.dX; + tdY:= Gear^.dY; + Gear^.dX.QWordValue:= 214748365; + Gear^.dY.QWordValue:= 429496730; + Gear^.dX.isNegative:= getrandom(2)<>1; + Gear^.dY.isNegative:= true; + AmmoShove(Gear, 6, 100); + Gear^.dX:= tdX; + Gear^.dY:= tdY; Gear^.Radius := 1; end - else if ((GameTicks and $3) = 3) then doMakeExplosion(gX, gY, 6, Gear^.Hedgehog, 0);//, EXPLNoDamage); + else if ((GameTicks and $3) = 3) then doMakeExplosion(gX, gY, 8, Gear^.Hedgehog, 0);//, EXPLNoDamage); //DrawExplosion(gX, gY, 4); if ((GameTicks and $7) = 0) and (Random(2) = 0) then for i:= 1 to Random(2)+1 do