]> git.rm.cloudns.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
Merge branch 'master' into TimePath/guide
authorotta8634 <k9wolf@pm.me>
Sat, 15 Feb 2025 09:52:51 +0000 (17:52 +0800)
committerotta8634 <k9wolf@pm.me>
Sat, 15 Feb 2025 09:52:51 +0000 (17:52 +0800)
28 files changed:
1  2 
gfx/menu/luma/skinvalues.txt
gfx/menu/luminos/skinvalues.txt
gfx/menu/wickedx/skinvalues.txt
gfx/menu/xaw/skinvalues.txt
qcsrc/common/monsters/monster/golem.qc
qcsrc/common/monsters/monster/mage.qc
qcsrc/common/monsters/monster/spider.qc
qcsrc/common/monsters/monster/wyvern.qc
qcsrc/common/monsters/monster/zombie.qc
qcsrc/common/mutators/mutator/nades/nade/ammo.qh
qcsrc/common/mutators/mutator/nades/nade/darkness.qh
qcsrc/common/mutators/mutator/nades/nade/entrap.qh
qcsrc/common/mutators/mutator/nades/nade/heal.qh
qcsrc/common/mutators/mutator/nades/nade/ice.qh
qcsrc/common/mutators/mutator/nades/nade/monster.qh
qcsrc/common/mutators/mutator/nades/nade/napalm.qh
qcsrc/common/mutators/mutator/nades/nade/normal.qh
qcsrc/common/mutators/mutator/nades/nade/spawn.qh
qcsrc/common/mutators/mutator/nades/nade/translocate.qh
qcsrc/common/mutators/mutator/nades/nade/veil.qh
qcsrc/common/mutators/mutator/nades/nades.qc
qcsrc/common/mutators/mutator/nades/nades.qh
qcsrc/common/mutators/mutator/new_toys/new_toys.qc
qcsrc/common/mutators/mutator/new_toys/sv_new_toys.qc
qcsrc/common/weapons/all.qh
qcsrc/common/weapons/weapon/tuba.qc
qcsrc/common/weapons/weapon/tuba.qh
qcsrc/menu/skin-customizables.inc

Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
index 62b83aef68fc6ce01f5ff32630d8004cdb0ca93c,beca99bf6807ba79bf3afbd6249490089d819f2c..f0fa72e407078ba5434c6ae93a1ae8d3ac56447f
@@@ -21,14 -21,6 +21,16 @@@ CLASS(AmmoNade, Nade
        ATTRIB(AmmoNade, m_color, vector, '0.66 0.33 0');
        ATTRIB(AmmoNade, m_name, string, _("Ammo grenade"));
        ATTRIB(AmmoNade, m_icon, string, "nade_ammo");
 +#ifdef MENUQC
 +      METHOD(AmmoNade, describe, string(AmmoNade this))
 +      {
 +              TC(AmmoNade, this);
 +              return sprintf(_("The %s detonates after a short delay, temporarily creating an orb around the point where it detonated for several seconds. "
 +                      "If your team members enter the orb they will recover ammo, and if enemies enter the sphere they will lose ammo\n\n"
 +                      "This does not impact weapon magazines, so it won't reload your weapons for you"),
 +              COLORED_NAME(this));
 +      }
 +#endif
+       ATTRIB(AmmoNade, netname, string, "ammo");
+       ATTRIB(AmmoNade, impulse, int, 10);
  ENDCLASS(AmmoNade)
index df37118ae17bc1aea9d2eabfb77ad80d43046c1f,efccc06a25beff3b034d34be4da9a66447fe19e5..a3fa5876ee75e1d8447684c66ea94b1b17d68c8a
@@@ -18,12 -18,6 +18,14 @@@ CLASS(DarknessNade, Nade
        ATTRIB(DarknessNade, m_color, vector, '0.23 0 0.23');
        ATTRIB(DarknessNade, m_name, string, _("Darkness grenade"));
        ATTRIB(DarknessNade, m_icon, string, "nade_darkness");
 +#ifdef MENUQC
 +      METHOD(DarknessNade, describe, string(DarknessNade this))
 +      {
 +              TC(DarknessNade, this);
 +              return sprintf(_("The %s detonates after a short delay, creating a dark field which temporarily blinds enemies who enter it"),
 +              COLORED_NAME(this));
 +      }
 +#endif
+       ATTRIB(DarknessNade, netname, string, "darkness");
+       ATTRIB(DarknessNade, impulse, int, 11);
  ENDCLASS(DarknessNade)
index cedea9c1355c9ff1fdb1185e7a17fd06a35bb329,4a260813c653251a7bba418e54b41a24d0f2acd1..dc509cabea68dc141f7b7ebec74a5bec95f0188f
@@@ -21,13 -21,6 +21,15 @@@ CLASS(EntrapNade, Nade
        ATTRIB(EntrapNade, m_color, vector, '0.15 0.85 0');
        ATTRIB(EntrapNade, m_name, string, _("Entrap grenade"));
        ATTRIB(EntrapNade, m_icon, string, "nade_entrap");
 +#ifdef MENUQC
 +      METHOD(EntrapNade, describe, string(EntrapNade this))
 +      {
 +              TC(EntrapNade, this);
 +              return sprintf(_("The %s detonates after a short delay, temporarily creating an orb around the point where it detonated for several seconds. "
 +                      "Players and projectiles that enter the sphere will be slowed down, including yourself"),
 +              COLORED_NAME(this));
 +      }
 +#endif
+       ATTRIB(EntrapNade, netname, string, "entrap");
+       ATTRIB(EntrapNade, impulse, int, 8);
  ENDCLASS(EntrapNade)
index e1d60a2db4f8430f220c682189d217d5449de002,01386aedd2b1916209086b7ea424d118c28d747e..a64a4722dcd0fcd05bb906afb4a949d2abe1ec69
@@@ -19,13 -19,6 +19,15 @@@ CLASS(HealNade, Nade
        ATTRIB(HealNade, m_color, vector, '1 0 0');
        ATTRIB(HealNade, m_name, string, _("Heal grenade"));
        ATTRIB(HealNade, m_icon, string, "nade_heal");
 +#ifdef MENUQC
 +      METHOD(HealNade, describe, string(HealNade this))
 +      {
 +              TC(HealNade, this);
 +              return sprintf(_("The %s detonates after a short delay, temporarily creating a healing orb around the point where it detonated for several seconds. "
 +                      "If your team members enter the orb they will recover health, and if enemies enter the sphere they will be harmed"),
 +              COLORED_NAME(this));
 +      }
 +#endif
+       ATTRIB(HealNade, netname, string, "heal");
+       ATTRIB(HealNade, impulse, int, 6);
  ENDCLASS(HealNade)
index 8e710205e27ab4e053a58a72c891328b489d19ac,ed64a8303e36f58d16243b96362b949c939b71c4..8fbced062719e722b8388ddcaea0c7f3911e012c
@@@ -19,13 -19,6 +19,15 @@@ CLASS(IceNade, Nade
        ATTRIB(IceNade, m_color, vector, '0 0.5 2');
        ATTRIB(IceNade, m_name, string, _("Ice grenade"));
        ATTRIB(IceNade, m_icon, string, "nade_ice");
 +#ifdef MENUQC
 +      METHOD(IceNade, describe, string(IceNade this))
 +      {
 +              TC(IceNade, this);
 +              return sprintf(_("The %s detonates after a short delay, freezing any enemies who walk within the explosion radius for a few seconds after the explosion. "
 +                      "While frozen, enemies are progressively dealt damage"),
 +              COLORED_NAME(this));
 +      }
 +#endif
+       ATTRIB(IceNade, netname, string, "ice");
+       ATTRIB(IceNade, impulse, int, 3);
  ENDCLASS(IceNade)
index 8c6a9613ffbf91e5e84ed7969f75068005112234,50d3e8c69f9ef7d7effa84d451a9a5c437088002..cf3978b2263e1f69cd8be18d892f3b4b66cf1e97
@@@ -18,12 -18,6 +18,14 @@@ CLASS(MonsterNade, Nade
        ATTRIB(MonsterNade, m_color, vector, '0.25 0.75 0');
        ATTRIB(MonsterNade, m_name, string, _("Monster grenade"));
        ATTRIB(MonsterNade, m_icon, string, "nade_monster");
 +#ifdef MENUQC
 +      METHOD(MonsterNade, describe, string(MonsterNade this))
 +      {
 +              TC(MonsterNade, this);
 +              return sprintf(_("The %s explodes after a short delay, spawning one of four monster types"),
 +              COLORED_NAME(this));
 +      }
 +#endif
+       ATTRIB(MonsterNade, netname, string, "pokenade"); // TODO: "monster"? nade needs renaming!
+       ATTRIB(MonsterNade, impulse, int, 7);
  ENDCLASS(MonsterNade)
index 47c57d20b44494387ae1379eb88cebbbf8e18e7e,e8ee871e44ec456ef085719f5d5b172804f7bd21..873bae13ea77f6a439d61be3e38bddba740e9efa
@@@ -30,13 -30,6 +30,15 @@@ CLASS(NapalmNade, Nade
        ATTRIB(NapalmNade, m_color, vector, '2 0.5 0');
        ATTRIB(NapalmNade, m_name, string, _("Napalm grenade"));
        ATTRIB(NapalmNade, m_icon, string, "nade_napalm");
 +#ifdef MENUQC
 +      METHOD(NapalmNade, describe, string(NapalmNade this))
 +      {
 +              TC(NapalmNade, this);
 +              return sprintf(_("The %s explodes after a short delay, spreading fiery napalm globs around in the fountain. "
 +                      "The napalm fire balls burn for a while, and damage players who get too close"),
 +              COLORED_NAME(this));
 +      }
 +#endif
+       ATTRIB(NapalmNade, netname, string, "napalm");
+       ATTRIB(NapalmNade, impulse, int, 2);
  ENDCLASS(NapalmNade)
index 2136824f238d055bd176295bbf8b7dc4cb693eba,76c19eb770b1bbfcb69dbbd981b64acbec3afbea..bc129ef8c07937b74bfcfe1357827e5bf9d7b96c
@@@ -10,13 -10,6 +10,15 @@@ CLASS(NormalNade, Nade
        ATTRIB(NormalNade, m_color, vector, '1 1 1');
        ATTRIB(NormalNade, m_name, string, _("Grenade"));
        ATTRIB(NormalNade, m_icon, string, "nade_normal");
 +#ifdef MENUQC
 +      METHOD(NormalNade, describe, string(NormalNade this))
 +      {
 +              TC(NormalNade, this);
 +              return sprintf(_("The (normal) %s explodes after a short delay, dealing damage to nearby players\n\n"
 +                      "Make sure you remember to throw it with ^3drop weapon^7, or else it will blow up in your hands!"),
 +              COLORED_NAME(this));
 +      }
 +#endif
+       ATTRIB(NormalNade, impulse, int, 1);
+       ATTRIB(NormalNade, netname, string, "normal");
  ENDCLASS(NormalNade)
index 66a2166bde4c636f8d3acf41581b25fc154f35f6,5d9f09c5fb167cd5fcb190cfc73bc3d757058295..d71b1db9f78c0a23de68e0f0f000b7f0a4b0983b
@@@ -16,13 -16,6 +16,15 @@@ CLASS(SpawnNade, Nade
        ATTRIB(SpawnNade, m_color, vector, '1 0.9 0');
        ATTRIB(SpawnNade, m_name, string, _("Spawn grenade"));
        ATTRIB(SpawnNade, m_icon, string, "nade_spawn");
 +#ifdef MENUQC
 +      METHOD(SpawnNade, describe, string(SpawnNade this))
 +      {
 +              TC(SpawnNade, this);
 +              return sprintf(_("The %s detonates after a short delay, temporarily setting your spawn point to where it detonated. "
 +                      "It is useful for cases where you want to go back to some point on the map after you die"),
 +              COLORED_NAME(this));
 +      }
 +#endif
+       ATTRIB(SpawnNade, netname, string, "spawn");
+       ATTRIB(SpawnNade, impulse, int, 5);
  ENDCLASS(SpawnNade)
index 1c6710fe943bcfd66210b398cb6cc40eb2633ca1,0c01e737479784af20cd750a3b8c022783b01839..5da2ba1bbfe1101f3451bf419dd895afc3e341a9
@@@ -16,12 -16,6 +16,14 @@@ CLASS(TranslocateNade, Nade
        ATTRIB(TranslocateNade, m_color, vector, '1 0 1');
        ATTRIB(TranslocateNade, m_name, string, _("Translocate grenade"));
        ATTRIB(TranslocateNade, m_icon, string, "nade_translocate");
 +#ifdef MENUQC
 +      METHOD(TranslocateNade, describe, string(TranslocateNade this))
 +      {
 +              TC(TranslocateNade, this);
 +              return sprintf(_("The %s detonates after a short delay, teleporting you to where it detonated"),
 +              COLORED_NAME(this));
 +      }
 +#endif
+       ATTRIB(TranslocateNade, netname, string, "translocate");
+       ATTRIB(TranslocateNade, impulse, int, 4);
  ENDCLASS(TranslocateNade)
index 87c92aa592fe355ca715280bb22a0119fbde2a67,95312a4747e8a8ec138037eae9f20f03dfb4f820..cf459bf0c1442a35e8ee6b266bb0cd05c13cfdcb
@@@ -22,13 -22,6 +22,15 @@@ CLASS(VeilNade, Nade
        ATTRIB(VeilNade, m_name, string, _("Veil grenade"));
        ATTRIB(VeilNade, m_icon, string, "nade_veil");
        ATTRIB(VeilNade, m_alpha, float, 0.45);
 +#ifdef MENUQC
 +      METHOD(VeilNade, describe, string(VeilNade this))
 +      {
 +              TC(VeilNade, this);
 +              return sprintf(_("The Veil grenade detonates after a short delay, temporarily creating an orb around the point where it detonated for several seconds. "
 +                      "Players inside the orb will be invisible to those outside it"),
 +              COLORED_NAME(this));
 +      }
 +#endif
+       ATTRIB(VeilNade, netname, string, "veil");
+       ATTRIB(VeilNade, impulse, int, 9);
  ENDCLASS(VeilNade)
index 33081556de90f82546081e3515424bc942f26bd2,84e5a352a5fe1d68fe6f01bed9f3b7f6d7b709ab..ad27f8b0cf7d169966ee342d2eb9550f697c3a42
@@@ -14,24 -14,16 +14,26 @@@ CLASS(Nade, Object
      ATTRIB(Nade, m_name, string, _("Grenade"));
      ATTRIB(Nade, m_icon, string, "nade_normal");
      ATTRIB(Nade, m_alpha, float, 1);
+     ATTRIB(Nade, netname, string, "random");
+     ATTRIB(Nade, impulse, int, 0); // legacy number for selection, do not add to new nade types
      ATTRIBARRAY(Nade, m_projectile, int, 2);
      ATTRIBARRAY(Nade, m_trail, entity, 2);
 -    METHOD(Nade, display, void(entity this, void(string name, string icon) returns)) {
 -        returns(this.m_name, sprintf("/gfx/hud/%s/%s", cvar_string("hud_skin"), this.m_icon));
 +    METHOD(Nade, display, void(Nade this, void(string name, string icon) returns)) {
 +        TC(Nade, this);
 +        returns(this.m_name, this.m_icon ? sprintf("/gfx/hud/%s/%s", cvar_string("hud_skin"), this.m_icon) : string_null);
      }
 +#ifdef MENUQC
 +    METHOD(Nade, describe, string(Nade this)) {
 +        TC(Nade, this);
 +        return SUPER(Nade).describe(this);
 +    }
 +#endif
  ENDCLASS(Nade)
  
 -REGISTER_NADE(Null, NEW(Nade));
 +CLASS(NullNade, Nade)
 +    ATTRIB(NullNade, m_hidden, bool, true);
 +ENDCLASS(NullNade)
 +REGISTER(Nades, NADE_TYPE, Null, m_id, NEW(NullNade));
  REGISTRY_DEFINE_GET(Nades, NADE_TYPE_Null)
  
  // use slots 70-100
@@@ -62,16 -54,6 +64,16 @@@ Nade Nade_FromProjectile(int proj
  .float orb_radius;
  
  #ifdef GAMEQC
- REPLICATE_INIT(int, cvar_cl_nade_type);
+ REPLICATE_INIT(string, cvar_cl_nade_type);
  REPLICATE_INIT(string, cvar_cl_pokenade_type);
  #endif
 +
 +#ifdef MENUQC
 +#include <common/mutators/base.qh>
 +
 +CLASS(MutatorNades, Mutator)
 +      ATTRIB(MutatorNades, message, string, _("Nades"));
 +ENDCLASS(MutatorNades)
 +
 +REGISTER_MUTATOR(nades, true, MutatorNades);
 +#endif
index f00a42bfaa2c821883807905d0417e2ee0cc0ff2,0000000000000000000000000000000000000000..97b094895b74632bb75cd08f196e78b1c05ca2cd
mode 100644,000000..100644
--- /dev/null
@@@ -1,38 -1,0 +1,37 @@@
-               case WEP_SHOCKWAVE.m_id:
 +#include "new_toys.qh"
 +
 +#include <common/weapons/_all.qh>
 +
 +// TODO: unhardcode this
 +bool nt_IsNewToy(int w)
 +{
 +      switch(w)
 +      {
 +              case WEP_SEEKER.m_id:
 +              case WEP_MINE_LAYER.m_id:
 +              case WEP_HLAC.m_id:
 +              case WEP_RIFLE.m_id:
 +              case WEP_ARC.m_id:
 +                      return true;
 +              default:
 +                      return false;
 +      }
 +}
 +
 +#ifdef MENUQC
 +#include "../instagib/instagib.qh"
 +#include "../overkill/overkill.qh"
 +
 +METHOD(MutatorNewToys, describe, string(MutatorNewToys this))
 +{
 +      TC(MutatorNewToys, this);
 +      string s = sprintf(_("The %s mutator, enabled by default, allows the spawning of new gimmicky weapons, sometimes replacing a core weapon\n\n"
 +              "Since these weapons can't spawn in %s and %s, the %s mutator can't be enabled concurrently\n\n"
 +              "The current %s weapons are:"), // do it like this so that the string doesn't need to change when the list is updated
 +      COLORED_NAME(this), COLORED_NAME(MUTATOR_mutator_instagib), COLORED_NAME(MUTATOR_ok), COLORED_NAME(this), COLORED_NAME(this));
 +    FOREACH(Weapons, nt_IsNewToy(it.m_id), {
 +        s = strcat(s, "\n  ", COLORED_NAME(it));
 +    });
 +      return s;
 +}
 +#endif
Simple merge
Simple merge
Simple merge
Simple merge