From 5c566ea7e23c0d3d7618a79901cf20b3bd9cd50a Mon Sep 17 00:00:00 2001 From: Spoike Date: Tue, 23 Nov 2004 15:13:32 +0000 Subject: [PATCH] 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 --- engine/server/server.h | 2 +- engine/server/sv_user.c | 2 +- engine/server/world.c | 18 ++++++++++++++++-- 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/engine/server/server.h b/engine/server/server.h index 1673d4490..0bcb5e414 100644 --- a/engine/server/server.h +++ b/engine/server/server.h @@ -655,7 +655,7 @@ typedef struct #define SOLID_SLIDEBOX 3 // touch on edge, but not an onground #define SOLID_BSP 4 // bsp clip, touch on edge, block #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 // edict->deadflag values diff --git a/engine/server/sv_user.c b/engine/server/sv_user.c index 1cf43f030..8730aa637 100644 --- a/engine/server/sv_user.c +++ b/engine/server/sv_user.c @@ -3377,7 +3377,7 @@ vec3_t offset; if (check->v.owner == pl) 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++) if (check->v.absmin[i] > pmove_maxs[i] diff --git a/engine/server/world.c b/engine/server/world.c index 5ba1f4a26..59968c740 100644 --- a/engine/server/world.c +++ b/engine/server/world.c @@ -631,7 +631,7 @@ void SV_LinkEdict (edict_t *ent, qboolean touch_triggers) // 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); else 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) 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)) continue; @@ -1586,12 +1593,19 @@ void SV_ClipToLinks ( areanode_t *node, moveclip_t *clip ) continue; if (touch == clip->passedict) 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"); if (clip->type & MOVE_NOMONSTERS && touch->v.solid != SOLID_BSP) 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] || clip->boxmins[1] > touch->v.absmax[1] || clip->boxmins[2] > touch->v.absmax[2]