f = key.team;
else
f = 30;
- s |= pow(32, key.count) * f;
+ s |= (32 ** key.count) * f;
}
FOREACH_CLIENT(true, LAMBDA(it.kh_state = s));
FOR_EACH_KH_KEY(key)
{
if(key.owner)
- key.owner.kh_state |= pow(32, key.count) * 31;
+ key.owner.kh_state |= (32 ** key.count) * 31;
}
//print(ftos((nextent(NULL)).kh_state), "\n");
}
key.angles_y -= key.owner.angles.y;
#endif
key.flags = 0;
- IL_REMOVE(g_items, key);
+ if(IL_CONTAINS(g_items, key))
+ IL_REMOVE(g_items, key);
key.solid = SOLID_NOT;
set_movetype(key, MOVETYPE_NONE);
key.team = key.owner.team;
key.damageforcescale = 0;
key.takedamage = DAMAGE_NO;
key.modelindex = kh_key_carried;
+ navigation_dynamicgoal_unset(key);
}
void kh_Key_Detach(entity key) // runs every time a key is dropped or lost. Runs several times times when all the keys are captured
key.angles_y += key.owner.angles.y;
#endif
key.flags = FL_ITEM;
- IL_PUSH(g_items, key);
+ if(!IL_CONTAINS(g_items, key))
+ IL_PUSH(g_items, key);
key.solid = SOLID_TRIGGER;
set_movetype(key, MOVETYPE_TOSS);
key.pain_finished = time + autocvar_g_balance_keyhunt_delay_return;
key.takedamage = DAMAGE_YES;
// let key.team stay
key.modelindex = kh_key_dropped;
+ navigation_dynamicgoal_set(key);
key.kh_previous_owner = key.owner;
key.kh_previous_owner_playerid = key.owner.playerid;
}
setsize(key, KH_KEY_MIN, KH_KEY_MAX);
key.colormod = Team_ColorRGB(initial_owner.team) * KH_KEY_BRIGHTNESS;
key.reset = key_reset;
+ navigation_dynamicgoal_init(key, false);
switch(initial_owner.team)
{
++players;
));
if (!players)
- missing_teams |= pow(2, i);
+ missing_teams |= (2 ** i);
}
return missing_teams;
}