bool autocvar_g_overkill_powerups_replace;
+bool autocvar_g_overkill_itemwaypoints = true;
+
bool autocvar_g_overkill_filter_healthmega;
bool autocvar_g_overkill_filter_armormedium;
bool autocvar_g_overkill_filter_armorbig;
spawnfunc(weapon_hmg);
spawnfunc(weapon_rpc);
-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);
MUTATOR_HOOKFUNCTION(ok, PlayerPreThink)
{
- if(gameover)
+ if(game_stopped)
return;
entity player = M_ARGV(0, entity);
if(IS_DEAD(player) || !IS_PLAYER(player) || STAT(FROZEN, player))
return;
- for(int slot = 0; slot < MAX_WEAPONSLOTS; ++slot)
- {
- .entity weaponentity = weaponentities[slot];
- entity thiswep = player.(weaponentity);
-
- if(player.ok_lastwep[slot] && player.ok_lastwep[slot] != WEP_Null)
- {
- Weapon newwep = player.ok_lastwep[slot];
- if(player.ok_lastwep[slot] == WEP_HMG)
- newwep = WEP_MACHINEGUN;
- if(player.ok_lastwep[slot] == WEP_RPC)
- newwep = WEP_VORTEX;
- thiswep.m_switchweapon = newwep;
- player.ok_lastwep[slot] = WEP_Null;
- }
- }
-
if(PHYS_INPUT_BUTTON_ATCK2(player))
- if( !forbidWeaponUse(player) || player.weapon_blocked // allow if weapon is blocked
+ if( !forbidWeaponUse(player)
|| (round_handler_IsActive() && !round_handler_IsRoundStarted()) )
if(time >= player.jump_interval)
{
PHYS_INPUT_BUTTON_ATCK2(player) = false;
}
-MUTATOR_HOOKFUNCTION(ok, PlayerSpawn)
+MUTATOR_HOOKFUNCTION(ok, PlayerWeaponSelect)
{
entity player = M_ARGV(0, entity);
- // if player changed their weapon while dead, don't switch to their death weapon
- if(player.impulse)
+ for(int slot = 0; slot < MAX_WEAPONSLOTS; ++slot)
{
- for(int slot = 0; slot < MAX_WEAPONSLOTS; ++slot)
+ .entity weaponentity = weaponentities[slot];
+ entity thiswep = player.(weaponentity);
+
+ if(player.ok_lastwep[slot] && player.ok_lastwep[slot] != WEP_Null)
{
+ Weapon newwep = player.ok_lastwep[slot];
+ if(player.ok_lastwep[slot] == WEP_HMG)
+ newwep = WEP_MACHINEGUN;
+ if(player.ok_lastwep[slot] == WEP_RPC)
+ newwep = WEP_VORTEX;
+ thiswep.m_switchweapon = newwep;
player.ok_lastwep[slot] = WEP_Null;
}
}
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);
}
}
+bool ok_HandleItemWaypoints(entity e)
+{
+ if(!autocvar_g_overkill_itemwaypoints)
+ return false; // don't handle it
+
+ switch(e.itemdef)
+ {
+ case ITEM_HealthMega: return true;
+ case ITEM_ArmorMedium: return true;
+ case ITEM_ArmorBig: return true;
+ case ITEM_ArmorMega: return true;
+ }
+
+ return false;
+}
+
+MUTATOR_HOOKFUNCTION(ok, Item_RespawnCountdown)
+{
+ entity item = M_ARGV(0, entity);
+ return ok_HandleItemWaypoints(item);
+}
+
+MUTATOR_HOOKFUNCTION(ok, Item_ScheduleRespawn)
+{
+ entity item = M_ARGV(0, entity);
+ return ok_HandleItemWaypoints(item);
+}
+
MUTATOR_HOOKFUNCTION(ok, FilterItem)
{
entity item = M_ARGV(0, entity);
MUTATOR_HOOKFUNCTION(ok, SetStartItems, CBC_ORDER_LAST)
{
- WepSet ok_start_items = (WEPSET(MACHINEGUN) | WEPSET(VORTEX) | WEPSET(SHOTGUN));
+ WepSet ok_start_items = (WEPSET(OVERKILL_MACHINEGUN) | WEPSET(OVERKILL_VORTEX) | WEPSET(OVERKILL_SHOTGUN));
if(WEP_RPC.weaponstart > 0) { ok_start_items |= WEPSET(RPC); }
if(WEP_HMG.weaponstart > 0) { ok_start_items |= WEPSET(HMG); }
WEP_RPC.spawnflags &= ~WEP_FLAG_MUTATORBLOCKED;
WEP_HMG.spawnflags &= ~WEP_FLAG_MUTATORBLOCKED;
- WEP_SHOTGUN.mdl = "ok_shotgun";
- WEP_MACHINEGUN.mdl = "ok_mg";
- WEP_VORTEX.mdl = "ok_sniper";
+ //WEP_SHOTGUN.mdl = "ok_shotgun";
+ //WEP_MACHINEGUN.mdl = "ok_mg";
+ //WEP_VORTEX.mdl = "ok_sniper";
}