651 begin |
651 begin |
652 TargetPoint.X:= NoPointX; |
652 TargetPoint.X:= NoPointX; |
653 {$IFDEF DEBUGFILE}if Radius > 3 then AddFileLog('Explosion: at (' + inttostr(x) + ',' + inttostr(y) + ')');{$ENDIF} |
653 {$IFDEF DEBUGFILE}if Radius > 3 then AddFileLog('Explosion: at (' + inttostr(x) + ',' + inttostr(y) + ')');{$ENDIF} |
654 if (Mask and EXPLDontDraw) = 0 then DrawExplosion(X, Y, Radius); |
654 if (Mask and EXPLDontDraw) = 0 then DrawExplosion(X, Y, Radius); |
655 if Radius = 50 then AddGear(X, Y, gtExplosion, 0, 0, 0, 0); |
655 if Radius = 50 then AddGear(X, Y, gtExplosion, 0, 0, 0, 0); |
656 if (Mask and EXPLAutoSound)<>0 then PlaySound(sndExplosion, false); |
656 if (Mask and EXPLAutoSound) <> 0 then PlaySound(sndExplosion, false); |
657 if (Mask and EXPLAllDamageInRadius)=0 then Radius:= Radius shl 1; |
657 if (Mask and EXPLAllDamageInRadius)=0 then Radius:= Radius shl 1; |
658 Gear:= GearsList; |
658 Gear:= GearsList; |
659 while Gear <> nil do |
659 while Gear <> nil do |
660 begin |
660 begin |
661 dmg:= Radius - hwRound(Distance(Gear^.X - X, Gear^.Y - Y)); |
661 dmg:= Radius - hwRound(Distance(Gear^.X - X, Gear^.Y - Y)); |
662 if dmg > 0 then |
662 if dmg > 0 then |
663 begin |
663 begin |
664 dmg:= dmg shr 1; |
664 dmg:= dmg div 2; |
665 case Gear^.Kind of |
665 case Gear^.Kind of |
666 gtHedgehog, |
666 gtHedgehog, |
667 gtMine, |
667 gtMine, |
668 gtCase, |
668 gtCase, |
669 gtFlame: begin |
669 gtFlame: begin |
|
670 {$IFDEF DEBUGFILE}AddFileLog('Damage: ' + inttostr(dmg));{$ENDIF} |
670 if (Mask and EXPLNoDamage) = 0 then inc(Gear^.Damage, dmg); |
671 if (Mask and EXPLNoDamage) = 0 then inc(Gear^.Damage, dmg); |
671 if ((Mask and EXPLDoNotTouchHH) = 0) or (Gear^.Kind <> gtHedgehog) then |
672 if ((Mask and EXPLDoNotTouchHH) = 0) or (Gear^.Kind <> gtHedgehog) then |
672 begin |
673 begin |
673 Gear^.dX:= Gear^.dX + (_0_005 * dmg + cHHKick)* hwSign(Gear^.X - X); |
674 Gear^.dX:= Gear^.dX + (_0_005 * dmg + cHHKick) * hwSign(Gear^.X - X); |
674 Gear^.dY:= Gear^.dY + (_0_005 * dmg + cHHKick)* hwSign(Gear^.Y - Y); |
675 addfilelog(' >> _0_005 * dmg = '+floattostr(_0_005 * dmg)); |
|
676 addfilelog(' >> dx = '+floattostr(Gear^.dX)); |
|
677 Gear^.dY:= Gear^.dY + (_0_005 * dmg + cHHKick) * hwSign(Gear^.Y - Y); |
675 Gear^.Active:= true; |
678 Gear^.Active:= true; |
676 FollowGear:= Gear |
679 FollowGear:= Gear |
677 end; |
680 end; |
678 end; |
681 end; |
679 gtGrave: begin |
682 gtGrave: begin |