Compare commits
2 commits
Author | SHA1 | Date | |
---|---|---|---|
|
a8a1ed1116 | ||
|
659a4a3268 |
19 changed files with 152 additions and 65 deletions
Binary file not shown.
Binary file not shown.
|
@ -28,6 +28,9 @@
|
|||
#define AIRMOVE_THRESHOLD 64
|
||||
#define QUICKTURN_RATE (-360.0) // Rotational velocity (degrees/second).
|
||||
|
||||
qboolean BranchCheckDismemberAction(playerinfo_t *playerinfo, int weapon);
|
||||
|
||||
|
||||
vec3_t handmins = {-2.0, -2.0, 0},
|
||||
handmaxs = {2.0, 2.0, 2.0};
|
||||
|
||||
|
@ -2774,13 +2777,15 @@ qboolean PlayerActionCheckVault(playerinfo_t *playerinfo, float value)
|
|||
|
||||
if (grabfraction < 0.5)
|
||||
{
|
||||
if ( (playerinfo->flags & PLAYER_FLAG_NO_LARM) && (playerinfo->flags & PLAYER_FLAG_NO_RARM) )
|
||||
return false;//can't do half pull up with no arms
|
||||
|
||||
// This is strange, but the VAULT_LOW is actually a high wall vault.
|
||||
PlayerAnimSetVault(playerinfo, ASEQ_VAULT_LOW);
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( (playerinfo->flags & PLAYER_FLAG_NO_LARM) && (playerinfo->flags & PLAYER_FLAG_NO_RARM) )
|
||||
return false;//can't do half pull up with no arms
|
||||
|
||||
// ...and PULLUP_HALFWALL is just a hop. SO I moved the arm check to the high wall vault.
|
||||
PlayerAnimSetVault(playerinfo, ASEQ_PULLUP_HALFWALL);
|
||||
}
|
||||
|
||||
|
@ -2862,9 +2867,16 @@ void PlayerActionPushAway(playerinfo_t *playerinfo, float value)
|
|||
qboolean PlayerActionCheckRopeGrab(playerinfo_t *playerinfo, float stomp_org)
|
||||
{
|
||||
if(!playerinfo->isclient)
|
||||
return(playerinfo->G_PlayerActionCheckRopeGrab(playerinfo,stomp_org));
|
||||
{ // Check dismemberment before game side rope check.
|
||||
if (playerinfo->flags & PLAYER_FLAG_NO_LARM || playerinfo->flags & PLAYER_FLAG_NO_RARM)
|
||||
return(false);
|
||||
else
|
||||
return(playerinfo->G_PlayerActionCheckRopeGrab(playerinfo,stomp_org));
|
||||
}
|
||||
else
|
||||
{
|
||||
return(false);
|
||||
}
|
||||
}
|
||||
|
||||
/*-----------------------------------------------
|
||||
|
|
|
@ -234,6 +234,52 @@ int CheckSlopedStand (playerinfo_t *playerinfo)
|
|||
return ASEQ_NONE;
|
||||
}
|
||||
|
||||
/*-----------------------------------------------
|
||||
BranchCheckDismemberAction
|
||||
-----------------------------------------------*/
|
||||
|
||||
PLAYER_API qboolean BranchCheckDismemberAction(playerinfo_t *playerinfo, int weapon)
|
||||
{
|
||||
//If these nodes are on, then any weapon selection is a valid one
|
||||
if ( (!(playerinfo->flags & PLAYER_FLAG_NO_RARM)) && (!(playerinfo->flags & PLAYER_FLAG_NO_LARM)) )
|
||||
return true;
|
||||
|
||||
//No arm, no shot
|
||||
if (weapon == ITEM_WEAPON_FLYINGFIST)
|
||||
{
|
||||
if (playerinfo->flags & PLAYER_FLAG_NO_RARM)
|
||||
return false;
|
||||
}
|
||||
else if (weapon == ITEM_WEAPON_MAGICMISSILE || weapon == ITEM_WEAPON_MACEBALLS)
|
||||
{
|
||||
//Powered up is right arm, non-powered is left
|
||||
if (playerinfo->powerup_timer > playerinfo->leveltime)
|
||||
{
|
||||
if (playerinfo->flags & PLAYER_FLAG_NO_RARM)
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (playerinfo->flags & PLAYER_FLAG_NO_LARM)
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else if (weapon == ITEM_WEAPON_HELLSTAFF || weapon == ITEM_WEAPON_SWORDSTAFF)
|
||||
{
|
||||
if (playerinfo->flags & PLAYER_FLAG_NO_RARM)
|
||||
return false;
|
||||
}
|
||||
else //Any other weapon will need both hands
|
||||
{
|
||||
if (playerinfo->flags & PLAYER_FLAG_NO_LARM || playerinfo->flags & PLAYER_FLAG_NO_RARM)
|
||||
return false;
|
||||
}
|
||||
|
||||
//Player is able to complete the action
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/*-----------------------------------------------
|
||||
ChickenBranchLwrStanding
|
||||
-----------------------------------------------*/
|
||||
|
@ -425,7 +471,8 @@ int BranchLwrStanding(playerinfo_t *playerinfo)
|
|||
if (playerinfo->advancedstaff && // Special move
|
||||
playerinfo->seqcmd[ACMDL_ACTION] &&
|
||||
playerinfo->pers.weaponready == WEAPON_READY_SWORDSTAFF &&
|
||||
playerinfo->seqcmd[ACMDU_ATTACK])
|
||||
playerinfo->seqcmd[ACMDU_ATTACK] &&
|
||||
BranchCheckDismemberAction(playerinfo, ITEM_WEAPON_SWORDSTAFF))
|
||||
{
|
||||
return ASEQ_WSWORD_LOWERDOWNSTAB;
|
||||
}
|
||||
|
@ -1860,50 +1907,6 @@ int BranchLwrClimbing(playerinfo_t *playerinfo)
|
|||
return(ASEQ_NONE);
|
||||
}
|
||||
|
||||
/*-----------------------------------------------
|
||||
BranchCheckDismemberAction
|
||||
-----------------------------------------------*/
|
||||
|
||||
PLAYER_API qboolean BranchCheckDismemberAction(playerinfo_t *playerinfo, int weapon)
|
||||
{
|
||||
//If these nodes are on, then any weapon selection is a valid one
|
||||
if ( (!(playerinfo->flags & PLAYER_FLAG_NO_RARM)) && (!(playerinfo->flags & PLAYER_FLAG_NO_LARM)) )
|
||||
return true;
|
||||
|
||||
//No arm, no shot
|
||||
if (weapon == ITEM_WEAPON_FLYINGFIST)
|
||||
{
|
||||
if (playerinfo->flags & PLAYER_FLAG_NO_RARM)
|
||||
return false;
|
||||
}
|
||||
else if (weapon == ITEM_WEAPON_MAGICMISSILE || weapon == ITEM_WEAPON_MACEBALLS)
|
||||
{
|
||||
//Powered up is right arm, non-powered is left
|
||||
if (playerinfo->powerup_timer > playerinfo->leveltime)
|
||||
{
|
||||
if (playerinfo->flags & PLAYER_FLAG_NO_RARM)
|
||||
return false;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (playerinfo->flags & PLAYER_FLAG_NO_LARM)
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else if (weapon == ITEM_WEAPON_HELLSTAFF || weapon == ITEM_WEAPON_SWORDSTAFF)
|
||||
{
|
||||
if (playerinfo->flags & PLAYER_FLAG_NO_RARM)
|
||||
return false;
|
||||
}
|
||||
else //Any other weapon will need both hands
|
||||
{
|
||||
if (playerinfo->flags & PLAYER_FLAG_NO_LARM || playerinfo->flags & PLAYER_FLAG_NO_RARM)
|
||||
return false;
|
||||
}
|
||||
|
||||
//Player is able to complete the action
|
||||
return true;
|
||||
}
|
||||
|
||||
/*-----------------------------------------------
|
||||
BranchUprReadyHands
|
||||
|
|
|
@ -2447,14 +2447,14 @@ panimframe_t player_frames_stafflowerdownstab [] =
|
|||
FRAME_spikedwn5, PlayerMoveFunc, 25*UNJH_VALUE, 0, 0, NULL, 0, NULL,
|
||||
FRAME_spikedwn6, NULL, 0, 0, 0, NULL, 0, NULL,
|
||||
FRAME_spikedwn7, NULL, 0, 0, 0, PlayerActionSwordAttack, 21, NULL,
|
||||
FRAME_spikedwn8, NULL, 0, 0, 0, PlayerActionSwordAttack, 21, NULL,
|
||||
FRAME_spikedwn8, NULL, 0, 0, 0, PlayerActionSwordAttack, 22, NULL,
|
||||
};
|
||||
panimmove_t player_move_stafflowerdownstab = {8, player_frames_stafflowerdownstab, PlayerAnimLowerUpdate};
|
||||
|
||||
// Pull staff out after stab
|
||||
panimframe_t player_frames_stafflowerpullout [] =
|
||||
{
|
||||
FRAME_pullout1, NULL, 0, 0, 0, PlayerActionSwordAttack, 21, NULL,
|
||||
FRAME_pullout1, NULL, 0, 0, 0, PlayerActionSwordAttack, 22, NULL,
|
||||
FRAME_pullout2, NULL, 0, 0, 0, NULL, 0, NULL,
|
||||
FRAME_pullout3, NULL, 0, 0, 0, NULL, 0, NULL,
|
||||
FRAME_pullout4, NULL, 0, 0, 0, NULL, 0, NULL,
|
||||
|
|
|
@ -26,7 +26,7 @@
|
|||
|
||||
|
||||
///// IMPORTANT !!! THIS IS THE STRING THAT DETERMINES IF YOU CAN JOIN A SERVER - IE YOU HAVE THE RIGHT CLIENT EFFECTS DLL
|
||||
char *client_string = {"Heretic II v1.04"};
|
||||
char *client_string = {"Heretic II v1.06"};
|
||||
|
||||
client_fx_import_t fxi;
|
||||
|
||||
|
|
|
@ -813,18 +813,19 @@ qboolean ValidItem(gitem_t *item)
|
|||
}
|
||||
}
|
||||
|
||||
if ((item->tag == ITEM_DEFENSE_TORNADO) && (no_tornado->value))
|
||||
if ((item->flags & IT_DEFENSE) && (item->tag == ITEM_DEFENSE_TORNADO) && (no_tornado->value))
|
||||
return false;
|
||||
else if ((item->tag == ITEM_DEFENSE_POLYMORPH) && (no_morph->value))
|
||||
else if ((item->flags & IT_DEFENSE) && (item->tag == ITEM_DEFENSE_POLYMORPH) && (no_morph->value))
|
||||
return false;
|
||||
else if ((item->tag == ITEM_DEFENSE_SHIELD) && (no_shield->value))
|
||||
else if ((item->flags & IT_DEFENSE) && (item->tag == ITEM_DEFENSE_SHIELD) && (no_shield->value))
|
||||
return false;
|
||||
else if ((item->tag == ITEM_DEFENSE_TELEPORT) && (no_teleport->value))
|
||||
else if ((item->flags & IT_DEFENSE) && (item->tag == ITEM_DEFENSE_TELEPORT) && (no_teleport->value))
|
||||
return false;
|
||||
else if ((item->tag == ITEM_WEAPON_PHOENIXBOW) && (no_phoenix->value))
|
||||
else if ((item->flags & IT_OFFENSE) && (item->tag == ITEM_WEAPON_PHOENIXBOW) && (no_phoenix->value))
|
||||
return false;
|
||||
else if ((item->tag == ITEM_WEAPON_MACEBALLS) && (no_irondoom->value))
|
||||
else if ((item->flags & IT_OFFENSE) && (item->tag == ITEM_WEAPON_MACEBALLS) && (no_irondoom->value))
|
||||
return false;
|
||||
|
||||
}
|
||||
|
||||
#if DEMO_CODE
|
||||
|
|
|
@ -27,7 +27,7 @@
|
|||
#if DEMO_CODE
|
||||
#define GAMEVERSION "Heretic2Dmo"
|
||||
#else
|
||||
#define GAMEVERSION "Heretic2v14"
|
||||
#define GAMEVERSION "Heretic2v16"
|
||||
#endif
|
||||
|
||||
// Protocol bytes that can be directly added to messages.
|
||||
|
@ -837,6 +837,7 @@ extern cvar_t *monster_speeds;
|
|||
extern cvar_t *pvs_cull;
|
||||
|
||||
extern cvar_t *game_test; // sfs--for testing the speed impact of code changes
|
||||
extern cvar_t *dm_no_bodies;
|
||||
|
||||
extern cvar_t *player_dll;
|
||||
|
||||
|
|
|
@ -101,6 +101,7 @@ cvar_t *no_shield;
|
|||
cvar_t *no_teleport;
|
||||
|
||||
cvar_t *game_test;
|
||||
cvar_t *dm_no_bodies;
|
||||
|
||||
cvar_t *player_dll;
|
||||
|
||||
|
|
|
@ -3396,6 +3396,9 @@ void SP_obj_shrine (edict_t *self)
|
|||
++self->style;
|
||||
}
|
||||
|
||||
// make sure we always send the model
|
||||
self->s.effects |= EF_ALWAYS_ADD_EFFECTS;
|
||||
|
||||
// make the ball appear in the middle
|
||||
VectorScale(self->s.angles, ANGLE_TO_RAD, offset);
|
||||
DirFromAngles(offset, offset2);
|
||||
|
|
|
@ -367,6 +367,7 @@ void InitGame (void)
|
|||
log_file_line_header = gi.cvar("log_file_line_header", "", CVAR_ARCHIVE);
|
||||
|
||||
blood_level = gi.cvar ("blood_level", VIOLENCE_DEFAULT_STR, CVAR_ARCHIVE);
|
||||
dm_no_bodies = gi.cvar ("dm_no_bodies", "0", CVAR_ARCHIVE);
|
||||
|
||||
gi.cvar("flash_screen", "1", 0);
|
||||
|
||||
|
|
52
Toolkit/Programming/GameCode/game/game.plg
Normal file
52
Toolkit/Programming/GameCode/game/game.plg
Normal file
|
@ -0,0 +1,52 @@
|
|||
<html>
|
||||
<body>
|
||||
<pre>
|
||||
<h1>Build Log</h1>
|
||||
<h3>
|
||||
--------------------Configuration: Player - Win32 Debug--------------------
|
||||
</h3>
|
||||
<h3>Command Lines</h3>
|
||||
Creating temporary file "C:\WINDOWS\TEMP\RSP50B3.TMP" with contents
|
||||
[
|
||||
/nologo /MTd /W3 /Gm /Gi /ZI /Od /I "../qcommon" /I "../game" /I "../client" /I "../server" /D "_DEBUG" /D "WIN32" /D "_WINDOWS" /D "PLAYER_DLL" /D "_DEVEL" /FR".\Debug/" /Fp".\Debug/Player.pch" /YX /Fo".\Debug/" /Fd".\Debug/" /FD /c
|
||||
"C:\heretic2\code\Player\p_actions.c"
|
||||
]
|
||||
Creating command line "cl.exe @C:\WINDOWS\TEMP\RSP50B3.TMP"
|
||||
Creating temporary file "C:\WINDOWS\TEMP\RSP50B4.TMP" with contents
|
||||
[
|
||||
kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib H2Common.lib /nologo /base:"0x110d0000" /version:1.0 /subsystem:windows /dll /incremental:yes /pdb:"../Debug/Player.pdb" /debug /machine:I386 /out:"../Debug/Player.dll" /implib:"../Debug/Player.lib" /pdbtype:sept /libpath:"..\Debug"
|
||||
.\Debug\main.obj
|
||||
.\Debug\p_actions.obj
|
||||
.\Debug\p_anim_branch.obj
|
||||
.\Debug\p_anim_data.obj
|
||||
.\Debug\p_animactor.obj
|
||||
.\Debug\p_anims.obj
|
||||
.\Debug\p_chicken.obj
|
||||
.\Debug\p_chicken_anim.obj
|
||||
.\Debug\p_ctrl.obj
|
||||
.\Debug\p_items.obj
|
||||
.\Debug\p_main.obj
|
||||
.\Debug\p_weapon.obj
|
||||
\heretic2\code\Debug\H2Common.lib
|
||||
]
|
||||
Creating command line "link.exe @C:\WINDOWS\TEMP\RSP50B4.TMP"
|
||||
<h3>Output Window</h3>
|
||||
Compiling...
|
||||
p_actions.c
|
||||
Linking...
|
||||
<h3>
|
||||
--------------------Configuration: quake2 - Win32 Debug--------------------
|
||||
</h3>
|
||||
<h3>Command Lines</h3>
|
||||
<h3>
|
||||
--------------------Configuration: game - Win32 Debug--------------------
|
||||
</h3>
|
||||
<h3>Command Lines</h3>
|
||||
|
||||
|
||||
|
||||
<h3>Results</h3>
|
||||
gamex86.dll - 0 error(s), 0 warning(s)
|
||||
</pre>
|
||||
</body>
|
||||
</html>
|
|
@ -1714,7 +1714,7 @@ void respawn (edict_t *self)
|
|||
{
|
||||
// FIXME: make bodyque objects obey gravity.
|
||||
|
||||
if(!(self->flags & FL_CHICKEN))
|
||||
if(!(self->flags & FL_CHICKEN) && !((int)dm_no_bodies->value))
|
||||
{
|
||||
// We're not set as a chicken, so duplicate ourselves.
|
||||
|
||||
|
|
|
@ -115,6 +115,10 @@ enum FeatureTypes
|
|||
#define ROTATE_SIGNALER 0x04
|
||||
#define ROTATE_ABSOLUTE 0x08
|
||||
|
||||
|
||||
// MoveRotate (disk-file command)
|
||||
#define MOVEROTATE_SIGNALER 0x01
|
||||
|
||||
// Wait
|
||||
#define WAIT_CLEAR 0x80
|
||||
|
||||
|
|
|
@ -803,8 +803,8 @@ typedef struct
|
|||
#define CS_LIGHTS (CS_IMAGES+MAX_IMAGES)
|
||||
#define CS_ITEMS (CS_LIGHTS+MAX_LIGHTSTYLES)
|
||||
#define CS_PLAYERSKINS (CS_ITEMS+MAX_ITEMS)
|
||||
#define CS_WELCOME (CS_PLAYERSKINS+MAX_CLIENTS)
|
||||
#define MAX_CONFIGSTRINGS CS_WELCOME + 1
|
||||
#define CS_WELCOME (CS_PLAYERSKINS+MAX_CLIENTS) // give us 4 welcome string messages so we can have a total of 256 characters per message
|
||||
#define MAX_CONFIGSTRINGS CS_WELCOME + 4
|
||||
|
||||
// ************************************************************************************************
|
||||
// EffectsBuffer_t
|
||||
|
|
|
@ -143,6 +143,7 @@ void SpellCastDropTornado(edict_t *caster, vec3_t startpos, vec3_t aimangles, ve
|
|||
|
||||
// use the speed active ef_flag to tell the client effect when the effect is over
|
||||
tornado->s.effects |= EF_ALWAYS_ADD_EFFECTS ;
|
||||
tornado->svflags |= SVF_ALWAYS_SEND;
|
||||
tornado->solid = SOLID_NOT;
|
||||
tornado->clipmask = MASK_SOLID;
|
||||
tornado->targetEnt = caster;
|
||||
|
|
BIN
Toolkit/Programming/GameCode/heretic2mods.ncb
Normal file
BIN
Toolkit/Programming/GameCode/heretic2mods.ncb
Normal file
Binary file not shown.
BIN
Toolkit/Programming/GameCode/heretic2mods.opt
Normal file
BIN
Toolkit/Programming/GameCode/heretic2mods.opt
Normal file
Binary file not shown.
|
@ -9,9 +9,9 @@
|
|||
#define BASEDIRNAME "base"
|
||||
|
||||
#define VERSION_MAJOR "1"
|
||||
#define VERSION_MINOR "04"
|
||||
#define VERSION_MINOR "06"
|
||||
#define VERSION_LOCAL "01"
|
||||
#define VERSION_DATE "0309"
|
||||
#define VERSION_DATE "0504"
|
||||
#define VERSION_ITERATION "01"
|
||||
|
||||
#define VERSIONDISP (VERSION_MAJOR"."VERSION_MINOR)
|
||||
|
@ -23,6 +23,8 @@
|
|||
#define GAME_DECLSPEC __declspec(dllimport)
|
||||
#endif
|
||||
|
||||
#define NO_BLOOD 0
|
||||
|
||||
|
||||
#ifdef WIN32
|
||||
|
||||
|
@ -155,7 +157,7 @@ PROTOCOL
|
|||
|
||||
// protocol.h -- communications protocols
|
||||
|
||||
#define PROTOCOL_VERSION 50
|
||||
#define PROTOCOL_VERSION 51
|
||||
|
||||
//=========================================
|
||||
|
||||
|
@ -884,6 +886,12 @@ extern cvar_t *host_speeds;
|
|||
extern cvar_t *log_stats;
|
||||
extern cvar_t *player_dll;
|
||||
|
||||
extern cvar_t *allow_download;
|
||||
extern cvar_t *allow_download_maps;
|
||||
extern cvar_t *allow_download_players;
|
||||
extern cvar_t *allow_download_models;
|
||||
extern cvar_t *allow_download_sounds;
|
||||
|
||||
extern FILE *log_stats_file;
|
||||
|
||||
// host_speeds times
|
||||
|
|
Loading…
Reference in a new issue