From: Mario Date: Thu, 11 Apr 2013 00:44:24 +0000 (+1000) Subject: Drop minsta ammo in minstagib mode X-Git-Tag: xonotic-v0.8.0~241^2^2~424 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=c3c4cb79c745c1b32e292ce626189f8d13c15d3d;p=xonotic%2Fxonotic-data.pk3dir.git Drop minsta ammo in minstagib mode --- diff --git a/qcsrc/server/monsters/lib/monsters.qc b/qcsrc/server/monsters/lib/monsters.qc index c72b19724..f7d01af62 100644 --- a/qcsrc/server/monsters/lib/monsters.qc +++ b/qcsrc/server/monsters/lib/monsters.qc @@ -10,53 +10,73 @@ void M_Item_Touch () } } -void Monster_DropItem (string itype, string itemsize) +void monster_item_spawn() { - vector backuporigin = self.origin + ((self.mins + self.maxs) * 0.5); - entity oldself; - - oldself = self; - self = spawn(); - - if (itype == "armor") - { - if(itemsize == "large") spawnfunc_item_armor_large(); - else if (itemsize == "small") spawnfunc_item_armor_small(); - else if (itemsize == "medium") spawnfunc_item_armor_medium(); - else dprint("Invalid monster drop item selected.\n"); - } - else if (itype == "health") - { - if(itemsize == "large") spawnfunc_item_health_large(); - else if (itemsize == "small") spawnfunc_item_health_small(); - else if (itemsize == "medium") spawnfunc_item_health_medium(); - else if (itemsize == "mega") spawnfunc_item_health_mega(); - else dprint("Invalid monster drop item selected.\n"); - } - else if (itype == "ammo") - { - if(itemsize == "shells") spawnfunc_item_shells(); - else if (itemsize == "cells") spawnfunc_item_cells(); - else if (itemsize == "bullets") spawnfunc_item_bullets(); - else if (itemsize == "rockets") spawnfunc_item_rockets(); - else dprint("Invalid monster drop item selected.\n"); - } - else - { - dprint("Invalid monster drop item selected.\n"); - } - + self.monster_delayedattack(); + + self.think = monster_item_spawn; + self.nextthink = time + 0.1; self.gravity = 1; - self.noalign = TRUE; - setorigin(self, backuporigin); - self.velocity = randomvec() * 175 + '0 0 325'; - self.touch = M_Item_Touch; SUB_SetFade(self, time + 5, 1); +} + +void Monster_DropItem (string itype, string itemsize) +{ + 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_delayedattack = spawnfunc_item_armor_large; break; + case "large": e.monster_delayedattack = spawnfunc_item_armor_big; break; + case "medium": e.monster_delayedattack = spawnfunc_item_armor_medium; break; + case "small": e.monster_delayedattack = spawnfunc_item_armor_small; break; + default: break; + } + break; // break here? + } + case "health": + { + switch(itemsize) + { + case "mega": e.monster_delayedattack = spawnfunc_item_health_mega; break; + case "large": e.monster_delayedattack = spawnfunc_item_health_large; break; + case "medium": e.monster_delayedattack = spawnfunc_item_health_medium; break; + case "small": e.monster_delayedattack = spawnfunc_item_health_small; break; + default: break; + } + break; // break here? + } + case "ammo": + { + switch(itemsize) + { + case "shells": e.monster_delayedattack = spawnfunc_item_shells; break; + case "cells": e.monster_delayedattack = spawnfunc_item_cells; break; + case "rockets": e.monster_delayedattack = spawnfunc_item_rockets; break; + case "bullets": + case "nails": e.monster_delayedattack = spawnfunc_item_bullets; break; + default: break; + } + break; + } + default: break; + } - self = oldself; + if(g_minstagib) + e.monster_delayedattack = spawnfunc_item_minst_cells; + + e.think = monster_item_spawn; + e.nextthink = time + 0.1; } float monster_isvalidtarget (entity targ, entity ent)