]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/server/mutators/mutator_nades.qc
Merge branch 'master' into Mario/vehicles
[xonotic/xonotic-data.pk3dir.git] / qcsrc / server / mutators / mutator_nades.qc
index 7b65430d9a2087476fc38f9131bb83fd26b74102..ddfbf6a0e55e18c553ed4b546310b0961ae26131 100644 (file)
@@ -342,6 +342,8 @@ void nade_translocate_boom()
                return;
 
        vector locout = self.origin + '0 0 1' * (1 - self.realowner.mins_z - 24);
+       tracebox(locout, self.realowner.mins, self.realowner.maxs, locout, MOVE_NOMONSTERS, self.realowner);
+       locout = trace_endpos;
 
        makevectors(self.realowner.angles);
 
@@ -463,9 +465,10 @@ void nade_heal_boom()
 
 void nade_monster_boom()
 {
-       entity e = spawnmonster(self.pokenade_type, 0, self.realowner, self.realowner, self.origin, FALSE, 1);
+       entity e = spawnmonster(self.pokenade_type, 0, self.realowner, self.realowner, self.origin, FALSE, FALSE, 1);
        
-       //e.monster_lifetime = time + autocvar_g_nades_pokenade_monster_lifetime;
+       if(autocvar_g_nades_pokenade_monster_lifetime > 0)
+               e.monster_lifetime = time + autocvar_g_nades_pokenade_monster_lifetime;
        e.monster_skill = MONSTER_SKILL_INSANE;
 }
 
@@ -546,6 +549,7 @@ void nade_boom()
 
 void nade_touch()
 {
+       if(trace_dphitcontents & (DPCONTENTS_PLAYERCLIP | DPCONTENTS_MONSTERCLIP)) { return; }
        PROJECTILE_TOUCH;
        //setsize(self, '-2 -2 -2', '2 2 2');
        //UpdateCSQCProjectile(self);
@@ -659,6 +663,7 @@ void toss_nade(entity e, vector _velocity, float _time)
        _nade.event_damage = nade_damage;
        _nade.customizeentityforclient = func_null;
        _nade.exteriormodeltoclient = world;
+       _nade.dphitcontentsmask = DPCONTENTS_SOLID | DPCONTENTS_BODY | DPCONTENTS_PLAYERCLIP | DPCONTENTS_BOTCLIP;
        _nade.traileffectnum = 0;
        _nade.teleportable = TRUE;
        _nade.pushable = TRUE;
@@ -803,7 +808,7 @@ float CanThrowNade()
        if (!autocvar_g_nades)
                return FALSE; // allow turning them off mid match
 
-       if(forbidWeaponUse())
+       if(forbidWeaponUse(self))
                return FALSE;
 
        if (!IS_PLAYER(self))