summaryrefslogtreecommitdiff
path: root/world/map
diff options
context:
space:
mode:
Diffstat (limited to 'world/map')
-rw-r--r--world/map/.gitignore2
-rw-r--r--world/map/conf/.gitignore5
-rwxr-xr-xworld/map/conf/build-magic.sh13
-rw-r--r--world/map/conf/magic-base.conf (renamed from world/map/conf/magic.conf.template)192
-rw-r--r--world/map/conf/magic-secrets.conf.template86
-rw-r--r--world/map/conf/motd.txt.example1
-rw-r--r--world/map/conf/tmwa-map.conf7
-rw-r--r--world/map/db/const-debugflag.txt.example6
-rw-r--r--world/map/db/const.txt5
9 files changed, 161 insertions, 156 deletions
diff --git a/world/map/.gitignore b/world/map/.gitignore
index a77fac4d..df8175f3 100644
--- a/world/map/.gitignore
+++ b/world/map/.gitignore
@@ -1,2 +1,4 @@
/news.html
/news.txt
+
+/db/const-debugflag.txt
diff --git a/world/map/conf/.gitignore b/world/map/conf/.gitignore
index e21c4275..e20ba77d 100644
--- a/world/map/conf/.gitignore
+++ b/world/map/conf/.gitignore
@@ -1,5 +1,4 @@
/*_local.conf
-/help.txt
-/magic.conf
+/magic-secrets.conf
/motd.txt
-/spells-build
+/secrets-build
diff --git a/world/map/conf/build-magic.sh b/world/map/conf/build-magic.sh
index 30ec35b8..ca8a84fa 100755
--- a/world/map/conf/build-magic.sh
+++ b/world/map/conf/build-magic.sh
@@ -1,20 +1,19 @@
#! /bin/bash
-RSCRIPT="spells-build"
+OUTPUT=magic-secrets.conf
+INPUT=$OUTPUT.template
+RSCRIPT=secrets-build
if ! grep -q -s '/bin/sed' $RSCRIPT; then
echo '#! /bin/sed -f' > $RSCRIPT;
chmod a+x $RSCRIPT
fi
-for n in `grep -o '"#..."' magic.conf.template`; do
+for n in `grep -o '"#..."' $INPUT`; do
if ! grep -q $n $RSCRIPT; then
- CHANGES=1
+ echo "New secret ${n} needs to be set in $RSCRIPT!"
echo "s/${n}/${n}/" >> $RSCRIPT;
fi
done
-if [ x$CHANGES == x1 ]
-then echo "${RSCRIPT} has been updated; please provide invocations for spells and/or teleport anchors.";
-else ./$RSCRIPT magic.conf.template > magic.conf;
-fi
+./$RSCRIPT $INPUT > $OUTPUT
diff --git a/world/map/conf/magic.conf.template b/world/map/conf/magic-base.conf
index 769ec572..87e1cac6 100644
--- a/world/map/conf/magic.conf.template
+++ b/world/map/conf/magic-base.conf
@@ -235,7 +235,7 @@ PROCEDURE abort_on_area_shield(pos) =
# Level 0 spells
#--------------------------------------------------------------------------------
-SPELL ask-magic-exp : "#G01" =
+SPELL ask-magic-exp : "#abizit" =
LET level = 0
school = MAGIC
IN (MANA 1, CASTTIME 1000,
@@ -287,7 +287,7 @@ SPELL ask-magic-exp : "#G01" =
ELSE message (caster, "You feel completely overwhelmed by your magic.");
)
-# SPELL ask-life-magic-exp : "#G02" =
+# SPELL ask-life-magic-exp : "#heyogo" =
# LET level = 0
# school = MAGIC
# IN (MANA 1, CASTTIME 1000,
@@ -296,7 +296,7 @@ SPELL ask-magic-exp : "#G01" =
# CALL default_effect();
# message(caster, "You have " + ((script_int(caster, "MAGIC_EXPERIENCE") >> 24) & 0xff) + " Life Magic Experience points.");
-SPELL transmute-wood-to-figurine (name : STRING) : "#T00" =
+SPELL transmute-wood-to-figurine (name : STRING) : "#parum" =
LET level = 0
school = TRANSMUTE
IN (MANA 5, CASTTIME 4000,
@@ -315,7 +315,7 @@ SPELL transmute-wood-to-figurine (name : STRING) : "#T00" =
)
-SPELL make-sulphur : "#T01" =
+SPELL make-sulphur : "#gole" =
LET level = 0
school = TRANSMUTE
IN (MANA 4, CASTTIME 4000,
@@ -326,7 +326,7 @@ SPELL make-sulphur : "#T01" =
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) : "#L00" =
+SPELL lesser-heal (target : STRING) : "#lum" =
LET level = 0
school = LIFE
IN (MANA 6, CASTTIME 500,
@@ -351,7 +351,7 @@ SPELL lesser-heal (target : STRING) : "#L00" =
CALL gain_xp(1, 2);
-SPELL flare-dart : "#W00" =
+SPELL flare-dart : "#flar" =
LET level = 0
school = WAR
IN (MANA 10, CASTTIME 500,
@@ -369,7 +369,7 @@ SPELL flare-dart : "#W00" =
CALL elt_damage (target, damage, damage_bonus, ELT_WATER, ELT_FIRE, 15);
-SPELL magic-blade : "#W01" =
+SPELL magic-blade : "#chiza" =
LET level = 0
school = WAR
IN (MANA 9, CASTTIME 500,
@@ -388,7 +388,7 @@ SPELL magic-blade : "#W01" =
ATTRIGGER CALL melee_damage(target, 40, 5 + str(caster));
)
-SPELL aggravate : "#N00" =
+SPELL aggravate : "#itenplz" =
LET level = 0
school = NATURE
IN (MANA 3, CASTTIME 1000,
@@ -400,7 +400,7 @@ SPELL aggravate : "#N00" =
THEN (CALL sfx_generic(target);
aggravate(target, 0, caster);)
-SPELL grow-mauve : "#N01" =
+SPELL grow-mauve : "#modrilax" =
LET level = 0
school = NATURE
IN (MANA 4, CASTTIME 2000,
@@ -411,7 +411,7 @@ SPELL grow-mauve : "#N01" =
CALL gain_xp(1, 6);
spawn(rbox(location, 2), caster, 1029, 1, skill(caster, school) / 2 + 1, 10000);
-SPELL grow-alizarin : "#N02" =
+SPELL grow-alizarin : "#modriphoo" =
LET level = 0
school = NATURE
IN (MANA 4, CASTTIME 2000,
@@ -422,7 +422,7 @@ SPELL grow-alizarin : "#N02" =
CALL gain_xp(1, 7);
spawn(rbox(location, 2), caster, 1032, 1, skill(caster, school) / 2 + 1, 10000);
-SPELL grow-gamboge : "#N03" =
+SPELL grow-gamboge : "#modriyikam" =
LET level = 0
school = NATURE
IN (MANA 4, CASTTIME 2000,
@@ -433,7 +433,7 @@ SPELL grow-gamboge : "#N03" =
CALL gain_xp(1, 8);
spawn(rbox(location, 2), caster, 1031, 1, skill(caster, school) / 2 + 1, 10000);
-SPELL grow-cobalt : "#N04" =
+SPELL grow-cobalt : "#modrisump" =
LET level = 0
school = NATURE
IN (MANA 4, CASTTIME 2000,
@@ -445,7 +445,7 @@ SPELL grow-cobalt : "#N04" =
spawn(rbox(location, 2), caster, 1030, 1, skill(caster, school) / 2 + 1, 10000);
-LOCAL SPELL summon-maggots : "#A00" =
+LOCAL SPELL summon-maggots : "#kalmurk" =
LET level = 0
school = ASTRAL
IN (MANA 21, CASTTIME 20000,
@@ -458,7 +458,7 @@ LOCAL SPELL summon-maggots : "#A00" =
5000 - (spellpower * 5),
10000 + (spellpower * 50), 1);
-SPELL detect-magic : "#G00" =
+SPELL detect-magic : "#miteyo" =
LET level = 0
school = MAGIC
IN (MANA 3, CASTTIME 6000,
@@ -478,7 +478,7 @@ SPELL detect-magic : "#G00" =
# Level 1 spells
#--------------------------------------------------------------------------------
-SPELL make-arrows : "#T10" =
+SPELL make-arrows : "#kularzufrill" =
LET level = 1
school = TRANSMUTE
IN (MANA 8, CASTTIME 5000,
@@ -490,7 +490,7 @@ SPELL make-arrows : "#T10" =
CALL create_item("Arrow", 1 + spellpower / 40 + (random(max(1, 800 - spellpower)) / 80), "WarpedLog", 500);
CALL gain_xp(1, 11);
-SPELL make-shirt : "#T11" =
+SPELL make-shirt : "#patmuploo" =
LET level = 1
school = TRANSMUTE
IN (MANA 25, CASTTIME 5000,
@@ -502,7 +502,7 @@ SPELL make-shirt : "#T11" =
CALL create_item("CottonShirt", 1, "CottonCloth", 425);
CALL gain_xp(2, 12);
-SPELL make-tanktop : "#T12" =
+SPELL make-tanktop : "#patloree" =
LET level = 1
school = TRANSMUTE
IN (MANA 25, CASTTIME 5000,
@@ -514,7 +514,7 @@ SPELL make-tanktop : "#T12" =
CALL create_item("TankTop", 1, "CottonCloth", 350);
CALL gain_xp(2, 13);
-SPELL make-short-tanktop : "#T13" =
+SPELL make-short-tanktop : "#patviloree" =
LET level = 1
school = TRANSMUTE
IN (MANA 25, CASTTIME 5000,
@@ -526,7 +526,7 @@ SPELL make-short-tanktop : "#T13" =
CALL create_item("ShortTankTop", 1, "CottonCloth", 250);
CALL gain_xp(2, 14);
-SPELL make-iron-powder : "#T14" =
+SPELL make-iron-powder : "#zukminbirf" =
LET level = 1
school = TRANSMUTE
IN (MANA 8, CASTTIME 5000,
@@ -538,7 +538,7 @@ SPELL make-iron-powder : "#T14" =
CALL create_item("IronPowder", 1 + spellpower / 140 + (random(max(1, 900 - spellpower)) / 220), "IronOre", 700);
CALL gain_xp(3, 15);
-SPELL make-concentration-potion : "#T15" =
+SPELL make-concentration-potion : "#loshira" =
LET level = 1
school = TRANSMUTE
IN (MANA 8, CASTTIME 5000,
@@ -554,7 +554,7 @@ SPELL make-concentration-potion : "#T15" =
THEN CALL set_var(MAGIC_FLAGS, 1, MFLAG_MADE_CONC_POTION_SHIFT, 1);
CALL gain_xp(4, 16);
-SPELL merge-concentration-potions : "#T16" =
+SPELL merge-concentration-potions : "#skrimp" =
LET level = 1
school = TRANSMUTE
IN (MANA 8, CASTTIME 5000,
@@ -570,7 +570,7 @@ SPELL merge-concentration-potions : "#T16" =
CALL gain_xp(4, 17);
-SPELL lay-on-hands (target : STRING) : "#L10" =
+SPELL lay-on-hands (target : STRING) : "#inma" =
LET level = 1
school = LIFE
IN (MANA 10, CASTTIME 500,
@@ -621,7 +621,7 @@ SPELL lay-on-hands (target : STRING) : "#L10" =
status_change(caster, SC_HALT_REGENERATE, 0, 0, 0, 0, t);
CALL gain_xp(min(4, payment / 100), 18);
-SPELL lightning-strike : "#W10" =
+SPELL lightning-strike : "#ingrav" =
LET level = 1
school = WAR
IN (MANA 20, CASTTIME 1000,
@@ -659,7 +659,7 @@ SPELL lightning-strike : "#W10" =
) ELSE
CALL elt_damage (target, damage, damage_bonus, ELT_EARTH, ELT_WIND, 17 + random(3));
-LOCAL SPELL arrow-hail : "#W11" =
+LOCAL SPELL arrow-hail : "#frillyar" =
LET level = 1
school = WAR
IN (MANA 25, CASTTIME 5000,
@@ -701,7 +701,7 @@ LOCAL SPELL arrow-hail : "#W11" =
WAIT 250 + random(50) + random(50);
);
-SPELL magic-knuckles : "#W12" =
+SPELL magic-knuckles : "#upmarmu" =
LET level = 1
school = WAR
IN (MANA 20, CASTTIME 500,
@@ -714,7 +714,7 @@ SPELL magic-knuckles : "#W12" =
CALL install_melee_spell(10 + spellpower / 10, 1300, 34);
ATTRIGGER CALL melee_damage(target, 30, 5 + (str * 2));
-#SPELL death-wave : "#D10" =
+#SPELL death-wave : "#nertuq" =
# LET level = 1
# school = DARK
# IN (MANA 75, CASTTIME 10000,
@@ -738,7 +738,7 @@ SPELL magic-knuckles : "#W12" =
# FOREACH MOB target IN rbox(location(caster), d / 20) DO
# (CALL elt_damage(target, damage, damage_bonus, ELT_HOLY, ELT_SHADOW, 15 + random(5));)
-LOCAL SPELL summon-snakes : "#D11" =
+LOCAL SPELL summon-snakes : "#halhiss" =
LET level = 1
school = DARK
IN (MANA 40, CASTTIME 15000,
@@ -751,7 +751,7 @@ LOCAL SPELL summon-snakes : "#D11" =
CALL gain_xp(3, 31);
CALL summon_dark_spell(1010, 1 + spellpower / 300, 4000 - (spellpower * 9), spellpower * 80, 2);
-#LOCAL SPELL summon-black-scorpions : "#D12" =
+#LOCAL SPELL summon-black-scorpions : "#halproc" =
# LET level = 1
# school = DARK
# IN (MANA 40, CASTTIME 15000,
@@ -764,7 +764,7 @@ LOCAL SPELL summon-snakes : "#D11" =
# CALL gain_xp(3, 32);
# CALL summon_dark_spell(1009, 1 + spellpower / 300, 4000 - (spellpower * 9), spellpower * 80, 2);
-#LOCAL SPELL summon-skeletons : "#D13" = # only release this if content has been adjusted or mob has been replaced with a nerfed one
+#LOCAL SPELL summon-skeletons : "#halheth" = # only release this if content has been adjusted or mob has been replaced with a nerfed one
# LET level = 1
# school = DARK
# IN (MANA 50, CASTTIME 17000,
@@ -777,7 +777,7 @@ LOCAL SPELL summon-snakes : "#D11" =
# CALL gain_xp(3, 33);
# CALL summon_dark_spell(1043, spellpower / 325, 4000 - (spellpower * 9), spellpower * 70, 2);
-#SPELL shadow-strike : "#D14" =
+#SPELL shadow-strike : "#phlos" =
# LET level = 1
# school = DARK
# IN (MANA 20, CASTTIME 1300,
@@ -796,7 +796,7 @@ LOCAL SPELL summon-snakes : "#D11" =
# ATTRIGGER CALL attack_check(target);
# CALL elt_damage (target, damage, damage_bonus, ELT_HOLY, ELT_SHADOW, 15 + random(5));
-SPELL toxic-dart : "#D15" =
+SPELL toxic-dart : "#phlex" =
LET level = 1
school = DARK
IN (MANA 15, CASTTIME 500,
@@ -816,7 +816,7 @@ SPELL toxic-dart : "#D15" =
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 : "#D16" =
+LOCAL SPELL summon-wickedmushroom : "#helorp" =
LET level = 1
school = DARK
IN (MANA 35, CASTTIME 15000,
@@ -829,7 +829,7 @@ LOCAL SPELL summon-wickedmushroom : "#D16" =
CALL gain_xp(3, 36);
CALL summon_dark_spell(1106, 1 + spellpower / 250 , 4000 - (spellpower * 9), spellpower * 80, 2);
-SPELL flying-backpack (target : PC) : "#N10" =
+SPELL flying-backpack (target : PC) : "#plugh" =
LET level = 1
school = NATURE
IN (MANA 12, CASTTIME 1000,
@@ -847,7 +847,7 @@ SPELL flying-backpack (target : PC) : "#N10" =
ATEND message (target, "Your backpack is no longer levitating.");
sfx(target, 2, 0);
-SPELL protect (target : PC) : "#N11" =
+SPELL protect (target : PC) : "#betsanc" =
LET level = 1
school = NATURE
IN (MANA 14, CASTTIME 1500,
@@ -866,7 +866,7 @@ SPELL protect (target : PC) : "#N11" =
ATEND message (target, "You feel less protected.");
sfx(target, 111, 0);
-SPELL happy-curse (target : PC) : "#N12" =
+SPELL happy-curse (target : PC) : "#joyplim" =
LET level = 1
school = NATURE
IN (MANA 13, CASTTIME 1000,
@@ -881,7 +881,7 @@ SPELL happy-curse (target : PC) : "#N12" =
ELSE FOR i = 0 TO (spellpower / 10) DO (emote(target, 3); WAIT 500;);
CALL gain_xp(1, 23);
-LOCAL SPELL rain : "#N13" =
+LOCAL SPELL rain : "#kaflosh" =
LET level = 1
school = NATURE
IN (MANA 17, CASTTIME 3000,
@@ -940,7 +940,7 @@ PROCEDURE shear-drop3(target, target2, item, prob, item2, prob2, item3, prob3) =
ELSE CALL shear-drop2(target, target2, item2, prob2 + prob, item3, prob3 + prob);)
-SPELL shear : "#N14" =
+SPELL shear : "#chipchip" =
LET level = 1
school = NATURE
IN (MANA 23, CASTTIME 1000,
@@ -972,7 +972,7 @@ SPELL shear : "#N14" =
-SPELL barrier (target : PC) : "#A10" =
+SPELL barrier (target : PC) : "#asorm" =
LET level = 1
school = ASTRAL
IN (MANA 16, CASTTIME 1000,
@@ -992,7 +992,7 @@ SPELL barrier (target : PC) : "#A10" =
sfx(target, SFX_UNBARRIER, 0);
-LOCAL SPELL summon-spiky-mushrooms : "#A11" =
+LOCAL SPELL summon-spiky-mushrooms : "#kalrenk" =
LET level = 1
school = ASTRAL
IN (MANA 33, CASTTIME 20000,
@@ -1004,7 +1004,7 @@ LOCAL SPELL summon-spiky-mushrooms : "#A11" =
CALL gain_xp(1, 26);
CALL summon_spell(1019, 1 + spellpower / 120, 5000 - (spellpower * 9), spellpower * 400, 2);
-LOCAL SPELL summon-fluffies : "#A12" =
+LOCAL SPELL summon-fluffies : "#kalakarenk" =
LET level = 1
school = ASTRAL
IN (MANA 39, CASTTIME 20000,
@@ -1016,7 +1016,7 @@ LOCAL SPELL summon-fluffies : "#A12" =
CALL gain_xp(1, 27);
CALL summon_spell(1020, 1 + spellpower / 170 + spellpower / 430, 5000 - (spellpower * 8), spellpower * 350, 2);
-LOCAL SPELL summon-mouboo : "#A14" =
+LOCAL SPELL summon-mouboo : "#kalboo" =
LET level = 1
school = ASTRAL
IN (MANA 35, CASTTIME 20000,
@@ -1028,7 +1028,7 @@ LOCAL SPELL summon-mouboo : "#A14" =
CALL gain_xp(2, 37);
CALL summon_spell(1028, 1 + spellpower / 270 , 4000 - (spellpower * 9), spellpower * 100, 2);
-LOCAL SPELL summon-pinkie : "#A15" =
+LOCAL SPELL summon-pinkie : "#kalgina" =
LET level = 1
school = ASTRAL
IN (MANA 35, CASTTIME 20000,
@@ -1040,7 +1040,7 @@ LOCAL SPELL summon-pinkie : "#A15" =
CALL gain_xp(2, 38);
CALL summon_spell(1018, 1 + spellpower / 120, 5000 - (spellpower * 9), spellpower * 150, 2);
-SPELL detect-players : "#G10" =
+SPELL detect-players : "#inwilt" =
LET level = 1
school = MAGIC
IN (MANA 7, CASTTIME 300,
@@ -1063,7 +1063,7 @@ SPELL detect-players : "#G10" =
THEN message(caster, "You sense no-one else nearby.");
ELSE message(caster, "You sense the following: " + message);
-SPELL enchant-lifestone : "#G12" =
+SPELL enchant-lifestone : "#manpahil" =
LET level = 1
school = MAGIC
IN (MANA 15, CASTTIME 4000,
@@ -1076,7 +1076,7 @@ SPELL enchant-lifestone : "#G12" =
create_item(caster, "Lifestone", 1);
CALL gain_xp(1, 28);
-SPELL sense-spouse : "#G13" =
+SPELL sense-spouse : "#inzuwilt" =
LET level = 1
school = MAGIC
IN (MANA 7, CASTTIME 400,
@@ -1113,7 +1113,7 @@ SPELL sense-spouse : "#G13" =
ELSE message(caster, "You sense " + name + " in the " + dir + ".");
)
-SPELL hide (target : PC) : "#A13" =
+SPELL hide (target : PC) : "#anwiltyp" =
LET level = 1
school = ASTRAL
IN (MANA 11, CASTTIME 1000,
@@ -1135,7 +1135,7 @@ SPELL hide (target : PC) : "#A13" =
# Level 2 spells
#--------------------------------------------------------------------------------
-SPELL cure-poison (target : PC) : "#L20" =
+SPELL cure-poison (target : PC) : "#anju" =
LET level = 2
school = LIFE
IN (MANA 15, CASTTIME 1000,
@@ -1154,7 +1154,7 @@ SPELL cure-poison (target : PC) : "#L20" =
THEN sfx(target, SFX_HEAL, 0););
-SPELL fire-ball : "#W22" =
+SPELL fire-ball : "#flarfol" =
LET level = 2
school = WAR
IN (MANA 30, CASTTIME 1000,
@@ -1179,7 +1179,7 @@ SPELL fire-ball : "#W22" =
CALL elt_damage (target, (damage * 3) / divisor, (damage_bonus * 3) / divisor, ELT_WATER, ELT_FIRE, 15);
)
-SPELL summon-partner : "#A23" =
+SPELL summon-partner : "#kalzumin" =
LET level = 2
school = ASTRAL
IN (MANA 30, CASTTIME 2000,
@@ -1212,7 +1212,7 @@ SPELL summon-partner : "#A23" =
# Level 4 spells
#--------------------------------------------------------------------------------
-SPELL shroud : "#N40" =
+SPELL shroud : "#anwilvimar" =
LET level = 4
school = NATURE
IN (MANA 40, CASTTIME 400,
@@ -1221,7 +1221,7 @@ SPELL shroud : "#N40" =
=> EFFECT CALL default_effect();
shroud(caster, 0x04);
-SPELL teleport (destination : STRING) : "#A40" =
+SPELL teleport (destination : STRING) : "#vorp" =
LET level = 4
school = ASTRAL
IN (MANA 80, CASTTIME 400,
@@ -1624,7 +1624,7 @@ CONST E10_FLAG_USED_FREE_WARP_SHIFT = 17
# spawn(rbox(location(caster), 20), caster, 1042, random(random(5)), 1, 100000);
# spawn(rbox(location(caster), 20), caster, 1047, random(random(5)), 1, 100000);
-NONMAGIC SILENT SPELL world-shift : "#S00" =
+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
@@ -1759,94 +1759,6 @@ NONMAGIC SPELL hug5 (target : STRING) : "*hugs" = REQUIRE ((rdistance(location(c
|| rdistance(location(caster), location(npc("#DruidTree1#_M"))) <= 1))
=> EFFECT CALL hug_tree(target);
-
-# 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), ""; };
-
#--------------------------------------------------------------------------------
# Teleport anchors
#--------------------------------------------------------------------------------
diff --git a/world/map/conf/magic-secrets.conf.template b/world/map/conf/magic-secrets.conf.template
new file mode 100644
index 00000000..c53ee8a8
--- /dev/null
+++ b/world/map/conf/magic-secrets.conf.template
@@ -0,0 +1,86 @@
+# 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/motd.txt.example b/world/map/conf/motd.txt.example
index 548a95cd..9c949dda 100644
--- a/world/map/conf/motd.txt.example
+++ b/world/map/conf/motd.txt.example
@@ -1 +1,2 @@
Welcome to The Mana World! (running on tmwAthena)
+You can report abuse by typing in chat: @wgm Player XYZ is abusing me
diff --git a/world/map/conf/tmwa-map.conf b/world/map/conf/tmwa-map.conf
index b293b36c..e26e16c4 100644
--- a/world/map/conf/tmwa-map.conf
+++ b/world/map/conf/tmwa-map.conf
@@ -11,9 +11,14 @@ battle_conf: conf/battle_athena.conf
atcommand_conf: conf/atcommand_athena.conf
const_db: db/const.txt
+const_db: db/const-debugflag.txt
+
item_db: db/item_db.txt
mob_db: db/mob_db.txt
mob_skill_db: db/mob_skill_db.txt
skill_db: db/skill_db.txt
-magic_conf: conf/magic.conf
+
+magic_conf: conf/magic-base.conf
+magic_conf: conf/magic-secrets.conf
+
resnametable: data/resnametable.txt
diff --git a/world/map/db/const-debugflag.txt.example b/world/map/db/const-debugflag.txt.example
new file mode 100644
index 00000000..1e5bf8f4
--- /dev/null
+++ b/world/map/db/const-debugflag.txt.example
@@ -0,0 +1,6 @@
+// Constants usable in scripts.
+
+// This constant is used to define whether unreleased items are equippable.
+// This defaults to 1, but should be disabled on the official server.
+// If set to 2 or higher, it also disables global timers to aid gdb'ing.
+debug 1
diff --git a/world/map/db/const.txt b/world/map/db/const.txt
index 2363a1a2..7001cce1 100644
--- a/world/map/db/const.txt
+++ b/world/map/db/const.txt
@@ -1,9 +1,4 @@
// Constants usable in scripts.
-// This constant is used to define whether unreleased items are equippable.
-// This defaults to 1, but should be disabled on the official server.
-// If set to 2 or higher, it also disables global timers to aid gdb'ing.
-
-debug 1
// BEFORE UNCOMMENTING ANYTHING, TALK TO o11c!
//MF_NOMEMO 0