//===== 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