summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--db/re/map_zone_db.conf5
-rw-r--r--db/re/mob_db.conf6
-rw-r--r--db/re/mob_skill_db.conf55
-rw-r--r--maps/re/001-7.mcachebin1050 -> 1050 bytes
-rw-r--r--npc/001-7/_import.txt2
-rw-r--r--npc/001-7/_mobs.txt4
-rw-r--r--npc/001-7/celestia_bossfight.txt136
-rw-r--r--npc/001-7/mapflags.txt1
-rw-r--r--npc/003-1-1/yetiking.txt2
-rw-r--r--npc/012-7/celestia.txt2
-rw-r--r--npc/soren-2/main.txt12
11 files changed, 213 insertions, 12 deletions
diff --git a/db/re/map_zone_db.conf b/db/re/map_zone_db.conf
index ddb34122d..f3ab2f5f6 100644
--- a/db/re/map_zone_db.conf
+++ b/db/re/map_zone_db.conf
@@ -117,12 +117,13 @@ zones: (
monstersmall: 100
monsterbig: 100
save: 100
- raisemap: 100
- doommap: 100
killmonster: 100
killmonster2: 100
+ raisemap: 100
+ doommap: 100
kill: 100
nuke: 100
+ revive: 100
setbattleflag: 100
cvcon: 100
cvcoff: 100
diff --git a/db/re/mob_db.conf b/db/re/mob_db.conf
index 623aba5c5..b3380a39a 100644
--- a/db/re/mob_db.conf
+++ b/db/re/mob_db.conf
@@ -1382,13 +1382,13 @@ mob_db: (
{
Id: 1040
SpriteName: "YetiKing"
- Name: "Yeti King"
+ Name: "The Yeti King"
Lv: 120
Hp: 270000
Sp: 0
Exp: 1000
JExp: 0
- AttackRange: 1
+ AttackRange: 2
Attack: [400, 900]
Def: 120
Mdef: 80
@@ -1408,7 +1408,7 @@ mob_db: (
Mode: {
Aggressive: true
CanMove: true
- Looter: true
+ Looter: true
CanAttack: true
CastSensorChase: true
}
diff --git a/db/re/mob_skill_db.conf b/db/re/mob_skill_db.conf
index 70b38b273..93f0f239c 100644
--- a/db/re/mob_skill_db.conf
+++ b/db/re/mob_skill_db.conf
@@ -228,5 +228,60 @@ mob_skill_db:(
ConditionData: 3
}
}
+ YetiKing: {
+ NPC_SUMMONSLAVE: {
+ SkillState: "MSS_BERSERK"
+ SkillLevel: 5
+ Rate: 10000
+ CastTime: 2000
+ Delay: 60000
+ SkillTarget: "MST_SELF"
+ CastCondition: "MSC_SLAVELE"
+ ConditionData: 3
+ val0: 1064
+ }
+ NPC_SUMMONSLAVE: {
+ SkillState: "MSS_IDLE"
+ SkillLevel: 5
+ Rate: 10000
+ CastTime: 2000
+ Delay: 60000
+ SkillTarget: "MST_SELF"
+ CastCondition: "MSC_SLAVELE"
+ ConditionData: 3
+ val0: 1064
+ }
+ NPC_POISON: {
+ SkillState: "MSS_BERSERK"
+ SkillLevel: 20
+ Rate: 400
+ Delay: 500
+ Cancelable: true
+ SkillTarget: "MST_TARGET"
+ CastCondition: "MSC_ATTACKPCGE"
+ ConditionData: 3
+ }
+ NPC_POISON: {
+ SkillState: "MSS_BERSERK"
+ SkillLevel: 20
+ Rate: 1200
+ Delay: 500
+ Cancelable: true
+ SkillTarget: "MST_TARGET"
+ CastCondition: "MSC_ATTACKPCGE"
+ ConditionData: 5
+ }
+ NPC_POISON: {
+ SkillState: "MSS_BERSERK"
+ SkillLevel: 20
+ Rate: 2500
+ Delay: 500
+ Cancelable: true
+ SkillTarget: "MST_TARGET"
+ CastCondition: "MSC_ATTACKPCGE"
+ ConditionData: 8
+ }
+ }
+
}
)
diff --git a/maps/re/001-7.mcache b/maps/re/001-7.mcache
index 57eb3e7e4..2c42657ac 100644
--- a/maps/re/001-7.mcache
+++ b/maps/re/001-7.mcache
Binary files differ
diff --git a/npc/001-7/_import.txt b/npc/001-7/_import.txt
index bb1b11c91..a1b235402 100644
--- a/npc/001-7/_import.txt
+++ b/npc/001-7/_import.txt
@@ -2,3 +2,5 @@
// This file is generated automatically. All manually added changes will be removed when running the Converter.
"npc/001-7/_mobs.txt",
"npc/001-7/_warps.txt",
+"npc/001-7/celestia_bossfight.txt",
+"npc/001-7/mapflags.txt",
diff --git a/npc/001-7/_mobs.txt b/npc/001-7/_mobs.txt
index 07331e8c3..14057ec8e 100644
--- a/npc/001-7/_mobs.txt
+++ b/npc/001-7/_mobs.txt
@@ -1,8 +1,8 @@
// This file is generated automatically. All manually added changes will be removed when running the Converter.
// Map 001-7: Frostia Cliffs mobs
001-7,48,95,24,11 monster Ice Fluffy 1041,8,30000,30000
-001-7,52,33,10,9 monster Wolvern 1037,8,30000,30000
-001-7,29,42,6,2 monster Wolvern 1037,5,30000,30000
+001-7,103,96,14,14 monster Wolvern 1037,8,30000,30000
+001-7,30,23,6,2 monster Wolvern 1037,5,30000,30000
001-7,49,45,8,2 monster Wolvern 1037,2,30000,30000
001-7,41,49,16,2 monster Wolvern 1037,2,30000,30000
001-7,27,53,8,2 monster Wolvern 1037,2,30000,30000
diff --git a/npc/001-7/celestia_bossfight.txt b/npc/001-7/celestia_bossfight.txt
new file mode 100644
index 000000000..eaff99c8f
--- /dev/null
+++ b/npc/001-7/celestia_bossfight.txt
@@ -0,0 +1,136 @@
+// TMW2 Scripts
+// Author:
+// Jesusalva
+// Description:
+// Celestia Yeti King's quest. This controls the final showdown, and brings you
+// back home safely.
+//
+// If you cheated your way to here, you won't be able to interact with it.
+// No other safety measures are in place. Lone players cannot challenge the
+// Yeti King, there must be at least 2 players there to do the challenge.
+// BEWARE, the Yeti King gains stronger poisons the more people are attacking him.
+//
+// $@GM_OVERRIDE allows a single player to challenge him, as usual with all
+// co-op scripts.
+//
+// If you do not challenge him, the chance to challenge him again is lost.
+
+001-7,33,39,0 script #YetiKing NPC_YETI_KING,0,0,{
+ .@q=getq(HurnscaldQuest_Celestia);
+ if (.@q == 5 && !mobcount(.map$, "#YetiKing::OnVictory")) goto L_Survivor;
+ if (.@q == 6) goto L_GoHome;
+ end;
+
+L_GoHome:
+ mes col("Go home now?", 9);
+ if (askyesno() == ASK_YES)
+ warp "003-1-1", 94, 22;
+ closedialog;
+ if (!getareausers("001-7", 7))
+ setnpcdisplay .name$, NPC_YETI_KING;
+ close;
+
+L_Survivor:
+ mesn col("The Yeti King", 3);
+ mesq l("Good job, kid. You've survived both the Cave Of Trials and Soren's Village.");
+ next;
+ mesn col("The Yeti King", 3);
+ mesq l("That was only to prove you're strong enough on yourself to do whatever you want to do. You have friends.");
+ next;
+ mesn col("The Yeti King", 3);
+ mesq l("In this world, your friends are your strength. You deserve a reward for the victory, please choose whatever you want.");
+ select
+ l("I want a gemstone or ore"),
+ l("I want experience"),
+ l("I want gold"),
+ l("I want coal");
+
+ mes "";
+ .@r=rand(1,100);
+ switch (@menu) {
+ case 1:
+ if (.@r < 30)
+ getitem rand(Diamond, Amethyst), 1;
+ else
+ getitem rand(CopperOre, TitaniumOre), 1;
+ break;
+ case 2:
+ getexp .@r*20, .@r; // max 2000 xp and 100 jp
+ break;
+ case 3:
+ Zeny=Zeny+.@r*25; // max 2500 gp
+ break;
+ case 4:
+ getitem Coal, (.@r/20); // max 5 coal
+ break;
+ }
+ compareandsetq HurnscaldQuest_Celestia, 5, 6;
+ mesn col("The Yeti King", 3);
+ mesq l("Here kid. Frostia, the elf town, is somewhere near here, but I'm not sure if you can reach it from here.");
+ next;
+ mesn col("The Yeti King", 3);
+ mesq l("I can warp you home now.");
+ mes "";
+ select
+ l("Please, bring me back home."),
+ rif((getareausers("001-7", 7) > 1 || $@GM_OVERRIDE) && !mobcount(.map$, "#YetiKing::OnVictory"), l("No, we challenge you to a duel!")),
+ l("I'll walk around here a little more.");
+
+ mes "";
+ switch (@menu) {
+ case 1:
+ warp "003-1-1", 94, 22;
+ break;
+ case 2:
+ compareandsetq HurnscaldQuest_Celestia, 6, 7;
+ mesn col("The Yeti King", 3);
+ mesq l("Foolish kids, do you think violence is the answer to everything?!");
+ next;
+ mesn col("The Yeti King", 3);
+ mesq l("I give you three minutes to defeat me. Witness my wrath!");
+ setnpcdisplay .name$, NPC_NO_SPRITE;
+ monster .map$, .x, .y, strmobinfo(1, YetiKing), YetiKing, 1, "#YetiKing::OnVictory";
+ initnpctimer;
+ break;
+ }
+ close;
+
+OnVictory:
+ stopnpctimer;
+ setnpcdisplay .name$, NPC_SUMMONING_CIRC;
+ npctalk l("Good job... You can keep the drops. Touch here to return home.");
+ areatimer "006-1", 20, 20, 141, 171, 10, "#YetiKing::OnDefeat";
+ end;
+
+// This allows the challenger to go back home without dying.
+OnDefeat:
+ compareandsetq HurnscaldQuest_Celestia, 7, 6;
+ end;
+
+OnTimer60000:
+ npctalk "Time left: 2 minutes";
+ end;
+
+OnTimer120000:
+ npctalk "Time left: 1 minute";
+ end;
+
+OnTimer150000:
+ npctalk "Time left: 30 seconds";
+ end;
+
+OnTimer170000:
+ npctalk "Time left: 10 seconds";
+ end;
+
+OnTimer180000:
+ npctalk "Time is up!";
+ killmonster(.map$, "#YetiKing::OnVictory"); // I could use "All" as label, too
+ end;
+
+}
+
+
+
+
+
diff --git a/npc/001-7/mapflags.txt b/npc/001-7/mapflags.txt
new file mode 100644
index 000000000..f38cb43db
--- /dev/null
+++ b/npc/001-7/mapflags.txt
@@ -0,0 +1 @@
+soren mapflag zone MMO
diff --git a/npc/003-1-1/yetiking.txt b/npc/003-1-1/yetiking.txt
index 791754faf..6377637e0 100644
--- a/npc/003-1-1/yetiking.txt
+++ b/npc/003-1-1/yetiking.txt
@@ -10,7 +10,7 @@
// Only possible with @set command, overrides the co-op requeriment.
-003-1-1,94,21,0 script #YetiKing NPC_SUMMONING_CIRC,{
+003-1-1,94,21,0 script #DahYetiKing NPC_SUMMONING_CIRC,{
.@q=getq(HurnscaldQuest_Celestia);
if (.@q > 1 && .@q < 99)
setq HurnscaldQuest_Celestia, 1;
diff --git a/npc/012-7/celestia.txt b/npc/012-7/celestia.txt
index 3b71ee13a..afae1c60e 100644
--- a/npc/012-7/celestia.txt
+++ b/npc/012-7/celestia.txt
@@ -25,7 +25,7 @@
rif(.@q2 == 1, l("I have some sweeties for the Tea Party!")), L_TeaCheck,
rif(.@q2 >= 2, l("Tea party! I want to participate.")), L_TeaParty,
rif(.@q1 == 0, l("There are Monster Attacks every month, how do you have time for tea parties?!")), L_MainQuest,
- rif(.@q1 == 99, l("I want to try convincing the Yeti King again.")), L_MainQuestCore;
+ rif(.@q1 >= 6, l("I want to try convincing the Yeti King again.")), L_MainQuestCore;
L_Coffee:
mes "";
diff --git a/npc/soren-2/main.txt b/npc/soren-2/main.txt
index b52aad782..d8ad7dd75 100644
--- a/npc/soren-2/main.txt
+++ b/npc/soren-2/main.txt
@@ -37,10 +37,12 @@ soren-2,38,29,0 script #SorenSanctum NPC_NO_SPRITE,0,0,{
OnTouch:
if (@sorensanctum >= 5 && !mobcount(.map$, "#SorenSanctum::OnCheck")) {
+ /*
dispbottom l("Error, contact Jesusalva! Missing warp. Healing & Reseting temporaly.");
- percentheal 100, 100;
- @sorensanctum=@sorensanctum-5;
- //compareandsetq HurnscaldQuest_Celestia, 4, 5;
+ percentheal 100, 100;*/
+ @sorensanctum=0;
+ compareandsetq HurnscaldQuest_Celestia, 4, 5;
+ warp "001-7", 30, 42;
}
end;
@@ -180,6 +182,10 @@ OnStart:
// it is harder this way, so I'm not touching on quest state :>
if (getq(HurnscaldQuest_Celestia) != 4)
end;
+ addtimer(200, "#SorenSanctum::OnStep1"); // Allow client to update stuff
+ end;
+
+OnStep1:
// When we reach here, we have both a player attached, and the player was already warped.
// I don't know if you walked in and out the house, though. If you do, this will loop...
// Which is actually bad for you, as that will reset your progress!!