1
0
Fork 0
forked from fte/fteqw

SOLID_LADDERQ1 -> SOLID_CORPSE. if you needed ladder, use 20 instead.

git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@529 fc73d0e0-1445-4013-8a0c-d673dee63da5
This commit is contained in:
Spoike 2004-11-23 15:13:32 +00:00
parent 29b9f70e42
commit 5c566ea7e2
3 changed files with 18 additions and 4 deletions

View file

@ -655,7 +655,7 @@ typedef struct
#define SOLID_SLIDEBOX 3 // touch on edge, but not an onground #define SOLID_SLIDEBOX 3 // touch on edge, but not an onground
#define SOLID_BSP 4 // bsp clip, touch on edge, block #define SOLID_BSP 4 // bsp clip, touch on edge, block
#define SOLID_PHASEH2 5 #define SOLID_PHASEH2 5
#define SOLID_LADDERQ1 5 #define SOLID_CORPSE 5
#define SOLID_LADDER 20 //dmw. touch on edge, not blocking. Touching players have different physics. Otherwise a SOLID_TRIGGER #define SOLID_LADDER 20 //dmw. touch on edge, not blocking. Touching players have different physics. Otherwise a SOLID_TRIGGER
// edict->deadflag values // edict->deadflag values

View file

@ -3377,7 +3377,7 @@ vec3_t offset;
if (check->v.owner == pl) if (check->v.owner == pl)
continue; // player's own missile continue; // player's own missile
if ((progstype != PROG_H2 && check->v.solid == SOLID_LADDERQ1) || check->v.solid == SOLID_LADDER) if (check->v.solid == SOLID_LADDER)
{ {
for (i=0 ; i<3 ; i++) for (i=0 ; i<3 ; i++)
if (check->v.absmin[i] > pmove_maxs[i] if (check->v.absmin[i] > pmove_maxs[i]

View file

@ -631,7 +631,7 @@ void SV_LinkEdict (edict_t *ent, qboolean touch_triggers)
// link it in // link it in
if (ent->v.solid == SOLID_TRIGGER || (progstype != PROG_H2 && ent->v.solid == SOLID_LADDERQ1) || ent->v.solid == SOLID_LADDER) if (ent->v.solid == SOLID_TRIGGER || ent->v.solid == SOLID_LADDER)
InsertLinkBefore (&ent->area, &node->trigger_edicts); InsertLinkBefore (&ent->area, &node->trigger_edicts);
else else
InsertLinkBefore (&ent->area, &node->solid_edicts); InsertLinkBefore (&ent->area, &node->solid_edicts);
@ -1455,6 +1455,13 @@ void SV_ClipMoveToEntities ( moveclip_t *clip )
if (clip->type & MOVE_NOMONSTERS && touch->v.solid != SOLID_BSP) if (clip->type & MOVE_NOMONSTERS && touch->v.solid != SOLID_BSP)
continue; continue;
// don't clip corpse against character
if (clip->passedict->v.solid == SOLID_CORPSE && (touch->v.solid == SOLID_SLIDEBOX || touch->v.solid == SOLID_CORPSE))
continue;
// don't clip character against corpse
if (clip->passedict->v.solid == SOLID_SLIDEBOX && touch->v.solid == SOLID_CORPSE)
continue;
if (!((int)clip->passedict->v.dimension_hit & (int)touch->v.dimension_solid)) if (!((int)clip->passedict->v.dimension_hit & (int)touch->v.dimension_solid))
continue; continue;
@ -1586,12 +1593,19 @@ void SV_ClipToLinks ( areanode_t *node, moveclip_t *clip )
continue; continue;
if (touch == clip->passedict) if (touch == clip->passedict)
continue; continue;
if (touch->v.solid == SOLID_TRIGGER || (progstype != PROG_H2 && touch->v.solid == SOLID_LADDERQ1) || touch->v.solid == SOLID_LADDER) if (touch->v.solid == SOLID_TRIGGER || touch->v.solid == SOLID_LADDER)
SV_Error ("Trigger in clipping list"); SV_Error ("Trigger in clipping list");
if (clip->type & MOVE_NOMONSTERS && touch->v.solid != SOLID_BSP) if (clip->type & MOVE_NOMONSTERS && touch->v.solid != SOLID_BSP)
continue; continue;
// don't clip corpse against character
if (clip->passedict->v.solid == SOLID_CORPSE && (touch->v.solid == SOLID_SLIDEBOX || touch->v.solid == SOLID_CORPSE))
continue;
// don't clip character against corpse
if (clip->passedict->v.solid == SOLID_SLIDEBOX && touch->v.solid == SOLID_CORPSE)
continue;
if (clip->boxmins[0] > touch->v.absmax[0] if (clip->boxmins[0] > touch->v.absmax[0]
|| clip->boxmins[1] > touch->v.absmax[1] || clip->boxmins[1] > touch->v.absmax[1]
|| clip->boxmins[2] > touch->v.absmax[2] || clip->boxmins[2] > touch->v.absmax[2]