hedgewars/uAIMisc.pas
branchwebgl
changeset 9136 78f087fd3e5b
parent 9127 e350500c4edb
child 9160 fc46e75f6b72
equal deleted inserted replaced
9133:a269fe7090a0 9136:78f087fd3e5b
   129 while Gear <> nil do
   129 while Gear <> nil do
   130     begin
   130     begin
   131     if  (((Gear^.Kind = gtHedgehog) and
   131     if  (((Gear^.Kind = gtHedgehog) and
   132             (Gear <> ThinkingHH) and
   132             (Gear <> ThinkingHH) and
   133             (Gear^.Health > Gear^.Damage) and
   133             (Gear^.Health > Gear^.Damage) and
   134             not(Gear^.Hedgehog^.Team^.hasgone)) or
   134             (not Gear^.Hedgehog^.Team^.hasgone)) or
   135         ((Gear^.Kind = gtExplosives) and
   135         ((Gear^.Kind = gtExplosives) and
   136             (Gear^.Health > Gear^.Damage)) or
   136             (Gear^.Health > Gear^.Damage)) or
   137         ((Gear^.Kind = gtMine) and
   137         ((Gear^.Kind = gtMine) and
   138             (Gear^.Health = 0) and
   138             (Gear^.Health = 0) and
   139              (Gear^.Damage < 35))
   139              (Gear^.Damage < 35))
   399                                 (abs(odX) > 0.02))) and (dxdy > 0.35)))) then
   399                                 (abs(odX) > 0.02))) and (dxdy > 0.35)))) then
   400                         begin
   400                         begin
   401                         dmg := trunc(dxdy * 25);
   401                         dmg := trunc(dxdy * 25);
   402                         exit(dmg)
   402                         exit(dmg)
   403                         end
   403                         end
   404                     else if (Kind = gtExplosives) and not((abs(odX) > 0.15) or ((abs(odY) > 0.15) and (abs(odX) > 0.02))) and (dY > 0.2) then
   404                     else if (Kind = gtExplosives) and (not(abs(odX) > 0.15) or ((abs(odY) > 0.15) and (abs(odX) > 0.02))) and (dY > 0.2) then
   405                         begin
   405                         begin
   406                         dmg := trunc(dy * 70);
   406                         dmg := trunc(dy * 70);
   407                         exit(dmg)
   407                         exit(dmg)
   408                         end
   408                         end
   409                     end;
   409                     end;
   451                                 (abs(odX) > 0.02))) and (dxdy > 0.35)))) then
   451                                 (abs(odX) > 0.02))) and (dxdy > 0.35)))) then
   452                         begin
   452                         begin
   453                         dmg := trunc(dxdy * 50);
   453                         dmg := trunc(dxdy * 50);
   454                         exit(dmg)
   454                         exit(dmg)
   455                         end
   455                         end
   456                     else if (Kind = gtExplosives) and not((abs(odX) > 0.15) or ((abs(odY) > 0.15) and (abs(odX) > 0.02))) and (dY > 0.2) then
   456                     else if (Kind = gtExplosives) and (not(abs(odX) > 0.15) or ((abs(odY) > 0.15) and (abs(odX) > 0.02))) and (dY > 0.2) then
   457                         begin
   457                         begin
   458                         dmg := trunc(dy * 70);
   458                         dmg := trunc(dy * 70);
   459                         exit(dmg)
   459                         exit(dmg)
   460                         end
   460                         end
   461                     end;
   461                     end;
   608                 begin
   608                 begin
   609                 pX:= Point.x;
   609                 pX:= Point.x;
   610                 pY:= Point.y-2;
   610                 pY:= Point.y-2;
   611                 fallDmg:= 0;
   611                 fallDmg:= 0;
   612                 if (Flags and afSetSkip <> 0) then skip:= true;
   612                 if (Flags and afSetSkip <> 0) then skip:= true;
   613                 if not(dead) and (Flags and afTrackFall <> 0) and (Score > 0) and (power < Score) then
   613                 if (not dead) and (Flags and afTrackFall <> 0) and (Score > 0) and (power < Score) then
   614                     if (Kind = gtExplosives) and (State and gstTmpFlag = 0) and 
   614                     if (Kind = gtExplosives) and (State and gstTmpFlag = 0) and 
   615                        (((abs(dY) > 0.15) and (abs(dX) < 0.02)) or
   615                        (((abs(dY) > 0.15) and (abs(dX) < 0.02)) or
   616                         ((abs(dY) < 0.15) and (abs(dX) < 0.15))) then
   616                         ((abs(dY) < 0.15) and (abs(dX) < 0.15))) then
   617                         fallDmg:= trunc(TraceShoveFall(pX, pY, 0, dY, Targets.ar[i]) * dmgMod)
   617                         fallDmg:= trunc(TraceShoveFall(pX, pY, 0, dY, Targets.ar[i]) * dmgMod)
   618                     else
   618                     else
   703                 dmg:= min(baseDmg - trunc(sqrt(sqr(Point.x - x)+sqr(Point.y - y))), 25);
   703                 dmg:= min(baseDmg - trunc(sqrt(sqr(Point.x - x)+sqr(Point.y - y))), 25);
   704                 dmg:= trunc(dmg * dmgMod);
   704                 dmg:= trunc(dmg * dmgMod);
   705                 end;
   705                 end;
   706             if dmg > 0 then
   706             if dmg > 0 then
   707                 begin
   707                 begin
   708                 if not(dead) and (Score > 0) and (dmg < Score) then
   708                 if (not dead) and (Score > 0) and (dmg < Score) then
   709                     begin
   709                     begin
   710                     pX:= Point.x;
   710                     pX:= Point.x;
   711                     pY:= Point.y;
   711                     pY:= Point.y;
   712                     dX:= gdX * dmg / Density;
   712                     dX:= gdX * dmg / Density;
   713                     dY:= gdY * dmg / Density;
   713                     dY:= gdY * dmg / Density;