X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fserver%2Fcompat%2Fquake3.qc;h=dbf2a80177ec55718aed480b1748f7fc23385d2d;hp=112a7f039d95cee3c5ab34820011a0a1a7dd20d4;hb=65ba38c5228d8af26ac2b04b6e6e536a1772f446;hpb=991de5e6922cd3c283de56c3249624f0f1bfe767 diff --git a/qcsrc/server/compat/quake3.qc b/qcsrc/server/compat/quake3.qc index 112a7f039d..dbf2a80177 100644 --- a/qcsrc/server/compat/quake3.qc +++ b/qcsrc/server/compat/quake3.qc @@ -7,6 +7,8 @@ #include #include #include +#include +#include #include //*********************** @@ -57,10 +59,7 @@ SPAWNFUNC_ITEM(item_armor_shard, ITEM_ArmorSmall) SPAWNFUNC_ITEM(item_enviro, ITEM_Shield) // medkit -> armor (we have no holdables) -SPAWNFUNC_ITEM(holdable_medkit, ITEM_ArmorMega) - -// doubler -> strength -SPAWNFUNC_ITEM(item_doubler, ITEM_Strength) +SPAWNFUNC_ITEM(holdable_medkit, ITEM_ArmorBig) .float wait; .float delay; @@ -117,9 +116,18 @@ void target_init_use(entity this, entity actor, entity trigger) if (!(this.spawnflags & 8)) { - actor.strength_finished = 0; + STAT(STRENGTH_FINISHED, actor) = 0; actor.invincible_finished = 0; - STAT(BUFFS, actor) = 0; + if(STAT(BUFFS, actor)) // TODO: make a dropbuffs function to handle this + { + int buffid = buff_FirstFromFlags(STAT(BUFFS, actor)).m_id; + Send_Notification(NOTIF_ONE, actor, MSG_MULTI, ITEM_BUFF_DROP, buffid); + sound(actor, CH_TRIGGER, SND_BUFF_LOST, VOL_BASE, ATTN_NORM); + if(!IS_INDEPENDENT_PLAYER(actor)) + Send_Notification(NOTIF_ALL_EXCEPT, actor, MSG_INFO, INFO_ITEM_BUFF_LOST, actor.netname, buffid); + STAT(BUFFS, actor) = 0; + STAT(BUFF_TIME, actor) = 0; + } } if (!(this.spawnflags & 16)) @@ -169,6 +177,12 @@ void target_give_init(entity this) SetResourceExplicit(this, RES_ARMOR, 100); else if (it.classname == "item_health_mega") SetResourceExplicit(this, RES_HEALTH, 200); + else if (it.classname == "item_buff") { + entity buff = buff_FirstFromFlags(STAT(BUFFS, it)); + this.netname = cons(this.netname, buff.netname); + STAT(BUFF_TIME, this) = it.count; + } + //remove(it); // removing ents in init functions causes havoc, workaround: setthink(it, SUB_Remove); it.nextthink = time; @@ -216,6 +230,7 @@ spawnfunc(target_fragsFilter) } //spawnfunc(item_flight) /* handled by buffs mutator */ +//spawnfunc(item_doubler) /* handled by buffs mutator */ //spawnfunc(item_haste) /* handled by buffs mutator */ //spawnfunc(item_health) /* handled in t_quake.qc */ //spawnfunc(item_health_large) /* handled in t_items.qc */