hedgewars/GSHandlers.inc
changeset 1505 3a96e93572cb
parent 1504 1603a796f42a
child 1507 d18c67b7ad4c
equal deleted inserted replaced
1504:1603a796f42a 1505:3a96e93572cb
    47 	else
    47 	else
    48 		PlaySound(sndOw1, false);
    48 		PlaySound(sndOw1, false);
    49 
    49 
    50 	dmg:= 1 + hwRound((hwAbs(Gear^.dY) - _0_4) * 70);
    50 	dmg:= 1 + hwRound((hwAbs(Gear^.dY) - _0_4) * 70);
    51 	inc(Gear^.Damage, dmg);
    51 	inc(Gear^.Damage, dmg);
    52 	AddDamageTag(hwRound(Gear^.X), hwRound(Gear^.Y) + cHHRadius, dmg, Gear);
    52 	AddDamageTag(hwRound(Gear^.X), hwRound(Gear^.Y) + cHHRadius, dmg, PHedgehog(Gear^.Hedgehog)^.Team^.Clan^.Color);
    53 	end
    53 	end
    54 end;
    54 end;
    55 
    55 
    56 ////////////////////////////////////////////////////////////////////////////////
    56 ////////////////////////////////////////////////////////////////////////////////
    57 ////////////////////////////////////////////////////////////////////////////////
    57 ////////////////////////////////////////////////////////////////////////////////
   217 
   217 
   218 ////////////////////////////////////////////////////////////////////////////////
   218 ////////////////////////////////////////////////////////////////////////////////
   219 procedure doStepHealthTagWork(Gear: PGear);
   219 procedure doStepHealthTagWork(Gear: PGear);
   220 begin
   220 begin
   221 if Gear^.Kind = gtHealthTag then
   221 if Gear^.Kind = gtHealthTag then
   222    AllInactive:= false;
   222 	AllInactive:= false;
       
   223 
   223 dec(Gear^.Timer);
   224 dec(Gear^.Timer);
   224 Gear^.Y:= Gear^.Y + Gear^.dY;
   225 Gear^.Y:= Gear^.Y + Gear^.dY;
       
   226 
   225 if Gear^.Timer = 0 then
   227 if Gear^.Timer = 0 then
   226 	begin
   228 	begin
   227 	if Gear^.Kind = gtHealthTag then
   229 	if Gear^.Kind = gtHealthTag then
   228 		PHedgehog(Gear^.Hedgehog)^.Gear^.Active:= true; // to let current hh die
   230 		PHedgehog(Gear^.Hedgehog)^.Gear^.Active:= true; // to let current hh die
   229 	DeleteGear(Gear)
   231 	DeleteGear(Gear)
   230 	end
   232 	end
   231 end;
   233 end;
   232 
   234 
   233 procedure doStepHealthTagWorkUnderWater(Gear: PGear);
   235 procedure doStepHealthTagWorkUnderWater(Gear: PGear);
   234 begin
   236 begin
   235 if Gear^.Kind = gtHealthTag then
   237 AllInactive:= false;
   236 	AllInactive:= false;
       
   237 
   238 
   238 Gear^.Y:= Gear^.Y - _0_08;
   239 Gear^.Y:= Gear^.Y - _0_08;
   239 
   240 
   240 if hwRound(Gear^.Y) < cWaterLine + 10 then
   241 if hwRound(Gear^.Y) < cWaterLine + 10 then
   241    DeleteGear(Gear)
   242 	DeleteGear(Gear)
   242 end;
   243 end;
   243 
   244 
   244 procedure doStepHealthTag(Gear: PGear);
   245 procedure doStepHealthTag(Gear: PGear);
   245 var s: shortstring;
   246 var s: shortstring;
   246     font: THWFont;
   247 begin
   247 begin
   248 AllInactive:= false;
   248 if Gear^.Kind = gtHealthTag then
   249 Gear^.dY:= -_0_08;
   249    begin
       
   250    AllInactive:= false;
       
   251    font:= fnt16;
       
   252    Gear^.dY:= -_0_08
       
   253    end else
       
   254    begin
       
   255    font:= fntSmall;
       
   256    Gear^.dY:= -_0_02
       
   257    end;
       
   258 
   250 
   259 str(Gear^.State, s);
   251 str(Gear^.State, s);
   260 Gear^.Tex:= RenderStringTex(s, PHedgehog(Gear^.Hedgehog)^.Team^.Clan^.Color, font);
   252 Gear^.Tex:= RenderStringTex(s, PHedgehog(Gear^.Hedgehog)^.Team^.Clan^.Color, fnt16);
   261 if hwRound(Gear^.Y) < cWaterLine then Gear^.doStep:= @doStepHealthTagWork
   253 
   262                                  else Gear^.doStep:= @doStepHealthTagWorkUnderWater;
   254 if hwRound(Gear^.Y) < cWaterLine then
       
   255 	Gear^.doStep:= @doStepHealthTagWork
       
   256 else
       
   257 	Gear^.doStep:= @doStepHealthTagWorkUnderWater;
       
   258 
   263 Gear^.Y:= Gear^.Y - int2hwFloat(Gear^.Tex^.h)
   259 Gear^.Y:= Gear^.Y - int2hwFloat(Gear^.Tex^.h)
   264 end;
   260 end;
   265 
   261 
   266 ////////////////////////////////////////////////////////////////////////////////
   262 ////////////////////////////////////////////////////////////////////////////////
   267 procedure doStepGrave(Gear: PGear);
   263 procedure doStepGrave(Gear: PGear);
   278          begin
   274          begin
   279          Gear^.Active:= false;
   275          Gear^.Active:= false;
   280          exit
   276          exit
   281          end else if Gear^.dY < - _0_03 then PlaySound(sndGraveImpact, false)
   277          end else if Gear^.dY < - _0_03 then PlaySound(sndGraveImpact, false)
   282       end;
   278       end;
       
   279 
   283 Gear^.Y:= Gear^.Y + Gear^.dY;
   280 Gear^.Y:= Gear^.Y + Gear^.dY;
   284 CheckGearDrowning(Gear);
   281 CheckGearDrowning(Gear);
   285 Gear^.dY:= Gear^.dY + cGravity
   282 Gear^.dY:= Gear^.dY + cGravity
   286 end;
   283 end;
   287 
   284