diff --git a/src/game/g_weapons.pas b/src/game/g_weapons.pas
index 9b2b96808fc5fe09991d523063ef5a70e5a03291..8554e2264e3ecdc711a000b69b75f738c68c50c9 100644 (file)
--- a/src/game/g_weapons.pas
+++ b/src/game/g_weapons.pas
@@ -54,16 +54,16 @@ function g_Weapon_CreateShot(I: Integer; ShotType: Byte; Spawner, TargetUID: Wor
procedure g_Weapon_gun(const x, y, xd, yd, v, indmg: Integer; SpawnerUID: Word; CheckTrigger: Boolean);
procedure g_Weapon_punch(x, y: Integer; d, SpawnerUID: Word);
function g_Weapon_chainsaw(x, y: Integer; d, SpawnerUID: Word): Integer;
-procedure g_Weapon_rocket(x, y, xd, yd: Integer; SpawnerUID: Word; WID: Integer = -1; Silent: Boolean = False);
+procedure g_Weapon_rocket(x, y, xd, yd: Integer; SpawnerUID: Word; WID: Integer = -1; Silent: Boolean = False; compat: Boolean = true);
procedure g_Weapon_revf(x, y, xd, yd: Integer; SpawnerUID, TargetUID: Word; WID: Integer = -1; Silent: Boolean = False);
-procedure g_Weapon_flame(x, y, xd, yd: Integer; SpawnerUID: Word; WID: Integer = -1; Silent: Boolean = False);
-procedure g_Weapon_plasma(x, y, xd, yd: Integer; SpawnerUID: Word; WID: Integer = -1; Silent: Boolean = False);
-procedure g_Weapon_ball1(x, y, xd, yd: Integer; SpawnerUID: Word; WID: Integer = -1; Silent: Boolean = False);
-procedure g_Weapon_ball2(x, y, xd, yd: Integer; SpawnerUID: Word; WID: Integer = -1; Silent: Boolean = False);
-procedure g_Weapon_ball7(x, y, xd, yd: Integer; SpawnerUID: Word; WID: Integer = -1; Silent: Boolean = False);
-procedure g_Weapon_aplasma(x, y, xd, yd: Integer; SpawnerUID: Word; WID: Integer = -1; Silent: Boolean = False);
-procedure g_Weapon_manfire(x, y, xd, yd: Integer; SpawnerUID: Word; WID: Integer = -1; Silent: Boolean = False);
-procedure g_Weapon_bfgshot(x, y, xd, yd: Integer; SpawnerUID: Word; WID: Integer = -1; Silent: Boolean = False);
+procedure g_Weapon_flame(x, y, xd, yd: Integer; SpawnerUID: Word; WID: Integer = -1; Silent: Boolean = False; compat: Boolean = true);
+procedure g_Weapon_plasma(x, y, xd, yd: Integer; SpawnerUID: Word; WID: Integer = -1; Silent: Boolean = False; compat: Boolean = true);
+procedure g_Weapon_ball1(x, y, xd, yd: Integer; SpawnerUID: Word; WID: Integer = -1; Silent: Boolean = False; compat: Boolean = true);
+procedure g_Weapon_ball2(x, y, xd, yd: Integer; SpawnerUID: Word; WID: Integer = -1; Silent: Boolean = False; compat: Boolean = true);
+procedure g_Weapon_ball7(x, y, xd, yd: Integer; SpawnerUID: Word; WID: Integer = -1; Silent: Boolean = False; compat: Boolean = true);
+procedure g_Weapon_aplasma(x, y, xd, yd: Integer; SpawnerUID: Word; WID: Integer = -1; Silent: Boolean = False; compat: Boolean = true);
+procedure g_Weapon_manfire(x, y, xd, yd: Integer; SpawnerUID: Word; WID: Integer = -1; Silent: Boolean = False; compat: Boolean = true);
+procedure g_Weapon_bfgshot(x, y, xd, yd: Integer; SpawnerUID: Word; WID: Integer = -1; Silent: Boolean = False; compat: Boolean = true);
procedure g_Weapon_bfghit(x, y: Integer);
procedure g_Weapon_pistol(x, y, xd, yd: Integer; SpawnerUID: Word; Silent: Boolean = False);
procedure g_Weapon_mgun(x, y, xd, yd: Integer; SpawnerUID: Word; Silent: Boolean = False);
end;
procedure g_Weapon_rocket(x, y, xd, yd: Integer; SpawnerUID: Word; WID: Integer = -1;
- Silent: Boolean = False);
+ Silent: Boolean = False; compat: Boolean = true);
var
find_id: DWORD;
dx, dy: Integer;
Obj.Rect.Width := SHOT_ROCKETLAUNCHER_WIDTH;
Obj.Rect.Height := SHOT_ROCKETLAUNCHER_HEIGHT;
- dx := IfThen(xd > x, -Obj.Rect.Width, 0);
+ if compat then
+ dx := IfThen(xd > x, -Obj.Rect.Width, 0)
+ else
+ dx := -(Obj.Rect.Width div 2);
dy := -(Obj.Rect.Height div 2);
ShotType := WEAPON_ROCKETLAUNCHER;
end;
procedure g_Weapon_plasma(x, y, xd, yd: Integer; SpawnerUID: Word; WID: Integer = -1;
- Silent: Boolean = False);
+ Silent: Boolean = False; compat: Boolean = true);
var
find_id, FramesID: DWORD;
dx, dy: Integer;
Obj.Rect.Width := SHOT_PLASMA_WIDTH;
Obj.Rect.Height := SHOT_PLASMA_HEIGHT;
- dx := IfThen(xd>x, -Obj.Rect.Width, 0);
+ if compat then
+ dx := IfThen(xd > x, -Obj.Rect.Width, 0)
+ else
+ dx := -(Obj.Rect.Width div 2);
dy := -(Obj.Rect.Height div 2);
ShotType := WEAPON_PLASMA;
end;
procedure g_Weapon_flame(x, y, xd, yd: Integer; SpawnerUID: Word; WID: Integer = -1;
- Silent: Boolean = False);
+ Silent: Boolean = False; compat: Boolean = true);
var
find_id: DWORD;
dx, dy: Integer;
Obj.Rect.Width := SHOT_FLAME_WIDTH;
Obj.Rect.Height := SHOT_FLAME_HEIGHT;
- dx := IfThen(xd>x, -Obj.Rect.Width, 0);
+ if compat then
+ dx := IfThen(xd > x, -Obj.Rect.Width, 0)
+ else
+ dx := -(Obj.Rect.Width div 2);
dy := -(Obj.Rect.Height div 2);
ShotType := WEAPON_FLAMETHROWER;
end;
procedure g_Weapon_ball1(x, y, xd, yd: Integer; SpawnerUID: Word; WID: Integer = -1;
- Silent: Boolean = False);
+ Silent: Boolean = False; compat: Boolean = true);
var
find_id, FramesID: DWORD;
dx, dy: Integer;
Obj.Rect.Width := 16;
Obj.Rect.Height := 16;
- dx := IfThen(xd>x, -Obj.Rect.Width, 0);
+ if compat then
+ dx := IfThen(xd > x, -Obj.Rect.Width, 0)
+ else
+ dx := -(Obj.Rect.Width div 2);
dy := -(Obj.Rect.Height div 2);
ShotType := WEAPON_IMP_FIRE;
end;
procedure g_Weapon_ball2(x, y, xd, yd: Integer; SpawnerUID: Word; WID: Integer = -1;
- Silent: Boolean = False);
+ Silent: Boolean = False; compat: Boolean = true);
var
find_id, FramesID: DWORD;
dx, dy: Integer;
Obj.Rect.Width := 16;
Obj.Rect.Height := 16;
- dx := IfThen(xd>x, -Obj.Rect.Width, 0);
+ if compat then
+ dx := IfThen(xd > x, -Obj.Rect.Width, 0)
+ else
+ dx := -(Obj.Rect.Width div 2);
dy := -(Obj.Rect.Height div 2);
ShotType := WEAPON_CACO_FIRE;
end;
procedure g_Weapon_ball7(x, y, xd, yd: Integer; SpawnerUID: Word; WID: Integer = -1;
- Silent: Boolean = False);
+ Silent: Boolean = False; compat: Boolean = true);
var
find_id, FramesID: DWORD;
dx, dy: Integer;
Obj.Rect.Width := 16;
Obj.Rect.Height := 16;
- dx := IfThen(xd>x, -Obj.Rect.Width, 0);
+ if compat then
+ dx := IfThen(xd > x, -Obj.Rect.Width, 0)
+ else
+ dx := -(Obj.Rect.Width div 2);
dy := -(Obj.Rect.Height div 2);
ShotType := WEAPON_BARON_FIRE;
end;
procedure g_Weapon_aplasma(x, y, xd, yd: Integer; SpawnerUID: Word; WID: Integer = -1;
- Silent: Boolean = False);
+ Silent: Boolean = False; compat: Boolean = true);
var
find_id, FramesID: DWORD;
dx, dy: Integer;
Obj.Rect.Width := 16;
Obj.Rect.Height := 16;
- dx := IfThen(xd>x, -Obj.Rect.Width, 0);
+ if compat then
+ dx := IfThen(xd > x, -Obj.Rect.Width, 0)
+ else
+ dx := -(Obj.Rect.Width div 2);
dy := -(Obj.Rect.Height div 2);
ShotType := WEAPON_BSP_FIRE;
end;
procedure g_Weapon_manfire(x, y, xd, yd: Integer; SpawnerUID: Word; WID: Integer = -1;
- Silent: Boolean = False);
+ Silent: Boolean = False; compat: Boolean = true);
var
find_id, FramesID: DWORD;
dx, dy: Integer;
Obj.Rect.Width := 32;
Obj.Rect.Height := 32;
- dx := IfThen(xd>x, -Obj.Rect.Width, 0);
+ if compat then
+ dx := IfThen(xd > x, -Obj.Rect.Width, 0)
+ else
+ dx := -(Obj.Rect.Width div 2);
dy := -(Obj.Rect.Height div 2);
ShotType := WEAPON_MANCUB_FIRE;
end;
procedure g_Weapon_bfgshot(x, y, xd, yd: Integer; SpawnerUID: Word; WID: Integer = -1;
- Silent: Boolean = False);
+ Silent: Boolean = False; compat: Boolean = true);
var
find_id, FramesID: DWORD;
dx, dy: Integer;
Obj.Rect.Width := SHOT_BFG_WIDTH;
Obj.Rect.Height := SHOT_BFG_HEIGHT;
- dx := IfThen(xd>x, -Obj.Rect.Width, 0);
+ if compat then
+ dx := IfThen(xd > x, -Obj.Rect.Width, 0)
+ else
+ dx := -(Obj.Rect.Width div 2);
dy := -(Obj.Rect.Height div 2);
ShotType := WEAPON_BFG;