spawnfunc(invasion_spawnpoint)
{
- if(!g_invasion) { remove(self); return; }
+ if(!g_invasion) { remove(this); return; }
- self.classname = "invasion_spawnpoint";
+ this.classname = "invasion_spawnpoint";
if(autocvar_g_invasion_zombies_only) // precache only if it hasn't been already
- if(self.monsterid) {
- Monster mon = get_monsterinfo(self.monsterid);
+ if(this.monsterid) {
+ Monster mon = get_monsterinfo(this.monsterid);
mon.mr_precache(mon);
}
}
monster = spawnmonster("", mon, world, world, e.origin, false, false, 2);
else return;
- e.think = SUB_Remove_self;
+ setthink(e, SUB_Remove);
e.nextthink = time + 0.1;
}
else
MUTATOR_HOOKFUNCTION(inv, MonsterDies)
{
+ entity frag_target = M_ARGV(0, entity);
+ entity frag_attacker = M_ARGV(1, entity);
+
if(!(frag_target.spawnflags & MONSTERFLAG_RESPAWNED))
{
inv_numkilled += 1;
}
MUTATOR_HOOKFUNCTION(inv, MonsterSpawn)
-{SELFPARAM();
- if(!(self.spawnflags & MONSTERFLAG_SPAWNED))
+{
+ entity mon = M_ARGV(0, entity);
+
+ if(!(mon.spawnflags & MONSTERFLAG_SPAWNED))
return true;
- if(!(self.spawnflags & MONSTERFLAG_RESPAWNED))
+ if(!(mon.spawnflags & MONSTERFLAG_RESPAWNED))
{
inv_numspawned += 1;
inv_maxcurrent += 1;
}
- self.monster_skill = inv_monsterskill;
+ mon.monster_skill = inv_monsterskill;
- if((get_monsterinfo(self.monsterid)).spawnflags & MON_FLAG_SUPERMONSTER)
- Send_Notification(NOTIF_ALL, world, MSG_CENTER, CENTER_INVASION_SUPERMONSTER, self.monster_name);
+ if((get_monsterinfo(mon.monsterid)).spawnflags & MON_FLAG_SUPERMONSTER)
+ Send_Notification(NOTIF_ALL, world, MSG_CENTER, CENTER_INVASION_SUPERMONSTER, mon.monster_name);
- self.dphitcontentsmask = DPCONTENTS_SOLID | DPCONTENTS_BODY | DPCONTENTS_BOTCLIP | DPCONTENTS_MONSTERCLIP;
+ mon.dphitcontentsmask = DPCONTENTS_SOLID | DPCONTENTS_BODY | DPCONTENTS_BOTCLIP | DPCONTENTS_MONSTERCLIP;
return false;
}
MUTATOR_HOOKFUNCTION(inv, OnEntityPreSpawn)
-{SELFPARAM();
- if(startsWith(self.classname, "monster_"))
- if(!(self.spawnflags & MONSTERFLAG_SPAWNED))
+{
+ entity ent = M_ARGV(0, entity);
+
+ if(startsWith(ent.classname, "monster_"))
+ if(!(ent.spawnflags & MONSTERFLAG_SPAWNED))
return true;
return false;
}
MUTATOR_HOOKFUNCTION(inv, PlayerSpawn)
-{SELFPARAM();
- self.bot_attack = false;
+{
+ entity player = M_ARGV(0, entity);
+
+ player.bot_attack = false;
return false;
}
MUTATOR_HOOKFUNCTION(inv, PlayerDamage_Calculate)
{
+ entity frag_attacker = M_ARGV(1, entity);
+ entity frag_target = M_ARGV(2, entity);
+ float frag_damage = M_ARGV(4, float);
+ vector frag_force = M_ARGV(6, vector);
+
if(IS_PLAYER(frag_attacker) && IS_PLAYER(frag_target) && frag_attacker != frag_target)
{
frag_damage = 0;
frag_force = '0 0 0';
+
+ M_ARGV(4, float) = frag_damage;
+ M_ARGV(6, vector) = frag_force;
}
return false;
}
MUTATOR_HOOKFUNCTION(inv, SV_ParseClientCommand)
-{SELFPARAM();
+{
if(MUTATOR_RETURNVALUE) // command was already handled?
return false;
+ entity player = M_ARGV(0, entity);
+ string cmd_name = M_ARGV(1, string);
+
if(cmd_name == "debuginvasion")
{
- sprint(self, strcat("inv_maxspawned = ", ftos(inv_maxspawned), "\n"));
- sprint(self, strcat("inv_numspawned = ", ftos(inv_numspawned), "\n"));
- sprint(self, strcat("inv_numkilled = ", ftos(inv_numkilled), "\n"));
- sprint(self, strcat("inv_roundcnt = ", ftos(inv_roundcnt), "\n"));
- sprint(self, strcat("monsters_total = ", ftos(monsters_total), "\n"));
- sprint(self, strcat("monsters_killed = ", ftos(monsters_killed), "\n"));
- sprint(self, strcat("inv_monsterskill = ", ftos(inv_monsterskill), "\n"));
+ sprint(player, strcat("inv_maxspawned = ", ftos(inv_maxspawned), "\n"));
+ sprint(player, strcat("inv_numspawned = ", ftos(inv_numspawned), "\n"));
+ sprint(player, strcat("inv_numkilled = ", ftos(inv_numkilled), "\n"));
+ sprint(player, strcat("inv_roundcnt = ", ftos(inv_roundcnt), "\n"));
+ sprint(player, strcat("monsters_total = ", ftos(monsters_total), "\n"));
+ sprint(player, strcat("monsters_killed = ", ftos(monsters_killed), "\n"));
+ sprint(player, strcat("inv_monsterskill = ", ftos(inv_monsterskill), "\n"));
return true;
}
MUTATOR_HOOKFUNCTION(inv, AccuracyTargetValid)
{
+ entity frag_target = M_ARGV(1, entity);
+
if(IS_MONSTER(frag_target))
return MUT_ACCADD_INVALID;
return MUT_ACCADD_INDIFFERENT;
MUTATOR_HOOKFUNCTION(inv, GetTeamCount, CBC_ORDER_EXCLUSIVE)
{
- ret_float = invasion_teams;
- return false;
+ M_ARGV(0, float) = invasion_teams;
}
MUTATOR_HOOKFUNCTION(inv, AllowMobButcher)