summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAJ K <aj@keresztes.us>2024-08-28 14:37:48 -0400
committerAJ K <aj@keresztes.us>2024-08-28 14:37:48 -0400
commite39be783e852f390d61776c51c006d444a131f0b (patch)
tree8183fcb880c427c10f0ff341e8981a4e1afa7e6f
parentcca41e5ba8fcd2e971303fd54be8786c86d82c7e (diff)
parent59aa2316201d785beee4abe7a4cfe6b87f53beb1 (diff)
downloadserverdata-e39be783e852f390d61776c51c006d444a131f0b.tar.gz
serverdata-e39be783e852f390d61776c51c006d444a131f0b.tar.bz2
serverdata-e39be783e852f390d61776c51c006d444a131f0b.tar.xz
serverdata-e39be783e852f390d61776c51c006d444a131f0b.zip
m---------client-data0
m---------tools0
-rw-r--r--world/map/data/012-1.wlkbin31588 -> 31588 bytes
-rw-r--r--world/map/db/const-aegis.txt10
-rw-r--r--world/map/db/const.txt10
-rw-r--r--world/map/db/item_db.conf159
-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.txt4
-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.txt47
-rw-r--r--world/map/db/item_db_weapon.txt4
-rw-r--r--world/map/db/mob_db.conf169
-rw-r--r--world/map/db/mob_db_0_19.txt6
-rw-r--r--world/map/db/mob_db_40_59.txt11
-rw-r--r--world/map/db/mob_db_over_100.txt4
-rw-r--r--world/map/db/mob_db_over_150.txt7
-rw-r--r--world/map/db/mob_skill_db.txt1
-rw-r--r--world/map/db/params.txt47
-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/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.txt4
-rw-r--r--world/map/npc/items/anchor_stone.txt56
-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.txt5
-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-magic-knuckles.txt38
-rw-r--r--world/map/npc/magic/level2-make-bones.txt2
-rw-r--r--world/map/npc/magic/level2-protect.txt5
-rw-r--r--world/map/npc/magic/level2-rain.txt11
-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/mobs/miner_mania.txt2
-rw-r--r--world/map/npc/mobs/mob_points.txt4
-rw-r--r--world/map/npc/scripts.conf3
65 files changed, 705 insertions, 186 deletions
diff --git a/client-data b/client-data
-Subproject 613a7d13d75910d6c1179dd970fbc3f1181d9bf
+Subproject e4435a4ac1e18042c498fbb107d92422964da09
diff --git a/tools b/tools
-Subproject 5f4eb9489c35b8a8ea91fa65989efa89353c53e
+Subproject 1ff4530284a8512020950de961298df6ec91e24
diff --git a/world/map/data/012-1.wlk b/world/map/data/012-1.wlk
index 6008bfcd..bad011f4 100644
--- a/world/map/data/012-1.wlk
+++ b/world/map/data/012-1.wlk
Binary files differ
diff --git a/world/map/db/const-aegis.txt b/world/map/db/const-aegis.txt
index a1cd00ae..c5c19c0f 100644
--- a/world/map/db/const-aegis.txt
+++ b/world/map/db/const-aegis.txt
@@ -387,6 +387,10 @@ JunglefowlFeather 5375
KingChonkyBirbFeather 5376
Honeycomb 5377
Beeswax 5378
+Stone 5380
+Brick 5381
+MountainCrystal 5384
+BlackQuartz 5385
LeatherShirt 523
DesertShirt 546
Turtleneck 564
@@ -991,7 +995,7 @@ PumpkinJuice 5343
ChocolateBiscuit 5344
ChocolateBunny 5345
Potatoz 5346
-Pumpkin 5347
+RipePumpkin 5347
FruitSalad 5348
DuckEgg 5349
Dragonfruit 5350
@@ -1003,6 +1007,8 @@ ButterButterfly 5364
JunglefowlEgg 5373
KingChonkyBirbEgg 5374
Sauerkraut 5379
+AnchorStone 5382
+AnchoredAnchorStone 5383
CottonShorts 586
JeansShorts 610
CottonSkirt 632
@@ -1297,3 +1303,5 @@ SmallRubyBif 1221
SmallSapphireBif 1222
SmallTopazBif 1223
CoalGolem 1224
+StoneSlime 1225
+StoneGolem 1226
diff --git a/world/map/db/const.txt b/world/map/db/const.txt
index b60a2bff..2e1aef15 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
@@ -132,11 +135,14 @@ cOrange 7
cPurple 8
cDarkGreen 9
-SC_POISON 132
SC_SLOWPOISON 14
SC_SPEEDPOTION0 37
+SC_POISON 132
+SC_SLOWMOVE 133
+SC_CANTMOVE 134
SC_ATKPOT 185
SC_MATKPOT 186
+SC_PHYS_SHIELD_ITEM 193
SC_SHEARED 194
SC_HIDE 194
SC_HALT_REGENERATE 195
@@ -152,6 +158,7 @@ SC_COOLDOWN_AR 75
SC_COOLDOWN_ENCH 76
SC_COOLDOWN_KOY 77
SC_COOLDOWN_UPMARMU 78
+SC_COOLDOWN_SG 79
// Emotions
EMOTE_DISGUST 1
@@ -531,4 +538,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 466b9526..56d61dd2 100644
--- a/world/map/db/item_db.conf
+++ b/world/map/db/item_db.conf
@@ -1234,9 +1234,9 @@ item_db: (
AegisName: "BoneArrows"
Name: "BoneArrows"
Type: "IT_AMMO"
- Buy: 50
- Sell: 20
- Weight: 0
+ Buy: 8
+ Sell: 4
+ Weight: 1
Atk: 55
Slots: 0
Loc: "EQP_AMMO"
@@ -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
">
},
{
@@ -5855,6 +5860,50 @@ item_db: (
Refine: false
ViewSprite: 5378
},
+{
+ Id: 5380
+ AegisName: "Stone"
+ Name: "Stone"
+ Type: "IT_ETC"
+ Buy: 1000
+ Sell: 500
+ Weight: 60
+ Refine: false
+ ViewSprite: 5380
+},
+{
+ Id: 5381
+ AegisName: "Brick"
+ Name: "Brick"
+ Type: "IT_ETC"
+ Buy: 2000
+ Sell: 1000
+ Weight: 40
+ Refine: false
+ ViewSprite: 5381
+},
+{
+ Id: 5384
+ AegisName: "MountainCrystal"
+ Name: "MountainCrystal"
+ Type: "IT_ETC"
+ Buy: 20000
+ Sell: 5000
+ Weight: 20
+ Refine: false
+ ViewSprite: 5384
+},
+{
+ Id: 5385
+ AegisName: "BlackQuartz"
+ Name: "BlackQuartz"
+ Type: "IT_ETC"
+ Buy: 20000
+ Sell: 5000
+ Weight: 20
+ Refine: false
+ ViewSprite: 5385
+},
/* Chest Armor */
{
Id: 523
@@ -6290,14 +6339,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 +11330,7 @@ item_db: (
Sell: 1500
Weight: 400
Matk: -30
- Def: 15
+ Def: 16
Slots: 0
Loc: "EQP_HEAD_TOP"
Refine: false
@@ -16141,8 +16190,8 @@ item_db: (
AegisName: "Tomato"
Name: "Tomato"
Type: "IT_USABLE"
- Buy: 40
- Sell: 10
+ Buy: 100
+ Sell: 50
Weight: 7
Def: 0
Slots: 0
@@ -16170,10 +16219,10 @@ item_db: (
callfunc("SC_Bonus", 60, SC_PLUSATTACKPOWER, 50);
callfunc("SC_Bonus", 60, SC_ATTHASTE_POTION1, 45);
//callfunc("SC_Bonus", 60, SC_PHYS_SHIELD, 40); //@EVOL2
- //callfunc("SC_Bonus", 60000, SC_PHYS_SHIELD, 40); //@TMWA
+ //callfunc("SC_Bonus", 60000, SC_PHYS_SHIELD_ITEM, 40); //@TMWA
+ //sc_end SC_PHYS_SHIELD; //@TMWA
//misceffect FX_MAGIC_SHIELD, strcharinfo(0); //@TMWA
">
- // TODO: betsanc of Crazy Rum can be chanceled with detsanc so add SC_PHYS_SHIELD_ITEM to prevent this
},
{
Id: 5309
@@ -16237,9 +16286,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 +16517,8 @@ item_db: (
},
{
Id: 5347
- AegisName: "Pumpkin"
- Name: "Pumpkin"
+ AegisName: "RipePumpkin"
+ Name: "RipePumpkin"
Type: "IT_USABLE"
Buy: 170
Sell: 85
@@ -16542,7 +16590,8 @@ item_db: (
noauction: true
noselltonpc: true
Script: <"
- getitem PirateTreasureMap, 1;
+ set @MapName$, "PirateTreasureMap";
+ callfunc "readMap";
">
}
},
@@ -16565,7 +16614,8 @@ item_db: (
noauction: true
noselltonpc: true
Script: <"
- getitem DungeonMap, 1;
+ set @MapName$, "DungeonMap";
+ callfunc "readMap";
">
}
},
@@ -16588,7 +16638,8 @@ item_db: (
noauction: true
noselltonpc: true
Script: <"
- getitem TreasureMap, 1;
+ set @MapName$, "TreasureMap";
+ callfunc "readMap";
">
}
},
@@ -16663,6 +16714,56 @@ item_db: (
callfunc "itheal", 500, 0;
">
},
+{
+ Id: 5382
+ AegisName: "AnchorStone"
+ Name: "AnchorStone"
+ Type: "IT_USABLE"
+ Buy: 90000
+ Sell: 45000
+ Weight: 40
+ Refine: false
+ ViewSprite: 5382
+ KeepAfterUse: true
+ Trade: {
+ notrade: true
+ nodrop: true
+ nocart: true
+ nomail: true
+ noauction: true
+ noselltonpc: true
+ Script: <"
+ set @StoneName$, "AnchorStone";
+ callfunc "useAnchorStone";
+ ">
+ }
+},
+{
+ Id: 5383
+ AegisName: "AnchoredAnchorStone"
+ Name: "AnchoredAnchorStone"
+ Type: "IT_USABLE"
+ Buy: 0
+ Sell: 0
+ Weight: 40
+ Refine: false
+ ViewSprite: 5383
+ KeepAfterUse: true
+ Trade: {
+ notrade: true
+ nodrop: true
+ nocart: true
+ nomail: true
+ noauction: true
+ noselltonpc: true
+ nostorage: true
+ nogstorage: true
+ Script: <"
+ set @StoneName$, "AnchoredAnchorStone";
+ callfunc "useAnchorStone";
+ ">
+ }
+},
/* Legs Armor */
{
Id: 586
@@ -16825,7 +16926,7 @@ item_db: (
Sell: 1000
Weight: 150
Matk: -12
- Def: 6
+ Def: 7
Slots: 0
Loc: "EQP_HEAD_LOW"
Refine: false
@@ -17747,14 +17848,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 +18134,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 e7802111..ff127182 100644
--- a/world/map/db/item_db_generic.txt
+++ b/world/map/db/item_db_generic.txt
@@ -304,3 +304,7 @@
5376, KingChonkyBirbFeather, 3, 6000, 3000, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {}, {}
5377, Honeycomb, 3, 200, 100, 11, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {}, {}
5378, Beeswax, 3, 2000, 1000, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {}, {}
+5380, Stone, 3, 1000, 500, 60, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {}, {}
+5381, Brick, 3, 2000, 1000, 40, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {}, {}
+5384, MountainCrystal, 3, 20000, 5000, 20, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {}, {}
+5385, BlackQuartz, 3, 20000, 5000, 20, 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..2a2afa8b 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;}, {}
@@ -110,14 +110,14 @@
5235, TMWBirthdayGift, 0, 1000000, 50, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {callfunc "TMWBirthdayGift";}, {}
5236, GumiCandy, 0, 10000, 250, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {set Sex, if_then_else(Sex == 3, rand(0, 1), if_then_else(rand(0,1), 3, !Sex));},{}
5237, CaramelCandy, 0, 700, 350, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {heal 350, 0, 1;}, {}
-5251, Tomato, 0, 40, 10, 7, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {heal 200, 5, 1;}, {}
+5251, Tomato, 0, 100, 50, 7, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {heal 200, 5, 1;}, {}
5263, LovePotion, 0, 90000, 550, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {callfunc "LovePotion";}, {}
//5277, XmasSeeds, 0, 9999, 0, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 7, {heal 150, 0, 1;}, {}
-5294, CrazyRum, 0, 40, 10, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {sc_start SC_POISON, 60000, 1; sc_start SC_ATKPOT, 60, 50; sc_start SC_SPEEDPOTION0, 60, 45; sc_start SC_PHYS_SHIELD, 60000, 40; misceffect FX_MAGIC_SHIELD, strcharinfo(0);},{}
+5294, CrazyRum, 0, 40, 10, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {sc_start SC_POISON, 60000, 1; sc_start SC_ATKPOT, 60, 50; sc_start SC_SPEEDPOTION0, 60, 45; sc_start SC_PHYS_SHIELD_ITEM, 60000, 40; sc_end SC_PHYS_SHIELD; misceffect FX_MAGIC_SHIELD, strcharinfo(0);},{}
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,15 +135,18 @@
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;}, {}
5379, Sauerkraut, 0, 250, 125, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, {heal 500, 0, 1;}, {}
+5382, AnchorStone, 0, 90000, 45000, 40, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 23, {set @StoneName$, "AnchorStone"; callfunc "useAnchorStone";}, {}
+//ID, Name, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, Mode, {UseScript}, {EquipScript}
+5383, AnchoredAnchorStone, 0, 0, 0, 40, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 31, {set @StoneName$, "AnchoredAnchorStone"; callfunc "useAnchorStone";}, {}
diff --git a/world/map/db/item_db_weapon.txt b/world/map/db/item_db_weapon.txt
index 98310635..1c22799d 100644
--- a/world/map/db/item_db_weapon.txt
+++ b/world/map/db/item_db_weapon.txt
@@ -46,14 +46,14 @@
//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";}
1200, Bow, 4, 1000, 500, 20, 20, 0, 5, -2, 0, 2, 34, 1, 4, 11, 0, {}, {set @LauncherType, AMMO_BOW; callfunc "CheckLauncher";}
1201, Knife, 4, 50, 25, 120, 5, 0, 1, 0, 0, 2, 2, 1, 1, 1, 0, {}, {}
1215, ToySabre, 4, 2000000, 25, 1, 1, 0, 1, 0, 0, 2, 2, 1, 1, 2, 0, {}, {}
-1282, BoneArrows, 10, 50, 20, 0, 55, 0, 0, 0, 0, 2, 32768, 0, 0, 0, 0, {}, {bonus bCritical, 1; set @AmmoType, AMMO_BOW; callfunc "CheckAmmo";}
+1282, BoneArrows, 10, 8, 4, 1, 55, 0, 0, 0, 0, 2, 32768, 0, 0, 0, 0, {}, {bonus bCritical, 1; set @AmmoType, AMMO_BOW; callfunc "CheckAmmo";}
5260, Snowball, 10, 1, 0, 1, 20, 0, 0, 0, 0, 2, 32768, 0, 0, 0, 0, {}, {set @AmmoType, AMMO_XMAS; callfunc "CheckAmmo";}
5261, SnowLauncher, 4, 500, 50, 10, 20, 0, 3, 0, 0, 2, 2, 1, 1, 11, 0, {}, {set @LauncherType, AMMO_XMAS; callfunc "CheckLauncher";}
5284, Flintlock, 4, 150000, 500, 3000, 120, 0, 5, 0, 0, 2, 2, 1, 1, 11, 0, {}, {callfunc "RestrictedItem"; set @LauncherType, AMMO_SLING; callfunc "CheckLauncher";}
diff --git a/world/map/db/mob_db.conf b/world/map/db/mob_db.conf
index ae92f099..d33b30c4 100644
--- a/world/map/db/mob_db.conf
+++ b/world/map/db/mob_db.conf
@@ -7789,7 +7789,7 @@ mob_db: (
MutationStrength: 40
Drops: {
TreasureKey: 500
- RedApple: 100
+ MountainCrystal: 100
InfantryHelmet: 20
CoinBag: 200
Diamond: 20
@@ -7829,7 +7829,6 @@ mob_db: (
Element: (6, 4)
Mode: {
CanMove: true
- Looter: true
Assist: true
Boss: true
CanAttack: true
@@ -7843,6 +7842,9 @@ mob_db: (
MutationCount: 0
MutationStrength: 0
Drops: {
+ MountainCrystal: 400
+ MountainCrystal: 200
+ MountainCrystal: 100
Diamond: 50
Ruby: 50
Emerald: 50
@@ -7880,7 +7882,7 @@ mob_db: (
Element: (6, 4)
Mode: {
CanMove: true
- Aggressive: true
+ Assist: true
Boss: true
CanAttack: true
ChangeTargetMelee: true
@@ -7893,7 +7895,15 @@ mob_db: (
MutationCount: 0
MutationStrength: 0
Drops: {
- DarkCrystal: 10000
+ BlackQuartz: 400
+ BlackQuartz: 200
+ BlackQuartz: 100
+ Diamond: 50
+ Ruby: 50
+ Emerald: 50
+ Sapphire: 50
+ Topaz: 50
+ Amethyst: 50
}
},
{
@@ -8216,7 +8226,7 @@ mob_db: (
MutationStrength: 30
Drops: {
TreasureKey: 800
- RedApple: 200
+ MountainCrystal: 400
InfantryHelmet: 35
CoinBag: 400
Diamond: 35
@@ -9166,9 +9176,9 @@ mob_db: (
Coal: 200
IronOre: 200
CopperOre: 40
- SilverOre: 300
- SilverOre: 150
- BromenalOre: 20
+ BromenalOre: 30
+ SilverOre: 200
+ SilverOre: 100
GoldOre: 10
}
},
@@ -9219,9 +9229,9 @@ mob_db: (
Coal: 200
IronOre: 200
CopperOre: 40
- SilverOre: 30
- BromenalOre: 200
- BromenalOre: 100
+ BromenalOre: 300
+ BromenalOre: 150
+ SilverOre: 20
GoldOre: 10
}
},
@@ -9270,8 +9280,8 @@ mob_db: (
Coal: 200
IronOre: 200
CopperOre: 40
- SilverOre: 30
- BromenalOre: 20
+ BromenalOre: 30
+ SilverOre: 20
GoldOre: 100
GoldOre: 50
}
@@ -9324,8 +9334,8 @@ mob_db: (
IronOre: 2000
IronOre: 1000
CopperOre: 40
- SilverOre: 30
- BromenalOre: 20
+ BromenalOre: 30
+ SilverOre: 20
GoldOre: 10
}
},
@@ -9377,8 +9387,8 @@ mob_db: (
Coal: 1000
IronOre: 200
CopperOre: 40
- SilverOre: 30
- BromenalOre: 20
+ BromenalOre: 30
+ SilverOre: 20
GoldOre: 10
}
},
@@ -9418,8 +9428,8 @@ mob_db: (
IronOre: 800
Coal: 1000
CopperOre: 200
- SilverOre: 150
- BromenalOre: 100
+ BromenalOre: 150
+ SilverOre: 100
GoldOre: 50
}
},
@@ -9459,8 +9469,8 @@ mob_db: (
IronOre: 1600
Coal: 2000
CopperOre: 400
- SilverOre: 300
- BromenalOre: 200
+ BromenalOre: 300
+ SilverOre: 200
GoldOre: 100
}
},
@@ -9500,8 +9510,8 @@ mob_db: (
IronOre: 400
Coal: 500
CopperOre: 100
- SilverOre: 75
- BromenalOre: 50
+ BromenalOre: 75
+ SilverOre: 50
GoldOre: 25
}
},
@@ -10308,7 +10318,6 @@ mob_db: (
Element: (6, 4)
Mode: {
CanMove: true
- Looter: true
Assist: true
Boss: true
CanAttack: true
@@ -10322,12 +10331,116 @@ mob_db: (
MutationCount: 0
MutationStrength: 0
Drops: {
+ Charcoal: 2000
Charcoal: 1000
Charcoal: 500
- Charcoal: 250
- Coal: 5000
- Coal: 2500
- Coal: 1250
+ Coal: 4000
+ Coal: 2000
+ Coal: 1000
+ IronOre: 500
+ IronPowder: 1200
+ }
+},
+{
+ Id: 1225
+ SpriteName: "StoneSlime"
+ Name: "Stone Slime"
+ Lv: 40
+ Hp: 600
+ Sp: 0
+ Exp: 200
+ JExp: 18
+ AttackRange: 1
+ Attack: [60, 90]
+ Def: 20
+ Mdef: 30
+ CriticalDef: 0
+ Stats: {
+ Str: 20
+ Agi: 30
+ Vit: 10
+ Int: 10
+ Dex: 30
+ Luk: 30
+ }
+ ViewRange: 9
+ ChaseRange: 10
+ Size: 1
+ Race: 0
+ Element: (1, 1)
+ Mode: {
+ CanMove: true
+ Looter: true
+ CanAttack: true
+ ChangeTargetMelee: true
+ ChangeTargetChase: true
+ }
+ MoveSpeed: 1200
+ AttackDelay: 1872
+ AttackMotion: 672
+ DamageMotion: 480
+ MutationCount: 1
+ MutationStrength: 20
+ Drops: {
+ Stone: 1000
+ Stone: 500
+ Stone: 250
+ Brick: 100
+ Coal: 200
+ IronOre: 200
+ CopperOre: 40
+ BromenalOre: 30
+ SilverOre: 20
+ GoldOre: 10
+ }
+},
+{
+ Id: 1226
+ SpriteName: "StoneGolem"
+ Name: "Stone Golem"
+ Lv: 180
+ Hp: 30000
+ Sp: 280
+ Exp: 70000
+ JExp: 2400
+ AttackRange: 3
+ Attack: [170, 190]
+ Def: 75
+ Mdef: 40
+ CriticalDef: 0
+ Stats: {
+ Str: 35
+ Agi: 26
+ Vit: 99
+ Int: 127
+ Dex: 255
+ Luk: 105
+ }
+ ViewRange: 31
+ ChaseRange: 30
+ Size: 1
+ Race: 0
+ Element: (6, 4)
+ Mode: {
+ CanMove: true
+ Assist: true
+ Boss: true
+ CanAttack: true
+ ChangeTargetMelee: true
+ ChangeTargetChase: true
+ }
+ MoveSpeed: 320
+ AttackDelay: 1000
+ AttackMotion: 672
+ DamageMotion: 50
+ MutationCount: 0
+ MutationStrength: 0
+ Drops: {
+ Stone: 2000
+ Stone: 1000
+ Stone: 500
+ Brick: 200
+ Coal: 500
IronOre: 500
IronPowder: 1200
}
diff --git a/world/map/db/mob_db_0_19.txt b/world/map/db/mob_db_0_19.txt
index c47a2a99..831426b9 100644
--- a/world/map/db/mob_db_0_19.txt
+++ b/world/map/db/mob_db_0_19.txt
@@ -24,7 +24,7 @@
1162, Grinchboo, Grinchboo, 5, 50, 0, 6, 1, 1, 5, 10, 0, 5, 0, 1, 1, 1, 0, 6, 5, 9, 10, 1, 3, 11, 129, 800, 1872, 672, 480, 505, 800, 501, 150, 518, 400, 527, 50, 527, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
//ID, Name, Jname, LV, HP, SP, EXP, JEXP, Range1, ATK1, ATK2, DEF, MDEF, CRITDEF,STR, AGI, VIT, INT, DEX, LUK, Range2, Range3, Scale, Race, Element,Mode, Speed, Adelay, Amotion,Dmotion,Drop0id,Drop0%, Drop1id,Drop1%, Drop2id,Drop2%, Drop3id,Drop3%, Drop4id,Drop4%, Drop5id,Drop5%, Drop6id,Drop6%, Drop7id,Drop7%, Drop8id,Drop8%, Drop9id,Drop9%, Item1, Item2, MEXP, ExpPer, MVP1id, MVP1per,MVP2id, MVP2per,MVP3id, MVP3per,mutationcount,mutationstrength
1165, ChristmasGift, ChristmasGift, 1, 1, 0, 1, 1, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 9, 10, 1, 3, 12, 0, 800, 800, 672, 480, 742, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-1172, Bif, Bif, 1, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 9, 10, 1, 3, 12, 0, 800, 800, 672, 480, 704, 1200, 640, 800, 4001, 1000, 5327, 200, 5292, 150, 5316, 100, 5314, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+1172, Bif, Bif, 1, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 9, 10, 1, 3, 12, 0, 800, 800, 672, 480, 704, 1200, 640, 800, 4001, 1000, 5327, 200, 5316, 150, 5292, 100, 5314, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
1181, SmallFrog, SmallFrog, 9, 100, 0, 100, 10, 1, 10, 20, 19, 3, 0, 10, 25, 25, 1, 15, 20, 5, 10, 0, 2, 12, 129, 600, 1976, 672, 480, 505, 600, 518, 200, 5215, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 30
1182, BigFrog, BigFrog, 10, 200, 0, 150, 15, 1, 20, 30, 24, 3, 0, 20, 15, 35, 1, 15, 20, 5, 10, 0, 2, 12, 129, 500, 1976, 672, 480, 505, 700, 518, 300, 5215, 150, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 30
1186, MananaTree, MananaTree, 5, 2500, 0, 2, 0, 1, 10, 10, 25, 1, 0, 1, 1, 10, 1, 1, 1, 1, 12, 1, 3, 12, 0, 1000, 800, 672, 480, 5341, 1000, 5341, 500, 5341, 250, 569, 1000, 569, 2000, 806, 500, 740, 500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 80
@@ -32,8 +32,8 @@
1191, Tortuga, Tortuga, 19, 535, 0, 350, 38, 1, 33, 44, 30, 50, 0, 18, 12, 1, 8, 80, 25, 1, 12, 1, 2, 11, 129, 700, 1872, 672, 480, 5355, 400, 5356, 100, 5215, 200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
1192, Ratto, Ratto, 15, 250, 0, 200, 30, 1, 25, 35, 13, 6, 0, 5, 10, 13, 1, 11, 6, 3, 12, 1, 2, 10, 131, 120, 1572, 672, 480, 5357, 500, 5358, 400, 5333, 200, 5335, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
1193, Croc, Croc, 17, 350, 0, 300, 35, 1, 124, 129, 54, 6, 0, 6, 10, 13, 1, 11, 6, 1, 12, 1, 2, 11, 129, 600, 1872, 672, 200, 5366, 350, 5338, 200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-1204, BigBif, BigBif, 1, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 9, 10, 1, 3, 12, 0, 800, 800, 672, 480, 704, 2400, 640, 1600, 4001, 2000, 5327, 400, 5292, 300, 5316, 200, 5314, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-1205, SmallBif, SmallBif, 1, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 9, 10, 1, 3, 12, 0, 800, 800, 672, 480, 704, 600, 640, 400, 4001, 500, 5327, 100, 5292, 75, 5316, 50, 5314, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+1204, BigBif, BigBif, 1, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 9, 10, 1, 3, 12, 0, 800, 800, 672, 480, 704, 2400, 640, 1600, 4001, 2000, 5327, 400, 5316, 300, 5292, 200, 5314, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+1205, SmallBif, SmallBif, 1, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 9, 10, 1, 3, 12, 0, 800, 800, 672, 480, 704, 600, 640, 400, 4001, 500, 5327, 100, 5316, 75, 5292, 50, 5314, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
1206, AmethystBif, AmethystBif, 1, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 9, 10, 1, 3, 12, 0, 800, 800, 672, 480, 4007, 20, 824, 1200, 824, 1200, 819, 600, 821, 600, 820, 600, 822, 600, 823, 600, 4001, 250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
1207, DiamondBif, DiamondBif, 1, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 9, 10, 1, 3, 12, 0, 800, 800, 672, 480, 4002, 20, 824, 600, 819, 1200, 819, 1200, 821, 600, 820, 600, 822, 600, 823, 600, 4001, 250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
1208, EmeraldBif, EmeraldBif, 1, 1, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 9, 10, 1, 3, 12, 0, 800, 800, 672, 480, 4004, 20, 824, 600, 819, 600, 821, 1200, 821, 1200, 820, 600, 822, 600, 823, 600, 4001, 250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
diff --git a/world/map/db/mob_db_40_59.txt b/world/map/db/mob_db_40_59.txt
index 0cf3e83f..63dc0223 100644
--- a/world/map/db/mob_db_40_59.txt
+++ b/world/map/db/mob_db_40_59.txt
@@ -17,9 +17,10 @@
1164, ChristmasTree, ChristmasTree, 40, 12000, 0, 3647, 392, 2, 40, 40, 20, 40, 0, 30, 30, 30, 30, 30, 30, 9, 10, 1, 0, 10, 128, 190, 1500, 800, 800, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
1168, Floyd, Floyd, 40, 1500, 0, 555, 150, 3, 25, 50, 60, 5, 30, 10, 23, 30, 20, 40, 50, 9, 10, 1, 3, 12, 129, 800, 1975, 672, 480, 1245, 10, 521, 70, 1257, 5, 529, 150, 529, 800, 4015, 20, 704, 500, 704, 1000, 5290, 150, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 40
1180, MisterPrickel, MisterPrickel, 40, 4822, 0, 672, 111, 1, 250, 275, 23, 33, 0, 20, 40, 55, 1, 20, 30, 1, 12, 1, 3, 20, 129, 400, 1000, 452, 0, 501, 300, 502, 200, 613, 800, 613, 400, 569, 700, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 40
-1199, SilverSlime, SilverSlime, 40, 600, 0, 200, 18, 1, 60, 90, 20, 30, 0, 20, 30, 10, 10, 30, 30, 9, 10, 1, 0, 11, 131, 1200, 1872, 672, 480, 5290, 1000, 5290, 1000, 1226, 1, 4001, 200, 640, 200, 5327, 40, 5292, 300, 5292, 150, 5316, 20, 5314, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 20
-1200, BromenalSlime, BromenalSlime, 40, 600, 0, 200, 18, 1, 60, 90, 20, 30, 0, 20, 30, 10, 10, 30, 30, 9, 10, 1, 0, 11, 131, 1200, 1872, 672, 480, 792, 10, 794, 10, 796, 10, 4001, 200, 640, 200, 5327, 40, 5292, 30, 5316, 200, 5316, 100, 5314, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 20
-1201, GoldSlime, GoldSlime, 40, 600, 0, 200, 18, 1, 60, 90, 20, 30, 0, 20, 30, 10, 10, 30, 30, 9, 10, 1, 0, 11, 131, 1200, 1872, 672, 480, 1253, 11, 4001, 200, 640, 200, 5327, 40, 5292, 30, 5316, 20, 5314, 100, 5314, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 20
-1202, IronSlime, IronSlime, 40, 600, 0, 200, 18, 1, 60, 90, 20, 30, 0, 20, 30, 10, 10, 30, 30, 9, 10, 1, 0, 11, 131, 1200, 1872, 672, 480, 529, 5000, 529, 2500, 5329, 1, 4001, 200, 640, 2000, 640, 1000, 5327, 40, 5292, 30, 5316, 20, 5314, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 20
-1203, CoalSlime, CoalSlime, 40, 600, 0, 200, 18, 1, 60, 90, 20, 30, 0, 20, 30, 10, 10, 30, 30, 9, 10, 1, 0, 11, 131, 1200, 1872, 672, 480, 5332, 1000, 5332, 500, 5332, 250, 4001, 2000, 4001, 1000, 640, 200, 5327, 40, 5292, 30, 5316, 20, 5314, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 20
+1199, SilverSlime, SilverSlime, 40, 600, 0, 200, 18, 1, 60, 90, 20, 30, 0, 20, 30, 10, 10, 30, 30, 9, 10, 1, 0, 11, 131, 1200, 1872, 672, 480, 5290, 1000, 5290, 1000, 1226, 1, 4001, 200, 640, 200, 5327, 40, 5316, 30, 5292, 200, 5292, 100, 5314, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 20
+1200, BromenalSlime, BromenalSlime, 40, 600, 0, 200, 18, 1, 60, 90, 20, 30, 0, 20, 30, 10, 10, 30, 30, 9, 10, 1, 0, 11, 131, 1200, 1872, 672, 480, 792, 10, 794, 10, 796, 10, 4001, 200, 640, 200, 5327, 40, 5316, 300, 5316, 150, 5292, 20, 5314, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 20
+1201, GoldSlime, GoldSlime, 40, 600, 0, 200, 18, 1, 60, 90, 20, 30, 0, 20, 30, 10, 10, 30, 30, 9, 10, 1, 0, 11, 131, 1200, 1872, 672, 480, 1253, 11, 4001, 200, 640, 200, 5327, 40, 5316, 30, 5292, 20, 5314, 100, 5314, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 20
+1202, IronSlime, IronSlime, 40, 600, 0, 200, 18, 1, 60, 90, 20, 30, 0, 20, 30, 10, 10, 30, 30, 9, 10, 1, 0, 11, 131, 1200, 1872, 672, 480, 529, 5000, 529, 2500, 5329, 1, 4001, 200, 640, 2000, 640, 1000, 5327, 40, 5316, 30, 5292, 20, 5314, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 20
+1203, CoalSlime, CoalSlime, 40, 600, 0, 200, 18, 1, 60, 90, 20, 30, 0, 20, 30, 10, 10, 30, 30, 9, 10, 1, 0, 11, 131, 1200, 1872, 672, 480, 5332, 1000, 5332, 500, 5332, 250, 4001, 2000, 4001, 1000, 640, 200, 5327, 40, 5316, 30, 5292, 20, 5314, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 20
//ID, Name, Jname, LV, HP, SP, EXP, JEXP, Range1, ATK1, ATK2, DEF, MDEF, CRITDEF,STR, AGI, VIT, INT, DEX, LUK, Range2, Range3, Scale, Race, Element,Mode, Speed, Adelay, Amotion,Dmotion,Drop0id,Drop0%, Drop1id,Drop1%, Drop2id,Drop2%, Drop3id,Drop3%, Drop4id,Drop4%, Drop5id,Drop5%, Drop6id,Drop6%, Drop7id,Drop7%, Drop8id,Drop8%, Drop9id,Drop9%, Item1, Item2, MEXP, ExpPer, MVP1id, MVP1per,MVP2id, MVP2per,MVP3id, MVP3per,mutationcount,mutationstrength
+1225, StoneSlime, StoneSlime, 40, 600, 0, 200, 18, 1, 60, 90, 20, 30, 0, 20, 30, 10, 10, 30, 30, 9, 10, 1, 0, 11, 131, 1200, 1872, 672, 480, 5380, 1000, 5380, 500, 5380, 250, 5381, 100, 4001, 200, 640, 200, 5327, 40, 5316, 30, 5292, 20, 5314, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 20
diff --git a/world/map/db/mob_db_over_100.txt b/world/map/db/mob_db_over_100.txt
index 8e7c1ff0..b65e3800 100644
--- a/world/map/db/mob_db_over_100.txt
+++ b/world/map/db/mob_db_over_100.txt
@@ -45,14 +45,14 @@
1166, Snowman, Snowman, 100, 4200, 0, 2897, 689, 1, 60, 80, 5, 20, 0, 15, 25, 40, 15, 75, 30, 8, 10, 1, 3, 10, 133, 800, 1872, 672, 480, 567, 800, 5310, 800, 568, 800, 4002, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
//ID, Name, Jname, LV, HP, SP, EXP, JEXP, Range1, ATK1, ATK2, DEF, MDEF, CRITDEF,STR, AGI, VIT, INT, DEX, LUK, Range2, Range3, Scale, Race, Element,Mode, Speed, Adelay, Amotion,Dmotion,Drop0id,Drop0%, Drop1id,Drop1%, Drop2id,Drop2%, Drop3id,Drop3%, Drop4id,Drop4%, Drop5id,Drop5%, Drop6id,Drop6%, Drop7id,Drop7%, Drop8id,Drop8%, Drop9id,Drop9%, Item1, Item2, MEXP, ExpPer, MVP1id, MVP1per,MVP2id, MVP2per,MVP3id, MVP3per,mutationcount,mutationstrength
1167, SnowmanBoss, SnowmanBoss, 100, 35000, 0, 88970, 2689, 4, 220, 240, 77, 50, 0, 45, 20, 110, 150, 255, 110, 14, 16, 1, 3, 10, 165, 700, 1672, 672, 480, 567, 1600, 5310, 1600, 568, 1600, 4002, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-1169, CrystalSpider, CrystalSpider, 140, 1000, 0, 800, 200, 1, 80, 95, 8, 12, 0, 20, 15, 20, 11, 45, 30, 1, 1, 1, 0, 22, 139, 1000, 1500, 672, 480, 537, 500, 535, 100, 638, 20, 526, 200, 4002, 20, 4003, 20, 4004, 20, 4005, 20, 4006, 20, 4007, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 40
+1169, CrystalSpider, CrystalSpider, 140, 1000, 0, 800, 200, 1, 80, 95, 8, 12, 0, 20, 15, 20, 11, 45, 30, 1, 1, 1, 0, 22, 139, 1000, 1500, 672, 480, 537, 500, 5384, 100, 638, 20, 526, 200, 4002, 20, 4003, 20, 4004, 20, 4005, 20, 4006, 20, 4007, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 40
1173, MontBlanc, MontBlanc, 110, 30000, 0, 100300, 500, 12, 777, 1000, 70, 90, 90, 30, 1, 100, 1, 120, 120, 12, 12, 1, 3, 12, 164, 0, 4000, 672, 480, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
1174, Emo, Emo, 129, 50150, 80, 150000, 1000, 2, 250, 450, 30, 60, 60, 80, 60, 100, 60, 110, 110, 40, 30, 1, 1, 21, 183, 250, 450, 672, 50, 528, 5000, 532, 200, 5294, 500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
1175, MegaManaBug, MegaManaBug, 111, 675, 0, 275, 40, 1, 60, 85, 3, 8, 0, 16, 14, 15, 20, 30, 30, 9, 10, 1, 4, 12, 137, 800, 1800, 672, 480, 505, 1000, 518, 800, 533, 400, 540, 10, 526, 400, 5309, 1000, 5309, 1000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 60
1176, Rotter, Rotter, 130, 6000, 0, 5533, 733, 4, 333, 555, 20, 25, 50, 30, 15, 30, 1, 130, 130, 7, 11, 1, 1, 17, 141, 1200, 2222, 672, 900, 631, 1000, 777, 800, 778, 200, 779, 500, 1198, 500, 5297, 10, 3004, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 30
1177, Rot, Rot, 100, 13, 0, 11, 1, 1, 111, 333, 0, 0, 0, 0, 0, 0, 0, 255, 33, 1, 1, 1, 0, 11, 132, 0, 500, 672, 480, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
1178, SpiderQueen, SpiderQueen, 145, 7000, 0, 1200, 400, 3, 250, 300, 60, 60, 0, 40, 30, 50, 15, 65, 40, 8, 15, 0, 2, 12, 165, 210, 1200, 550, 450, 518, 2500, 505, 2000, 640, 600, 4001, 800, 5292, 100, 537, 800, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 30
-1179, CrystalSpiderQueen, CrystalSpiderQueen, 150, 9000, 0, 1600, 450, 3, 250, 300, 70, 80, 0, 45, 35, 60, 30, 70, 50, 8, 15, 0, 2, 12, 171, 1000, 1500, 750, 550, 537, 800, 535, 200, 638, 35, 526, 400, 4002, 35, 4003, 35, 4004, 35, 4005, 35, 4006, 35, 4007, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 30
+1179, CrystalSpiderQueen, CrystalSpiderQueen, 150, 9000, 0, 1600, 450, 3, 250, 300, 70, 80, 0, 45, 35, 60, 30, 70, 50, 8, 15, 0, 2, 12, 171, 1000, 1500, 750, 550, 537, 800, 5384, 400, 638, 35, 526, 400, 4002, 35, 4003, 35, 4004, 35, 4005, 35, 4006, 35, 4007, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 30
1184, BoneQuadceratops, BoneQuadceratops, 120, 22000, 0, 12120, 1888, 1, 100, 200, 66, 55, 0, 60, 20, 60, 1, 43, 70, 9, 10, 1, 1, 17, 169, 750, 800, 692, 720, 4023, 10000, 4023, 5000, 4023, 2500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 30
1185, EntAbomination, EntAbomination, 130, 45000, 280, 58000, 1600, 2, 200, 250, 80, 60, 0, 40, 12, 120, 127, 60, 88, 31, 30, 1, 3, 12, 169, 1500, 900, 772, 740, 569, 2000, 569, 2000, 806, 250, 806, 500, 740, 500, 740, 1000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 20
1188, Junglefowl, Junglefowl, 125, 25500, 0, 15000, 2125, 1, 175, 250, 45, 47, 0, 70, 99, 80, 22, 99, 70, 7, 11, 1, 2, 12, 169, 400, 1000, 672, 200, 5373, 1000, 5375, 1100, 562, 1000, 562, 500, 4023, 500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
diff --git a/world/map/db/mob_db_over_150.txt b/world/map/db/mob_db_over_150.txt
index 1c3675c9..7c7d9c0e 100644
--- a/world/map/db/mob_db_over_150.txt
+++ b/world/map/db/mob_db_over_150.txt
@@ -27,7 +27,8 @@
1149, Enchanter, Enchanter, 181, 19000, 280, 55000, 2000, 8, 140, 180, 30, 60, 0, 31, 22, 90, 127, 255, 105, 31, 10, 1, 1, 37, 181, 240, 800, 672, 50, 537, 800, 779, 90, 780, 80, 777, 70, 1198, 50, 666, 30, 1227, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 10
1150, ManaTyrant, ManaTyrant, 180, 24000, 280, 27000, 5000, 2, 300, 325, 42, 67, 0, 31, 22, 90, 127, 255, 95, 31, 10, 1, 1, 37, 181, 180, 1050, 672, 50, 759, 1, 5237, 20, 1253, 5, 720, 100, 825, 500, 868, 20, 1172, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
1161, Xakelbael, Xakelbael, 200, 29999, 280, 999999, 99999, 9, 90, 124, 74, 100, 0, 199, 2, 199, 197, 255, 175, 31, 10, 1, 1, 37, 181, 210, 672, 672, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-1170, CrystalGolem, CrystalGolem, 180, 25000, 280, 68000, 2200, 3, 170, 190, 75, 40, 0, 35, 26, 99, 127, 255, 105, 31, 30, 1, 0, 46, 171, 320, 1000, 672, 50, 4002, 50, 4003, 50, 4004, 50, 4005, 50, 4006, 50, 4007, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-1171, BlackCrystalGolem, BlackCrystalGolem, 180, 25000, 280, 68000, 2200, 3, 170, 190, 75, 40, 0, 35, 26, 99, 127, 255, 105, 31, 30, 1, 0, 46, 165, 320, 1000, 672, 50, 631, 10000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+1170, CrystalGolem, CrystalGolem, 180, 25000, 280, 68000, 2200, 3, 170, 190, 75, 40, 0, 35, 26, 99, 127, 255, 105, 31, 30, 1, 0, 46, 169, 320, 1000, 672, 50, 5384, 400, 5384, 200, 5384, 100, 4002, 50, 4003, 50, 4004, 50, 4005, 50, 4006, 50, 4007, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+1171, BlackCrystalGolem, BlackCrystalGolem, 180, 25000, 280, 68000, 2200, 3, 170, 190, 75, 40, 0, 35, 26, 99, 127, 255, 105, 31, 30, 1, 0, 46, 169, 320, 1000, 672, 50, 5385, 400, 5385, 200, 5385, 100, 4002, 50, 4003, 50, 4004, 50, 4005, 50, 4006, 50, 4007, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
1183, MobMoubootaur, MobMoubootaur, 220, 99999, 9999, 999999, 99999, 1, 400, 500, 99, 99, 0, 99, 60, 99, 30, 255, 255, 18, 18, 1, 6, 47, 165, 240, 872, 272, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
-1224, CoalGolem, CoalGolem, 180, 25000, 280, 68000, 2200, 3, 170, 190, 75, 40, 0, 35, 26, 99, 127, 255, 105, 31, 30, 1, 0, 46, 171, 320, 1000, 672, 50, 5332, 1000, 5332, 500, 5332, 250, 4001, 5000, 4001, 2500, 4001, 1250, 640, 500, 704, 1200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+1224, CoalGolem, CoalGolem, 180, 25000, 280, 68000, 2200, 3, 170, 190, 75, 40, 0, 35, 26, 99, 127, 255, 105, 31, 30, 1, 0, 46, 169, 320, 1000, 672, 50, 5332, 2000, 5332, 1000, 5332, 500, 4001, 4000, 4001, 2000, 4001, 1000, 640, 500, 704, 1200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+1226, StoneGolem, StoneGolem, 180, 30000, 280, 70000, 2400, 3, 170, 190, 75, 40, 0, 35, 26, 99, 127, 255, 105, 31, 30, 1, 0, 46, 169, 320, 1000, 672, 50, 5380, 2000, 5380, 1000, 5380, 500, 5381, 200, 4001, 500, 640, 500, 704, 1200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
diff --git a/world/map/db/mob_skill_db.txt b/world/map/db/mob_skill_db.txt
index 82ef11a4..45b49563 100644
--- a/world/map/db/mob_skill_db.txt
+++ b/world/map/db/mob_skill_db.txt
@@ -129,5 +129,4 @@
//Rick Lime Skills
1196,RickLime@NPC_SUMMONSLAVE_brblowX2,any,198,1,10000,1000,5000,no,self,slavelt,2,1195,0,0,0,0,
-1196,RickLime@NPC_SUMMONSLAVE_cloverX1,any,198,1,5000,1000,5000,no,self,slavelt,3,1037,0,0,0,0,
1195,Brainblow@NPC_SELFDESTRUCTION,attack,175,1,10000,100,500,yes,self,always,0,30,0,0,0,0,
diff --git a/world/map/db/params.txt b/world/map/db/params.txt
index d600b4ad..512d0ac8 100644
--- a/world/map/db/params.txt
+++ b/world/map/db/params.txt
@@ -28,6 +28,7 @@ NEXTBASEEXP 22 1
NEXTJOBEXP 23 1
Weight 24 1
MaxWeight 25 1
+MaxWeightOverride 27 1
ATK1 41 1
ATK2 42 1
MATK1 43 1
@@ -74,34 +75,36 @@ MUTE_PARTY 1084 1
//MUTE_GUILD 1085 1
AUTOMOD 1086 1
-bMaxHP 6 // MaxHP + n
-bMaxSP 8 // MaxSP + n
-bStr 13 // STR + n
-bAgi 14 // AGI + n
-bVit 15 // VIT + n
-bInt 16 // INT + n
-bDex 17 // DEX + n
-bLuk 18 // LUK + n
-bAtk 41 // ATK + n (Minimum attack power)
-bAtk2 42 // ATK2 + n (Maximum attack power)
-bMatk1 43 // MATK1 + n (Maximum magical attack power)
-bMatk2 44 // MATK2 + n (Minimum magical attack power)
+bMaxHP 6 // MaxHP + n
+bMaxSP 8 // MaxSP + n
+bStr 13 // STR + n
+bAgi 14 // AGI + n
+bVit 15 // VIT + n
+bInt 16 // INT + n
+bDex 17 // DEX + n
+bLuk 18 // LUK + n
+bMaxWeight 25 // Sets the maximum possible weight to carry to n (bMaxWeight,n;). Note: As a failsafe 1000 is added to n, final weight is n + 1000.
+bMaxWeightAdd 26 // Adds n to the maximum possible weight to carry (bMaxWeightAdd,n;). Note: As a failsafe 1000 is added to n, final weight is MaxWeight + n + 1000.
+bAtk 41 // ATK + n (Minimum attack power)
+bAtk2 42 // ATK2 + n (Maximum attack power)
+bMatk1 43 // MATK1 + n (Maximum magical attack power)
+bMatk2 44 // MATK2 + n (Minimum magical attack power)
// Greatest of MATK1 and MATK2 is taken and becomes MATK1 and MATK2 is set to 0.
// So using MATK2 bonus at the moment has no real benefit you only need greater values to reach same as MATK1.
// MATK1 += INT + (INT / 5) * (INT / 5);
// MATK2 += INT + (INT / 7) * (INT / 7);
// The whole magic system is currently handled in serverdata which only uses MATK1 but the magic attack functions
// do already exist in servercode only skills must be added there.
-bDef 45 // Equipment DEF + n
-bDef2 46 // VIT based DEF + n
-bMdef 47 // Equipment MDEF + n
-bMdef2 48 // INT based MDEF + n
-bHit 49 // Hit + n
-bFlee 50 // Flee + n
-bFlee2 51 // Perfect Dodge + n
-bCritical 52 // Critical + n
-bAspd 53 // Attack speed + n
-bDeaf 70
+bDef 45 // Equipment DEF + n
+bDef2 46 // VIT based DEF + n
+bMdef 47 // Equipment MDEF + n
+bMdef2 48 // INT based MDEF + n
+bHit 49 // Hit + n
+bFlee 50 // Flee + n
+bFlee2 51 // Perfect Dodge + n
+bCritical 52 // Critical + n
+bAspd 53 // Attack speed + n
+bDeaf 70
// Those which can be used with the arrow are only bCritical, bAtkEle, bHit, bAddEle, bAddRace, bAddSize and bAddEff. The other bonuses are ignored.
// For more information, have a look here: http://code.google.com/p/eathena/source/browse/trunk/doc/item_bonus.txt
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/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..b1c5917e 100644
--- a/world/map/npc/functions/global_event_handler.txt
+++ b/world/map/npc/functions/global_event_handler.txt
@@ -19,6 +19,7 @@ OnPCLoginEvent:
callfunc "ConvertChristmas21"; // Christmas 2021
callfunc "VaultLogin"; // Mirror Lake Protocol biddings
callfunc "VaultLogout"; // Clean some stuff, to be safe
+ if (WEIGHT_LIMIT) set MaxWeightOverride, WEIGHT_LIMIT; // If this char var set, override max weight (tradebots, etc)
// add more here
set @login_event, 2;
end;
@@ -37,6 +38,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
@@ -44,7 +46,7 @@ OnPCDieEvent:
end;
OnPCLogoutEvent:
-// if (getnpcid("#Upmarmu#" + getcharid(3)) >= 1) addnpctimer 0, "#Upmarmu#" + getcharid(3) + "::OnDestroy"; // @upmarmu_spell_npc_name$ is already lost at this point so it must be done like this
+ if (getnpcid("#Upmarmu#" + getcharid(3)) >= 1) addnpctimer 0, "#Upmarmu#" + getcharid(3) + "::OnDestroy"; // @upmarmu_spell_npc_name$ is already lost at this point so it must be done like this
callfunc "VaultLogout";
end;
diff --git a/world/map/npc/items/anchor_stone.txt b/world/map/npc/items/anchor_stone.txt
new file mode 100644
index 00000000..c1ea722b
--- /dev/null
+++ b/world/map/npc/items/anchor_stone.txt
@@ -0,0 +1,56 @@
+function|script|useAnchorStone
+{
+ addtimer 0, "AS_Core::OnUse";
+ return;
+}
+
+-|script|AS_Core|32767
+{
+ end;
+
+OnUse:
+ if ( @StoneName$ == "AnchorStone" ) goto L_AnchorStone;
+ if ( @StoneName$ == "AnchoredAnchorStone" ) goto L_AnchoredAnchorStone;
+ goto L_Close;
+
+L_AnchorStone:
+ mes "\"You really want to bind the [@@" + AnchorStone + "|@@] to this place?\"";
+ menu
+ "No", L_Close,
+ "Yes", L_AS_Yes;
+
+L_AS_Yes:
+ set AnchorStoneDest, getmaphash(getmap()); // since a hash could be negative I take a separate variable for that since shifting would destroy the sign bit and create a different hash
+ set AnchorStoneDestCoord, gety() << AS_Y_SHIFT | getx() << AS_X_SHIFT;
+
+ delitem AnchorStone, 1;
+ getitem AnchoredAnchorStone, 1;
+ close;
+
+L_AnchoredAnchorStone:
+ if ((AnchorStoneDest < 1) && (AnchorStoneDest > -1)) goto L_AAS_Error;
+ mes "\"You want to recall to the place the [@@" + AnchoredAnchorStone + "|@@] is bound to?\"";
+ menu
+ "No", L_Close,
+ "Yes", L_AAS_Yes;
+
+L_AAS_Yes:
+ warp getmapnamefromhash(AnchorStoneDest), (AnchorStoneDestCoord & AS_X_MASK >> AS_X_SHIFT), (AnchorStoneDestCoord & AS_Y_MASK >> AS_Y_SHIFT);
+
+ goto L_AAStoAS;
+
+L_AAS_Error:
+ mes "\"Something went wrong the [@@" + AnchoredAnchorStone + "|@@] lost its destination and turns back to normal.\"";
+ goto L_AAStoAS;
+
+L_AAStoAS:
+ set AnchorStoneDest, 0;
+ set AnchorStoneDestCoord, 0;
+
+ delitem AnchoredAnchorStone, 1;
+ getitem AnchorStone, 1;
+ close;
+
+L_Close:
+ close;
+}
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 3f591c15..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;
+ if (gettimetick(2) - @lastsound < 2) goto L_Return;
misceffect 406;
- set @lastbat, gettimetick(2);
+ 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-magic-knuckles.txt b/world/map/npc/magic/level2-magic-knuckles.txt
index 0674f689..cd86ba28 100644
--- a/world/map/npc/magic/level2-magic-knuckles.txt
+++ b/world/map/npc/magic/level2-magic-knuckles.txt
@@ -1,7 +1,7 @@
-|script|magic-knuckles|32767
{
if @_U_BLOCK >= 1 goto L_Still_Exhausted;
-/*
+
set @upmarmu_spell_npc_name$, "#Upmarmu#" + getcharid(3); // make a unique puppet name for every player
set .upmarmu_spell_npc, getnpcid(@upmarmu_spell_npc_name$);
if ( .upmarmu_spell_npc >= 1 ) goto L_NPC_Exists; // if this npc already exist reuse it so that idle recovery timer does not get destroyed
@@ -12,7 +12,6 @@
goto L_NPC_Exists;
L_NPC_Exists:
-*/
if (call("magic_checks")) end;
if (Sp < 20) end;
if (getskilllv(SKILL_MAGIC) < .level) end;
@@ -49,35 +48,29 @@ OnAttack:
if (target(BL_ID, @target_id, 22) != 22) goto L_FreeRecast; // 0x10 | 0x02 | 0x04
void call("elt_damage", @upmarmuspell[0], (@upmarmuspell[3] + @upmarmuspell[4]), ELT_WATER, ELT_FIRE, FX_NONE);
-// addtimer 0, @upmarmu_spell_npc_name$ + "::OnResetTimer";
+ addtimer 0, @upmarmu_spell_npc_name$ + "::OnResetTimer";
set @upmarmuspell[1], @upmarmuspell[1] - 1;
+
+ if @num_upmarmu_hits >= UPMARMU_HITS_TILL_EXHAUST goto L_FreeRecast;
set @num_upmarmu_hits, @num_upmarmu_hits + 1;
+ if @num_upmarmu_hits >= UPMARMU_HITS_TILL_EXHAUST set .exhausted, 1, .upmarmu_spell_npc;
- if @num_upmarmu_hits >= UPMARMU_HITS_TILL_EXHAUST goto L_Exhausted;
goto L_FreeRecast;
L_FreeRecast:
if (@upmarmuspell[1] > 0)
addtimer 0, strnpcinfo(0) + "::OnSetRecast";
+ else
+ addtimer 0, @upmarmu_spell_npc_name$ + "::OnExhausted";
end;
-L_Exhausted:
- set @_U_BLOCK, 1;
- set @upmarmuspell[1], 0;
- misceffect FX_MAGIC_DISCHARGE, strcharinfo(0);
- overrideattack;
- addtimer UPMARMU_EXHAUST_DURATION, "Upmarmu Exhaust Timer::OnClear"; // set the exhaustion time
- sc_start SC_COOLDOWN_UPMARMU, UPMARMU_EXHAUST_DURATION, 0, BL_ID;
- smsg SMSG_FAILURE, "Magic: You are too exhausted to use this spell for a while!";
- goto L_StopTimer;
-
L_Still_Exhausted:
smsg SMSG_FAILURE, "Magic: You are still too exhausted to use this spell for a while!";
end;
L_StopTimer:
-// addtimer 0, @upmarmu_spell_npc_name$ + "::OnStopTimer";
+ addtimer 0, @upmarmu_spell_npc_name$ + "::OnStopTimer";
end;
OnDischarge:
@@ -91,7 +84,6 @@ OnSetRecast:
overrideattack (@upmarmuspell[2] * @upmarmuspell[2]), 1, ATTACK_ICON_GENERIC, OVERRIDE_KNUCKLES, strnpcinfo(0)+"::OnAttack", @upmarmuspell[1]; // delay needs to be squared
end;
-/*
OnResetTimer:
// This timer is if you stopped somewhere below max hits then after 25sec you recover fully and start at 0 hits again
stopnpctimer;
@@ -117,9 +109,20 @@ OnTimer25000:
setnpctimer 0;
end;
+OnExhausted:
+ if (.exhausted < 1) end;
+
+ set @_U_BLOCK, 1;
+ set @upmarmuspell[1], 0;
+ set @num_upmarmu_hits, 0;
+ set .exhausted, 0;
+ addtimer UPMARMU_EXHAUST_DURATION, "Upmarmu Exhaust Timer::OnClear"; // set the exhaustion time
+ sc_start SC_COOLDOWN_UPMARMU, UPMARMU_EXHAUST_DURATION, 0, BL_ID;
+ smsg SMSG_FAILURE, "Magic: You are too exhausted to use this spell for a while!";
+ goto L_StopTimer;
+
OnDestroy:
destroy;
-*/
OnInit:
set .school, SKILL_MAGIC_WAR;
@@ -136,6 +139,5 @@ OnInit:
OnClear:
set @_U_BLOCK, 0;
- set @num_upmarmu_hits, 0;
end;
}
diff --git a/world/map/npc/magic/level2-make-bones.txt b/world/map/npc/magic/level2-make-bones.txt
index bc9bc6e5..b84cae6c 100644
--- a/world/map/npc/magic/level2-make-bones.txt
+++ b/world/map/npc/magic/level2-make-bones.txt
@@ -25,7 +25,7 @@ L_Resume:
set CASTS, CASTS + 1;
if (CASTS < 0) set CASTS, 1; // overflow
misceffect FX_MAGIC_ARROW_CAST, strcharinfo(0);
- setarray @create_params[0], (@spellpower/32)+1+(rand(max(1,(800-@spellpower)))/80), 500;
+ setarray @create_params[0], (@spellpower/6)+1+(rand(max(1,(800-@spellpower)))/80), 500;
setarray @create_items$[0], "BoneArrows", "IronArrow";
callfunc "magic_create_item";
callfunc "magic_exp";
diff --git a/world/map/npc/magic/level2-protect.txt b/world/map/npc/magic/level2-protect.txt
index 7abc9a1a..87d010f8 100644
--- a/world/map/npc/magic/level2-protect.txt
+++ b/world/map/npc/magic/level2-protect.txt
@@ -1,5 +1,6 @@
-|script|protect|32767
{
+ if (sc_check(SC_PHYS_SHIELD_ITEM)) goto L_Itsanc; // itsanc has top priority and cant be overwritten by betsanc
if(call("magic_checks")) end;
if (Sp < 14) end;
set .@level, getskilllv(.school);
@@ -44,6 +45,10 @@ OnEnd:
misceffect FX_MAGIC_SHIELD_ENDS, strcharinfo(0);
end;
+L_Itsanc:
+ message strcharinfo(0), "Shield : You are still itsanced, This blocks your spell.";
+ end;
+
L_SpecialRules6:
if ($@KIMARR_EVENT < 1) goto L_Pay;
if (@target_id == BL_ID) goto L_Pay;
diff --git a/world/map/npc/magic/level2-rain.txt b/world/map/npc/magic/level2-rain.txt
index 6a7f288b..291af009 100644
--- a/world/map/npc/magic/level2-rain.txt
+++ b/world/map/npc/magic/level2-rain.txt
@@ -102,9 +102,18 @@ OnHit:
if(get(Hp, .caster) < 1) destroy; // destroy if caster is missing
if(getmap(.caster) != strnpcinfo(3)) destroy; // destroy if caster left the map
if(target(.caster, @target_id, 16) != 16 && .caster != @target_id) end;
- if((get(BL_TYPE, @target_id) & 1) == 0) end; // either mob or pc
+ if((get(BL_TYPE, @target_id) & 1) == 0) end; // either mob or pc
if(get(ELTTYPE, @target_id) == ELT_FIRE)
injure .caster, @target_id, ((rand((@spellpower/15)+5)+2) * (100 - get(MDEF1, @target_id))) / 100;
+ if ($NO_RAIN_SPAWNS) end; // server-wide killswitch for rain pranks if spawns logic would backfire.
+ if (mobcount(getmap(), "rain::OnRainSpawnDeath") > 30) end; // Abort if too crowded.
+ if(get(Class, @target_id) == EntAbomination) // Rain hit Ent? This scores little perk!
+ monster getmap(), getnpcx(), getnpcy(), "", LogHead, 1+rand(1+(.max/150)), "rain::OnRainSpawnDeath";
+ if((get(Class, @target_id) == LogHead) && (rand(5) == 3)) // Rain hit LogHead? Little perk as well (plants)
+ monster getmap(), getnpcx(), getnpcy(), "", MauvePlant+rand(5), 1, "rain::OnRainSpawnDeath";
+ end;
+
+OnRainSpawnDeath:
end;
OnDestroy:
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/mobs/miner_mania.txt b/world/map/npc/mobs/miner_mania.txt
index 445c82e0..a496697d 100644
--- a/world/map/npc/mobs/miner_mania.txt
+++ b/world/map/npc/mobs/miner_mania.txt
@@ -53,7 +53,7 @@ Note:
setarray $@slime_mine_maps_y0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 23, -1;
setarray $@slime_mine_maps_x1, -1, -1, 100, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 173, -1;
setarray $@slime_mine_maps_y1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 170, -1;
- setarray $@slimes, CopperSlime, SilverSlime, BromenalSlime, GoldSlime, IronSlime, CoalSlime;
+ setarray $@slimes, CopperSlime, SilverSlime, BromenalSlime, GoldSlime, IronSlime, CoalSlime, StoneSlime;
// Bifs -----------------------------
diff --git a/world/map/npc/mobs/mob_points.txt b/world/map/npc/mobs/mob_points.txt
index d0ede2f1..2589f1eb 100644
--- a/world/map/npc/mobs/mob_points.txt
+++ b/world/map/npc/mobs/mob_points.txt
@@ -232,7 +232,9 @@ function|script|MobPoints
1, // 1221 SmallRubyBif
1, // 1222 SmallSapphireBif
1, // 1223 SmallTopazBif
- 200 // 1224 CoalGolem
+ 200, // 1224 CoalGolem
+ 25, // 1225 StoneSlime
+ 200 // 1226 StoneGolem
; // END
// the following mobs where replaced by other mobs:
diff --git a/world/map/npc/scripts.conf b/world/map/npc/scripts.conf
index 512c8d48..b0a5f0c2 100644
--- a/world/map/npc/scripts.conf
+++ b/world/map/npc/scripts.conf
@@ -62,6 +62,9 @@ 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
+npc: npc/items/anchor_stone.txt
// Mob Functions
npc: npc/mobs/miner_mania.txt