1076 if (Mask and EXPLAutoSound) <> 0 then PlaySound(sndExplosion, false); |
1076 if (Mask and EXPLAutoSound) <> 0 then PlaySound(sndExplosion, false); |
1077 if (Mask and EXPLAllDamageInRadius)=0 then dmgRadius:= Radius shl 1 |
1077 if (Mask and EXPLAllDamageInRadius)=0 then dmgRadius:= Radius shl 1 |
1078 else dmgRadius:= Radius; |
1078 else dmgRadius:= Radius; |
1079 Gear:= GearsList; |
1079 Gear:= GearsList; |
1080 while Gear <> nil do |
1080 while Gear <> nil do |
1081 begin |
1081 begin |
1082 dmg:= dmgRadius + cHHRadius div 2 - hwRound(Distance(Gear^.X - int2hwFloat(X), Gear^.Y - int2hwFloat(Y))); |
1082 dmg:= dmgRadius + cHHRadius div 2 - hwRound(Distance(Gear^.X - int2hwFloat(X), Gear^.Y - int2hwFloat(Y))); |
1083 if (dmg > 1) and |
1083 if (dmg > 1) and |
1084 ((Gear^.State and gstNoDamage) = 0) then |
1084 ((Gear^.State and gstNoDamage) = 0) then |
1085 begin |
1085 begin |
1086 dmg:= min(dmg div 2, Radius); |
1086 dmg:= min(dmg div 2, Radius); |
1087 case Gear^.Kind of |
1087 case Gear^.Kind of |
1088 gtHedgehog, |
1088 gtHedgehog, |
1089 gtMine, |
1089 gtMine, |
1090 gtCase, |
1090 gtCase, |
1091 gtTarget, |
1091 gtTarget, |
1092 gtFlame: begin |
1092 gtFlame: begin |
1093 {$IFDEF DEBUGFILE}AddFileLog('Damage: ' + inttostr(dmg));{$ENDIF} |
1093 {$IFDEF DEBUGFILE}AddFileLog('Damage: ' + inttostr(dmg));{$ENDIF} |
1094 if (Mask and EXPLNoDamage) = 0 then |
1094 if (Mask and EXPLNoDamage) = 0 then |
1095 begin |
1095 begin |
1096 inc(Gear^.Damage, dmg); |
1096 inc(Gear^.Damage, dmg); |
1097 if Gear^.Kind = gtHedgehog then |
1097 if Gear^.Kind = gtHedgehog then |
1098 AddDamageTag(hwRound(Gear^.X), hwRound(Gear^.Y), dmg, Gear) |
1098 AddDamageTag(hwRound(Gear^.X), hwRound(Gear^.Y), dmg, Gear) |
1099 end; |
1099 end; |
1100 if ((Mask and EXPLDoNotTouchHH) = 0) or (Gear^.Kind <> gtHedgehog) then |
1100 if ((Mask and EXPLDoNotTouchHH) = 0) or (Gear^.Kind <> gtHedgehog) then |
1101 begin |
1101 begin |
1102 DeleteCI(Gear); |
1102 DeleteCI(Gear); |
1103 Gear^.dX:= Gear^.dX + SignAs(_0_005 * dmg + cHHKick, Gear^.X - int2hwFloat(X)); |
1103 Gear^.dX:= Gear^.dX + SignAs(_0_005 * dmg + cHHKick, Gear^.X - int2hwFloat(X)); |
1104 Gear^.dY:= Gear^.dY + SignAs(_0_005 * dmg + cHHKick, Gear^.Y - int2hwFloat(Y)); |
1104 Gear^.dY:= Gear^.dY + SignAs(_0_005 * dmg + cHHKick, Gear^.Y - int2hwFloat(Y)); |
1105 Gear^.State:= (Gear^.State or gstMoving) and (not gstWinner); |
1105 Gear^.State:= (Gear^.State or gstMoving) and (not gstWinner); |
1106 Gear^.Active:= true; |
1106 Gear^.Active:= true; |
1107 FollowGear:= Gear |
1107 FollowGear:= Gear |
1108 end; |
1108 end; |
1109 end; |
1109 end; |
1110 gtGrave: begin |
1110 gtGrave: begin |
1111 Gear^.dY:= - _0_004 * dmg; |
1111 Gear^.dY:= - _0_004 * dmg; |
1112 Gear^.Active:= true; |
1112 Gear^.Active:= true; |
1113 end; |
1113 end; |
1114 end; |
1114 end; |
1115 end; |
1115 end; |
1116 Gear:= Gear^.NextGear |
1116 Gear:= Gear^.NextGear |
1117 end; |
1117 end; |
|
1118 |
1118 if (Mask and EXPLDontDraw) = 0 then |
1119 if (Mask and EXPLDontDraw) = 0 then |
1119 if (GameFlags and gfSolidLand) = 0 then DrawExplosion(X, Y, Radius); |
1120 if (GameFlags and gfSolidLand) = 0 then DrawExplosion(X, Y, Radius); |
|
1121 |
1120 uAIMisc.AwareOfExplosion(0, 0, 0) |
1122 uAIMisc.AwareOfExplosion(0, 0, 0) |
1121 end; |
1123 end; |
1122 |
1124 |
1123 procedure ShotgunShot(Gear: PGear); |
1125 procedure ShotgunShot(Gear: PGear); |
1124 var t: PGear; |
1126 var t: PGear; |