Guest User

Untitled

a guest
Mar 1st, 2016
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 57.89 KB | None | 0 0
  1. //////////////////////////////////////////////////////////////////////////
  2. //B_SPELLDEATHXP
  3. //==============
  4. //Verwundet den NSC und berücksichtigt dabei den prot Rüstschutz
  5. //'self' ist der zu verwundende NSC
  6. //////////////////////////////////////////////////////////////////////////
  7. FUNC VOID B_SPELLDEATHXP(VAR C_Npc SLF,VAR INT MULTIPLER)
  8. {
  9. ////PrintDebugNpc(PD_ZS_FRAME,"B_DeathXP");
  10. //PRINTGlobals(PD_ZS_CHECK);
  11.  
  12. IF (slf.guild<GIL_SEPERATOR_HUM)
  13. && Npc_WASINSTATE(SLF,ZS_UNCONSCIOUS)
  14. {
  15. ////PrintDebugNpc(PD_ZS_CHECK,"...Opfer ist bewußtloser Mensch!");
  16. //SN: keine XP für Finishing-Move!!!
  17. }
  18. ELSE
  19. {
  20. ////PrintDebugNpc(PD_ZS_CHECK,"...Opfer ist entweder nicht bewußtlos oder kein Mensch!");
  21. B_GIVEXP((SLF.LEVEL * XP_PER_LEVEL_DEAD)/ MULTIPLER);
  22. };
  23. };
  24.  
  25. //////////////////////////////////////////////////////////////////////////
  26. //B_SpellHurtNpc
  27. //==============
  28. //Verwundet den NSC und berücksichtigt dabei den prot Rüstschutz
  29. //'self' ist der zu verwundende NSC
  30. //////////////////////////////////////////////////////////////////////////
  31. FUNC VOID B_SPELLHURTNpc(VAR C_Npc SLF,VAR C_Npc ATTACKER,VAR INT DAMAGE,VAR INT DAMTYP)
  32. {
  33. ////PrintDebugNpc(PD_ZS_FRAME,"B_SpellHurtNpc");
  34. VAR INT DMG;
  35. /*if(damtyp==DAM_BARRIER)
  36. {
  37. PRINT("BARRIER");
  38. dmg = slf.protection[PROT_BARRIER];
  39. }
  40. else if(damtyp==DAM_BLUNT)
  41. {
  42. PRINT("BLUNT");
  43. dmg = slf.protection[PROT_BLUNT];
  44. }
  45. else if(damtyp==DAM_EDGE)
  46. {
  47. PRINT("EDGE");
  48. dmg = slf.protection[PROT_EDGE];
  49. }
  50. else if(damtyp==DAM_FIRE)
  51. {
  52. PRINT("FIRE");
  53. if(damage>30)&&(!Npc_IsDead(self))
  54. {
  55. Ai_PlayAni (slf,"S_FIRE_VICTIM");
  56. };
  57. dmg = slf.protection[PROT_FIRE];
  58. }
  59. else if(damtyp==DAM_FLY)
  60. {
  61. PRINT("FLY");
  62. if(Npc_CanSeeNpcFreeLOS(slf,attacker))&&(!Npc_IsDead(slf))
  63. {
  64. B_FullStop (slf);
  65. Ai_PlayAni (slf,"s_FallB");
  66. Ai_WAiT(slf,1);
  67. B_FullStop (slf);
  68. }
  69. else if(!Npc_CanSeeNpcFreeLOS(slf,attacker))&&(!Npc_IsDead(slf))
  70. {
  71. B_FullStop (slf);
  72. Ai_PlayAni (slf,"s_Fall");
  73. Ai_WAiT(slf,1);
  74. B_FullStop (slf);
  75. };
  76. dmg = slf.protection[PROT_FLY];
  77. }
  78. else if(damtyp==DAM_MAGIC)
  79. {
  80. PRINT("MAGIC");
  81. dmg = slf.protection[PROT_MAGIC];
  82. }
  83. else if(damtyp==DAM_POINT)
  84. {
  85. PRINT("POINT");
  86. dmg = slf.protection[PROT_POINT];
  87. }
  88. else if(damtyp==DAM_FALL)
  89. {
  90. PRINT("FALL");
  91. dmg = slf.protection[PROT_FALL];
  92. }
  93. else
  94. {
  95. PRINT("MAGIC");
  96. dmg = slf.protection[PROT_MAGIC];
  97. }; */
  98. DMG=DAMAGE-DMG;
  99. IF(DMG < 0)
  100. {
  101. DMG=0;
  102. };
  103. VAR INT HPMINUS;
  104. HPMINUS=DMG*2;
  105. //hpminus=hpminus-(hpminus%1);
  106. //Print(IntToString(slf.attribute[ATR_HITPOINTS]));
  107. WLD_PLAYEFFECT("spellFX_INVISIBLEDMG_Fireball",ATTACKER,SLF,2,DAMAGE,DAMTYP,TRUE);
  108. //slf.attribute[ATR_HITPOINTS] = slf.attribute[ATR_HITPOINTS]-hpminus;
  109. //Print(IntToString(dmg));
  110. IF Npc_ISDEAD(SLF)
  111. {
  112. IF Npc_ISPLAYER(ATTACKER)
  113. ||((attacker.guild<GIL_SEPERATOR_HUM) && Npc_GetAivar(ATTACKER,AIV_PARTYMEMBER))
  114. ||((attacker.guild>GIL_SEPERATOR_HUM) && Npc_GetAivar(ATTACKER,AIV_MM_PARTYMEMBER))
  115. {
  116. B_SPELLDEATHXP(SLF,1); //vergibt XP an SC
  117. };
  118. };
  119. };
  120. //*******************************************************
  121. //**** R U N E S W O R D A S S E S S M A G I C *****
  122. //**** R U N E S W O R D A S S E S S M A G I C *****
  123. //**** R U N E S W O R D A S S E S S M A G I C *****
  124. //*******************************************************
  125.  
  126. // Moved from assessMagic
  127. /*******************************************************************************************/
  128. FUNC VOID B_ASSESSMAGIC_STUNINGBALL()
  129. {
  130.  
  131. //Damit andere NSCs den Angriff wahrnehmen können
  132. NPC_SENDPASSIVEPERC(SELF,PERC_ASSESSFIGHTSOUND,SELF,OTHER);
  133.  
  134. //kein Freezen von SLEEPER, DEMON, GOLEM, SWAMPSHARK, TROLL und wenn Opfer in BS_SWIM oder BS_DIVE
  135. //FIXME: MInecrawlerqueeen ist GIL_MINECRAWLER! Andere Gilde geben, damit auch sie nicht gefreezt werden kann?!
  136. IF(!((SELF.GUILD ==GIL_PUPIL)||
  137. (SELF.GUILD==GIL_DEMON)||
  138. (SELF.GUILD==GIL_GOLEM)||
  139. (SELF.GUILD==GIL_SWAMPSHARK)||
  140. (SELF.GUILD==GIL_TROLL)))&&
  141. (!(C_BODYSTATECONTAINS(SELF,BS_SWIM))||(C_BODYSTATECONTAINS(SELF,BS_DIVE)))
  142. {
  143. NPC_CLEARAIQUEUE(SELF);
  144. AI_STARTSTATE(SELF,ZS_STUNED,0,"");
  145. };
  146. };
  147.  
  148.  
  149. //RuneSWORD AssesMagic
  150. /*******************************************************************************************/
  151. FUNC VOID B_ASSESSMAGICRUNESWD_FIREBOLT()
  152. {
  153. ////PrintDebugNpc(PD_MAGIC,"B_assessMagicRuneSWD_Firebolt");
  154. //Damit andere NSCs den Angriff wahrnehmen können
  155. Npc_SENDPASSIVEPERC(RUNE_SLF,PERC_ASSESSFIGHTSOUND,RUNE_SLF,other);
  156. };
  157.  
  158. /*******************************************************************************************/
  159. FUNC VOID B_ASSESSMAGICRUNESWD_FIREBALL()
  160. {
  161. ////PrintDebugNpc(PD_MAGIC,"B_assessMagicRuneSWD_FireBall");
  162. //Damit andere NSCs den Angriff wahrnehmen können
  163. Npc_SENDPASSIVEPERC(RUNE_SLF,PERC_ASSESSFIGHTSOUND,RUNE_SLF,other);
  164. };
  165.  
  166. /*******************************************************************************************/
  167.  
  168. FUNC VOID B_ASSESSMAGICRUNESWD_HOLYFIRE(var c_npc attacker,var c_npc target)
  169. {
  170. ////PrintDebugNpc(PD_MAGIC,"B_AssesMagic_HolyLight")Npc_SetAivar(;
  171. NPC_SENDPASSIVEPERC(target,PERC_ASSESSFIGHTSOUND,target,OTHER);
  172. IF((target.GUILD >=GIL_ZOMBIE)&&(target.GUILD <=GIL_SKELETON))||(Npc_GetAivar(target,AIV_MM_REAL_ID)==ID_SKELETONMAGE)||(Npc_GetAivar(target,AIV_MM_REAL_ID)==ID_SKELETONRANGER)
  173. ||((target.FIGHT_TACTIC==FAI_HUMAN_MAGE)&&((target.GUILD==GIL_DEMON)||(target.GUILD==GIL_UNDEADORC)))
  174. ||(target.GUILD > GIL_SEPERATOR_ORC)
  175. //Same as NpcIsEvil
  176. {
  177. Npc_ClearAiQueue(target);
  178. WLD_PLAYEFFECT("VOB_HOLYBURN",target,target,1,0,0,0);
  179. Snd_Play3D (target,"MFX_HOLYFIRE_COLLIDE");
  180. IF(target.GUILD > GIL_SEPERATOR_ORC)
  181. {
  182. VAR INT DMG;DMG=(SPL_DAMAGE_HOLYFIRE - SPL_DAMAGE_HOLYFIRE % 3)/3*2;
  183. WLD_PLAYEFFECT("spellFX_INVISIBLEDMG_Fireball",attacker,target,2,DMG,DAM_MAGIC,TRUE);
  184.  
  185. }
  186. ELSE
  187. {
  188. WLD_PLAYEFFECT("spellFX_INVISIBLEDMG_Fireball",attacker,target,2,SPL_DAMAGE_HOLYFIRE,DAM_MAGIC,TRUE);
  189.  
  190. };
  191. IF(!NPC_ISDEAD(target))
  192. {
  193. Npc_ClearAiQueue(target);
  194. AI_StandUp(target);
  195. AI_PLAYANI(target,"S_FIRE_VICTIM");
  196. AI_WAIT(target,1);
  197. };
  198.  
  199. };
  200. };
  201. /*******************************************************************************************/
  202. FUNC VOID B_ASSESSMAGICRUNESWD_FIRESTORM()
  203. {
  204. ////PrintDebugNpc(PD_MAGIC,"B_assessMagicRuneSWD_Firestorm");
  205. //Damit andere NSCs den Angriff wahrnehmen können
  206. Npc_SENDPASSIVEPERC(RUNE_SLF,PERC_ASSESSFIGHTSOUND,RUNE_SLF,other);
  207. };
  208.  
  209. /*******************************************************************************************/
  210. FUNC VOID B_ASSESSMAGICRUNESWD_FIRERAiN()
  211. {
  212. ////PrintDebugNpc(PD_MAGIC,"B_assessMagicRuneSWD_FirerAin");
  213. //Damit andere NSCs den Angriff wahrnehmen können
  214. Npc_SENDPASSIVEPERC(self,PERC_ASSESSFIGHTSOUND,self,hero);
  215. VAR C_Npc RUNENOW;
  216. RUNENOW =HLP_GETNpc(RUNESWORD_NOW);
  217. NAMEPOSY=NAMEPOSY+4;
  218. B_SPELLHURTNpc(self,hero,RUNESWD_VOICE,RUNESWD_NpcTYPE);
  219. };
  220.  
  221. /*******************************************************************************************/
  222. FUNC VOID B_ASSESSMAGICRUNESWD_CHAiNLIGHTNING(var c_npc slf)
  223. {
  224. ////PrintDebugNpc(PD_MAGIC,"B_AssessMagic ...ChainLightning");
  225.  
  226. NPC_PERCDISABLE(slf,PERC_ASSESSCASTER);
  227.  
  228. //Damit andere NSCs den Angriff wahrnehmen können
  229. NPC_SENDPASSIVEPERC(slf,PERC_ASSESSFIGHTSOUND,SELF,OTHER);
  230.  
  231. NPC_CLEARAIQUEUE(slf);
  232. IF(!NPC_ISDEAD(slf))
  233. {
  234. Ai_StandUpQuick(self);
  235. AI_STARTSTATE(slf,ZS_SHORTZAPPED,0,"");
  236. };
  237. };
  238.  
  239. /*******************************************************************************************/
  240. FUNC VOID B_ASSESSMAGICRUNESWD_THUNDERBOLT()
  241. {
  242. ////PrintDebugNpc(PD_MAGIC,"B_assessMagicRuneSWD_Thunderbolt");
  243. //Damit andere NSCs den Angriff wahrnehmen können
  244. Npc_SENDPASSIVEPERC(RUNE_SLF,PERC_ASSESSFIGHTSOUND,RUNE_SLF,other);
  245. };
  246.  
  247. /*******************************************************************************************/
  248. FUNC VOID B_ASSESSMAGICRUNESWD_THUNDERBALL()
  249. {
  250. ////PrintDebugNpc(PD_MAGIC,"B_AssessMagic ...Thunderball");
  251. //Damit andere NSCs den Angriff wahrnehmen können
  252. Npc_SENDPASSIVEPERC(self,PERC_ASSESSFIGHTSOUND,RUNE_SLF,other);
  253.  
  254. Npc_ClearAiQueue(self);
  255. IF(!Npc_ISDEAD(self))
  256. {
  257. Ai_StandUpQuick(self);
  258. Ai_STARTSTATE(self,ZS_SHORTZAPPED,0,"");
  259. };
  260. };
  261.  
  262. /*******************************************************************************************/
  263. FUNC VOID B_ASSESSMAGICRUNESWD_ICECUBE(var c_npc slf)
  264. {
  265. ////PrintDebugNpc(PD_MAGIC,"B_AssessMagic ...IceCube oder IceWave");
  266. //Damit andere NSCs den Angriff wahrnehmen können
  267. //Npc_SENDPASSIVEPERC(RUNE_SLF,PERC_ASSESSFIGHTSOUND,RUNE_SLF,other);
  268. //kein Freezen von SLEEPER, DEMON, GOLEM, SWAMPSHARK, TROLL und wenn Opfer in BS_SWIM oder BS_DIVE
  269. //FIXME: MInecrawlerqueeen ist GIL_MINECRAWLER! Andere Gilde geben, damit auch sie nicht gefreezt werden kann?!
  270. IF(!((slf.GUILD == GIL_PUPIL)||
  271. (slf.GUILD==GIL_DEMON)||
  272. (slf.GUILD==GIL_GOLEM)||
  273. (slf.GUILD==GIL_SWAMPSHARK)||
  274. (slf.GUILD==GIL_TROLL)))
  275. {
  276. // //B_CLEARPERCEPTIONS();
  277. IF(!C_Npcisdown(slf))
  278. {
  279. NPC_PERCDISABLE(SLF,PERC_ASSESSCASTER);
  280. NPC_CLEARAIQUEUE(SLF);
  281. AI_STARTSTATE(SLF,ZS_MAGICFREEZE,0,"");
  282. };
  283. };
  284. };
  285. /*******************************************************************************************/
  286. FUNC VOID B_ASSESSMAGICRUNESWD_MASSDEATH()
  287. {
  288. ////PrintDebugNpc(PD_MAGIC,"B_assessMagicRuneSWD_Massdeath");
  289. //Damit andere NSCs den Angriff wahrnehmen können
  290. Npc_SENDPASSIVEPERC(RUNE_SLF,PERC_ASSESSFIGHTSOUND,RUNE_SLF,other);
  291. };
  292.  
  293.  
  294. /*******************************************************************************************/
  295. FUNC VOID B_ASSESSMAGICRUNESWD_StuningBall()
  296. {
  297.  
  298. NPC_SENDPASSIVEPERC(SELF,PERC_ASSESSFIGHTSOUND,RUNE_SLF,OTHER);
  299. IF((SELF.GUILD!=GIL_PUPIL)&&
  300. (SELF.GUILD!=GIL_DEMON)&&
  301. (SELF.GUILD!=GIL_GOLEM)&&
  302. (SELF.GUILD!=GIL_SWAMPSHARK)&&
  303. (SELF.GUILD!=GIL_TROLL))
  304. {
  305. NPC_CLEARAIQUEUE(SELF);
  306. AI_STARTSTATE(SELF,ZS_STUNED,0,"");
  307. AI_ContinueRoutine(self);
  308. };
  309. };
  310. /*******************************************************************************************/
  311. FUNC VOID B_ASSESSMAGICRUNESWD_DESTROYUNDEAD()
  312. {
  313. ////PrintDebugNpc(PD_MAGIC,"B_assessMagicRuneSWD_Destroyundead");
  314. //Damit andere NSCs den Angriff wahrnehmen können
  315. Npc_SENDPASSIVEPERC(RUNE_SLF,PERC_ASSESSFIGHTSOUND,RUNE_SLF,other);
  316. };
  317.  
  318. /*******************************************************************************************/
  319. FUNC VOID B_ASSESSMAGICRUNESWD_WINDFIST()
  320. {
  321. ////PrintDebugNpc(PD_MAGIC,"B_assessMagicRuneSWD_Windfist");
  322. //Damit andere NSCs den Angriff wahrnehmen können
  323. Npc_SENDPASSIVEPERC(RUNE_SLF,PERC_ASSESSFIGHTSOUND,RUNE_SLF,other);
  324. };
  325.  
  326. /*******************************************************************************************/
  327. FUNC VOID B_ASSESSMAGICRUNESWD_STORMFIST()
  328. {
  329. ////PrintDebugNpc(PD_MAGIC,"B_assessMagicRuneSWD_Stormfist");
  330. //Damit andere NSCs den Angriff wahrnehmen können
  331. Npc_SENDPASSIVEPERC(RUNE_SLF,PERC_ASSESSFIGHTSOUND,RUNE_SLF,other);
  332. };
  333.  
  334. /*******************************************************************************************/
  335. FUNC VOID B_ASSESSMAGICRUNESWD_CHARM()
  336. {
  337. ////PrintDebugNpc(PD_ZS_CHECK,"B_AssessMagic Charm");
  338.  
  339. //DISABLED!
  340. Npc_SENDPASSIVEPERC(self,PERC_ASSESSFIGHTSOUND,RUNE_SLF,other);
  341.  
  342. Npc_ClearAiQueue(self); //alle Ai Befehle entfernen
  343.  
  344. IF(!Npc_ISINSTATE(self,ZS_UNCONSCIOUS))
  345. {
  346. ////PrintDebugNpc(PD_ZS_CHECK,"...NSC ist ein Mensch bei bewußtsein!");
  347.  
  348. Npc_SETTEMPATTITUDE(self,ATT_FRIENDLY);
  349. Npc_ClearAiQueue(self);
  350. Ai_StandUpQuick(self);
  351. // IF(Npc_ISINSTATE(self,ZS_ATTACK))
  352. // {
  353. // B_SAYOVERLAY(self,other,"$LetsForgetOurLittleFight");
  354. // }
  355. // ELSE
  356. // {
  357. // B_SAY(self,other,"$FriendlyGreetings");
  358. // };
  359. Ai_CONTINUEROUTINE(self);
  360. };
  361. };
  362.  
  363. /*******************************************************************************************
  364. M O V E D F R O M A S S E S S M A G I C . D
  365. /*******************************************************************************************/
  366.  
  367. VAR INT NPC_FIREWALL_ORGIN;//
  368. VAR INT GLOB_FIREWALL_BOUNCES;
  369. CONST INT GLOB_FIREWALL_MAX_BOUNCES=6;
  370.  
  371. FUNC VOID B_ASSESSMAGIC_FIREWALL_rec(VAR INT BOUNCES,var c_npc slf,var c_npc attacker)
  372. {
  373.  
  374. ////PrintDebugNpc(PD_MAGIC,"B_AssessMagic_FireWall");
  375. VAR C_NPC CASTER;
  376. GLOB_FIREWALL_BOUNCES=BOUNCES+1;
  377.  
  378. //Damit andere NSCs den Angriff wahrnehmen können
  379.  
  380. IF(BOUNCES==1)&&(!NPC_ISPLAYER(slf))&&(NPC_ISDEAD(slf))
  381. {
  382. HERO.EXP-=slf.LEVEL*30;
  383.  
  384. }
  385. ELSE IF(!NPC_ISPLAYER(slf))&&(NPC_ISDEAD(slf))
  386. {
  387. HERO.EXP-=slf.LEVEL*10;
  388. };
  389. IF(NPC_ISDEAD(slf))&&(!NPC_ISPLAYER(attacker))&&(NPC_ISPLAYER(CASTER))
  390. {
  391. //TODO: THIS FUCKING THING STINK LIKE A HELL!
  392. Npc_SetAivar(slf,AIV_DEALDAY,7654);
  393.  
  394. };
  395. CASTER=HLP_GETNPC(NPC_FIREWALL_ORGIN);
  396. //ofender - slf
  397. //victim - attacker
  398. NPC_MEMORYENTRY(MIRROR_MEMORY,2,slf,2,attacker);
  399. VAR C_NPC OTH;
  400. VAR INT P;
  401. OTH=NPC_GETNEWSVICTIM(MIRROR_MEMORY,NPC_HASNEWS(MIRROR_MEMORY,2,NULL,NULL));
  402. NPC_PERCEIVEALL(slf);
  403. WLD_DETECTNPC(slf,-1,NOFUNC,-1);
  404.  
  405. P=0;
  406. // PRINTSCREEN(CONCATSTRINGS("1-",attacker.NAME),10+(GLOB_FIREWALL_BOUNCES*5),25+(P*3),_STR_FONT_ONSCREEN,5);
  407. P+=1;
  408.  
  409. IF(NPC_ISPLAYER(other))||(NPC_ISDEAD(other))||(CMPNPC(OTH,other))//last trgt=next trgt
  410. {
  411. NPC_PERCEIVEALL(slf);
  412. WLD_DETECTNPCEX(slf,-1,NOFUNC,slf.GUILD,0);
  413. // PRINTSCREEN(CONCATSTRINGS("2-",attacker.NAME),10+(GLOB_FIREWALL_BOUNCES*5),25+(P*3),_STR_FONT_ONSCREEN,5);
  414. P+=1;
  415. };
  416. IF(NPC_ISPLAYER(other))||(NPC_ISDEAD(other))||(CMPNPC(OTH,other))
  417. {
  418. NPC_PERCEIVEALL(slf);
  419. WLD_DETECTNPCEX(slf,-1,ZS_ATTACK,-1,0);
  420. // PRINTSCREEN(CONCATSTRINGS("3-",attacker.NAME),10+(GLOB_FIREWALL_BOUNCES*5),25+(P*3),_STR_FONT_ONSCREEN,5);
  421. P+=1;
  422. };
  423. IF(NPC_ISPLAYER(other))||(CMPNPC(OTH,other))
  424. {
  425. NPC_PERCEIVEALL(slf);
  426. WLD_DETECTNPCEX(slf,-1,ZS_DEAD,-1,0);
  427. // PRINTSCREEN(CONCATSTRINGS("4-",attacker.NAME),10+(GLOB_FIREWALL_BOUNCES*5),25+(P*3),_STR_FONT_ONSCREEN,5);
  428. P+=1;
  429. };
  430. IF(CMPNPC(OTH,other))
  431. {
  432. NPC_PERCEIVEALL(slf);
  433. WLD_DETECTNPCEX(slf,-1,NOFUNC,slf.GUILD+1,0);
  434. // PRINTSCREEN(CONCATSTRINGS("5-",attacker.NAME),10+(GLOB_FIREWALL_BOUNCES*5),25+(P*3),_STR_FONT_ONSCREEN,5);
  435. P+=1;
  436. NPC_PERCEIVEALL(slf);
  437. WLD_DETECTNPCEX(slf,-1,NOFUNC,slf.GUILD-1,0);
  438. // PRINTSCREEN(CONCATSTRINGS("6-",attacker.NAME),10+(GLOB_FIREWALL_BOUNCES*5),25+(P*3),_STR_FONT_ONSCREEN,5);
  439. P+=1;
  440. };
  441. //Damit andere NSCs den Angriff wahrnehmen können
  442.  
  443. //
  444.  
  445. IF((GLOB_FIREWALL_BOUNCES!=GLOB_FIREWALL_MAX_BOUNCES)&&(!CMPNPC(OTH,other)))||((NPC_ISPLAYER(other))&&(NPC_ISPLAYER(slf)))
  446. {
  447. NPC_PERCDISABLE(other,PERC_ASSESSDAMAGE);
  448. NPC_PERCDISABLE(slf,PERC_ASSESSDAMAGE);
  449. NPC_PERCDISABLE(other,PERC_ASSESSCASTER);
  450. NPC_PERCDISABLE(slf,PERC_ASSESSCASTER);
  451. NPC_PERCENABLE(other,PERC_ASSESSMAGIC,B_ASSESSMAGIC);
  452. NPC_PERCENABLE(slf,PERC_ASSESSMAGIC,B_ASSESSMAGIC);
  453.  
  454. NPC_CLEARAIQUEUE(slf);
  455. WLD_PLAYEFFECT("spellFX_FireWall",slf,other,1,3*SPL_DAMAGE_FIREWALL,DAM_MAGIC,TRUE);
  456. }
  457. ELSE IF(GLOB_FIREWALL_BOUNCES!=GLOB_FIREWALL_MAX_BOUNCES)
  458. {
  459. NPC_CLEARAIQUEUE(slf);
  460. WLD_PLAYEFFECT("spellFX_FireWall",slf,other,1,3*SPL_DAMAGE_FIREWALL,DAM_MAGIC,TRUE);
  461.  
  462. }
  463. ELSE
  464. {
  465. GLOB_FIREWALL_BOUNCES=0;
  466. };
  467. IF(!NPC_ISDEAD(slf))
  468. {
  469. //B_FullStop (slf);
  470. AI_WAIT(slf,1);
  471. //AI_StartState (slf, ZS_MultiMissled, 0, "");
  472. };
  473. //Attack hero
  474. NPC_SENDPASSIVEPERC(slf,PERC_ASSESSFIGHTSOUND,slf,CASTER);
  475.  
  476. };
  477.  
  478.  
  479. //original func used by assesMagic too
  480. func void B_ASSESSMAGIC_FIREWALL(VAR INT BOUNCES)
  481. {
  482. B_ASSESSMAGIC_FIREWALL_rec(BOUNCES,self,other);
  483. };
  484.  
  485. /*******************************************************************************************/
  486. FUNC VOID B_ASSESSMAGICRUNESWD_SLEEP()
  487. {
  488. ////PrintDebugNpc(PD_MAGIC,"...Sleep");
  489. Npc_ClearAiQueue(self);
  490. Npc_PERCDISABLE(self,PERC_ASSESSCASTER);
  491. //Damit andere NSCs den Angriff wahrnehmen können
  492. Npc_SENDPASSIVEPERC(self,PERC_ASSESSFIGHTSOUND,self,other);
  493. IF(!Npc_ISDEAD(self)&& !Npc_ISINSTATE(self,ZS_UNCONSCIOUS))
  494. {
  495. ////PrintDebugNpc(PD_MAGIC,"...weder bewußtlos noch tot!");
  496. Ai_STARTSTATE(self,ZS_MAGICSLEEP,1,"");
  497. };
  498. };
  499. /*******************************************************************************************/
  500. FUNC VOID B_ASSESSMAGICRUNESWD_PYROKINESIS(var c_npc slf)
  501. {
  502. ////PrintDebugNpc(PD_MAGIC,"...Pyrokinesis");
  503. Npc_ClearAiQueue(slf);
  504. Npc_PERCDISABLE(slf,PERC_ASSESSCASTER);
  505. //Damit andere NSCs den Angriff wahrnehmen können
  506. Npc_SENDPASSIVEPERC(slf,PERC_ASSESSFIGHTSOUND,slf,other);
  507. IF(!Npc_ISDEAD(slf)&& !Npc_ISINSTATE(slf,ZS_UNCONSCIOUS))
  508. {
  509. ////PrintDebugNpc(PD_MAGIC,"...weder bewußtlos noch tot!");
  510. Npc_ClearAiQueue(slf);
  511. Ai_StandUpQuick(slf);
  512. Ai_STARTSTATE(slf,ZS_PyroRS,0,"");
  513. };
  514. };
  515.  
  516. /*******************************************************************************************/
  517. FUNC VOID B_ASSESSMAGICRUNESWD_BREATHOFDEATH()
  518. {
  519. ////PrintDebugNpc(PD_MAGIC,"B_assessMagicRuneSWD_Breathofdeath");
  520. //Damit andere NSCs den Angriff wahrnehmen können
  521. Npc_SENDPASSIVEPERC(self,PERC_ASSESSFIGHTSOUND,self,other);
  522. };
  523.  
  524. /*******************************************************************************************/
  525. FUNC VOID B_ASSESSMAGIC_RUNESWD()
  526. {
  527.  
  528. VAR C_Npc RUNENOW;
  529. RUNENOW =HLP_GETNpc(RUNESWORD_NOW);
  530. // IF(RUNESWD_EXP==ITARRUNEFIREBOLT){ B_ASSESSMAGICRUNESWD_FIREBOLT(); }
  531. // ELSE IF(RUNESWD_EXP==ITARRUNEFIREBALL){ B_ASSESSMAGICRUNESWD_FIREBALL(); }
  532. // ELSE IF(RUNESWD_EXP==ITARRUNEFIRESTORM){ B_ASSESSMAGICRUNESWD_FIRESTORM(); }
  533. // ELSE IF(RUNESWD_EXP==ITARRUNEFIRERAiN){ B_ASSESSMAGICRUNESWD_FIRERAiN(); }
  534.  
  535. // Reason: no assesMagic sent
  536. // ELSE IF(RUNESWD_EXP==ITARRUNEHOLYFIRE){ B_ASSESSMAGICRUNESWD_HOLYFIRE(); }
  537. IF(RUNESWD_EXP==RuneID_ICECUBE ){ B_ASSESSMAGICRUNESWD_ICECUBE(self); }
  538. ELSE IF(RUNESWD_EXP==RuneID_ICEWAVE) { B_ASSESSMAGICRUNESWD_ICECUBE(self); }
  539. ELSE IF(RUNESWD_EXP==RuneID_StuningBall){ B_ASSESSMAGIC_STUNINGBALL(); }
  540. ELSE IF(RUNESWD_EXP==RuneID_Sleep) { B_ASSESSMAGICRUNESWD_SLEEP(); }
  541.  
  542. ELSE IF(RUNESWD_EXP==RuneID_Chainlightning){ B_ASSESSMAGICRUNESWD_CHAiNLIGHTNING(self); }
  543. ELSE IF(RUNESWD_EXP==RuneID_THUNDERBALL){ B_ASSESSMAGICRUNESWD_THUNDERBALL(); }
  544.  
  545. ELSE IF(RUNESWD_EXP==ITARRUNEDESTROYUNDEAD){ B_ASSESSMAGICRUNESWD_DESTROYUNDEAD(); }
  546.  
  547. ELSE IF(RUNESWD_EXP==ITARRUNEWINDFIST){ B_ASSESSMAGICRUNESWD_WINDFIST(); }
  548. ELSE IF(RUNESWD_EXP==ITARRUNESTORMFIST){ B_ASSESSMAGICRUNESWD_STORMFIST(); }
  549. //else if (RuneSWD_exp==ItArRuneCharm) { B_assessMagicRuneSWD_Charm (); }
  550. //else if (RuneSWD_exp==ItArRuneSleep) { B_assessMagicRuneSWD_Sleep (); }
  551. ELSE IF(RUNESWD_EXP==ITARRUNEBREATHOFDEATH){ B_ASSESSMAGICRUNESWD_BREATHOFDEATH(); };
  552.  
  553.  
  554. };
  555.  
  556.  
  557. //*******************************************************
  558. //**** R U N E S W O R D R U N E S H A N D L E ******
  559. //**** R U N E S W O R D R U N E S H A N D L E ******
  560. //**** R U N E S W O R D R U N E S H A N D L E ******
  561. //*******************************************************
  562. //runesword runes handle
  563.  
  564. func int RS_HasRSInInventory()
  565. {
  566. var int ret;
  567. ret = 0;
  568.  
  569. if ((Npc_HasItems(hero,ItMw_1H_RuneSWD_01)) || (Npc_HasItems(hero,ItMw_1H_RuneSWD_DARK)) || (Npc_HasItems(hero,ItMw_1H_RuneSWD_FIRE))
  570. || (Npc_HasItems(hero,ItMw_1H_RuneSWD_LIGHT)) || (Npc_HasItems(hero,ItMw_1H_RuneSWD_WATER)))
  571. {
  572. ret = 1;
  573. }
  574. else if(Npc_HasItems(hero,ItMw_1H_RuneSWD_PSI))
  575. {
  576. ret = 2;
  577. };
  578.  
  579. if ((Npc_HasItems(hero,ItMw_2h_RuneSWD_01)) || (Npc_HasItems(hero,ItMw_2h_RuneSWD_DARK)) || (Npc_HasItems(hero,ItMw_2h_RuneSWD_FIRE))
  580. || (Npc_HasItems(hero,ItMw_2h_RuneSWD_LIGHT)) || (Npc_HasItems(hero,ItMw_2h_RuneSWD_WATER)) || (Npc_HasItems(hero,ItMw_2h_RuneSWD_PSI)))
  581. {
  582. ret = 2;
  583. };
  584.  
  585. return ret;
  586. };
  587.  
  588. func VOID EVT_RUNESWD_CHARGING()
  589. {
  590. if(RuneCharge<RuneChargeMax)
  591. {
  592. RuneCharge=RuneCharge+2;
  593. if(RuneCharge>=RuneChargeMax)
  594. {
  595. RuneCharge=RuneChargeMax;
  596. };
  597. };
  598. };
  599.  
  600. func void RUNESWD_DMG_TRIGGER_FUNC()
  601. {
  602. var C_Npc runenow;
  603. runenow = Hlp_GetNpc(RuneSword_Now);
  604. //B_SpellHurtNpc (RUNE_SLF,RUNE_ATTACKER,RuneSWD_voice,RuneSWD_Npctype);
  605. };
  606.  
  607. func void RS_SpecialDamage(var C_Npc slf,var C_Npc attacker)
  608. {
  609. var C_ITEM readyweap;
  610. readyweap = Npc_GetReadiedWeapon(attacker);
  611. RuneSwdSendAssesMagic=TRUE;
  612. if (
  613. (
  614. (Hlp_IsItem(readyweap,ItMw_1H_RuneSWD_01))||
  615. (Hlp_IsItem(readyweap,ItMw_1H_RuneSWD_FIRE))||
  616. (Hlp_IsItem(readyweap,ItMw_1H_RuneSWD_DARK))||
  617. (Hlp_IsItem(readyweap,ItMw_1H_RuneSWD_LIGHT))||
  618. (Hlp_IsItem(readyweap,ItMw_1H_RuneSWD_WATER))||
  619. (Hlp_IsItem(readyweap,ItMw_1H_RuneSWD_PSI))
  620.  
  621. )
  622. ||//OR 2H
  623. (
  624. (Hlp_IsItem(readyweap,ItMw_2H_RuneSWD_01))||
  625. (Hlp_IsItem(readyweap,ItMw_2H_RuneSWD_FIRE))||
  626. (Hlp_IsItem(readyweap,ItMw_2H_RuneSWD_DARK))||
  627. (Hlp_IsItem(readyweap,ItMw_2H_RuneSWD_LIGHT))||
  628. (Hlp_IsItem(readyweap,ItMw_2H_RuneSWD_WATER))||
  629. (Hlp_IsItem(readyweap,ItMw_2H_RuneSWD_PSI))
  630. )
  631. )//&&((C_BodyStateContAins(slf,BS_STUMBLE))||(C_BodyStateContAins(slf,BS_STUMBLE))||(C_BodyStateContAins(slf,BS_STUMBLE)))
  632. {
  633. // if(slf.attribute[ATR_HITPOINTS]>0)
  634. // {
  635. //slf.attribute[ATR_HITPOINTS]+=40;
  636. if (Npc_GetBodyState(hero)==32794)&&(DontSendCritical!=TRUE)/*&&(!C_NpcIsDown(self))*/&&(RuneCharge-RuneSWD_flags>0)&&(Hlp_Random(100)<RuneSwdCriticalChance)&&(RuneSWD_exp!=0)&&(RuneSWD_exp!=RuneID_Light)//&&(Critical_LastHitID!=HeroDamage_DamageID
  637. {
  638. RuneCharge=RuneCharge-RuneSWD_flags;
  639. Critical_LastHitID=HeroDamage_DamageID;
  640. RuneSwd_User = Hlp_GetInstanceID(attacker);
  641.  
  642. print("Critical!");
  643.  
  644. /*AoE*/ if (RuneSWD_exp==RuneID_Firestorm) {RuneSwdSendAssesMagic=FALSE; attacker.flags = Npc_FLAG_IMMORTAL; Wld_PlayEffect(RuneSWD_slot, attacker, slf, 1, RuneSWD_voice, RuneSWD_Npctype, 0); attacker.flags = 0;}
  645.  
  646. /*ZSDmgOnAssesMagic*/ else if (RuneSWD_exp==RuneID_Thunderball) {B_SpellHurtNpc (slf,attacker,RuneSWD_voice,RuneSWD_Npctype); Wld_PlayEffect(RuneSWD_slot, attacker, slf, 0, 1, RuneSWD_Npctype, 1);}
  647. /*ZSDmgOnAssesMagic*/ else if (RuneSWD_exp==RuneID_Thunder) {B_SpellHurtNpc (slf,attacker,RuneSWD_voice,RuneSWD_Npctype); Wld_PlayEffect(RuneSWD_slot, slf, slf, 0, 1, RuneSWD_Npctype, 1);}
  648. /*ZSDmgOnAssesMagic*/ else if (RuneSWD_exp==RuneID_Icecube) { B_SpellHurtNpc (slf,attacker,RuneSWD_voice,RuneSWD_Npctype); Wld_PlayEffect(RuneSWD_slot, attacker, slf, 0, 1, RuneSWD_Npctype, 1); B_ASSESSMAGICRUNESWD_ICECUBE(slf);}
  649. /*ZSDmgOnAssesMagic*/ else if (RuneSWD_exp==RuneID_FireWall)
  650. {
  651. npc_firewall_orgin=Hlp_GetInstanceID(attacker);
  652. glob_firewall_bounces=0;
  653. B_SpellHurtNpc (slf,attacker,RuneSWD_voice,RuneSWD_Npctype);
  654. B_ASSESSMAGIC_FIREWALL_rec(0,slf,attacker);
  655. Wld_PlayEffect(RuneSWD_slot, attacker, slf, 0, 1, RuneSWD_Npctype, 1);
  656. }
  657. /*NoDmg*/else if (RuneSWD_exp==RuneID_StuningBall)
  658. {
  659. Wld_PlayEffect(RuneSWD_slot, attacker, slf, 1, 1, 2, 1);
  660. }
  661. /*AoE*/else if (RuneSWD_exp==RuneID_IceWave)
  662. {
  663. Wld_PlayEffect(RuneSWD_slot, attacker, slf, 1, RuneSWD_voice, RuneSWD_Npctype, 1);
  664. }
  665. /*AoE*/else if (RuneSWD_exp==RuneID_Meteor)
  666. {
  667. Wld_PlayEffect(RuneSWD_slot, attacker, slf, 2, RuneSWD_voice, RuneSWD_Npctype, 1);
  668. Wld_PlayEffect("spellFX_Meteor_REDGLOW",attacker,slf,2,0,200,1);
  669. Wld_PlayEffect("spellFX_Meteor_SMOKE",attacker,slf,2,1,DAM_FLY,1);
  670. //Wld_PlayEffect("spellFX_INVISIBLEDMG_Fireball", attacker, slf, 2, 200, DAM_FIRE, TRUE);
  671. }
  672. //life drain
  673. else if (RuneSWD_exp==RuneID_LifeDrain)
  674. {
  675. Wld_PlayEffect(RuneSWD_slot, slf, slf, 0, 0, 0, 0);
  676. Wld_PlayEffect("spellFX_LifeDrain_INCOME",attacker,attacker,2,0,0,0);
  677.  
  678. const int hp_stole = 75;
  679. const int hp_income = 37;
  680.  
  681. if(attacker.attribute[ATR_HITPOINTS]+hp_income<=attacker.attribute[ATR_HITPOINTS_MAX])
  682. {
  683. attacker.attribute[ATR_HITPOINTS]+=hp_income;
  684. }
  685. else if(attacker.attribute[ATR_HITPOINTS]+hp_income>attacker.attribute[ATR_HITPOINTS_MAX])
  686. {
  687. attacker.attribute[ATR_HITPOINTS]=attacker.attribute[ATR_HITPOINTS_MAX];
  688. };
  689.  
  690. if(slf.attribute[ATR_HITPOINTS]-hp_stole>=1)
  691. {
  692. slf.attribute[ATR_HITPOINTS]-=hp_stole;
  693. }
  694. else if(slf.attribute[ATR_HITPOINTS]-hp_stole<1)
  695. {
  696. slf.attribute[ATR_HITPOINTS]=1; Npc_ClearAiQueue(slf);
  697. };
  698. } /*SpecialDmgOnAssesMagic*/
  699. else if (RuneSWD_exp==RuneID_Destroyundead)
  700. {
  701. if(C_Npcisundead(slf))
  702. {
  703. B_SpellHurtNpc (slf,attacker,RuneSWD_voice,RuneSWD_Npctype);
  704. Wld_PlayEffect(RuneSWD_slot, slf, attacker, 0, 1, RuneSWD_Npctype, 1);
  705. };
  706. } //ItArRuneThunder /*AoE*/
  707. else if (RuneSWD_exp==RuneID_Stormfist)
  708. {
  709. RuneSwdSendAssesMagic=FALSE;
  710. attacker.flags = Npc_FLAG_IMMORTAL;
  711. Wld_PlayEffect(RuneSWD_slot, attacker, attacker, 1, RuneSWD_voice, RuneSWD_Npctype, 0);
  712. attacker.flags = 0;
  713. }
  714. //Disabled, problem with working/*NoDMG*/ else if (RuneSWD_exp==RuneID_Sleep) {Wld_PlayEffect(RuneSWD_slot, slf, attacker, 0, 1, DAM_MAGIC, 0); }
  715. /*NormalDmgOnAssesMagic*/ else if (RuneSWD_exp==RuneID_Windfist) { RuneSwdSendAssesMagic=FALSE; B_SpellHurtNpc (slf,attacker,RuneSWD_voice,RuneSWD_Npctype); B_SpellHurtNpc (slf,attacker,RuneSWD_voice,RuneSWD_Npctype); Wld_PlayEffect(RuneSWD_slot, slf, slf, 1, 0, RuneSWD_Npctype, 0); /*B_AssessMagic_Windfist (); */}
  716. /*NoDMG*/ else if (RuneSWD_exp==RuneID_Heal) { return;}
  717. /*AoE*/ else if (RuneSWD_exp==RuneID_FireRain) {RuneSwdSendAssesMagic=FALSE; attacker.flags = Npc_FLAG_IMMORTAL; Wld_PlayEffect(RuneSWD_slot, attacker, attacker, 1, RuneSWD_voice, RuneSWD_Npctype, 0); attacker.flags = 0;}
  718. /*ZSDmgOnAssesMagic*/ else if (RuneSWD_exp==RuneID_Chainlightning)
  719. {
  720. B_SpellHurtNpc (slf,attacker,RuneSWD_voice,RuneSWD_Npctype);
  721. Wld_PlayEffect(RuneSWD_slot, slf, slf, 0, 1, RuneSWD_Npctype, 0);
  722. B_ASSESSMAGICRUNESWD_CHAiNLIGHTNING(slf);
  723. }
  724. /*ItArRuneHolyFire*/ else if (RuneSWD_exp==RuneID_HolyFire)
  725. {
  726. B_ASSESSMAGICRUNESWD_HOLYFIRE(attacker,slf); RuneSwdSendAssesMagic=FALSE;
  727. Wld_PlayEffect(RuneSWD_slot, slf, slf, 0, 1, RuneSWD_Npctype, 1);
  728. }
  729. /*ZSDmgOnAssesMagic*/ else if (RuneSWD_exp==RuneID_Pyrokinesis) { B_AssessMagicRuneSWD_Pyrokinesis (slf); RuneSwdSendAssesMagic=FALSE; Wld_PlayEffect(RuneSWD_slot, slf, slf, 0, 1, RuneSWD_Npctype, 1);}
  730. /*ZSDmgOnAssesMagic*/ else if (RuneSWD_exp==RuneID_Curse) {RuneSwdSendAssesMagic=FALSE; Wld_PlayEffect(RuneSWD_slot, slf, slf, 0, 1, RuneSWD_Npctype, 1); add_Curse(slf, slf);}
  731. else
  732. {
  733. Wld_PlayEffect(RuneSWD_slot, attacker, slf, 0, 1, RuneSWD_Npctype, 1);
  734. B_SpellHurtNpc (slf,attacker,RuneSWD_voice,RuneSWD_Npctype);
  735. };
  736. //BugFiX
  737.  
  738. DontSendCritical=TRUE;
  739. };
  740. // }; // Hitpoints > 0
  741. };
  742. };
  743.  
  744. func void RS_ExchangeSwd_Part1(var int Type)
  745. {
  746. var int tmp_RUNE_SWD_EQUIPED;
  747. tmp_RUNE_SWD_EQUIPED = RUNE_SWD_EQUIPED;
  748.  
  749. if(RUNE_SWD_EQUIPED==1)
  750. {
  751. if(Npc_HasItems(hero,ItMw_1H_RuneSWD_01))
  752. {
  753. Npc_RemoveInvItem(hero,ItMw_1H_RuneSWD_01);
  754. }
  755. if(Npc_HasItems(hero,ItMw_1H_RuneSWD_DARK))
  756. {
  757. Npc_RemoveInvItem(hero,ItMw_1H_RuneSWD_DARK);
  758. };
  759. if(Npc_HasItems(hero,ItMw_1H_RuneSWD_FIRE))
  760. {
  761. Npc_RemoveInvItem(hero,ItMw_1H_RuneSWD_FIRE);
  762. };
  763. if(Npc_HasItems(hero,ItMw_1H_RuneSWD_LIGHT))
  764. {
  765. Npc_RemoveInvItem(hero,ItMw_1H_RuneSWD_LIGHT);
  766. };
  767. if(Npc_HasItems(hero,ItMw_1H_RuneSWD_WATER))
  768. {
  769. Npc_RemoveInvItem(hero,ItMw_1H_RuneSWD_WATER);
  770. };
  771. if(Npc_HasItems(hero,ItMw_1H_RuneSWD_PSI))
  772. {
  773. Npc_RemoveInvItem(hero,ItMw_1H_RuneSWD_PSI);
  774. };
  775. }
  776. else if(RUNE_SWD_EQUIPED==2)
  777. {
  778. if(Npc_HasItems(hero,ItMw_2h_RuneSWD_01))
  779. {
  780. Npc_RemoveInvItem(hero,ItMw_2h_RuneSWD_01);
  781. };
  782. if(Npc_HasItems(hero,ItMw_2h_RuneSWD_DARK))
  783. {
  784. Npc_RemoveInvItem(hero,ItMw_2h_RuneSWD_DARK);
  785. };
  786. if(Npc_HasItems(hero,ItMw_2h_RuneSWD_FIRE))
  787. {
  788. Npc_RemoveInvItem(hero,ItMw_2h_RuneSWD_FIRE);
  789. };
  790. if(Npc_HasItems(hero,ItMw_2h_RuneSWD_LIGHT))
  791. {
  792. Npc_RemoveInvItem(hero,ItMw_2h_RuneSWD_LIGHT);
  793. };
  794. if(Npc_HasItems(hero,ItMw_2h_RuneSWD_WATER))
  795. {
  796. Npc_RemoveInvItem(hero,ItMw_2h_RuneSWD_WATER);
  797. };
  798. if(Npc_HasItems(hero,ItMw_2h_RuneSWD_PSI))
  799. {
  800. Npc_RemoveInvItem(hero,ItMw_2h_RuneSWD_PSI);
  801. };
  802. };
  803. RUNE_SWD_EQUIPED = tmp_RUNE_SWD_EQUIPED;
  804.  
  805. if(RUNE_SWD_EQUIPED==1)
  806. {
  807. if(Type==0)
  808. {
  809. CreateInvItem(hero,ItMw_1H_RuneSWD_01);
  810. B_EquipItem(hero,ItMw_1H_RuneSWD_01);
  811. }
  812. else if(Type==1)
  813. {
  814. CreateInvItem(hero,ItMw_1H_RuneSWD_DARK);
  815. B_EquipItem(hero,ItMw_1H_RuneSWD_DARK);
  816. }
  817. else if(Type==2)
  818. {
  819. CreateInvItem(hero,ItMw_1H_RuneSWD_FIRE);
  820. B_EquipItem(hero,ItMw_1H_RuneSWD_FIRE);
  821. }
  822. else if(Type==3)
  823. {
  824. CreateInvItem(hero,ItMw_1H_RuneSWD_LIGHT);
  825. B_EquipItem(hero,ItMw_1H_RuneSWD_LIGHT);
  826. }
  827. else if(Type==4)
  828. {
  829. CreateInvItem(hero,ItMw_1H_RuneSWD_WATER);
  830. B_EquipItem(hero,ItMw_1H_RuneSWD_WATER);
  831. }
  832. else if(Type==5)
  833. {
  834. CreateInvItem(hero,ItMw_1H_RuneSWD_PSI);
  835. B_EquipItem(hero,ItMw_1H_RuneSWD_PSI);
  836. }
  837. else if(Type==6)
  838. {
  839. CreateInvItem(hero,ItMw_1H_RuneSWD_PSI);
  840. B_EquipItem(hero,ItMw_1H_RuneSWD_PSI);
  841. }
  842. else
  843. {
  844. CreateInvItem(hero,ItMw_1H_RuneSWD_WATER);
  845. B_EquipItem(hero,ItMw_1H_RuneSWD_WATER);
  846. };
  847. }
  848. else if(RUNE_SWD_EQUIPED==2)
  849. {
  850. if(Type==0)
  851. {
  852. CreateInvItem(hero,ItMw_2H_RuneSWD_01);
  853. B_EquipItem(hero,ItMw_2H_RuneSWD_01);
  854. }
  855. else if(Type==1)
  856. {
  857. CreateInvItem(hero,ItMw_2H_RuneSWD_DARK);
  858. B_EquipItem(hero,ItMw_2H_RuneSWD_DARK);
  859. }
  860. else if(Type==2)
  861. {
  862. CreateInvItem(hero,ItMw_2H_RuneSWD_FIRE);
  863. B_EquipItem(hero,ItMw_2H_RuneSWD_FIRE);
  864. }
  865. else if(Type==3)
  866. {
  867. CreateInvItem(hero,ItMw_2H_RuneSWD_LIGHT);
  868. B_EquipItem(hero,ItMw_2H_RuneSWD_LIGHT);
  869. }
  870. else if(Type==4)
  871. {
  872. CreateInvItem(hero,ItMw_2H_RuneSWD_WATER);
  873. B_EquipItem(hero,ItMw_2H_RuneSWD_WATER);
  874. }
  875. else if(Type==5)
  876. {
  877. CreateInvItem(hero,ItMw_2H_RuneSWD_PSI);
  878. B_EquipItem(hero,ItMw_2H_RuneSWD_PSI);
  879. }
  880. else if(Type==6)
  881. {
  882. CreateInvItem(hero,ItMw_2H_RuneSWD_PSI);
  883. B_EquipItem(hero,ItMw_2H_RuneSWD_PSI);
  884. }
  885. else
  886. {
  887. CreateInvItem(hero,ItMw_2H_RuneSWD_WATER);
  888. B_EquipItem(hero,ItMw_2H_RuneSWD_WATER);
  889. };
  890. };
  891. };
  892.  
  893. //Changing runeID => ItemID
  894. func int RuneIDtoItemID(var int RuneID)
  895. {
  896. if(RuneID==RuneID_Light ) { return ItArRuneLight; }
  897. else if(RuneID==RuneID_FireBolt ) { return ItArRuneFireBolt; }
  898. else if(RuneID==RuneID_ThunderBolt ) { return ItArRuneThunderBolt; }
  899.  
  900. else if(RuneID==RuneID_Sleep ) { return ItArRuneSleep; }
  901. else if(RuneID==RuneID_WindFist ) { return ItArRuneWindFist; }
  902. else if(RuneID==RuneID_Heal ) { return ItArRuneHeal; }
  903. else if(RuneID==RuneID_StuningBall ) { return ItArRuneStuningBall; }
  904.  
  905. else if(RuneID==RuneID_IceCube ) { return ItArRuneIceCube; }
  906. else if(RuneID==RuneID_ThunderBall ) { return ItArRuneThunderBall; }
  907. else if(RuneID==RuneID_Charm ) { return ItArRuneCharm; }
  908. else if(RuneID==RuneID_Pyrokinesis ) { return ItArRunePyrokinesis; }
  909. else if(RuneID==RuneID_FireBall ) { return ItArRuneFireBall; }
  910. else if(RuneID==RuneID_FireWall ) { return ItArRuneFireWall; }
  911. else if(RuneID==RuneID_LifeDrain ) { return ItArRuneLifeDrain; }
  912. else if(RuneID==RuneID_Curse ) { return ItArRuneCurse; }
  913.  
  914. else if(RuneID==RuneID_ChainLightning) { return ItArRuneChainLightning; }
  915. else if(RuneID==RuneID_FireStorm ) { return ItArRuneFireStorm; }
  916. else if(RuneID==RuneID_stormfist ) { return ItArRunestormfist; }
  917. else if(RuneID==RuneID_destroyundead ) { return ItArRunedestroyundead; }
  918. else if(RuneID==RuneID_HolyFire ) { return ItArRuneHolyFire; }
  919.  
  920. else if(RuneID==RuneID_IceWave ) { return ItArRuneIceWave; }
  921. else if(RuneID==RuneID_FireRain ) { return ItArRuneFireRain; }
  922. else if(RuneID==RuneID_Thunder ) { return ItArRuneThunder; }
  923.  
  924. else if(RuneID==RuneID_BreathofDeath ) { return ItArRuneBreathofDeath; }
  925. else if(RuneID==RuneID_Meteor ) { return ItArRuneMeteor; };
  926.  
  927. return 0;
  928. };
  929.  
  930. const int runeManaToRuneSwdMana_Scale = 4;
  931. // f.e if rune mana needed = 40 then rswd mana = 40/4 = 10;
  932. func void RS_TransferToUsingRune(var C_Npc rune)
  933. {
  934. //check conditions:
  935. var int needed_circle;
  936. needed_circle = RuneIDtoItemID(rune.exp);
  937. Npc_GetInvItem(hero,needed_circle);
  938. needed_circle = item.mag_circle;
  939.  
  940. if(Npc_GetAivar(hero,TALENT_MAGIC_CIRCLE)<needed_circle)&&(!TALENT_RUNESWORDUSING)
  941. {
  942. G_CanNotCast(true,needed_circle,Npc_GetAivar(hero,TALENT_MAGIC_CIRCLE));
  943. return;
  944. };
  945.  
  946. if(RuneSWD_exp!=0)//Some rune equiped
  947. {
  948. CreateInvItem(hero,RuneIDtoItemID(RuneSWD_exp));
  949. };
  950.  
  951. RuneSWD_name = "";
  952. RuneSWD_slot = "";
  953. RuneSWD_spawnPoint = "";
  954. RuneSWD_wp = "";
  955. RuneSWD_exp = 0;
  956. RuneSWD_flags = 0;
  957. RuneSWD_voice = 0;
  958. RuneSWD_lp = 0;
  959. RuneSWD_Npctype = 0;
  960. //assigment new atributes
  961. RuneSWD_exp = rune.exp;
  962. RuneSWD_name = rune.name;
  963. RuneSWD_slot = rune.slot;
  964. RuneSWD_spawnPoint = rune.spawnpoint;
  965. RuneSWD_wp = rune.wp;
  966. RuneSWD_flags = rune.flags/runeManaToRuneSwdMana_Scale;
  967. RuneSWD_flags = RuneSWD_flags - (RuneSWD_flags%1);
  968. RuneSWD_voice = rune.voice;
  969. RuneSWD_lp = rune.lp;
  970. RuneSWD_Npctype = rune.Npctype;
  971. Npc_RemoveInvItem(hero,RuneIDtoItemID(rune.exp));
  972.  
  973. RS_ExchangeSwd_Part1(RuneSWD_lp);
  974. };
  975.  
  976. func void RS_PrintActualRuneAttribs()
  977. {
  978. printdebug_s_i("Runesword_Rune.exp = ",RuneSWD_exp);
  979. printdebug_ss("Runesword_Rune.name = ",RuneSWD_name);
  980. printdebug_ss("Runesword_Rune.slot = ",RuneSWD_slot);
  981. printdebug_ss("Runesword_Rune.spawnPoint = ",RuneSWD_spawnPoint);
  982. printdebug_ss("Runesword_Rune.wp = ",RuneSWD_wp);
  983. printdebug_s_i("Runesword_Rune.flags = ",RuneSWD_flags);
  984. printdebug_s_i("Runesword_Rune.voice = ",RuneSWD_voice);
  985. printdebug_s_i("Runesword_Rune.lp = ",RuneSWD_lp);
  986. printdebug_s_i("Runesword_Rune.Npctype = ",RuneSWD_Npctype);
  987. };
  988.  
  989. func void RS_PlayAuraOnSwdReady(var int RuneType)//On Equip
  990. {
  991. if(RUNE_SWD_EQUIPED==1)
  992. {
  993. if(RuneType==0)
  994. {
  995. //Neutral, no VFX
  996. }
  997. else if(RuneType==1)
  998. {
  999. Wld_PlayEffect("ItemFX_DarkAura1HReady", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1000. Wld_PlayEffect("ItemFX_DarkAura1H_2_Ready", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1001. Wld_PlayEffect("ItemFX_DarkAura1H_3_Ready", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1002. Wld_PlayEffect("ItemFX_DarkAura1H_4_Ready", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1003. }
  1004. else if(RuneType==2)
  1005. {
  1006. Wld_PlayEffect("ItemFX_FireAura1HReady", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1007. Wld_PlayEffect("ItemFX_FireAura1H_2_Ready", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1008. Wld_PlayEffect("ItemFX_FireAura1H_3_Ready", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1009. Wld_PlayEffect("ItemFX_FireAura1H_4_Ready", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1010. }
  1011. else if(RuneType==3)
  1012. {
  1013. Wld_PlayEffect("ItemFX_LightAura1HReady", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1014. Wld_PlayEffect("ItemFX_LightAura1H_2_Ready", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1015. Wld_PlayEffect("ItemFX_LightAura1H_3_Ready", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1016. }
  1017. else if(RuneType==4)
  1018. {
  1019. Wld_PlayEffect("ItemFX_WaterAura1HReady", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1020. Wld_PlayEffect("ItemFX_WaterAura1H_2_Ready", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1021. Wld_PlayEffect("ItemFX_WaterAura1H_3_Ready", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1022. Wld_PlayEffect("ItemFX_WaterAura1H_4_Ready", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1023. }
  1024. else if(RuneType==5)
  1025. {
  1026. Wld_PlayEffect("ItemFX_WindAura1HReady", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1027. Wld_PlayEffect("ItemFX_WindAura1H_2_Ready", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1028. Wld_PlayEffect("ItemFX_WindAura1H_3_Ready", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1029.  
  1030. }
  1031. else if(RuneType==6)
  1032. {
  1033. Wld_PlayEffect("ItemFX_PSIAura1hReady", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1034. Wld_PlayEffect("ItemFX_PSIAura1h_2_Ready", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1035. }
  1036. else if(RuneType==7)
  1037. {
  1038. Wld_PlayEffect("ItemFX_HEALAura1hReady", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1039. Wld_PlayEffect("ItemFX_WaterAura1H_4_Ready", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1040. };
  1041. }
  1042. else if(RUNE_SWD_EQUIPED==2)
  1043. {
  1044. if(RuneType==0)
  1045. {
  1046. //Neutral, no VFX
  1047. }
  1048. else if(RuneType==1)
  1049. {
  1050. Wld_PlayEffect("ItemFX_DarkAura2HReady", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1051. Wld_PlayEffect("ItemFX_DarkAura2H_2_Ready", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1052. Wld_PlayEffect("ItemFX_DarkAura2H_3_Ready", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1053. Wld_PlayEffect("ItemFX_DarkAura2H_4_Ready", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1054. }
  1055. else if(RuneType==2)
  1056. {
  1057. Wld_PlayEffect("ItemFX_FireAura2HReady", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1058. Wld_PlayEffect("ItemFX_FireAura2H_2_Ready", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1059. Wld_PlayEffect("ItemFX_FireAura2H_3_Ready", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1060. Wld_PlayEffect("ItemFX_FireAura2H_4_Ready", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1061.  
  1062. }
  1063. else if(RuneType==3)
  1064. {
  1065. Wld_PlayEffect("ItemFX_LightAura2HReady", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1066. Wld_PlayEffect("ItemFX_LightAura2H_2_Ready", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1067. Wld_PlayEffect("ItemFX_LightAura2H_3_Ready", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1068.  
  1069. }
  1070. else if(RuneType==4)
  1071. {
  1072. Wld_PlayEffect("ItemFX_WaterAura2HReady", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1073. Wld_PlayEffect("ItemFX_WaterAura2H_2_Ready", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1074. Wld_PlayEffect("ItemFX_WaterAura2H_3_Ready", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1075. Wld_PlayEffect("ItemFX_WaterAura2H_4_Ready", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1076.  
  1077. }
  1078. else if(RuneType==5)
  1079. {
  1080. Wld_PlayEffect("ItemFX_WindAura2HReady", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1081. Wld_PlayEffect("ItemFX_WindAura2H_2_Ready", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1082. Wld_PlayEffect("ItemFX_WindAura2H_3_Ready", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1083.  
  1084. }
  1085. else if(RuneType==6)
  1086. {
  1087. Wld_PlayEffect("ItemFX_PSIAura2hReady", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1088. Wld_PlayEffect("ItemFX_PSIAura2h_2_Ready", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1089. }
  1090. else if(RuneType==7)
  1091. {
  1092. Wld_PlayEffect("ItemFX_HEALAura2hReady", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1093. Wld_PlayEffect("ItemFX_WaterAura2H_4_Ready", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1094. };
  1095. };
  1096. };
  1097. func void RS_PlayAuraOnSwdEquip(var int RuneType)//On Equip
  1098. {
  1099. if(RUNE_SWD_EQUIPED==1)
  1100. {
  1101. if(RuneType==0)
  1102. {
  1103. //Neutral, no VFX
  1104. }
  1105. else if(RuneType==1)
  1106. {
  1107. Wld_PlayEffect("ItemFX_DarkAura1HEquip", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1108. Wld_PlayEffect("ItemFX_DarkAura1H_2_Equip", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1109. Wld_PlayEffect("ItemFX_DarkAura1H_3_Equip", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1110. Wld_PlayEffect("ItemFX_DarkAura1H_4_Equip", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1111. }
  1112. else if(RuneType==2)
  1113. {
  1114. Wld_PlayEffect("ItemFX_FireAura1HEquip", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1115. Wld_PlayEffect("ItemFX_FireAura1H_2_Equip", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1116. Wld_PlayEffect("ItemFX_FireAura1H_3_Equip", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1117. Wld_PlayEffect("ItemFX_FireAura1H_4_Equip", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1118. }
  1119. else if(RuneType==3)
  1120. {
  1121. Wld_PlayEffect("ItemFX_LightAura1HEquip", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1122. Wld_PlayEffect("ItemFX_LightAura1H_2_Equip", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1123. Wld_PlayEffect("ItemFX_LightAura1H_3_Equip", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1124. }
  1125. else if(RuneType==4)
  1126. {
  1127. Wld_PlayEffect("ItemFX_WaterAura1HEquip", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1128. Wld_PlayEffect("ItemFX_WaterAura1H_2_Equip", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1129. Wld_PlayEffect("ItemFX_WaterAura1H_3_Equip", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1130. Wld_PlayEffect("ItemFX_WaterAura1H_4_Equip", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1131. }
  1132. else if(RuneType==5)
  1133. {
  1134. Wld_PlayEffect("ItemFX_WindAura1HEquip", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1135. Wld_PlayEffect("ItemFX_WindAura1H_2_Equip", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1136. Wld_PlayEffect("ItemFX_WindAura1H_3_Equip", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1137.  
  1138. }
  1139. else if(RuneType==6)
  1140. {
  1141. Wld_PlayEffect("ItemFX_PSIAura1hEquip", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1142. Wld_PlayEffect("ItemFX_PSIAura1h_2_Equip", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1143. }
  1144. else if(RuneType==7)
  1145. {
  1146. Wld_PlayEffect("ItemFX_HEALAura1hEquip", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1147. Wld_PlayEffect("ItemFX_WaterAura1H_4_Equip", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1148. };
  1149. }
  1150. else if(RUNE_SWD_EQUIPED==2)
  1151. {
  1152. if(RuneType==0)
  1153. {
  1154. //Neutral, no VFX
  1155. }
  1156. else if(RuneType==1)
  1157. {
  1158. Wld_PlayEffect("ItemFX_DarkAura2HEquip", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1159. Wld_PlayEffect("ItemFX_DarkAura2H_2_Equip", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1160. Wld_PlayEffect("ItemFX_DarkAura2H_3_Equip", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1161. Wld_PlayEffect("ItemFX_DarkAura2H_4_Equip", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1162.  
  1163. }
  1164. else if(RuneType==2)
  1165. {
  1166. Wld_PlayEffect("ItemFX_FireAura2HEquip", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1167. Wld_PlayEffect("ItemFX_FireAura2H_2_Equip", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1168. Wld_PlayEffect("ItemFX_FireAura2H_3_Equip", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1169. Wld_PlayEffect("ItemFX_FireAura2H_4_Equip", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1170.  
  1171. }
  1172. else if(RuneType==3)
  1173. {
  1174. Wld_PlayEffect("ItemFX_LightAura2HEquip", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1175. Wld_PlayEffect("ItemFX_LightAura2H_2_Equip", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1176. Wld_PlayEffect("ItemFX_LightAura2H_3_Equip", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1177.  
  1178. }
  1179. else if(RuneType==4)
  1180. {
  1181. Wld_PlayEffect("ItemFX_WaterAura2HEquip", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1182. Wld_PlayEffect("ItemFX_WaterAura2H_2_Equip", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1183. Wld_PlayEffect("ItemFX_WaterAura2H_3_Equip", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1184. Wld_PlayEffect("ItemFX_WaterAura2H_4_Equip", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1185.  
  1186. }
  1187. else if(RuneType==5)
  1188. {
  1189. Wld_PlayEffect("ItemFX_WindAura2HEquip", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1190. Wld_PlayEffect("ItemFX_WindAura2H_2_Equip", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1191. Wld_PlayEffect("ItemFX_WindAura2H_3_Equip", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1192. }
  1193. else if(RuneType==6)
  1194. {
  1195. Wld_PlayEffect("ItemFX_PSIAura2hEquip", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1196. Wld_PlayEffect("ItemFX_PSIAura2h_2_Equip", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1197. }
  1198. else if(RuneType==7)
  1199. {
  1200. Wld_PlayEffect("ItemFX_HEALAura2hEquip", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1201. Wld_PlayEffect("ItemFX_WaterAura2H_4_Equip", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1202. };
  1203. };
  1204. };
  1205.  
  1206. func void RS_Heal()
  1207. {
  1208. var C_Npc runenow;
  1209. runenow = Hlp_GetNpc(RuneSword_Now);
  1210. if(RuneCharge>=2)&&(hero.attribute[ATR_HITPOINTS]+10<=hero.attribute[ATR_HITPOINTS_MAX])&&(hero.attribute[ATR_HITPOINTS]>1)
  1211. {
  1212. RuneCharge=RuneCharge-2;
  1213. hero.attribute[ATR_HITPOINTS] = hero.attribute[ATR_HITPOINTS]+10;
  1214. Wld_PlayEffect("RuneSwd_hero_HealAura", hero, hero, 1, 0, DAM_MAGIC, FALSE);
  1215. };
  1216. };
  1217. func void RuneSwdUnEquip()
  1218. {
  1219. RUNE_SWD_EQUIPED=FALSE;
  1220. };
  1221.  
  1222. func void RuneSwd1hUse()
  1223. {
  1224. // MOBSIDIALOG=RUNESWD1HDIALOG;
  1225. // Rune_dialog=RuneSwd_SetRuneAndEquip;
  1226. // hero_Important=TRUE;
  1227. // B_ProcessInfos (hero);
  1228. RUNE_SWD_EQUIPED = 1;
  1229. };
  1230.  
  1231. func void RuneSwd2hUse()
  1232. {
  1233. RUNE_SWD_EQUIPED = 2;
  1234. };
  1235.  
  1236. FUNC VOID EVT_TRIGGER3 ()
  1237. {//SWORD VFX EFFECT
  1238. var C_ITEM weap; var int ready;
  1239. if(Npc_HasEquippedMeleeWeapon(hero))
  1240. {
  1241. weap = Npc_GetEquippedMeleeWeapon(hero);
  1242. ready=0;
  1243. };
  1244. if(Npc_HasReadiedMeleeWeapon(hero))
  1245. {
  1246. weap = Npc_GetReadiedWeapon(hero);
  1247. ready=1;
  1248. };
  1249. if(Hlp_IsValidItem(weap))&&(weap.makingmob==1010)
  1250. {
  1251. // TODO: Correct it
  1252. // if (Hlp_IsItem(weap,ItMw_1H_RuneSWD_01))
  1253. // {
  1254. // RUNE_SWD_EQUIPED=1;
  1255. // }
  1256. // else if (Hlp_IsItem(weap,ItMw_2H_RuneSWD_01))
  1257. // {
  1258. // RUNE_SWD_EQUIPED=2;
  1259. // }
  1260. // else {
  1261. // Wld_SendTrigger("TIMETRIGGER3");
  1262. // return;};
  1263. if (RuneSWD_exp==ItArRuneHeal) { RS_Heal();};
  1264.  
  1265. weap.TEXT[0] = ConcatStrings(ConcatStrings("Szansa na krytyczne uderzenie: ",IntToString(RuneSwdCriticalChance)),"%");
  1266. weap.TEXT[1] = ConcatStrings("Używana runa: ",RuneSWD_name);
  1267. weap.TEXT[4] = ConcatStrings("Ładunek: ",ConcatStrings(IntToString(RuneCharge),"/40"));
  1268. if(ready){ RS_PlayAuraOnSwdReady(RuneSWD_lp); }
  1269. else { RS_PlayAuraOnSwdEquip(RuneSWD_lp); };
  1270.  
  1271. DontSendCritical=FALSE;
  1272. };
  1273. //Wld_SendTrigger("TIMETRIGGER3");
  1274. };
  1275.  
  1276. func void RuneSwd_Equip_RuneChoice()
  1277. {
  1278. Info_ClearChoices (Rune_dialog);
  1279. Info_AddChoice (Rune_dialog,"KONIEC." ,RuneSwd_Equip_End);
  1280.  
  1281. if(Npc_GetAivar(hero,TALENT_MAGIC_CIRCLE) >= 1)||(TALENT_RUNESWORDUSING)
  1282. {
  1283. Info_AddChoice (Rune_dialog,"Krąg 1." ,RuneSwd_Equip_RuneChoice_1);
  1284. };
  1285. if(Npc_GetAivar(hero,TALENT_MAGIC_CIRCLE) >= 2)||(TALENT_RUNESWORDUSING)
  1286. {
  1287. Info_AddChoice (Rune_dialog,"Krąg 2." ,RuneSwd_Equip_RuneChoice_2);
  1288. };
  1289. if(Npc_GetAivar(hero,TALENT_MAGIC_CIRCLE) >= 3)||(TALENT_RUNESWORDUSING)
  1290. {
  1291. Info_AddChoice (Rune_dialog,"Krąg 3." ,RuneSwd_Equip_RuneChoice_3);
  1292. };
  1293. if(Npc_GetAivar(hero,TALENT_MAGIC_CIRCLE) >= 4)||(TALENT_RUNESWORDUSING)
  1294. {
  1295. Info_AddChoice (Rune_dialog,"Krąg 4." ,RuneSwd_Equip_RuneChoice_4);
  1296. };
  1297. if(Npc_GetAivar(hero,TALENT_MAGIC_CIRCLE) >= 5)||(TALENT_RUNESWORDUSING)
  1298. {
  1299. Info_AddChoice (Rune_dialog,"Krąg 5." ,RuneSwd_Equip_RuneChoice_5);
  1300. };
  1301. if(Npc_GetAivar(hero,TALENT_MAGIC_CIRCLE) >= 6)
  1302. {
  1303. Info_AddChoice (Rune_dialog,"Krąg 6." ,RuneSwd_Equip_RuneChoice_6);
  1304. };
  1305. };
  1306.  
  1307. func void RuneSwd_Equip_End()
  1308. {
  1309. MOBSIDIALOG=NONE;
  1310. Npc_SetAivar(hero,AiV_INVINCIBLE,FALSE);
  1311. Ai_StopProcessInfos (hero);
  1312. };
  1313.  
  1314. func void RuneSwd_Equip_RuneChoice_1()
  1315. {
  1316. Info_ClearChoices (Rune_dialog);
  1317. Info_AddChoice (Rune_dialog,"KONIEC." ,RuneSwd_Equip_End);
  1318. Info_AddChoice (Rune_dialog,DIALOG_BACK ,RuneSwd_Equip_RuneChoice);
  1319.  
  1320. if(Npc_HasItems(hero,itarrunelight))
  1321. {
  1322. Info_AddChoice (Rune_dialog,"Światło." ,RuneSwd_Equip_RuneChoice_Light);
  1323. };
  1324. if(Npc_HasItems(hero,itarruneThunderBolt))
  1325. {
  1326. Info_AddChoice (Rune_dialog,"Sopel lodu." ,RuneSwd_Equip_RuneChoice_ThunderBolt);
  1327. };
  1328. if(Npc_HasItems(hero,itarruneFireBolt))
  1329. {
  1330. Info_AddChoice (Rune_dialog,"Ognisty pocisk." ,RuneSwd_Equip_RuneChoice_FireBolt);
  1331. };
  1332. };
  1333.  
  1334. func void RuneSwd_Equip_RuneChoice_2()
  1335. {
  1336. Info_ClearChoices (Rune_dialog);
  1337. Info_AddChoice (Rune_dialog,"KONIEC.",RuneSwd_Equip_End);
  1338. Info_AddChoice (Rune_dialog,DIALOG_BACK ,RuneSwd_Equip_RuneChoice);
  1339.  
  1340. if(Npc_HasItems(hero,itarrunesleep))
  1341. {
  1342. Info_AddChoice (Rune_dialog,"Sen." ,RuneSwd_Equip_RuneChoice_Sleep);
  1343. };
  1344. if(Npc_HasItems(hero,itarruneWindFist))
  1345. {
  1346. Info_AddChoice (Rune_dialog,"Uderzenie wiatru." ,RuneSwd_Equip_RuneChoice_WindFist);
  1347. };
  1348. if(Npc_HasItems(hero,itarruneHeal))
  1349. {
  1350. Info_AddChoice (Rune_dialog,"Uzdrowienie." ,RuneSwd_Equip_RuneChoice_Heal);
  1351. };
  1352. };
  1353.  
  1354. func void RuneSwd_Equip_RuneChoice_3()
  1355. {
  1356. Info_ClearChoices (Rune_dialog);
  1357. Info_AddChoice (Rune_dialog,"KONIEC.",RuneSwd_Equip_End);
  1358. Info_AddChoice (Rune_dialog,DIALOG_BACK ,RuneSwd_Equip_RuneChoice);
  1359. if(Npc_HasItems(hero,itarrunepyrokinesis))
  1360. {
  1361. Info_AddChoice (Rune_dialog,"Pirokineza." ,RuneSwd_Equip_RuneChoice_pyrokinesis);
  1362. };
  1363. if(Npc_HasItems(hero,itarrunecharm))
  1364. {
  1365. Info_AddChoice (Rune_dialog,"Urok." ,RuneSwd_Equip_RuneChoice_charm);
  1366. };
  1367. if(Npc_HasItems(hero,itarruneicecube))
  1368. {
  1369. Info_AddChoice (Rune_dialog,"Bryła lodu." ,RuneSwd_Equip_RuneChoice_icecube);
  1370. };
  1371. if(Npc_HasItems(hero,itarrunethunderball))
  1372. {
  1373. Info_AddChoice (Rune_dialog,"Piorun kulisty." ,RuneSwd_Equip_RuneChoice_thunderball);
  1374. };
  1375. if(Npc_HasItems(hero,ItArRuneFireball))
  1376. {
  1377. Info_AddChoice (Rune_dialog,"Kula ognia." ,RuneSwd_Equip_RuneChoice_Fireball);
  1378. };
  1379. };
  1380.  
  1381. func void RuneSwd_Equip_RuneChoice_4()
  1382. {
  1383. Info_ClearChoices (Rune_dialog);
  1384. Info_AddChoice (Rune_dialog,"KONIEC.",RuneSwd_Equip_End);
  1385. Info_AddChoice (Rune_dialog,DIALOG_BACK ,RuneSwd_Equip_RuneChoice);
  1386. if(Npc_HasItems(hero,itarrunechAinlightning))
  1387. {
  1388. Info_AddChoice (Rune_dialog,"Grom." ,RuneSwd_Equip_RuneChoice_chAinlightning);
  1389. };
  1390. if(Npc_HasItems(hero,itarrunefirestorm))
  1391. {
  1392. Info_AddChoice (Rune_dialog,"Ognista burza." ,RuneSwd_Equip_RuneChoice_firestorm);
  1393. };
  1394. if(Npc_HasItems(hero,itarrunedestroyundead))
  1395. {
  1396. Info_AddChoice (Rune_dialog,"Śmierć ożywieńcom." ,RuneSwd_Equip_RuneChoice_destroyundead);
  1397. };
  1398. if(Npc_HasItems(hero,itarrunestormfist))
  1399. {
  1400. Info_AddChoice (Rune_dialog,"Uderzenie burzy." ,RuneSwd_Equip_RuneChoice_stormfist);
  1401. };
  1402. };
  1403.  
  1404. func void RuneSwd_Equip_RuneChoice_5()
  1405. {
  1406. Info_ClearChoices (Rune_dialog);
  1407. Info_AddChoice (Rune_dialog,"KONIEC.",RuneSwd_Equip_End);
  1408. Info_AddChoice (Rune_dialog,DIALOG_BACK ,RuneSwd_Equip_RuneChoice);
  1409. if(Npc_HasItems(hero,itarrunefirerAin))
  1410. {
  1411. Info_AddChoice (Rune_dialog,"Deszcz ognia." ,RuneSwd_Equip_RuneChoice_firerAin);
  1412. };
  1413. if(Npc_HasItems(hero,itarruneicewave))
  1414. {
  1415. Info_AddChoice (Rune_dialog,"Lodowa fala." ,RuneSwd_Equip_RuneChoice_icewave);
  1416. };
  1417. };
  1418. func void RuneSwd_Equip_RuneChoice_6()
  1419. {
  1420. Info_ClearChoices (Rune_dialog);
  1421. Info_AddChoice (Rune_dialog,"KONIEC.",RuneSwd_Equip_End);
  1422. Info_AddChoice (Rune_dialog,DIALOG_BACK ,RuneSwd_Equip_RuneChoice);
  1423. if(Npc_HasItems(hero,ItArRuneBreathOfDeath))
  1424. {
  1425. Info_AddChoice (Rune_dialog,"Tchnienie śmierci." ,RuneSwd_Equip_RuneChoice_breathofdeath);
  1426. };
  1427. };
  1428. ///////////////////////////////////////
  1429. // R U N E S D I A L O G S
  1430. ///////////////////////////////////////
  1431. ///////////////////////////////////////
  1432. // C I R C L E I
  1433. ///////////////////////////////////////
  1434. func void RuneSwd_Equip_RuneChoice_Light()
  1435. {
  1436. var c_Npc runeNpc;
  1437. runeNpc=Hlp_GetNpc(RuneSword_light);
  1438. RS_TransferToUsingRune(runeNpc);
  1439. };
  1440. func void RuneSwd_Equip_RuneChoice_FireBolt()
  1441. {
  1442. var c_Npc runeNpc;
  1443. runeNpc=Hlp_GetNpc(RuneSword_FireBolt);
  1444. RS_TransferToUsingRune(runeNpc);
  1445. };
  1446. func void RuneSwd_Equip_RuneChoice_ThunderBolt()
  1447. {
  1448. var c_Npc runeNpc;
  1449. runeNpc=Hlp_GetNpc(RuneSword_ThunderBolt);
  1450. RS_TransferToUsingRune(runeNpc);
  1451. };
  1452. ///////////////////////////////////////
  1453. // C I R C L E II
  1454. ///////////////////////////////////////
  1455. func void RuneSwd_Equip_RuneChoice_WindFist()
  1456. {
  1457. var c_Npc runeNpc;
  1458. runeNpc=Hlp_GetNpc(RuneSword_WindFist);
  1459. RS_TransferToUsingRune(runeNpc);
  1460. };
  1461. func void RuneSwd_Equip_RuneChoice_Sleep()
  1462. {
  1463. var c_Npc runeNpc;
  1464. runeNpc=Hlp_GetNpc(RuneSword_Sleep);
  1465. RS_TransferToUsingRune(runeNpc);
  1466. };
  1467. func void RuneSwd_Equip_RuneChoice_Heal()
  1468. {
  1469. var c_Npc runeNpc;
  1470. runeNpc=Hlp_GetNpc(RuneSword_Heal);
  1471. RS_TransferToUsingRune(runeNpc);
  1472. };
  1473. func void RuneSwd_Equip_RuneChoice_StuningBall()
  1474. {
  1475. var c_Npc runeNpc;
  1476. runeNpc=Hlp_GetNpc(RuneSword_StuningBall);
  1477. RS_TransferToUsingRune(runeNpc);
  1478. };
  1479. ///////////////////////////////////////
  1480. // C I R C L E III
  1481. ///////////////////////////////////////
  1482. func void RuneSwd_Equip_RuneChoice_pyrokinesis()
  1483. {
  1484. var c_Npc runeNpc;
  1485. runeNpc=Hlp_GetNpc(RuneSword_pyrokinesis);
  1486. RS_TransferToUsingRune(runeNpc);
  1487. };
  1488. func void RuneSwd_Equip_RuneChoice_charm()
  1489. {
  1490. var c_Npc runeNpc;
  1491. runeNpc=Hlp_GetNpc(RuneSword_charm);
  1492. RS_TransferToUsingRune(runeNpc);
  1493. };
  1494. func void RuneSwd_Equip_RuneChoice_thunderball()
  1495. {
  1496. var c_Npc runeNpc;
  1497. runeNpc=Hlp_GetNpc(RuneSword_thunderball);
  1498. RS_TransferToUsingRune(runeNpc);
  1499. };
  1500. func void RuneSwd_Equip_RuneChoice_Fireball()
  1501. {
  1502. var c_Npc runeNpc;
  1503. runeNpc=Hlp_GetNpc(RuneSword_FireBall);
  1504. RS_TransferToUsingRune(runeNpc);
  1505. };
  1506.  
  1507. func void RuneSwd_Equip_RuneChoice_icecube()
  1508. {
  1509. var c_Npc runeNpc;
  1510. runeNpc=Hlp_GetNpc(RuneSword_icecube);
  1511. RS_TransferToUsingRune(runeNpc);
  1512. };
  1513.  
  1514. func void RuneSwd_Equip_RuneChoice_LifeDrain()
  1515. {
  1516. var c_Npc runeNpc;
  1517. runeNpc=Hlp_GetNpc(RuneSword_LifeDrain);
  1518. RS_TransferToUsingRune(runeNpc);
  1519. };
  1520.  
  1521. func void RuneSwd_Equip_RuneChoice_Curse()
  1522. {
  1523. var c_Npc runeNpc;
  1524. runeNpc=Hlp_GetNpc(RuneSword_Curse);
  1525. RS_TransferToUsingRune(runeNpc);
  1526. };
  1527.  
  1528. ///////////////////////////////////////
  1529. // C I R C L E IV
  1530. ///////////////////////////////////////
  1531. func void RuneSwd_Equip_RuneChoice_chAinlightning()
  1532. {
  1533. var c_Npc runeNpc;
  1534. runeNpc=Hlp_GetNpc(RuneSword_chAinlightning);
  1535. RS_TransferToUsingRune(runeNpc);
  1536. };
  1537. func void RuneSwd_Equip_RuneChoice_firestorm()
  1538. {
  1539. var c_Npc runeNpc;
  1540. runeNpc=Hlp_GetNpc(RuneSword_firestorm);
  1541. RS_TransferToUsingRune(runeNpc);
  1542. };
  1543. func void RuneSwd_Equip_RuneChoice_destroyundead()
  1544. {
  1545. var c_Npc runeNpc;
  1546. runeNpc=Hlp_GetNpc(RuneSword_destroyundead);
  1547. RS_TransferToUsingRune(runeNpc);
  1548. };
  1549. func void RuneSwd_Equip_RuneChoice_stormfist()
  1550. {
  1551. var c_Npc runeNpc;
  1552. runeNpc=Hlp_GetNpc(RuneSword_stormfist);
  1553. RS_TransferToUsingRune(runeNpc);
  1554. };
  1555. func void RuneSwd_Equip_RuneChoice_HolyFire()
  1556. {
  1557. var c_Npc runeNpc;
  1558. runeNpc=Hlp_GetNpc(RuneSword_HolyFire);
  1559. RS_TransferToUsingRune(runeNpc);
  1560. };
  1561.  
  1562. func void RuneSwd_Equip_RuneChoice_FireWall()//Chaotic Bolt
  1563. {
  1564. var c_Npc runeNpc;
  1565. runeNpc=Hlp_GetNpc(RuneSword_FireWall);
  1566. RS_TransferToUsingRune(runeNpc);
  1567. };
  1568. ///////////////////////////////////////
  1569. // C I R C L E V
  1570. ///////////////////////////////////////
  1571. func void RuneSwd_Equip_RuneChoice_firerAin()
  1572. {
  1573. var c_Npc runeNpc;
  1574. runeNpc=Hlp_GetNpc(RuneSword_firerAin);
  1575. RS_TransferToUsingRune(runeNpc);
  1576. };
  1577. func void RuneSwd_Equip_RuneChoice_icewave()
  1578. {
  1579. var c_Npc runeNpc;
  1580. runeNpc=Hlp_GetNpc(RuneSword_icewave);
  1581. RS_TransferToUsingRune(runeNpc);
  1582. };
  1583.  
  1584. func void RuneSwd_Equip_RuneChoice_Thunder()
  1585. {
  1586. var c_Npc runeNpc;
  1587. runeNpc=Hlp_GetNpc(RuneSword_Thunder);
  1588. RS_TransferToUsingRune(runeNpc);
  1589. };
  1590. ///////////////////////////////////////
  1591. // C I R C L E VI
  1592. ///////////////////////////////////////
  1593. func void RuneSwd_Equip_RuneChoice_breathofdeath()
  1594. {
  1595. var c_Npc runeNpc;
  1596. runeNpc=Hlp_GetNpc(RuneSword_breathofdead);
  1597. RS_TransferToUsingRune(runeNpc);
  1598. };
  1599.  
  1600. func void RuneSwd_Equip_RuneChoice_Meteor()
  1601. {
  1602. var c_Npc runeNpc;
  1603. runeNpc=Hlp_GetNpc(RuneSword_Meteor);
  1604. RS_TransferToUsingRune(runeNpc);
  1605. };
  1606.  
  1607.  
  1608.  
  1609.  
  1610.  
  1611. //DIALOG
  1612. //DIALOG
  1613. //DIALOG
  1614. //DIALOG
  1615. //DIALOG
  1616. //DIALOG
  1617. //DIALOG
  1618. INSTANCE RuneSwd_SetRuneAndEquip (C_INFO)
  1619. {
  1620. Npc = PC_hero;
  1621. condition = RuneSwd2h_SetRuneAndEquip_Condition;
  1622. information = RuneSwd2h_SetRuneAndEquip_Info;
  1623. important = 0;
  1624. permanent = 1;
  1625. description = "Wybierz runę.";
  1626. };
  1627.  
  1628. FUNC INT RuneSwd2h_SetRuneAndEquip_Condition()
  1629. {
  1630. if(MOBSIDIALOG == RUNESWD1hDIALOG)||(MOBSIDIALOG == RUNESWD2hDIALOG)
  1631. {
  1632. return 1;
  1633. };
  1634. };
  1635.  
  1636. func void RuneSwd2h_SetRuneAndEquip_Info ()
  1637. {
  1638. if((hero.attribute[ATR_STRENGTH]>=90)&&(MOBSIDIALOG == RUNESWD1hDIALOG))
  1639. {
  1640. RUNE_SWD_EQUIPED=1;
  1641. RuneSwd_Equip_RuneChoice();
  1642. }
  1643. else if((hero.attribute[ATR_STRENGTH]>=105)&&(MOBSIDIALOG == RUNESWD2hDIALOG))
  1644. {
  1645. RUNE_SWD_EQUIPED=2;
  1646. RuneSwd_Equip_RuneChoice();
  1647. }
  1648. else
  1649. {
  1650. if(MOBSIDIALOG == RUNESWD1hDIALOG)
  1651. {
  1652. G_CanNotUse(TRUE,ATR_STRENGTH,90);
  1653. }
  1654. else
  1655. {
  1656. G_CanNotUse(TRUE,ATR_STRENGTH,105);
  1657. };
  1658. };
  1659. };
  1660.  
  1661.  
  1662. INSTANCE RuneSwd_Equip (C_INFO)
  1663. {
  1664. Npc = PC_hero;
  1665. condition = RuneSwd_Equip_Condition;
  1666. information = RuneSwd_Equip_Info;
  1667. important = 0;
  1668. permanent = 1;
  1669. description = "Dobądź miecza.";
  1670. };
  1671.  
  1672. FUNC INT RuneSwd_Equip_Condition()
  1673. {
  1674. if(MOBSIDIALOG == RUNESWD2hDIALOG)||(MOBSIDIALOG == RUNESWD1hDIALOG)
  1675. {
  1676. return 1;
  1677. };
  1678. };
  1679.  
  1680. func void RuneSwd_Equip_Info ()
  1681. {
  1682. if(hero.attribute[ATR_STRENGTH]>=90)&&(MOBSIDIALOG == RUNESWD1hDIALOG)
  1683. {
  1684. RUNE_SWD_EQUIPED=1;
  1685. }
  1686. else if(hero.attribute[ATR_STRENGTH]>=105)&&(MOBSIDIALOG == RUNESWD2hDIALOG)
  1687. {
  1688. RUNE_SWD_EQUIPED=2;
  1689.  
  1690. }
  1691. else
  1692. {
  1693. if(MOBSIDIALOG == RUNESWD1hDIALOG)
  1694. {
  1695. G_CanNotUse(TRUE,ATR_STRENGTH,90);
  1696. }
  1697. else
  1698. {
  1699. G_CanNotUse(TRUE,ATR_STRENGTH,105);
  1700. };
  1701. };
  1702. };
  1703.  
  1704.  
  1705. INSTANCE RuneSwd1h_UnEquip (C_INFO)
  1706. {
  1707. Npc = PC_hero;
  1708. condition = RuneSwd1h_UnEquip_Condition;
  1709. information = RuneSwd1h_UnEquip_Info;
  1710. important = 0;
  1711. permanent = 1;
  1712. description = "Usuń runę.";
  1713. };
  1714.  
  1715. FUNC INT RuneSwd1h_UnEquip_Condition()
  1716. {
  1717. var C_Npc runenow;
  1718. runenow = Hlp_GetNpc(RuneSword_Now);
  1719. if(MOBSIDIALOG == RUNESWD1hDIALOG)&&(RuneSWD_exp!=0)
  1720. {
  1721. return 1;
  1722. };
  1723. };
  1724.  
  1725. func void RuneSwd1h_UnEquip_Info ()
  1726. {
  1727. var C_Npc runenow;
  1728. runenow = Hlp_GetNpc(RuneSword_Now);
  1729. //CreateInvItem(hero,RuneSWD_exp);
  1730. RuneSWD_name = "";
  1731. RuneSWD_slot = "";
  1732. RuneSWD_spawnPoint = "";
  1733. RuneSWD_wp = "";
  1734. RuneSWD_exp = 0;
  1735. RuneSWD_flags = 0;
  1736. RuneSWD_lp = 0;
  1737. MOBSIDIALOG=NONE;
  1738. hero_Important=FALSE;
  1739. RS_ExchangeSwd_Part1(0);
  1740. Ai_StopProcessInfos (hero);
  1741. };
  1742.  
  1743.  
  1744. INSTANCE RuneSwd2h_UnEquip (C_INFO)
  1745. {
  1746. Npc = PC_hero;
  1747. condition = RuneSwd2h_UnEquip_Condition;
  1748. information = RuneSwd2h_UnEquip_Info;
  1749. important = 0;
  1750. permanent = 1;
  1751. description = "Usuń runę.";
  1752. };
  1753.  
  1754. FUNC INT RuneSwd2h_UnEquip_Condition()
  1755. {
  1756. var C_Npc runenow;
  1757. runenow = Hlp_GetNpc(RuneSword_Now);
  1758. if(MOBSIDIALOG == RUNESWD2hDIALOG)&&(RuneSWD_exp!=0)
  1759. {
  1760. return 1;
  1761. };
  1762. };
  1763.  
  1764. func void RuneSwd2h_UnEquip_Info ()
  1765. {
  1766. var C_Npc runenow;
  1767. runenow = Hlp_GetNpc(RuneSword_Now);
  1768. //CreateInvItem(hero,RuneSWD_exp);
  1769. RuneSWD_name = "";
  1770. RuneSWD_slot = "";
  1771. RuneSWD_spawnPoint = "";
  1772. RuneSWD_wp = "";
  1773. RuneSWD_exp = 0;
  1774. RuneSWD_flags = 0;
  1775. RuneSWD_lp = 0;
  1776. MOBSIDIALOG=NONE;
  1777. hero_Important=FALSE;
  1778. RS_ExchangeSwd_Part1(0);
  1779. Ai_StopProcessInfos (hero);
  1780. };
Advertisement
Add Comment
Please, Sign In to add comment