diff options
Diffstat (limited to 'conf')
-rw-r--r-- | conf/atcommand_athena.conf.example (renamed from conf/atcommand_athena.conf) | 0 | ||||
-rw-r--r-- | conf/battle_athena.conf.example (renamed from conf/battle_athena.conf) | 6 | ||||
-rw-r--r-- | conf/char_athena.conf.example (renamed from conf/char_athena.conf) | 9 | ||||
-rw-r--r-- | conf/eathena-monitor.conf.example (renamed from conf/eathena-monitor.conf) | 0 | ||||
-rw-r--r-- | conf/gm_account.txt.example (renamed from conf/gm_account.txt) | 0 | ||||
-rw-r--r-- | conf/inter_athena.conf.example (renamed from conf/inter_athena.conf) | 0 | ||||
-rw-r--r-- | conf/ladmin_athena.conf.example (renamed from conf/ladmin_athena.conf) | 0 | ||||
-rw-r--r-- | conf/lan_support.conf.example (renamed from conf/lan_support.conf) | 0 | ||||
-rw-r--r-- | conf/login_athena.conf.example (renamed from conf/login_athena.conf) | 5 | ||||
-rw-r--r-- | conf/magic.conf | 580 | ||||
-rw-r--r-- | conf/map_athena.conf | 209 | ||||
-rw-r--r-- | conf/map_athena.conf.example | 348 | ||||
-rw-r--r-- | conf/motd.txt.example (renamed from conf/motd.txt) | 0 | ||||
-rw-r--r-- | conf/msg_athena.conf.example (renamed from conf/msg_athena.conf) | 0 | ||||
-rw-r--r-- | conf/script_athena.conf.example (renamed from conf/script_athena.conf) | 0 |
15 files changed, 941 insertions, 216 deletions
diff --git a/conf/atcommand_athena.conf b/conf/atcommand_athena.conf.example index b0711beb..b0711beb 100644 --- a/conf/atcommand_athena.conf +++ b/conf/atcommand_athena.conf.example diff --git a/conf/battle_athena.conf b/conf/battle_athena.conf.example index 57a6fc0d..1324bd34 100644 --- a/conf/battle_athena.conf +++ b/conf/battle_athena.conf.example @@ -54,7 +54,7 @@ monster_skill_add_range: 0 // If a player is attacked, will they have a delay in being able to move? (Note 1) // (Setting to no will be like always endure) -player_damage_delay: yes +player_damage_delay: no // Damaged delay rate (Note 2) player_damage_delay_rate: 100 @@ -650,12 +650,12 @@ night_at_start: no // Define duration in msec of the day (default: 7,200,000 = 2 hours) // Set to 0 to disable day cycle (but not @day GM command). // Except 0, minimum is 60000 (1 minute). -day_duration: 7200000 +day_duration: 0 // Define duration in msec of the night (default: 1,800,000 = 30 min) // Set to 0 to disable night cycle (but not @night GM command). // Except 0, minimum is 60000 (1 minute). -night_duration: 1800000 +night_duration: 0 // Will display a mob's hp/maxhp when the mouse cursor is over them. (Note 1) // Will not display guardian or emperium hp. diff --git a/conf/char_athena.conf b/conf/char_athena.conf.example index 57ee991b..6ce131cf 100644 --- a/conf/char_athena.conf +++ b/conf/char_athena.conf.example @@ -2,10 +2,10 @@ // Server Communication username and password. userid: s1 -passwd: p1 +passwd: s1 // Server name, use alternative character such as ASCII 160 for spaces. -server_name: Mana World +server_name: The Mana World // Wisp name for server: used to send wisp from server to players (between 4 to 23 characters) wisp_server_name: Server @@ -89,12 +89,13 @@ name_ignoring_case: 0 // 0: no restriction (default) // 1: only letters/symbols in 'char_name_letters' option. // 2: Letters/symbols in 'char_name_letters' option are forbidden. All others are possibles. -char_name_option: 0 +char_name_option: 1 // Set the letters/symbols that you want use with the 'char_name_option' option. // Note: add 'space' between 2 others letters/symbols. // default: void. -//char_name_letters: +// char_name_letters: [ ] { } , . | - # @ ! ~ ` ; : " " ? / \ = + < > +char_name_letters: a b c d e f g h i j k l m n o p r s t q u w x y z A B C D E F G H I J K L M N O P R S T Q U W X Y Z 1 2 3 4 5 6 7 8 9 0 // Filename of the file which receives the online players list in text online_txt_filename: online.txt diff --git a/conf/eathena-monitor.conf b/conf/eathena-monitor.conf.example index 70dcd2e5..70dcd2e5 100644 --- a/conf/eathena-monitor.conf +++ b/conf/eathena-monitor.conf.example diff --git a/conf/gm_account.txt b/conf/gm_account.txt.example index 912e1a09..912e1a09 100644 --- a/conf/gm_account.txt +++ b/conf/gm_account.txt.example diff --git a/conf/inter_athena.conf b/conf/inter_athena.conf.example index 72a88bd9..72a88bd9 100644 --- a/conf/inter_athena.conf +++ b/conf/inter_athena.conf.example diff --git a/conf/ladmin_athena.conf b/conf/ladmin_athena.conf.example index 4f9ce8b6..4f9ce8b6 100644 --- a/conf/ladmin_athena.conf +++ b/conf/ladmin_athena.conf.example diff --git a/conf/lan_support.conf b/conf/lan_support.conf.example index bfaec696..bfaec696 100644 --- a/conf/lan_support.conf +++ b/conf/lan_support.conf.example diff --git a/conf/login_athena.conf b/conf/login_athena.conf.example index 72b820fe..1d4383a7 100644 --- a/conf/login_athena.conf +++ b/conf/login_athena.conf.example @@ -50,6 +50,11 @@ login_log_filename: log/login.log // Name of the file of that logs the unknown packets (for debug or hack check) login_log_unknown_packets_filename: log/login_unknown_packets.log +// Update host +// Tells the client that an alternative updatehost is available if the client +// supports this. If left out nothing will be sent. max length 127. +update_host: http://updates.themanaworld.org/ + // Indicate if the unknown packets are saved or not //(the unknown packets coming from the char-server or ladministration does not relate to, which is always saved) // Be careful: if you receive an attack, your hard disk can cause lag... diff --git a/conf/magic.conf b/conf/magic.conf new file mode 100644 index 00000000..54f182de --- /dev/null +++ b/conf/magic.conf @@ -0,0 +1,580 @@ +# 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 + +# 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 + +# Schools of magic +CONST SC_HALT_REGENERATE = 195 +CONST SC_FLYING_BACKPACK = 196 +CONST SC_MBARRIER = 197 +CONST SC_HASTE = 198 +CONST SC_PHYS_SHIELD = 199 + +CONST SFX_TELEPORT = 24 + +# Increase spellpower by school and general magic skill +PROCEDURE adjust_spellpower(school) = + spellpower = spellpower + (skill(caster, MAGIC) + skill(caster, school)) * 10; + IF ((school = LIFE) && (target = partner(caster))) + THEN spellpower = spellpower + 200; # Do something for wedding rings, too? + +PROCEDURE heal(target, max_heal) = + sfx(caster, 4, 0); + IF caster <> target + THEN sfx(target, 4, 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) = + sfx(caster, 4, 0); + IF caster <> target + THEN sfx(target, 4, 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); + injure(caster, target, d, 0); + + +PROCEDURE install_attack_spell(charges, base_delay, range, attack_animation) = + sfx(caster, 5, 0); + attack_range = range; + override_attack(caster, charges, ((200 - agi(caster)) * base_delay) / 200, + range, 0, attack_animation); + +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) = + sfx(caster, 2, 0); + sfx(location, 21, 0); + WAIT delay; + sfx(location, 22, 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); + +#-------------------------------------------------------------------------------- +# Level 0 spells +#-------------------------------------------------------------------------------- + +#SPELL reset : "#reset" = +# EFFECT { skill 340, 0; +# skill 341, 0; +# skill 342, 0; +# skill 343, 0; +# skill 344, 0; +# skill 345, 0; +# } + +SPELL lesser-heal (target : STRING) : "#imx" = + LET level = 0 + school = LIFE + IN (MANA 5, CASTTIME 400, + REQUIRE skill(caster, MAGIC) > level, + REQUIRE if_then_else(failed(pc(target)), 1, + rdistance(location(caster), location(pc(target))) < 2 + (spellpower / 50)), + (COMPONENTS ["MaggotSlime"] OR COMPONENTS ["BugLeg"])) + => EFFECT CALL adjust_spellpower(school); + IF failed(pc(target)) + THEN target = caster; # quest handling goes here + ELSE target = pc(target); + CALL heal(target, 200); + + +SPELL flare-dart : "#fla" = + LET level = 0 + school = WAR + IN (MANA 15, CASTTIME 500, + REQUIRE skill(caster, MAGIC) > level, + (REQUIRE skill(caster, school) > 2 OR COMPONENTS ["SulphurPowder"])) + => EFFECT CALL adjust_spellpower(school); + sfx(caster, 5, 0); + damage = min(40 + skill(caster, school) * 20, + 10 + spellpower); + damage_bonus = 5 + level(caster) / 3; + CALL install_attack_spell(3 + spellpower / 30, + 1200, + 4, 31); + + ATTRIGGER CALL attack_check(target); + CALL elt_damage (target, damage, damage_bonus, ELT_WATER, ELT_FIRE, 15); + +SPELL magic-blade : "#mbl" = + LET level = 0 + school = WAR + IN (MANA 12, CASTTIME 500, + REQUIRE skill(caster, MAGIC) > level) + => ( COMPONENTS ["SharpKnife"] => + EFFECT CALL adjust_spellpower(WAR); + sfx(caster, 5, 0); + CALL install_melee_spell(10 + spellpower / 10, 900, 30); + ATTRIGGER CALL melee_damage(target, 60 + spellpower / 20, 5 + str(caster)); + | COMPONENTS ["Knife"] => + EFFECT CALL adjust_spellpower(WAR); + sfx(caster, 5, 0); + CALL install_melee_spell(10 + spellpower / 10, 900, 30); + ATTRIGGER CALL melee_damage(target, 40 + spellpower / 20, 5 + str(caster)); + ) + +SPELL aggravate : "#qaw" = + LET level = 0 + school = NATURE + IN (MANA 5, CASTTIME 300, + REQUIRE skill(caster, MAGIC) > level) + => EFFECT CALL adjust_spellpower(school); + sfx(caster, 2, 0); + FOREACH MOB target IN rbox(location(caster), 1 + spellpower / 20) DO + (sfx(target, 2, 0); + aggravate(target, 0, caster);) + + +LOCAL SPELL summon-maggots : "#kbm" = + LET level = 0 + school = ASTRAL + IN (MANA 20, CASTTIME 3000, + REQUIRE skill(caster, MAGIC) > level, + COMPONENTS ["MaggotSlime"]) + => EFFECT CALL adjust_spellpower(school); + CALL summon_spell(1002, 3 + spellpower / 15, 5000 - (spellpower * 10), spellpower * 500, 1); + + +#-------------------------------------------------------------------------------- +# Level 1 spells +#-------------------------------------------------------------------------------- + +SPELL make-arrows : "#mkarrows" = + LET level = 1 + school = TRANSMUTE + IN (MANA 20, CASTTIME 2000, + REQUIRE skill(caster, MAGIC) > level, + REQUIRE skill(caster, school) > level, + COMPONENTS ["RawLog"]) + => EFFECT CALL adjust_spellpower(school); + sfx(caster, 2, 0); + create_item(caster, "Arrow", 1 + spellpower / 15); + +SPELL make-shirt : "#mkshirt" = + LET level = 1 + school = TRANSMUTE + IN (MANA 20, CASTTIME 2000, + REQUIRE skill(caster, MAGIC) > level, + REQUIRE skill(caster, school) > level, + COMPONENTS [5 * "CottonCloth"]) + => EFFECT CALL adjust_spellpower(school); + sfx(caster, 2, 0); + create_item(caster, "CottonShirt", 1); + +SPELL make-tanktop : "#mktanktop" = + LET level = 1 + school = TRANSMUTE + IN (MANA 20, CASTTIME 2000, + REQUIRE skill(caster, MAGIC) > level, + REQUIRE skill(caster, school) > level, + COMPONENTS [4 * "CottonCloth"]) + => EFFECT CALL adjust_spellpower(school); + sfx(caster, 2, 0); + create_item(caster, "TanktopWhite", 1); + +SPELL make-short-tanktop : "#mkshorttanktop" = + LET level = 1 + school = TRANSMUTE + IN (MANA 20, CASTTIME 2000, + REQUIRE skill(caster, MAGIC) > level, + REQUIRE skill(caster, school) > level, + COMPONENTS [3 * "CottonCloth"]) + => EFFECT CALL adjust_spellpower(school); + sfx(caster, 2, 0); + create_item(caster, "ShortTanktopWhite", 1); + +SPELL lightning-strike : "#kig" = + LET level = 1 + school = WAR + IN (MANA 25, 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 = min(100 + skill(caster, school) * 50, + 50 + spellpower * 2); + damage_bonus = level(caster) + spellpower; + CALL install_attack_spell(1 + spellpower / 60, + 3000, + 8, 31); + ATTRIGGER CALL attack_check(target); + CALL elt_damage (target, damage, damage_bonus, ELT_EARTH, ELT_WIND, 17 + random(3)); + +SPELL fire-ball : "#pof" = + LET level = 1 + school = WAR + IN (MANA 30, CASTTIME 1000, + REQUIRE skill(caster, MAGIC) > level, + REQUIRE skill(caster, school) > level, + (REQUIRE skill(caster, school) > 3 OR 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 magic-knuckles (target : PC) : "#iom" = + 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(target); + CALL install_melee_spell(10 + spellpower / 12, 1000, 0); + ATTRIGGER CALL melee_damage(target, 40 + (str / 2) + spellpower / 20, 5 + str); + +SPELL flying-backpack (target : PC) : "#uuy" = + LET level = 1 + school = NATURE + IN (MANA 12, CASTTIME 1000, + REQUIRE skill(caster, MAGIC) > level, + REQUIRE skill(caster, school) > level, + REQUIRE rdistance(location(target), location(caster)) < 2 + spellpower / 30) + => EFFECT CALL adjust_spellpower(school); + sfx(target, 3, 0); + 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."); + ATEND message (target, "Your backpack is no longer levitating."); + sfx(target, 2, 0); + + +SPELL protect (target : PC) : "#ism" = + LET level = 1 + school = NATURE + IN (MANA 18, CASTTIME 1000, + REQUIRE skill(caster, MAGIC) > level, + REQUIRE skill(caster, school) > level, + (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 sfx(caster, 2, 0); + status_change(target, SC_PHYS_SHIELD, 5 + max(15, spellpower / 12), 0, 0, 0, 5000 + (spellpower * 500)); + message (target, "You feel more protected."); + ATEND message (target, "You feel less protected."); + sfx(target, 111, 0); + + +LOCAL SPELL rain : "#flosh" = + LET level = 1 + school = NATURE + IN (MANA 20, CASTTIME 3000, + REQUIRE skill(caster, MAGIC) > level, + REQUIRE skill(caster, school) > level, + (REQUIRE skill(caster, school) > 3 OR COMPONENTS ["BottleOfWater"])) + => EFFECT CALL adjust_spellpower(school); + sfx(caster, 2, 0); + area = rbox(location(caster), 3 + spellpower / 30); + FOR i = 0 TO spellpower DO ( + FOR j = 0 TO spellpower / 100 DO ( + location = random_location(area); + sfx(location, 25, 0); + FOREACH TARGET target IN rbox(location, 1) DO + IF element(target) = ELT_FIRE + THEN injure(caster, target, 5 + random(5 + spellpower / 10), 0); + ) + WAIT 300 - min(spellpower, 200) + random(100); + ); + +SPELL happy-curse (target : PC) : "#happy" = + LET level = 1 + school = NATURE + IN (MANA 10, CASTTIME 1000, + REQUIRE skill(caster, MAGIC) > level, + REQUIRE skill(caster, school) > level, + (REQUIRE skill(caster, school) > 3 OR COMPONENTS ["WhiteFur"]), + REQUIRE rdistance(location(target), location(caster)) < 1 + spellpower / 100) + => EFFECT CALL adjust_spellpower(school); + FOR i = 0 TO (spellpower / 10) DO (emote(target, 3); WAIT 500;); + +SPELL barrier (target : PC) : "#iso" = + LET level = 1 + school = NATURE + IN (MANA 18, CASTTIME 1000, + REQUIRE skill(caster, MAGIC) > level, + REQUIRE skill(caster, school) > level, + (REQUIRE skill(caster, school) > 3 OR COMPONENTS ["HardSpike"]), + REQUIRE rdistance(location(target), location(caster)) < 2 + spellpower / 30) + => EFFECT CALL adjust_spellpower(school); + sfx(target, 3, 0); + IF (caster <> target) + THEN sfx(caster, 2, 0); + status_change(target, SC_MBARRIER, 30 + max(30, spellpower / 8), 0, 0, 0, 2000 + (spellpower * 200)); + message (target, "You are surrounded by a magical barrier."); + ATEND message (target, "Your magical barrier disspiates."); + sfx(target, 2, 0); + + +LOCAL SPELL summon-scorps : "#kbms" = + LET level = 1 + school = ASTRAL + IN (MANA 25, CASTTIME 3000, + REQUIRE skill(caster, MAGIC) > level, + REQUIRE skill(caster, school) > level, + COMPONENTS ["ScorpionStinger"]) + => EFFECT CALL adjust_spellpower(school); + sfx(target, 2, 0); + CALL summon_spell(1003, 1 + spellpower / 30, 5000 - (spellpower * 9), spellpower * 400, 2); + +LOCAL SPELL summon-red-scorps : "#kbmq" = + LET level = 1 + school = ASTRAL + IN (MANA 30, CASTTIME 3000, + REQUIRE skill(caster, MAGIC) > level, + REQUIRE skill(caster, school) > level, + COMPONENTS ["RedScorpionStinger"]) + => EFFECT CALL adjust_spellpower(school); + sfx(target, 2, 0); + CALL summon_spell(1004, 1 + spellpower / 40, 5000 - (spellpower * 8), spellpower * 350, 3); + + +SPELL detect-players : "#ewm" = + LET level = 1 + school = MAGIC + IN (MANA 10, CASTTIME 300, + REQUIRE skill(caster, MAGIC) > level, + REQUIRE skill(caster, school) > level) + => EFFECT CALL adjust_spellpower(school); + sfx(target, 2, 0); + message = ""; + FOREACH PC target IN rbox(location(caster), spellpower / 2) + DO IF target <> caster + 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 lay-on-hands (target : STRING) : "#loh" = + LET level = 1 + school = LIFE + IN (MANA 8, CASTTIME 400, + REQUIRE hp(caster) > max_hp(caster) / 20, + REQUIRE skill(caster, MAGIC) > level, + REQUIRE if_then_else(failed(pc(target)), 1, + (rdistance(location(caster), + location(pc(target))) < 2 + (spellpower / 50)) + && not (running_status_update(pc(target), SC_HALT_REGENERATE)) + )) + => EFFECT CALL adjust_spellpower(school); + IF failed(pc(target)) + THEN target = caster; # quest handling goes here + 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; + ) + + instaheal(caster, 0 - payment, 0); + CALL quickheal(target, power); + status_change(caster, SC_HALT_REGENERATE, 0, 0, 0, 0, 10000); + +#-------------------------------------------------------------------------------- +# Level 2 spells +#-------------------------------------------------------------------------------- + +SPELL summon-partner : "#aid" = + LET level = 2 + school = ASTRAL + IN (MANA 30, CASTTIME 2000, + REQUIRE skill(caster, MAGIC) > level, + REQUIRE skill(caster, school) > level, + REQUIRE is_married(caster)) + => EFFECT CALL adjust_spellpower(school); + sfx(caster, 2, 0); + 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 (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 : "#aw" = + LET level = 4 + school = ASTRAL + IN (MANA 40, CASTTIME 400, + REQUIRE skill(caster, MAGIC) > level, + REQUIRE skill(caster, school) > level) + => EFFECT sfx(caster, 2, 0); + shroud(caster, 0x04); + +#-------------------------------------------------------------------------------- +# Special-purpose quasispells +#-------------------------------------------------------------------------------- + +CONST MIN_MARRY_LEVEL = 32; + +SILENT SPELL marriage (target : PC) : "marry" = + (REQUIRE is_in(location(caster), @("new_29-1.gat", 28,39) @+ (8, 6)))=> + 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 have 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; + } + + IF not (is_married(caster)) + THEN message(caster, name_of(target) + " turned down your marriage offer."); + +SPELL change-hair-colour (colour : STRING) : "trapa" = + (MANA 20) => EFFECT IF colour = "nworbl" + THEN x = 0; # light brown + ELSE IF colour = "der" + THEN x = 1; # red + ELSE IF colour = "neerg" + THEN x = 2; # green + ELSE IF colour = "elprup" + THEN x = 3; # purple + ELSE IF colour = "yerg" + THEN x = 4; # grey + ELSE IF colour = "wolley" + THEN x = 5; # yellow + ELSE IF colour = "eulb" + THEN x = 6; # blue + ELSE IF colour = "nwrob" + THEN x = 7; # brown + ELSE IF colour = "elpropl" + THEN x = 8; # light purple + ELSE IF colour = "elpropd" + THEN x = 9; # dark purple + ELSE x = random(10); + sfx(caster, 2, 0); + set_hair_colour(caster, x); + +SPELL trick-or-treat : "trick-or-treat" = + (CASTTIME 30000, MANA 20, + COMPONENTS [ "BugLeg" ]) => EFFECT IF (random(2)) + THEN (sfx(caster, 2, 0); + FOR i = 0 TO random(10) DO + drop_item_for (random_location(rbox(location(caster), 5)), + "Candy", 1, 10000 + random(10000), caster, 3000); + FOR i = 0 TO random(10) DO + drop_item_for (random_location(rbox(location(caster), 5)), + "ChocolateBar", 1, 10000 + random(10000), caster, 3000); + ) + ELSE (sfx(caster, 5, 0); + message(caster, "No treat for you!"); + spawn(rbox(location(caster), 3), caster, 1010, 0, 1 + random(3), 10000 + random(20000)); + FOREACH MOB target IN rbox(location(caster), 5) DO + (sfx(target, 5, 0); + aggravate(target, 0, caster);))
\ No newline at end of file diff --git a/conf/map_athena.conf b/conf/map_athena.conf deleted file mode 100644 index 8457e450..00000000 --- a/conf/map_athena.conf +++ /dev/null @@ -1,209 +0,0 @@ -// eAthena Map-Server Configuration File - -// Interserver communication passwords, set in account.txt (or equiv.) -userid: s1 -passwd: p1 - -// Character Server IP -char_ip:81.161.192.4 -// Character Server Port -char_port: 6122 - -// Map Server IP -map_ip:81.161.192.4 -// Map Server Port -map_port: 5122 - -// Database autosave time, in seconds. -autosave_time: 60 - -// Message of the day file, when a character logs on, this message is displayed. -motd_txt: conf/motd.txt - -// When @help or @h is typed when you are a gm, this is displayed for helping new gms understand gm commands. -help_txt: conf/help.txt - -mapreg_txt: save/mapreg.txt - -// import: conf/import/map_conf.txt - -// Maps - -map: new_25-1.gat -map: new_24-1.gat -map: new_23-1.gat -map: new_22-1.gat -map: new_21-1.gat -map: new_20-1.gat -map: new_19-1.gat -map: new_18-1.gat -map: new_17-1.gat -map: new_16-1.gat -map: new_15-1.gat -map: new_14-1.gat -map: new_13-1.gat -map: new_12-1.gat -map: new_11-1.gat -map: new_10-1.gat -map: new_9-1.gat -map: new_8-1.gat -map: new_7-1.gat -map: new_6-1.gat -map: new_5-1.gat -map: new_4-1.gat -map: new_3-1.gat -map: new_2-1.gat -map: new_1-1.gat - -// PVP - -npc: npc/pvp/maps.txt - -// NPCs (ordered in alphabetical order by name). - -// Tulimshar 3-1 -npc: npc/tulimshar/banker.txt -npc: npc/tulimshar/barber.txt -npc: npc/tulimshar/children.txt -npc: npc/tulimshar/elanore.txt -npc: npc/tulimshar/guards.txt -npc: npc/tulimshar/guide.txt -npc: npc/tulimshar/man.txt -npc: npc/tulimshar/merchant.txt -npc: npc/tulimshar/monster_guide.txt -npc: npc/tulimshar/monsters.txt -npc: npc/tulimshar/passages.txt -npc: npc/tulimshar/rewards_master.txt -npc: npc/tulimshar/sandra.txt -npc: npc/tulimshar/vincent.txt - -// Tulimshar casino 8-1 -npc: npc/tulimshar-casino/casino.txt - -// Western desert 1-1 -// npc: npc/western-desert/dark_mage.txt -npc: npc/western-desert/merchant.txt -npc: npc/western-desert/monsters.txt -npc: npc/western-desert/nomads.txt -npc: npc/western-desert/passages.txt - -// Eastern desert 7-1 -npc: npc/eastern-desert/monsters.txt -npc: npc/eastern-desert/passages.txt -npc: npc/eastern-desert/npcs.txt - -// Eastern desert pass 24-1 / 25-1 -npc: npc/eastern-desert-pass/monsters.txt -npc: npc/eastern-desert-pass/passages.txt -npc: npc/eastern-desert-pass/npcs.txt - -// Woodland 9-1 -npc: npc/woodland/alchemist.txt -npc: npc/woodland/monsters.txt -npc: npc/woodland/passages.txt - -// South-woodland 14-1 -npc: npc/south-woodland/monsters.txt -npc: npc/south-woodland/passages.txt - -// Cave level 1 2-1 -npc: npc/cave1/miners.txt -npc: npc/cave1/monsters.txt -npc: npc/cave1/passages.txt - -// Cave level 2 (Underground Palace) 5-1 -npc: npc/cave2/chest.txt -npc: npc/cave2/monsters.txt -npc: npc/cave2/passages.txt - -// Xmas snow map 10-1 -npc: npc/xmas/monsters.txt -npc: npc/xmas/passages.txt -//npc: npc/xmas/santa.txt -npc: npc/xmas/snowman.txt -npc: npc/xmas/taro.txt - -// Snow village 11-1 -//npc: npc/snow-village/monsters.txt -npc: npc/snow-village/sexchanger.txt -npc: npc/snow-village/shops.txt -npc: npc/snow-village/startrek.txt -npc: npc/snow-village/passages.txt - -// Ice cave 12-1 -npc: npc/ice-cave/monsters.txt -npc: npc/ice-cave/passages.txt - -// Small cave 4-1 -npc: npc/cave-small/hermit.txt -npc: npc/cave-small/monsters.txt -npc: npc/cave-small/passages.txt - -// Woodland-desert link 15-1 -npc: npc/woodland-desert/monsters.txt -npc: npc/woodland-desert/passages.txt - -// South-west woodland 16-1 -npc: npc/south-east-woodland/monsters.txt -npc: npc/south-east-woodland/passages.txt - -// Big cave 17-1 -npc: npc/cave-big/monsters.txt -npc: npc/cave-big/passages.txt - -// Arena 6-1 -npc: npc/arena/guards.txt -npc: npc/arena/monsters.txt - -// Woodland village 19-1 -npc: npc/woodland-village/monsters.txt -npc: npc/woodland-village/passages.txt -npc: npc/woodland-village/pirate.txt -npc: npc/woodland-village/villagers.txt -npc: npc/woodland-village/shops.txt -npc: npc/woodland-village/forestbowquest.txt -npc: npc/woodland-village/scythequest.txt -npc: npc/woodland-village/ironore.txt - -//Dimonds Cove -npc: npc/dimonds-cove/passages.txt -npc: npc/dimonds-cove/dimonds.txt -npc: npc/dimonds-cove/doug.txt -npc: npc/dimonds-cove/workers.txt - -// Christmas 2006 -//npc: npc/xmas/xmas1.txt -//npc: npc/xmas/xmas2.txt -//npc: npc/xmas/xmas3.txt -//npc: npc/xmas/xmas4.txt -//npc: npc/xmas/xmas5.txt -//npc: npc/xmas/xmas6.txt -//npc: npc/xmas/xmas7.txt -//npc: npc/xmas/xmas8.txt -//npc: npc/xmas/xmas9.txt -//npc: npc/xmas/xmas10.txt -//npc: npc/xmas/xmas11.txt -//npc: npc/xmas/xmas12.txt -//npc: npc/xmas/xmas13.txt -//npc: npc/xmas/xmas14.txt -//npc: npc/xmas/xmas15.txt -//npc: npc/xmas/xmas16.txt -//npc: npc/xmas/xmas17.txt -//npc: npc/xmas/xmas18.txt -//npc: npc/xmas/xmas19.txt -//npc: npc/xmas/xmas20.txt - -// Halloween 2007 -//npc: npc/halloween/2007/monsters.txt -//npc: npc/halloween/2007/summon.txt - -// Christmas 2007 -//npc: npc/xmas2007/pre-xmas.txt -//npc: npc/xmas2007/after-xmas.txt - -// Easter 2008 -//npc: npc/easter2008/monsters.txt -//npc: npc/easter2008/npc.txt - -//Savepoints -npc: npc/savepoints/savepoints.txt diff --git a/conf/map_athena.conf.example b/conf/map_athena.conf.example new file mode 100644 index 00000000..2b5da330 --- /dev/null +++ b/conf/map_athena.conf.example @@ -0,0 +1,348 @@ +// eAthena Map-Server Configuration File + +// Interserver communication passwords, set in account.txt (or equiv.) +userid: s1 +passwd: p1 + +// Character Server IP +char_ip:81.161.192.4 +// Character Server Port +char_port: 6122 + +// Map Server IP +map_ip:81.161.192.4 +// Map Server Port +map_port: 5122 + +// Database autosave time, in seconds. +autosave_time: 60 + +// Message of the day file, when a character logs on, this message is displayed. +motd_txt: conf/motd.txt + +// When @help or @h is typed when you are a gm, this is displayed for helping new gms understand gm commands. +help_txt: conf/help.txt + +mapreg_txt: save/mapreg.txt + +// import: conf/import/map_conf.txt + +// Maps + +map: new_39-1.gat +map: new_38-1.gat +map: new_37-1.gat +map: new_36-1.gat +map: new_35-1.gat +map: new_34-1.gat +map: new_33-1.gat +map: new_32-1.gat +map: new_31-1.gat +map: new_30-1.gat +map: new_29-1.gat +map: new_28-1.gat +map: new_27-1.gat +map: new_26-1.gat +map: new_25-1.gat +map: new_24-1.gat +map: new_23-1.gat +map: new_22-1.gat +map: new_21-1.gat +map: new_20-1.gat +map: new_19-1.gat +map: new_18-1.gat +map: new_17-1.gat +map: new_16-1.gat +map: new_15-1.gat +map: new_14-1.gat +map: new_13-1.gat +map: new_12-1.gat +map: new_11-1.gat +map: new_10-1.gat +map: new_9-1.gat +map: new_8-1.gat +map: new_7-1.gat +map: new_6-1.gat +map: new_5-1.gat +map: new_4-1.gat +map: new_3-1.gat +map: new_2-1.gat +map: new_1-1.gat + +// NPC Functions +npc: npc/functions/banker.txt +npc: npc/functions/barber.txt +npc: npc/functions/game_rules.txt +npc: npc/functions/inn.txt +npc: npc/functions/mob_points.txt +npc: npc/functions/process_equip.txt +npc: npc/functions/slot_machine.txt +npc: npc/functions/soul_menhir.txt + +// NPCs (ordered by map number). + +// new_1-1 Western desert +// npc: npc/western-desert/dark_mage.txt +npc: npc/new_1-1-western-desert/rogue.txt +npc: npc/new_1-1-western-desert/merchant.txt +npc: npc/new_1-1-western-desert/monsters.txt +npc: npc/new_1-1-western-desert/nomads.txt +npc: npc/new_1-1-western-desert/passages.txt + +// new-2_1 Cave level 1 +npc: npc/new_2-1-cave1/miners.txt +npc: npc/new_2-1-cave1/monsters.txt +npc: npc/new_2-1-cave1/passages.txt + +// new_3-1 Tulimshar +npc: npc/new_3-1-tulimshar/banker.txt +npc: npc/new_3-1-tulimshar/barber.txt +npc: npc/new_3-1-tulimshar/bard.txt +npc: npc/new_3-1-tulimshar/bleacher.txt +npc: npc/new_3-1-tulimshar/children.txt +npc: npc/new_3-1-tulimshar/constable.txt +npc: npc/new_3-1-tulimshar/elanore.txt +npc: npc/new_3-1-tulimshar/guards.txt +npc: npc/new_3-1-tulimshar/guide.txt +npc: npc/new_3-1-tulimshar/man.txt +npc: npc/new_3-1-tulimshar/merchant.txt +npc: npc/new_3-1-tulimshar/monster_guide.txt +npc: npc/new_3-1-tulimshar/monsters.txt +npc: npc/new_3-1-tulimshar/passages.txt +npc: npc/new_3-1-tulimshar/rewards_master.txt +npc: npc/new_3-1-tulimshar/rules.txt +npc: npc/new_3-1-tulimshar/sandra.txt +npc: npc/new_3-1-tulimshar/vincent.txt +npc: npc/new_3-1-tulimshar/soul-menhir.txt +npc: npc/new_3-1-tulimshar/workers.txt + +// new_4-1 Small bat cave +npc: npc/new_4-1-cave-small/hermit.txt +npc: npc/new_4-1-cave-small/monsters.txt +npc: npc/new_4-1-cave-small/passages.txt + +// new_5-1 Cave level 2 (Underground Palace) +npc: npc/new_5-1-cave2/chest.txt +npc: npc/new_5-1-cave2/monsters.txt +npc: npc/new_5-1-cave2/passages.txt + +// new_6-1 Arena +npc: npc/new_6-1-arena/guards.txt +npc: npc/new_6-1-arena/monsters.txt +npc: npc/new_6-1-arena/pvpflag.txt + +// new_7-1 Eastern desert +npc: npc/new_7-1-eastern-desert/monsters.txt +npc: npc/new_7-1-eastern-desert/passages.txt +npc: npc/new_7-1-eastern-desert/npcs.txt + +// new_8-1 Tulimshar indoor +npc: npc/new_8-1-tulimshar/casino.txt +npc: npc/new_8-1-tulimshar/omar.txt +npc: npc/new_8-1-tulimshar/passages.txt +npc: npc/new_8-1-tulimshar/phaet.txt +npc: npc/new_8-1-tulimshar/shops.txt +npc: npc/new_8-1-tulimshar/troupe_leader.txt + +// new_9-1 Woodland +npc: npc/new_9-1-woodland/alchemist.txt +npc: npc/new_9-1-woodland/monsters.txt +npc: npc/new_9-1-woodland/passages.txt +npc: npc/new_9-1-woodland/oscar.txt + +// new_10-1 Xmas snow map +npc: npc/new_10-1-xmas/monsters.txt +npc: npc/new_10-1-xmas/passages.txt +// npc: npc/new_10-1-xmas/santa.txt +npc: npc/new_10-1-xmas/snowman.txt +npc: npc/new_10-1-xmas/taro.txt + +// new_11-1 Snow village +// npc: npc/new_11-1-snow-village/monsters.txt +npc: npc/new_11-1-snow-village/sexchanger.txt +npc: npc/new_11-1-snow-village/startrek.txt +npc: npc/new_11-1-snow-village/passages.txt +npc: npc/new_11-1-snow-village/soul-menhir.txt +npc: npc/new_11-1-snow-village/amrak.txt + +// new_12-1 Ice cave +npc: npc/new_12-1-ice-cave/monsters.txt +npc: npc/new_12-1-ice-cave/passages.txt + +// new_13-1 Snow village shops. +npc: npc/new_13-1-snow-village-shops/shops.txt +npc: npc/new_13-1-snow-village-shops/passages.txt +npc: npc/new_13-1-snow-village-shops/furquest.txt + +// new_14-1 South-woodland +npc: npc/new_14-1-south-woodland/monsters.txt +npc: npc/new_14-1-south-woodland/passages.txt + +// new_15-1 Woodland-desert link +npc: npc/new_15-1-woodland-desert/monsters.txt +npc: npc/new_15-1-woodland-desert/passages.txt + +// new_16-1 South-west woodland +npc: npc/new_16-1-south-east-woodland/monsters.txt +npc: npc/new_16-1-south-east-woodland/passages.txt + +// new_17-1 Big cave +npc: npc/new_17-1-cave-big/monsters.txt +npc: npc/new_17-1-cave-big/passages.txt + +// new_18-1 Woodland village surroundings +npc: npc/new_18-1-woodland-village/monsters.txt +npc: npc/new_18-1-woodland-village/passages.txt +npc: npc/new_18-1-woodland-village/george.txt +npc: npc/new_18-1-woodland-village/hinnak.txt + +// new_19-1 Woodland village +npc: npc/new_19-1-woodland-village/jack.txt +npc: npc/new_19-1-woodland-village/milly.txt +npc: npc/new_19-1-woodland-village/old_man.txt +npc: npc/new_19-1-woodland-village/old_woman.txt +npc: npc/new_19-1-woodland-village/passages.txt +npc: npc/new_19-1-woodland-village/sabine.txt +npc: npc/new_19-1-woodland-village/soul-menhir.txt + +// new_20-1 Woodland village indoor +npc: npc/new_20-1-woodland-village/alan.txt +npc: npc/new_20-1-woodland-village/doctor.txt +npc: npc/new_20-1-woodland-village/drunks.txt +npc: npc/new_20-1-woodland-village/inspector.txt +npc: npc/new_20-1-woodland-village/kfahr.txt +npc: npc/new_20-1-woodland-village/misc.txt +npc: npc/new_20-1-woodland-village/nicholas.txt +npc: npc/new_20-1-woodland-village/nurse.txt +npc: npc/new_20-1-woodland-village/passages.txt +npc: npc/new_20-1-woodland-village/richard.txt +npc: npc/new_20-1-woodland-village/selim.txt +npc: npc/new_20-1-woodland-village/shops.txt +npc: npc/new_20-1-woodland-village/waitress.txt + +// new_21-1 Ice cave 2 +npc: npc/new_21-1-ice-cave2/monsters.txt +npc: npc/new_21-1-ice-cave2/passages.txt + +// new_22-1 Snake cave +npc: npc/new_22-1-snake-cave/monsters.txt +npc: npc/new_22-1-snake-cave/passages.txt + +// new_23-1 Dimonds Cove +npc: npc/new_23-1-dimonds-cove/passages.txt +npc: npc/new_23-1-dimonds-cove/dimonds.txt +npc: npc/new_23-1-dimonds-cove/doug.txt +npc: npc/new_23-1-dimonds-cove/loratay.txt +npc: npc/new_23-1-dimonds-cove/workers.txt + +// new_24-1 Eastern desert mountain passage +npc: npc/new_24-1-eastern-desert-mountain-passage/mika.txt +npc: npc/new_24-1-eastern-desert-mountain-passage/monsters.txt +npc: npc/new_24-1-eastern-desert-mountain-passage/pachua.txt +npc: npc/new_24-1-eastern-desert-mountain-passage/passages.txt + +// new_25-1 Eastern desert cave +npc: npc/new_25-1-eastern-desert-cave/monsters.txt +npc: npc/new_25-1-eastern-desert-cave/passages.txt + +// new_26-1 Forest Hill 1 +npc: npc/new_26-1-hill1/monsters.txt +npc: npc/new_26-1-hill1/passages.txt +npc: npc/new_26-1-hill1/shops.txt + +// new_27-1 Forest Hill 2 (Cave) +npc: npc/new_27-1-hill2/monsters.txt +npc: npc/new_27-1-hill2/passages.txt + +// new_28-1 Forest east of map 26 +npc: npc/new_28-1-hillwest/passages.txt +npc: npc/new_28-1-hillwest/monsters.txt + +// new_29-1 Forest west of map 9 +npc: npc/new_29-1-west-woodland/passages.txt +npc: npc/new_29-1-west-woodland/monsters.txt +npc: npc/new_29-1-west-woodland/taro.txt +npc: npc/new_29-1-west-woodland/wedding-officiator.txt + +// new_30-1 Caves for map 29 +npc: npc/new_30-1-west-woodland-cave/passages.txt +npc: npc/new_30-1-west-woodland-cave/monsters.txt + +// new_31-1 Forest west of map 14 +npc: npc/new_31-1-southwest-woodland/passages.txt +npc: npc/new_31-1-southwest-woodland/monsters.txt +npc: npc/new_31-1-southwest-woodland/alice.txt + +// new_32-1 Forest south of map 14 +npc: npc/new_32-1-south-woodland-2/passages.txt +npc: npc/new_32-1-south-woodland-2/monsters.txt + +// new_33-1 Forest north of map 28 +npc: npc/new_33-1-hill-northwest/passages.txt +npc: npc/new_33-1-hill-northwest/monsters.txt + +// new_34-1 Beach west of Tulimshar +npc: npc/new_34-1-north-beach/passages.txt +npc: npc/new_34-1-north-beach/monsters.txt + +// new_35-1 Cave beneath Hurnscald +npc: npc/new_35-1-woodland-village/passages.txt +npc: npc/new_35-1-woodland-village/monsters.txt + +// new_36-1 Magic house in forest 28 +npc: npc/new_36-1-magic-house/passages.txt +npc: npc/new_36-1-magic-house/wizard.txt +npc: npc/new_36-1-magic-house/apprentice.txt +npc: npc/new_36-1-magic-house/notes.txt + +// new_37-1 Mine north of Hurnscald +npc: npc/new_37-1-woodland-mine/miners.txt +npc: npc/new_37-1-woodland-mine/monsters.txt +npc: npc/new_37-1-woodland-mine/passages.txt + +// new_38-1 Mines north of Hurnscald (indoor) +npc: npc/new_38-1-woodland-mine/angus.txt +npc: npc/new_38-1-woodland-mine/books.txt +npc: npc/new_38-1-woodland-mine/caul.txt +npc: npc/new_38-1-woodland-mine/miners.txt +npc: npc/new_38-1-woodland-mine/monsters.txt +npc: npc/new_38-1-woodland-mine/passages.txt +npc: npc/new_38-1-woodland-mine/receptionist.txt + +// Christmas 2006 +// npc: npc/xmas/xmas1.txt +// npc: npc/xmas/xmas2.txt +// npc: npc/xmas/xmas3.txt +// npc: npc/xmas/xmas4.txt +// npc: npc/xmas/xmas5.txt +// npc: npc/xmas/xmas6.txt +// npc: npc/xmas/xmas7.txt +// npc: npc/xmas/xmas8.txt +// npc: npc/xmas/xmas9.txt +// npc: npc/xmas/xmas10.txt +// npc: npc/xmas/xmas11.txt +// npc: npc/xmas/xmas12.txt +// npc: npc/xmas/xmas13.txt +// npc: npc/xmas/xmas14.txt +// npc: npc/xmas/xmas15.txt +// npc: npc/xmas/xmas16.txt +// npc: npc/xmas/xmas17.txt +// npc: npc/xmas/xmas18.txt +// npc: npc/xmas/xmas19.txt +// npc: npc/xmas/xmas20.txt + +// Halloween 2007 +// npc: npc/halloween/2007/monsters.txt +// npc: npc/halloween/2007/summon.txt + +// Christmas 2007 +// npc: npc/xmas2007/pre-xmas.txt +// npc: npc/xmas2007/after-xmas.txt + +// Easter 2008 +// npc: npc/easter2008/monsters.txt +// npc: npc/easter2008/npc.txt + +// Halloween 2008 +npc: npc/halloween/2008/monsters.txt +npc: npc/halloween/2008/prize_master.txt diff --git a/conf/motd.txt b/conf/motd.txt.example index f570494c..f570494c 100644 --- a/conf/motd.txt +++ b/conf/motd.txt.example diff --git a/conf/msg_athena.conf b/conf/msg_athena.conf.example index 1aacf66b..1aacf66b 100644 --- a/conf/msg_athena.conf +++ b/conf/msg_athena.conf.example diff --git a/conf/script_athena.conf b/conf/script_athena.conf.example index 21d4a6f4..21d4a6f4 100644 --- a/conf/script_athena.conf +++ b/conf/script_athena.conf.example |