diff --git a/src/client/entry.qc b/src/client/entry.qc index 10c4e03a..d3d897b9 100644 --- a/src/client/entry.qc +++ b/src/client/entry.qc @@ -729,6 +729,10 @@ CSQC_Ent_Remove(void) if (self.isCSQC) { NSEntity me = (NSEntity)self; me.ClientRemove(); + + if (me.skeletonindex) + skel_delete(me.skeletonindex); + remove(self); } else { remove(self); diff --git a/src/gs-entbase/shared/NSMonster.qc b/src/gs-entbase/shared/NSMonster.qc index baab8ac7..a6cfe644 100644 --- a/src/gs-entbase/shared/NSMonster.qc +++ b/src/gs-entbase/shared/NSMonster.qc @@ -543,7 +543,8 @@ NSMonster::NewRoute(vector destination) } } -const int CONTENTBITS_MONSTER = CONTENTBIT_SOLID|0x00000002i|CONTENTBIT_BODY|CONTENTBIT_MONSTERCLIP; +const int CONTENTBITS_MONSTER = CONTENTBIT_SOLID|CONTENTBIT_BODY|CONTENTBIT_MONSTERCLIP|CONTENTBIT_BOTCLIP; +void PMoveCustom_RunPlayerPhysics(entity target); void NSMonster::Physics(void) @@ -568,7 +569,7 @@ NSMonster::Physics(void) WalkRoute(); hitcontentsmaski = CONTENTBITS_MONSTER; - runstandardplayerphysics(this); + PMoveCustom_RunPlayerPhysics(this); SetOrigin(origin); IdleNoise(); diff --git a/src/gs-entbase/shared/NSTalkMonster.qc b/src/gs-entbase/shared/NSTalkMonster.qc index d61ee360..43eb7d36 100644 --- a/src/gs-entbase/shared/NSTalkMonster.qc +++ b/src/gs-entbase/shared/NSTalkMonster.qc @@ -510,7 +510,8 @@ NSTalkMonster::Physics(void) } CheckRoute(); WalkRoute(); - runstandardplayerphysics(this); + hitcontentsmaski = CONTENTBITS_MONSTER; + PMoveCustom_RunPlayerPhysics(this); SetOrigin(origin); } diff --git a/src/shared/pmove_custom.qc b/src/shared/pmove_custom.qc index 102143c9..695624b9 100644 --- a/src/shared/pmove_custom.qc +++ b/src/shared/pmove_custom.qc @@ -572,6 +572,9 @@ PMoveCustom_RunPlayerPhysics(entity target) self.dimension_solid = 254; self.dimension_hit = 254; + if (self.maxspeed <= 0) + self.maxspeed = 240; + /* call accelerate before and after the actual move, * with half the move each time. this reduces framerate dependence. * and makes controlling jumps slightly easier */