summaryrefslogtreecommitdiff
path: root/world/map/npc
diff options
context:
space:
mode:
authorJesusalva Jesusalva <jesusalva@themanaworld.org>2022-11-19 10:11:04 +0000
committerJesusalva Jesusalva <jesusalva@themanaworld.org>2022-11-19 10:11:04 +0000
commitb8dafc6736eb3f6fa60afcc41b5a71c9fa11bf2e (patch)
treef6f8e5189c711b0eadbfc2d0af53fc183af16de2 /world/map/npc
parentd48928c3e87c18ea11447117e307cf06f33829f6 (diff)
downloadserverdata-b8dafc6736eb3f6fa60afcc41b5a71c9fa11bf2e.tar.gz
serverdata-b8dafc6736eb3f6fa60afcc41b5a71c9fa11bf2e.tar.bz2
serverdata-b8dafc6736eb3f6fa60afcc41b5a71c9fa11bf2e.tar.xz
serverdata-b8dafc6736eb3f6fa60afcc41b5a71c9fa11bf2e.zip
WIP: v2022.11.11 Update
Diffstat (limited to 'world/map/npc')
-rw-r--r--world/map/npc/001-2/forge_shops.txt2
-rw-r--r--world/map/npc/003-1/npcs.txt2
-rw-r--r--world/map/npc/009-2/wyara.txt2
-rw-r--r--world/map/npc/009-8/celestia.txt20
-rw-r--r--world/map/npc/010-2/dimonds.txt2
-rw-r--r--world/map/npc/011-1/auldsbel.txt7
-rw-r--r--world/map/npc/011-6/bryant.txt1
-rw-r--r--world/map/npc/013-3/mask_chest.txt164
-rw-r--r--world/map/npc/020-2/shops.txt2
-rw-r--r--world/map/npc/025-4/battlecaves.txt2
-rw-r--r--world/map/npc/026-2/cerhan.txt55
-rw-r--r--world/map/npc/026-2/gy_inn_shops.txt2
-rw-r--r--world/map/npc/027-6/general_krukan.txt1
-rw-r--r--world/map/npc/027-7/general_razha.txt1
-rw-r--r--world/map/npc/027-8/general_terogan.txt1
-rw-r--r--world/map/npc/029-3/parua.txt1
-rw-r--r--world/map/npc/031-4/cindyCave.txt1
-rw-r--r--world/map/npc/034-1/yetiSpawn.txt1
-rw-r--r--world/map/npc/036-2/shops.txt2
-rw-r--r--world/map/npc/043-1/_import.txt1
-rw-r--r--world/map/npc/043-1/pyramid.txt12
-rw-r--r--world/map/npc/045-1/_import.txt1
-rw-r--r--world/map/npc/045-1/pyramid.txt12
-rw-r--r--world/map/npc/052-2/chest.txt16
-rw-r--r--world/map/npc/052-2/partyroom.txt1
-rw-r--r--world/map/npc/058-1/_import.txt7
-rw-r--r--world/map/npc/058-1/_mobs.txt8
-rw-r--r--world/map/npc/058-1/_nodes.txt4
-rw-r--r--world/map/npc/058-1/_warps.txt4
-rw-r--r--world/map/npc/058-1/griffen.txt45
-rw-r--r--world/map/npc/058-2/_import.txt7
-rw-r--r--world/map/npc/058-2/_mobs.txt8
-rw-r--r--world/map/npc/058-2/_nodes.txt4
-rw-r--r--world/map/npc/058-2/_warps.txt4
-rw-r--r--world/map/npc/058-2/griffen.txt43
-rw-r--r--world/map/npc/069-2/_import.txt1
-rw-r--r--world/map/npc/069-2/wizard.txt153
-rw-r--r--world/map/npc/099-2/logic.txt8
-rw-r--r--world/map/npc/099-5/boss.txt30
-rw-r--r--world/map/npc/_import.txt2
-rw-r--r--world/map/npc/functions/evil_obelisk.txt148
-rw-r--r--world/map/npc/functions/global_event_handler.txt2
-rw-r--r--world/map/npc/functions/mob_points.txt15
-rw-r--r--world/map/npc/functions/vault.txt50
-rw-r--r--world/map/npc/items/check_wand.txt21
-rw-r--r--world/map/npc/magic/_import.txt1
-rw-r--r--world/map/npc/magic/level0-wand.txt10
-rw-r--r--world/map/npc/magic/level2-make-arrows.txt8
-rw-r--r--world/map/npc/magic/level2-make-bones.txt28
49 files changed, 707 insertions, 216 deletions
diff --git a/world/map/npc/001-2/forge_shops.txt b/world/map/npc/001-2/forge_shops.txt
index 31a4d25e..7f7dfea4 100644
--- a/world/map/npc/001-2/forge_shops.txt
+++ b/world/map/npc/001-2/forge_shops.txt
@@ -1,4 +1,4 @@
// Forge Shops
-001-2,30,60,0|shop|Gungnir|311,SlingShot:*1,SlingBullet:*1,ShortBow:*4,Arrow:1,IronArrow:*1
+001-2,30,60,0|shop|Gungnir|311,SlingShot:*1,SlingBullet:*1,ShortBow:*4,Arrow:1,IronArrow:*1,TerraniteArrow:*1
001-2,25,59,0|shop|Mjolnir|377,Knife:*1,SharpKnife:*1,Dagger:*1,LeatherShirt:*1,LeatherShield:*1
diff --git a/world/map/npc/003-1/npcs.txt b/world/map/npc/003-1/npcs.txt
index 1aa0aff9..692f1450 100644
--- a/world/map/npc/003-1/npcs.txt
+++ b/world/map/npc/003-1/npcs.txt
@@ -59,7 +59,7 @@ L_NoHeal:
if (.@rnd == 3) mes "I have a Scorpion Doll!";
if (.@rnd == 4) mes "I carry spare Cactus Juices while on the field.";
if (.@rnd == 5) mes "Items such as foods, can be eaten to regain Health Points.";
- if (.@rnd == 6) mes "Grenxen is the Demon that founded Tulimshar.";
+ if (.@rnd == 6) mes "Grenxen is the Dragon that founded Tulimshar.";
close;
}
diff --git a/world/map/npc/009-2/wyara.txt b/world/map/npc/009-2/wyara.txt
index 246d458a..dd8f7f25 100644
--- a/world/map/npc/009-2/wyara.txt
+++ b/world/map/npc/009-2/wyara.txt
@@ -487,7 +487,7 @@ L_M_train_t_backgd:
mes "\"Many generations ago, there was a lush, green oasis in the desert south-east of Tulimshar. Plants of all kinds grew there, and many animals, including mouboos, made this place their home.\"";
next;
mes "[Wyara the Witch]";
- mes "\"Then there came war, and some people pleaded to the demon Grenxen. He founded Tulimshar, and to provide it with water he changed the underground waterflow. The oasis began to dry out quickly.\"";
+ mes "\"Then there came war, and some people pleaded to a dragon called Grenxen. He founded Tulimshar, and to provide it with water he changed the underground waterflow. The oasis began to dry out quickly.\"";
next;
mes "[Wyara the Witch]";
mes "\"But the oasis, like many such places back in the old days, had a druid watching over it. The druid refused to accept what Grenxen had done, but he was powerless to revert or change it.\"";
diff --git a/world/map/npc/009-8/celestia.txt b/world/map/npc/009-8/celestia.txt
index 4fbe6609..814d9629 100644
--- a/world/map/npc/009-8/celestia.txt
+++ b/world/map/npc/009-8/celestia.txt
@@ -19,9 +19,9 @@
009-8,31,123,0|script|Celestia|144
{
callfunc "CelestiaState";
- if (getequipid(equip_head) == 4027) // check if yeti mask (4027) is equipped
+ if (getequipid(equip_head) == YetiMask) // check if yeti mask (4027) is equipped
goto L_YetiMask;
- if (getequipid(equip_head) == 647) // check if Developer's Cap (647) is equipped
+ if (getequipid(equip_head) == DevelopersCap) // check if Developer's Cap (647) is equipped
goto L_Debug;
if (QL_CELESTIA == 2) // check if the player has the easy quest
goto L_ExplainEasy;
@@ -127,7 +127,7 @@ L_ExplainEasy:
mes " %%E 50 ["+ getitemlink("GingerBreadMan") +"]";
next;
mes "\"I really hope you can find a reliable provider for these items before it forces me to put an end to my tea parties.\"";
- if (countitem("ChocolateBar") >= 100 && countitem("GingerBreadMan") >= 50) // check if the player has the items
+ if (countitem(ChocolateBar) >= 100 && countitem(GingerBreadMan) >= 50) // check if the player has the items
menu // if yes then allow the player to give them
"I have the grocery order of Chocolate Bars and Ginger Bread Men for you.", L_GiveGroceries,
"I will come back later.", L_InstaClose;
@@ -147,9 +147,9 @@ L_GiveGroceries:
mes "["+getitemlink("Beret")+"]";
mes "[10,000 GP]";
mes "[20,000 EXP]";
- delitem "ChocolateBar", 100; // remove chocolate bars
- delitem "GingerBreadMan", 50; // remove ginger bread men
- getitem "Beret", 1; // give beret
+ delitem ChocolateBar, 100; // remove chocolate bars
+ delitem GingerBreadMan, 50; // remove ginger bread men
+ getitem Beret, 1; // give beret
getexp 20000, 0; // XXX is this amount reasonable?
set Zeny, Zeny + 10000; // XXX is this amount reasonable?
set QL_CELESTIA, 3; // set the state to "completed easy quest"
@@ -213,7 +213,7 @@ L_AcceptTrinket:
mes "\"May our path cross again.\"";
mes;
mes "["+getitemlink("HeartNecklace")+"]";
- getitem "HeartNecklace", 1;
+ getitem HeartNecklace, 1;
set QL_CELESTIA, 206;
close;
@@ -287,7 +287,7 @@ function|script|CelestiaState
{
if (BaseLevel >= 40 && QL_CELESTIA == 0) // if the player is at least level 40
set QL_CELESTIA, 1; // show the quest marker
- if (BaseLevel >= 90 && QL_CELESTIA == 3 && @scared_celestia) // check if level >= 90, if scared celestia and if easy quest done
+ if (BaseLevel >= 70 && QL_CELESTIA == 3 && @scared_celestia) // check if level >= 70, if scared celestia and if easy quest done
set QL_CELESTIA, 4; // show the quest marker for the secret advanced quest
return;
}
@@ -311,7 +311,7 @@ function|script|CelestiaState
}
009-8,40,125,0|script|Celestia Basement|32767,0,0
{
- if ($DOOMSDAY == 2||countitem(647)||countitem(725)||countitem(1178)||countitem(5131)||countitem(5132)||countitem(5133)||countitem(5134)||countitem(5135)||countitem(5136)||countitem(5137)||countitem(5138)||countitem(5139)||countitem(5140)||(getgmlevel()>=20)||
+ if ($DOOMSDAY == 2||countitem(DevelopersCap)||countitem(GMCap)||countitem(1178)||countitem(5131)||countitem(5132)||countitem(5133)||countitem(5134)||countitem(5135)||countitem(5136)||countitem(5137)||countitem(5138)||countitem(5139)||countitem(5140)||(getgmlevel()>=20)||
strcharinfo(1) == "Celestia's Tea Party")
warp "009-8", 82, 126;
if (strcharinfo(1) != "Celestia's Tea Party" && $DOOMSDAY != 2)
@@ -331,7 +331,7 @@ OnPCLoginEvent:
end;
L_Stomp:
- set Hp, 0;
+ warp "009-8", 70, 124;
end;
}
diff --git a/world/map/npc/010-2/dimonds.txt b/world/map/npc/010-2/dimonds.txt
index 868ad796..7f102659 100644
--- a/world/map/npc/010-2/dimonds.txt
+++ b/world/map/npc/010-2/dimonds.txt
@@ -540,7 +540,7 @@ L_Close:
010-2,32,34,0|shop|Waitress|139,CherryCake:*1,RoastedMaggot:*1,OrangeCupcake:*1,ChickenLeg:*1,Steak:*1
-010-2,85,41,0|shop|Blacksmith|146,ForestBow:*1,IronArrow:*1,LeatherShield:*1
+010-2,85,41,0|shop|Blacksmith|146,ForestBow:*1,SilverArrow:*2,IronArrow:*1,Arrow:*1,LeatherShield:*1
010-2,65,41,0|shop|General Store#dimond|137,CottonShorts:*1,FancyHat:*1,SilkHeadband:*1,CottonSkirt:*1,Boots:*1,CottonBoots:*1
diff --git a/world/map/npc/011-1/auldsbel.txt b/world/map/npc/011-1/auldsbel.txt
index 8f19b4ec..39cfff45 100644
--- a/world/map/npc/011-1/auldsbel.txt
+++ b/world/map/npc/011-1/auldsbel.txt
@@ -927,8 +927,8 @@ L_Next8:
set Zeny, Zeny + 10000;
mes "[Auldsbel the Wizard]";
mes "\"Excellent! Here is 10,000 GP for you, and now let's see how this goes.\"";
- mes "[You gain 100,000 experience points]";
- getexp 100000, 0;
+ mes "[You gain 120,000 experience points]";
+ getexp 120000, 0;
set @Q_component_quest, 6;
callsub S_update_var;
next;
@@ -1267,6 +1267,9 @@ L_stu_4_no_potion:
L_stu_5:
mes "[Auldsbel the Wizard]";
mes "\"Hmm. Come back some other time, please; I still haven't figured out what to teach you next.\"";
+ next;
+ mes "[Auldsbel the Wizard]";
+ mes "\"Well, there is '" + get(.invocation$, "make-bones") + "' to make bone arrows out of a single bone but in my book, this doesn't count.\"";
close;
L_mag_skill_ins:
diff --git a/world/map/npc/011-6/bryant.txt b/world/map/npc/011-6/bryant.txt
index 552d0907..d9c30411 100644
--- a/world/map/npc/011-6/bryant.txt
+++ b/world/map/npc/011-6/bryant.txt
@@ -32,6 +32,7 @@ OnBanditLordDead:
goto L_End;
set @state, 5;
callsub S_Update_Var;
+ getexp 10000, 0;
set BOSS_POINTS, BOSS_POINTS + 20;
message strcharinfo(0), "You gain 20 Boss Points giving you a total of " + BOSS_POINTS + ".";
goto L_End;
diff --git a/world/map/npc/013-3/mask_chest.txt b/world/map/npc/013-3/mask_chest.txt
index 204eec4c..a15cf3fc 100644
--- a/world/map/npc/013-3/mask_chest.txt
+++ b/world/map/npc/013-3/mask_chest.txt
@@ -7,113 +7,113 @@
if (@state < 2) goto L_This_shouldn_t_happen;
if (@state == 3) goto L_Finished;
- if (countitem("MaggotSlime") == 0)
+ if (countitem(MaggotSlime) == 0)
goto L_No_maggot_slime;
- if (countitem("SmallMushroom") == 0)
+ if (countitem(SmallMushroom) == 0)
goto L_No_mushroom;
- if (countitem("PinkPetal") == 0)
+ if (countitem(PinkPetal) == 0)
goto L_No_pink_petal;
- if (countitem("Pearl") == 0)
+ if (countitem(Pearl) == 0)
goto L_No_pearl;
- if (countitem("HardSpike") == 0)
+ if (countitem(HardSpike) == 0)
goto L_No_hard_spike;
- if (countitem("RawLog") == 0)
+ if (countitem(RawLog) == 0)
goto L_No_raw_log;
- if (countitem("PinkAntenna") == 0)
+ if (countitem(PinkAntenna) == 0)
goto L_No_pink_antenna;
- if (countitem("SnakeTongue") == 0
- || countitem("MountainSnakeTongue") == 0
- || countitem("GrassSnakeTongue") == 0
- || countitem("CaveSnakeTongue") == 0)
+ if (countitem(SnakeTongue) == 0
+ || countitem(MountainSnakeTongue) == 0
+ || countitem(GrassSnakeTongue) == 0
+ || countitem(CaveSnakeTongue) == 0)
goto L_No_tongues;
- if (countitem("TreasureKey") == 0)
+ if (countitem(TreasureKey) == 0)
goto L_No_treasure_key;
- if (countitem("PileOfAsh") == 0)
+ if (countitem(PileOfAsh) == 0)
goto L_no_ash;
- if (countitem("MauveHerb") == 0
- || countitem("CobaltHerb") == 0
- || countitem("GambogeHerb") == 0
- || countitem("AlizarinHerb") == 0)
+ if (countitem(MauveHerb) == 0
+ || countitem(CobaltHerb) == 0
+ || countitem(GambogeHerb) == 0
+ || countitem(AlizarinHerb) == 0)
goto L_No_herbs;
- if (countitem("BugLeg") == 0)
+ if (countitem(BugLeg) == 0)
goto L_No_bug_leg;
- if (countitem("CaveSnakeLamp") == 0)
+ if (countitem(CaveSnakeLamp) == 0)
goto L_No_lamp;
- if (countitem("IronOre") == 0)
+ if (countitem(IronOre) == 0)
goto L_No_iron_ore;
- if (countitem("ScorpionStinger") == 0
- || countitem("RedScorpionStinger") == 0
- || countitem("BlackScorpionStinger") == 0)
+ if (countitem(ScorpionStinger) == 0
+ || countitem(RedScorpionStinger) == 0
+ || countitem(BlackScorpionStinger) == 0)
goto L_No_stingers;
- if (countitem("SilkCocoon") == 0)
+ if (countitem(SilkCocoon) == 0)
goto L_No_silk;
- if (countitem("WhiteFur") == 0)
+ if (countitem(WhiteFur) == 0)
goto L_No_fur;
- if (countitem("DarkCrystal") == 0)
+ if (countitem(DarkCrystal) == 0)
goto L_No_dark_crystal;
- if (countitem("BottleOfWater") == 0)
+ if (countitem(BottleOfWater) == 0)
goto L_No_water;
getinventorylist;
if (@inventorylist_count == 100
- && countitem("MaggotSlime") > 1
- && countitem("BugLeg") > 1
- && countitem("SilkCocoon") > 1
- && countitem("SmallMushroom") > 1
- && countitem("PinkPetal") > 1
- && countitem("Pearl") > 1
- && countitem("HardSpike") > 1
- && countitem("RawLog") > 1
- && countitem("PinkAntenna") > 1
- && countitem("DarkCrystal") > 1
- && countitem("IronOre") > 1
- && countitem("ScorpionStinger") > 1
- && countitem("RedScorpionStinger") > 1
- && countitem("BlackScorpionStinger") > 1
- && countitem("SnakeTongue") > 1
- && countitem("MountainSnakeTongue") > 1
- && countitem("GrassSnakeTongue") > 1
- && countitem("CaveSnakeTongue") > 1
- && countitem("MauveHerb") > 1
- && countitem("CobaltHerb") > 1
- && countitem("GambogeHerb") > 1
- && countitem("AlizarinHerb") > 1
- && countitem("TreasureKey") > 1
- && countitem("CaveSnakeLamp") > 1
- && countitem("PileOfAsh") > 1
- && countitem("WhiteFur") > 1
- && countitem("BottleOfWater") > 1)
+ && countitem(MaggotSlime) > 1
+ && countitem(BugLeg) > 1
+ && countitem(SilkCocoon) > 1
+ && countitem(SmallMushroom) > 1
+ && countitem(PinkPetal) > 1
+ && countitem(Pearl) > 1
+ && countitem(HardSpike) > 1
+ && countitem(RawLog) > 1
+ && countitem(PinkAntenna) > 1
+ && countitem(DarkCrystal) > 1
+ && countitem(IronOre) > 1
+ && countitem(ScorpionStinger) > 1
+ && countitem(RedScorpionStinger) > 1
+ && countitem(BlackScorpionStinger) > 1
+ && countitem(SnakeTongue) > 1
+ && countitem(MountainSnakeTongue) > 1
+ && countitem(GrassSnakeTongue) > 1
+ && countitem(CaveSnakeTongue) > 1
+ && countitem(MauveHerb) > 1
+ && countitem(CobaltHerb) > 1
+ && countitem(GambogeHerb) > 1
+ && countitem(AlizarinHerb) > 1
+ && countitem(TreasureKey) > 1
+ && countitem(CaveSnakeLamp) > 1
+ && countitem(PileOfAsh) > 1
+ && countitem(WhiteFur) > 1
+ && countitem(BottleOfWater) > 1)
goto L_TooMany;
- delitem "MaggotSlime", 1;
- delitem "BugLeg", 1;
- delitem "SilkCocoon", 1;
- delitem "SmallMushroom", 1;
- delitem "PinkPetal", 1;
- delitem "Pearl", 1;
- delitem "HardSpike", 1;
- delitem "RawLog", 1;
- delitem "PinkAntenna", 1;
- delitem "DarkCrystal", 1;
- delitem "IronOre", 1;
- delitem "ScorpionStinger", 1;
- delitem "RedScorpionStinger", 1;
- delitem "BlackScorpionStinger", 1;
- delitem "SnakeTongue", 1;
- delitem "MountainSnakeTongue", 1;
- delitem "GrassSnakeTongue", 1;
- delitem "CaveSnakeTongue", 1;
- delitem "MauveHerb", 1;
- delitem "CobaltHerb", 1;
- delitem "GambogeHerb", 1;
- delitem "AlizarinHerb", 1;
- delitem "TreasureKey", 1;
- delitem "CaveSnakeLamp", 1;
- delitem "WhiteFur", 1;
- delitem "PileOfAsh", 1;
- delitem "BottleOfWater", 1;
+ delitem MaggotSlime, 1;
+ delitem BugLeg, 1;
+ delitem SilkCocoon, 1;
+ delitem SmallMushroom, 1;
+ delitem PinkPetal, 1;
+ delitem Pearl, 1;
+ delitem HardSpike, 1;
+ delitem RawLog, 1;
+ delitem PinkAntenna, 1;
+ delitem DarkCrystal, 1;
+ delitem IronOre, 1;
+ delitem ScorpionStinger, 1;
+ delitem RedScorpionStinger, 1;
+ delitem BlackScorpionStinger, 1;
+ delitem SnakeTongue, 1;
+ delitem MountainSnakeTongue, 1;
+ delitem GrassSnakeTongue, 1;
+ delitem CaveSnakeTongue, 1;
+ delitem MauveHerb, 1;
+ delitem CobaltHerb, 1;
+ delitem GambogeHerb, 1;
+ delitem AlizarinHerb, 1;
+ delitem TreasureKey, 1;
+ delitem CaveSnakeLamp, 1;
+ delitem WhiteFur, 1;
+ delitem PileOfAsh, 1;
+ delitem BottleOfWater, 1;
mes "You managed to perform the ritual and open the chest.";
- getitem "DemonMask", 1;
+ getitem DemonMask, 1;
mes "You found a demon mask inside.";
set @state, 3;
callsub S_Update_Mask;
diff --git a/world/map/npc/020-2/shops.txt b/world/map/npc/020-2/shops.txt
index 847adac0..a71210cc 100644
--- a/world/map/npc/020-2/shops.txt
+++ b/world/map/npc/020-2/shops.txt
@@ -14,7 +14,7 @@
close;
}
// Weapons shop
-020-2,25,65,0|shop|Bracco|135,IronArrow:*1,ShortBow:*4,Dagger:*1,LeatherShield:*1
+020-2,25,65,0|shop|Bracco|135,ArmorBreaker:*2,IronArrow:*1,Arrow:*1,ShortBow:*4,Dagger:*1,LeatherShield:*1
// Potions shop
020-2,75,24,0|shop|Mede|103,CactusDrink:*1,CactusPotion:*1,IronPotion:*1,ConcentrationPotion:*1,SmallManaElixir:*6,MediumManaElixir:*6,LargeManaElixir:*6
diff --git a/world/map/npc/025-4/battlecaves.txt b/world/map/npc/025-4/battlecaves.txt
index ffab9a05..8acebf2a 100644
--- a/world/map/npc/025-4/battlecaves.txt
+++ b/world/map/npc/025-4/battlecaves.txt
@@ -933,7 +933,7 @@ OnBossDeath:
if (attachrid(getcharid(3,$@cave10fighter$)) == 0) goto L_Abort;
message strcharinfo(0), "What a harsh battle... You should hurry and save Julia!";
set Rossy_Quest, 16;
- getexp 100000, 0;
+ getexp 120000, 0;
set BOSS_POINTS, BOSS_POINTS + 50;
message strcharinfo(0), "You gain 50 Boss Points giving you a total of " + BOSS_POINTS + ".";
end;
diff --git a/world/map/npc/026-2/cerhan.txt b/world/map/npc/026-2/cerhan.txt
index 64cc723f..202249cc 100644
--- a/world/map/npc/026-2/cerhan.txt
+++ b/world/map/npc/026-2/cerhan.txt
@@ -1,4 +1,4 @@
-// Author: Jenalya
+// Author: Jenalya, Jesusalva
026-2,38,118,0|script|Cerhan|311
{
@@ -15,19 +15,21 @@ L_Story:
next;
mes "\"I'm an experienced weapon master and I was thinking about establishing a smithy here. I'll need some more equipment, though.\"";
next;
- if (countitem("MylarinDust") > 0)
+ if (countitem(MylarinDust) > 0)
menu
"Do you know something about 'Mylarin Dust'?", L_Mylarin,
+ "Do you work with bows or only swords and armor?", L_Banshee,
"Good luck with that.",L_GoodLuckWith;
goto L_GoodLuckWith;
L_GoodLuckWith:
mes "[Cerhan]";
mes "\"If you're interested in weapons and armor, you may want to come back later.\"";
- if (countitem("SandCutter") > 0)
+ if (countitem(SandCutter) > 0)
menu
"[Leave]",L_Close,
- "Actually, I exchanged my Mylarin Dust with a bunny girl.", L_SandCutter;
+ "Actually, I exchanged my Mylarin Dust with a bunny girl.", L_SandCutter,
+ "Do you work with bows or only swords and armor?", L_Banshee;
close;
L_SandCutter:
@@ -50,6 +52,51 @@ L_Mylarin:
mes "\"Please come back, when I'm ready for that. Mylarin dust... amazing.\"";
goto L_Close;
+L_Banshee:
+ mes "[Cerhan]";
+ mes "\"I work mostly with ##Bdaggers##b and armor, not swords. Umfrey is selling arrows; He should be at your right, talk to him instead.\"";
+ if (countitem(BansheeBow) < 1) goto L_Close;
+ next;
+ mes "[Cerhan]";
+ mes "\"Actually, what the fletching. How could you curse your [@@"+ImperialBow+"|@@] like that?! It is ruined! Would you really sacrifice anything for just some extra points in attack speed? Don't you have any virtues?!\""; // TRANSLATORS: Fletching is the fin-shaped aerodynamic stabilization device attached on arrows, bolts, darts, or javelins.
+ next;
+ mes "[Cerhan]";
+ mes "\"Sure, I can see it is much more powerful now as a [@@"+BansheeBow+"|@@] but really. A cursed item. Aren't you afraid of dying?!\"";
+ next;
+ mes "[Cerhan]";
+ mes "\"Wyara might believe that a @@"+PurificationPotion+"|@@ should only be used to purify impurities in nature, but at Thermin, we make do with what we have, so I'll offer you a deal. I can remove the curse on your bow and restore it to its original glory...\"";
+ next;
+ mes "[Cerhan]";
+ mes "\"...For only 5,000 GP. And please note, that it will be purified, not uncursed. If it was lying in, say, a chest for too long and you put it there again, the curse will resurrect and it'll be ruined again.\"";
+ next;
+ if (Zeny < 5000) goto L_NoMoney;
+ mes "[Cerhan]";
+ mes "\"So whaddaya say? Do we have a deal?\"";
+ menu
+ "I'm a bit broke right now, so maybe later.", L_NoMoney,
+ "Sure, please purify my Banshee Bow.", L_Purify;
+
+L_NoMoney:
+ next;
+ mes "[Cerhan]";
+ mes "\"Just bring me the money, and I'll do it in a jiff.\"";
+ close;
+
+L_Purify:
+ if (countitem(BansheeBow) < 1) goto L_Banshee;
+ if (Zeny < 5000) goto L_NoMoney;
+ set Zeny, Zeny - 5000;
+ delitem BansheeBow, 1;
+ getitem ImperialBow, 1;
+ mes "[Cerhan]";
+ mes "\"And here we go, your Imperial Bow was restored to its former glory! Should be much easier to survive now, eh?\"";
+ if ((checkweight(ArmorBreaker, 50) == 0) || (@inventorylist_count == 100)) goto L_Close;
+ next;
+ mes "[Cerhan]";
+ mes "\"I'll even give you a little memento. Now go, and make me proud!\"";
+ getitem ArmorBreaker, 50; // In average, each arrow went for 100 gp, a bargain
+ close;
+
L_Close:
close;
}
diff --git a/world/map/npc/026-2/gy_inn_shops.txt b/world/map/npc/026-2/gy_inn_shops.txt
index 3663d15f..cbb6c674 100644
--- a/world/map/npc/026-2/gy_inn_shops.txt
+++ b/world/map/npc/026-2/gy_inn_shops.txt
@@ -36,7 +36,7 @@
026-2,31,119,0|shop|Leofwin|304,CactusDrink:*1,CactusPotion:*1,BugLeg:*1,SmallMushroom:*1,IronPotion:*1,ConcentrationPotion:*1,HardSpike:*1,DarkCrystal:*1,Root:*1,WispPowder:*1,SpectrePowder:*1,PoltergeistPowder:*1
-026-2,22,120,0|shop|Umfrey|302,BoneArrows:*1,ShockSweet:*1
+026-2,22,120,0|shop|Umfrey|302,BoneArrows:*1,ThornArrow:*1,ShockSweet:*1
// Bank and Storage
026-2,25,120,0|script|J.P. Morbid|321
{
diff --git a/world/map/npc/027-6/general_krukan.txt b/world/map/npc/027-6/general_krukan.txt
index a685be16..8dfb80bf 100644
--- a/world/map/npc/027-6/general_krukan.txt
+++ b/world/map/npc/027-6/general_krukan.txt
@@ -200,6 +200,7 @@ OnReward:
set @bonus, (BaseLevel/4);
set DailyQuestBonus, DailyQuestBonus + @bonus;
message strcharinfo(0), "You feel a temporary rush of power and zest for action. " + @bonus + " daily bonus gained." ;
+ getexp 10000, 0;
if (BaseLevel < 90) goto L_Bonus;
set BOSS_POINTS, BOSS_POINTS + 20;
message strcharinfo(0), "You gain 20 Boss Points giving you a total of " + BOSS_POINTS + ".";
diff --git a/world/map/npc/027-7/general_razha.txt b/world/map/npc/027-7/general_razha.txt
index 137cb139..17f70b63 100644
--- a/world/map/npc/027-7/general_razha.txt
+++ b/world/map/npc/027-7/general_razha.txt
@@ -204,6 +204,7 @@ OnReward:
set @bonus, (BaseLevel/2);
set DailyQuestBonus, DailyQuestBonus + @bonus;
message strcharinfo(0), "You feel a temporary rush of power and zest for action. " + @bonus + " daily bonus gained." ;
+ getexp 50000, 0;
if (BaseLevel < 100) goto L_Bonus;
set BOSS_POINTS, BOSS_POINTS + 40;
message strcharinfo(0), "You gain 40 Boss Points giving you a total of " + BOSS_POINTS + ".";
diff --git a/world/map/npc/027-8/general_terogan.txt b/world/map/npc/027-8/general_terogan.txt
index f23bb5c8..80fe8825 100644
--- a/world/map/npc/027-8/general_terogan.txt
+++ b/world/map/npc/027-8/general_terogan.txt
@@ -268,6 +268,7 @@ OnReward:
end;
set @bonus, (BaseLevel/2);
set DailyQuestBonus, DailyQuestBonus + @bonus;
+ getexp 150000, 0;
message strcharinfo(0), "You feel a temporary rush of power and zest for action. " + @bonus + " daily bonus gained." ;
if (BaseLevel < 120) goto L_Bonus;
set BOSS_POINTS, BOSS_POINTS + 60;
diff --git a/world/map/npc/029-3/parua.txt b/world/map/npc/029-3/parua.txt
index cf785320..0abc5db2 100644
--- a/world/map/npc/029-3/parua.txt
+++ b/world/map/npc/029-3/parua.txt
@@ -401,6 +401,7 @@ L_IdleCheckPassed:
OnReward:
if (isdead())
end;
+ getexp 25000, 0;
set BOSS_POINTS, BOSS_POINTS + 100;
message strcharinfo(0), "You gain 100 Boss Points giving you a total of " + BOSS_POINTS + ".";
goto L_CleanUp_Player;
diff --git a/world/map/npc/031-4/cindyCave.txt b/world/map/npc/031-4/cindyCave.txt
index 1655205f..fc9fab08 100644
--- a/world/map/npc/031-4/cindyCave.txt
+++ b/world/map/npc/031-4/cindyCave.txt
@@ -206,6 +206,7 @@ OnReward:
goto L_End;
set QL_CINDY, 2;
message strcharinfo(0), "Cindy looks relieved and as if she wants to talk with you.";
+ getexp 100000, 0;
set BOSS_POINTS, BOSS_POINTS + 70;
message strcharinfo(0), "You gain 70 Boss Points giving you a total of " + BOSS_POINTS + ".";
goto L_End;
diff --git a/world/map/npc/034-1/yetiSpawn.txt b/world/map/npc/034-1/yetiSpawn.txt
index c1f60312..c459a8d3 100644
--- a/world/map/npc/034-1/yetiSpawn.txt
+++ b/world/map/npc/034-1/yetiSpawn.txt
@@ -41,6 +41,7 @@ OnYetiDeath:
set @state, 8;
callsub S_Update_Mask;
set BOSS_POINTS, BOSS_POINTS + 40;
+ getexp 10000, 0;
message strcharinfo(0), "You defeated the Yeti and gain 40 Boss Points giving you a total of " + BOSS_POINTS + ".";
goto L_End;
diff --git a/world/map/npc/036-2/shops.txt b/world/map/npc/036-2/shops.txt
index eadfc02b..714c115e 100644
--- a/world/map/npc/036-2/shops.txt
+++ b/world/map/npc/036-2/shops.txt
@@ -1,7 +1,7 @@
//
036-2,23,38,0|shop|Chef Armand|211,Beer:*1,Steak:*2,CasinoCoins:*1
-036-2,35,22,0|shop|Gunney|138,Arrow:*4,IronArrow:*2
+036-2,35,22,0|shop|Gunney|138,Arrow:*4,IronArrow:*2,SilverArrow:*1
036-2,23,35,0|script|Bunkmaster Daban|212
{
diff --git a/world/map/npc/043-1/_import.txt b/world/map/npc/043-1/_import.txt
index 79f05acf..1d46f4ee 100644
--- a/world/map/npc/043-1/_import.txt
+++ b/world/map/npc/043-1/_import.txt
@@ -5,3 +5,4 @@ npc: npc/043-1/_mobs.txt
npc: npc/043-1/_nodes.txt
npc: npc/043-1/_warps.txt
npc: npc/043-1/mapflags.txt
+npc: npc/043-1/pyramid.txt
diff --git a/world/map/npc/043-1/pyramid.txt b/world/map/npc/043-1/pyramid.txt
new file mode 100644
index 00000000..a3f35ccc
--- /dev/null
+++ b/world/map/npc/043-1/pyramid.txt
@@ -0,0 +1,12 @@
+// Author: Jesusalva
+
+043-1,68,113,0|script|Pyramid#T|32767,0,0
+{
+ if (countitem(SandCutter) < 1) goto L_Warrior;
+ warp "058-1", 65, 198;
+ end;
+
+L_Warrior:
+ message strcharinfo(0), "To enter this pyramid, you must obtain the weapon of a true warrior.";
+ end;
+}
diff --git a/world/map/npc/045-1/_import.txt b/world/map/npc/045-1/_import.txt
index 591b3e37..cfeef2df 100644
--- a/world/map/npc/045-1/_import.txt
+++ b/world/map/npc/045-1/_import.txt
@@ -5,3 +5,4 @@ npc: npc/045-1/_mobs.txt
npc: npc/045-1/_nodes.txt
npc: npc/045-1/_warps.txt
npc: npc/045-1/mapflags.txt
+npc: npc/045-1/pyramid.txt
diff --git a/world/map/npc/045-1/pyramid.txt b/world/map/npc/045-1/pyramid.txt
new file mode 100644
index 00000000..7944954e
--- /dev/null
+++ b/world/map/npc/045-1/pyramid.txt
@@ -0,0 +1,12 @@
+// Author: Jesusalva
+
+045-1,99,33,0|script|Pyramid#N|32767,0,0
+{
+ if (countitem(SandCutter) < 1) goto L_Warrior;
+ warp "058-2", 65, 198;
+ end;
+
+L_Warrior:
+ message strcharinfo(0), "To enter this pyramid, you must obtain the weapon of a true warrior.";
+ end;
+}
diff --git a/world/map/npc/052-2/chest.txt b/world/map/npc/052-2/chest.txt
index d7644054..00645c76 100644
--- a/world/map/npc/052-2/chest.txt
+++ b/world/map/npc/052-2/chest.txt
@@ -119,12 +119,28 @@ L_InventoryNoSpace:
L_AskLeaving:
mes "It's time to leave this place now.";
next;
+ if (countitem(ImperialBow)) goto L_Banshee;
+ goto L_ReallyLeave;
+
+L_ReallyLeave:
// Force the hero to leave last, as this event triggers the end of the quest
// as well as some dialogs from Valia, when the hero returns.
if (strcharinfo(0) == $@ILLIA_HERO$ && getareausers("052-2", 19, 8, 137, 88) > 1)
goto L_WaitHelpersLeave;
goto L_PrepareLeaving;
+L_Banshee:
+ mes "Actually, should I place the [@@"+ImperialBow+"|@@] here? If I do, it'll be cursed into a [@@"+BansheeBow+"|@@] again.";
+ menu
+ "Ridiculous. Why would I curse my weapon again?", L_ReallyLeave,
+ "Yes, that's a good idea. I would sacrifice anything for the extra power.", L_CurseBanshee;
+
+L_CurseBanshee:
+ if (countitem(ImperialBow) < 1) goto L_ReallyLeave;
+ delitem ImperialBow, 1;
+ getitem BansheeBow, 1;
+ goto L_ReallyLeave;
+
L_WaitHelpersLeave:
mes "However, I'd better wait my friends leave before I do.";
next;
diff --git a/world/map/npc/052-2/partyroom.txt b/world/map/npc/052-2/partyroom.txt
index ec6d2a64..5d4664e4 100644
--- a/world/map/npc/052-2/partyroom.txt
+++ b/world/map/npc/052-2/partyroom.txt
@@ -248,6 +248,7 @@ OnDeath:
end;
OnBP:
+ getexp 25000, 0;
set BOSS_POINTS, BOSS_POINTS + $@illia_bp;
message strcharinfo(0), "You gain " + $@illia_bp + " Boss Points giving you a total of " + BOSS_POINTS + ".";
end;
diff --git a/world/map/npc/058-1/_import.txt b/world/map/npc/058-1/_import.txt
new file mode 100644
index 00000000..f20d8766
--- /dev/null
+++ b/world/map/npc/058-1/_import.txt
@@ -0,0 +1,7 @@
+// Map 058-1: Pyramid B1F
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
+map: 058-1
+npc: npc/058-1/_mobs.txt
+npc: npc/058-1/_nodes.txt
+npc: npc/058-1/_warps.txt
+npc: npc/058-1/griffen.txt
diff --git a/world/map/npc/058-1/_mobs.txt b/world/map/npc/058-1/_mobs.txt
new file mode 100644
index 00000000..bdbfef33
--- /dev/null
+++ b/world/map/npc/058-1/_mobs.txt
@@ -0,0 +1,8 @@
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
+// Pyramid B1F mobs
+
+058-1,62,171,40,38|monster|Maggot|1002,16,20000ms,20000ms
+058-1,36,119,32,46|monster|Maggot|1002,12,20000ms,20000ms
+058-1,79,89,45,46|monster|Maggot|1002,18,20000ms,20000ms
+058-1,40,53,38,21|monster|Maggot|1002,7,20000ms,20000ms
+058-1,68,27,33,21|monster|Maggot|1002,4,20000ms,20000ms
diff --git a/world/map/npc/058-1/_nodes.txt b/world/map/npc/058-1/_nodes.txt
new file mode 100644
index 00000000..b0015ff1
--- /dev/null
+++ b/world/map/npc/058-1/_nodes.txt
@@ -0,0 +1,4 @@
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
+// Pyramid B1F nodes
+
+// (no nodes)
diff --git a/world/map/npc/058-1/_warps.txt b/world/map/npc/058-1/_warps.txt
new file mode 100644
index 00000000..bfbf011c
--- /dev/null
+++ b/world/map/npc/058-1/_warps.txt
@@ -0,0 +1,4 @@
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
+// Pyramid B1F warps
+
+058-1,65,199|warp|-1,-1,043-1,68,114
diff --git a/world/map/npc/058-1/griffen.txt b/world/map/npc/058-1/griffen.txt
new file mode 100644
index 00000000..4b81e9a6
--- /dev/null
+++ b/world/map/npc/058-1/griffen.txt
@@ -0,0 +1,45 @@
+// Author: Jesusalva
+// INFO: Quest is easier if you helped the Druid, as per Wyara lore.
+// It is meaningless if you are or aren't in the dark path.
+// The Druid fought Grenxen, founder of Tulimshar, and is therefore an ally of
+// Kirin De'Kagen, the Mana Sage.
+
+058-1,67,20,0|script|Griffen#T|194
+{
+ mes "[Griffen]";
+ mes "\"Welcome, wanderer, to the ruins of the Water Temple. Kirin De'Kagen has died while fighting Balgarieth the Mighty, Grenxen the Rat and Hra-zul the Thinker, therefore, The Sage War is over and your visit, is in vain. Your excellency Shoshanah Xirukos has already surrendered.\"";
+ next;
+ mes "[Griffen]";
+ mes "\"I am a servant of the Mana Sage, Kirin De'Kagen, and am in charge of protecting the equipment she left here, such as the [@@"+Jackal+"|@@].\"";
+ next;
+ mes "[Griffen]";
+ mes "\"The people of Tulimshar has pledged loyalty to Grenxen, so you must understand why I am suspcious of you. Please leave.\"";
+ menu
+ "Sorry, I just came to pay my respects, pay no mind.", L_Close,
+ "Ooh, that sounds like a good sword. Can I have it?", L_Quest,
+ "De'Kagen? Never heard of.", L_Kick,
+ "Hah, what a mere gryphon like you can do?", L_BadKick;
+
+L_Kick:
+ mes "[Griffen]";
+ mes "\"In name of Gryphonne Stravag, Sage of Space, I ban you to wherever you must go. Begone, fool!\"";
+ warp "069-2", 83, 22;
+ goto L_Close;
+
+L_BadKick:
+ mes "[Griffen]";
+ mes "\"In name of Gryphonne Stravag, Sage of Space, I ban you. Begone, fool!\"";
+ warp "009-8", 29, 134;
+ goto L_Close;
+
+L_Quest:
+ mes "[Griffen]";
+ mes "\"As I said earlier, I don't trust you. So thou shalt bring me 10,000,000 Monster Points, 500,000 Boss Points and 1,000 [@@"+Naftalin+"|@@], a proof you're worthy of it by defeating the mobs here, plus an undeniable proof you are at Kirin De'Kagen side...\"";
+ next;
+ mes "[Griffen]";
+ mes "\"...No, not really, I'm just messing with you. You cannot have the sword. Now go, shoo, shoo.\"";
+ goto L_Close;
+
+L_Close:
+ close;
+}
diff --git a/world/map/npc/058-2/_import.txt b/world/map/npc/058-2/_import.txt
new file mode 100644
index 00000000..4eda6315
--- /dev/null
+++ b/world/map/npc/058-2/_import.txt
@@ -0,0 +1,7 @@
+// Map 058-2: Pyramid B1F
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
+map: 058-2
+npc: npc/058-2/_mobs.txt
+npc: npc/058-2/_nodes.txt
+npc: npc/058-2/_warps.txt
+npc: npc/058-2/griffen.txt
diff --git a/world/map/npc/058-2/_mobs.txt b/world/map/npc/058-2/_mobs.txt
new file mode 100644
index 00000000..2a67ae4b
--- /dev/null
+++ b/world/map/npc/058-2/_mobs.txt
@@ -0,0 +1,8 @@
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
+// Pyramid B1F mobs
+
+058-2,63,172,40,38|monster|Maggot|1002,16,20000ms,20000ms
+058-2,37,120,32,46|monster|Maggot|1002,12,20000ms,20000ms
+058-2,80,90,45,46|monster|Maggot|1002,18,20000ms,20000ms
+058-2,41,54,38,21|monster|Maggot|1002,7,20000ms,20000ms
+058-2,69,28,33,21|monster|Maggot|1002,4,20000ms,20000ms
diff --git a/world/map/npc/058-2/_nodes.txt b/world/map/npc/058-2/_nodes.txt
new file mode 100644
index 00000000..b0015ff1
--- /dev/null
+++ b/world/map/npc/058-2/_nodes.txt
@@ -0,0 +1,4 @@
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
+// Pyramid B1F nodes
+
+// (no nodes)
diff --git a/world/map/npc/058-2/_warps.txt b/world/map/npc/058-2/_warps.txt
new file mode 100644
index 00000000..a115e5a8
--- /dev/null
+++ b/world/map/npc/058-2/_warps.txt
@@ -0,0 +1,4 @@
+// This file is generated automatically. All manually added changes will be removed when running the Converter.
+// Pyramid B1F warps
+
+058-2,65,199|warp|-1,-1,045-1,99,34
diff --git a/world/map/npc/058-2/griffen.txt b/world/map/npc/058-2/griffen.txt
new file mode 100644
index 00000000..c6bce716
--- /dev/null
+++ b/world/map/npc/058-2/griffen.txt
@@ -0,0 +1,43 @@
+// Author: Jesusalva
+// INFO: Killing the injuried mouboo will make quest easier just to balance Jackal
+// There's no deeper meaning to it, unfortunately.
+
+058-2,67,20,0|script|Griffen#K|194
+{
+ mes "[Griffen]";
+ mes "\"Welcome, wanderer, to the ruins of the Fire Temple. Kirin De'Kagen has died while fighting Balgarieth the Mighty, Grenxen the Rat and Hra-zul the Thinker, therefore, The Sage War is over and your visit, is in vain. Your excellency Sus'anoo Milachts has died valiantly fighting, but his sacrifice will not be remembered.\"";
+ next;
+ mes "[Griffen]";
+ mes "\"I am a servant of the Mana Sage, Kirin De'Kagen, and am in charge of protecting the equipment she made with Milachts, such as the [@@"+DragonSword+"|@@].\"";
+ next;
+ mes "[Griffen]";
+ mes "\"The people of Tulimshar has pledged loyalty to Grenxen, so you must understand why I am suspcious of you. Please leave.\"";
+ menu
+ "Sorry, I just came to pay my respects, pay no mind.", L_Close,
+ "Ooh, that sounds like a good sword. Can I have it?", L_Quest,
+ "De'Kagen? Never heard of.", L_Kick,
+ "Hah, what a mere gryphon like you can do?", L_BadKick;
+
+L_Kick:
+ mes "[Griffen]";
+ mes "\"In name of Gryphonne Stravag, Sage of Space, I ban you to wherever you must go. Begone, fool!\"";
+ warp "069-2", 89, 22;
+ goto L_Close;
+
+L_BadKick:
+ mes "[Griffen]";
+ mes "\"In name of Gryphonne Stravag, Sage of Space, I ban you. Begone, fool!\"";
+ warp "009-8", 29, 134;
+ goto L_Close;
+
+L_Quest:
+ mes "[Griffen]";
+ mes "\"As I said earlier, I don't trust you. So thou shalt bring me 10,000,000 Monster Points, 500,000 Boss Points and 1,000 [@@"+Naftalin+"|@@], a proof you're worthy of it by defeating the mobs here, plus an undeniable proof you are at Kirin De'Kagen side...\"";
+ next;
+ mes "[Griffen]";
+ mes "\"...No, not really, I'm just messing with you. You cannot have the sword. Now go, shoo, shoo.\"";
+ goto L_Close;
+
+L_Close:
+ close;
+}
diff --git a/world/map/npc/069-2/_import.txt b/world/map/npc/069-2/_import.txt
index b612a57e..deafb0ff 100644
--- a/world/map/npc/069-2/_import.txt
+++ b/world/map/npc/069-2/_import.txt
@@ -4,3 +4,4 @@ map: 069-2
npc: npc/069-2/_mobs.txt
npc: npc/069-2/_nodes.txt
npc: npc/069-2/_warps.txt
+npc: npc/069-2/wizard.txt
diff --git a/world/map/npc/069-2/wizard.txt b/world/map/npc/069-2/wizard.txt
new file mode 100644
index 00000000..8f2980ee
--- /dev/null
+++ b/world/map/npc/069-2/wizard.txt
@@ -0,0 +1,153 @@
+// Author: Jesusalva
+// INFO: Killing the injuried mouboo will make quest easier just to balance Jackal
+// There's no deeper meaning to it, unfortunately.
+
+069-2,107,90,0|script|Mclecht Rodium|354
+{
+ mes "[Rodium]";
+ mes "\"I am Mcl'cht Br'z R'd'm, but everyone calls me Mclecht Rodium. Feel free to call me Rodium. Perhaps you came here to play Shogi, or to discuss logic. But I feel you are just lost, little lamb.\"";
+ goto L_Menu;
+
+L_Menu:
+ next;
+ mes "[Rodium]";
+ mes "\"So, can I help you today?\"";
+ menu
+ "I was just looking around. Sorry for disturbing.", L_Close,
+ "How do I leave?", L_Leave,
+ "Who is De'Kagen?", L_Kagen,
+ "Who is Grenxen?", L_Grenxen,
+ "Who is Stravag?", L_Stravag,
+ "What is The Sage War?", L_Sage,
+ "What is a Rewrite?", L_Rewrite;
+
+L_Leave:
+ mes "[Rodium]";
+ mes "\"Oh, just keep going ##Bsoutheast##b. It is hard to miss the exit. This pocket dimension will connect to somewhere familiar, so don't worry, you're not lost in a spatial sense.\"";
+ goto L_Close;
+
+L_Kagen:
+ mes "[Rodium]";
+ mes "\"The De'Kagen? Both were born from the ##BMana Tree##b. The young sister - Kirin Arianna De'Kagen - was the sage of mana, but the older brother was the exact opposite. Zax Caiaphas De'Kagen was deemed too dangerous too live and had to flee.\"";
+ next;
+ mes "[Rodium]";
+ mes "\"The last time Zax De'Kagen was seen, was when he took Kirin's body for burial. Kirin died during ##BThe Sage War##b, after all. Well, this is when he was last seen... on my timeline.\"";
+ next;
+ mes "[Rodium]";
+ mes "\"In your timeline, though, there was no Sage War and the Mana Tree itself doesn't exist. I also don't exist in your timeline. The reason why we can be speaking right now... Is ##BThe Rewrite##b.\"";
+ goto L_Menu;
+
+L_Grenxen:
+ mes "[Rodium]";
+ mes "\"Grenxen is the Great Dragon which founded Tulimshar. In my timeline, there were six of them: Grenxen the Rat, Hra-zul the Thinker, Vixiel the Solitary, Balgarieth the Mighty, Xendah the Scholar, and Azerel the Banished.\"";
+ next;
+ mes "[Rodium]";
+ mes "\"But that's ##Bonly on my timeline##b. In your timeline, there were four Great Dragons: Jande, Tal, Di'Tal and Nu'Rem - and the later is dead.\"";
+ next;
+ mes "[Rodium]";
+ mes "\"Confused? Well, the reason why they have different names for me and for you... Is ##BThe Rewrite##b.\"";
+ goto L_Menu;
+
+L_Stravag:
+ mes "[Rodium]";
+ mes "\"Gryphonne Stravag was the Sage of Space. He always knows where he is going, even in the deeper sense of things, and tends to help anyone who gets lost.\"";
+ next;
+ mes "[Rodium]";
+ mes "\"However, he does not exist on your timeline. The reason for that... Is ##BThe Rewrite##b.\"";
+ goto L_Menu;
+
+L_Sage:
+ mes "[Rodium]";
+ mes "\"Oh, it was a terrible war. ##BThe nine sages versus the six great dragons.##b Aurora, Heketch, Terhi, Sus'anoo, Garathos, Shoshanah, Gryphonne, Kirin and I, against Grenxen, Hra-zul, Vixiel, Balgarieth, Xendah and Azerel.\"";
+ next;
+ mes "[Rodium]";
+ mes "\"Heketch, Sage of Darkness, was the last survivor of a clan attacked by the six great dragons, and the only one who really knew how to fight. In his words, Darkness is to hide what must be concealed, fill what cannot be filled, and to place an end to every begining in its proper time. And no, it is not evil.\"";
+ next;
+ mes "[Rodium]";
+ mes "\"Now, every sage is pretty detached from worldly matters, and not keen to violence or fighting in general - not even Heketch, so what could possibly lead all these nine to reunite and fight?\"";
+ next;
+ mes "[Rodium]";
+ mes "\"One day you'll understand. What really matters is the result: ##BThe sages were defeated and most of them perished.##b They did manage to inflict considerable damage, but in the end, they were no match to the power and might of dragons.\"";
+ next;
+ mes "[Rodium]";
+ mes "\"The sages were then ##Berased from existence##b and no longer make part of this world's history. The reason for that... Is ##BThe Rewrite##b.\"";
+ goto L_Menu;
+
+L_Rewrite:
+ mes "[Rodium]";
+ mes "\"All questions will lead you here, but no answers are to found here. You certainly know the normal flow of time, the normal flow of life and death. You fight monsters, you build a town, develop commerce and warfare, grow in power, so on and so forth.\"";
+ next;
+ mes "[Rodium]";
+ mes "\"And then, there's the rewrite.\"";
+ next;
+ mes "[Rodium]";
+ mes "\"##BA rewrite changes the past, the present and the future.##b Whenever a rewrite happen, things cease to exist. It doesn't matter if it is an object, a person, a whole town, or even a war. Once a rewrite happens, anything which doesn't comply to its definition ceases to exist.\"";
+ next;
+ mes "[Rodium]";
+ mes "\"You can think as if the world ended and was born anew. But then you notice something is amiss. Towns which exist without being founded, names in history which no one knows about. Objects from lost civilizations which never existed. For each rewrite that happen... ##BContradictions##b fill the world.\"";
+ next;
+ mes "[Rodium]";
+ mes "\"And at some point, it happens. A rewrite rewrite the rewrite. Something which ceased to be, is returned to existence.\"";
+ next;
+ mes "[Rodium]";
+ mes "\"Hello there, I am R'd'm, Sage of Time. I have ceased to exist along the first timeline, when the citizens defeated the great dragons and destroyed ether spirit of Metal, Plant, Lightning and Ice. I came back in this ##Bfourth timeline##b to finish what was started.\"";
+ next;
+ mes "[Rodium]";
+ mes "\"You are "+strcharinfo(0)+", born in the third timeline, citizen of the fourth timeline. If you don't remember how the third timeline ended, ##BI can revive this memory on you##b, for I hold the power of time itself.\"";
+ goto L_Menu2;
+
+L_Menu2:
+ next;
+ mes "["+strcharinfo(0)+"]";
+ menu
+ "Can you repeat the rewrite stuff.", L_Rewrite,
+ "There are more things I want to ask.", L_Menu,
+ "So, what are you doing here?", L_What,
+ "So, what should I be doing?", L_Task,
+ "Can I relive the Doomsday?", L_Doomsday,
+ "Uhm. Thanks. I... Gotta to go.", L_Close;
+
+L_What:
+ mes "[Rodium]";
+ mes "\"##BYou can't change the past.##b There's no magic to fix your past mistakes. ##BBut a rewrite can.##b It is powerful enough to erase anything you don't like, to revive fallen civilizations, this and much more. Although you can't control it.\"";
+ next;
+ mes "[Rodium]";
+ mes "\"I may not tell you what will happen in the future, but I can tell you a thing. If someone, for some reason, wanted to alter something which happened during the Sage War, and used a Rewrite to do so... Would the sage war come back along its sages?\"";
+ next;
+ mes "[Rodium]";
+ mes "\"Make your own conclusions, I'll not say anything further about this.\"";
+ goto L_Menu2;
+
+L_Task:
+ mes "[Rodium]";
+ mes "\"Whatever you want to do.\"";
+ next;
+ mes "[Rodium]";
+ mes "\"The events which I just said will affect your life, but they're part of The Mana World history, not yours. ##BThey don't dictate your actions.##b\"";
+ next;
+ mes "[Rodium]";
+ mes "\"So enjoy your freedom to do whatever you want to! Seek to make a better mana world to live, to become the strongest, to write down your name in the history, your options are limitless.\"";
+ goto L_Menu2;
+
+L_Doomsday:
+ mes "[Rodium]";
+ mes "\"Yes. The Doomsday is how the third rewrite happened and the fourth timeline began. You can get a [@@"+SaviorArmor+"|@@] if you can watch until the very end, but I must warn you...\"";
+ next;
+ mes "[Rodium]";
+ mes "\"...The Doomsday was a fierce battle. If you go there alone, you definitely will die. You should make a party and bring them all here, then I'll consider helping you.\"";
+ next;
+ mes "[Rodium]";
+ mes "\"##1##BNote: Sorry, Jesusalva broke the time again. Guess he is late to take a bus! Oh dear, these things happen, but I guess that to see the past... You must wait for the future...##b##0\"";
+ if (GM > G_DEV) goto L_Warp;
+ goto L_Menu2;
+
+L_Warp:
+ // TODO: Require some sort of payment
+ // TODO: Revive all mobs from 099-1/-2/-3 (they do not respawn, iirc)
+ // TODO: Reduce amount of mobs >.<
+ warp "099-1", 34, 34;
+ close;
+
+L_Close:
+ close;
+}
diff --git a/world/map/npc/099-2/logic.txt b/world/map/npc/099-2/logic.txt
index 902789f1..29d7e96d 100644
--- a/world/map/npc/099-2/logic.txt
+++ b/world/map/npc/099-2/logic.txt
@@ -286,7 +286,7 @@ OnJanitor:
mes "Reading this is as hard as finding a needle in a haystack.";
if (debug) goto L_Close;
- if (countitem("FlawedLens") < 1) goto L_Tools;
+ if (countitem(FlawedLens) < 1) goto L_Tools;
mes "Although the painting also has no artistic value on its own...";
mes "Something tells you there is something ominous with it.";
next;
@@ -304,8 +304,8 @@ L_Tools:
close;
L_UseLens:
- delitem "FlawedLens", 1;
- getexp 10000, 10000;
+ //delitem FlawedLens, 1;
+ //getexp 10000, 10000;
mes "~~~graphics/images/kirin.png~";
mes "[@@https://wiki.themanaworld.org/images/5/57/Kirin_by_clef.jpg|There is the image of a woman on it@@].";
next;
@@ -318,7 +318,7 @@ L_UseLens:
mes "Rest in Peace. Damnatio memoriae. Effective immediately.";
// ;-- TRANSLATORS: Damnatio memoriae - "condemnation of memory", indicating that a person is to be excluded from official accounts. History rewrite if required.
next;
- mes "The lens break! They were not only poorly effective but also of bad quality.";
+ //mes "The lens break! They were not only poorly effective but also of bad quality.";
mes "If only we could make the real Lens, we would have been able to find out";
mes "what is up with this ominous, eerie feeling this picture gives.";
close;
diff --git a/world/map/npc/099-5/boss.txt b/world/map/npc/099-5/boss.txt
index d36457d2..de61bdf0 100644
--- a/world/map/npc/099-5/boss.txt
+++ b/world/map/npc/099-5/boss.txt
@@ -133,7 +133,7 @@ OnMTChallenge:
set @dd5_score, 0;
set @dd5_timer, gettimetick(0);
getexp 40000, 0;
- set BOSS_POINTS, BOSS_POINTS + 5;
+ set BOSS_POINTS, BOSS_POINTS + 1;
message strcharinfo(0), "This battle experience distribution is different, and death is final. Be careful!";
// Give everyone some participation points simply for continued survival
set @dd5_score, 1200;
@@ -158,8 +158,8 @@ OnMTReward50:
end;
getexp @dd5_share*100, @dd5_share;
set Zeny, Zeny + @dd5_share;
- set BOSS_POINTS, BOSS_POINTS + @dd5_share/100;
- message strcharinfo(0), "Gained "+(@dd5_share/100)+" boss points!";
+ set BOSS_POINTS, BOSS_POINTS + @dd5_share/120;
+ message strcharinfo(0), "Gained "+(@dd5_share/120)+" boss points!";
goto OnMTMusicOff;
OnMTReward40:
@@ -168,8 +168,8 @@ OnMTReward40:
end;
getexp @dd5_share*10, @dd5_share/10;
set Zeny, Zeny + @dd5_share/10;
- set BOSS_POINTS, BOSS_POINTS + @dd5_share/200;
- message strcharinfo(0), "Gained "+(@dd5_share/200)+" boss points!";
+ set BOSS_POINTS, BOSS_POINTS + @dd5_share/220;
+ message strcharinfo(0), "Gained "+(@dd5_share/220)+" boss points!";
goto OnMTMusicOff;
////////////////////////////
@@ -180,8 +180,8 @@ OnMTReward51:
end;
getexp @dd5_share*200, @dd5_share*2;
set Zeny, Zeny + (@dd5_share*2);
- set BOSS_POINTS, BOSS_POINTS + @dd5_share/50;
- message strcharinfo(0), "Gained "+(@dd5_share/50)+" boss points!";
+ set BOSS_POINTS, BOSS_POINTS + @dd5_share/70;
+ message strcharinfo(0), "Gained "+(@dd5_share/70)+" boss points!";
goto OnMTMusicOff;
OnMTReward41:
@@ -190,8 +190,8 @@ OnMTReward41:
end;
getexp @dd5_share*20, @dd5_share/5;
set Zeny, Zeny + @dd5_share/5;
- set BOSS_POINTS, BOSS_POINTS + @dd5_share/100;
- message strcharinfo(0), "Gained "+(@dd5_share/100)+" boss points!";
+ set BOSS_POINTS, BOSS_POINTS + @dd5_share/120;
+ message strcharinfo(0), "Gained "+(@dd5_share/120)+" boss points!";
goto OnMTMusicOff;
////////////////////////////
@@ -202,8 +202,8 @@ OnMTReward52:
end;
getexp @dd5_share*500, @dd5_share*5;
set Zeny, Zeny + (@dd5_share*5);
- set BOSS_POINTS, BOSS_POINTS + @dd5_share/20;
- message strcharinfo(0), "Gained "+(@dd5_share/20)+" boss points!";
+ set BOSS_POINTS, BOSS_POINTS + @dd5_share/40;
+ message strcharinfo(0), "Gained "+(@dd5_share/40)+" boss points!";
music "ghoulish-fun.ogg";
mapmask 1;
@@ -223,8 +223,8 @@ OnMTReward42:
end;
getexp @dd5_share*50, @dd5_share;
set Zeny, Zeny + @dd5_share;
- set BOSS_POINTS, BOSS_POINTS + @dd5_share/50;
- message strcharinfo(0), "Gained "+(@dd5_share/50)+" boss points!";
+ set BOSS_POINTS, BOSS_POINTS + @dd5_share/70;
+ message strcharinfo(0), "Gained "+(@dd5_share/70)+" boss points!";
music "ghoulish-fun.ogg";
// Warp to 099-5 or dispose dead bodies
@@ -1477,7 +1477,7 @@ OnPrompt:
mes "";
mes "Server Name: ##BThe Mana World##b";
mes "Server Address: ##Bserver.themanaworld.org##b";
- mes "Server Port: ##BXXXX##b";
+ mes "Server Port: ##B6969##b";
mes "Server Type: ##BEvol2##b";
mes "Server Description: ##BMain Server for The Mana World##b";
mes "";
@@ -1511,7 +1511,7 @@ L_MissionComplete:
close;
L_Winner:
- getitem "SaviorArmor", 1;
+ getitem SaviorArmor, 1;
set $@DD5_TALLY$, "";
set #DD5_TALLY, 1;
mes "##2You were the MVP with "+$@DD5_TALLY_+" points!##0";
diff --git a/world/map/npc/_import.txt b/world/map/npc/_import.txt
index eaac6f29..2e832cdb 100644
--- a/world/map/npc/_import.txt
+++ b/world/map/npc/_import.txt
@@ -117,6 +117,8 @@ import: npc/055-1/_import.txt
import: npc/055-3/_import.txt
import: npc/056-2/_import.txt
import: npc/057-1/_import.txt
+import: npc/058-1/_import.txt
+import: npc/058-2/_import.txt
import: npc/069-2/_import.txt
import: npc/070-1/_import.txt
import: npc/070-3/_import.txt
diff --git a/world/map/npc/functions/evil_obelisk.txt b/world/map/npc/functions/evil_obelisk.txt
index a5fe6e55..e2ba0bbe 100644
--- a/world/map/npc/functions/evil_obelisk.txt
+++ b/world/map/npc/functions/evil_obelisk.txt
@@ -1,105 +1,165 @@
+// FIXME: There's no for loop so make a callsub loop
function|script|EvilObelisk
{
mes "[Evil Obelisk]";
- mes "(A mystical aura surrounds this stone. It seems to crave money.)";
+ //if (mobcount(getmap(), "All") > 300) goto L_Full; // , the craving done
+ mes "(A mystical red aura surrounds this stone. The stone seems to glow brighter as your coin purse gets closer... It seems to crave money.)";
next;
- set @cost_jacko, 6500;
- set @cost_gy1, 4000;
- set @cost_gy2, 3000;
- set @cost_skull, 2800;
- set @cost_snake, 2500;
- set @cost_keshlam, 10000;
+ set @cost_jacko, 5000;
+ set @cost_gy1, 7500;
+ set @cost_gy2, 11000;
+ set @cost_skull, 4000;
+ set @cost_snake, 4500;
+ set @cost_keshlam, 18000;
menu
"Don't pay it anything.", L_Close,
+ "Pay it " + @cost_skull + " gold.", L_SKULL,
+ "Pay it " + @cost_snake + " gold.", L_SNAKE,
"Pay it " + @cost_jacko + " gold.", L_JACKO,
"Pay it " + @cost_gy1 + " gold.", L_GRAVEYARD1,
"Pay it " + @cost_gy2 + " gold.", L_GRAVEYARD2,
- "Pay it " + @cost_skull + " gold.", L_SKULL,
- "Pay it " + @cost_snake + " gold.", L_SNAKE,
"Pay it " + @cost_keshlam + " gold.", L_KESHLAM;
L_JACKO:
if (Zeny < @cost_jacko)
goto L_NotEnough;
set Zeny, Zeny - @cost_jacko;
- set @mob_id, 1022;
- set @mob_count, rand(1,2);
+ set @mob_id, JackO;
+ set @mob_count, rand(1,3);
goto L_Summon;
+
L_GRAVEYARD1:
if (Zeny < @cost_gy1)
goto L_NotEnough;
- set @temp, rand(2);
+ set Zeny, Zeny - @cost_gy1;
+ set @mob_count, rand(6,8);
+ set @tmp_count, 0;
+ goto L_GRAVEYARD1_1;
+
+L_GRAVEYARD1_1:
+ set @tmp_count, @tmp_count + 1;
+ if (@tmp_count > @mob_count) goto L_Close;
+ set @temp, rand(3);
if(@temp == 0)
- set @mob_id, 1036; // Zombie
+ set @mob_id, Zombie;
if(@temp == 1)
- set @mob_id, 1045; // Fallen
- set @mob_count, rand(1,2);
- set Zeny, Zeny - @cost_gy1;
- goto L_Summon;
+ set @mob_id, Fallen;
+ if(@temp == 2)
+ set @mob_id, LadySkeleton;
+ if(@temp == 3)
+ set @mob_id, Skeleton;
+ callsub S_Summon;
+ goto L_GRAVEYARD1_1;
+
L_GRAVEYARD2:
if (Zeny < @cost_gy2)
goto L_NotEnough;
- set @temp, rand(2);
+ set Zeny, Zeny - @cost_gy2;
+ set @mob_count, rand(6,8);
+ set @tmp_count, 0;
+ goto L_GRAVEYARD2_1;
+
+L_GRAVEYARD2_1:
+ set @tmp_count, @tmp_count + 1;
+ if (@tmp_count > @mob_count) goto L_Close;
+ set @temp, rand(6);
if(@temp == 0)
- set @mob_id, 1044; // Lady Skelly
+ set @mob_id, LadySkeleton;
if(@temp == 1)
- set @mob_id, 1043; // Normal Skelly
- set @mob_count, rand(1,2);
- set Zeny, Zeny - @cost_gy2;
- goto L_Summon;
+ set @mob_id, Skeleton;
+ if(@temp == 2)
+ set @mob_id, WitchGuard;
+ if(@temp == 3)
+ set @mob_id, RedBone;
+ if(@temp == 4)
+ set @mob_id, Stalker;
+ if(@temp == 5)
+ set @mob_id, Scythe;
+ callsub S_Summon;
+ goto L_GRAVEYARD2_1;
+
L_SKULL:
if (Zeny < @cost_skull)
goto L_NotEnough;
- set @temp, rand(2);
+ set Zeny, Zeny - @cost_skull;
+ set @mob_count, rand(7,9);
+ set @tmp_count, 0;
+ goto L_SKULL_1;
+
+L_SKULL_1:
+ set @tmp_count, @tmp_count + 1;
+ if (@tmp_count > @mob_count) goto L_Close;
+ set @temp, rand(3);
if(@temp == 0)
- set @mob_id, 1024; // Poison
+ set @mob_id, PoisonSkull;
if(@temp == 1)
- set @mob_id, 1023; // Fire
- set @mob_count, rand(1,4);
- set Zeny, Zeny - @cost_skull;
- goto L_Summon;
+ set @mob_id, FireSkull;
+ if(@temp == 2)
+ set @mob_id, IceSkull;
+ callsub S_Summon;
+ goto L_SKULL_1;
+
L_SNAKE:
if (Zeny < @cost_snake)
goto L_NotEnough;
+ set Zeny, Zeny - @cost_snake;
+ set @mob_count, rand(4,10);
+ set @tmp_count, 0;
+ goto L_SNAKE_1;
+
+L_SNAKE_1:
+ set @tmp_count, @tmp_count + 1;
+ if (@tmp_count > @mob_count) goto L_Close;
set @temp, rand(4);
if(@temp == 0)
- set @mob_id, 1034; // Grass
+ set @mob_id, GrassSnake;
if(@temp == 1)
- set @mob_id, 1026; // Mnt.
+ set @mob_id, MountainSnake;
if(@temp == 2)
- set @mob_id, 1010; // Normal
+ set @mob_id, Snake;
if(@temp == 3)
- set @mob_id, 1021; // Cave
- set @mob_count, rand(1,4);
- set Zeny, Zeny - @cost_snake;
- goto L_Summon;
+ set @mob_id, CaveSnake;
+ callsub S_Summon;
+ goto L_SNAKE_1;
+
L_KESHLAM:
if (Zeny < @cost_keshlam)
goto L_NotEnough;
+ set Zeny, Zeny - @cost_keshlam;
+ set @mob_count, rand(3,7);
+ set @tmp_count, 0;
+ goto L_KESHLAM_1;
+
+L_KESHLAM_1:
+ set @tmp_count, @tmp_count + 1;
+ if (@tmp_count > @mob_count) goto L_Close;
set @temp, rand(3);
if(@temp == 0)
- set @mob_id, 1140; // Tengu
+ set @mob_id, Tengu;
if(@temp == 1)
- set @mob_id, 1141; // Sasquatch
+ set @mob_id, Sasquatch;
if(@temp == 2)
- set @mob_id, 1143; // Mana Slayer
- set @mob_count, rand(1,3);
- set Zeny, Zeny - @cost_keshlam;
- goto L_Summon;
+ set @mob_id, ManaSlayer;
+ callsub S_Summon;
+ goto L_KESHLAM_1;
+
+S_Summon:
+ areamonster @map$, @x0, @y0, @x1, @y1, "", @mob_id, 1;
+ return;
L_Summon:
areamonster @map$, @x0, @y0, @x1, @y1, "", @mob_id, @mob_count;
goto L_Close;
L_NotEnough:
- mes "You don't have that much money";
+ mes "You don't have that much money.";
goto L_Close;
L_Close:
@@ -109,6 +169,8 @@ L_Close:
set @cost_skull, 0;
set @cost_snake, 0;
set @cost_keshlam, 0;
+ set @temp, 0;
+ set @tmp_count, 0;
return;
}
diff --git a/world/map/npc/functions/global_event_handler.txt b/world/map/npc/functions/global_event_handler.txt
index 690b0566..f7156539 100644
--- a/world/map/npc/functions/global_event_handler.txt
+++ b/world/map/npc/functions/global_event_handler.txt
@@ -24,10 +24,12 @@ OnPCLoginEvent:
OnPCKillEvent:
callfunc "elanore_decrease_exp"; // decrease heal exp for doing bad things
+ callfunc "SweetTooth";
end;
OnMobKillEvent:
callfunc "MobPoints";
+ callfunc "SweetTooth";
end;
OnPCDieEvent:
diff --git a/world/map/npc/functions/mob_points.txt b/world/map/npc/functions/mob_points.txt
index cf93fdae..ecea5b82 100644
--- a/world/map/npc/functions/mob_points.txt
+++ b/world/map/npc/functions/mob_points.txt
@@ -4,6 +4,8 @@ function|script|MobPoints
{
if (@mobID < 1002) goto L_Return;
+ callsub S_Vault;
+
setarray @points,
1, // 1002 Maggot
2, // 1003 Scorpion
@@ -176,7 +178,11 @@ function|script|MobPoints
0, // 1165 RESERVED
0, // 1166 RESERVED
0, // 1167 RESERVED
- 0 // 1168 Floyd
+ 0, // 1168 Floyd
+ 0, // 1169 Crystal Spider
+ 0, // 1170 Crystal Golem
+ 0, // 1171 Black Crystal Golem
+ 0 // 1172 Bif
;
if ((MPQUEST == 1) && (@mobID < 1128))
@@ -266,6 +272,13 @@ L_Terranite:
set TERRAC, TERRAC + 1;
goto L_Return;
+S_Vault:
+ if (#EXP_CREDIT < 1) goto L_Return;
+ set @exp_bonus, min(#EXP_CREDIT, mobinfo(@mobID, MOB_BASEEXP) * 2);
+ set #EXP_CREDIT, #EXP_CREDIT - @exp_bonus;
+ getexp @exp_bonus, 0;
+ return;
+
L_Return:
set @value, 0;
return;
diff --git a/world/map/npc/functions/vault.txt b/world/map/npc/functions/vault.txt
index ee30863c..a0da16b1 100644
--- a/world/map/npc/functions/vault.txt
+++ b/world/map/npc/functions/vault.txt
@@ -24,7 +24,7 @@ L_Return:
S_Exp:
if (##ADD_LVL < 1) goto S_Return;
- getexp ##ADD_LVL, 0;
+ set #EXP_CREDIT, #EXP_CREDIT + ##ADD_LVL;
set ##ADD_LVL, 0;
return;
@@ -46,7 +46,7 @@ S_Preset:
if (##PRESET >= 1 && @last_preset < 1)
getitem "SharpKnife",1;
if (##PRESET >= 2 && @last_preset < 2)
- getitem "Dagger",1;
+ getitem "SlingBullet",500;
if (##PRESET >= 3 && @last_preset < 3)
getitem "Bow",1;
if (##PRESET >= 3 && @last_preset < 3)
@@ -54,59 +54,35 @@ S_Preset:
if (##PRESET >= 4 && @last_preset < 4)
getitem "Arrow",500;
if (##PRESET >= 5 && @last_preset < 5)
- getitem "Scythe",1;
+ getitem "JeansShorts",1;
if (##PRESET >= 6 && @last_preset < 6)
- getitem "ShortBow",1;
+ getitem "IronArrow",500;
if (##PRESET >= 7 && @last_preset < 7)
getitem "IronArrow",500;
if (##PRESET >= 8 && @last_preset < 8)
- getitem "ShortSword",1;
+ getitem "IronPowder", 150;
if (##PRESET >= 9 && @last_preset < 9)
- getitem "BoneArrows",100;
+ getitem "BoneArrows",150;
if (##PRESET >= 10 && @last_preset < 10)
- getitem "ForestBow",1;
+ getitem "BoneArrows",150;
if (##PRESET >= 11 && @last_preset < 11)
- getitem "IronArrow",500;
+ getitem "SilverArrow",200;
if (##PRESET >= 12 && @last_preset < 12)
- getitem "IceGladius",1;
+ getitem "ThornArrow",100;
if (##PRESET >= 13 && @last_preset < 13)
- getitem "Arrow",500;
+ getitem "SilverArrow",200;
if (##PRESET >= 14 && @last_preset < 14)
getitem "TerraniteArrow",100;
if (##PRESET >= 15 && @last_preset < 15)
- getitem "BoneArrows",100;
+ getitem "ArmorBreaker",100;
if (##PRESET >= 16 && @last_preset < 16)
- getitem "BoneKnife",1;
+ getitem "ThornArrow",100;
if (##PRESET >= 17 && @last_preset < 17)
getitem "TerraniteArrow",100;
if (##PRESET >= 18 && @last_preset < 18)
- getitem "Setzer",1;
+ getitem "IronPowder", 150;
if (##PRESET >= 19 && @last_preset < 19)
getitem "TerraniteArrow",250;
- //if (##PRESET >= 20 && @last_preset < 20)
- // getitem "BansheeBow",1;
-
- /* Handle equipment */
- if (##PRESET >= 2 && @last_preset < 2)
- getitem "SilkHeadband",1;
- if (##PRESET >= 4 && @last_preset < 4)
- getitem "LeatherShirt",1;
- if (##PRESET >= 6 && @last_preset < 6)
- getitem "JeansShorts",1;
- if (##PRESET >= 8 && @last_preset < 8)
- getitem "SilkRobe",1;
- if (##PRESET >= 10 && @last_preset < 10)
- getitem "InfantryHelmet",1;
- if (##PRESET >= 12 && @last_preset < 12)
- getitem "ChainmailShirt",1;
- if (##PRESET >= 14 && @last_preset < 14)
- getitem "CottonBoots",1;
- if (##PRESET >= 16 && @last_preset < 16)
- getitem "JeansChaps",1;
- if (##PRESET >= 18 && @last_preset < 18)
- getitem "CottonGloves",1;
- if (##PRESET >= 20 && @last_preset < 20)
- getitem "LightPlatemail",1;
set ##PRESET, 0;
return;
diff --git a/world/map/npc/items/check_wand.txt b/world/map/npc/items/check_wand.txt
index 93993c53..5284b3ac 100644
--- a/world/map/npc/items/check_wand.txt
+++ b/world/map/npc/items/check_wand.txt
@@ -1,2 +1,21 @@
// Wands
-// Author: Wushin
+// Author: Jesusalva
+
+function|script|SweetTooth
+{
+ if (getequipid(equip_hand1) != SweetTooth) goto L_Return;
+ set Sp, min(MaxSp, Sp + MaxSp / 20); // Restore up to 5% MP
+ if (strcharinfo(1) == "follow the white rabbit")
+ goto L_Cake;
+ return;
+
+L_Cake:
+ if (@sweetooth > gettimetick(2)) goto L_Return;
+ message strcharinfo(0), "The @@1170|@@ gave you cake. It was delicious! Your mana was restored.";
+ set @sweetooth, gettimetick(2) + 160;
+ return;
+
+L_Return:
+ return;
+}
+
diff --git a/world/map/npc/magic/_import.txt b/world/map/npc/magic/_import.txt
index c3cd11ec..5b1ea65c 100644
--- a/world/map/npc/magic/_import.txt
+++ b/world/map/npc/magic/_import.txt
@@ -19,6 +19,7 @@ npc: npc/magic/level1-sense-spouse.txt
npc: npc/magic/level1-detect-magic.txt
npc: npc/magic/level2-arrow-hail.txt
npc: npc/magic/level2-make-arrows.txt
+npc: npc/magic/level2-make-bones.txt
npc: npc/magic/level2-make-iron-powder.txt
npc: npc/magic/level2-magic-knuckles.txt
npc: npc/magic/level2-summon-snakes.txt
diff --git a/world/map/npc/magic/level0-wand.txt b/world/map/npc/magic/level0-wand.txt
index b1dfb686..b12bc649 100644
--- a/world/map/npc/magic/level0-wand.txt
+++ b/world/map/npc/magic/level0-wand.txt
@@ -53,8 +53,8 @@ S_SetWand:
set QL_MORGAN, 3;
setarray @wandspell[0],
.WandsAnim[.@wand_loop], // wand anim/id
- (.@pwr * (BaseLevel / 15) + 2), // wand cost
- (.@pwr * (@spellpower / 3)), // wand dmg
+ ((.@pwr * BaseLevel * 2 / 3) / 15 + 2), // wand cost
+ (.@pwr * (@spellpower * (11-.@pwr) / 30)), // wand dmg
(((200 - Agi) * 1200) / 200), //delay
(.@pwr + (@spellpower / 10)); // charges
return;
@@ -73,9 +73,9 @@ L_Failed:
end;
OnInit:
- setarray .Wands[0], 0, 758, 1171, 906;
- setarray .WandsPwr[0], 0, 2, 1, 1;
- setarray .WandsAnim[0], 0, OVERRIDE_WAND_STAFF, OVERRIDE_WAND_WAND, OVERRIDE_BLADE;
+ setarray .Wands[0], 0, 758, 1170, 1171, 906;
+ setarray .WandsPwr[0], 0, 2, 2, 1, 1;
+ setarray .WandsAnim[0], 0, OVERRIDE_WAND_STAFF, OVERRIDE_WAND_STAFF, OVERRIDE_WAND_WAND, OVERRIDE_BLADE;
set .school, SKILL_MAGIC;
set .invocation$, chr(MAGIC_SYMBOL) + "confringo"; // used in npcs that refer to this spell
void call("magic_register");
diff --git a/world/map/npc/magic/level2-make-arrows.txt b/world/map/npc/magic/level2-make-arrows.txt
index 4451128f..dbd2bc2f 100644
--- a/world/map/npc/magic/level2-make-arrows.txt
+++ b/world/map/npc/magic/level2-make-arrows.txt
@@ -4,16 +4,16 @@
if (Sp < 8) end;
if (getskilllv(SKILL_MAGIC) < .level) end;
if (getskilllv(.school) < .level) end;
- if (countitem("RawLog") < 1) end;
- delitem "RawLog", 1;
+ if (countitem(RawLog) < 1) end;
+ delitem RawLog, 1;
set @_M_BLOCK, 1; // block casting, until the timer clears it
addtimer 5000, "Magic Timer::OnClear"; // set the new debuff
sc_start SC_COOLDOWN, 5000, 0, BL_ID;
callfunc "adjust_spellpower";
set Sp, Sp - 8;
misceffect FX_MAGIC_ARROW_CAST, strcharinfo(0);
- setarray @create_params[0], (@spellpower/40)+1+(rand(max(1,(800-@spellpower)))/80), 500;
- setarray @create_items$[0], "Arrow", "WarpedLog";
+ setarray @create_params[0], (@spellpower/32)+1+(rand(max(1,(800-@spellpower)))/80), 500;
+ setarray @create_items$[0], "IronArrow", "WarpedLog";
callfunc "magic_create_item";
callfunc "magic_exp";
end;
diff --git a/world/map/npc/magic/level2-make-bones.txt b/world/map/npc/magic/level2-make-bones.txt
new file mode 100644
index 00000000..3cd9989a
--- /dev/null
+++ b/world/map/npc/magic/level2-make-bones.txt
@@ -0,0 +1,28 @@
+-|script|make-bones|32767
+{
+ if(call("magic_checks")) end;
+ if (Sp < 16) end;
+ if (getskilllv(SKILL_MAGIC) < .level) end;
+ if (getskilllv(.school) < .level) end;
+ if (countitem(Bone) < 1) end;
+ delitem Bone, 1;
+ set @_M_BLOCK, 1; // block casting, until the timer clears it
+ addtimer 5000, "Magic Timer::OnClear"; // set the new debuff
+ sc_start SC_COOLDOWN, 5000, 0, BL_ID;
+ callfunc "adjust_spellpower";
+ set Sp, Sp - 16;
+ misceffect FX_MAGIC_ARROW_CAST, strcharinfo(0);
+ setarray @create_params[0], (@spellpower/32)+1+(rand(max(1,(800-@spellpower)))/80), 500;
+ setarray @create_items$[0], "BoneArrows", "IronArrow";
+ callfunc "magic_create_item";
+ callfunc "magic_exp";
+ end;
+
+OnInit:
+ set .school, SKILL_MAGIC_TRANSMUTE;
+ set .invocation$, chr(MAGIC_SYMBOL) + "kularzunevelafrill"; // used in npcs that refer to this spell
+ void call("magic_register");
+ set .level, 2;
+ set .exp_gain, 1;
+ end;
+}