]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/commitdiff
mutator_invincibleproj.qc: Add a mutator (like g_rocketflying) which allows projectil...
authorSamual <samual@xonotic.org>
Fri, 30 Sep 2011 16:33:33 +0000 (12:33 -0400)
committerSamual <samual@xonotic.org>
Fri, 30 Sep 2011 16:33:33 +0000 (12:33 -0400)
defaultXonotic.cfg
qcsrc/menu/xonotic/dialog_multiplayer_create_mutators.c
qcsrc/server/miscfunctions.qc
qcsrc/server/mutators/mutator_invincibleproj.qc [new file with mode: 0644]
qcsrc/server/mutators/mutators.qh
qcsrc/server/progs.src

index 8125db4ecbaa149f0e9436df5c1a604e2ad5f767..7aa1317d3de34b67864d6f1763eeb36ad0cda322 100644 (file)
@@ -550,6 +550,7 @@ alias clearmap "disconnect"
 
 set g_grappling_hook 0 "let players spawn with the grappling hook which allows them to pull themselves up"
 
+set g_invincible_projectiles 0 "set to 1 to disable any damage to projectiles in all balance configs, regardless of g_projectiles_damage"
 set g_dodging 0 "set to 1 to enable dodging in games"
 set g_rocket_flying 0 "set to 1 to enable rocket flying in all balance configs"
 
index 6b14d1446de07fe5019b94f84aa7ac8591efd087..2711c57e7f1eb53789d075a560557c870e5fdddc 100644 (file)
@@ -72,6 +72,8 @@ string XonoticMutatorsDialog_toString(entity me)
                s = strcat(s, ", ", _("NIX"));
        if(cvar("g_rocket_flying"))
                s = strcat(s, ", ", _("Rocket Flying"));
+       if(cvar("g_invincible_projectiles"))
+               s = strcat(s, ", ", _("Invincible Projectiles"));
        if(cvar_string("g_weaponarena") != "0")
                s = strcat(s, ", ", WeaponArenaString());
        if(cvar("g_start_weapon_laser") == 0)
@@ -191,7 +193,6 @@ void XonoticMutatorsDialog_fill(entity me)
        me.TR(me);
                me.TDempty(me, 0.4);
                me.TD(me, 1, 1.8, s);
-       me.TR(me);
        me.TR(me);
                me.TD(me, 1, 2, makeXonoticTextLabel(0, _("Weapon & item mutators:")));
        me.TR(me);
@@ -200,6 +201,9 @@ void XonoticMutatorsDialog_fill(entity me)
        me.TR(me);
                me.TDempty(me, 0.2);
                me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "g_jetpack", _("Jet pack")));
+       me.TR(me);
+               me.TDempty(me, 0.2);
+               me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "g_invincible_projectiles", _("Invincible Projectiles")));
        me.TR(me);
                me.TDempty(me, 0.2);
                me.TD(me, 1, 2, e = makeXonoticCheckBox(0, "g_rocket_flying", _("Rocket Flying")));
index 9a848fa46ebbe7eda5bc4b49735165f1e8573f84..d79cfa4fc4627fa523d0e946c9756444aea3ab69 100644 (file)
@@ -1121,6 +1121,8 @@ string GetGametype(); // g_world.qc
 void readlevelcvars(void)
 {
        // first load all the mutators
+       if(cvar("g_invincible_projectiles"))
+               MUTATOR_ADD(mutator_invincibleprojectiles);
        if(cvar("g_nix"))
                MUTATOR_ADD(mutator_nix);
        if(cvar("g_dodging"))
diff --git a/qcsrc/server/mutators/mutator_invincibleproj.qc b/qcsrc/server/mutators/mutator_invincibleproj.qc
new file mode 100644 (file)
index 0000000..d1ab520
--- /dev/null
@@ -0,0 +1,30 @@
+MUTATOR_HOOKFUNCTION(invincibleprojectiles_EditProjectile)
+{
+       if(other.health)
+       {
+               // disable health which in effect disables damage calculations
+               other.health = 0;
+       }
+       return 0;
+}
+
+MUTATOR_HOOKFUNCTION(invincibleprojectiles_BuildMutatorsString)
+{
+       ret_string = strcat(ret_string, ":InvincibleProjectiles");
+       return 0;
+}
+
+MUTATOR_HOOKFUNCTION(invincibleprojectiles_BuildMutatorsPrettyString)
+{
+       ret_string = strcat(ret_string, ", Invincible Projectiles");
+       return 0;
+}
+
+MUTATOR_DEFINITION(mutator_invincibleprojectiles)
+{
+       MUTATOR_HOOK(EditProjectile, invincibleprojectiles_EditProjectile, CBC_ORDER_ANY);
+       MUTATOR_HOOK(BuildMutatorsString, invincibleprojectiles_BuildMutatorsString, CBC_ORDER_ANY);
+       MUTATOR_HOOK(BuildMutatorsPrettyString, invincibleprojectiles_BuildMutatorsPrettyString, CBC_ORDER_ANY);
+
+       return 0;
+}
index d9fff4490467b77fd2f146dd68ec4a416882d6bb..1ae28abe54ff961700c030d9e305119aa51bd5ec 100644 (file)
@@ -2,6 +2,7 @@ MUTATOR_DECLARATION(gamemode_keyhunt);
 MUTATOR_DECLARATION(gamemode_freezetag);
 MUTATOR_DECLARATION(gamemode_keepaway);
 
+MUTATOR_DECLARATION(mutator_invincibleprojectiles);
 MUTATOR_DECLARATION(mutator_nix);
 MUTATOR_DECLARATION(mutator_dodging);
 MUTATOR_DECLARATION(mutator_rocketflying);
index c78b9f2fa5908c650ba76fd71cb0298146764599..3ad4de20c528c97cf48473f2ae2e58066a9279f0 100644 (file)
@@ -188,6 +188,7 @@ mutators/base.qc
 mutators/gamemode_keyhunt.qc
 mutators/gamemode_freezetag.qc
 mutators/gamemode_keepaway.qc
+mutators/mutator_invincibleproj.qc
 mutators/mutator_nix.qc
 mutators/mutator_dodging.qc
 mutators/mutator_rocketflying.qc