X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fcommon%2Fmutators%2Fmutator%2Fnix%2Fsv_nix.qc;h=da5dcc234e32b4df646150465d7dee849f3193ae;hp=425b8c22b0e66f12e20115acbdc5a4cd6bdd0330;hb=e51ce3d45d2852ca793118fc73da9c25f789101f;hpb=acf114225f94bed609c10c74e1bb1277d28a7419 diff --git a/qcsrc/common/mutators/mutator/nix/sv_nix.qc b/qcsrc/common/mutators/mutator/nix/sv_nix.qc index 425b8c22b..da5dcc234 100644 --- a/qcsrc/common/mutators/mutator/nix/sv_nix.qc +++ b/qcsrc/common/mutators/mutator/nix/sv_nix.qc @@ -1,5 +1,6 @@ #include "sv_nix.qh" +//string autocvar_g_nix; int autocvar_g_balance_nix_ammo_cells; int autocvar_g_balance_nix_ammo_plasma; int autocvar_g_balance_nix_ammo_fuel; @@ -35,7 +36,7 @@ float nix_nextweapon; bool NIX_CanChooseWeapon(int wpn); -REGISTER_MUTATOR(nix, cvar("g_nix") && !cvar("g_instagib") && !cvar("g_overkill")) +REGISTER_MUTATOR(nix, expr_evaluate(cvar_string("g_nix")) && !MUTATOR_IS_ENABLED(mutator_instagib) && !MUTATOR_IS_ENABLED(ok)) { MUTATOR_ONADD { @@ -56,13 +57,13 @@ REGISTER_MUTATOR(nix, cvar("g_nix") && !cvar("g_instagib") && !cvar("g_overkill" { // as the PlayerSpawn hook will no longer run, NIX is turned off by this! FOREACH_CLIENT(IS_PLAYER(it) && !IS_DEAD(it), { - it.ammo_cells = start_ammo_cells; - it.ammo_plasma = start_ammo_plasma; - it.ammo_shells = start_ammo_shells; - it.ammo_nails = start_ammo_nails; - it.ammo_rockets = start_ammo_rockets; - it.ammo_fuel = start_ammo_fuel; - it.weapons = start_weapons; + SetResourceAmount(it, RESOURCE_SHELLS, start_ammo_shells); + SetResourceAmount(it, RESOURCE_BULLETS, start_ammo_nails); + SetResourceAmount(it, RESOURCE_ROCKETS, start_ammo_rockets); + SetResourceAmount(it, RESOURCE_CELLS, start_ammo_cells); + SetResourceAmount(it, RESOURCE_PLASMA, start_ammo_plasma); + SetResourceAmount(it, RESOURCE_FUEL, start_ammo_fuel); + STAT(WEAPONS, it) = start_weapons; for(int slot = 0; slot < MAX_WEAPONSLOTS; ++slot) { .entity weaponentity = weaponentities[slot]; @@ -133,30 +134,34 @@ void NIX_GiveCurrentWeapon(entity this) if(nix_nextchange != this.nix_lastchange_id) // this shall only be called once per round! { - this.ammo_shells = this.ammo_nails = this.ammo_rockets = this.ammo_cells = this.ammo_plasma = this.ammo_fuel = 0; - + SetResourceAmount(this, RESOURCE_SHELLS, 0); + SetResourceAmount(this, RESOURCE_BULLETS, 0); + SetResourceAmount(this, RESOURCE_ROCKETS, 0); + SetResourceAmount(this, RESOURCE_CELLS, 0); + SetResourceAmount(this, RESOURCE_PLASMA, 0); + SetResourceAmount(this, RESOURCE_FUEL, 0); if(this.items & IT_UNLIMITED_WEAPON_AMMO) { - switch(e.ammo_field) + switch (e.ammo_type) { - case ammo_shells: this.ammo_shells = autocvar_g_pickup_shells_max; break; - case ammo_nails: this.ammo_nails = autocvar_g_pickup_nails_max; break; - case ammo_rockets: this.ammo_rockets = autocvar_g_pickup_rockets_max; break; - case ammo_cells: this.ammo_cells = autocvar_g_pickup_cells_max; break; - case ammo_plasma: this.ammo_plasma = autocvar_g_pickup_plasma_max; break; - case ammo_fuel: this.ammo_fuel = autocvar_g_pickup_fuel_max; break; + case RESOURCE_SHELLS: SetResourceAmount(this, RESOURCE_SHELLS, autocvar_g_pickup_shells_max); break; + case RESOURCE_BULLETS: SetResourceAmount(this, RESOURCE_BULLETS, autocvar_g_pickup_nails_max); break; + case RESOURCE_ROCKETS: SetResourceAmount(this, RESOURCE_ROCKETS, autocvar_g_pickup_rockets_max); break; + case RESOURCE_CELLS: SetResourceAmount(this, RESOURCE_CELLS, autocvar_g_pickup_cells_max); break; + case RESOURCE_PLASMA: SetResourceAmount(this, RESOURCE_PLASMA, autocvar_g_pickup_plasma_max); break; + case RESOURCE_FUEL: SetResourceAmount(this, RESOURCE_FUEL, autocvar_g_pickup_fuel_max); break; } } else { - switch(e.ammo_field) + switch (e.ammo_type) { - case ammo_shells: this.ammo_shells = autocvar_g_balance_nix_ammo_shells; break; - case ammo_nails: this.ammo_nails = autocvar_g_balance_nix_ammo_nails; break; - case ammo_rockets: this.ammo_rockets = autocvar_g_balance_nix_ammo_rockets; break; - case ammo_cells: this.ammo_cells = autocvar_g_balance_nix_ammo_cells; break; - case ammo_plasma: this.ammo_plasma = autocvar_g_balance_nix_ammo_plasma; break; - case ammo_fuel: this.ammo_fuel = autocvar_g_balance_nix_ammo_fuel; break; + case RESOURCE_SHELLS: SetResourceAmount(this, RESOURCE_SHELLS, autocvar_g_balance_nix_ammo_shells); break; + case RESOURCE_BULLETS: SetResourceAmount(this, RESOURCE_BULLETS, autocvar_g_balance_nix_ammo_nails); break; + case RESOURCE_ROCKETS: SetResourceAmount(this, RESOURCE_ROCKETS, autocvar_g_balance_nix_ammo_rockets); break; + case RESOURCE_CELLS: SetResourceAmount(this, RESOURCE_CELLS, autocvar_g_balance_nix_ammo_cells); break; + case RESOURCE_PLASMA: SetResourceAmount(this, RESOURCE_PLASMA, autocvar_g_balance_nix_ammo_plasma); break; + case RESOURCE_FUEL: SetResourceAmount(this, RESOURCE_FUEL, autocvar_g_balance_nix_ammo_fuel); break; } } @@ -178,18 +183,6 @@ void NIX_GiveCurrentWeapon(entity this) } } - // vortex too - if(WEP_CVAR(vortex, charge)) - { - if(WEP_CVAR_SEC(vortex, chargepool)) - this.vortex_chargepool_ammo = 1; - for(int slot = 0; slot < MAX_WEAPONSLOTS; ++slot) - { - .entity weaponentity = weaponentities[slot]; - this.(weaponentity).vortex_charge = WEP_CVAR(vortex, charge_start); - } - } - // set last change info this.nix_lastchange_id = nix_nextchange; } @@ -202,23 +195,23 @@ void NIX_GiveCurrentWeapon(entity this) if(!(this.items & IT_UNLIMITED_WEAPON_AMMO) && time > this.nix_nextincr) { - switch(e.ammo_field) + switch (e.ammo_type) { - case ammo_shells: this.ammo_shells += autocvar_g_balance_nix_ammoincr_shells; break; - case ammo_nails: this.ammo_nails += autocvar_g_balance_nix_ammoincr_nails; break; - case ammo_rockets: this.ammo_rockets += autocvar_g_balance_nix_ammoincr_rockets; break; - case ammo_cells: this.ammo_cells += autocvar_g_balance_nix_ammoincr_cells; break; - case ammo_plasma: this.ammo_plasma += autocvar_g_balance_nix_ammoincr_plasma; break; - case ammo_fuel: this.ammo_fuel += autocvar_g_balance_nix_ammoincr_fuel; break; + case RESOURCE_SHELLS: GiveResource(this, RESOURCE_SHELLS, autocvar_g_balance_nix_ammoincr_shells); break; + case RESOURCE_BULLETS: GiveResource(this, RESOURCE_BULLETS, autocvar_g_balance_nix_ammoincr_nails); break; + case RESOURCE_ROCKETS: GiveResource(this, RESOURCE_ROCKETS, autocvar_g_balance_nix_ammoincr_rockets); break; + case RESOURCE_CELLS: GiveResource(this, RESOURCE_CELLS, autocvar_g_balance_nix_ammoincr_cells); break; + case RESOURCE_PLASMA: GiveResource(this, RESOURCE_PLASMA, autocvar_g_balance_nix_ammoincr_plasma); break; + case RESOURCE_FUEL: GiveResource(this, RESOURCE_FUEL, autocvar_g_balance_nix_ammoincr_fuel); break; } this.nix_nextincr = time + autocvar_g_balance_nix_incrtime; } - this.weapons = '0 0 0'; + STAT(WEAPONS, this) = '0 0 0'; if(g_nix_with_blaster) - this.weapons |= WEPSET(BLASTER); - this.weapons |= e.m_wepset; + STAT(WEAPONS, this) |= WEPSET(BLASTER); + STAT(WEAPONS, this) |= e.m_wepset; Weapon w = Weapons_from(nix_weapon); for(int slot = 0; slot < MAX_WEAPONSLOTS; ++slot) @@ -251,15 +244,15 @@ MUTATOR_HOOKFUNCTION(nix, BuildMutatorsPrettyString) M_ARGV(0, string) = strcat(M_ARGV(0, string), ", NIX"); } -MUTATOR_HOOKFUNCTION(nix, FilterItem) +MUTATOR_HOOKFUNCTION(nix, FilterItemDefinition) { - entity item = M_ARGV(0, entity); + entity definition = M_ARGV(0, entity); - if(item.itemdef.instanceOfHealth || item.itemdef.instanceOfArmor) + if (definition.instanceOfHealth || definition.instanceOfArmor) { return !autocvar_g_nix_with_healtharmor; } - else if(item.itemdef.instanceOfPowerup) + else if (definition.instanceOfPowerup) { return !autocvar_g_nix_with_powerups; } @@ -285,6 +278,11 @@ MUTATOR_HOOKFUNCTION(nix, PlayerPreThink) NIX_GiveCurrentWeapon(player); } +MUTATOR_HOOKFUNCTION(nix, ForbidRandomStartWeapons) +{ + return true; +} + MUTATOR_HOOKFUNCTION(nix, PlayerSpawn) { entity player = M_ARGV(0, entity);