X-Git-Url: https://git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fserver%2Fcompat%2Fquake3.qc;h=de97cba569b0b7e0f0d86d7d87535a36267e37fc;hb=76afe6b4bb64b3f349bcf8aeadd04d0b319a7d01;hp=630b1ceb850702ff30eb1323ba559317cd97600e;hpb=c29ff3e1ef498deec2ebd9ad6883e9d2b683f43d;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/compat/quake3.qc b/qcsrc/server/compat/quake3.qc index 630b1ceb8..de97cba56 100644 --- a/qcsrc/server/compat/quake3.qc +++ b/qcsrc/server/compat/quake3.qc @@ -1,10 +1,14 @@ #include "quake3.qh" -#include +#include +#include +#include #include -#include +#include +#include #include -#include +#include +#include #include #include #include @@ -100,24 +104,34 @@ void target_init_use(entity this, entity actor, entity trigger) if (!(this.spawnflags & 4)) { - SetResource(actor, RES_SHELLS, start_ammo_shells); - SetResource(actor, RES_BULLETS, start_ammo_nails); - SetResource(actor, RES_ROCKETS, start_ammo_rockets); - SetResource(actor, RES_CELLS, start_ammo_cells); - SetResource(actor, RES_PLASMA, start_ammo_plasma); - SetResource(actor, RES_FUEL, start_ammo_fuel); - - STAT(WEAPONS, actor) = start_weapons; - if (this.spawnflags & 32) + if(this.spawnflags & 32) // spawn with only melee + { + SetResource(actor, RES_SHELLS, 0); + SetResource(actor, RES_BULLETS, 0); + SetResource(actor, RES_ROCKETS, 0); + SetResource(actor, RES_CELLS, 0); + SetResource(actor, RES_PLASMA, 0); + SetResource(actor, RES_FUEL, 0); + + STAT(WEAPONS, actor) = WEPSET(SHOTGUN); + } + else { - // TODO + SetResource(actor, RES_SHELLS, start_ammo_shells); + SetResource(actor, RES_BULLETS, start_ammo_nails); + SetResource(actor, RES_ROCKETS, start_ammo_rockets); + SetResource(actor, RES_CELLS, start_ammo_cells); + SetResource(actor, RES_PLASMA, start_ammo_plasma); + SetResource(actor, RES_FUEL, start_ammo_fuel); + + STAT(WEAPONS, actor) = start_weapons; } } if (!(this.spawnflags & 8)) { - actor.strength_finished = 0; - actor.invincible_finished = 0; + STAT(STRENGTH_FINISHED, actor) = 0; + STAT(INVINCIBLE_FINISHED, actor) = 0; if(STAT(BUFFS, actor)) // TODO: make a dropbuffs function to handle this { int buffid = buff_FirstFromFlags(STAT(BUFFS, actor)).m_id; @@ -173,6 +187,10 @@ void target_give_init(entity this) SetResourceExplicit(this, RES_ROCKETS, GetResource(this, RES_ROCKETS) + it.count * WEP_CVAR_PRI(mortar, ammo)); // WEAPONTODO this.netname = cons(this.netname, "mortar"); } + else if (it.classname == "weapon_shotgun") { + SetResourceExplicit(this, RES_SHELLS, GetResource(this, RES_SHELLS) + it.count * WEP_CVAR_PRI(shotgun, ammo)); // WEAPONTODO + this.netname = cons(this.netname, "shotgun"); + } else if (it.classname == "item_armor_mega") SetResourceExplicit(this, RES_ARMOR, 100); else if (it.classname == "item_health_mega") @@ -233,9 +251,9 @@ spawnfunc(target_fragsFilter) //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 */ -//spawnfunc(item_health_small) /* handled in t_items.qc */ -//spawnfunc(item_health_mega) /* handled in t_items.qc */ +//spawnfunc(item_health_large) /* handled in items.qc */ +//spawnfunc(item_health_small) /* handled in items.qc */ +//spawnfunc(item_health_mega) /* handled in items.qc */ //spawnfunc(item_invis) /* handled by buffs mutator */ //spawnfunc(item_regen) /* handled by buffs mutator */ @@ -280,11 +298,13 @@ bool DoesQ3ARemoveThisEntity(entity this) gametypename = "team"; if(g_ctf) gametypename = "ctf"; + if(g_ctf && ctf_oneflag) + gametypename = "oneflag"; if(g_duel) gametypename = "tournament"; if(maxclients == 1) gametypename = "single"; - // we do not have the other types (oneflag, obelisk, harvester, teamtournament) + // we do not have the other types (obelisk, harvester, teamtournament) if(strstrofs(this.gametype, gametypename, 0) < 0) return true; }