hedgewars/uGearsHandlersMess.pas
changeset 15847 e48c3333c404
parent 15845 744f4d708963
child 15863 e111e5acde64
equal deleted inserted replaced
15846:681db3039ad7 15847:e48c3333c404
   139 procedure doStepCreeper(Gear: PGear);
   139 procedure doStepCreeper(Gear: PGear);
   140 procedure doStepKnife(Gear: PGear);
   140 procedure doStepKnife(Gear: PGear);
   141 procedure doStepMinigunWork(Gear: PGear);
   141 procedure doStepMinigunWork(Gear: PGear);
   142 procedure doStepMinigun(Gear: PGear);
   142 procedure doStepMinigun(Gear: PGear);
   143 procedure doStepMinigunBullet(Gear: PGear);
   143 procedure doStepMinigunBullet(Gear: PGear);
       
   144 procedure ResetSentryState(Gear: PGear; state, timer: LongInt);
   144 procedure doStepSentryDeploy(Gear: PGear);
   145 procedure doStepSentryDeploy(Gear: PGear);
   145 
   146 
   146 var
   147 var
   147     upd: Longword;
   148     upd: Longword;
   148     snowLeft,snowRight: LongInt;
   149     snowLeft,snowRight: LongInt;
  4077 end;
  4078 end;
  4078 
  4079 
  4079 ////////////////////////////////////////////////////////////////////////////////
  4080 ////////////////////////////////////////////////////////////////////////////////
  4080 procedure doStepSeductionWork(Gear: PGear);
  4081 procedure doStepSeductionWork(Gear: PGear);
  4081 var i: LongInt;
  4082 var i: LongInt;
  4082     hogs: PGearArrayS;
  4083     hits: PGearArrayS;
  4083     HHGear: PGear;
  4084     HHGear: PGear;
  4084 begin
  4085 begin
  4085     AllInactive := false;
  4086     AllInactive := false;
  4086 
  4087 
  4087     HHGear := Gear^.Hedgehog^.Gear;
  4088     HHGear := Gear^.Hedgehog^.Gear;
  4091         AfterAttack;
  4092         AfterAttack;
  4092         DeleteGear(Gear);
  4093         DeleteGear(Gear);
  4093         exit;
  4094         exit;
  4094         end;
  4095         end;
  4095 
  4096 
  4096     hogs := GearsNear(Gear^.X, Gear^.Y, gtHedgehog, Gear^.Radius);
  4097     hits := GearsNear(Gear^.X, Gear^.Y, gtHedgehog, Gear^.Radius);
  4097     if hogs.size > 0 then
  4098     if hits.size > 0 then
  4098         begin
  4099         begin
  4099         for i:= 0 to hogs.size - 1 do
  4100         for i:= 0 to hits.size - 1 do
  4100             with hogs.ar^[i]^ do
  4101             with hits.ar^[i]^ do
  4101                 if (hogs.ar^[i] <> CurrentHedgehog^.Gear) and (Hedgehog^.Effects[heFrozen] = 0)  then
  4102                 if (hits.ar^[i] <> CurrentHedgehog^.Gear) and (Hedgehog^.Effects[heFrozen] = 0)  then
  4102                     begin
  4103                     begin
  4103                     if (WorldEdge <> weWrap) or (not (hwAbs(Gear^.X - X) > int2hwFloat(Gear^.Radius))) then
  4104                     if (WorldEdge <> weWrap) or (not (hwAbs(Gear^.X - X) > int2hwFloat(Gear^.Radius))) then
  4104                         dX:= _50 * cGravity * (Gear^.X - X) / _25
  4105                         dX:= _50 * cGravity * (Gear^.X - X) / _25
  4105                     else if (not (hwAbs(Gear^.X + int2hwFloat(RightX-LeftX) - X) > int2hwFloat(Gear^.Radius))) then
  4106                     else if (not (hwAbs(Gear^.X + int2hwFloat(RightX-LeftX) - X) > int2hwFloat(Gear^.Radius))) then
  4106                         dX:= _50 * cGravity * ((Gear^.X + int2hwFloat(RightX-LeftX)) - X) / _25
  4107                         dX:= _50 * cGravity * ((Gear^.X + int2hwFloat(RightX-LeftX)) - X) / _25
  4110                     Active:= true;
  4111                     Active:= true;
  4111                     end
  4112                     end
  4112                 else if Hedgehog^.Effects[heFrozen] > 255 then
  4113                 else if Hedgehog^.Effects[heFrozen] > 255 then
  4113                     Hedgehog^.Effects[heFrozen]:= 255
  4114                     Hedgehog^.Effects[heFrozen]:= 255
  4114         end ;
  4115         end ;
       
  4116 
       
  4117     hits := GearsNear(Gear^.X, Gear^.Y, gtSentry, Gear^.Radius);
       
  4118     if hits.size > 0 then
       
  4119         for i:= 0 to hits.size - 1 do
       
  4120             with hits.ar^[i]^ do
       
  4121                 if (Gear^.Hedgehog <> nil) and (Hedgehog <> Gear^.Hedgehog)  then
       
  4122                     begin
       
  4123                     dX := SignAs(_0, dX);
       
  4124                     dY := -_0_15;
       
  4125                     Hedgehog := Gear^.Hedgehog;
       
  4126                     ResetSentryState(hits.ar^[i], 0, 10000);
       
  4127                     end;
       
  4128 
  4115     AfterAttack;
  4129     AfterAttack;
  4116     DeleteGear(Gear);
  4130     DeleteGear(Gear);
  4117 end;
  4131 end;
  4118 
  4132 
  4119 procedure doStepSeductionWear(Gear: PGear);
  4133 procedure doStepSeductionWear(Gear: PGear);