// TMW2 Script
// Authors:
// Jesusalva
// Description:
// Dungeon utilities
- script #DungeonCore NPC_HIDDEN,{
end;
// Main initialization
OnInit:
setarray .heatmap$, "007-2";
setarray .cursemap$, "006-4", "006-4-1", "025-1";
setarray .sickmap$, "029-5";
setarray .bleedmap$, "006-9";
end;
/////////////////////////////////////////
// Heartbeat for Heat effects
OnHeat:
// Did you left?
.@i=array_find(.heatmap$, getmap());
if (.@i < 0) {
@heat$="";
end;
}
// First time seeing this
if (@heat$ != getmap()) {
@heat$=getmap();
dispbottom l("This is a hot map, you're suffering damage over time.");
}
// You are in a HEATMAP$, so suffer damage from heat
if (@coolio > gettimetick(2) || Class == Redy)
percentheal -1, 0;
else
percentheal -5, 0;
// New tick (dies in 140~180 seconds)
addtimer2 rand2(7000, 9000), .name$+"::OnHeat";
end;
/////////////////////////////////////////
// Heartbeat for Cursed Land map effects
OnCurse:
// Did you left?
.@i=array_find(.cursemap$, getmap());
if (.@i < 0) {
@curse$="";
end;
}
// First time seeing this
if (@curse$ != getmap()) {
@curse$=getmap();
dispbottom l("This is a Cursed Lands map, you'll lose mana over time and may also incurr in debuffs if mana is low (may cause death).");
}
// You are in a CURSEMAP$, so suffer damage from the curse
if (@purifio > gettimetick(2) || Class == Savior)
heal 0, -1;
else if (islegendary())
percentheal 0, -2;
else
percentheal 0, -4;
// MP is below 20%, you'll get cursed
if (Sp*100 < MaxSp*20)
SC_Bonus(15, SC_CURSE, 1);
// MP is below 1%, you'll get start losing HP rapidly
if (Sp*100 < MaxSp)
percentheal -9, 0;
// New tick (cycles every 15 seconds in average)
addtimer2 rand2(14000, 15000), .name$+"::OnCurse";
end;
/////////////////////////////////////////
// Heartbeat for Disease effects
OnSick:
// Did you left?
.@i=array_find(.sickmap$, getmap());
if (.@i < 0) {
@sick$="";
end;
}
// First time seeing this
if (@sick$ != getmap()) {
@sick$=getmap();
dispbottom l("This map contains poisonous gas and may cause diseases.");
}
// The effect is based on HP
if (Hp*10 > MaxHp*7)
.@eff = SC_BLOODING;
else if (Hp*10 > MaxHp*4)
.@eff = SC_POISON;
else
.@eff = SC_DPOISON;
// You are in a SICKMAP$, so suffer damage from disease
if (@sickio > gettimetick(2)) {
heal -50, 0;
} else {
heal -rand2(50, 200), 0;
SC_Bonus(10, .@eff, 1);
}
// New tick (10 seconds fixed cycle)
addtimer2 10000, .name$+"::OnSick";
end;
/////////////////////////////////////////
// Heartbeat for Bleed effects
OnBleed:
// Did you left?
.@i=array_find(.bleedmap$, getmap());
if (.@i < 0) {
@bleed$="";
end;
}
// First time seeing this
if (@bleed$ != getmap()) {
@bleed$=getmap();
dispbottom l("This is a bleeding map, HP won't recover naturally, and bleeding may start.");
}
// You are in a BLEEDMAP$, HP regeneration is disabled
if (@bleedio > gettimetick(2))
sc_end SC_HALT_REGENERATION;
else
SC_Bonus(15, SC_HALT_REGENERATION, 1);
// You may bleed at 2% chance per 15 seconds
if (rand2(50) == 25 && @bleedio < gettimetick(2))
SC_Bonus(15, SC_BLOODING, 1);
// New tick
addtimer2 15000, .name$+"::OnBleed";
end;
}
//////////////////////////////
007-2 mapflag nosave 007-1,99,189
006-4 mapflag nosave 006-3,54,36
006-4-1 mapflag nosave 006-3,54,36
029-5 mapflag nosave 029-4,21,97
006-9 mapflag nosave 006-6,46,27