summaryrefslogtreecommitdiff
path: root/npc/functions/dungeon.txt
diff options
context:
space:
mode:
authorJesusaves <cpntb1@ymail.com>2022-10-23 21:44:22 -0300
committerJesusaves <cpntb1@ymail.com>2022-10-23 21:44:22 -0300
commita7c45a192268da2601cef47a4cdba987ae2327ca (patch)
treec5fb5b97db109fe7106496dd96498c475881046b /npc/functions/dungeon.txt
downloadserverdata-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.txt162
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
+
+
+