]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Don't reduce owner's monster count if the monster can re-spawn
authorMario <mario.mario@y7mail.com>
Sat, 28 Sep 2013 08:12:58 +0000 (01:12 -0700)
committerMario <mario.mario@y7mail.com>
Sat, 28 Sep 2013 08:12:58 +0000 (01:12 -0700)
monsters.cfg
qcsrc/common/monsters/sv_monsters.qc
qcsrc/common/notifications.qh
qcsrc/server/autocvars.qh

index 8fe16f3715e531a3d63f3b8e9d019e9e2c35c8f1..99e1fcf5576f5c3f40c85d4daef455e75948da49 100644 (file)
@@ -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
index aff04c6dfc69cabdc677ba406e343ec0d11b8987..8f97694fed1a5b74d9ff3e0afd62def118666a73 100644 (file)
@@ -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);
index 1809eadcf02d704da67c67fc59b2ed8cd0c77c30..1a58afb78ae00b9bbc9981b9583d4a883ceaad44 100644 (file)
@@ -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"), "") \
index 189ef8ac33c258f353721dd3846213ea1e443bbf..8d6da04d34b566a23ffd43bde3d68d715387ff25 100644 (file)
@@ -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;