diff options
author | Jesusaves <cpntb1@ymail.com> | 2022-10-23 21:44:22 -0300 |
---|---|---|
committer | Jesusaves <cpntb1@ymail.com> | 2022-10-23 21:44:22 -0300 |
commit | a7c45a192268da2601cef47a4cdba987ae2327ca (patch) | |
tree | c5fb5b97db109fe7106496dd96498c475881046b /npc/functions/dungeon.txt | |
download | serverdata-a7c45a192268da2601cef47a4cdba987ae2327ca.tar.gz serverdata-a7c45a192268da2601cef47a4cdba987ae2327ca.tar.bz2 serverdata-a7c45a192268da2601cef47a4cdba987ae2327ca.tar.xz serverdata-a7c45a192268da2601cef47a4cdba987ae2327ca.zip |
Initial commit (Moubootaur Legends fork)
Diffstat (limited to 'npc/functions/dungeon.txt')
-rw-r--r-- | npc/functions/dungeon.txt | 162 |
1 files changed, 162 insertions, 0 deletions
diff --git a/npc/functions/dungeon.txt b/npc/functions/dungeon.txt new file mode 100644 index 0000000..641d00d --- /dev/null +++ b/npc/functions/dungeon.txt @@ -0,0 +1,162 @@ +// 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) { + if (@forced_sick$ != getmap()) { + @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 (20 seconds fixed cycle) + addtimer2 20000, .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) + SC_Bonus(15, SC_BLOODING, 1); + + // New tick (15 seconds fixed cycle) + 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 + + + |