Remove disabled monsters (they don't fit very well & are too many to properly maintain)
authorMario <mario.mario@y7mail.com>
Sat, 12 Oct 2013 18:23:14 +0000 (05:23 +1100)
committerMario <mario.mario@y7mail.com>
Sat, 12 Oct 2013 18:23:14 +0000 (05:23 +1100)
38 files changed:
models/monsters/demon.mdl [deleted file]
models/monsters/demon.mdl.framegroups [deleted file]
models/monsters/dog.dpm [deleted file]
models/monsters/dog.dpm.framegroups [deleted file]
models/monsters/fish.mdl [deleted file]
models/monsters/fish.mdl.framegroups [deleted file]
models/monsters/hknight.mdl [deleted file]
models/monsters/hknight.mdl.framegroups [deleted file]
models/monsters/knight.mdl [deleted file]
models/monsters/knight.mdl.framegroups [deleted file]
models/monsters/ogre.dpm [deleted file]
models/monsters/ogre.dpm.framegroups [deleted file]
models/monsters/slime.dpm [deleted file]
models/monsters/slime.dpm.framegroups [deleted file]
monsters.cfg
qcsrc/common/deathtypes.qh
qcsrc/common/monsters/all.qh
qcsrc/common/monsters/monster/animus.qc [deleted file]
qcsrc/common/monsters/monster/bruiser.qc [deleted file]
qcsrc/common/monsters/monster/brute.qc [deleted file]
qcsrc/common/monsters/monster/cerberus.qc [deleted file]
qcsrc/common/monsters/monster/knight.qc [deleted file]
qcsrc/common/monsters/monster/slime.qc [deleted file]
qcsrc/common/monsters/monster/stingray.qc [deleted file]
qcsrc/common/monsters/monsters.qh
qcsrc/common/monsters/sv_monsters.qc
qcsrc/common/notifications.qh
qcsrc/menu/xonotic/dialog_monstertools.c
qcsrc/server/mutators/gamemode_invasion.qc
qcsrc/server/mutators/mutator_new_toys.qc
scripts/monsters.shader
textures/cerberus.png [deleted file]
textures/cerberus_pants.png [deleted file]
textures/ogre.png [deleted file]
textures/ogre_pants.png [deleted file]
textures/slime.png [deleted file]
textures/slime_norm.png [deleted file]
textures/slime_pants.png [deleted file]

diff --git a/models/monsters/demon.mdl b/models/monsters/demon.mdl
deleted file mode 100644 (file)
index d2a566b..0000000
Binary files a/models/monsters/demon.mdl and /dev/null differ
diff --git a/models/monsters/demon.mdl.framegroups b/models/monsters/demon.mdl.framegroups
deleted file mode 100644 (file)
index b87a087..0000000
+++ /dev/null
@@ -1 +0,0 @@
-1 12 10 1 // demon stand\r14 7 10 1 // demon walk\r22 5 10 1 // demon run\r28 11 10 0 // demon leap\r40 5 10 0 // demon pain\r46 8 10 0 // demon death\r55 14 10 1 // demon melee
\ No newline at end of file
diff --git a/models/monsters/dog.dpm b/models/monsters/dog.dpm
deleted file mode 100644 (file)
index e220158..0000000
Binary files a/models/monsters/dog.dpm and /dev/null differ
diff --git a/models/monsters/dog.dpm.framegroups b/models/monsters/dog.dpm.framegroups
deleted file mode 100644 (file)
index 9ace1c4..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-/*
-Generated framegroups file for dog
-Used by DarkPlaces to simulate frame groups in DPM models.
-*/
-
-1 25 60 1 // dog idle
-26 37 60 1 // dog walk
-63 37 120 1 // dog run
-100 50 60 1 // dog attack
-150 42 60 0 // dog die
-192 25 60 1 // dog pain
diff --git a/models/monsters/fish.mdl b/models/monsters/fish.mdl
deleted file mode 100644 (file)
index e1db999..0000000
Binary files a/models/monsters/fish.mdl and /dev/null differ
diff --git a/models/monsters/fish.mdl.framegroups b/models/monsters/fish.mdl.framegroups
deleted file mode 100644 (file)
index bf18b81..0000000
+++ /dev/null
@@ -1 +0,0 @@
-1 17 10 1 // fish attack\r19 19 10 0 // fish death\r41 16 10 1 // fish swim\r59 8 10 0 // fish pain
\ No newline at end of file
diff --git a/models/monsters/hknight.mdl b/models/monsters/hknight.mdl
deleted file mode 100644 (file)
index a0cd4d7..0000000
Binary files a/models/monsters/hknight.mdl and /dev/null differ
diff --git a/models/monsters/hknight.mdl.framegroups b/models/monsters/hknight.mdl.framegroups
deleted file mode 100644 (file)
index c495edd..0000000
+++ /dev/null
@@ -1 +0,0 @@
-1 8 10 1 // hellknight stand\r10 19 10 1 // hellknight walk\r30 7 10 1 // hellknight run\r38 4 10 0 // hellknight pain\r43 11 10 0 // hellknight death1\r55 8 10 0 // hellknight death2\r64 15 10 1 // hellknight charge1\r80 13 10 1 // hellknight magic1\r94 12 10 1 // hellknight magic2\r107 5 10 1 // hellknight charge2\r113 9 10 1 // hellknight slice\r123 9 10 1 // hellknight smash\r133 21 10 1 // hellknight weapon attack\r155 10 10 1 //hellknight magic3
\ No newline at end of file
diff --git a/models/monsters/knight.mdl b/models/monsters/knight.mdl
deleted file mode 100644 (file)
index 36ebd61..0000000
Binary files a/models/monsters/knight.mdl and /dev/null differ
diff --git a/models/monsters/knight.mdl.framegroups b/models/monsters/knight.mdl.framegroups
deleted file mode 100644 (file)
index c4acc5e..0000000
+++ /dev/null
@@ -1 +0,0 @@
-1 8 10 1 // knight stand\r10 7 10 1 // knight run\r18 10 10 1 // knight run attack\r29 2 10 0 // knight pain1\r32 10 10 0 // knight pain2\r43 9 10 1 // knight attack\r53 13 10 1 // knight walk\r67 4 10 0 // knight kneel\r72 4 10 1 // knight standing\r77 9 10 0 // knight death1\r88 10 10 0 // knight death2
\ No newline at end of file
diff --git a/models/monsters/ogre.dpm b/models/monsters/ogre.dpm
deleted file mode 100644 (file)
index c38482d..0000000
Binary files a/models/monsters/ogre.dpm and /dev/null differ
diff --git a/models/monsters/ogre.dpm.framegroups b/models/monsters/ogre.dpm.framegroups
deleted file mode 100644 (file)
index 03dd229..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-/*
-Generated framegroups file for ogre
-Used by DarkPlaces to simulate frame groups in DPM models.
-*/
-
-1 31 60 1 // ogre idle
-32 31 60 1 // ogre walk
-63 31 120 1 // ogre walk
-94 31 60 1 // ogre pain
-125 101 60 1 // ogre swing
-226 76 60 0 // ogre die
diff --git a/models/monsters/slime.dpm b/models/monsters/slime.dpm
deleted file mode 100644 (file)
index 095d5f7..0000000
Binary files a/models/monsters/slime.dpm and /dev/null differ
diff --git a/models/monsters/slime.dpm.framegroups b/models/monsters/slime.dpm.framegroups
deleted file mode 100644 (file)
index 4c1cf73..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-/*
-Generated framegroups file for slime
-Used by DarkPlaces to simulate frame groups in DPM models.
-*/
-
-1 36 30 1 // slime idle
-37 71 30 1 // slime walk
-108 51 30 1 // slime attack
-159 2 30 1 // slime fly
-161 61 30 1 // slime pain
-222 61 30 0 // slime die
index b3b5ab1..e9771c0 100644 (file)
-// {{{ #1: Brute
-set g_monster_brute_attack_chainsaw_damage 15
-set g_monster_brute_attack_grenade_damage 40
-set g_monster_brute_attack_grenade_edgedamage 20
-set g_monster_brute_attack_grenade_force 15
-set g_monster_brute_attack_grenade_radius 200
-set g_monster_brute_attack_grenade_speed 1400
-set g_monster_brute_attack_grenade_speed_up 150
-set g_monster_brute_attack_uzi_bullets 3
-set g_monster_brute_attack_uzi_chance 0.1
-set g_monster_brute_attack_uzi_damage 10
-set g_monster_brute_attack_uzi_force 5
-set g_monster_brute_health 300
-set g_monster_brute_speed_run 200
-set g_monster_brute_speed_stop 300
-set g_monster_brute_speed_walk 100
-// }}}
-// {{{ #2: Animus
-set g_monster_animus_attack_jump_damage 80
-set g_monster_animus_attack_melee_damage 45
-set g_monster_animus_health 150
-set g_monster_animus_speed_run 350
-set g_monster_animus_speed_stop 100
-set g_monster_animus_speed_walk 150
-// }}}
-// {{{ #3: Shambler
-set g_monster_shambler_attack_claw_damage 50
-set g_monster_shambler_attack_lightning_damage 15
-set g_monster_shambler_attack_smash_damage 50
-set g_monster_shambler_health 500
-set g_monster_shambler_speed_run 150
-set g_monster_shambler_speed_stop 300
-set g_monster_shambler_speed_walk 100
-// }}}
-// {{{ #4: Bruiser
-set g_monster_bruiser_attack_melee_damage 50
-set g_monster_bruiser_health 200
-set g_monster_bruiser_speed_run 360
-set g_monster_bruiser_speed_stop 50
-set g_monster_bruiser_speed_walk 40
-// }}}
-// {{{ #5: Wyvern
-set g_monster_wyvern_attack_fireball_damage 30
-set g_monster_wyvern_attack_fireball_damagetime 3
-set g_monster_wyvern_attack_fireball_edgedamage 20
-set g_monster_wyvern_attack_fireball_force 50
-set g_monster_wyvern_attack_fireball_radius 120
-set g_monster_wyvern_attack_fireball_speed 900
-set g_monster_wyvern_health 95
-set g_monster_wyvern_speed_run 120
-set g_monster_wyvern_speed_stop 300
-set g_monster_wyvern_speed_walk 40
-// }}}
-// {{{ #6: Cerberus
-set g_monster_cerberus_attack_bite_damage 30
-set g_monster_cerberus_attack_jump_damage 40
-set g_monster_cerberus_health 100
-set g_monster_cerberus_speed_run 250
-set g_monster_cerberus_speed_stop 50
-set g_monster_cerberus_speed_walk 60
-// }}}
-// {{{ #7: Slime
-set g_monster_slime_attack_explode_damage 250
-set g_monster_slime_health 80
-set g_monster_slime_speed_run 400
-set g_monster_slime_speed_stop 20
-set g_monster_slime_speed_walk 20
-// }}}
-// {{{ #8: Knight
-set g_monster_knight_attack_fireball_chance 0.3
-set g_monster_knight_attack_fireball_damage 30
-set g_monster_knight_attack_fireball_damagetime 1
-set g_monster_knight_attack_fireball_edgedamage 10
-set g_monster_knight_attack_fireball_force 50
-set g_monster_knight_attack_fireball_radius 70
-set g_monster_knight_attack_inferno_chance 0.4
-set g_monster_knight_attack_inferno_damage 40
-set g_monster_knight_attack_inferno_damagetime 3
-set g_monster_knight_attack_jump_chance 0.2
-set g_monster_knight_attack_jump_damage 25
-set g_monster_knight_attack_jump_distance 500
-set g_monster_knight_attack_melee_damage 20
-set g_monster_knight_attack_spike_chance 0.5
-set g_monster_knight_attack_spike_damage 20
-set g_monster_knight_attack_spike_edgedamage 10
-set g_monster_knight_attack_spike_force 5
-set g_monster_knight_attack_spike_radius 20
-set g_monster_knight_health 300
-set g_monster_knight_speed_run 150
-set g_monster_knight_speed_stop 100
-set g_monster_knight_speed_walk 75
+// {{{ #1: Zombie
+set g_monster_zombie_attack_leap_damage 50
+set g_monster_zombie_attack_leap_delay 1.5
+set g_monster_zombie_attack_leap_force 55
+set g_monster_zombie_attack_leap_speed 500
+set g_monster_zombie_attack_melee_damage 40
+set g_monster_zombie_attack_melee_delay 1.2
+set g_monster_zombie_health 150
+set g_monster_zombie_speed_run 400
+set g_monster_zombie_speed_stop 100
+set g_monster_zombie_speed_walk 150
 // }}}
-// {{{ #9: Stingray
-set g_monster_stingray_attack_bite_damage 25
-set g_monster_stingray_attack_bite_delay 0.5
-set g_monster_stingray_health 115
-set g_monster_stingray_speed_run 200
-set g_monster_stingray_speed_stop 10
-set g_monster_stingray_speed_walk 40
+// {{{ #2: Spider
+set g_monster_spider_attack_bite_damage 35
+set g_monster_spider_attack_bite_delay 1.2
+set g_monster_spider_attack_type 0
+set g_monster_spider_attack_web_damagetime 2
+set g_monster_spider_attack_web_delay 1.5
+set g_monster_spider_attack_web_speed 1000
+set g_monster_spider_attack_web_speed_up 150
+set g_monster_spider_health 160
+set g_monster_spider_speed_run 400
+set g_monster_spider_speed_stop 100
+set g_monster_spider_speed_walk 150
 // }}}
-// {{{ #10: Mage
+// {{{ #3: Mage
 set g_monster_mage_attack_spike_accel 400
 set g_monster_mage_attack_spike_damage 30
 set g_monster_mage_attack_spike_decel 400
@@ -123,30 +48,26 @@ set g_monster_mage_speed_run 75
 set g_monster_mage_speed_stop 50
 set g_monster_mage_speed_walk 50
 // }}}
-// {{{ #11: Zombie
-set g_monster_zombie_attack_leap_damage 50
-set g_monster_zombie_attack_leap_delay 1.5
-set g_monster_zombie_attack_leap_force 55
-set g_monster_zombie_attack_leap_speed 500
-set g_monster_zombie_attack_melee_damage 40
-set g_monster_zombie_attack_melee_delay 1.2
-set g_monster_zombie_health 150
-set g_monster_zombie_speed_run 400
-set g_monster_zombie_speed_stop 100
-set g_monster_zombie_speed_walk 150
+// {{{ #4: Wyvern
+set g_monster_wyvern_attack_fireball_damage 30
+set g_monster_wyvern_attack_fireball_damagetime 3
+set g_monster_wyvern_attack_fireball_edgedamage 20
+set g_monster_wyvern_attack_fireball_force 50
+set g_monster_wyvern_attack_fireball_radius 120
+set g_monster_wyvern_attack_fireball_speed 900
+set g_monster_wyvern_health 95
+set g_monster_wyvern_speed_run 120
+set g_monster_wyvern_speed_stop 300
+set g_monster_wyvern_speed_walk 40
 // }}}
-// {{{ #12: Spider
-set g_monster_spider_attack_bite_damage 35
-set g_monster_spider_attack_bite_delay 1.2
-set g_monster_spider_attack_type 0
-set g_monster_spider_attack_web_damagetime 2
-set g_monster_spider_attack_web_delay 1.5
-set g_monster_spider_attack_web_speed 1000
-set g_monster_spider_attack_web_speed_up 150
-set g_monster_spider_health 160
-set g_monster_spider_speed_run 400
-set g_monster_spider_speed_stop 100
-set g_monster_spider_speed_walk 150
+// {{{ #5: Shambler
+set g_monster_shambler_attack_claw_damage 50
+set g_monster_shambler_attack_lightning_damage 15
+set g_monster_shambler_attack_smash_damage 50
+set g_monster_shambler_health 500
+set g_monster_shambler_speed_run 150
+set g_monster_shambler_speed_stop 300
+set g_monster_shambler_speed_walk 100
 // }}}
 
 // {{{ Misc
index 5e4b087..9e16697 100644 (file)
        DEATHTYPE(DEATH_KILL,                   DEATH_SELF_SUICIDE,                 NO_MSG,                        NORMAL_POS) \
        DEATHTYPE(DEATH_LAVA,                   DEATH_SELF_LAVA,                    DEATH_MURDER_LAVA,             NORMAL_POS) \
        DEATHTYPE(DEATH_MIRRORDAMAGE,           DEATH_SELF_BETRAYAL,                NO_MSG,                        NORMAL_POS) \
-       DEATHTYPE(DEATH_MONSTER_CERBERUS_BITE,  DEATH_SELF_MON_CERBERUS_BITE,           DEATH_MURDER_MONSTER,              DEATH_MONSTER_FIRST) \
-       DEATHTYPE(DEATH_MONSTER_CERBERUS_JUMP,  DEATH_SELF_MON_CERBERUS_JUMP,           DEATH_MURDER_MONSTER,              NORMAL_POS) \
-       DEATHTYPE(DEATH_MONSTER_ANIMUS,                 DEATH_SELF_MON_ANIMUS,                          DEATH_MURDER_MONSTER,              NORMAL_POS) \
-       DEATHTYPE(DEATH_MONSTER_STINGRAY,               DEATH_SELF_MON_STINGRAY,                        DEATH_MURDER_MONSTER,              NORMAL_POS) \
-       DEATHTYPE(DEATH_MONSTER_KNIGHT_CRUSH,   DEATH_SELF_MON_KNIGHT_CRUSH,            DEATH_MURDER_MONSTER,              NORMAL_POS) \
-       DEATHTYPE(DEATH_MONSTER_KNIGHT_FBALL,   DEATH_SELF_MON_KNIGHT_FBALL,            DEATH_MURDER_MONSTER,              NORMAL_POS) \
-       DEATHTYPE(DEATH_MONSTER_KNIGHT_INFERNO, DEATH_SELF_MON_KNIGHT_INFERNO,          DEATH_MURDER_MONSTER,              NORMAL_POS) \
-       DEATHTYPE(DEATH_MONSTER_KNIGHT_MELEE,   DEATH_SELF_MON_KNIGHT_MELEE,            DEATH_MURDER_MONSTER,              NORMAL_POS) \
-       DEATHTYPE(DEATH_MONSTER_KNIGHT_SPIKE,   DEATH_SELF_MON_KNIGHT_SPIKE,            DEATH_MURDER_MONSTER,              NORMAL_POS) \
-       DEATHTYPE(DEATH_MONSTER_BRUISER,                DEATH_SELF_MON_BRUISER,                         DEATH_MURDER_MONSTER,              NORMAL_POS) \
-       DEATHTYPE(DEATH_MONSTER_BRUTE_BLADE,    DEATH_SELF_MON_BRUTE_BLADE,                     DEATH_MURDER_MONSTER,              NORMAL_POS) \
-       DEATHTYPE(DEATH_MONSTER_BRUTE_GRENADE,  DEATH_SELF_MON_BRUTE_GRENADE,           DEATH_MURDER_MONSTER,              NORMAL_POS) \
-       DEATHTYPE(DEATH_MONSTER_BRUTE_UZI,              DEATH_SELF_MON_BRUTE_UZI,                       DEATH_MURDER_MONSTER,              NORMAL_POS) \
-       DEATHTYPE(DEATH_MONSTER_MAGE,                   DEATH_SELF_MON_MAGE,                            DEATH_MURDER_MONSTER,              NORMAL_POS) \
+       DEATHTYPE(DEATH_MONSTER_MAGE,                   DEATH_SELF_MON_MAGE,                            DEATH_MURDER_MONSTER,              DEATH_MONSTER_FIRST) \
        DEATHTYPE(DEATH_MONSTER_SHAMBLER_CLAW,  DEATH_SELF_MON_SHAMBLER_CLAW,           DEATH_MURDER_MONSTER,              NORMAL_POS) \
        DEATHTYPE(DEATH_MONSTER_SHAMBLER_SMASH, DEATH_SELF_MON_SHAMBLER_SMASH,          DEATH_MURDER_MONSTER,              NORMAL_POS) \
        DEATHTYPE(DEATH_MONSTER_SHAMBLER_ZAP,   DEATH_SELF_MON_SHAMBLER_ZAP,            DEATH_MURDER_MONSTER,              NORMAL_POS) \
        DEATHTYPE(DEATH_MONSTER_SPIDER,                 DEATH_SELF_MON_SPIDER,                          DEATH_MURDER_MONSTER,              NORMAL_POS) \
        DEATHTYPE(DEATH_MONSTER_SPIDER_FIRE,    DEATH_SELF_MON_SPIDER_FIRE,                     DEATH_MURDER_MONSTER,              NORMAL_POS) \
-       DEATHTYPE(DEATH_MONSTER_SLIME,                  DEATH_SELF_MON_SLIME,                           DEATH_MURDER_MONSTER,              NORMAL_POS) \
        DEATHTYPE(DEATH_MONSTER_WYVERN,                 DEATH_SELF_MON_WYVERN,                          DEATH_MURDER_MONSTER,              NORMAL_POS) \
        DEATHTYPE(DEATH_MONSTER_ZOMBIE_JUMP,    DEATH_SELF_MON_ZOMBIE_JUMP,                     DEATH_MURDER_MONSTER,              NORMAL_POS) \
        DEATHTYPE(DEATH_MONSTER_ZOMBIE_MELEE,   DEATH_SELF_MON_ZOMBIE_MELEE,            DEATH_MURDER_MONSTER,              DEATH_MONSTER_LAST) \
index 0c4f0af..d30f298 100644 (file)
@@ -1,12 +1,5 @@
-#include "monster/brute.qc"
-#include "monster/animus.qc"
-#include "monster/shambler.qc"
-#include "monster/bruiser.qc"
-#include "monster/wyvern.qc"
-#include "monster/cerberus.qc"
-#include "monster/slime.qc"
-#include "monster/knight.qc"
-#include "monster/stingray.qc"
-#include "monster/mage.qc"
 #include "monster/zombie.qc"
 #include "monster/spider.qc"
+#include "monster/mage.qc"
+#include "monster/wyvern.qc"
+#include "monster/shambler.qc"
diff --git a/qcsrc/common/monsters/monster/animus.qc b/qcsrc/common/monsters/monster/animus.qc
deleted file mode 100644 (file)
index aa3dba2..0000000
+++ /dev/null
@@ -1,141 +0,0 @@
-#ifdef REGISTER_MONSTER
-REGISTER_MONSTER(
-/* MON_##id   */ ANIMUS,
-/* function   */ m_animus,
-/* spawnflags */ MONSTER_SIZE_BROKEN | MON_FLAG_MELEE | MON_FLAG_MUTATORBLOCKED,
-/* mins,maxs  */ '-41 -41 -31', '41 41 31',
-/* model      */ "demon.mdl",
-/* netname    */ "animus",
-/* fullname   */ _("Animus")
-);
-
-#define ANIMUS_SETTINGS(monster) \
-       MON_ADD_CVAR(monster, health) \
-       MON_ADD_CVAR(monster, attack_jump_damage) \
-       MON_ADD_CVAR(monster, attack_melee_damage) \
-       MON_ADD_CVAR(monster, speed_stop) \
-       MON_ADD_CVAR(monster, speed_run) \
-       MON_ADD_CVAR(monster, speed_walk) 
-
-#ifdef SVQC
-ANIMUS_SETTINGS(animus)
-#endif // SVQC
-#else
-#ifdef SVQC
-const float animus_anim_stand  = 0;
-const float animus_anim_walk   = 1;
-const float animus_anim_run            = 2;
-const float animus_anim_leap   = 3;
-const float animus_anim_pain   = 4;
-const float animus_anim_death  = 5;
-const float animus_anim_attack = 6;
-
-void animus_touch_jump()
-{
-       if (self.health <= 0)
-               return;
-
-       if (monster_isvalidtarget(other, self))
-       {
-               if (vlen(self.velocity) > 300)
-               {
-                       Damage(other, self, self, MON_CVAR(animus, attack_jump_damage) * monster_skill, DEATH_MONSTER_ANIMUS, other.origin, normalize(other.origin - self.origin));
-                       self.touch = MonsterTouch; // instantly turn it off to stop damage spam
-               }
-       }
-
-       if(trace_dphitcontents)
-               self.touch = MonsterTouch;
-}
-
-float animus_attack(float attack_type)
-{
-       switch(attack_type)
-       {
-               case MONSTER_ATTACK_MELEE:
-               {
-                       return monster_melee(self.enemy, MON_CVAR(animus, attack_melee_damage), animus_anim_attack, self.attack_range, 1, DEATH_MONSTER_ANIMUS, TRUE);
-               }
-               case MONSTER_ATTACK_RANGED:
-               {
-                       makevectors(self.angles);
-                       return monster_leap(animus_anim_leap, animus_touch_jump, v_forward * 700 + '0 0 300', 0.8);
-               }
-       }
-       
-       return FALSE;
-}
-
-void spawnfunc_monster_animus()
-{
-       self.classname = "monster_animus";
-       
-       self.monster_spawnfunc = spawnfunc_monster_animus;
-       
-       if(Monster_CheckAppearFlags(self))
-               return;
-       
-       if not(monster_initialize(MON_ANIMUS, FALSE)) { remove(self); return; }
-}
-
-// compatibility with old spawns
-void spawnfunc_monster_demon1() { spawnfunc_monster_animus(); }
-void spawnfunc_monster_demon() { spawnfunc_monster_animus(); }
-
-float m_animus(float req)
-{
-       switch(req)
-       {
-               case MR_THINK:
-               {
-                       monster_move(MON_CVAR(animus, speed_run), MON_CVAR(animus, speed_walk), MON_CVAR(animus, speed_stop), animus_anim_run, animus_anim_walk, animus_anim_stand);
-                       return TRUE;
-               }
-               case MR_DEATH:
-               {
-                       self.frame = animus_anim_death;
-                       return TRUE;
-               }
-               case MR_SETUP:
-               {
-                       if not(self.health) self.health = MON_CVAR(animus, health);
-                       
-                       self.monster_loot = spawnfunc_item_health_medium;
-                       self.monster_attackfunc = animus_attack;
-                       self.frame = animus_anim_stand;
-                       
-                       return TRUE;
-               }
-               case MR_PRECACHE:
-               {
-                       precache_model ("models/monsters/demon.mdl");
-                       return TRUE;
-               }
-               case MR_CONFIG:
-               {
-                       MON_CONFIG_SETTINGS(ANIMUS_SETTINGS(animus))
-                       return TRUE;
-               }
-       }
-       
-       return TRUE;
-}
-
-#endif // SVQC
-#ifdef CSQC
-float m_animus(float req)
-{
-       switch(req)
-       {
-               case MR_PRECACHE:
-               {
-                       precache_model ("models/monsters/demon.mdl");
-                       return TRUE;
-               }
-       }
-       
-       return TRUE;
-}
-
-#endif // CSQC
-#endif // REGISTER_MONSTER
diff --git a/qcsrc/common/monsters/monster/bruiser.qc b/qcsrc/common/monsters/monster/bruiser.qc
deleted file mode 100644 (file)
index dfb6d07..0000000
+++ /dev/null
@@ -1,133 +0,0 @@
-#ifdef REGISTER_MONSTER
-REGISTER_MONSTER(
-/* MON_##id   */ BRUISER,
-/* function   */ m_bruiser,
-/* spawnflags */ MONSTER_SIZE_BROKEN | MON_FLAG_MELEE | MON_FLAG_MUTATORBLOCKED,
-/* mins,maxs  */ '-20 -20 -31', '20 20 53',
-/* model      */ "knight.mdl",
-/* netname    */ "bruiser",
-/* fullname   */ _("Bruiser")
-);
-
-#define BRUISER_SETTINGS(monster) \
-       MON_ADD_CVAR(monster, health) \
-       MON_ADD_CVAR(monster, attack_melee_damage) \
-       MON_ADD_CVAR(monster, speed_stop) \
-       MON_ADD_CVAR(monster, speed_run) \
-       MON_ADD_CVAR(monster, speed_walk) 
-
-#ifdef SVQC
-BRUISER_SETTINGS(bruiser)
-#endif // SVQC
-#else
-#ifdef SVQC
-const float bruiser_anim_stand                 = 0;
-const float bruiser_anim_run           = 1;
-const float bruiser_anim_runattack     = 2;
-const float bruiser_anim_pain1                 = 3;
-const float bruiser_anim_pain2                 = 4;
-const float bruiser_anim_attack        = 5;
-const float bruiser_anim_walk          = 6;
-const float bruiser_anim_kneel                 = 7;
-const float bruiser_anim_standing      = 8;
-const float bruiser_anim_death1        = 9;
-const float bruiser_anim_death2        = 10;
-
-float bruiser_attack(float attack_type)
-{
-       switch(attack_type)
-       {
-               case MONSTER_ATTACK_MELEE:
-               {
-                       float len = vlen(self.velocity);
-                       
-                       return monster_melee(self.enemy, MON_CVAR(bruiser, attack_melee_damage), ((len < 50) ? bruiser_anim_attack : bruiser_anim_runattack), self.attack_range, 1.25, DEATH_MONSTER_BRUISER, FALSE);
-               }
-               case MONSTER_ATTACK_RANGED:
-               {
-                       // no ranged attacks for bruiser
-                       return FALSE;
-               }
-       }
-       
-       return FALSE;
-}
-
-void spawnfunc_monster_bruiser()
-{
-       self.classname = "monster_bruiser";
-       
-       self.monster_spawnfunc = spawnfunc_monster_bruiser;
-       
-       if(Monster_CheckAppearFlags(self))
-               return;
-       
-       if not(monster_initialize(MON_BRUISER, FALSE)) { remove(self); return; }
-}
-
-float m_bruiser(float req)
-{
-       switch(req)
-       {
-               case MR_THINK:
-               {
-                       entity pet = world;
-                       pet = findentity(pet, monster_owner, self);
-                       float rspeed = MON_CVAR(bruiser, speed_run);
-                       
-                       if(pet)
-                       if(self.enemy)
-                       if(vlen(self.enemy.origin - pet.origin) < vlen(self.enemy.origin - self.origin))
-                               rspeed = 0;
-                               
-                       monster_move(rspeed, MON_CVAR(bruiser, speed_walk), MON_CVAR(bruiser, speed_stop), bruiser_anim_run, bruiser_anim_walk, bruiser_anim_stand);
-                       return TRUE;
-               }
-               case MR_DEATH:
-               {
-                       self.frame = ((random() > 0.5) ? bruiser_anim_death1 : bruiser_anim_death2);
-                       return TRUE;
-               }
-               case MR_SETUP:
-               {
-                       if not(self.health) self.health = MON_CVAR(bruiser, health);
-                       
-                       self.monster_loot = spawnfunc_item_armor_medium;
-                       self.monster_attackfunc = bruiser_attack;
-                       self.frame = bruiser_anim_stand;
-                       
-                       return TRUE;
-               }
-               case MR_PRECACHE:
-               {
-                       precache_model ("models/monsters/knight.mdl");
-                       return TRUE;
-               }
-               case MR_CONFIG:
-               {
-                       MON_CONFIG_SETTINGS(BRUISER_SETTINGS(bruiser))
-                       return TRUE;
-               }
-       }
-       
-       return TRUE;
-}
-
-#endif // SVQC
-#ifdef CSQC
-float m_bruiser(float req)
-{
-       switch(req)
-       {
-               case MR_PRECACHE:
-               {
-                       precache_model ("models/monsters/knight.mdl");
-                       return TRUE;
-               }
-       }
-       
-       return TRUE;
-}
-
-#endif // CSQC
-#endif // REGISTER_MONSTER
diff --git a/qcsrc/common/monsters/monster/brute.qc b/qcsrc/common/monsters/monster/brute.qc
deleted file mode 100644 (file)
index 4b7fa56..0000000
+++ /dev/null
@@ -1,266 +0,0 @@
-#ifdef REGISTER_MONSTER
-REGISTER_MONSTER(
-/* MON_##id   */ BRUTE,
-/* function   */ m_brute,
-/* spawnflags */ MON_FLAG_MELEE | MON_FLAG_RANGED | MON_FLAG_MUTATORBLOCKED,
-/* mins,maxs  */ '-36 -36 -20', '36 36 50',
-/* model      */ "ogre.dpm",
-/* netname    */ "brute",
-/* fullname   */ _("Brute")
-);
-
-#define BRUTE_SETTINGS(monster) \
-       MON_ADD_CVAR(monster, health) \
-       MON_ADD_CVAR(monster, attack_chainsaw_damage) \
-       MON_ADD_CVAR(monster, attack_uzi_bullets) \
-       MON_ADD_CVAR(monster, attack_uzi_damage) \
-       MON_ADD_CVAR(monster, attack_uzi_force) \
-       MON_ADD_CVAR(monster, attack_uzi_chance) \
-       MON_ADD_CVAR(monster, attack_grenade_damage) \
-       MON_ADD_CVAR(monster, attack_grenade_edgedamage) \
-       MON_ADD_CVAR(monster, attack_grenade_force) \
-       MON_ADD_CVAR(monster, attack_grenade_radius) \
-       MON_ADD_CVAR(monster, attack_grenade_speed) \
-       MON_ADD_CVAR(monster, attack_grenade_speed_up) \
-       MON_ADD_CVAR(monster, speed_stop) \
-       MON_ADD_CVAR(monster, speed_run) \
-       MON_ADD_CVAR(monster, speed_walk) 
-
-#ifdef SVQC
-BRUTE_SETTINGS(brute)
-#endif // SVQC
-#else
-#ifdef SVQC
-const float brute_anim_idle            = 0;
-const float brute_anim_walk            = 1;
-const float brute_anim_run                     = 2;
-const float brute_anim_pain            = 3;
-const float brute_anim_swing           = 4;
-const float brute_anim_die                     = 5;
-
-.float brute_cycles;
-
-void brute_blade()
-{
-       self.brute_cycles += 1;
-       self.angles_y = self.angles_y + random()* 25;
-       
-       monster_melee(self.enemy, MON_CVAR(brute, attack_chainsaw_damage), brute_anim_swing, self.attack_range, 0, DEATH_MONSTER_BRUTE_BLADE, TRUE);
-       
-       if(self.brute_cycles <= 4)
-               defer(0.2, brute_blade);
-}
-
-void brute_uzi()
-{
-       self.brute_cycles += 1;
-       
-       monster_makevectors(self.enemy);
-       
-       sound(self, CH_WEAPON_A, "weapons/uzi_fire.wav", VOL_BASE, ATTEN_NORM);
-       fireBallisticBullet(CENTER_OR_VIEWOFS(self), v_forward, 0.02, 18000, 5, MON_CVAR(brute, attack_uzi_damage), MON_CVAR(brute, attack_uzi_force), DEATH_MONSTER_BRUTE_UZI, 0, 1, 115);
-       endFireBallisticBullet();
-       
-       if(self.brute_cycles <= MON_CVAR(brute, attack_uzi_bullets))
-               defer(0.1, brute_uzi);
-}
-
-void brute_grenade_explode()
-{
-       pointparticles(particleeffectnum("grenade_explode"), self.origin, '0 0 0', 1);
-       sound(self, CH_SHOTS, "weapons/grenade_impact.wav", VOL_BASE, ATTEN_NORM);
-
-       self.event_damage = func_null;
-       self.takedamage = DAMAGE_NO;
-
-       if(self.movetype == MOVETYPE_NONE)
-               self.velocity = self.oldvelocity;
-
-       RadiusDamage (self, self.realowner, MON_CVAR(brute, attack_grenade_damage), MON_CVAR(brute, attack_grenade_edgedamage), MON_CVAR(brute, attack_grenade_radius), world, MON_CVAR(brute, attack_grenade_force), self.projectiledeathtype, other);
-
-       remove (self);
-}
-
-void brute_grenade_damage(entity inflictor, entity attacker, float damage, float deathtype, vector hitloc, vector force)
-{
-       if (self.health <= 0)
-               return;
-               
-       if (!W_CheckProjectileDamage(inflictor.realowner, self.realowner, deathtype, -1)) // no exceptions
-               return; // g_projectiles_damage says to halt
-               
-       self.health = self.health - damage;
-       
-       if (self.health <= 0)
-               W_PrepareExplosionByDamage(attacker, self.use);
-}
-
-void brute_grenade_touch()
-{
-       PROJECTILE_TOUCH;
-       
-       self.use ();
-}
-
-void brute_grenade_think()
-{
-       self.nextthink = time;
-       if (time > self.cnt)
-       {
-               other = world;
-               brute_grenade_explode();
-               return;
-       }
-}
-
-void brute_grenade()
-{
-       entity gren;
-       
-       monster_makevectors(self.enemy);
-       
-       sound(self, CH_WEAPON_A, "weapons/grenade_fire.wav", VOL_BASE, ATTEN_NORM);
-
-       gren = spawn ();
-       gren.owner = gren.realowner = self;
-       gren.classname = "grenade";
-       gren.bot_dodge = TRUE;
-       gren.bot_dodgerating = MON_CVAR(brute, attack_grenade_damage);
-       gren.movetype = MOVETYPE_BOUNCE;
-       PROJECTILE_MAKETRIGGER(gren);
-       gren.projectiledeathtype = DEATH_MONSTER_BRUTE_GRENADE;
-       setorigin(gren, CENTER_OR_VIEWOFS(self));
-       setsize(gren, '-3 -3 -3', '3 3 3');
-
-       gren.cnt = time + 5;
-       gren.nextthink = time;
-       gren.think = brute_grenade_think;
-       gren.use = brute_grenade_explode;
-       gren.touch = brute_grenade_touch;
-
-       gren.takedamage = DAMAGE_YES;
-       gren.health = 50;
-       gren.damageforcescale = 0;
-       gren.event_damage = brute_grenade_damage;
-       gren.damagedbycontents = TRUE;
-       gren.missile_flags = MIF_SPLASH | MIF_ARC;
-       W_SetupProjectileVelocityEx(gren, v_forward, v_up, MON_CVAR(brute, attack_grenade_speed), MON_CVAR(brute, attack_grenade_speed_up), 0, 0, FALSE);
-
-       gren.angles = vectoangles (gren.velocity);
-       gren.flags = FL_PROJECTILE;
-
-       CSQCProjectile(gren, TRUE, PROJECTILE_GRENADE, TRUE);
-}
-
-float brute_attack(float attack_type)
-{
-       switch(attack_type)
-       {
-               case MONSTER_ATTACK_MELEE:
-               {
-                       self.brute_cycles = 0;
-                       self.attack_finished_single = time + 1.3;
-                       brute_blade();
-                       
-                       return TRUE;
-               }
-               case MONSTER_ATTACK_RANGED:
-               {
-                       self.brute_cycles = 0;
-                       if(random() <= MON_CVAR(brute, attack_uzi_chance))
-                       {
-                               self.frame = brute_anim_pain;
-                               self.attack_finished_single = time + 0.8;
-                               defer(0.1, brute_uzi);
-                       }
-                       else
-                       {
-                               monster_makevectors(self.enemy);
-                               brute_grenade();
-                               self.frame = brute_anim_pain;
-                               self.attack_finished_single = time + 1.2;
-                       }
-                       
-                       return TRUE;
-               }
-       }
-       
-       return FALSE;
-}
-
-void spawnfunc_monster_brute()
-{
-       self.classname = "monster_brute";
-       
-       self.monster_spawnfunc = spawnfunc_monster_brute;
-       
-       if(Monster_CheckAppearFlags(self))
-               return;
-       
-       if not(monster_initialize(MON_BRUTE, FALSE)) { remove(self); return; }
-}
-
-// compatibility with old spawns
-void spawnfunc_monster_ogre() { spawnfunc_monster_brute(); }
-
-float m_brute(float req)
-{
-       switch(req)
-       {
-               case MR_THINK:
-               {
-                       monster_move(MON_CVAR(brute, speed_run), MON_CVAR(brute, speed_walk), MON_CVAR(brute, speed_stop), brute_anim_run, brute_anim_walk, brute_anim_idle);
-                       return TRUE;
-               }
-               case MR_DEATH:
-               {
-                       self.frame = brute_anim_die;
-                       return TRUE;
-               }
-               case MR_SETUP:
-               {
-                       if not(self.health) self.health = MON_CVAR(brute, health);
-                       
-                       self.monster_loot = spawnfunc_item_bullets;
-                       self.monster_attackfunc = brute_attack;
-                       self.frame = brute_anim_idle;
-                       self.weapon = WEP_GRENADE_LAUNCHER;
-                       
-                       return TRUE;
-               }
-               case MR_PRECACHE:
-               {
-                       precache_model ("models/monsters/ogre.dpm");
-                       precache_sound ("weapons/uzi_fire.wav");
-                       precache_sound ("weapons/grenade_impact.wav");
-                       precache_sound ("weapons/grenade_fire.wav");
-                       return TRUE;
-               }
-               case MR_CONFIG:
-               {
-                       MON_CONFIG_SETTINGS(BRUTE_SETTINGS(brute))
-                       return TRUE;
-               }
-       }
-       
-       return TRUE;
-}
-
-#endif // SVQC
-#ifdef CSQC
-float m_brute(float req)
-{
-       switch(req)
-       {
-               case MR_PRECACHE:
-               {
-                       precache_model ("models/monsters/ogre.dpm");
-                       return TRUE;
-               }
-       }
-       
-       return TRUE;
-}
-
-#endif // CSQC
-#endif // REGISTER_MONSTER
diff --git a/qcsrc/common/monsters/monster/cerberus.qc b/qcsrc/common/monsters/monster/cerberus.qc
deleted file mode 100644 (file)
index b396410..0000000
+++ /dev/null
@@ -1,181 +0,0 @@
-#ifdef REGISTER_MONSTER
-REGISTER_MONSTER(
-/* MON_##id   */ CERBERUS,
-/* function   */ m_cerberus,
-/* spawnflags */ MON_FLAG_MELEE | MON_FLAG_MUTATORBLOCKED,
-/* mins,maxs  */ '-16 -16 -24', '16 16 12',
-/* model      */ "dog.dpm",
-/* netname    */ "cerberus",
-/* fullname   */ _("Cerberus")
-);
-
-#define CERBERUS_SETTINGS(monster) \
-       MON_ADD_CVAR(monster, health) \
-       MON_ADD_CVAR(monster, attack_bite_damage) \
-       MON_ADD_CVAR(monster, attack_jump_damage) \
-       MON_ADD_CVAR(monster, speed_stop) \
-       MON_ADD_CVAR(monster, speed_run) \
-       MON_ADD_CVAR(monster, speed_walk) 
-
-#ifdef SVQC
-CERBERUS_SETTINGS(cerberus)
-#endif // SVQC
-#else
-#ifdef SVQC
-const float cerberus_anim_idle         = 0;
-const float cerberus_anim_walk         = 1;
-const float cerberus_anim_run          = 2;
-const float cerberus_anim_attack       = 3;
-const float cerberus_anim_die          = 4;
-const float cerberus_anim_pain         = 5;
-
-.float cerberus_last_trace;
-
-void cerberus_findowner()
-{
-       if(time < self.cerberus_last_trace || self.monster_owner)
-               return;
-               
-       entity head;
-       
-       FOR_EACH_MONSTER(head)
-       if(head.health > 0)
-       if(head.monsterid == MON_BRUISER)
-       if(findentity(world, monster_owner, head) == world)
-       if(vlen(head.origin - self.origin) < self.target_range)
-       if(SAME_TEAM(head, self))
-       if(head.enemy == world)
-       {
-               self.monster_owner = head;
-               break;
-       }
-               
-       self.cerberus_last_trace = time + 3;
-}
-
-void cerberus_checkowner()
-{
-       if(time < self.cerberus_last_trace)
-               return;
-       if(IS_PLAYER(self.monster_owner))
-               return; // don't check player masters
-
-       if(vlen(self.origin - self.monster_owner.origin) > self.target_range)
-               self.monster_owner = world;
-       if(self.monster_owner.health < 1)
-               self.monster_owner = world;
-       if(DIFF_TEAM(self.monster_owner, self))
-               self.monster_owner = world;
-               
-       self.cerberus_last_trace = time + 3;
-}
-
-void cerberus_touch_jump()
-{
-       if (other.takedamage)
-       if (vlen(self.velocity) > 300)
-       {
-               Damage(self.enemy, self, self, MON_CVAR(cerberus, attack_jump_damage) * monster_skill, DEATH_MONSTER_CERBERUS_JUMP, self.enemy.origin, normalize(self.enemy.origin - self.origin));
-               self.touch = MonsterTouch;
-       }
-
-       if(trace_dphitcontents)
-               self.touch = MonsterTouch;
-}
-
-float cerberus_attack(float attack_type)
-{
-       switch(attack_type)
-       {
-               case MONSTER_ATTACK_MELEE:
-               {
-                       return monster_melee(self.enemy, MON_CVAR(cerberus, attack_bite_damage), cerberus_anim_attack, self.attack_range, 0.7, DEATH_MONSTER_CERBERUS_BITE, TRUE);
-               }
-               case MONSTER_ATTACK_RANGED:
-               {
-                       makevectors(self.angles);
-                       return monster_leap(cerberus_anim_attack, cerberus_touch_jump, v_forward * 300 + '0 0 200', 0.8);
-               }
-       }
-       
-       return FALSE;
-}
-
-void spawnfunc_monster_cerberus()
-{
-       self.classname = "monster_cerberus";
-       
-       self.monster_spawnfunc = spawnfunc_monster_cerberus;
-       
-       if(Monster_CheckAppearFlags(self))
-               return;
-       
-       if not(monster_initialize(MON_CERBERUS, FALSE)) { remove(self); return; }
-}
-
-// compatibility with old spawns
-void spawnfunc_monster_dog() { spawnfunc_monster_cerberus(); }
-
-float m_cerberus(float req)
-{
-       switch(req)
-       {
-               case MR_THINK:
-               {
-                       if(self.monster_owner)
-                               cerberus_checkowner();
-                       else
-                               cerberus_findowner();
-                       monster_move(MON_CVAR(cerberus, speed_run), MON_CVAR(cerberus, speed_walk), MON_CVAR(cerberus, speed_stop), cerberus_anim_run, cerberus_anim_walk, cerberus_anim_idle);
-                       return TRUE;
-               }
-               case MR_DEATH:
-               {
-                       if(self.monster_owner.flags & FL_MONSTER)
-                               self.monster_owner = world;
-                       self.frame = cerberus_anim_die;
-                       return TRUE;
-               }
-               case MR_SETUP:
-               {
-                       if not(self.health) self.health = MON_CVAR(cerberus, health);
-                       
-                       self.monster_loot = spawnfunc_item_health_small;
-                       self.monster_attackfunc = cerberus_attack;
-                       self.frame = cerberus_anim_idle;
-                       
-                       return TRUE;
-               }
-               case MR_PRECACHE:
-               {
-                       precache_model ("models/monsters/dog.dpm");
-                       return TRUE;
-               }
-               case MR_CONFIG:
-               {
-                       MON_CONFIG_SETTINGS(CERBERUS_SETTINGS(cerberus))
-                       return TRUE;
-               }
-       }
-       
-       return TRUE;
-}
-
-#endif // SVQC
-#ifdef CSQC
-float m_cerberus(float req)
-{
-       switch(req)
-       {
-               case MR_PRECACHE:
-               {
-                       precache_model ("models/monsters/dog.dpm");
-                       return TRUE;
-               }
-       }
-       
-       return TRUE;
-}
-
-#endif // CSQC
-#endif // REGISTER_MONSTER
\ No newline at end of file
diff --git a/qcsrc/common/monsters/monster/knight.qc b/qcsrc/common/monsters/monster/knight.qc
deleted file mode 100644 (file)
index 1189d93..0000000
+++ /dev/null
@@ -1,335 +0,0 @@
-#ifdef REGISTER_MONSTER
-REGISTER_MONSTER(
-/* MON_##id   */ KNIGHT,
-/* function   */ m_knight,
-/* spawnflags */ MONSTER_SIZE_BROKEN | MON_FLAG_MELEE | MON_FLAG_RANGED | MON_FLAG_MUTATORBLOCKED,
-/* mins,maxs  */ '-20 -20 -32', '20 20 41',
-/* model      */ "hknight.mdl",
-/* netname    */ "knight",
-/* fullname   */ _("Knight")
-);
-
-#define KNIGHT_SETTINGS(monster) \
-       MON_ADD_CVAR(monster, health) \
-       MON_ADD_CVAR(monster, attack_melee_damage) \
-       MON_ADD_CVAR(monster, attack_inferno_damage) \
-       MON_ADD_CVAR(monster, attack_inferno_damagetime) \
-       MON_ADD_CVAR(monster, attack_inferno_chance) \
-       MON_ADD_CVAR(monster, attack_fireball_damage) \
-       MON_ADD_CVAR(monster, attack_fireball_edgedamage) \
-       MON_ADD_CVAR(monster, attack_fireball_damagetime) \
-       MON_ADD_CVAR(monster, attack_fireball_force) \
-       MON_ADD_CVAR(monster, attack_fireball_radius) \
-       MON_ADD_CVAR(monster, attack_fireball_chance) \
-       MON_ADD_CVAR(monster, attack_spike_damage) \
-       MON_ADD_CVAR(monster, attack_spike_edgedamage) \
-       MON_ADD_CVAR(monster, attack_spike_force) \
-       MON_ADD_CVAR(monster, attack_spike_radius) \
-       MON_ADD_CVAR(monster, attack_spike_chance) \
-       MON_ADD_CVAR(monster, attack_jump_damage) \
-       MON_ADD_CVAR(monster, attack_jump_distance) \
-       MON_ADD_CVAR(monster, attack_jump_chance) \
-       MON_ADD_CVAR(monster, speed_stop) \
-       MON_ADD_CVAR(monster, speed_run) \
-       MON_ADD_CVAR(monster, speed_walk) 
-
-#ifdef SVQC
-KNIGHT_SETTINGS(knight)
-#endif // SVQC
-#else
-#ifdef SVQC
-const float knight_anim_stand  = 0;
-const float knight_anim_walk   = 1;
-const float knight_anim_run    = 2;
-const float knight_anim_pain   = 3;
-const float knight_anim_death1         = 4;
-const float knight_anim_death2         = 5;
-const float knight_anim_charge1 = 6;
-const float knight_anim_magic1         = 7;
-const float knight_anim_magic2         = 8;
-const float knight_anim_charge2 = 9;
-const float knight_anim_slice  = 10;
-const float knight_anim_smash  = 11;
-const float knight_anim_wattack = 12;
-const float knight_anim_magic3         = 13;
-
-.float knight_cycles;
-
-void knight_inferno()
-{
-       if not(self.enemy)
-               return;
-               
-       traceline((self.absmin + self.absmax) * 0.5, (self.enemy.absmin + self.enemy.absmax) * 0.5, TRUE, world);
-       if (trace_fraction != 1)
-               return; // not visible
-       
-       self.enemy.effects |= EF_MUZZLEFLASH;
-       sound(self.enemy, CHAN_AUTO, "player/lava.wav", 1, ATTEN_NORM);
-       
-       if(vlen(self.enemy.origin - self.origin) <= 2000)
-               Fire_AddDamage(self.enemy, self, MON_CVAR(knight, attack_inferno_damage) * monster_skill, MON_CVAR(knight, attack_inferno_damagetime), DEATH_MONSTER_KNIGHT_INFERNO);
-}
-
-void knight_fireball_explode()
-{
-       entity e;
-       if(self)
-       {
-               pointparticles(particleeffectnum("fireball_explode"), self.origin, '0 0 0', 1);
-               
-               RadiusDamage(self, self.realowner, MON_CVAR(knight, attack_fireball_damage), MON_CVAR(knight, attack_fireball_edgedamage), MON_CVAR(knight, attack_fireball_force), world, MON_CVAR(knight, attack_fireball_radius), self.projectiledeathtype, world);
-               
-               for(e = world; (e = findfloat(e, takedamage, DAMAGE_AIM)); ) if(vlen(e.origin - self.origin) <= MON_CVAR(knight, attack_inferno_damage))
-                       Fire_AddDamage(e, self, 5 * monster_skill, MON_CVAR(knight, attack_fireball_damagetime), self.projectiledeathtype);
-               
-               remove(self);
-       }
-}
-
-void knight_fireball_touch()
-{
-       PROJECTILE_TOUCH;
-       
-       knight_fireball_explode();
-}
-
-void knight_fireball()
-{
-       entity missile = spawn();
-       vector dir = normalize((self.enemy.origin + '0 0 10') - self.origin);
-       
-       monster_makevectors(self.enemy);
-       
-       self.effects |= EF_MUZZLEFLASH;
-       sound(self, CHAN_WEAPON, "weapons/fireball2.wav", 1, ATTEN_NORM);
-
-       missile.owner = missile.realowner = self;
-       missile.solid = SOLID_TRIGGER;
-       missile.movetype = MOVETYPE_FLYMISSILE;
-       missile.projectiledeathtype = DEATH_MONSTER_KNIGHT_FBALL;
-       setsize(missile, '-6 -6 -6', '6 6 6');          
-       setorigin(missile, self.origin + self.view_ofs + v_forward * 14);
-       missile.flags = FL_PROJECTILE;
-       missile.velocity = dir * 400;
-       missile.avelocity = '300 300 300';
-       missile.nextthink = time + 5;
-       missile.think = knight_fireball_explode;
-       missile.enemy = self.enemy;
-       missile.touch = knight_fireball_touch;
-       CSQCProjectile(missile, TRUE, PROJECTILE_FIREMINE, TRUE);
-}
-
-void knight_spike_explode()
-{
-       if(self)
-       {
-               pointparticles(particleeffectnum("TE_WIZSPIKE"), self.origin, '0 0 0', 1);
-               
-               RadiusDamage (self, self.realowner, MON_CVAR(knight, attack_spike_damage), MON_CVAR(knight, attack_spike_edgedamage), MON_CVAR(knight, attack_spike_force), world, MON_CVAR(knight, attack_spike_radius), DEATH_MONSTER_KNIGHT_SPIKE, other);
-               remove(self);
-       }
-}
-
-void knight_spike_touch()
-{
-       PROJECTILE_TOUCH;
-       
-       knight_spike_explode();
-}
-
-void knight_spike()
-{
-       entity missile;
-       vector dir = normalize((self.enemy.origin + '0 0 10') - self.origin);
-
-       self.effects |= EF_MUZZLEFLASH;
-
-       missile = spawn ();
-       missile.owner = missile.realowner = self;
-       missile.solid = SOLID_TRIGGER;
-       missile.movetype = MOVETYPE_FLYMISSILE;
-       setsize (missile, '0 0 0', '0 0 0');            
-       setorigin(missile, self.origin + '0 0 10' + v_forward * 14);
-       missile.scale = self.scale;
-       missile.flags = FL_PROJECTILE;
-       missile.velocity = dir * 400;
-       missile.avelocity = '300 300 300';
-       missile.nextthink = time + 5;
-       missile.think = knight_spike_explode;
-       missile.enemy = self.enemy;
-       missile.touch = knight_spike_touch;
-       CSQCProjectile(missile, TRUE, PROJECTILE_CRYLINK, TRUE);
-}
-
-void knight_spikes()
-{
-       self.knight_cycles += 1;
-       knight_spike();
-       
-       if(self.knight_cycles <= 7)
-               defer(0.1, knight_spikes);
-}
-
-float knight_attack_ranged()
-{
-       if not(self.flags & FL_ONGROUND)
-               return FALSE;
-               
-       self.knight_cycles = 0;
-       
-       RandomSelection_Init();
-       RandomSelection_Add(world, 1, "", MON_CVAR(knight, attack_fireball_chance), 1);
-       RandomSelection_Add(world, 2, "", MON_CVAR(knight, attack_inferno_chance), 1);
-       RandomSelection_Add(world, 3, "", MON_CVAR(knight, attack_spike_chance), 1);
-       if(self.health >= 100) RandomSelection_Add(world, 4, "", ((vlen(self.enemy.origin - self.origin) > MON_CVAR(knight, attack_jump_distance)) ? 1 : MON_CVAR(knight, attack_jump_chance)), 1);
-       
-       switch(RandomSelection_chosen_float)
-       {
-               case 1:
-               {
-                       self.frame = knight_anim_magic2;
-                       self.attack_finished_single = time + 2;
-                       defer(0.4, knight_fireball);
-                       
-                       return TRUE;
-               }
-               case 2:
-               {
-                       self.attack_finished_single = time + 3;
-                       defer(0.5, knight_inferno);
-                       return TRUE;
-               }
-               case 3:
-               {
-                       self.frame = knight_anim_magic3;
-                       self.attack_finished_single = time + 3;
-                       defer(0.4, knight_spikes);
-                       
-                       return TRUE;
-               }
-               case 4:
-               {
-                       float er = vlen(self.enemy.origin - self.origin);
-                       
-                       if(er >= 400 && er < 1200)
-                       if(findtrajectorywithleading(self.origin, self.mins, self.maxs, self.enemy, 1000, 0, 10, 0, self))
-                       {
-                               self.velocity = findtrajectory_velocity;
-                               Damage(self.enemy, self, self, MON_CVAR(knight, attack_jump_damage) * monster_skill, DEATH_MONSTER_KNIGHT_CRUSH, self.enemy.origin, normalize(self.enemy.origin - self.origin));
-                               self.attack_finished_single = time + 2;
-                               return TRUE;
-                       }
-                       return FALSE;
-               }
-       }
-       
-       return FALSE;
-}
-
-float knight_attack(float attack_type)
-{
-       switch(attack_type)
-       {
-               case MONSTER_ATTACK_MELEE:
-               {
-                       float anim;
-                       if(random() < 0.3)
-                               anim = knight_anim_slice;
-                       else if(random() < 0.6)
-                               anim = knight_anim_smash;
-                       else
-                               anim = knight_anim_wattack;
-                               
-                       return monster_melee(self.enemy, MON_CVAR(knight, attack_melee_damage), anim, self.attack_range, 0.7, DEATH_MONSTER_KNIGHT_MELEE, TRUE);
-               }
-               case MONSTER_ATTACK_RANGED:
-               {
-                       return knight_attack_ranged();
-               }
-       }
-       
-       return FALSE;
-}
-
-void spawnfunc_monster_knight()
-{
-       self.classname = "monster_knight";
-       
-       self.monster_spawnfunc = spawnfunc_monster_knight;
-       
-       if(Monster_CheckAppearFlags(self))
-               return;
-       
-       if not(monster_initialize(MON_KNIGHT, FALSE)) { remove(self); return; }
-}
-
-// compatibility with old spawns
-void spawnfunc_monster_hell_knight() { spawnfunc_monster_knight(); }
-
-float m_knight(float req)
-{
-       switch(req)
-       {
-               case MR_THINK:
-               {
-                       monster_move(MON_CVAR(knight, speed_run), MON_CVAR(knight, speed_walk), MON_CVAR(knight, speed_stop), knight_anim_run, knight_anim_walk, knight_anim_stand);
-                       return TRUE;
-               }
-               case MR_DEATH:
-               {
-                       float chance = random();
-                       self.frame = ((random() > 0.5) ? knight_anim_death1 : knight_anim_death2);
-                       if(chance < 0.10 || self.spawnflags & MONSTERFLAG_MINIBOSS)
-                       if(self.candrop)
-                       {
-                               self.superweapons_finished = time + autocvar_g_balance_superweapons_time + 5; // give the player a few seconds to find the weapon
-                               self.weapon = WEP_FIREBALL;
-                       }
-                       return TRUE;
-               }
-               case MR_SETUP:
-               {
-                       if not(self.health) self.health = MON_CVAR(knight, health);
-                       
-                       self.monster_loot = spawnfunc_item_armor_big;
-                       self.monster_attackfunc = knight_attack;
-                       self.frame = knight_anim_stand;
-                       
-                       return TRUE;
-               }
-               case MR_PRECACHE:
-               {
-                       precache_model ("models/monsters/hknight.mdl");
-                       precache_sound ("player/lava.wav");
-                       precache_sound ("weapons/fireball2.wav");
-                       return TRUE;
-               }
-               case MR_CONFIG:
-               {
-                       MON_CONFIG_SETTINGS(KNIGHT_SETTINGS(knight))
-                       return TRUE;
-               }
-       }
-       
-       return TRUE;
-}
-
-#endif // SVQC
-#ifdef CSQC
-float m_knight(float req)
-{
-       switch(req)
-       {
-               case MR_PRECACHE:
-               {
-                       precache_model ("models/monsters/hknight.mdl");
-                       return TRUE;
-               }
-       }
-       
-       return TRUE;
-}
-
-#endif // CSQC
-#endif // REGISTER_MONSTER
diff --git a/qcsrc/common/monsters/monster/slime.qc b/qcsrc/common/monsters/monster/slime.qc
deleted file mode 100644 (file)
index d5f2bd9..0000000
+++ /dev/null
@@ -1,165 +0,0 @@
-#ifdef REGISTER_MONSTER
-REGISTER_MONSTER(
-/* MON_##id   */ SLIME,
-/* function   */ m_slime,
-/* spawnflags */ MON_FLAG_MUTATORBLOCKED,
-/* mins,maxs  */ '-16 -16 -24', '16 16 16',
-/* model      */ "slime.dpm",
-/* netname    */ "slime",
-/* fullname   */ _("Slime")
-);
-
-#define SLIME_SETTINGS(monster) \
-       MON_ADD_CVAR(monster, health) \
-       MON_ADD_CVAR(monster, attack_explode_damage) \
-       MON_ADD_CVAR(monster, speed_stop) \
-       MON_ADD_CVAR(monster, speed_run) \
-       MON_ADD_CVAR(monster, speed_walk) 
-
-#ifdef SVQC
-SLIME_SETTINGS(slime)
-#endif // SVQC
-#else
-#ifdef SVQC
-const float slime_anim_walk            = 0;
-const float slime_anim_idle            = 1;
-const float slime_anim_jump            = 2;
-const float slime_anim_fly             = 3;
-const float slime_anim_die             = 4;
-const float slime_anim_pain            = 5;
-
-void slime_touch_jump()
-{
-       if(self.health > 0)
-       if(other.health > 0)
-       if(other.takedamage)
-       if(vlen(self.velocity) > 200)
-       {
-               Damage (self, world, world, MON_CVAR(slime, attack_explode_damage), DEATH_MONSTER_SLIME, self.origin, '0 0 0');
-                       
-               return;
-       }
-
-       if(trace_dphitcontents)
-       {
-               self.touch = MonsterTouch;
-               self.movetype = MOVETYPE_WALK;
-       }
-}
-
-float slime_attack(float attack_type)
-{
-       switch(attack_type)
-       {
-               case MONSTER_ATTACK_MELEE:
-               case MONSTER_ATTACK_RANGED:
-               {
-                       makevectors(self.angles);
-                       return monster_leap(slime_anim_jump, slime_touch_jump, v_forward * 600 + '0 0 200', 0.5);
-               }
-       }
-       
-       return FALSE;
-}
-
-void slime_explode()
-{
-       RadiusDamage(self, self, MON_CVAR(slime, attack_explode_damage), 15, MON_CVAR(slime, attack_explode_damage) * 0.7, world, 250, DEATH_MONSTER_SLIME, world);
-       pointparticles(particleeffectnum("explosion_medium"), self.origin, '0 0 0', 1);
-       sound(self, CH_SHOTS, "weapons/rocket_impact.wav", VOL_BASE, ATTEN_NORM);
-       
-       setmodel(self, "null");
-}
-
-void slime_dead()
-{
-       self.health = -100; // gibbed
-       slime_explode();
-       
-       self.deadflag = DEAD_DEAD;
-       self.think = Monster_Fade;
-       self.nextthink = time + 0.1;
-       
-       CSQCMODEL_AUTOUPDATE(); // called now to update model
-}
-
-void spawnfunc_monster_slime()
-{
-       self.classname = "monster_slime";
-       
-       self.monster_spawnfunc = spawnfunc_monster_slime;
-       
-       if(Monster_CheckAppearFlags(self))
-               return;
-       
-       if not(monster_initialize(MON_SLIME, FALSE)) { remove(self); return; }
-}
-
-// compatibility with old spawns
-void spawnfunc_monster_tarbaby() { spawnfunc_monster_slime(); }
-
-float m_slime(float req)
-{
-       switch(req)
-       {
-               case MR_THINK:
-               {
-                       monster_move(MON_CVAR(slime, speed_run), MON_CVAR(slime, speed_walk), MON_CVAR(slime, speed_stop), slime_anim_walk, slime_anim_walk, slime_anim_idle);
-                       return TRUE;
-               }
-               case MR_DEATH:
-               {
-                       self.think                      = slime_dead;
-                       self.nextthink          = time;
-                       self.event_damage   = func_null;
-                       self.movetype           = MOVETYPE_NONE;
-                       self.takedamage         = DAMAGE_NO;
-                       self.enemy                      = world;
-                       self.health                     = 0;
-                       
-                       return TRUE;
-               }
-               case MR_SETUP:
-               {
-                       if not(self.health) self.health = MON_CVAR(slime, health);
-                       
-                       self.monster_loot = spawnfunc_item_rockets;
-                       self.monster_attackfunc = slime_attack;
-                       self.frame = slime_anim_idle;
-                       
-                       return TRUE;
-               }
-               case MR_PRECACHE:
-               {
-                       precache_model ("models/monsters/slime.dpm");
-                       precache_sound ("weapons/rocket_impact.wav");
-                       return TRUE;
-               }
-               case MR_CONFIG:
-               {
-                       MON_CONFIG_SETTINGS(SLIME_SETTINGS(slime))
-                       return TRUE;
-               }
-       }
-       
-       return TRUE;
-}
-
-#endif // SVQC
-#ifdef CSQC
-float m_slime(float req)
-{
-       switch(req)
-       {
-               case MR_PRECACHE:
-               {
-                       precache_model ("models/monsters/slime.dpm");
-                       return TRUE;
-               }
-       }
-       
-       return TRUE;
-}
-
-#endif // CSQC
-#endif // REGISTER_MONSTER
diff --git a/qcsrc/common/monsters/monster/stingray.qc b/qcsrc/common/monsters/monster/stingray.qc
deleted file mode 100644 (file)
index e6b47aa..0000000
+++ /dev/null
@@ -1,116 +0,0 @@
-#ifdef REGISTER_MONSTER
-REGISTER_MONSTER(
-/* MON_##id   */ STINGRAY,
-/* function   */ m_stingray,
-/* spawnflags */ MONSTER_TYPE_SWIM | MONSTER_SIZE_BROKEN | MON_FLAG_MELEE | MON_FLAG_MUTATORBLOCKED,
-/* mins,maxs  */ '-20 -20 -31', '20 20 20',
-/* model      */ "fish.mdl",
-/* netname    */ "stingray",
-/* fullname   */ _("Stingray")
-);
-
-#define STINGRAY_SETTINGS(monster) \
-       MON_ADD_CVAR(monster, health) \
-       MON_ADD_CVAR(monster, attack_bite_damage) \
-       MON_ADD_CVAR(monster, attack_bite_delay) \
-       MON_ADD_CVAR(monster, speed_stop) \
-       MON_ADD_CVAR(monster, speed_run) \
-       MON_ADD_CVAR(monster, speed_walk) 
-
-#ifdef SVQC
-STINGRAY_SETTINGS(stingray)
-#endif // SVQC
-#else
-#ifdef SVQC
-const float stingray_anim_attack = 0;
-const float stingray_anim_death  = 1;
-const float stingray_anim_swim   = 2;
-const float stingray_anim_pain   = 3;
-
-float stingray_attack(float attack_type)
-{
-       switch(attack_type)
-       {
-               case MONSTER_ATTACK_MELEE:
-               {
-                       return monster_melee(self.enemy, MON_CVAR(stingray, attack_bite_damage), stingray_anim_attack, self.attack_range, MON_CVAR(stingray, attack_bite_delay), DEATH_MONSTER_STINGRAY, FALSE);
-               }
-               case MONSTER_ATTACK_RANGED:
-               {
-                       // no ranged attack for stingray (yet?)
-                       return FALSE;
-               }
-       }
-       
-       return FALSE;
-}
-
-void spawnfunc_monster_stingray()
-{
-       self.classname = "monster_stingray";
-       
-       self.monster_spawnfunc = spawnfunc_monster_stingray;
-       
-       if(Monster_CheckAppearFlags(self))
-               return;
-       
-       if not(monster_initialize(MON_STINGRAY, TRUE)) { remove(self); return; }
-}
-
-float m_stingray(float req)
-{
-       switch(req)
-       {
-               case MR_THINK:
-               {
-                       monster_move(MON_CVAR(stingray, speed_run), MON_CVAR(stingray, speed_walk), MON_CVAR(stingray, speed_stop), stingray_anim_swim, stingray_anim_swim, stingray_anim_swim);
-                       return TRUE;
-               }
-               case MR_DEATH:
-               {
-                       self.frame = stingray_anim_death;
-                       return TRUE;
-               }
-               case MR_SETUP:
-               {
-                       if not(self.health) self.health = MON_CVAR(stingray, health);
-                       
-                       self.monster_loot = spawnfunc_item_health_small;
-                       self.monster_attackfunc = stingray_attack;
-                       self.frame = stingray_anim_swim;
-                       
-                       return TRUE;
-               }
-               case MR_PRECACHE:
-               {
-                       precache_model ("models/monsters/fish.mdl");
-                       return TRUE;
-               }
-               case MR_CONFIG:
-               {
-                       MON_CONFIG_SETTINGS(STINGRAY_SETTINGS(stingray))
-                       return TRUE;
-               }
-       }
-       
-       return TRUE;
-}
-
-#endif // SVQC
-#ifdef CSQC
-float m_stingray(float req)
-{
-       switch(req)
-       {
-               case MR_PRECACHE:
-               {
-                       precache_model ("models/monsters/fish.mdl");
-                       return TRUE;
-               }
-       }
-       
-       return TRUE;
-}
-
-#endif // CSQC
-#endif // REGISTER_MONSTER
index 0245d44..e9a942b 100644 (file)
@@ -16,7 +16,6 @@ const float MONSTER_SIZE_BROKEN = 128; // TODO: remove when bad models are repla
 const float MON_FLAG_SUPERMONSTER = 256; // incredibly powerful monster
 const float MON_FLAG_RANGED = 512; // monster shoots projectiles
 const float MON_FLAG_MELEE = 1024;
-const float MON_FLAG_MUTATORBLOCKED = 2048;
 
 // entity properties of monsterinfo:
 .float monsterid; // MON_...
index 1ca5eca..5136bbb 100644 (file)
@@ -979,12 +979,6 @@ float monster_initialize(float mon_id, float nodrop)
                return FALSE;
 
        entity mon = get_monsterinfo(mon_id);
-       
-       if(mon.spawnflags & MON_FLAG_MUTATORBLOCKED && !(self.spawnflags & MONSTERFLAG_SPAWNED))
-       {
-               dprint("Attempted to spawn a mutator-blocked monster rejected");
-               return FALSE;
-       }
 
        // support for quake style removing monsters based on skill
        if(monster_skill <= 1) if(self.spawnflags & MONSTERSKILL_NOTEASY) { return FALSE; }
index f078e69..5be81fa 100644 (file)
@@ -388,26 +388,12 @@ void Send_Notification_WOCOVA(
        MSG_INFO_NOTIF(1, INFO_DEATH_SELF_GENERIC,             2, 1, "s1 s2loc spree_lost", "s1",       "notify_selfkill",      _("^BG%s^K1 died%s%s"), "") \
        MSG_INFO_NOTIF(1, INFO_DEATH_SELF_LAVA,                2, 1, "s1 s2loc spree_lost", "s1",       "notify_lava",          _("^BG%s^K1 turned into hot slag%s%s"), _("^BG%s^K1 found a hot place%s%s")) \
        MSG_INFO_NOTIF(1, INFO_DEATH_SELF_NADE,                2, 1, "s1 s2loc spree_lost", "s1",       "notify_death",         _("^BG%s^K1 mastered the art of self-nading%s%s"), "") \
-       MSG_INFO_NOTIF(1, INFO_DEATH_SELF_MON_CERBERUS_BITE,   2, 1, "s1 s2loc spree_lost", "s1",               "notify_death",                 _("^BG%s^K1 was mauled by a Cerberus%s%s"), "") \
-       MSG_INFO_NOTIF(1, INFO_DEATH_SELF_MON_CERBERUS_JUMP,   2, 1, "s1 s2loc spree_lost", "s1",               "notify_death",                 _("^BG%s^K1 didn't see the pouncing Cerberus%s%s"), "") \
-       MSG_INFO_NOTIF(1, INFO_DEATH_SELF_MON_ANIMUS,          2, 1, "s1 s2loc spree_lost", "s1",               "notify_death",                 _("^BG%s^K1 was eviscerated by an Animus%s%s"), "") \
-       MSG_INFO_NOTIF(1, INFO_DEATH_SELF_MON_STINGRAY,        2, 1, "s1 s2loc spree_lost", "s1",               "notify_death",                 _("^BG%s^K1 was fatally wounded by a Stingray%s%s"), "") \
-       MSG_INFO_NOTIF(1, INFO_DEATH_SELF_MON_KNIGHT_CRUSH,    2, 1, "s1 s2loc spree_lost", "s1",               "notify_death",                 _("^BG%s^K1 was crushed by a pouncing Knight%s%s"), "") \
-       MSG_INFO_NOTIF(1, INFO_DEATH_SELF_MON_KNIGHT_FBALL,    2, 1, "s1 s2loc spree_lost", "s1",               "notify_death",                 _("^BG%s^K1 was turned to ash by a Knight%s%s"), "") \
-       MSG_INFO_NOTIF(1, INFO_DEATH_SELF_MON_KNIGHT_INFERNO,  2, 1, "s1 s2loc spree_lost", "s1",               "notify_death",                 _("^BG%s^K1 was burned to death by a Knight%s%s"), "") \
-       MSG_INFO_NOTIF(1, INFO_DEATH_SELF_MON_KNIGHT_MELEE,    2, 1, "s1 s2loc spree_lost", "s1",               "notify_death",                 _("^BG%s^K1 was slain by a Knight%s%s"), "") \
-       MSG_INFO_NOTIF(1, INFO_DEATH_SELF_MON_KNIGHT_SPIKE,    2, 1, "s1 s2loc spree_lost", "s1",               "notify_death",                 _("^BG%s^K1 was cursed by a Knight%s%s"), "") \
-       MSG_INFO_NOTIF(1, INFO_DEATH_SELF_MON_BRUISER,             2, 1, "s1 s2loc spree_lost", "s1",           "notify_death",                 _("^BG%s^K1 was beaten in a fistfight by a Bruiser%s%s"), "") \
-       MSG_INFO_NOTIF(1, INFO_DEATH_SELF_MON_BRUTE_BLADE,     2, 1, "s1 s2loc spree_lost", "s1",               "notify_death",                 _("^BG%s^K1 was cut down by a Brute%s%s"), "") \
-       MSG_INFO_NOTIF(1, INFO_DEATH_SELF_MON_BRUTE_GRENADE,   2, 1, "s1 s2loc spree_lost", "s1",               "notify_death",                 _("^BG%s^K1 almost dodged a Brute's grenade%s%s"), "") \
-       MSG_INFO_NOTIF(1, INFO_DEATH_SELF_MON_BRUTE_UZI,           2, 1, "s1 s2loc spree_lost", "s1",           "notify_death",                 _("^BG%s^K1 was nailed by a Brute%s%s"), "") \
        MSG_INFO_NOTIF(1, INFO_DEATH_SELF_MON_MAGE,                2, 1, "s1 s2loc spree_lost", "s1",           "notify_death",                 _("^BG%s^K1 was exploded by a Mage%s%s"), "") \
        MSG_INFO_NOTIF(1, INFO_DEATH_SELF_MON_SHAMBLER_CLAW,   2, 1, "s1 s2loc spree_lost", "s1",               "notify_death",                 _("^BG%s^K1's innards became outwards by a Shambler%s%s"), "") \
        MSG_INFO_NOTIF(1, INFO_DEATH_SELF_MON_SHAMBLER_SMASH,  2, 1, "s1 s2loc spree_lost", "s1",               "notify_death",                 _("^BG%s^K1 was smashed by a Shambler%s%s"), "") \
        MSG_INFO_NOTIF(1, INFO_DEATH_SELF_MON_SHAMBLER_ZAP,    2, 1, "s1 s2loc spree_lost", "s1",               "notify_death",                 _("^BG%s^K1 was zapped to death by a Shambler%s%s"), "") \
        MSG_INFO_NOTIF(1, INFO_DEATH_SELF_MON_SPIDER,              2, 1, "s1 s2loc spree_lost", "s1",           "notify_death",                 _("^BG%s^K1 was bitten by a Spider%s%s"), "") \
        MSG_INFO_NOTIF(1, INFO_DEATH_SELF_MON_SPIDER_FIRE,     2, 1, "s1 s2loc spree_lost", "s1",               "notify_death",                 _("^BG%s^K1 was incinerated by a Spider%s%s"), "") \
-       MSG_INFO_NOTIF(1, INFO_DEATH_SELF_MON_SLIME,           2, 1, "s1 s2loc spree_lost", "s1",               "notify_death",                 _("^BG%s^K1 was blown up by a Slime%s%s"), "") \
        MSG_INFO_NOTIF(1, INFO_DEATH_SELF_MON_WYVERN,          2, 1, "s1 s2loc spree_lost", "s1",               "notify_death",                 _("^BG%s^K1 was fireballed by a Wyvern%s%s"), "") \
        MSG_INFO_NOTIF(1, INFO_DEATH_SELF_MON_ZOMBIE_JUMP,     2, 1, "s1 s2loc spree_lost", "s1",               "notify_death",                 _("^BG%s^K1 joins the Zombies%s%s"), "") \
        MSG_INFO_NOTIF(1, INFO_DEATH_SELF_MON_ZOMBIE_MELEE,    2, 1, "s1 s2loc spree_lost", "s1",               "notify_death",                 _("^BG%s^K1 was given kung fu lessons by a Zombie%s%s"), "") \
@@ -739,26 +725,12 @@ void Send_Notification_WOCOVA(
        MSG_MULTI_NOTIF(1, DEATH_SELF_FIRE,                      NO_MSG,        INFO_DEATH_SELF_FIRE,                      CENTER_DEATH_SELF_FIRE) \
        MSG_MULTI_NOTIF(1, DEATH_SELF_GENERIC,                   NO_MSG,        INFO_DEATH_SELF_GENERIC,                   CENTER_DEATH_SELF_GENERIC) \
        MSG_MULTI_NOTIF(1, DEATH_SELF_LAVA,                      NO_MSG,        INFO_DEATH_SELF_LAVA,                      CENTER_DEATH_SELF_LAVA) \
-       MSG_MULTI_NOTIF(1, DEATH_SELF_MON_CERBERUS_BITE,                 NO_MSG,        INFO_DEATH_SELF_MON_CERBERUS_BITE,                 CENTER_DEATH_SELF_MONSTER) \
-       MSG_MULTI_NOTIF(1, DEATH_SELF_MON_CERBERUS_JUMP,                 NO_MSG,        INFO_DEATH_SELF_MON_CERBERUS_JUMP,                 CENTER_DEATH_SELF_MONSTER) \
-       MSG_MULTI_NOTIF(1, DEATH_SELF_MON_ANIMUS,                                NO_MSG,        INFO_DEATH_SELF_MON_ANIMUS,                                CENTER_DEATH_SELF_MONSTER) \
-       MSG_MULTI_NOTIF(1, DEATH_SELF_MON_STINGRAY,                              NO_MSG,        INFO_DEATH_SELF_MON_STINGRAY,                      CENTER_DEATH_SELF_MONSTER) \
-       MSG_MULTI_NOTIF(1, DEATH_SELF_MON_KNIGHT_CRUSH,                  NO_MSG,        INFO_DEATH_SELF_MON_KNIGHT_CRUSH,                  CENTER_DEATH_SELF_MONSTER) \
-       MSG_MULTI_NOTIF(1, DEATH_SELF_MON_KNIGHT_FBALL,              NO_MSG,        INFO_DEATH_SELF_MON_KNIGHT_FBALL,              CENTER_DEATH_SELF_MONSTER) \
-       MSG_MULTI_NOTIF(1, DEATH_SELF_MON_KNIGHT_INFERNO,                NO_MSG,        INFO_DEATH_SELF_MON_KNIGHT_INFERNO,            CENTER_DEATH_SELF_MONSTER) \
-       MSG_MULTI_NOTIF(1, DEATH_SELF_MON_KNIGHT_MELEE,              NO_MSG,        INFO_DEATH_SELF_MON_KNIGHT_MELEE,              CENTER_DEATH_SELF_MONSTER) \
-       MSG_MULTI_NOTIF(1, DEATH_SELF_MON_KNIGHT_SPIKE,              NO_MSG,        INFO_DEATH_SELF_MON_KNIGHT_SPIKE,              CENTER_DEATH_SELF_MONSTER) \
-       MSG_MULTI_NOTIF(1, DEATH_SELF_MON_BRUISER,                               NO_MSG,        INFO_DEATH_SELF_MON_BRUISER,                       CENTER_DEATH_SELF_MONSTER) \
-       MSG_MULTI_NOTIF(1, DEATH_SELF_MON_BRUTE_BLADE,                   NO_MSG,        INFO_DEATH_SELF_MON_BRUTE_BLADE,                   CENTER_DEATH_SELF_MONSTER) \
-       MSG_MULTI_NOTIF(1, DEATH_SELF_MON_BRUTE_GRENADE,                 NO_MSG,        INFO_DEATH_SELF_MON_BRUTE_GRENADE,                 CENTER_DEATH_SELF_MONSTER) \
-       MSG_MULTI_NOTIF(1, DEATH_SELF_MON_BRUTE_UZI,                     NO_MSG,        INFO_DEATH_SELF_MON_BRUTE_UZI,                     CENTER_DEATH_SELF_MONSTER) \
        MSG_MULTI_NOTIF(1, DEATH_SELF_MON_MAGE,                                  NO_MSG,        INFO_DEATH_SELF_MON_MAGE,                                  CENTER_DEATH_SELF_MONSTER) \
        MSG_MULTI_NOTIF(1, DEATH_SELF_MON_SHAMBLER_CLAW,                 NO_MSG,        INFO_DEATH_SELF_MON_SHAMBLER_CLAW,                 CENTER_DEATH_SELF_MONSTER) \
        MSG_MULTI_NOTIF(1, DEATH_SELF_MON_SHAMBLER_SMASH,                NO_MSG,        INFO_DEATH_SELF_MON_SHAMBLER_SMASH,                CENTER_DEATH_SELF_MONSTER) \
        MSG_MULTI_NOTIF(1, DEATH_SELF_MON_SHAMBLER_ZAP,                  NO_MSG,        INFO_DEATH_SELF_MON_SHAMBLER_ZAP,                  CENTER_DEATH_SELF_MONSTER) \
        MSG_MULTI_NOTIF(1, DEATH_SELF_MON_SPIDER,                                NO_MSG,        INFO_DEATH_SELF_MON_SPIDER,                                CENTER_DEATH_SELF_MONSTER) \
        MSG_MULTI_NOTIF(1, DEATH_SELF_MON_SPIDER_FIRE,                   NO_MSG,        INFO_DEATH_SELF_MON_SPIDER_FIRE,                   CENTER_DEATH_SELF_MONSTER) \
-       MSG_MULTI_NOTIF(1, DEATH_SELF_MON_SLIME,                                 NO_MSG,        INFO_DEATH_SELF_MON_SLIME,                                 CENTER_DEATH_SELF_MONSTER) \
        MSG_MULTI_NOTIF(1, DEATH_SELF_MON_WYVERN,                                NO_MSG,        INFO_DEATH_SELF_MON_WYVERN,                                CENTER_DEATH_SELF_MONSTER) \
        MSG_MULTI_NOTIF(1, DEATH_SELF_MON_ZOMBIE_JUMP,                   NO_MSG,        INFO_DEATH_SELF_MON_ZOMBIE_JUMP,                   CENTER_DEATH_SELF_MONSTER) \
        MSG_MULTI_NOTIF(1, DEATH_SELF_MON_ZOMBIE_MELEE,                  NO_MSG,        INFO_DEATH_SELF_MON_ZOMBIE_MELEE,                  CENTER_DEATH_SELF_MONSTER) \
index a6486e2..8b67094 100644 (file)
@@ -19,16 +19,8 @@ void XonoticMonsterToolsDialog_fill(entity me)
                me.TD(me, 1, 0.25, e = makeXonoticTextLabel(0, _("Monster:")));
        me.TR(me);
                me.TD(me, 1, 0.4, e = makeXonoticRadioButton(2, "menu_monsters_edit_spawn", "zombie", _("Zombie")));
-               me.TD(me, 1, 0.4, e = makeXonoticRadioButton(2, "menu_monsters_edit_spawn", "brute", _("Brute")));
-               me.TD(me, 1, 0.4, e = makeXonoticRadioButton(2, "menu_monsters_edit_spawn", "animus", _("Animus")));
                me.TD(me, 1, 0.4, e = makeXonoticRadioButton(2, "menu_monsters_edit_spawn", "spider", _("Spider")));
-               me.TD(me, 1, 0.4, e = makeXonoticRadioButton(2, "menu_monsters_edit_spawn", "bruiser", _("Bruiser")));
-               me.TD(me, 1, 0.4, e = makeXonoticRadioButton(2, "menu_monsters_edit_spawn", "knight", _("Knight")));
                me.TD(me, 1, 0.4, e = makeXonoticRadioButton(2, "menu_monsters_edit_spawn", "shambler", _("Shambler")));
-       me.TR(me);
-               me.TD(me, 1, 0.4, e = makeXonoticRadioButton(2, "menu_monsters_edit_spawn", "cerberus", _("Cerberus")));
-               me.TD(me, 1, 0.4, e = makeXonoticRadioButton(2, "menu_monsters_edit_spawn", "slime", _("Slime")));
-               me.TD(me, 1, 0.4, e = makeXonoticRadioButton(2, "menu_monsters_edit_spawn", "stingray", _("Stingray")));
                me.TD(me, 1, 0.4, e = makeXonoticRadioButton(2, "menu_monsters_edit_spawn", "mage", _("Mage")));
                me.TD(me, 1, 0.4, e = makeXonoticRadioButton(2, "menu_monsters_edit_spawn", "wyvern", _("Wyvern")));
        me.TR(me);
index b93b440..1f55f77 100644 (file)
@@ -305,16 +305,11 @@ MUTATOR_DEFINITION(gamemode_invasion)
        
        MUTATOR_ONADD
        {
-               float i;
-               
                if(time > 1) // game loads at time 1
                        error("This is a game type and it cannot be added at runtime.");
                invasion_Initialize();
                
                cvar_settemp("g_monsters", "1");
-               
-               for(i = MON_FIRST; i <= MON_LAST; ++i)
-                       get_monsterinfo(i).spawnflags &= ~MON_FLAG_MUTATORBLOCKED;
        }
 
        MUTATOR_ONROLLBACK_OR_REMOVE
index 25c89ce..873e163 100644 (file)
@@ -81,33 +81,16 @@ MUTATOR_HOOKFUNCTION(nt_SetModname)
 
 float nt_IsNewToy(float w)
 {
-       if((get_weaponinfo(w)).weapon)
-       {
-               switch(w)
-               {
-                       case WEP_SEEKER:
-                       case WEP_MINE_LAYER:
-                       case WEP_HLAC:
-                       case WEP_RIFLE:
-                               return TRUE;
-               }
-       }
-       else
+       switch(w)
        {
-               switch(w)
-               {
-                       case MON_ANIMUS:
-                       case MON_BRUISER:
-                       case MON_BRUTE:
-                       case MON_CERBERUS:
-                       case MON_KNIGHT:
-                       case MON_SLIME:
-                       case MON_STINGRAY:
-                               return TRUE;
-               }
+               case WEP_SEEKER:
+               case WEP_MINE_LAYER:
+               case WEP_HLAC:
+               case WEP_RIFLE:
+                       return TRUE;
+               default:
+                       return FALSE;
        }
-       
-       return FALSE;
 }
 
 string nt_GetFullReplacement(string w)
@@ -224,10 +207,6 @@ MUTATOR_DEFINITION(mutator_new_toys)
                for(i = WEP_FIRST; i <= WEP_LAST; ++i)
                        if(nt_IsNewToy(i))
                                get_weaponinfo(i).spawnflags &= ~WEP_FLAG_MUTATORBLOCKED;
-                               
-               for(i = MON_FIRST; i <= MON_LAST; ++i)
-               if(nt_IsNewToy(i))
-                       get_monsterinfo(i).spawnflags &= ~MON_FLAG_MUTATORBLOCKED;
        }
 
        MUTATOR_ONROLLBACK_OR_REMOVE
@@ -236,10 +215,6 @@ MUTATOR_DEFINITION(mutator_new_toys)
                for(i = WEP_FIRST; i <= WEP_LAST; ++i)
                        if(nt_IsNewToy(i))
                                get_weaponinfo(i).spawnflags |= WEP_FLAG_MUTATORBLOCKED;
-                               
-               for(i = MON_FIRST; i <= MON_LAST; ++i)
-               if(nt_IsNewToy(i))
-                       get_monsterinfo(i).spawnflags |= MON_FLAG_MUTATORBLOCKED;
        }
 
        MUTATOR_ONREMOVE
index dad8eab..5304b25 100644 (file)
@@ -6,22 +6,6 @@ textures/spider/spidertex
                map textures/spidertex
        }
 }
-textures/cerberus/cerberus_text
-{
-       cull none
-
-       {
-               map textures/cerberus
-       }
-}
-textures/berzerker_texture
-{
-       cull none
-
-       {
-               map textures/ogre
-       }
-}
 mage
 {
        cull none
@@ -29,12 +13,4 @@ mage
        {
                map textures/mage
        }
-}
-slimeDiffuse
-{
-       {
-               map textures/slime
-               alphaFunc GT0
-               rgbGen Vertex
-       }
 }
\ No newline at end of file
diff --git a/textures/cerberus.png b/textures/cerberus.png
deleted file mode 100644 (file)
index 3ac7c05..0000000
Binary files a/textures/cerberus.png and /dev/null differ
diff --git a/textures/cerberus_pants.png b/textures/cerberus_pants.png
deleted file mode 100644 (file)
index d109711..0000000
Binary files a/textures/cerberus_pants.png and /dev/null differ
diff --git a/textures/ogre.png b/textures/ogre.png
deleted file mode 100644 (file)
index 4bb8be2..0000000
Binary files a/textures/ogre.png and /dev/null differ
diff --git a/textures/ogre_pants.png b/textures/ogre_pants.png
deleted file mode 100644 (file)
index bf9665d..0000000
Binary files a/textures/ogre_pants.png and /dev/null differ
diff --git a/textures/slime.png b/textures/slime.png
deleted file mode 100644 (file)
index cf755c9..0000000
Binary files a/textures/slime.png and /dev/null differ
diff --git a/textures/slime_norm.png b/textures/slime_norm.png
deleted file mode 100644 (file)
index 4553e8e..0000000
Binary files a/textures/slime_norm.png and /dev/null differ
diff --git a/textures/slime_pants.png b/textures/slime_pants.png
deleted file mode 100644 (file)
index 2b325ec..0000000
Binary files a/textures/slime_pants.png and /dev/null differ