X-Git-Url: http://de.git.xonotic.org/?p=xonotic%2Fxonotic-data.pk3dir.git;a=blobdiff_plain;f=qcsrc%2Fcommon%2Fmutators%2Fmutator%2Foverkill%2Fsv_overkill.qc;h=501b3afd82e615b124effc3ddfc9a371a259aab7;hp=f86c71b7eb694d0cf0032165fe3b5fc114b2dcf0;hb=f7b69c7bd1d05162b3c532422e3ce3013dc0f5f2;hpb=f366b93e1d9e8ebdff81c9277f9958178dcb38d0 diff --git a/qcsrc/common/mutators/mutator/overkill/sv_overkill.qc b/qcsrc/common/mutators/mutator/overkill/sv_overkill.qc index f86c71b7eb..501b3afd82 100644 --- a/qcsrc/common/mutators/mutator/overkill/sv_overkill.qc +++ b/qcsrc/common/mutators/mutator/overkill/sv_overkill.qc @@ -4,15 +4,15 @@ #include "rpc.qh" bool autocvar_g_overkill_powerups_replace; -float autocvar_g_overkill_superguns_respawn_time; -bool autocvar_g_overkill_100h_anyway; -bool autocvar_g_overkill_100a_anyway; bool autocvar_g_overkill_ammo_charge; float autocvar_g_overkill_ammo_charge_notice; float autocvar_g_overkill_ammo_charge_limit; -.vector ok_deathloc; -.float ok_spawnsys_timer; +bool autocvar_g_overkill_filter_healthmega; +bool autocvar_g_overkill_filter_armormedium; +bool autocvar_g_overkill_filter_armorbig; +bool autocvar_g_overkill_filter_armormega; + .float ok_lastwep; .float ok_item; @@ -92,18 +92,17 @@ float ok_CheckWeaponCharge(entity ent, int wep) return (ent.ammo_charge[wep] >= cvar(sprintf("g_overkill_ammo_decharge_%s", wepent.netname))); } -MUTATOR_HOOKFUNCTION(ok, PlayerDamage_Calculate, CBC_ORDER_LAST) +MUTATOR_HOOKFUNCTION(ok, Damage_Calculate, CBC_ORDER_LAST) { entity frag_attacker = M_ARGV(1, entity); entity frag_target = M_ARGV(2, entity); float frag_deathtype = M_ARGV(3, float); - if(IS_PLAYER(frag_attacker) && IS_PLAYER(frag_target)) + if(IS_PLAYER(frag_attacker) && (IS_PLAYER(frag_target) || IS_VEHICLE(frag_target) || IS_TURRET(frag_target))) if(DEATH_ISWEAPON(frag_deathtype, WEP_BLASTER)) { if(frag_attacker != frag_target) - if(frag_target.health > 0) - if(STAT(FROZEN, frag_target) == 0) + if(!STAT(FROZEN, frag_target)) if(!IS_DEAD(frag_target)) { Send_Notification(NOTIF_ONE, frag_attacker, MSG_CENTER, CENTER_SECONDARY_NODAMAGE); @@ -164,7 +163,7 @@ MUTATOR_HOOKFUNCTION(ok, ForbidThrowCurrentWeapon) MUTATOR_HOOKFUNCTION(ok, PlayerPreThink) { - if(intermission_running || gameover) + if(gameover) return; entity player = M_ARGV(0, entity); @@ -274,15 +273,14 @@ MUTATOR_HOOKFUNCTION(ok, OnEntityPreSpawn) wep.noalign = ent.noalign; wep.cnt = ent.cnt; wep.team = ent.team; - wep.respawntime = autocvar_g_overkill_superguns_respawn_time; + wep.respawntime = g_pickup_respawntime_superweapon; wep.pickup_anyway = true; wep.spawnfunc_checked = true; setthink(wep, self_spawnfunc_weapon_hmg); wep.nextthink = time + 0.1; return true; } - - if(ent.classname == "item_invincible") + else if(ent.classname == "item_invincible") { entity wep = new(weapon_rpc); setorigin(wep, ent.origin); @@ -291,7 +289,7 @@ MUTATOR_HOOKFUNCTION(ok, OnEntityPreSpawn) wep.noalign = ent.noalign; wep.cnt = ent.cnt; wep.team = ent.team; - wep.respawntime = autocvar_g_overkill_superguns_respawn_time; + wep.respawntime = g_pickup_respawntime_superweapon; wep.pickup_anyway = true; wep.spawnfunc_checked = true; setthink(wep, self_spawnfunc_weapon_rpc); @@ -306,12 +304,14 @@ MUTATOR_HOOKFUNCTION(ok, FilterItem) entity item = M_ARGV(0, entity); if(item.ok_item) - return; + return false; - switch(item.items) + switch(item.itemdef) { - case ITEM_HealthMega.m_itemid: return !(autocvar_g_overkill_100h_anyway); - case ITEM_ArmorMega.m_itemid: return !(autocvar_g_overkill_100a_anyway); + case ITEM_HealthMega: return autocvar_g_overkill_filter_healthmega; + case ITEM_ArmorMedium: return autocvar_g_overkill_filter_armormedium; + case ITEM_ArmorBig: return autocvar_g_overkill_filter_armorbig; + case ITEM_ArmorMega: return autocvar_g_overkill_filter_armormega; } return true; @@ -337,6 +337,12 @@ MUTATOR_HOOKFUNCTION(ok, SetStartItems, CBC_ORDER_LAST) start_weapons = warmup_start_weapons = ok_start_items; } +MUTATOR_HOOKFUNCTION(ok, SetWeaponArena) +{ + // turn weapon arena off + M_ARGV(0, string) = "off"; +} + MUTATOR_HOOKFUNCTION(ok, BuildMutatorsString) { M_ARGV(0, string) = strcat(M_ARGV(0, string), ":OK");