Guest User

Untitled

a guest
Dec 11th, 2017
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 23.44 KB | None | 0 0
  1. use uo;
  2. include "include/attributes";
  3.  
  4. Const ArmorNeeded:= 5;
  5. Const ChainmailArmorNeeded:= 3;
  6. Const RingmailArmorNeeded:= 4;
  7. Const WeaponNeeded:= 1;
  8. Const FencingNeeded:= 1;
  9.  
  10. /*function blah (me,item)
  11.  
  12. var power:= GetObjProperty (item, "power");
  13. case (power)
  14. IRON:
  15. TALC: //adds dex
  16. MUSCOVITY: //adds intelligence
  17. CALCITY: //adds strength
  18. BRONZE: //resists fire
  19. ICEROCK: //resists lightning
  20. FLUORITE:
  21. DULLCOPPER:
  22. PLATINUM:
  23. PYROXENE: //immune firebreather
  24. ORTHOCLASE:
  25. COPPER: //blacksmith armor
  26. KYANITE: //taming armor
  27. SPECTRAL: //hear ghosts
  28. SILLIMANITE: //+5 all stats
  29. ONYX: //stealth
  30. OLIVINE:
  31. PYRITE: //nightsight
  32. QUARTZ: //Faster Healing
  33. MALACHITE: //mages armor
  34. GARNET:
  35. AZURITE: //chance to magic reflect
  36. TOURMALINE: //immune to poison
  37. TOPAZ: //Greater change to res
  38. AUGITE:
  39. HEMATITE:
  40. DOLERITE: //convert to stamina
  41. OBSIDEAN: //convert to mana
  42. CORUNDUM: //reactive armor - drains mana
  43. NEXUS: //reactive armor - drains stamina
  44. TITAN: //reactive armor - full damage - drains mana, stamina
  45. BLOODROCK: //more damage with swords
  46. ELVEN: //castable chainmail with -5 magery
  47. DRAGON1: //resist poison
  48. SUN: //castable ringmail with +5 macing
  49. AQUA: //+10 damage with fencing weapons
  50. ROSE: //chainmail hit point regen
  51. DARKSILVER: //+5 tinkering
  52. CRYSTALINE: //a gorget that can be used with necklaces
  53.  
  54. endfunction
  55. */
  56.  
  57. function p_icerock (me)
  58.  
  59. var powername := "ICEROCK";
  60. var ICEROCKTotal:= ArmourCount(me, powername);
  61.  
  62. if (ICEROCKTotal >= ArmorNeeded)
  63. return 2;
  64. else
  65. return 0;
  66. endif
  67.  
  68. Return;
  69.  
  70.  
  71.  
  72. function p_garnet (me)
  73.  
  74. var powername := "GARNET";
  75. var GARNETTotal:= ArmourCount(me, powername);
  76.  
  77. if (GARNETTotal >= ArmorNeeded)
  78. return 2;
  79. else
  80. return 0;
  81.  
  82. endif
  83.  
  84. Return;
  85.  
  86. endfunction
  87.  
  88. function p_hematite (me)
  89.  
  90. var powername := "HEMATITE";
  91. var HEMATITETotal:= ArmourCount(me, powername);
  92.  
  93. if (HEMATITETotal >= ArmorNeeded)
  94. return 2;
  95. else
  96. return 0;
  97. endif
  98.  
  99. Return;
  100.  
  101. endfunction
  102.  
  103. function p_spectral (me)
  104.  
  105. var powername := "SPECTRAL";
  106. var SPECTRALTotal:= ArmourCount(me, powername);
  107.  
  108. if (SPECTRALTotal >= ArmorNeeded)
  109. GrantPrivilege( me, "hearghosts" );
  110. me.enable("hearghosts");
  111. elseif (SPECTRALTotal == ArmorNeeded - 1)
  112. me.disable("hearghosts");
  113. RevokePrivilege( me, "hearghosts" );
  114. endif
  115.  
  116.  
  117. Return;
  118.  
  119. endfunction
  120.  
  121.  
  122. function p_onyx (me)
  123.  
  124. var powername := "ONYX";
  125. var ONYXTotal:= ArmourCount(me, powername);
  126.  
  127. if (ONYXTotal >= ArmorNeeded)
  128. return 2;
  129. else
  130. return 0;
  131. endif
  132.  
  133. Return;
  134.  
  135. endfunction
  136.  
  137.  
  138. function p_quartz (me)
  139.  
  140. var powername := "QUARTZ";
  141. var QUARTZTotal:= ArmourCount(me, powername);
  142.  
  143. if (QUARTZTotal >= ArmorNeeded)
  144. return 2;
  145. else
  146. return 0;
  147. endif
  148.  
  149. endfunction
  150.  
  151. function p_topaz (me)
  152.  
  153. var powername := "TOPAZ";
  154. var TOPAZTotal:= ArmourCount(me, powername);
  155.  
  156. if (TOPAZTotal >= ArmorNeeded)
  157. return 2;
  158. else
  159. return 0;
  160. endif
  161.  
  162. endfunction
  163.  
  164. function p_pyriteequip (me, otheritem)
  165.  
  166. var powername := "PYRITE";
  167. var PYRITETotal:= ArmourCount(me, powername);
  168.  
  169. if ((PYRITETotal == (ArmorNeeded-1)) && (GetObjProperty(otheritem, "power") == "PYRITE"))
  170. me.setlightlevel (0, 14400);
  171. sendsysmessage (me, "Your Pyrite armor lights up!",3,53);
  172. endif
  173.  
  174. endfunction
  175.  
  176. function p_pyriteunequip (me)
  177.  
  178. var powername := "PYRITE";
  179. var PYRITETotal:= ArmourCount(me, powername);
  180.  
  181. if (PYRITETotal == ArmorNeeded)
  182. var ns := CInt(GetObjProperty(me, "#ns"));
  183. if (ns>ReadGameClock())
  184. ns:=ns-ReadGameClock();
  185. else
  186. ns:=1;
  187. endif
  188. me.setlightlevel (0, ns);
  189. endif
  190.  
  191. endfunction
  192.  
  193. function p_pyroxene (me)
  194.  
  195. var powername := "PYROXENE";
  196. var PYROXENETotal:= ArmourCount(me, powername);
  197.  
  198. if (PYROXENETotal >= ArmorNeeded)
  199. return 2;
  200. else
  201. return 0;
  202. endif
  203.  
  204. endfunction
  205.  
  206. function p_TOURMALINE (me)
  207.  
  208. var powername := "TOURMALINE";
  209. var TOURMALINETotal:= ArmourCount(me, powername);
  210.  
  211. if (TOURMALINETotal >= ArmorNeeded)
  212. return 2;
  213. else
  214. return 0;
  215. endif
  216.  
  217. endfunction
  218.  
  219. function p_copper (me)
  220.  
  221. var powername := "COPPER";
  222. var COPPERTotal:= ArmourCount(me, powername);
  223.  
  224. if (COPPERTotal >= ArmorNeeded)
  225. return 2;
  226. else
  227. return 0;
  228. endif
  229.  
  230. endfunction
  231.  
  232.  
  233.  
  234. function p_obsidean (me, sc:=0)
  235.  
  236. var powername := "OBSIDEAN";
  237. var Total:= ArmourCount(me, powername)+sc;
  238.  
  239. if (Total >= ArmorNeeded)
  240. SetObjProperty(me, "apower", 1);
  241. elseif(GetObjProperty(me, "apower")==1)
  242. EraseObjProperty(me, "apower");
  243. endif
  244.  
  245. endfunction
  246.  
  247.  
  248. function p_dolerite (me, sc:=0)
  249. var powername := "DOLERITE";
  250. var Total:= ArmourCount(me, powername)+sc;
  251.  
  252. if (Total >= ArmorNeeded)
  253. SetObjProperty(me, "apower", 2);
  254. elseif(GetObjProperty(me, "apower")==2)
  255. EraseObjProperty(me, "apower");
  256. endif
  257.  
  258. endfunction
  259.  
  260.  
  261. function p_corundum (me, sc:=0)
  262.  
  263. var powername := "CORUNDUM";
  264. var Total:= ArmourCount(me, powername)+sc;
  265.  
  266. if (Total >= ArmorNeeded)
  267. SetObjProperty(me, "apower", 3);
  268. elseif(GetObjProperty(me, "apower")==3)
  269. EraseObjProperty(me, "apower");
  270. endif
  271.  
  272. endfunction
  273.  
  274. function p_nexus (me, sc:=0)
  275.  
  276. var powername := "NEXUS";
  277. var Total:= ArmourCount(me, powername)+sc;
  278.  
  279. if (Total >= ArmorNeeded)
  280. SetObjProperty(me, "apower", 4);
  281. elseif(GetObjProperty(me, "apower")==4)
  282. EraseObjProperty(me, "apower");
  283. endif
  284.  
  285. endfunction
  286.  
  287. function p_olivine (me)
  288.  
  289. var powername := "OLIVINE";
  290. var OLIVINETotal:= ArmourCount(me, powername);
  291.  
  292. if (OLIVINETotal >= ArmorNeeded)
  293. return 2;
  294. else
  295. return 0;
  296. endif
  297.  
  298. Return;
  299.  
  300. endfunction
  301.  
  302. function p_titan (me, sc:=0)
  303.  
  304. var powername := "TITAN";
  305. var Total:= ArmourCount(me, powername)+sc;
  306.  
  307. if (Total >= ArmorNeeded)
  308. SetObjProperty(me, "apower", 5);
  309. elseif(GetObjProperty(me, "apower")==5)
  310. EraseObjProperty(me, "apower");
  311. endif
  312.  
  313. endfunction
  314.  
  315. function p_crystaline (me, sc:=0)
  316.  
  317. var powername := "CRYSTALINE";
  318. var Total:= ChainmailArmourCount(me, powername)+sc;
  319.  
  320. if (Total >= ChainmailArmorNeeded)
  321. SetObjProperty(me, "apower", 7);
  322. elseif(GetObjProperty(me, "apower")==7)
  323. EraseObjProperty(me, "apower");
  324. endif
  325.  
  326. endfunction
  327.  
  328. // ARMATURE CHE MODIFICANO LE STATS
  329.  
  330. function p_talcequip (me,otheritem)
  331.  
  332. var powername := "TALC";
  333. var TALCTotal:= ArmourCount(me, powername);
  334.  
  335. if ((TALCTotal == (ArmorNeeded - 1)) && (GetObjProperty(otheritem, "power") == "TALC"))
  336. AlterAttributeTemporaryMod(me, "Dexterity", +50);
  337. RecalcVitals(me);
  338. endif
  339.  
  340. endfunction
  341.  
  342. function p_talcunequip (me)
  343.  
  344. var powername := "TALC";
  345. var TALCTotal:= ArmourCount(me, powername);
  346.  
  347. if (TALCTotal == ArmorNeeded)
  348. AlterAttributeTemporaryMod(me, "Dexterity", -50);
  349. RecalcVitals(me);
  350. endif
  351.  
  352. endfunction
  353.  
  354. function p_calcityequip (me, otheritem)
  355.  
  356. var powername := "CALCITY";
  357. var CALCITYTotal:= ArmourCount(me, powername);
  358.  
  359. if ((CALCITYTotal == (ArmorNeeded - 1)) && (GetObjProperty(otheritem, "power") == "CALCITY"))
  360. AlterAttributeTemporaryMod(me, "Strength", +50);
  361. RecalcVitals(me);
  362. endif
  363.  
  364. endfunction
  365.  
  366. function p_calcityunequip (me)
  367.  
  368. var powername := "CALCITY";
  369. var CALCITYTotal:= ArmourCount(me, powername);
  370.  
  371. if (CALCITYTotal == ArmorNeeded)
  372. AlterAttributeTemporaryMod(me, "Strength", -50);
  373. RecalcVitals(me);
  374. endif
  375.  
  376. endfunction
  377.  
  378.  
  379. function p_muscovityequip (me, otheritem)
  380.  
  381. var powername := "MUSCOVITY";
  382. var MUSCOVITYTotal:= ArmourCount(me, powername);
  383.  
  384. if ((MUSCOVITYTotal == (ArmorNeeded - 1)) && (GetObjProperty(otheritem, "power") == "MUSCOVITY"))
  385. AlterAttributeTemporaryMod(me, "Intelligence", +50);
  386. RecalcVitals(me);
  387. endif
  388.  
  389. endfunction
  390.  
  391. function p_muscovityunequip (me)
  392.  
  393. var powername := "MUSCOVITY";
  394. var MUSCOVITYTotal:= ArmourCount(me, powername);
  395.  
  396. if (MUSCOVITYTotal == ArmorNeeded)
  397. AlterAttributeTemporaryMod(me, "Intelligence", -50);
  398. RecalcVitals(me);
  399. endif
  400.  
  401. endfunction
  402.  
  403. function p_sillimaniteequip (me, otheritem)
  404.  
  405. var powername := "SILLIMANITE";
  406. var SILLIMANITETotal:= ArmourCount(me, powername);
  407.  
  408. if ((SILLIMANITETotal == (ArmorNeeded - 1)) && (GetObjProperty(otheritem, "power") == "SILLIMANITE"))
  409. AlterAttributeTemporaryMod(me, "Strength", +50);
  410. AlterAttributeTemporaryMod(me, "Intelligence", +50);
  411. AlterAttributeTemporaryMod(me, "Dexterity", +50);
  412. RecalcVitals(me);
  413. endif
  414.  
  415. endfunction
  416.  
  417. function p_sillimaniteunequip (me)
  418.  
  419. var powername := "SILLIMANITE";
  420. var SILLIMANITETotal:= ArmourCount(me, powername);
  421.  
  422. if (SILLIMANITETotal == ArmorNeeded)
  423. AlterAttributeTemporaryMod(me, "Strength", -50);
  424. AlterAttributeTemporaryMod(me, "Intelligence", -50);
  425. AlterAttributeTemporaryMod(me, "Dexterity", -50);
  426. RecalcVitals(me);
  427. endif
  428.  
  429. endfunction
  430.  
  431. function p_darksilverequip (me, otheritem)
  432.  
  433. var powername := "DARKSILVER";
  434. var DARKSILVERTotal:= ArmourCount(me, powername);
  435.  
  436. if ((DARKSILVERTotal == (ArmorNeeded - 1)) && (GetObjProperty(otheritem, "power") == "DARKSILVER"))
  437. AlterAttributeTemporaryMod(me, "TINKERING", +50);
  438. RecalcVitals(me);
  439. endif
  440.  
  441. endfunction
  442.  
  443. function p_darksilverunequip (me)
  444.  
  445. var powername := "DARKSILVER";
  446. var DARKSILVERTotal:= ArmourCount(me, powername);
  447.  
  448. if (DARKSILVERTotal == ArmorNeeded)
  449. AlterAttributeTemporaryMod(me, "TINKERING", -50);
  450. RecalcVitals(me);
  451. endif
  452.  
  453. endfunction
  454.  
  455. function p_sunequip (me, otheritem)
  456.  
  457. var powername := "SUN";
  458. var SUNTotal:= ChainmailArmourCount(me, powername);
  459.  
  460. if ((SUNTotal == (ChainmailArmorNeeded - 1)) && (GetObjProperty(otheritem, "power") == "SUN"))
  461. AlterAttributeTemporaryMod(me, "HIDING", +50);
  462. AlterAttributeTemporaryMod(me, "STEALING", +50);
  463. AlterAttributeTemporaryMod(me, "SNOOPING", +50);
  464. RecalcVitals(me);
  465. endif
  466.  
  467. endfunction
  468.  
  469. function p_sununequip (me)
  470.  
  471. var powername := "SUN";
  472. var SUNTotal:= ChainmailArmourCount(me, powername);
  473.  
  474. if (SUNTotal == ChainmailArmorNeeded)
  475. AlterAttributeTemporaryMod(me, "HIDING", -50);
  476. AlterAttributeTemporaryMod(me, "STEALING", -50);
  477. AlterAttributeTemporaryMod(me, "SNOOPING", -50);
  478. RecalcVitals(me);
  479. endif
  480.  
  481. endfunction
  482.  
  483. function p_elvenequip (me, otheritem)
  484.  
  485. var powername := "ELVEN";
  486. var ELVENTotal:= ChainmailArmourCount(me, powername);
  487.  
  488. if ((ELVENTotal == (ChainmailArmorNeeded - 1 )) && GetObjProperty(otheritem, "power") == "ELVEN")
  489. AlterAttributeTemporaryMod(me, "TAMING", +50);
  490. AlterAttributeTemporaryMod(me, "ANIMALLORE", +50);
  491. RecalcVitals(me);
  492. endif
  493.  
  494. endfunction
  495.  
  496. function p_elvenunequip (me)
  497.  
  498. var powername := "ELVEN";
  499. var ELVENTotal:= ChainmailArmourCount(me, powername);
  500.  
  501. if (ELVENTotal == ChainmailArmorNeeded)
  502. AlterAttributeTemporaryMod(me, "TAMING", -50);
  503. AlterAttributeTemporaryMod(me, "ANIMALLORE", -50);
  504. RecalcVitals(me);
  505. endif
  506.  
  507. endfunction
  508.  
  509. function p_dragon1equip (me, otheritem)
  510.  
  511. var powername := "DRAGON1";
  512. var DRAGON1Total:= ArmourCount(me, powername);
  513.  
  514. if ((DRAGON1Total == (ArmorNeeded - 1)) && (GetObjProperty(otheritem, "power") == "DRAGON1"))
  515. AlterAttributeTemporaryMod(me, "PROVOCATION", +50);
  516. AlterAttributeTemporaryMod(me, "MUSICIANSHIP", +50);
  517. RecalcVitals(me);
  518. endif
  519.  
  520. endfunction
  521.  
  522. function p_dragon1unequip (me)
  523.  
  524. var powername := "DRAGON1";
  525. var DRAGON1Total:= ArmourCount(me, powername);
  526.  
  527. if (DRAGON1Total == ArmorNeeded)
  528. AlterAttributeTemporaryMod(me, "PROVOCATION", -50);
  529. AlterAttributeTemporaryMod(me, "MUSICIANSHIP", -50);
  530. RecalcVitals(me);
  531. endif
  532.  
  533. endfunction
  534.  
  535.  
  536. function p_bloodrockequip (me, item, dmg)
  537.  
  538. var powername := "BLOODROCK";
  539. var BLOODROCKTotal:= WeaponCount(me, powername);
  540.  
  541.  
  542. if ((BLOODROCKTotal == (WeaponNeeded - 1)) && (GetObjProperty(item, "power") == "BLOODROCK"))
  543. SetObjProperty( me, "dmgmultiplier", 1.75 );
  544. RecalcVitals(me);
  545. Sendsysmessage (me,"Your Bloodrock weapon deals more damage!", 3,53);
  546. endif
  547.  
  548. endfunction
  549.  
  550.  
  551. function p_bloodrockunequip (me)
  552.  
  553. var powername := "BLOODROCK";
  554. var BLOODROCKTotal:= WeaponCount(me, powername);
  555.  
  556. if (BLOODROCKTotal == WeaponNeeded)
  557. EraseObjProperty( me, "dmgmultiplier");
  558. RecalcVitals(me);
  559. Sendsysmessage (me,"Your deal normal damage again!", 3,53);
  560. endif
  561.  
  562. endfunction
  563.  
  564.  
  565. function p_aquaequip (me, item, dmg)
  566.  
  567. var powername := "AQUA";
  568. var AQUATotal:= FencingCount(me, powername);
  569.  
  570.  
  571. if ((AQUATotal == (FencingNeeded - 1)) && (GetObjProperty(item, "power") == "AQUA"))
  572. SetObjProperty( me, "dmgmultiplier", 1.75 );
  573. Print("FishTest");
  574. RecalcVitals(me);
  575. Sendsysmessage (me,"Your Aqua weapon deals more damage!", 3,53);
  576. endif
  577.  
  578. endfunction
  579.  
  580. function p_aquaunequip (me)
  581.  
  582. var powername := "AQUA";
  583. var AQUATotal:= FencingCount(me, powername);
  584.  
  585. if (AQUATotal == FencingNeeded)
  586. EraseObjProperty( me, "dmgmultiplier");
  587. RecalcVitals(me);
  588. Sendsysmessage (me,"Your deal normal damage again!", 3,53);
  589. endif
  590.  
  591. endfunction
  592.  
  593. function p_roseequip (me, otheritem)
  594.  
  595. var powername := "ROSE";
  596. var ROSETotal:= RingmailArmourCount(me, powername);
  597. var armor:= 0;
  598. foreach item in ListEquippedItems(me)
  599. armor:= getobjproperty (item, "armor");
  600.  
  601.  
  602. if ((ROSETotal == (RingmailArmorNeeded - 1)) && (GetObjProperty(otheritem, "power") == "ROSE"))
  603. AlterAttributeTemporaryMod(me, "armor", +200);
  604. AlterAttributeTemporaryMod(me, "Dexterity", -50);
  605. RecalcVitals(me);
  606. endif
  607. endfunction
  608.  
  609. function p_roseunequip (me)
  610.  
  611. var powername := "ROSE";
  612. var ROSETotal:= RingmailArmourCount(me, powername);
  613.  
  614.  
  615. if (ROSETotal == RingmailArmorNeeded)
  616. AlterAttributeTemporaryMod(me, "ARMOD", -200);
  617. AlterAttributeTemporaryMod(me, "Dexterity", +50);
  618. RecalcVitals(me);
  619. endif
  620.  
  621. endfunction
  622.  
  623.  
  624. function p_checkforarmorspecial (attacker, defender, rawdamage)
  625.  
  626.  
  627. var halfdamage:=rawdamage/2;
  628. //dolerite armor
  629. if ((CInt(GetObjProperty(defender, "apower"))==2) && (GetStamina(defender) - rawdamage >= 10))
  630. SetStamina(defender, GetStamina(defender) - rawdamage);
  631. rawdamage:= 0;
  632. RecalcVitals(defender);
  633. Sendsysmessage (defender,"Your Dolerite armor absorbs all the damage but drains your stamina!", 3,53);
  634. //Obsidean armor
  635. elseif ((CInt(GetObjProperty(defender, "apower"))==1) && (GetMana(defender) - rawdamage >= 10))
  636. SetMana(defender, GetMana(defender)-rawdamage);
  637. rawdamage:= 0;
  638. RecalcVitals(defender);
  639. Sendsysmessage (defender,"Your Obsidean armor absorbs all the damage but drains your mana!", 3,53);
  640. //Corundum armor
  641. elseif ((CInt(GetObjProperty(defender, "apower"))==3) && (GetMana(defender) - halfdamage >= 10))
  642. DealDamage(attacker, defender, halfdamage);
  643. SetMana(defender, GetMana(defender)-halfdamage);
  644. RecalcVitals(defender);
  645. Sendsysmessage (attacker,"Your opponant's armor repelled some damage back to you!", 3,53);
  646. Sendsysmessage (defender,"Your Corundum armor repels some damage back but drains your mana!", 3,53);
  647. rawdamage:= halfdamage;
  648. //nexus armor
  649. elseif ((CInt(GetObjProperty(defender, "apower"))==4) && (GetStamina(defender) - halfdamage >= 10))
  650. DealDamage(attacker, defender, halfdamage);
  651. SetStamina(defender, GetStamina(defender) - halfdamage);
  652. rawdamage:= halfdamage;
  653. RecalcVitals(defender);
  654. Sendsysmessage (defender,"Your Nexus armor repels some damage back but drains your stamina!", 3,53);
  655. Sendsysmessage (attacker,"Your opponant's armor repelled some damage back to you!", 3,53);
  656. //titan armor
  657. elseif ((CInt(GetObjProperty(defender, "apower"))==5) && (GetStamina(defender) - halfdamage >= 10) && (GetMana(defender) - halfdamage >= 10))
  658. DealDamage(attacker, defender, rawdamage);
  659. SetStamina(defender, GetStamina(defender) - halfdamage);
  660. SetMana(defender, GetMana(defender)-halfdamage);
  661. RecalcVitals(defender);
  662. Sendsysmessage (defender,"Your Titan armor repels all the damage back but drains your stamina and mana!", 3,53);
  663. Sendsysmessage (attacker,"Your opponant's armor repelled all the damage back to you!", 3,53);
  664. //onyx armor exceptional
  665. elseif ((CInt(GetObjProperty(defender, "apower"))==101) && (RandomInt(99) <= 10))
  666. rawdamage := rawdamage * 0.5;
  667. RecalcVitals(defender);
  668. Sendsysmessage (defender,"You get hit but your onyx armour hardens and takes some damage!", 3,53);
  669. //onyx armor normal
  670. elseif ((CInt(GetObjProperty(defender, "apower"))==111) && (RandomInt(99) <= 10))
  671. rawdamage := 0;
  672. RecalcVitals(defender);
  673. Sendsysmessage (defender,"You get hit but your onyx armour hardens and takes the damage!", 3,53);
  674. //onyx armor normal
  675. //crystaline chainmail
  676. elseif ((CInt(GetObjProperty(defender, "apower"))==7) && (RandomInt(99) <= 10))
  677. Sendsysmessage (defender,"Your Crystaline armor gives special protection!", 3,53);
  678. rawdamage := rawdamage * 0.5;
  679. AlterAttributeTemporaryMod(defender, "Strength", +50);
  680. RecalcVitals(defender);
  681. Sendsysmessage (defender,"Your Crystaline armor absorbs part of the damage!", 3,53);
  682. endif
  683.  
  684. return rawdamage;
  685. endfunction
  686.  
  687.  
  688.  
  689.  
  690. Function ArmourCount(me, powername)
  691.  
  692. //Var myarmor := ListEquippedItems( me);
  693. Var Counter := 0;
  694. Var pieces:= {0x13EC, 0X13F0, 0X13EE, 0X13F2, 0X13BF, 0X13C3, 0X13BE, 0X13BB, 0X140E, 0X1412, 0X140C, 0X140A, 0X1408,
  695. 0x1415, 0x1411, 0x1413, 0x1410, 0x1414};
  696.  
  697. Var myarmor := {GetEquipmentByLayer( me, 4), GetEquipmentByLayer( me, 6), GetEquipmentByLayer( me, 7), GetEquipmentByLayer( me, 10),
  698. GetEquipmentByLayer( me, 13), GetEquipmentByLayer( me, 19), GetEquipmentByLayer( me, 24)};
  699.  
  700. foreach item in myarmor
  701. if (GetObjProperty(item, "power") == powername);
  702. if(item.objtype in pieces)
  703. Counter := Counter + 1;
  704. endif
  705. endif
  706. endforeach
  707.  
  708. Return Counter;
  709.  
  710. endfunction
  711.  
  712. Function ChainmailArmourCount(me, powername)
  713.  
  714. //Var myarmor := ListEquippedItems( me);
  715. Var Counter := 0;
  716. Var pieces:= {0x13BF, 0x13BE, 0x13BB, 0x13C4, 0x13C3, 0x13C0};
  717.  
  718. Var myarmor := {GetEquipmentByLayer( me, 4), GetEquipmentByLayer( me, 6), GetEquipmentByLayer( me, 7), GetEquipmentByLayer( me, 10),
  719. GetEquipmentByLayer( me, 13), GetEquipmentByLayer( me, 19), GetEquipmentByLayer( me, 24)};
  720.  
  721. foreach item in myarmor
  722. if (GetObjProperty(item, "power") == powername);
  723. if(item.objtype in pieces)
  724. Counter := Counter + 1;
  725. endif
  726. endif
  727. endforeach
  728.  
  729. Return Counter;
  730.  
  731. endfunction
  732.  
  733. Function RingmailArmourCount(me, powername)
  734.  
  735. //Var myarmor := ListEquippedItems( me);
  736. Var Counter := 0;
  737. Var pieces:= {0x13ec, 0x13ed, 0x13ee, 0x13ef, 0x13f0, 0x13f1, 0x13f2};
  738.  
  739. Var myarmor := {GetEquipmentByLayer( me, 4), GetEquipmentByLayer( me, 6), GetEquipmentByLayer( me, 7), GetEquipmentByLayer( me, 10),
  740. GetEquipmentByLayer( me, 13), GetEquipmentByLayer( me, 19), GetEquipmentByLayer( me, 24)};
  741.  
  742. foreach item in myarmor
  743. if (GetObjProperty(item, "power") == powername);
  744. if(item.objtype in pieces)
  745. Counter := Counter + 1;
  746. endif
  747. endif
  748. endforeach
  749.  
  750. Return Counter;
  751.  
  752. endfunction
  753.  
  754. Function WeaponCount(me, powername)
  755.  
  756. //Var myarmor := ListEquippedItems( me);
  757. Var Counter := 0;
  758. Var pieces:= {0x13b9};
  759.  
  760. Var myweapon := {GetEquipmentByLayer( me, 1), GetEquipmentByLayer( me, 2)};
  761.  
  762. foreach item in myweapon
  763. if (GetObjProperty(item, "power") == powername);
  764. if(item.objtype in pieces)
  765. Counter := Counter + 1;
  766. endif
  767. endif
  768. endforeach
  769.  
  770. Return Counter;
  771.  
  772. endfunction
  773.  
  774. Function FencingCount(me, powername)
  775.  
  776. //Var myweapon := ListEquippedItems( me);
  777. Var Counter := 0;
  778. Var fpieces:= {0x1401};
  779.  
  780. Var myweapon := {GetEquipmentByLayer( me, 1), GetEquipmentByLayer( me, 2)};
  781.  
  782. foreach item in myweapon
  783. if (GetObjProperty(item, "power") == powername);
  784. if(item.objtype in fpieces)
  785. Counter := Counter + 1;
  786. endif
  787. endif
  788. endforeach
  789.  
  790. Return Counter;
  791.  
  792. endfunction
  793.  
  794. Function LeatherArmourCount(me, powername, fixer := 0)
  795.  
  796. //Var myarmor := ListEquippedItems( me);
  797. Var NormalCounter := 0;
  798. Var ExcepCounter := 0;
  799. Var pieces:= {0x13D6,0x13D5,0x13D4,0x13DA,0x13DB,0x1C02,0x1C0C
  800. ,0x13C7, 0x13CD, 0x13C6, 0x1DB9, 0x13CB, 0x13CC, 0x13D3, 0x1C06, 0x1C08, 0x1C0A, 0x1C00, 0x170B};
  801.  
  802. Var myarmor := {GetEquipmentByLayer( me, 4), GetEquipmentByLayer( me, 6), GetEquipmentByLayer( me, 7), GetEquipmentByLayer( me, 10),
  803. GetEquipmentByLayer( me, 13), GetEquipmentByLayer( me, 19), GetEquipmentByLayer( me, 24)};
  804.  
  805. foreach item in myarmor
  806. if (GetObjProperty(item, "power") == powername);
  807. if(item.objtype in pieces)
  808. NormalCounter := NormalCounter + 1;
  809. if(item.desc["Exceptional"])
  810. ExcepCounter := ExcepCounter + 1;
  811. endif
  812. endif
  813. endif
  814. endforeach
  815.  
  816. if((ExcepCounter+fixer) >=(ArmorNeeded+1))
  817. return 2;
  818. elseif((NormalCounter+fixer) >= (ArmorNeeded+1))
  819. return 1;
  820. else
  821. return 0;
  822. endif
  823. endfunction
  824.  
  825. //leather armors
  826.  
  827. function p_blood (me)
  828. var powername := "BLOOD";
  829. return LeatherArmourCount(me, powername);
  830. endfunction
  831.  
  832. function p_dragon (me)
  833. var powername := "DRAGON";
  834. return LeatherArmourCount(me, powername);
  835. endfunction
  836.  
  837. function p_azure (me)
  838. var powername := "AZURE";
  839. return LeatherArmourCount(me, powername);
  840. endfunction
  841.  
  842. function p_sand (me)
  843. var powername := "SAND";
  844. return LeatherArmourCount(me, powername);
  845. endfunction
  846.  
  847. function p_green (me)
  848. var powername := "GREEN";
  849. return LeatherArmourCount(me, powername);
  850. endfunction
  851.  
  852. function p_olive (me)
  853. var powername := "OLIVE";
  854. return LeatherArmourCount(me, powername);
  855. endfunction
  856.  
  857. function p_onyxleather (me, sc:=0)
  858.  
  859. var powername := "ONYX";
  860. var Total:= LeatherArmourCount(me, powername,sc);
  861.  
  862. if (Total == 1)
  863. EraseObjProperty(me, "apower");
  864. SetObjProperty(me, "apower", 101);
  865. elseif(Total == 2)
  866. EraseObjProperty(me, "apower");
  867. SetObjProperty(me, "apower", 111);
  868. elseif(GetObjProperty(me, "apower") == 101 || GetObjProperty(me, "apower") == 111)
  869. EraseObjProperty(me, "apower");
  870. endif
  871.  
  872. endfunction
Add Comment
Please, Sign In to add comment