From: Mario Date: Sat, 12 Oct 2013 18:23:14 +0000 (+1100) Subject: Remove disabled monsters (they don't fit very well & are too many to properly maintain) X-Git-Tag: xonotic-v0.8.0~241^2^2~52 X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=commitdiff_plain;h=1d1682335e39ef7b4ee9f200636cfdefe7ae5dbf Remove disabled monsters (they don't fit very well & are too many to properly maintain) --- diff --git a/models/monsters/demon.mdl b/models/monsters/demon.mdl deleted file mode 100644 index d2a566b5b8..0000000000 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 index b87a0876f9..0000000000 --- a/models/monsters/demon.mdl.framegroups +++ /dev/null @@ -1 +0,0 @@ -1 12 10 1 // demon stand 14 7 10 1 // demon walk 22 5 10 1 // demon run 28 11 10 0 // demon leap 40 5 10 0 // demon pain 46 8 10 0 // demon death 55 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 index e2201581bf..0000000000 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 index 9ace1c4726..0000000000 --- a/models/monsters/dog.dpm.framegroups +++ /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 index e1db999bbd..0000000000 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 index bf18b81a60..0000000000 --- a/models/monsters/fish.mdl.framegroups +++ /dev/null @@ -1 +0,0 @@ -1 17 10 1 // fish attack 19 19 10 0 // fish death 41 16 10 1 // fish swim 59 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 index a0cd4d7c79..0000000000 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 index c495edd8a5..0000000000 --- a/models/monsters/hknight.mdl.framegroups +++ /dev/null @@ -1 +0,0 @@ -1 8 10 1 // hellknight stand 10 19 10 1 // hellknight walk 30 7 10 1 // hellknight run 38 4 10 0 // hellknight pain 43 11 10 0 // hellknight death1 55 8 10 0 // hellknight death2 64 15 10 1 // hellknight charge1 80 13 10 1 // hellknight magic1 94 12 10 1 // hellknight magic2 107 5 10 1 // hellknight charge2 113 9 10 1 // hellknight slice 123 9 10 1 // hellknight smash 133 21 10 1 // hellknight weapon attack 155 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 index 36ebd6199e..0000000000 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 index c4acc5e048..0000000000 --- a/models/monsters/knight.mdl.framegroups +++ /dev/null @@ -1 +0,0 @@ -1 8 10 1 // knight stand 10 7 10 1 // knight run 18 10 10 1 // knight run attack 29 2 10 0 // knight pain1 32 10 10 0 // knight pain2 43 9 10 1 // knight attack 53 13 10 1 // knight walk 67 4 10 0 // knight kneel 72 4 10 1 // knight standing 77 9 10 0 // knight death1 88 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 index c38482dcf8..0000000000 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 index 03dd229d01..0000000000 --- a/models/monsters/ogre.dpm.framegroups +++ /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 index 095d5f7be8..0000000000 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 index 4c1cf73827..0000000000 --- a/models/monsters/slime.dpm.framegroups +++ /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 diff --git a/monsters.cfg b/monsters.cfg index b3b5ab1b86..e9771c0dcb 100644 --- a/monsters.cfg +++ b/monsters.cfg @@ -1,104 +1,29 @@ -// {{{ #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 diff --git a/qcsrc/common/deathtypes.qh b/qcsrc/common/deathtypes.qh index 5e4b0870c9..9e16697742 100644 --- a/qcsrc/common/deathtypes.qh +++ b/qcsrc/common/deathtypes.qh @@ -15,26 +15,12 @@ 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) \ diff --git a/qcsrc/common/monsters/all.qh b/qcsrc/common/monsters/all.qh index 0c4f0af991..d30f29894e 100644 --- a/qcsrc/common/monsters/all.qh +++ b/qcsrc/common/monsters/all.qh @@ -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 index aa3dba2a83..0000000000 --- a/qcsrc/common/monsters/monster/animus.qc +++ /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 index dfb6d0787b..0000000000 --- a/qcsrc/common/monsters/monster/bruiser.qc +++ /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 index 4b7fa56129..0000000000 --- a/qcsrc/common/monsters/monster/brute.qc +++ /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 index b3964103e3..0000000000 --- a/qcsrc/common/monsters/monster/cerberus.qc +++ /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 index 1189d93de7..0000000000 --- a/qcsrc/common/monsters/monster/knight.qc +++ /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 index d5f2bd9d0c..0000000000 --- a/qcsrc/common/monsters/monster/slime.qc +++ /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 index e6b47aa441..0000000000 --- a/qcsrc/common/monsters/monster/stingray.qc +++ /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 diff --git a/qcsrc/common/monsters/monsters.qh b/qcsrc/common/monsters/monsters.qh index 0245d4401b..e9a942b457 100644 --- a/qcsrc/common/monsters/monsters.qh +++ b/qcsrc/common/monsters/monsters.qh @@ -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_... diff --git a/qcsrc/common/monsters/sv_monsters.qc b/qcsrc/common/monsters/sv_monsters.qc index 1ca5eca61f..5136bbbf8d 100644 --- a/qcsrc/common/monsters/sv_monsters.qc +++ b/qcsrc/common/monsters/sv_monsters.qc @@ -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; } diff --git a/qcsrc/common/notifications.qh b/qcsrc/common/notifications.qh index f078e69b34..5be81faf6d 100644 --- a/qcsrc/common/notifications.qh +++ b/qcsrc/common/notifications.qh @@ -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) \ diff --git a/qcsrc/menu/xonotic/dialog_monstertools.c b/qcsrc/menu/xonotic/dialog_monstertools.c index a6486e2bdc..8b67094a72 100644 --- a/qcsrc/menu/xonotic/dialog_monstertools.c +++ b/qcsrc/menu/xonotic/dialog_monstertools.c @@ -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); diff --git a/qcsrc/server/mutators/gamemode_invasion.qc b/qcsrc/server/mutators/gamemode_invasion.qc index b93b440127..1f55f776ad 100644 --- a/qcsrc/server/mutators/gamemode_invasion.qc +++ b/qcsrc/server/mutators/gamemode_invasion.qc @@ -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 diff --git a/qcsrc/server/mutators/mutator_new_toys.qc b/qcsrc/server/mutators/mutator_new_toys.qc index 25c89cee56..873e1632c7 100644 --- a/qcsrc/server/mutators/mutator_new_toys.qc +++ b/qcsrc/server/mutators/mutator_new_toys.qc @@ -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 diff --git a/scripts/monsters.shader b/scripts/monsters.shader index dad8eab49f..5304b257c8 100644 --- a/scripts/monsters.shader +++ b/scripts/monsters.shader @@ -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 index 3ac7c05470..0000000000 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 index d109711e4e..0000000000 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 index 4bb8be23a7..0000000000 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 index bf9665d32e..0000000000 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 index cf755c971b..0000000000 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 index 4553e8e092..0000000000 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 index 2b325eca3f..0000000000 Binary files a/textures/slime_pants.png and /dev/null differ