X-Git-Url: https://de.git.xonotic.org/?a=blobdiff_plain;ds=sidebyside;f=qcsrc%2Fserver%2Fcompat%2Fquake3.qc;h=4f2b380ddd0e5b9828a807c6ad3524f5785bab5b;hb=a0a5cc0006a3d07ec905a23835e80a7c4f746579;hp=03f5580d61e68fd6245da5364e9c65d150407b9a;hpb=86a9fda8a03ef2cbcdaecd0d25e46538f8560975;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/compat/quake3.qc b/qcsrc/server/compat/quake3.qc index 03f5580d6..4f2b380dd 100644 --- a/qcsrc/server/compat/quake3.qc +++ b/qcsrc/server/compat/quake3.qc @@ -11,24 +11,38 @@ #include #include -//*********************** -//QUAKE 3 ENTITIES - So people can play quake3 maps with the xonotic weapons -//*********************** - -// NOTE: for best experience, you need to swap MGs with SGs in the map or it won't have a MG -bool q3compat_arena(string mapname) -{ - if(fexists(strcat("scripts/", mapname, ".arena"))) return true; - - return false; -} +/*********************** + * QUAKE 3 ENTITIES - So people can play quake3 maps with the xonotic weapons + *********************** + + * Map entities NOT handled in this file: + holdable_invulnerability Q3TA currently unsupported + holdable_kamikaze Q3TA currently unsupported + item_ammoregen Q3TA handled by buffs mutator + item_doubler Q3TA handled by buffs mutator + item_guard Q3TA handled by buffs mutator + item_scout Q3TA handled by buffs mutator + item_armor_jacket CPMA handled in quake2.qc + item_flight Q3A handled by buffs mutator + item_haste Q3A handled by buffs mutator + item_health Q3A handled in quake.qc + item_health_large Q3A handled in items.qc + item_health_small Q3A handled in health.qh + item_health_mega Q3A handled in health.qh + item_invis Q3A handled by buffs mutator + item_quad Q3A handled in items.qc + item_regen Q3A handled by buffs mutator + CTF spawnfuncs handled in sv_ctf.qc + + NOTE: for best experience, you need to swap MGs with SGs in the map or it won't have a MG +*/ // SG -> MG || SG -SPAWNFUNC_ITEM_COND(ammo_shells, q3compat_arena(mapname), ITEM_Bullets, ITEM_Shells) -SPAWNFUNC_WEAPON_COND(weapon_shotgun, q3compat_arena(mapname), WEP_MACHINEGUN, WEP_SHOTGUN) +SPAWNFUNC_ITEM_COND(ammo_shells, q3compat & BIT(0), ITEM_Bullets, ITEM_Shells) +SPAWNFUNC_WEAPON_COND(weapon_shotgun, q3compat & BIT(0), WEP_MACHINEGUN, WEP_SHOTGUN) // MG -> SG || MG -SPAWNFUNC_ITEM_COND(ammo_bullets, q3compat_arena(mapname), ITEM_Shells, ITEM_Bullets) +SPAWNFUNC_ITEM_COND(ammo_bullets, q3compat & BIT(0), ITEM_Shells, ITEM_Bullets) // GL -> Mortar SPAWNFUNC_ITEM(ammo_grenades, ITEM_Rockets) @@ -42,7 +56,7 @@ SPAWNFUNC_WEAPON(weapon_chaingun, WEP_HLAC) SPAWNFUNC_ITEM(ammo_belt, ITEM_Cells) // Team Arena Nailgun -> Crylink || Quake Nailgun -> Electro -SPAWNFUNC_WEAPON_COND(weapon_nailgun, q3compat_arena(mapname), WEP_CRYLINK, WEP_ELECTRO) +SPAWNFUNC_WEAPON_COND(weapon_nailgun, q3compat & BIT(0), WEP_CRYLINK, WEP_ELECTRO) SPAWNFUNC_ITEM(ammo_nails, ITEM_Cells) // LG -> Electro @@ -258,18 +272,6 @@ spawnfunc(target_fragsFilter) this.use = fragsfilter_use; } -//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 */ -//spawnfunc(item_health_small) /* handled in t_items.qc */ -//spawnfunc(item_health_mega) /* handled in t_items.qc */ -//spawnfunc(item_invis) /* handled by buffs mutator */ -//spawnfunc(item_regen) /* handled by buffs mutator */ - -// CTF spawnfuncs handled in mutators/gamemode_ctf.qc now - .bool notteam; .bool notsingle; .bool notfree; @@ -285,9 +287,11 @@ bool DoesQ3ARemoveThisEntity(entity this) // Xonotic is usually played with a CPM-based physics so we default to CPM mode if(cvar_string("g_mod_physics") == "Q3") { - if(this.notvq3) return true; + if(this.notvq3) + return true; } - else if(this.notcpm) return true; + else if(this.notcpm) + return true; // Q3 mappers use "notq3a" or "notta" to disable an entity in Q3A or Q3TA // Xonotic has ~equivalent features to Team Arena