own.(weaponentity).m_switchweapon = w_getbestweapon(own, weaponentity);
}
}
- this.realowner.(weaponentity).minelayer_mines -= 1;
delete(this);
}
own.(weaponentity).m_switchweapon = w_getbestweapon(own, weaponentity);
}
}
- this.realowner.(weaponentity).minelayer_mines -= 1;
delete(this);
}
if(this.move_movetype == MOVETYPE_NONE || this.move_movetype == MOVETYPE_FOLLOW)
return; // we're already a stuck mine, why do we get called? TODO does this even happen?
- if(WarpZone_Projectile_Touch(this, toucher))
- {
- if(wasfreed(this))
- {
- .entity weaponentity = this.weaponentity_fld;
- this.realowner.(weaponentity).minelayer_mines -= 1;
- }
- return;
- }
+ PROJECTILE_TOUCH(this, toucher);
if((toucher && IS_PLAYER(toucher) && !IS_DEAD(toucher)) || toucher.owner == this.owner)
{
// scan how many mines we placed, and return if we reached our limit
if(WEP_CVAR(minelayer, limit))
{
- if(actor.(weaponentity).minelayer_mines >= WEP_CVAR(minelayer, limit))
+ int minecount = W_MineLayer_Count(actor);
+ if(minecount >= WEP_CVAR(minelayer, limit))
{
// the refire delay keeps this message from being spammed
Send_Notification(NOTIF_ONE, actor, MSG_MULTI, WEAPON_MINELAYER_LIMIT, WEP_CVAR(minelayer, limit));
// common properties
MUTATOR_CALLHOOK(EditProjectile, actor, mine);
-
- actor.(weaponentity).minelayer_mines = W_MineLayer_Count(actor, weaponentity);
}
bool W_MineLayer_PlacedMines(entity this, .entity weaponentity, bool detonate)
METHOD(MineLayer, wr_aim, void(entity thiswep, entity actor, .entity weaponentity))
{
// aim and decide to fire if appropriate
- if(actor.(weaponentity).minelayer_mines >= WEP_CVAR(minelayer, limit))
+ int minecount = W_MineLayer_Count(actor, weaponentity);
+ if(minecount >= WEP_CVAR(minelayer, limit))
PHYS_INPUT_BUTTON_ATCK(actor) = false;
else
PHYS_INPUT_BUTTON_ATCK(actor) = bot_aim(actor, weaponentity, WEP_CVAR(minelayer, speed), 0, WEP_CVAR(minelayer, lifetime), false);
}
METHOD(MineLayer, wr_think, void(entity thiswep, entity actor, .entity weaponentity, int fire))
{
+ actor.(weaponentity).minelayer_mines = W_MineLayer_Count(actor, weaponentity);
+
if(autocvar_g_balance_minelayer_reload_ammo && actor.(weaponentity).clip_load < WEP_CVAR(minelayer, ammo)) // forced reload
{
// not if we're holding the minelayer without enough ammo, but can detonate existing mines