equal
deleted
inserted
replaced
187 end; |
187 end; |
188 |
188 |
189 function RatePlace(Gear: PGear): LongInt; |
189 function RatePlace(Gear: PGear): LongInt; |
190 var i, r: LongInt; |
190 var i, r: LongInt; |
191 rate: LongInt; |
191 rate: LongInt; |
192 begin |
192 gX, gY: real; |
|
193 begin |
|
194 gX:= hwFloat2Float(Gear^.X); |
|
195 gY:= hwFloat2Float(Gear^.Y); |
193 rate:= 0; |
196 rate:= 0; |
194 for i:= 0 to Pred(bonuses.Count) do |
197 for i:= 0 to Pred(bonuses.Count) do |
195 with bonuses.ar[i] do |
198 with bonuses.ar[i] do |
196 begin |
199 begin |
197 r:= hwRound(Distance(Gear^.X - int2hwFloat(X), Gear^.Y - int2hwFloat(Y))); |
200 r:= Radius; |
|
201 if abs(gX-X)+abs(gY-Y) < Radius then |
|
202 r:= trunc(sqrt(sqr(gX - X)+sqr(gY - Y))); |
198 if r < 15 then |
203 if r < 15 then |
199 inc(rate, Score * Radius) |
204 inc(rate, Score * Radius) |
200 else if r < Radius then |
205 else if r < Radius then |
201 inc(rate, Score * (Radius - r)) |
206 inc(rate, Score * (Radius - r)) |
202 end; |
207 end; |
359 dmg:= r - trunc(sqrt(sqr(Point.x - x)+sqr(Point.y - y))); |
364 dmg:= r - trunc(sqrt(sqr(Point.x - x)+sqr(Point.y - y))); |
360 dmg:= trunc(dmg * dmgMod); |
365 dmg:= trunc(dmg * dmgMod); |
361 end; |
366 end; |
362 if dmg > 0 then |
367 if dmg > 0 then |
363 begin |
368 begin |
364 if (Flags and 1 <> 0) and TraceShoveDrown(Me, Point.x, Point.y, dX, dY) then |
369 if (Flags and 1 <> 0) and TraceShoveDrown(Me, Point.x, Point.y-2, dX, dY) then |
365 if Score > 0 then |
370 if Score > 0 then |
366 inc(rate, KillScore + Score div 10) // Add a bit of a bonus for bigger hog drownings |
371 inc(rate, KillScore + Score div 10) // Add a bit of a bonus for bigger hog drownings |
367 else |
372 else |
368 dec(rate, KillScore * friendlyfactor div 100 - Score div 10) // and more of a punishment for drowning bigger friendly hogs |
373 dec(rate, KillScore * friendlyfactor div 100 - Score div 10) // and more of a punishment for drowning bigger friendly hogs |
369 else if power >= abs(Score) then |
374 else if power >= abs(Score) then |