From: Mario Date: Sat, 28 Sep 2013 08:12:58 +0000 (-0700) Subject: Don't reduce owner's monster count if the monster can re-spawn X-Git-Tag: xonotic-v0.8.0~241^2^2~74 X-Git-Url: https://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=commitdiff_plain;h=b9ae66f612afe026edfeb808a17ac8f76027e36e Don't reduce owner's monster count if the monster can re-spawn --- diff --git a/monsters.cfg b/monsters.cfg index 8fe16f371..99e1fcf55 100644 --- a/monsters.cfg +++ b/monsters.cfg @@ -168,6 +168,8 @@ set g_monsters_miniboss_healthboost 100 set g_monsters_drop_time 10 set g_monsters_owners 1 set g_monsters_teams 1 +set g_monsters_score_kill 0 +set g_monsters_score_spawned 0 set g_monsters_spawnshieldtime 2 set g_monsters_typefrag 1 set g_monsters_target_range 2000 @@ -175,7 +177,6 @@ set g_monsters_target_infront 0 set g_monsters_attack_range 120 set g_monsters_respawn 1 set g_monsters_respawn_delay 20 -set g_monsters_score_kill 1 set g_monsters_max 20 set g_monsters_max_perplayer 0 set g_monsters_armor_blockpercent 0.5 diff --git a/qcsrc/common/monsters/sv_monsters.qc b/qcsrc/common/monsters/sv_monsters.qc index aff04c6df..8f97694fe 100644 --- a/qcsrc/common/monsters/sv_monsters.qc +++ b/qcsrc/common/monsters/sv_monsters.qc @@ -365,6 +365,7 @@ void Monster_Fade () self.monster_respawned = TRUE; self.think = self.monster_spawnfunc; self.nextthink = time + self.respawntime; + self.ltime = 0; self.deadflag = DEAD_RESPAWNING; if(self.spawnflags & MONSTER_RESPAWN_DEATHPOINT) { @@ -381,7 +382,13 @@ void Monster_Fade () self.SendFlags |= MSF_STATUS; } else + { + if(IS_CLIENT(self.realowner)) + if not(self.monster_respawned) + self.realowner.monstercount -= 1; + SUB_SetFade(self, time + 3, 1); + } } float Monster_CanJump (vector vel) @@ -883,7 +890,7 @@ void monsters_corpse_damage (entity inflictor, entity attacker, float damage, fl } } -void monster_die() +void monster_die(entity attacker) { self.think = monster_dead_think; self.nextthink = self.ticrate; @@ -898,14 +905,16 @@ void monster_die() if(!(self.spawnflags & MONSTERFLAG_SPAWNED) && !self.monster_respawned) monsters_killed += 1; + + if(IS_PLAYER(attacker)) + if( autocvar_g_monsters_score_spawned || + ( !(self.spawnflags & MONSTERFLAG_SPAWNED) && !self.monster_respawned) ) + PlayerScore_Add(attacker, SP_SCORE, +autocvar_g_monsters_score_kill); + if(self.candrop && self.weapon) W_ThrowNewWeapon(self, self.weapon, 0, self.origin, randomvec() * 150 + '0 0 325'); - if(IS_CLIENT(self.realowner)) - if not(self.monster_respawned) - self.realowner.monstercount -= 1; - self.event_damage = monsters_corpse_damage; self.solid = SOLID_CORPSE; self.takedamage = DAMAGE_AIM; @@ -942,7 +951,7 @@ void monsters_damage (entity inflictor, entity attacker, float damage, float dea vector v; float take, save; - v = healtharmor_applydamage(self.armorvalue, self.m_armor_blockpercent, damage); + v = healtharmor_applydamage(self.armorvalue, self.m_armor_blockpercent, damage, deathtype); take = v_x; save = v_y; @@ -975,8 +984,8 @@ void monsters_damage (entity inflictor, entity attacker, float damage, float dea SUB_UseTargets(); self.target2 = self.oldtarget2; // reset to original target on death, incase we respawn - monster_die(); - + monster_die(attacker); + frag_attacker = attacker; frag_target = self; MUTATOR_CALLHOOK(MonsterDies); diff --git a/qcsrc/common/notifications.qh b/qcsrc/common/notifications.qh index 1809eadcf..1a58afb78 100644 --- a/qcsrc/common/notifications.qh +++ b/qcsrc/common/notifications.qh @@ -457,7 +457,7 @@ void Send_Notification_WOCOVA( MULTITEAM_INFO(1, INFO_KEYHUNT_PICKUP_, 4, 1, 0, "s1", "", "", _("^BG%s^BG picked up the ^TC^TT Key"), "") \ MSG_INFO_NOTIF(1, INFO_LMS_FORFEIT, 1, 0, "s1", "", "", _("^BG%s^F3 forfeited"), "") \ MSG_INFO_NOTIF(1, INFO_LMS_NOLIVES, 1, 0, "s1", "", "", _("^BG%s^F3 has no more lives left"), "") \ - MSG_INFO_NOTIF(1, INFO_MONSTERS_DISABLED, 0, 0, "", "", "", _("^BGMonsters are currently disabled"), "") \ + MSG_INFO_NOTIF(1, INFO_MONSTERS_DISABLED, 0, 0, "", "", "", _("^BGMonsters are currently disabled"), "") \ MSG_INFO_NOTIF(1, INFO_POWERUP_INVISIBILITY, 1, 0, "s1", "s1", "strength", _("^BG%s^K1 picked up Invisibility"), "") \ MSG_INFO_NOTIF(1, INFO_POWERUP_SHIELD, 1, 0, "s1", "s1", "shield", _("^BG%s^K1 picked up Shield"), "") \ MSG_INFO_NOTIF(1, INFO_POWERUP_SPEED, 1, 0, "s1", "s1", "shield", _("^BG%s^K1 picked up Speed"), "") \ diff --git a/qcsrc/server/autocvars.qh b/qcsrc/server/autocvars.qh index 189ef8ac3..8d6da04d3 100644 --- a/qcsrc/server/autocvars.qh +++ b/qcsrc/server/autocvars.qh @@ -1235,6 +1235,8 @@ float autocvar_g_monsters_max_perplayer; float autocvar_g_monsters_target_range; float autocvar_g_monsters_target_infront; float autocvar_g_monsters_attack_range; +float autocvar_g_monsters_score_kill; +float autocvar_g_monsters_score_spawned; float autocvar_g_monsters_typefrag; float autocvar_g_monsters_owners; float autocvar_g_monsters_miniboss_chance;