Advertisement
Guest User

skill

a guest
May 8th, 2012
40
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 70.59 KB | None | 0 0
  1. #include "pokemon/pokeskills.inc"
  2.  
  3. enum POKESKILL
  4. {
  5. SKILL_ABSORB,
  6. SKILL_ACID,
  7. SKILL_ACIDARMOR,
  8. SKILL_AGILITY,
  9. SKILL_AMNESIA,
  10. SKILL_AURORABEAM,
  11. SKILL_BARRAGE,
  12. SKILL_BIDE,
  13. SKILL_BITE,
  14. SKILL_POWDEREDSNOW,
  15. SKILL_BODYSLAM,
  16. SKILL_BONECLUB,
  17. SKILL_BONEMERANG,
  18. SKILL_BUBBLEBEAM,
  19. SKILL_CONFUSERAY,
  20. SKILL_CONFUSION,
  21. SKILL_CONSTRICT,
  22. SKILL_CONVERSION,
  23. SKILL_COUNTER,
  24. SKILL_DEFENSECURL,
  25. SKILL_DIG,
  26. SKILL_DISABLE,
  27. SKILL_DIZZYPUNCH,
  28. SKILL_DOUBLEEDGE,
  29. SKILL_DOUBLEKICK,
  30. SKILL_DOUBLESLAP,
  31. SKILL_DOUBLETEAM,
  32. SKILL_DRAGONRAGE,
  33. SKILL_DREAMEATER,
  34. SKILL_DRILLPECK,
  35. SKILL_EARTHQUAKE,
  36. SKILL_EGGBOMB,
  37. SKILL_EMBER,
  38. SKILL_EXPLOSION,
  39. SKILL_FIREBLAST,
  40. SKILL_FIRESPIN,
  41. SKILL_FISSURE,
  42. SKILL_FLAMETHROWER,
  43. SKILL_FLASH,
  44. SKILL_FLY,
  45. SKILL_GLARE,
  46. SKILL_GROWTH,
  47. SKILL_GUILLOTINE,
  48. SKILL_GUST,
  49. SKILL_HARDER,
  50. SKILL_HAZE,
  51. SKILL_HORNATTACK,
  52. SKILL_HORNDRILL,
  53. SKILL_HYDROPUMP,
  54. SKILL_HYPERBEAM,
  55. SKILL_HYPNOSIS,
  56. SKILL_ICEBEAM,
  57. SKILL_KARATECHOP,
  58. SKILL_LEECHLIFE,
  59. SKILL_LEECHSEED,
  60. SKILL_LEER,
  61. SKILL_LIGHTSCREEN,
  62. SKILL_LOWKICK,
  63. SKILL_MEGADRAIN,
  64. SKILL_MEGAKICK,
  65. SKILL_MEGAPUNCH,
  66. SKILL_MIST,
  67. SKILL_NIGHTSHADE,
  68. SKILL_PAYDAY,
  69. SKILL_PECK,
  70. SKILL_PINMISSILE,
  71. SKILL_POISONGAS,
  72. SKILL_POISONPOWDER,
  73. SKILL_POISONSTING,
  74. SKILL_PSYBEAM,
  75. SKILL_PSYCHIC,
  76. SKILL_PSYWAVE,
  77. SKILL_QUICKATTACK,
  78. SKILL_RAGE,
  79. SKILL_RAZORLEAF,
  80. SKILL_RECOVER,
  81. SKILL_REFLECT,
  82. SKILL_REST,
  83. SKILL_ROAR,
  84. SKILL_ROCKSLIDE,
  85. SKILL_ROCKTRHOW,
  86. SKILL_SANDATTACK,
  87. SKILL_SCRATCH,
  88. SKILL_SCREECH,
  89. SKILL_SEISMICTOSS,
  90. SKILL_SELFDESTRUCT,
  91. SKILL_SING,
  92. SKILL_SKULLBASH,
  93. SKILL_SKYATTACK,
  94. SKILL_SLASH,
  95. SKILL_SLEEPPOWDER,
  96. SKILL_SMOG,
  97. SKILL_SMOKESCREEN,
  98. SKILL_SOLARBEAM,
  99. SKILL_SONICBOOM,
  100. SKILL_SPIKECANNON,
  101. SKILL_SPLASH,
  102. SKILL_SPORE,
  103. SKILL_STOMP,
  104. SKILL_STRENGTH,
  105. SKILL_STRINGSHOT,
  106. SKILL_STUNGSPORE,
  107. SKILL_SUBMISSION,
  108. SKILL_SUBSTITUTE,
  109. SKILL_SUPERSONIC,
  110. SKILL_SWIFT,
  111. SKILL_TACKLE,
  112. SKILL_TAILWHIP,
  113. SKILL_TAKE,
  114. SKILL_TELEPORT,
  115. SKILL_THRASH,
  116. SKILL_THUNDER,
  117. SKILL_THUNDERWAVE,
  118. SKILL_THUNDERBOLT,
  119. SKILL_THUNDERSHOCK,
  120. SKILL_TOXIC,
  121. SKILL_TRANSFORM,
  122. SKILL_TRIATTACK,
  123. SKILL_VICEGRIP,
  124. SKILL_VINEWHIP,
  125. SKILL_WATERFALL,
  126. SKILL_WRAP,
  127. SKILL_AEROBLAST,
  128. SKILL_ANCIENTPOWER,
  129. SKILL_AROMATHERAPY,
  130. SKILL_AVALANCHE,
  131. SKILL_BLAZEKICK,
  132. SKILL_BOUNCE,
  133. SKILL_CALMMIND,
  134. SKILL_CRUNCH,
  135. SKILL_ERUPTION,
  136. SKILL_EXTREMESPEED,
  137. SKILL_FAINTATTACK,
  138. SKILL_FIREPUNCH,
  139. SKILL_FLASHCANNON,
  140. SKILL_FORESIGHT,
  141. SKILL_FUTURESIGHT,
  142. SKILL_GIGADRAIN,
  143. SKILL_GUARDSWAP,
  144. SKILL_HEALBELL,
  145. SKILL_ASSIST,
  146. SKILL_HIDDENPOWER,
  147. SKILL_BLIZZARD,
  148. SKILL_INSOMNIA,
  149. SKILL_IRONDEFENSE,
  150. SKILL_LEAFSTORM,
  151. SKILL_LELIVATE,
  152. SKILL_LOVELYKISS,
  153. SKILL_LUSTERPURGE,
  154. SKILL_MAGMAARMOR,
  155. SKILL_MINIMIZE,
  156. SKILL_MIRRORCOAT,
  157. SKILL_OCTOZOOKA,
  158. SKILL_OVERHEAT,
  159. SKILL_POISONFANG,
  160. SKILL_PRESENT,
  161. SKILL_PROTECT,
  162. SKILL_PSYCHOBOOST,
  163. SKILL_RAINDANCE,
  164. SKILL_RAZORWIND,
  165. SKILL_REVERSAL,
  166. SKILL_SACREDFIRE,
  167. SKILL_SANDSTORM,
  168. SKILL_SCARYFACE,
  169. SKILL_SHADOWBALL,
  170. SKILL_SHEERCOLD,
  171. SKILL_SHOCKWAVE,
  172. SKILL_SILENT,
  173. SKILL_SPARK,
  174. SKILL_SPIDERWEB,
  175. SKILL_SOFTBOILED,
  176. SKILL_STEELWING,
  177. SKILL_STONEEDGE,
  178. SKILL_SUNNYDAY,
  179. SKILL_SYNTHESIS,
  180. SKILL_TELEKNESIS,
  181. SKILL_THIEF,
  182. SKILL_THUNDERPUNCH,
  183. SKILL_TRIPLEKICK,
  184. SKILL_WATERPULSE,
  185. SKILL_ZAPCANNON,
  186. SKILL_BLOCK,
  187. SKILL_BUGBITE,
  188. SKILL_DRAGONRUSH,
  189. SKILL_ELECTRABALL,
  190. SKILL_ENDEAVOR,
  191. SKILL_FOCUSENERGY,
  192. SKILL_HEALORDER,
  193. SKILL_ICEBALL,
  194. SKILL_MAGICALLEAF,
  195. SKILL_MIMIC,
  196. SKILL_NIGHTSLASH,
  197. SKILL_SUCKERPUNCH,
  198. SKILL_SWAGGER,
  199. SKILL_SWEETKISS,
  200. SKILL_THUNDERFANG,
  201. SKILL_WATERSPORT,
  202. SKILL_WHIRLWIND,
  203. SKILL_WINGATTACK,
  204. SKILL_MEDITATE,
  205. SKILL_EPICBOMB,
  206. SKILL_WEATHERBEAM,
  207. SKILL_ICYWIND,
  208. SKILL_HELPINGHAND,
  209. SKILL_SPITFIRE,
  210. SKILL_ICEPUNCH,
  211. SKILL_FLAMEWHEEL,
  212. SKILL_DARKPULSE,
  213. SKILL_MEMENTO,
  214. SKILL_VANISHER,
  215. SKILL_SHADOWSENSOR,
  216. SKILL_ELECTRICTHREADS,
  217. SKILL_HEALINGWAVE,
  218. SKILL_SHELLYCOAT,
  219. SKILL_OVERCOAT,
  220. SKILL_ORACLE,
  221. SKILL_POISONPOINT,
  222. SKILL_BLACKGODFLAMES,
  223. SKILL_LIMBER,
  224. SKILL_EVILROOT,
  225. SKILL_RAPIDRUN,
  226. SKILL_SERPENTEYES,
  227. SKILL_FIREMADNESS,
  228. SKILL_FIREPUNCHES,
  229. SKILL_HIDDENWEAPON,
  230. SKILL_HIDDENHOWL,
  231. SKILL_RUNAWAY,
  232. SKILL_FEROCIOUSHUNTER,
  233. SKILL_TRACKER,
  234. SKILL_PROTECTANT,
  235. SKILL_SAVIOR,
  236. SKILL_ASSASSIN,
  237. SKILL_ANGRYPECKER,
  238. SKILL_CALMSCENE,
  239. SKILL_MASSIVEEXPLOSION,
  240. SKILL_SPEEDYBOLT,
  241. SKILL_STEELER,
  242. SKILL_CRYSTALLIZE,
  243. SKILL_SANDFORCE,
  244. SKILL_SILENTSCREAMING,
  245. SKILL_FRAGRANCE,
  246. SKILL_IRONFIST,
  247. SKILL_STATUE,
  248. SKILL_CONCRETEMISSILE,
  249. SKILL_HELPER,
  250. SKILL_EARTHSHAKER,
  251. SKILL_POISONTOUCH,
  252. SKILL_INVISIBLETHREADS,
  253. SKILL_LEADSLICER,
  254. SKILL_DARKVENOM,
  255. SKILL_QUICKFEAT,
  256. SKILL_DIVERSION,
  257. SKILL_INFILTRATOR,
  258. SKILL_HEALINGLEAF,
  259. SKILL_RECKLESSNESS,
  260. SKILL_BLOCKER,
  261. SKILL_NIGHTVISION,
  262. SKILL_CLOSESIGHT,
  263. SKILL_HEAVYSLEEP,
  264. SKILL_ZENMODE,
  265. SKILL_SCREAMINGSTORM,
  266. SKILL_HIDDENROCK,
  267. SKILL_SHEDSKIN,
  268. SKILL_HOODLUM,
  269. SKILL_MIRRORTOUCH,
  270. SKILL_BODYEATER,
  271. SKILL_SOLIDROCK,
  272. SKILL_TRIBEAM,
  273. SKILL_TRASHGAS,
  274. SKILL_TOXICSPRAY,
  275. SKILL_EXTRAAMMO,
  276. SKILL_REVERSEDAMGE,
  277. SKILL_AMPLIFIER,
  278. SKILL_DARKMOON,
  279. SKILL_MAGICGUARD,
  280. SKILL_WATERPUMPER,
  281. SKILL_HYDRATION,
  282. SKILL_ICEBODY,
  283. SKILL_ICEWINDS,
  284. SKILL_SNOWSTORM,
  285. SKILL_SERENEGRACE,
  286. SKILL_IMITATION,
  287. SKILL_HOSTAGETAKER,
  288. SKILL_CURSEDBODY,
  289. SKILL_ELECTROWEB,
  290. SKILL_THORNYBARRIER,
  291. SKILL_PROJUMPER,
  292. SKILL_CLEARBODY,
  293. SKILL_DISKTHROWER,
  294. SKILL_DISKEXPLOSIVE,
  295. SKILL_UNKNOWNWORLD,
  296. SKILL_BRAINATTACKER,
  297. SKILL_FLAMELIGHTER,
  298. SKILL_SOULTAKER,
  299. SKILL_ADAMANTDRAGON,
  300. SKILL_ICECHILL,
  301. SKILL_ICECHAINS,
  302. SKILL_SHELLARMOR,
  303. SKILL_STEALTH,
  304. SKILL_EARTHLYLIGHTINING,
  305. SKILL_INNERFOCUS,
  306. SKILL_WHIPSLASH,
  307. SKILL_DRAGONLIGHT,
  308. SKILL_REGENERATION,
  309. SKILL_BLADEDHANDS,
  310. SKILL_PRESSURE,
  311. SKILL_HEADCHARGE,
  312. SKILL_HUSTLE,
  313. SKILL_ARMORRESPAWN,
  314. SKILL_WINDDRAGONROAR,
  315. SKILL_WHITESMOKE,
  316. SKILL_TRIPLETEAM,
  317. SKILL_EVILINTENT,
  318. SKILL_BLAZINGTOUCH,
  319. SKILL_DEADLYHORN,
  320. SKILL_SEAOFFLAMES,
  321. SKILL_MINDCONTROL,
  322. SKILL_DEADLYDREAM,
  323. SKILL_WATERSPRAYER,
  324. SKILL_GEYSERNEST,
  325. SKILL_SHININGLIGHT,
  326. SKILL_EMOTIONALPAIN,
  327. SKILL_FLIGHT,
  328. SKILL_ROCKYSKY,
  329. SKILL_HIGHDEFENSE,
  330. SKILL_METALBURST,
  331. SKILL_DECIEVING,
  332. SKILL_FALLENLIFE,
  333. SKILL_NIGHTDAZE,
  334. SKILL_PHANTONDAZE,
  335. SKILL_WATERGOD,
  336. SKILL_RELICSONG,
  337. SKILL_TECHNODRIVE,
  338. SKILL_DEVINEJUDGMENT,
  339. SKILL_DEVINEICE,
  340. SKILL_BLACKDEATH,
  341. SKILL_SHADOWSTALKER,
  342. SKILL_LIGHTNINGFURY,
  343. SKILL_VOLCANOGEYSER,
  344. SKILL_FLYINGJUDGMENT,
  345. SKILL_ACIDRAIN,
  346. SKILL_ANCIENT,
  347. SKILL_FIREEXPLOSION,
  348. SKILL_CALMINGWAVES,
  349. }
  350.  
  351. ///////////////////////////////////////
  352. // When someone presses +pokeskill //
  353. ///////////////////////////////////////
  354. public pokeskill_down(id)
  355. {
  356. g_StopSkill[id] = false;
  357. if( !PMon() ){
  358. poke_printlang(id,"POKEMOD_DISABLED")
  359. return PLUGIN_HANDLED
  360. }
  361. else if( PM_disabled == PM_XP ){
  362. poke_printlang(id,"POKEMOD_SKILLSDISABLED")
  363. return PLUGIN_HANDLED
  364. }
  365. else if( !ValidPoke( PlayersPoke[id][0] ) ){
  366. StartMenu(id)
  367. return PLUGIN_HANDLED
  368. }
  369.  
  370. if( g_isItemed[id] ){
  371. SetActionMenu( id, AC_GO );
  372. return PLUGIN_HANDLED;
  373. }
  374.  
  375. if( !Pokemod_Alive(id) ){
  376. new parm[2];
  377. parm[0] = id;
  378. parm[1] = 0;
  379. set_task(0.1, "PokeMenu", 0, parm, 2);
  380. return PLUGIN_HANDLED;
  381. }
  382.  
  383. new skill_num, command[32];
  384. read_argv(0,command,31);
  385. replace(command, 31, "+pokeskill", EMPTY);
  386. skill_num = str_to_num(command);
  387.  
  388. new poke_skills[MAX_SKILLS], skill_count, i;
  389. for( i = 0; i < MAX_SKILLS; i++ )
  390. poke_skills[i] = -1;
  391.  
  392. new pid = Pokemon[id], tempskill, tempcheck, bool:skill_found;
  393. for( i = -1; i<MAX_ACTIVE_POKES; i++ ){
  394. if( i != -1 ){
  395. pid = PlayersPoke[id][i];
  396.  
  397. //if weve already added the skill in, we don't need to add it again
  398. if( i == PlayersActive[id] )
  399. continue;
  400. }
  401. while( pid && skill_count < MAX_SKILLS ){
  402. if( !PokeDisabled(pid) && (tempskill = PokeSkill[pid]) != -1 ){
  403. if( (i==-1 || PokeInfo[pid] & PI_GLOBAL) && SkillInfo[tempskill] & SI_BIND ){
  404. skill_found = false;
  405. for( tempcheck=0; tempcheck < skill_count; tempcheck++ )
  406. if( poke_skills[tempcheck] == tempskill )
  407. skill_found = true;
  408. if( !skill_found ){
  409. poke_skills[skill_count] = tempskill;
  410. skill_count++;
  411. }
  412. }
  413. }
  414.  
  415. pid = AnyEvolveTo(pid);
  416. }
  417. }
  418.  
  419. if( skill_count > 1 && !skill_num ){
  420. if( !ValidSkill( ActiveSkill(id) ) ){
  421. SkillMenu(id);
  422. return PLUGIN_HANDLED;
  423. }
  424. else
  425. tempskill = ActiveSkill(id);
  426. }
  427. else if( skill_num )
  428. SetActiveSkill(id, (tempskill = poke_skills[skill_num-1]) );
  429. else
  430. SetActiveSkill(id, (tempskill = poke_skills[0]) );
  431.  
  432. //couldnt find any skill to use, lets just use their first skill
  433. if( !ValidSkill(tempskill) && !PokeDisabled( Pokemon[id] ) )
  434. SetActiveSkill(id, (tempskill = PokeSkill[Pokemon[id]]) );
  435.  
  436. //stop, they dont have a valid skill
  437. if( !ValidSkill(tempskill) ){
  438. poke_printlang(id,"POKEMOD_NOSKILL" );
  439. return PLUGIN_HANDLED;
  440. }
  441. //stop, they dont have a bind skill
  442. if( !(SkillInfo[tempskill] & SI_BIND) ){
  443. set_hudmessage(0, 255, 0, 0.6, 0.8, 0, 6.0, 1.1, 0.0, 0.0, -1)
  444. show_hudmessage(id, "%s cannot be manually activated.", SkillToName(tempskill))
  445. return PLUGIN_HANDLED;
  446. }
  447. //stop, we arent allowing the skill to be used
  448. if( DisAllowSkill( id, tempskill, true ) )
  449. return PLUGIN_HANDLED;
  450.  
  451. //check spam time. stop if they are spamming
  452. new Float:current_time = get_gametime();
  453. if(current_time-g_lastSkill[id] < SKILL_SPAM){
  454. set_hudmessage(0, 255, 0, 0.6, 0.8, 0, 6.0, 1.1, 0.0, 0.0, -1)
  455. show_hudmessage(id, "Stop trying to spam PokeMod skills.")
  456. return PLUGIN_HANDLED;
  457. }
  458. g_lastSkill[id] = current_time;
  459.  
  460. //send into skill handler
  461. bind_skill_handler(id+POKESKILL_TASK);
  462.  
  463. debugMessage(id,6,"Player", "keyed down with %s", SkillToName( ActiveSkill(id) ) );
  464.  
  465. return PLUGIN_HANDLED;
  466. }
  467.  
  468. ////////////////////////////////////////
  469. // When someone releases +pokeskill //
  470. ////////////////////////////////////////
  471. public pokeskill_up(id)
  472. {
  473. debugMessage(id,6,"Player", "keyed up with %s", SkillToName( ActiveSkill(id) ) );
  474.  
  475. skills_handler(id, SI_RELEASE);
  476.  
  477. if( ValidSkill( ActiveSkill(id) ) ){
  478. if( Action[id] == AC_SKILL )
  479. SkillMenu(id);
  480. }
  481.  
  482. g_StopSkill[id] = true;
  483.  
  484. #if SKILL_UNSPAM == 1
  485. g_lastSkill[id] = 0.0;
  486. #endif
  487.  
  488. return PLUGIN_HANDLED;
  489. }
  490.  
  491. public bind_skill_handler(id)
  492. {
  493. id -= POKESKILL_TASK;
  494.  
  495. if( ValidPlayer( id ) ){
  496. if( !Pokemod_Alive(id) || DisAllowSkill( id, ActiveSkill(id), true ) || g_StopSkill[id] ){
  497. g_StopSkill[id] = false;
  498. }
  499. else if( ValidSkill( ActiveSkill(id) ) ){
  500. CallSkill(id, ActiveSkill(id), SI_BIND);
  501. set_task(0.1,"bind_skill_handler", POKESKILL_TASK+id)
  502. }
  503. }
  504. }
  505. skills_handler(id, call_prop)
  506. {
  507. if( PlayerEventForward > -1 )
  508. {
  509. new functionReturn
  510. ExecuteForward(PlayerEventForward, functionReturn, id, call_prop)
  511. if( functionReturn==PLUGIN_HANDLED )
  512. return;
  513. }
  514.  
  515. new skill, subpoke, bool:auto_globals=false;
  516.  
  517. if( call_prop & SI_RESET || call_prop & SI_ROUNDRESET || call_prop & SI_CONNECT || call_prop & SI_DISCONNECT )
  518. auto_globals = true;
  519.  
  520. if( !PokeDisabled( Pokemon[id] ) ){
  521. skill = PokeSkill[Pokemon[id]];
  522. if( !DisAllowSkill(id, skill) && SkillInfo[ skill ] & call_prop )
  523. CallSkill(id, skill, call_prop)
  524. }
  525.  
  526. //if their active poke is evolved, deal with the skills it had
  527. subpoke = AnyEvolveTo(Pokemon[id])
  528. while(subpoke && subpoke!=Pokemon[id]){
  529. if( !PokeDisabled( subpoke ) ){
  530. skill = PokeSkill[subpoke];
  531. if( !DisAllowSkill(id, skill) && SkillInfo[skill] & call_prop )
  532. CallSkill(id, skill, call_prop)
  533. }
  534. subpoke = AnyEvolveTo(subpoke)
  535. }
  536.  
  537. //now on to the global pokes
  538. new m, pid_global;
  539. for(m=0; m<MAX_ACTIVE_POKES; m++){
  540.  
  541. pid_global = PlayersPoke[id][m]
  542. if( Pokemon[id] == pid_global )
  543. continue;
  544.  
  545. if( (auto_globals || PokeInfo[pid_global] & PI_GLOBAL) && !PokeDisabled(pid_global) ){
  546. skill = PokeSkill[pid_global];
  547. if( !DisAllowSkill(id, skill) && SkillInfo[skill] & call_prop )
  548. CallSkill(id, skill, call_prop)
  549. }
  550.  
  551. //sub globals now
  552. subpoke = AnyEvolveTo(pid_global)
  553. while(subpoke && subpoke!=pid_global){
  554. if( (auto_globals || PokeInfo[subpoke] & PI_GLOBAL) && !PokeDisabled(subpoke) ){
  555. skill = PokeSkill[subpoke];
  556. if( !DisAllowSkill(id, skill) && SkillInfo[skill] & call_prop )
  557. CallSkill(id, skill, call_prop)
  558. }
  559. subpoke = AnyEvolveTo(subpoke)
  560. }
  561. }
  562. }
  563. bool:PokeDisabled( pokemon )
  564. {
  565. if( PokeInfo[pokemon]&PI_DISABLE || SafariLevel(pokemon)==-1000 )
  566. return true;
  567. return false;
  568. }
  569. bool:DisAllowSkill(id, skill, bool:bind=false)
  570. {
  571. if( !ValidSkill( skill ) || !Pokemod_Connected(id) )
  572. return true;
  573. if( PM_disabled == PM_XP ){
  574. if(bind) poke_printlang(id,"POKEMOD_SKILLSDISABLED");
  575. return true;
  576. }
  577.  
  578. else if( SkillInfo[skill] & SI_DISABLE ){
  579. if(bind) poke_printlang(id,"POKEMOD_SKILLDIS");
  580. return true;
  581. }
  582. else if( SkillInfo[skill] & SI_CALL )
  583. return false;
  584. else if( !(SkillInfo[skill] & SI_IGNORE) && BindTime(id) ){
  585. if(bind) sound_deny(id);
  586. return true;
  587. }
  588. else if( g_Status[id][STATUS_ASLEEP] ){
  589. if(bind) poke_printlang(id,"POKEMOD_SKILLASLEEP");
  590. return true;
  591. }
  592. else if( !(SkillInfo[skill] & SI_DEAD) && !Pokemod_Alive(id) ){
  593. if(bind) poke_printlang(id,"POKEMOD_SKILLDEAD");
  594. return true;
  595. }
  596. else if( SkillInfo[skill] & SI_ADMIN && !is_user_admin(id) ){
  597. if(bind) poke_printlang(id,"POKEMOD_SKILLADMIN");
  598. return true;
  599. }
  600. else if( FreezeTime ){
  601. if(bind) poke_printlang(id,"POKEMOD_SKILLFREEZE");
  602. return true;
  603. }
  604. #if MOD==CS
  605. else if( cs_get_user_vip(id) ){
  606. if(bind) poke_printlang(id,"POKEMOD_SKILLVIP");
  607. return true;
  608. }
  609. #endif
  610. #if MOD==NS
  611. else if( ns_get_class(id) == CLASS_COMMANDER ){
  612. if(bind) poke_printlang(id,"POKEMOD_SKILLCOM");
  613. return true;
  614. }
  615. #endif
  616. return false;
  617. }
  618.  
  619. stock RemoveDelayCallSkill(id, skill)
  620. remove_task( SKILLCALL_TASK + (skill * MAX_PLAYERS) + id );
  621.  
  622. stock DelayedCallSkill(Float:time, id, skill, prop)
  623. {
  624. new parm[ 3 ];
  625. parm[ 0 ] = id;
  626. parm[ 1 ] = _:skill;
  627. parm[ 2 ] = prop;
  628. set_task(time, "task_CallSkill", SKILLCALL_TASK + (skill* MAX_PLAYERS) + id, parm, 3);
  629. }
  630. public task_CallSkill( parm[] )
  631. CallSkill( parm[0], parm[1], parm[2] );
  632.  
  633. CallSkill(id, POKESKILL:skill, prop)
  634. {
  635. if( ValidPlayer(id) && ValidSkill(skill) ){
  636.  
  637. new SKILL:iSkillReturn;
  638.  
  639. switch( skill )
  640. {
  641. case SKILL_ABSORB: iSkillReturn = Absorb( id, skill, prop );
  642. case SKILL_ACID: iSkillReturn = Acid ( id, skill, prop );
  643. case SKILL_ACIDARMOR: iSkillReturn = Acid_Armor( id, skill, prop );
  644. case SKILL_AGILITY: iSkillReturn = Agility( id, skill, prop );
  645. case SKILL_AMNESIA: iSkillReturn = Amnesia( id, skill, prop );
  646. case SKILL_AURORABEAM: iSkillReturn = Aurora_Beam( id, skill, prop );
  647. case SKILL_BARRAGE: iSkillReturn = Barrage( id, skill, prop );
  648. case SKILL_BIDE: iSkillReturn = Bide( id, skill, prop );
  649. case SKILL_BITE: iSkillReturn = Bite( id, skill, prop );
  650. case SKILL_POWDEREDSNOW: iSkillReturn = Powdered_Snow( id, skill, prop );
  651. case SKILL_BODYSLAM: iSkillReturn = Body_Slam( id, skill, prop );
  652. case SKILL_BONECLUB: iSkillReturn = Bone_Club( id, skill, prop );
  653. case SKILL_BONEMERANG: iSkillReturn = Bonemerang( id, skill, prop );
  654. case SKILL_BUBBLEBEAM: iSkillReturn = Bubble_Beam( id, skill, prop );
  655. case SKILL_CONFUSERAY: iSkillReturn = Confuse_Ray( id, skill, prop );
  656. case SKILL_CONFUSION: iSkillReturn = Confusion( id, skill, prop );
  657. case SKILL_CONSTRICT: iSkillReturn = Constrict( id, skill, prop );
  658. case SKILL_CONVERSION: iSkillReturn = Conversion( id, skill, prop );
  659. case SKILL_COUNTER: iSkillReturn = Counter( id, skill, prop );
  660. case SKILL_DEFENSECURL: iSkillReturn = Defense_Curl( id, skill, prop );
  661. case SKILL_DIG: iSkillReturn = Dig( id, skill, prop );
  662. case SKILL_DISABLE: iSkillReturn = Disable( id, skill, prop );
  663. case SKILL_DIZZYPUNCH: iSkillReturn = Dizzy_Punch( id, skill, prop );
  664. case SKILL_DOUBLEEDGE: iSkillReturn = Double_Edge( id, skill, prop );
  665. case SKILL_DOUBLEKICK: iSkillReturn = Double_Kick( id, skill, prop );
  666. case SKILL_DOUBLESLAP: iSkillReturn = Double_Slap( id, skill, prop );
  667. case SKILL_DOUBLETEAM: iSkillReturn = Double_Team( id, skill, prop );
  668. case SKILL_DRAGONRAGE: iSkillReturn = Dragon_Rage( id, skill, prop );
  669. case SKILL_DREAMEATER: iSkillReturn = Dream_Eater( id, skill, prop );
  670. case SKILL_DRILLPECK: iSkillReturn = Drill_Peck( id, skill, prop );
  671. case SKILL_EARTHQUAKE: iSkillReturn = Earthquake( id, skill, prop );
  672. case SKILL_EGGBOMB: iSkillReturn = Egg_Bomb( id, skill, prop );
  673. case SKILL_EMBER: iSkillReturn = Ember( id, skill, prop );
  674. case SKILL_EXPLOSION: iSkillReturn = Explosion( id, skill, prop );
  675. case SKILL_FIREBLAST: iSkillReturn = Fire_Blast( id, skill, prop );
  676. case SKILL_FIRESPIN: iSkillReturn = Fire_Spin( id, skill, prop );
  677. case SKILL_FISSURE: iSkillReturn = Fissure( id, skill, prop );
  678. case SKILL_FLAMETHROWER: iSkillReturn = Flamethrower( id, skill, prop );
  679. case SKILL_FLASH: iSkillReturn = Flash( id, skill, prop );
  680. case SKILL_FLY: iSkillReturn = Fly( id, skill, prop );
  681. case SKILL_GLARE: iSkillReturn = Glare( id, skill, prop );
  682. case SKILL_GROWTH: iSkillReturn = Growth( id, skill, prop );
  683. case SKILL_GUILLOTINE: iSkillReturn = Guillotine( id, skill, prop );
  684. case SKILL_GUST: iSkillReturn = Gust( id, skill, prop );
  685. case SKILL_HARDER: iSkillReturn = Harden( id, skill, prop );
  686. case SKILL_HAZE: iSkillReturn = Haze( id, skill, prop );
  687. case SKILL_HORNATTACK: iSkillReturn = Horn_Attack( id, skill, prop );
  688. case SKILL_HORNDRILL: iSkillReturn = Horn_Drill( id, skill, prop );
  689. case SKILL_HYDROPUMP: iSkillReturn = Hydro_Pump( id, skill, prop );
  690. case SKILL_HYPERBEAM: iSkillReturn = Hyper_Beam( id, skill, prop );
  691. case SKILL_HYPNOSIS: iSkillReturn = Hypnosis( id, skill, prop );
  692. case SKILL_ICEBEAM: iSkillReturn = Ice_Beam( id, skill, prop );
  693. case SKILL_KARATECHOP: iSkillReturn = Karate_Chop( id, skill, prop );
  694. case SKILL_LEECHLIFE: iSkillReturn = Leech_Life( id, skill, prop );
  695. case SKILL_LEECHSEED: iSkillReturn = Leech_Seed( id, skill, prop );
  696. case SKILL_LEER: iSkillReturn = Leer( id, skill, prop );
  697. case SKILL_LIGHTSCREEN: iSkillReturn = Light_Screen( id, skill, prop );
  698. case SKILL_LOWKICK: iSkillReturn = Low_Kick( id, skill, prop );
  699. case SKILL_MEGADRAIN: iSkillReturn = Low_Kick( id, skill, prop );
  700. case SKILL_MEGAKICK: iSkillReturn = Mega_Kick( id, skill, prop );
  701. case SKILL_MEGAPUNCH: iSkillReturn = Mega_Punch( id, skill, prop );
  702. case SKILL_MIST: iSkillReturn = Mist( id, skill, prop );
  703. case SKILL_NIGHTSHADE: iSkillReturn = Night_Shade( id, skill, prop );
  704. case SKILL_PAYDAY: iSkillReturn = Pay_Day( id, skill, prop );
  705. case SKILL_PECK: iSkillReturn = Peck( id, skill, prop );
  706. case SKILL_PINMISSILE: iSkillReturn = Pin_Missile( id, skill, prop );
  707. case SKILL_POISONGAS: iSkillReturn = Poison_Gas( id, skill, prop );
  708. case SKILL_POISONPOWDER: iSkillReturn = Poison_Powder( id, skill, prop );
  709. case SKILL_POISONSTING: iSkillReturn = Poison_Sting( id, skill, prop );
  710. case SKILL_PSYBEAM: iSkillReturn = Psybeam( id, skill, prop );
  711. case SKILL_PSYCHIC: iSkillReturn = Psychic( id, skill, prop );
  712. case SKILL_PSYWAVE: iSkillReturn = Psywave( id, skill, prop );
  713. case SKILL_QUICKATTACK: iSkillReturn = Quick_Attack( id, skill, prop );
  714. case SKILL_RAGE: iSkillReturn = Rage( id, skill, prop );
  715. case SKILL_RAZORLEAF: iSkillReturn = Razor_Leaf( id, skill, prop );
  716. case SKILL_RECOVER: iSkillReturn = Recover( id, skill, prop );
  717. case SKILL_REFLECT: iSkillReturn = Reflect( id, skill, prop );
  718. case SKILL_REST: iSkillReturn = Rest( id, skill, prop );
  719. case SKILL_ROAR: iSkillReturn = Roar( id, skill, prop );
  720. case SKILL_ROCKSLIDE: iSkillReturn = Rock_Slide( id, skill, prop );
  721. case SKILL_ROCKTRHOW: iSkillReturn = Rock_Throw( id, skill, prop );
  722. case SKILL_SANDATTACK: iSkillReturn = Sand_Attack( id, skill, prop );
  723. case SKILL_SCRATCH: iSkillReturn = Scratch( id, skill, prop );
  724. case SKILL_SCREECH: iSkillReturn = Screech( id, skill, prop );
  725. case SKILL_SEISMICTOSS: iSkillReturn = Seismic_Toss( id, skill, prop );
  726. case SKILL_SELFDESTRUCT: iSkillReturn = Self_Destruct( id, skill, prop );
  727. case SKILL_SING: iSkillReturn = Sing( id, skill, prop );
  728. case SKILL_SKULLBASH: iSkillReturn = Skullbash( id, skill, prop );
  729. case SKILL_SKYATTACK: iSkillReturn = Sky_Attack( id, skill, prop );
  730. case SKILL_SLASH: iSkillReturn = Slash( id, skill, prop );
  731. case SKILL_SLEEPPOWDER: iSkillReturn = Sleep_Powder( id, skill, prop );
  732. case SKILL_SMOG: iSkillReturn = Smog( id, skill, prop );
  733. case SKILL_SMOKESCREEN: iSkillReturn = Smokescreen( id, skill, prop );
  734. case SKILL_SOLARBEAM: iSkillReturn = Solar_Beam( id, skill, prop );
  735. case SKILL_SONICBOOM: iSkillReturn = Sonic_Boom( id, skill, prop );
  736. case SKILL_SPIKECANNON: iSkillReturn = Spike_Cannon( id, skill, prop );
  737. case SKILL_SPLASH: iSkillReturn = Splash( id, skill, prop );
  738. case SKILL_SPORE: iSkillReturn = Spore( id, skill, prop );
  739. case SKILL_STOMP: iSkillReturn = Stomp( id, skill, prop );
  740. case SKILL_STRENGTH: iSkillReturn = Strength( id, skill, prop );
  741. case SKILL_STRINGSHOT: iSkillReturn = String_Shot( id, skill, prop );
  742. case SKILL_STUNGSPORE: iSkillReturn = Stun_Spore( id, skill, prop );
  743. case SKILL_SUBMISSION: iSkillReturn = Submission( id, skill, prop );
  744. case SKILL_SUBSTITUTE: iSkillReturn = Substitute( id, skill, prop );
  745. case SKILL_SUPERSONIC: iSkillReturn = Supersonic( id, skill, prop );
  746. case SKILL_SWIFT: iSkillReturn = Swift( id, skill, prop );
  747. case SKILL_TACKLE: iSkillReturn = Tackle( id, skill, prop );
  748. case SKILL_TAILWHIP: iSkillReturn = Tail_Whip( id, skill, prop );
  749. case SKILL_TAKE: iSkillReturn = Take_Down( id, skill, prop );
  750. case SKILL_TELEPORT: iSkillReturn = Teleport( id, skill, prop );
  751. case SKILL_THRASH: iSkillReturn = Thrash( id, skill, prop );
  752. case SKILL_THUNDER: iSkillReturn = Thunder( id, skill, prop );
  753. case SKILL_THUNDERWAVE: iSkillReturn = Thunder_Wave( id, skill, prop );
  754. case SKILL_THUNDERBOLT: iSkillReturn = Thunderbolt( id, skill, prop );
  755. case SKILL_THUNDERSHOCK: iSkillReturn = Thundershock( id, skill, prop );
  756. case SKILL_TOXIC: iSkillReturn = Toxic( id, skill, prop );
  757. case SKILL_TRANSFORM: iSkillReturn = Transform( id, skill, prop );
  758. case SKILL_TRIATTACK: iSkillReturn = Tri_Attack( id, skill, prop );
  759. case SKILL_VICEGRIP: iSkillReturn = Vice_Grip( id, skill, prop );
  760. case SKILL_VINEWHIP: iSkillReturn = Vine_Whip( id, skill, prop );
  761. case SKILL_WATERFALL: iSkillReturn = Waterfall( id, skill, prop );
  762. case SKILL_WRAP: iSkillReturn = Wrap( id, skill, prop );
  763. case SKILL_AEROBLAST: iSkillReturn = Aeroblast( id, skill, prop );
  764. case SKILL_ANCIENTPOWER: iSkillReturn = Ancient_Power( id, skill, prop );
  765. case SKILL_AROMATHERAPY: iSkillReturn = Aromatherapy( id, skill, prop );
  766. case SKILL_AVALANCHE: iSkillReturn = Avalanche( id, skill, prop );
  767. case SKILL_BLAZEKICK: iSkillReturn = Blaze_Kick( id, skill, prop );
  768. case SKILL_BOUNCE: iSkillReturn = Bounce( id, skill, prop );
  769. case SKILL_CALMMIND: iSkillReturn = Calm_Mind( id, skill, prop );
  770. case SKILL_CRUNCH: iSkillReturn = Crunch( id, skill, prop );
  771. case SKILL_ERUPTION: iSkillReturn = Eruption( id, skill, prop );
  772. case SKILL_EXTREMESPEED: iSkillReturn = Extreme_Speed( id, skill, prop );
  773. case SKILL_FAINTATTACK: iSkillReturn = Faint_Attack( id, skill, prop );
  774. case SKILL_FIREPUNCH: iSkillReturn = Fire_Punch( id, skill, prop );
  775. case SKILL_FLASHCANNON: iSkillReturn = Flash_Cannon( id, skill, prop );
  776. case SKILL_FORESIGHT: iSkillReturn = Foresight( id, skill, prop );
  777. case SKILL_FUTURESIGHT: iSkillReturn = Future_Sight( id, skill, prop );
  778. case SKILL_GIGADRAIN: iSkillReturn = Giga_Drain( id, skill, prop );
  779. case SKILL_GUARDSWAP: iSkillReturn = Guard_Swap( id, skill, prop );
  780. case SKILL_HEALBELL: iSkillReturn = Heal_Bell( id, skill, prop );
  781. case SKILL_ASSIST: iSkillReturn = Assist( id, skill, prop );
  782. case SKILL_HIDDENPOWER: iSkillReturn = Hidden_Power( id, skill, prop );
  783. case SKILL_BLIZZARD: iSkillReturn = Blizzard( id, skill, prop );
  784. case SKILL_INSOMNIA: iSkillReturn = Insomnia( id, skill, prop );
  785. case SKILL_IRONDEFENSE: iSkillReturn = Iron_Defense( id, skill, prop );
  786. case SKILL_LEAFSTORM: iSkillReturn = Leaf_Storm( id, skill, prop );
  787. case SKILL_LELIVATE: iSkillReturn = Levitate( id, skill, prop );
  788. case SKILL_LOVELYKISS: iSkillReturn = Lovely_Kiss( id, skill, prop );
  789. case SKILL_LUSTERPURGE: iSkillReturn = Luster_Purge( id, skill, prop );
  790. case SKILL_MAGMAARMOR: iSkillReturn = Magma_Armor( id, skill, prop );
  791. case SKILL_MINIMIZE: iSkillReturn = Minimize( id, skill, prop );
  792. case SKILL_MIRRORCOAT: iSkillReturn = Mirror_Coat( id, skill, prop );
  793. case SKILL_OCTOZOOKA: iSkillReturn = Octozooka( id, skill, prop );
  794. case SKILL_OVERHEAT: iSkillReturn = Overheat( id, skill, prop );
  795. case SKILL_POISONFANG: iSkillReturn = Poison_Fang( id, skill, prop );
  796. case SKILL_PRESENT: iSkillReturn = Present( id, skill, prop );
  797. case SKILL_PROTECT: iSkillReturn = Protect( id, skill, prop );
  798. case SKILL_PSYCHOBOOST: iSkillReturn = Psycho_Boost( id, skill, prop );
  799. case SKILL_RAINDANCE: iSkillReturn = Rain_Dance( id, skill, prop );
  800. case SKILL_RAZORWIND: iSkillReturn = Razor_Wind( id, skill, prop );
  801. case SKILL_REVERSAL: iSkillReturn = Reversal( id, skill, prop );
  802. case SKILL_SACREDFIRE: iSkillReturn = Sacred_Fire( id, skill, prop );
  803. case SKILL_SANDSTORM: iSkillReturn = Sandstorm( id, skill, prop );
  804. case SKILL_SCARYFACE: iSkillReturn = Scary_Face( id, skill, prop );
  805. case SKILL_SHADOWBALL: iSkillReturn = Shadow_Ball( id, skill, prop );
  806. case SKILL_SHEERCOLD: iSkillReturn = Sheer_Cold( id, skill, prop );
  807. case SKILL_SHOCKWAVE: iSkillReturn = Shock_Wave( id, skill, prop );
  808. case SKILL_SILENT: iSkillReturn = Silent( id, skill, prop );
  809. case SKILL_SPARK: iSkillReturn = Spark( id, skill, prop );
  810. case SKILL_SPIDERWEB: iSkillReturn = Spider_Web( id, skill, prop );
  811. case SKILL_SOFTBOILED: iSkillReturn = Softboiled( id, skill, prop );
  812. case SKILL_STEELWING: iSkillReturn = Steel_Wing( id, skill, prop );
  813. case SKILL_STONEEDGE: iSkillReturn = Stone_Edge( id, skill, prop );
  814. case SKILL_SUNNYDAY: iSkillReturn = Sunny_Day( id, skill, prop );
  815. case SKILL_SYNTHESIS: iSkillReturn = Synthesis( id, skill, prop );
  816. case SKILL_TELEKNESIS: iSkillReturn = Telekenesis( id, skill, prop );
  817. case SKILL_THIEF: iSkillReturn = Thief( id, skill, prop );
  818. case SKILL_THUNDERPUNCH: iSkillReturn = Thunder_Punch( id, skill, prop );
  819. case SKILL_TRIPLEKICK: iSkillReturn = Triple_Kick( id, skill, prop );
  820. case SKILL_WATERPULSE: iSkillReturn = Water_Pulse( id, skill, prop );
  821. case SKILL_ZAPCANNON: iSkillReturn = Zap_Cannon( id, skill, prop );
  822. case SKILL_BLOCK: iSkillReturn = Block( id, skill, prop );
  823. case SKILL_BUGBITE: iSkillReturn = Bug_Bite( id, skill, prop );
  824. case SKILL_DRAGONRUSH: iSkillReturn = Dragon_Rush( id, skill, prop );
  825. case SKILL_ELECTRABALL: iSkillReturn = Electra_Ball( id, skill, prop );
  826. case SKILL_ENDEAVOR: iSkillReturn = Endeavor( id, skill, prop );
  827. case SKILL_FOCUSENERGY: iSkillReturn = Focus_Energy( id, skill, prop );
  828. case SKILL_HEALORDER: iSkillReturn = Heal_Order( id, skill, prop );
  829. case SKILL_ICEBALL: iSkillReturn = Ice_Ball( id, skill, prop );
  830. case SKILL_MAGICALLEAF: iSkillReturn = Magical_Leaf( id, skill, prop );
  831. case SKILL_MIMIC: iSkillReturn = Mimic( id, skill, prop );
  832. case SKILL_NIGHTSLASH: iSkillReturn = Night_Slash( id, skill, prop );
  833. case SKILL_SUCKERPUNCH: iSkillReturn = Sucker_Punch( id, skill, prop );
  834. case SKILL_SWAGGER: iSkillReturn = Swagger( id, skill, prop );
  835. case SKILL_SWEETKISS: iSkillReturn = Sweet_Kiss( id, skill, prop );
  836. case SKILL_THUNDERFANG: iSkillReturn = Thunder_Fang( id, skill, prop );
  837. case SKILL_WATERSPORT: iSkillReturn = Water_Sport( id, skill, prop );
  838. case SKILL_WHIRLWIND: iSkillReturn = Whirl_Pool( id, skill, prop );
  839. case SKILL_WINGATTACK: iSkillReturn = Wing_Attack( id, skill, prop );
  840. case SKILL_MEDITATE: iSkillReturn = Meditate( id, skill, prop );
  841. case SKILL_EPICBOMB: iSkillReturn = Epic_Bomb( id, skill, prop );
  842. case SKILL_WEATHERBEAM: iSkillReturn = Weather_Beam( id, skill, prop );
  843. case SKILL_ICYWIND: iSkillReturn = Icy_Wind( id, skill, prop );
  844. case SKILL_HELPINGHAND: iSkillReturn = Helping_Hand( id, skill, prop );
  845. case SKILL_SPITFIRE: iSkillReturn = Spit_Fire( id, skill, prop );
  846. case SKILL_ICEPUNCH: iSkillReturn = Ice_Punch( id, skill, prop );
  847. case SKILL_FLAMEWHEEL: iSkillReturn = Flame_Wheel( id, skill, prop );
  848. case SKILL_DARKPULSE: iSkillReturn = Dark_Pulse( id, skill, prop );
  849. case SKILL_MEMENTO: iSkillReturn = Memento( id, skill, prop );
  850. case SKILL_VANISHER: iSkillReturn = Vanisher( id, skill, prop );
  851. case SKILL_SHADOWSENSOR: iSkillReturn = Shadow_Sensor( id, skill, prop );
  852. case SKILL_ELECTRICTHREADS: iSkillReturn = Electric_Threads( id, skill, prop );
  853. case SKILL_HEALINGWAVE: iSkillReturn = Healing_Wave( id, skill, prop );
  854. case SKILL_SHELLYCOAT: iSkillReturn = Shelly_Coat( id, skill, prop );
  855. case SKILL_OVERCOAT: iSkillReturn = Overcoat( id, skill, prop );
  856. case SKILL_ORACLE: iSkillReturn = Oracle( id, skill, prop );
  857. case SKILL_POISONPOINT: iSkillReturn = Poison_Point( id, skill, prop );
  858. case SKILL_BLACKGODFLAMES: iSkillReturn = Black_God_Flames( id, skill, prop );
  859. case SKILL_LIMBER: iSkillReturn = Limber( id, skill, prop );
  860. case SKILL_EVILROOT: iSkillReturn = Evil_Root( id, skill, prop );
  861. case SKILL_RAPIDRUN: iSkillReturn = Rapid_Run( id, skill, prop );
  862. case SKILL_SERPENTEYES: iSkillReturn = Serpent_Eyes( id, skill, prop );
  863. case SKILL_FIREMADNESS: iSkillReturn = Fire_Madness( id, skill, prop );
  864. case SKILL_FIREPUNCHES: iSkillReturn = Fire_Punches( id, skill, prop );
  865. case SKILL_HIDDENWEAPON: iSkillReturn = Hidden_Weapon( id, skill, prop );
  866. case SKILL_HIDDENHOWL: iSkillReturn = Hidden_Howl( id, skill, prop );
  867. case SKILL_RUNAWAY: iSkillReturn = Runaway( id, skill, prop );
  868. case SKILL_FEROCIOUSHUNTER: iSkillReturn = Ferocious_Hunter( id, skill, prop );
  869. case SKILL_TRACKER: iSkillReturn = Tracker( id, skill, prop );
  870. case SKILL_PROTECTANT: iSkillReturn = Protectant( id, skill, prop );
  871. case SKILL_SAVIOR: iSkillReturn = Savior( id, skill, prop );
  872. case SKILL_ASSASSIN: iSkillReturn = Assassin( id, skill, prop );
  873. case SKILL_ANGRYPECKER: iSkillReturn = Angry_Pecker( id, skill, prop );
  874. case SKILL_CALMSCENE: iSkillReturn = Calm_Scene( id, skill, prop );
  875. case SKILL_MASSIVEEXPLOSION: iSkillReturn = Massive_Explosion( id, skill, prop );
  876. case SKILL_SPEEDYBOLT: iSkillReturn = Speedy_Bolts( id, skill, prop );
  877. case SKILL_STEELER: iSkillReturn = Steeler( id, skill, prop );
  878. case SKILL_CRYSTALLIZE: iSkillReturn = Crystallize( id, skill, prop );
  879. case SKILL_SANDFORCE: iSkillReturn = Sand_Force( id, skill, prop );
  880. case SKILL_SILENTSCREAMING: iSkillReturn = Silent_Screaming( id, skill, prop );
  881. case SKILL_FRAGRANCE: iSkillReturn = Fragrance( id, skill, prop );
  882. case SKILL_IRONFIST: iSkillReturn = Iron_Fist( id, skill, prop );
  883. case SKILL_STATUE: iSkillReturn = Statue( id, skill, prop );
  884. case SKILL_CONCRETEMISSILE: iSkillReturn = Concrete_Missile( id, skill, prop );
  885. case SKILL_HELPER: iSkillReturn = Helper( id, skill, prop );
  886. case SKILL_EARTHSHAKER: iSkillReturn = Earth_Shaker( id, skill, prop );
  887. case SKILL_POISONTOUCH: iSkillReturn = Poison_Touch( id, skill, prop );
  888. case SKILL_INVISIBLETHREADS: iSkillReturn = Invisible_Threads( id, skill, prop );
  889. case SKILL_LEADSLICER: iSkillReturn = Leaf_Slicer( id, skill, prop );
  890. case SKILL_DARKVENOM: iSkillReturn = Dark_Venom( id, skill, prop );
  891. case SKILL_QUICKFEAT: iSkillReturn = Quick_Feat( id, skill, prop );
  892. case SKILL_DIVERSION: iSkillReturn = Diversion( id, skill, prop );
  893. case SKILL_INFILTRATOR: iSkillReturn = Infiltrator( id, skill, prop );
  894. case SKILL_HEALINGLEAF: iSkillReturn = Healing_Leaf( id, skill, prop );
  895. case SKILL_RECKLESSNESS: iSkillReturn = Recklessness( id, skill, prop );
  896. case SKILL_BLOCKER: iSkillReturn = Blocker( id, skill, prop );
  897. case SKILL_NIGHTVISION: iSkillReturn = Night_Vision( id, skill, prop );
  898. case SKILL_CLOSESIGHT: iSkillReturn = Close_Sight( id, skill, prop );
  899. case SKILL_HEAVYSLEEP: iSkillReturn = Heavy_Sleep( id, skill, prop );
  900. case SKILL_ZENMODE: iSkillReturn = Zen_Mode( id, skill, prop );
  901. case SKILL_SCREAMINGSTORM: iSkillReturn = Screaming_Storm( id, skill, prop );
  902. case SKILL_HIDDENROCK: iSkillReturn = Hidden_Rock( id, skill, prop );
  903. case SKILL_SHEDSKIN: iSkillReturn = Shed_Skin( id, skill, prop );
  904. case SKILL_HOODLUM: iSkillReturn = Hoodlum( id, skill, prop );
  905. case SKILL_MIRRORTOUCH: iSkillReturn = Mirror_Touch( id, skill, prop );
  906. case SKILL_BODYEATER: iSkillReturn = Body_Eater( id, skill, prop );
  907. case SKILL_SOLIDROCK: iSkillReturn = Solid_Rock( id, skill, prop );
  908. case SKILL_TRIBEAM: iSkillReturn = Tri_Beam( id, skill, prop );
  909. case SKILL_TRASHGAS: iSkillReturn = Trash_Gas( id, skill, prop );
  910. case SKILL_TOXICSPRAY: iSkillReturn = Toxic_Spray( id, skill, prop );
  911. case SKILL_EXTRAAMMO: iSkillReturn = Extra_Ammo( id, skill, prop );
  912. case SKILL_REVERSEDAMGE: iSkillReturn = Reverse_Damge( id, skill, prop );
  913. case SKILL_AMPLIFIER: iSkillReturn = Amplifier( id, skill, prop );
  914. case SKILL_DARKMOON: iSkillReturn = Dark_Moon( id, skill, prop );
  915. case SKILL_MAGICGUARD: iSkillReturn = Magic_Guard( id, skill, prop );
  916. case SKILL_WATERPUMPER: iSkillReturn = Water_Pumper( id, skill, prop );
  917. case SKILL_HYDRATION: iSkillReturn = Hydration( id, skill, prop );
  918. case SKILL_ICEBODY: iSkillReturn = Ice_Body ( id, skill, prop );
  919. case SKILL_ICEWINDS: iSkillReturn = Icy_Winds( id, skill, prop );
  920. case SKILL_SNOWSTORM: iSkillReturn = Snow_Storm( id, skill, prop );
  921. case SKILL_SERENEGRACE: iSkillReturn = Serene_Grace( id, skill, prop );
  922. case SKILL_IMITATION: iSkillReturn = Imitation( id, skill, prop );
  923. case SKILL_HOSTAGETAKER: iSkillReturn = Hostage_Taker( id, skill, prop );
  924. case SKILL_CURSEDBODY: iSkillReturn = Cursed_Body ( id, skill, prop );
  925. case SKILL_ELECTROWEB: iSkillReturn = Electroweb( id, skill, prop );
  926. case SKILL_THORNYBARRIER: iSkillReturn = Thorny_Barrier( id, skill, prop );
  927. case SKILL_PROJUMPER: iSkillReturn = Pro_Jumper( id, skill, prop );
  928. case SKILL_CLEARBODY: iSkillReturn = Clear_Body( id, skill, prop );
  929. case SKILL_DISKTHROWER: iSkillReturn = Disk_Thrower( id, skill, prop );
  930. case SKILL_DISKEXPLOSIVE: iSkillReturn = Disk_Explosive( id, skill, prop );
  931. case SKILL_UNKNOWNWORLD: iSkillReturn = Unknown_World( id, skill, prop );
  932. case SKILL_BRAINATTACKER: iSkillReturn = Brain_Attacker( id, skill, prop );
  933. case SKILL_FLAMELIGHTER: iSkillReturn = Flame_Lighter( id, skill, prop );
  934. case SKILL_SOULTAKER: iSkillReturn = Soul_Taker( id, skill, prop );
  935. case SKILL_ADAMANTDRAGON: iSkillReturn = Adamant_Dragon( id, skill, prop );
  936. case SKILL_ICECHILL: iSkillReturn = Ice_Chill( id, skill, prop );
  937. case SKILL_ICECHAINS: iSkillReturn = Ice_Chains( id, skill, prop );
  938. case SKILL_SHELLARMOR: iSkillReturn = Shell_Armor( id, skill, prop );
  939. case SKILL_STEALTH: iSkillReturn = Stealth( id, skill, prop );
  940. case SKILL_EARTHLYLIGHTINING: iSkillReturn = Earthly_Lighting( id, skill, prop );
  941. case SKILL_INNERFOCUS: iSkillReturn = Inner_Focus( id, skill, prop );
  942. case SKILL_WHIPSLASH: iSkillReturn = Whip_Slash( id, skill, prop );
  943. case SKILL_DRAGONLIGHT: iSkillReturn = Dragon_Light( id, skill, prop );
  944. case SKILL_REGENERATION: iSkillReturn = Regeneration( id, skill, prop );
  945. case SKILL_BLADEDHANDS: iSkillReturn = Bladed_Hands( id, skill, prop );
  946. case SKILL_PRESSURE: iSkillReturn = Pressure( id, skill, prop );
  947. case SKILL_HEADCHARGE: iSkillReturn = Head_Charge( id, skill, prop );
  948. case SKILL_HUSTLE: iSkillReturn = Hustle( id, skill, prop );
  949. case SKILL_ARMORRESPAWN: iSkillReturn = Armor_Respawn( id, skill, prop );
  950. case SKILL_WINDDRAGONROAR: iSkillReturn = Wind_Dragon_Roar( id, skill, prop );
  951. case SKILL_WHITESMOKE: iSkillReturn = White_Smoke( id, skill, prop );
  952. case SKILL_TRIPLETEAM: iSkillReturn = Triple_Team( id, skill, prop );
  953. case SKILL_EVILINTENT: iSkillReturn = Evil_Intent( id, skill, prop );
  954. case SKILL_BLAZINGTOUCH: iSkillReturn = Blazing_Touch( id, skill, prop );
  955. case SKILL_DEADLYHORN: iSkillReturn = Deadly_Horn( id, skill, prop );
  956. case SKILL_SEAOFFLAMES: iSkillReturn = Sea_Of_Flames( id, skill, prop );
  957. case SKILL_MINDCONTROL: iSkillReturn = Mind_Control( id, skill, prop );
  958. case SKILL_DEADLYDREAM: iSkillReturn = Deadly_Dream( id, skill, prop );
  959. case SKILL_WATERSPRAYER: iSkillReturn = Water_Sprayer( id, skill, prop );
  960. case SKILL_GEYSERNEST: iSkillReturn = Geyser_Nest( id, skill, prop );
  961. case SKILL_SHININGLIGHT: iSkillReturn = Shining_Light( id, skill, prop );
  962. case SKILL_EMOTIONALPAIN: iSkillReturn = Emotional_Pain( id, skill, prop );
  963. case SKILL_FLIGHT: iSkillReturn = Flight( id, skill, prop );
  964. case SKILL_ROCKYSKY: iSkillReturn = Rocky_Sky( id, skill, prop );
  965. case SKILL_HIGHDEFENSE: iSkillReturn = High_Defense( id, skill, prop );
  966. case SKILL_METALBURST: iSkillReturn = Metal_Burst( id, skill, prop );
  967. case SKILL_DECIEVING: iSkillReturn = Decieving( id, skill, prop );
  968. case SKILL_FALLENLIFE: iSkillReturn = Fallen_life( id, skill, prop );
  969. case SKILL_NIGHTDAZE: iSkillReturn = Night_Daze( id, skill, prop );
  970. case SKILL_PHANTONDAZE: iSkillReturn = Phanton_Daze( id, skill, prop );
  971. case SKILL_WATERGOD: iSkillReturn = Water_God( id, skill, prop );
  972. case SKILL_RELICSONG: iSkillReturn = Relic_Song( id, skill, prop );
  973. case SKILL_TECHNODRIVE: iSkillReturn = Techno_Drive( id, skill, prop );
  974. case SKILL_DEVINEJUDGMENT: iSkillReturn = Divine_Judgement( id, skill, prop );
  975. case SKILL_DEVINEICE: iSkillReturn = Divine_Ice( id, skill, prop );
  976. case SKILL_BLACKDEATH: iSkillReturn = Black_Death( id, skill, prop );
  977. case SKILL_SHADOWSTALKER: iSkillReturn = Shadow_Stalker( id, skill, prop );
  978. case SKILL_LIGHTNINGFURY: iSkillReturn = Lightning_Fury( id, skill, prop );
  979. case SKILL_VOLCANOGEYSER: iSkillReturn = Volcano_Geyser( id, skill, prop );
  980. case SKILL_FLYINGJUDGMENT: iSkillReturn = Flying_Judgement( id, skill, prop );
  981. case SKILL_ACIDRAIN: iSkillReturn = Acid_Rain( id, skill, prop );
  982. case SKILL_ANCIENT: iSkillReturn = Ancient( id, skill, prop );
  983. case SKILL_FIREEXPLOSION: iSkillReturn = Fire_Explosion( id, skill, prop );
  984. case SKILL_CALMINGWAVES: iSkillReturn = Calming_Waves( id, skill, prop );
  985. }
  986.  
  987. switch ( iSkillReturn )
  988. {
  989. case SKILL_USED:
  990. {
  991. if( prop & SI_BIND )
  992. bind_used( id, skill );
  993. else{
  994. #if ONE_SKILL_USE == 0
  995. parm[0] = id;
  996. parm[1] = _:skill;
  997. set_task(0.0, "delayed_bind_used", 0, parm, 2);
  998. #else
  999. bind_used( id, skill );
  1000. #endif
  1001. }
  1002. return true;
  1003. }
  1004. }
  1005. }
  1006. return false;
  1007. }
  1008.  
  1009. /////////////////////////
  1010. // Resets all skills //
  1011. /////////////////////////
  1012. ResetSkills(id, bool:Round_Skills)
  1013. {
  1014. debugMessage(id,4,"Player", "reset skills");
  1015.  
  1016. //things to be reset only after death/round end
  1017. if(Round_Skills){
  1018. skills_handler(id, SI_ROUNDRESET);
  1019. }
  1020.  
  1021. skills_handler(id, SI_RESET);
  1022. CheckRepUsed(id);
  1023.  
  1024. SetActiveSkill(id);
  1025.  
  1026. PlayerStat[id][STAT_ATTACK] = PlayerStat[id][STAT_DEFENSE] = PlayerStat[id][STAT_SPECIAL] = PlayersLevel(id);
  1027. PlayerStat[id][STAT_SPEED] = 0;
  1028.  
  1029. fm_set_rendering(id, kRenderFxGlowShell, 0, 0, 0, kRenderTransAlpha, 255);
  1030.  
  1031. if(pev_valid(PlayerEnt[id])){
  1032. new szClass[32];
  1033. pev(PlayerEnt[id], pev_classname, szClass, 31);
  1034. if(equali(szClass, "psy_beam"))
  1035. psybeam_touch(PlayerEnt[id], 0);
  1036. }
  1037. PlayerEnt[id] = 0;
  1038. g_Charge[id] = 0;
  1039.  
  1040. screenflash(id);
  1041. SetSpeed(id);
  1042. }
  1043.  
  1044. ActiveSkill(id)
  1045. return g_isSkilled[id];
  1046. SetActiveSkill(id, skill=-1)
  1047. {
  1048. g_isSkilled[id] = skill;
  1049. debugMessage(id,6,"Player", "set active skill to %s(%d)",SkillToName(skill),skill);
  1050. }
  1051.  
  1052. /////////////////////////////
  1053. // Organized bind delays //
  1054. /////////////////////////////
  1055. public delayed_bind_used( parm[] )
  1056. bind_used( parm[0], parm[1] );
  1057. bind_used(id, skill=-1, Float:over_ride=0.0)
  1058. {
  1059. new Float:gametime = get_gametime();
  1060. new Float:newtime;
  1061. if( !BindUsed[id] || BindUsed[id]==WAIT_TIME ) newtime = gametime;
  1062. else newtime = BindUsed[id];
  1063.  
  1064. if( over_ride != 0.0 )
  1065. newtime += over_ride;
  1066. else if( skill != -1 ){
  1067. new Float:tasktime, Float:oldtime;
  1068. tasktime = oldtime = SkillDelay[skill];
  1069.  
  1070. tasktime -= (PlayersLevel(id)*DELAY_LEVEL_REDUCE);
  1071.  
  1072. if(tasktime < oldtime/3)
  1073. tasktime = oldtime/3;
  1074.  
  1075. newtime += tasktime;
  1076. }
  1077.  
  1078. if( newtime > gametime ){
  1079. BindUsed[id] = newtime;
  1080. g_StopSkill[id] = true;
  1081. }
  1082. }
  1083.  
  1084. /////////////////////////////////////////////////
  1085. // If we want to set it to exactly something //
  1086. /////////////////////////////////////////////////
  1087. set_bind(id, Float:time=0.0)
  1088. BindUsed[id] = time;
  1089.  
  1090. ///////////////////////////////////////////////////////////////////
  1091. // If I need to stop them after they've used it a couple times //
  1092. ///////////////////////////////////////////////////////////////////
  1093. end_rep_use(id, skill, Float:max)
  1094. {
  1095. SetActiveSkill(id, skill);
  1096. if( ++g_Charge[id] >= max*10 ){
  1097. g_Charge[id] = 0;
  1098. if( Action[id] != AC_SKILL )
  1099. SetActiveSkill(id);
  1100. return true;
  1101. }
  1102. return false;
  1103. }
  1104. CheckRepUsed(id)
  1105. {
  1106. if( g_Charge[id] && ValidSkill( ActiveSkill(id) ) ){
  1107. bind_used(id, ActiveSkill(id));
  1108. g_Charge[id] = 0;
  1109. SetActiveSkill(id);
  1110. return true;
  1111. }
  1112. return false;
  1113. }
  1114.  
  1115. public create_sprite_spray(parm[])
  1116. {
  1117. message_begin(MSG_BROADCAST, SVC_TEMPENTITY)
  1118. write_byte(120)
  1119. write_coord(parm[0]) //origin
  1120. write_coord(parm[1])
  1121. write_coord(parm[2])
  1122. write_coord(parm[3]) //velocity
  1123. write_coord(parm[4])
  1124. write_coord(parm[5])
  1125. write_short(parm[6]) //sprite
  1126. write_byte(8) //count
  1127. write_byte(10) //speed
  1128. write_byte(100) //noise
  1129. write_byte(5) //rendermode
  1130. message_end()
  1131. }
  1132. public spray_check(parm[])
  1133. {
  1134. new id = parm[0]
  1135. new flame = parm[1] //this is 0 for smoke, 1 for fire
  1136. new skill = parm[2] //this is 0 for smoke, 1 for fire
  1137.  
  1138. //direct damage first
  1139. new ent, body
  1140. get_user_aiming(id, ent, body, 600)
  1141.  
  1142. if(Pokemod_Alive(ent))
  1143. {
  1144. if(flame==1)
  1145. ApplyStatus( id, ent, STATUS_BURN, 0.0 )
  1146. else if(flame==2)
  1147. screenflash(ent,139,59,19,200)
  1148. else
  1149. screenflash(ent,255,255,255,255)
  1150. }
  1151.  
  1152. //now indirect damage
  1153. new Players[32], iNum, target
  1154. poke_get_players(Players, iNum, PLAYER_ALIVE|PLAYER_MORTAL)
  1155.  
  1156. new Float:fOrigin[3], Float:fOrigin2[3]
  1157. new temp[3], Float:fAim[3]
  1158. new Float:fDistance = 600.0
  1159. new iDistance
  1160.  
  1161. for(new i = 0; i < iNum; i++)
  1162. {
  1163. target = Players[i]
  1164. if( target == id )
  1165. continue
  1166.  
  1167. pev(id, pev_origin, fOrigin)
  1168. pev(target, pev_origin, fOrigin2)
  1169.  
  1170. get_user_origin(id, temp, 3)
  1171. IVecFVec(temp, fAim)
  1172.  
  1173. if(get_distance_f(fOrigin, fOrigin2) > fDistance)
  1174. continue
  1175.  
  1176. iDistance = get_distance_to_line(fOrigin, fOrigin2, fAim)
  1177. if( iDistance > 40 || iDistance < 0 || !fm_is_ent_visible(id, target) )
  1178. continue
  1179.  
  1180. if(flame==1){
  1181. skilldamage(target, id, 1, skill)
  1182. if(Chance(id))
  1183. ApplyStatus( id, target, STATUS_BURN, 0.0 )
  1184. }
  1185. else if(flame==2)
  1186. screenflash(target,139,59,19,200)
  1187. else
  1188. screenflash(target,255,255,255,255)
  1189. }
  1190. }
  1191. BlowUp(id)
  1192. {
  1193. get_user_origin(id,origin[id])
  1194.  
  1195. poke_sound(id,CHAN_STATIC, SND_SUCK)
  1196.  
  1197. message_begin( MSG_BROADCAST, SVC_TEMPENTITY )
  1198. write_byte(TE_IMPLOSION)
  1199. write_coord(origin[id][0])
  1200. write_coord(origin[id][1])
  1201. write_coord(origin[id][2])
  1202. write_byte(100)
  1203. write_byte(20)
  1204. write_byte(5)
  1205. message_end()
  1206.  
  1207. // random explosions
  1208. message_begin( MSG_PVS, SVC_TEMPENTITY, origin[id] )
  1209. write_byte(TE_EXPLOSION) // This just makes a dynamic light now
  1210. write_coord( origin[id][0] + random_num( -100, 100 ))
  1211. write_coord( origin[id][1] + random_num( -100, 100 ))
  1212. write_coord( origin[id][2] + random_num( -50, 50 ))
  1213. write_short( SPRITE_INDEX[SPR_EEXPLO] )
  1214. write_byte( random_num(0,20) + 20 ) // scale * 10
  1215. write_byte( 12 ) // framerate
  1216. write_byte(0)
  1217. message_end()
  1218.  
  1219. // lots of smoke
  1220. message_begin( MSG_PVS, SVC_TEMPENTITY, origin[id] )
  1221. write_byte(TE_SMOKE)
  1222. write_coord( origin[id][0] + random_num( -100, 100 ))
  1223. write_coord( origin[id][1] + random_num( -100, 100 ))
  1224. write_coord( origin[id][2] + random_num( -50, 50 ))
  1225. write_short( SPRITE_INDEX[SPR_STEAM1] )
  1226. write_byte( 60 ) // scale * 10
  1227. write_byte( 10 ) // framerate
  1228. message_end()
  1229.  
  1230. // blast circles
  1231. message_begin( MSG_PAS, SVC_TEMPENTITY, origin[id] )
  1232. write_byte(TE_BEAMCYLINDER)
  1233. write_coord( origin[id][0])
  1234. write_coord( origin[id][1])
  1235. write_coord( origin[id][2] - 16)
  1236. write_coord( origin[id][0])
  1237. write_coord( origin[id][1])
  1238. write_coord( origin[id][2] - 16 + EXPLOSION_RADIUS)
  1239. write_short( SPRITE_INDEX[SPR_SHOCKWAVE] )
  1240. write_byte( 0 ) // startframe
  1241. write_byte( 0 ) // framerate
  1242. write_byte( 6 ) // life
  1243. write_byte( 16 ) // width
  1244. write_byte( 0 ) // noise
  1245. write_byte( 188 )
  1246. write_byte( 220 )
  1247. write_byte( 255 )
  1248. write_byte( 255 ) //brightness
  1249. write_byte( 0 ) // speed
  1250. message_end()
  1251.  
  1252. }
  1253. public make_powder(parm[])
  1254. {
  1255. new id = parm[0];
  1256. if(!PMon() || !Pokemod_Alive(id))
  1257. return
  1258.  
  1259. new Float:fl_Origin[3], ptime = POWDER_TIME
  1260.  
  1261. pev(id, pev_origin, fl_Origin)
  1262.  
  1263. new newEnt = fm_create_entity("info_target")
  1264.  
  1265. set_pev(newEnt, pev_classname, "pokemod_ent")
  1266. fm_entity_set_model(newEnt, MODELS[MDL_POWDER])
  1267.  
  1268. // Change height of entity origin to hands
  1269. fl_Origin[2] += 6
  1270.  
  1271. // Set entity postion
  1272. fm_entity_set_origin(newEnt, fl_Origin)
  1273.  
  1274. // Set properties of the entity
  1275. set_pev( newEnt, pev_rendermode, 5)
  1276. set_pev( newEnt, pev_renderamt, 255.0)
  1277. set_pev( newEnt, pev_owner, id)
  1278.  
  1279. set_pev( newEnt, pev_animtime, 1.0);
  1280. set_pev( newEnt, pev_framerate, 1.0);
  1281. set_pev( newEnt, pev_sequence, 0);
  1282.  
  1283. new parm2[3];
  1284. parm2[0] = newEnt;
  1285. parm2[1] = parm[1];
  1286. parm2[2] = parm[2];
  1287. check_powder(parm2)
  1288. set_task(0.5,"check_powder",0, parm2, 3 , "a", 2*ptime-1)
  1289. set_task(ptime*1.0,"poke_remove_entity",newEnt+REMOVE_TASK)
  1290. }
  1291. public check_powder(parm[])
  1292. {
  1293. new spowder = parm[0];
  1294. new check_poison = parm[1];
  1295. new check_sleep = parm[2];
  1296.  
  1297. if(!pev_valid(spowder))
  1298. return
  1299.  
  1300. new id = pev(spowder, pev_owner)
  1301.  
  1302. new Float:poison_time = get_ppcvar_float(pm_poisontime)
  1303. new Float:sleep_time = get_ppcvar_float(pm_sleeptime)
  1304. new range = POWDER_RANGE
  1305. AddLvl(id, range)
  1306.  
  1307. new aid, players[MAX_PLAYERS], pnum
  1308. poke_get_players(players,pnum,PLAYER_ALIVE|PLAYER_MORTAL|PLAYER_NOTEAM,Pokemod_Team(id))
  1309.  
  1310. for(new i = 0; i<pnum; i++)
  1311. {
  1312. aid = players[i]
  1313.  
  1314. if( fm_entity_range(spowder,aid) < range ) {
  1315.  
  1316. if( check_poison && !g_Status[aid][STATUS_POISON] ){
  1317. ApplyStatus( id, aid, STATUS_POISON, poison_time )
  1318. }
  1319.  
  1320. if( check_sleep && !g_Status[aid][STATUS_ASLEEP] ){
  1321. ApplyStatus( id, aid, STATUS_ASLEEP, sleep_time )
  1322. }
  1323. }
  1324. }
  1325. }
  1326. public check_spore(parm[])
  1327. {
  1328. new ent = parm[0];
  1329. parm[2]--;
  1330.  
  1331. if( pev_valid(ent) ){
  1332. new Float:health;
  1333. pev(ent, pev_health, health);
  1334. if( health-POKE_HP_OFFSET < 0 ){
  1335. new Float:origfl[3], orig[3];
  1336. pev( ent, pev_origin, origfl );
  1337. FVecIVec(origfl, orig);
  1338.  
  1339. new parmlol[7];
  1340. parmlol[0] = orig[0];
  1341. parmlol[1] = orig[1];
  1342. parmlol[2] = orig[2]+100;
  1343. parmlol[3] = 0;
  1344. parmlol[4] = 0;
  1345. parmlol[5] = 50;
  1346. parmlol[6] = SPRITE_INDEX[SPR_STEAM1];
  1347. create_sprite_spray( parmlol );
  1348.  
  1349. set_task(1.0,"poke_remove_entity",ent+REMOVE_TASK);
  1350. set_task(0.1, "check_spore", 0, parm, 4);
  1351.  
  1352. return;
  1353. }
  1354.  
  1355. if( !parm[2] ){
  1356. fm_remove_entity(ent);
  1357. return;
  1358. }
  1359. }
  1360. else
  1361. return;
  1362.  
  1363. new id = pev(ent, pev_owner);
  1364.  
  1365. new range = SPORE_RANGE;
  1366. AddLvl(id, range);
  1367.  
  1368. new aid, players[MAX_PLAYERS], pnum
  1369. poke_get_players(players,pnum,PLAYER_ALIVE|PLAYER_MORTAL|PLAYER_NOTEAM,Pokemod_Team(id))
  1370. for(new i = 0; i<pnum; i++)
  1371. {
  1372. aid = players[i]
  1373.  
  1374. if( fm_entity_range(ent,aid) < range ) {
  1375.  
  1376. if( parm[3] ){
  1377. if( !g_Status[aid][STATUS_POISON] )
  1378. ApplyStatus( id, aid, STATUS_POISON, 5.0 )
  1379. }
  1380. else
  1381. set_pev( aid, pev_velocity, Float:{0.0,0.0,0.0} );
  1382. }
  1383. }
  1384.  
  1385. new Float:origfl[3], orig[3];
  1386. pev( ent, pev_origin, origfl );
  1387. FVecIVec(origfl, orig);
  1388.  
  1389. if( (parm[2] % 10) == 0 ){
  1390. message_begin( MSG_PAS, SVC_TEMPENTITY, orig )
  1391. write_byte(TE_BEAMCYLINDER)
  1392. write_coord( orig[0])
  1393. write_coord( orig[1])
  1394. write_coord( orig[2] + 20 )
  1395. write_coord( orig[0])
  1396. write_coord( orig[1])
  1397. write_coord( orig[2] + 20 + range)
  1398. write_short( SPRITE_INDEX[SPR_GAS] )
  1399. write_byte( 0 ) // startframe
  1400. write_byte( 0 ) // framerate
  1401. write_byte( 10 ) // life
  1402. write_byte( 16 ) // width
  1403. write_byte( 0 ) // noise
  1404. write_byte( 88 )
  1405. write_byte( 20 )
  1406. write_byte( parm[3] ? 255 : 50 )
  1407. write_byte( 255 ) //brightness
  1408. write_byte( 0 ) // speed
  1409. message_end()
  1410. }
  1411.  
  1412. if( (parm[2] % 5) == 0 ){
  1413. new parmlol[7];
  1414. parmlol[0] = orig[0];
  1415. parmlol[1] = orig[1];
  1416. parmlol[2] = orig[2]+100;
  1417. parmlol[3] = 0;
  1418. parmlol[4] = 0;
  1419. parmlol[5] = -20;
  1420. parmlol[6] = parm[3] ? SPRITE_INDEX[SPR_BIGSPIT] : SPRITE_INDEX[SPR_MUZZLEFLASH1];
  1421. create_sprite_spray( parmlol );
  1422. }
  1423.  
  1424. set_task(0.1, "check_spore", 0, parm, 4);
  1425. }
  1426. public delayed_grenade(parm[])
  1427. give_grenade(parm[0],parm[1],bool:parm[2]);
  1428. give_grenade(id, how_many=1, bool:add_with=false)
  1429. {
  1430. if( !Pokemod_Alive(id) )
  1431. return;
  1432. new old_amount, new_amount
  1433. #if MOD==CS
  1434. give_item(id, "weapon_hegrenade")
  1435. old_amount = cs_get_user_bpammo(id, CSW_HEGRENADE)
  1436. new_amount = add_with ? (old_amount+how_many) : ( max(how_many,old_amount) )
  1437. cs_set_user_bpammo(id, CSW_HEGRENADE, new_amount)
  1438. #endif
  1439. #if MOD==DOD
  1440. new wpnid
  1441. if(Pokemod_Team(id)==2){
  1442. give_item(id, "weapon_stickgrenade")
  1443. wpnid = DODW_STICKGRENADE
  1444. }
  1445. else{
  1446. give_item(id, "weapon_handgrenade")
  1447. wpnid = DODW_HANDGRENADE
  1448. }
  1449. old_amount = dod_get_user_ammo(id,wpnid)
  1450. new_amount = add_with ? (old_amount+how_many) : ( max(how_many,old_amount) )
  1451. dod_set_user_ammo(id, wpnid, new_amount)
  1452. #endif
  1453. #if MOD==NS
  1454. if(Pokemod_Team(id)==1){
  1455. new wpn[32], bpammo
  1456. get_user_weapon(id, old_amount, bpammo)
  1457. get_weaponname(WEAPON_GRENADE,wpn,31)
  1458.  
  1459. ns_give_item(id, "weapon_grenade")
  1460. new_amount = add_with ? (old_amount+how_many) : ( max(how_many,old_amount) )
  1461. new iWPNidx = -1
  1462. while ((iWPNidx = fm_find_ent_by_class(iWPNidx, wpn)) != 0) {
  1463. if (id == pev(iWPNidx, pev_owner)) {
  1464. ns_set_weap_clip(iWPNidx, new_amount)
  1465. }
  1466. }
  1467. }
  1468. #endif
  1469. }
  1470. Gas(id, bool:smog=false, bool:poison=false)
  1471. {
  1472. if( !Pokemod_Alive(id) || ( !smog && !poison ) )
  1473. return;
  1474.  
  1475. get_user_origin(id, origin[id])
  1476. message_begin(MSG_BROADCAST, SVC_TEMPENTITY) //message begin
  1477. write_byte(TE_SPRITE)
  1478. write_coord(origin[id][0]) // start position
  1479. write_coord(origin[id][1])
  1480. write_coord(origin[id][2])
  1481. write_short(SPRITE_INDEX[SPR_GAS]) // sprite index
  1482. write_byte(10) // scale in 0.1's
  1483. write_byte(100) // brightness
  1484. message_end()
  1485.  
  1486. new aid, playersa[MAX_PLAYERS], pnuma
  1487. poke_get_players(playersa,pnuma,PLAYER_ALIVE|PLAYER_MORTAL|PLAYER_NOTEAM,Pokemod_Team(id))
  1488.  
  1489. new Float:poison_time = get_ppcvar_float(pm_poisontime)
  1490. new distance
  1491. new maxdist = 300
  1492. AddLvl(id, maxdist)
  1493.  
  1494. for(new ick = 0; ick<pnuma; ick++)
  1495. {
  1496. aid = playersa[ick]
  1497.  
  1498. get_user_origin(aid, origin[aid])
  1499.  
  1500. distance = get_distance(origin[aid], origin[id])
  1501. if(distance <= maxdist){
  1502. if(smog){
  1503. poke_print(aid,print_center,LANG,aid,"POKEMOD_SMOG")
  1504. screenflash(aid, 139, 59, 19, 222, 1.0)
  1505. }
  1506. if(poison && !g_Status[aid][STATUS_POISON]){
  1507. ApplyStatus( id, aid, STATUS_POISON, poison_time )
  1508. }
  1509. }
  1510. }
  1511. }
  1512. make_snow(id)
  1513. {
  1514. get_user_origin(id,origin[id]);
  1515.  
  1516. //lets put one on each side of them
  1517. new sides[4][2];
  1518. sides[0][0] = sides[0][1] = sides[2][0] = sides[3][1] = 100;
  1519. sides[1][0] = sides[1][1] = sides[2][1] = sides[3][0] = -100;
  1520.  
  1521. for(new i=0; i<4; i++){
  1522. message_begin(MSG_BROADCAST, SVC_TEMPENTITY) //message begin
  1523. write_byte( TE_SPRITE ) // additive sprite, plays 1 cycle
  1524. write_coord(origin[id][0] + sides[i][0] + random_num(-10,10))
  1525. write_coord(origin[id][1] + sides[i][1] + random_num(-10,10))
  1526. write_coord(origin[id][2])
  1527. write_short( SPRITE_INDEX[SPR_SNOW] )
  1528. write_byte( 14 ) // byte (scale in 0.1's)
  1529. write_byte( 255 ) // byte (brightness)
  1530. message_end()
  1531. }
  1532.  
  1533. return PLUGIN_HANDLED
  1534. }
  1535. PokeSkillTarget(id, &damage=-1, &weapon=-1)
  1536. {
  1537. new victim;
  1538. // If they were damaged
  1539. if( PlayerDamageInfo[id][PD_DAMAGE] ){
  1540. damage = PlayerDamageInfo[id][PD_DAMAGE];
  1541. weapon = PlayerDamageInfo[id][PD_WEAPON];
  1542. return PlayerDamageInfo[id][PD_ATTACKER];
  1543. }
  1544. // If they damaged someone else
  1545. for( victim=0; victim<MAX_PLAYERS; victim++ )
  1546. if( PlayerDamageInfo[victim][PD_ATTACKER] == id ){
  1547. damage = PlayerDamageInfo[victim][PD_DAMAGE];
  1548. weapon = PlayerDamageInfo[victim][PD_WEAPON];
  1549. return victim;
  1550. }
  1551. // If they touched someone
  1552. if( PlayerDamageInfo[id][PD_ATTACKER] ){
  1553. damage = weapon = 0;
  1554. return PlayerDamageInfo[id][PD_ATTACKER];
  1555. }
  1556. // Get who they are looking at
  1557. get_user_aiming(id, victim, weapon);
  1558. if( Pokemod_Alive(victim) ){
  1559. weapon = get_user_weapon(id);
  1560. damage = 0;
  1561. return victim;
  1562. }
  1563. return 0;
  1564. }
  1565.  
  1566. SkillLevel(id, skill)
  1567. {
  1568. if( is_user_connected(id) && ValidSkill(skill) ){
  1569. static pid, i;
  1570. pid = Pokemon[id];
  1571. for( i = -1; i<MAX_ACTIVE_POKES; i++ ){
  1572. if( i != -1 ){
  1573. //if weve already added the skill in, we don't need to add it again
  1574. if( i == PlayersActive[id] )
  1575. continue;
  1576. else
  1577. pid = PlayersPoke[id][i];
  1578. }
  1579. while( ValidPoke(pid) ){
  1580. if( !PokeDisabled(pid) && PokeSkill[pid] == skill ){
  1581. if( i==-1 || PokeInfo[pid] & PI_GLOBAL ){
  1582. return PlayersLevel(id, i);
  1583. }
  1584. }
  1585.  
  1586. pid = AnyEvolveTo(pid);
  1587. }
  1588. }
  1589. }
  1590. return 0;
  1591. }
  1592. make_inferno(id)
  1593. {
  1594. get_user_origin(id,origin[id]);
  1595.  
  1596. //lets put one on each side of them
  1597. new sides[4][2];
  1598. sides[0][0] = sides[0][1] = sides[2][0] = sides[3][1] = 100;
  1599. sides[1][0] = sides[1][1] = sides[2][1] = sides[3][0] = -100;
  1600.  
  1601. for(new i=0; i<4; i++){
  1602. message_begin(MSG_BROADCAST, SVC_TEMPENTITY) //message begin
  1603. write_byte( TE_SPRITE ) // additive sprite, plays 1 cycle
  1604. write_coord(origin[id][0] + sides[i][0] + random_num(-10,10))
  1605. write_coord(origin[id][1] + sides[i][1] + random_num(-10,10))
  1606. write_coord(origin[id][2])
  1607. write_short( SPRITE_INDEX[SPR_SACRED])
  1608. write_byte( 14 ) // byte (scale in 0.1's)
  1609. write_byte( 255 ) // byte (brightness)
  1610. message_end()
  1611. }
  1612.  
  1613. return PLUGIN_HANDLED
  1614. }
  1615. make_inferno_b(id)
  1616. {
  1617. get_user_origin(id,origin[id]);
  1618.  
  1619. //lets put one on each side of them
  1620. new sides[4][2];
  1621. sides[0][0] = sides[0][1] = sides[2][0] = sides[3][1] = 100;
  1622. sides[1][0] = sides[1][1] = sides[2][1] = sides[3][0] = -100;
  1623.  
  1624. for(new i=0; i<4; i++){
  1625. message_begin(MSG_BROADCAST, SVC_TEMPENTITY) //message begin
  1626. write_byte( TE_SPRITE ) // additive sprite, plays 1 cycle
  1627. write_coord(origin[id][0] + sides[i][0] + random_num(-10,10))
  1628. write_coord(origin[id][1] + sides[i][1] + random_num(-10,10))
  1629. write_coord(origin[id][2])
  1630. write_short( SPRITE_INDEX[SPR_BFLAME])
  1631. write_byte( 14 ) // byte (scale in 0.1's)
  1632. write_byte( 255 ) // byte (brightness)
  1633. message_end()
  1634. }
  1635.  
  1636. return PLUGIN_HANDLED
  1637. }
  1638. make_snow_o(vorigin[3])
  1639. {
  1640.  
  1641. //lets put one on each side of them
  1642. new sides[4][2];
  1643. sides[0][0] = sides[0][1] = sides[2][0] = sides[3][1] = 100;
  1644. sides[1][0] = sides[1][1] = sides[2][1] = sides[3][0] = -100;
  1645.  
  1646. for(new i=0; i<4; i++){
  1647. message_begin(MSG_BROADCAST, SVC_TEMPENTITY) //message begin
  1648. write_byte( TE_SPRITE ) // additive sprite, plays 1 cycle
  1649. write_coord(vorigin[0] + sides[i][0] + random_num(-10,10))
  1650. write_coord(vorigin[1] + sides[i][1] + random_num(-10,10))
  1651. write_coord(vorigin[2])
  1652. write_short( SPRITE_INDEX[SPR_SNOW] )
  1653. write_byte( 14 ) // byte (scale in 0.1's)
  1654. write_byte( 255 ) // byte (brightness)
  1655. message_end()
  1656. }
  1657.  
  1658. return PLUGIN_HANDLED
  1659. }
  1660.  
  1661. Kenesis(id, bool:smog=false, bool:poison=false)
  1662. {
  1663. if( !Pokemod_Alive(id) || ( !smog && !poison ) )
  1664. return;
  1665.  
  1666. get_user_origin(id, origin[id])
  1667. message_begin(MSG_BROADCAST, SVC_TEMPENTITY) //message begin
  1668. write_byte(TE_SPRITE)
  1669. write_coord(origin[id][0]) // start position
  1670. write_coord(origin[id][1])
  1671. write_coord(origin[id][2])
  1672. write_short(SPRITE_INDEX[SPR_SHOCKWAVE]) // sprite index
  1673. write_byte(10) // scale in 0.1's
  1674. write_byte(20) // brightness
  1675. message_end()
  1676.  
  1677. new aid, playersa[MAX_PLAYERS], pnuma
  1678. poke_get_players(playersa,pnuma,PLAYER_ALIVE|PLAYER_MORTAL|PLAYER_NOTEAM,Pokemod_Team(id))
  1679.  
  1680. new Float:poison_time = get_ppcvar_float(pm_poisontime)
  1681. new distance
  1682. new maxdist = 500
  1683. AddLvl(id, maxdist)
  1684.  
  1685. for(new ick = 0; ick<pnuma; ick++)
  1686. {
  1687. aid = playersa[ick]
  1688.  
  1689. get_user_origin(aid, origin[aid])
  1690.  
  1691. distance = get_distance(origin[aid], origin[id])
  1692. if(distance <= maxdist){
  1693. if(smog){
  1694. poke_print(aid,print_center,LANG,aid,"POKEMOD_SMOG")
  1695. }
  1696. if(poison && !g_Status[aid][STATUS_SLOW]){
  1697. ApplyStatus( id, aid, STATUS_SLOW, poison_time )
  1698. }
  1699. }
  1700. }
  1701. }
  1702. Flamewheel(id, bool:smog=false, bool:poison=false)
  1703. {
  1704. if( !Pokemod_Alive(id) || ( !smog && !poison ) )
  1705. return;
  1706.  
  1707. get_user_origin(id, origin[id])
  1708. message_begin(MSG_BROADCAST, SVC_TEMPENTITY) //message begin
  1709. write_byte(TE_SPRITE)
  1710. write_coord(origin[id][0]) // start position
  1711. write_coord(origin[id][1])
  1712. write_coord(origin[id][2])
  1713. write_short(SPRITE_INDEX[SPR_FIRE]) // sprite index
  1714. write_byte(10) // scale in 0.1's
  1715. write_byte(10) // brightness
  1716. message_end()
  1717.  
  1718. new aid, playersa[MAX_PLAYERS], pnuma
  1719. poke_get_players(playersa,pnuma,PLAYER_ALIVE|PLAYER_MORTAL|PLAYER_NOTEAM,Pokemod_Team(id))
  1720.  
  1721. new Float:poison_time = get_ppcvar_float(pm_poisontime)
  1722. new distance
  1723. new maxdist = 100
  1724. AddLvl(id, maxdist)
  1725.  
  1726. for(new var = 0; var<pnuma; var++)
  1727. {
  1728. aid = playersa[var]
  1729.  
  1730. get_user_origin(aid, origin[aid])
  1731.  
  1732. distance = get_distance(origin[aid], origin[id])
  1733. if(distance <= maxdist){
  1734. if(smog){
  1735. poke_print(aid,print_center,LANG,aid,"POKEMOD_SMOG")
  1736. }
  1737. if(poison && !g_Status[aid][STATUS_BURN]){
  1738. ApplyStatus( id, aid, STATUS_BURN, poison_time )
  1739. }
  1740.  
  1741. }
  1742. }
  1743. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement