public Disable(id, skill, prop) { new aid = PokeSkillTarget(id); if( ValidPlayer(aid) && Pokemod_Alive(aid) && !Pokemod_FF(id, aid) ){ bind_used(aid,_,DISABLE_TIME) sound_cast(id) sound_cast(aid) set_pev(aid, pev_gaitsequence, 6) poke_print(id, print_center, "You disabled somebody") poke_print(aid, print_center, "You have been disabled") return SKILL_USED; } return SKILL_READY; } public Spike_Cannon(id, skill, prop) { static bool:Firing[MAX_PLAYERS]; if( prop & SI_RELEASE || prop & SI_RESET ){ Firing[id] = false; return SKILL_READY; } else if( prop & SI_BIND ){ if( !Firing[id] ){ Firing[id] = true; CallSkill(id, skill, SI_SKILLCALL); } return SKILL_READY; } else if( prop & SI_SKILLCALL ){ if( !Firing[id] ) return SKILL_READY; } new Float:origin[3], Float:aim[3], Float:velocity[3], Ent pev(id, pev_origin, origin) pev(id, pev_v_angle, aim) //move it a little in front of them velocity_by_aim(id, 20, velocity) origin[0] += velocity[0]; origin[1] += velocity[1]; origin[2] += velocity[2]; Ent = fm_create_entity("info_target") if(!Ent) return SKILL_READY; set_pev(Ent, pev_classname, "poke_attack") set_pev(Ent, pev_iuser1, SPIKE_DAMAGE) set_pev(Ent, pev_iuser2, skill) fm_entity_set_model(Ent, MODELS[MDL_HAIR]) new Float:MinBox[3] = {-5.0, -5.0, -5.0} new Float:MaxBox[3] = {5.0, 5.0, 5.0} set_pev(Ent, pev_mins, MinBox) set_pev(Ent, pev_maxs, MaxBox) fm_entity_set_origin(Ent, origin) aim[0] += 270; while( aim[0] < -90.0 ) aim[0] += 180.0; while( aim[0] > 90.0 ) aim[0] -= 180.0; aim[0] *= -1; if( aim[0] > 0.0 ) aim[2] = 180.0; set_pev(Ent, pev_angles, aim) set_pev(Ent, pev_solid, SOLID_TRIGGER) set_pev(Ent, pev_movetype, MOVETYPE_BOUNCEMISSILE) set_pev(Ent, pev_owner, id) velocity_by_aim(id, 2000 , velocity) set_pev(Ent, pev_velocity, velocity) poke_sound(id,CHAN_VOICE,SND_TU_FIRE) DelayedCallSkill(0.25, id, skill, SI_SKILLCALL) return SKILL_USED; } public Roar(id, skill, prop) { poke_sound(id, CHAN_VOICE, SND_AG_DIE) new Float:energy new ammo, bpammo, wpnid; new players[MAX_PLAYERS], pnum, aid, Float:totake; poke_get_players(players, pnum, PLAYER_ALIVE); new iWPNidx, wpn[32]; for ( new i = 0; i < pnum; i++ ) { aid = players[i] if( Pokemod_FF(id, aid) ) continue; if( MOD == CS ){ wpnid = get_user_weapon(aid, ammo, bpammo) if(!wpnid) continue //can't do anything with these weapons if(knife_weapon(wpnid) || grenade_weapon(wpnid) || wpnid==CSW_C4) continue get_weaponname(wpnid,wpn,31) totake = float(SkillClamp(id, skill, ammo/4, ammo*3/4)) iWPNidx = -1 while ((iWPNidx = fm_find_ent_by_class(iWPNidx, wpn)) != 0) { if (aid == pev(iWPNidx, pev_owner)) { cs_set_weapon_ammo(iWPNidx, floatround(ammo-totake)) break } } cs_set_user_bpammo(aid, wpnid, floatround(bpammo+totake)) } else if( MOD == DOD ){ wpnid = get_user_weapon(aid,ammo,bpammo) if(!wpnid) continue if(knife_weapon(wpnid) || grenade_weapon(wpnid)) continue ammo = dod_get_user_ammo(aid,wpnid) totake = float(SkillClamp(id, skill, ammo/4, ammo*3/4)) dod_set_user_ammo(aid, wpnid, floatround(ammo-totake)) } else if( MOD == NS ){ if(Pokemod_Team(aid)==1){//Marines wpnid = get_user_weapon(aid, ammo, bpammo) if(!wpnid) continue get_weaponname(wpnid,wpn,31) //can't do anything with these weapons if(knife_weapon(wpnid) || grenade_weapon(wpnid)) continue totake = float(SkillClamp(id, skill, ammo/4, ammo*3/4)) iWPNidx = -1 while ((iWPNidx = fm_find_ent_by_class(iWPNidx, wpn)) != 0) { if (aid == pev(iWPNidx, pev_owner)) { ns_set_weap_clip(iWPNidx, floatround(ammo-totake)) break } } ns_set_weap_reserve(aid, wpnid, floatround(bpammo+totake)) } else{//Aliens energy = ns_get_energy(aid) totake = (energy*SkillLevel(id, skill))*0.01 ns_set_energy(aid, energy-totake) } } poke_print(aid, print_center, "Someone roared at you") poke_sound(aid, CHAN_VOICE, SND_AG_DIE) } return SKILL_USED; } public Growl(id, skill, prop) { poke_sound(id, CHAN_VOICE, SND_AG_DIE) new players[MAX_PLAYERS], pnum, aid poke_get_players(players, pnum, PLAYER_ALIVE) for ( new i = 0; i < pnum; i++ ) { aid = players[i] if( Pokemod_FF(id, aid) ) continue; Pokemod_Repair(aid, -1*SkillPercent(id, skill, Pokemod_Armor(aid)) ); poke_print(aid, print_center, "Someone growled at you") poke_sound(aid, CHAN_VOICE, SND_AG_DIE) } return SKILL_USED; } public Smokescreen(id, skill, prop) { new smokecount = 1 new Float:fOrigin[3], Float:fVelocity[3] pev(id, pev_origin, fOrigin) velocity_by_aim(id, 35, fVelocity) new Float:fTemp[3], iFireOrigin[3] xs_vec_add(fOrigin, fVelocity, fTemp) FVecIVec(fTemp, iFireOrigin) new Float:fFireVelocity[3], iFireVelocity[3] velocity_by_aim(id, 100, fFireVelocity) FVecIVec(fFireVelocity, iFireVelocity) new parm[7] parm[0] = iFireOrigin[0] parm[1] = iFireOrigin[1] parm[2] = iFireOrigin[2] parm[3] = iFireVelocity[0] parm[4] = iFireVelocity[1] parm[5] = iFireVelocity[2] parm[6] = SPRITE_INDEX[SPR_BALLSMOKE] poke_sound(id, CHAN_VOICE, SND_FLAME) create_sprite_spray( parm ) if( smokecount-1 ) set_task(0.1, "create_sprite_spray", 0, parm, 7, "a", smokecount-1) parm[0] = id parm[1] = 0 parm[2] = skill spray_check( parm ) if( smokecount-1 ) set_task(0.1, "spray_check", 0, parm, 3, "a", smokecount-1) return SKILL_USED; } public Sand_Attack(id, skill, prop) { new smokecount = 1 new Float:fOrigin[3], Float:fVelocity[3] pev(id, pev_origin, fOrigin) velocity_by_aim(id, 35, fVelocity) new Float:fTemp[3], iFireOrigin[3] xs_vec_add(fOrigin, fVelocity, fTemp) FVecIVec(fTemp, iFireOrigin) new Float:fFireVelocity[3], iFireVelocity[3] velocity_by_aim(id, 100, fFireVelocity) FVecIVec(fFireVelocity, iFireVelocity) new parm[7] parm[0] = iFireOrigin[0] parm[1] = iFireOrigin[1] parm[2] = iFireOrigin[2] parm[3] = iFireVelocity[0] parm[4] = iFireVelocity[1] parm[5] = iFireVelocity[2] parm[6] = SPRITE_INDEX[SPR_XPLODE] poke_sound(id, CHAN_VOICE, SND_JUMPLAND) create_sprite_spray( parm ) if( smokecount-1 ) set_task(0.1, "create_sprite_spray", 0, parm, 7, "a", smokecount-1) parm[0] = id parm[1] = 2 parm[2] = skill spray_check( parm ) if( smokecount-1 ) set_task(0.1, "spray_check", 0, parm, 3, "a", smokecount-1) return SKILL_USED; } public Recover(id, skill, prop) { new heal sound_cure(id) screenflash(id, 128, 0, 128, 50) heal = SkillClamp(id, skill, 25, 150) Pokemod_Heal(id, heal) return SKILL_USED; } public Pay_Day(id, skill, prop) { new damage; PokeSkillTarget(id, damage); AddLvl(id, damage); Pokemod_Pay(id, damage); return SKILL_USED; } public Swift(id, skill, prop) { new victim = PokeSkillTarget(id); if( ValidPlayer(victim) && Pokemod_Alive(victim) && PassTest(id, 1) ){ get_user_origin(id, origin[id]); get_user_origin(victim, aim[id]); set_user_origin(id, aim[id]); MakeLine(0,origin[id],aim[id],SPRITE_INDEX[SPR_ROPE],0,0,10,15,0,255,255,255,255,0) sound_cast(id) poke_UnStuck(id) return SKILL_USED; } else{ sound_deny(id) g_StopSkill[id] = true; } return SKILL_READY; } public Cut(id, skill, prop) { new victim = PokeSkillTarget(id); if( pev_valid(victim) ){ new Float:takedamage; pev(victim, pev_takedamage, takedamage) if( takedamage != 0.0 ){ MakeLine_Ent(0,id,victim,SPRITE_INDEX[SPR_ROPE],1,1,10,5,100,0,255,0,100,0); if( skilldamage(victim, id, SkillClamp(id, skill, 10, 50), skill) ) return SKILL_USED; } } return SKILL_READY; } public Scratch(id, skill, prop) { new weapon, victim = PokeSkillTarget(id, _, weapon); if( Pokemod_Alive(victim) && knife_weapon( weapon ) ){ set_pev(victim, pev_velocity, Float:{0.0,0.0,0.0}); return SKILL_USED; } return SKILL_READY; } public Fury_Attack(id, skill, prop) { new weapon, victim = PokeSkillTarget(id, _, weapon); if( Pokemod_Alive(victim) && knife_weapon( weapon ) ){ new edamage = (PlayerStat[id][STAT_MAXAP] - get_user_armor(id)) / FURY_ATTACK_FACTOR poke_print(id,print_center,"%s did %d extra damage", SkillToName(skill), skilldamage( victim, id, edamage, skill) ); return SKILL_USED; } return SKILL_READY; } public Fury_Swipes(id, skill, prop) { new weapon, victim = PokeSkillTarget(id, _, weapon); if( Pokemod_Alive(victim) && knife_weapon( weapon ) ){ new edamage = (PlayerStat[id][STAT_MAXHP] - Health(id)) / FURY_SWIPES_FACTOR poke_print(id,print_center,"%s did %d extra damage", SkillToName(skill), skilldamage( victim, id, edamage, skill) ); return SKILL_USED; } return SKILL_READY; } public Vice_Grip(id, skill, prop) { new weapon, victim = PokeSkillTarget(id, _, weapon); if( ValidPlayer(victim) && Pokemod_Alive(victim) && knife_weapon( weapon ) ){ ApplyStatus( id, victim, STATUS_PARALYZE, VICE_GRIP ); return SKILL_USED; } return SKILL_READY; } public Thrash(id, skill, prop) { new weapon, victim = PokeSkillTarget(id, _, weapon); if( ValidPlayer(victim) && Pokemod_Alive(victim) && knife_weapon( weapon ) ){ skilldamage(victim, id, THRASH_DAMAGE, skill); screenshake(victim, THRASH, 5.0, THRASH); return SKILL_USED; } return SKILL_READY; } public Slash(id, skill, prop) { new damage, weapon, victim = PokeSkillTarget(id, damage, weapon); if( Pokemod_Alive(victim) && knife_weapon( weapon ) ){ new Float:victim_origin[3]; pev( victim, pev_origin, victim_origin ); skillAoEdamage(id, victim_origin, SkillLevel(id, skill)*5+100, damage, skill, AOE_IGNORE|AOE_MAXDAM); return SKILL_USED; } return SKILL_READY; } public Egg_Bomb(id, skill, prop) { if( !PlayerEnt[id] ){ if( !Find_EggBomb(id) ){ give_grenade(id) return SKILL_USED; } g_StopSkill[id] = true; } else if( PlayerEnt[id]!=id && pev_valid(PlayerEnt[id]) ){ //stop them from geting a nade immediately sound_cast(id) set_pev(PlayerEnt[id], pev_dmgtime, 0.1) set_pev(PlayerEnt[id], pev_nextthink, 0.1) set_pev(PlayerEnt[id], pev_owner, id) PlayerEnt[id] = 0 return SKILL_USED; } return SKILL_READY; } Find_EggBomb(id) { new iGrenade = -1, model[72] while ( (iGrenade = fm_find_ent_by_class(iGrenade, "grenade")) > 0 ) { pev(iGrenade, pev_model, model, 71) if ( id == pev(iGrenade, pev_owner) && !equali(model, MODELS[MDL_POKEBALL]) && !equali(model, "models/w_c4.mdl")){ PlayerEnt[id] = iGrenade egg_bomb_change(id) return true; } } if( MOD == DOD ){ iGrenade = -1 while ( (iGrenade = fm_find_ent_by_class(iGrenade, "stickgrenade")) > 0 ) { pev(iGrenade, pev_model, model, 71) if ( id == pev(iGrenade, pev_owner) && !equali(model, MODELS[MDL_POKEBALL])){ PlayerEnt[id] = iGrenade egg_bomb_change(id) return true; } } } else if( MOD == NS ){ iGrenade = -1 while ( (iGrenade = fm_find_ent_by_class(iGrenade, "handgrenade")) > 0 ) { pev(iGrenade, pev_model, model, 71) if ( id == pev(iGrenade, pev_owner) && !equali(model, MODELS[MDL_POKEBALL])){ PlayerEnt[id] = iGrenade egg_bomb_change(id) return true; } } } return false; } public egg_bomb_nade(id) { if( !PlayerEnt[id] ) return if(!PMon() || !Pokemod_Alive(id)){ set_pev(PlayerEnt[id], pev_dmgtime, 0.1) set_pev(PlayerEnt[id], pev_nextthink, 0.1) set_pev(PlayerEnt[id], pev_owner, id) PlayerEnt[id] = 0 } else if( pev_valid(PlayerEnt[id]) ){ new Float:timer pev(PlayerEnt[id], pev_nextthink, timer) timer += 2.0 set_pev(PlayerEnt[id], pev_nextthink, timer) set_task(1.0, "egg_bomb_nade", id) } } egg_bomb_change(id) { new nade = PlayerEnt[id]; fm_entity_set_model(nade, MODELS[MDL_POKEBALL]) set_pev(nade, pev_solid, SOLID_BBOX) set_pev(nade, pev_owner, 0) fm_entity_set_size(nade,Float:{-5.0,-5.0,-5.0},Float:{5.0,5.0,5.0}) egg_bomb_nade(id) } public Growth(id, skill, prop) { if( BindTime(id) && BindUsed[id] != WAIT_TIME ){ new Float:reduce = f_SkillPercent(id, skill, GROWTH_REDUCE); BindUsed[id] -= reduce; poke_print(id, print_center, "%s is reducing your skill time", SkillToName(skill)); return SKILL_USED; } return SKILL_READY; } public Rage(id, skill, prop) { static rage[MAX_PLAYERS]; if( prop & SI_ROUNDRESET ) rage[id] = 0; new damage, victim = PokeSkillTarget(id, damage); if( prop & SI_DAMAGED || prop & SI_PDAMAGED ){ new ragenums = damage / RAGE_FACTOR rage[id] += ragenums if(rage[id] > RAGE_MAX) rage[id] = RAGE_MAX poke_print(id,print_center,"Your rage is at %d extra damage", rage[id]) } else if( rage[id] && Pokemod_Alive(victim) ){ poke_print(id,print_center,"Your rage did %d extra damage", skilldamage( victim, id, rage[id], skill)) return SKILL_USED; } return SKILL_READY; } public Wrap(id, skill, prop) { new victim = PokeSkillTarget(id); if( Pokemod_Alive(victim) && SkillChance(id,skill) ){ ApplyStatus( id, victim, STATUS_PARALYZE, 1.0 ); poke_print( id, print_center, "You wrapped someone up" ); poke_print( victim, print_center, "You have been wrapped" ); return SKILL_USED; } return SKILL_READY; } public Constrict(id, skill, prop) { new victim = PokeSkillTarget(id); if( ValidPlayer(victim) && Pokemod_Alive(victim) && MaxSkillChance(id,skill,50) && !g_Status[victim][STATUS_PARALYZE] ){ ApplyStatus( id, victim, STATUS_PARALYZE, CONSTRICT_TIME ) poke_print(id,print_center,"You constricted an enemy") poke_print(victim,print_center,"You have been constricted") MakeLine_Ent(0,id,victim,SPRITE_INDEX[SPR_ROPE],1,1,5,20,0, 0,200,150, 100, 0) return SKILL_USED; } return SKILL_READY; } public Bide(id, skill, prop) { new victim = PokeSkillTarget(id); new edamage = (PlayerStat[id][STAT_MAXHP] - Health(id)) / BIDE_FACTOR if( ValidPlayer(victim) && Pokemod_Alive(victim) && edamage>0 && MaxSkillChance(id,skill,edamage) ){ MakeLine_Ent(0,id,victim,SPRITE_INDEX[SPR_ROPE],1,1,10,5,10, 139,59,19, 255,0) poke_print(id,print_center,"Your bide did %d extra damage", skilldamage( victim, id, edamage, skill) ) return SKILL_USED; } return SKILL_READY; } public Defense_Curl(id, skill, prop) { new damage; PokeSkillTarget(id, damage); Pokemod_Repair(id, damage / DEFENSE_CURL) return SKILL_USED } public Harden(id, skill, prop) { new armr = get_user_armor(id); if( !armr ){ sound_deny(id); poke_print(id, print_center, "You need to have armor to swap"); g_StopSkill[id] = true; return SKILL_READY; } new hp = Health(id); PlayerStat[id][STAT_MAXHP] = armr; set_user_health(id, PlayerStat[id][STAT_MAXHP]); set_user_armor(id, hp); return SKILL_USED; } public Flash(id, skill, prop) { new damage, victim = PokeSkillTarget(id, damage); if( ValidPlayer(victim) && Pokemod_Alive(victim) && MaxSkillChance(id,skill,damage) ){ new alpha = SkillClamp(id, skill, FLASH_ALPHA_MIN, FLASH_ALPHA_MAX); screenflash(victim, 255,255,255, alpha, FLASH_TIME); poke_print(id,print_center,"You hit someone with flash"); poke_print(victim,print_center,"You were hit by a flash of light"); return SKILL_USED; } return SKILL_READY; } public Reflect(id, skill, prop) { new damage, weapon; PokeSkillTarget(id, damage, weapon); new max = damage if( MaxSkillChance(id,skill, max) && grenade_weapon(weapon) ){ screenflash(id, 255, 0, 255, 50) Pokemod_Heal(id,damage) poke_print(id,print_center,"You reflected shrapnel from a grenade") return SKILL_USED; } return SKILL_READY; } public Guillotine(id, skill, prop) { new damage, weapon, victim = PokeSkillTarget(id, damage, weapon); if( ValidPlayer(victim) && Pokemod_Alive(victim) && MaxSkillChance(id,skill, damage) && knife_weapon(weapon) ){ skilldamage( victim, id, AUTO_KILL, skill) return SKILL_USED; } return SKILL_READY; } public Glare(id, skill, prop) { new aid = PokeSkillTarget(id) if( ValidPlayer(aid) && Pokemod_Alive(aid) && !Pokemod_FF(id, aid) ){ poke_print(id, print_center, "You Glared at someone") poke_print(aid, print_center, "Someone Glared at you") ApplyStatus( id, aid, STATUS_PARALYZE, 1.0 ) set_pev(aid, pev_velocity, Float:{0.0,0.0,0.0} ); return SKILL_USED; } return SKILL_READY; } public Bite(id, skill, prop) { new victim = PokeSkillTarget(id); if( !Pokemod_Alive(victim) || !ValidPlayer(victim) ) return SKILL_READY; poke_print(victim, print_center, "Someone is biting you"); new damage = skilldamage(victim, id, BITE, skill); if( !damage ) return SKILL_READY; Pokemod_Heal(id, damage ); return SKILL_USED; } public Hyper_Fang(id, skill, prop) { new damage, weapon, victim = PokeSkillTarget(id, damage, weapon); new div = PlayerStat[victim][STAT_MAXHP] / HYPER_FANG if( Pokemod_Alive(victim) && damage < div && knife_weapon( weapon ) ){ skilldamage(victim, id, div-damage, skill); return SKILL_USED; } return SKILL_READY; } public Super_Fang(id, skill, prop) { new damage, weapon, victim = PokeSkillTarget(id, damage, weapon); new div = PlayerStat[victim][STAT_MAXHP] / SUPER_FANG if( Pokemod_Alive(victim) && damage < div && knife_weapon( weapon ) ){ skilldamage(victim, id, div-damage, skill) return SKILL_USED; } return SKILL_READY; } public Double_Edge(id, skill, prop) { new weapon, victim = PokeSkillTarget(id, _, weapon); if(Pokemod_Alive(victim) || knife_weapon(weapon)) return SKILL_READY; new amount new level = SkillLevel(id, skill) if( MOD == CS ){ if( weapon == 2 || weapon <= 0 || weapon > 30 ) return SKILL_READY; amount = cs_get_user_bpammo(id, weapon) if(amount==0 && grenade_weapon(weapon)){ give_grenade(id) amount = 1 } cs_set_user_bpammo(id, weapon, amount+level) } else if( MOD == DOD ){ amount = dod_get_user_ammo(id, weapon) if(amount==0 && grenade_weapon(weapon)){ give_grenade(id) amount = 1 } dod_set_user_ammo(id, weapon, amount+level) } else if( MOD == NS ){ amount = ns_get_weap_reserve(id, weapon) if(amount==0 && grenade_weapon(weapon)){ give_grenade(id) amount = 1 } ns_set_weap_reserve(id, weapon, amount+level) } return SKILL_USED; } public Tri_Attack(id, skill, prop) { new weapon; PokeSkillTarget(id, _, weapon); if(knife_weapon(weapon)) return SKILL_READY; new wpn[32], ammo, bpammo get_user_weapon(id, ammo, bpammo) get_weaponname(weapon,wpn,31) new addition = 1 if( SkillChanceClamp(id, skill, 50, 100) ){ screenflash(id, 255, 255, 255, 50) //can't do anything with these weapons if(grenade_weapon(weapon)){ new parm[3]; parm[0] = id; parm[1] = addition; parm[2] = 1; set_task(0.1, "delayed_grenade", 0, parm, 3); return SKILL_USED; } else if( MOD == CS ){ new iWPNidx = -1 while ((iWPNidx = fm_find_ent_by_class(iWPNidx, wpn)) != 0) { if (id == pev(iWPNidx, pev_owner)) { cs_set_weapon_ammo(iWPNidx, ammo+addition) } } } else if( MOD == DOD ){ new amount = dod_get_user_ammo(id, weapon) dod_set_user_ammo(id, weapon, amount+addition) } else if( MOD == NS ){ new iWPNidx = -1 while ((iWPNidx = fm_find_ent_by_class(iWPNidx, wpn)) != 0) { if (id == pev(iWPNidx, pev_owner)) { ns_set_weap_clip(iWPNidx, ammo+addition) } } } return SKILL_USED; } return SKILL_READY; } public Splash(id, skill, prop) { if( entity_on_ground(id) ){ InWater(id); poke_sound(id, CHAN_VOICE, SND_WADE); new Float:velo[3]; pev(id, pev_velocity, velo); velo[0] = velo[1] = 0.0; set_pev(id, pev_velocity, velo ); return SKILL_USED; } return SKILL_READY; } public Substitute(id, skill, prop) { if( Health(id) < PlayerStat[id][STAT_MAXHP]/SUBSTITUTE){ EscapeRope(id, 0) return SKILL_USED; } else if( prop & SI_BIND ) poke_print(id, print_center, "Your HP is not low enough (%d)",PlayerStat[id][STAT_MAXHP]/SUBSTITUTE) return SKILL_READY; } public Gust(id, skill, prop) { new gust = SkillLevel(id, skill) / GUST_FACTOR new Float:velocity[3], Float:Cvelocity[3] poke_sound(id, CHAN_VOICE, SND_JUMPLAND) velocity_by_aim(id, gust*GUST_VELOCITY, velocity) new players[MAX_PLAYERS], pnum, aid poke_get_players(players, pnum, PLAYER_ALIVE|PLAYER_MORTAL) for(new i=0; i lastpercent){ lastpercent = percentage lastid = aid } } if( Pokemod_Alive(lastid) ){ new Float:origin[3] pev(lastid, pev_origin, origin) origin[2] += 40 //set them above the player set_pev(id, pev_origin, origin) pev(lastid, pev_angles, origin) set_pev(id, pev_angles, origin) set_pev(id, pev_fixangle, 1) poke_UnStuck(id) sound_cast(id) Pokemod_Heal(id, Health(aid)-Health(id)); new name[32] get_user_name(lastid, name, 31) poke_print(id, print_center, "You are double teaming with %s",name) return SKILL_USED; } else{ sound_deny(id) poke_print(id, print_center, "You have no injured teammates") g_StopSkill[id] = true; } return SKILL_READY; } public Quick_Attack(id, skill, prop) { new Float:velocity[3], Float:add_to[3] pev(id, pev_velocity, velocity) velocity_by_aim(id, QUICK_ATTACK+SkillLevel(id, skill), add_to) velocity[0] += add_to[0] velocity[1] += add_to[1] if( entity_on_ground(id) ) velocity[2] = add_to[2] //add some just so they get a little boost into the air else velocity[2] += floatclamp(add_to[2],0.0,40.0) //if theyre in the air, dont force them upward set_pev(id, pev_velocity, velocity) return SKILL_USED; } public Hyper_Beam(id, skill, prop) { new level = SkillLevel(id, skill) new Float:f_origin[3], Float:f_aimvec[3] get_user_origin(id, origin[id]); get_user_origin(id, aim[id], 2); IVecFVec(origin[id], f_origin); IVecFVec(aim[id], f_aimvec); skillLinedamage(id, f_origin, f_aimvec, level*2, level, skill) MakeLine(0,origin[id],aim[id],SPRITE_INDEX[SPR_ZBEAM6],1,1,1,level*20,0,255,255,255,255,0) poke_sound(id, CHAN_VOICE, SND_AG_DIE) set_pev(id, pev_velocity, Float:{0.0,0.0,0.0}) return SKILL_USED; } public Conversion(id, skill, prop) { if( prop & SI_RELEASE ){ if( Pokemod_Alive(id) ) fm_set_rendering(id); SetSpeed(id); return SKILL_READY; } if( prop & SI_SPEED ){ if( ActiveSkill(id) == skill && prop & SI_SKILLCALL ){ new slowdown = SkillClamp(id, skill, CONVERSION_SPEED_MIN, CONVERSION_SPEED_MAX) PlayerStat[id][STAT_SPEED] += slowdown; } return SKILL_READY; } fm_set_rendering(id, kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, CONVERSION_ALPHA); screenflash(id, 128, 128, 128, 128); SetSpeed(id, true); return SKILL_USED; } public Strength(id, skill, prop) { if( prop & SI_RELEASE ){ if( ValidPlayer(PlayerEnt[id]) && Pokemod_Alive(PlayerEnt[id]) ) poke_UnStuck(PlayerEnt[id], false); PlayerEnt[id] = 0; return SKILL_READY; } new ent; if( !pev_valid(PlayerEnt[id]) ){ new body; get_user_aiming(id, ent, body, STRENGTH_DIST); if( pev_valid(ent) ){ new class[32]; pev(ent, pev_classname, class, 31); #if STRENGTH_NPC == 0 if( equal(class, "npc", 3) ){ poke_print(id, print_center, "You cannot move this object"); return SKILL_READY; } #endif if(!equal(class, "worldspawn") && containi(class, "grenade") == -1 && !equal(class, "func_", 5)){ PlayerEnt[id] = ent; } else{ return SKILL_READY; } } else return SKILL_READY; } else{ ent = PlayerEnt[id]; } new player_weight, object_weight; player_weight = str_to_num(FilePokeInfo(PlayersPoke[id][PlayersActive[id]], "Weight")); if( ValidPlayer(ent) ) object_weight = str_to_num(FilePokeInfo(PlayersPoke[ent][PlayersActive[ent]], "Weight")); if( !object_weight ) object_weight = 100; //10 uses at level 1 //100 uses at top level new uses; uses = ( SkillClamp(id, skill, 10, 100) * player_weight )/ object_weight ; if( uses < 2 ){ poke_print(id, print_center, "This object is too heavy for you"); Strength(id, skill, SI_RELEASE); return SKILL_READY; } new Float:player_origin[3]; new Float:ent_origin[3], Float:velocity[3]; pev(id, pev_origin, player_origin); ent_origin[0] = player_origin[0]; ent_origin[1] = player_origin[1]; ent_origin[2] = player_origin[2]; velocity_by_aim(id, STRENGTH_DIST/2, velocity); ent_origin[0] += velocity[0]; ent_origin[1] += velocity[1]; ent_origin[2] += velocity[2]; engfunc(EngFunc_SetOrigin, ent, ent_origin); #if STRENGTH_DAMAGE > 0 if( ValidPlayer(ent) && Pokemod_Alive(ent) ) skilldamage(ent, id, STRENGTH_DAMAGE, skill); #endif if( end_rep_use(id, skill, uses) ){ poke_print(id, print_center, "The object got too heavy for you"); Strength(id, skill, SI_RELEASE); return SKILL_USED; } return SKILL_READY; } public Supersonic(id, skill, prop) { new players[32], pnum, aid, apple_count new bool:in_water = entity_in_water(id); poke_get_players( players, pnum, PLAYER_ALIVE|PLAYER_MORTAL ) for( new i=0; i -1 ) copy(model, 31, model[char_helper+1]); if( (char_helper=containi(model,"w_")) == 0 ) replace(model, 31, "w_", ""); if( (char_helper=containi(model,".")) > -1 ) model[char_helper] = '\0'; poke_print(id, print_center, "Transformed into %s.",model); g_StopSkill[id] = true; DelayedCallSkill( f_SkillClamp(id,skill,10.0,40.0), id, skill, SI_SKILLCALL ); set_bind(id, WAIT_TIME); return SKILL_READY; } else poke_print(id, print_center, "This is not a valid object to transform into."); } else poke_print(id, print_center, "You must aim at an object to transform into it."); return SKILL_READY; } public Sing(id, skill, prop) { new players[MAX_PLAYERS], pnum, aid; poke_get_players(players, pnum, PLAYER_ALIVE); new radius = SING_RADIUS + SkillLevel(id, skill) new affected; for ( new i = 0; i < pnum; i++ ) { aid = players[i]; poke_sound(aid, CHAN_VOICE, SND_SING); if( !Pokemod_FF(id, aid) && fm_entity_range(id,aid) < radius ) { poke_print(aid, print_center, "You fell asleep to someone's singing."); ApplyStatus( id, aid, STATUS_ASLEEP, SING_SLEEP ); affected++; } } ActionPrint(id, print_center, affected, "sang to"); return SKILL_USED; } public Screech(id, skill, prop) { new players[MAX_PLAYERS], pnum, aid; poke_get_players(players, pnum, PLAYER_ALIVE); new level = SkillLevel(id, skill) new radius = SCREECH_RADIUS + level; new Float:delay = 0.5 + level/TotalLevels; poke_sound(id, CHAN_VOICE, SND_SUCK); for ( new i = 0; i < pnum; i++ ) { aid = players[i]; if( Pokemod_FF(id, aid) ) continue; if( fm_entity_range(id,aid) < radius ) { poke_print(aid, print_center, "Someone screeched at you."); bind_used(aid, _, delay); poke_sound(aid, CHAN_VOICE, SND_SUCK); set_pev(aid, pev_velocity, Float:{0.0,0.0,0.0}); } } return SKILL_USED; } public Bind(id, skill, prop) { new aid = PokeSkillTarget(id); if( ValidPlayer(aid) && Pokemod_Alive(aid) && !Pokemod_FF(id, aid) ){ sound_cast(id) ApplyStatus( id, aid, STATUS_PARALYZE, 5.0 ) set_pev(aid, pev_velocity, Float:{0.0,0.0,0.0}); // 1--------2 -++ +++ // | | // | | // | 3--------4 --+ +-+ // | | | | // 5--|-----6 | -+- ++- // | | // | | // 7--------8 --- +-- // point1 = 1,4,6,7 new Float:maxs[3]; pev(aid, pev_maxs, maxs); new origin[3], point1[3], point2[3][3], i; get_user_origin(aid, origin); point1[0] = origin[0]-floatround(maxs[0]) point1[1] = origin[1]+floatround(maxs[1]) point1[2] = origin[2]+floatround(maxs[2]) point2[0][0] = origin[0]+floatround(maxs[0]) point2[0][1] = origin[1]+floatround(maxs[1]) point2[0][2] = origin[2]+floatround(maxs[2]) point2[1][0] = origin[0]-floatround(maxs[0]) point2[1][1] = origin[1]-floatround(maxs[1]) point2[1][2] = origin[2]+floatround(maxs[2]) point2[2][0] = origin[0]-floatround(maxs[0]) point2[2][1] = origin[1]+floatround(maxs[1]) point2[2][2] = origin[2]-floatround(maxs[2]) for( i=0; i<3; i++ ) MakeLine(0,point1,point2[i],SPRITE_INDEX[SPR_BIGSPIT],10,10,50,50,0,255,255,255,255,0) point1[0] = origin[0]+floatround(maxs[0]) point1[1] = origin[1]-floatround(maxs[1]) point1[2] = origin[2]+floatround(maxs[2]) point2[0][0] = origin[0]+floatround(maxs[0]) point2[0][1] = origin[1]+floatround(maxs[1]) point2[0][2] = origin[2]+floatround(maxs[2]) point2[1][0] = origin[0]-floatround(maxs[0]) point2[1][1] = origin[1]-floatround(maxs[1]) point2[1][2] = origin[2]+floatround(maxs[2]) point2[2][0] = origin[0]+floatround(maxs[0]) point2[2][1] = origin[1]-floatround(maxs[1]) point2[2][2] = origin[2]-floatround(maxs[2]) for( i=0; i<3; i++ ) MakeLine(0,point1,point2[i],SPRITE_INDEX[SPR_BIGSPIT],10,10,50,50,0,255,255,255,255,0) point1[0] = origin[0]+floatround(maxs[0]) point1[1] = origin[1]+floatround(maxs[1]) point1[2] = origin[2]-floatround(maxs[2]) point2[0][0] = origin[0]+floatround(maxs[0]) point2[0][1] = origin[1]+floatround(maxs[1]) point2[0][2] = origin[2]+floatround(maxs[2]) point2[1][0] = origin[0]-floatround(maxs[0]) point2[1][1] = origin[1]+floatround(maxs[1]) point2[1][2] = origin[2]-floatround(maxs[2]) point2[2][0] = origin[0]+floatround(maxs[0]) point2[2][1] = origin[1]-floatround(maxs[1]) point2[2][2] = origin[2]-floatround(maxs[2]) for( i=0; i<3; i++ ) MakeLine(0,point1,point2[i],SPRITE_INDEX[SPR_BIGSPIT],10,10,50,50,0,255,255,255,255,0) point1[0] = origin[0]-floatround(maxs[0]) point1[1] = origin[1]-floatround(maxs[1]) point1[2] = origin[2]-floatround(maxs[2]) point2[0][0] = origin[0]-floatround(maxs[0]) point2[0][1] = origin[1]-floatround(maxs[1]) point2[0][2] = origin[2]+floatround(maxs[2]) point2[1][0] = origin[0]-floatround(maxs[0]) point2[1][1] = origin[1]+floatround(maxs[1]) point2[1][2] = origin[2]-floatround(maxs[2]) point2[2][0] = origin[0]+floatround(maxs[0]) point2[2][1] = origin[1]-floatround(maxs[1]) point2[2][2] = origin[2]-floatround(maxs[2]) for( i=0; i<3; i++ ) MakeLine(0,point1,point2[i],SPRITE_INDEX[SPR_BIGSPIT],10,10,50,50,0,255,255,255,255,0) poke_print(id, print_center, "You bound someone") poke_print(aid, print_center, "You have been bound") return SKILL_USED; } return SKILL_READY; } public Punch(id, skill, prop) { if( prop & SI_BIND ){ new Float:velocity[3], Float:play_velocity[3], punch = 200+SkillLevel(id, skill)/2; pev(id, pev_velocity, play_velocity); velocity_by_aim(id, punch, velocity); if( entity_on_ground(id) ) velocity[2] = floatclamp(velocity[2], 10.0, 50.0); else velocity[2] = floatmin(play_velocity[2]+velocity[2], 0.0); set_pev(id, pev_velocity, velocity); poke_sound(id,CHAN_VOICE, SND_STEP); return SKILL_READY; } else{ new victim = PokeSkillTarget(id); if( ValidPlayer(victim) && Pokemod_Alive(victim) ){ skilldamage( victim, id, SkillClamp(id, skill, 5, 50), skill); return SKILL_USED; } } return SKILL_READY; } public Comet_Punch(id, skill, prop) { if( prop & SI_BIND ){ new Float:velocity[3], Float:play_velocity[3], punch = 300+SkillLevel(id, skill)/2; pev(id, pev_velocity, play_velocity); velocity_by_aim(id, punch, velocity); if( entity_on_ground(id) ) velocity[2] = floatclamp(velocity[2], 10.0, 50.0); else velocity[2] = floatmin(play_velocity[2]+velocity[2], 0.0); set_pev(id, pev_velocity, velocity); poke_sound(id,CHAN_VOICE, SND_STEP); return SKILL_READY; } else{ new victim = PokeSkillTarget(id); if( ValidPlayer(victim) && Pokemod_Alive(victim) ){ skilldamage( victim, id, SkillClamp(id, skill, 5, 20), skill); return SKILL_USED; } } return SKILL_READY; } public Dizzy_Punch(id, skill, prop) { new weapon, victim = PokeSkillTarget(id, _, weapon); if( Pokemod_Alive(victim) && knife_weapon( weapon ) ){ skilldamage(victim, id, DIZZY_PUNCH, skill); if( ValidPlayer(victim) ) screenshake(victim, DIZZY_PUNCH_DIZZY, 5.0, DIZZY_PUNCH_DIZZY); return SKILL_USED; } return SKILL_READY; } public Mega_Punch(id, skill, prop) { new victim = PokeSkillTarget(id); if( !Pokemod_Alive(victim) || !fm_is_ent_visible(id, victim) ) return SKILL_READY; if( ValidPlayer(victim) ){ new Float:velocity[3]; velocity_by_aim(id, MEGA_PUNCH, velocity); velocity[2] = floatclamp(velocity[2], 10.0, 50.0); set_pev(victim, pev_velocity, velocity); } skilldamage(victim, id, MEGA_PUNCH_DAMAGE, skill); return SKILL_USED; } public Mega_Kick(id, skill, prop) { new victim = PokeSkillTarget(id); if( !Pokemod_Alive(victim) || !fm_is_ent_visible(id, victim) ) return SKILL_READY; if( ValidPlayer(victim) ){ new Float:velocity[3]; velocity_by_aim(id, MEGA_KICK, velocity); velocity[2] = floatmax(velocity[2], float(MEGA_KICK_UP)); set_pev(victim, pev_velocity, velocity); } skilldamage(victim, id, MEGA_KICK_DAMAGE, skill); return SKILL_USED; } public Metronome(id, skill, prop) { static metro_skill[MAX_PLAYERS]; if( prop & SI_ROUNDRESET || prop & SI_RESET ){ if( !g_Charge[id] ){ do metro_skill[id] = random_num(1,SkillsCreated); while( !ValidSkill(metro_skill[id]) || !(SkillInfo[metro_skill[id]] & SI_BIND) ); poke_print(id, print_center, "Metronome: %s", SkillToName(metro_skill[id]) ); } } if( !ValidSkill(metro_skill[id]) || !(SkillInfo[metro_skill[id]] & prop) ) return SKILL_READY; new temp_return; ExecuteForward( ValidSkillForward(skill), temp_return, id, metro_skill[id], prop ); if( temp_return == SKILL_USED ){ new charges = str_to_num(FileSkillInfo(skill, "Charges")); if( end_rep_use(id, skill, charges ) ) bind_used(id, metro_skill[id], _, f_SkillClamp(id, skill, 1.0, 0.5) ); } return SKILL_READY; } public Focus_Energy(id, skill, prop) { static energy_charge[MAX_PLAYERS]; if( prop & SI_ROUNDRESET ) energy_charge[id] = 0; else if( prop & SI_BIND ){ screenflash(id, 255, 255, 255, 50); if( energy_charge[id] < 100 ){ if( energy_charge[id] < 0 ) energy_charge[id] = 1; else energy_charge[id]++; poke_print(id, print_center, "Energy Focused %d", (20*energy_charge[id])/(100) ); } else poke_print(id, print_center, "Energy Focused MAX"); } else{ new aid = PokeSkillTarget(id); if( ValidPlayer(aid) && Pokemod_Alive(aid) && !Pokemod_FF(id, aid) && energy_charge[id] ){ new release_amount = skilldamage(aid, id, (20*energy_charge[id])/(100), skill); energy_charge[id] = 0; sound_cast(id); poke_print(id, print_center, "Your Focused Energy did %d damage", release_amount); return SKILL_USED; } } return SKILL_READY; } public Head_Butt(id, skill, prop) { new weapon, victim = PokeSkillTarget(id, _, weapon); if( Pokemod_Alive(victim) && knife_weapon( weapon ) && ValidPlayer(victim) ){ Flinch(victim); return SKILL_USED; } return SKILL_READY; } public Lovely_Kiss(id, skill, prop) { new victim = PokeSkillTarget(id); if( Pokemod_Alive(victim) && ValidPlayer(victim) ){ screenflash(victim, random_num(200,250), random_num(0,100), random_num(0,100), 200, 0.5); return SKILL_USED; } return SKILL_READY; } public Minimize(id, skill, prop) { new damage, victim = PokeSkillTarget(id, damage); new heal; if( prop & SI_ATTACK && Pokemod_Alive(victim) ){ heal = SkillClamp(id, skill, damage/2, damage); Pokemod_Heal(victim, heal ); poke_print(id, print_center, "Minimized Attack by %d", heal); } else if( prop & SI_DAMAGED ){ heal = damage/2; Pokemod_Heal(id, heal ); poke_print(id, print_center, "Minimized Damage by %d", heal); return SKILL_USED; } return SKILL_READY; } public Mirror_Move(id, skill, prop) { new damage, victim = PokeSkillTarget(id, damage); if( prop & SI_ATTACK || prop & SI_PATTACK ){ skilldamage(victim, id, SkillClamp(id, skill, damage/2, damage), skill); poke_print(id, print_center, "Mirrored %d Damage", damage); return SKILL_USED; } return SKILL_READY; } public Sharpen(id, skill, prop) { static sharp_charge[MAX_PLAYERS]; if( prop & SI_ROUNDRESET ) sharp_charge[id] = 0; else if( prop & SI_BIND ){ if( sharp_charge[id] < 20 ){ if( sharp_charge[id] < 0 ) sharp_charge[id] = 1; else sharp_charge[id]++; screenflash(id, 255, 255, 255, 50); poke_print(id, print_center, "Sharpening..." ); return SKILL_USED; } else poke_print(id, print_center, "Fully Sharpened"); } else{ new aid = PokeSkillTarget(id); if( ValidPlayer(aid) && Pokemod_Alive(aid) && !Pokemod_FF(id, aid) && sharp_charge[id] ){ new release_amount = skilldamage(aid, id, sharp_charge[id], skill); sound_cast(id); poke_print(id, print_center, "Your Blade did %d damage", release_amount); sharp_charge[id] /= 2; } } return SKILL_READY; } public Soft_Boiled(id, skill, prop) { new ap = get_user_armor(id); new hp = Health(id); if( ap < hp ){ Pokemod_Repair(id, (hp-ap)/10 ); sound_cast(id); return SKILL_USED; } return SKILL_READY; } public Struggle(id, skill, prop) { if( entity_on_ground(id) ){ new Float:velo[3]; pev(id, pev_velocity, velo); velo[0] = velo[1] = 0.0; velo[2] = 20.0; set_pev(id, pev_velocity, velo ); return SKILL_USED; } return SKILL_READY; } public Swords_Dance(id, skill, prop) { new players[MAX_PLAYERS], pnum, aid; poke_get_players(players, pnum, PLAYER_ALIVE|PLAYER_MORTAL|PLAYER_NOTEAM, Pokemod_Team(id)); if( !pnum ) return SKILL_READY; new swords = SkillClamp(id, skill, 5, 20) new play_swords[MAX_PLAYERS], total_damage; while( swords > 0 ){ aid = random_num(0, pnum); swords--; play_swords[aid]++; } new location[2][3], randomness; new level = SkillLevel(id, skill); for( new i=0; i