Start of Dehacked 'Misc' section support. Initial Health+Bullets,
and bfg cells/shot are supported. Subversion-branch: /trunk/chocolate-doom Subversion-revision: 206
This commit is contained in:
parent
eb11f9bfbb
commit
4dc1ca199d
5 changed files with 162 additions and 15 deletions
|
|
@ -30,8 +30,8 @@ dstrings.h i_system.c p_doors.c p_switch.c r_state.h mmus2mid.c \
|
|||
d_textur.h i_system.h p_enemy.c p_telept.c r_things.c mmus2mid.h \
|
||||
deh_defs.h deh_frame.c deh_main.c deh_ptr.c deh_text.c deh_thing.c \
|
||||
deh_io.c deh_io.h deh_ammo.c deh_cheat.c deh_weapon.c \
|
||||
deh_misc.c deh_mapping.c deh_mapping.h deh_sound.c deh_main.h \
|
||||
w_merge.c w_merge.h doomfeatures.h
|
||||
deh_misc.c deh_misc.h deh_sound.c deh_main.h doomfeatures.h \
|
||||
w_merge.c w_merge.h deh_mapping.c deh_mapping.h
|
||||
|
||||
|
||||
if HAVE_WINDRES
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
// Emacs style mode select -*- C++ -*-
|
||||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
// $Id: deh_misc.c 175 2005-10-08 20:54:16Z fraggle $
|
||||
// $Id: deh_misc.c 206 2005-10-17 20:27:05Z fraggle $
|
||||
//
|
||||
// Copyright(C) 2005 Simon Howard
|
||||
//
|
||||
|
|
@ -21,6 +21,10 @@
|
|||
// 02111-1307, USA.
|
||||
//
|
||||
// $Log$
|
||||
// Revision 1.3 2005/10/17 20:27:05 fraggle
|
||||
// Start of Dehacked 'Misc' section support. Initial Health+Bullets,
|
||||
// and bfg cells/shot are supported.
|
||||
//
|
||||
// Revision 1.2 2005/10/08 20:54:16 fraggle
|
||||
// Proper dehacked error/warning framework. Catch a load more errors.
|
||||
//
|
||||
|
|
@ -34,19 +38,93 @@
|
|||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "doomdef.h"
|
||||
#include "doomtype.h"
|
||||
#include "deh_defs.h"
|
||||
#include "deh_io.h"
|
||||
#include "deh_main.h"
|
||||
|
||||
int deh_initial_health = 100;
|
||||
int deh_initial_bullets = 50;
|
||||
int deh_max_health; // TODO
|
||||
int deh_max_armor; // TODO
|
||||
int deh_green_armor_class; // TODO
|
||||
int deh_blue_armor_class; // TODO
|
||||
int deh_max_soulsphere; // TODO
|
||||
int deh_soulsphere_health; // TODO
|
||||
int deh_megasphere_health; // TODO
|
||||
int deh_god_mode_health; // TODO
|
||||
int deh_idfa_armor; // TODO
|
||||
int deh_idfa_armor_class; // TODO
|
||||
int deh_idkfa_armor; // TODO
|
||||
int deh_idkfa_armor_class; // TODO
|
||||
int deh_bfg_cells_per_shot = 40;
|
||||
int deh_monsters_infight; // TODO
|
||||
|
||||
static struct
|
||||
{
|
||||
char *deh_name;
|
||||
int *value;
|
||||
boolean functional;
|
||||
} misc_settings[] = {
|
||||
{"Initial Health", &deh_initial_health, true},
|
||||
{"Initial Bullets", &deh_initial_bullets, true},
|
||||
{"Max Health", &deh_max_health},
|
||||
{"Max Armor", &deh_max_armor},
|
||||
{"Green Armor Class", &deh_green_armor_class},
|
||||
{"Blue Armor Class", &deh_blue_armor_class},
|
||||
{"Max Soulsphere", &deh_max_soulsphere},
|
||||
{"Soulsphere Health", &deh_soulsphere_health},
|
||||
{"Megasphere Health", &deh_megasphere_health},
|
||||
{"God Mode Health", &deh_god_mode_health},
|
||||
{"IDFA Armor", &deh_idfa_armor},
|
||||
{"IDFA Armor Class", &deh_idfa_armor_class},
|
||||
{"IDKFA Armor", &deh_idkfa_armor},
|
||||
{"IDKFA Armor Class", &deh_idkfa_armor_class},
|
||||
{"BFG Cells/Shot", &deh_bfg_cells_per_shot, true},
|
||||
{"Monsters Infight", &deh_monsters_infight},
|
||||
};
|
||||
|
||||
static void *DEH_MiscStart(deh_context_t *context, char *line)
|
||||
{
|
||||
DEH_Warning(context, "Dehacked 'Misc' sections are not supported yet.");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static void DEH_MiscParseLine(deh_context_t *context, char *line, void *tag)
|
||||
{
|
||||
char *variable_name, *value;
|
||||
int ivalue;
|
||||
int i;
|
||||
|
||||
if (!DEH_ParseAssignment(line, &variable_name, &value))
|
||||
{
|
||||
// Failed to parse
|
||||
|
||||
DEH_Warning(context, "Failed to parse assignment");
|
||||
return;
|
||||
}
|
||||
|
||||
ivalue = atoi(value);
|
||||
|
||||
for (i=0; i<sizeof(misc_settings) / sizeof(*misc_settings); ++i)
|
||||
{
|
||||
if (!strcasecmp(variable_name, misc_settings[i].deh_name))
|
||||
{
|
||||
if (!misc_settings[i].functional)
|
||||
{
|
||||
DEH_Warning(context, "Misc variable '%s' is not yet functional",
|
||||
variable_name);
|
||||
}
|
||||
|
||||
*misc_settings[i].value = ivalue;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
DEH_Warning(context, "Unknown Misc variable '%s'", variable_name);
|
||||
}
|
||||
|
||||
deh_section_t deh_section_misc =
|
||||
|
|
|
|||
62
src/deh_misc.h
Normal file
62
src/deh_misc.h
Normal file
|
|
@ -0,0 +1,62 @@
|
|||
// Emacs style mode select -*- C++ -*-
|
||||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
// $Id: deh_misc.h 206 2005-10-17 20:27:05Z fraggle $
|
||||
//
|
||||
// Copyright(C) 2005 Simon Howard
|
||||
//
|
||||
// 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 2
|
||||
// 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, write to the Free Software
|
||||
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
|
||||
// 02111-1307, USA.
|
||||
//
|
||||
// $Log$
|
||||
// Revision 1.1 2005/10/17 20:27:05 fraggle
|
||||
// Start of Dehacked 'Misc' section support. Initial Health+Bullets,
|
||||
// and bfg cells/shot are supported.
|
||||
//
|
||||
// Revision 1.2 2005/10/08 20:54:16 fraggle
|
||||
// Proper dehacked error/warning framework. Catch a load more errors.
|
||||
//
|
||||
// Revision 1.1 2005/10/04 22:10:32 fraggle
|
||||
// Dehacked "Misc" section parser (currently a dummy)
|
||||
//
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
// Parses "Misc" sections in dehacked files
|
||||
//
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
#ifndef DEH_MISC_H
|
||||
#define DEH_MISC_H
|
||||
|
||||
extern int deh_initial_health;
|
||||
extern int deh_initial_bullets;
|
||||
extern int deh_max_health;
|
||||
extern int deh_max_armor;
|
||||
extern int deh_green_armor_class;
|
||||
extern int deh_blue_armor_class;
|
||||
extern int deh_max_soulsphere;
|
||||
extern int deh_soulsphere_health;
|
||||
extern int deh_megasphere_health;
|
||||
extern int deh_god_mode_health;
|
||||
extern int deh_idfa_armor;
|
||||
extern int deh_idfa_armor_class;
|
||||
extern int deh_idkfa_armor;
|
||||
extern int deh_idkfa_armor_class;
|
||||
extern int deh_bfg_cells_per_shot;
|
||||
extern int deh_monsters_infight;
|
||||
|
||||
#endif /* #ifndef DEH_MISC_H */
|
||||
|
||||
13
src/g_game.c
13
src/g_game.c
|
|
@ -1,7 +1,7 @@
|
|||
// Emacs style mode select -*- C++ -*-
|
||||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
// $Id: g_game.c 204 2005-10-16 20:55:50Z fraggle $
|
||||
// $Id: g_game.c 206 2005-10-17 20:27:05Z fraggle $
|
||||
//
|
||||
// Copyright(C) 1993-1996 Id Software, Inc.
|
||||
// Copyright(C) 2005 Simon Howard
|
||||
|
|
@ -22,6 +22,10 @@
|
|||
// 02111-1307, USA.
|
||||
//
|
||||
// $Log$
|
||||
// Revision 1.16 2005/10/17 20:27:05 fraggle
|
||||
// Start of Dehacked 'Misc' section support. Initial Health+Bullets,
|
||||
// and bfg cells/shot are supported.
|
||||
//
|
||||
// Revision 1.15 2005/10/16 20:55:50 fraggle
|
||||
// Fix the '-cdrom' command-line option.
|
||||
//
|
||||
|
|
@ -85,7 +89,7 @@
|
|||
|
||||
|
||||
static const char
|
||||
rcsid[] = "$Id: g_game.c 204 2005-10-16 20:55:50Z fraggle $";
|
||||
rcsid[] = "$Id: g_game.c 206 2005-10-17 20:27:05Z fraggle $";
|
||||
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
|
|
@ -94,6 +98,7 @@ rcsid[] = "$Id: g_game.c 204 2005-10-16 20:55:50Z fraggle $";
|
|||
#include "doomstat.h"
|
||||
|
||||
#include "deh_main.h"
|
||||
#include "deh_misc.h"
|
||||
|
||||
#include "z_zone.h"
|
||||
#include "f_finale.h"
|
||||
|
|
@ -924,11 +929,11 @@ void G_PlayerReborn (int player)
|
|||
|
||||
p->usedown = p->attackdown = true; // don't do anything immediately
|
||||
p->playerstate = PST_LIVE;
|
||||
p->health = MAXHEALTH;
|
||||
p->health = deh_initial_health; // Use dehacked value
|
||||
p->readyweapon = p->pendingweapon = wp_pistol;
|
||||
p->weaponowned[wp_fist] = true;
|
||||
p->weaponowned[wp_pistol] = true;
|
||||
p->ammo[am_clip] = 50;
|
||||
p->ammo[am_clip] = deh_initial_bullets;
|
||||
|
||||
for (i=0 ; i<NUMAMMO ; i++)
|
||||
p->maxammo[i] = maxammo[i];
|
||||
|
|
|
|||
16
src/p_pspr.c
16
src/p_pspr.c
|
|
@ -1,7 +1,7 @@
|
|||
// Emacs style mode select -*- C++ -*-
|
||||
//-----------------------------------------------------------------------------
|
||||
//
|
||||
// $Id: p_pspr.c 8 2005-07-23 16:44:57Z fraggle $
|
||||
// $Id: p_pspr.c 206 2005-10-17 20:27:05Z fraggle $
|
||||
//
|
||||
// Copyright(C) 1993-1996 Id Software, Inc.
|
||||
// Copyright(C) 2005 Simon Howard
|
||||
|
|
@ -22,6 +22,10 @@
|
|||
// 02111-1307, USA.
|
||||
//
|
||||
// $Log$
|
||||
// Revision 1.3 2005/10/17 20:27:05 fraggle
|
||||
// Start of Dehacked 'Misc' section support. Initial Health+Bullets,
|
||||
// and bfg cells/shot are supported.
|
||||
//
|
||||
// Revision 1.2 2005/07/23 16:44:56 fraggle
|
||||
// Update copyright to GNU GPL
|
||||
//
|
||||
|
|
@ -36,11 +40,12 @@
|
|||
//-----------------------------------------------------------------------------
|
||||
|
||||
static const char
|
||||
rcsid[] = "$Id: p_pspr.c 8 2005-07-23 16:44:57Z fraggle $";
|
||||
rcsid[] = "$Id: p_pspr.c 206 2005-10-17 20:27:05Z fraggle $";
|
||||
|
||||
#include "doomdef.h"
|
||||
#include "d_event.h"
|
||||
|
||||
#include "deh_misc.h"
|
||||
|
||||
#include "m_random.h"
|
||||
#include "p_local.h"
|
||||
|
|
@ -61,9 +66,6 @@ rcsid[] = "$Id: p_pspr.c 8 2005-07-23 16:44:57Z fraggle $";
|
|||
#define WEAPONTOP 32*FRACUNIT
|
||||
|
||||
|
||||
// plasma cells for a bfg attack
|
||||
#define BFGCELLS 40
|
||||
|
||||
|
||||
//
|
||||
// P_SetPsprite
|
||||
|
|
@ -180,7 +182,7 @@ boolean P_CheckAmmo (player_t* player)
|
|||
|
||||
// Minimal amount for one shot varies.
|
||||
if (player->readyweapon == wp_bfg)
|
||||
count = BFGCELLS;
|
||||
count = deh_bfg_cells_per_shot;
|
||||
else if (player->readyweapon == wp_supershotgun)
|
||||
count = 2; // Double barrel.
|
||||
else
|
||||
|
|
@ -578,7 +580,7 @@ A_FireBFG
|
|||
( player_t* player,
|
||||
pspdef_t* psp )
|
||||
{
|
||||
player->ammo[weaponinfo[player->readyweapon].ammo] -= BFGCELLS;
|
||||
player->ammo[weaponinfo[player->readyweapon].ammo] -= deh_bfg_cells_per_shot;
|
||||
P_SpawnPlayerMissile (player->mo, MT_BFG);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue