.float ok_notice_time;
.float ammo_charge[Weapons_MAX];
-.float ok_use_ammocharge;
-.float ok_ammo_charge;
+.float ok_use_ammocharge = _STAT(OK_AMMO_CHARGE);
+.float ok_ammo_charge = _STAT(OK_AMMO_CHARGEPOOL);
.float ok_pauseregen_finished;
{
if(!ent.ok_use_ammocharge) return;
- entity wepent = get_weaponinfo(wep);
+ entity wepent = Weapons_from(wep);
if(wepent.weapon == 0)
return; // dummy
void ok_IncreaseCharge(entity ent, int wep)
{
- entity wepent = get_weaponinfo(wep);
+ entity wepent = Weapons_from(wep);
if(wepent.weapon == 0)
return; // dummy
{
if(!ent.ok_use_ammocharge) return true;
- entity wepent = get_weaponinfo(wep);
+ entity wepent = Weapons_from(wep);
if(wepent.weapon == 0)
return 0; // dummy
}
MUTATOR_HOOKFUNCTION(ok, PlayerDies)
-{SELFPARAM();
+{
+ SELFPARAM();
entity targ = ((frag_attacker) ? frag_attacker : frag_target);
- if(IS_MONSTER(self))
+ if(IS_MONSTER(this))
{
remove(other); // remove default item
- other = world;
+ other = NULL;
}
- setself(new(droppedweapon)); // hax
- self.ok_item = true;
- self.noalign = true;
- self.pickup_anyway = true;
- spawnfunc_item_armor_small(this);
- self.movetype = MOVETYPE_TOSS;
- self.gravity = 1;
- self.reset = SUB_Remove;
- setorigin(self, frag_target.origin + '0 0 32');
- self.velocity = '0 0 200' + normalize(targ.origin - self.origin) * 500;
- SUB_SetFade(self, time + 5, 1);
- setself(this);
-
- self.ok_lastwep = self.switchweapon;
+ entity e = new(droppedweapon); // hax
+ e.ok_item = true;
+ e.noalign = true;
+ e.pickup_anyway = true;
+ e.spawnfunc_checked = true;
+ spawnfunc_item_armor_small(e);
+ e.movetype = MOVETYPE_TOSS;
+ e.gravity = 1;
+ e.reset = SUB_Remove;
+ setorigin(e, frag_target.origin + '0 0 32');
+ e.velocity = '0 0 200' + normalize(targ.origin - self.origin) * 500;
+ SUB_SetFade(e, time + 5, 1);
+
+ this.ok_lastwep = PS(this).m_switchweapon.m_id;
return false;
}
if(self.ok_lastwep)
{
- self.switchweapon = self.ok_lastwep;
+ PS(self).m_switchweapon = Weapons_from(self.ok_lastwep);
self.ok_lastwep = 0;
}
if(self.ok_use_ammocharge)
if(!ok_CheckWeaponCharge(self, self.weapon))
{
- if(autocvar_g_overkill_ammo_charge_notice && time > self.ok_notice_time && self.BUTTON_ATCK && IS_REAL_CLIENT(self) && self.weapon == self.switchweapon)
+ if(autocvar_g_overkill_ammo_charge_notice && time > self.ok_notice_time && self.BUTTON_ATCK && IS_REAL_CLIENT(self) && self.weapon == PS(self).m_switchweapon.m_id)
{
//Send_Notification(NOTIF_ONE, self, MSG_CENTER, CENTER_OVERKILL_CHARGE);
self.ok_notice_time = time + 2;
play2(self, SND(DRYFIRE));
}
- Weapon wpn = get_weaponinfo(self.weapon);
+ Weapon wpn = Weapons_from(self.weapon);
.entity weaponentity = weaponentities[0]; // TODO: unhardcode
if(self.(weaponentity).state != WS_CLEAR)
w_ready(wpn, self, weaponentity, (self.BUTTON_ATCK ? 1 : 0) | (self.BUTTON_ATCK2 ? 2 : 0));
wep.team = self.team;
wep.respawntime = autocvar_g_overkill_superguns_respawn_time;
wep.pickup_anyway = true;
+ wep.spawnfunc_checked = true;
wep.think = self_spawnfunc_weapon_hmg;
wep.nextthink = time + 0.1;
return true;
wep.team = self.team;
wep.respawntime = autocvar_g_overkill_superguns_respawn_time;
wep.pickup_anyway = true;
+ wep.spawnfunc_checked = true;
wep.think = self_spawnfunc_weapon_rpc;
wep.nextthink = time + 0.1;
return true;
precache_all_playermodels("models/ok_player/*.dpm");
- addstat(STAT_OK_AMMO_CHARGE, AS_FLOAT, ok_use_ammocharge);
- addstat(STAT_OK_AMMO_CHARGEPOOL, AS_FLOAT, ok_ammo_charge);
-
WEP_RPC.spawnflags &= ~WEP_FLAG_MUTATORBLOCKED;
WEP_HMG.spawnflags &= ~WEP_FLAG_MUTATORBLOCKED;