]> git.rm.cloudns.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Classify arc and shockwave as "new toys"
authorbones_was_here <bones_was_here@xonotic.au>
Sun, 1 Sep 2024 04:35:28 +0000 (14:35 +1000)
committerbones_was_here <bones_was_here@xonotic.au>
Thu, 3 Oct 2024 08:00:51 +0000 (18:00 +1000)
These are very unfinished, some of the other "new toys" weapons are far
more polished. As with the others, they can be allowed to spawn as
placed with g_new_toys 1; g_new_toys_autoreplace 0.

Fixes shockwave being listed in nt_IsNewToy() but not having
WEP_FLAG_MUTATORBLOCKED.

Fixes item spawning and g_weaponarena all and all_available not
respecting WEP_FLAG_HIDDEN (g_warmup_allguns 1 did respect it).

Changes the pipeline hash because apparently bots have been using a
WEP_FLAG_HIDDEN weapon due to g_weaponarena all in serverbench.cfg.

Signed-off-by: bones_was_here <bones_was_here@xonotic.au>
.gitlab-ci.yml
qcsrc/common/mutators/mutator/new_toys/sv_new_toys.qc
qcsrc/common/weapons/weapon/arc.qh
qcsrc/common/weapons/weapon/shockwave.qh
qcsrc/server/items/items.qc
qcsrc/server/weapons/spawning.qc
qcsrc/server/world.qc

index c0057d597584ff0ad2cd54731a34c759d8e8c82a..e2a97d8d443c4047f1844c84446dd3b327241bd6 100644 (file)
@@ -36,7 +36,7 @@ test_compilation_units:
 test_sv_game:
   stage: test
   script:
-    - export EXPECT=13aa630f559c7683195b8c8d5e0a1522
+    - export EXPECT=32efa2daf5e8198a880fd228a46d540c
     - qcsrc/tools/sv_game-hashtest.sh
     - exit $?
 
index c3e0083785692ef3bf8073b2eb1c1a6db1570b87..e2a5ea41a7717ebdc74828261f2ffdf752c83699 100644 (file)
@@ -123,6 +123,7 @@ bool nt_IsNewToy(int w)
                case WEP_HLAC.m_id:
                case WEP_RIFLE.m_id:
                case WEP_SHOCKWAVE.m_id:
+               case WEP_ARC.m_id:
                        return true;
                default:
                        return false;
index 993f392bb4abf419a5590f7a7f9d06b600730f68..3cdc8f163fed434bcb2245b11008e02b204e9bce 100644 (file)
@@ -4,7 +4,7 @@ CLASS(Arc, Weapon)
 /* spawnfunc */ ATTRIB(Arc, m_canonical_spawnfunc, string, "weapon_arc");
 /* ammotype  */ ATTRIB(Arc, ammo_type, Resource, RES_CELLS);
 /* impulse   */ ATTRIB(Arc, impulse, int, 3);
-/* flags     */ ATTRIB(Arc, spawnflags, int, WEP_TYPE_HITSCAN);
+/* flags     */ ATTRIB(Arc, spawnflags, int, WEP_FLAG_MUTATORBLOCKED | WEP_TYPE_HITSCAN);
 /* rating    */ ATTRIB(Arc, bot_pickupbasevalue, float, 8000);
 /* color     */ ATTRIB(Arc, wpcolor, vector, '1 1 1');
 /* modelname */ ATTRIB(Arc, mdl, string, "arc");
index 674fd8427658cbd01023654e815a285e297c158d..fede776cbe145896e734af637a58e89938add29e 100644 (file)
@@ -4,7 +4,7 @@ CLASS(Shockwave, Weapon)
 /* spawnfunc */ ATTRIB(Shockwave, m_canonical_spawnfunc, string, "weapon_shockwave");
 /* ammotype  */ //ATTRIB(Shockwave, ammo_type, Resource, RES_NONE);
 /* impulse   */ ATTRIB(Shockwave, impulse, int, 2);
-/* flags     */ ATTRIB(Shockwave, spawnflags, int, WEP_FLAG_HIDDEN | WEP_TYPE_HITSCAN | WEP_FLAG_CANCLIMB | WEP_TYPE_MELEE_SEC);
+/* flags     */ ATTRIB(Shockwave, spawnflags, int, WEP_FLAG_MUTATORBLOCKED | WEP_FLAG_HIDDEN | WEP_TYPE_HITSCAN | WEP_FLAG_CANCLIMB | WEP_TYPE_MELEE_SEC);
 /* rating    */ ATTRIB(Shockwave, bot_pickupbasevalue, float, 3000);
 /* color     */ ATTRIB(Shockwave, wpcolor, vector, '0.5 0.25 0');
 /* modelname */ ATTRIB(Shockwave, mdl, string, "shotgun");
index 839f3ecc9d3ad4a95b9c40a2080700cb9fa9eee5..62d13fb27d1733f32ba7d79e1278edb5962b21ad 100644 (file)
@@ -1648,7 +1648,7 @@ float GiveItems(entity e, float beginarg, float endarg)
                                got += GiveResourceValue(e, RES_HEALTH, op, val);
                                got += GiveResourceValue(e, RES_ARMOR, op, val);
                        case "allweapons":
-                               FOREACH(Weapons, it != WEP_Null && !(it.spawnflags & (WEP_FLAG_MUTATORBLOCKED | WEP_FLAG_SPECIALATTACK)), got += GiveWeapon(e, it.m_id, op, val));
+                               FOREACH(Weapons, it != WEP_Null && !(it.spawnflags & (WEP_FLAG_MUTATORBLOCKED | WEP_FLAG_HIDDEN | WEP_FLAG_SPECIALATTACK)), got += GiveWeapon(e, it.m_id, op, val));
                        //case "allbuffs": // all buffs makes a player god, do not want!
                                //FOREACH(StatusEffect, it.instanceOfBuff, got += GiveBuff(e, it, op, val));
                        case "allammo":
index e2a28f254ade99e3704d5b3880a113f8c3132b51..914b91966222ba995c8e05fcf511a358269b47f3 100644 (file)
@@ -33,7 +33,7 @@ void weapon_defaultspawnfunc(entity this, Weapon wpn)
        this.classname = wpn.m_canonical_spawnfunc;
        if (!ITEM_IS_LOOT(this) && !this.m_isreplaced)
        {
-               if (wpn.spawnflags & WEP_FLAG_MUTATORBLOCKED)
+               if (wpn.spawnflags & (WEP_FLAG_MUTATORBLOCKED | WEP_FLAG_HIDDEN))
                {
                        //LOG_WARNF("Attempted to spawn a mutator-blocked weapon rejected: prvm_edict server %i", this);
                        startitem_failed = true;
index 0fd0747da5d676056b0893da04cec519abd19d73..175f8d6834ea20d836a64ebc3079c0822dfb6ba2 100644 (file)
@@ -1872,7 +1872,7 @@ WepSet weapons_all()
 {
        WepSet ret = '0 0 0';
        FOREACH(Weapons, it != WEP_Null, {
-               if (!(it.spawnflags & (WEP_FLAG_MUTATORBLOCKED | WEP_FLAG_SPECIALATTACK)))
+               if (!(it.spawnflags & (WEP_FLAG_MUTATORBLOCKED | WEP_FLAG_HIDDEN | WEP_FLAG_SPECIALATTACK)))
                        ret |= it.m_wepset;
        });
        return ret;