summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
m---------client-data0
m---------tools0
-rw-r--r--world/map/conf/magic-base.conf1472
-rw-r--r--world/map/conf/magic-base.sex272
-rw-r--r--world/map/conf/magic-conf-ifnew.conf4
-rw-r--r--world/map/conf/magic-conf-ifold.conf4
-rw-r--r--world/map/conf/magic-secrets.conf.template86
-rw-r--r--world/map/conf/tmwa-map.conf15
-rw-r--r--world/map/data/028-1.wlkbin25126 -> 25126 bytes
-rw-r--r--world/map/data/041-1.wlkbin18754 -> 18754 bytes
-rw-r--r--world/map/data/042-1.wlkbin22564 -> 22564 bytes
-rw-r--r--world/map/data/042-2.wlkbin7704 -> 15404 bytes
-rw-r--r--world/map/data/042-3.wlkbin0 -> 5604 bytes
-rw-r--r--world/map/data/resnametable.txt1
-rw-r--r--world/map/db/0_19_mob_db.txt4
-rw-r--r--world/map/db/40_59_mob_db.txt1
-rw-r--r--world/map/db/chest_item_db.txt243
-rw-r--r--world/map/db/const.txt1
-rw-r--r--world/map/db/foot_item_db.txt20
-rw-r--r--world/map/db/generic_item_db.txt241
-rw-r--r--world/map/db/hand_item_db.txt19
-rw-r--r--world/map/db/head_item_db.txt186
-rw-r--r--world/map/db/item_db.txt969
-rw-r--r--world/map/db/leg_item_db.txt59
-rw-r--r--world/map/db/offhand_item_db.txt7
-rw-r--r--world/map/db/over_100_mob_db.txt2
-rw-r--r--world/map/db/trinket_item_db.txt22
-rw-r--r--world/map/db/use_item_db.txt91
-rw-r--r--world/map/db/weapon_item_db.txt62
-rw-r--r--world/map/news.d/32-v2014.5.20.txt8
-rw-r--r--world/map/news.d/33-v2014.6.17.txt26
-rw-r--r--world/map/news.php3
-rw-r--r--world/map/npc/006-1/pachua.txt2
-rw-r--r--world/map/npc/017-9/_import.txt1
-rw-r--r--world/map/npc/017-9/announcements.txt (renamed from world/map/npc/botcheck/announcements.txt)2
-rw-r--r--world/map/npc/022-1/_warps.txt1
-rw-r--r--world/map/npc/022-1/tutorial.txt53
-rw-r--r--world/map/npc/024-1/_warps.txt1
-rw-r--r--world/map/npc/024-2/barrier.txt11
-rw-r--r--world/map/npc/024-2/tyer.txt2
-rw-r--r--world/map/npc/024-2/tyer_trigger.txt18
-rw-r--r--world/map/npc/028-1/Portal.txt135
-rw-r--r--world/map/npc/028-1/_import.txt5
-rw-r--r--world/map/npc/028-1/_mobs.txt2
-rw-r--r--world/map/npc/028-1/_warps.txt2
-rw-r--r--world/map/npc/028-1/mapflags.txt1
-rw-r--r--world/map/npc/028-1/portal.txt16
-rw-r--r--world/map/npc/028-3/_import.txt3
-rw-r--r--world/map/npc/028-3/_mobs.txt2
-rw-r--r--world/map/npc/028-3/_warps.txt2
-rw-r--r--world/map/npc/028-3/mapflags.txt1
-rw-r--r--world/map/npc/041-1/_import.txt1
-rw-r--r--world/map/npc/041-1/_mobs.txt14
-rw-r--r--world/map/npc/041-1/_warps.txt1
-rw-r--r--world/map/npc/041-1/tutorial.txt11
-rw-r--r--world/map/npc/042-1/_import.txt4
-rw-r--r--world/map/npc/042-1/_mobs.txt8
-rw-r--r--world/map/npc/042-1/_warps.txt8
-rw-r--r--world/map/npc/042-1/hasan.txt170
-rw-r--r--world/map/npc/042-1/kaan.txt24
-rw-r--r--world/map/npc/042-1/liana.txt (renamed from world/map/npc/042-1/npcs.txt)0
-rw-r--r--world/map/npc/042-1/tutorial.txt10
-rw-r--r--world/map/npc/042-1/valon.txt171
-rw-r--r--world/map/npc/042-1/zegas.txt106
-rw-r--r--world/map/npc/042-2/_import.txt5
-rw-r--r--world/map/npc/042-2/_mobs.txt6
-rw-r--r--world/map/npc/042-2/_warps.txt4
-rw-r--r--world/map/npc/042-2/barrels.txt48
-rw-r--r--world/map/npc/042-2/barrels_config.txt109
-rw-r--r--world/map/npc/042-2/magic_basement.txt21
-rw-r--r--world/map/npc/042-2/morgan.txt142
-rw-r--r--world/map/npc/042-2/sorfina.txt72
-rw-r--r--world/map/npc/042-2/stat_reset.txt42
-rw-r--r--world/map/npc/042-2/tanisha.txt85
-rw-r--r--world/map/npc/042-3/_import.txt5
-rw-r--r--world/map/npc/042-3/_mobs.txt9
-rw-r--r--world/map/npc/042-3/_warps.txt5
-rw-r--r--world/map/npc/068-1/tombstones.txt15
-rw-r--r--world/map/npc/_import.txt1
-rw-r--r--world/map/npc/annuals/fathertime.txt2
-rw-r--r--world/map/npc/annuals/xmas/debug.txt2
-rw-r--r--world/map/npc/botcheck/_import.txt1
-rw-r--r--world/map/npc/botcheck/mapflags.txt1
-rw-r--r--world/map/npc/functions/clear_vars.txt2
-rwxr-xr-xworld/map/npc/functions/debug.txt2
-rw-r--r--world/map/npc/functions/default_npc_checks.txt74
-rw-r--r--world/map/npc/functions/ferry.txt2
-rw-r--r--world/map/npc/functions/gm_island.txt64
-rw-r--r--world/map/npc/functions/mob_points.txt11
-rw-r--r--world/map/npc/functions/travelers.txt2
-rw-r--r--world/map/npc/items/check_wand.txt65
-rw-r--r--world/map/npc/items/unequipcb.txt2
-rw-r--r--world/map/npc/scripts.conf4
93 files changed, 2211 insertions, 3198 deletions
diff --git a/client-data b/client-data
-Subproject b47b38dd4d173db29cc7c21e09a985c5db528ae
+Subproject 6769eb6b34c6ba72e43b77882b73e7806f300fe
diff --git a/tools b/tools
-Subproject c6f51d80a42f0002fa71617c64952747f8fba28
+Subproject 8c8927900dcee15d4b3b507b863574b8f70c730
diff --git a/world/map/conf/magic-base.conf b/world/map/conf/magic-base.conf
deleted file mode 100644
index 5faf0f89..00000000
--- a/world/map/conf/magic-base.conf
+++ /dev/null
@@ -1,1472 +0,0 @@
-# Special-purpose globals
-obscure_chance = 95
-min_casttime = 200
-
-# Schools of magic
-CONST MAGIC = 340
-CONST LIFE = 341
-CONST WAR = 342
-CONST TRANSMUTE = 343
-CONST NATURE = 344
-CONST ASTRAL = 345
-CONST DARK = 346
-
-# Elements
-CONST ELT_NEUTRAL = 0
-CONST ELT_WATER = 1
-CONST ELT_EARTH = 2
-CONST ELT_FIRE = 3
-CONST ELT_WIND = 4
-CONST ELT_POISON = 5
-CONST ELT_SHADOW = 6
-CONST ELT_HOLY = 7
-CONST ELT_GHOST = 8
-CONST ELT_UNDEAD = 9
-
-# Status effects
-CONST SC_POISON = 132
-CONST SC_SHEARED = 194 # This is the same as SC_HIDE, since mobs can't hide and shearing is only used for mobs. Feel free to fix!
-CONST SC_HIDE = 194
-CONST SC_HALT_REGENERATE = 195
-CONST SC_FLYING_BACKPACK = 196
-CONST SC_MBARRIER = 197
-CONST SC_HASTE = 198
-CONST SC_PHYS_SHIELD = 199
-
-CONST SO_GMINVISIBLE = 4096
-
-# Special effects
-CONST SFX_DEFAULT = 10
-CONST SFX_SUMMON_START = 21
-CONST SFX_SUMMON_FIRE = 22
-CONST SFX_TELEPORT = 24
-CONST SFX_RAIN = 25
-CONST SFX_HIT = 25
-CONST SFX_ARROW_HAIL = 27
-CONST SFX_BARRIER = 10
-CONST SFX_UNBARRIER = 10
-CONST SFX_HEAL = 3
-CONST SFX_LIGHTNING = 18
-
-CONST MAX_RAIN_SPELL_RADIUS = 15
-
-CONST MAX_MAGIC_LEVEL = 2 # Increase up to 5 as each new magic level is completed.
-
-CONST MAGIC_FLAGS = "MAGIC_FLAGS"
-CONST MFLAG_MADE_CONC_POTION = 16384
-CONST MFLAG_MADE_CONC_POTION_SHIFT = 14
-
-CONST SCRIPT_XP = "MAGIC_EXPERIENCE"
-CONST SCRIPT_XP_MASK = 0xffff
-CONST SCRIPT_XP_SHIFT = 0
-CONST SCRIPT_LASTSPELL_MASK = 0xff
-CONST SCRIPT_LASTSPELL_SHIFT = 16
-CONST SCRIPT_HEALSPELL_MASK = 0xff
-CONST SCRIPT_HEALSPELL_SHIFT = 24
-CONST DEBUG = 0
-
-CONST ATTACK_ICON_GENERIC = 2000
-CONST ATTACK_ICON_SHEARING = 2001
-
-# Default sfx on caster
-PROCEDURE default_effect() =
- sfx(caster, school - MAGIC + 2, 0);
-
-PROCEDURE sfx_generic(target) =
- sfx(target, SFX_DEFAULT, 0);
-
-PROCEDURE sfx_lightning(target) =
- sfx(target, SFX_LIGHTNING, 0);
-
-PROCEDURE set_var(name, mask, shift, value) =
- set_script_variable(caster, name, script_int(caster, name) & (neg (mask << shift)) | ((value & mask) << shift));
-
-PROCEDURE gain_heal_xp(value, # How many HP we healed
- gain, # how many life magic experience points we can potentially gain
- heal_xp_value_divisor, # 1 for instaheal, 2 for slow heal
- base_exp_factor) = # factor for how many base experience points (max) the player should be allowed to gain
- last_heal_xp = (script_int(caster, SCRIPT_XP) >> SCRIPT_HEALSPELL_SHIFT) & SCRIPT_HEALSPELL_MASK;
- IF (target <> caster
- && (value / heal_xp_value_divisor) > (10 + last_heal_xp + random(last_heal_xp + 1) + random(last_heal_xp + 1)))
- THEN (
- heal_xp = last_heal_xp + gain;
- IF (heal_xp > SCRIPT_HEALSPELL_MASK)
- THEN heal_xp = SCRIPT_HEALSPELL_MASK;
- CALL set_var(SCRIPT_XP, SCRIPT_HEALSPELL_MASK, SCRIPT_HEALSPELL_SHIFT, heal_xp);
- )
- IF target <> caster
- THEN gain_experience(caster, base_exp_factor * extract_healer_experience(target, value), 0, 1);
-
-PROCEDURE gain_xp(gain, index) =
- IF (level + 3 > skill(caster, MAGIC)) # Level 4 and 5 magic users don't gain anything from spell levels 0 resp. 0+1
- THEN (
- last_index = (script_int(caster, SCRIPT_XP) >> SCRIPT_LASTSPELL_SHIFT) & SCRIPT_LASTSPELL_MASK;
- last_xp = (script_int(caster, SCRIPT_XP) >> SCRIPT_XP_SHIFT) & SCRIPT_XP_MASK;
- IF (index != last_index)
- THEN ( # Some variation observed
- xp = last_xp + gain;
- IF (xp > SCRIPT_XP_MASK)
- THEN xp = SCRIPT_XP_MASK;
- CALL set_var(SCRIPT_XP, SCRIPT_XP_MASK, SCRIPT_XP_SHIFT, xp);
- CALL set_var(SCRIPT_XP, SCRIPT_LASTSPELL_MASK, SCRIPT_LASTSPELL_SHIFT, index);
- IF DEBUG THEN message(caster, "Spell xp = " + xp);
- ) ELSE IF DEBUG THEN message(caster, "Re-cast same spell, xp remain at " + last_xp);
- )
-
-PROCEDURE create_item(good_item, count, bad_item, difficulty) =
- success = 1;
- score = experience + random(min(spellpower, (experience / 3) + 1));
- IF (score >= difficulty)
- THEN create_item(caster, good_item, count);
- ELSE (
- success = 0;
- score = score + random(luk(caster)) + random(luk(caster));
- IF (score < difficulty / 3)
- THEN (
- message(caster, "Your spell backfires!");
- IF (random(110) < (luk(caster)))
- THEN itemheal(caster, 0 - ((level + 1) * (level + 2) * (3 + random(28))), 0);
- ELSE itemheal(caster, 0 - (level + 1), 0);
- ) ELSE IF (score < (difficulty * 2) / 3)
- THEN (
- IF random(5) = 0
- THEN (message(caster, "Your spell solidifies into the shape of a mysterious object!");
- create_item(caster, "Iten", 1);)
- ELSE message(caster, "Your spell escapes!");
- ) ELSE (
- message(caster, "Your spell takes on a mind of its own!");
- IF random(3) = 0
- THEN create_item(caster, bad_item, 1);
- )
- )
-
-# Increase spellpower by school and general magic skill
-PROCEDURE adjust_spellpower(school) =
- experience = (script_int(caster, SCRIPT_XP) >> SCRIPT_XP_SHIFT) & SCRIPT_XP_MASK;
- spellpower = spellpower + (skill(caster, MAGIC) + skill(caster, school)) * 10;
- # Below, we adjust by special items
- IF (not(failed(target)) && (school = LIFE || school = NATURE))
- THEN IF (target)
- THEN IF (pc(target) = partner(caster))
- THEN (spellpower = spellpower + 200;
- IF is_equipped(caster, "WeddingRing")
- THEN spellpower = spellpower + 50;
- IF is_equipped(pc(target), "WeddingRing")
- THEN spellpower = spellpower + 50;)
-
-PROCEDURE heal(target, max_heal) =
- CALL default_effect();
- IF caster <> target
- THEN sfx(target, SFX_HEAL, 0);
- power = spellpower + vit(caster);
- power = min(max_heal, (max_heal * power) / 250);
- itemheal(target, power, 0);
-
-# Goes through instaheal instead of itemheal
-PROCEDURE quickheal(target, power) =
- CALL default_effect();
- IF caster <> target
- THEN sfx(target, SFX_HEAL, 0);
- instaheal(target, power, 0);
-
-# Can attack the target? Imports attack_range from dynamic environment
-PROCEDURE attack_check(target) =
- IF (not (line_of_sight(location(caster), location(target))))
- THEN ABORT;
- IF (not (rdistance(location(caster), location(target)) <= attack_range))
- THEN ABORT;
-
-# Cause elemental damage. bonus_elt grants an attack bonus, malus_elt reduces the attack. `effect' is the sfx ID.
-PROCEDURE elt_damage(target, damage, dmgplus, bonus_elt, malus_elt, effect) =
- d = damage + random(dmgplus);
- IF (element(target) = malus_elt)
- THEN d = d / 3;
- IF (element(target) = bonus_elt)
- THEN d = (d * (4 + element_level(target))) / 4;
- #message(caster, "bonus=" + (element(target) = bonus_elt) + " malus=" + (element(target) = malus_elt) + " damage=" + damage + " + r(" + dmgplus + ") -> " + d);
- sfx(target, effect, 0);
- injure(caster, target, d, 0);
-
-PROCEDURE melee_damage(target, damage, dmgplus) =
- CALL attack_check(target);
- d = damage + random(dmgplus);
- evade = level(target) + mdef(target);
- IF (spellpower - random(100) < evade)
- THEN d = 0;
- injure(caster, target, d, 0);
-
-
-PROCEDURE install_attack_spell(charges, base_delay, range, attack_animation) =
- CALL default_effect();
- attack_range = range;
- override_attack(caster, charges, ((200 - agi(caster)) * base_delay) / 200,
- range, ATTACK_ICON_GENERIC, attack_animation, 0);
-
-PROCEDURE install_melee_spell(charges, base_delay, attack_animation) =
- CALL install_attack_spell(charges, base_delay, 1, attack_animation);
-
-PROCEDURE summon_spell(mob_id, count, delay, lifetime, control_level) =
- CALL default_effect();
- sfx(location, SFX_SUMMON_START, 0);
- WAIT delay;
- sfx(location, SFX_SUMMON_FIRE, 0);
- spawn(rbox(location, 2), caster, mob_id,
- if_then_else(skill(caster, ASTRAL) >= control_level, 2, 1), # pets when level is high enough
- count, lifetime);
-
-PROCEDURE summon_dark_spell(mob_id, count, delay, lifetime, control_level) =
- CALL default_effect();
- sfx(location, SFX_SUMMON_START, 0);
- WAIT delay;
- sfx(location, SFX_SUMMON_FIRE, 0);
- spawn(rbox(location, 2), caster, mob_id,
- if_then_else(skill(caster, DARK) >= control_level, 2, 1), # pets when level is high enough
- count, lifetime);
-
-PROCEDURE abort_on_area_shield(pos) =
- IF (is_exterior(pos) = 1 && (map_nr(pos) = 1 # Tulimshar
- ||map_nr(pos) = 9 # Hurnscald
- ||map_nr(pos) = 20)) # Nivalis
- THEN (message(caster, "A powerful magic drains your spell just as it is beginning to take shape!");
- ABORT;)
-
-
-#--------------------------------------------------------------------------------
-# Level 0 spells
-#--------------------------------------------------------------------------------
-
-SPELL ask-magic-exp : "#abizit" =
- LET level = 0
- school = MAGIC
- IN (MANA 1, CASTTIME 1000,
- REQUIRE skill(caster, MAGIC) > level)
- => EFFECT CALL adjust_spellpower(school);
- CALL default_effect();
- level = skill (caster, MAGIC);
- experience = (script_int(caster, SCRIPT_XP) >> SCRIPT_XP_SHIFT) & SCRIPT_XP_MASK;
- IF (experience == SCRIPT_XP_MASK && level > 4)
- THEN message (caster, "You are as proficient at magic as you can possibly be.");
- ELSE (
- # This duplicates the table in mana-seed.txt
- IF level > 4
- THEN max_experience = SCRIPT_XP_MASK;
- ELSE IF level = 4
- THEN max_experience = 40000;
- ELSE IF level = 3
- THEN max_experience = 8000;
- ELSE IF level = 2
- THEN max_experience = 1200;
- ELSE max_experience = 100;
-
- ratio = (10 * experience - random(max_experience / 30)) / max_experience; #Randomness: jitter a bit at the transitions to give more precise information if used frequently
-
- IF ratio >= 45
- THEN message(caster, "Magic flows naturally from you, readily and with ease. Your understanding of what you can currently control at present is flawless, far beyond your requirements to cast magic at this level." + if_then_else(level >= MAX_MAGIC_LEVEL,""," Surely the Mana Seed will more than readily offer more magic for such a proficient user."));
- ELSE IF ratio >= 20
- THEN message(caster, "You have perfect control of what you understand now, but there is now a distinct sensation of something more, something indescribable. If only the Mana Seed would give more magic to you...");
- ELSE IF ratio >= 10
- THEN message(caster, "You feel in perfect control of your magic" + if_then_else(level >= MAX_MAGIC_LEVEL,".",", and seem on the verge of something more... perhaps you should see the Mana Seed to ask for more magic?"));
- ELSE IF ratio >= 9
- THEN message(caster, "You feel in almost perfect control of your magic.");
- ELSE IF ratio >= 8
- THEN message(caster, "You feel that you have very good control of your magic.");
- ELSE IF ratio >= 7
- THEN message(caster, "You feel quite in control of your magic.");
- ELSE IF ratio >= 6
- THEN message(caster, "You feel mostly in control of your magic.");
- ELSE IF ratio >= 5
- THEN message(caster, "You feel somewhat in control of your magic.");
- ELSE IF ratio >= 4
- THEN message(caster, "You feel you still have a few difficulties in controlling your magic.");
- ELSE IF ratio >= 3
- THEN message(caster, "Trying to control your magic is still rather troublesome.");
- ELSE IF ratio >= 2
- THEN message(caster, "You feel that you have only the bare minimum of control over your magic.");
- ELSE IF ratio >= 1
- THEN message(caster, "You feel quite overwhelmed by your magic, but are beginning to see patterns.");
- ELSE message (caster, "You feel completely overwhelmed by your magic.");
- )
-
-SPELL transmute-wood-to-figurine (name : STRING) : "#parum" =
- LET level = 0
- school = TRANSMUTE
- IN (MANA 5, CASTTIME 4000,
- REQUIRE skill(caster, MAGIC) > level,
- COMPONENTS ["RawLog"])
- => ( REQUIRE name = "boo" =>
- EFFECT CALL adjust_spellpower(school);
- CALL default_effect();
- CALL create_item("MoubooFigurine", 1, "WarpedLog", 40);
- CALL gain_xp(1, 0);
- | REQUIRE name = "lurk" =>
- EFFECT CALL adjust_spellpower(school);
- CALL default_effect();
- CALL create_item("WarpedLog", 1, "WarpedLog", 40);
- message (caster, "You have no idea what a Skrytlurk looks like.");
- )
-
-
-SPELL make-sulphur : "#gole" =
- LET level = 0
- school = TRANSMUTE
- IN (MANA 4, CASTTIME 4000,
- REQUIRE skill(caster, MAGIC) > level,
- COMPONENTS ["PileOfAsh"])
- => EFFECT CALL adjust_spellpower(school);
- CALL default_effect();
- CALL create_item("SulphurPowder", 1 + spellpower / 100 + (random(max(1, 800 - spellpower)) / 180), "PileOfAsh", 50);
- CALL gain_xp(1, 1);
-
-SPELL lesser-heal (target : STRING) : "#lum" =
- LET level = 0
- school = LIFE
- IN (MANA 6, CASTTIME 500,
- REQUIRE skill(caster, MAGIC) > level,
- REQUIRE if_then_else(failed(pc(target)), 1,
- rdistance(location(caster), location(pc(target))) < 2 + (spellpower / 100)),
- (COMPONENTS ["Lifestone"]))
- => EFFECT CALL adjust_spellpower(school);
- CALL default_effect();
- IF failed(pc(target))
- THEN (IF ((target = "mouboo" || target = "Mouboo")
- && rdistance(location(caster), location(npc("Mouboo"))) < 2 + (spellpower / 100))
- THEN { mes "Your spell seems to have no effect on the mouboo."; close; }
- ELSE target = caster;)
- ELSE (target = pc(target);
- IF is_dead(target)
- THEN ABORT;)
- CALL gain_heal_xp(min(200, max_hp(target) - hp(target)), 1, 2, 2); # report half values for non-instaheal
- CALL heal(target, 200);
- IF skill(caster, DARK) > 1
- THEN status_change(caster, SC_HALT_REGENERATE, 0, 0, 0, 0, 2000);
- CALL gain_xp(1, 2);
-
-
-SPELL flare-dart : "#flar" =
- LET level = 0
- school = WAR
- IN (MANA 10, CASTTIME 500,
- REQUIRE skill(caster, MAGIC) > level,
- (REQUIRE skill(caster, school) > 2 OR COMPONENTS ["SulphurPowder"]))
- => EFFECT CALL adjust_spellpower(school);
- CALL default_effect();
- damage = 5 * sqrt(spellpower);
- damage_bonus = 5 + level(caster) / 3;
- CALL install_attack_spell(3 + spellpower / 50,
- 1200,
- 4, 31);
- CALL gain_xp(1, 3);
- ATTRIGGER CALL attack_check(target);
- CALL elt_damage (target, damage, damage_bonus, ELT_WATER, ELT_FIRE, 15);
-
-
-SPELL magic-blade : "#chiza" =
- LET level = 0
- school = WAR
- IN (MANA 9, CASTTIME 500,
- REQUIRE skill(caster, MAGIC) > level)
- => ( COMPONENTS ["SharpKnife"] =>
- EFFECT CALL adjust_spellpower(WAR);
- CALL default_effect();
- CALL install_melee_spell(10 + spellpower / 15, 1200, 30);
- CALL gain_xp(1, 4);
- ATTRIGGER CALL melee_damage(target, 60, 5 + str(caster));
- | COMPONENTS ["Knife"] =>
- EFFECT CALL adjust_spellpower(WAR);
- CALL default_effect();
- CALL install_melee_spell(10 + spellpower / 15, 1200, 30);
- CALL gain_xp(1, 5);
- ATTRIGGER CALL melee_damage(target, 40, 5 + str(caster));
- )
-
-SPELL aggravate : "#itenplz" =
- LET level = 0
- school = NATURE
- IN (MANA 3, CASTTIME 1000,
- REQUIRE skill(caster, MAGIC) > level)
- => EFFECT CALL adjust_spellpower(school);
- CALL default_effect();
- FOREACH MOB target IN rbox(location(caster), 2 + spellpower / 50) DO
- IF line_of_sight(location(caster), location(target))
- THEN (CALL sfx_generic(target);
- aggravate(target, 0, caster);)
-
-SPELL grow-mauve : "#modrilax" =
- LET level = 0
- school = NATURE
- IN (MANA 4, CASTTIME 2000,
- REQUIRE skill(caster, MAGIC) > level,
- COMPONENTS ["MauveHerb", "Root"])
- => EFFECT CALL adjust_spellpower(school);
- CALL default_effect();
- CALL gain_xp(1, 6);
- spawn(rbox(location, 2), caster, 1029, 1, skill(caster, school) / 2 + 1, 10000);
-
-SPELL grow-alizarin : "#modriphoo" =
- LET level = 0
- school = NATURE
- IN (MANA 4, CASTTIME 2000,
- REQUIRE skill(caster, MAGIC) > level,
- COMPONENTS ["AlizarinHerb", "Root"])
- => EFFECT CALL adjust_spellpower(school);
- CALL default_effect();
- CALL gain_xp(1, 7);
- spawn(rbox(location, 2), caster, 1032, 1, skill(caster, school) / 2 + 1, 10000);
-
-SPELL grow-gamboge : "#modriyikam" =
- LET level = 0
- school = NATURE
- IN (MANA 4, CASTTIME 2000,
- REQUIRE skill(caster, MAGIC) > level,
- COMPONENTS ["GambogeHerb", "Root"])
- => EFFECT CALL adjust_spellpower(school);
- CALL default_effect();
- CALL gain_xp(1, 8);
- spawn(rbox(location, 2), caster, 1031, 1, skill(caster, school) / 2 + 1, 10000);
-
-SPELL grow-cobalt : "#modrisump" =
- LET level = 0
- school = NATURE
- IN (MANA 4, CASTTIME 2000,
- REQUIRE skill(caster, MAGIC) > level,
- COMPONENTS ["CobaltHerb", "Root"])
- => EFFECT CALL adjust_spellpower(school);
- CALL default_effect();
- CALL gain_xp(1, 9);
- spawn(rbox(location, 2), caster, 1030, 1, skill(caster, school) / 2 + 1, 10000);
-
-
-LOCAL SPELL summon-maggots : "#kalmurk" =
- LET level = 0
- school = ASTRAL
- IN (MANA 21, CASTTIME 20000,
- REQUIRE skill(caster, MAGIC) > level,
- COMPONENTS ["MaggotSlime", "Root"])
- => EFFECT CALL adjust_spellpower(school);
- CALL gain_xp(1, 10);
- CALL summon_spell(1002,
- 1 + ((sqrt(spellpower) + (spellpower / 15)) / 5),
- 5000 - (spellpower * 5),
- 10000 + (spellpower * 50), 1);
-
-SPELL detect-magic : "#miteyo" =
- LET level = 0
- school = MAGIC
- IN (MANA 3, CASTTIME 6000,
- REQUIRE skill(caster, MAGIC) > level)
- => EFFECT CALL adjust_spellpower(school);
- CALL default_effect();
- range = 1 + spellpower / 50;
- FOREACH NPC n IN rbox(location(caster), range)
- DO IF (contains_string(name_of(n), "#MAGIC") || contains_string(name_of(n), "#_M"))
- THEN sfx(n, SFX_DEFAULT, 0);
- FOREACH SPELL s IN rbox(location(caster), range)
- DO IF (s <> self_invocation)
- THEN sfx(s, SFX_DEFAULT, 0);
-
-
-#--------------------------------------------------------------------------------
-# Level 1 spells
-#--------------------------------------------------------------------------------
-
-SPELL make-arrows : "#kularzufrill" =
- LET level = 1
- school = TRANSMUTE
- IN (MANA 8, CASTTIME 5000,
- REQUIRE skill(caster, MAGIC) > level,
- REQUIRE skill(caster, school) > level,
- COMPONENTS ["RawLog"])
- => EFFECT CALL adjust_spellpower(school);
- CALL default_effect();
- CALL create_item("Arrow", 1 + spellpower / 40 + (random(max(1, 800 - spellpower)) / 80), "WarpedLog", 500);
- CALL gain_xp(1, 11);
-
-SPELL make-shirt : "#patmuploo" =
- LET level = 1
- school = TRANSMUTE
- IN (MANA 25, CASTTIME 5000,
- REQUIRE skill(caster, MAGIC) > level,
- REQUIRE skill(caster, school) > level,
- COMPONENTS [5 * "CottonCloth"])
- => EFFECT CALL adjust_spellpower(school);
- CALL default_effect();
- CALL create_item("CottonShirt", 1, "CottonCloth", 425);
- CALL gain_xp(2, 12);
-
-SPELL make-tanktop : "#patloree" =
- LET level = 1
- school = TRANSMUTE
- IN (MANA 25, CASTTIME 5000,
- REQUIRE skill(caster, MAGIC) > level,
- REQUIRE skill(caster, school) > level,
- COMPONENTS [4 * "CottonCloth"])
- => EFFECT CALL adjust_spellpower(school);
- CALL default_effect();
- CALL create_item("TankTop", 1, "CottonCloth", 350);
- CALL gain_xp(2, 13);
-
-SPELL make-short-tanktop : "#patviloree" =
- LET level = 1
- school = TRANSMUTE
- IN (MANA 25, CASTTIME 5000,
- REQUIRE skill(caster, MAGIC) > level,
- REQUIRE skill(caster, school) > level,
- COMPONENTS [3 * "CottonCloth"])
- => EFFECT CALL adjust_spellpower(school);
- CALL default_effect();
- CALL create_item("ShortTankTop", 1, "CottonCloth", 250);
- CALL gain_xp(2, 14);
-
-SPELL make-iron-powder : "#zukminbirf" =
- LET level = 1
- school = TRANSMUTE
- IN (MANA 8, CASTTIME 5000,
- REQUIRE skill(caster, MAGIC) > level,
- REQUIRE skill(caster, school) > level,
- COMPONENTS ["IronOre"])
- => EFFECT CALL adjust_spellpower(school);
- CALL default_effect();
- CALL create_item("IronPowder", 1 + spellpower / 140 + (random(max(1, 900 - spellpower)) / 220), "IronOre", 700);
- CALL gain_xp(3, 15);
-
-SPELL make-concentration-potion : "#loshira" =
- LET level = 1
- school = TRANSMUTE
- IN (MANA 8, CASTTIME 5000,
- REQUIRE skill(caster, MAGIC) > level,
- REQUIRE skill(caster, school) > level,
- COMPONENTS ["BottleOfWater", 2 * "CobaltHerb", 2 * "PinkPetal"])
- => EFFECT CALL adjust_spellpower(school);
- CALL default_effect();
- CALL create_item( if_then_else(random(2000 + experience) < experience, "ConcentrationPotion", "DarkConcentrationPotion"), 1,
- if_then_else(random(2), "DilutedConcentrationPot", "DarkConcentrationPotion"),
- 2000);
- IF (success)
- THEN CALL set_var(MAGIC_FLAGS, 1, MFLAG_MADE_CONC_POTION_SHIFT, 1);
- CALL gain_xp(4, 16);
-
-SPELL merge-concentration-potions : "#skrimp" =
- LET level = 1
- school = TRANSMUTE
- IN (MANA 8, CASTTIME 5000,
- REQUIRE skill(caster, MAGIC) > level,
- REQUIRE skill(caster, school) > level,
- COMPONENTS ["DarkConcentrationPotion", "DilutedConcentrationPot"])
- => EFFECT CALL adjust_spellpower(school);
- CALL default_effect();
- CALL create_item("ConcentrationPotion", 1, "DilutedConcentrationPot", 1000);
- message (caster, "success = " + success);
- IF (success)
- THEN CALL set_var(MAGIC_FLAGS, 1, MFLAG_MADE_CONC_POTION_SHIFT, 1);
- CALL gain_xp(4, 17);
-
-
-SPELL lay-on-hands (target : STRING) : "#inma" =
- LET level = 1
- school = LIFE
- IN (MANA 10, CASTTIME 500,
- REQUIRE hp(caster) > max_hp(caster) / 20,
- REQUIRE skill(caster, MAGIC) > level,
- REQUIRE skill(caster, school) > level,
- REQUIRE if_then_else(failed(pc(target)),
- 1,
- (pc(target) <> caster)
- && (rdistance(location(caster), location(pc(target)))
- < 2 + (12 * sqrt(spellpower) + spellpower) / 100)
- && not (running_status_update(pc(target), SC_HALT_REGENERATE))
- && not (is_equipped(pc(target), "MagicGMTopHat"))
- ))
- => EFFECT CALL adjust_spellpower(school);
- IF (not (target)) THEN ABORT;
- IF failed(pc(target))
- THEN (IF ((target = "mouboo" || target = "Mouboo")
- && (rdistance(location(caster), location(npc("Mouboo"))) < 2 + (spellpower / 100)))
- THEN (needed = 1000;
- {
- set @spell, 1;
- callfunc "QuestMoubooHeal";
- })
- ELSE ABORT;
- )
- ELSE (target = pc(target);
- needed = max_hp(target) - hp(target);)
-
- pay_fraction = max(80, 200 - (vit(caster) + (spellpower / 10))); # Pay at least 40%
- payment = (needed * pay_fraction) / 200;
- available = hp(caster) - (max_hp(caster) / 20);
-
- IF payment < available
- THEN power = needed;
- ELSE (payment = available;
- power = (available * 200) / pay_fraction;
- )
- CALL gain_heal_xp(power, 1, 1, 3);
- CALL quickheal(target, power);
- t = 5000; # with dark magic skill you pay 1/20 of max hp but the regenerate cooldown is cut in half
- school = DARK;
- h = (max_hp(caster) / 20) * -1;
- IF skill(caster, school) > level
- THEN itemheal(caster, h, 0);
- IF skill(caster, school) > level
- THEN t = 10000;
- status_change(caster, SC_HALT_REGENERATE, 0, 0, 0, 0, t);
- CALL gain_xp(min(4, payment / 100), 18);
-
-SPELL lightning-strike : "#ingrav" =
- LET level = 1
- school = WAR
- IN (MANA 20, CASTTIME 1000,
- REQUIRE skill(caster, MAGIC) > level,
- REQUIRE skill(caster, school) > level,
- (REQUIRE skill(caster, school) > 3 OR COMPONENTS ["IronPowder"]))
- => EFFECT CALL adjust_spellpower(school);
- damage = spellpower;
- damage_bonus = 1 + spellpower / 2;
- CALL install_attack_spell(1 + spellpower / 90,
- 3000,
- 8, 31);
- CALL gain_xp(2, 19);
- ATTRIGGER CALL attack_check(target);
- in_rain = 0;
- area = location(caster);
- FOREACH SPELL s IN rbox(location(caster), MAX_RAIN_SPELL_RADIUS + 1) DO
- IF name_of(s) = "rain" THEN (
- IF is_in (location(caster), s.area)
- THEN (in_rain = in_rain | 1;
- area = area + s.area;);
- IF is_in (location(target), s.area)
- THEN in_rain = in_rain | 2;
- );
- IF in_rain & 1
- THEN (# caster standing in the rain? This is going to be fun.
- used = 0;
- FOREACH TARGET t IN area DO
- IF (random(200) + luk(caster) > 175)
- THEN (used = used + 1;
- CALL elt_damage (t, damage / 6, 1 + (damage_bonus / 3), ELT_EARTH, ELT_WIND, 17 + random(3)););
- IF (not(used) || (random(200) + luk(caster) < 150))
- THEN (sfx(caster, 17 + random(3), 0);
- itemheal(caster, 0 - damage - (random(damage_bonus)), 0););
- ) ELSE
- CALL elt_damage (target, damage, damage_bonus, ELT_EARTH, ELT_WIND, 17 + random(3));
-
-LOCAL SPELL arrow-hail : "#frillyar" =
- LET level = 1
- school = WAR
- IN (MANA 25, CASTTIME 5000,
- REQUIRE skill(caster, MAGIC) > level,
- REQUIRE skill(caster, school) > level,
- REQUIRE is_exterior(location(caster)),
- (COMPONENTS [20 * "Arrow"] OR COMPONENTS [20 * "IronArrow"]),
- (REQUIRE skill(caster, school) > 3 OR COMPONENTS ["SulphurPowder"]))
- => EFFECT CALL adjust_spellpower(school);
- CALL default_effect();
- CALL abort_on_area_shield(location(caster));
-
- range = 7;
- area = rbox(awayfrom(location(caster), dir(caster), 1 + range), range);
-
- FOREACH SPELL s IN rbox(awayfrom(location(caster), dir(caster), 1 + range), range * 2) DO
- IF (s <> self_invocation) && (name_of(s) = "arrow-hail")
- THEN (message (caster, "A nearby arrow hail spell absorbs your magic!");
- ABORT;)
-
- damage = 125;
- damage_bonus = spellpower / 5;
- CALL gain_xp(2, 20);
- FOR i = 0 TO spellpower / 8 DO (
- FOR j = 0 TO 2 DO (
- location = random_location(area);
- sfx(location, SFX_ARROW_HAIL, 0);
- done = 0;
- FOREACH TARGET target IN rbox(location, 0) DO (
- injure(caster, target, damage + random(damage_bonus) + random(damage_bonus), 0);
- done = 1;
- BREAK;
- )
- IF location(caster) = location && not(done)
- THEN (itemheal(caster, 0 - (damage + random(damage_bonus) + random(damage_bonus)), 0);
- sfx(caster, SFX_HIT, 0);
- )
- );
- WAIT 250 + random(50) + random(50);
- );
-
-SPELL magic-knuckles : "#upmarmu" =
- LET level = 1
- school = WAR
- IN (MANA 20, CASTTIME 500,
- REQUIRE skill(caster, MAGIC) > level,
- REQUIRE skill(caster, school) > level,
- (REQUIRE skill(caster, school) > 3 OR COMPONENTS ["Beer"]))
- =>
- EFFECT CALL adjust_spellpower(WAR);
- str = str(caster);
- CALL install_melee_spell(10 + spellpower / 10, 1300, 34);
- ATTRIGGER CALL melee_damage(target, 30, 5 + (str * 2));
-
-LOCAL SPELL summon-snakes : "#halhiss" =
- LET level = 1
- school = DARK
- IN (MANA 40, CASTTIME 15000,
- REQUIRE skill(caster, MAGIC) > level,
- REQUIRE skill(caster, school) > level,
- REQUIRE (script_int(caster, "OrumQuest") > 40),
- COMPONENTS ["DarkCrystal", "SnakeEgg"])
- => EFFECT CALL adjust_spellpower(school);
- CALL default_effect();
- CALL gain_xp(3, 31);
- CALL summon_dark_spell(1010, 1 + spellpower / 300, 4000 - (spellpower * 9), spellpower * 80, 2);
-
-SPELL toxic-dart : "#phlex" =
- LET level = 1
- school = DARK
- IN (MANA 15, CASTTIME 500,
- REQUIRE (script_int(caster, "OrumQuest") > 37),
- REQUIRE skill(caster, MAGIC) > level,
- (REQUIRE skill(caster, school) > 2 OR COMPONENTS [2 * "Root"]))
- => EFFECT CALL adjust_spellpower(school);
- CALL default_effect();
- damage = 5 * sqrt(spellpower);
- damage_bonus = 5 + level(caster) / 3;
- CALL install_attack_spell(3 + spellpower / 75,
- 1200,
- 4, 31);
- CALL gain_xp(3, 35);
- ATTRIGGER CALL attack_check(target);
- CALL elt_damage (target, damage, damage_bonus, ELT_NEUTRAL, ELT_POISON, 15);
- IF (is_pc(target) && caster <> target)
- THEN status_change(target, SC_POISON, 5 + max(15, spellpower / 15), 0, 0, 0, 5000 + (spellpower * 1200));
-
-LOCAL SPELL summon-wickedmushroom : "#helorp" =
- LET level = 1
- school = DARK
- IN (MANA 35, CASTTIME 15000,
- REQUIRE skill(caster, MAGIC) > level,
- REQUIRE (script_int(caster, "OrumQuest") > 36),
- REQUIRE skill(caster, school) > level,
- COMPONENTS ["SmallMushroom", "DarkCrystal"])
- => EFFECT CALL adjust_spellpower(school);
- CALL default_effect();
- CALL gain_xp(3, 36);
- CALL summon_dark_spell(1106, 1 + spellpower / 250 , 4000 - (spellpower * 9), spellpower * 80, 2);
-
-SPELL flying-backpack (target : PC) : "#plugh" =
- LET level = 1
- school = NATURE
- IN (MANA 12, CASTTIME 1000,
- REQUIRE skill(caster, MAGIC) > level,
- REQUIRE skill(caster, school) > level,
- (REQUIRE skill(caster, school) > 3 OR COMPONENTS ["SilkCocoon"]),
- REQUIRE rdistance(location(target), location(caster)) < 2 + spellpower / 30)
- => EFFECT CALL adjust_spellpower(school);
- CALL default_effect();
- IF (caster <> target)
- THEN sfx(caster, 2, 0);
- status_change(target, SC_FLYING_BACKPACK, 0, 0, 0, 0, 5000 + (spellpower * 500));
- message (target, "Your backpack is lifted by a mystical force; you no longer feel it pressing on your back.");
- CALL gain_xp(1, 21);
- ATEND message (target, "Your backpack is no longer levitating.");
- sfx(target, 2, 0);
-
-SPELL protect (target : PC) : "#betsanc" =
- LET level = 1
- school = NATURE
- IN (MANA 14, CASTTIME 1500,
- REQUIRE skill(caster, MAGIC) > level,
- REQUIRE skill(caster, school) > level,
- REQUIRE not(is_equipped(pc(target), "MagicGMTopHat")),
- (REQUIRE skill(caster, school) > 3 OR COMPONENTS ["HardSpike"]),
- REQUIRE rdistance(location(target), location(caster)) < 2 + spellpower / 30)
- => EFFECT CALL adjust_spellpower(school);
- sfx(target, 11, 0);
- IF (caster <> target)
- THEN CALL default_effect();
- status_change(target, SC_PHYS_SHIELD, 5 + max(15, spellpower / 20), 0, 0, 0, 5000 + (spellpower * 1000));
- message (target, "You feel more protected.");
- CALL gain_xp(2, 22);
- ATEND message (target, "You feel less protected.");
- sfx(target, 111, 0);
-
-SPELL happy-curse (target : PC) : "#joyplim" =
- LET level = 1
- school = NATURE
- IN (MANA 13, CASTTIME 1000,
- REQUIRE skill(caster, MAGIC) > level,
- REQUIRE skill(caster, school) > level,
- (REQUIRE skill(caster, school) > 3 OR COMPONENTS ["GingerBreadMan"]),
- REQUIRE rdistance(location(target), location(caster)) < 1 + spellpower / 100)
- => EFFECT CALL adjust_spellpower(school);
- CALL default_effect();
- IF (skill(caster, DARK) > 1)
- THEN FOR i = 0 TO (spellpower / 10) DO (emote(target, 5); WAIT 500;)
- ELSE FOR i = 0 TO (spellpower / 10) DO (emote(target, 3); WAIT 500;);
- CALL gain_xp(1, 23);
-
-LOCAL SPELL rain : "#kaflosh" =
- LET level = 1
- school = NATURE
- IN (MANA 17, CASTTIME 3000,
- REQUIRE skill(caster, MAGIC) > level,
- REQUIRE skill(caster, school) > level,
- REQUIRE is_exterior(location(caster)),
- (REQUIRE skill(caster, school) > 3 OR COMPONENTS ["BottleOfWater"]))
- => EFFECT CALL adjust_spellpower(school);
- CALL default_effect();
- CALL abort_on_area_shield(location(caster));
- FOREACH SPELL s IN rbox(location(caster), MAX_RAIN_SPELL_RADIUS + 1) DO
- IF (s <> self_invocation) && (name_of(s) = "rain")
- THEN (message (caster, "A nearby raincloud absorbs your magic.");
- ABORT;)
-
- CALL gain_xp(1, 24);
- range = min(MAX_RAIN_SPELL_RADIUS, 3 + min(spellpower, 200) / 30);
- area = rbox(location(caster), range);
- IF (is_in(location(npc("#DruidTree0#_M")), area)
- || is_in(location(npc("#DruidTree1#_M")), area))
- THEN {
- set @flag, 1;
- callfunc "QuestTreeTrigger";
- };
- // Halloween quest
- IF ( is_in(location(caster), @("011-1.gat", 94, 38) @+ (9, 7)) )
- THEN {
- callfunc "HalloweenQuestWaterPumpkins";
- };
- FOR i = 0 TO (spellpower / 3) DO (
- FOR j = 0 TO min(spellpower / 2, 200) / 100 DO (
- location = random_location(area);
- sfx(location, SFX_RAIN, 0);
- FOREACH TARGET target IN rbox(location, 1) DO
- IF element(target) = ELT_FIRE
- THEN injure(caster, target, 2 + random(5 + spellpower / 15), 0);
- )
- WAIT 400 + random(100);
- );
-
-PROCEDURE shear-drop(target, target2, item, prob) =
- IF (target = name || target2 = name)
- THEN (IF (score < prob)
- THEN drop_item_for(place, item, 1, 60000, caster, 5000);)
-
-PROCEDURE shear-drop2(target, target2, item, prob, item2, prob2) =
- IF (target = name || target2 = name)
- THEN (IF (score < prob)
- THEN drop_item_for(place, item, 1, 60000, caster, 5000);
- ELSE CALL shear-drop(target, target2, item2, prob2 + prob);)
-
-PROCEDURE shear-drop3(target, target2, item, prob, item2, prob2, item3, prob3) =
- IF (target = name || target2 = name)
- THEN (IF (score < prob)
- THEN drop_item_for(place, item, 1, 60000, caster, 5000);
- ELSE CALL shear-drop2(target, target2, item2, prob2 + prob, item3, prob3 + prob);)
-
-
-SPELL shear : "#chipchip" =
- LET level = 1
- school = NATURE
- IN (MANA 23, CASTTIME 1000,
- REQUIRE skill(caster, MAGIC) > level,
- REQUIRE skill(caster, school) > level)
- => EFFECT CALL adjust_spellpower(school);
- CALL default_effect();
- override_attack (caster, 1, 2000, 1, ATTACK_ICON_SHEARING, 30, 0);
- ATTRIGGER IF not(is_pc(target))
- THEN (score = random (1000 - (random (spellpower))); # lower score -> more valuable item
- name = name_of(target);
- place = random_location(rbox(location(target), 1));
- IF running_status_update(target, SC_SHEARED)
- THEN ABORT;
- status_change(target, SC_SHEARED, 0, 0, 0, 0, 600000); # 10 minutes
- CALL shear-drop("Fluffy", "Fluffy", "WhiteFur", 300);
- CALL shear-drop("EasterFluffy", "Easter Fluffy", "WhiteFur", 300);
- CALL shear-drop("SpikyMushroom", "Spiky Mushroom", "HardSpike", 250);
- CALL shear-drop("Mouboo", "Mouboo", "CottonCloth", 175);
- CALL shear-drop("Cobalt", "CobaltPlant", "CobaltHerb", 700);
- CALL shear-drop("Alizarin", "AlizarinPlant", "AlizarinHerb", 700);
- CALL shear-drop("Gamboge", "GambogePlant", "GambogeHerb", 700);
- CALL shear-drop("Mauve", "MauvePlant", "MauveHerb", 700);
- CALL shear-drop("SilkWorm", "Silkworm", "SilkCocoon", 300);
- CALL shear-drop("Pinkie", "Pinkie", "PinkAntenna", 180);
- IF ((name = "Fluffy" || name = "Mouboo" || name = "Pinkie") && random(2))
- THEN { set @value, 1; callfunc "QuestSagathaHappy"; };
- )
-
-
-
-SPELL barrier (target : PC) : "#asorm" =
- LET level = 1
- school = ASTRAL
- IN (MANA 16, CASTTIME 1000,
- REQUIRE skill(caster, MAGIC) > level,
- REQUIRE skill(caster, school) > level,
- REQUIRE not(is_equipped(pc(target), "MagicGMTopHat")),
- (REQUIRE skill(caster, school) > 3 OR COMPONENTS ["SmallMushroom"]),
- REQUIRE rdistance(location(target), location(caster)) < 2 + spellpower / 30)
- => EFFECT CALL adjust_spellpower(school);
- sfx(target, SFX_BARRIER, 0);
- IF (caster <> target)
- THEN CALL default_effect();
- status_change(target, SC_MBARRIER, 20 + max(30, spellpower / 8), 0, 0, 0, 2000 + (spellpower * 200));
- message (target, "You are surrounded by a magical barrier.");
- CALL gain_xp(3, 25);
- ATEND message (target, "Your magical barrier dissipates.");
- sfx(target, SFX_UNBARRIER, 0);
-
-
-LOCAL SPELL summon-spiky-mushrooms : "#kalrenk" =
- LET level = 1
- school = ASTRAL
- IN (MANA 33, CASTTIME 20000,
- REQUIRE skill(caster, MAGIC) > level,
- REQUIRE skill(caster, school) > level,
- COMPONENTS ["HardSpike", "Root"])
- => EFFECT CALL adjust_spellpower(school);
- CALL default_effect();
- CALL gain_xp(1, 26);
- CALL summon_spell(1019, 1 + spellpower / 120, 5000 - (spellpower * 9), spellpower * 400, 2);
-
-LOCAL SPELL summon-fluffies : "#kalakarenk" =
- LET level = 1
- school = ASTRAL
- IN (MANA 39, CASTTIME 20000,
- REQUIRE skill(caster, MAGIC) > level,
- REQUIRE skill(caster, school) > level,
- COMPONENTS ["WhiteFur", "Root"])
- => EFFECT CALL adjust_spellpower(school);
- CALL default_effect();
- CALL gain_xp(1, 27);
- CALL summon_spell(1020, 1 + spellpower / 170 + spellpower / 430, 5000 - (spellpower * 8), spellpower * 350, 2);
-
-LOCAL SPELL summon-mouboo : "#kalboo" =
- LET level = 1
- school = ASTRAL
- IN (MANA 35, CASTTIME 20000,
- REQUIRE skill(caster, MAGIC) > level,
- REQUIRE skill(caster, school) > level,
- COMPONENTS ["MoubooFigurine", "Root"])
- => EFFECT CALL adjust_spellpower(school);
- CALL default_effect();
- CALL gain_xp(2, 37);
- CALL summon_spell(1028, 1 + spellpower / 270 , 4000 - (spellpower * 9), spellpower * 100, 2);
-
-LOCAL SPELL summon-pinkie : "#kalgina" =
- LET level = 1
- school = ASTRAL
- IN (MANA 35, CASTTIME 20000,
- REQUIRE skill(caster, MAGIC) > level,
- REQUIRE skill(caster, school) > level,
- COMPONENTS ["PinkAntenna", "Root"])
- => EFFECT CALL adjust_spellpower(school);
- CALL default_effect();
- CALL gain_xp(2, 38);
- CALL summon_spell(1018, 1 + spellpower / 120, 5000 - (spellpower * 9), spellpower * 150, 2);
-
-SPELL detect-players : "#inwilt" =
- LET level = 1
- school = MAGIC
- IN (MANA 7, CASTTIME 300,
- REQUIRE skill(caster, MAGIC) > level,
- REQUIRE skill(caster, school) > level)
- => EFFECT CALL adjust_spellpower(school);
- CALL default_effect();
- message = "";
- FOREACH PC target IN rbox(location(caster), spellpower / 2)
- DO IF ((target <> caster)
- && not (running_status_update(pc(target), SC_HIDE))
- && not (status_option(target, SO_GMINVISIBLE)))
- THEN (IF message <> ""
- THEN message = message + ", ";
- message = message + name_of (target);
- IF spellpower > 99
- THEN message = message + "(" + level(target) + ")";
- )
- IF message = ""
- THEN message(caster, "You sense no-one else nearby.");
- ELSE message(caster, "You sense the following: " + message);
-
-SPELL enchant-lifestone : "#manpahil" =
- LET level = 1
- school = MAGIC
- IN (MANA 15, CASTTIME 4000,
- REQUIRE skill(caster, MAGIC) > level,
- REQUIRE skill(caster, school) > level,
- (COMPONENTS["BugLeg"] OR COMPONENTS ["MaggotSlime"]
- OR COMPONENTS ["MauveHerb", "AlizarinHerb", "CobaltHerb", "GambogeHerb"]))
- => EFFECT CALL adjust_spellpower(school);
- CALL default_effect();
- create_item(caster, "Lifestone", 1);
- CALL gain_xp(1, 28);
-
-SPELL sense-spouse : "#inzuwilt" =
- LET level = 1
- school = MAGIC
- IN (MANA 7, CASTTIME 400,
- REQUIRE skill(caster, MAGIC) > level,
- REQUIRE skill(caster, school) > level,
- REQUIRE is_married(caster),
- REQUIRE is_equipped(caster, "WeddingRing"))
- => EFFECT CALL adjust_spellpower(school);
- CALL default_effect();
- IF (failed(partner(caster)) || not(is_equipped(partner(caster), "WeddingRing")))
- THEN (message(caster, "You cannot sense your partner.");
- ABORT;)
- partner = partner(caster);
- name = name_of(partner);
- IF (is_dead(partner) || (map_nr(location(partner)) <> map_nr(location(caster))))
- THEN (message(caster, "You cannot sense " + name + " nearby.");
- ABORT;)
- IF (map_level(location(partner)) > 2 && map_level(location(caster)) < map_level(location(partner)))
- THEN (message(caster, "You sense " + name + " somewhere below.");
- ABORT;)
- IF (map_level(location(caster)) > 2 && map_level(location(partner)) < map_level(location(caster)))
- THEN (message(caster, "You sense " + name + " somewhere above.");
- ABORT;)
- IF (map_level(location(caster)) <> map_level(location(partner)))
- THEN message(caster, "You sense " + name + " somewhere in the vincinity.");
- ELSE (distance = rdistance(location(caster), location(partner));
- dir = dir_towards(location(caster), location(partner), 1);
- IF (distance < 3)
- THEN message(caster, "You sense " + name + " right next to you.");
- ELSE IF (distance < 30)
- THEN message(caster, "You sense " + name + " close by, towards the " + dir + ".");
- ELSE IF (distance < 200)
- THEN message(caster, "You sense " + name + " nearby, towards the " + dir + ".");
- ELSE message(caster, "You sense " + name + " in the " + dir + ".");
- )
-
-SPELL hide (target : PC) : "#anwiltyp" =
- LET level = 1
- school = ASTRAL
- IN (MANA 11, CASTTIME 1000,
- REQUIRE skill(caster, MAGIC) > level,
- REQUIRE skill(caster, school) > level,
- (REQUIRE skill(caster, school) > 3 OR COMPONENTS ["CottonCloth"]),
- REQUIRE rdistance(location(target), location(caster)) < 2 + spellpower / 30)
- => EFFECT CALL adjust_spellpower(school);
- sfx(target, SFX_DEFAULT, 0);
- IF (caster <> target)
- THEN CALL default_effect();
- status_change(target, SC_HIDE, 0, 0, 0, 0, 5000 + (spellpower * 2500));
- CALL gain_xp(2, 29);
- message(target, "You are hidden!");
- IF (caster <> target) THEN message(caster, "You hid someone!");
- ATEND message(target, "You are no longer hidden.");
-
-#--------------------------------------------------------------------------------
-# Level 2 spells
-#--------------------------------------------------------------------------------
-
-SPELL cure-poison (target : PC) : "#anju" =
- LET level = 2
- school = LIFE
- IN (MANA 15, CASTTIME 1000,
- REQUIRE skill(caster, MAGIC) > level,
- REQUIRE skill(caster, school) > level,
- REQUIRE (rdistance(location(caster),
- location(pc(target))) < 1 + (spellpower / 60)),
- COMPONENTS ["GambogeHerb"])
- => EFFECT CALL adjust_spellpower(school);
- CALL default_effect();
- IF (running_status_update (target, SC_POISON))
- THEN (CALL gain_heal_xp(40, 1, 2, 2);
- stop_status_change (target, SC_POISON);
- CALL gain_xp(2, 30);
- IF caster <> target
- THEN sfx(target, SFX_HEAL, 0););
-
-
-SPELL fire-ball : "#flarfol" =
- LET level = 2
- school = WAR
- IN (MANA 30, CASTTIME 1000,
- REQUIRE skill(caster, MAGIC) > level,
- REQUIRE skill(caster, school) > level,
- COMPONENTS ["PileOfAsh"])
- => EFFECT CALL adjust_spellpower(school);
- damage = min(50 + skill(caster, school) * 40,
- 30 + ((spellpower * 3) / 2));
- damage_bonus = level(caster) + spellpower * 2;
- radius = 2 + spellpower / 50;
- CALL install_attack_spell(1 + spellpower / 60,
- 5000,
- 10, 31);
- ATTRIGGER CALL attack_check(target);
- loc = location(target);
- #WAIT 500;
- sfx(loc, 16, 0);
- FOREACH TARGET target IN rbox(loc, radius)
- DO IF line_of_sight(loc, location(target))
- THEN (divisor = (3 + rdistance(loc, location(target)));
- CALL elt_damage (target, (damage * 3) / divisor, (damage_bonus * 3) / divisor, ELT_WATER, ELT_FIRE, 15);
- )
-
-SPELL summon-partner : "#kalzumin" =
- LET level = 2
- school = ASTRAL
- IN (MANA 30, CASTTIME 2000,
- REQUIRE skill(caster, MAGIC) > level,
- REQUIRE skill(caster, school) > level,
- REQUIRE is_married(caster),
- REQUIRE is_equipped(caster, "WeddingRing"))
- => EFFECT CALL adjust_spellpower(school);
- CALL default_effect();
- IF (failed (partner (caster)))
- THEN message (caster, "You call out for your partner, but there is no response.");
- ELSE (message (caster, "You call out for " + (name_of (partner (caster))) + ".");
- message (partner(caster), name_of(caster) + " is calling for your aid!");
- sfx(partner(caster), 2, 0);
- WAIT (max (5000, 30000 - (spellpower * 60)));
- IF (failed (partner (caster)))
- THEN message (caster, "Your partner has abandoned you.");
- ELSE IF (is_dead (partner (caster)))
- THEN message (caster, "Something seems to have happened to " + (name_of(partner(caster))) + ".");
- ELSE (sfx(location(partner(caster)), SFX_TELEPORT, 0);
- dest = awayfrom(location(caster), random_dir(1), 1);
- warp(partner(caster), dest);
- sfx(dest, SFX_TELEPORT, 0);
- )
- )
-
-
-
-#--------------------------------------------------------------------------------
-# Level 4 spells
-#--------------------------------------------------------------------------------
-
-SPELL shroud : "#anwilvimar" =
- LET level = 4
- school = NATURE
- IN (MANA 40, CASTTIME 400,
- REQUIRE skill(caster, MAGIC) > level,
- REQUIRE skill(caster, school) > level)
- => EFFECT CALL default_effect();
- shroud(caster, 0x04);
-
-SPELL teleport (destination : STRING) : "#vorp" =
- LET level = 4
- school = ASTRAL
- IN (MANA 80, CASTTIME 400,
- # COMPONENT ["EtherEssence"],
- # CATALYST ["TeleportCrystal"],
- REQUIRE skill(caster, MAGIC) > level,
- REQUIRE skill(caster, school) > level)
- => EFFECT CALL default_effect();
- WAIT 1000 + (200000 / (spellpower + 10));
- sfx(location(caster), SFX_TELEPORT, 200);
- warp(caster, random_location(anchor(destination)));
- sfx(caster, SFX_TELEPORT, 200);
-
-#--------------------------------------------------------------------------------
-# Debug keywords
-#--------------------------------------------------------------------------------
-
-SPELL debug : "debug" =
- REQUIRE DEBUG
- => EFFECT message (caster, "FLAGS: "
- + "drank=" + ((script_int(caster, "MAGIC_FLAGS") & 1) > 0) + ", "
- + "Kmseed=" + ((script_int(caster, "MAGIC_FLAGS") & 2) > 0) + ", "
- + "touched-mseed=" + ((script_int(caster, "MAGIC_FLAGS") & 4) > 0) + ", "
- + "mseed-max=" + ((script_int(caster, "MAGIC_FLAGS") & 8) > 0) + ", "
- + "Kauldsbel=" + ((script_int(caster, "MAGIC_FLAGS") & 16) > 0) + ", "
- + "Kwyara=" + ((script_int(caster, "MAGIC_FLAGS") & 32) > 0) + ", "
- + "Ksagatha=" + ((script_int(caster, "MAGIC_FLAGS") & 64) > 0) + ", "
- + "Kmpotion=" + ((script_int(caster, "MAGIC_FLAGS") & 128) > 0) + ", "
- + "mseed-rumour=" + ((script_int(caster, "MAGIC_FLAGS") & 256) > 0) + ", "
- + "Kcuttree=" + ((script_int(caster, "MAGIC_FLAGS") & 512) > 0) + ", "
- + "cut=" + ((script_int(caster, "MAGIC_FLAGS") & 1024) > 0) + ", "
- + "Kdruidtree=" + ((script_int(caster, "MAGIC_FLAGS") & 2048) > 0) + ", "
- + "Kimp=" + ((script_int(caster, "MAGIC_FLAGS") & 4096) > 0) + ", "
- + "Koldwiz=" + ((script_int(caster, "MAGIC_FLAGS") & 8192) > 0) + ", "
- + "made-conc=" + ((script_int(caster, "MAGIC_FLAGS") & 16384) > 0) + ", "
- + "elanore-omar=" + ((script_int(caster, "MAGIC_FLAGS") & 32768) > 0));
- message (caster, "EXP: " + (script_int(caster, "MAGIC_EXPERIENCE") & 0xffff)
- + ", lastspell=" + ((script_int(caster, "MAGIC_EXPERIENCE") >> 16) & 0xff)
- + ", healexp=" + ((script_int(caster, "MAGIC_EXPERIENCE") >> 24) & 0xff));
- message (caster, "STATUS: "
- + "auldsbel:" + (script_int(caster, "QUEST_MAGIC") & 0x1f) + "," + ((script_int(caster, "QUEST_MAGIC") >> 5) & 0x7) + ", "
- + "dt/mb:" + ((script_int(caster, "QUEST_MAGIC") >> 8) & 0xf) + ", "
- + "s-unhappy:" + ((script_int(caster, "QUEST_MAGIC") >> 12) & 0xf) + ", "
- + "sagatha:" + ((script_int(caster, "QUEST_MAGIC") >> 16) & 0xff) + ", "
- + "swords:" + ((script_int(caster, "QUEST_MAGIC") >> 24) & 0xff) + ", "
- + "imp:" + ((script_int(caster, "QUEST_MAGIC2") >> 0) & 0xf) + ", "
- + "elanore:" + ((script_int(caster, "QUEST_MAGIC2") >> 4) & 0xf) + ", "
- + "elanore-sub:" + ((script_int(caster, "QUEST_MAGIC2") >> 12) & 0xf) + ", "
- + "wyara:" + ((script_int(caster, "QUEST_MAGIC2") >> 8) & 0xf));
-
-PROCEDURE debug_xmod(name, mask, shift, gain) =
- value = ((script_int(caster, name) >> shift) & mask) + gain;
- IF (value < 0)
- THEN value = 0;
- IF (value > mask)
- THEN value = mask;
- CALL set_var(name, mask, shift, value);
-
-PROCEDURE debug_mod(name, delta) =
- IF (name = "mexp") THEN CALL debug_xmod("MAGIC_EXPERIENCE", 0xffff, 0, delta);
- ELSE IF (name = "lastspell") THEN CALL debug_xmod("MAGIC_EXPERIENCE", 0xff, 16, delta);
- ELSE IF (name = "healexp") THEN CALL debug_xmod("MAGIC_EXPERIENCE", 0xff, 24, delta);
- ELSE IF (name = "drank") THEN CALL debug_xmod("MAGIC_FLAGS", 0x1, 0, delta);
- ELSE IF (name = "Kmseed") THEN CALL debug_xmod("MAGIC_FLAGS", 0x1, 1, delta);
- ELSE IF (name = "touched-mseed") THEN CALL debug_xmod("MAGIC_FLAGS", 0x1, 2, delta);
- ELSE IF (name = "mseed-max") THEN CALL debug_xmod("MAGIC_FLAGS", 0x1, 3, delta);
- ELSE IF (name = "Kauldsbel") THEN CALL debug_xmod("MAGIC_FLAGS", 0x1, 4, delta);
- ELSE IF (name = "Kwyara") THEN CALL debug_xmod("MAGIC_FLAGS", 0x1, 5, delta);
- ELSE IF (name = "Ksagatha") THEN CALL debug_xmod("MAGIC_FLAGS", 0x1, 6, delta);
- ELSE IF (name = "Kmpotion") THEN CALL debug_xmod("MAGIC_FLAGS", 0x1, 7, delta);
- ELSE IF (name = "mseed-rumour") THEN CALL debug_xmod("MAGIC_FLAGS", 0x1, 8, delta);
- ELSE IF (name = "Kcuttree") THEN CALL debug_xmod("MAGIC_FLAGS", 0x1, 9, delta);
- ELSE IF (name = "cut") THEN CALL debug_xmod("MAGIC_FLAGS", 0x1, 10, delta);
- ELSE IF (name = "Kdruidtree") THEN CALL debug_xmod("MAGIC_FLAGS", 0x1, 11, delta);
- ELSE IF (name = "Kimp") THEN CALL debug_xmod("MAGIC_FLAGS", 0x1, 12, delta);
- ELSE IF (name = "oldwiz") THEN CALL debug_xmod("MAGIC_FLAGS", 0x1, 13, delta);
- ELSE IF (name = "made-conc") THEN CALL debug_xmod("MAGIC_FLAGS", 0x1, 14, delta);
- ELSE IF (name = "elanore-omar") THEN CALL debug_xmod("MAGIC_FLAGS", 0x1, 15, delta);
- ELSE IF (name = "auldsbel") THEN CALL debug_xmod("QUEST_MAGIC", 0x1f, 0, delta);
- ELSE IF (name = "Qauldsbel") THEN CALL debug_xmod("QUEST_MAGIC", 0x7, 5, delta);
- ELSE IF (name = "dt") THEN CALL debug_xmod("QUEST_MAGIC", 0x3, 10, delta);
- ELSE IF (name = "mb") THEN CALL debug_xmod("QUEST_MAGIC", 0x3, 8, delta);
- ELSE IF (name = "s-unhappy") THEN CALL debug_xmod("QUEST_MAGIC", 0xff, 12, delta);
- ELSE IF (name = "sagatha") THEN CALL debug_xmod("QUEST_MAGIC", 0xff, 16, delta);
- ELSE IF (name = "swords") THEN CALL debug_xmod("QUEST_MAGIC", 0xff, 24, delta);
- ELSE IF (name = "imp") THEN CALL debug_xmod("QUEST_MAGIC2", 0xf, 0, delta);
- ELSE IF (name = "elanore") THEN CALL debug_xmod("QUEST_MAGIC2", 0xf, 4, delta);
- ELSE IF (name = "wyara") THEN CALL debug_xmod("QUEST_MAGIC2", 0xf, 8, delta);
- ELSE IF (name = "elanore-sub") THEN CALL debug_xmod("QUEST_MAGIC2", 0xf, 12, delta);
- ELSE message(caster, "Unknown");
-
-SPELL debug-up1 (name : STRING) : "debug+1" =
- REQUIRE DEBUG
- => EFFECT CALL debug_mod(name, 1);
-
-SPELL debug-down1 (name : STRING) : "debug-1" =
- REQUIRE DEBUG
- => EFFECT CALL debug_mod(name, 0 - 1);
-
-SPELL debug-up16 (name : STRING) : "debug+16" =
- REQUIRE DEBUG
- => EFFECT CALL debug_mod(name, 16);
-
-SPELL debug-down16 (name : STRING) : "debug-16" =
- REQUIRE DEBUG
- => EFFECT CALL debug_mod(name, 0 - 16);
-
-SPELL debug-up256 (name : STRING) : "debug+256" =
- REQUIRE DEBUG
- => EFFECT CALL debug_mod(name, 256);
-
-SPELL debug-down256 (name : STRING) : "debug-256" =
- REQUIRE DEBUG
- => EFFECT CALL debug_mod(name, 0 - 256);
-
-SPELL debug-reset : "debug-reset" =
- REQUIRE DEBUG
- => EFFECT set_script_variable(caster, "QUEST_MAGIC", 0);
- set_script_variable(caster, "QUEST_MAGIC2", 0);
- set_script_variable(caster, "MAGIC_FLAGS", 0);
- set_script_variable(caster, "MAGIC_EXP", 0);
-
-
-#--------------------------------------------------------------------------------
-# Special-purpose quasispells
-#--------------------------------------------------------------------------------
-
-CONST MIN_MARRY_LEVEL = 32;
-
-NONMAGIC SILENT SPELL marriage (target : PC) : "marry" =
- (REQUIRE (is_in(location(caster), @("014-1.gat", 28,39) @+ (8, 6)) || is_in(location(caster), @("021-2.gat", 20,25) @+ (4, 4)) ))=>
- EFFECT IF target == caster # no valid target or tried to marry self?
- THEN ABORT;
-
- IF (level(caster) < MIN_MARRY_LEVEL)
- THEN (message(caster, "You must be level " + MIN_MARRY_LEVEL + " or higher to marry!"); ABORT;)
-
- IF (level(target) < MIN_MARRY_LEVEL)
- THEN (message(caster, "Your partner must be level " + MIN_MARRY_LEVEL + " or higher to marry!"); ABORT;)
-
- IF partner(caster) = target
- THEN (message(caster, "You and " + name_of(target) + " are already married."); ABORT;)
-
- IF is_married(caster)
- THEN (message(caster, "You are already married!"); ABORT;)
-
- IF is_married(target)
- THEN (message(caster, name_of(target) + " is already married."); ABORT;);
-
- IF distance(location(caster), location(target)) <> 1
- THEN (message(caster, "You need to stand next to each other."); ABORT;);
-
- IF (count_item(caster, "WeddingRing") == 0 || count_item(target, "WeddingRing") == 0)
- THEN (message(caster, "You must both be wearing your wedding rings!"); ABORT;)
-
- script_target = target;
- {
- announce @caster_name$ + " is asking " + strcharinfo(0) + " for marriage.", 2;
- mes @caster_name$ + " wishes to marry you.";
- mes "Do you accept?";
- next;
- menu "Yes, I do!", L_yes,
- "No.", -;
- close;
-
- L_yes:
- if marriage(@caster_name$)
- announce @caster_name$ + " and " + strcharinfo(0) + " are now married!", 0;
- close;
- }
-
- IF not (is_married(caster))
- THEN message(caster, name_of(target) + " turned down your marriage offer.");
-
-LOCAL SPELL mouboo-groan : "#g" =
- (MANA 1,
- REQUIRE name_of(caster) = "MOUBOOTAUR") =>
- EFFECT FOREACH PC p IN rbox(location(caster), 200) DO
- distance = rdistance(location(caster), location(p));
- IF (distance < 15)
- THEN message(p, "The moubootaur's groaning rings in your ears!");
- ELSE IF (distance < 70)
- THEN message(p, "You hear a loud groaning noise, not far away...");
- ELSE message(p, "You hear an odd groaning noise in the distance...");
-
-
-LOCAL SPELL mouboo-smell : "#s" =
- (MANA 1,
- REQUIRE name_of(caster) = "MOUBOOTAUR") =>
- EFFECT WAIT 30000;
- FOREACH PC p IN rbox(location(caster), 30) DO
- message(p, "You notice a strange smell all around you.");
-
-
-CONST E10_FLAG_USED_FREE_WARP_SHIFT = 17
-
-NONMAGIC SILENT SPELL world-shift : "#alonzialonzo" =
- (REQUIRE (script_int(caster, "Easter_2010_QuestState") >> 16) & 1 == 1 && (script_int(caster, "Easter_2010_QuestState") >> 7) & 3 == 2) => # Travel only works when you have both helped the doctor at least thrice and have defeated the invader - top level requirement.
- ( (REQUIRE (count_item(caster, "DarkPetal")) && # Allow unlimited travel with the petal
- (map_nr(location(caster)) != 52) && # Do not allow if player is in Illia island
- (map_nr(location(caster)) != 5698) # Do not allow if player is in botcheck area
- )
- => ((REQUIRE rdistance(location(caster), @("028-1.gat", 69, 70)) < 5) =>
- EFFECT sfx(location(caster), SFX_TELEPORT, 200);
- WAIT 8000;
- { savepoint "009-1", 52, 39; };
- warp(caster, @("009-1.gat", 55, 37));
- sfx(location(caster), SFX_TELEPORT, 200);
- |
- (REQUIRE map_nr(location(caster)) != 28) =>
- EFFECT inithp = hp(caster); // Store this value.
- sfx(location(caster), SFX_TELEPORT, 200);
- IF (map_nr(location(caster)) == 9 || map_nr(location(caster)) == 1 || map_nr(location(caster)) == 21 || map_nr(location(caster)) == 20) THEN WAIT 8000;
- ELSE WAIT 20000;
- IF (hp(caster) < inithp) THEN ABORT; // Cancel teleport if the player took damage during channel time (hacky, but for most purposes should work.)
- { savepoint "028-1", 69, 71; };
- warp(caster, @("028-1.gat", 69, 70));
- sfx(location(caster), SFX_TELEPORT, 200);
- )
- | (REQUIRE (rdistance(location(caster), @("028-1.gat", 69, 70)) < 5 )
- => EFFECT set_script_variable(caster, "Easter_2010_QuestState", script_int(caster, "Easter_2010_QuestState") | (1 << 17));
- sfx(location(caster), SFX_TELEPORT, 200);
- WAIT 8000;
- { savepoint "009-1", 52, 39; };
- warp(caster, @("009-1.gat", 55, 37));
- sfx(location(caster), SFX_TELEPORT, 200);
- | (REQUIRE map_nr(location(caster)) != 28 && (script_int(caster, "Easter_2010_QuestState") >> 17) & 1 == 0) # Allow for one free warp home without the petal
- => EFFECT inithp = hp(caster); // Store this value.
- sfx(location(caster), SFX_TELEPORT, 200);
- IF (map_nr(location(caster)) == 9 || map_nr(location(caster)) == 1 || map_nr(location(caster)) == 21 || map_nr(location(caster)) == 20) THEN WAIT 8000;
- ELSE WAIT 20000;
- IF (hp(caster) < inithp) THEN ABORT; // Cancel teleport if the player took damage during channel time (hacky, but for most purposes should work.)
- set_script_variable(caster, "Easter_2010_QuestState", script_int(caster, "Easter_2010_QuestState") | (1 << 17));
- { savepoint "028-1", 69, 70; };
- warp(caster, @("028-1.gat", 69, 70));
- sfx(location(caster), SFX_TELEPORT, 200);
- )
- )
-
-NONMAGIC SILENT SPELL easter-get-debug (p : PC) : "#e" =
- (REQUIRE name_of(caster) == "Freeyorp" || name_of(caster) == "Xakelbael the Dark") =>
- EFFECT { message strcharinfo(0), "Global state egg1: " + $Easter_2010_Egg_Loc_State1;
- message strcharinfo(0), "Global state egg2: " + $Easter_2010_Egg_Loc_State2;
- message strcharinfo(0), "Global state egg3: " + $Easter_2010_Egg_Loc_State3;
- message strcharinfo(0), "Global state egg4: " + $Easter_2010_Egg_Loc_State4;
- message strcharinfo(0), "Global state egg5: " + $Easter_2010_Egg_Loc_State5;
- message strcharinfo(0), "Global npc state1: " + $Easter_2010_Npc_State1;
- message strcharinfo(0), "Global npc state2: " + $Easter_2010_Npc_State2;
- };
- message(caster, "Local state egg1: " + script_int(p, "Easter_2010_EggState1"));
- message(caster, "Local state egg2: " + script_int(p, "Easter_2010_EggState2"));
- message(caster, "Local state egg3: " + script_int(p, "Easter_2010_EggState3"));
- message(caster, "Local state egg4: " + script_int(p, "Easter_2010_EggState4"));
- message(caster, "Local state egg5: " + script_int(p, "Easter_2010_EggState5"));
- message(caster, "Local state quest: " + script_int(p, "Easter_2010_QuestState"));
-
-
-
-
-PROCEDURE hug_tree(target) =
- IF (target = ""
- || target = "tree" || target = "tree*"
- || target = "Tree" || target = "Tree*"
- || target = "druid" || target = "druid*"
- || target = "Druid" || target = "Druid*")
- THEN {
- set @flag, 2;
- callfunc "QuestTreeTrigger";
- };
-
-NONMAGIC SPELL hug0 (target : STRING) : "hug" = REQUIRE ((rdistance(location(caster), location(npc("#DruidTree0#_M"))) <= 1
- || rdistance(location(caster), location(npc("#DruidTree1#_M"))) <= 1))
- => EFFECT CALL hug_tree(target);
-
-NONMAGIC SPELL hug1 (target : STRING) : "*hug*" = REQUIRE ((rdistance(location(caster), location(npc("#DruidTree0#_M"))) <= 1
- || rdistance(location(caster), location(npc("#DruidTree1#_M"))) <= 1))
- => EFFECT CALL hug_tree(target);
-
-NONMAGIC SPELL hug2 (target : STRING) : "*hug" = REQUIRE ((rdistance(location(caster), location(npc("#DruidTree0#_M"))) <= 1
- || rdistance(location(caster), location(npc("#DruidTree1#_M"))) <= 1))
- => EFFECT CALL hug_tree(target);
-
-NONMAGIC SPELL hug3 (target : STRING) : "hugs" = REQUIRE ((rdistance(location(caster), location(npc("#DruidTree0#_M"))) <= 1
- || rdistance(location(caster), location(npc("#DruidTree1#_M"))) <= 1))
- => EFFECT CALL hug_tree(target);
-
-NONMAGIC SPELL hug4 (target : STRING) : "*hugs*" = REQUIRE ((rdistance(location(caster), location(npc("#DruidTree0#_M"))) <= 1
- || rdistance(location(caster), location(npc("#DruidTree1#_M"))) <= 1))
- => EFFECT CALL hug_tree(target);
-
-NONMAGIC SPELL hug5 (target : STRING) : "*hugs" = REQUIRE ((rdistance(location(caster), location(npc("#DruidTree0#_M"))) <= 1
- || rdistance(location(caster), location(npc("#DruidTree1#_M"))) <= 1))
- => EFFECT CALL hug_tree(target);
-
-#--------------------------------------------------------------------------------
-# Teleport anchors
-#--------------------------------------------------------------------------------
-
-TELEPORT-ANCHOR tulimshar : "tulimshar" = @("001-1.gat", 43, 66) @+ (3, 3);
-TELEPORT-ANCHOR hurnscald : "hurnscald" = @("009-1.gat", 55, 37) @+ (3, 3);
-TELEPORT-ANCHOR nivalis : "nivalis" = @("020-1.gat", 75, 63) @+ (19, 12);
-TELEPORT-ANCHOR wizardhut : "##00" = @("013-1.gat", 41, 92) @+ (3, 3);
-TELEPORT-ANCHOR pachua : "##01" = @("006-1.gat", 22, 101) @+ (3, 3);
-TELEPORT-ANCHOR desert : "##02" = @("005-1.gat", 160, 64) @+ (5, 5);
-TELEPORT-ANCHOR forest : "##03" = @("015-1.gat", 35, 35) @+ (40, 40);
-TELEPORT-ANCHOR snakecave : "##04" = @("011-4.gat", 50, 75) @+ (3, 3);
-TELEPORT-ANCHOR dimondscove : "##05" = @("010-2.gat", 23, 79) @+ (3, 3);
-
-
-#--------------------------------------------------------------------------------
-# Illia spell
-#--------------------------------------------------------------------------------
-
-NONMAGIC SPELL illia0 : "#catalazuli" = REQUIRE ((rdistance(location(caster), location(npc("#Power Circle"))) == 0))
- => EFFECT {
- callfunc "StartChannelling";
- };
-
-#--------------------------------------------------------------------------------
-# Kill the GM event spell
-#--------------------------------------------------------------------------------
-
-NONMAGIC SPELL killgm0 : "#pullrabbit" = REQUIRE (is_equipped(caster, "MagicGMTopHat"))
- => EFFECT {
- callfunc "ActivateMagicGMTophat";
- };
diff --git a/world/map/conf/magic-base.sex b/world/map/conf/magic-base.sex
index 8f3b9978..25c05f1e 100644
--- a/world/map/conf/magic-base.sex
+++ b/world/map/conf/magic-base.sex
@@ -407,6 +407,44 @@
"--------------------------------------------------------------------------------"
"Level 0 spells"
"--------------------------------------------------------------------------------"
+(SPELL () wand "#confringo" ()
+ (LET school MAGIC)
+ (=>
+ (GUARD
+ (CASTTIME 500))
+ (EFFECT
+ (SCRIPT "{callfunc \"CheckWand\";}")
+ (IF (==
+ (script_int caster "@Wand")
+ 0)
+ (ABORT))
+ (CALL adjust_spellpower school)
+ (CALL default_effect)
+ (SET damage
+ (* (script_int caster "@Wand")
+ (/ spellpower
+ 3)))
+ (SET damage_bonus
+ (* (script_int caster "@Wand")
+ (/ spellpower
+ 3)))
+ (CALL install_attack_spell
+ (+ (script_int caster "@Wand")
+ (/ spellpower 10))
+ 1200
+ 3
+ 33)
+ (CALL gain_xp 1 3)
+ (ATTRIGGER
+ (CALL attack_check target)
+ (SCRIPT "{callfunc \"WandMana\";}")
+ (IF (==
+ (script_int caster "@WandAttack")
+ 0)
+ (ABORT))
+ (CALL elt_damage target damage damage_bonus ELT_NEUTRAL ELT_NEUTRAL 5))
+)))
+
(SPELL () ask-magic-exp "#abizit" ()
(LET level 0)
(LET school MAGIC)
@@ -3126,240 +3164,6 @@
30)
(message p "You notice a strange smell all around you.")))))
-(SPELL (NONMAGIC SILENT) world-shift "#alonzialonzo" ()
- (=>
- (GUARD
- (REQUIRE
- (&&
- (==
- (&
- (>>
- (script_int caster "Easter_2010_QuestState")
- 16)
- 1)
- 1)
- (==
- (&
- (>>
- (script_int caster "Easter_2010_QuestState")
- 7)
- 3)
- 2))) "Travel only works when you have both helped the doctor at least thrice and have defeated the invader - top level requirement." )
- (|
- (=>
- (GUARD
- (REQUIRE
- (&&
- (&&
- (count_item caster "DarkPetal")
- (!=
- (map_nr
- (location caster))
- 52))
- (!=
- (map_nr
- (location caster))
- 5698))) "Allow unlimited travel with the petal, 52 Do not allow if player is in Illia island, 5698 Do not allow if player is in botcheck area" )
- (|
- (=>
- (GUARD
- (REQUIRE
- (<
- (rdistance
- (location caster)
- (@ "028-1.gat" 69 70))
- 5)))
- (EFFECT
- (sfx
- (location caster)
- SFX_TELEPORT
- 200)
- (WAIT 8000)
- (SCRIPT "{
- savepoint \"009-1\", 52, 39;
- }")
- (warp caster
- (@ "009-1.gat" 55 37))
- (sfx
- (location caster)
- SFX_TELEPORT
- 200)))
- (=>
- (GUARD
- (REQUIRE
- (!=
- (map_nr
- (location caster))
- 28)))
- (EFFECT
- (SET inithp
- (hp caster)) "Store this value."
- (sfx
- (location caster)
- SFX_TELEPORT
- 200)
- (IF (||
- (||
- (||
- (==
- (map_nr
- (location caster))
- 9)
- (==
- (map_nr
- (location caster))
- 1))
- (==
- (map_nr
- (location caster))
- 21))
- (==
- (map_nr
- (location caster))
- 20))
- (WAIT 8000)
- (WAIT 20000))
- (IF (<
- (hp caster)
- inithp)
- (ABORT)) "Cancel teleport if the player took damage during channel time (hacky, but for most purposes should work.)"
- (SCRIPT "{
- savepoint \"028-1\", 69, 71;
- }")
- (warp caster
- (@ "028-1.gat" 69 70))
- (sfx
- (location caster)
- SFX_TELEPORT
- 200)))))
- (|
- (=>
- (REQUIRE
- (<
- (rdistance
- (location caster)
- (@ "028-1.gat" 69 70))
- 5))
- (EFFECT
- (set_script_variable caster "Easter_2010_QuestState"
- (|
- (script_int caster "Easter_2010_QuestState")
- (<< 1 17)))
- (sfx
- (location caster)
- SFX_TELEPORT
- 200)
- (WAIT 8000)
- (SCRIPT "{
- savepoint \"009-1\", 52, 39;
- }")
- (warp caster
- (@ "009-1.gat" 55 37))
- (sfx
- (location caster)
- SFX_TELEPORT
- 200)))
- (=>
- (GUARD
- (REQUIRE
- (&&
- (!=
- (map_nr
- (location caster))
- 28)
- (==
- (&
- (>>
- (script_int caster "Easter_2010_QuestState")
- 17)
- 1)
- 0))) "Allow for one free warp home without the petal" )
- (EFFECT
- (SET inithp
- (hp caster)) "Store this value."
- (sfx
- (location caster)
- SFX_TELEPORT
- 200)
- (IF (||
- (||
- (||
- (==
- (map_nr
- (location caster))
- 9)
- (==
- (map_nr
- (location caster))
- 1))
- (==
- (map_nr
- (location caster))
- 21))
- (==
- (map_nr
- (location caster))
- 20))
- (WAIT 8000)
- (WAIT 20000))
- (IF (<
- (hp caster)
- inithp)
- (ABORT)) "Cancel teleport if the player took damage during channel time (hacky, but for most purposes should work.)"
- (set_script_variable caster "Easter_2010_QuestState"
- (|
- (script_int caster "Easter_2010_QuestState")
- (<< 1 17)))
- (SCRIPT "{
- savepoint \"028-1\", 69, 70;
- }")
- (warp caster
- (@ "028-1.gat" 69 70))
- (sfx
- (location caster)
- SFX_TELEPORT
- 200)))))))
-
-(SPELL (NONMAGIC SILENT) easter-get-debug "#e" (PC p)
- (=>
- (GUARD
- (REQUIRE
- (||
- (==
- (name_of caster)
- "Freeyorp")
- (==
- (name_of caster)
- "Xakelbael the Dark"))))
- (EFFECT
- (SCRIPT "{
- message strcharinfo(0), \"Global state egg1: \"+ $Easter_2010_Egg_Loc_State1;
- message strcharinfo(0), \"Global state egg2: \"+ $Easter_2010_Egg_Loc_State2;
- message strcharinfo(0), \"Global state egg3: \"+ $Easter_2010_Egg_Loc_State3;
- message strcharinfo(0), \"Global state egg4: \"+ $Easter_2010_Egg_Loc_State4;
- message strcharinfo(0), \"Global state egg5: \"+ $Easter_2010_Egg_Loc_State5;
- message strcharinfo(0), \"Global npc state1: \"+ $Easter_2010_Npc_State1;
- message strcharinfo(0), \"Global npc state2: \"+ $Easter_2010_Npc_State2;
- }")
- (message caster
- (+ "Local state egg1: "
- (script_int p "Easter_2010_EggState1")))
- (message caster
- (+ "Local state egg2: "
- (script_int p "Easter_2010_EggState2")))
- (message caster
- (+ "Local state egg3: "
- (script_int p "Easter_2010_EggState3")))
- (message caster
- (+ "Local state egg4: "
- (script_int p "Easter_2010_EggState4")))
- (message caster
- (+ "Local state egg5: "
- (script_int p "Easter_2010_EggState5")))
- (message caster
- (+ "Local state quest: "
- (script_int p "Easter_2010_QuestState"))))))
-
(PROCEDURE hug_tree (target)
(IF (||
(||
diff --git a/world/map/conf/magic-conf-ifnew.conf b/world/map/conf/magic-conf-ifnew.conf
deleted file mode 100644
index 1c80f584..00000000
--- a/world/map/conf/magic-conf-ifnew.conf
+++ /dev/null
@@ -1,4 +0,0 @@
-version-gt: 14.1.27
-
-magic_conf: conf/magic-base.sex
-magic_conf: conf/magic-secrets.sex
diff --git a/world/map/conf/magic-conf-ifold.conf b/world/map/conf/magic-conf-ifold.conf
deleted file mode 100644
index bd1b5a3c..00000000
--- a/world/map/conf/magic-conf-ifold.conf
+++ /dev/null
@@ -1,4 +0,0 @@
-version-le: 14.1.27
-
-magic_conf: conf/magic-base.conf
-magic_conf: conf/magic-secrets.conf
diff --git a/world/map/conf/magic-secrets.conf.template b/world/map/conf/magic-secrets.conf.template
deleted file mode 100644
index c53ee8a8..00000000
--- a/world/map/conf/magic-secrets.conf.template
+++ /dev/null
@@ -1,86 +0,0 @@
-# coding of generic spellinvocations
-# #[indicates difficulty level][indicates questionnumber][indicates answerpossibility]
-# X = easy; Y = medium; Z = hard
-# each question have a number of possible answers (mostly using capital letters or not)
-
-NONMAGIC SPELL towelanswer00a : "#X00" = EFFECT { message strcharinfo(0), ""; };
-NONMAGIC SPELL towelanswer00b : "#X01" = EFFECT { message strcharinfo(0), ""; };
-NONMAGIC SPELL towelanswer01a : "#X10" = EFFECT { message strcharinfo(0), ""; };
-NONMAGIC SPELL towelanswer01b : "#X11" = EFFECT { message strcharinfo(0), ""; };
-NONMAGIC SPELL towelanswer02a : "#X20" = EFFECT { message strcharinfo(0), ""; };
-NONMAGIC SPELL towelanswer02b : "#X21" = EFFECT { message strcharinfo(0), ""; };
-NONMAGIC SPELL towelanswer03a : "#X30" = EFFECT { message strcharinfo(0), ""; };
-NONMAGIC SPELL towelanswer03b : "#X31" = EFFECT { message strcharinfo(0), ""; };
-NONMAGIC SPELL towelanswer04a : "#X40" = EFFECT { message strcharinfo(0), ""; };
-NONMAGIC SPELL towelanswer04b : "#X41" = EFFECT { message strcharinfo(0), ""; };
-NONMAGIC SPELL towelanswer05a : "#X50" = EFFECT { message strcharinfo(0), ""; };
-NONMAGIC SPELL towelanswer05b : "#X51" = EFFECT { message strcharinfo(0), ""; };
-NONMAGIC SPELL towelanswer05c : "#X52" = EFFECT { message strcharinfo(0), ""; };
-NONMAGIC SPELL towelanswer05d : "#X53" = EFFECT { message strcharinfo(0), ""; };
-NONMAGIC SPELL towelanswer06a : "#X60" = EFFECT { message strcharinfo(0), ""; };
-NONMAGIC SPELL towelanswer06b : "#X61" = EFFECT { message strcharinfo(0), ""; };
-NONMAGIC SPELL towelanswer06c : "#X62" = EFFECT { message strcharinfo(0), ""; };
-NONMAGIC SPELL towelanswer06d : "#X63" = EFFECT { message strcharinfo(0), ""; };
-NONMAGIC SPELL towelanswer07a : "#X70" = EFFECT { message strcharinfo(0), ""; };
-NONMAGIC SPELL towelanswer07b : "#X71" = EFFECT { message strcharinfo(0), ""; };
-NONMAGIC SPELL towelanswer08a : "#X80" = EFFECT { message strcharinfo(0), ""; };
-NONMAGIC SPELL towelanswer08b : "#X81" = EFFECT { message strcharinfo(0), ""; };
-NONMAGIC SPELL towelanswer08c : "#X82" = EFFECT { message strcharinfo(0), ""; };
-NONMAGIC SPELL towelanswer08d : "#X83" = EFFECT { message strcharinfo(0), ""; };
-NONMAGIC SPELL towelanswer09a : "#X90" = EFFECT { message strcharinfo(0), ""; };
-NONMAGIC SPELL towelanswer09b : "#X91" = EFFECT { message strcharinfo(0), ""; };
-
-NONMAGIC SPELL towelanswer10a : "#Y00" = EFFECT { message strcharinfo(0), ""; };
-NONMAGIC SPELL towelanswer10b : "#Y01" = EFFECT { message strcharinfo(0), ""; };
-NONMAGIC SPELL towelanswer11a : "#Y10" = EFFECT { message strcharinfo(0), ""; };
-NONMAGIC SPELL towelanswer11b : "#Y11" = EFFECT { message strcharinfo(0), ""; };
-NONMAGIC SPELL towelanswer12a : "#Y20" = EFFECT { message strcharinfo(0), ""; };
-NONMAGIC SPELL towelanswer12b : "#Y21" = EFFECT { message strcharinfo(0), ""; };
-NONMAGIC SPELL towelanswer13a : "#Y30" = EFFECT { message strcharinfo(0), ""; };
-NONMAGIC SPELL towelanswer13b : "#Y31" = EFFECT { message strcharinfo(0), ""; };
-NONMAGIC SPELL towelanswer14a : "#Y40" = EFFECT { message strcharinfo(0), ""; };
-NONMAGIC SPELL towelanswer14b : "#Y41" = EFFECT { message strcharinfo(0), ""; };
-NONMAGIC SPELL towelanswer15a : "#Y50" = EFFECT { message strcharinfo(0), ""; };
-NONMAGIC SPELL towelanswer15b : "#Y51" = EFFECT { message strcharinfo(0), ""; };
-NONMAGIC SPELL towelanswer15c : "#Y52" = EFFECT { message strcharinfo(0), ""; };
-NONMAGIC SPELL towelanswer16a : "#Y60" = EFFECT { message strcharinfo(0), ""; };
-NONMAGIC SPELL towelanswer16b : "#Y61" = EFFECT { message strcharinfo(0), ""; };
-NONMAGIC SPELL towelanswer17a : "#Y70" = EFFECT { message strcharinfo(0), ""; };
-NONMAGIC SPELL towelanswer17b : "#Y71" = EFFECT { message strcharinfo(0), ""; };
-NONMAGIC SPELL towelanswer18a : "#Y80" = EFFECT { message strcharinfo(0), ""; };
-NONMAGIC SPELL towelanswer18b : "#Y81" = EFFECT { message strcharinfo(0), ""; };
-NONMAGIC SPELL towelanswer18c : "#Y82" = EFFECT { message strcharinfo(0), ""; };
-NONMAGIC SPELL towelanswer18d : "#Y83" = EFFECT { message strcharinfo(0), ""; };
-NONMAGIC SPELL towelanswer19a : "#Y90" = EFFECT { message strcharinfo(0), ""; };
-NONMAGIC SPELL towelanswer19b : "#Y91" = EFFECT { message strcharinfo(0), ""; };
-NONMAGIC SPELL towelanswer19c : "#Y92" = EFFECT { message strcharinfo(0), ""; };
-NONMAGIC SPELL towelanswer19d : "#Y93" = EFFECT { message strcharinfo(0), ""; };
-NONMAGIC SPELL towelanswer110a : "#YA0" = EFFECT { message strcharinfo(0), ""; };
-NONMAGIC SPELL towelanswer110b : "#YA1" = EFFECT { message strcharinfo(0), ""; };
-NONMAGIC SPELL towelanswer111a : "#YB0" = EFFECT { message strcharinfo(0), ""; };
-NONMAGIC SPELL towelanswer111b : "#YB1" = EFFECT { message strcharinfo(0), ""; };
-
-NONMAGIC SPELL towelanswer20a : "#Z00" = EFFECT { message strcharinfo(0), ""; };
-NONMAGIC SPELL towelanswer20b : "#Z01" = EFFECT { message strcharinfo(0), ""; };
-NONMAGIC SPELL towelanswer20c : "#Z02" = EFFECT { message strcharinfo(0), ""; };
-NONMAGIC SPELL towelanswer20d : "#Z03" = EFFECT { message strcharinfo(0), ""; };
-NONMAGIC SPELL towelanswer21a : "#Z10" = EFFECT { message strcharinfo(0), ""; };
-NONMAGIC SPELL towelanswer21b : "#Z11" = EFFECT { message strcharinfo(0), ""; };
-NONMAGIC SPELL towelanswer22a : "#Z20" = EFFECT { message strcharinfo(0), ""; };
-NONMAGIC SPELL towelanswer22b : "#Z21" = EFFECT { message strcharinfo(0), ""; };
-NONMAGIC SPELL towelanswer23a : "#Z30" = EFFECT { message strcharinfo(0), ""; };
-NONMAGIC SPELL towelanswer23b : "#Z31" = EFFECT { message strcharinfo(0), ""; };
-NONMAGIC SPELL towelanswer24a : "#Z40" = EFFECT { message strcharinfo(0), ""; };
-NONMAGIC SPELL towelanswer24b : "#Z41" = EFFECT { message strcharinfo(0), ""; };
-NONMAGIC SPELL towelanswer25a : "#Z50" = EFFECT { message strcharinfo(0), ""; };
-NONMAGIC SPELL towelanswer25b : "#Z51" = EFFECT { message strcharinfo(0), ""; };
-NONMAGIC SPELL towelanswer26a : "#Z60" = EFFECT { message strcharinfo(0), ""; };
-NONMAGIC SPELL towelanswer26b : "#Z61" = EFFECT { message strcharinfo(0), ""; };
-NONMAGIC SPELL towelanswer27a : "#Z62" = EFFECT { message strcharinfo(0), ""; };
-NONMAGIC SPELL towelanswer27b : "#Z63" = EFFECT { message strcharinfo(0), ""; };
-NONMAGIC SPELL towelanswer27c : "#Z70" = EFFECT { message strcharinfo(0), ""; };
-NONMAGIC SPELL towelanswer27d : "#Z71" = EFFECT { message strcharinfo(0), ""; };
-NONMAGIC SPELL towelanswer28a : "#Z72" = EFFECT { message strcharinfo(0), ""; };
-NONMAGIC SPELL towelanswer28b : "#Z73" = EFFECT { message strcharinfo(0), ""; };
-NONMAGIC SPELL towelanswer29a : "#Z80" = EFFECT { message strcharinfo(0), ""; };
-NONMAGIC SPELL towelanswer29b : "#Z81" = EFFECT { message strcharinfo(0), ""; };
diff --git a/world/map/conf/tmwa-map.conf b/world/map/conf/tmwa-map.conf
index 7ed5da09..2a52dd74 100644
--- a/world/map/conf/tmwa-map.conf
+++ b/world/map/conf/tmwa-map.conf
@@ -14,7 +14,16 @@ const_db: db/const.txt
const_db: db/const-mapflags.txt
const_db: db/const-debugflag.txt
-item_db: db/item_db.txt
+item_db: db/chest_item_db.txt
+item_db: db/foot_item_db.txt
+item_db: db/generic_item_db.txt
+item_db: db/hand_item_db.txt
+item_db: db/head_item_db.txt
+item_db: db/leg_item_db.txt
+item_db: db/offhand_item_db.txt
+item_db: db/trinket_item_db.txt
+item_db: db/use_item_db.txt
+item_db: db/weapon_item_db.txt
mob_db: db/0_19_mob_db.txt
mob_db: db/20_39_mob_db.txt
mob_db: db/40_59_mob_db.txt
@@ -24,7 +33,7 @@ mob_db: db/over_100_mob_db.txt
mob_skill_db: db/mob_skill_db.txt
skill_db: db/skill_db.txt
-import: conf/magic-conf-ifold.conf
-import: conf/magic-conf-ifnew.conf
+magic_conf: conf/magic-base.sex
+magic_conf: conf/magic-secrets.sex
resnametable: data/resnametable.txt
diff --git a/world/map/data/028-1.wlk b/world/map/data/028-1.wlk
index bb8b802a..eee89eff 100644
--- a/world/map/data/028-1.wlk
+++ b/world/map/data/028-1.wlk
Binary files differ
diff --git a/world/map/data/041-1.wlk b/world/map/data/041-1.wlk
index e32e4713..908a9977 100644
--- a/world/map/data/041-1.wlk
+++ b/world/map/data/041-1.wlk
Binary files differ
diff --git a/world/map/data/042-1.wlk b/world/map/data/042-1.wlk
index 85c5ced3..ccd506c8 100644
--- a/world/map/data/042-1.wlk
+++ b/world/map/data/042-1.wlk
Binary files differ
diff --git a/world/map/data/042-2.wlk b/world/map/data/042-2.wlk
index 35db011b..77f96ce9 100644
--- a/world/map/data/042-2.wlk
+++ b/world/map/data/042-2.wlk
Binary files differ
diff --git a/world/map/data/042-3.wlk b/world/map/data/042-3.wlk
new file mode 100644
index 00000000..a57e8126
--- /dev/null
+++ b/world/map/data/042-3.wlk
Binary files differ
diff --git a/world/map/data/resnametable.txt b/world/map/data/resnametable.txt
index 4d305886..9284d5e9 100644
--- a/world/map/data/resnametable.txt
+++ b/world/map/data/resnametable.txt
@@ -103,6 +103,7 @@
041-1.gat#041-1.wlk#
042-1.gat#042-1.wlk#
042-2.gat#042-2.wlk#
+042-3.gat#042-3.wlk#
043-1.gat#043-1.wlk#
043-3.gat#043-3.wlk#
043-4.gat#043-4.wlk#
diff --git a/world/map/db/0_19_mob_db.txt b/world/map/db/0_19_mob_db.txt
index 2ccd6f39..36169593 100644
--- a/world/map/db/0_19_mob_db.txt
+++ b/world/map/db/0_19_mob_db.txt
@@ -1,5 +1,7 @@
//ID, Name, Jname, LV, HP, SP, EXP, JEXP, Range1, ATK1, ATK2, DEF, MDEF, STR, AGI, VIT, INT, DEX, LUK, Range2, Range3, Scale, Race, Element,Mode, Speed, Adelay, Amotion,Dmotion,Drop1id,Drop1per,Drop2id,Drop2%, Drop3id,Drop3%, Drop4id,Drop4%, Drop5id,Drop5%, Drop6id,Drop6%, Drop7id,Drop7%, Drop8id,Drop8%, Item1, Item2, MEXP, ExpPer, MVP1id, MVP1per,MVP2id, MVP2per,MVP3id, MVP3per,mutationcount,mutationstrength
1002, Maggot, Maggot, 5, 50, 0, 0, 1, 1, 5, 10, 0, 5, 1, 1, 1, 0, 6, 5, 1, 1, 1, 3, 21, 129, 800, 1872, 672, 480, 505, 800, 501, 150, 518, 400, 533, 150, 502, 70, 522, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+1046, TameScorpion, TameScorpion, 5, 50, 0, 0, 2, 1, 7, 10, 0, 5, 1, 1, 1, 0, 15, 5, 1, 1, 1, 3, 20, 129, 2000, 1872, 672, 480, 507, 700, 510, 100, 509, 50, 518, 700, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+1050, HouseMaggot, HouseMaggot, 5, 50, 0, 0, 3, 1, 7, 7, 0, 5, 5, 5, 1, 0, 6, 5, 1, 1, 1, 3, 21, 133, 700, 1872, 672, 480, 505, 800, 501, 150, 518, 400, 533, 150, 502, 70, 522, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
1003, Scorpion, Scorpion, 10, 100, 0, 0, 2, 1, 10, 15, 0, 5, 1, 1, 1, 0, 15, 5, 1, 1, 1, 3, 20, 129, 2000, 1872, 672, 480, 507, 700, 510, 100, 509, 50, 518, 700, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
1029, MauvePlant, MauvePlant, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 3, 22, 0, 800, 800, 672, 480, 680, 3000, 680, 3000, 680, 3000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 60
1030, CobaltPlant, CobaltPlant, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 3, 22, 0, 800, 800, 672, 480, 681, 3000, 681, 3000, 681, 3000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
@@ -11,5 +13,5 @@
1063, Pumpkin, Pumpkin, 1, 200, 0, 0, 1, 1, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 1, 1, 1, 3, 22, 0, 800, 800, 672, 480, 3000, 100, 3001, 20, 3002, 10, 3003, 15, 3011, 500, 3006, 1500, 3007, 2000, 3010, 2500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
1082, Serqet, Serqet, 10, 100, 0, 0, 2, 1, 10, 15, 0, 5, 1, 1, 1, 0, 15, 5, 1, 1, 1, 3, 20, 129, 2000, 1872, 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
1092, SlimeBlast, SlimeBlast, 10, 100, 0, 0, 8, 1, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 1, 1, 1, 0, 61, 175, 250, 1872, 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, 1, 20
-1095, WhiteBell, WhiteBell, 1, 1, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 3, 22, 0, 800, 800, 672, 480, 861, 5000, 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
+1095, WhiteBell, WhiteBell, 10, 100, 0, 0, 40, 2, 70, 75, 0, 5, 16, 12, 20, 20, 20, 50, 2, 2, 1, 3, 22, 128, 800, 800, 672, 480, 535, 100, 540, 10, 1199, 100, 526, 400, 861, 5000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 50
1105, ViciousSquirrel, ViciousSquirrel, 15, 140, 1, 0, 7, 1, 20, 25, 1, 6, 3, 3, 1, 0, 15, 40, 1, 1, 1, 3, 20, 133, 800, 800, 672, 480, 704, 7000, 680, 1000, 681, 1000, 682, 1000, 683, 1000, 807, 800, 4005, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 15
diff --git a/world/map/db/40_59_mob_db.txt b/world/map/db/40_59_mob_db.txt
index a27c015c..7e44e845 100644
--- a/world/map/db/40_59_mob_db.txt
+++ b/world/map/db/40_59_mob_db.txt
@@ -11,3 +11,4 @@
1098, CopperSlime, CopperSlime, 40, 600, 0, 0, 18, 1, 60, 90, 20, 30, 20, 30, 10, 10, 30, 30, 1, 1, 1, 0, 21, 131, 1200, 1872, 672, 480, 640, 1500, 537, 1000, 4001, 300, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 20
1111, CandiedSlime, CandiedSlime, 50, 800, 0, 800, 66, 3, 50, 50, 20, 30, 20, 30, 10, 10, 30, 30, 1, 1, 1, 0, 21, 175, 1200, 1872, 672, 480, 510, 1000, 509, 1000, 515, 200, 516, 200, 538, 200, 512, 200, 508, 500, 514, 750, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 20
1112, Santaboo, Santaboo, 50, 2200, 0, 0, 59, 2, 80, 125, 50, 10, 25, 10, 25, 0, 60, 30, 2, 2, 1, 3, 20, 129, 600, 1872, 672, 480, 512, 1000, 736, 1200, 737, 1200, 738, 1200, 739, 1200, 511, 50, 4042, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 30
+1131, ManaBug, ManaBug, 50, 650, 0, 0, 35, 2, 65, 80, 4, 6, 16, 40, 10, 40, 50, 40, 1, 1, 1, 3, 22, 137, 800, 1800, 672, 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, 1, 60
diff --git a/world/map/db/chest_item_db.txt b/world/map/db/chest_item_db.txt
new file mode 100644
index 00000000..6614e5dd
--- /dev/null
+++ b/world/map/db/chest_item_db.txt
@@ -0,0 +1,243 @@
+// Name and Label MUST NOT exceed 23 characters (as marked)
+//ID, Name___________________, Label__________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
+523, LeatherShirt, Leather Shirt, 5, 2000, 1000, 20, 0, 4, 0, -12, 0, 2, 512, 0, 0, 0, {}, {}
+546, DesertShirt, Desert Shirt, 5, 2000, 1000, 20, 0, 6, 0, -18, 0, 2, 512, 0, 0, 0, {}, {}
+564, TurtleneckSweater, Turtleneck Sweater, 5, 2000, 1000, 30, 0, 6, 0, -18, 0, 2, 512, 0, 0, 0, {}, {}
+622, Bandana, Bandana, 5, 1000, 500, 20, 0, 3, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
+624, VNeckSweater, V-Neck Sweater, 5, 6000, 3000, 35, 0, 8, 0, -24, 0, 2, 512, 0, 0, 0, {}, {}
+625, ChainmailShirt, Chainmail Shirt, 5, 15000, 1500, 800, 0, 20, 0, -120, 0, 2, 512, 0, 0, 0, {}, {}
+626, LightPlatemail, Light Platemail, 5, 50000, 2500, 1200, 0, 25, 0, -150, 0, 2, 512, 0, 0, 0, {}, {}
+645, GoldenPlatemail, Golden Platemail, 5, 9999000, 3000, 4500, 0, 25, 0, -100, 0, 2, 512, 0, 0, 0, {}, {}
+649, WhiteEvokersRobeBlue, White Evokers Robe Blue, 5, 8000, 4000, 5, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+650, BlackEvokersRobeBlue, Black Evokers Robe Blue, 5, 8000, 4000, 5, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+651, WhiteWizardRobe, White Wizard Robe, 5, 8000, 4000, 5, 0, 5, 0, 0, 0, 2, 512, 0, 0, 0, {}, {}
+652, BlackWizardRobe, Black Wizard Robe, 5, 8000, 4000, 5, 0, 5, 0, 0, 0, 2, 512, 0, 0, 0, {}, {}
+653, ApprenticeRobe, Apprentice Robe, 5, 8000, 4000, 5, 0, 5, 0, 0, 0, 2, 512, 0, 0, 0, {}, {}
+658, WarlordPlate, Warlord Plate, 5, 100000, 3000, 2600, 0, 27, 0, -170, 0, 2, 512, 0, 0, 0, {}, {}
+659, GoldenWarlordPlate, Golden Warlord Plate, 5, 500000, 4000, 7600, 0, 27, 0, -110, 0, 2, 512, 0, 0, 0, {}, {}
+//ID, Name___________________, Label__________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
+688, TankTop, Tank Top, 5, 800, 400, 10, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
+689, ShortTankTop, Short Tank Top, 5, 600, 300, 8, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
+720, SilkRobe, Silk Robe, 5, 8000, 4000, 5, 0, 5, 0, 0, 0, 2, 512, 0, 0, 0, {}, {}
+726, GMRobe, GM Robe, 5, 8000, 4000, 40, 0, 5, 0, 0, 0, 2, 512, 0, 0, 0, {}, {callfunc "RestrictedItem";}
+755, AssassinShirt, Assassin Shirt, 5, 10000, 3000, 15, 0, 10, 0, -5, 0, 2, 512, 0, 0, 0, {}, {callfunc "UnreleasedItem";bonus bAgi, 10;}
+767, TerraniteChestArmor, Terranite Chest Armor, 5, 100000, 3000, 800, 0, 20, 0, -70, 0, 2, 512, 0, 0, 0, {}, {bonus bDex, 1;bonus bMdef, 10;}
+782, ForestArmor, Forest Armor, 5, 3000, 1500, 40, 0, 10, 0, -20, 0, 2, 512, 0, 0, 0, {}, {bonus bDex, 3;}
+783, PlatynaRedDress, Platyna Red Dress, 5, 100000, 50000, 35, 0, 15, 0, 3, 0, 2, 512, 0, 0, 0, {}, {}
+791, YetiSkinShirt, Yeti Skin Shirt, 5, 20000, 10000, 20, 0, 12, 0, -12, 0, 2, 512, 0, 0, 0, {}, {}
+793, BromenalChest, Bromenal Chest, 5, 100000, 3000, 2000, 0, 25, 0, -170, 0, 2, 512, 0, 0, 0, {}, {}
+798, SorcererRobeRed, Sorcerer Robe Red, 5, 8000, 4000, 5, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+870, FineDress, Fine Dress, 5, 10000, 5000, 35, 0, 8, 0, 3, 0, 2, 512, 0, 0, 0, {}, {}
+880, LazuriteRobe, Lazurite Robe, 5, 92000, 52000, 30, 0, 7, 0, 60, 0, 2, 512, 0, 90, 0, {}, {set @bStat, bInt;set @minbStatVal, 70;callfunc "RequireStat"; set @bStat, bVit;set @minbStatVal, 40;callfunc "RequireStat"; bonus bSpeedAddRate, -15; bonus bDef2Rate, -40; bonus bMdef, 60; bonus bVit, -1; bonus bInt, 7; bonus bLuk, -1; bonus bDex, -1; bonus bStr, -1;}
+1176, ContributorshirtGuru, Contributorshirt (Guru), 5, 8000, 4000, 20, 0, 5, 0, 5, 0, 2, 512, 0, 0, 0, {}, {}
+1177, Contributorshirt2013, Contributorshirt (2013), 5, 8000, 4000, 20, 0, 5, 0, 5, 0, 2, 512, 0, 0, 0, {}, {}
+1178, Contributorshirt2014, Contributorshirt (2014), 5, 8000, 4000, 20, 0, 5, 0, 5, 0, 2, 512, 0, 0, 0, {}, {}
+1179, Contributorshirt2015, Contributorshirt (2015), 5, 8000, 4000, 20, 0, 5, 0, 5, 0, 2, 512, 0, 0, 0, {}, {}
+1180, Contributorshirt2016, Contributorshirt (2016), 5, 8000, 4000, 20, 0, 5, 0, 5, 0, 2, 512, 0, 0, 0, {}, {}
+1181, Contributorshirt2017, Contributorshirt (2017), 5, 8000, 4000, 20, 0, 5, 0, 5, 0, 2, 512, 0, 0, 0, {}, {}
+1182, Contributorshirt2018, Contributorshirt (2018), 5, 8000, 4000, 20, 0, 5, 0, 5, 0, 2, 512, 0, 0, 0, {}, {}
+1183, AmberChristmasSweater, Amber Christmas Sweater, 5, 2000, 1000, 35, 0, 6, 0, -12, 0, 2, 512, 0, 0, 0, {}, {}
+1184, FunkyChristmasSweater, Funky Christmas Sweater, 5, 2000, 1000, 35, 0, 6, 0, -12, 0, 2, 512, 0, 0, 0, {}, {}
+1185, PinkChristmasSweater, Pink Christmas Sweater, 5, 8000, 4000, 30, 0, 5, 0, 0, 0, 2, 512, 0, 0, 0, {}, {}
+1186, DarkChristmasSweater, Dark Christmas Sweater, 5, 2000, 1000, 35, 0, 6, 0, -12, 0, 2, 512, 0, 0, 0, {}, {}
+1187, BlueChristmasSweater, Blue Christmas Sweater, 5, 8000, 4000, 30, 0, 5, 0, 0, 0, 2, 512, 0, 0, 0, {}, {}
+1202, CottonShirt, Cotton Shirt, 5, 300, 5, 13, 0, 2, 0, -2, 0, 2, 512, 0, 0, 0, {}, {}
+//ID, Name___________________, Label__________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
+2050, RedCottonShirt, Red Cotton Shirt, 5, 300, 5, 20, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
+2051, GreenCottonShirt, Green Cotton Shirt, 5, 300, 5, 20, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
+2052, DarkBlueCottonShirt, Dark Blue Cotton Shirt, 5, 300, 5, 20, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
+2053, YellowCottonShirt, Yellow Cotton Shirt, 5, 300, 5, 20, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
+2054, LightBlueCottonShirt, Light Blue Cotton Shirt, 5, 300, 5, 20, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
+2055, PinkCottonShirt, Pink Cotton Shirt, 5, 300, 5, 20, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
+2056, BlackCottonShirt, Black Cotton Shirt, 5, 300, 5, 20, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
+2057, OrangeCottonShirt, Orange Cotton Shirt, 5, 300, 5, 20, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
+2058, PurpleCottonShirt, Purple Cotton Shirt, 5, 300, 5, 20, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
+2059, DarkGreenCottonShirt, Dark Green Cotton Shirt, 5, 300, 5, 20, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
+2060, RedVNeckSweater, Red V-Neck Sweater, 5, 6000, 3000, 35, 0, 8, 0, -16, 0, 2, 512, 0, 0, 0, {}, {}
+2061, GreenVNeckSweater, Green V-Neck Sweater, 5, 6000, 3000, 35, 0, 8, 0, -16, 0, 2, 512, 0, 0, 0, {}, {}
+2062, DarkBlueVNeckSweater, Dark Blue V-Neck Sweate, 5, 6000, 3000, 35, 0, 8, 0, -16, 0, 2, 512, 0, 0, 0, {}, {}
+2063, YellowVNeckSweater, Yellow V-Neck Sweater, 5, 6000, 3000, 35, 0, 8, 0, -16, 0, 2, 512, 0, 0, 0, {}, {}
+2064, LightBlueVNeckSweater, Light Blue V-Neck Sweat, 5, 6000, 3000, 35, 0, 8, 0, -16, 0, 2, 512, 0, 0, 0, {}, {}
+//ID, Name___________________, Label__________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
+2065, PinkVNeckSweater, Pink V-Neck Sweater, 5, 6000, 3000, 35, 0, 8, 0, -16, 0, 2, 512, 0, 0, 0, {}, {}
+2066, BlackVNeckSweater, Black V-Neck Sweater, 5, 6000, 3000, 35, 0, 8, 0, -16, 0, 2, 512, 0, 0, 0, {}, {}
+2067, OrangeVNeckSweater, Orange V-Neck Sweater, 5, 6000, 3000, 35, 0, 8, 0, -16, 0, 2, 512, 0, 0, 0, {}, {}
+2068, PurpleVNeckSweater, Purple V-Neck Sweater, 5, 6000, 3000, 35, 0, 8, 0, -16, 0, 2, 512, 0, 0, 0, {}, {}
+2069, DarkGreenVNeckSweater, Dark Green V-Neck Sweat, 5, 6000, 3000, 35, 0, 8, 0, -16, 0, 2, 512, 0, 0, 0, {}, {}
+2070, RedTurtleneckSweater, Red Turtleneck Sweater, 5, 2000, 1000, 35, 0, 6, 0, -12, 0, 2, 512, 0, 0, 0, {}, {}
+2071, GreenTurtleneckSweater, Green Turtleneck Sweate, 5, 2000, 1000, 35, 0, 6, 0, -12, 0, 2, 512, 0, 0, 0, {}, {}
+2072, DarkBlueTurtleneckSweat, Dark Blue Turtleneck Sw, 5, 2000, 1000, 35, 0, 6, 0, -12, 0, 2, 512, 0, 0, 0, {}, {}
+2073, YellowTurtleneckSweater, Yellow Turtleneck Sweat, 5, 2000, 1000, 35, 0, 6, 0, -12, 0, 2, 512, 0, 0, 0, {}, {}
+2074, LightBlueTurtleneckSwea, Light Blue Turtleneck S, 5, 2000, 1000, 35, 0, 6, 0, -12, 0, 2, 512, 0, 0, 0, {}, {}
+2075, PinkTurtleneckSweater, Pink Turtleneck Sweater, 5, 2000, 1000, 35, 0, 6, 0, -12, 0, 2, 512, 0, 0, 0, {}, {}
+2076, BlackTurtleneckSweater, Black Turtleneck Sweate, 5, 2000, 1000, 35, 0, 6, 0, -12, 0, 2, 512, 0, 0, 0, {}, {}
+2077, OrangeTurtleneckSweater, Orange Turtleneck Sweat, 5, 2000, 1000, 35, 0, 6, 0, -12, 0, 2, 512, 0, 0, 0, {}, {}
+2078, PurpleTurtleneckSweater, Purple Turtleneck Sweat, 5, 2000, 1000, 35, 0, 6, 0, -12, 0, 2, 512, 0, 0, 0, {}, {}
+2079, DarkGreenTurtleneckSwea, Dark Green Turtleneck S, 5, 2000, 1000, 35, 0, 6, 0, -12, 0, 2, 512, 0, 0, 0, {}, {}
+2080, RedSilkRobe, Red Silk Robe, 5, 8000, 4000, 30, 0, 5, 0, 0, 0, 2, 512, 0, 0, 0, {}, {}
+2081, GreenSilkRobe, Green Silk Robe, 5, 8000, 4000, 30, 0, 5, 0, 0, 0, 2, 512, 0, 0, 0, {}, {}
+2082, DarkBlueSilkRobe, Dark Blue Silk Robe, 5, 8000, 4000, 30, 0, 5, 0, 0, 0, 2, 512, 0, 0, 0, {}, {}
+2083, YellowSilkRobe, Yellow Silk Robe, 5, 8000, 4000, 30, 0, 5, 0, 0, 0, 2, 512, 0, 0, 0, {}, {}
+2084, LightBlueSilkRobe, Light Blue Silk Robe, 5, 8000, 4000, 30, 0, 5, 0, 0, 0, 2, 512, 0, 0, 0, {}, {}
+//ID, Name___________________, Label__________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
+2085, PinkSilkRobe, Pink Silk Robe, 5, 8000, 4000, 30, 0, 5, 0, 0, 0, 2, 512, 0, 0, 0, {}, {}
+2086, BlackSilkRobe, Black Silk Robe, 5, 8000, 4000, 30, 0, 5, 0, 0, 0, 2, 512, 0, 0, 0, {}, {}
+2087, OrangeSilkRobe, Orange Silk Robe, 5, 8000, 4000, 30, 0, 5, 0, 0, 0, 2, 512, 0, 0, 0, {}, {}
+2088, PurpleSilkRobe, Purple Silk Robe, 5, 8000, 4000, 30, 0, 5, 0, 0, 0, 2, 512, 0, 0, 0, {}, {}
+2089, DarkGreenSilkRobe, Dark Green Silk Robe, 5, 8000, 4000, 30, 0, 5, 0, 0, 0, 2, 512, 0, 0, 0, {}, {}
+2090, RedTankTop, Red Tank Top, 5, 800, 400, 12, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
+2091, GreenTankTop, Green Tank Top, 5, 800, 400, 12, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
+2092, DarkBlueTankTop, Dark Blue Tank Top, 5, 800, 400, 12, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
+2093, YellowTankTop, Yellow Tank Top, 5, 800, 400, 12, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
+2094, LightBlueTankTop, Light Blue Tank Top, 5, 800, 400, 12, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
+2095, PinkTankTop, Pink Tank Top, 5, 800, 400, 12, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
+2096, BlackTankTop, Black Tank Top, 5, 800, 400, 12, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
+2097, OrangeTankTop, Orange Tank Top, 5, 800, 400, 12, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
+2098, PurpleTankTop, Purple Tank Top, 5, 800, 400, 12, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
+2099, DarkGreenTankTop, Dark Green Tank Top, 5, 800, 400, 12, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
+2100, RedCottonSkirt, Red Cotton Skirt, 5, 1000, 500, 20, 0, 4, 0, -8, 0, 2, 1, 0, 1, 0, {}, {}
+2101, GreenCottonSkirt, Green Cotton Skirt, 5, 1000, 500, 20, 0, 4, 0, -8, 0, 2, 1, 0, 1, 0, {}, {}
+//ID, Name___________________, Label__________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
+2120, RedShortTankTop, Red Short Tank Top, 5, 600, 300, 8, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
+2121, GreenShortTankTop, Green Short Tank Top, 5, 600, 300, 8, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
+2122, DarkBlueShortTankTop, Dark Blue Short Tank To, 5, 600, 300, 8, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
+2123, YellowShortTankTop, Yellow Short Tank Top, 5, 600, 300, 8, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
+2124, LightBlueShortTankTop, Light Blue Short Tank T, 5, 600, 300, 8, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
+2125, PinkShortTankTop, Pink Short Tank Top, 5, 600, 300, 8, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
+2126, BlackShortTankTop, Black Short Tank Top, 5, 600, 300, 8, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
+2127, OrangeShortTankTop, Orange ShortTank Top, 5, 600, 300, 8, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
+2128, PurpleShortTankTop, Purple Short Tank Top, 5, 600, 300, 8, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
+2129, DarkGreenShortTankTop, Dark Green Short Tank T, 5, 600, 300, 8, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
+//ID, Name___________________, Label__________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
+2220, RedSorcererRobeRed, Red Sorcerer Robe Red, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+2221, GreenSorcererRobeRed, Green Sorcerer Robe Red, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+2222, DarkBlueSorcererRobeRed, Dark Blue Sorcerer Robe, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+2223, YellowSorcererRobeRed, Yellow Sorcerer Robe Re, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+2224, LightBlueSorcererRobeRe, Light Blue Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+2225, PinkSorcererRobeRed, Pink Sorcerer Robe Red, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+2226, BlackSorcererRobeRed, Black Sorcerer Robe Red, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+2227, OrangeSorcererRobeRed, Orange Sorcerer Robe Re, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+2228, PurpleSorcererRobeRed, Purple Sorcerer Robe Re, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+2229, DarkGreenSorcererRobeRe, Dark Green Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+2240, FineRedDress, Fine Red Dress, 5, 10000, 5000, 35, 0, 8, 0, 3, 0, 2, 512, 0, 0, 0, {}, {}
+2241, FineGreenDress, Fine Green Dress, 5, 10000, 5000, 35, 0, 8, 0, 3, 0, 2, 512, 0, 0, 0, {}, {}
+2242, FineDarkBlueDress, Fine Dark Blue Dress, 5, 10000, 5000, 35, 0, 8, 0, 3, 0, 2, 512, 0, 0, 0, {}, {}
+2243, FineYellowDress, Fine Yellow Dress, 5, 10000, 5000, 35, 0, 8, 0, 3, 0, 2, 512, 0, 0, 0, {}, {}
+2244, FineLightBlueDress, Fine Light Blue Dress, 5, 10000, 5000, 35, 0, 8, 0, 3, 0, 2, 512, 0, 0, 0, {}, {}
+2245, FinePinkDress, Fine Pink Dress, 5, 10000, 5000, 35, 0, 8, 0, 3, 0, 2, 512, 0, 0, 0, {}, {}
+2246, FineBlackDress, Fine Black Dress, 5, 10000, 5000, 35, 0, 8, 0, 3, 0, 2, 512, 0, 0, 0, {}, {}
+2247, FineOrangeDress, Fine Orange Dress, 5, 10000, 5000, 35, 0, 8, 0, 3, 0, 2, 512, 0, 0, 0, {}, {}
+2248, FinePurpleDress, Fine Purple Dress, 5, 10000, 5000, 35, 0, 8, 0, 3, 0, 2, 512, 0, 0, 0, {}, {}
+2249, FineDarkGreenDress, Fine Dark Green Dress, 5, 10000, 5000, 35, 0, 8, 0, 3, 0, 2, 512, 0, 0, 0, {}, {}
+//ID, Name___________________, Label__________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
+5000, RedSorcererRobeGreen, Red Sorcerer Robe Green, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5001, GreenSorcererRobeGreen, Green Sorcerer Robe Gre, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5002, DarkBlueSorcererRobeGre, Dark Blue Sorcerer Robe, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5003, YellowSorcererRobeGreen, Yellow Sorcerer Robe Gr, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5004, LightBlueSorcererRobeGr, Light Blue Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5005, PinkSorcererRobeGreen, Pink Sorcerer Robe Gree, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5006, BlackSorcererRobeGreen, Black Sorcerer Robe Gre, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5007, OrangeSorcererRobeGreen, Orange Sorcerer Robe Gr, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5008, PurpleSorcererRobeGreen, Purple Sorcerer Robe Gr, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5009, DarkGreenSorcererRobeGr, Dark Green Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5010, SorcererRobeGreen, Sorcerer Robe Green, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5011, RedSorcererRobeDarkBlue, Red Sorcerer Robe Dark, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5012, GreenSorcererRobeDarkBl, Green Sorcerer Robe Dar, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5013, DarkBlueSorcererRobeDar, Dark Blue Sorcerer Robe, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5014, YellowSorcererRobeDarkB, Yellow Sorcerer Robe Da, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5015, LightBlueSorcererRobeDa, Light Blue Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5016, PinkSorcererRobeDarkBlu, Pink Sorcerer Robe Dark, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5017, BlackSorcererRobeDarkBl, Black Sorcerer Robe Dar, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5018, OrangeSorcererRobeDarkB, Orange Sorcerer Robe Da, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5019, PurpleSorcererRobeDarkB, Purple Sorcerer Robe Da, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5020, DarkGreenSorcererRobeDa, Dark Green Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5021, SorcererRobeDarkBlue, Sorcerer Robe Dark Blue, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5022, RedSorcererRobeYellow, Red Sorcerer Robe Yello, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5023, GreenSorcererRobeYellow, Green Sorcerer Robe Yel, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5024, DarkBlueSorcererRobeYel, Dark Blue Sorcerer Robe, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5025, YellowSorcererRobeYello, Yellow Sorcerer Robe Ye, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5026, LightBlueSorcererRobeYe, Light Blue Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5027, PinkSorcererRobeYellow, Pink Sorcerer Robe Yell, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5028, BlackSorcererRobeYellow, Black Sorcerer Robe Yel, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5029, OrangeSorcererRobeYello, Orange Sorcerer Robe Ye, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5030, PurpleSorcererRobeYello, Purple Sorcerer Robe Ye, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5031, DarkGreenSorcererRobeYe, Dark Green Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5032, SorcererRobeYellow, Sorcerer Robe Yellow, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5033, RedSorcererRobeLightBlu, Red Sorcerer Robe Light, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5034, GreenSorcererRobeLightB, Green Sorcerer Robe Lig, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5035, DarkBlueSorcererRobeLig, Dark Blue Sorcerer Robe, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5036, YellowSorcererRobeLight, Yellow Sorcerer Robe Li, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5037, LightBlueSorcererRobeLi, Light Blue Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5038, PinkSorcererRobeLightBl, Pink Sorcerer Robe Ligh, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5039, BlackSorcererRobeLightB, Black Sorcerer Robe Lig, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5040, OrangeSorcererRobeLight, Orange Sorcerer Robe Li, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5041, PurpleSorcererRobeLight, Purple Sorcerer Robe Li, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5042, DarkGreenSorcererRobeLi, Dark Green Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5043, SorcererRobeLightBlue, Sorcerer Robe Light Blu, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5044, RedSorcererRobePink, Red Sorcerer Robe Pink, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5045, GreenSorcererRobePink, Green Sorcerer Robe Pin, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5046, DarkBlueSorcererRobePin, Dark Blue Sorcerer Robe, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5047, YellowSorcererRobePink, Yellow Sorcerer Robe Pi, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5048, LightBlueSorcererRobePi, Light Blue Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5049, PinkSorcererRobePink, Pink Sorcerer Robe Pink, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+//ID, Name___________________, Label__________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
+5050, BlackSorcererRobePink, Black Sorcerer Robe Pin, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5051, OrangeSorcererRobePink, Orange Sorcerer Robe Pi, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5052, PurpleSorcererRobePink, Purple Sorcerer Robe Pi, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5053, DarkGreenSorcererRobePi, Dark Green Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5054, SorcererRobePink, Sorcerer Robe Pink, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5055, RedSorcererRobeBlack, Red Sorcerer Robe Black, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5056, GreenSorcererRobeBlack, Green Sorcerer Robe Bla, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5057, DarkBlueSorcererRobeBla, Dark Blue Sorcerer Robe, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5058, YellowSorcererRobeBlack, Yellow Sorcerer Robe Bl, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5059, LightBlueSorcererRobeBl, Light Blue Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5060, PinkSorcererRobeBlack, Pink Sorcerer Robe Blac, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5061, BlackSorcererRobeBlack, Black Sorcerer Robe Bla, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5062, OrangeSorcererRobeBlack, Orange Sorcerer Robe Bl, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5063, PurpleSorcererRobeBlack, Purple Sorcerer Robe Bl, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5064, DarkGreenSorcererRobeBl, Dark Green Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5065, SorcererRobeBlack, Sorcerer Robe Black, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5066, RedSorcererRobeOrange, Red Sorcerer Robe Orang, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5067, GreenSorcererRobeOrange, Green Sorcerer Robe Ora, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5068, DarkBlueSorcererRobeOra, Dark Blue Sorcerer Robe, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5069, YellowSorcererRobeOrang, Yellow Sorcerer Robe Or, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5070, LightBlueSorcererRobeOr, Light Blue Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5071, PinkSorcererRobeOrange, Pink Sorcerer Robe Oran, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5072, BlackSorcererRobeOrange, Black Sorcerer Robe Ora, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5073, OrangeSorcererRobeOrang, Orange Sorcerer Robe Or, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5074, PurpleSorcererRobeOrang, Purple Sorcerer Robe Or, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5075, DarkGreenSorcererRobeOr, Dark Green Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5076, SorcererRobeOrange, Sorcerer Robe Orange, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5077, RedSorcererRobePurple, Red Sorcerer Robe Purpl, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5078, GreenSorcererRobePurple, Green Sorcerer Robe Pur, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5079, DarkBlueSorcererRobePur, Dark Blue Sorcerer Robe, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5080, YellowSorcererRobePurpl, Yellow Sorcerer Robe Pu, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5081, LightBlueSorcererRobePu, Light Blue Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5082, PinkSorcererRobePurple, Pink Sorcerer Robe Purp, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5083, BlackSorcererRobePurple, Black Sorcerer Robe Pur, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5084, OrangeSorcererRobePurpl, Orange Sorcerer Robe Pu, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5085, PurpleSorcererRobePurpl, Purple Sorcerer Robe Pu, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5086, DarkGreenSorcererRobePu, Dark Green Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5087, SorcererRobePurple, Sorcerer Robe Purple, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5088, RedSorcererRobeDarkGree, Red Sorcerer Robe Dark, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5089, GreenSorcererRobeDarkGr, Green Sorcerer Robe Dar, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5090, DarkBlueSorcererRobeDar, Dark Blue Sorcerer Robe, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5091, YellowSorcererRobeDarkG, Yellow Sorcerer Robe Da, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5092, LightBlueSorcererRobeDa, Light Blue Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5093, PinkSorcererRobeDarkGre, Pink Sorcerer Robe Dark, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5094, BlackSorcererRobeDarkGr, Black Sorcerer Robe Dar, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5095, OrangeSorcererRobeDarkG, Orange Sorcerer Robe Da, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5096, PurpleSorcererRobeDarkG, Purple Sorcerer Robe Da, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5097, DarkGreenSorcererRobeDa, Dark Green Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5098, SorcererRobeDarkGreen, Sorcerer Robe Dark Gree, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5099, RedSorcererRobeWhite, Red Sorcerer Robe White, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5100, GreenSorcererRobeWhite, Green Sorcerer Robe Whi, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5101, DarkBlueSorcererRobeWhi, Dark Blue Sorcerer Robe, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5102, YellowSorcererRobeWhite, Yellow Sorcerer Robe Wh, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5103, LightBlueSorcererRobeWh, Light Blue Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5104, PinkSorcererRobeWhite, Pink Sorcerer Robe Whit, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5105, BlackSorcererRobeWhite, Black Sorcerer Robe Whi, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5106, OrangeSorcererRobeWhite, Orange Sorcerer Robe Wh, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5107, PurpleSorcererRobeWhite, Purple Sorcerer Robe Wh, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5108, DarkGreenSorcererRobeWh, Dark Green Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
+5109, SorcererRobeWhite, Sorcerer Robe White, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
diff --git a/world/map/db/const.txt b/world/map/db/const.txt
index 8203174f..5c8d4ffa 100644
--- a/world/map/db/const.txt
+++ b/world/map/db/const.txt
@@ -643,3 +643,4 @@ MAX_HIGH_SCORES 4
AMMO_NONE 0
AMMO_BOW 1
AMMO_SLING 2
+AMMO_WAND 3
diff --git a/world/map/db/foot_item_db.txt b/world/map/db/foot_item_db.txt
new file mode 100644
index 00000000..e86be1c2
--- /dev/null
+++ b/world/map/db/foot_item_db.txt
@@ -0,0 +1,20 @@
+// Name and Label MUST NOT exceed 23 characters (as marked)
+//ID, Name___________________, Label__________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
+528, Boots, Boots, 5, 8000, 500, 80, 0, 2, 0, -2, 0, 2, 64, 0, 0, 0, {}, {}
+655, FurBoots, Fur Boots, 5, 5000, 600, 50, 0, 3, 0, -3, 0, 2, 64, 0, 0, 0, {}, {}
+734, BlackBoots, Black Boots, 5, 20000, 3000, 25, 0, 3, 0, -10, 0, 2, 64, 0, 0, 0, {}, {}
+735, CottonBoots, Cotton Boots, 5, 2000, 500, 10, 0, 1, 0, 1, 0, 2, 64, 0, 0, 0, {}, {}
+757, AssassinBoots, Assassin Boots, 5, 7000, 2000, 10, 0, 5, 0, -3, 0, 2, 64, 0, 0, 0, {}, {callfunc "UnreleasedItem";bonus bAgi, 5;}
+792, BromenalBoots, Bromenal Boots, 5, 8000, 500, 30, 0, 1, 0, -2, 0, 2, 64, 0, 0, 0, {}, {}
+876, WarlordBoots, Warlord Boots, 5, 19000, 2000, 550, 0, 5, 0, -22, 0, 2, 64, 0, 0, 0, {}, {}
+2150, RedCottonBoots, Red Cotton Boots, 5, 2000, 500, 30, 0, 1, 0, 1, 0, 2, 64, 0, 0, 0, {}, {}
+2151, GreenCottonBoots, Green Cotton Boots, 5, 2000, 500, 30, 0, 1, 0, 1, 0, 2, 64, 0, 0, 0, {}, {}
+2152, DarkBlueCottonBoots, Dark Blue Cotton Boots, 5, 2000, 500, 30, 0, 1, 0, 1, 0, 2, 64, 0, 0, 0, {}, {}
+2153, YellowCottonBoots, Yellow Cotton Boots, 5, 2000, 500, 30, 0, 1, 0, 1, 0, 2, 64, 0, 0, 0, {}, {}
+2154, LightBlueCottonBoots, Light Blue Cotton Boots, 5, 2000, 500, 30, 0, 1, 0, 1, 0, 2, 64, 0, 0, 0, {}, {}
+2155, PinkCottonBoots, Pink Cotton Boots, 5, 2000, 500, 30, 0, 1, 0, 1, 0, 2, 64, 0, 0, 0, {}, {}
+2156, BlackCottonBoots, Black Cotton Boots, 5, 2000, 500, 30, 0, 1, 0, 1, 0, 2, 64, 0, 0, 0, {}, {}
+2157, OrangeCottonBoots, Orange Cotton Boots, 5, 2000, 500, 30, 0, 1, 0, 1, 0, 2, 64, 0, 0, 0, {}, {}
+2158, PurpleCottonBoots, Purple Cotton Boots, 5, 2000, 500, 30, 0, 1, 0, 1, 0, 2, 64, 0, 0, 0, {}, {}
+2159, DarkGreenCottonBoots, Dark Green Cotton Boots, 5, 2000, 500, 30, 0, 1, 0, 1, 0, 2, 64, 0, 0, 0, {}, {}
+1188, RedStockings, Red Stockings, 5, 7000, 2000, 10, 0, 1, 0, 2, 0, 2, 64, 0, 0, 0, {}, {}
diff --git a/world/map/db/generic_item_db.txt b/world/map/db/generic_item_db.txt
new file mode 100644
index 00000000..74650721
--- /dev/null
+++ b/world/map/db/generic_item_db.txt
@@ -0,0 +1,241 @@
+// Name and Label MUST NOT exceed 23 characters (as marked)
+//ID, Name___________________, Label__________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
+503, CasinoCoins, Casino Coins, 3, 10, 10, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+504, DecorCandy, Decor Candy, 3, 25, 10, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+505, MaggotSlime, Maggot Slime, 3, 8, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+507, ScorpionStinger, Scorpion Stinger, 3, 50, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+515, PurplePresentBox, Purple Present Box, 3, 50, 25, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+516, BluePresentBox, Blue Present Box, 3, 60, 30, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+517, RedScorpionStinger, Red Scorpion Stinger, 3, 170, 85, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+518, BugLeg, Bug Leg, 3, 100, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+526, CoinBag, Coin Bag, 3, 1000, 500, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+537, TreasureKey, Treasure Key, 3, 100, 50, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+538, GreenPresentBox, Green Present Box, 3, 20, 10, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
+540, EmptyBottle, Empty Bottle, 3, 20, 10, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+542, BottleOfSand, Bottle of Sand, 3, 70, 35, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+551, AquaHint, Aqua Hint, 3, 20, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+552, MagentaHint, Magenta Hint, 3, 20, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+553, YellowHint, Yellow Hint, 3, 20, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+554, GreenHint, Green Hint, 3, 20, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+555, TealHint, Teal Hint, 3, 20, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+556, PurpleHint, Purple Hint, 3, 20, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+557, RedHint, Red Hint, 3, 20, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+558, BlueHint, Blue Hint, 3, 20, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+559, OrangeHint, Orange Hint, 3, 20, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+//ID, Name___________________, Label__________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
+560, GrayHint, Gray Hint, 3, 20, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+569, RawLog, Raw Log, 3, 20, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+611, WhiteFur, White Fur, 3, 8, 4, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+612, CaveSnakeLamp, Cave Snake Lamp, 3, 80, 40, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+613, HardSpike, Hard Spike, 3, 40, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+614, PinkAntenna, Pink Antenna, 3, 10, 5, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+631, DarkCrystal, Dark Crystal, 3, 1000, 250, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+635, SantaCookie, Santa Cookie, 3, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+640, IronOre, Iron Ore, 3, 250, 100, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+641, SnakeSkin, Snake Skin, 3, 250, 100, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+660, CottonCloth, Cotton Cloth, 3, 400, 100, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+661, RedRose, Red Rose, 3, 80, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+662, WhiteRose, White Rose, 3, 80, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+663, DarkRedRose, Dark Red Rose, 3, 80, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+664, PinkRose, Pink Rose, 3, 80, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+665, YellowRose, Yellow Rose, 3, 80, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+666, BlackRose, Black Rose, 3, 80, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+667, OrangeRose, Orange Rose, 3, 80, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+668, BlueRose, Blue Rose, 3, 80, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+669, YellowTulip, Yellow Tulip, 3, 80, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+670, PurpleTulip, Purple Tulip, 3, 80, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+671, RedTulip, Red Tulip, 3, 80, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+672, WhiteTulip, White Tulip, 3, 80, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+673, PinkTulip, Pink Tulip, 3, 80, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+674, OrangeTulip, Orange Tulip, 3, 80, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+677, HeartNecklace, Heart Necklace, 3, 2500, 1000, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+680, MauveHerb, Mauve Herb, 3, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+681, CobaltHerb, Cobalt Herb, 3, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+682, GambogeHerb, Gamboge Herb, 3, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+683, AlizarinHerb, Alizarin Herb, 3, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+690, RedDye, Red Dye, 3, 100, 20, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
+691, GreenDye, Green Dye, 3, 2500, 1000, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
+692, DarkBlueDye, Dark Blue Dye, 3, 40000, 15000, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
+693, YellowDye, Yellow Dye, 3, 100, 20, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
+694, LightBlueDye, Light Blue Dye, 3, 100, 20, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
+695, PinkDye, Pink Dye, 3, 2500, 1000, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
+696, BlackDye, Black Dye, 3, 30000, 25000, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
+697, OrangeDye, Orange Dye, 3, 2500, 1000, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
+698, PurpleDye, Purple Dye, 3, 70000, 50000, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
+699, DarkGreenDye, Dark Green Dye, 3, 2000, 1000, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
+700, Pearl, Pearl, 3, 5000, 3000, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
+701, PileOfAsh, Pile of Ash, 3, 3000, 100, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
+703, SulphurPowder, Sulphur Powder, 3, 1000, 25, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
+704, IronPowder, Iron Powder, 3, 800, 80, 3, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
+706, GoldenScorpionStinger, Golden Scorpion Stinger, 3, 2000, 500, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+707, MonsterOilPotion, Monster Oil Potion, 3, 10000, 2000, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+708, LeatherPatch, Leather Patch, 3, 300, 150, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+709, BlackScorpionStinger, Black Scorpion Stinger, 3, 250, 100, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+//ID, Name___________________, Label__________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
+710, SnakeTongue, Snake Tongue, 3, 60, 30, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+711, MountainSnakeTongue, Mountain Snake Tongue, 3, 80, 40, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+712, GrassSnakeTongue, Grass Snake Tongue, 3, 160, 80, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+713, CaveSnakeTongue, Cave Snake Tongue, 3, 120, 60, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+718, SilkCocoon, Silk Cocoon, 3, 200, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+727, Iten, Iten, 3, 0, 0, 8000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+728, MoubooFigurine, Mouboo Figurine, 3, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+729, WarpedLog, Warped Log, 3, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+//ID, Name___________________, Label__________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
+730, Lifestone, Lifestone, 3, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+732, DruidTreeBranch, Druid Tree Branch, 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+740, Root, Root, 3, 500, 200, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+746, MopoxCurePotion, Mopox Cure Potion, 3, 0, 0, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
+753, BatWing, Bat Wing, 3, 500, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+754, BatTeeth, Bat Teeth, 3, 600, 12, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+763, TerraniteOre, Terranite Ore, 3, 500, 250, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+772, WispPowder, Wisp Powder, 3, 700, 350, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+773, SpectrePowder, Spectre Powder, 3, 700, 350, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+774, PoltergeistPowder, Poltergeist Powder, 3, 700, 350, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+775, Bone, Bone, 3, 140, 70, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+776, Skull, Skull, 3, 900, 450, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+777, RottenRags, Rotten Rags, 3, 100, 50, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+778, DiseasedHeart, Diseased Heart, 3, 180, 90, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+779, UndeadEar, Undead Ear, 3, 30, 15, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+780, UndeadEye, Undead Eye, 3, 30, 15, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+799, MylarinDust, Mylarin Dust, 3, 10000, 5000, 3, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
+802, EasterBasket, Easter Basket, 3, 20, 10, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
+803, GrassLiner, Grass Liner, 3, 20, 10, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
+804, JellyBeans, Jelly Beans, 3, 20, 10, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
+805, ChocolateMouboo, Chocolate Mouboo, 3, 20, 10, 3, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
+806, ReedBundle, Reed Bundle, 3, 20, 10, 7, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
+807, GrassSeed, Grass Seed, 3, 20, 10, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
+819, DiamondPowder, Diamond Powder, 3, 1000, 500, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+820, RubyPowder, Ruby Powder, 3, 1000, 500, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+821, EmeraldPowder, Emerald Powder, 3, 1000, 500, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+822, SapphirePowder, Sapphire Powder, 3, 1000, 500, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+823, TopazPowder, Topaz Powder, 3, 1000, 500, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+824, AmethystPowder, Amethyst Powder, 3, 1000, 500, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+833, BrokenFourLeafAmulet, Broken Four-Leaf Amulet, 3, 100, 1, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
+834, BrokenDoll, Broken Doll, 3, 20, 5, 15, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
+835, HyvernStinger, Hyvern Stinger, 3, 100, 25, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
+836, GrubSlime, Grub Slime, 3, 40, 10, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
+841, RedDottedWrap, Red Dotted Wrap, 3, 50, 25, 500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+842, YellowDottedWrap, Yellow Dotted Wrap, 3, 50, 25, 500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+843, BlueDottedWrap, Blue Dotted Wrap, 3, 50, 25, 500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+844, PurpleStripedWrap, Purple Striped Wrap, 3, 50, 25, 500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+845, RedGoldenStripedWrap, Red Golden Striped Wrap, 3, 50, 25, 500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+846, GreenRedStripedWrap, Green Red Striped Wrap, 3, 50, 25, 500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+847, PlushMouboo, Plush Mouboo, 3, 50, 25, 200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+849, OpenPresentBox, Open Present Box, 3, 50, 25, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+850, ClosedChristmasBox, Closed Christmas Box, 3, 50, 25, 200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+851, StickReinboo, Stick Reinboo, 3, 50, 25, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+852, LeatherBall, Leather Ball, 3, 50, 25, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+853, Doll, Doll, 3, 50, 25, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+858, WolvernTooth, Wolvern Tooth, 3, 100, 50, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+859, WolvernPelt, Wolvern Pelt, 3, 500, 250, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+860, SquirrelPelt, Squirrel Pelt, 3, 50, 25, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+861, WhiteBellTuber, White Bell Tuber, 3, 20, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+862, IcedWater, Iced Water, 3, 100, 50, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+863, SilverMirror, Silver Mirror, 3, 500, 250, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+864, BookPage, Book Page, 3, 100, 50, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+866, LeatherSuitcase, Leather Suitcase, 3, 4000, 2000, 12000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+869, Antlers, Antlers, 3, 4000, 2000, 3000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+871, SealedSoul, Sealed Soul, 3, 12000, 1000, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+872, LockPicks, Lock Picks, 3, 5000, 1500, 150, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+873, LazuriteShard, Lazurite Shard, 3, 500, 50, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+874, LazuriteCrystal, Lazurite Crystal, 3, 3000, 200, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+875, HeartOfLazurite, Heart of Lazurite, 3, 10000, 400, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+891, SilkSheet, Silk Sheet, 3, 1000, 250, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+892, OrangeSummonFlower, Orange Summon Flower, 3, 50, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+893, PurpleSummonFlower, Purple Summon Flower, 3, 100, 50, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+894, WhiteSummonFlower, White Summon Flower, 3, 200, 100, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+895, YellowSummonFlower, Yellow Summon Flower, 3, 400, 200, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+896, RedSummonFlower, Red Summon Flower, 3, 600, 300, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+1191, WhiteWrap, White Wrap, 3, 50, 25, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+1192, YellowWrap, Yellow Wrap, 3, 50, 25, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+1193, BlueWrap, Blue Wrap, 3, 50, 25, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+1194, PurpleWrap, Purple Wrap, 3, 50, 25, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+1195, GreenWrap, Green Wrap, 3, 50, 25, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+1198, Soul, Soul, 3, 100000, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+1207, RedChristmasStocking, Red Christmas Stocking, 3, 80, 40, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+1208, RedEasterEgg, Red Easter Egg, 3, 80, 40, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+1209, GreenEasterEgg, Green Easter Egg, 3, 80, 40, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+1210, BlueEasterEgg, Blue Easter Egg, 3, 80, 40, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+1211, YellowEasterEgg, Yellow Easter Egg, 3, 80, 40, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+1212, PinkEasterEgg, Pink Easter Egg, 3, 80, 40, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+1213, TealEasterEgg, Teal Easter Egg, 3, 80, 40, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+1228, LightCrystal, Light Crystal, 3, 1000, 250, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+1233, FakeFangs, Cheap Plastic Fangs, 3, 20000, 10000, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
+1234, RedOrnament, Red Christmas Ornament, 3, 5000, 1, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
+1235, YellowOrnament, Yellow Christmas Orname, 3, 5000, 1, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
+1236, GreenOrnament, Green Christmas Ornamen, 3, 5000, 1, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
+1237, AquaOrnament, Aqua Christmas Ornament, 3, 5000, 1, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
+1238, BlueOrnament, Blue Christmas Ornament, 3, 5000, 1, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
+1239, MagentaOrnament, Magenta Christmas Ornam, 3, 5000, 1, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
+1240, SantaSnowGlobe, Santa Snow Globe, 3, 7500, 5000, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
+1241, SnowmanSnowGlobe, Snowman Snow Globe, 3, 7500, 5000, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
+1245, BentNeedle, Bent Needle, 3, 700, 1, 3, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
+1246, DarkEasterEgg, Dark Easter Egg, 3, 700, 50, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
+1249, StrangeCoin, Strange Coin, 3, 7000, 5000, 3, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
+1254, DarkPetal, Dark Petal, 3, 15000, 8000, 250, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
+1257, FlawedLens, Flawed Lens, 3, 10000, 5000, 3, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
+2250, RedCottonCloth, Red Cotton Cloth, 3, 400, 100, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+2251, GreenCottonCloth, Green Cotton Cloth, 3, 400, 100, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+2252, DarkBlueCottonCloth, Dark Blue Cotton Cloth, 3, 400, 100, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+2253, YellowCottonCloth, Yellow Cotton Cloth, 3, 400, 100, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+2254, LightBlueCottonCloth, Light Blue Cotton Cloth, 3, 400, 100, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+2255, PinkCottonCloth, Pink Cotton Cloth, 3, 400, 100, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+2256, BlackCottonCloth, Black Cotton Cloth, 3, 400, 100, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+2257, OrangeCottonCloth, Orange Cotton Cloth, 3, 400, 100, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+2258, PurpleCottonCloth, Purple Cotton Cloth, 3, 400, 100, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+2259, DarkGreenCottonCloth, Dark Green Cotton Cloth, 3, 400, 100, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+3000, JackOLantern, Jack-o-Lantern, 3, 200, 100, 1000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+3001, RubberBat, Rubber Bat, 3, 200, 100, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+3002, RealisticBrain, Realistic Brain, 3, 200, 100, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+3003, JarofBlood, Jar of Blood, 3, 200, 100, 375, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+3004, Tongue, Tongue, 3, 5, 1, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+3006, TonoriDelight, Tonori Delight, 3, 5, 1, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
+3007, Marshmallow, Marshmallow, 3, 5, 1, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
+3009, JellySkull, Jelly Skull, 3, 5, 1, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
+3010, CandyPumpkin, Candy Pumpkin, 3, 5, 1, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
+3011, PumpkinSeeds, Pumpkin Seeds, 3, 5, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+4000, AngryScorpionStinger, Angry Scorpion Stinger, 3, 50, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+4001, Coal, Coal, 3, 250, 100, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+4002, Diamond, Diamond, 3, 5000, 2500, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+//ID, Name___________________, Label__________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
+4003, Ruby, Ruby, 3, 5000, 2500, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+4004, Emerald, Emerald, 3, 5000, 2500, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+4005, Sapphire, Sapphire, 3, 5000, 2500, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+4006, Topaz, Topaz, 3, 5000, 2500, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+4007, Amethyst, Amethyst, 3, 5000, 2500, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+4015, IronIngot, Iron Ingot, 3, 500, 250, 200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+4016, BanditHood, Bandit Hood, 3, 100, 50, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+4017, RedPowder, Red Powder, 3, 3000, 5, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+4018, YellowPowder, Yellow Powder, 3, 3000, 5, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+4019, BluePowder, Blue Powder, 3, 3000, 5, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+4021, YellowPresentBox, Yellow Present Box, 3, 20, 10, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
+4022, WhitePresentBox, White Present Box, 3, 20, 10, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
+4023, AnimalBones, Animal Bones, 3, 50, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+4024, FrozenYetiTear, Frozen Yeti Tear, 3, 500, 250, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+4025, YetiClaw, Yeti Claw, 3, 150, 75, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+4026, IceCube, Ice Cube, 3, 200, 100, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+4029, GrimaceOfDementia, Grimace of Dementia, 3, 20, 10, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
+4034, BlackPearl, Black Pearl, 3, 8000, 4000, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+4037, WhiteBlanket, White Blanket, 3, 600, 125, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+4038, WhiteSaddleRug, White Saddle Rug, 3, 1000, 250, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+4039, RedSaddleRug, Red Saddle Rug, 3, 1200, 300, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+4040, RawTalisman, Raw Talisman, 3, 800, 200, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+4041, FlightTalisman, Flight Talisman, 3, 5000, 1200, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+5110, Bloodstone, Bloodstone, 3, 2000, 250, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+5111, BrainStem, Brain Stem, 3, 180, 90, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+5112, CryptKey, Crypt Key, 3, 300, 150, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+5113, Ectoplasm, Ectoplasm, 3, 80, 20, 4, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
+5114, Urn, Urn, 3, 40, 20, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+5115, VampireBatWing, Vampire Bat Wing, 3, 700, 20, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+5116, WraithHorn, Wraith Horn, 3, 700, 20, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+5117, AstralCube, Astral Cube, 3, 10000, 10, 800, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+5118, RunestoneA, Runestone A, 3, 1000, 100, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+5119, RunestoneL, Runestone L, 3, 1000, 100, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+5120, RunestoneN, Runestone N, 3, 1000, 100, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+5121, RunestoneT, Runestone T, 3, 1000, 100, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+5122, RunestoneW, Runestone W, 3, 1000, 100, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+5123, QuillOfBinding, Quill Of Binding, 3, 10, 10, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+5124, BloodInk, Blood Ink, 3, 10, 10, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+5125, UnderworldKey, Underworld Key, 3, 10, 10, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+5127, JarofOwnBlood, Jar of Own Blood, 3, 200, 100, 375, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+//ID, Name___________________, Label__________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
diff --git a/world/map/db/hand_item_db.txt b/world/map/db/hand_item_db.txt
new file mode 100644
index 00000000..d57062b5
--- /dev/null
+++ b/world/map/db/hand_item_db.txt
@@ -0,0 +1,19 @@
+// Name and Label MUST NOT exceed 23 characters (as marked)
+//ID, Name___________________, Label__________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
+531, MinerGloves, Miner Gloves, 5, 3000, 1000, 30, 0, 2, 0, -10, 0, 2, 4, 0, 0, 0, {}, {}
+532, LeatherGloves, Leather Gloves, 5, 6000, 2000, 20, 0, 4, 0, -20, 0, 2, 4, 0, 0, 0, {}, {}
+563, WinterGloves, Winter Gloves, 5, 6000, 3000, 20, 0, 3, 0, -15, 0, 2, 4, 0, 0, 0, {}, {}
+741, CottonGloves, Cotton Gloves, 5, 2000, 500, 10, 0, 1, 0, -10, 0, 2, 4, 0, 0, 0, {}, {}
+756, AssassinGloves, Assassin Gloves, 5, 7000, 2000, 9, 0, 5, 0, -3, 0, 2, 4, 0, 0, 0, {}, {callfunc "UnreleasedItem";bonus bAgi, 5;}
+794, BromenalGloves, Bromenal Gloves, 5, 6000, 2000, 40, 0, 4, 0, -20, 0, 2, 4, 0, 0, 0, {}, {}
+868, SilkGloves, Silk Gloves, 5, 5000, 2500, 4, 0, 1, 0, 0, 0, 2, 4, 0, 0, 0, {}, {}
+2160, RedCottonGloves, Red Cotton Gloves, 5, 2000, 500, 20, 0, 1, 0, -10, 0, 2, 4, 0, 0, 0, {}, {}
+2161, GreenCottonGloves, Green Cotton Gloves, 5, 2000, 500, 20, 0, 1, 0, -10, 0, 2, 4, 0, 0, 0, {}, {}
+2162, DarkBlueCottonGloves, Dark Blue Cotton Gloves, 5, 2000, 500, 20, 0, 1, 0, -10, 0, 2, 4, 0, 0, 0, {}, {}
+2163, YellowCottonGloves, Yellow Cotton Gloves, 5, 2000, 500, 20, 0, 1, 0, -10, 0, 2, 4, 0, 0, 0, {}, {}
+2164, LightBlueCottonGloves, Light Blue Cotton Glove, 5, 2000, 500, 20, 0, 1, 0, -10, 0, 2, 4, 0, 0, 0, {}, {}
+2165, PinkCottonGloves, Pink Cotton Gloves, 5, 2000, 500, 20, 0, 1, 0, -10, 0, 2, 4, 0, 0, 0, {}, {}
+2166, BlackCottonGloves, Black Cotton Gloves, 5, 2000, 500, 20, 0, 1, 0, -10, 0, 2, 4, 0, 0, 0, {}, {}
+2167, OrangeCottonGloves, Orange Cotton Gloves, 5, 2000, 500, 20, 0, 1, 0, -10, 0, 2, 4, 0, 0, 0, {}, {}
+2168, PurpleCottonGloves, Purple Cotton Gloves, 5, 2000, 500, 20, 0, 1, 0, -10, 0, 2, 4, 0, 0, 0, {}, {}
+2169, DarkGreenCottonGloves, Dark Green Cotton Glove, 5, 2000, 500, 20, 0, 1, 0, -10, 0, 2, 4, 0, 0, 0, {}, {}
diff --git a/world/map/db/head_item_db.txt b/world/map/db/head_item_db.txt
new file mode 100644
index 00000000..d7fc43f7
--- /dev/null
+++ b/world/map/db/head_item_db.txt
@@ -0,0 +1,186 @@
+// Name and Label MUST NOT exceed 23 characters (as marked)
+//ID, Name___________________, Label__________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
+511, SantaHat, Santa Hat, 5, 400, 200, 20, 0, 2, 0, -2, 0, 2, 256, 0, 0, 0, {}, {}
+524, FancyHat, Fancy Hat, 5, 1600, 800, 20, 0, 5, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
+525, MinersHat, Miner's Hat, 5, 800, 400, 40, 0, 4, 0, -8, 0, 2, 256, 0, 0, 0, {}, {}
+543, StandardHeadband, Standard Headband, 5, 800, 400, 10, 0, 3, 0, -3, 0, 2, 256, 0, 0, 0, {}, {}
+544, SilkHeadband, Silk Headband, 5, 5000, 2000, 10, 0, 10, 0, -10, 0, 2, 256, 0, 0, 0, {}, {}
+615, PumpkinHelmet, Pumpkin Helmet, 5, 2000, 1000, 60, 0, 4, 0, -4, 0, 2, 256, 0, 0, 0, {}, {}
+616, AxeHat, Axe Hat, 5, 2000, 1000, 50, 0, 4, 0, -4, 0, 2, 256, 0, 0, 0, {}, {}
+617, PirateHat, Pirate Hat, 5, 2000, 1000, 40, 0, 4, 0, -8, 0, 2, 256, 0, 0, 0, {}, {}
+618, Goggles, Goggles, 5, 500, 100, 20, 0, 2, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
+619, LeatherGoggles, Leather Goggles, 5, 1000, 500, 20, 0, 3, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
+620, Circlet, Circlet, 5, 2000, 1000, 25, 0, 4, 0, 5, 0, 2, 256, 0, 0, 0, {}, {}
+621, Eyepatch, Eyepatch, 5, 1000, 500, 5, 0, 3, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
+622, Bandana, Bandana, 5, 1000, 500, 20, 0, 3, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
+627, TopHat, Top Hat, 5, 2500, 1250, 30, 0, 10, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
+628, FunkyHat, Funky Hat, 5, 3000, 1500, 20, 0, 13, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
+629, MushHat, Mush Hat, 5, 2500, 1250, 30, 0, 10, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
+630, ShroomHat, Shroom Hat, 5, 3000, 1500, 30, 0, 13, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
+633, ChristmasElfHat, Christmas Elf Hat, 5, 3000, 1500, 30, 0, 13, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
+634, FaceMask, Face Mask, 5, 2500, 1250, 50, 0, 10, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
+636, WarlordHelmet, Warlord Helmet, 5, 30000, 3000, 900, 0, 18, 0, -36, 0, 2, 256, 0, 0, 0, {}, {}
+637, KnightsHelmet, Knight's Helmet, 5, 20000, 2000, 600, 0, 15, 0, -30, 0, 2, 256, 0, 0, 0, {}, {}
+638, InfantryHelmet, Infantry Helmet, 5, 15000, 1500, 400, 0, 15, 0, -30, 0, 2, 256, 0, 0, 0, {}, {}
+639, CrusadeHelmet, Crusade Helmet, 5, 25000, 2500, 1300, 0, 18, 0, -36, 0, 2, 256, 0, 0, 0, {}, {}
+643, WhiteCowboyHat, White Cowboy Hat, 5, 1800, 900, 30, 0, 6, 0, -12, 0, 2, 256, 0, 0, 0, {}, {}
+644, BlackCowboyHat, Black Cowboy Hat, 5, 1800, 900, 30, 0, 6, 0, -12, 0, 2, 256, 0, 0, 0, {}, {}
+646, Crown, Crown, 5, 5000, 1000, 240, 0, 4, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
+647, DevelopersCap, Developer's Cap, 5, 2000, 500, 20, 0, 5, 0, 5, 0, 2, 256, 0, 0, 0, {}, {}
+654, Cap, Cap, 5, 2000, 500, 20, 0, 5, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
+656, SerfHat, Serf Hat, 5, 500, 100, 20, 0, 2, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
+675, GraduationCap, Graduation Cap, 5, 1000, 250, 20, 0, 2, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
+678, NohMask, Noh Mask, 5, 7000, 1000, 18, 0, 3, 0, 1, 0, 2, 256, 0, 0, 0, {}, {}
+679, DemonMask, Demon Mask, 5, 10000, 5000, 23, 0, 3, 0, 5, 0, 2, 256, 0, 0, 0, {}, {}
+//ID, Name___________________, Label__________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
+721, HighPriestCrown, High Priest Crown, 5, 20000, 5000, 400, 0, 4, 0, 20, 0, 2, 256, 0, 0, 0, {}, {bonus bMaxSP, 20;}
+722, MonsterSkullHelmet, Monster Skull Helmet, 5, 15000, 3000, 250, 0, 7, 0, 10, 0, 2, 256, 0, 0, 0, {}, {bonus bMdef, 20;}
+723, DesertHat, Desert Hat, 5, 2400, 600, 20, 0, 3, 0, -1, 0, 2, 256, 0, 0, 0, {}, {}
+724, CottonHeadband, Cotton Headband, 5, 3000, 500, 5, 0, 2, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
+725, GMCap, GM Cap, 5, 2000, 500, 20, 0, 5, 0, 5, 0, 2, 256, 0, 0, 0, {}, {callfunc "RestrictedItem";}
+726, GMRobe, GM Robe, 5, 8000, 4000, 40, 0, 5, 0, 0, 0, 2, 512, 0, 0, 0, {}, {callfunc "RestrictedItem";}
+751, PinkieHat, Pinkie Hat, 5, 5000, 1000, 5, 0, 1, 0, 1, 0, 2, 256, 0, 0, 0, {}, {}
+752, FluffyHat, Fluffy Hat, 5, 7000, 2000, 10, 0, 2, 0, -5, 0, 2, 256, 0, 0, 0, {}, {}
+759, PaladinsHelmet, Paladin's Helmet, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+760, OverlordsHelmet, Overlord's Helmet, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+761, DesertHelmet, Desert Helmet, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+764, SailorHat, Sailor Hat, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+765, CaptainsHat, Captain's Hat, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+766, TerraniteHelmet, Terranite Helmet, 5, 30000, 3000, 300, 0, 15, 0, -12, 0, 2, 256, 0, 0, 0, {}, {bonus bMdef, 5;}
+769, GuyFawkesMask, Guy Fawkes Mask, 5, 1000, 500, 50, 0, 3, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
+770, FairyHat, Fairy Hat, 5, 2000, 1000, 20, 0, 5, 0, -10, 0, 2, 256, 0, 0, 0, {}, {bonus bLuk, 3;}
+795, BromenalHelmet, Bromenal Helmet, 5, 15000, 1500, 400, 0, 15, 0, -30, 0, 2, 256, 0, 0, 0, {}, {}
+800, BowlerHatBrown, Bowler Hat Brown, 5, 2500, 1250, 30, 0, 10, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
+801, PinkieHelmet, Pinkie Helmet, 5, 20000, 1500, 800, 0, 10, 0, -20, 0, 2, 256, 0, 0, 0, {}, {bonus bLuk, 1;}
+848, Earmuffs, Earmuffs, 5, 1000, 500, 20, 0, 2, 0, -1, 0, 2, 256, 0, 0, 0, {}, {}
+854, ElfNightcap, Elf Nightcap, 5, 1000, 500, 50, 0, 3, 0, 5, 0, 2, 256, 0, 0, 0, {}, {}
+855, Sunglasses, Sunglasses, 5, 1000, 500, 10, 0, 2, 0, 6, 0, 2, 256, 0, 0, 0, {}, {}
+856, KnitCap, KnitCap, 5, 1000, 500, 50, 0, 3, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
+//ID, Name___________________, Label__________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
+877, BullHelmet, Bull Helmet, 5, 90000, 60000, 1300, 0, 19, 0, -52, 0, 2, 256, 0, 90, 0, {}, {set @bStat, bStr;set @minbStatVal, 70;callfunc "RequireStat"; set @bStat, bVit;set @minbStatVal, 50;callfunc "RequireStat"; set @bStat, bLuk;set @minbStatVal, 50;callfunc "RequireStat"; bonus bAtkRange, -10; bonus bDoubleAddRate, 20; bonus bStr, 10; bonus bCritical, 15; bonus bAspdRate, 10; bonus bDef2Rate, -39; bonus bHit, -15;}
+882, RedEggshellHat, Red Eggshell Hat, 5, 7000, 5000, 15, 0, 9, 0, 3, 0, 2, 256, 0, 1, 0, {}, {}
+883, BlueEggshellHat, Blue Eggshell Hat, 5, 7000, 5000, 15, 0, 9, 0, 3, 0, 2, 256, 0, 1, 0, {}, {}
+884, YellowEggshellHat, Yellow Eggshell Hat, 5, 7000, 5000, 15, 0, 9, 0, 3, 0, 2, 256, 0, 1, 0, {}, {}
+885, GreenEggshellHat, Green Eggshell Hat, 5, 7000, 5000, 15, 0, 9, 0, 3, 0, 2, 256, 0, 1, 0, {}, {}
+886, OrangeEggshellHat, Orange Eggshell Hat, 5, 7000, 5000, 15, 0, 9, 0, 3, 0, 2, 256, 0, 1, 0, {}, {}
+887, DarkEggshellHat, Dark Eggshell Hat, 5, 7000, 5000, 15, 0, 9, 0, 3, 0, 2, 256, 0, 1, 0, {}, {}
+888, MagicGMTopHat, Magic GM Top Hat, 5, 4200, 1900, 30, 0, 60, 0, 20, 0, 2, 256, 0, 0, 0, {}, {set @minLvl, 60; callfunc "RestrictedItem"; bonus bMaxHP, 31000; bonus bFlee, -200; bonus bHPrecovRate, -400; bonus bCriticalDef, 250; bonus bMdef, 89;}
+889, MurdererCrown, Murderer Crown, 5, 75000, 12000, 240, 0, 4, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
+890, BeanieCopter, Beanie Copter, 5, 8000, 2000, 20, 0, 4, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
+897, RedRoseHat, Red Rose Hat, 5, 5000, 1000, 0, 0, 1, 0, 8, 0, 2, 256, 0, 0, 0, {}, {}
+898, WhiteRoseHat, White Rose Hat, 5, 5000, 1000, 0, 0, 1, 0, 8, 0, 2, 256, 0, 0, 0, {}, {}
+899, PinkRoseHat, Pink Rose Hat, 5, 5000, 1000, 0, 0, 1, 0, 8, 0, 2, 256, 0, 0, 0, {}, {}
+900, YellowRoseHat, Yellow Rose Hat, 5, 5000, 1000, 0, 0, 1, 0, 8, 0, 2, 256, 0, 0, 0, {}, {}
+901, OrangeRoseHat, Orange Rose Hat, 5, 5000, 1000, 0, 0, 1, 0, 8, 0, 2, 256, 0, 0, 0, {}, {}
+902, BlueRoseHat, Blue Rose Hat, 5, 5000, 1000, 0, 0, 1, 0, 8, 0, 2, 256, 0, 0, 0, {}, {}
+905, BucketHat, Bucket Hat, 5, 1600, 800, 20, 0, 5, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
+1173, TamOShanter, Tam O' Shanter, 5, 5000, 500, 20, 0, 9, 0, -2, 0, 2, 256, 0, 0, 0, {}, {}
+1174, CashiersShade, Cashier's Shade, 5, 4000, 500, 15, 0, 2, 0, -10, 0, 2, 256, 0, 0, 0, {}, {}
+1175, AutumnMask, Autumn Mask, 5, 5000, 500, 10, 0, 1, 0, 4, 0, 2, 256, 0, 0, 0, {}, {}
+1190, NutcrackerHat, NutcrackerHat, 5, 1000, 500, 20, 0, 5, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
+1196, Beret, Beret, 5, 1000, 500, 20, 0, 3, 0, 0, 0, 2, 256, 0, 0, 0, {bonus bAgi, 2;}, {}
+1203, RangerHat, Ranger Hat, 5, 1000, 500, 20, 0, 2, 0, -1, 0, 2, 256, 0, 0, 0, {}, {}
+1204, AntlerHat, Antler Hat, 5, 1000, 500, 15, 0, 4, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
+1205, ChristmasTreeHat, Christmas Tree Hat, 5, 2000, 1000, 20, 0, 2, 0, 4, 0, 2, 256, 0, 0, 0, {}, {}
+1206, SantaBeardHat, Santa Beard Hat, 5, 1000, 500, 20, 0, 5, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
+1214, BunnyEars, Bunny Ears, 5, 5000, 2000, 20, 0, 10, 0, 1, 0, 2, 256, 0, 0, 0, {}, {}
+1216, MoubooHead, Mouboo Head, 5, 10, 1, 80, 0, 1, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
+1217, CatEars, Cat Ears, 5, 100, 50, 20, 0, 1, 0, 1, 0, 2, 256, 0, 0, 0, {}, {bonus bAgi, 3;}
+1218, PaperBag, Paper Bag, 5, 1000, 5, 10, 0, 1, 0, -1, 0, 2, 256, 0, 0, 0, {}, {bonus bAgi, -1;}
+1219, MoubootaurHead, Moubootaur Head, 5, 10, 1, 80, 0, 1, 0, 0, 0, 2, 256, 0, 0, 0, {}, {set@minLvl, 1;callfunc "RestrictedItem";}
+1220, BunchOfParsley, Bunch of Parsley, 5, 3, 1, 1, 0, 1, 0, 0, 0, 2, 256, 0, 0, 0, {}, {bonus bDeaf, 1;}
+1221, SkullMask, Skull Mask, 5, 10000, 5000, 150, 0, 3, 0, 5, 0, 2, 256, 0, 0, 0, {}, {}
+1242, SnowGoggles, Snow Goggles, 5, 7500, 5000, 10, 0, 5, 0, -2, 0, 2, 256, 0, 0, 0, {}, {}
+//ID, Name___________________, Label__________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
+1247, HeartGlasses, Heart Glasses, 5, 7500, 5000, 20, 0, 4, 0, 5, 0, 2, 256, 0, 0, 0, {}, {}
+1255, WhiteRabbitEars, White Rabbit Ears, 5, 7000, 5000, 20, 0, 5, 0, 4, 0, 2, 256, 0, 1, 0, {}, {}
+1256, EggshellHat, Eggshell Hat, 5, 7000, 5000, 15, 0, 12, 0, 0, 0, 2, 256, 0, 1, 0, {}, {bonus bAgi, -1;}
+1276, OperaMask, Opera Mask, 5, 1000, 500, 50, 0, 3, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
+1277, JesterMask, Jester Mask, 5, 1000, 500, 50, 0, 3, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
+1278, WitchHat, Witch Hat, 5, 1000, 500, 50, 0, 3, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
+1279, GoblinMask, Goblin Mask, 5, 1000, 500, 50, 0, 3, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
+2130, RedDesertHat, Red Desert Hat, 5, 2400, 600, 20, 0, 3, 0, -1, 0, 2, 256, 0, 0, 0, {}, {}
+2131, GreenDesertHat, Green Desert Hat, 5, 2400, 600, 20, 0, 3, 0, -1, 0, 2, 256, 0, 0, 0, {}, {}
+2132, DarkBlueDesertHat, Dark Blue Desert Hat, 5, 2400, 600, 20, 0, 3, 0, -1, 0, 2, 256, 0, 0, 0, {}, {}
+2133, YellowDesertHat, Yellow Desert Hat, 5, 2400, 600, 20, 0, 3, 0, -1, 0, 2, 256, 0, 0, 0, {}, {}
+2134, LightBlueDesertHat, Light Blue Desert Hat, 5, 2400, 600, 20, 0, 3, 0, -1, 0, 2, 256, 0, 0, 0, {}, {}
+2135, PinkDesertHat, Pink Desert Hat, 5, 2400, 600, 20, 0, 3, 0, -1, 0, 2, 256, 0, 0, 0, {}, {}
+2136, BlackDesertHat, Black Desert Hat, 5, 2400, 600, 20, 0, 3, 0, -1, 0, 2, 256, 0, 0, 0, {}, {}
+2137, OrangeDesertHat, Orange Desert Hat, 5, 2400, 600, 20, 0, 3, 0, -1, 0, 2, 256, 0, 0, 0, {}, {}
+2138, PurpleDesertHat, Purple Desert Hat, 5, 2400, 600, 20, 0, 3, 0, -1, 0, 2, 256, 0, 0, 0, {}, {}
+2139, DarkGreenDesertHat, Dark Green Desert Hat, 5, 2400, 600, 20, 0, 3, 0, -1, 0, 2, 256, 0, 0, 0, {}, {}
+2140, RedCottonHeadband, Red Cotton Headband, 5, 3000, 500, 5, 0, 2, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
+2141, GreenCottonHeadband, Green Cotton Headband, 5, 3000, 500, 5, 0, 2, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
+2142, DarkBlueCottonHeadband, Dark Blue Cotton Headba, 5, 3000, 500, 5, 0, 2, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
+2143, YellowCottonHeadband, Yellow Cotton Headband, 5, 3000, 500, 5, 0, 2, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
+2144, LightBlueCottonHeadband, Light Blue Cotton Headb, 5, 3000, 500, 5, 0, 2, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
+2145, PinkCottonHeadband, Pink Cotton Headband, 5, 3000, 500, 5, 0, 2, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
+2146, BlackCottonHeadband, Black Cotton Headband, 5, 3000, 500, 5, 0, 2, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
+2147, OrangeCottonHeadband, Orange Cotton Headband, 5, 3000, 500, 5, 0, 2, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
+2148, PurpleCottonHeadband, Purple Cotton Headband, 5, 3000, 500, 5, 0, 2, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
+2149, DarkGreenCottonHeadband, Dark Green Cotton Headb, 5, 3000, 500, 5, 0, 2, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
+2158, PurpleCottonBoots, Purple Cotton Boots, 5, 2000, 500, 30, 0, 1, 0, 1, 0, 2, 64, 0, 0, 0, {}, {}
+2159, DarkGreenCottonBoots, Dark Green Cotton Boots, 5, 2000, 500, 30, 0, 1, 0, 1, 0, 2, 64, 0, 0, 0, {}, {}
+2190, RedRabbitEars, Red Rabbit Ears, 5, 7000, 5000, 15, 0, 5, 0, 4, 0, 2, 256, 0, 1, 0, {}, {}
+2191, GreenRabbitEars, Green Rabbit Ears, 5, 7000, 5000, 15, 0, 5, 0, 4, 0, 2, 256, 0, 1, 0, {}, {}
+2192, DarkBlueRabbitEars, Dark Blue Rabbit Ears, 5, 7000, 5000, 15, 0, 5, 0, 4, 0, 2, 256, 0, 1, 0, {}, {}
+2193, YellowRabbitEars, Yellow Rabbit Ears, 5, 7000, 5000, 15, 0, 5, 0, 4, 0, 2, 256, 0, 1, 0, {}, {}
+2194, LightBlueRabbitEars, Light Blue Rabbit Ears, 5, 7000, 5000, 15, 0, 5, 0, 4, 0, 2, 256, 0, 1, 0, {}, {}
+2195, PinkRabbitEars, Pink Rabbit Ears, 5, 7000, 5000, 15, 0, 5, 0, 4, 0, 2, 256, 0, 1, 0, {}, {}
+2196, BlackRabbitEars, Black Rabbit Ears, 5, 7000, 5000, 15, 0, 5, 0, 4, 0, 2, 256, 0, 1, 0, {}, {}
+2197, OrangeRabbitEars, Orange Rabbit Ears, 5, 7000, 5000, 15, 0, 5, 0, 4, 0, 2, 256, 0, 1, 0, {}, {}
+2198, PurpleRabbitEars, Purple Rabbit Ears, 5, 7000, 5000, 15, 0, 5, 0, 4, 0, 2, 256, 0, 1, 0, {}, {}
+2199, DarkGreenRabbitEars, Dark Green Rabbit Ears, 5, 7000, 5000, 15, 0, 5, 0, 4, 0, 2, 256, 0, 1, 0, {}, {}
+2200, RedWizardHat, Red Wizard Hat, 5, 5000, 2500, 20, 0, 5, 0, 5, 0, 2, 256, 0, 1, 0, {}, {bonus bInt, 3;}
+2201, GreenWizardHat, Green Wizard Hat, 5, 5000, 2500, 20, 0, 5, 0, 5, 0, 2, 256, 0, 1, 0, {}, {bonus bInt, 3;}
+2202, DarkBlueWizardHat, Dark Blue Wizard Hat, 5, 5000, 2500, 20, 0, 5, 0, 5, 0, 2, 256, 0, 1, 0, {}, {bonus bInt, 3;}
+2203, YellowWizardHat, Yellow Wizard Hat, 5, 5000, 2500, 20, 0, 5, 0, 5, 0, 2, 256, 0, 1, 0, {}, {bonus bInt, 3;}
+2204, LightBlueWizardHat, Light Blue Wizard Hat, 5, 5000, 2500, 20, 0, 5, 0, 5, 0, 2, 256, 0, 1, 0, {}, {bonus bInt, 3;}
+//ID, Name___________________, Label__________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
+2205, PinkWizardHat, Pink Wizard Hat, 5, 5000, 2500, 20, 0, 5, 0, 5, 0, 2, 256, 0, 1, 0, {}, {bonus bInt, 3;}
+2206, BlackWizardHat, Black Wizard Hat, 5, 5000, 2500, 20, 0, 5, 0, 5, 0, 2, 256, 0, 1, 0, {}, {bonus bInt, 3;}
+2207, OrangeWizardHat, Orange Wizard Hat, 5, 5000, 2500, 20, 0, 5, 0, 5, 0, 2, 256, 0, 1, 0, {}, {bonus bInt, 3;}
+2208, PurpleWizardHat, Purple Wizard Hat, 5, 5000, 2500, 20, 0, 5, 0, 5, 0, 2, 256, 0, 1, 0, {}, {bonus bInt, 3;}
+2209, DarkGreenWizardHat, Dark Green Wizard Hat, 5, 5000, 2500, 20, 0, 5, 0, 5, 0, 2, 256, 0, 1, 0, {}, {bonus bInt, 3;}
+2210, RedBowlerHat, Red Bowler Hat, 5, 2500, 1250, 30, 0, 10, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
+2211, GreenBowlerHat, Green Bowler Hat, 5, 2500, 1250, 30, 0, 10, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
+2212, DarkBlueBowlerHat, Dark Blue Bowler Hat, 5, 2500, 1250, 30, 0, 10, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
+2213, YellowBowlerHat, Yellow Bowler Hat, 5, 2500, 1250, 30, 0, 10, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
+2214, LightBlueBowlerHat, Light Blue Bowler Hat, 5, 2500, 1250, 30, 0, 10, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
+2215, PinkBowlerHat, Pink Bowler Hat, 5, 2500, 1250, 30, 0, 10, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
+2216, BlackBowlerHat, Black Bowler Hat, 5, 2500, 1250, 30, 0, 10, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
+2217, OrangeBowlerHat, Orange Bowler Hat, 5, 2500, 1250, 30, 0, 10, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
+2218, PurpleBowlerHat, Purple Bowler Hat, 5, 2500, 1250, 30, 0, 10, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
+2219, DarkGreenBowlerHat, Dark Green Bowler Hat, 5, 2500, 1250, 30, 0, 10, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
+2230, RedBowlerHatBrown, Red Bowler Hat Brown, 5, 2500, 1250, 30, 0, 10, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
+2231, GreenBowlerHatBrown, Green Bowler Hat Brown, 5, 2500, 1250, 30, 0, 10, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
+2232, DarkBlueBowlerHatBrown, Dark Blue Bowler Hat Br, 5, 2500, 1250, 30, 0, 10, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
+2233, YellowBowlerHatBrown, Yellow Bowler Hat Brown, 5, 2500, 1250, 30, 0, 10, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
+2234, LightBlueBowlerHatBrown, Light Blue Bowler Hat B, 5, 2500, 1250, 30, 0, 10, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
+2235, PinkBowlerHatBrown, Pink Bowler Hat Brown, 5, 2500, 1250, 30, 0, 10, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
+2236, BlackBowlerHatBrown, Black Bowler Hat Brown, 5, 2500, 1250, 30, 0, 10, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
+2237, OrangeBowlerHatBrown, Orange Bowler Hat Brown, 5, 2500, 1250, 30, 0, 10, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
+2238, PurpleBowlerHatBrown, Purple Bowler Hat Brown, 5, 2500, 1250, 30, 0, 10, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
+2239, DarkGreenBowlerHatBrown, Dark Green Bowler Hat B, 5, 2500, 1250, 30, 0, 10, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
+2260, RedBeret, Red Beret, 5, 1000, 500, 20, 0, 3, 0, 0, 0, 2, 256, 0, 0, 0, {bonus bAgi, 2;}, {}
+2261, GreenBeret, Green Beret, 5, 1000, 500, 20, 0, 3, 0, 0, 0, 2, 256, 0, 0, 0, {bonus bAgi, 2;}, {}
+2262, DarkBlueBeret, Dark Blue Beret, 5, 1000, 500, 20, 0, 3, 0, 0, 0, 2, 256, 0, 0, 0, {bonus bAgi, 2;}, {}
+2263, YellowBeret, Yellow Beret, 5, 1000, 500, 20, 0, 3, 0, 0, 0, 2, 256, 0, 0, 0, {bonus bAgi, 2;}, {}
+2264, LightBlueBeret, Light Blue Beret, 5, 1000, 500, 20, 0, 3, 0, 0, 0, 2, 256, 0, 0, 0, {bonus bAgi, 2;}, {}
+2265, PinkBeret, Pink Beret, 5, 1000, 500, 20, 0, 3, 0, 0, 0, 2, 256, 0, 0, 0, {bonus bAgi, 2;}, {}
+2266, BlackBeret, Black Beret, 5, 1000, 500, 20, 0, 3, 0, 0, 0, 2, 256, 0, 0, 0, {bonus bAgi, 2;}, {}
+2267, OrangeBeret, Orange Beret, 5, 1000, 500, 20, 0, 3, 0, 0, 0, 2, 256, 0, 0, 0, {bonus bAgi, 2;}, {}
+2268, PurpleBeret, Purple Beret, 5, 1000, 500, 20, 0, 3, 0, 0, 0, 2, 256, 0, 0, 0, {bonus bAgi, 2;}, {}
+2269, DarkGreenBeret, Dark Green Beret, 5, 1000, 500, 20, 0, 3, 0, 0, 0, 2, 256, 0, 0, 0, {bonus bAgi, 2;}, {}
+//ID, Name___________________, Label__________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
+4020, CandleHelmet, Candle Helmet, 5, 20000, 2000, 450, 0, 16, 0, -25, 0, 2, 256, 0, 0, 0, {}, {bonus bInt, 1;bonus bAgi, -1;}
+4027, YetiMask, Yeti Mask, 5, 6000, 3000, 10, 0, 4, 0, -10, 0, 2, 256, 0, 0, 0, {}, {}
+4028, WizardHat, Wizard Hat, 5, 5000, 2500, 20, 0, 5, 0, 5, 0, 2, 256, 0, 1, 0, {}, {bonus bInt, 3;}
+4030, BowlerHat, Bowler Hat, 5, 2500, 1250, 30, 0, 10, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
+4031, Monocle, Monocle, 5, 5000, 2500, 20, 0, 2, 0, 0, 0, 2, 256, 0, 0, 0, {}, {bonus bDex, 1; bonus bLuk, 1; bonus bCritical, 10;}
+4032, PanHat, Pan Hat, 5, 1000, 500, 400, 0, 13, 0, -20, 0, 2, 256, 0, 0, 0, {}, {}
+4033, ChefHat, Chef Hat, 5, 1000, 500, 30, 0, 2, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
+4042, RedNose, Red Nose, 5, 4000, 1000, 4, 0, 2, 0, 7, 0, 2, 256, 0, 0, 0, {}, {}
+5128, DarkHelm, DarkHelm, 5, 50000, 10000, 800, 0, 19, 0, -80, 0, 2, 256, 0, 0, 0, {}, {callfunc "UnreleasedItem"; bonus bMaxHPrate, 10; bonus bAtkRange, -((readparam(bAtkRange)/2)); bonus bInt, -(readparam(bInt));}
+5129, UnderworldMask, UnderworldMask, 5, 50000, 10000, 100, 0, 9, 0, -40, 0, 2, 256, 0, 0, 0, {}, {callfunc "UnreleasedItem"; bonus bAtkRange, 1; bonus bInt, -(readparam(bInt));}
+5130, Phylactery, Phylactery, 5, 50000, 10000, 20, 0, 1, 0, 5, 0, 2, 256, 0, 0, 0, {}, {callfunc "UnreleasedItem"; bonus bAspdRate, 10; bonus bDex, -(readparam(bDex)/2);}
diff --git a/world/map/db/item_db.txt b/world/map/db/item_db.txt
deleted file mode 100644
index df7b2f45..00000000
--- a/world/map/db/item_db.txt
+++ /dev/null
@@ -1,969 +0,0 @@
-// Name and Label MUST NOT exceed 23 characters (as marked)
-//ID, Name___________________, Label__________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
-0, DEFAULT, Default, 0, 20, 10, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-501, CactusDrink, Cactus Drink, 0, 50, 25, 4, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 15, 0;}, {}
-502, CactusPotion, Cactus Potion, 0, 70, 35, 7, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 25, 0;}, {}
-503, CasinoCoins, Casino Coins, 3, 10, 10, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-504, DecorCandy, Decor Candy, 3, 25, 10, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-505, MaggotSlime, Maggot Slime, 3, 8, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-506, CandyCane, Candy Cane, 0, 20, 10, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 5, 0;}, {}
-507, ScorpionStinger, Scorpion Stinger, 3, 50, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-508, XmasCake, Xmas Cake, 0, 70, 10, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 10, 0;}, {}
-509, ChocolateBar, Chocolate Bar, 0, 60, 20, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 20, 0;}, {}
-510, Candy, Candy, 0, 20, 10, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 5, 0;}, {}
-511, SantaHat, Santa Hat, 5, 400, 200, 20, 0, 2, 0, -2, 0, 2, 256, 0, 0, 0, {}, {}
-512, GingerBreadMan, Ginger Bread Man, 0, 50, 25, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 25, 0;}, {}
-513, Cake, Cake, 0, 30, 15, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 15, 0;}, {}
-514, XmasCandyCane, Xmas Candy Cane, 0, 30, 15, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 10, 0;}, {}
-515, PurplePresentBox, Purple Present Box, 3, 50, 25, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-516, BluePresentBox, Blue Present Box, 3, 60, 30, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-517, RedScorpionStinger, Red Scorpion Stinger, 3, 170, 85, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-518, BugLeg, Bug Leg, 3, 100, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-519, CherryCake, Cherry Cake, 0, 100, 50, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 35, 0;}, {}
-//ID, Name___________________, Label__________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
-520, EasterEgg, Easter Egg, 0, 200, 100, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 100, 0;}, {}
-521, Dagger, Dagger, 4, 1000, 500, 200, 15, 0, 1, 0, 0, 2, 2, 1, 1, 1, {}, {}
-522, SharpKnife, Sharp Knife, 4, 100, 50, 150, 10, 0, 1, 0, 0, 2, 2, 1, 1, 1, {}, {}
-523, LeatherShirt, Leather Shirt, 5, 2000, 1000, 20, 0, 4, 0, -12, 0, 2, 512, 0, 0, 0, {}, {}
-524, FancyHat, Fancy Hat, 5, 1600, 800, 20, 0, 5, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-525, MinersHat, Miner's Hat, 5, 800, 400, 40, 0, 4, 0, -8, 0, 2, 256, 0, 0, 0, {}, {}
-526, CoinBag, Coin Bag, 3, 1000, 500, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-527, Milk, Milk, 0, 300, 150, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 150, 0;}, {}
-528, Boots, Boots, 5, 8000, 500, 80, 0, 2, 0, -2, 0, 2, 64, 0, 0, 0, {}, {}
-529, IronArrow, Iron Arrow, 10, 4, 2, 1, 40, 0, 0, 0, 0, 2, 32768, 0, 0, 0, {}, {set @AmmoType, AMMO_BOW; callfunc "CheckAmmo";}
-530, ShortBow, Short Bow, 4, 8000, 2000, 600, 50, 0, 5, 0, 0, 2, 34, 1, 4, 11, {}, {set @LauncherType, AMMO_BOW; callfunc "CheckLauncher";}
-531, MinerGloves, Miner Gloves, 5, 3000, 1000, 30, 0, 2, 0, -10, 0, 2, 4, 0, 0, 0, {}, {}
-532, LeatherGloves, Leather Gloves, 5, 6000, 2000, 20, 0, 4, 0, -20, 0, 2, 4, 0, 0, 0, {}, {}
-533, RoastedMaggot, Roasted Maggot, 0, 110, 55, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 150, 0;}, {}
-534, OrangeCupcake, Orange Cupcake, 0, 90, 45, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 100, 0;}, {}
-535, RedApple, Red Apple, 0, 25, 6, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 50, 0;}, {}
-536, ShortSword, Short Sword, 4, 8000, 4000, 2000, 100, 0, 1, 0, 0, 2, 2, 1, 1, 1, {}, {}
-537, TreasureKey, Treasure Key, 3, 100, 50, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-538, GreenPresentBox, Green Present Box, 3, 20, 10, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-539, Beer, Beer, 0, 175, 87, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 200, 5;}, {}
-//ID, Name___________________, Label__________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
-540, EmptyBottle, Empty Bottle, 3, 20, 10, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-541, BottleOfWater, Bottle of Water, 0, 200, 100, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 250, 0;getitem 540, 1;}, {}
-542, BottleOfSand, Bottle of Sand, 3, 70, 35, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-543, StandardHeadband, Standard Headband, 5, 800, 400, 10, 0, 3, 0, -3, 0, 2, 256, 0, 0, 0, {}, {}
-544, SilkHeadband, Silk Headband, 5, 5000, 2000, 10, 0, 10, 0, -10, 0, 2, 256, 0, 0, 0, {}, {}
-545, ForestBow, Forest Bow, 4, 20000, 5000, 1200, 70, 0, 5, 0, 0, 2, 34, 1, 0, 11, {}, {set @LauncherType, AMMO_BOW; callfunc "CheckLauncher";}
-546, DesertShirt, Desert Shirt, 5, 2000, 1000, 20, 0, 6, 0, -18, 0, 2, 512, 0, 0, 0, {}, {}
-547, Bardiche, Bardiche, 4, 20, 10, 10, 0, 100, 1, -200, 0, 2, 2, 0, 0, 1, {}, {callfunc "UnreleasedItem";}
-548, Halberd, Halberd, 4, 20, 10, 1400, 100, 0, 1, 0, 0, 2, 2, 1, 0, 1, {}, {callfunc "UnreleasedItem";}
-549, Axe, Axe, 4, 20, 10, 1200, 100, 0, 1, 0, 0, 2, 2, 1, 0, 1, {}, {callfunc "UnreleasedItem";}
-550, BlacksmithsAxe, Blacksmith's Axe, 4, 20, 10, 1200, 100, 0, 1, 0, 0, 2, 2, 1, 0, 1, {}, {callfunc "UnreleasedItem";}
-551, AquaHint, Aqua Hint, 3, 20, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-552, MagentaHint, Magenta Hint, 3, 20, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-553, YellowHint, Yellow Hint, 3, 20, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-554, GreenHint, Green Hint, 3, 20, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-555, TealHint, Teal Hint, 3, 20, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-556, PurpleHint, Purple Hint, 3, 20, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-557, RedHint, Red Hint, 3, 20, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-558, BlueHint, Blue Hint, 3, 20, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-559, OrangeHint, Orange Hint, 3, 20, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-//ID, Name___________________, Label__________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
-560, GrayHint, Gray Hint, 3, 20, 0, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-561, Sabre, Sabre, 4, 10000, 5000, 300, 100, 0, 1, 0, 0, 2, 2, 1, 1, 1, {}, {}
-562, ChickenLeg, Chicken Leg, 0, 250, 125, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 500, 0;}, {}
-563, WinterGloves, Winter Gloves, 5, 6000, 3000, 20, 0, 3, 0, -15, 0, 2, 4, 0, 0, 0, {}, {}
-564, TurtleneckSweater, Turtleneck Sweater, 5, 2000, 1000, 30, 0, 6, 0, -18, 0, 2, 512, 0, 0, 0, {}, {}
-565, PinkPetal, Pink Petal, 0, 100, 50, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 50, 0;}, {}
-566, SmallMushroom, Small Mushroom, 0, 125, 50, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 50, 0;}, {}
-567, IronPotion, Iron Potion, 0, 500, 250, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {sc_start sc_raiseattackstrength, 60, 60;}, {}
-568, ConcentrationPotion, Concentration Potion, 0, 500, 250, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {sc_start sc_raiseattackspeed0, 60, 30;}, {}
-569, RawLog, Raw Log, 3, 20, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-570, BoneKnife, Bone Knife, 4, 10000, 6000, 450, 115, 0, 1, 0, 0, 2, 2, 1, 1, 1, {}, {}
-571, Setzer, Setzer, 4, 20000, 8000, 900, 110, 0, 1, 0, 0, 2, 2, 1, 1, 3, {}, {}
-572, Scimitar, Scimitar, 4, 8000, 4000, 200, 100, 0, 1, 0, 0, 2, 2, 1, 1, 1, {}, {callfunc "UnreleasedItem";}
-573, Falchion, Falchion, 4, 8000, 4000, 300, 100, 0, 1, 0, 0, 2, 2, 1, 1, 1, {}, {callfunc "UnreleasedItem";}
-574, Scorpion, Scorpion, 4, 8000, 4000, 600, 100, 0, 1, 0, 0, 2, 2, 1, 1, 1, {}, {callfunc "UnreleasedItem";}
-575, DesertBow, Desert Bow, 4, 8000, 4000, 1200, 100, 0, 1, 0, 0, 2, 34, 1, 1, 11, {}, {callfunc "UnreleasedItem";set @LauncherType, AMMO_BOW; callfunc "CheckLauncher";}
-576, Beheader, Beheader, 4, 8000, 4000, 2000, 100, 0, 1, 0, 0, 2, 2, 1, 1, 1, {}, {callfunc "UnreleasedItem";}
-577, BoneDarts, Bone Darts, 4, 8000, 4000, 300, 100, 0, 1, 0, 0, 2, 2, 1, 1, 1, {}, {callfunc "UnreleasedItem"; }
-578, SandCutter, Sand Cutter, 4, 8000, 4000, 1500, 100, 0, 1, 0, 0, 2, 2, 1, 1, 1, {}, {callfunc "UnreleasedItem";}
-579, RockKnife, Rock Knife, 4, 15000, 7500, 500, 110, 0, 1, 0, 0, 2, 2, 1, 1, 1, {}, {bonus bVit, 3;}
-//ID, Name___________________, Label__________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
-580, StaffOfLife, Staff of Life, 4, 8000, 4000, 1500, 100, 0, 1, 0, 0, 2, 2, 1, 1, 1, {}, {callfunc "UnreleasedItem";}
-581, CrescentRod, Crescent Rod, 4, 8000, 4000, 1500, 100, 0, 1, 0, 0, 2, 2, 1, 1, 1, {}, {callfunc "UnreleasedItem";}
-582, StaffOfFire, Staff of Fire, 4, 8000, 4000, 1500, 100, 0, 1, 0, 0, 2, 2, 1, 1, 1, {}, {callfunc "UnreleasedItem";}
-583, StaffOfIce, Staff of Ice, 4, 8000, 4000, 1500, 100, 0, 1, 0, 0, 2, 2, 1, 1, 1, {}, {callfunc "UnreleasedItem";}
-584, Jackal, Jackal, 4, 8000, 4000, 100, 100, 0, 1, 0, 0, 2, 2, 1, 1, 1, {}, {callfunc "UnreleasedItem";}
-585, ScarabArmlet, Scarab Armlet, 5, 8000, 4000, 200, 0, 0, 0, 5, 0, 2, 32, 0, 1, 0, {}, {}
-586, CottonShorts, Cotton Shorts, 5, 1000, 500, 15, 0, 2, 0, -4, 0, 2, 1, 0, 1, 0, {}, {}
-587, Sword, Sword, 4, 1000, 500, 200, 15, 0, 1, 0, 0, 2, 2, 1, 1, 1, {}, {callfunc "UnreleasedItem";}
-588, BastardSword, BastardSword, 4, 1000, 500, 200, 15, 0, 1, 0, 0, 2, 2, 1, 1, 1, {}, {callfunc "UnreleasedItem";}
-//589, RESERVED, BroadSword, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-//590, RESERVED, Baselard, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-591, LongSword, LongSword, 4, 1000, 500, 200, 15, 0, 1, 0, 0, 2, 2, 1, 1, 1, {}, {callfunc "UnreleasedItem";}
-//592, RESERVED, Stiletto, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-//593, RESERVED, Rapier, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-594, Spear, Spear, 4, 1000, 500, 200, 15, 0, 1, 0, 0, 2, 2, 1, 1, 1, {}, {callfunc "UnreleasedItem";}
-//595, RESERVED, HeavySpear, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-//596, RESERVED, Pike, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-//597, RESERVED, HeavyPike, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-//598, RESERVED, DualSpear, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-//599, RESERVED, FireSword, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-//ID, Name___________________, Label__________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
-//600, RESERVED, BritShield, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-601, SteelShield, Steel Shield, 5, 40000, 3000, 2500, 0, 20, 0, -200, 0, 2, 32, 0, 0, 0, {}, {}
-602, WoodenShield, Wooden Shield, 5, 10000, 2000, 1500, 0, 14, 0, -70, 0, 2, 32, 0, 0, 0, {}, {}
-603, LeatherShield, Leather Shield, 5, 2000, 1000, 1300, 0, 7, 0, -35, 0, 2, 32, 0, 0, 0, {}, {}
-//604, RESERVED, KnightShield, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-//605, RESERVED, MeatCleaver, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-//606, RESERVED, Hatchet, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-//607, RESERVED, Trident, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-//608, RESERVED, BladeShield, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-//609, RESERVED, Club, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-610, JeansShorts, Jeans Shorts, 5, 2000, 1000, 25, 0, 4, 0, -8, 0, 2, 1, 0, 0, 0, {}, {}
-611, WhiteFur, White Fur, 3, 8, 4, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-612, CaveSnakeLamp, Cave Snake Lamp, 3, 80, 40, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-613, HardSpike, Hard Spike, 3, 40, 10, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-614, PinkAntenna, Pink Antenna, 3, 10, 5, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-615, PumpkinHelmet, Pumpkin Helmet, 5, 2000, 1000, 60, 0, 4, 0, -4, 0, 2, 256, 0, 0, 0, {}, {}
-616, AxeHat, Axe Hat, 5, 2000, 1000, 50, 0, 4, 0, -4, 0, 2, 256, 0, 0, 0, {}, {}
-617, PirateHat, Pirate Hat, 5, 2000, 1000, 40, 0, 4, 0, -8, 0, 2, 256, 0, 0, 0, {}, {}
-618, Goggles, Goggles, 5, 500, 100, 20, 0, 2, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-619, LeatherGoggles, Leather Goggles, 5, 1000, 500, 20, 0, 3, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-//ID, Name___________________, Label__________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
-620, Circlet, Circlet, 5, 2000, 1000, 25, 0, 4, 0, 5, 0, 2, 256, 0, 0, 0, {}, {}
-621, Eyepatch, Eyepatch, 5, 1000, 500, 5, 0, 3, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-622, Bandana, Bandana, 5, 1000, 500, 20, 0, 3, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-623, Scythe, Scythe, 4, 100, 50, 1200, 75, 0, 1, 0, 0, 2, 34, 1, 1, 3, {}, {}
-624, VNeckSweater, V-Neck Sweater, 5, 6000, 3000, 35, 0, 8, 0, -24, 0, 2, 512, 0, 0, 0, {}, {}
-625, ChainmailShirt, Chainmail Shirt, 5, 15000, 1500, 800, 0, 20, 0, -120, 0, 2, 512, 0, 0, 0, {}, {}
-626, LightPlatemail, Light Platemail, 5, 50000, 2500, 1200, 0, 25, 0, -150, 0, 2, 512, 0, 0, 0, {}, {}
-627, TopHat, Top Hat, 5, 2500, 1250, 30, 0, 10, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
-628, FunkyHat, Funky Hat, 5, 3000, 1500, 20, 0, 13, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
-629, MushHat, Mush Hat, 5, 2500, 1250, 30, 0, 10, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-630, ShroomHat, Shroom Hat, 5, 3000, 1500, 30, 0, 13, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-631, DarkCrystal, Dark Crystal, 3, 1000, 250, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-632, CottonSkirt, Cotton Skirt, 5, 1000, 500, 10, 0, 4, 0, -8, 0, 2, 1, 0, 1, 0, {}, {}
-633, ChristmasElfHat, Christmas Elf Hat, 5, 3000, 1500, 30, 0, 13, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
-634, FaceMask, Face Mask, 5, 2500, 1250, 50, 0, 10, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-635, SantaCookie, Santa Cookie, 3, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-636, WarlordHelmet, Warlord Helmet, 5, 30000, 3000, 900, 0, 18, 0, -36, 0, 2, 256, 0, 0, 0, {}, {}
-637, KnightsHelmet, Knight's Helmet, 5, 20000, 2000, 600, 0, 15, 0, -30, 0, 2, 256, 0, 0, 0, {}, {}
-638, InfantryHelmet, Infantry Helmet, 5, 15000, 1500, 400, 0, 15, 0, -30, 0, 2, 256, 0, 0, 0, {}, {}
-639, CrusadeHelmet, Crusade Helmet, 5, 25000, 2500, 1300, 0, 18, 0, -36, 0, 2, 256, 0, 0, 0, {}, {}
-//ID, Name___________________, Label__________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
-640, IronOre, Iron Ore, 3, 250, 100, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-641, SnakeSkin, Snake Skin, 3, 250, 100, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-642, JeansChaps, Jeans Chaps, 5, 2000, 1000, 60, 0, 6, 0, -12, 0, 2, 1, 0, 0, 0, {}, {}
-643, WhiteCowboyHat, White Cowboy Hat, 5, 1800, 900, 30, 0, 6, 0, -12, 0, 2, 256, 0, 0, 0, {}, {}
-644, BlackCowboyHat, Black Cowboy Hat, 5, 1800, 900, 30, 0, 6, 0, -12, 0, 2, 256, 0, 0, 0, {}, {}
-645, GoldenPlatemail, Golden Platemail, 5, 9999000, 3000, 4500, 0, 25, 0, -100, 0, 2, 512, 0, 0, 0, {}, {}
-646, Crown, Crown, 5, 5000, 1000, 240, 0, 4, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-647, DevelopersCap, Developer's Cap, 5, 2000, 500, 20, 0, 5, 0, 5, 0, 2, 256, 0, 0, 0, {}, {}
-648, CottonTrousers, Cotton Trousers, 5, 1500, 750, 25, 0, 4, 0, -6, 0, 2, 1, 0, 1, 0, {}, {}
-649, WhiteEvokersRobeBlue, White Evokers Robe Blue, 5, 8000, 4000, 5, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-650, BlackEvokersRobeBlue, Black Evokers Robe Blue, 5, 8000, 4000, 5, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-651, WhiteWizardRobe, White Wizard Robe, 5, 8000, 4000, 5, 0, 5, 0, 0, 0, 2, 512, 0, 0, 0, {}, {}
-652, BlackWizardRobe, Black Wizard Robe, 5, 8000, 4000, 5, 0, 5, 0, 0, 0, 2, 512, 0, 0, 0, {}, {}
-653, ApprenticeRobe, Apprentice Robe, 5, 8000, 4000, 5, 0, 5, 0, 0, 0, 2, 512, 0, 0, 0, {}, {}
-654, Cap, Cap, 5, 2000, 500, 20, 0, 5, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-655, FurBoots, Fur Boots, 5, 5000, 600, 50, 0, 3, 0, -3, 0, 2, 64, 0, 0, 0, {}, {}
-656, SerfHat, Serf Hat, 5, 500, 100, 20, 0, 2, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-657, Orange, Orange, 0, 40, 10, 7, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 60, 0;}, {}
-658, WarlordPlate, Warlord Plate, 5, 100000, 3000, 2600, 0, 27, 0, -170, 0, 2, 512, 0, 0, 0, {}, {}
-659, GoldenWarlordPlate, Golden Warlord Plate, 5, 500000, 4000, 7600, 0, 27, 0, -110, 0, 2, 512, 0, 0, 0, {}, {}
-//ID, Name___________________, Label__________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
-660, CottonCloth, Cotton Cloth, 3, 400, 100, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-661, RedRose, Red Rose, 3, 80, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-662, WhiteRose, White Rose, 3, 80, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-663, DarkRedRose, Dark Red Rose, 3, 80, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-664, PinkRose, Pink Rose, 3, 80, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-665, YellowRose, Yellow Rose, 3, 80, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-666, BlackRose, Black Rose, 3, 80, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-667, OrangeRose, Orange Rose, 3, 80, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-668, BlueRose, Blue Rose, 3, 80, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-669, YellowTulip, Yellow Tulip, 3, 80, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-670, PurpleTulip, Purple Tulip, 3, 80, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-671, RedTulip, Red Tulip, 3, 80, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-672, WhiteTulip, White Tulip, 3, 80, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-673, PinkTulip, Pink Tulip, 3, 80, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-674, OrangeTulip, Orange Tulip, 3, 80, 20, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-675, GraduationCap, Graduation Cap, 5, 1000, 250, 20, 0, 2, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-676, Steak, Steak, 0, 275, 100, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 250, 0;}, {}
-677, HeartNecklace, Heart Necklace, 3, 2500, 1000, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-678, NohMask, Noh Mask, 5, 7000, 1000, 18, 0, 3, 0, 1, 0, 2, 256, 0, 0, 0, {}, {}
-679, DemonMask, Demon Mask, 5, 10000, 5000, 23, 0, 3, 0, 5, 0, 2, 256, 0, 0, 0, {}, {}
-//ID, Name___________________, Label__________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
-680, MauveHerb, Mauve Herb, 3, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-681, CobaltHerb, Cobalt Herb, 3, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-682, GambogeHerb, Gamboge Herb, 3, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-683, AlizarinHerb, Alizarin Herb, 3, 2, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-684, TinyHealingPotion, Tiny Healing Potion, 0, 25, 12, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 100, 0;}, {}
-685, SmallHealingPotion, Small Healing Potion, 0, 50, 25, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 200, 0;}, {}
-686, MediumHealingPotion, Medium Healing Potion, 0, 100, 50, 15, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 400, 0;}, {}
-687, LargeHealingPotion, Large Healing Potion, 0, 200, 100, 25, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 800, 0;}, {}
-688, TankTop, Tank Top, 5, 800, 400, 10, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
-689, ShortTankTop, Short Tank Top, 5, 600, 300, 8, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
-690, RedDye, Red Dye, 3, 100, 20, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-691, GreenDye, Green Dye, 3, 2500, 1000, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-692, DarkBlueDye, Dark Blue Dye, 3, 40000, 15000, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-693, YellowDye, Yellow Dye, 3, 100, 20, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-694, LightBlueDye, Light Blue Dye, 3, 100, 20, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-695, PinkDye, Pink Dye, 3, 2500, 1000, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-696, BlackDye, Black Dye, 3, 30000, 25000, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-697, OrangeDye, Orange Dye, 3, 2500, 1000, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-698, PurpleDye, Purple Dye, 3, 70000, 50000, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-699, DarkGreenDye, Dark Green Dye, 3, 2000, 1000, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-700, Pearl, Pearl, 3, 5000, 3000, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-701, PileOfAsh, Pile of Ash, 3, 3000, 100, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-702, WeddingRing, Wedding Ring, 5, 1000, 1, 1, 0, 0, 0, 0, 0, 2, 16, 0, 0, 0, {}, {}
-703, SulphurPowder, Sulphur Powder, 3, 1000, 25, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-704, IronPowder, Iron Powder, 3, 800, 80, 3, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-705, ManaPotion, Mana Potion, 0, 2000, 300, 50, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 0, 10;callfunc "MagicGainBasic";}, {}
-706, GoldenScorpionStinger, Golden Scorpion Stinger, 3, 2000, 500, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-707, MonsterOilPotion, Monster Oil Potion, 3, 10000, 2000, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-708, LeatherPatch, Leather Patch, 3, 300, 150, 18, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-709, BlackScorpionStinger, Black Scorpion Stinger, 3, 250, 100, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-//ID, Name___________________, Label__________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
-710, SnakeTongue, Snake Tongue, 3, 60, 30, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-711, MountainSnakeTongue, Mountain Snake Tongue, 3, 80, 40, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-712, GrassSnakeTongue, Grass Snake Tongue, 3, 160, 80, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-713, CaveSnakeTongue, Cave Snake Tongue, 3, 120, 60, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-714, SnakeEgg, Snake Egg, 0, 50, 25, 4, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 30, 0;}, {}
-715, MountainSnakeEgg, Mountain Snake Egg, 0, 80, 40, 4, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 40, 0;}, {}
-716, GrassSnakeEgg, Grass Snake Egg, 0, 100, 50, 4, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 50, 0;}, {}
-717, CaveSnakeEgg, Cave Snake Egg, 0, 60, 30, 4, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 20, 0;}, {}
-718, SilkCocoon, Silk Cocoon, 3, 200, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-719, GreenApple, Green Apple, 0, 20, 5, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 45, 0;}, {}
-720, SilkRobe, Silk Robe, 5, 8000, 4000, 5, 0, 5, 0, 0, 0, 2, 512, 0, 0, 0, {}, {}
-721, HighPriestCrown, High Priest Crown, 5, 20000, 5000, 400, 0, 4, 0, 20, 0, 2, 256, 0, 0, 0, {}, {bonus bMaxSP, 20;}
-722, MonsterSkullHelmet, Monster Skull Helmet, 5, 15000, 3000, 250, 0, 7, 0, 10, 0, 2, 256, 0, 0, 0, {}, {bonus bMdef, 20;}
-723, DesertHat, Desert Hat, 5, 2400, 600, 20, 0, 3, 0, -1, 0, 2, 256, 0, 0, 0, {}, {}
-724, CottonHeadband, Cotton Headband, 5, 3000, 500, 5, 0, 2, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-725, GMCap, GM Cap, 5, 2000, 500, 20, 0, 5, 0, 5, 0, 2, 256, 0, 0, 0, {}, {callfunc "RestrictedItem";}
-726, GMRobe, GM Robe, 5, 8000, 4000, 40, 0, 5, 0, 0, 0, 2, 512, 0, 0, 0, {}, {callfunc "RestrictedItem";}
-727, Iten, Iten, 3, 0, 0, 8000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-728, MoubooFigurine, Mouboo Figurine, 3, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-729, WarpedLog, Warped Log, 3, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-//ID, Name___________________, Label__________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
-730, Lifestone, Lifestone, 3, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-731, AssassinPants, Assassin Pants, 5, 10000, 3000, 20, 0, 5, 0, -5, 0, 2, 1, 0, 0, 0, {}, {callfunc "UnreleasedItem";bonus bAgi, 8;}
-732, DruidTreeBranch, Druid Tree Branch, 3, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-733, PurificationPotion, Purification Potion, 0, 0, 0, 15, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {callfunc "usePurificationPotion";}, {}
-734, BlackBoots, Black Boots, 5, 20000, 3000, 25, 0, 3, 0, -10, 0, 2, 64, 0, 0, 0, {}, {}
-735, CottonBoots, Cotton Boots, 5, 2000, 500, 10, 0, 1, 0, 1, 0, 2, 64, 0, 0, 0, {}, {}
-736, WhiteCake, White Cake, 0, 500, 100, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 10, 0;}, {}
-737, ChocolateCake, Chocolate Cake, 0, 550, 125, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 11, 0;}, {}
-738, OrangeCake, Orange Cake, 0, 600, 150, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 12, 0;}, {}
-739, AppleCake, Apple Cake, 0, 600, 150, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 12, 0;}, {}
-740, Root, Root, 3, 500, 200, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-741, CottonGloves, Cotton Gloves, 5, 2000, 500, 10, 0, 1, 0, -10, 0, 2, 4, 0, 0, 0, {}, {}
-742, FourLeafClover, Four-Leaf Clover, 5, 10000, 5000, 1, 0, 0, 0, 5, 0, 2, 8, 0, 0, 0, {}, {bonus bLuk, 1;}
-743, Acorn, Acorn, 0, 50, 10, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 3, 0;}, {}
-744, DilutedConcentrationPot, Diluted Concentration P, 0, 250, 100, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {sc_start sc_raiseattackspeed0, 30, 20;}, {}
-745, DarkConcentrationPotion, Dark Concentration Poti, 0, 50, 25, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {sc_start sc_raiseattackspeed0, 10, 40;sc_start sc_poison, 1, 50;}, {}
-746, MopoxCurePotion, Mopox Cure Potion, 3, 0, 0, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-747, LacedChocolateCake, Laced Chocolate Cake, 0, 550, 125, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 11, 0;}, {}
-748, LacedOrangeCupcake, Laced Orange Cupcake, 0, 90, 45, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 100, 0;}, {}
-749, Towel, Towel, 5, 800, 250, 50, 0, 0, 0, 5, 0, 2, 8, 0, 0, 0, {}, {}
-//ID, Name___________________, Label__________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
-750, SlowPoisonPotion, Slow Poison Potion, 0, 500, 200, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 5, 0;sc_start sc_slowpoison, 180000, 180;}, {}
-751, PinkieHat, Pinkie Hat, 5, 5000, 1000, 5, 0, 1, 0, 1, 0, 2, 256, 0, 0, 0, {}, {}
-752, FluffyHat, Fluffy Hat, 5, 7000, 2000, 10, 0, 2, 0, -5, 0, 2, 256, 0, 0, 0, {}, {}
-753, BatWing, Bat Wing, 3, 500, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-754, BatTeeth, Bat Teeth, 3, 600, 12, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-755, AssassinShirt, Assassin Shirt, 5, 10000, 3000, 15, 0, 10, 0, -5, 0, 2, 512, 0, 0, 0, {}, {callfunc "UnreleasedItem";bonus bAgi, 10;}
-756, AssassinGloves, Assassin Gloves, 5, 7000, 2000, 9, 0, 5, 0, -3, 0, 2, 4, 0, 0, 0, {}, {callfunc "UnreleasedItem";bonus bAgi, 5;}
-757, AssassinBoots, Assassin Boots, 5, 7000, 2000, 10, 0, 5, 0, -3, 0, 2, 64, 0, 0, 0, {}, {callfunc "UnreleasedItem";bonus bAgi, 5;}
-758, WoodenStaff, Wooden Staff, 4, 4000, 2000, 1000, 50, 0, 1, 5, 0, 2, 34, 1, 1, 10, {}, {}
-759, PaladinsHelmet, Paladin's Helmet, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-760, OverlordsHelmet, Overlord's Helmet, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-761, DesertHelmet, Desert Helmet, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-762, TerraniteArrow, Terranite Arrow, 10, 80, 20, 1, 50, 0, 0, 0, 0, 2, 32768, 0, 0, 0, {}, {bonus bCritical, 10;set @AmmoType, AMMO_BOW; callfunc "CheckAmmo";}
-763, TerraniteOre, Terranite Ore, 3, 500, 250, 40, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-764, SailorHat, Sailor Hat, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-765, CaptainsHat, Captain's Hat, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-766, TerraniteHelmet, Terranite Helmet, 5, 30000, 3000, 300, 0, 15, 0, -12, 0, 2, 256, 0, 0, 0, {}, {bonus bMdef, 5;}
-767, TerraniteChestArmor, Terranite Chest Armor, 5, 100000, 3000, 800, 0, 20, 0, -70, 0, 2, 512, 0, 0, 0, {}, {bonus bDex, 1;bonus bMdef, 10;}
-768, TerraniteLegs, Terranite Legs, 5, 10000, 3000, 30, 0, 5, 0, -8, 0, 2, 1, 0, 0, 0, {}, {bonus bAgi, 1;bonus bMdef, 5;}
-769, GuyFawkesMask, Guy Fawkes Mask, 5, 1000, 500, 50, 0, 3, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-//ID, Name___________________, Label__________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
-770, FairyHat, Fairy Hat, 5, 2000, 1000, 20, 0, 5, 0, -10, 0, 2, 256, 0, 0, 0, {}, {bonus bLuk, 3;}
-771, Miniskirt, Miniskirt, 5, 1000, 500, 8, 0, 4, 0, -8, 0, 2, 1, 0, 1, 0, {}, {}
-772, WispPowder, Wisp Powder, 3, 700, 350, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-773, SpectrePowder, Spectre Powder, 3, 700, 350, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-774, PoltergeistPowder, Poltergeist Powder, 3, 700, 350, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-775, Bone, Bone, 3, 140, 70, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-776, Skull, Skull, 3, 900, 450, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-777, RottenRags, Rotten Rags, 3, 100, 50, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-778, DiseasedHeart, Diseased Heart, 3, 180, 90, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-779, UndeadEar, Undead Ear, 3, 30, 15, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-780, UndeadEye, Undead Eye, 3, 30, 15, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-//781, WitchDoctorsMask, Witch Doctor's Mask, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-782, ForestArmor, Forest Armor, 5, 3000, 1500, 40, 0, 10, 0, -20, 0, 2, 512, 0, 0, 0, {}, {bonus bDex, 3;}
-783, PlatynaRedDress, Platyna Red Dress, 5, 100000, 50000, 35, 0, 15, 0, 3, 0, 2, 512, 0, 0, 0, {}, {}
-784, ZombieNachos, Zombie Nachos, 0, 100, 30, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 60, 0;}, {}
-785, LadyFingers, Lady Fingers, 0, 70, 25, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 40, 0;}, {}
-786, JellAhh, Jell-Ahh, 0, 80, 30, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 50, 0;}, {}
-787, Snapple, Snapple, 0, 110, 55, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 70, 0;}, {}
-788, BeetleJuice, Beetle Juice, 0, 80, 30, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 50, 0;}, {}
-789, GutBuster, Gut Buster Ale, 0, 100, 30, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 60, 0;}, {}
-790, BloodWine, Blood Wine, 0, 150, 50, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 100, 0;}, {}
-791, YetiSkinShirt, Yeti Skin Shirt, 5, 20000, 10000, 20, 0, 12, 0, -12, 0, 2, 512, 0, 0, 0, {}, {}
-792, BromenalBoots, Bromenal Boots, 5, 8000, 500, 30, 0, 1, 0, -2, 0, 2, 64, 0, 0, 0, {}, {}
-793, BromenalChest, Bromenal Chest, 5, 100000, 3000, 2000, 0, 25, 0, -170, 0, 2, 512, 0, 0, 0, {}, {}
-794, BromenalGloves, Bromenal Gloves, 5, 6000, 2000, 40, 0, 4, 0, -20, 0, 2, 4, 0, 0, 0, {}, {}
-795, BromenalHelmet, Bromenal Helmet, 5, 15000, 1500, 400, 0, 15, 0, -30, 0, 2, 256, 0, 0, 0, {}, {}
-796, BromenalLegs, Bromenal Legs, 5, 2000, 1000, 150, 0, 6, 0, -12, 0, 2, 1, 0, 0, 0, {}, {}
-797, BromenalShield, Bromenal Shield, 5, 40000, 3000, 2500, 0, 20, 0, -200, 0, 2, 32, 0, 0, 0, {}, {}
-798, SorcererRobeRed, Sorcerer Robe Red, 5, 8000, 4000, 5, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-799, MylarinDust, Mylarin Dust, 3, 10000, 5000, 3, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-800, BowlerHatBrown, Bowler Hat Brown, 5, 2500, 1250, 30, 0, 10, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
-801, PinkieHelmet, Pinkie Helmet, 5, 20000, 1500, 800, 0, 10, 0, -20, 0, 2, 256, 0, 0, 0, {}, {bonus bLuk, 1;}
-802, EasterBasket, Easter Basket, 3, 20, 10, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-803, GrassLiner, Grass Liner, 3, 20, 10, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-804, JellyBeans, Jelly Beans, 3, 20, 10, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-805, ChocolateMouboo, Chocolate Mouboo, 3, 20, 10, 3, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-806, ReedBundle, Reed Bundle, 3, 20, 10, 7, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-807, GrassSeed, Grass Seed, 3, 20, 10, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-//ID, Name___________________, Label__________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
-808, HitchhikersTowel, Hitchhiker's Towel, 0, 0, 0, 30, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {set @warpTowelName$, "HitchhikersTowel"; callfunc "WarpTowel";}, {}
-809, WhiteHitchhikersTowel, White Hitchhiker's Towe, 0, 0, 0, 30, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {set @warpTowelName$, "WhiteHitchhikersTowel"; callfunc "WarpTowel";}, {}
-810, RedHitchhikersTowel, Red Hitchhiker's Towel, 0, 0, 0, 30, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {set @warpTowelName$, "RedHitchhikersTowel"; callfunc "WarpTowel";}, {}
-811, GreenHitchhikersTowel, Green Hitchhiker's Towe, 0, 0, 0, 30, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {set @warpTowelName$, "GreenHitchhikersTowel"; callfunc "WarpTowel";}, {}
-812, BlueHitchhikersTowel, Blue Hitchhiker's Towel, 0, 0, 0, 30, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {set @warpTowelName$, "BlueHitchhikersTowel"; callfunc "WarpTowel";}, {}
-813, YellowHitchhikersTowel, Yellow Hitchhiker's Tow, 0, 0, 0, 30, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {set @warpTowelName$, "YellowHitchhikersTowel"; callfunc "WarpTowel";}, {}
-814, PurpleHitchhikersTowel, Purple Hitchhiker's Tow, 0, 0, 0, 30, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {set @warpTowelName$, "PurpleHitchhikersTowel"; callfunc "WarpTowel";}, {}
-815, OrangeHitchhikersTowel, Orange Hitchhiker's Tow, 0, 0, 0, 30, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {set @warpTowelName$, "OrangeHitchhikersTowel"; callfunc "WarpTowel";}, {}
-816, PinkHitchhikersTowel, Pink Hitchhiker's Towel, 0, 0, 0, 30, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {set @warpTowelName$, "PinkHitchhikersTowel"; callfunc "WarpTowel";}, {}
-817, TealHitchhikersTowel, Teal Hitchhiker's Towel, 0, 0, 0, 30, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {set @warpTowelName$, "TealHitchhikersTowel"; callfunc "WarpTowel";}, {}
-818, LimeHitchhikersTowel, Lime Hitchhiker's Towel, 0, 0, 0, 30, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {set @warpTowelName$, "LimeHitchhikersTowel"; callfunc "WarpTowel";}, {}
-819, DiamondPowder, Diamond Powder, 3, 1000, 500, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-820, RubyPowder, Ruby Powder, 3, 1000, 500, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-821, EmeraldPowder, Emerald Powder, 3, 1000, 500, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-822, SapphirePowder, Sapphire Powder, 3, 1000, 500, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-823, TopazPowder, Topaz Powder, 3, 1000, 500, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-824, AmethystPowder, Amethyst Powder, 3, 1000, 500, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-825, TinyManaElixir, Tiny Mana Elixir, 0, 100, 10, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 0, 25;}, {}
-826, SmallManaElixir, Small Mana Elixir, 0, 200, 20, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 0, 50;}, {}
-827, MediumManaElixir, Medium Mana Elixir, 0, 400, 40, 15, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 0, 100;}, {}
-828, LargeManaElixir, Large Mana Elixir, 0, 800, 80, 25, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 0, 250;}, {}
-829, CrozeniteFourLeafAmulet, Crozenite Four-Leaf Amu, 5, 10000, 1000, 10, 0, 0, 0, 0, 0, 2, 8, 0, 0, 0, {}, {bonus bLuk, 1;}
-830, BromenalFourLeafAmulet, Bromenal Four-Leaf Amul, 5, 20000, 2000, 10, 0, 0, 0, 0, 0, 2, 8, 0, 0, 0, {}, {bonus bLuk, 2;}
-831, SilverFourLeafAmulet, Silver Four-Leaf Amulet, 5, 30000, 3000, 10, 0, 0, 0, 0, 0, 2, 8, 0, 0, 0, {}, {bonus bLuk, 3;}
-832, GoldenFourLeafAmulet, Golden Four-Leaf Amulet, 5, 40000, 4000, 10, 0, 0, 0, 0, 0, 2, 8, 0, 0, 0, {}, {bonus bLuk, 4;}
-833, BrokenFourLeafAmulet, Broken Four-Leaf Amulet, 3, 100, 1, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-834, BrokenDoll, Broken Doll, 3, 20, 5, 15, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-835, HyvernStinger, Hyvern Stinger, 3, 100, 25, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-836, GrubSlime, Grub Slime, 3, 40, 10, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-//837, RESERVED, WitchRoot, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-838, CranberryLollipop, Cranberry Lollipop, 0, 100, 50, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 750, 0;}, {}
-839, GrapeLollipop, Grape Lollipop, 0, 100, 50, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 750, 0;}, {}
-840, OrangeLollipop, Orange Lollipop, 0, 100, 50, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 750, 0;}, {}
-841, RedDottedWrap, Red Dotted Wrap, 3, 50, 25, 500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-842, YellowDottedWrap, Yellow Dotted Wrap, 3, 50, 25, 500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-843, BlueDottedWrap, Blue Dotted Wrap, 3, 50, 25, 500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-844, PurpleStripedWrap, Purple Striped Wrap, 3, 50, 25, 500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-845, RedGoldenStripedWrap, Red Golden Striped Wrap, 3, 50, 25, 500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-846, GreenRedStripedWrap, Green Red Striped Wrap, 3, 50, 25, 500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-847, PlushMouboo, Plush Mouboo, 3, 50, 25, 200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-848, Earmuffs, Earmuffs, 5, 1000, 500, 20, 0, 2, 0, -1, 0, 2, 256, 0, 0, 0, {}, {}
-849, OpenPresentBox, Open Present Box, 3, 50, 25, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-850, ClosedChristmasBox, Closed Christmas Box, 3, 50, 25, 200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-851, StickReinboo, Stick Reinboo, 3, 50, 25, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-852, LeatherBall, Leather Ball, 3, 50, 25, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-853, Doll, Doll, 3, 50, 25, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-854, ElfNightcap, Elf Nightcap, 5, 1000, 500, 50, 0, 3, 0, 5, 0, 2, 256, 0, 0, 0, {}, {}
-855, Sunglasses, Sunglasses, 5, 1000, 500, 10, 0, 2, 0, 6, 0, 2, 256, 0, 0, 0, {}, {}
-856, KnitCap, KnitCap, 5, 1000, 500, 50, 0, 3, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-//ID, Name___________________, Label__________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
-857, LeatherTrousers, Leather Trousers, 5, 1000, 500, 25, 0, 5, 0, -4, 0, 2, 1, 0, 0, 0, {}, {bonus bHit, 2;}
-858, WolvernTooth, Wolvern Tooth, 3, 100, 50, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-859, WolvernPelt, Wolvern Pelt, 3, 500, 250, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-860, SquirrelPelt, Squirrel Pelt, 3, 50, 25, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-861, WhiteBellTuber, White Bell Tuber, 3, 20, 10, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-862, IcedWater, Iced Water, 3, 100, 50, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-863, SilverMirror, Silver Mirror, 3, 500, 250, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-864, BookPage, Book Page, 3, 100, 50, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-865, Grimoire, Grimoire, 5, 5000, 2500, 100, 0, 0, 0, 5, 0, 2, 8, 0, 0, 0, {}, {bonus bMaxSP, 30;}
-866, LeatherSuitcase, Leather Suitcase, 3, 4000, 2000, 12000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-867, IceGladius, Ice Gladius, 4, 2000, 1000, 1000, 110, 0, 1, 0, 0, 2, 2, 1, 1, 1, {}, {bonus bLuk, 1;}
-868, SilkGloves, Silk Gloves, 5, 5000, 2500, 4, 0, 1, 0, 0, 0, 2, 4, 0, 0, 0, {}, {}
-869, Antlers, Antlers, 3, 4000, 2000, 3000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-870, FineDress, Fine Dress, 5, 10000, 5000, 35, 0, 8, 0, 3, 0, 2, 512, 0, 0, 0, {}, {}
-871, SealedSoul, Sealed Soul, 3, 12000, 1000, 75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-872, LockPicks, Lock Picks, 3, 5000, 1500, 150, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-873, LazuriteShard, Lazurite Shard, 3, 500, 50, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-874, LazuriteCrystal, Lazurite Crystal, 3, 3000, 200, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-875, HeartOfLazurite, Heart of Lazurite, 3, 10000, 400, 15, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-876, WarlordBoots, Warlord Boots, 5, 19000, 2000, 550, 0, 5, 0, -22, 0, 2, 64, 0, 0, 0, {}, {}
-877, BullHelmet, Bull Helmet, 5, 90000, 60000, 1300, 0, 19, 0, -52, 0, 2, 256, 0, 90, 0, {}, {set @bStat, bStr;set @minbStatVal, 70;callfunc "RequireStat"; set @bStat, bVit;set @minbStatVal, 50;callfunc "RequireStat"; set @bStat, bLuk;set @minbStatVal, 50;callfunc "RequireStat"; bonus bAtkRange, -10; bonus bDoubleAddRate, 20; bonus bStr, 10; bonus bCritical, 15; bonus bAspdRate, 10; bonus bDef2Rate, -39; bonus bHit, -15;}
-878, BansheeBow, Banshee Bow, 4, 101000, 40000, 900, 90, 0, 6, 0, 0, 2, 34, 1, 90, 11, {}, {set @bStat, bDex;set @minbStatVal, 80;callfunc "RequireStat"; bonus2 bHPDrainRate, 100, -4; bonus bAspdRate, 20; bonus bCritical, 70; bonus bMaxHP, -150; bonus bDefRate, -40; bonus bDef2Rate, -35;set @LauncherType, AMMO_BOW; callfunc "CheckLauncher";}
-879, HeartOfIsis, Heart of Isis, 5, 70000, 35000, 40, 0, 0, 0, 0, 0, 2, 8, 0, 85, 0, {}, {bonus bMaxHPrate, 15; bonus bHPrecovRate, 65;}
-880, LazuriteRobe, Lazurite Robe, 5, 92000, 52000, 30, 0, 7, 0, 60, 0, 2, 512, 0, 90, 0, {}, {set @bStat, bInt;set @minbStatVal, 70;callfunc "RequireStat"; set @bStat, bVit;set @minbStatVal, 40;callfunc "RequireStat"; bonus bSpeedAddRate, -15; bonus bDef2Rate, -40; bonus bMdef, 60; bonus bVit, -1; bonus bInt, 7; bonus bLuk, -1; bonus bDex, -1; bonus bStr, -1;}
-881, RaggedShorts, Ragged Shorts, 5, 60, 1, 7, 0, 0, 0, -2, 0, 2, 1, 0, 1, 0, {}, {}
-882, RedEggshellHat, Red Eggshell Hat, 5, 7000, 5000, 15, 0, 9, 0, 3, 0, 2, 256, 0, 1, 0, {}, {}
-883, BlueEggshellHat, Blue Eggshell Hat, 5, 7000, 5000, 15, 0, 9, 0, 3, 0, 2, 256, 0, 1, 0, {}, {}
-884, YellowEggshellHat, Yellow Eggshell Hat, 5, 7000, 5000, 15, 0, 9, 0, 3, 0, 2, 256, 0, 1, 0, {}, {}
-885, GreenEggshellHat, Green Eggshell Hat, 5, 7000, 5000, 15, 0, 9, 0, 3, 0, 2, 256, 0, 1, 0, {}, {}
-886, OrangeEggshellHat, Orange Eggshell Hat, 5, 7000, 5000, 15, 0, 9, 0, 3, 0, 2, 256, 0, 1, 0, {}, {}
-887, DarkEggshellHat, Dark Eggshell Hat, 5, 7000, 5000, 15, 0, 9, 0, 3, 0, 2, 256, 0, 1, 0, {}, {}
-888, MagicGMTopHat, Magic GM Top Hat, 5, 4200, 1900, 30, 0, 60, 0, 20, 0, 2, 256, 0, 0, 0, {}, {set @minLvl, 60; callfunc "RestrictedItem"; bonus bMaxHP, 31000; bonus bFlee, -200; bonus bHPrecovRate, -400; bonus bCriticalDef, 250; bonus bMdef, 89;}
-889, MurdererCrown, Murderer Crown, 5, 75000, 12000, 240, 0, 4, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-890, BeanieCopter, Beanie Copter, 5, 8000, 2000, 20, 0, 4, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
-891, SilkSheet, Silk Sheet, 3, 1000, 250, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-892, OrangeSummonFlower, Orange Summon Flower, 3, 50, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-893, PurpleSummonFlower, Purple Summon Flower, 3, 100, 50, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-894, WhiteSummonFlower, White Summon Flower, 3, 200, 100, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-895, YellowSummonFlower, Yellow Summon Flower, 3, 400, 200, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-896, RedSummonFlower, Red Summon Flower, 3, 600, 300, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-897, RedRoseHat, Red Rose Hat, 5, 5000, 1000, 0, 0, 1, 0, 8, 0, 2, 256, 0, 0, 0, {}, {}
-898, WhiteRoseHat, White Rose Hat, 5, 5000, 1000, 0, 0, 1, 0, 8, 0, 2, 256, 0, 0, 0, {}, {}
-899, PinkRoseHat, Pink Rose Hat, 5, 5000, 1000, 0, 0, 1, 0, 8, 0, 2, 256, 0, 0, 0, {}, {}
-900, YellowRoseHat, Yellow Rose Hat, 5, 5000, 1000, 0, 0, 1, 0, 8, 0, 2, 256, 0, 0, 0, {}, {}
-901, OrangeRoseHat, Orange Rose Hat, 5, 5000, 1000, 0, 0, 1, 0, 8, 0, 2, 256, 0, 0, 0, {}, {}
-902, BlueRoseHat, Blue Rose Hat, 5, 5000, 1000, 0, 0, 1, 0, 8, 0, 2, 256, 0, 0, 0, {}, {}
-903, SlingShot, Sling Shot, 4, 500, 50, 10, 5, 0, 3, 0, 0, 2, 34, 1, 1, 11, {}, {set @LauncherType, AMMO_SLING; callfunc "CheckLauncher";}
-904, SlingBullet, Sling Bullet, 10, 1, 0, 1, 5, 0, 0, 0, 0, 2, 32768, 0, 0, 0, {}, {set @AmmoType, AMMO_SLING; callfunc "CheckAmmo";}
-905, BucketHat, Bucket Hat, 5, 1600, 800, 20, 0, 5, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-// Add new entries above here. For dyed entries, add to the bottom of the 2000s.
-1172, SilkPants, Silk Pants, 5, 1500, 750, 10, 0, 2, 0, 0, 0, 2, 1, 0, 1, 0, {}, {}
-1173, TamOShanter, Tam O' Shanter, 5, 5000, 500, 20, 0, 9, 0, -2, 0, 2, 256, 0, 0, 0, {}, {}
-1174, CashiersShade, Cashier's Shade, 5, 4000, 500, 15, 0, 2, 0, -10, 0, 2, 256, 0, 0, 0, {}, {}
-1175, AutumnMask, Autumn Mask, 5, 5000, 500, 10, 0, 1, 0, 4, 0, 2, 256, 0, 0, 0, {}, {}
-1176, ContributorshirtGuru, Contributorshirt (Guru), 5, 8000, 4000, 20, 0, 5, 0, 5, 0, 2, 512, 0, 0, 0, {}, {}
-1177, Contributorshirt2013, Contributorshirt (2013), 5, 8000, 4000, 20, 0, 5, 0, 5, 0, 2, 512, 0, 0, 0, {}, {}
-1178, Contributorshirt2014, Contributorshirt (2014), 5, 8000, 4000, 20, 0, 5, 0, 5, 0, 2, 512, 0, 0, 0, {}, {}
-1179, Contributorshirt2015, Contributorshirt (2015), 5, 8000, 4000, 20, 0, 5, 0, 5, 0, 2, 512, 0, 0, 0, {}, {}
-1180, Contributorshirt2016, Contributorshirt (2016), 5, 8000, 4000, 20, 0, 5, 0, 5, 0, 2, 512, 0, 0, 0, {}, {}
-1181, Contributorshirt2017, Contributorshirt (2017), 5, 8000, 4000, 20, 0, 5, 0, 5, 0, 2, 512, 0, 0, 0, {}, {}
-1182, Contributorshirt2018, Contributorshirt (2018), 5, 8000, 4000, 20, 0, 5, 0, 5, 0, 2, 512, 0, 0, 0, {}, {}
-1183, AmberChristmasSweater, Amber Christmas Sweater, 5, 2000, 1000, 35, 0, 6, 0, -12, 0, 2, 512, 0, 0, 0, {}, {}
-1184, FunkyChristmasSweater, Funky Christmas Sweater, 5, 2000, 1000, 35, 0, 6, 0, -12, 0, 2, 512, 0, 0, 0, {}, {}
-1185, PinkChristmasSweater, Pink Christmas Sweater, 5, 8000, 4000, 30, 0, 5, 0, 0, 0, 2, 512, 0, 0, 0, {}, {}
-1186, DarkChristmasSweater, Dark Christmas Sweater, 5, 2000, 1000, 35, 0, 6, 0, -12, 0, 2, 512, 0, 0, 0, {}, {}
-1187, BlueChristmasSweater, Blue Christmas Sweater, 5, 8000, 4000, 30, 0, 5, 0, 0, 0, 2, 512, 0, 0, 0, {}, {}
-1188, RedStockings, Red Stockings, 5, 7000, 2000, 10, 0, 1, 0, 2, 0, 2, 64, 0, 0, 0, {}, {}
-1189, PollettEgg, PollettEgg, 0, 250, 25, 4, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 75, 10;}, {}
-1190, NutcrackerHat, NutcrackerHat, 5, 1000, 500, 20, 0, 5, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
-1191, WhiteWrap, White Wrap, 3, 50, 25, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-1192, YellowWrap, Yellow Wrap, 3, 50, 25, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-1193, BlueWrap, Blue Wrap, 3, 50, 25, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-1194, PurpleWrap, Purple Wrap, 3, 50, 25, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-1195, GreenWrap, Green Wrap, 3, 50, 25, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-1196, Beret, Beret, 5, 1000, 500, 20, 0, 3, 0, 0, 0, 2, 256, 0, 0, 0, {bonus bAgi, 2;}, {}
-1197, SkeletonCharm, Skeleton Charm, 5, 0, 0, 10, 0, 0, 0, 0, 0, 2, 128, 0, 0, 0, {}, { callfunc "CheckMunro"; }
-1198, Soul, Soul, 3, 100000, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-1199, Arrow, Arrow, 10, 2, 1, 1, 20, 0, 0, 0, 0, 2, 32768, 0, 0, 0, {}, {set @AmmoType, AMMO_BOW; callfunc "CheckAmmo";}
-1200, Bow, Bow, 4, 1000, 500, 20, 20, 0, 5, 0, 0, 2, 34, 1, 4, 11, {}, {set @LauncherType, AMMO_BOW; callfunc "CheckLauncher";}
-1201, Knife, Knife, 4, 50, 25, 120, 5, 0, 1, 0, 0, 2, 2, 1, 1, 1, {}, {}
-1202, CottonShirt, Cotton Shirt, 5, 300, 5, 13, 0, 2, 0, -2, 0, 2, 512, 0, 0, 0, {}, {}
-//ID, Name___________________, Label__________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
-1203, RangerHat, Ranger Hat, 5, 1000, 500, 20, 0, 2, 0, -1, 0, 2, 256, 0, 0, 0, {}, {}
-1204, AntlerHat, Antler Hat, 5, 1000, 500, 15, 0, 4, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
-1205, ChristmasTreeHat, Christmas Tree Hat, 5, 2000, 1000, 20, 0, 2, 0, 4, 0, 2, 256, 0, 0, 0, {}, {}
-1206, SantaBeardHat, Santa Beard Hat, 5, 1000, 500, 20, 0, 5, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
-1207, RedChristmasStocking, Red Christmas Stocking, 3, 80, 40, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-1208, RedEasterEgg, Red Easter Egg, 3, 80, 40, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-1209, GreenEasterEgg, Green Easter Egg, 3, 80, 40, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-1210, BlueEasterEgg, Blue Easter Egg, 3, 80, 40, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-1211, YellowEasterEgg, Yellow Easter Egg, 3, 80, 40, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-1212, PinkEasterEgg, Pink Easter Egg, 3, 80, 40, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-1213, TealEasterEgg, Teal Easter Egg, 3, 80, 40, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-1214, BunnyEars, Bunny Ears, 5, 5000, 2000, 20, 0, 10, 0, 1, 0, 2, 256, 0, 0, 0, {}, {}
-1215, ToySabre, Toy Sabre, 4, 50, 25, 1, 1, 0, 1, 0, 0, 2, 2, 1, 1, 1, {}, {}
-1216, MoubooHead, Mouboo Head, 5, 10, 1, 80, 0, 1, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-1217, CatEars, Cat Ears, 5, 100, 50, 20, 0, 1, 0, 1, 0, 2, 256, 0, 0, 0, {}, {bonus bAgi, 3;}
-1218, PaperBag, Paper Bag, 5, 1000, 5, 10, 0, 1, 0, -1, 0, 2, 256, 0, 0, 0, {}, {bonus bAgi, -1;}
-1219, MoubootaurHead, Moubootaur Head, 5, 10, 1, 80, 0, 1, 0, 0, 0, 2, 256, 0, 0, 0, {}, {set@minLvl, 1;callfunc "RestrictedItem";}
-1220, BunchOfParsley, Bunch of Parsley, 5, 3, 1, 1, 0, 1, 0, 0, 0, 2, 256, 0, 0, 0, {}, {bonus bDeaf, 1;}
-1221, SkullMask, Skull Mask, 5, 10000, 5000, 150, 0, 3, 0, 5, 0, 2, 256, 0, 0, 0, {}, {}
-//1222, SmallPieceOfClay, Small Piece of Clay, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-//ID, Name___________________, Label__________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
-//1223, BigPieceOfWhiteClay, Big Piece of White Clay, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-//1224, ScrollOfPaper, Scroll of Paper, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-//1225, FireScroll, Fire Scroll, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-//1226, SilverBell, Silver Bell, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-//1227, EnchantersAmulet, Enchanter's Amulet, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-1228, LightCrystal, Light Crystal, 3, 1000, 250, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-1229, CaramelApple, Caramel Apple, 0, 500, 75, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 1000, 0;}, {}
-1230, LollipopColor1, Booberry Blue Lollipop, 0, 100, 50, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 800, 0;}, {}
-1231, LollipopColor2, Ghastly Green Lollipop, 0, 100, 50, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 800, 0;}, {}
-1232, LollipopColor3, Blood Red Lollipop, 0, 100, 50, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 800, 0;}, {}
-1233, FakeFangs, Cheap Plastic Fangs, 3, 20000, 10000, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-1234, RedOrnament, Red Christmas Ornament, 3, 5000, 1, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-1235, YellowOrnament, Yellow Christmas Orname, 3, 5000, 1, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-1236, GreenOrnament, Green Christmas Ornamen, 3, 5000, 1, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-1237, AquaOrnament, Aqua Christmas Ornament, 3, 5000, 1, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-1238, BlueOrnament, Blue Christmas Ornament, 3, 5000, 1, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-1239, MagentaOrnament, Magenta Christmas Ornam, 3, 5000, 1, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-1240, SantaSnowGlobe, Santa Snow Globe, 3, 7500, 5000, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-1241, SnowmanSnowGlobe, Snowman Snow Globe, 3, 7500, 5000, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-1242, SnowGoggles, Snow Goggles, 5, 7500, 5000, 10, 0, 5, 0, -2, 0, 2, 256, 0, 0, 0, {}, {}
-//ID, Name___________________, Label__________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
-//1243, RESERVED, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-1244, DarkTalisman, Dark Talisman, 5, 0, 0, 0, 0, 30, 0, 100, 0, 2, 512, 0, 0, 0, {}, {set@minLvl, 1;callfunc "RestrictedItem"; set @val, getopt2; if(!(@val&1024))setopt2 getopt2 | 1024; bonus bMaxHp, 30000; bonus bFlee, -150;}
-1245, BentNeedle, Bent Needle, 3, 700, 1, 3, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-1246, DarkEasterEgg, Dark Easter Egg, 3, 700, 50, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-1247, HeartGlasses, Heart Glasses, 5, 7500, 5000, 20, 0, 4, 0, 5, 0, 2, 256, 0, 0, 0, {}, {}
-1248, Blueberries, Blueberries, 0, 50, 25, 6, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 200, 0;}, {}
-1249, StrangeCoin, Strange Coin, 3, 7000, 5000, 3, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-1250, Pear, Pear, 0, 50, 25, 7, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 150, 0;}, {}
-1251, Plum, Plum, 0, 50, 25, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 100, 0;}, {}
-1252, Cherry, Cherry, 0, 50, 25, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 50, 0;}, {}
-1253, GoldenDeliciousApple, Golden Delicious Apple, 0, 1000, 500, 30, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 200, 0;}, {}
-1254, DarkPetal, Dark Petal, 3, 15000, 8000, 250, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-1255, WhiteRabbitEars, White Rabbit Ears, 5, 7000, 5000, 20, 0, 5, 0, 4, 0, 2, 256, 0, 1, 0, {}, {}
-1256, EggshellHat, Eggshell Hat, 5, 7000, 5000, 15, 0, 12, 0, 0, 0, 2, 256, 0, 1, 0, {}, {bonus bAgi, -1;}
-1257, FlawedLens, Flawed Lens, 3, 10000, 5000, 3, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-1258, Honey, Honey, 0, 100, 80, 20, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 45, 0;}, {}
-//1259, BeeEgg
-//1260, Wax
-//1261, Venom
-//ID, Name___________________, Label__________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
-//1262, FlowerSeed
-//1263, Incubator
-//1264, RoyalJelly
-//1265, VespaWing
-//1266, Hive
-//1267, VespaEgg
-//1268, LarvaFat
-//1269, LarvaPincer
-//1270, FrogEgg
-//1271, PondScum
-//1272, FrogLeg
-//1273, TrollStone
-//1274, SmallClub
-//1275, LoinCloth
-1276, OperaMask, Opera Mask, 5, 1000, 500, 50, 0, 3, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-1277, JesterMask, Jester Mask, 5, 1000, 500, 50, 0, 3, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-1278, WitchHat, Witch Hat, 5, 1000, 500, 50, 0, 3, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-//ID, Name___________________, Label__________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
-1279, GoblinMask, Goblin Mask, 5, 1000, 500, 50, 0, 3, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-1280, Scissors, Scissors, 0, 1000, 500, 120, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {callfunc "useScissors";}, {}
-1281, ShockSweet, Shock Sweet, 0, 1000, 500, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {callfunc "useShockSweet";}, {}
-1282, BoneArrows, Bone Arrows, 10, 50, 20, 0, 55, 0, 0, 0, 0, 2, 32768, 0, 0, 0, {}, {bonus bCritical, 1;set @AmmoType, AMMO_BOW; callfunc "CheckAmmo";}
-// No new additions to the 1000s please. Add to the bottom of the < 1000s for regular entries and the 2000s for dyed entries.
-2050, RedCottonShirt, Red Cotton Shirt, 5, 300, 5, 20, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
-2051, GreenCottonShirt, Green Cotton Shirt, 5, 300, 5, 20, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
-2052, DarkBlueCottonShirt, Dark Blue Cotton Shirt, 5, 300, 5, 20, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
-2053, YellowCottonShirt, Yellow Cotton Shirt, 5, 300, 5, 20, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
-2054, LightBlueCottonShirt, Light Blue Cotton Shirt, 5, 300, 5, 20, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
-2055, PinkCottonShirt, Pink Cotton Shirt, 5, 300, 5, 20, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
-2056, BlackCottonShirt, Black Cotton Shirt, 5, 300, 5, 20, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
-2057, OrangeCottonShirt, Orange Cotton Shirt, 5, 300, 5, 20, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
-2058, PurpleCottonShirt, Purple Cotton Shirt, 5, 300, 5, 20, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
-2059, DarkGreenCottonShirt, Dark Green Cotton Shirt, 5, 300, 5, 20, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
-2060, RedVNeckSweater, Red V-Neck Sweater, 5, 6000, 3000, 35, 0, 8, 0, -16, 0, 2, 512, 0, 0, 0, {}, {}
-2061, GreenVNeckSweater, Green V-Neck Sweater, 5, 6000, 3000, 35, 0, 8, 0, -16, 0, 2, 512, 0, 0, 0, {}, {}
-2062, DarkBlueVNeckSweater, Dark Blue V-Neck Sweate, 5, 6000, 3000, 35, 0, 8, 0, -16, 0, 2, 512, 0, 0, 0, {}, {}
-2063, YellowVNeckSweater, Yellow V-Neck Sweater, 5, 6000, 3000, 35, 0, 8, 0, -16, 0, 2, 512, 0, 0, 0, {}, {}
-2064, LightBlueVNeckSweater, Light Blue V-Neck Sweat, 5, 6000, 3000, 35, 0, 8, 0, -16, 0, 2, 512, 0, 0, 0, {}, {}
-//ID, Name___________________, Label__________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
-2065, PinkVNeckSweater, Pink V-Neck Sweater, 5, 6000, 3000, 35, 0, 8, 0, -16, 0, 2, 512, 0, 0, 0, {}, {}
-2066, BlackVNeckSweater, Black V-Neck Sweater, 5, 6000, 3000, 35, 0, 8, 0, -16, 0, 2, 512, 0, 0, 0, {}, {}
-2067, OrangeVNeckSweater, Orange V-Neck Sweater, 5, 6000, 3000, 35, 0, 8, 0, -16, 0, 2, 512, 0, 0, 0, {}, {}
-2068, PurpleVNeckSweater, Purple V-Neck Sweater, 5, 6000, 3000, 35, 0, 8, 0, -16, 0, 2, 512, 0, 0, 0, {}, {}
-2069, DarkGreenVNeckSweater, Dark Green V-Neck Sweat, 5, 6000, 3000, 35, 0, 8, 0, -16, 0, 2, 512, 0, 0, 0, {}, {}
-2070, RedTurtleneckSweater, Red Turtleneck Sweater, 5, 2000, 1000, 35, 0, 6, 0, -12, 0, 2, 512, 0, 0, 0, {}, {}
-2071, GreenTurtleneckSweater, Green Turtleneck Sweate, 5, 2000, 1000, 35, 0, 6, 0, -12, 0, 2, 512, 0, 0, 0, {}, {}
-2072, DarkBlueTurtleneckSweat, Dark Blue Turtleneck Sw, 5, 2000, 1000, 35, 0, 6, 0, -12, 0, 2, 512, 0, 0, 0, {}, {}
-2073, YellowTurtleneckSweater, Yellow Turtleneck Sweat, 5, 2000, 1000, 35, 0, 6, 0, -12, 0, 2, 512, 0, 0, 0, {}, {}
-2074, LightBlueTurtleneckSwea, Light Blue Turtleneck S, 5, 2000, 1000, 35, 0, 6, 0, -12, 0, 2, 512, 0, 0, 0, {}, {}
-2075, PinkTurtleneckSweater, Pink Turtleneck Sweater, 5, 2000, 1000, 35, 0, 6, 0, -12, 0, 2, 512, 0, 0, 0, {}, {}
-2076, BlackTurtleneckSweater, Black Turtleneck Sweate, 5, 2000, 1000, 35, 0, 6, 0, -12, 0, 2, 512, 0, 0, 0, {}, {}
-2077, OrangeTurtleneckSweater, Orange Turtleneck Sweat, 5, 2000, 1000, 35, 0, 6, 0, -12, 0, 2, 512, 0, 0, 0, {}, {}
-2078, PurpleTurtleneckSweater, Purple Turtleneck Sweat, 5, 2000, 1000, 35, 0, 6, 0, -12, 0, 2, 512, 0, 0, 0, {}, {}
-2079, DarkGreenTurtleneckSwea, Dark Green Turtleneck S, 5, 2000, 1000, 35, 0, 6, 0, -12, 0, 2, 512, 0, 0, 0, {}, {}
-2080, RedSilkRobe, Red Silk Robe, 5, 8000, 4000, 30, 0, 5, 0, 0, 0, 2, 512, 0, 0, 0, {}, {}
-2081, GreenSilkRobe, Green Silk Robe, 5, 8000, 4000, 30, 0, 5, 0, 0, 0, 2, 512, 0, 0, 0, {}, {}
-2082, DarkBlueSilkRobe, Dark Blue Silk Robe, 5, 8000, 4000, 30, 0, 5, 0, 0, 0, 2, 512, 0, 0, 0, {}, {}
-2083, YellowSilkRobe, Yellow Silk Robe, 5, 8000, 4000, 30, 0, 5, 0, 0, 0, 2, 512, 0, 0, 0, {}, {}
-2084, LightBlueSilkRobe, Light Blue Silk Robe, 5, 8000, 4000, 30, 0, 5, 0, 0, 0, 2, 512, 0, 0, 0, {}, {}
-//ID, Name___________________, Label__________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
-2085, PinkSilkRobe, Pink Silk Robe, 5, 8000, 4000, 30, 0, 5, 0, 0, 0, 2, 512, 0, 0, 0, {}, {}
-2086, BlackSilkRobe, Black Silk Robe, 5, 8000, 4000, 30, 0, 5, 0, 0, 0, 2, 512, 0, 0, 0, {}, {}
-2087, OrangeSilkRobe, Orange Silk Robe, 5, 8000, 4000, 30, 0, 5, 0, 0, 0, 2, 512, 0, 0, 0, {}, {}
-2088, PurpleSilkRobe, Purple Silk Robe, 5, 8000, 4000, 30, 0, 5, 0, 0, 0, 2, 512, 0, 0, 0, {}, {}
-2089, DarkGreenSilkRobe, Dark Green Silk Robe, 5, 8000, 4000, 30, 0, 5, 0, 0, 0, 2, 512, 0, 0, 0, {}, {}
-2090, RedTankTop, Red Tank Top, 5, 800, 400, 12, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
-2091, GreenTankTop, Green Tank Top, 5, 800, 400, 12, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
-2092, DarkBlueTankTop, Dark Blue Tank Top, 5, 800, 400, 12, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
-2093, YellowTankTop, Yellow Tank Top, 5, 800, 400, 12, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
-2094, LightBlueTankTop, Light Blue Tank Top, 5, 800, 400, 12, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
-2095, PinkTankTop, Pink Tank Top, 5, 800, 400, 12, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
-2096, BlackTankTop, Black Tank Top, 5, 800, 400, 12, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
-2097, OrangeTankTop, Orange Tank Top, 5, 800, 400, 12, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
-2098, PurpleTankTop, Purple Tank Top, 5, 800, 400, 12, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
-2099, DarkGreenTankTop, Dark Green Tank Top, 5, 800, 400, 12, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
-2100, RedCottonSkirt, Red Cotton Skirt, 5, 1000, 500, 20, 0, 4, 0, -8, 0, 2, 1, 0, 1, 0, {}, {}
-2101, GreenCottonSkirt, Green Cotton Skirt, 5, 1000, 500, 20, 0, 4, 0, -8, 0, 2, 1, 0, 1, 0, {}, {}
-2102, DarkBlueCottonSkirt, Dark Blue Cotton Skirt, 5, 1000, 500, 20, 0, 4, 0, -8, 0, 2, 1, 0, 1, 0, {}, {}
-2103, YellowCottonSkirt, Yellow Cotton Skirt, 5, 1000, 500, 20, 0, 4, 0, -8, 0, 2, 1, 0, 1, 0, {}, {}
-2104, LightBlueCottonSkirt, Light Blue Cotton Skirt, 5, 1000, 500, 20, 0, 4, 0, -8, 0, 2, 1, 0, 1, 0, {}, {}
-//ID, Name___________________, Label__________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
-2105, PinkCottonSkirt, Pink Cotton Skirt, 5, 1000, 500, 20, 0, 4, 0, -8, 0, 2, 1, 0, 1, 0, {}, {}
-2106, BlackCottonSkirt, Black Cotton Skirt, 5, 1000, 500, 20, 0, 4, 0, -8, 0, 2, 1, 0, 1, 0, {}, {}
-2107, OrangeCottonSkirt, Orange Cotton Skirt, 5, 1000, 500, 20, 0, 4, 0, -8, 0, 2, 1, 0, 1, 0, {}, {}
-2108, PurpleCottonSkirt, Purple Cotton Skirt, 5, 1000, 500, 20, 0, 4, 0, -8, 0, 2, 1, 0, 1, 0, {}, {}
-2109, DarkGreenCottonSkirt, Dark Green Cotton Skirt, 5, 1000, 500, 20, 0, 4, 0, -8, 0, 2, 1, 0, 1, 0, {}, {}
-2110, RedCottonShorts, Red Cotton Shorts, 5, 1000, 500, 20, 0, 2, 0, -4, 0, 2, 1, 0, 1, 0, {}, {}
-2111, GreenCottonShorts, Green Cotton Shorts, 5, 1000, 500, 20, 0, 2, 0, -4, 0, 2, 1, 0, 1, 0, {}, {}
-2112, DarkBlueCottonShorts, Dark Blue Cotton Shorts, 5, 1000, 500, 20, 0, 2, 0, -4, 0, 2, 1, 0, 1, 0, {}, {}
-2113, YellowCottonShorts, Yellow Cotton Shorts, 5, 1000, 500, 20, 0, 2, 0, -4, 0, 2, 1, 0, 1, 0, {}, {}
-2114, LightBlueCottonShorts, Light Blue Cotton Short, 5, 1000, 500, 20, 0, 2, 0, -4, 0, 2, 1, 0, 1, 0, {}, {}
-2115, PinkCottonShorts, Pink Cotton Shorts, 5, 1000, 500, 20, 0, 2, 0, -4, 0, 2, 1, 0, 1, 0, {}, {}
-2116, BlackCottonShorts, Black Cotton Shorts, 5, 1000, 500, 20, 0, 2, 0, -4, 0, 2, 1, 0, 1, 0, {}, {}
-2117, OrangeCottonShorts, Orange Cotton Shorts, 5, 1000, 500, 20, 0, 2, 0, -4, 0, 2, 1, 0, 1, 0, {}, {}
-2118, PurpleCottonShorts, Purple Cotton Shorts, 5, 1000, 500, 20, 0, 2, 0, -4, 0, 2, 1, 0, 1, 0, {}, {}
-2119, DarkGreenCottonShorts, Dark Green Cotton Short, 5, 1000, 500, 20, 0, 2, 0, -4, 0, 2, 1, 0, 1, 0, {}, {}
-2120, RedShortTankTop, Red Short Tank Top, 5, 600, 300, 8, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
-2121, GreenShortTankTop, Green Short Tank Top, 5, 600, 300, 8, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
-2122, DarkBlueShortTankTop, Dark Blue Short Tank To, 5, 600, 300, 8, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
-2123, YellowShortTankTop, Yellow Short Tank Top, 5, 600, 300, 8, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
-2124, LightBlueShortTankTop, Light Blue Short Tank T, 5, 600, 300, 8, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
-//ID, Name___________________, Label__________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
-2125, PinkShortTankTop, Pink Short Tank Top, 5, 600, 300, 8, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
-2126, BlackShortTankTop, Black Short Tank Top, 5, 600, 300, 8, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
-2127, OrangeShortTankTop, Orange ShortTank Top, 5, 600, 300, 8, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
-2128, PurpleShortTankTop, Purple Short Tank Top, 5, 600, 300, 8, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
-2129, DarkGreenShortTankTop, Dark Green Short Tank T, 5, 600, 300, 8, 0, 2, 0, -4, 0, 2, 512, 0, 0, 0, {}, {}
-2130, RedDesertHat, Red Desert Hat, 5, 2400, 600, 20, 0, 3, 0, -1, 0, 2, 256, 0, 0, 0, {}, {}
-2131, GreenDesertHat, Green Desert Hat, 5, 2400, 600, 20, 0, 3, 0, -1, 0, 2, 256, 0, 0, 0, {}, {}
-2132, DarkBlueDesertHat, Dark Blue Desert Hat, 5, 2400, 600, 20, 0, 3, 0, -1, 0, 2, 256, 0, 0, 0, {}, {}
-2133, YellowDesertHat, Yellow Desert Hat, 5, 2400, 600, 20, 0, 3, 0, -1, 0, 2, 256, 0, 0, 0, {}, {}
-2134, LightBlueDesertHat, Light Blue Desert Hat, 5, 2400, 600, 20, 0, 3, 0, -1, 0, 2, 256, 0, 0, 0, {}, {}
-2135, PinkDesertHat, Pink Desert Hat, 5, 2400, 600, 20, 0, 3, 0, -1, 0, 2, 256, 0, 0, 0, {}, {}
-2136, BlackDesertHat, Black Desert Hat, 5, 2400, 600, 20, 0, 3, 0, -1, 0, 2, 256, 0, 0, 0, {}, {}
-2137, OrangeDesertHat, Orange Desert Hat, 5, 2400, 600, 20, 0, 3, 0, -1, 0, 2, 256, 0, 0, 0, {}, {}
-2138, PurpleDesertHat, Purple Desert Hat, 5, 2400, 600, 20, 0, 3, 0, -1, 0, 2, 256, 0, 0, 0, {}, {}
-2139, DarkGreenDesertHat, Dark Green Desert Hat, 5, 2400, 600, 20, 0, 3, 0, -1, 0, 2, 256, 0, 0, 0, {}, {}
-2140, RedCottonHeadband, Red Cotton Headband, 5, 3000, 500, 5, 0, 2, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-2141, GreenCottonHeadband, Green Cotton Headband, 5, 3000, 500, 5, 0, 2, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-2142, DarkBlueCottonHeadband, Dark Blue Cotton Headba, 5, 3000, 500, 5, 0, 2, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-2143, YellowCottonHeadband, Yellow Cotton Headband, 5, 3000, 500, 5, 0, 2, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-2144, LightBlueCottonHeadband, Light Blue Cotton Headb, 5, 3000, 500, 5, 0, 2, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-//ID, Name___________________, Label__________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
-2145, PinkCottonHeadband, Pink Cotton Headband, 5, 3000, 500, 5, 0, 2, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-2146, BlackCottonHeadband, Black Cotton Headband, 5, 3000, 500, 5, 0, 2, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-2147, OrangeCottonHeadband, Orange Cotton Headband, 5, 3000, 500, 5, 0, 2, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-2148, PurpleCottonHeadband, Purple Cotton Headband, 5, 3000, 500, 5, 0, 2, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-2149, DarkGreenCottonHeadband, Dark Green Cotton Headb, 5, 3000, 500, 5, 0, 2, 0, 0, 0, 2, 256, 0, 0, 0, {}, {}
-2150, RedCottonBoots, Red Cotton Boots, 5, 2000, 500, 30, 0, 1, 0, 1, 0, 2, 64, 0, 0, 0, {}, {}
-2151, GreenCottonBoots, Green Cotton Boots, 5, 2000, 500, 30, 0, 1, 0, 1, 0, 2, 64, 0, 0, 0, {}, {}
-2152, DarkBlueCottonBoots, Dark Blue Cotton Boots, 5, 2000, 500, 30, 0, 1, 0, 1, 0, 2, 64, 0, 0, 0, {}, {}
-2153, YellowCottonBoots, Yellow Cotton Boots, 5, 2000, 500, 30, 0, 1, 0, 1, 0, 2, 64, 0, 0, 0, {}, {}
-2154, LightBlueCottonBoots, Light Blue Cotton Boots, 5, 2000, 500, 30, 0, 1, 0, 1, 0, 2, 64, 0, 0, 0, {}, {}
-2155, PinkCottonBoots, Pink Cotton Boots, 5, 2000, 500, 30, 0, 1, 0, 1, 0, 2, 64, 0, 0, 0, {}, {}
-2156, BlackCottonBoots, Black Cotton Boots, 5, 2000, 500, 30, 0, 1, 0, 1, 0, 2, 64, 0, 0, 0, {}, {}
-2157, OrangeCottonBoots, Orange Cotton Boots, 5, 2000, 500, 30, 0, 1, 0, 1, 0, 2, 64, 0, 0, 0, {}, {}
-2158, PurpleCottonBoots, Purple Cotton Boots, 5, 2000, 500, 30, 0, 1, 0, 1, 0, 2, 64, 0, 0, 0, {}, {}
-2159, DarkGreenCottonBoots, Dark Green Cotton Boots, 5, 2000, 500, 30, 0, 1, 0, 1, 0, 2, 64, 0, 0, 0, {}, {}
-2160, RedCottonGloves, Red Cotton Gloves, 5, 2000, 500, 20, 0, 1, 0, -10, 0, 2, 4, 0, 0, 0, {}, {}
-2161, GreenCottonGloves, Green Cotton Gloves, 5, 2000, 500, 20, 0, 1, 0, -10, 0, 2, 4, 0, 0, 0, {}, {}
-2162, DarkBlueCottonGloves, Dark Blue Cotton Gloves, 5, 2000, 500, 20, 0, 1, 0, -10, 0, 2, 4, 0, 0, 0, {}, {}
-2163, YellowCottonGloves, Yellow Cotton Gloves, 5, 2000, 500, 20, 0, 1, 0, -10, 0, 2, 4, 0, 0, 0, {}, {}
-2164, LightBlueCottonGloves, Light Blue Cotton Glove, 5, 2000, 500, 20, 0, 1, 0, -10, 0, 2, 4, 0, 0, 0, {}, {}
-//ID, Name___________________, Label__________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
-2165, PinkCottonGloves, Pink Cotton Gloves, 5, 2000, 500, 20, 0, 1, 0, -10, 0, 2, 4, 0, 0, 0, {}, {}
-2166, BlackCottonGloves, Black Cotton Gloves, 5, 2000, 500, 20, 0, 1, 0, -10, 0, 2, 4, 0, 0, 0, {}, {}
-2167, OrangeCottonGloves, Orange Cotton Gloves, 5, 2000, 500, 20, 0, 1, 0, -10, 0, 2, 4, 0, 0, 0, {}, {}
-2168, PurpleCottonGloves, Purple Cotton Gloves, 5, 2000, 500, 20, 0, 1, 0, -10, 0, 2, 4, 0, 0, 0, {}, {}
-2169, DarkGreenCottonGloves, Dark Green Cotton Glove, 5, 2000, 500, 20, 0, 1, 0, -10, 0, 2, 4, 0, 0, 0, {}, {}
-2170, RedMiniskirt, Red Miniskirt, 5, 1000, 500, 8, 0, 4, 0, -8, 0, 2, 1, 0, 1, 0, {}, {}
-2171, GreenMiniskirt, Green Miniskirt, 5, 1000, 500, 8, 0, 4, 0, -8, 0, 2, 1, 0, 1, 0, {}, {}
-2172, DarkBlueMiniskirt, Dark Blue Miniskirt, 5, 1000, 500, 8, 0, 4, 0, -8, 0, 2, 1, 0, 1, 0, {}, {}
-2173, YellowMiniskirt, Yellow Miniskirt, 5, 1000, 500, 8, 0, 4, 0, -8, 0, 2, 1, 0, 1, 0, {}, {}
-2174, LightBlueMiniskirt, Light Blue Miniskirt, 5, 1000, 500, 8, 0, 4, 0, -8, 0, 2, 1, 0, 1, 0, {}, {}
-2175, PinkMiniskirt, Pink Miniskirt, 5, 1000, 500, 8, 0, 4, 0, -8, 0, 2, 1, 0, 1, 0, {}, {}
-2176, BlackMiniskirt, Black Miniskirt, 5, 1000, 500, 8, 0, 4, 0, -8, 0, 2, 1, 0, 1, 0, {}, {}
-2177, OrangeMiniskirt, Orange Miniskirt, 5, 1000, 500, 8, 0, 4, 0, -8, 0, 2, 1, 0, 1, 0, {}, {}
-2178, PurpleMiniskirt, Purple Miniskirt, 5, 1000, 500, 8, 0, 4, 0, -8, 0, 2, 1, 0, 1, 0, {}, {}
-2179, DarkGreenMiniskirt, Dark Green Miniskirt, 5, 1000, 500, 8, 0, 4, 0, -8, 0, 2, 1, 0, 1, 0, {}, {}
-2180, RedCottonTrousers, Red Cotton Trousers, 5, 1500, 750, 25, 0, 4, 0, -6, 0, 2, 1, 0, 1, 0, {}, {}
-2181, GreenCottonTrousers, Green Cotton Trousers, 5, 1500, 750, 25, 0, 4, 0, -6, 0, 2, 1, 0, 1, 0, {}, {}
-2182, DarkBlueCottonTrousers, Dark Blue Cotton Trouse, 5, 1500, 750, 25, 0, 4, 0, -6, 0, 2, 1, 0, 1, 0, {}, {}
-2183, YellowCottonTrousers, Yellow Cotton Trousers, 5, 1500, 750, 25, 0, 4, 0, -6, 0, 2, 1, 0, 1, 0, {}, {}
-2184, LightBlueCottonTrousers, Light Blue Cotton Trous, 5, 1500, 750, 25, 0, 4, 0, -6, 0, 2, 1, 0, 1, 0, {}, {}
-2185, PinkCottonTrousers, Pink Cotton Trousers, 5, 1500, 750, 25, 0, 4, 0, -6, 0, 2, 1, 0, 1, 0, {}, {}
-2186, BlackCottonTrousers, Black Cotton Trousers, 5, 1500, 750, 25, 0, 4, 0, -6, 0, 2, 1, 0, 1, 0, {}, {}
-2187, OrangeCottonTrousers, Orange Cotton Trousers, 5, 1500, 750, 25, 0, 4, 0, -6, 0, 2, 1, 0, 1, 0, {}, {}
-2188, PurpleCottonTrousers, Purple Cotton Trousers, 5, 1500, 750, 25, 0, 4, 0, -6, 0, 2, 1, 0, 1, 0, {}, {}
-2189, DarkGreenCottonTrousers, Dark Green Cotton Trous, 5, 1500, 750, 25, 0, 4, 0, -6, 0, 2, 1, 0, 1, 0, {}, {}
-2190, RedRabbitEars, Red Rabbit Ears, 5, 7000, 5000, 15, 0, 5, 0, 4, 0, 2, 256, 0, 1, 0, {}, {}
-2191, GreenRabbitEars, Green Rabbit Ears, 5, 7000, 5000, 15, 0, 5, 0, 4, 0, 2, 256, 0, 1, 0, {}, {}
-2192, DarkBlueRabbitEars, Dark Blue Rabbit Ears, 5, 7000, 5000, 15, 0, 5, 0, 4, 0, 2, 256, 0, 1, 0, {}, {}
-2193, YellowRabbitEars, Yellow Rabbit Ears, 5, 7000, 5000, 15, 0, 5, 0, 4, 0, 2, 256, 0, 1, 0, {}, {}
-2194, LightBlueRabbitEars, Light Blue Rabbit Ears, 5, 7000, 5000, 15, 0, 5, 0, 4, 0, 2, 256, 0, 1, 0, {}, {}
-2195, PinkRabbitEars, Pink Rabbit Ears, 5, 7000, 5000, 15, 0, 5, 0, 4, 0, 2, 256, 0, 1, 0, {}, {}
-2196, BlackRabbitEars, Black Rabbit Ears, 5, 7000, 5000, 15, 0, 5, 0, 4, 0, 2, 256, 0, 1, 0, {}, {}
-2197, OrangeRabbitEars, Orange Rabbit Ears, 5, 7000, 5000, 15, 0, 5, 0, 4, 0, 2, 256, 0, 1, 0, {}, {}
-2198, PurpleRabbitEars, Purple Rabbit Ears, 5, 7000, 5000, 15, 0, 5, 0, 4, 0, 2, 256, 0, 1, 0, {}, {}
-2199, DarkGreenRabbitEars, Dark Green Rabbit Ears, 5, 7000, 5000, 15, 0, 5, 0, 4, 0, 2, 256, 0, 1, 0, {}, {}
-2200, RedWizardHat, Red Wizard Hat, 5, 5000, 2500, 20, 0, 5, 0, 5, 0, 2, 256, 0, 1, 0, {}, {bonus bInt, 3;}
-2201, GreenWizardHat, Green Wizard Hat, 5, 5000, 2500, 20, 0, 5, 0, 5, 0, 2, 256, 0, 1, 0, {}, {bonus bInt, 3;}
-2202, DarkBlueWizardHat, Dark Blue Wizard Hat, 5, 5000, 2500, 20, 0, 5, 0, 5, 0, 2, 256, 0, 1, 0, {}, {bonus bInt, 3;}
-2203, YellowWizardHat, Yellow Wizard Hat, 5, 5000, 2500, 20, 0, 5, 0, 5, 0, 2, 256, 0, 1, 0, {}, {bonus bInt, 3;}
-2204, LightBlueWizardHat, Light Blue Wizard Hat, 5, 5000, 2500, 20, 0, 5, 0, 5, 0, 2, 256, 0, 1, 0, {}, {bonus bInt, 3;}
-//ID, Name___________________, Label__________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
-2205, PinkWizardHat, Pink Wizard Hat, 5, 5000, 2500, 20, 0, 5, 0, 5, 0, 2, 256, 0, 1, 0, {}, {bonus bInt, 3;}
-2206, BlackWizardHat, Black Wizard Hat, 5, 5000, 2500, 20, 0, 5, 0, 5, 0, 2, 256, 0, 1, 0, {}, {bonus bInt, 3;}
-2207, OrangeWizardHat, Orange Wizard Hat, 5, 5000, 2500, 20, 0, 5, 0, 5, 0, 2, 256, 0, 1, 0, {}, {bonus bInt, 3;}
-2208, PurpleWizardHat, Purple Wizard Hat, 5, 5000, 2500, 20, 0, 5, 0, 5, 0, 2, 256, 0, 1, 0, {}, {bonus bInt, 3;}
-2209, DarkGreenWizardHat, Dark Green Wizard Hat, 5, 5000, 2500, 20, 0, 5, 0, 5, 0, 2, 256, 0, 1, 0, {}, {bonus bInt, 3;}
-2210, RedBowlerHat, Red Bowler Hat, 5, 2500, 1250, 30, 0, 10, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
-2211, GreenBowlerHat, Green Bowler Hat, 5, 2500, 1250, 30, 0, 10, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
-2212, DarkBlueBowlerHat, Dark Blue Bowler Hat, 5, 2500, 1250, 30, 0, 10, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
-2213, YellowBowlerHat, Yellow Bowler Hat, 5, 2500, 1250, 30, 0, 10, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
-2214, LightBlueBowlerHat, Light Blue Bowler Hat, 5, 2500, 1250, 30, 0, 10, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
-2215, PinkBowlerHat, Pink Bowler Hat, 5, 2500, 1250, 30, 0, 10, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
-2216, BlackBowlerHat, Black Bowler Hat, 5, 2500, 1250, 30, 0, 10, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
-2217, OrangeBowlerHat, Orange Bowler Hat, 5, 2500, 1250, 30, 0, 10, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
-2218, PurpleBowlerHat, Purple Bowler Hat, 5, 2500, 1250, 30, 0, 10, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
-2219, DarkGreenBowlerHat, Dark Green Bowler Hat, 5, 2500, 1250, 30, 0, 10, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
-2220, RedSorcererRobeRed, Red Sorcerer Robe Red, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-2221, GreenSorcererRobeRed, Green Sorcerer Robe Red, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-2222, DarkBlueSorcererRobeRed, Dark Blue Sorcerer Robe, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-2223, YellowSorcererRobeRed, Yellow Sorcerer Robe Re, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-2224, LightBlueSorcererRobeRe, Light Blue Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-2225, PinkSorcererRobeRed, Pink Sorcerer Robe Red, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-2226, BlackSorcererRobeRed, Black Sorcerer Robe Red, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-2227, OrangeSorcererRobeRed, Orange Sorcerer Robe Re, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-2228, PurpleSorcererRobeRed, Purple Sorcerer Robe Re, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-2229, DarkGreenSorcererRobeRe, Dark Green Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-2230, RedBowlerHatBrown, Red Bowler Hat Brown, 5, 2500, 1250, 30, 0, 10, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
-2231, GreenBowlerHatBrown, Green Bowler Hat Brown, 5, 2500, 1250, 30, 0, 10, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
-2232, DarkBlueBowlerHatBrown, Dark Blue Bowler Hat Br, 5, 2500, 1250, 30, 0, 10, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
-2233, YellowBowlerHatBrown, Yellow Bowler Hat Brown, 5, 2500, 1250, 30, 0, 10, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
-2234, LightBlueBowlerHatBrown, Light Blue Bowler Hat B, 5, 2500, 1250, 30, 0, 10, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
-2235, PinkBowlerHatBrown, Pink Bowler Hat Brown, 5, 2500, 1250, 30, 0, 10, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
-2236, BlackBowlerHatBrown, Black Bowler Hat Brown, 5, 2500, 1250, 30, 0, 10, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
-2237, OrangeBowlerHatBrown, Orange Bowler Hat Brown, 5, 2500, 1250, 30, 0, 10, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
-2238, PurpleBowlerHatBrown, Purple Bowler Hat Brown, 5, 2500, 1250, 30, 0, 10, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
-2239, DarkGreenBowlerHatBrown, Dark Green Bowler Hat B, 5, 2500, 1250, 30, 0, 10, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
-2240, FineRedDress, Fine Red Dress, 5, 10000, 5000, 35, 0, 8, 0, 3, 0, 2, 512, 0, 0, 0, {}, {}
-2241, FineGreenDress, Fine Green Dress, 5, 10000, 5000, 35, 0, 8, 0, 3, 0, 2, 512, 0, 0, 0, {}, {}
-2242, FineDarkBlueDress, Fine Dark Blue Dress, 5, 10000, 5000, 35, 0, 8, 0, 3, 0, 2, 512, 0, 0, 0, {}, {}
-2243, FineYellowDress, Fine Yellow Dress, 5, 10000, 5000, 35, 0, 8, 0, 3, 0, 2, 512, 0, 0, 0, {}, {}
-2244, FineLightBlueDress, Fine Light Blue Dress, 5, 10000, 5000, 35, 0, 8, 0, 3, 0, 2, 512, 0, 0, 0, {}, {}
-2245, FinePinkDress, Fine Pink Dress, 5, 10000, 5000, 35, 0, 8, 0, 3, 0, 2, 512, 0, 0, 0, {}, {}
-2246, FineBlackDress, Fine Black Dress, 5, 10000, 5000, 35, 0, 8, 0, 3, 0, 2, 512, 0, 0, 0, {}, {}
-2247, FineOrangeDress, Fine Orange Dress, 5, 10000, 5000, 35, 0, 8, 0, 3, 0, 2, 512, 0, 0, 0, {}, {}
-2248, FinePurpleDress, Fine Purple Dress, 5, 10000, 5000, 35, 0, 8, 0, 3, 0, 2, 512, 0, 0, 0, {}, {}
-2249, FineDarkGreenDress, Fine Dark Green Dress, 5, 10000, 5000, 35, 0, 8, 0, 3, 0, 2, 512, 0, 0, 0, {}, {}
-2250, RedCottonCloth, Red Cotton Cloth, 3, 400, 100, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-2251, GreenCottonCloth, Green Cotton Cloth, 3, 400, 100, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-2252, DarkBlueCottonCloth, Dark Blue Cotton Cloth, 3, 400, 100, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-2253, YellowCottonCloth, Yellow Cotton Cloth, 3, 400, 100, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-2254, LightBlueCottonCloth, Light Blue Cotton Cloth, 3, 400, 100, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-2255, PinkCottonCloth, Pink Cotton Cloth, 3, 400, 100, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-2256, BlackCottonCloth, Black Cotton Cloth, 3, 400, 100, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-2257, OrangeCottonCloth, Orange Cotton Cloth, 3, 400, 100, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-2258, PurpleCottonCloth, Purple Cotton Cloth, 3, 400, 100, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-2259, DarkGreenCottonCloth, Dark Green Cotton Cloth, 3, 400, 100, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-2260, RedBeret, Red Beret, 5, 1000, 500, 20, 0, 3, 0, 0, 0, 2, 256, 0, 0, 0, {bonus bAgi, 2;}, {}
-2261, GreenBeret, Green Beret, 5, 1000, 500, 20, 0, 3, 0, 0, 0, 2, 256, 0, 0, 0, {bonus bAgi, 2;}, {}
-2262, DarkBlueBeret, Dark Blue Beret, 5, 1000, 500, 20, 0, 3, 0, 0, 0, 2, 256, 0, 0, 0, {bonus bAgi, 2;}, {}
-2263, YellowBeret, Yellow Beret, 5, 1000, 500, 20, 0, 3, 0, 0, 0, 2, 256, 0, 0, 0, {bonus bAgi, 2;}, {}
-2264, LightBlueBeret, Light Blue Beret, 5, 1000, 500, 20, 0, 3, 0, 0, 0, 2, 256, 0, 0, 0, {bonus bAgi, 2;}, {}
-2265, PinkBeret, Pink Beret, 5, 1000, 500, 20, 0, 3, 0, 0, 0, 2, 256, 0, 0, 0, {bonus bAgi, 2;}, {}
-2266, BlackBeret, Black Beret, 5, 1000, 500, 20, 0, 3, 0, 0, 0, 2, 256, 0, 0, 0, {bonus bAgi, 2;}, {}
-2267, OrangeBeret, Orange Beret, 5, 1000, 500, 20, 0, 3, 0, 0, 0, 2, 256, 0, 0, 0, {bonus bAgi, 2;}, {}
-2268, PurpleBeret, Purple Beret, 5, 1000, 500, 20, 0, 3, 0, 0, 0, 2, 256, 0, 0, 0, {bonus bAgi, 2;}, {}
-2269, DarkGreenBeret, Dark Green Beret, 5, 1000, 500, 20, 0, 3, 0, 0, 0, 2, 256, 0, 0, 0, {bonus bAgi, 2;}, {}
-
-//ID, Name___________________, Label__________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
-
-// Add dyed entries above here. For regular entries, please use the < 1000s.
-
-3000, JackOLantern, Jack-o-Lantern, 3, 200, 100, 1000, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-3001, RubberBat, Rubber Bat, 3, 200, 100, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-3002, RealisticBrain, Realistic Brain, 3, 200, 100, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-3003, JarofBlood, Jar of Blood, 3, 200, 100, 375, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-3004, Tongue, Tongue, 3, 5, 1, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-//3005
-3006, TonoriDelight, Tonori Delight, 3, 5, 1, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-3007, Marshmallow, Marshmallow, 3, 5, 1, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-//3008
-3009, JellySkull, Jelly Skull, 3, 5, 1, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-3010, CandyPumpkin, Candy Pumpkin, 3, 5, 1, 2, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-3011, PumpkinSeeds, Pumpkin Seeds, 3, 5, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-// No new additions to the 3000s please. Add to the bottom of the < 1000s for regular entries and the 2000s for dyed entries.
-4000, AngryScorpionStinger, Angry Scorpion Stinger, 3, 50, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-4001, Coal, Coal, 3, 250, 100, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-4002, Diamond, Diamond, 3, 5000, 2500, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-//ID, Name___________________, Label__________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
-4003, Ruby, Ruby, 3, 5000, 2500, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-4004, Emerald, Emerald, 3, 5000, 2500, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-4005, Sapphire, Sapphire, 3, 5000, 2500, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-4006, Topaz, Topaz, 3, 5000, 2500, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-4007, Amethyst, Amethyst, 3, 5000, 2500, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-4008, DiamondRing, Diamond Ring, 5, 5000, 2500, 1, 0, 0, 0, 0, 0, 2, 128, 0, 0, 0, {}, {bonus bVit, 1;}
-4009, RubyRing, Ruby Ring, 5, 5000, 2500, 1, 0, 0, 0, 0, 0, 2, 128, 0, 0, 0, {}, {bonus bStr, 1;}
-4010, EmeraldRing, Emerald Ring, 5, 5000, 2500, 1, 0, 0, 0, 0, 0, 2, 128, 0, 0, 0, {}, {bonus bLuk, 1;}
-4011, SapphireRing, Sapphire Ring, 5, 5000, 2500, 1, 0, 0, 0, 0, 0, 2, 128, 0, 0, 0, {}, {bonus bInt, 1;}
-4012, TopazRing, Topaz Ring, 5, 5000, 2500, 1, 0, 0, 0, 0, 0, 2, 128, 0, 0, 0, {}, {bonus bAgi, 1;}
-4013, AmethystRing, Amethyst Ring, 5, 5000, 2500, 1, 0, 0, 0, 0, 0, 2, 128, 0, 0, 0, {}, {bonus bDex, 1;}
-4014, SimpleRing, Simple Ring, 5, 5000, 2500, 1, 0, 0, 0, 0, 0, 2, 128, 0, 0, 0, {}, {}
-4015, IronIngot, Iron Ingot, 3, 500, 250, 200, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-4016, BanditHood, Bandit Hood, 3, 100, 50, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-4017, RedPowder, Red Powder, 3, 3000, 5, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-4018, YellowPowder, Yellow Powder, 3, 3000, 5, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-4019, BluePowder, Blue Powder, 3, 3000, 5, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-4020, CandleHelmet, Candle Helmet, 5, 20000, 2000, 450, 0, 16, 0, -25, 0, 2, 256, 0, 0, 0, {}, {bonus bInt, 1;bonus bAgi, -1;}
-4021, YellowPresentBox, Yellow Present Box, 3, 20, 10, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-4022, WhitePresentBox, White Present Box, 3, 20, 10, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-//ID, Name___________________, Label__________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
-4023, AnimalBones, Animal Bones, 3, 50, 25, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-4024, FrozenYetiTear, Frozen Yeti Tear, 3, 500, 250, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-4025, YetiClaw, Yeti Claw, 3, 150, 75, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-4026, IceCube, Ice Cube, 3, 200, 100, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-4027, YetiMask, Yeti Mask, 5, 6000, 3000, 10, 0, 4, 0, -10, 0, 2, 256, 0, 0, 0, {}, {}
-4028, WizardHat, Wizard Hat, 5, 5000, 2500, 20, 0, 5, 0, 5, 0, 2, 256, 0, 1, 0, {}, {bonus bInt, 3;}
-4029, GrimaceOfDementia, Grimace of Dementia, 3, 20, 10, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-4030, BowlerHat, Bowler Hat, 5, 2500, 1250, 30, 0, 10, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
-4031, Monocle, Monocle, 5, 5000, 2500, 20, 0, 2, 0, 0, 0, 2, 256, 0, 0, 0, {}, {bonus bDex, 1; bonus bLuk, 1; bonus bCritical, 10;}
-4032, PanHat, Pan Hat, 5, 1000, 500, 400, 0, 13, 0, -20, 0, 2, 256, 0, 0, 0, {}, {}
-4033, ChefHat, Chef Hat, 5, 1000, 500, 30, 0, 2, 0, 2, 0, 2, 256, 0, 0, 0, {}, {}
-4034, BlackPearl, Black Pearl, 3, 8000, 4000, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-4035, PickledBeets, Pickled Beets, 0, 100, 50, 150, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 50, 0; setlook LOOK_HAIR_COLOR, HC_PURPLE;}, {}
-4036, RoastedAcorn, Roasted Acorn, 0, 100, 50, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 15, 0;}, {}
-4037, WhiteBlanket, White Blanket, 3, 600, 125, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-4038, WhiteSaddleRug, White Saddle Rug, 3, 1000, 250, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-4039, RedSaddleRug, Red Saddle Rug, 3, 1200, 300, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-4040, RawTalisman, Raw Talisman, 3, 800, 200, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-4041, FlightTalisman, Flight Talisman, 3, 5000, 1200, 12, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-4042, RedNose, Red Nose, 5, 4000, 1000, 4, 0, 2, 0, 7, 0, 2, 256, 0, 0, 0, {}, {}
-
-// No new additions to the 4000s please. Add to the bottom of the < 1000s for regular entries and the 2000s for dyed entries.
-//ID, Name___________________, Label__________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
-5000, RedSorcererRobeGreen, Red Sorcerer Robe Green, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5001, GreenSorcererRobeGreen, Green Sorcerer Robe Gre, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5002, DarkBlueSorcererRobeGre, Dark Blue Sorcerer Robe, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5003, YellowSorcererRobeGreen, Yellow Sorcerer Robe Gr, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5004, LightBlueSorcererRobeGr, Light Blue Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5005, PinkSorcererRobeGreen, Pink Sorcerer Robe Gree, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5006, BlackSorcererRobeGreen, Black Sorcerer Robe Gre, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5007, OrangeSorcererRobeGreen, Orange Sorcerer Robe Gr, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5008, PurpleSorcererRobeGreen, Purple Sorcerer Robe Gr, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5009, DarkGreenSorcererRobeGr, Dark Green Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5010, SorcererRobeGreen, Sorcerer Robe Green, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5011, RedSorcererRobeDarkBlue, Red Sorcerer Robe Dark, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5012, GreenSorcererRobeDarkBl, Green Sorcerer Robe Dar, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5013, DarkBlueSorcererRobeDar, Dark Blue Sorcerer Robe, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5014, YellowSorcererRobeDarkB, Yellow Sorcerer Robe Da, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5015, LightBlueSorcererRobeDa, Light Blue Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5016, PinkSorcererRobeDarkBlu, Pink Sorcerer Robe Dark, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5017, BlackSorcererRobeDarkBl, Black Sorcerer Robe Dar, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5018, OrangeSorcererRobeDarkB, Orange Sorcerer Robe Da, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5019, PurpleSorcererRobeDarkB, Purple Sorcerer Robe Da, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5020, DarkGreenSorcererRobeDa, Dark Green Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5021, SorcererRobeDarkBlue, Sorcerer Robe Dark Blue, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5022, RedSorcererRobeYellow, Red Sorcerer Robe Yello, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5023, GreenSorcererRobeYellow, Green Sorcerer Robe Yel, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5024, DarkBlueSorcererRobeYel, Dark Blue Sorcerer Robe, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5025, YellowSorcererRobeYello, Yellow Sorcerer Robe Ye, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5026, LightBlueSorcererRobeYe, Light Blue Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5027, PinkSorcererRobeYellow, Pink Sorcerer Robe Yell, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5028, BlackSorcererRobeYellow, Black Sorcerer Robe Yel, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5029, OrangeSorcererRobeYello, Orange Sorcerer Robe Ye, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5030, PurpleSorcererRobeYello, Purple Sorcerer Robe Ye, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5031, DarkGreenSorcererRobeYe, Dark Green Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5032, SorcererRobeYellow, Sorcerer Robe Yellow, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5033, RedSorcererRobeLightBlu, Red Sorcerer Robe Light, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5034, GreenSorcererRobeLightB, Green Sorcerer Robe Lig, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5035, DarkBlueSorcererRobeLig, Dark Blue Sorcerer Robe, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5036, YellowSorcererRobeLight, Yellow Sorcerer Robe Li, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5037, LightBlueSorcererRobeLi, Light Blue Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5038, PinkSorcererRobeLightBl, Pink Sorcerer Robe Ligh, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5039, BlackSorcererRobeLightB, Black Sorcerer Robe Lig, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5040, OrangeSorcererRobeLight, Orange Sorcerer Robe Li, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5041, PurpleSorcererRobeLight, Purple Sorcerer Robe Li, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5042, DarkGreenSorcererRobeLi, Dark Green Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5043, SorcererRobeLightBlue, Sorcerer Robe Light Blu, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5044, RedSorcererRobePink, Red Sorcerer Robe Pink, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5045, GreenSorcererRobePink, Green Sorcerer Robe Pin, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5046, DarkBlueSorcererRobePin, Dark Blue Sorcerer Robe, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5047, YellowSorcererRobePink, Yellow Sorcerer Robe Pi, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5048, LightBlueSorcererRobePi, Light Blue Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5049, PinkSorcererRobePink, Pink Sorcerer Robe Pink, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-//ID, Name___________________, Label__________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
-5050, BlackSorcererRobePink, Black Sorcerer Robe Pin, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5051, OrangeSorcererRobePink, Orange Sorcerer Robe Pi, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5052, PurpleSorcererRobePink, Purple Sorcerer Robe Pi, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5053, DarkGreenSorcererRobePi, Dark Green Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5054, SorcererRobePink, Sorcerer Robe Pink, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5055, RedSorcererRobeBlack, Red Sorcerer Robe Black, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5056, GreenSorcererRobeBlack, Green Sorcerer Robe Bla, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5057, DarkBlueSorcererRobeBla, Dark Blue Sorcerer Robe, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5058, YellowSorcererRobeBlack, Yellow Sorcerer Robe Bl, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5059, LightBlueSorcererRobeBl, Light Blue Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5060, PinkSorcererRobeBlack, Pink Sorcerer Robe Blac, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5061, BlackSorcererRobeBlack, Black Sorcerer Robe Bla, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5062, OrangeSorcererRobeBlack, Orange Sorcerer Robe Bl, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5063, PurpleSorcererRobeBlack, Purple Sorcerer Robe Bl, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5064, DarkGreenSorcererRobeBl, Dark Green Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5065, SorcererRobeBlack, Sorcerer Robe Black, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5066, RedSorcererRobeOrange, Red Sorcerer Robe Orang, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5067, GreenSorcererRobeOrange, Green Sorcerer Robe Ora, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5068, DarkBlueSorcererRobeOra, Dark Blue Sorcerer Robe, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5069, YellowSorcererRobeOrang, Yellow Sorcerer Robe Or, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5070, LightBlueSorcererRobeOr, Light Blue Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5071, PinkSorcererRobeOrange, Pink Sorcerer Robe Oran, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5072, BlackSorcererRobeOrange, Black Sorcerer Robe Ora, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5073, OrangeSorcererRobeOrang, Orange Sorcerer Robe Or, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5074, PurpleSorcererRobeOrang, Purple Sorcerer Robe Or, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5075, DarkGreenSorcererRobeOr, Dark Green Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5076, SorcererRobeOrange, Sorcerer Robe Orange, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5077, RedSorcererRobePurple, Red Sorcerer Robe Purpl, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5078, GreenSorcererRobePurple, Green Sorcerer Robe Pur, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5079, DarkBlueSorcererRobePur, Dark Blue Sorcerer Robe, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5080, YellowSorcererRobePurpl, Yellow Sorcerer Robe Pu, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5081, LightBlueSorcererRobePu, Light Blue Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5082, PinkSorcererRobePurple, Pink Sorcerer Robe Purp, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5083, BlackSorcererRobePurple, Black Sorcerer Robe Pur, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5084, OrangeSorcererRobePurpl, Orange Sorcerer Robe Pu, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5085, PurpleSorcererRobePurpl, Purple Sorcerer Robe Pu, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5086, DarkGreenSorcererRobePu, Dark Green Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5087, SorcererRobePurple, Sorcerer Robe Purple, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5088, RedSorcererRobeDarkGree, Red Sorcerer Robe Dark, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5089, GreenSorcererRobeDarkGr, Green Sorcerer Robe Dar, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5090, DarkBlueSorcererRobeDar, Dark Blue Sorcerer Robe, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5091, YellowSorcererRobeDarkG, Yellow Sorcerer Robe Da, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5092, LightBlueSorcererRobeDa, Light Blue Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5093, PinkSorcererRobeDarkGre, Pink Sorcerer Robe Dark, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5094, BlackSorcererRobeDarkGr, Black Sorcerer Robe Dar, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5095, OrangeSorcererRobeDarkG, Orange Sorcerer Robe Da, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5096, PurpleSorcererRobeDarkG, Purple Sorcerer Robe Da, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5097, DarkGreenSorcererRobeDa, Dark Green Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5098, SorcererRobeDarkGreen, Sorcerer Robe Dark Gree, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5099, RedSorcererRobeWhite, Red Sorcerer Robe White, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5100, GreenSorcererRobeWhite, Green Sorcerer Robe Whi, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5101, DarkBlueSorcererRobeWhi, Dark Blue Sorcerer Robe, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5102, YellowSorcererRobeWhite, Yellow Sorcerer Robe Wh, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5103, LightBlueSorcererRobeWh, Light Blue Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5104, PinkSorcererRobeWhite, Pink Sorcerer Robe Whit, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5105, BlackSorcererRobeWhite, Black Sorcerer Robe Whi, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5106, OrangeSorcererRobeWhite, Orange Sorcerer Robe Wh, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5107, PurpleSorcererRobeWhite, Purple Sorcerer Robe Wh, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5108, DarkGreenSorcererRobeWh, Dark Green Sorcerer Rob, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5109, SorcererRobeWhite, Sorcerer Robe White, 5, 8000, 4000, 30, 0, 5, 0, 20, 0, 2, 512, 0, 0, 0, {}, {bonus bAgi, 1;}
-5110, Bloodstone, Bloodstone, 3, 2000, 250, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-//ID, Name___________________, Label__________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
-5111, BrainStem, Brain Stem, 3, 180, 90, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-5112, CryptKey, Crypt Key, 3, 300, 150, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-5113, Ectoplasm, Ectoplasm, 3, 80, 20, 4, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
-5114, Urn, Urn, 3, 40, 20, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-5115, VampireBatWing, Vampire Bat Wing, 3, 700, 20, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-5116, WraithHorn, Wraith Horn, 3, 700, 20, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-5117, AstralCube, Astral Cube, 3, 10000, 10, 800, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-5118, RunestoneA, Runestone A, 3, 1000, 100, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-5119, RunestoneL, Runestone L, 3, 1000, 100, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-5120, RunestoneN, Runestone N, 3, 1000, 100, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-5121, RunestoneT, Runestone T, 3, 1000, 100, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-5122, RunestoneW, Runestone W, 3, 1000, 100, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-5123, QuillOfBinding, Quill Of Binding, 3, 10, 10, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-5124, BloodInk, Blood Ink, 3, 10, 10, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-5125, UnderworldKey, Underworld Key, 3, 10, 10, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-5126, MTJarofOwnBlood, MTJar of Own Blood, 0, 200, 100, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {itemheal -250, 0;getitem 5127, 1;}, {}
-5127, JarofOwnBlood, Jar of Own Blood, 3, 200, 100, 375, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
-5128, DarkHelm, DarkHelm, 5, 50000, 10000, 800, 0, 19, 0, -80, 0, 2, 256, 0, 0, 0, {}, {callfunc "UnreleasedItem"; bonus bMaxHPrate, 10; bonus bAtkRange, -((readparam(bAtkRange)/2)); bonus bInt, -(readparam(bInt));}
-5129, UnderworldMask, UnderworldMask, 5, 50000, 10000, 100, 0, 9, 0, -40, 0, 2, 256, 0, 0, 0, {}, {callfunc "UnreleasedItem"; bonus bAtkRange, 1; bonus bInt, -(readparam(bInt));}
-5130, Phylactery, Phylactery, 5, 50000, 10000, 20, 0, 1, 0, 5, 0, 2, 256, 0, 0, 0, {}, {callfunc "UnreleasedItem"; bonus bAspdRate, 10; bonus bDex, -(readparam(bDex)/2);}
-// Add secondary dyed entries above here. For primary dyed entries, use the 2000 IDs
-//ID, Name___________________, Label__________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
diff --git a/world/map/db/leg_item_db.txt b/world/map/db/leg_item_db.txt
new file mode 100644
index 00000000..85fb929d
--- /dev/null
+++ b/world/map/db/leg_item_db.txt
@@ -0,0 +1,59 @@
+// Name and Label MUST NOT exceed 23 characters (as marked)
+//ID, Name___________________, Label__________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
+586, CottonShorts, Cotton Shorts, 5, 1000, 500, 15, 0, 2, 0, -4, 0, 2, 1, 0, 1, 0, {}, {}
+610, JeansShorts, Jeans Shorts, 5, 2000, 1000, 25, 0, 4, 0, -8, 0, 2, 1, 0, 0, 0, {}, {}
+632, CottonSkirt, Cotton Skirt, 5, 1000, 500, 10, 0, 4, 0, -8, 0, 2, 1, 0, 1, 0, {}, {}
+642, JeansChaps, Jeans Chaps, 5, 2000, 1000, 60, 0, 6, 0, -12, 0, 2, 1, 0, 0, 0, {}, {}
+648, CottonTrousers, Cotton Trousers, 5, 1500, 750, 25, 0, 4, 0, -6, 0, 2, 1, 0, 1, 0, {}, {}
+731, AssassinPants, Assassin Pants, 5, 10000, 3000, 20, 0, 5, 0, -5, 0, 2, 1, 0, 0, 0, {}, {callfunc "UnreleasedItem";bonus bAgi, 8;}
+768, TerraniteLegs, Terranite Legs, 5, 10000, 3000, 30, 0, 5, 0, -8, 0, 2, 1, 0, 0, 0, {}, {bonus bAgi, 1;bonus bMdef, 5;}
+771, Miniskirt, Miniskirt, 5, 1000, 500, 8, 0, 4, 0, -8, 0, 2, 1, 0, 1, 0, {}, {}
+796, BromenalLegs, Bromenal Legs, 5, 2000, 1000, 150, 0, 6, 0, -12, 0, 2, 1, 0, 0, 0, {}, {}
+857, LeatherTrousers, Leather Trousers, 5, 1000, 500, 25, 0, 5, 0, -4, 0, 2, 1, 0, 0, 0, {}, {bonus bHit, 2;}
+881, RaggedShorts, Ragged Shorts, 5, 60, 1, 7, 0, 0, 0, -2, 0, 2, 1, 0, 1, 0, {}, {}
+1172, SilkPants, Silk Pants, 5, 1500, 750, 10, 0, 2, 0, 0, 0, 2, 1, 0, 1, 0, {}, {}
+1188, RedStockings, Red Stockings, 5, 7000, 2000, 10, 0, 1, 0, 2, 0, 2, 64, 0, 0, 0, {}, {}
+1207, RedChristmasStocking, Red Christmas Stocking, 3, 80, 40, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+//ID, Name___________________, Label__________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
+2100, RedCottonSkirt, Red Cotton Skirt, 5, 1000, 500, 20, 0, 4, 0, -8, 0, 2, 1, 0, 1, 0, {}, {}
+2101, GreenCottonSkirt, Green Cotton Skirt, 5, 1000, 500, 20, 0, 4, 0, -8, 0, 2, 1, 0, 1, 0, {}, {}
+2102, DarkBlueCottonSkirt, Dark Blue Cotton Skirt, 5, 1000, 500, 20, 0, 4, 0, -8, 0, 2, 1, 0, 1, 0, {}, {}
+2103, YellowCottonSkirt, Yellow Cotton Skirt, 5, 1000, 500, 20, 0, 4, 0, -8, 0, 2, 1, 0, 1, 0, {}, {}
+2104, LightBlueCottonSkirt, Light Blue Cotton Skirt, 5, 1000, 500, 20, 0, 4, 0, -8, 0, 2, 1, 0, 1, 0, {}, {}
+2105, PinkCottonSkirt, Pink Cotton Skirt, 5, 1000, 500, 20, 0, 4, 0, -8, 0, 2, 1, 0, 1, 0, {}, {}
+2106, BlackCottonSkirt, Black Cotton Skirt, 5, 1000, 500, 20, 0, 4, 0, -8, 0, 2, 1, 0, 1, 0, {}, {}
+2107, OrangeCottonSkirt, Orange Cotton Skirt, 5, 1000, 500, 20, 0, 4, 0, -8, 0, 2, 1, 0, 1, 0, {}, {}
+2108, PurpleCottonSkirt, Purple Cotton Skirt, 5, 1000, 500, 20, 0, 4, 0, -8, 0, 2, 1, 0, 1, 0, {}, {}
+2109, DarkGreenCottonSkirt, Dark Green Cotton Skirt, 5, 1000, 500, 20, 0, 4, 0, -8, 0, 2, 1, 0, 1, 0, {}, {}
+2110, RedCottonShorts, Red Cotton Shorts, 5, 1000, 500, 20, 0, 2, 0, -4, 0, 2, 1, 0, 1, 0, {}, {}
+2111, GreenCottonShorts, Green Cotton Shorts, 5, 1000, 500, 20, 0, 2, 0, -4, 0, 2, 1, 0, 1, 0, {}, {}
+2112, DarkBlueCottonShorts, Dark Blue Cotton Shorts, 5, 1000, 500, 20, 0, 2, 0, -4, 0, 2, 1, 0, 1, 0, {}, {}
+2113, YellowCottonShorts, Yellow Cotton Shorts, 5, 1000, 500, 20, 0, 2, 0, -4, 0, 2, 1, 0, 1, 0, {}, {}
+2114, LightBlueCottonShorts, Light Blue Cotton Short, 5, 1000, 500, 20, 0, 2, 0, -4, 0, 2, 1, 0, 1, 0, {}, {}
+2115, PinkCottonShorts, Pink Cotton Shorts, 5, 1000, 500, 20, 0, 2, 0, -4, 0, 2, 1, 0, 1, 0, {}, {}
+2116, BlackCottonShorts, Black Cotton Shorts, 5, 1000, 500, 20, 0, 2, 0, -4, 0, 2, 1, 0, 1, 0, {}, {}
+2117, OrangeCottonShorts, Orange Cotton Shorts, 5, 1000, 500, 20, 0, 2, 0, -4, 0, 2, 1, 0, 1, 0, {}, {}
+2118, PurpleCottonShorts, Purple Cotton Shorts, 5, 1000, 500, 20, 0, 2, 0, -4, 0, 2, 1, 0, 1, 0, {}, {}
+2119, DarkGreenCottonShorts, Dark Green Cotton Short, 5, 1000, 500, 20, 0, 2, 0, -4, 0, 2, 1, 0, 1, 0, {}, {}
+//ID, Name___________________, Label__________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
+2170, RedMiniskirt, Red Miniskirt, 5, 1000, 500, 8, 0, 4, 0, -8, 0, 2, 1, 0, 1, 0, {}, {}
+2171, GreenMiniskirt, Green Miniskirt, 5, 1000, 500, 8, 0, 4, 0, -8, 0, 2, 1, 0, 1, 0, {}, {}
+2172, DarkBlueMiniskirt, Dark Blue Miniskirt, 5, 1000, 500, 8, 0, 4, 0, -8, 0, 2, 1, 0, 1, 0, {}, {}
+2173, YellowMiniskirt, Yellow Miniskirt, 5, 1000, 500, 8, 0, 4, 0, -8, 0, 2, 1, 0, 1, 0, {}, {}
+2174, LightBlueMiniskirt, Light Blue Miniskirt, 5, 1000, 500, 8, 0, 4, 0, -8, 0, 2, 1, 0, 1, 0, {}, {}
+2175, PinkMiniskirt, Pink Miniskirt, 5, 1000, 500, 8, 0, 4, 0, -8, 0, 2, 1, 0, 1, 0, {}, {}
+2176, BlackMiniskirt, Black Miniskirt, 5, 1000, 500, 8, 0, 4, 0, -8, 0, 2, 1, 0, 1, 0, {}, {}
+2177, OrangeMiniskirt, Orange Miniskirt, 5, 1000, 500, 8, 0, 4, 0, -8, 0, 2, 1, 0, 1, 0, {}, {}
+2178, PurpleMiniskirt, Purple Miniskirt, 5, 1000, 500, 8, 0, 4, 0, -8, 0, 2, 1, 0, 1, 0, {}, {}
+2179, DarkGreenMiniskirt, Dark Green Miniskirt, 5, 1000, 500, 8, 0, 4, 0, -8, 0, 2, 1, 0, 1, 0, {}, {}
+2180, RedCottonTrousers, Red Cotton Trousers, 5, 1500, 750, 25, 0, 4, 0, -6, 0, 2, 1, 0, 1, 0, {}, {}
+2181, GreenCottonTrousers, Green Cotton Trousers, 5, 1500, 750, 25, 0, 4, 0, -6, 0, 2, 1, 0, 1, 0, {}, {}
+2182, DarkBlueCottonTrousers, Dark Blue Cotton Trouse, 5, 1500, 750, 25, 0, 4, 0, -6, 0, 2, 1, 0, 1, 0, {}, {}
+2183, YellowCottonTrousers, Yellow Cotton Trousers, 5, 1500, 750, 25, 0, 4, 0, -6, 0, 2, 1, 0, 1, 0, {}, {}
+2184, LightBlueCottonTrousers, Light Blue Cotton Trous, 5, 1500, 750, 25, 0, 4, 0, -6, 0, 2, 1, 0, 1, 0, {}, {}
+2185, PinkCottonTrousers, Pink Cotton Trousers, 5, 1500, 750, 25, 0, 4, 0, -6, 0, 2, 1, 0, 1, 0, {}, {}
+2186, BlackCottonTrousers, Black Cotton Trousers, 5, 1500, 750, 25, 0, 4, 0, -6, 0, 2, 1, 0, 1, 0, {}, {}
+2187, OrangeCottonTrousers, Orange Cotton Trousers, 5, 1500, 750, 25, 0, 4, 0, -6, 0, 2, 1, 0, 1, 0, {}, {}
+2188, PurpleCottonTrousers, Purple Cotton Trousers, 5, 1500, 750, 25, 0, 4, 0, -6, 0, 2, 1, 0, 1, 0, {}, {}
+2189, DarkGreenCottonTrousers, Dark Green Cotton Trous, 5, 1500, 750, 25, 0, 4, 0, -6, 0, 2, 1, 0, 1, 0, {}, {}
+//ID, Name___________________, Label__________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
diff --git a/world/map/db/offhand_item_db.txt b/world/map/db/offhand_item_db.txt
new file mode 100644
index 00000000..a36e1778
--- /dev/null
+++ b/world/map/db/offhand_item_db.txt
@@ -0,0 +1,7 @@
+// Name and Label MUST NOT exceed 23 characters (as marked)
+//ID, Name___________________, Label__________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
+585, ScarabArmlet, Scarab Armlet, 5, 8000, 4000, 200, 0, 0, 0, 5, 0, 2, 32, 0, 1, 0, {}, {}
+601, SteelShield, Steel Shield, 5, 40000, 3000, 2500, 0, 20, 0, -200, 0, 2, 32, 0, 0, 0, {}, {}
+602, WoodenShield, Wooden Shield, 5, 10000, 2000, 1500, 0, 14, 0, -70, 0, 2, 32, 0, 0, 0, {}, {}
+603, LeatherShield, Leather Shield, 5, 2000, 1000, 1300, 0, 7, 0, -35, 0, 2, 32, 0, 0, 0, {}, {}
+797, BromenalShield, Bromenal Shield, 5, 40000, 3000, 2500, 0, 20, 0, -200, 0, 2, 32, 0, 0, 0, {}, {}
diff --git a/world/map/db/over_100_mob_db.txt b/world/map/db/over_100_mob_db.txt
index 42f5042e..da2edaff 100644
--- a/world/map/db/over_100_mob_db.txt
+++ b/world/map/db/over_100_mob_db.txt
@@ -13,7 +13,6 @@
1036, Zombie, Zombie, 110, 12000, 0, 0, 1393, 2, 275, 355, 20, 15, 30, 15, 30, 3, 60, 40, 1, 1, 1, 0, 29, 133, 480, 1872, 672, 900, 631, 1000, 777, 700, 778, 500, 779, 200, 780, 150, 1198, 500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 30
1042, Spectre, Spectre, 140, 6500, 0, 3978, 359, 3, 160, 220, 40, 0, 35, 70, 22, 15, 20, 70, 1, 1, 1, 0, 49, 137, 650, 1700, 800, 500, 773, 1000, 703, 150, 703, 120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 20
1045, Fallen, Fallen, 120, 10000, 0, 7812, 1663, 2, 180, 430, 5, 20, 40, 3, 25, 5, 80, 45, 1, 1, 1, 0, 49, 133, 300, 1200, 672, 300, 775, 210, 775, 210, 776, 300, 631, 1000, 636, 3, 658, 2, 532, 35, 778, 500, 1198, 500, 0, 0, 0, 0, 0, 0, 0, 0, 4, 50
-1046, SnakeLord, SnakeLord, 300, 40000, 0, 0, 4321, 2, 80, 120, 10, 10, 20, 40, 10, 10, 40, 10, 1, 1, 1, 0, 20, 132, 200, 1500, 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
1062, Terranite, Terranite, 110, 6000, 0, 0, 889, 1, 200, 300, 20, 40, 60, 40, 40, 30, 60, 40, 1, 1, 1, 0, 29, 133, 400, 872, 672, 900, 4001, 600, 4004, 20, 4005, 20, 4007, 20, 763, 500, 640, 500, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 30
1068, Reaper, Reaper, 140, 80000, 0, 0, 156, 7, 200, 350, 30, 80, 100, 120, 70, 120, 100, 75, 1, 50, 1, 1, 89, 165, 500, 1200, 800, 300, 777, 1000, 775, 500, 776, 100, 1221, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
1071, IceElement, IceElement, 100, 5000, 0, 0, 689, 3, 60, 200, 5, 20, 15, 25, 40, 15, 45, 30, 1, 1, 1, 0, 41, 135, 330, 740, 672, 400, 4026, 900, 537, 750, 568, 400, 543, 900, 544, 250, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 20
@@ -33,3 +32,4 @@
1127, GeneralKurkan, GeneralKurkan, 140, 80000, 0, 7812, 1663, 2, 180, 430, 5, 20, 40, 3, 25, 5, 80, 45, 1, 1, 1, 0, 49, 133, 300, 1200, 672, 300, 775, 1000, 776, 1000, 631, 1000, 5128, 2, 636, 6, 637, 25, 638, 50, 639, 8, 778, 500, 1198, 500, 0, 0, 0, 0, 0, 0, 6, 50
1128, GeneralRazha, GeneralRazha, 140, 80000, 0, 7812, 1663, 2, 180, 430, 5, 20, 40, 3, 25, 5, 80, 45, 1, 1, 1, 0, 49, 133, 300, 1200, 672, 300, 775, 210, 775, 210, 776, 300, 631, 1000, 636, 3, 658, 2, 532, 35, 778, 500, 1198, 500, 0, 0, 0, 0, 0, 0, 0, 0, 4, 50
1129, GeneralTerogan, GeneralTerogan, 140, 80000, 0, 7812, 1663, 2, 180, 430, 5, 20, 40, 3, 25, 5, 80, 45, 1, 1, 1, 0, 49, 133, 300, 1200, 672, 300, 775, 210, 775, 210, 776, 300, 631, 1000, 636, 3, 658, 2, 532, 35, 778, 500, 1198, 500, 0, 0, 0, 0, 0, 0, 0, 0, 4, 50
+1130, Moonshroom, Moonshroom, 110, 550, 0, 0, 35, 4, 70, 80, 4, 4, 16, 12, 10, 10, 35, 10, 1, 1, 1, 3, 22, 133, 800, 1800, 672, 480, 566, 500, 518, 500, 730, 300, 540, 100, 703, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 60
diff --git a/world/map/db/trinket_item_db.txt b/world/map/db/trinket_item_db.txt
new file mode 100644
index 00000000..d099e381
--- /dev/null
+++ b/world/map/db/trinket_item_db.txt
@@ -0,0 +1,22 @@
+// Name and Label MUST NOT exceed 23 characters (as marked)
+//ID, Name___________________, Label__________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
+702, WeddingRing, Wedding Ring, 5, 1000, 1, 1, 0, 0, 0, 0, 0, 2, 16, 0, 0, 0, {}, {}
+742, FourLeafClover, Four-Leaf Clover, 5, 10000, 5000, 1, 0, 0, 0, 5, 0, 2, 8, 0, 0, 0, {}, {bonus bLuk, 1;}
+749, Towel, Towel, 5, 800, 250, 50, 0, 0, 0, 5, 0, 2, 8, 0, 0, 0, {}, {}
+829, CrozeniteFourLeafAmulet, Crozenite Four-Leaf Amu, 5, 10000, 1000, 10, 0, 0, 0, 0, 0, 2, 8, 0, 0, 0, {}, {bonus bLuk, 1;}
+830, BromenalFourLeafAmulet, Bromenal Four-Leaf Amul, 5, 20000, 2000, 10, 0, 0, 0, 0, 0, 2, 8, 0, 0, 0, {}, {bonus bLuk, 2;}
+831, SilverFourLeafAmulet, Silver Four-Leaf Amulet, 5, 30000, 3000, 10, 0, 0, 0, 0, 0, 2, 8, 0, 0, 0, {}, {bonus bLuk, 3;}
+832, GoldenFourLeafAmulet, Golden Four-Leaf Amulet, 5, 40000, 4000, 10, 0, 0, 0, 0, 0, 2, 8, 0, 0, 0, {}, {bonus bLuk, 4;}
+833, BrokenFourLeafAmulet, Broken Four-Leaf Amulet, 3, 100, 1, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
+865, Grimoire, Grimoire, 5, 5000, 2500, 100, 0, 0, 0, 5, 0, 2, 8, 0, 0, 0, {}, {bonus bMaxSP, 30;}
+879, HeartOfIsis, Heart of Isis, 5, 70000, 35000, 40, 0, 0, 0, 0, 0, 2, 8, 0, 85, 0, {}, {bonus bMaxHPrate, 15; bonus bHPrecovRate, 65;}
+1197, SkeletonCharm, Skeleton Charm, 5, 0, 0, 10, 0, 0, 0, 0, 0, 2, 128, 0, 0, 0, {}, { callfunc "CheckMunro"; }
+1221, SkullMask, Skull Mask, 5, 10000, 5000, 150, 0, 3, 0, 5, 0, 2, 256, 0, 0, 0, {}, {}
+1244, DarkTalisman, Dark Talisman, 5, 0, 0, 0, 0, 30, 0, 100, 0, 2, 512, 0, 0, 0, {}, {set@minLvl, 1;callfunc "RestrictedItem"; set @val, getopt2; if(!(@val&1024))setopt2 getopt2 | 1024; bonus bMaxHp, 30000; bonus bFlee, -150;}
+4008, DiamondRing, Diamond Ring, 5, 5000, 2500, 1, 0, 0, 0, 0, 0, 2, 128, 0, 0, 0, {}, {bonus bVit, 1;}
+4009, RubyRing, Ruby Ring, 5, 5000, 2500, 1, 0, 0, 0, 0, 0, 2, 128, 0, 0, 0, {}, {bonus bStr, 1;}
+4010, EmeraldRing, Emerald Ring, 5, 5000, 2500, 1, 0, 0, 0, 0, 0, 2, 128, 0, 0, 0, {}, {bonus bLuk, 1;}
+4011, SapphireRing, Sapphire Ring, 5, 5000, 2500, 1, 0, 0, 0, 0, 0, 2, 128, 0, 0, 0, {}, {bonus bInt, 1;}
+4012, TopazRing, Topaz Ring, 5, 5000, 2500, 1, 0, 0, 0, 0, 0, 2, 128, 0, 0, 0, {}, {bonus bAgi, 1;}
+4013, AmethystRing, Amethyst Ring, 5, 5000, 2500, 1, 0, 0, 0, 0, 0, 2, 128, 0, 0, 0, {}, {bonus bDex, 1;}
+4014, SimpleRing, Simple Ring, 5, 5000, 2500, 1, 0, 0, 0, 0, 0, 2, 128, 0, 0, 0, {}, {}
diff --git a/world/map/db/use_item_db.txt b/world/map/db/use_item_db.txt
new file mode 100644
index 00000000..072b3428
--- /dev/null
+++ b/world/map/db/use_item_db.txt
@@ -0,0 +1,91 @@
+// Name and Label MUST NOT exceed 23 characters (as marked)
+//ID, Name___________________, Label__________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
+0, DEFAULT, Default, 0, 20, 10, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {}, {}
+501, CactusDrink, Cactus Drink, 0, 50, 25, 4, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 15, 0;}, {}
+502, CactusPotion, Cactus Potion, 0, 70, 35, 7, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 25, 0;}, {}
+506, CandyCane, Candy Cane, 0, 20, 10, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 5, 0;}, {}
+508, XmasCake, Xmas Cake, 0, 70, 10, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 10, 0;}, {}
+509, ChocolateBar, Chocolate Bar, 0, 60, 20, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 20, 0;}, {}
+510, Candy, Candy, 0, 20, 10, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 5, 0;}, {}
+512, GingerBreadMan, Ginger Bread Man, 0, 50, 25, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 25, 0;}, {}
+513, Cake, Cake, 0, 30, 15, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 15, 0;}, {}
+514, XmasCandyCane, Xmas Candy Cane, 0, 30, 15, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 10, 0;}, {}
+519, CherryCake, Cherry Cake, 0, 100, 50, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 35, 0;}, {}
+520, EasterEgg, Easter Egg, 0, 200, 100, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 100, 0;}, {}
+527, Milk, Milk, 0, 300, 150, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 150, 0;}, {}
+533, RoastedMaggot, Roasted Maggot, 0, 110, 55, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 150, 0;}, {}
+534, OrangeCupcake, Orange Cupcake, 0, 90, 45, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 100, 0;}, {}
+535, RedApple, Red Apple, 0, 25, 6, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 50, 0;}, {}
+539, Beer, Beer, 0, 175, 87, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 200, 5;}, {}
+541, BottleOfWater, Bottle of Water, 0, 200, 100, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 250, 0;getitem 540, 1;}, {}
+562, ChickenLeg, Chicken Leg, 0, 250, 125, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 500, 0;}, {}
+565, PinkPetal, Pink Petal, 0, 100, 50, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 50, 0;}, {}
+566, SmallMushroom, Small Mushroom, 0, 125, 50, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 50, 0;}, {}
+567, IronPotion, Iron Potion, 0, 500, 250, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {sc_start sc_raiseattackstrength, 60, 60;}, {}
+568, ConcentrationPotion, Concentration Potion, 0, 500, 250, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {sc_start sc_raiseattackspeed0, 60, 30;}, {}
+657, Orange, Orange, 0, 40, 10, 7, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 60, 0;}, {}
+676, Steak, Steak, 0, 275, 100, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 250, 0;}, {}
+684, TinyHealingPotion, Tiny Healing Potion, 0, 25, 12, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 100, 0;}, {}
+685, SmallHealingPotion, Small Healing Potion, 0, 50, 25, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 200, 0;}, {}
+686, MediumHealingPotion, Medium Healing Potion, 0, 100, 50, 15, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 400, 0;}, {}
+687, LargeHealingPotion, Large Healing Potion, 0, 200, 100, 25, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 800, 0;}, {}
+705, ManaPotion, Mana Potion, 0, 2000, 300, 50, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 0, 10;callfunc "MagicGainBasic";}, {}
+714, SnakeEgg, Snake Egg, 0, 50, 25, 4, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 30, 0;}, {}
+715, MountainSnakeEgg, Mountain Snake Egg, 0, 80, 40, 4, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 40, 0;}, {}
+716, GrassSnakeEgg, Grass Snake Egg, 0, 100, 50, 4, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 50, 0;}, {}
+717, CaveSnakeEgg, Cave Snake Egg, 0, 60, 30, 4, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 20, 0;}, {}
+719, GreenApple, Green Apple, 0, 20, 5, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 45, 0;}, {}
+733, PurificationPotion, Purification Potion, 0, 0, 0, 15, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {callfunc "usePurificationPotion";}, {}
+736, WhiteCake, White Cake, 0, 500, 100, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 10, 0;}, {}
+737, ChocolateCake, Chocolate Cake, 0, 550, 125, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 11, 0;}, {}
+738, OrangeCake, Orange Cake, 0, 600, 150, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 12, 0;}, {}
+739, AppleCake, Apple Cake, 0, 600, 150, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 12, 0;}, {}
+743, Acorn, Acorn, 0, 50, 10, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 3, 0;}, {}
+744, DilutedConcentrationPot, Diluted Concentration P, 0, 250, 100, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {sc_start sc_raiseattackspeed0, 30, 20;}, {}
+745, DarkConcentrationPotion, Dark Concentration Poti, 0, 50, 25, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {sc_start sc_raiseattackspeed0, 10, 40;sc_start sc_poison, 1, 50;}, {}
+747, LacedChocolateCake, Laced Chocolate Cake, 0, 550, 125, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 11, 0;}, {}
+748, LacedOrangeCupcake, Laced Orange Cupcake, 0, 90, 45, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 100, 0;}, {}
+//ID, Name___________________, Label__________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
+750, SlowPoisonPotion, Slow Poison Potion, 0, 500, 200, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 5, 0;sc_start sc_slowpoison, 180000, 180;}, {}
+784, ZombieNachos, Zombie Nachos, 0, 100, 30, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 60, 0;}, {}
+785, LadyFingers, Lady Fingers, 0, 70, 25, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 40, 0;}, {}
+786, JellAhh, Jell-Ahh, 0, 80, 30, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 50, 0;}, {}
+787, Snapple, Snapple, 0, 110, 55, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 70, 0;}, {}
+788, BeetleJuice, Beetle Juice, 0, 80, 30, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 50, 0;}, {}
+789, GutBuster, Gut Buster Ale, 0, 100, 30, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 60, 0;}, {}
+790, BloodWine, Blood Wine, 0, 150, 50, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 100, 0;}, {}
+808, HitchhikersTowel, Hitchhiker's Towel, 0, 10, 1, 30, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {set @warpTowelName$, "HitchhikersTowel"; callfunc "WarpTowel";}, {}
+809, WhiteHitchhikersTowel, White Hitchhiker's Towe, 0, 10, 1, 30, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {set @warpTowelName$, "WhiteHitchhikersTowel"; callfunc "WarpTowel";}, {}
+810, RedHitchhikersTowel, Red Hitchhiker's Towel, 0, 10, 1, 30, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {set @warpTowelName$, "RedHitchhikersTowel"; callfunc "WarpTowel";}, {}
+811, GreenHitchhikersTowel, Green Hitchhiker's Towe, 0, 10, 1, 30, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {set @warpTowelName$, "GreenHitchhikersTowel"; callfunc "WarpTowel";}, {}
+812, BlueHitchhikersTowel, Blue Hitchhiker's Towel, 0, 10, 1, 30, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {set @warpTowelName$, "BlueHitchhikersTowel"; callfunc "WarpTowel";}, {}
+813, YellowHitchhikersTowel, Yellow Hitchhiker's Tow, 0, 10, 1, 30, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {set @warpTowelName$, "YellowHitchhikersTowel"; callfunc "WarpTowel";}, {}
+814, PurpleHitchhikersTowel, Purple Hitchhiker's Tow, 0, 10, 1, 30, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {set @warpTowelName$, "PurpleHitchhikersTowel"; callfunc "WarpTowel";}, {}
+815, OrangeHitchhikersTowel, Orange Hitchhiker's Tow, 0, 10, 1, 30, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {set @warpTowelName$, "OrangeHitchhikersTowel"; callfunc "WarpTowel";}, {}
+816, PinkHitchhikersTowel, Pink Hitchhiker's Towel, 0, 10, 1, 30, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {set @warpTowelName$, "PinkHitchhikersTowel"; callfunc "WarpTowel";}, {}
+817, TealHitchhikersTowel, Teal Hitchhiker's Towel, 0, 10, 1, 30, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {set @warpTowelName$, "TealHitchhikersTowel"; callfunc "WarpTowel";}, {}
+818, LimeHitchhikersTowel, Lime Hitchhiker's Towel, 0, 10, 1, 30, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {set @warpTowelName$, "LimeHitchhikersTowel"; callfunc "WarpTowel";}, {}
+825, TinyManaElixir, Tiny Mana Elixir, 0, 100, 10, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 0, 25;}, {}
+826, SmallManaElixir, Small Mana Elixir, 0, 200, 20, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 0, 50;}, {}
+827, MediumManaElixir, Medium Mana Elixir, 0, 400, 40, 15, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 0, 100;}, {}
+828, LargeManaElixir, Large Mana Elixir, 0, 800, 80, 25, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 0, 250;}, {}
+838, CranberryLollipop, Cranberry Lollipop, 0, 100, 50, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 750, 0;}, {}
+839, GrapeLollipop, Grape Lollipop, 0, 100, 50, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 750, 0;}, {}
+840, OrangeLollipop, Orange Lollipop, 0, 100, 50, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 750, 0;}, {}
+1189, PollettEgg, PollettEgg, 0, 250, 25, 4, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 75, 10;}, {}
+1229, CaramelApple, Caramel Apple, 0, 500, 75, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 1000, 0;}, {}
+1230, LollipopColor1, Booberry Blue Lollipop, 0, 100, 50, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 800, 0;}, {}
+1231, LollipopColor2, Ghastly Green Lollipop, 0, 100, 50, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 800, 0;}, {}
+1232, LollipopColor3, Blood Red Lollipop, 0, 100, 50, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 800, 0;}, {}
+1248, Blueberries, Blueberries, 0, 50, 25, 6, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 200, 0;}, {}
+1250, Pear, Pear, 0, 50, 25, 7, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 150, 0;}, {}
+1251, Plum, Plum, 0, 50, 25, 10, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 100, 0;}, {}
+1252, Cherry, Cherry, 0, 50, 25, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 50, 0;}, {}
+1253, GoldenDeliciousApple, Golden Delicious Apple, 0, 1000, 500, 30, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 200, 0;}, {}
+1258, Honey, Honey, 0, 100, 80, 20, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 45, 0;}, {}
+1280, Scissors, Scissors, 0, 1000, 500, 120, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {callfunc "useScissors";}, {}
+1281, ShockSweet, Shock Sweet, 0, 1000, 500, 5, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {callfunc "useShockSweet";}, {}
+4035, PickledBeets, Pickled Beets, 0, 100, 50, 150, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 50, 0; setlook LOOK_HAIR_COLOR, HC_PURPLE;}, {}
+4036, RoastedAcorn, Roasted Acorn, 0, 100, 50, 1, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, {itemheal 15, 0;}, {}
+5126, MTJarofOwnBlood, MTJar of Own Blood, 0, 200, 100, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {itemheal -250, 0;getitem 5127, 1;}, {}
+//ID, Name___________________, Label__________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
diff --git a/world/map/db/weapon_item_db.txt b/world/map/db/weapon_item_db.txt
new file mode 100644
index 00000000..58d215f6
--- /dev/null
+++ b/world/map/db/weapon_item_db.txt
@@ -0,0 +1,62 @@
+// Name and Label MUST NOT exceed 23 characters (as marked)
+//ID, Name___________________, Label__________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
+521, Dagger, Dagger, 4, 1000, 500, 200, 15, 0, 1, 0, 0, 2, 2, 1, 1, 1, {}, {}
+522, SharpKnife, Sharp Knife, 4, 100, 50, 150, 10, 0, 1, 0, 0, 2, 2, 1, 1, 1, {}, {}
+529, IronArrow, Iron Arrow, 10, 4, 2, 1, 40, 0, 0, 0, 0, 2, 32768, 0, 0, 0, {}, {set @AmmoType, AMMO_BOW; callfunc "CheckAmmo";}
+530, ShortBow, Short Bow, 4, 8000, 2000, 600, 50, 0, 5, 0, 0, 2, 34, 1, 4, 11, {}, {set @LauncherType, AMMO_BOW; callfunc "CheckLauncher";}
+536, ShortSword, Short Sword, 4, 8000, 4000, 2000, 100, 0, 1, 0, 0, 2, 2, 1, 1, 1, {}, {}
+545, ForestBow, Forest Bow, 4, 20000, 5000, 1200, 70, 0, 5, 0, 0, 2, 34, 1, 0, 11, {}, {set @LauncherType, AMMO_BOW; callfunc "CheckLauncher";}
+547, Bardiche, Bardiche, 4, 20, 10, 10, 0, 100, 1, -200, 0, 2, 2, 0, 0, 1, {}, {callfunc "UnreleasedItem";}
+548, Halberd, Halberd, 4, 20, 10, 1400, 100, 0, 1, 0, 0, 2, 2, 1, 0, 1, {}, {callfunc "UnreleasedItem";}
+549, Axe, Axe, 4, 20, 10, 1200, 100, 0, 1, 0, 0, 2, 2, 1, 0, 1, {}, {callfunc "UnreleasedItem";}
+550, BlacksmithsAxe, Blacksmith's Axe, 4, 20, 10, 1200, 100, 0, 1, 0, 0, 2, 2, 1, 0, 1, {}, {callfunc "UnreleasedItem";}
+561, Sabre, Sabre, 4, 10000, 5000, 300, 100, 0, 1, 0, 0, 2, 2, 1, 1, 1, {}, {}
+570, BoneKnife, Bone Knife, 4, 10000, 6000, 450, 115, 0, 1, 0, 0, 2, 2, 1, 1, 1, {}, {}
+571, Setzer, Setzer, 4, 20000, 8000, 900, 110, 0, 1, 0, 0, 2, 2, 1, 1, 3, {}, {}
+572, Scimitar, Scimitar, 4, 8000, 4000, 200, 100, 0, 1, 0, 0, 2, 2, 1, 1, 1, {}, {callfunc "UnreleasedItem";}
+573, Falchion, Falchion, 4, 8000, 4000, 300, 100, 0, 1, 0, 0, 2, 2, 1, 1, 1, {}, {callfunc "UnreleasedItem";}
+574, Scorpion, Scorpion, 4, 8000, 4000, 600, 100, 0, 1, 0, 0, 2, 2, 1, 1, 1, {}, {callfunc "UnreleasedItem";}
+575, DesertBow, Desert Bow, 4, 8000, 4000, 1200, 100, 0, 1, 0, 0, 2, 34, 1, 1, 11, {}, {callfunc "UnreleasedItem";set @LauncherType, AMMO_BOW; callfunc "CheckLauncher";}
+576, Beheader, Beheader, 4, 8000, 4000, 2000, 100, 0, 1, 0, 0, 2, 2, 1, 1, 1, {}, {callfunc "UnreleasedItem";}
+577, BoneDarts, Bone Darts, 4, 8000, 4000, 300, 100, 0, 1, 0, 0, 2, 2, 1, 1, 1, {}, {callfunc "UnreleasedItem"; }
+578, SandCutter, Sand Cutter, 4, 8000, 4000, 1500, 100, 0, 1, 0, 0, 2, 2, 1, 1, 1, {}, {callfunc "UnreleasedItem";}
+579, RockKnife, Rock Knife, 4, 15000, 7500, 500, 110, 0, 1, 0, 0, 2, 2, 1, 1, 1, {}, {bonus bVit, 3;}
+//ID, Name___________________, Label__________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
+580, StaffOfLife, Staff of Life, 4, 8000, 4000, 1500, 100, 0, 1, 0, 0, 2, 2, 1, 1, 1, {}, {callfunc "UnreleasedItem";}
+581, CrescentRod, Crescent Rod, 4, 8000, 4000, 1500, 100, 0, 1, 0, 0, 2, 2, 1, 1, 1, {}, {callfunc "UnreleasedItem";}
+582, StaffOfFire, Staff of Fire, 4, 8000, 4000, 1500, 100, 0, 1, 0, 0, 2, 2, 1, 1, 1, {}, {callfunc "UnreleasedItem";}
+583, StaffOfIce, Staff of Ice, 4, 8000, 4000, 1500, 100, 0, 1, 0, 0, 2, 2, 1, 1, 1, {}, {callfunc "UnreleasedItem";}
+584, Jackal, Jackal, 4, 8000, 4000, 100, 100, 0, 1, 0, 0, 2, 2, 1, 1, 1, {}, {callfunc "UnreleasedItem";}
+587, Sword, Sword, 4, 1000, 500, 200, 15, 0, 1, 0, 0, 2, 2, 1, 1, 1, {}, {callfunc "UnreleasedItem";}
+588, BastardSword, BastardSword, 4, 1000, 500, 200, 15, 0, 1, 0, 0, 2, 2, 1, 1, 1, {}, {callfunc "UnreleasedItem";}
+//589, RESERVED, BroadSword, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+//590, RESERVED, Baselard, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+591, LongSword, LongSword, 4, 1000, 500, 200, 15, 0, 1, 0, 0, 2, 2, 1, 1, 1, {}, {callfunc "UnreleasedItem";}
+//592, RESERVED, Stiletto, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+//593, RESERVED, Rapier, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+594, Spear, Spear, 4, 1000, 500, 200, 15, 0, 1, 0, 0, 2, 2, 1, 1, 1, {}, {callfunc "UnreleasedItem";}
+//595, RESERVED, HeavySpear, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+//596, RESERVED, Pike, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+//597, RESERVED, HeavyPike, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+//598, RESERVED, DualSpear, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+//599, RESERVED, FireSword, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+//ID, Name___________________, Label__________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
+//605, RESERVED, MeatCleaver, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+//606, RESERVED, Hatchet, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+//607, RESERVED, Trident, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+//608, RESERVED, BladeShield, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+//609, RESERVED, Club, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, {}, {}
+623, Scythe, Scythe, 4, 100, 50, 1200, 75, 0, 1, 0, 0, 2, 34, 1, 1, 3, {}, {}
+758, WoodenStaff, Wooden Staff, 4, 4000, 2000, 1000, 50, 0, 1, 10, 0, 2, 34, 1, 1, 10, {}, {set @bStat, bInt;set @minbStatVal, 60;callfunc "RequireStat";}
+//ID, Name___________________, Label__________________, Type, Price, Sell, Weight, ATK, DEF, Range, Mbonus, Slot, Gender, Loc, wLV, eLV, View, {UseScript}, {EquipScript}
+1171, Wand, Wand, 4, 400, 200, 100, 1, 0, 1, 5, 0, 2, 2, 1, 1, 1, {}, {set @bStat, bInt;set @minbStatVal, 5;callfunc "RequireStat";}
+762, TerraniteArrow, Terranite Arrow, 10, 80, 20, 1, 50, 0, 0, 0, 0, 2, 32768, 0, 0, 0, {}, {bonus bCritical, 10;set @AmmoType, AMMO_BOW; callfunc "CheckAmmo";}
+867, IceGladius, Ice Gladius, 4, 2000, 1000, 1000, 110, 0, 1, 0, 0, 2, 2, 1, 1, 1, {}, {bonus bLuk, 1;}
+878, BansheeBow, Banshee Bow, 4, 101000, 40000, 900, 90, 0, 6, 0, 0, 2, 34, 1, 90, 11, {}, {set @bStat, bDex;set @minbStatVal, 80;callfunc "RequireStat"; bonus2 bHPDrainRate, 100, -4; bonus bAspdRate, 20; bonus bCritical, 70; bonus bMaxHP, -150; bonus bDefRate, -40; bonus bDef2Rate, -35;set @LauncherType, AMMO_BOW; callfunc "CheckLauncher";}
+903, SlingShot, Sling Shot, 4, 500, 50, 10, 5, 0, 3, 0, 0, 2, 34, 1, 1, 11, {}, {set @LauncherType, AMMO_SLING; callfunc "CheckLauncher";}
+904, SlingBullet, Sling Bullet, 10, 1, 0, 1, 5, 0, 0, 0, 0, 2, 32768, 0, 0, 0, {}, {set @AmmoType, AMMO_SLING; callfunc "CheckAmmo";}
+1199, Arrow, Arrow, 10, 2, 1, 1, 20, 0, 0, 0, 0, 2, 32768, 0, 0, 0, {}, {set @AmmoType, AMMO_BOW; callfunc "CheckAmmo";}
+1200, Bow, Bow, 4, 1000, 500, 20, 20, 0, 5, 0, 0, 2, 34, 1, 4, 11, {}, {set @LauncherType, AMMO_BOW; callfunc "CheckLauncher";}
+1201, Knife, Knife, 4, 50, 25, 120, 5, 0, 1, 0, 0, 2, 2, 1, 1, 1, {}, {}
+1215, ToySabre, Toy Sabre, 4, 50, 25, 1, 1, 0, 1, 0, 0, 2, 2, 1, 1, 1, {}, {}
+1282, BoneArrows, Bone Arrows, 10, 50, 20, 0, 55, 0, 0, 0, 0, 2, 32768, 0, 0, 0, {}, {bonus bCritical, 1;set @AmmoType, AMMO_BOW; callfunc "CheckAmmo";}
diff --git a/world/map/news.d/32-v2014.5.20.txt b/world/map/news.d/32-v2014.5.20.txt
index abf5ed45..b490d04a 100644
--- a/world/map/news.d/32-v2014.5.20.txt
+++ b/world/map/news.d/32-v2014.5.20.txt
@@ -4,11 +4,11 @@
Small updates to change some things.
More changes coming soon enough. As always
TMW is looking for help; Wiki Edits, Devs,
-and Testers.
+and Testers.
-[b]How to develop:[/b]
+{b}How to develop:{/b}
{link:http://tinyurl.com/mxnnuez}
-[b]Whats being developed:[/b]
+{b}Whats being developed:{/b}
{link:http://tinyurl.com/mt8r8pb}
{ul}
@@ -27,7 +27,7 @@ and Testers.
up by monster levels.){/li}
{/ul}
-You can Always find whats going to
+You can Always find whats going to
be new via the set of links on this post
{link:http://tinyurl.com/l5pko8r}
diff --git a/world/map/news.d/33-v2014.6.17.txt b/world/map/news.d/33-v2014.6.17.txt
new file mode 100644
index 00000000..15707cb5
--- /dev/null
+++ b/world/map/news.d/33-v2014.6.17.txt
@@ -0,0 +1,26 @@
+{title:Item Split & Mob Shuffle}
+{date:2014-06-17}
+
+Item Db was split into multiple files to make
+it easier to maintain.
+
+Added Mobs/Mob improvements:
+{ul}
+{li}Existing Mushrooms Art{/li}
+{li}Moonshroom Added (Not In-game){/li}
+{li}Mana-Bug Added (Not In-Game){/li}
+{li}White Bell is now Agressive and has attacks{/li}
+{/ul}
+
+Mapflags Added to 004-3,-4,-5 to respawn local.
+
+Rasin made accessiable for lowbies (hide n seek).
+
+Banu pointing to forge to buy a knife.
+
+Towel Cooldown accurately reflects the server cooldown.
+
+monsters.xml is now relational with the Mob_db ID
+(ex: maggot is now 1002 in both files.)
+
+{author:The Mana World Development Team}
diff --git a/world/map/news.php b/world/map/news.php
index dc1c1db2..d9f4d2e5 100644
--- a/world/map/news.php
+++ b/world/map/news.php
@@ -1,7 +1,7 @@
<?php
// configuration variables
-$min_manaplus = '1.1.2.20';
+$min_manaplus = '1.3.6.9';
// utility functions
function failure_headers()
@@ -111,7 +111,6 @@ else
handle_browser($agent);
}
-echo "##9 Latest client version: ##6$cur_version\n \n";
echo "##7 TMW Staff will never ask you for your password.\n";
echo "##7 Anyone doing so is trying to scam you.\n \n";
diff --git a/world/map/npc/006-1/pachua.txt b/world/map/npc/006-1/pachua.txt
index 41375411..d2f193dd 100644
--- a/world/map/npc/006-1/pachua.txt
+++ b/world/map/npc/006-1/pachua.txt
@@ -1,6 +1,6 @@
006-1.gat,24,113,0|script|Pachua|143,
{
- setarray $@npc_loc, 24, 113, 4;
+ setarray @npc_loc, 24, 113, 4;
callfunc "PCtoNPCRange";
if (@npc_check)
goto L_Close;
diff --git a/world/map/npc/017-9/_import.txt b/world/map/npc/017-9/_import.txt
index 69c67d6f..4e650df8 100644
--- a/world/map/npc/017-9/_import.txt
+++ b/world/map/npc/017-9/_import.txt
@@ -3,4 +3,5 @@
map: 017-9.gat
npc: npc/017-9/_mobs.txt
npc: npc/017-9/_warps.txt
+npc: npc/017-9/announcements.txt
npc: npc/017-9/mapflags.txt
diff --git a/world/map/npc/botcheck/announcements.txt b/world/map/npc/017-9/announcements.txt
index cb7a5f8f..585fbc28 100644
--- a/world/map/npc/botcheck/announcements.txt
+++ b/world/map/npc/017-9/announcements.txt
@@ -13,7 +13,7 @@
// $@GMSA_TICK: broadcast the message every $@GMSA_TICK hours
// $@GMSA_CURRENT_TICK: internal counter incremented every hour
-botcheck.gat,49,29,0|script|Stone Board|348,
+017-9.gat,26,24,0|script|Stone Board|145,
{
if (getgmlevel() < 60)
goto L_Close;
diff --git a/world/map/npc/022-1/_warps.txt b/world/map/npc/022-1/_warps.txt
index eab0a4e6..45899c50 100644
--- a/world/map/npc/022-1/_warps.txt
+++ b/world/map/npc/022-1/_warps.txt
@@ -5,3 +5,4 @@
022-1.gat,30,20|warp|To Lighthouse Beach|0,-1,023-1.gat,107,146
022-1.gat,73,110|warp|To North Tulimshar|3,-1,021-1.gat,73,23
022-1.gat,113,110|warp|To North Tulimshar|3,-1,021-1.gat,113,23
+022-1.gat,46,82|warp|To Tulimshar Suburbs|-1,-1,042-1.gat,115,85
diff --git a/world/map/npc/022-1/tutorial.txt b/world/map/npc/022-1/tutorial.txt
index 93f1700a..c249d79d 100644
--- a/world/map/npc/022-1/tutorial.txt
+++ b/world/map/npc/022-1/tutorial.txt
@@ -4,14 +4,46 @@
// Tutorial
// Nibble 0
// 1-4: Sorfina
-
-022-1.gat,46,82,0|script|#tutorial-outside1|45,2,1
-{
- callfunc "TutorialCompleted";
- warp "042-1.gat", 115, 85;
- end;
-}
-
+// 5-7: Tanisha
+// 8-13: Kaan & Hasan
+// 14: Hasan Complete
+// 15: Open
+// Nibble 1
+// 4: Sorfina Bit
+// 5: Tanisha Bit
+// 6: Valon Start
+// 7: Valon Done
+// Nibble 2
+// 1: Maggots
+// 2: House Maggots
+// 3: TameScorpion
+// 4: Scorpion
+// 5-15: Open
+// Nibble 3
+// 1-15: Count
+// Nibble 4
+// 16: Start
+// 17: Barrel
+// 18: Barrel
+// 19: Barrel
+// Nibble 5
+// 20: Barrel
+// 21: Barrel
+// 22: Barrel
+// 23: Found
+// Nibble 6
+// 1: Seen
+// 2: Started
+// 3:
+// 24: Magic
+// 25:
+// 26:
+// 27:
+// Nibble 7
+// 28: Magic Start
+// 29: Magic End
+// 30: Zegas Met
+// 31: Hasan Complete
-|script|#TutorialConfig|-1,
{
end;
@@ -22,25 +54,24 @@ OnInit:
set $@ScorpDeath, 0;
set $@SorfinaHasanBit, (1 << 4);
set $@TanishaHasanBit, (1 << 5);
+ set $@HasanCompleteBit, (1 << 31);
end;
}
-
function|script|TutorialState|,
{
callfunc "ClearVariables";
set @tutorial, ((TUTORIAL & NIBBLE_0_MASK) >> NIBBLE_0_SHIFT);
set @sorfina_hasan, (TUTORIAL & $@SorfinaHasanBit);
set @tanisha_hasan, (TUTORIAL & $@TanishaHasanBit);
+ set @hasan_complete, (TUTORIAL & $@HasanCompleteBit);
return;
}
-
function|script|SetTutorialMask|,
{
set TUTORIAL, (TUTORIAL & ~(NIBBLE_0_MASK) | (@tutorial_tmp << NIBBLE_0_SHIFT));
set @tutorial_tmp, 0;
return;
}
-
function|script|TutorialCompleted|,
{
set FLAGS, FLAGS | FLAG_TUTORIAL_DONE;
diff --git a/world/map/npc/024-1/_warps.txt b/world/map/npc/024-1/_warps.txt
index b2c4babf..7b7d0545 100644
--- a/world/map/npc/024-1/_warps.txt
+++ b/world/map/npc/024-1/_warps.txt
@@ -4,3 +4,4 @@
024-1.gat,86,74|warp|To North Tulimshar|3,-1,021-1.gat,49,65
024-1.gat,80,48|warp|To Tulimshar Magic School|0,-1,024-2.gat,26,26
024-1.gat,86,48|warp|To Tulimshar Magic School|-1,-1,024-2.gat,42,27
+024-1.gat,80,30|warp|To Magic Passage|-1,-1,042-3.gat,56,45
diff --git a/world/map/npc/024-2/barrier.txt b/world/map/npc/024-2/barrier.txt
index 6b971d1f..4894dad8 100644
--- a/world/map/npc/024-2/barrier.txt
+++ b/world/map/npc/024-2/barrier.txt
@@ -2,10 +2,15 @@
024-2.gat,31,24,0|script|#MagicSchoolBarrier1#M|0,1,1,
{
- if (BaseLevel < 40) goto L_PushBack;
- close;
+ callfunc "MorganState";
+ if (@morgan >= 4)
+ goto L_End;
+ goto L_PushBack;
L_PushBack:
warp "024-2.gat", 34, 24;
- close;
+ goto L_End;
+
+L_End:
+ end;
}
diff --git a/world/map/npc/024-2/tyer.txt b/world/map/npc/024-2/tyer.txt
index 334c62ad..2b4f8674 100644
--- a/world/map/npc/024-2/tyer.txt
+++ b/world/map/npc/024-2/tyer.txt
@@ -3,6 +3,6 @@
024-2.gat,36,21,0|script|Tyer|157,
{
mes "[Tyer]";
- mes "\"Hello.\"";
+ mes "\"Hello. Welcome to the Magic Insitute of Tulimshar.\"";
close;
}
diff --git a/world/map/npc/024-2/tyer_trigger.txt b/world/map/npc/024-2/tyer_trigger.txt
index 353dea16..45218430 100644
--- a/world/map/npc/024-2/tyer_trigger.txt
+++ b/world/map/npc/024-2/tyer_trigger.txt
@@ -1,24 +1,22 @@
// A man in the magic school
-024-2.gat,33,24,0|script|#Tyer_Trigger|0,1,1,
+024-2.gat,33,24,0|script|#Tyer_Trigger|0,0,1,
{
- if (BaseLevel >= 40) end;
+ callfunc "MorganState";
+ if (@morgan >= 4)
+ goto L_Close;
mes "[Tyer]";
- mes "\"You're still too young to go in there.\"";
- next;
-
+ mes "\"You're not allowed to go in there.\"";
menu
- "What do you mean I'm too young to go in there?", L_Explain,
+ "What do you mean I'm not allowed to go in there?", L_Explain,
"Ah, right.", L_Close;
L_Explain:
mes "[Tyer]";
- mes "\"The canyon is a dangerous place, so only more experienced people are allowed there.\"";
+ mes "\"Access to those areas are for students of magic only.\"";
next;
-
- mes "[Tyer]";
- mes "\"That barrier was made to keep those that are too young out.\"";
+ mes "\"That barrier was made to keep those that are not students out.\"";
goto L_Close;
L_Close:
diff --git a/world/map/npc/028-1/Portal.txt b/world/map/npc/028-1/Portal.txt
deleted file mode 100644
index 71810ec5..00000000
--- a/world/map/npc/028-1/Portal.txt
+++ /dev/null
@@ -1,135 +0,0 @@
-028-1.gat,69,71,0|script|Portal#_M|400,
-{
- if (isin("028-1.gat",65,67,73,73)) goto L_Main;
- mes "There is something there, but you aren't quite close enough to see exactly what it is.";
- close;
-
-L_Main:
- mes "[Portal]";
- mes "";
- mes "A strange field hovers about waist high above the ground.";
- next;
- mes "[Portal]";
- mes "";
- mes "You sense a feeling of familiarity radiating out from it.";
- mes "";
- mes "It looks just wide enough to jump through.";
- next;
- mes "[Portal]";
- mes "";
- mes "You're not quite sure if there will be a way to return once you enter, though.";
- next;
- mes "[Portal]";
- mes "";
- mes "What do you do?";
- menu
- "Jump through, without looking back.", L_No_Hesitation,
- "Take one more look around.", L_Look,
- "Leave it alone.", L_Close;
-
-L_No_Hesitation:
- mes "There has been quite enough of this harsh place. You jump through without hesitation...";
- next;
- mes "...and fall, and fall...";
- next;
- mes "Dizzying colors whirl around you. You collapse.";
- savepoint "009-1", 52, 39;
- itemheal -hp -1, 0;
- close;
-
-L_Look:
- mes "[Portal]";
- mes "";
- mes "There was a lot here. You don't know where it came from, or quite how you ended up here.";
- if ((Easter_2010_QuestState >> E10_STATE_ROSE_SHIFT) & E10_STATE_ROSE_MASK == E10_STATE_ROSE_ROSE_COMPLETE)
- goto L_Full_Helped;
- if ((Easter_2010_QuestState >> E10_HELPED_DOCTOR_SHIFT) & E10_HELPED_DOCTOR_MASK)
- goto L_Somewhat_Helped;
- if ((Easter_2010_QuestState >> E10_FLAG_KNOWS_DOCTOR_SHIFT) & E10_FLAG_KNOWS_DOCTOR)
- goto L_Met;
- if ((Easter_2010_QuestState >> E10_FLAG_RETURN_READY_SHIFT) & E10_FLAG_RETURN_READY_MASK)
- goto L_Unknown_Defeat;
-
- mes "Come to think of it, there is still quite a lot you're not sure about. There was talk about something big, but you must have missed it... whatever it was, it seems gone now.";
- goto L_Post_Look;
-
-
-L_Full_Helped:
- if ((Easter_2010_QuestState >> E10_FLAG_RETURN_READY_SHIFT) & E10_FLAG_RETURN_READY_MASK)
- goto L_Full_Helped_Defeat;
- mes "Your assistance was helpful, you know that much. If only you could have faced the darkness that plagued this world more directly...";
- goto L_Post_Look;
-
-L_Full_Helped_Defeat:
- mes "You know you have done everything that you could have. Your determination will have surely meant the world will be restored, once more.";
- goto L_Post_Look;
-
-L_Somewhat_Helped:
- if ((Easter_2010_QuestState >> E10_FLAG_RETURN_READY_SHIFT) & E10_FLAG_RETURN_READY_MASK)
- goto L_Somewhat_Helped_Defeat;
- mes "You feel your help was not for nothing, though you can't quite shake the feeling there was still something more to do.";
- goto L_Post_Look;
-
-L_Somewhat_Helped_Defeat:
- mes "Your help was not for nothing. Your destruction of evil would surely help heal this world!";
- goto L_Post_Look;
-
-L_Met:
- if ((Easter_2010_QuestState >> E10_FLAG_RETURN_READY_SHIFT) & E10_FLAG_RETURN_READY_MASK)
- goto L_Met_Defeat;
- mes "While you only met the Doctor briefly, he seemed to think there was something wrong. If only there was a way you could have helped, somehow.";
- goto L_Post_Look;
-
-L_Met_Defeat:
- mes "Striking down that evil, dark, figure would surely make a difference. While you only met the Doctor briefly, he seemed to think there was something wrong... with any luck, this defeat would be, at the very least, a significant setback.";
- goto L_Post_Look;
-
-L_Unknown_Defeat:
- mes "Striking down that evil, dark, figure would surely make a difference. You just wish you knew what that was about... if only there had been someone that could have explained it all.";
- goto L_Post_Look;
-
-L_Post_Look:
- next;
- mes "What do you do?";
- menu
- "Jump through", L_Jump,
- "Leave it alone", L_Close;
-
-L_Jump:
- mes "[Portal]";
- mes "";
- mes "A tingling sensation surrounds you as you enter.";
- next;
- mes "[Portal]";
- mes "";
- mes "Inside, your senses seem heightened, sharpened...";
- next;
- mes "[Portal]";
- mes "";
- mes "You can detect many entities all around you, yet you are not quite sure how.";
- next;
- mes "[Portal]";
- mes "";
- mes "Colors swirl around you. There is a sensation of great speed, of great power, of energy...";
- next;
- mes "[Portal]";
- mes "";
- mes "A tearing motion. The blobs of color skew, and stretch into long thin lines... and somehow, a taste of peanuts.";
- next;
- mes "[Portal]";
- mes "";
- mes "A mass of green and yellow, moving at high speed... or perhaps it is you who is moving?";
- next;
- mes "[Portal]";
- mes "";
- mes "Whichever it is, one of you slows just as you begin to recognise some details...";
- warp "009-1.gat", 52, 39;
- savepoint "009-1", 52, 39;
- mes "[Home]";
- mes "";
- mes "You land softly. It is good to be home...";
- close;
-
-L_Close:
- close;
-}
diff --git a/world/map/npc/028-1/_import.txt b/world/map/npc/028-1/_import.txt
index db87b93f..b4ffaa86 100644
--- a/world/map/npc/028-1/_import.txt
+++ b/world/map/npc/028-1/_import.txt
@@ -1,6 +1,7 @@
-// Map 028-1: Easter Island
+// Map 028-1: GM Island
// This file is generated automatically. All manually changes will be removed when running the Converter.
map: 028-1.gat
-npc: npc/028-1/Portal.txt
npc: npc/028-1/_mobs.txt
npc: npc/028-1/_warps.txt
+npc: npc/028-1/mapflags.txt
+npc: npc/028-1/portal.txt
diff --git a/world/map/npc/028-1/_mobs.txt b/world/map/npc/028-1/_mobs.txt
index 6fc2f19f..c6d333a2 100644
--- a/world/map/npc/028-1/_mobs.txt
+++ b/world/map/npc/028-1/_mobs.txt
@@ -1,5 +1,5 @@
// This file is generated automatically. All manually changes will be removed when running the Converter.
-// Easter Island mobs
+// GM Island mobs
028-1.gat,121,75,27,25|monster|SpikyMushroom|1019,18,20000,15000,Mob028-1::On1019
028-1.gat,89,72,25,19|monster|Bat|1017,18,100000,10000,Mob028-1::On1017
diff --git a/world/map/npc/028-1/_warps.txt b/world/map/npc/028-1/_warps.txt
index 3158dba2..0fcbb24a 100644
--- a/world/map/npc/028-1/_warps.txt
+++ b/world/map/npc/028-1/_warps.txt
@@ -1,4 +1,4 @@
// This file is generated automatically. All manually changes will be removed when running the Converter.
-// Easter Island warps
+// GM Island warps
028-1.gat,120,125|warp|To Easter Island Cave|-1,-1,028-3.gat,33,77
diff --git a/world/map/npc/028-1/mapflags.txt b/world/map/npc/028-1/mapflags.txt
new file mode 100644
index 00000000..1bc5647d
--- /dev/null
+++ b/world/map/npc/028-1/mapflags.txt
@@ -0,0 +1 @@
+028-1.gat|mapflag|nosave|009-1,53,40
diff --git a/world/map/npc/028-1/portal.txt b/world/map/npc/028-1/portal.txt
new file mode 100644
index 00000000..0b510214
--- /dev/null
+++ b/world/map/npc/028-1/portal.txt
@@ -0,0 +1,16 @@
+//Leave GM Island
+028-1,98,37,0|script|Exit|400,0,0,
+{
+ mes "[Exit]";
+ mes "Would you like to leave this place?";
+ menu
+ "Yes.", L_Leave,
+ "No.", L_Close;
+
+L_Leave:
+ warp getsavepoint(0), getsavepoint(1), getsavepoint(2);
+ goto L_Close;
+
+L_Close:
+ close;
+}
diff --git a/world/map/npc/028-3/_import.txt b/world/map/npc/028-3/_import.txt
index 38108e9f..d7d975d4 100644
--- a/world/map/npc/028-3/_import.txt
+++ b/world/map/npc/028-3/_import.txt
@@ -1,5 +1,6 @@
-// Map 028-3: Easter Island Cave
+// Map 028-3: GM Island Cave
// This file is generated automatically. All manually changes will be removed when running the Converter.
map: 028-3.gat
npc: npc/028-3/_mobs.txt
npc: npc/028-3/_warps.txt
+npc: npc/028-3/mapflags.txt
diff --git a/world/map/npc/028-3/_mobs.txt b/world/map/npc/028-3/_mobs.txt
index c5fdba04..150ac53e 100644
--- a/world/map/npc/028-3/_mobs.txt
+++ b/world/map/npc/028-3/_mobs.txt
@@ -1,5 +1,5 @@
// This file is generated automatically. All manually changes will be removed when running the Converter.
-// Easter Island Cave mobs
+// GM Island Cave mobs
028-3.gat,51,49,22,15|monster|Silkworm|1035,10,30000,3000,Mob028-3::On1035
028-3.gat,43,35,1,1|monster|EvilMushroom|1013,3,40000,5000,Mob028-3::On1013
diff --git a/world/map/npc/028-3/_warps.txt b/world/map/npc/028-3/_warps.txt
index 559eafd8..89342982 100644
--- a/world/map/npc/028-3/_warps.txt
+++ b/world/map/npc/028-3/_warps.txt
@@ -1,4 +1,4 @@
// This file is generated automatically. All manually changes will be removed when running the Converter.
-// Easter Island Cave warps
+// GM Island Cave warps
028-3.gat,33,78|warp|To Easter Island|-1,-1,028-1.gat,120,126
diff --git a/world/map/npc/028-3/mapflags.txt b/world/map/npc/028-3/mapflags.txt
new file mode 100644
index 00000000..131f100f
--- /dev/null
+++ b/world/map/npc/028-3/mapflags.txt
@@ -0,0 +1 @@
+028-3.gat|mapflag|nosave|009-1,53,40
diff --git a/world/map/npc/041-1/_import.txt b/world/map/npc/041-1/_import.txt
index 957b1b29..f7ba8d9e 100644
--- a/world/map/npc/041-1/_import.txt
+++ b/world/map/npc/041-1/_import.txt
@@ -4,4 +4,3 @@ map: 041-1.gat
npc: npc/041-1/_mobs.txt
npc: npc/041-1/_warps.txt
npc: npc/041-1/mapflags.txt
-npc: npc/041-1/tutorial.txt
diff --git a/world/map/npc/041-1/_mobs.txt b/world/map/npc/041-1/_mobs.txt
index de93bfab..5b74c6bb 100644
--- a/world/map/npc/041-1/_mobs.txt
+++ b/world/map/npc/041-1/_mobs.txt
@@ -7,9 +7,9 @@
041-1.gat,61,34,13,20|monster|Scorpion|1003,3,100000,30000,Mob041-1::On1003
041-1.gat,55,30,10,48|monster|SeaSlime|1033,3,100000,30000,Mob041-1::On1033
041-1.gat,59,13,10,9|monster|Scorpion|1003,3,100000,30000,Mob041-1::On1003
-041-1.gat,60,7,3,2|monster|BlackScorpion|1009,1,100000,30000,Mob041-1::On1009
-041-1.gat,66,49,3,2|monster|BlackScorpion|1009,1,100000,30000,Mob041-1::On1009
-041-1.gat,95,75,21,9|monster|BlackScorpion|1009,1,100000,30000,Mob041-1::On1009
+041-1.gat,60,7,3,2|monster|TameScorpion|1046,1,100000,30000,Mob041-1::On1046
+041-1.gat,66,49,3,2|monster|TameScorpion|1046,1,100000,30000,Mob041-1::On1046
+041-1.gat,95,75,21,9|monster|TameScorpion|1046,1,100000,30000,Mob041-1::On1046
041-1.gat,100,57,18,9|monster|RedScorpion|1004,3,100000,30000,Mob041-1::On1004
041-1.gat,83,64,18,9|monster|RedScorpion|1004,3,100000,30000,Mob041-1::On1004
@@ -28,13 +28,13 @@ On1004:
callfunc "MobPoints";
end;
-On1009:
- set @mobID, 1009;
+On1033:
+ set @mobID, 1033;
callfunc "MobPoints";
end;
-On1033:
- set @mobID, 1033;
+On1046:
+ set @mobID, 1046;
callfunc "MobPoints";
end;
}
diff --git a/world/map/npc/041-1/_warps.txt b/world/map/npc/041-1/_warps.txt
index dff4558e..736486dc 100644
--- a/world/map/npc/041-1/_warps.txt
+++ b/world/map/npc/041-1/_warps.txt
@@ -2,3 +2,4 @@
// Beach warps
041-1.gat,101,95|warp|To Beach|1,-1,004-1.gat,68,20
+041-1.gat,58,4|warp|To Tulimshar Suburbs|1,-1,042-1.gat,44,113
diff --git a/world/map/npc/041-1/tutorial.txt b/world/map/npc/041-1/tutorial.txt
deleted file mode 100644
index 5c024e1f..00000000
--- a/world/map/npc/041-1/tutorial.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-// This file is part of the Tutorial
-// Author: Jenalya
-// if you enter the tutorial area, it is set to be already done
-
-041-1.gat,58,5,0|script|#tutorial-outside2|45,1,0
-{
- set FLAGS, FLAGS | FLAG_TUTORIAL_DONE;
- callfunc "ClearVariables";
- warp "042-1.gat", 44, 113;
- end;
-}
diff --git a/world/map/npc/042-1/_import.txt b/world/map/npc/042-1/_import.txt
index b3bfbae5..0c712a7c 100644
--- a/world/map/npc/042-1/_import.txt
+++ b/world/map/npc/042-1/_import.txt
@@ -5,6 +5,8 @@ npc: npc/042-1/_mobs.txt
npc: npc/042-1/_warps.txt
npc: npc/042-1/hasan.txt
npc: npc/042-1/kaan.txt
+npc: npc/042-1/liana.txt
npc: npc/042-1/mapflags.txt
-npc: npc/042-1/npcs.txt
+npc: npc/042-1/tutorial.txt
npc: npc/042-1/valon.txt
+npc: npc/042-1/zegas.txt
diff --git a/world/map/npc/042-1/_mobs.txt b/world/map/npc/042-1/_mobs.txt
index 75ea7407..a8175a1f 100644
--- a/world/map/npc/042-1/_mobs.txt
+++ b/world/map/npc/042-1/_mobs.txt
@@ -1,11 +1,11 @@
// This file is generated automatically. All manually changes will be removed when running the Converter.
// Tulimshar Suburbs mobs
-042-1.gat,100,68,31,15|monster|Maggot|1002,5,100000,30000,Mob042-1::On1002
+042-1.gat,101,69,31,15|monster|Maggot|1002,5,100000,30000,Mob042-1::On1002
042-1.gat,65,59,27,15|monster|Maggot|1002,7,100000,30000,Mob042-1::On1002
042-1.gat,68,102,7,8|monster|BlackScorpion|1009,5,100000,30000,Mob042-1::On1009
042-1.gat,98,88,5,8|monster|Scorpion|1003,4,100000,30000,Mob042-1::On1003
-042-1.gat,58,61,42,42|monster|FireGoblin|1011,2,100000,30000,Mob042-1::On1011
+042-1.gat,63,63,37,30|monster|TameScorpion|1046,6,100000,30000,Mob042-1::On1046
042-1.gat,85,102,5,8|monster|Scorpion|1003,5,100000,30000,Mob042-1::On1003
042-1.gat,98,99,5,5|monster|Scorpion|1003,3,100000,30000,Mob042-1::On1003
042-1.gat,82,87,6,3|monster|Scorpion|1003,2,100000,30000,Mob042-1::On1003
@@ -32,8 +32,8 @@ On1009:
callfunc "MobPoints";
end;
-On1011:
- set @mobID, 1011;
+On1046:
+ set @mobID, 1046;
callfunc "MobPoints";
end;
}
diff --git a/world/map/npc/042-1/_warps.txt b/world/map/npc/042-1/_warps.txt
index 565ed1ae..8c1043ea 100644
--- a/world/map/npc/042-1/_warps.txt
+++ b/world/map/npc/042-1/_warps.txt
@@ -3,7 +3,13 @@
042-1.gat,97,41|warp|To Tulismhar Docks|-1,2,022-1.gat,21,37
042-1.gat,65,20|warp|To Lighthouse Beach|0,-1,023-1.gat,64,143
-042-1.gat,63,47|warp|To Sorfina's House|-1,-1,042-2.gat,44,30
042-1.gat,91,73|warp|To Store House|-1,-1,042-2.gat,22,92
042-1.gat,104,73|warp|To Store House|-1,-1,042-2.gat,44,92
042-1.gat,65,75|warp|To Tulimshar Suburbs House|-1,-1,042-2.gat,29,61
+042-1.gat,62,42|warp|To Sorfina's Dinner|-1,-1,042-2.gat,112,85
+042-1.gat,51,43|warp|To Sorfina's House|-1,-1,042-2.gat,44,30
+042-1.gat,117,102|warp|To Magic School Research|-1,-1,042-2.gat,103,62
+042-1.gat,112,95|warp|To Magic School Research|-1,-1,042-2.gat,94,54
+042-1.gat,120,95|warp|To Magic School Research|-1,-1,042-2.gat,112,54
+042-1.gat,117,85|warp|To Tulismhar Docks|-1,-1,022-1.gat,49,82
+042-1.gat,44,115|warp|To Tulismhar Outskirts|1,-1,041-1.gat,58,6
diff --git a/world/map/npc/042-1/hasan.txt b/world/map/npc/042-1/hasan.txt
index 25f7ff86..722c8f62 100644
--- a/world/map/npc/042-1/hasan.txt
+++ b/world/map/npc/042-1/hasan.txt
@@ -1,67 +1,79 @@
// This file is part of the Tutorial
// Authors: Jenalya, alastrim
+// Hasan should be threatening someone else you come to help
+// Going to throw someone off a cliff
+// npctalk 2 NPCs Hasan talks about giving someone a short trip to Docks
+// They respond by asking play for help
+// Hasan tells them to but out of it.
-042-1.gat,116,84,0|script|Hasan|189,0,2,
+042-1.gat,104,49,0|script|Scared Man|160,
+{
+ if ((@hasan_complete) && ((@tutorial == 12) || (@tutorial == 14)))
+ goto L_TutDone;
+ message strcharinfo(0), "He looks too afraid to say anything.";
+ end;
+
+L_TutDone:
+ message strcharinfo(0), "Thanks. Kaan's been much nicer to me now";
+ end;
+}
+042-1.gat,102,49,0|script|Hasan|189,2,2,
{
goto L_Main;
L_Main:
- if (FLAGS & FLAG_TUTORIAL_DONE)
- goto L_Tut_Done;
-
- set @toll, 10000;
callfunc "TutorialState";
- // implicitly, $@ScorpionFighter is nonzero
- if (@tutorial == 13)
- goto L_Thank;
if ((getcharid(3) == $@ScorpionFighter) || ($@ScorpionFighter && $@ScorpionFighter != getcharid(3)))
goto L_Afraid;
- if (@tutorial == 12)
+ if ((@hasan_complete) && ((@tutorial == 12) || (@tutorial == 14)))
+ goto L_TutDone;
+ // implicitly, $@ScorpionFighter is nonzero
+ if ((@hasan_complete) && (@tutorial == 13))
+ goto L_Thank;
+ if (@tutorial == 12)
goto L_Trick;
if ((@tutorial == 10) || (@tutorial == 11))
- goto L_Toll;
+ goto L_FightAgain;
+ mes "You over hear some people nearby.";
mes "[Unfriendly Guy]";
- mes "\"Hey! You can't pass here.\"";
- menu
- "Why not?",L_Next,
- "Who says that?",L_Next;
-
-L_Next:
+ mes "\"I told you if you didn't get the money, I'd give you flying lessons, Haha!\"";
+ next;
+ mes "[Scared Man]";
+ mes "\"But the only person I need protection from is you.\"";
+ next;
+ mes "[Unfriendly Guy]";
+ mes "\"Thats why the price is so high.\"";
+ next;
+ mes "\"Because I'm the toughest person in all of Tulimshar\"";
+ next;
+ mes "[Scared Man]";
+ mes "\"No, your just a mean bully. Wait till I tell the gaurds about this!\"";
+ next;
mes "[Unfriendly Guy]";
- mes "\"I, Hasan the Mighty, have decided to put a toll on this path.\"";
+ mes "\"You do that and the next flying lesson will be from the beach cliffs.\"";
+ next;
+ mes "[Scared Man]";
+ mes "\"No, please don't. *sob*\"";
+ next;
+ mes "Sounds like this person is in trouble.\"";
+ next;
set @tutorial_tmp, 10;
callfunc "SetTutorialMask";
- next;
- goto L_Toll;
-
-L_Toll:
- mes "[Hasan]";
- mes "\"Give me " + @toll + "GP, and I may let you pass.\"";
- if (Zeny >= @toll)
- goto L_HasToll;
- goto L_NoToll;
-
-L_HasToll:
- menu
- "Ok, here you go.",L_Pay,
- "What? I don't have that much money!",L_NoPay,
- "We'll see if you can stop me!",L_Fight;
-
-L_NoToll:
+ mes "[Unfriendly Guy]";
+ mes "\"What are you looking at?\"";
menu
- "What? I don't have that much money!",L_NoPay,
- "We'll see if you can stop me!",L_Fight;
+ "What ever you call maggot slime scrapped off a boat after a walk through the sewers.\"", L_Fight,
+ "Who me? I saw nothing, just passing by.", L_Close;
-L_NoPay:
+L_FightAgain:
mes "[Hasan]";
- mes "\"That's not my problem. You have to stay here then.\"";
- next;
- mes "This is annoying. Maybe Kaan can help?";
- goto L_Close;
+ mes "\"Have you come back for a thrashing?\"";
+ menu
+ "No.", L_Close,
+ "Yes.", L_Fight;
L_Fight:
- mes "He laughs derisively.";
mes "[Hasan]";
mes "\"Do you really think you can beat me?\"";
mes "He pulls out a nasty looking dagger and stabs it in your direction.";
@@ -71,51 +83,38 @@ L_Fight:
mes "Maybe Kaan can help?";
goto L_Close;
-L_Pay:
- if (Zeny < @toll)
- goto L_Cheat;
- set Zeny, Zeny - @toll;
- mes "He grins gloatingly.";
- mes "[Hasan]";
- mes "\"Very well. You may pass.\"";
- callfunc "TutorialCompleted";
- goto L_Close;
-
-L_Cheat:
- mes "[Hasan]";
- mes "\"Don't you dare try to cheat me!\"";
- goto L_Close;
-
L_Trick:
mes "[Hasan]";
- mes "\"Are you going to pay now? " + @toll + "GP, and I may let you pass.\"";
+ mes "\"Have you come back for another thrashing?\"";
menu
- "I don't have that much money!",L_NoPay,
- "No. (Scratch your head.)",L_ScratchHead;
+ "No.",L_Close,
+ "Yes, yours! (Scratch your head.)",L_ScratchHead;
L_ScratchHead:
if ($@ScorpionFighter)
goto L_Wait;
+ set TUTORIAL, TUTORIAL | $@HasanCompleteBit;
set $@ScorpionTimer, 0;
set $@ScorpionFighter, getcharid(3);
set $@ScorpDeath, PC_DIE_COUNTER;
cmdothernpc "#ScorpionTrigger", "HasanSpawn";
- mes "While you're scratching your head, you see Kaan approaching behind Hasan.";
+ mes "While you're scratching your head, you see Kaan approaching the fence.";
close;
L_Thank:
mes "[Hasan]";
mes "\"You - you saved me!";
- mes "I tried to take your money and you saved me!\"";
+ mes "I was mean to people, but you still saved me!\"";
next;
mes "\"Hey, you're a really cool person.";
mes "I mean, the way you finished that ghastly scorpion!";
mes "Amazing!\"";
next;
- mes "\"Let me tell you a secret: Cool persons are allowed to pass for free.";
+ mes "\"Let me tell you something, I will no longer bully people.";
mes "And you can have my Sharp Knife.\"";
getitem "SharpKnife", 1;
- callfunc "TutorialCompleted";
+ set @tutorial_tmp, 14;
+ callfunc "SetTutorialMask";
next;
mes "\"You want to go to the bazaar, right? Shall I tell you how to get there?\"";
menu
@@ -136,12 +135,14 @@ L_Explore:
mes "\"Alright. Take care!\"";
goto L_Close;
-L_Tut_Done:
+L_TutDone:
mes "[Hasan]";
- if (BaseLevel >= 40)
- mes "\"Welcome to the suburbs of Tulimshar. I wonder what an experienced adventurer like you is doing here.\"";
- if (BaseLevel < 40)
- mes "\"Bah, nothing interesting is happening here.\"";
+ mes "\"You didn't see anything. I tell you what I'll be nicer if you don't tell anyone?\"";
+ menu
+ "As long as you learned your lesson.", L_TutCont;
+
+L_TutCont:
+ mes "\"I have, I promise not to bully people anymore. It's not fun being scared.\"";
goto L_Close;
L_Wait:
@@ -153,15 +154,13 @@ L_Afraid:
end;
L_Close:
- set @toll, 0;
close;
OnTouch:
- if (FLAGS & FLAG_TUTORIAL_DONE)
- goto L_Close;
+ if ((@hasan_complete) && ((@tutorial == 12) || (@tutorial == 14)))
+ end;
goto L_Main;
}
-
042-1.gat,0,0,0|script|#ScorpionTrigger|35,
{
end;
@@ -170,14 +169,13 @@ OnCommandHasanSpawn:
goto L_Summon;
L_Summon:
- monster "042-1.gat",115,85,"Scorpion",1003,1, "#ScorpionTrigger::OnScorpionDeath";
+ monster "042-1.gat",102,49,"WeakScorpion",1046,1, "#ScorpionTrigger::OnScorpionDeath";
initnpctimer;
end;
L_SummonAgain:
- message strcharinfo(0), "Kaan is mad at you for your interference! He walks over to the edge of the cliff and throws a rock on top of your head, then lets another scorpion run just near Hasan!";
+ message strcharinfo(0), "Kaan is mad at you for your interference! He walks over to the edge of the fence and throws a rock on top of your head, then lets another scorpion run just near Hasan!";
percentheal -100, 0;
- message strcharinfo(0), "Kaan: \"Just go while he is distracted and no one is interfering!\"";
goto L_Summon;
OnTimer5000:
@@ -202,9 +200,7 @@ OnScorpionDeath:
goto L_Clean;
L_TimeOut:
- message strcharinfo(0), "Hasan, with his eyes almost closed, trembling with fear, runs toward the scorpion and stabs it with all his strength! Seems like you took too long and the plan didn't work this time.";
- warp "042-1.gat", 114, 85;
- message strcharinfo(0), "Hasan: \"Hey you! I told you you cannot pass!\"";
+ message strcharinfo(0), "Hasan, with his eyes almost closed, trembling with fear, runs toward the scorpion and stabs it with all his strength!";
goto L_Clean;
L_MessageDeath:
@@ -219,19 +215,3 @@ L_Clean:
stopnpctimer;
end;
}
-
-042-1.gat,117,85,0|script|#warp|45,0,0,
-{
- if (FLAGS & FLAG_TUTORIAL_DONE)
- goto L_Tut;
- goto L_SendBack;
-
-L_SendBack:
- message strcharinfo(0), "Hasan: I can do this all day.";
- warp "042-1.gat", 114, 85;
- end;
-
-L_Tut:
- warp "022-1.gat", 49, 82;
- end;
-}
diff --git a/world/map/npc/042-1/kaan.txt b/world/map/npc/042-1/kaan.txt
index d2ba5877..0d71cee3 100644
--- a/world/map/npc/042-1/kaan.txt
+++ b/world/map/npc/042-1/kaan.txt
@@ -1,12 +1,11 @@
// This file is part of the Tutorial
// Author: Jenalya
-042-1.gat,103,92,0|script|Kaan|160,
+042-1.gat,109,87,0|script|Kaan|160,
{
- if (FLAGS & FLAG_TUTORIAL_DONE) goto L_Tut_Done;
callfunc "TutorialState";
- if (@tutorial == 13) goto L_Hasan_Saved;
- if ($@ScorpionFighter == getcharid(3)) goto L_Run;
+ if ((@hasan_complete) && (@tutorial == 13)) goto L_Hasan_Saved;
+ if (@hasan_complete) goto L_TutDone;
if (@tutorial == 12) goto L_Plan;
if ((@tutorial == 11) && ((@sorfina_hasan) || (@tanisha_hasan))) goto L_TrickKnown;
if (@tutorial == 11) goto L_Trick;
@@ -68,7 +67,7 @@ L_Next:
callfunc "SetTutorialMask";
if (hasan)
menu
- "A guy named Hasan won't let me enter Tulimshar.",L_Hasan,
+ "A guy named Hasan is bullying someone.",L_Hasan,
"Thanks for the advice.",L_Close;
goto L_Out;
@@ -82,7 +81,7 @@ L_Hasan:
mes "[Kaan]";
mes "\"Hello! How are you? Did you already visit Tulimshar?\"";
menu
- "A guy named Hasan won't let me enter Tulimshar.",L_Next1,
+ "A guy named Hasan is bullying someone.",L_Next1,
"Not yet.",L_Close;
L_Next1:
@@ -130,7 +129,7 @@ L_Explain:
mes "I'll watch you from this point.\"";
next;
mes "\"When you give me the sign, I'll throw the scorpion on him.";
- mes "While he's distracted with the scorpion, you can pass.\"";
+ mes "I bet that will show him for the coward he really is.\"";
next;
mes "\"How's that? We can start as soon as you're ready.\"";
goto L_Close;
@@ -145,23 +144,18 @@ L_Plan:
L_Hasan_Saved:
mes "[Kaan]";
- mes "\"I told you to pass when he's distracted, not to fight the scorpion!";
- mes "But maybe Hasan is thankful now?\"";
+ mes "\"You did not to fight the scorpion.";
+ mes "But maybe Hasan is more thankful now?\"";
next;
mes "\"Why don't you talk to him again and see what he says.\"";
goto L_Close;
-L_Tut_Done:
+L_TutDone:
mes "[Kaan]";
mes "\"Hi there. I hope you enjoy your time in Tulimshar.";
mes "Hasan can be a real troublemaker, but it seems like he has calmed down for now.\"";
goto L_Close;
-L_Run:
- mes "[Kaan]";
- mes "\"He's distracted! What are you waiting for?\"";
- goto L_Close;
-
L_Close:
close;
}
diff --git a/world/map/npc/042-1/npcs.txt b/world/map/npc/042-1/liana.txt
index 6eb9972b..6eb9972b 100644
--- a/world/map/npc/042-1/npcs.txt
+++ b/world/map/npc/042-1/liana.txt
diff --git a/world/map/npc/042-1/tutorial.txt b/world/map/npc/042-1/tutorial.txt
new file mode 100644
index 00000000..3129faaa
--- /dev/null
+++ b/world/map/npc/042-1/tutorial.txt
@@ -0,0 +1,10 @@
+// This file is part of the Tutorial
+// Author: Jenalya
+// if you enter the tutorial area, it is set to be already done
+
+042-1.gat,63,47,0|script|#tutorialoutside|45,0,0
+{
+ callfunc "TutorialCompleted";
+ warp "042-2.gat", 114, 92;
+ end;
+}
diff --git a/world/map/npc/042-1/valon.txt b/world/map/npc/042-1/valon.txt
index 35636f94..ab14ad7c 100644
--- a/world/map/npc/042-1/valon.txt
+++ b/world/map/npc/042-1/valon.txt
@@ -1,39 +1,168 @@
// This file is part of the Tutorial
-// Author: Jenalya
+// Author: Jenalya, Wushin
+-|script|#ValonConfig|-1,
+{
+ end;
-042-1.gat,44,115,0|script|Valon|156,1,0
+OnInit:
+ set $@ValonStartBit, (1 << 6);
+ set $@ValonEndBit, (1 << 7);
+ setarray $@ValonMob, 1002,1050,1046,1003;
+ setarray $@ValonMobName$, "Maggots","House Maggots","Tame Scorpions","Scorpion";
+ setarray $@ValonMobCnt, 10,5,3,1;
+ end;
+}
+function|script|ValonState|,
+{
+ set @valon_mob, ((TUTORIAL & NIBBLE_2_MASK) >> NIBBLE_2_SHIFT);
+ set @valon_count, ((TUTORIAL & NIBBLE_3_MASK) >> NIBBLE_3_SHIFT);
+ set @valon_start, (TUTORIAL & $@ValonStartBit);
+ set @valon_end, (TUTORIAL & $@ValonEndBit);
+ return;
+}
+function|script|AddValonMobMask|,
+{
+ set @valon_tmp, (@valon_mob + 1);
+ if (@valon_tmp > 15)
+ set @valon_tmp, 15;
+ set TUTORIAL, (TUTORIAL & ~(NIBBLE_2_MASK) | (@valon_tmp << NIBBLE_2_SHIFT));
+ set @valon_tmp, 0;
+ return;
+}
+function|script|ResetValonCntMask|,
+{
+ set TUTORIAL, (TUTORIAL & ~(NIBBLE_3_MASK) | (0 << NIBBLE_3_SHIFT));
+ return;
+}
+function|script|AddValonCntMask|,
+{
+ set @valon_tmp, (@valon_count + 1);
+ if (@valon_tmp > 15)
+ set @valon_tmp, 15;
+ set TUTORIAL, (TUTORIAL & ~(NIBBLE_3_MASK) | (@valon_tmp << NIBBLE_3_SHIFT));
+ set @valon_tmp, 0;
+ callfunc "ValonProgress";
+ return;
+}
+function|script|ValonProgress|,
+{
+ callfunc "ValonState";
+ if ((@valon_start) && (!(@valon_end)))
+ message strcharinfo(0), $@ValonMobName$[@valon_mob] + ": " + @valon_count + "/" + $@ValonMobCnt[@valon_mob];
+ return;
+}
+042-1.gat,51,111,0|script|ValonDebug|156,
+{
+ mes "[Valon Debug]";
+ mes "Reset?";
+ menu
+ "Yes.", L_Reset,
+ "No.", L_End;
+
+L_Reset:
+ set TUTORIAL, (TUTORIAL & ~(NIBBLE_2_MASK) | (0 << NIBBLE_2_SHIFT));
+ set TUTORIAL, (TUTORIAL & ~(NIBBLE_3_MASK) | (0 << NIBBLE_3_SHIFT));
+ set TUTORIAL, TUTORIAL &~ $@ValonStartBit;
+ set TUTORIAL, TUTORIAL &~ $@ValonEndBit;
+ mes "Reset!";
+ goto L_End;
+
+L_End:
+ end;
+
+OnInit:
+ if (!debug)
+ disablenpc "ValonDebug";
+ end;
+}
+042-1.gat,48,111,0|script|Valon|156,
{
- if (FLAGS & FLAG_TUTORIAL_DONE) goto L_Tut_Done;
+ callfunc "ValonState";
+ if (@valon_end)
+ goto L_QuestComplete;
+ if (!(@valon_start) && (@valon_count))
+ goto L_QuestAskAgain;
+ if (((@valon_start) && (!(@valon_end))) && (@valon_count >= $@ValonMobCnt[@valon_mob]))
+ goto L_NextMob;
+ if ((@valon_start) && (!(@valon_end)))
+ goto L_QuestStarted;
+ goto L_QuestAsk;
+L_QuestAskAgain:
+ mes "[Valon]";
+ mes "\"Hello, Adventurer! Have you come back to help?\"";
+ menu
+ "Yes. I will help with the desert beasts.", L_Accept,
+ "Maybe some other time.", L_NoThanks;
+
+L_QuestAsk:
mes "[Valon]";
mes "\"Hello!";
mes "You're looking for adventures, right?\"";
next;
mes "\"But you shouldn't underestimate this desert, it is dangerous.\"";
next;
- mes "\"It's crawling with scorpions, and the heat has overcome men tougher than you are.\"";
+ mes "\"It's crawling with scorpions, and the heat has overcome adventurers tougher than you are.\"";
next;
- mes "\"If you really want to challenge the desert go to Tulimshar first to prepare yourself.\"";
- close;
+ mes "\"I should know I gaurd this gate from all manner of desert beasts.\"";
+ next;
+ mes "\"Maybe you would like help and earn your stripes?\"";
+ next;
+ mes "\"The Council of Wizard's does offer a reward for helping...\"";
+ menu
+ "YES!!! let me at them!", L_Accept,
+ "Maybe some other time.", L_NoThanks;
+
+L_NoThanks:
+ callfunc "AddValonCntMask";
+ goto L_Close;
+
+L_Accept:
+ callfunc "ResetValonCntMask";
+ set TUTORIAL, TUTORIAL | $@ValonStartBit;
+ goto L_NewMob;
+
+L_NextMob:
+ getexp 40, 0;
+ mes "\"I see you killed all the " + $@ValonMobName$[@valon_mob] + " needed.\"";
+ next;
+ mes "\"The Wizard's thank thee as well.\"";
+ set Zeny, Zeny + 25;
+ next;
+ callfunc "ResetValonCntMask";
+ callfunc "AddValonMobMask";
+ callfunc "ValonState";
+ if (@valon_mob == getarraysize($@ValonMob))
+ goto L_QuestOver;
+ goto L_NewMob;
-L_Tut_Done:
+L_NewMob:
+ mes "\"Let's see whats on the list. Ah ok, I need you to kill me " + $@ValonMobCnt[@valon_mob] + " " + $@ValonMobName$[@valon_mob] + "\"";
+ next;
+ mes "\"I'll be waiting here, come back and see after you've kulled those mobs.\"";
+ goto L_Close;
+
+L_QuestStarted:
mes "[Valon]";
- mes "\"Hello!";
- mes "You're an adventurer, right?\"";
+ mes "Hail adventurer! You are well on your way to mastering the beasts of the desert.\"";
next;
- mes "\"Be careful in the desert.\"";
- close;
+ mes "\"You need to kill " + $@ValonMobName$[@valon_mob] + ": " + @valon_count + "/" + $@ValonMobCnt[@valon_mob] + "\"";
+ next;
+ mes "\"Come back and see me when the job is done.\"";
+ goto L_Close;
-OnTouch:
- if (FLAGS & FLAG_TUTORIAL_DONE)
- goto L_Tut;
- warp "042-1.gat", 44, 110;
+L_QuestOver:
mes "[Valon]";
- mes "\"The desert is merciless.";
- mes "I can't let you leave like this.\"";
- close;
+ mes "\"Thanks once again for helping with the monsters in the desert.\"";
+ getexp 50, 0;
+ set TUTORIAL, TUTORIAL | $@ValonEndBit;
+ goto L_Close;
-L_Tut:
- warp "041-1.gat", 58, 6;
- end;
+L_QuestComplete:
+ mes "[Valon]";
+ mes "\"Thanks once again for helping with the monsters in the desert.\"";
+ goto L_Close;
+
+L_Close:
+ close;
}
diff --git a/world/map/npc/042-1/zegas.txt b/world/map/npc/042-1/zegas.txt
new file mode 100644
index 00000000..d3dc118c
--- /dev/null
+++ b/world/map/npc/042-1/zegas.txt
@@ -0,0 +1,106 @@
+// Barrels
+// Author: Wushin
+// Npc
+042-1.gat,97,75,0|script|Zegas|165,
+{
+ setarray @npc_loc, 97, 75, 2;
+ callfunc "PCtoNPCRange";
+ if (@npc_check)
+ goto L_Range;
+
+ callfunc "CheckBarrelQuest";
+ if (@barrel_quest == 1)
+ goto L_Find;
+ if (@barrel_quest == 2)
+ goto L_Looking;
+ if (@barrel_quest == 3)
+ goto L_QuestEnd;
+ if (@barrel_quest == 4)
+ goto L_Thanks;
+ goto L_Meet;
+
+L_Range:
+ message strcharinfo(0), "Whats that? Come closer I can't hear you.";
+ goto L_Close;
+
+L_Meet:
+ mes "[Zegas]";
+ mes "\"Hey do you have a second?\"";
+ next;
+ mes "\"The storehouse here is over run with house maggots.\"";
+ next;
+ mes "\"Wouldn't you know it, the bug bomb Eomie gave us is in one of the store room barrels.\"";
+ next;
+ mes "\"Can you search the barrels for the bug bomb and set it off when you find it?\"";
+ set TUTORIAL, TUTORIAL | $@ZegasMetBit;
+ menu
+ "Sure.",L_Start,
+ "Maybe some other time.",L_Close;
+
+L_Find:
+ mes "[Zegas]";
+ mes "\"The storehouse is still over run with house maggots.\"";
+ next;
+ mes "\"Please help me find the bug bomb Eomie gave us is in one of the store room barrels?\"";
+ menu
+ "Sure.",L_Start,
+ "Maybe some other time.",L_Close;
+
+L_Start:
+ mes "[Zegas]";
+ set TUTORIAL, TUTORIAL | $@BarrelStartBit;
+ mes "\"Thanks, come back and see me once you found the bug bomb and set it off.\"";
+ goto L_Close;
+
+L_Looking:
+ mes "[Zegas]";
+ mes "\"Still haven't found it? Well keep looking I know it's in there some where.\"";
+ goto L_Close;
+
+L_QuestEnd:
+ mes "[Zegas]";
+ mes "\"From the smell I can see you found the bug bomb!\"";
+ getexp 50, 0;
+ next;
+ mes "\"Thanks once again, I know it's not much but here is 50 GP for your troubles.\"";
+ set Zeny, (Zeny + 50);
+ set TUTORIAL, TUTORIAL | $@BarrelEndBit;
+ goto L_Close;
+
+L_Thanks:
+ mes "[Zegas]";
+ mes "\"Thanks for Helping with clear out the store room!\"";
+ goto L_Close;
+
+L_Close:
+ close;
+}
+042-1.gat,100,75,0|script|ZegasDebug|165,
+{
+ mes "[Zegas Debug]";
+ mes "Reset ?";
+ menu
+ "Yes.", L_Reset,
+ "No.", L_End;
+
+L_Reset:
+ set TUTORIAL, TUTORIAL &~ $@BarrelStartBit;
+ set TUTORIAL, TUTORIAL &~ $@BarrelEndBit;
+ set TUTORIAL, TUTORIAL &~ (1 << 17);
+ set TUTORIAL, TUTORIAL &~ (1 << 18);
+ set TUTORIAL, TUTORIAL &~ (1 << 19);
+ set TUTORIAL, TUTORIAL &~ (1 << 20);
+ set TUTORIAL, TUTORIAL &~ (1 << 21);
+ set TUTORIAL, TUTORIAL &~ (1 << 22);
+ set TUTORIAL, TUTORIAL &~ (1 << 30);
+ mes "Reset!";
+ goto L_End;
+
+L_End:
+ end;
+
+OnInit:
+ if (!debug)
+ disablenpc "ZegasDebug";
+ end;
+}
diff --git a/world/map/npc/042-2/_import.txt b/world/map/npc/042-2/_import.txt
index 45f7ea62..7522e5e2 100644
--- a/world/map/npc/042-2/_import.txt
+++ b/world/map/npc/042-2/_import.txt
@@ -3,6 +3,11 @@
map: 042-2.gat
npc: npc/042-2/_mobs.txt
npc: npc/042-2/_warps.txt
+npc: npc/042-2/barrels.txt
+npc: npc/042-2/barrels_config.txt
+npc: npc/042-2/magic_basement.txt
npc: npc/042-2/mapflags.txt
+npc: npc/042-2/morgan.txt
npc: npc/042-2/sorfina.txt
+npc: npc/042-2/stat_reset.txt
npc: npc/042-2/tanisha.txt
diff --git a/world/map/npc/042-2/_mobs.txt b/world/map/npc/042-2/_mobs.txt
index a423b87a..60ac26d6 100644
--- a/world/map/npc/042-2/_mobs.txt
+++ b/world/map/npc/042-2/_mobs.txt
@@ -1,9 +1,15 @@
// This file is generated automatically. All manually changes will be removed when running the Converter.
// Tulimshar Suburbs Indoor mobs
+042-2.gat,33,57,24,7|monster|HouseMaggot|1050,7,100000,30000,Mob042-2::On1050
042-2.gat,0,0,0|script|Mob042-2|-1,
{
end;
+
+On1050:
+ set @mobID, 1050;
+ callfunc "MobPoints";
+ end;
}
diff --git a/world/map/npc/042-2/_warps.txt b/world/map/npc/042-2/_warps.txt
index 117a0f15..3fa81e27 100644
--- a/world/map/npc/042-2/_warps.txt
+++ b/world/map/npc/042-2/_warps.txt
@@ -4,3 +4,7 @@
042-2.gat,29,62|warp|To Outside|-1,-1,042-1.gat,65,76
042-2.gat,22,93|warp|To Outside|-1,-1,042-1.gat,91,74
042-2.gat,44,93|warp|To Outside|-1,-1,042-1.gat,104,74
+042-2.gat,112,84|warp|To Outside|-1,-1,042-1.gat,62,41
+042-2.gat,94,53|warp|To Outside|-1,-1,042-1.gat,112,94
+042-2.gat,112,53|warp|To Outside|-1,-1,042-1.gat,120,94
+042-2.gat,103,62|warp|To Outside|-1,-1,042-1.gat,117,103
diff --git a/world/map/npc/042-2/barrels.txt b/world/map/npc/042-2/barrels.txt
new file mode 100644
index 00000000..43d4444e
--- /dev/null
+++ b/world/map/npc/042-2/barrels.txt
@@ -0,0 +1,48 @@
+// Barrels
+// Author: Wushin
+// Barrels
+042-2.gat,23,86,0|script|Barrel#0|400,
+{
+ setarray @npc_loc, 23, 86, 2;
+ set @barrel, 0;
+ callfunc "CheckBarrel";
+ end;
+
+OnMaggotDeath:
+ end;
+}
+042-2.gat,28,86,0|script|Barrel#1|400,
+{
+ setarray @npc_loc, 28, 86, 2;
+ set @barrel, 1;
+ callfunc "CheckBarrel";
+ end;
+}
+042-2.gat,31,91,0|script|Barrel#2|400,
+{
+ setarray @npc_loc, 31, 91, 2;
+ set @barrel, 2;
+ callfunc "CheckBarrel";
+ end;
+}
+042-2.gat,36,85,0|script|Barrel#3|400,
+{
+ setarray @npc_loc, 36, 85, 2;
+ set @barrel, 3;
+ callfunc "CheckBarrel";
+ end;
+}
+042-2.gat,40,89,0|script|Barrel#4|400,
+{
+ setarray @npc_loc, 40, 89, 2;
+ set @barrel, 4;
+ callfunc "CheckBarrel";
+ end;
+}
+042-2.gat,38,91,0|script|Barrel#5|400,
+{
+ setarray @npc_loc, 38, 91, 2;
+ set @barrel, 5;
+ callfunc "CheckBarrel";
+ end;
+}
diff --git a/world/map/npc/042-2/barrels_config.txt b/world/map/npc/042-2/barrels_config.txt
new file mode 100644
index 00000000..85c78e41
--- /dev/null
+++ b/world/map/npc/042-2/barrels_config.txt
@@ -0,0 +1,109 @@
+// Barrels
+// Author: Wushin
+042-2.gat,33,88,24,7|monster|HouseMaggot|1050,2,100000,30000,Barrel#0::OnMaggotDeath
+-|script|#BarrelConfig|-1,
+{
+ end;
+
+OnInit:
+ set $@BarrelStartBit, (1 << 16);
+ set $@BarrelEndBit, (1 << 23);
+ set $@ZegasMetBit, (1 << 30);
+ setarray $@BarrelBits, (1 << 17), (1 << 18), (1 << 19), (1 << 20), (1 << 21), (1 << 22);
+ setarray $@BarrelRewards, 533, 507, 505, 518, 537, 526;
+ set $@BarrelSpawnCnt, 1;
+ set $@BarrelSpawnId, 1050;
+ set $@BarrelSpawnName$, "House Maggot";
+ set $@BarrelMax, getarraysize($@BarrelBits);
+ end;
+
+}
+function|script|CheckBarrelQuest|,
+{
+ callfunc "CountBarrels";
+ set @barrel_quest, 0;
+ if (TUTORIAL & $@ZegasMetBit)
+ set @barrel_quest, 1;
+ if (TUTORIAL & $@BarrelStartBit)
+ set @barrel_quest, 2;
+ if (!(TUTORIAL & $@BarrelStartBit) && (@barrel_count))
+ set @barrel_quest, 3;
+ if (TUTORIAL & $@BarrelEndBit)
+ set @barrel_quest, 4;
+ return;
+}
+function|script|CountBarrels|,
+{
+ set @barrel_count, 0;
+ set @barrel_tmp, 0;
+ goto L_Loop;
+
+L_Loop:
+ if (TUTORIAL & $@BarrelBits[@barrel_tmp])
+ goto L_AddOne;
+ goto L_LoopAgain;
+
+L_AddOne:
+ set @barrel_count, (@barrel_count + 1);
+ goto L_LoopAgain;
+
+L_LoopAgain:
+ set @barrel_tmp, (@barrel_tmp + 1);
+ if (@barrel_tmp == getarraysize($@BarrelBits))
+ goto L_BarrelTally;
+ goto L_Loop;
+
+L_BarrelTally:
+ return;
+}
+function|script|CheckBarrel|,
+{
+ callfunc "PCtoNPCRange";
+ if (@npc_check)
+ goto L_Range;
+ callfunc "CheckBarrelQuest";
+ if (!(@barrel_quest))
+ goto L_NoI;
+ if (TUTORIAL & $@BarrelBits[@barrel])
+ goto L_Empty;
+ set TUTORIAL, TUTORIAL | $@BarrelBits[@barrel];
+
+ callfunc "CountBarrels";
+ if (@barrel_count == $@BarrelMax)
+ goto L_QuestReward;
+ set @player_random, rand(@barrel_count * 10);
+ set @barrel_random, rand(@barrel_count * $@BarrelMax);
+ if (@barrel_random > @player_random)
+ goto L_Spawn;
+ goto L_Reward;
+
+L_Range:
+ message strcharinfo(0), "You'll need to get closer.";
+ goto L_Return;
+
+L_NoI:
+ message strcharinfo(0), "Nothing interesting here.";
+ goto L_Return;
+
+L_Empty:
+ message strcharinfo(0), "You've already searched this barrel.";
+ goto L_Return;
+
+L_QuestReward:
+ message strcharinfo(0), "You found the bug bomb.";
+ misceffect 33;
+ set TUTORIAL, TUTORIAL &~ $@BarrelStartBit;
+ killmonster getmap() + ".gat", "Barrel#0::OnMaggotDeath";
+ goto L_Return;
+
+L_Spawn:
+ areamonster getmap() + ".gat", @npc_loc[0], @npc_loc[1], (@npc_loc[0] + 1), (@npc_loc[1] + 1), $@BarrelSpawnName$, $@BarrelSpawnId, $@BarrelSpawnCnt, "Barrel#0::OnMaggotDeath";
+ goto L_Return;
+
+L_Reward:
+ getitem $@BarrelRewards[rand(getarraysize($@BarrelRewards))], 1;
+ goto L_Return;
+
+L_Return:
+ return;
+}
diff --git a/world/map/npc/042-2/magic_basement.txt b/world/map/npc/042-2/magic_basement.txt
new file mode 100644
index 00000000..2f278a5a
--- /dev/null
+++ b/world/map/npc/042-2/magic_basement.txt
@@ -0,0 +1,21 @@
+//
+// Author: Wushin
+
+042-2.gat,103,56,0|script|#MagicBasement|400,0,0,
+{
+ callfunc "MorganState";
+ if (@morgan < 4)
+ goto L_Close;
+ mes "Descend into the basement?";
+ next;
+ menu
+ "Yes.", L_MagicBase,
+ "Nevermind.", L_Close;
+
+L_MagicBase:
+ warp "042-3",24,21;
+ goto L_Close;
+
+L_Close:
+ close;
+}
diff --git a/world/map/npc/042-2/morgan.txt b/world/map/npc/042-2/morgan.txt
new file mode 100644
index 00000000..3ea1a2e8
--- /dev/null
+++ b/world/map/npc/042-2/morgan.txt
@@ -0,0 +1,142 @@
+// Tut mage
+// Author: Wushin
+// Gains Access to Magic School
+// See 024-2 clean that shit up
+// Morgan, liana
+function|script|MorganState|,
+{
+ callfunc "ClearVariables";
+ set @morgan, ((TUTORIAL & NIBBLE_6_MASK) >> NIBBLE_6_SHIFT);
+ return;
+}
+function|script|SetMorganMask|,
+{
+ set TUTORIAL, (TUTORIAL & ~(NIBBLE_6_MASK) | (@morgan_tmp << NIBBLE_6_SHIFT));
+ set @morgan_tmp, 0;
+ return;
+}
+042-2,105,57,0|script|MorganDebug|355,
+{
+ mes "[Morgan Debug]";
+ mes "Reset?";
+ menu
+ "Yes.", L_Reset,
+ "No.", L_End;
+L_Reset:
+ set TUTORIAL, (TUTORIAL & ~(NIBBLE_6_MASK) | (0 << NIBBLE_6_SHIFT));
+ mes "Reset!";
+ goto L_End;
+
+L_End:
+ end;
+
+OnInit:
+ if (!debug)
+ disablenpc "MorganDebug";
+ end;
+}
+042-2,101,57,0|script|Morgan|355,
+{
+ callfunc "MorganState";
+ if (readparam(bInt) >= 5)
+ goto L_Learn;
+ goto L_NotMagic;
+
+L_Learn:
+ if (@morgan == 0)
+ goto L_NotSeen;
+ if (@morgan == 1)
+ goto L_Seen;
+ if (@morgan == 2)
+ goto L_Started;
+ if (@morgan == 3)
+ goto L_CastOnce;
+ if (@morgan == 4)
+ goto L_LearningDone;
+ goto L_Close;
+
+L_NotSeen:
+ set @morgan_tmp, 1;
+ callfunc "SetMorganMask";
+ mes "[Morgan]";
+ mes "\"Welcome to the Magic Insitute of Tulimshar!\"";
+ next;
+ mes "\"My name is Morgan, I'm the Dean of Wizardry.\"";
+ next;
+ mes "\"You appear to have the markings to use magic.\"";
+ next;
+ mes "\"Granted you are still to young to cast spells.\"";
+ next;
+ mes "\"But we can teach you to use simple magic devices.\"";
+ next;
+ mes "\"Would you like to learn some apprentice skills?\"";
+ menu
+ "Yes.", L_Start,
+ "Maybe later", L_Close;
+
+L_Seen:
+ mes "[Morgan]";
+ mes "\"Have you returned to learn some magic?\"";
+ menu
+ "Yes.", L_Start,
+ "Maybe later", L_Close;
+
+L_NotMagic:
+ mes "[Morgan]";
+ mes "\"Hrmm you don't appear to posses enough magical talent to teach.\"";
+ goto L_Close;
+
+L_Start:
+ set @morgan_tmp, 2;
+ callfunc "SetMorganMask";
+ mes "\"Great, lets begin your first lesson.\"";
+ next;
+ getitem 1171, 1;
+ mes "\"This is a wand, there are many like it but this one is now yours.\"";
+ next;
+ mes "\"Various wands and staffs are found throughout the land with many different strengths and weaknesses.\"";
+ next;
+ mes "\"To use the wand you need to have it equipped and speak the incantation to let it tap into your mana.\"";
+ next;
+ mes "\"As the power of your magic grows so will the spells you can cast.\"";
+ next;
+ mes "\"Lets start with a basic wand attack. " + getspellinvocation("wand") + "\"";
+ next;
+ mes "\"Equip the wand and lets try out that spell.\"";
+ next;
+ mes "\"Speak to me again once you've cast the spell.\"";
+ goto L_Close;
+
+L_Started:
+ mes "[Morgan]";
+ mes "\"Lets start with a basic wand attack. " + getspellinvocation("wand") + "\"";
+ next;
+ mes "\"Equip the wand and lets try out that spell.\"";
+ next;
+ mes "\"Speak to me again once you've cast the spell.\"";
+ goto L_Close;
+
+L_CastOnce:
+ mes "[Morgan]";
+ mes "\"Ok, good job! Looks like you have good mana flow.\"";
+ next;
+ mes "\"Onto the next lesson. Now that you have " + getspellinvocation("wand") + " cast,\"";
+ next;
+ mes "\"Each time you attack the wand will convert a bit of you mana into a magic bolt.\"";
+ next;
+ mes "\"After so many attacks, you will need to recast the invocation to stay attuned to the wand.\"";
+ next;
+ mes "\"(Logging out will also cancel any spell effects currently active in-game.).\"";
+ next;
+ set @morgan_tmp, 4;
+ callfunc "SetMorganMask";
+ goto L_Close;
+
+L_LearningDone:
+ mes "[Morgan]";
+ mes "\"I've taught you all I can for now. Come back later.\"";
+ goto L_Close;
+
+L_Close:
+ close;
+}
diff --git a/world/map/npc/042-2/sorfina.txt b/world/map/npc/042-2/sorfina.txt
index 841a667a..4301d124 100644
--- a/world/map/npc/042-2/sorfina.txt
+++ b/world/map/npc/042-2/sorfina.txt
@@ -1,7 +1,33 @@
// This file is part of the Tutorial
// Author: Jenalya
+042-2.gat,21,26,0|script|TutDebug|154,
+{
+ mes "[TutDebug]";
+ mes "Reset?";
+ menu
+ "Yes.",L_Reset,
+ "No.",L_End;
+
+L_Reset:
+ set TUT_var, 0;
+ set @tutorial_tmp, 0;
+ set TUTORIAL, (TUTORIAL & ~(NIBBLE_0_MASK) | (@tutorial_tmp << NIBBLE_0_SHIFT));
+ set TUTORIAL, TUTORIAL &~ $@SorfinaHasanBit;
+ set TUTORIAL, TUTORIAL &~ $@TanishaHasanBit;
+ set TUTORIAL, TUTORIAL &~ $@HasanCompleteBit;
+ set FLAGS, FLAGS &~ FLAG_TUTORIAL_DONE;
+ mes "Reset!";
+ goto L_End;
+
+L_End:
+ end;
-042-2.gat,28,26,0|script|Sorfina|154,4,4
+OnInit:
+ if(!debug)
+ disablenpc "TutDebug";
+ end;
+}
+042-2.gat,28,26,0|script|Sorfina|154,1,4
{
callfunc "TutorialState";
@@ -17,8 +43,8 @@ L_Heal:
goto L_Main;
L_Main:
- if (FLAGS & FLAG_TUTORIAL_DONE) goto L_Again;
if ((@tutorial == 11) && !(@sorfina_hasan)) goto L_Hasan;
+ if (FLAGS & FLAG_TUTORIAL_DONE) goto L_Again;
if (@tutorial >= 4) goto L_Again;
if (@tutorial == 3) goto L_Clothes;
if (@tutorial == 2) goto L_Chest;
@@ -66,7 +92,9 @@ L_Tut:
L_Carpet:
mes "[Sorfina]";
mes "\"Try to take a few steps and walk to that red carpet over there.";
- mes "Just use the arrow keys or click on the place you want to go to.\"";
+ mes "Just use the ###keyMoveUp; to move up, ###keyMoveDown; to move down, ";
+ mes " ###keyMoveLeft; to move left, ###keyMoveRight; to move right ";
+ mes " or click on the place you want to go to.\"";
set @tutorial_tmp, 1;
callfunc "SetTutorialMask";
goto L_Close;
@@ -75,18 +103,18 @@ L_Chest:
mes "[Sorfina]";
mes "\"In that chest there are some clothes you can take.\"";
next;
- mes "\"To interact with things in your environment or talk to NPCs you can either click on it or press N to focus and T to talk/activate.\"";
+ mes "\"To interact with things in your environment or talk to NPCs you can either click on it or press ###keyTargetNPC; to focus and ###keyTalk; to talk/activate.\"";
next;
mes "\"Now get the clothes out of the chest.\"";
goto L_Close;
L_Naked:
mes "[Sorfina]";
- mes "\"Press F3 or click on the Inventory button in the bar at the upper right corner to open your bag.\"";
+ mes "\"Press ###keyWindowInventory; or click on the Inventory button in the bar at the upper right corner to open your bag.\"";
next;
- mes "\"Once we stop talking, click on the clothes and press the equip button.\"";
+ mes "\"Once we stop talking, double-click on the clothes to equip.\"";
next;
- mes "\"Talk to me again after you get dressed. You can either click on me, or press N to focus on me and T to talk.\"";
+ mes "\"Talk to me again after you get dressed. You can either click on me, or press ###keyTargetNPC; to focus on me and ###keyTalk; to talk.\"";
goto L_Close;
L_Clothes:
@@ -136,23 +164,25 @@ L_Explain:
L_Walk:
mes "[Sorfina]";
mes "\"You can use the arrow keys to walk around.";
- mes "Or just click on the place you want to go to.";
- mes "But this only works if that place is reachable and walkable.\"";
+ mes "Just use the ###keyMoveUp; to move up, ###keyMoveDown; to move down, ";
+ mes " ###keyMoveLeft; to move left, ###keyMoveRight; to move right ";
+ mes " or click on the place you want to go to.\"";
+ mes "This only works if that place is reachable and walkable.\"";
goto L_Close;
L_Talk:
mes "[Sorfina]";
mes "\"If you want to talk to a normal person, you can click at him or her.";
- mes "Or you can press N to focus on the nearest person and then press T to talk.\"";
+ mes "Or you can press ###keyTargetNPC; to focus on the nearest person and then press ###keyTalk; to talk.\"";
next;
- mes "\"If you want to talk to other adventurers, press Enter to open your chat window.";
+ mes "\"If you want to talk to other adventurers, press ###keyChat; to open your chat window.";
mes "Then type your message and press Enter to send.\"";
next;
mes "\"You may want to talk privately to another adventurer sometimes. In that case you can whisper.";
- mes "After pressing Enter type '/whisper [name] [message]'.";
+ mes "After pressing ###keyChat; type '/whisper [name] [message]'.";
mes "Or you can right click on someone and choose the whisper option.\"";
next;
- mes "\"Press F7 to show and hide your chat window.\"";
+ mes "\"Press ###keyWindowChat; to show and hide your chat window.\"";
goto L_Close;
L_Items:
@@ -171,16 +201,16 @@ L_Items:
mes "\"Your HitchHikers Towel will return you to your last set soul menhir or here if not set.\"";
mes "\"It can't be used constantly as the magic needs time to power the jump.\"";
next;
- mes "\"Press F3 to open your inventory.";
+ mes "\"Press ###keyWindowInventory; to open your inventory.";
mes "When placing your cursor over an item there, you can see a box with some information about that item.\"";
next;
- mes "\"To use or equip an item, select it by clicking on it.";
- mes "Then press Use or Equip.\"";
+ mes "\"To use or equip an item, select it by double-clicking on it.";
+ mes "Selecting the item then pressing Use or Equip also works.\"";
goto L_Close;
L_Shortcut:
mes "[Sorfina]";
- mes "\"Press F8 or click the Shortcut button in the bar at the upper right to open your shortcut window.\"";
+ mes "\"Press ###keyOutfitShortcut1; or click the Shortcut button in the bar at the upper right to open your shortcut window.\"";
next;
mes "\"You can select the item you want to put on a shortcut with your mouse and then click on the position in the shortcut window you want to place it.\"";
next;
@@ -207,7 +237,7 @@ L_Hasan:
mes "[Sorfina]";
mes "\"Make yourself at home! Do you have any questions?\"";
menu
- "A guy named Hasan won't let me enter Tulimshar.",L_Next,
+ "A guy named Hasan is bullying people.",L_Next,
"Yes, could you explain again about...",L_Explain,
"No, thanks.",L_Close;
@@ -291,7 +321,7 @@ OnTouch:
close;
}
-042-2.gat,27,23,0|script|Chest#tutorial|111,
+042-2.gat,29,23,0|script|Chest#tutorial|111,
{
callfunc "TutorialState";
if (@tutorial > 2) goto L_Empty;
@@ -320,7 +350,7 @@ L_Empty:
close;
}
-042-2.gat,44,31,0|script|#DoorOut-@tutorial|45,0,0
+042-2.gat,44,31,0|script|#DoorOutTut1|45,0,0
{
end;
@@ -328,7 +358,7 @@ OnTouch:
callfunc "TutorialState";
if ((@tutorial < 4) && !(FLAGS & FLAG_TUTORIAL_DONE))
goto L_Block;
- warp "042-1.gat", 63, 49;
+ warp "042-1.gat", 51, 44;
end;
L_Block:
diff --git a/world/map/npc/042-2/stat_reset.txt b/world/map/npc/042-2/stat_reset.txt
new file mode 100644
index 00000000..c033fcb2
--- /dev/null
+++ b/world/map/npc/042-2/stat_reset.txt
@@ -0,0 +1,42 @@
+//
+
+042-2.gat,98,91,0|script|Jessie|159,
+{
+ if (BaseLevel >= 10)
+ goto L_Sorry;
+
+ mes "[Jessie]";
+ mes "\"I know a spell that will";
+ mes "reset status points on the youngings.";
+ next;
+ menu
+ "Reset my stats",L_Reset,
+ "Forget about it",L_Pass;
+
+L_Reset:
+ resetstatus;
+
+ mes "[Jessie]";
+ mes "\"There you are.";
+ mes "";
+ mes "Good as new!\"";
+ goto L_Close;
+
+L_Pass:
+ mes "[Jessie]";
+ mes "\"Very well then, see you.\"";
+ goto L_Close;
+
+L_Sorry:
+ mes "[Jessie]";
+ mes "\"My spell only works on the very young, sorry.\"";
+ next;
+ mes "\"You can always try Mailvox in the Noble Quarter.\"";
+ next;
+ mes "\"Head east through the docks, then south into North Tulimshar,";
+ mes "Then go north east into the Noble Quarter, sitting behind a stall in the east.\"";
+ goto L_Close;
+
+L_Close:
+ close;
+}
diff --git a/world/map/npc/042-2/tanisha.txt b/world/map/npc/042-2/tanisha.txt
index 482224f0..fb67989d 100644
--- a/world/map/npc/042-2/tanisha.txt
+++ b/world/map/npc/042-2/tanisha.txt
@@ -2,15 +2,15 @@
// Authors: Jenalya, alastrim
// Cleanup: o11c
-042-2.gat,37,90,0|script|Tanisha|114,
+042-2.gat,110,88,0|script|Tanisha|114,
{
- if (isin("042-2.gat", 30, 85, 36, 89))
+ if (isin("042-2.gat", 98, 84, 106, 89))
goto L_Fighting;
- if (FLAGS & FLAG_TUTORIAL_DONE) goto L_Tut_Done;
callfunc "TutorialState";
if ((@tutorial == 11) && !(@tanisha_hasan)) goto L_Hasan;
+ if (FLAGS & FLAG_TUTORIAL_DONE) goto L_Tut_Done;
if (@tutorial >= 8) goto L_Again;
if (@tutorial == 7) goto L_Stats;
if (@tutorial == 6) goto L_Fail;
@@ -42,8 +42,7 @@ L_Maggots:
mes "\"If you kill them, I'll give you my knife.";
mes "What do you say?\"";
menu
- "Sure!",L_Next1,
- "That's your job.",L_Close;
+ "I guess it's the least I can do.",L_Next1;
L_Next1:
mes "[Tanisha]";
@@ -51,7 +50,7 @@ L_Next1:
// since the check happens here, it is actually possible to have
// more than $@Maggot_MaxHunters in the area at one time
// but that's not a BIG problem
- if (getareausers("042-2.gat", 30, 85, 36, 89) >= $@Maggot_MaxHunters)
+ if (getareausers("042-2.gat", 98, 84, 106, 89) >= $@Maggot_MaxHunters)
goto L_Crowded;
next;
goto L_Fight_Again;
@@ -60,14 +59,14 @@ L_Fight_Again:
mes "\"Ok, listen what to do.";
mes "Equip a weapon and kill the maggots.\"";
next;
- mes "\"Press A to focus on a monster. With X you can focus and start attacking the same time.";
+ mes "\"Press A to focus on a monster. With ###keyTargetAttack; you can focus and start attacking the same time.";
mes "But it also works to click on the monster with your mouse.\"";
next;
- mes "\"If you press the left Shift button, you can abort your attack.\"";
+ mes "\"If you press the ###keyTarget;, you can abort your attack.\"";
next;
mes "\"Maggots aren't aggressive, so they won't harm you until you attack them first. Take them out one by one.\"";
next;
- mes "\"Sometimes dead monsters leave some useful things. You can pick them up by pressing Z or clicking on the items with your mouse.\"";
+ mes "\"Sometimes dead monsters leave some useful things. You can pick them up by pressing ###keyPickup; or clicking on the items with your mouse.\"";
close2;
// The getitem must be in the same place as set @tutorial, 2;
// since it was moved to after L_Fight_Again, add it conditionally
@@ -87,13 +86,13 @@ L_ContinueFight:
callfunc "SetTutorialMask";
set @Maggot_Kills, 0;
set @time, 0;
- if (getareausers("042-2.gat", 30, 85, 36, 89) == 0)
+ if (getareausers("042-2.gat", 98, 84, 106, 89) == 0)
initnpctimer;
- warp "042-2.gat", 33, 87;
+ warp "042-2.gat", 101, 87;
goto L_Summon;
L_Summon:
- areamonster "042-2.gat", 30, 85, 36, 89, "", 1002, 1, "Tanisha::OnMaggotDeath";
+ areamonster "042-2.gat", 98, 84, 106, 89, "", 1002, 1, "Tanisha::OnMaggotDeath";
end;
L_Stats:
@@ -103,7 +102,13 @@ L_Stats:
mes "\"And it seems you became stronger and more experienced.";
mes "That means you got some status points which you can use to increase your abilities.\"";
next;
- mes "\"Press F2 or click the Status button in the bar at the upper right to see your status window. There you can distribute your points on six different properties.\"";
+ mes "\"Press ###keyWindowStatus; or click the Status button in the bar at the upper right to see your status window. There you can distribute your points on six different properties.\"";
+ next;
+ mes "\"My Uncle sitting at the counter knows a spell to help the younglings reset their stats.\"";
+ next;
+ mes "\"He also knows of mages with even more powerful reset spells.\"";
+ next;
+ mes "\"Some strange wizard lurking around in the Tulimshar Noble Quarter.\"";
next;
goto L_StatsRe;
@@ -123,7 +128,12 @@ L_StatsRe:
next;
mes "\"Think about how you want to play before assigning the points.\"";
next;
- mes "\"Also I heard rumors about a strange guy lurking around in the desert south of Tulimshar who can help you to forget your abilities!\"";
+ mes "\"My Uncle sitting at the counter knows a spell to help the younglings reset their stats.\"";
+ next;
+ mes "\"He also knows of mages with even more powerful reset spells.\"";
+ next;
+ mes "\"Some strange wizard lurking around in the Tulimshar Noble Quarter.\"";
+ next;
mes "Tanisha looks at you with wide opened eyes.";
next;
mes "[Tanisha]";
@@ -153,6 +163,7 @@ L_Advice:
L_SetTutorial:
set @tutorial_tmp, 8;
callfunc "SetTutorialMask";
+ callfunc "TutorialCompleted";
goto L_Close;
L_Again:
@@ -172,14 +183,14 @@ L_Explain:
L_Fight:
mes "[Tanisha]";
- mes "\"Press A to focus on a monster. With X you can focus and attack.";
+ mes "\"Press ###keyTargetMonster; to focus on a monster. With ###keyTargetAttack; you can focus and attack.";
mes "But it also works to click on the monster with your mouse.\"";
next;
- mes "\"If you press the left Shift button, you can abort your attack.\"";
+ mes "\"If you press the ###keyTarget; button, you can abort your attack.\"";
next;
- mes "\"Sometimes dead monsters leave some useful things. You can pick them up with pressing Z or clicking on the items with your mouse.\"";
+ mes "\"Sometimes dead monsters leave some useful things. You can pick them up with pressing ###keyPickup; or clicking on the items with your mouse.\"";
next;
- mes "\"If you feel exhausted from battle you can sit down by pressing S to recover faster.\"";
+ mes "\"If you feel exhausted from battle you can sit down by pressing ###keyBeingSit; to recover faster.\"";
goto L_Close;
L_Mob:
@@ -198,7 +209,7 @@ L_Hasan:
mes "[Tanisha]";
mes "\"Hi there! Is everything alright? Do you have questions?\"";
menu
- "A guy named Hasan won't let me enter Tulimshar.",L_Next3,
+ "A guy named Hasan is being mean.",L_Next3,
"Yes, could you explain again about...",L_Explain,
"No, thanks.",L_Close;
@@ -233,7 +244,7 @@ L_Crowded:
goto L_Close;
L_Sleep:
- warp "042-2.gat", 36, 90;
+ warp "042-2.gat", 101, 87;
mes "[Tanisha]";
mes "\"What are you doing in there?";
mes "Sleeping?";
@@ -241,7 +252,7 @@ L_Sleep:
set @Maggot_Kills, 0;
set @time, 0;
close2;
- if (getareausers("042-2.gat", 30, 85, 36, 89) == 0)
+ if (getareausers("042-2.gat", 98, 84, 106, 89) == 0)
goto L_CleanUp;
end;
@@ -259,7 +270,7 @@ L_Fail:
"No, I need a rest.", L_Close;
L_Next2:
- if (getareausers("042-2.gat", 30, 85, 36, 89) >= $@Maggot_MaxHunters)
+ if (getareausers("042-2.gat", 98, 84, 106, 89) >= $@Maggot_MaxHunters)
goto L_Crowded;
goto L_Fight_Again;
@@ -269,17 +280,17 @@ L_Fighting:
OnTimer1000:
setnpctimer 0;
- if (getareausers("042-2.gat", 30, 85, 36, 89) == 0)
+ if (getareausers("042-2.gat", 98, 84, 106, 89) == 0)
goto L_CleanUp;
// This is needed because multiple players can be in the area at once
- areatimer "042-2.gat", 30, 85, 36, 89, 0, "Tanisha::OnTick";
+ areatimer "042-2.gat", 98, 84, 106, 89, 0, "Tanisha::OnTick";
end;
L_CleanUp:
killmonster "042-2.gat", "Tanisha::OnMaggotDeath";
set $@Maggot_Hunters, 0;
stopnpctimer;
- areamonster "042-2.gat", 30, 85, 36, 89, "", 1002, 1, "Tanisha::OnMaggotDeath";
+ areamonster "042-2.gat", 98, 84, 106, 89, "", 1002, 1, "Tanisha::OnMaggotDeath";
end;
OnTick:
@@ -301,17 +312,17 @@ OnMaggotDeath:
message strcharinfo(0), "Tanisha: Ohh... Irrhk... Eeeeww... They just appear from nowhere!";
if (@Maggot_Kills == 3)
message strcharinfo(0), "Tanisha: Yuck... I think I am getting sick.";
- if (isin("042-2.gat", 30, 85, 36, 89))
+ if (isin("042-2.gat", 98, 84, 106, 89))
set @Maggot_Kills, @Maggot_Kills + 1;
if (@Maggot_Kills < 5)
goto L_Summon;
// else, complete
- warp "042-2.gat", 36, 90;
+ warp "042-2.gat", 110, 88;
set @tutorial_tmp, 7;
callfunc "SetTutorialMask";
set @Maggot_Kills, 0;
set @time, 0;
- if (getareausers("042-2.gat", 30, 85, 36, 89) == 0)
+ if (getareausers("042-2.gat", 98, 84, 106, 89) == 0)
goto L_CleanUp;
end;
@@ -321,6 +332,22 @@ L_Close:
OnInit:
set $@Maggot_MaxHunters, 4;
- areamonster "042-2.gat", 30, 85, 36, 89, "", 1002, 1, "Tanisha::OnMaggotDeath";
+ areamonster "042-2.gat", 98, 84, 106, 89, "", 1002, 1, "Tanisha::OnMaggotDeath";
end;
}
+042-2.gat,114,93,0|script|#DoorOutTut2|45,0,0
+{
+ end;
+
+OnTouch:
+ callfunc "TutorialState";
+ if (!(FLAGS & FLAG_TUTORIAL_DONE))
+ goto L_Block;
+ warp "042-1.gat", 63, 48;
+ end;
+
+L_Block:
+ message strcharinfo(0), "Tanisha: Please come here. I'd like some help!";
+ end;
+}
+
diff --git a/world/map/npc/042-3/_import.txt b/world/map/npc/042-3/_import.txt
new file mode 100644
index 00000000..2bc1c9d9
--- /dev/null
+++ b/world/map/npc/042-3/_import.txt
@@ -0,0 +1,5 @@
+// Map 042-3: Mages Passage
+// This file is generated automatically. All manually changes will be removed when running the Converter.
+map: 042-3.gat
+npc: npc/042-3/_mobs.txt
+npc: npc/042-3/_warps.txt
diff --git a/world/map/npc/042-3/_mobs.txt b/world/map/npc/042-3/_mobs.txt
new file mode 100644
index 00000000..391df0f2
--- /dev/null
+++ b/world/map/npc/042-3/_mobs.txt
@@ -0,0 +1,9 @@
+// This file is generated automatically. All manually changes will be removed when running the Converter.
+// Mages Passage mobs
+
+
+
+042-3.gat,0,0,0|script|Mob042-3|-1,
+{
+ end;
+}
diff --git a/world/map/npc/042-3/_warps.txt b/world/map/npc/042-3/_warps.txt
new file mode 100644
index 00000000..30b4e137
--- /dev/null
+++ b/world/map/npc/042-3/_warps.txt
@@ -0,0 +1,5 @@
+// This file is generated automatically. All manually changes will be removed when running the Converter.
+// Mages Passage warps
+
+042-3.gat,57,46|warp|To Tulimshar Canyon|2,-1,024-1.gat,80,31
+042-3.gat,24,20|warp|To Magic Insitute of Tulimshar|-1,-1,042-2.gat,103,55
diff --git a/world/map/npc/068-1/tombstones.txt b/world/map/npc/068-1/tombstones.txt
index 424e0317..2b0542a2 100644
--- a/world/map/npc/068-1/tombstones.txt
+++ b/world/map/npc/068-1/tombstones.txt
@@ -1,34 +1,39 @@
// Tombstones in Noble memorial
-068-1.gat,91,48,0|script|Tombstone#1|400,{
+068-1.gat,91,48,0|script|Tombstone#1|400,
+{
mes "~ wushin ~";
mes "Tonori swallowed him whole.";
close;
}
-068-1.gat,92,48,0|script|Tombstone#2|400,{
+068-1.gat,92,48,0|script|Tombstone#2|400,
+{
mes "~ Nard ~";
mes "Crushed by a loom.";
close;
}
-068-1.gat,93,48,0|script|Tombstone#3|400,{
+068-1.gat,93,48,0|script|Tombstone#3|400,
+{
mes "~ tux9th ~";
mes "Eaten by bugs.";
close;
}
-068-1.gat,94,48,0|script|Tombstone#4|400,{
+068-1.gat,94,48,0|script|Tombstone#4|400,
+{
mes "~ o11c ~";
mes "He asked for it. So they gave it to him.";
close;
}
-068-1.gat,95,48,0|script|Tombstone#5|400,{
+068-1.gat,95,48,0|script|Tombstone#5|400,
+{
mes "~ " + strcharinfo(0) + " ~";
mes "The tombstone is blank and the grave freshly dug.";
diff --git a/world/map/npc/_import.txt b/world/map/npc/_import.txt
index 0972b191..dc144a18 100644
--- a/world/map/npc/_import.txt
+++ b/world/map/npc/_import.txt
@@ -105,6 +105,7 @@ import: npc/036-2/_import.txt
import: npc/041-1/_import.txt
import: npc/042-1/_import.txt
import: npc/042-2/_import.txt
+import: npc/042-3/_import.txt
import: npc/043-1/_import.txt
import: npc/043-3/_import.txt
import: npc/043-4/_import.txt
diff --git a/world/map/npc/annuals/fathertime.txt b/world/map/npc/annuals/fathertime.txt
index bedf23f6..40af55ff 100644
--- a/world/map/npc/annuals/fathertime.txt
+++ b/world/map/npc/annuals/fathertime.txt
@@ -1,7 +1,7 @@
// Annual Timer
// One timer to check to enable all holiday events
-botcheck.gat,26,28,0|script|#HolidayConfig|-1,
+017-9.gat,26,28,0|script|#HolidayConfig|-1,
{
end;
diff --git a/world/map/npc/annuals/xmas/debug.txt b/world/map/npc/annuals/xmas/debug.txt
index d51f57ac..38bbdf15 100644
--- a/world/map/npc/annuals/xmas/debug.txt
+++ b/world/map/npc/annuals/xmas/debug.txt
@@ -228,7 +228,7 @@ L_End:
}
-botcheck.gat,26,28,0|script|XmasDebug#5|105,
+017-9.gat,31,24,0|script|XmasDebug#5|105,
{
if(getgmlevel() < 40)
goto L_End;
diff --git a/world/map/npc/botcheck/_import.txt b/world/map/npc/botcheck/_import.txt
index affc86ce..d2a6a9e1 100644
--- a/world/map/npc/botcheck/_import.txt
+++ b/world/map/npc/botcheck/_import.txt
@@ -3,5 +3,4 @@
map: botcheck.gat
npc: npc/botcheck/_mobs.txt
npc: npc/botcheck/_warps.txt
-npc: npc/botcheck/announcements.txt
npc: npc/botcheck/mapflags.txt
diff --git a/world/map/npc/botcheck/mapflags.txt b/world/map/npc/botcheck/mapflags.txt
index b4dbac8a..cce971d6 100644
--- a/world/map/npc/botcheck/mapflags.txt
+++ b/world/map/npc/botcheck/mapflags.txt
@@ -1 +1,2 @@
botcheck.gat|mapflag|resave|botcheck.gat,37,37
+botcheck.gat|mapflag|nosave|botcheck.gat,37,37
diff --git a/world/map/npc/functions/clear_vars.txt b/world/map/npc/functions/clear_vars.txt
index b83ea630..a0c5e787 100644
--- a/world/map/npc/functions/clear_vars.txt
+++ b/world/map/npc/functions/clear_vars.txt
@@ -10,6 +10,8 @@ function|script|ClearVariables|,
L_SetAllTut:
if (FLAGS & FLAG_TUTORIAL_DONE)
goto L_ResetAllTut;
+ if ((FLAGS & FLAG_TUTORIAL_DONE) && (!(TUTORIAL & $@HasanCompleteBit)))
+ set TUTORIAL, TUTORIAL | $@HasanCompleteBit;
set @tutorial_tmp, (sorfina + tanisha + hasan + kaan);
set TUTORIAL, (TUTORIAL & ~(NIBBLE_0_MASK) | (@tutorial_tmp << NIBBLE_0_SHIFT));
set @tutorial_tmp, 0;
diff --git a/world/map/npc/functions/debug.txt b/world/map/npc/functions/debug.txt
index 9918cbaf..b4a66314 100755
--- a/world/map/npc/functions/debug.txt
+++ b/world/map/npc/functions/debug.txt
@@ -956,7 +956,7 @@ OnInit:
end;
}
-botcheck.gat,50,28,0|script|Debug4|154,
+017-9.gat,21,24,0|script|Debug4|154,
{
callfunc "Debug";
end;
diff --git a/world/map/npc/functions/default_npc_checks.txt b/world/map/npc/functions/default_npc_checks.txt
index 4ddd00ca..efe8818b 100644
--- a/world/map/npc/functions/default_npc_checks.txt
+++ b/world/map/npc/functions/default_npc_checks.txt
@@ -3,16 +3,16 @@
// Range
// Map, X, Y, Distance in Tiles
-// setarray $@npc_loc, 24, 113, 4;
+// setarray @npc_loc, 24, 113, 4;
function|script|PCtoNPCRange|,
{
set @npc_check, 0;
- set $@Nmap$, getmap() + ".gat";
- set $@Nx1, ($@npc_loc[0] - $@npc_loc[2]);
- set $@Ny1, ($@npc_loc[1] - $@npc_loc[2]);
- set $@Nx2, ($@npc_loc[0] + $@npc_loc[2]);
- set $@Ny2, ($@npc_loc[1] + $@npc_loc[2]);
- if (isin($@Nmap$, $@Nx1, $@Ny1, $@Nx2, $@Ny2))
+ set @Nmap$, getmap() + ".gat";
+ set @Nx1, (@npc_loc[0] - @npc_loc[2]);
+ set @Ny1, (@npc_loc[1] - @npc_loc[2]);
+ set @Nx2, (@npc_loc[0] + @npc_loc[2]);
+ set @Ny2, (@npc_loc[1] + @npc_loc[2]);
+ if (isin(@Nmap$, @Nx1, @Ny1, @Nx2, @Ny2))
goto L_Return;
set @npc_check, 1;
goto L_Return;
@@ -22,9 +22,9 @@ L_Return:
}
// Inventory & Weight
-// setarray @delitem_names$ Items to delete
+// @delitem_ids Items to delete
// @delitem_counts Counts of Items to delete
-// @getitem_names$ Items to get
+// @getitem_ids Items to get
// @getitem_counts Counts of Items to get
function|script|CheckInventory|,
{
@@ -33,78 +33,90 @@ function|script|CheckInventory|,
set @delitem_loop, 0;
set @getitem_loop, 0;
set @check_fail, 0;
+ set @msg_loop, 0;
- if (getarraysize(@delitem_names$))
+ if (getarraysize(@delitem_ids))
goto L_DelItemsLoop;
goto L_CheckGet;
L_DelItemsLoop:
- if(countitem(@delitem_names$[@delitem_loop]) >= @delitem_counts[@delitem_loop])
+ if(countitem(@delitem_ids[@delitem_loop]) >= @delitem_counts[@delitem_loop])
goto L_DelLoopAgain;
goto L_ReturnMissing;
L_DelLoopAgain:
- if((@delitems_loop + 1) == getarraysize(@delitems_names$))
+ set @delitem_loop, (@delitem_loop + 1);
+ if(@delitem_loop == getarraysize(@delitem_ids))
goto L_CheckGet;
- set @delitems_loop, (@delitems_loop + 1);
goto L_DelItemsLoop;
L_CheckGet:
- if (getarraysize(@getitem_names$))
+ if (getarraysize(@getitem_ids))
goto L_CheckWeight;
goto L_DelCheck;
L_CheckWeight:
getinventorylist;
- if (@inventorylist_count < (101 - getarraysize(@getitem_names$)))
+ if (100 < (@inventorylist_count + getarraysize(@getitem_ids)))
goto L_ReturnSpace;
goto L_GetItemsLoop;
L_GetItemsLoop:
- if (checkweight(@getitem_names$, 1) == 0)
+ if (checkweight(@getitem_ids[@getitem_loop], @getitem_counts[@getitem_loop]))
goto L_GetLoopAgain;
goto L_ReturnWeight;
L_GetLoopAgain:
- if((@getitems_loop + 1) == getarraysize(@getitems_names$))
+ set @getitem_loop, (@getitem_loop + 1);
+ if(@getitem_loop == getarraysize(@getitem_ids))
goto L_DelCheck;
- set @getitems_loop, (@getitems_loop + 1);
goto L_GetItemsLoop;
L_DelCheck:
- if (getarraysize(@delitem_names$))
+ if (getarraysize(@delitem_ids))
goto L_DelLoop;
goto L_CheckGet2;
L_DelLoop:
- delitem @delitem_names$[@del_loop], @delitem_counts[@del_loop];
+ delitem @delitem_ids[@del_loop], @delitem_counts[@del_loop];
goto L_DelAgain;
L_DelAgain:
- if((@del_loop + 1) == getarraysize(@delitems_names$))
- goto L_GetLoop;
set @del_loop, (@del_loop + 1);
+ if(@del_loop == getarraysize(@delitem_ids))
+ goto L_GetLoop;
goto L_DelLoop;
L_CheckGet2:
- if (getarraysize(@getitem_names$))
+ if (getarraysize(@getitem_ids))
goto L_GetLoop;
goto L_Return;
L_GetLoop:
- getitem @getitem_names$[@get_loop], @getitem_counts[@get_loop];
+ misceffect FX_GETITEM, strcharinfo(0);
+ getitem @getitem_ids[@get_loop], @getitem_counts[@get_loop];
goto L_GetAgain;
L_GetAgain:
- if((@get_loop + 1) == getarraysize(@getitems_names$))
- goto L_Return;
set @get_loop, (@get_loop + 1);
+ if(@get_loop == getarraysize(@getitem_ids))
+ goto L_Return;
goto L_GetLoop;
L_ReturnMissing:
- mes "\"You are missing required items.\"";
set @check_fail, 1;
- goto L_Return;
+ mes "\"You are missing required items.\"";
+ goto L_MissingMsg;
+
+L_MissingMsg:
+ mes "[@@"+@delitem_ids[@msg_loop]+"|"+getitemname(@delitem_ids[@msg_loop])+"@@] "+countitem(getitemname(@delitem_ids[@msg_loop]))+"/"+@delitem_counts[@msg_loop];
+ goto L_NextMsgCheck;
+
+L_NextMsgCheck:
+ set @msg_loop, (@msg_loop + 1);
+ if(@msg_loop == getarraysize(@delitem_ids))
+ goto L_Return;
+ goto L_MissingMsg;
L_ReturnWeight:
mes "\"You need to be carrying less weight.\"";
@@ -119,7 +131,9 @@ L_ReturnSpace:
goto L_Return;
L_Return:
- cleararray @delitem_names$, "", getarraysize(@delitem_names$);
- cleararray @getitem_names$, "", getarraysize(@getitem_names$);
+ cleararray @delitem_ids, "", getarraysize(@delitem_ids);
+ cleararray @delitem_counts, "", getarraysize(@delitem_counts);
+ cleararray @getitem_ids, "", getarraysize(@getitem_ids);
+ cleararray @getitem_counts, "", getarraysize(@getitem_counts);
return;
}
diff --git a/world/map/npc/functions/ferry.txt b/world/map/npc/functions/ferry.txt
index 271a2e39..c2e92271 100644
--- a/world/map/npc/functions/ferry.txt
+++ b/world/map/npc/functions/ferry.txt
@@ -1,6 +1,6 @@
// The ferry system
-botcheck.gat,27,28,0|script|#FerryConfig|-1,
+017-9.gat,27,28,0|script|#FerryConfig|-1,
{
end;
diff --git a/world/map/npc/functions/gm_island.txt b/world/map/npc/functions/gm_island.txt
new file mode 100644
index 00000000..cae9bdb0
--- /dev/null
+++ b/world/map/npc/functions/gm_island.txt
@@ -0,0 +1,64 @@
+// Add Localized Warp in town centers and Message to GM Island
+-|script|#GmConfig|-1,
+{
+ end;
+
+OnInit:
+ disablenpc "Gm Event#1";
+ disablenpc "Gm Event#2";
+ disablenpc "Gm Event#3";
+ end;
+}
+function|script|GmWarp|,
+{
+ warp "028-1", 110, 30;
+ return;
+}
+function|script|GmDebug|,
+{
+ if (getgmlevel() < 60)
+ goto L_Return;
+ goto L_Main;
+
+L_Main:
+ mes "[Gm Debug]";
+ mes "What do you want to do?";
+ menu
+ "Start Event.", L_GmStart,
+ "Stop Event.", L_GmStop;
+
+L_GmStart:
+ enablenpc "Gm Event#1";
+ enablenpc "Gm Event#2";
+ enablenpc "Gm Event#3";
+ goto L_Return;
+
+L_GmStop:
+ disablenpc "Gm Event#1";
+ disablenpc "Gm Event#2";
+ disablenpc "Gm Event#3";
+ goto L_Return;
+
+L_Return:
+ return;
+}
+017-9.gat,32,21,0|script|Gm Event Debug|368,
+{
+ callfunc "GmDebug";
+ close;
+}
+001-1.gat,49,68,0|script|Gm Event#1|368,0,0,
+{
+ callfunc "GmWarp";
+ end;
+}
+009-1.gat,46,30,0|script|Gm Event#2|368,0,0,
+{
+ callfunc "GmWarp";
+ end;
+}
+020-1.gat,67,89,0|script|Gm Event#3|368,0,0,
+{
+ callfunc "GmWarp";
+ end;
+}
diff --git a/world/map/npc/functions/mob_points.txt b/world/map/npc/functions/mob_points.txt
index fd9729de..eb5aeff7 100644
--- a/world/map/npc/functions/mob_points.txt
+++ b/world/map/npc/functions/mob_points.txt
@@ -137,13 +137,22 @@ function|script|MobPoints|,
if (MPQUEST == 1)
set Mobpt, Mobpt + @points[@mobID - 1002];
+ callfunc "ValonState";
+ if (((@valon_start) && (!(@valon_end))) && (@mobID == $@ValonMob[@valon_mob]))
+ goto L_ValonMobKill;
+ goto L_NatureKarma;
+
+L_ValonMobKill:
+ callfunc "AddValonCntMask";
+ goto L_NatureKarma;
+
+L_NatureKarma:
// Scorpion, Red Scorpion, Black Scorpion, Angry Scorpion
// DemonicMouboo, ViciousSquirrel, WickedMushroom, Bluepar
if ((@mobID == 1003) || (@mobID == 1004) || (@mobID == 1009) || (@mobID == 1057)
|| (@mobID == 1104) || (@mobID == 1105) || (@mobID == 1106) || (@mobID == 1107))
goto L_good;
-
// Attitude adjustment for the witch (can we refactor this to another function? Not sure about max. recursion depth)
set @value, 0;
diff --git a/world/map/npc/functions/travelers.txt b/world/map/npc/functions/travelers.txt
index 7aa0d4b1..e455eb74 100644
--- a/world/map/npc/functions/travelers.txt
+++ b/world/map/npc/functions/travelers.txt
@@ -6,7 +6,7 @@
// Costs Zeny
// Contains all warp points to find
-botcheck.gat,27,28,0|script|#TravelConfig|-1,
+017-9.gat,27,28,0|script|#TravelConfig|-1,
{
end;
diff --git a/world/map/npc/items/check_wand.txt b/world/map/npc/items/check_wand.txt
new file mode 100644
index 00000000..1b11dfc2
--- /dev/null
+++ b/world/map/npc/items/check_wand.txt
@@ -0,0 +1,65 @@
+// Wands
+// Author: Wushin
+function|script|WandMana|,
+{
+ callfunc "CheckWand";
+ set @WandCost, (@Wand * ((MaxSp / 10) + 2));
+ set @WandAttack, 0;
+ if (!(@Wand))
+ goto L_NoWand;
+ if (Sp >= @WandCost)
+ goto L_Attack;
+ goto L_LowSp;
+
+L_Attack:
+ set Sp, (Sp - @WandCost);
+ set @WandAttack, 1;
+ goto L_Return;
+
+L_NoWand:
+ message strcharinfo(0), "You need a wand Equipped!";
+ set @WandAttack, 0;
+ goto L_Return;
+
+L_LowSp:
+ message strcharinfo(0), "Out of Mana";
+ set @WandAttack, 0;
+ goto L_Return;
+
+L_Return:
+ return;
+}
+function|script|CheckWand|,
+{
+ setarray $@Wands, 758, 1171;
+ setarray $@WandsPwr, 2, 1;
+ set @Wand, 0;
+ set @wand_loop, 0;
+ goto L_Loop;
+
+L_Loop:
+ if ((getequipid(equip_hand1) == $@Wands[@wand_loop]) || (getequipid(equip_hand2) == $@Wands[@wand_loop]))
+ goto L_SetWand;
+ goto L_LoopAgain;
+
+L_SetWand:
+ set @Wand, $@WandsPwr[@wand_loop];
+ callfunc "MorganState";
+ if (@morgan == 2)
+ goto L_SetCastOnce;
+ goto L_Return;
+
+L_LoopAgain:
+ set @wand_loop, (@wand_loop + 1);
+ if (@wand_loop >= getarraysize($@Wands))
+ goto L_Return;
+ goto L_Loop;
+
+L_SetCastOnce:
+ set @morgan_tmp, 3;
+ callfunc "SetMorganMask";
+ goto L_Return;
+
+L_Return:
+ return;
+}
diff --git a/world/map/npc/items/unequipcb.txt b/world/map/npc/items/unequipcb.txt
index 10080990..5db24bd4 100644
--- a/world/map/npc/items/unequipcb.txt
+++ b/world/map/npc/items/unequipcb.txt
@@ -2,7 +2,7 @@
// on any map because of the -1s at the end.
// Note: the client (I think) has a display bug if this is called
// during the intial connection's equip hook
-botcheck.gat,0,0,0|script|UnequipCB|-1,-1,-1
+017-9.gat,0,0,0|script|UnequipCB|-1,-1,-1
{
end;
diff --git a/world/map/npc/scripts.conf b/world/map/npc/scripts.conf
index 1458423b..8aa774e0 100644
--- a/world/map/npc/scripts.conf
+++ b/world/map/npc/scripts.conf
@@ -34,8 +34,12 @@ npc: npc/items/restricted_item.txt
npc: npc/items/warpTowels.txt
npc: npc/items/unequipcb.txt
npc: npc/items/launcher_ammo.txt
+npc: npc/items/check_wand.txt
import: npc/_import.txt
+// GM Events
+npc: npc/functions/gm_island.txt
+
npc: npc/annuals/fathertime.txt
// Annual Christmas
npc: npc/annuals/xmas/config.txt