From: Mario Date: Thu, 29 Aug 2013 10:04:55 +0000 (+1000) Subject: Hardcode monster item drops X-Git-Tag: xonotic-v0.8.0~241^2^2~145 X-Git-Url: http://git.xonotic.org/?a=commitdiff_plain;h=6301d8c23d9144b3f8c85c582c34ed11e891b917;p=xonotic%2Fxonotic-data.pk3dir.git Hardcode monster item drops --- diff --git a/monsters.cfg b/monsters.cfg index a2a77a508..55c166715 100644 --- a/monsters.cfg +++ b/monsters.cfg @@ -14,9 +14,6 @@ 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 - -set g_monster_brute_drop ammo -set g_monster_brute_drop_size bullets // }}} // {{{ #2: Animus set g_monster_animus_attack_jump_damage 80 @@ -25,9 +22,6 @@ 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 - -set g_monster_animus_drop health -set g_monster_animus_drop_size medium // }}} // {{{ #3: Shambler set g_monster_shambler_attack_claw_damage 50 @@ -37,9 +31,6 @@ 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 - -set g_monster_shambler_drop health -set g_monster_shambler_drop_size large // }}} // {{{ #4: Bruiser set g_monster_bruiser_attack_melee_damage 50 @@ -47,9 +38,6 @@ 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 - -set g_monster_bruiser_drop armor -set g_monster_bruiser_drop_size medium // }}} // {{{ #5: Wyvern set g_monster_wyvern_attack_fireball_damage 30 @@ -62,9 +50,6 @@ 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 - -set g_monster_wyvern_drop ammo -set g_monster_wyvern_drop_size cells // }}} // {{{ #6: Cerberus set g_monster_cerberus_attack_bite_damage 30 @@ -73,9 +58,6 @@ 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 - -set g_monster_cerberus_drop health -set g_monster_cerberus_drop_size small // }}} // {{{ #7: Slime set g_monster_slime_attack_explode_damage 250 @@ -83,9 +65,6 @@ 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 - -set g_monster_slime_drop ammo -set g_monster_slime_drop_size rockets // }}} // {{{ #8: Knight set g_monster_knight_attack_fireball_chance 0.3 @@ -110,9 +89,6 @@ 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 - -set g_monster_knight_drop armor -set g_monster_knight_drop_size medium // }}} // {{{ #9: Stingray set g_monster_stingray_attack_bite_damage 25 @@ -121,9 +97,6 @@ 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 - -set g_monster_stingray_drop health -set g_monster_stingray_drop_size small // }}} // {{{ #10: Mage set g_monster_mage_attack_grenade_chance 30 @@ -151,9 +124,6 @@ set g_monster_mage_shield_time 3 set g_monster_mage_speed_run 75 set g_monster_mage_speed_stop 50 set g_monster_mage_speed_walk 50 - -set g_monster_mage_drop health -set g_monster_mage_drop_size medium // }}} // {{{ #11: Zombie set g_monster_zombie_attack_leap_damage 50 @@ -166,9 +136,6 @@ 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 - -set g_monster_zombie_drop health -set g_monster_zombie_drop_size large // }}} // {{{ #12: Spider set g_monster_spider_attack_bite_damage 35 @@ -182,9 +149,6 @@ 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 - -set g_monster_spider_drop health -set g_monster_spider_drop_size large // }}} // {{{ Misc @@ -193,10 +157,7 @@ set g_monsters_think_delay 0.1 set g_monsters_skill 1 "Monster skill (affecting some of their attributes). 1 - easy, 2 - medium, 3 - hard, 4 - insane, 5 - nightmare" set g_monsters_miniboss_chance 5 set g_monsters_miniboss_healthboost 100 -set g_monsters_forcedrop 0 set g_monsters_drop_time 10 -set g_monsters_drop_type armor "Type of item to drop when forced. Possible values are: health, armor, ammo" -set g_monsters_drop_size medium "Size of the item monsters drop. Possible health/amor values are: small, medium, large. Possible ammo values are: shells, bullets, cells, rockets" set g_monsters_owners 1 set g_monsters_teams 1 set g_monsters_spawnshieldtime 2 diff --git a/qcsrc/common/monsters/lib/monsters.qc b/qcsrc/common/monsters/lib/monsters.qc index 6772028f6..af7172718 100644 --- a/qcsrc/common/monsters/lib/monsters.qc +++ b/qcsrc/common/monsters/lib/monsters.qc @@ -24,57 +24,24 @@ void monster_item_spawn() SUB_SetFade(self, time + autocvar_g_monsters_drop_time, 1); } -void Monster_DropItem (string itype, string itemsize) +void monster_dropitem() { + if(!self.candrop || !self.monster_loot) + return; + vector org = self.origin + ((self.mins + self.maxs) * 0.5); entity e = spawn(); setorigin(e, org); - switch(itype) - { - case "armor": - { - switch(itemsize) - { - case "mega": e.monster_loot = spawnfunc_item_armor_large; break; - case "large": e.monster_loot = spawnfunc_item_armor_big; break; - case "medium": e.monster_loot = spawnfunc_item_armor_medium; break; - case "small": e.monster_loot = spawnfunc_item_armor_small; break; - } - break; - } - case "health": - { - switch(itemsize) - { - case "mega": e.monster_loot = spawnfunc_item_health_mega; break; - case "large": e.monster_loot = spawnfunc_item_health_large; break; - case "medium": e.monster_loot = spawnfunc_item_health_medium; break; - case "small": e.monster_loot = spawnfunc_item_health_small; break; - } - break; - } - case "ammo": - { - switch(itemsize) - { - case "shells": e.monster_loot = spawnfunc_item_shells; break; - case "cells": e.monster_loot = spawnfunc_item_cells; break; - case "rockets": e.monster_loot = spawnfunc_item_rockets; break; - case "bullets": - case "nails": e.monster_loot = spawnfunc_item_bullets; break; - } - break; - } - } + e.monster_loot = self.monster_loot; other = e; MUTATOR_CALLHOOK(MonsterDropItem); e = other; - + e.think = monster_item_spawn; - e.nextthink = time + 0.1; + e.nextthink = time + 0.3; } void monsters_setframe(float _frame) @@ -231,25 +198,6 @@ float monster_melee (entity targ, float damg, float er, float deathtype, float d return TRUE; } -void Monster_CheckDropCvars (string mon) -{ - if not(self.candrop) - return; // forced off - - string dropitem; - string dropsize; - - dropitem = cvar_string(strcat("g_monster_", mon, "_drop")); - dropsize = cvar_string(strcat("g_monster_", mon, "_drop_size")); - - if(autocvar_g_monsters_forcedrop) - Monster_DropItem(autocvar_g_monsters_drop_type, autocvar_g_monsters_drop_size); - else if(dropitem != "") - Monster_DropItem(dropitem, dropsize); - else - Monster_DropItem("armor", "medium"); -} - void Monster_CheckMinibossFlag () { if(MUTATOR_CALLHOOK(MonsterCheckBossFlag)) @@ -832,7 +780,7 @@ void monster_die() self.nextthink = self.ticrate; self.ltime = time + 5; - Monster_CheckDropCvars(self.netname); + monster_dropitem(); WaypointSprite_Kill(self.sprite); diff --git a/qcsrc/common/monsters/monster/animus.qc b/qcsrc/common/monsters/monster/animus.qc index 05abfe023..40cf61265 100644 --- a/qcsrc/common/monsters/monster/animus.qc +++ b/qcsrc/common/monsters/monster/animus.qc @@ -104,7 +104,8 @@ float m_animus(float req) 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; monsters_setframe(animus_anim_stand); diff --git a/qcsrc/common/monsters/monster/bruiser.qc b/qcsrc/common/monsters/monster/bruiser.qc index 015d0abf2..d0872f7c6 100644 --- a/qcsrc/common/monsters/monster/bruiser.qc +++ b/qcsrc/common/monsters/monster/bruiser.qc @@ -95,7 +95,8 @@ float m_bruiser(float req) 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; monsters_setframe(bruiser_anim_stand); diff --git a/qcsrc/common/monsters/monster/brute.qc b/qcsrc/common/monsters/monster/brute.qc index d744166d8..f0268b728 100644 --- a/qcsrc/common/monsters/monster/brute.qc +++ b/qcsrc/common/monsters/monster/brute.qc @@ -217,7 +217,8 @@ float m_brute(float req) case MR_SETUP: { if not(self.health) self.health = MON_CVAR(brute, health); - + + self.monster_loot = spawnfunc_item_bullets; self.monster_attackfunc = brute_attack; monsters_setframe(brute_anim_idle); self.weapon = WEP_GRENADE_LAUNCHER; diff --git a/qcsrc/common/monsters/monster/cerberus.qc b/qcsrc/common/monsters/monster/cerberus.qc index d7acb316f..afbf3aced 100644 --- a/qcsrc/common/monsters/monster/cerberus.qc +++ b/qcsrc/common/monsters/monster/cerberus.qc @@ -142,7 +142,8 @@ float m_cerberus(float req) 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; monsters_setframe(cerberus_anim_idle); diff --git a/qcsrc/common/monsters/monster/knight.qc b/qcsrc/common/monsters/monster/knight.qc index c841bc09e..f87ca0091 100644 --- a/qcsrc/common/monsters/monster/knight.qc +++ b/qcsrc/common/monsters/monster/knight.qc @@ -296,7 +296,8 @@ float m_knight(float req) 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; monsters_setframe(knight_anim_stand); diff --git a/qcsrc/common/monsters/monster/mage.qc b/qcsrc/common/monsters/monster/mage.qc index 00d333497..67a3fac95 100644 --- a/qcsrc/common/monsters/monster/mage.qc +++ b/qcsrc/common/monsters/monster/mage.qc @@ -413,7 +413,8 @@ float m_mage(float req) case MR_SETUP: { if not(self.health) self.health = MON_CVAR(mage, health); - + + self.monster_loot = spawnfunc_item_health_large; self.monster_attackfunc = mage_attack; monsters_setframe(mage_anim_walk); diff --git a/qcsrc/common/monsters/monster/shambler.qc b/qcsrc/common/monsters/monster/shambler.qc index b29e8e3ef..ceddda3a7 100644 --- a/qcsrc/common/monsters/monster/shambler.qc +++ b/qcsrc/common/monsters/monster/shambler.qc @@ -135,7 +135,8 @@ float m_shambler(float req) case MR_SETUP: { if not(self.health) self.health = MON_CVAR(shambler, health); - + + self.monster_loot = spawnfunc_item_health_mega; self.monster_attackfunc = shambler_attack; monsters_setframe(shambler_anim_stand); self.weapon = WEP_NEX; diff --git a/qcsrc/common/monsters/monster/slime.qc b/qcsrc/common/monsters/monster/slime.qc index a973c3d50..93897b480 100644 --- a/qcsrc/common/monsters/monster/slime.qc +++ b/qcsrc/common/monsters/monster/slime.qc @@ -77,8 +77,6 @@ void slime_dead() self.health = -100; // gibbed slime_explode(); - Monster_CheckDropCvars (self.netname); // TODO: add a special function to drop items after death - self.deadflag = DEAD_DEAD; self.think = Monster_Fade; self.nextthink = time + 0.1; @@ -125,7 +123,8 @@ float m_slime(float req) case MR_SETUP: { if not(self.health) self.health = MON_CVAR(slime, health); - + + self.monster_loot = spawnfunc_item_rockets; self.monster_attackfunc = slime_attack; monsters_setframe(slime_anim_idle); diff --git a/qcsrc/common/monsters/monster/spider.qc b/qcsrc/common/monsters/monster/spider.qc index 8046170e2..8888faa05 100644 --- a/qcsrc/common/monsters/monster/spider.qc +++ b/qcsrc/common/monsters/monster/spider.qc @@ -197,7 +197,8 @@ float m_spider(float req) { if not(self.health) self.health = MON_CVAR(spider, health); if not(self.spider_type) self.spider_type = MON_CVAR(spider, attack_type); - + + self.monster_loot = spawnfunc_item_health_medium; self.monster_attackfunc = spider_attack; monsters_setframe(spider_anim_idle); diff --git a/qcsrc/common/monsters/monster/stingray.qc b/qcsrc/common/monsters/monster/stingray.qc index c93b728fa..dc11f8467 100644 --- a/qcsrc/common/monsters/monster/stingray.qc +++ b/qcsrc/common/monsters/monster/stingray.qc @@ -74,7 +74,8 @@ float m_stingray(float req) 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; monsters_setframe(stingray_anim_swim); diff --git a/qcsrc/common/monsters/monster/wyvern.qc b/qcsrc/common/monsters/monster/wyvern.qc index 9ca7b6633..9b0c0281c 100644 --- a/qcsrc/common/monsters/monster/wyvern.qc +++ b/qcsrc/common/monsters/monster/wyvern.qc @@ -131,7 +131,8 @@ float m_wyvern(float req) case MR_SETUP: { if not(self.health) self.health = MON_CVAR(wyvern, health); - + + self.monster_loot = spawnfunc_item_cells; self.monster_attackfunc = wyvern_attack; monsters_setframe(wyvern_anim_hover); diff --git a/qcsrc/common/monsters/monster/zombie.qc b/qcsrc/common/monsters/monster/zombie.qc index d698b4a73..c3afdea88 100644 --- a/qcsrc/common/monsters/monster/zombie.qc +++ b/qcsrc/common/monsters/monster/zombie.qc @@ -142,7 +142,8 @@ float m_zombie(float req) case MR_SETUP: { if not(self.health) self.health = MON_CVAR(zombie, health); - + + self.monster_loot = spawnfunc_item_health_medium; self.monster_attackfunc = zombie_attack; monsters_setframe(zombie_anim_spawn); self.spawn_time = time + 2.1; diff --git a/qcsrc/server/autocvars.qh b/qcsrc/server/autocvars.qh index c414382b6..622ab1af5 100644 --- a/qcsrc/server/autocvars.qh +++ b/qcsrc/server/autocvars.qh @@ -1239,10 +1239,7 @@ float autocvar_g_monsters_typefrag; float autocvar_g_monsters_owners; float autocvar_g_monsters_miniboss_chance; float autocvar_g_monsters_miniboss_healthboost; -float autocvar_g_monsters_forcedrop; float autocvar_g_monsters_drop_time; -string autocvar_g_monsters_drop_type; -string autocvar_g_monsters_drop_size; float autocvar_g_monsters_spawnshieldtime; float autocvar_g_monsters_teams; float autocvar_g_monsters_healthbars;