DEADSOFTWARE

add direct weapon switching
[d2df-sdl.git] / src / game / g_player.pas
index f2a98ff8aedc6f6f86c10b39ed904677955781fc..caddc0d9e7612dfa230b9676b010a95373bb6cbb 100644 (file)
@@ -287,6 +287,7 @@ type
     procedure   NetFire(Wpn: Byte; X, Y, AX, AY: Integer; WID: Integer = -1);
     procedure   DoLerp(Level: Integer = 2);
     procedure   SetLerp(XTo, YTo: Integer);
+    procedure   ForceWeapon(Weapon: Byte);
     procedure   JetpackOn;
     procedure   JetpackOff;
 
@@ -3250,6 +3251,30 @@ begin
               150, 0, 0);
 end;
 
+procedure TPlayer.ForceWeapon(Weapon: Byte);
+var
+  i: Byte;
+begin
+  if g_Game_IsClient then Exit;
+  if Weapon > High(FWeapon) then Exit;
+  if FBFGFireCounter <> -1 then Exit;
+
+  if FTime[T_SWITCH] > gTime then Exit;
+
+  for i := WEAPON_KASTET to WEAPON_SUPERPULEMET do
+    if FReloading[i] > 0 then Exit;
+
+  if FWeapon[Weapon] then
+  begin
+    FCurrWeap := Weapon;
+    FTime[T_SWITCH] := gTime+156;
+    if FCurrWeap = WEAPON_SAW then
+      FSawSoundSelect.PlayAt(FObj.X, FObj.Y);
+    FModel.SetWeapon(FCurrWeap);
+    if g_Game_IsNet then MH_SEND_PlayerStats(FUID);
+  end;
+end;
+
 procedure TPlayer.NextWeapon();
 var
   i: Byte;