diff --git a/src/game/g_items.pas b/src/game/g_items.pas
index e912c427e11037a5d5fc9687c3578cdf93ae42f7..d94b996e05b7436b9b8d487f3e181a81d508ccba 100644 (file)
--- a/src/game/g_items.pas
+++ b/src/game/g_items.pas
+(* Copyright (C) DooM 2D:Forever Developers
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *)
+{$MODE DELPHI}
unit g_items;
interface
uses
unit g_items;
interface
uses
- g_textures, g_phys, g_saveload, BinEditor;
+ g_textures, g_phys, g_saveload, BinEditor, MAPDEF;
Type
TItem = record
Type
TItem = record
var
gItems: Array of TItem = nil;
var
gItems: Array of TItem = nil;
- gItemsTexturesID: Array [1..35] of DWORD;
+ gItemsTexturesID: Array [1..ITEM_MAX] of DWORD;
gMaxDist: Integer = 1;
ITEM_RESPAWNTIME: Integer = 60 * 36;
gMaxDist: Integer = 1;
ITEM_RESPAWNTIME: Integer = 60 * 36;
uses
g_basic, e_graphics, g_sound, g_main, g_gfx, g_map,
Math, g_game, g_triggers, g_console, SysUtils, g_player, g_net, g_netmsg,
uses
g_basic, e_graphics, g_sound, g_main, g_gfx, g_map,
Math, g_game, g_triggers, g_console, SysUtils, g_player, g_net, g_netmsg,
- MAPDEF, e_log;
+ e_log;
const
ITEM_SIGNATURE = $4D455449; // 'ITEM'
const
ITEM_SIGNATURE = $4D455449; // 'ITEM'
((14), (18)), // BOTTLE
((16), (15)), // HELMET
((32), (24)), // JETPACK
((14), (18)), // BOTTLE
((16), (15)), // HELMET
((32), (24)), // JETPACK
- ((25), (25))); // INVIS
+ ((25), (25)), // INVIS
+ ((53), (20)), // WEAPON_FLAMETHROWER
+ ((13), (20))); // AMMO_FUELCAN
procedure InitTextures();
begin
procedure InitTextures();
begin
g_Texture_Get('ITEM_WEAPON_PLASMA', gItemsTexturesID[ITEM_WEAPON_PLASMA]);
g_Texture_Get('ITEM_WEAPON_BFG', gItemsTexturesID[ITEM_WEAPON_BFG]);
g_Texture_Get('ITEM_WEAPON_SUPERPULEMET', gItemsTexturesID[ITEM_WEAPON_SUPERPULEMET]);
g_Texture_Get('ITEM_WEAPON_PLASMA', gItemsTexturesID[ITEM_WEAPON_PLASMA]);
g_Texture_Get('ITEM_WEAPON_BFG', gItemsTexturesID[ITEM_WEAPON_BFG]);
g_Texture_Get('ITEM_WEAPON_SUPERPULEMET', gItemsTexturesID[ITEM_WEAPON_SUPERPULEMET]);
+ g_Texture_Get('ITEM_WEAPON_FLAMETHROWER', gItemsTexturesID[ITEM_WEAPON_FLAMETHROWER]);
g_Texture_Get('ITEM_AMMO_BULLETS', gItemsTexturesID[ITEM_AMMO_BULLETS]);
g_Texture_Get('ITEM_AMMO_BULLETS_BOX', gItemsTexturesID[ITEM_AMMO_BULLETS_BOX]);
g_Texture_Get('ITEM_AMMO_SHELLS', gItemsTexturesID[ITEM_AMMO_SHELLS]);
g_Texture_Get('ITEM_AMMO_BULLETS', gItemsTexturesID[ITEM_AMMO_BULLETS]);
g_Texture_Get('ITEM_AMMO_BULLETS_BOX', gItemsTexturesID[ITEM_AMMO_BULLETS_BOX]);
g_Texture_Get('ITEM_AMMO_SHELLS', gItemsTexturesID[ITEM_AMMO_SHELLS]);
g_Texture_Get('ITEM_AMMO_ROCKET_BOX', gItemsTexturesID[ITEM_AMMO_ROCKET_BOX]);
g_Texture_Get('ITEM_AMMO_CELL', gItemsTexturesID[ITEM_AMMO_CELL]);
g_Texture_Get('ITEM_AMMO_CELL_BIG', gItemsTexturesID[ITEM_AMMO_CELL_BIG]);
g_Texture_Get('ITEM_AMMO_ROCKET_BOX', gItemsTexturesID[ITEM_AMMO_ROCKET_BOX]);
g_Texture_Get('ITEM_AMMO_CELL', gItemsTexturesID[ITEM_AMMO_CELL]);
g_Texture_Get('ITEM_AMMO_CELL_BIG', gItemsTexturesID[ITEM_AMMO_CELL_BIG]);
+ g_Texture_Get('ITEM_AMMO_FUELCAN', gItemsTexturesID[ITEM_AMMO_FUELCAN]);
g_Texture_Get('ITEM_AMMO_BACKPACK', gItemsTexturesID[ITEM_AMMO_BACKPACK]);
g_Texture_Get('ITEM_KEY_RED', gItemsTexturesID[ITEM_KEY_RED]);
g_Texture_Get('ITEM_KEY_GREEN', gItemsTexturesID[ITEM_KEY_GREEN]);
g_Texture_Get('ITEM_AMMO_BACKPACK', gItemsTexturesID[ITEM_AMMO_BACKPACK]);
g_Texture_Get('ITEM_KEY_RED', gItemsTexturesID[ITEM_KEY_RED]);
g_Texture_Get('ITEM_KEY_GREEN', gItemsTexturesID[ITEM_KEY_GREEN]);
g_Texture_CreateWADEx('ITEM_WEAPON_PLASMA', GameWAD+':TEXTURES\PGUN');
g_Texture_CreateWADEx('ITEM_WEAPON_BFG', GameWAD+':TEXTURES\BFG');
g_Texture_CreateWADEx('ITEM_WEAPON_SUPERPULEMET', GameWAD+':TEXTURES\SPULEMET');
g_Texture_CreateWADEx('ITEM_WEAPON_PLASMA', GameWAD+':TEXTURES\PGUN');
g_Texture_CreateWADEx('ITEM_WEAPON_BFG', GameWAD+':TEXTURES\BFG');
g_Texture_CreateWADEx('ITEM_WEAPON_SUPERPULEMET', GameWAD+':TEXTURES\SPULEMET');
+ g_Texture_CreateWADEx('ITEM_WEAPON_FLAMETHROWER', GameWAD+':TEXTURES\FLAMETHROWER');
g_Texture_CreateWADEx('ITEM_AMMO_BULLETS', GameWAD+':TEXTURES\CLIP');
g_Texture_CreateWADEx('ITEM_AMMO_BULLETS_BOX', GameWAD+':TEXTURES\AMMO');
g_Texture_CreateWADEx('ITEM_AMMO_SHELLS', GameWAD+':TEXTURES\SHELL1');
g_Texture_CreateWADEx('ITEM_AMMO_BULLETS', GameWAD+':TEXTURES\CLIP');
g_Texture_CreateWADEx('ITEM_AMMO_BULLETS_BOX', GameWAD+':TEXTURES\AMMO');
g_Texture_CreateWADEx('ITEM_AMMO_SHELLS', GameWAD+':TEXTURES\SHELL1');
g_Texture_CreateWADEx('ITEM_AMMO_ROCKET_BOX', GameWAD+':TEXTURES\ROCKETS');
g_Texture_CreateWADEx('ITEM_AMMO_CELL', GameWAD+':TEXTURES\CELL');
g_Texture_CreateWADEx('ITEM_AMMO_CELL_BIG', GameWAD+':TEXTURES\CELL2');
g_Texture_CreateWADEx('ITEM_AMMO_ROCKET_BOX', GameWAD+':TEXTURES\ROCKETS');
g_Texture_CreateWADEx('ITEM_AMMO_CELL', GameWAD+':TEXTURES\CELL');
g_Texture_CreateWADEx('ITEM_AMMO_CELL_BIG', GameWAD+':TEXTURES\CELL2');
+ g_Texture_CreateWADEx('ITEM_AMMO_FUELCAN', GameWAD+':TEXTURES\FUELCAN');
g_Texture_CreateWADEx('ITEM_AMMO_BACKPACK', GameWAD+':TEXTURES\BPACK');
g_Texture_CreateWADEx('ITEM_KEY_RED', GameWAD+':TEXTURES\KEYR');
g_Texture_CreateWADEx('ITEM_KEY_GREEN', GameWAD+':TEXTURES\KEYG');
g_Texture_CreateWADEx('ITEM_AMMO_BACKPACK', GameWAD+':TEXTURES\BPACK');
g_Texture_CreateWADEx('ITEM_KEY_RED', GameWAD+':TEXTURES\KEYR');
g_Texture_CreateWADEx('ITEM_KEY_GREEN', GameWAD+':TEXTURES\KEYG');
g_Texture_Delete('ITEM_WEAPON_PLASMA');
g_Texture_Delete('ITEM_WEAPON_BFG');
g_Texture_Delete('ITEM_WEAPON_SUPERPULEMET');
g_Texture_Delete('ITEM_WEAPON_PLASMA');
g_Texture_Delete('ITEM_WEAPON_BFG');
g_Texture_Delete('ITEM_WEAPON_SUPERPULEMET');
+ g_Texture_Delete('ITEM_WEAPON_FLAMETHROWER');
g_Texture_Delete('ITEM_AMMO_BULLETS');
g_Texture_Delete('ITEM_AMMO_BULLETS_BOX');
g_Texture_Delete('ITEM_AMMO_SHELLS');
g_Texture_Delete('ITEM_AMMO_BULLETS');
g_Texture_Delete('ITEM_AMMO_BULLETS_BOX');
g_Texture_Delete('ITEM_AMMO_SHELLS');
g_Texture_Delete('ITEM_AMMO_ROCKET_BOX');
g_Texture_Delete('ITEM_AMMO_CELL');
g_Texture_Delete('ITEM_AMMO_CELL_BIG');
g_Texture_Delete('ITEM_AMMO_ROCKET_BOX');
g_Texture_Delete('ITEM_AMMO_CELL');
g_Texture_Delete('ITEM_AMMO_CELL_BIG');
+ g_Texture_Delete('ITEM_AMMO_FUELCAN');
g_Texture_Delete('ITEM_AMMO_BACKPACK');
g_Texture_Delete('ITEM_KEY_RED');
g_Texture_Delete('ITEM_KEY_GREEN');
g_Texture_Delete('ITEM_AMMO_BACKPACK');
g_Texture_Delete('ITEM_KEY_RED');
g_Texture_Delete('ITEM_KEY_GREEN');
with gItems[i] do
begin
nxt := False;
with gItems[i] do
begin
nxt := False;
-
+
if Live then
begin
if Fall then
if Live then
begin
if Fall then
else
if ItemType in [ITEM_WEAPON_SAW, ITEM_WEAPON_PISTOL, ITEM_WEAPON_SHOTGUN1, ITEM_WEAPON_SHOTGUN2,
ITEM_WEAPON_CHAINGUN, ITEM_WEAPON_ROCKETLAUNCHER, ITEM_WEAPON_PLASMA,
else
if ItemType in [ITEM_WEAPON_SAW, ITEM_WEAPON_PISTOL, ITEM_WEAPON_SHOTGUN1, ITEM_WEAPON_SHOTGUN2,
ITEM_WEAPON_CHAINGUN, ITEM_WEAPON_ROCKETLAUNCHER, ITEM_WEAPON_PLASMA,
- ITEM_WEAPON_BFG, ITEM_WEAPON_SUPERPULEMET, ITEM_AMMO_BACKPACK] then
+ ITEM_WEAPON_BFG, ITEM_WEAPON_SUPERPULEMET, ITEM_WEAPON_FLAMETHROWER,
+ ITEM_AMMO_BACKPACK] then
g_Sound_PlayExAt('SOUND_ITEM_GETWEAPON',
gPlayers[j].Obj.X, gPlayers[j].Obj.Y)
else
g_Sound_PlayExAt('SOUND_ITEM_GETWEAPON',
gPlayers[j].Obj.X, gPlayers[j].Obj.Y)
else
else
if ItemType in [ITEM_WEAPON_SAW, ITEM_WEAPON_PISTOL, ITEM_WEAPON_SHOTGUN1, ITEM_WEAPON_SHOTGUN2,
ITEM_WEAPON_CHAINGUN, ITEM_WEAPON_ROCKETLAUNCHER, ITEM_WEAPON_PLASMA,
else
if ItemType in [ITEM_WEAPON_SAW, ITEM_WEAPON_PISTOL, ITEM_WEAPON_SHOTGUN1, ITEM_WEAPON_SHOTGUN2,
ITEM_WEAPON_CHAINGUN, ITEM_WEAPON_ROCKETLAUNCHER, ITEM_WEAPON_PLASMA,
- ITEM_WEAPON_BFG, ITEM_WEAPON_SUPERPULEMET] then
+ ITEM_WEAPON_BFG, ITEM_WEAPON_SUPERPULEMET, ITEM_WEAPON_FLAMETHROWER] then
g_Sound_PlayExAt('SOUND_ITEM_GETWEAPON',
gPlayers[j].Obj.X, gPlayers[j].Obj.Y)
else
g_Sound_PlayExAt('SOUND_ITEM_GETWEAPON',
gPlayers[j].Obj.X, gPlayers[j].Obj.Y)
else