X-Git-Url: http://de.git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fcommon%2Fmonsters%2Fsv_monsters.qc;h=7ee3e3eab72d84228fe2360e7d46a8137ede8fe1;hb=eb9cac8594043ba8a31c25464a388cc1a94d816f;hp=f8294e3f52d219c53c310da6fdb61746f25c9c95;hpb=349aeb508e5a3d577df60bef8a552da2db7d928d;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/common/monsters/sv_monsters.qc b/qcsrc/common/monsters/sv_monsters.qc index f8294e3f5..7ee3e3eab 100644 --- a/qcsrc/common/monsters/sv_monsters.qc +++ b/qcsrc/common/monsters/sv_monsters.qc @@ -36,7 +36,7 @@ void monster_dropitem() return; vector org = self.origin + ((self.mins + self.maxs) * 0.5); - entity e = spawn(); + entity e = new(droppedweapon); // use weapon handling to remove it on touch e.spawnfunc_checked = true; e.monster_loot = self.monster_loot; @@ -55,7 +55,6 @@ void monster_dropitem() setorigin(e, org); e.velocity = randomvec() * 175 + '0 0 325'; e.item_spawnshieldtime = time + 0.7; - e.classname = "droppedweapon"; // use weapon handling to remove it on touch SUB_SetFade(e, time + autocvar_g_monsters_drop_time, 1); setself(this); } @@ -208,7 +207,7 @@ void Monster_Delay_Action() } else { - oldself.think = SUB_Remove; + oldself.think = SUB_Remove_self; oldself.nextthink = time; } } @@ -347,7 +346,7 @@ void Monster_Sound(.string samplefield, float sound_delay, float delaytoo, float if(delaytoo) if(time < self.msound_delay) return; // too early - GlobalSound(self.(samplefield), chan, VOICETYPE_PLAYERSOUND); + GlobalSound_string(self.(samplefield), chan, VOICETYPE_PLAYERSOUND); self.msound_delay = time + sound_delay; } @@ -911,13 +910,13 @@ void Monster_Move(float runspeed, float walkspeed, float stpspeed) void Monster_Remove(entity mon) { - int slot = 0; + .entity weaponentity = weaponentities[0]; if(!mon) { return; } if(!MUTATOR_CALLHOOK(MonsterRemove, mon)) Send_Effect(EFFECT_ITEM_PICKUP, mon.origin, '0 0 0', 1); - if(mon.weaponentity[slot]) { remove(mon.weaponentity[slot]); } + if(mon.(weaponentity)) { remove(mon.(weaponentity)); } if(mon.iceblock) { remove(mon.iceblock); } WaypointSprite_Kill(mon.sprite); remove(mon); @@ -956,19 +955,19 @@ float Monster_Appear_Check(entity ent, float monster_id) return true; } -void Monster_Reset() -{SELFPARAM(); - setorigin(self, self.pos1); - self.angles = self.pos2; +void Monster_Reset(entity this) +{ + setorigin(this, this.pos1); + this.angles = this.pos2; - Unfreeze(self); // remove any icy remains + Unfreeze(this); // remove any icy remains - self.health = self.max_health; - self.velocity = '0 0 0'; - self.enemy = world; - self.goalentity = world; - self.attack_finished_single[0] = 0; - self.moveto = self.origin; + this.health = this.max_health; + this.velocity = '0 0 0'; + this.enemy = world; + this.goalentity = world; + this.attack_finished_single[0] = 0; + this.moveto = this.origin; } void Monster_Dead_Damage(entity inflictor, entity attacker, float damage, int deathtype, vector hitloc, vector force) @@ -984,7 +983,7 @@ void Monster_Dead_Damage(entity inflictor, entity attacker, float damage, int de // number of monsters spawned with mobspawn command totalspawned -= 1; - self.think = SUB_Remove; + self.think = SUB_Remove_self; self.nextthink = time + 0.1; self.event_damage = func_null; } @@ -1122,7 +1121,7 @@ void Monster_Damage(entity inflictor, entity attacker, float damage, int deathty { Violence_GibSplash(self, 1, 0.5, attacker); - self.think = SUB_Remove; + self.think = SUB_Remove_self; self.nextthink = time + 0.1; } } @@ -1377,9 +1376,15 @@ bool Monster_Spawn(int mon_id) self.movetype = MOVETYPE_FLY; } - if(mon.spawnflags & MONSTER_SIZE_BROKEN) if(!(self.spawnflags & MONSTERFLAG_RESPAWNED)) - self.scale *= 1.3; + { + if(mon.spawnflags & MONSTER_SIZE_BROKEN) + self.scale *= 1.3; + + if(mon.spawnflags & MONSTER_SIZE_QUAKE) + if(autocvar_g_monsters_quake_resize) + self.scale *= 1.3; + } setsize(self, mon.mins * self.scale, mon.maxs * self.scale);