hedgewars/uGears.pas
changeset 1200 b92323ccce45
parent 1141 44d4d6aaecb5
child 1207 ceaab010269e
equal deleted inserted replaced
1199:543d1268847b 1200:b92323ccce45
  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;