public OnW3TakeDmgAllPre(victim,attacker,Float:damage)
{
if(ValidPlayer(victim, true) && ValidPlayer(attacker) && attacker!=victim)
{
if(GetClientTeam(victim)!=GetClientTeam(attacker))
{
if(War3_GetRace(attacker)==thisRaceID)
{
new SkillLevel = War3_GetSkillLevel(attacker,thisRaceID,SKILL_DAMAGE);
if(SkillLevel>0)
{
if(War3_SkillNotInCooldown(attacker,thisRaceID,SKILL_DAMAGE,true))
{
War3_DamageModPercent(1.5);
War3_CooldownMGR(attacker,10.0,thisRaceID,SKILL_DAMAGE, _, _);
}
}
}
}
}
}bool g_bDamageMultipler[MAXPLAYERSCUSTOM]; //remember if we need to apply damage multipler
int g_iLastTimeFired[MAXPLAYERSCUSTOM]; //holds war3 delay tracker "object"
public void OnPluginStart() {
HookEvent("weapon_fire", OnWeaponFire);
for(int i=0; i<MAXPLAYERSCUSTOM; ++i)
g_iLastTimeFired[i] = War3_RegisterDelayTracker();
}
// do this in OnRaceChange/OnRaceSelected too
public void OnClientPutInServer(int client) {
g_bDamageMultipler[client] = false;
g_iLastTimeFired[client] = 0;
}
public void OnRaceSelected(int client, int old,int new) {
if(old == thisRaceID)
OnClientPutInServer(client);
// or something like that
}
public void OnWeaponFire(Event ev, const char[] name, bool dontBroadcast) {
int client = GetClientOfUserId(ev.GetInt("userid"));
// ready for damage modifier?
if(g_bDamageMultipler[client] && War3_TrackDelayExpired(g_iLastTimeFired[client]) {
// cooldown expired, set modifier
g_bDamageMultipler[client] = true;
// reset delay tracker
War3_TrackDelay(g_iLastTimeFired[client], 10.0);
} else {
// not ready
g_bDamageMultipler[client] = false;
}
}
OnW3TakeDamageThing(client,victim) {
if(g_bDamageMultipler[client]) {
//do stuff
}
}