DEADSOFTWARE

network: server is weapon authority!
[d2df-sdl.git] / src / game / g_player.pas
index 0565c75b2761056ab75ca321ac9c3d6c556cd480..66f0099063c3027084c4b32418d174acf77ed4e3 100644 (file)
@@ -280,7 +280,7 @@ type
     procedure   ReleaseKeysNoWeapon();
     procedure   SetModel(ModelName: String);
     procedure   SetColor(Color: TRGB);
-    procedure   SetWeapon(W: Byte);
+    procedure   SetWeaponHost(W: Byte);
     function    IsKeyPressed(K: Byte): Boolean;
     function    GetKeys(): Byte;
     function    PickItem(ItemType: Byte; arespawn: Boolean; var remove: Boolean): Boolean; virtual;
@@ -3887,9 +3887,12 @@ begin
   FNextWeap := $4000;
 end;
 
-// used by network layer
-procedure TPlayer.SetWeapon(W: Byte);
+// used exclusively by network layer
+procedure TPlayer.SetWeaponHost(W: Byte);
 begin
+  if (W > High(FWeapon)) then exit;
+  if (not FWeapon[W]) then exit; // server is authority!
+
   if FCurrWeap <> W then
     if (W = WEAPON_SAW) then
       FSawSoundSelect.PlayAt(FObj.X, FObj.Y);