summaryrefslogtreecommitdiff
path: root/world
diff options
context:
space:
mode:
Diffstat (limited to 'world')
-rw-r--r--world/map/db/const-aegis.txt2
-rw-r--r--world/map/db/const.txt4
-rw-r--r--world/map/db/item_db.conf85
-rw-r--r--world/map/db/item_db_chest.txt2
-rw-r--r--world/map/db/item_db_foot.txt2
-rw-r--r--world/map/db/item_db_generic.txt20
-rw-r--r--world/map/db/item_db_hand.txt2
-rw-r--r--world/map/db/item_db_head.txt2
-rw-r--r--world/map/db/item_db_leg.txt2
-rw-r--r--world/map/db/item_db_offhand.txt2
-rw-r--r--world/map/db/item_db_use.txt40
-rw-r--r--world/map/db/item_db_weapon.txt2
-rw-r--r--world/map/news.d/05-new-dress.txt13
-rw-r--r--world/map/news.d/06-east-expansion.txt13
-rw-r--r--world/map/news.d/07-halloween2012.txt9
-rw-r--r--world/map/news.d/08-christmas2012.txt12
-rw-r--r--world/map/news.d/09-winter2012.txt12
-rw-r--r--world/map/news.d/10-news-news.txt7
-rw-r--r--world/map/news.d/11-CR-Jan13.txt15
-rw-r--r--world/map/news.d/12-manaplus.txt38
-rw-r--r--world/map/news.d/13-lpc.txt40
-rw-r--r--world/map/news.d/14-bugfix-killthegmevent.txt13
-rw-r--r--world/map/news.d/15-servermove.txt12
-rw-r--r--world/map/news.d/16-servermoveagain.txt10
-rw-r--r--world/map/news.d/99-00-news-2024-05-03.txt8
-rw-r--r--world/map/npc/006-1/miriam.txt4
-rw-r--r--world/map/npc/008-1/andra.txt2
-rw-r--r--world/map/npc/014-1/goop.txt2
-rw-r--r--world/map/npc/018-2/caul.txt1
-rw-r--r--world/map/npc/029-1/hasan.txt2
-rw-r--r--world/map/npc/030-2/wrapping_paper_helper.txt15
-rw-r--r--world/map/npc/functions/global_event_handler.txt1
-rw-r--r--world/map/npc/items/maps.txt9
-rw-r--r--world/map/npc/items/rubber_bat.txt5
-rw-r--r--world/map/npc/items/rubber_duck.txt7
-rw-r--r--world/map/npc/items/scissors.txt1
-rw-r--r--world/map/npc/items/shovel.txt5
-rw-r--r--world/map/npc/items/silver_bell.txt6
-rw-r--r--world/map/npc/items/warpTowels.txt15
-rw-r--r--world/map/npc/magic/event-summon-managuardian.txt1
-rw-r--r--world/map/npc/magic/event-summon-manatyrant.txt1
-rw-r--r--world/map/npc/magic/level1-summon-maggots.txt1
-rw-r--r--world/map/npc/magic/level2-lightning-strike.txt4
-rw-r--r--world/map/npc/magic/level2-summon-fluffies.txt1
-rw-r--r--world/map/npc/magic/level2-summon-mouboo.txt1
-rw-r--r--world/map/npc/magic/level2-summon-pinkie.txt1
-rw-r--r--world/map/npc/magic/level2-summon-snakes.txt1
-rw-r--r--world/map/npc/magic/level2-summon-spiky-mushroom.txt1
-rw-r--r--world/map/npc/magic/level2-summon-wickedmushroom.txt1
-rw-r--r--world/map/npc/scripts.conf2
50 files changed, 335 insertions, 122 deletions
diff --git a/world/map/db/const-aegis.txt b/world/map/db/const-aegis.txt
index a1cd00ae..3676decc 100644
--- a/world/map/db/const-aegis.txt
+++ b/world/map/db/const-aegis.txt
@@ -991,7 +991,7 @@ PumpkinJuice 5343
ChocolateBiscuit 5344
ChocolateBunny 5345
Potatoz 5346
-Pumpkin 5347
+RipePumpkin 5347
FruitSalad 5348
DuckEgg 5349
Dragonfruit 5350
diff --git a/world/map/db/const.txt b/world/map/db/const.txt
index b60a2bff..2001e59b 100644
--- a/world/map/db/const.txt
+++ b/world/map/db/const.txt
@@ -77,6 +77,9 @@ AMMO_BOW 1
AMMO_SLING 2
AMMO_WAND 3
AMMO_XMAS 4
+AMMO_DONT_USE 5
+// using AMMO_DONT_USE with CheckLauncher removes all other ammos there must not be an ammo that uses AMMO_DONT_USE with CheckAmmo
+// without this the the eqipped ammo would not removed and ammo could still be eqipped and it does not matter what ammo and the ammo damage would be added to the final weapon damage
// Hairstyles
HS_Bald 0
@@ -531,4 +534,3 @@ MLP_CR_DEBUT 4
// Local Quest Constants
MLP_TMW_CELESTIA 1
MLP_TMW_YETIKING 2
-
diff --git a/world/map/db/item_db.conf b/world/map/db/item_db.conf
index 42b710eb..277b033e 100644
--- a/world/map/db/item_db.conf
+++ b/world/map/db/item_db.conf
@@ -1611,7 +1611,12 @@ item_db: (
Loc: "EQP_HAND_R"
Refine: false
ViewSprite: 910
+ DontUseAmmo: true
Subtype: "W_BOW"
+ Script: <"
+ //set @LauncherType, AMMO_DONT_USE; // @TMWA
+ //callfunc "CheckLauncher"; // @TMWA
+ ">
},
{
Id: 1227
@@ -1976,15 +1981,15 @@ item_db: (
Type: "IT_ARMOR"
Buy: 8000
Sell: 500
- Weight: 30
- Matk: -2
- Def: 1
+ Weight: 250
+ Matk: -14
+ Def: 4
Slots: 0
Loc: "EQP_SHOES"
Refine: false
ViewSprite: 792
Script: <"
- bonus bMatkRate, -2; // @EVOL2
+ bonus bMatkRate, -14; // @EVOL2
">
},
{
@@ -3790,8 +3795,8 @@ item_db: (
AegisName: "SilverMirror"
Name: "SilverMirror"
Type: "IT_ETC"
- Buy: 500
- Sell: 250
+ Buy: 2400
+ Sell: 1200
Weight: 25
Def: 0
Refine: false
@@ -5359,8 +5364,8 @@ item_db: (
AegisName: "SilverIngot"
Name: "Silver Ingot"
Type: "IT_ETC"
- Buy: 20000
- Sell: 2200
+ Buy: 80000
+ Sell: 40000
Weight: 1000
Def: 0
Refine: false
@@ -5381,7 +5386,7 @@ item_db: (
AegisName: "GoldenTooth"
Name: "Golden Tooth"
Type: "IT_ETC"
- Buy: 20000
+ Buy: 4000
Sell: 2000
Weight: 20
Def: 0
@@ -5461,8 +5466,8 @@ item_db: (
AegisName: "GoldIngot"
Name: "GoldIngot"
Type: "IT_ETC"
- Buy: 40000
- Sell: 4400
+ Buy: 160000
+ Sell: 80000
Weight: 1000
Def: 0
Refine: false
@@ -5483,8 +5488,8 @@ item_db: (
AegisName: "BromenalOre"
Name: "BromenalOre"
Type: "IT_ETC"
- Buy: 3200
- Sell: 1600
+ Buy: 800
+ Sell: 400
Weight: 40
Def: 0
Refine: false
@@ -5495,8 +5500,8 @@ item_db: (
AegisName: "BromenalIngot"
Name: "BromenalIngot"
Type: "IT_ETC"
- Buy: 30000
- Sell: 3300
+ Buy: 40000
+ Sell: 20000
Weight: 1000
Def: 0
Refine: false
@@ -5517,8 +5522,8 @@ item_db: (
AegisName: "BromenalDroplet"
Name: "BromenalDroplet"
Type: "IT_ETC"
- Buy: 15000
- Sell: 1500
+ Buy: 1200
+ Sell: 600
Weight: 20
Def: 0
Refine: false
@@ -5551,8 +5556,8 @@ item_db: (
AegisName: "CopperOre"
Name: "CopperOre"
Type: "IT_ETC"
- Buy: 3200
- Sell: 1600
+ Buy: 400
+ Sell: 200
Weight: 40
Def: 0
Refine: false
@@ -5564,7 +5569,7 @@ item_db: (
Name: "CopperIngot"
Type: "IT_ETC"
Buy: 20000
- Sell: 2200
+ Sell: 10000
Weight: 1000
Def: 0
Refine: false
@@ -5586,7 +5591,7 @@ item_db: (
Name: "Charcoal"
Type: "IT_ETC"
Buy: 500
- Sell: 200
+ Sell: 250
Weight: 10
Def: 0
Refine: false
@@ -6290,14 +6295,14 @@ item_db: (
Buy: 100000
Sell: 3000
Weight: 2000
- Matk: -170
+ Matk: -150
Def: 25
Slots: 0
Loc: "EQP_HEAD_MID"
Refine: false
ViewSprite: 793
Script: <"
- bonus bMatkRate, -170; // @EVOL2
+ bonus bMatkRate, -150; // @EVOL2
">
},
{
@@ -11281,7 +11286,7 @@ item_db: (
Sell: 1500
Weight: 400
Matk: -30
- Def: 15
+ Def: 16
Slots: 0
Loc: "EQP_HEAD_TOP"
Refine: false
@@ -16237,9 +16242,8 @@ item_db: (
} else { //@EVOL2
doevent "Shovel::OnDig"; //@EVOL2
} //@EVOL2
- //getitem IronShovel, 1; // @TMWA
+ //callfunc "useShovel"; // @TMWA
">
- // TODO: add keep after use flag to evolved.py and tmwa and replicate the 5 lines above
},
{
Id: 5330
@@ -16469,8 +16473,8 @@ item_db: (
},
{
Id: 5347
- AegisName: "Pumpkin"
- Name: "Pumpkin"
+ AegisName: "RipePumpkin"
+ Name: "RipePumpkin"
Type: "IT_USABLE"
Buy: 170
Sell: 85
@@ -16542,7 +16546,8 @@ item_db: (
noauction: true
noselltonpc: true
Script: <"
- getitem PirateTreasureMap, 1;
+ set @MapName$, "PirateTreasureMap";
+ callfunc "readMap";
">
}
},
@@ -16565,7 +16570,8 @@ item_db: (
noauction: true
noselltonpc: true
Script: <"
- getitem DungeonMap, 1;
+ set @MapName$, "DungeonMap";
+ callfunc "readMap";
">
}
},
@@ -16588,7 +16594,8 @@ item_db: (
noauction: true
noselltonpc: true
Script: <"
- getitem TreasureMap, 1;
+ set @MapName$, "TreasureMap";
+ callfunc "readMap";
">
}
},
@@ -16825,7 +16832,7 @@ item_db: (
Sell: 1000
Weight: 150
Matk: -12
- Def: 6
+ Def: 7
Slots: 0
Loc: "EQP_HEAD_LOW"
Refine: false
@@ -17747,14 +17754,14 @@ item_db: (
Buy: 6000
Sell: 2000
Weight: 40
- Matk: -20
- Def: 4
+ Matk: -25
+ Def: 5
Slots: 0
Loc: "EQP_GARMENT"
Refine: false
ViewSprite: 794
Script: <"
- bonus bMatkRate, -20; // @EVOL2
+ bonus bMatkRate, -25; // @EVOL2
">
},
{
@@ -18033,15 +18040,15 @@ item_db: (
Type: "IT_ARMOR"
Buy: 40000
Sell: 3000
- Weight: 2500
- Matk: -200
- Def: 20
+ Weight: 2000
+ Matk: -160
+ Def: 18
Slots: 0
Loc: "EQP_HAND_L"
Refine: false
ViewSprite: 797
Script: <"
- bonus bMatkRate, -200; // @EVOL2
+ bonus bMatkRate, -160; // @EVOL2
">
//Disabled: true // @TMWA
},
diff --git a/world/map/db/item_db_chest.txt b/world/map/db/item_db_chest.txt
index 27b04137..ff48e16e 100644
--- a/world/map/db/item_db_chest.txt
+++ b/world/map/db/item_db_chest.txt
@@ -26,7 +26,7 @@
782, ForestArmor, 5, 3000, 1500, 40, 0, 10, 0, -20, 0, 2, 512, 0, 0, 0, 0, {}, {bonus bDex, 3;}
783, PlatynaRedDress, 5, 100000, 50000, 35, 0, 15, 0, 3, 0, 2, 512, 0, 0, 0, 0, {}, {}
791, YetiSkinShirt, 5, 20000, 10000, 20, 0, 12, 0, -12, 0, 2, 512, 0, 0, 0, 0, {}, {}
-793, BromenalChest, 5, 100000, 3000, 2000, 0, 25, 0, -170, 0, 2, 512, 0, 0, 0, 0, {}, {}
+793, BromenalChest, 5, 100000, 3000, 2000, 0, 25, 0, -150, 0, 2, 512, 0, 0, 0, 0, {}, {}
798, SorcererRed, 5, 8000, 4000, 5, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, 0, {}, {bonus bAgi, 1;}
870, FineDress, 5, 10000, 5000, 35, 0, 8, 0, 20, 0, 2, 512, 0, 0, 0, 0, {}, {}
880, LazuriteRobe, 5, 92000, 52000, 30, 0, 7, 0, 60, 0, 2, 512, 0, 90, 0, 0, {}, {set @bStat, Int; set @minbStatVal, 70; callfunc "RequireStat"; set @bStat, Vit; set @minbStatVal, 40; callfunc "RequireStat"; bonus bDef2Rate, -40; bonus bMdef, 60; bonus bVit, -1; bonus bInt, 7; bonus bLuk, -1; bonus bDex, -1; bonus bStr, -1;}
diff --git a/world/map/db/item_db_foot.txt b/world/map/db/item_db_foot.txt
index ac5264de..10f1d07c 100644
--- a/world/map/db/item_db_foot.txt
+++ b/world/map/db/item_db_foot.txt
@@ -7,7 +7,7 @@
734, BlackBoots, 5, 20000, 3000, 110, 0, 3, 0, -10, 0, 2, 64, 0, 0, 0, 0, {}, {}
735, CottonBoots, 5, 2000, 500, 10, 0, 1, 0, 1, 0, 2, 64, 0, 0, 0, 0, {}, {}
757, AssassinBoots, 5, 7000, 2000, 10, 0, 3, 0, -3, 0, 2, 64, 0, 0, 0, 0, {}, {callfunc "BrawlingItem"; bonus bAgi, 4;}
-792, BromenalBoots, 5, 8000, 500, 30, 0, 1, 0, -2, 0, 2, 64, 0, 0, 0, 0, {}, {}
+792, BromenalBoots, 5, 8000, 500, 250, 0, 4, 0, -14, 0, 2, 64, 0, 0, 0, 0, {}, {}
876, WarlordBoots, 5, 19000, 2000, 550, 0, 5, 0, -22, 0, 2, 64, 0, 0, 0, 0, {}, {}
1188, RedStockings, 5, 7000, 2000, 10, 0, 1, 0, 2, 0, 2, 64, 0, 0, 0, 0, {}, {}
2150, RedCottonBoots, 5, 2000, 500, 10, 0, 1, 0, 1, 0, 2, 64, 0, 0, 0, 0, {}, {}
diff --git a/world/map/db/item_db_generic.txt b/world/map/db/item_db_generic.txt
index 792f2d46..e7802111 100644
--- a/world/map/db/item_db_generic.txt
+++ b/world/map/db/item_db_generic.txt
@@ -136,7 +136,7 @@
860, SquirrelPelt, 3, 50, 25, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {}, {}
861, WhiteBellTuber, 3, 20, 10, 3, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {}, {}
862, IcedWater, 3, 100, 50, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {}, {}
-863, SilverMirror, 3, 500, 250, 25, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {}, {}
+863, SilverMirror, 3, 2400, 1200, 25, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {}, {}
864, BookPage, 3, 100, 50, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {}, {}
866, LeatherSuitcase, 3, 4000, 2000, 12000, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {}, {}
869, Antlers, 3, 4000, 2000, 3000, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {}, {}
@@ -267,21 +267,21 @@
5292, SilverOre, 3, 1600, 800, 40, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {}, {}
//5293, CrystallizedDragonBlood,3, 0, 0, 1111, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 7, {}, {}
5295, PinkFlowerSeed, 3, 0, 0, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 7, {}, {}
-//5296, SilverIngot, 3, 20000, 2200, 1000, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 7, {}, {}
-5297, GoldenTooth, 3, 20000, 2000, 20, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {}, {}
+//5296, SilverIngot, 3, 80000, 40000, 1000, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 7, {}, {}
+5297, GoldenTooth, 3, 4000, 2000, 20, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {}, {}
//5298, CloverDrawing, 3, 0, 0, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 7, {}, {}
5311, ShadowHerb, 3, 2, 1, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {}, {}
//5313, CrozeniteCrystal, 3, 0, 0, 555, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 7, {}, {}
5314, GoldOre, 3, 3200, 1600, 40, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {}, {}
-//5315, GoldIngot, 3, 40000, 4400, 1000, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 7, {}, {}
+//5315, GoldIngot, 3, 160000, 80000, 1000, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 7, {}, {}
//ID, Name, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, Mode, {UseScript}, {EquipScript}
-5316, BromenalOre, 3, 3200, 1600, 40, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {}, {}
-//5317, BromenalIngot, 3, 30000, 3300, 1000, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 7, {}, {}
-5318, BromenalDroplet, 3, 15000, 1500, 20, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {}, {}
+5316, BromenalOre, 3, 800, 400, 40, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {}, {}
+//5317, BromenalIngot, 3, 40000, 20000, 1000, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 7, {}, {}
+5318, BromenalDroplet, 3, 1200, 600, 20, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {}, {}
//5319, ShadowPlantCrystalDust, 3, 0, 0, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 7, {}, {}
-5327, CopperOre, 3, 3200, 1600, 40, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {}, {}
-//5328, CopperIngot, 3, 20000, 2200, 1000, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 7, {}, {}
-5332, Charcoal, 3, 500, 200, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {}, {}
+5327, CopperOre, 3, 400, 200, 40, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {}, {}
+//5328, CopperIngot, 3, 20000, 10000, 1000, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 7, {}, {}
+5332, Charcoal, 3, 500, 250, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {}, {}
5355, TortugaShellFragment, 3, 500, 250, 25, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {}, {}
5356, TortugaShell, 3, 2000, 1000, 100, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {}, {}
5357, RattoTail, 3, 300, 150, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {}, {}
diff --git a/world/map/db/item_db_hand.txt b/world/map/db/item_db_hand.txt
index 3e4e76f0..94a167d1 100644
--- a/world/map/db/item_db_hand.txt
+++ b/world/map/db/item_db_hand.txt
@@ -7,7 +7,7 @@
563, WinterGloves, 5, 6000, 3000, 20, 0, 3, 0, -15, 0, 2, 4, 0, 0, 0, 0, {}, {}
741, CottonGloves, 5, 2000, 500, 10, 0, 1, 0, -10, 0, 2, 4, 0, 0, 0, 0, {}, {}
756, AssassinGloves, 5, 7000, 2000, 9, 0, 3, 0, -3, 0, 2, 4, 0, 0, 0, 0, {}, {callfunc "BrawlingItem"; bonus bAgi, 4;}
-794, BromenalGloves, 5, 6000, 2000, 40, 0, 4, 0, -20, 0, 2, 4, 0, 0, 0, 0, {}, {}
+794, BromenalGloves, 5, 6000, 2000, 40, 0, 5, 0, -25, 0, 2, 4, 0, 0, 0, 0, {}, {}
868, SilkGloves, 5, 5000, 2500, 4, 0, 1, 0, 0, 0, 2, 4, 0, 0, 0, 0, {}, {}
2160, RedCottonGloves, 5, 2000, 500, 20, 0, 1, 0, -10, 0, 2, 4, 0, 0, 0, 0, {}, {}
2161, GreenCottonGloves, 5, 2000, 500, 20, 0, 1, 0, -10, 0, 2, 4, 0, 0, 0, 0, {}, {}
diff --git a/world/map/db/item_db_head.txt b/world/map/db/item_db_head.txt
index 7c4ae5d7..08a7b5c1 100644
--- a/world/map/db/item_db_head.txt
+++ b/world/map/db/item_db_head.txt
@@ -52,7 +52,7 @@
769, GuyFawkesMask, 5, 1000, 500, 50, 0, 3, 0, 0, 0, 2, 256, 0, 0, 0, 0, {}, {}
770, FairyHat, 5, 2000, 1000, 20, 0, 5, 0, -10, 0, 2, 256, 0, 0, 0, 0, {}, {bonus bLuk, 3;}
781, WitchDoctorsMask, 5, 20000, 100, 20, 0, 3, 0, 0, 0, 2, 256, 0, 0, 0, 0, {}, {}
-795, BromenalHelmet, 5, 15000, 1500, 400, 0, 15, 0, -30, 0, 2, 256, 0, 0, 0, 0, {}, {}
+795, BromenalHelmet, 5, 15000, 1500, 400, 0, 16, 0, -30, 0, 2, 256, 0, 0, 0, 0, {}, {}
800, BowlerHatBrown, 5, 2500, 1250, 30, 0, 10, 0, 2, 0, 2, 256, 0, 0, 0, 0, {}, {}
801, PinkieHelmet, 5, 20000, 1500, 800, 0, 10, 0, -20, 0, 2, 256, 0, 0, 0, 0, {}, {bonus bLuk, 1;}
848, Earmuffs, 5, 1000, 500, 20, 0, 2, 0, -1, 0, 2, 256, 0, 0, 0, 0, {}, {}
diff --git a/world/map/db/item_db_leg.txt b/world/map/db/item_db_leg.txt
index 3e23b810..6e15b47e 100644
--- a/world/map/db/item_db_leg.txt
+++ b/world/map/db/item_db_leg.txt
@@ -10,7 +10,7 @@
731, AssassinPants, 5, 10000, 3000, 20, 0, 4, 0, -5, 0, 2, 1, 0, 0, 0, 0, {}, {callfunc "BrawlingItem"; bonus bAgi, 5;}
768, TerraniteLegs, 5, 10000, 3000, 30, 0, 5, 0, -8, 0, 2, 1, 0, 0, 0, 0, {}, {bonus bAgi, 1; bonus bMdef, 5;}
771, Miniskirt, 5, 1000, 500, 8, 0, 4, 0, -8, 0, 2, 1, 0, 1, 0, 0, {}, {}
-796, BromenalLegs, 5, 2000, 1000, 150, 0, 6, 0, -12, 0, 2, 1, 0, 0, 0, 0, {}, {}
+796, BromenalLegs, 5, 2000, 1000, 150, 0, 7, 0, -12, 0, 2, 1, 0, 0, 0, 0, {}, {}
857, LeatherTrousers, 5, 1000, 500, 25, 0, 5, 0, -4, 0, 2, 1, 0, 0, 0, 0, {}, {bonus bHit, 2;}
881, RaggedShorts, 5, 60, 1, 7, 0, 1, 0, -2, 0, 2, 1, 0, 1, 0, 0, {}, {}
1172, SilkPants, 5, 20000, 750, 10, 0, 2, 0, 0, 0, 2, 1, 0, 1, 0, 0, {}, {}
diff --git a/world/map/db/item_db_offhand.txt b/world/map/db/item_db_offhand.txt
index e3bb7485..39d5d4a4 100644
--- a/world/map/db/item_db_offhand.txt
+++ b/world/map/db/item_db_offhand.txt
@@ -6,5 +6,5 @@
601, SteelShield, 5, 40000, 3000, 2500, 0, 20, 0, -200, 0, 2, 32, 0, 0, 0, 0, {}, {}
602, WoodenShield, 5, 10000, 2000, 1500, 0, 14, 0, -70, 0, 2, 32, 0, 0, 0, 0, {}, {}
603, LeatherShield, 5, 2000, 1000, 1300, 0, 7, 0, -35, 0, 2, 32, 0, 0, 0, 0, {}, {}
-//797, BromenalShield, 5, 40000, 3000, 2500, 0, 20, 0, -200, 0, 2, 32, 0, 0, 0, 0, {}, {}
+//797, BromenalShield, 5, 40000, 3000, 2000, 0, 18, 0, -160, 0, 2, 32, 0, 0, 0, 0, {}, {}
5285, DragonShield, 5, 40000, 3000, 2500, 0, 27, 0, -200, 0, 2, 32, 0, 0, 0, 0, {}, {}
diff --git a/world/map/db/item_db_use.txt b/world/map/db/item_db_use.txt
index 95e38ed5..e4783e41 100644
--- a/world/map/db/item_db_use.txt
+++ b/world/map/db/item_db_use.txt
@@ -56,18 +56,18 @@
788, BeetleJuice, 0, 80, 30, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {heal 50, 0, 1;}, {}
789, GutBuster, 0, 100, 30, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {heal 60, 0, 1;}, {}
790, BloodWine, 0, 150, 50, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {heal 100, 0, 1;}, {}
-808, HitchhikersTowel, 0, 0, 0, 30, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {set @warpTowelName$, "HitchhikersTowel"; callfunc "WarpTowel";}, {}
-809, WhiteHitchhikersTowel, 0, 0, 0, 30, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {set @warpTowelName$, "WhiteHitchhikersTowel"; callfunc "WarpTowel";}, {}
-810, RedHitchhikersTowel, 0, 0, 0, 30, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {set @warpTowelName$, "RedHitchhikersTowel"; callfunc "WarpTowel";}, {}
-811, GreenHitchhikersTowel, 0, 0, 0, 30, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {set @warpTowelName$, "GreenHitchhikersTowel"; callfunc "WarpTowel";}, {}
-812, BlueHitchhikersTowel, 0, 0, 0, 30, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {set @warpTowelName$, "BlueHitchhikersTowel"; callfunc "WarpTowel";}, {}
-813, YellowHitchhikersTowel, 0, 0, 0, 30, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {set @warpTowelName$, "YellowHitchhikersTowel"; callfunc "WarpTowel";}, {}
-814, PurpleHitchhikersTowel, 0, 0, 0, 30, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {set @warpTowelName$, "PurpleHitchhikersTowel"; callfunc "WarpTowel";}, {}
-815, OrangeHitchhikersTowel, 0, 0, 0, 30, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {set @warpTowelName$, "OrangeHitchhikersTowel"; callfunc "WarpTowel";}, {}
+808, HitchhikersTowel, 0, 0, 0, 30, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 16, {set @warpTowelName$, "HitchhikersTowel"; callfunc "WarpTowel";}, {}
+809, WhiteHitchhikersTowel, 0, 0, 0, 30, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 16, {set @warpTowelName$, "WhiteHitchhikersTowel"; callfunc "WarpTowel";}, {}
+810, RedHitchhikersTowel, 0, 0, 0, 30, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 16, {set @warpTowelName$, "RedHitchhikersTowel"; callfunc "WarpTowel";}, {}
+811, GreenHitchhikersTowel, 0, 0, 0, 30, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 16, {set @warpTowelName$, "GreenHitchhikersTowel"; callfunc "WarpTowel";}, {}
+812, BlueHitchhikersTowel, 0, 0, 0, 30, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 16, {set @warpTowelName$, "BlueHitchhikersTowel"; callfunc "WarpTowel";}, {}
+813, YellowHitchhikersTowel, 0, 0, 0, 30, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 16, {set @warpTowelName$, "YellowHitchhikersTowel"; callfunc "WarpTowel";}, {}
+814, PurpleHitchhikersTowel, 0, 0, 0, 30, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 16, {set @warpTowelName$, "PurpleHitchhikersTowel"; callfunc "WarpTowel";}, {}
+815, OrangeHitchhikersTowel, 0, 0, 0, 30, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 16, {set @warpTowelName$, "OrangeHitchhikersTowel"; callfunc "WarpTowel";}, {}
//ID, Name, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, Mode, {UseScript}, {EquipScript}
-816, PinkHitchhikersTowel, 0, 0, 0, 30, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {set @warpTowelName$, "PinkHitchhikersTowel"; callfunc "WarpTowel";}, {}
-817, TealHitchhikersTowel, 0, 0, 0, 30, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {set @warpTowelName$, "TealHitchhikersTowel"; callfunc "WarpTowel";}, {}
-818, LimeHitchhikersTowel, 0, 0, 0, 30, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {set @warpTowelName$, "LimeHitchhikersTowel"; callfunc "WarpTowel";}, {}
+816, PinkHitchhikersTowel, 0, 0, 0, 30, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 16, {set @warpTowelName$, "PinkHitchhikersTowel"; callfunc "WarpTowel";}, {}
+817, TealHitchhikersTowel, 0, 0, 0, 30, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 16, {set @warpTowelName$, "TealHitchhikersTowel"; callfunc "WarpTowel";}, {}
+818, LimeHitchhikersTowel, 0, 0, 0, 30, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 16, {set @warpTowelName$, "LimeHitchhikersTowel"; callfunc "WarpTowel";}, {}
825, TinyManaElixir, 0, 100, 10, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {heal 0, 25, 1;}, {}
826, SmallManaElixir, 0, 200, 20, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {heal 0, 50, 1;}, {}
827, MediumManaElixir, 0, 400, 40, 15, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {heal 0, 100, 1;}, {}
@@ -76,7 +76,7 @@
839, GrapeLollipop, 0, 100, 50, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {heal 750, 0, 1;}, {}
840, OrangeLollipop, 0, 100, 50, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {heal 750, 0, 1;}, {}
1189, PollettEgg, 0, 250, 25, 4, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {heal 75, 10, 1;}, {}
-1226, SilverBell, 0, 6000, 3000, 25, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {callfunc "SilverBellSound";}, {}
+1226, SilverBell, 0, 6000, 3000, 25, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 16, {callfunc "SilverBellSound";}, {}
1229, CaramelApple, 0, 500, 75, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {heal 1000, 0, 1;}, {}
1230, LollipopColor1, 0, 100, 50, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {heal 800, 0, 1;}, {}
1231, LollipopColor2, 0, 100, 50, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {heal 800, 0, 1;}, {}
@@ -88,9 +88,9 @@
//ID, Name, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, Mode, {UseScript}, {EquipScript}
1253, GoldenDeliciousApple, 0, 1000, 500, 30, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {heal 200, 0, 0;}, {}
1258, GlutenFreeHoney, 0, 100, 50, 20, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {heal 45, 0, 1;}, {}
-1280, Scissors, 0, 1000, 500, 120, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {callfunc "useScissors";}, {}
+1280, Scissors, 0, 1000, 500, 120, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 16, {callfunc "useScissors";}, {}
1281, ShockSweet, 0, 1000, 500, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {callfunc "useShockSweet";}, {}
-3001, RubberBat, 0, 200, 100, 30, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {callfunc "rubberBat";}, {}
+3001, RubberBat, 0, 200, 100, 30, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 16, {callfunc "rubberBat";}, {}
3006, TonoriDelight, 0, 5, 1, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {heal 10, 2, 1;}, {}
3007, Marshmallow, 0, 5, 1, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {heal 10, 0, 1;}, {}
3009, JellySkull, 0, 5, 1, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {heal 10, 0, 1;}, {}
@@ -117,7 +117,7 @@
5309, ManaDust, 0, 125, 50, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {heal 35, 15, 1;}, {}
5310, EnlighteningElixir, 0, 500, 250, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {sc_start SC_MATKPOT, 60, 100;}, {}
5312, Honey, 0, 300, 150, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {heal 200, 50, 1;}, {}
-5329, IronShovel, 0, 5000, 750, 210, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {getitem IronShovel, 1;}, {}
+5329, IronShovel, 0, 5000, 750, 210, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 16, {callfunc "useShovel";}, {}
5330, ShadowScroll, 0, 5000, 1000, 7, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {callfunc "UnreleasedScroll";}, {}
5331, YellowApple, 0, 25, 6, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {heal 50, 0, 1;}, {}
5333, Bread, 0, 80, 40, 25, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {heal 100, 0, 1;}, {}
@@ -135,14 +135,14 @@
5344, ChocolateBiscuit, 0, 80, 40, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {heal 100, 0, 1;}, {}
5345, ChocolateBunny, 0, 175, 88, 12, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {heal 250, 0, 1;}, {}
5346, Potatoz, 0, 230, 115, 8, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {heal 450, 0, 1;}, {}
-5347, Pumpkin, 0, 170, 85, 120, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {heal 300, 0, 1;}, {}
+5347, RipePumpkin, 0, 170, 85, 120, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {heal 300, 0, 1;}, {}
5348, FruitSalad, 0, 240, 120, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {heal 475, 0, 1;}, {}
5349, DuckEgg, 0, 200, 100, 4, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {heal 150, 50, 1;}, {}
5350, Dragonfruit, 0, 230, 115, 14, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {heal 600, 0, 1;}, {}
-5351, PirateTreasureMap, 0, 45000, 5000, 14, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 7, {getitem PirateTreasureMap, 1;}, {}
-5352, DungeonMap, 0, 45000, 5000, 14, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 7, {getitem DungeonMap, 1;}, {}
-5353, TreasureMap, 0, 45000, 5000, 14, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 7, {getitem TreasureMap, 1;}, {}
-5354, RubberDucky, 0, 200, 100, 30, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {callfunc "rubberDuck";}, {}
+5351, PirateTreasureMap, 0, 45000, 5000, 14, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 23, {set @MapName$, "PirateTreasureMap"; callfunc "readMap";}, {}
+5352, DungeonMap, 0, 45000, 5000, 14, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 23, {set @MapName$, "DungeonMap"; callfunc "readMap";}, {}
+5353, TreasureMap, 0, 45000, 5000, 14, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 23, {set @MapName$, "TreasureMap"; callfunc "readMap";}, {}
+5354, RubberDucky, 0, 200, 100, 30, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 16, {callfunc "rubberDuck";}, {}
5364, ButterButterfly, 0, 500, 250, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {heal 55, 0, 1;}, {}
5373, JunglefowlEgg, 0, 400, 200, 4, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {heal 300, 0, 1;}, {}
5374, KingChonkyBirbEgg, 0, 1500, 750, 22, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {heal 800, 0, 1;}, {}
diff --git a/world/map/db/item_db_weapon.txt b/world/map/db/item_db_weapon.txt
index 98310635..17fdcbf0 100644
--- a/world/map/db/item_db_weapon.txt
+++ b/world/map/db/item_db_weapon.txt
@@ -46,7 +46,7 @@
//ID, Name, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, Mode, {UseScript}, {EquipScript}
906, KidBook, 4, 10000, 5000, 350, 1, 0, 3, 0, 0, 2, 34, 1, 1, 15, 0, {}, {}
907, FloydBook, 4, 10000, 5000, 350, 1, 0, 3, 0, 0, 2, 34, 1, 135, 15, 7, {}, {}
-910, Rainerang, 4, 10000, 5000, 115, 60, 0, 4, 0, 0, 2, 2, 1, 0, 11, 0, {}, {}
+910, Rainerang, 4, 10000, 5000, 115, 60, 0, 4, 0, 0, 2, 2, 1, 0, 11, 32, {}, {set @LauncherType, AMMO_DONT_USE; callfunc "CheckLauncher";}
1170, SweetTooth, 4, 4000, 2000, 1000, 50, 0, 2, 15, 0, 2, 34, 1, 1, 23, 0, {}, {set @bStat, Int; set @minbStatVal, 60; callfunc "RequireStat";}
1171, Wand, 4, 400, 200, 100, 1, 0, 1, 5, 0, 2, 2, 1, 1, 10, 0, {}, {set @bStat, Int; set @minbStatVal, 5; callfunc "RequireStat";}
1199, Arrow, 10, 1, 0, 1, 20, 0, 0, 0, 0, 2, 32768, 0, 0, 0, 0, {}, {set @AmmoType, AMMO_BOW; callfunc "CheckAmmo";}
diff --git a/world/map/news.d/05-new-dress.txt b/world/map/news.d/05-new-dress.txt
new file mode 100644
index 00000000..cd3302dd
--- /dev/null
+++ b/world/map/news.d/05-new-dress.txt
@@ -0,0 +1,13 @@
+{title:New Dress}
+{date:September 2012}
+
+Agostine is well known for his magnificent winter clothes,
+but he always dreamed of creating something truly exquisite,
+something noble...
+
+An old veteran has set up camp in the caves below Hurnscald
+after a life full of hardship and battle.
+He may be old now, but he surely didn't lose his interest
+in the art of combat!
+
+{author:TMW Development Team}
diff --git a/world/map/news.d/06-east-expansion.txt b/world/map/news.d/06-east-expansion.txt
new file mode 100644
index 00000000..015acdf2
--- /dev/null
+++ b/world/map/news.d/06-east-expansion.txt
@@ -0,0 +1,13 @@
+{title:East Expansion}
+{date:October 2012}
+
+The roadblock to the north east in Argaes was finally lifted
+and parts of the road were reconstructed.
+But there is still some work left until the connection to Port City is done.
+In the Woods you can find a guy who lives alone, seeking seclusion.
+Be careful not to disturb him. He is very vicious.
+
+The smith's apprentice Peter does good progress in mastering his
+handcraft and learned some new techniques.
+
+{author:TMW Development Team}
diff --git a/world/map/news.d/07-halloween2012.txt b/world/map/news.d/07-halloween2012.txt
new file mode 100644
index 00000000..86689de1
--- /dev/null
+++ b/world/map/news.d/07-halloween2012.txt
@@ -0,0 +1,9 @@
+{title:Halloween 2012}
+{date:November 2012}
+
+Halloween has passed and several cities celebrated this event.
+It seems the farmer Oscar just came back from a long journey
+in one of these cities.
+Probably he will have exciting things to tell.
+
+{author:TMW Development Team}
diff --git a/world/map/news.d/08-christmas2012.txt b/world/map/news.d/08-christmas2012.txt
new file mode 100644
index 00000000..6bba8a14
--- /dev/null
+++ b/world/map/news.d/08-christmas2012.txt
@@ -0,0 +1,12 @@
+{title:Christmas 2012}
+{date:December 2012}
+
+Santa and his helpers have returned to Santa's residence
+near Nivalis to prepare for Christmas.
+Among the helpers, the preparations are moving smoothly
+as they should.
+The reinboos are excited this year since there will be a change
+within their team!
+But not everything is working out as planned.
+
+{author:TMW Development Team}
diff --git a/world/map/news.d/09-winter2012.txt b/world/map/news.d/09-winter2012.txt
new file mode 100644
index 00000000..52b9fb1f
--- /dev/null
+++ b/world/map/news.d/09-winter2012.txt
@@ -0,0 +1,12 @@
+{title:Illia first appearance}
+{date:December 2012 again}
+
+A new peninsula has magically raised from the depths,
+south of Hurnscald. A witch seems to be the source of
+this strange phenomenon.
+Why is she here, and what does she want?
+
+Further on the west, Lora Tay is willing to accept
+new challenges to prove once more her skills.
+
+{author:TMW Development Team}
diff --git a/world/map/news.d/10-news-news.txt b/world/map/news.d/10-news-news.txt
new file mode 100644
index 00000000..b4ab0817
--- /dev/null
+++ b/world/map/news.d/10-news-news.txt
@@ -0,0 +1,7 @@
+{title:Updating News generation}
+{date:2013-01-23}
+
+News feed is finally generated from the same
+source for both the game and the website.
+
+{author:o11c}
diff --git a/world/map/news.d/11-CR-Jan13.txt b/world/map/news.d/11-CR-Jan13.txt
new file mode 100644
index 00000000..2e6b177d
--- /dev/null
+++ b/world/map/news.d/11-CR-Jan13.txt
@@ -0,0 +1,15 @@
+{title:Content Release January 2013}
+{date:2013-01-26}
+
+This release brings a huge amount of small fixes
+and changes, including fixes of several spelling
+and map errors, which were reported by players.
+Thanks for that!
+
+There are a few new things nevertheless:
+New characters won't have to start their
+adventure in underpants anymore,
+and Doug in Dimond's Cove discovered that the
+lamps in his room wear off after a while.
+
+{author:Jenalya}
diff --git a/world/map/news.d/12-manaplus.txt b/world/map/news.d/12-manaplus.txt
new file mode 100644
index 00000000..7c8ef578
--- /dev/null
+++ b/world/map/news.d/12-manaplus.txt
@@ -0,0 +1,38 @@
+{title:ManaPlus - new official Client}
+{date:2013-01-31}
+
+ManaPlus Support
+
+We have decided to support ManaPlus as an
+official client alongside Mana. In fact, since
+there will likely be no more releases of the
+Mana client that supports TMWA (this server),
+there will inevitably be a time when ManaPlus
+becomes the only supported client.
+
+Mana 0.6.1 will continue to receive some
+support until October 2013. We have no plans
+to specifically break compatibility with Mana,
+but new features may not be available.
+
+For older clients (whether Mana or ManaPlus),
+there will be different levels of attempted
+support, depending on exactly how old it is:
+
+* Less than 6 months old: will not crash or
+ behave erratically.
+* Less than 2 months old: will behave
+ expectedly, but might not support all features.
+* Last 2 releases: will do everything,
+ correctly, on the main server.
+* Last release, or even git, may be required
+ on the test server.
+
+Of course, if a particular client release is
+buggy, we may not be able to support it at all.
+
+For more details, see {link:http://forums.themanaworld.org/viewtopic.php?f=4&t=16867}.
+
+ManaPlus is available at {link:http://manaplus.evolonline.org/}
+
+{author:o11c}
diff --git a/world/map/news.d/13-lpc.txt b/world/map/news.d/13-lpc.txt
new file mode 100644
index 00000000..b4197b10
--- /dev/null
+++ b/world/map/news.d/13-lpc.txt
@@ -0,0 +1,40 @@
+{title:Source of Tales won the LPC}
+{date:2013-02-18}
+
+This is a really exciting news entry!
+
+Congratulations to our sister project Mana ({link:http://manasource.org})
+on winning the Liberated Pixel Cup ({link:http://lpc.opengameart.org/content/code-judging-is-in}).
+
+The project can be found at {link:http://www.sourceoftales.org/news.html}
+and the irc channel at {link:irc://chat.freenode.net#sourceoftales}.
+
+We will undoubtedly experience an influx of both
+ordinary players and potential developers since we
+were linked as a related project.
+
+As a developer, it is my goal and expectation that
+new players can figure things out on their own.
+After all, I once did - though there wasn't as
+much content back then (I feel old ...).
+
+As for new contributors, they will necessarily need
+to coordinary with us, the developers. We're always
+in need of pixel artists, have great capacity for
+quest writers, and currently have need for a bit of
+web development and people crazy enough to touch
+insides of the server code.
+
+Be aware that people have different time zones and
+busy schedules, so it may be a while before anyone
+responds.
+
+Now, the links:
+
+Server coding: {link:irc://chat.freenode.net#tmwa}
+
+Everything else: {link:irc://chat.freenode.net#themanaworld-dev}
+
+Forums: {link:http://forums.themanaworld.org/}
+
+{author:o11c and Jenalya}
diff --git a/world/map/news.d/14-bugfix-killthegmevent.txt b/world/map/news.d/14-bugfix-killthegmevent.txt
new file mode 100644
index 00000000..249d23a3
--- /dev/null
+++ b/world/map/news.d/14-bugfix-killthegmevent.txt
@@ -0,0 +1,13 @@
+{title:Kill the GM}
+{date:2013-02-21}
+
+Today we'll have a small content release.
+
+Among code cleaning and bug fixes, the
+Tulimshar quests can be done in any order now.
+Their completion isn't necessary anymore
+to start the Bandit quest.
+
+Also, GMs may have a surprise for you someday.
+
+{author:V0id}
diff --git a/world/map/news.d/15-servermove.txt b/world/map/news.d/15-servermove.txt
new file mode 100644
index 00000000..deeb91e9
--- /dev/null
+++ b/world/map/news.d/15-servermove.txt
@@ -0,0 +1,12 @@
+{title:Server move}
+{date:2013-03-09}
+
+As of this Saturday, March 9, TMW moved to a new host.
+This means there was some downtime, starting at 16:00 UTC.
+
+Most work was done in 1.5 hours, with a brief shutdown later.
+DNS settings may take a while to propogate.
+
+For more information, see {link:http://forums.themanaworld.org/viewtopic.php?f=1&t=17126}
+
+{author:the TMWC}
diff --git a/world/map/news.d/16-servermoveagain.txt b/world/map/news.d/16-servermoveagain.txt
new file mode 100644
index 00000000..1c368ba7
--- /dev/null
+++ b/world/map/news.d/16-servermoveagain.txt
@@ -0,0 +1,10 @@
+{title:Server moved again}
+{date:2013-03-17}
+
+After the initial server move, The Mana World was subjected
+to a three day DoS attack.
+In response, we have moved a final time to a server that has
+better protection against such attacks.
+All game related services have been moved and are back to normal.
+
+{author:the TMWC}
diff --git a/world/map/news.d/99-00-news-2024-05-03.txt b/world/map/news.d/99-00-news-2024-05-03.txt
index 1ae8a667..fb3e67fa 100644
--- a/world/map/news.d/99-00-news-2024-05-03.txt
+++ b/world/map/news.d/99-00-news-2024-05-03.txt
@@ -109,8 +109,8 @@ and Sewers.
Rainerang (rainbow version of boomerang)
and Leprechaun Hat
GM Amulet added
- Assassin set and Mana Pearl added. Assasin
-set got brawling bonus added. Female assasin
+ Assassin set and Mana Pearl added. Assassin
+set got brawling bonus added. Female assassin
mask added.
Crozenite, gold and bromenal items added
Enlightening elixirs to boost M.Atk
@@ -188,10 +188,10 @@ which seems an improvement over none at all.
{b}Misc:{/b}
Map fixes
Several new attack effects
-e.g. Floyd now has it's own attack effects (book of Floyd
+e.g. Floyd now has its own attack effects (book of Floyd
given to players reaching Lv 135)
Texts corrections and minor edits
- Added more minimaps
+ Added more mini-maps
Mods support added
diff --git a/world/map/npc/006-1/miriam.txt b/world/map/npc/006-1/miriam.txt
index 6e7f50c5..4f32a53e 100644
--- a/world/map/npc/006-1/miriam.txt
+++ b/world/map/npc/006-1/miriam.txt
@@ -169,8 +169,8 @@ L_Prepared:
if (BaseLevel < 60)
goto L_lowlevel;
//Shields
- if (countitem("SteelShield") > 0
- || countitem("DragonShield") > 0
+ if ( countitem("DragonShield") > 0
+ || countitem("SteelShield") > 0
//Head
|| countitem("BromenalHelmet") > 0
|| countitem("BullHelmet") > 0
diff --git a/world/map/npc/008-1/andra.txt b/world/map/npc/008-1/andra.txt
index 68796fd7..4d643fc6 100644
--- a/world/map/npc/008-1/andra.txt
+++ b/world/map/npc/008-1/andra.txt
@@ -54,6 +54,7 @@ L_Next4:
mes "\"Great! Thank you for you help. If you have more items and want to help again, feel free to talk to me. We just have to be careful to not oversoak the soil with water.. but you don't need to worry, I will know when it is the right time to stop planting.";
next;
delitem "BottleOfWater", @water_amount;
+ getitem "EmptyBottle", @water_amount; // simply falls out if inv full.
delitem "GrassSeed", @seeds_amount;
set FLAGS, FLAGS | FLAG_ANDRA_HELPED;
mes "Andra pours some water in a lot of different places and then throws some seeds to the sky. The wind carries some of them really far from her.";
@@ -118,6 +119,7 @@ L_Next5:
if ($@spawned_plants >= $@MAX_GLOBAL_PLANTS) goto L_Gather;
if (countitem("BottleOfWater") < @water_amount || countitem("GrassSeed") < @seeds_amount) goto L_NotEnough;
delitem "BottleOfWater", @water_amount;
+ getitem "EmptyBottle", @water_amount; // simply falls out if inv full.
delitem "GrassSeed", @seeds_amount;
mes "Andra pours some water in a lot of different places and then throws the seeds to the sky. The wind carries some of them really far from her.";
close2;
diff --git a/world/map/npc/014-1/goop.txt b/world/map/npc/014-1/goop.txt
index 09f27626..e9de3a43 100644
--- a/world/map/npc/014-1/goop.txt
+++ b/world/map/npc/014-1/goop.txt
@@ -1 +1 @@
-014-1,90,101,0|shop|Gwyneth|188,GrassFedTofu:*100,Honey:*100,ActivatedSulphur:*100,VeganWater:*100,FairTradeSoil:*100,LactoseFreeAcorn:*100,RawAir:*1000,FreeRangeMoss:*100,JadeEgg:*300
+014-1,90,101,0|shop|Gwyneth|188,GrassFedTofu:*100,GlutenFreeHoney:*100,ActivatedSulphur:*100,VeganWater:*100,FairTradeSoil:*100,LactoseFreeAcorn:*100,RawAir:*1000,FreeRangeMoss:*100,JadeEgg:*300
diff --git a/world/map/npc/018-2/caul.txt b/world/map/npc/018-2/caul.txt
index 66f99a6e..f8134105 100644
--- a/world/map/npc/018-2/caul.txt
+++ b/world/map/npc/018-2/caul.txt
@@ -784,6 +784,7 @@ L_brew_dempo_init:
delitem "BottleOfWater", 1;
delitem "Bone", 1;
delitem "Lifestone", 1;
+ getitem "EmptyBottle", 1;
set @finish_dempo, 0;
// color can be either black or white at the beginning.
diff --git a/world/map/npc/029-1/hasan.txt b/world/map/npc/029-1/hasan.txt
index b87794dc..1310cb47 100644
--- a/world/map/npc/029-1/hasan.txt
+++ b/world/map/npc/029-1/hasan.txt
@@ -50,7 +50,7 @@ L_Main:
mes "\"Thats why the price is so high.\"";
mes "\"Because I'm the toughest person in all of Candor\"";
mes "[Scared Man]";
- mes "\"No, your just a mean bully. Wait till I tell the guards about this!\"";
+ mes "\"No, you're just a mean bully. Wait till I tell the guards about this!\"";
mes "[Unfriendly Guy]";
mes "\"You do that and the next swimming lesson will be sleeping with the fishes.\"";
mes "[Scared Man]";
diff --git a/world/map/npc/030-2/wrapping_paper_helper.txt b/world/map/npc/030-2/wrapping_paper_helper.txt
index 3ac10b12..4571d5e6 100644
--- a/world/map/npc/030-2/wrapping_paper_helper.txt
+++ b/world/map/npc/030-2/wrapping_paper_helper.txt
@@ -48,7 +48,7 @@ L_Again:
L_White:
getinventorylist;
- if (@inventorylist_count == 100 || (checkweight("WhiteWrap", $@xmas_wrap_reward) == 0))
+ if (@inventorylist_count > (100-2) || (checkweight("WhiteWrap", $@xmas_wrap_reward) == 0))
goto L_FullInv;
if ((countitem("ReedBundle") < $@xmas_reed_amount) || (countitem("BottleOfWater") < $@xmas_water_amount) || (countitem("PileOfAsh") < $@xmas_poa_amount))
goto L_NoItems;
@@ -56,13 +56,14 @@ getinventorylist;
delitem "BottleOfWater", $@xmas_water_amount;
delitem "PileOfAsh", $@xmas_poa_amount;
getitem "WhiteWrap", $@xmas_wrap_reward;
+ getitem "EmptyBottle", $@xmas_water_amount;
mes "[Reino]";
mes "\"This one is classical.\"";
goto L_MadePaper;
L_Yellow:
getinventorylist;
- if (@inventorylist_count == 100 || (checkweight("YellowWrap", $@xmas_wrap_reward) == 0))
+ if (@inventorylist_count > (100-2) || (checkweight("YellowWrap", $@xmas_wrap_reward) == 0))
goto L_FullInv;
if ((countitem("ReedBundle") < $@xmas_reed_amount) || (countitem("BottleOfWater") < $@xmas_water_amount) || (countitem("YellowDye") < $@xmas_wrap_yellow_amount))
goto L_NoItems;
@@ -70,13 +71,14 @@ L_Yellow:
delitem "BottleOfWater", $@xmas_water_amount;
delitem "YellowDye", $@xmas_wrap_yellow_amount;
getitem "YellowWrap", $@xmas_wrap_reward;
+ getitem "EmptyBottle", $@xmas_water_amount;
mes "[Reino]";
mes "\"Right, bright paper brings good vibes.\"";
goto L_MadePaper;
L_Blue:
getinventorylist;
- if (@inventorylist_count == 100 || (checkweight("BlueWrap", $@xmas_wrap_reward) == 0))
+ if (@inventorylist_count > (100-2) || (checkweight("BlueWrap", $@xmas_wrap_reward) == 0))
goto L_FullInv;
if ((countitem("ReedBundle") < $@xmas_reed_amount) || (countitem("BottleOfWater") < $@xmas_water_amount) || (countitem("LightBlueDye") < $@xmas_wrap_ltblue_amount))
goto L_NoItems;
@@ -84,13 +86,14 @@ L_Blue:
delitem "BottleOfWater", $@xmas_water_amount;
delitem "LightBlueDye", $@xmas_wrap_ltblue_amount;
getitem "BlueWrap", $@xmas_wrap_reward;
+ getitem "EmptyBottle", $@xmas_water_amount;
mes "[Reino]";
mes "\"Plain and simple. Here.\"";
goto L_MadePaper;
L_Purple:
getinventorylist;
- if (@inventorylist_count == 100 || (checkweight("PurpleWrap", $@xmas_wrap_reward) == 0))
+ if (@inventorylist_count > (100-2) || (checkweight("PurpleWrap", $@xmas_wrap_reward) == 0))
goto L_FullInv;
if ((countitem("ReedBundle") < $@xmas_reed_amount) || (countitem("BottleOfWater") < $@xmas_water_amount) || (countitem("PurpleDye") < $@xmas_wrap_purple_amount))
goto L_NoItems;
@@ -98,13 +101,14 @@ L_Purple:
delitem "BottleOfWater", $@xmas_water_amount;
delitem "PurpleDye", $@xmas_wrap_purple_amount;
getitem "PurpleWrap", $@xmas_wrap_reward;
+ getitem "EmptyBottle", $@xmas_water_amount;
mes "[Reino]";
mes "\"Mh, personally I don't like it that much, but here you go.\"";
goto L_MadePaper;
L_Green:
getinventorylist;
- if (@inventorylist_count == 100 || (checkweight("GreenWrap", $@xmas_wrap_reward) == 0))
+ if (@inventorylist_count > (100-2) || (checkweight("GreenWrap", $@xmas_wrap_reward) == 0))
goto L_FullInv;
if ((countitem("ReedBundle") < $@xmas_reed_amount) || (countitem("BottleOfWater") < $@xmas_water_amount) || (countitem("GreenDye") < $@xmas_wrap_green_amount))
goto L_NoItems;
@@ -112,6 +116,7 @@ L_Green:
delitem "BottleOfWater", $@xmas_water_amount;
delitem "GreenDye", $@xmas_wrap_green_amount;
getitem "GreenWrap", $@xmas_wrap_reward;
+ getitem "EmptyBottle", $@xmas_water_amount;
mes "[Reino]";
mes "\"Yeah, this is really Christmas-styled.\"";
goto L_MadePaper;
diff --git a/world/map/npc/functions/global_event_handler.txt b/world/map/npc/functions/global_event_handler.txt
index 915423e8..d169f3c7 100644
--- a/world/map/npc/functions/global_event_handler.txt
+++ b/world/map/npc/functions/global_event_handler.txt
@@ -37,6 +37,7 @@ OnMobKillEvent:
OnPCDieEvent:
set @necromancer, 0;
addtimer 0, "Magic Timer::OnClear"; // reset magic block on death
+ addtimer 0, "::OnDischarge"; // seeks OnDischarge in ALL npcs (discharge chargeable spells on PC death)
callfunc "SpawnGhost";
callfunc "MiriamExpire"; // force the speed skill quest to expire
set @killerrid, 0; // reset killer rid
diff --git a/world/map/npc/items/maps.txt b/world/map/npc/items/maps.txt
new file mode 100644
index 00000000..29d54e7d
--- /dev/null
+++ b/world/map/npc/items/maps.txt
@@ -0,0 +1,9 @@
+function|script|readMap
+{
+ message strcharinfo(0), "You have no clue how to use this item yet.";
+ goto L_Return;
+
+L_Return:
+ set @MapName$, "";
+ return;
+}
diff --git a/world/map/npc/items/rubber_bat.txt b/world/map/npc/items/rubber_bat.txt
index 0bf80ede..ea569a22 100644
--- a/world/map/npc/items/rubber_bat.txt
+++ b/world/map/npc/items/rubber_bat.txt
@@ -1,12 +1,11 @@
function|script|rubberBat
{
- if (gettimetick(2) - @lastbat < 2) goto L_Return;
+ if (gettimetick(2) - @lastsound < 2) goto L_Return;
misceffect 403;
- set @lastbat, gettimetick(2);
+ set @lastsound, gettimetick(2);
goto L_Return;
L_Return:
- getitem "RubberBat", 1;
// debugmes "Check";
if ($DOOMSDAY == 3)
addtimer 10, "#TMWFinalExam::OnRubberBat";
diff --git a/world/map/npc/items/rubber_duck.txt b/world/map/npc/items/rubber_duck.txt
index 9f873e1c..8a822752 100644
--- a/world/map/npc/items/rubber_duck.txt
+++ b/world/map/npc/items/rubber_duck.txt
@@ -1,11 +1,10 @@
function|script|rubberDuck
{
- if (gettimetick(2) - @lastbat < 2) goto L_Return;
- misceffect 405;
- set @lastbat, gettimetick(2);
+ if (gettimetick(2) - @lastsound < 2) goto L_Return;
+ misceffect 406;
+ set @lastsound, gettimetick(2);
goto L_Return;
L_Return:
- getitem "RubberDucky", 1;
return;
}
diff --git a/world/map/npc/items/scissors.txt b/world/map/npc/items/scissors.txt
index fbf3b344..2e12c6b1 100644
--- a/world/map/npc/items/scissors.txt
+++ b/world/map/npc/items/scissors.txt
@@ -1,6 +1,5 @@
function|script|useScissors
{
- getitem "Scissors", 1;
if (rand(3))
goto L_Change;
message strcharinfo(0), "Whoops!";
diff --git a/world/map/npc/items/shovel.txt b/world/map/npc/items/shovel.txt
new file mode 100644
index 00000000..b706f1fe
--- /dev/null
+++ b/world/map/npc/items/shovel.txt
@@ -0,0 +1,5 @@
+function|script|useShovel
+{
+ message strcharinfo(0), "You have no clue how to use this item yet.";
+ return;
+}
diff --git a/world/map/npc/items/silver_bell.txt b/world/map/npc/items/silver_bell.txt
index 8a791bff..07623426 100644
--- a/world/map/npc/items/silver_bell.txt
+++ b/world/map/npc/items/silver_bell.txt
@@ -1,12 +1,10 @@
function|script|SilverBellSound
{
- if (gettimetick(2) - @lastsilverbell < 20) goto L_Return;
+ if (gettimetick(2) - @lastsound < 2) goto L_Return;
misceffect 404;
- set @lastsilverbell, gettimetick(2);
+ set @lastsound, gettimetick(2);
goto L_Return;
L_Return:
- getitem "SilverBell", 1;
-// debugmes "Check";
return;
}
diff --git a/world/map/npc/items/warpTowels.txt b/world/map/npc/items/warpTowels.txt
index 77a405b5..7ea7ec17 100644
--- a/world/map/npc/items/warpTowels.txt
+++ b/world/map/npc/items/warpTowels.txt
@@ -117,26 +117,25 @@ L_WarpPlayer:
goto L_BreakChance;
L_BreakChance:
- if (rand(15))
- goto L_Keep;
- getitem "HitchhikersTowel", 1;
+ if (@warpTowelName$ != "HitchhikersTowel" && rand(15) < 1)
+ goto L_Break;
goto L_End;
L_Forbid:
message strcharinfo(0), "Towel : This area is protected by a force that doesn't tolerate the power of the Towel.";
- goto L_Keep;
+ goto L_End;
L_Prison:
message strcharinfo(0), "Towel : You must be warped by a GM to leave the botcheck area.";
- goto L_Keep;
+ goto L_End;
L_DontPanic:
callfunc "HumanTime";
message strcharinfo(0), "Towel : Your towel is still too low on power to jump again. Try again in ##B"+ @time$ + "##b.";
- goto L_Keep;
+ goto L_End;
-L_Keep:
- getitem @warpTowelName$, 1;
+L_Break:
+ delitem @warpTowelName$, 1;
goto L_End;
L_End:
diff --git a/world/map/npc/magic/event-summon-managuardian.txt b/world/map/npc/magic/event-summon-managuardian.txt
index e66c3eb7..1aa172ad 100644
--- a/world/map/npc/magic/event-summon-managuardian.txt
+++ b/world/map/npc/magic/event-summon-managuardian.txt
@@ -5,7 +5,6 @@
OnCast:
if(call("magic_checks")) end;
// FIXME: Incomplete check, should still work during sieges
- if (getmapflag(getmap(), MF_TOWN)) end;
if (Sp < 100) end;
if (getskilllv(SKILL_MAGIC) < .level) end;
if (countitem("TinyManaElixir") < 1) end;
diff --git a/world/map/npc/magic/event-summon-manatyrant.txt b/world/map/npc/magic/event-summon-manatyrant.txt
index bf2634c5..ff082930 100644
--- a/world/map/npc/magic/event-summon-manatyrant.txt
+++ b/world/map/npc/magic/event-summon-manatyrant.txt
@@ -5,7 +5,6 @@
OnCast:
if(call("magic_checks")) end;
if ($DOOMSDAY_SUMMON < 2) end;
- if (getmapflag(getmap(), MF_TOWN)) end;
if (Sp < 100) end;
if (getskilllv(SKILL_MAGIC) < .level) end;
if (countitem("LargeManaElixir") < 1) end;
diff --git a/world/map/npc/magic/level1-summon-maggots.txt b/world/map/npc/magic/level1-summon-maggots.txt
index 05cadbc8..ce95422c 100644
--- a/world/map/npc/magic/level1-summon-maggots.txt
+++ b/world/map/npc/magic/level1-summon-maggots.txt
@@ -5,7 +5,6 @@
OnCast:
if(call("magic_checks")) end;
if (Sp < 21) end;
- if (getmapflag(getmap(), MF_TOWN)) end;
if (getskilllv(SKILL_MAGIC) < .level) end;
if (countitem("InsectSlime") < 1 || countitem("Root") < 1) end;
if (getmap() == "033-1") goto L_SpecialRules6;
diff --git a/world/map/npc/magic/level2-lightning-strike.txt b/world/map/npc/magic/level2-lightning-strike.txt
index bdd311a6..0a97dc63 100644
--- a/world/map/npc/magic/level2-lightning-strike.txt
+++ b/world/map/npc/magic/level2-lightning-strike.txt
@@ -30,12 +30,11 @@
OnAttack:
if (target(BL_ID, @target_id, 0x36) != 0x36) goto L_FreeRecast; // 0x10 | 0x02 | 0x04 | 0x20
-
set .@p, get(.max_radius, "rain") + 1;
set @ingravspell[5], @target_id; // store it because foreach overwrites it
foreach 1, getmap(), POS_X-.@p, POS_Y-.@p, POS_X+.@p, POS_Y+.@p, strnpcinfo(0)+"::OnNpc";
set @target_id, @ingravspell[5]; // now restore it
-
+ if (@ingravspell[2] <= 0) overrideattack; // workaround for caster in rain death case
set @ingravspell[2], @ingravspell[2] - 1;
if (@ingravspell[4] & 1) goto L_InRain;
void call("elt_damage", @ingravspell[0], (@ingravspell[0]/2)+1, ELT_EARTH, ELT_WIND, FX_LIGHTNING1 + rand(3));
@@ -49,6 +48,7 @@ L_FreeRecast:
OnDischarge:
if (@ingravspell[2] < 1) end;
set @ingravspell[2], 0;
+ set @ingravspell[4], 0; // Clean up "in rain" flag, it caused funny bugs.
misceffect FX_MAGIC_DISCHARGE, strcharinfo(0);
overrideattack;
end;
diff --git a/world/map/npc/magic/level2-summon-fluffies.txt b/world/map/npc/magic/level2-summon-fluffies.txt
index f10a86b5..fef40a17 100644
--- a/world/map/npc/magic/level2-summon-fluffies.txt
+++ b/world/map/npc/magic/level2-summon-fluffies.txt
@@ -5,7 +5,6 @@
OnCast:
if(call("magic_checks")) end;
if (Sp < 39) end;
- if (getmapflag(getmap(), MF_TOWN)) end;
if (getskilllv(SKILL_MAGIC) < .level) end;
if (getskilllv(.school) < .level) end;
if (countitem("WhiteFur") < 1 || countitem("Root") < 1) end;
diff --git a/world/map/npc/magic/level2-summon-mouboo.txt b/world/map/npc/magic/level2-summon-mouboo.txt
index c692e9cf..8a8603c6 100644
--- a/world/map/npc/magic/level2-summon-mouboo.txt
+++ b/world/map/npc/magic/level2-summon-mouboo.txt
@@ -5,7 +5,6 @@
OnCast:
if(call("magic_checks")) end;
if (Sp < 35) end;
- if (getmapflag(getmap(), MF_TOWN)) end;
if (getskilllv(SKILL_MAGIC) < .level) end;
if (getskilllv(.school) < .level) end;
if (countitem("MoubooFigurine") < 1 || countitem("Root") < 1) end;
diff --git a/world/map/npc/magic/level2-summon-pinkie.txt b/world/map/npc/magic/level2-summon-pinkie.txt
index 61af9eed..b4774584 100644
--- a/world/map/npc/magic/level2-summon-pinkie.txt
+++ b/world/map/npc/magic/level2-summon-pinkie.txt
@@ -5,7 +5,6 @@
OnCast:
if(call("magic_checks")) end;
if (Sp < 35) end;
- if (getmapflag(getmap(), MF_TOWN)) end;
if (getskilllv(SKILL_MAGIC) < .level) end;
if (getskilllv(.school) < .level) end;
if (countitem("PinkAntenna") < 1 || countitem("Root") < 1) end;
diff --git a/world/map/npc/magic/level2-summon-snakes.txt b/world/map/npc/magic/level2-summon-snakes.txt
index 0723961b..5815cef5 100644
--- a/world/map/npc/magic/level2-summon-snakes.txt
+++ b/world/map/npc/magic/level2-summon-snakes.txt
@@ -5,7 +5,6 @@
OnCast:
if(call("magic_checks")) end;
if (Sp < 40) end;
- if (getmapflag(getmap(), MF_TOWN)) end;
if (getskilllv(SKILL_MAGIC) < .level) end;
if (getskilllv(.school) < .level) end;
if (countitem("DarkCrystal") < 1 || countitem("SnakeEgg") < 1) end;
diff --git a/world/map/npc/magic/level2-summon-spiky-mushroom.txt b/world/map/npc/magic/level2-summon-spiky-mushroom.txt
index 701648d5..0f884185 100644
--- a/world/map/npc/magic/level2-summon-spiky-mushroom.txt
+++ b/world/map/npc/magic/level2-summon-spiky-mushroom.txt
@@ -5,7 +5,6 @@
OnCast:
if(call("magic_checks")) end;
if (Sp < 33) end;
- if (getmapflag(getmap(), MF_TOWN)) end;
if (getskilllv(SKILL_MAGIC) < .level) end;
if (getskilllv(.school) < .level) end;
if (countitem("HardSpike") < 1 || countitem("Root") < 1) end;
diff --git a/world/map/npc/magic/level2-summon-wickedmushroom.txt b/world/map/npc/magic/level2-summon-wickedmushroom.txt
index 014a5d80..7d0e93c1 100644
--- a/world/map/npc/magic/level2-summon-wickedmushroom.txt
+++ b/world/map/npc/magic/level2-summon-wickedmushroom.txt
@@ -5,7 +5,6 @@
OnCast:
if(call("magic_checks")) end;
if (Sp < 42) end;
- if (getmapflag(getmap(), MF_TOWN)) end;
if (getskilllv(SKILL_MAGIC) < .level) end;
if (getskilllv(.school) < .level) end;
if (countitem("DarkCrystal") < 1 || countitem("SmallMushroom") < 1) end;
diff --git a/world/map/npc/scripts.conf b/world/map/npc/scripts.conf
index 512c8d48..17045566 100644
--- a/world/map/npc/scripts.conf
+++ b/world/map/npc/scripts.conf
@@ -62,6 +62,8 @@ npc: npc/items/love_potion.txt
npc: npc/items/manapearl_item.txt
npc: npc/items/underworld_troll.txt
npc: npc/items/silver_bell.txt
+npc: npc/items/shovel.txt
+npc: npc/items/maps.txt
// Mob Functions
npc: npc/mobs/miner_mania.txt