1886 if isUnderwater then |
1886 if isUnderwater then |
1887 trackSpeed.QWordValue:= Gear^.Power div 2 |
1887 trackSpeed.QWordValue:= Gear^.Power div 2 |
1888 else |
1888 else |
1889 trackSpeed.QWordValue:= Gear^.Power; |
1889 trackSpeed.QWordValue:= Gear^.Power; |
1890 if (Gear^.X < targ^.X) and (Gear^.dX < _0_1) then |
1890 if (Gear^.X < targ^.X) and (Gear^.dX < _0_1) then |
1891 Gear^.dX:= Gear^.dX+trackSpeed // please leave as an add. I like the effect |
1891 if (WorldEdge = weWrap) and ((targ^.X - Gear^.X) > ((Gear^.X - int2hwFloat(LeftX)) + (int2hwFloat(RightX) - targ^.X))) then |
|
1892 Gear^.dX:= Gear^.dX-trackSpeed |
|
1893 else |
|
1894 Gear^.dX:= Gear^.dX+trackSpeed // please leave as an add. I like the effect |
1892 else if (Gear^.X > targ^.X) and (Gear^.dX > -_0_1) then |
1895 else if (Gear^.X > targ^.X) and (Gear^.dX > -_0_1) then |
1893 Gear^.dX:= Gear^.dX-trackSpeed; |
1896 if (WorldEdge = weWrap) and ((Gear^.X - targ^.X) > ((targ^.X - int2hwFloat(LeftX)) + (int2hwFloat(RightX) - Gear^.X))) then |
|
1897 Gear^.dX:= Gear^.dX+trackSpeed |
|
1898 else |
|
1899 Gear^.dX:= Gear^.dX-trackSpeed; |
1894 if (Gear^.Y < targ^.Y) and (Gear^.dY < _0_1) then |
1900 if (Gear^.Y < targ^.Y) and (Gear^.dY < _0_1) then |
1895 Gear^.dY:= Gear^.dY+trackSpeed |
1901 Gear^.dY:= Gear^.dY+trackSpeed |
1896 else if (Gear^.Y > targ^.Y) and (Gear^.dY > -_0_1) then |
1902 else if (Gear^.Y > targ^.Y) and (Gear^.dY > -_0_1) then |
1897 Gear^.dY:= Gear^.dY-trackSpeed |
1903 Gear^.dY:= Gear^.dY-trackSpeed |
1898 end |
1904 end |
3226 |
3232 |
3227 procedure doStepCakeDown(Gear: PGear); |
3233 procedure doStepCakeDown(Gear: PGear); |
3228 var |
3234 var |
3229 gi: PGear; |
3235 gi: PGear; |
3230 dmg, dmgBase, partyEpicness, i: LongInt; |
3236 dmg, dmgBase, partyEpicness, i: LongInt; |
3231 fX, fY: hwFloat; |
3237 fX, fY, tdX, tdY: hwFloat; |
3232 sparkles: PVisualGear; |
3238 sparkles: PVisualGear; |
3233 begin |
3239 begin |
3234 AllInactive := false; |
3240 AllInactive := false; |
3235 |
3241 |
3236 inc(Gear^.Tag); |
3242 inc(Gear^.Tag); |
3253 while gi <> nil do |
3259 while gi <> nil do |
3254 begin |
3260 begin |
3255 if gi^.Kind = gtHedgehog then |
3261 if gi^.Kind = gtHedgehog then |
3256 begin |
3262 begin |
3257 dmg:= 0; |
3263 dmg:= 0; |
3258 if hwRound(PointDistance(gi^.X, fX, gi^.Y, fY, true)) < dmgBase then |
3264 tdX:= gi^.X-fX; |
3259 dmg:= dmgBase - max(hwRound(PointDistance(gi^.X, fX, gi^.Y, fY, true)), gi^.Radius); |
3265 tdY:= gi^.Y-fY; |
|
3266 if hwRound(hwAbs(tdX)+hwAbs(tdY)) < dmgBase then |
|
3267 dmg:= dmgBase - max(hwRound(Distance(tdX, tdY)),gi^.Radius); |
3260 if (dmg > 1) then dmg:= ModifyDamage(min(dmg div 2, Gear^.Boom), gi); |
3268 if (dmg > 1) then dmg:= ModifyDamage(min(dmg div 2, Gear^.Boom), gi); |
3261 if (dmg > 1) then |
3269 if (dmg > 1) then |
3262 if (CurrentHedgehog^.Gear = gi) and (gi^.Hedgehog^.Effects[heInvulnerable] = 0) then |
3270 if (CurrentHedgehog^.Gear = gi) and (gi^.Hedgehog^.Effects[heInvulnerable] = 0) then |
3263 begin |
3271 begin |
3264 gi^.State := gi^.State or gstLoser; |
3272 gi^.State := gi^.State or gstLoser; |