//===== Description: ========================================= //= Basic healer script. //===== Additional Comments: ================================= //= 1.0 Initial script. //= 1.1 Aligned coordinates with @go. //= 1.2 Fix variables and character stuck at healing //============================================================ - script Healer FAKE_NPC,{ if ( HEALCD + 60 > gettimetick(2) ) { dispbottom "You need wait for " + ( HEALCD + 60 - gettimetick(2) ) + " seconds."; end; } // disable negative buffs ... I out from RO scene for about 3 years, so this is my only known negative buffs sc_end SC_STONE; sc_end SC_FREEZE; sc_end SC_STUN; sc_end SC_SLEEP; sc_end SC_POISON; sc_end SC_CURSE; sc_end SC_SILENCE; sc_end SC_CONFUSION; sc_end SC_BLIND; sc_end SC_BLOODING; sc_end SC_DPOISON; sc_end SC_FEAR; sc_end SC_COLD; sc_end SC_BURNING; sc_end SC_DEEP_SLEEP; sc_end SC_DEC_AGI; sc_end SC_BROKENARMOR; sc_end SC_BROKENWEAPON; sc_end SC_NOEQUIPWEAPON; sc_end SC_NOEQUIPSHIELD; sc_end SC_NOEQUIPARMOR; sc_end SC_NOEQUIPHELM; sc_end SC__STRIPACCESSARY; sc_end SC_PROPERTYUNDEAD; sc_end SC_ORCISH; sc_end SC_BERSERK; sc_end SC_SKE; sc_end SC_SWOO; sc_end SC_SKA; // give players buff ... don't give too much otherwise player wanna spam specialeffect2 EF_INCAGILITY; sc_start SC_INC_AGI,240000,10; specialeffect2 EF_BLESSING; sc_start SC_BLESSING,240000,10; // give player's soul link if ( .@spirit = .spirit[BaseJob] ); else if ( Upper & 1 && BaseLevel < 70 ) .@spirit = 494; if ( .@spirit ) { sc_start4 SC_SOULLINK, 240000, 1, .@spirit,0,0; skilleffect .@spirit, 1; } // automatically turn all oridecon and elunium stone into pure stone to reduce player's weight .@ori = countitem(Oridecon_Stone); if ( .@ori >= 5 ) { delitem Oridecon_Stone, .@ori / 5 * 5; getitem Oridecon, .@ori / 5; message strcharinfo(0), "Refined "+ ( .@ori / 5 * 5 ) +" Oridecon Stones, got "+ ( .@ori / 5 ) +" Oridecons."; } .@elu = countitem(Elunium_Stone); if ( .@elu >= 5 ) { delitem Elunium_Stone, .@elu / 5 * 5; getitem Elunium, .@elu / 5; message strcharinfo(0), "Refined "+ ( .@elu / 5 * 5 ) +" Elunium Stones, got "+ ( .@elu / 5 ) +" Eluniums."; } // repair all player's broken eqiupments repairall; // the one you want ... identify all player's equipments getinventorylist; for( .@i = 0; .@i < @inventorylist_count; .@i++ ) { if ( @inventorylist_identify[.@i] == 1 ) continue; else if ( getskilllv(MC_IDENTIFY) == 1 && Sp >= 10 ) heal 0,0; // lol... this is supposed to reduce their SP by 10, whatever else if ( countitem(Spectacles) ) delitem Spectacles,1; else if ( getskilllv(RG_COMPULSION) && Zeny >= ( 100 - ( 5 + 4 * getskilllv(RG_COMPULSION) ) )* 2/5 ) Zeny -= ( 100 - ( 5 + 4 * getskilllv(RG_COMPULSION) ) )* 2/5; else if ( getskilllv(MC_DISCOUNT) && Zeny >= ( 100 - ( 5 + 2 * getskilllv(MC_DISCOUNT) ) )* 2/5 ) Zeny -= ( 100 - ( 5 + 2 * getskilllv(MC_DISCOUNT) ) )* 2/5; else if ( Zeny >= 40 ) Zeny -= 40; else break; delitem2 @inventorylist_id[.@i],1,0,0,0,0,0,0,0; getitem @inventorylist_id[.@i],1; .@icount++; } if ( .@icount ) message strcharinfo(0), "Identified "+ .@icount +" Items."; // and last, give players heal percentheal 100,100; skilleffect AL_HEAL, MaxHp; skilleffect MG_SRECOVERY, MaxSp; emotion e_lv; HEALCD = gettimetick(2); end; OnInit: .spirit[Job_Alchemist] = 445; .spirit[Job_Monk] = 447; .spirit[Job_Star_Gladiator] = 448; .spirit[Job_Sage] = 449; .spirit[Job_Crusader] = 450; .spirit[Job_SuperNovice] = 451; .spirit[Job_Knight] = 452; .spirit[Job_Wizard] = 453; .spirit[Job_Priest] = 454; .spirit[Job_Bard] = .spirit[Job_Dancer] = 455; .spirit[Job_Rogue] = 456; .spirit[Job_Assassin] = 457; .spirit[Job_Blacksmith] = 458; .spirit[Job_Hunter] = 460; .spirit[Job_Soul_Linker] = 461; } // Duplicates //============================================================ alberta,25,240,6 duplicate(Healer) Healer#alb 4_F_ACOLYTE,5,5 prontera,155,185,5 duplicate(Healer) Healer#prt 1_F_MARIA,5,5