diff options
71 files changed, 340 insertions, 173 deletions
diff --git a/GNUmakefile b/GNUmakefile index c22fe72f..35036514 100644 --- a/GNUmakefile +++ b/GNUmakefile @@ -9,8 +9,9 @@ maps: cp "$|" "$@" conf: world/map/conf/magic-secrets.sex \ login/conf/login_local.conf login/conf/ladmin_local.conf login/save/gm_account.txt login/save/account.txt \ +world/conf/char_local.conf \ world/map/conf/map_local.conf world/map/conf/battle_local.conf world/map/conf/motd.txt world/map/conf/atcommand_local.conf world/map/db/const-debugflag.txt \ -world/conf/char_local.conf +conf/monitor_local.conf world/map/conf/magic-secrets.sex: world/map/conf/magic-secrets.sex.template world/map/conf/secrets-build cd world/map/conf && ./build-magic.sh diff --git a/client-data b/client-data -Subproject 2e8b666605df4c5781c9f6eb98698fd2ff334dc +Subproject cea23ffc899bf70b180f9ede4d08277bf260e94 diff --git a/conf/.gitignore b/conf/.gitignore new file mode 100644 index 00000000..2c43e911 --- /dev/null +++ b/conf/.gitignore @@ -0,0 +1 @@ +/*_local.conf diff --git a/conf/monitor_athena.conf b/conf/monitor_athena.conf new file mode 100644 index 00000000..68fe65f6 --- /dev/null +++ b/conf/monitor_athena.conf @@ -0,0 +1,82 @@ +// Athena Monitor configuration file. + +////////////////////////////////////////////////////////////////////// +// Some notes about the existence of this file: +// +// tmwa-monitor is unused in its current form, but plans are +// to resurrect it in *some* form. See below for what we do use. +// However, an alternative possibility would be to just install config +// files to integrate with some existing daemon-monitoring tool. +// +// THAT SAID, blindly restarting a server that exited in an unknown +// way is a really great way to get unrecoverable savefile corruption. +// For this reason, we only auto-restart the map server, which only +// persists some unimportant global variables such as high scores. +// Besides, the other servers are stable enough that they rarely crash. +// +// This monitor names three "server"s, but they are just arbitrary. +// This is not enough for the case of multiple worlds, +// and is too much for the case of worlds running as different users. +// +// Currently the server variables are pointing to local shell scripts +// (which are themselves deprecated and print a flashing message), +// which is necessary because the actual servers need to be run inside +// the appropriate dir to read conf and read/write savefiles from/to +// the correct location. This will get better once savefiles get put +// in $localstatedir (i.e. /var), but it's not yet known how that +// should interact with multiple worlds running at the same time. +// +// Likely, however, this will depend on the ability to pass a config +// file as an argument to the servers. +// +// The workdir setting would make a lot more sense if this file was +// installed in $sysconfdir (i.e. /etc) by tmwa's `make install`, +// which is still planned but hasn't happened yet, but makes *less* +// sense if the servers install their config there. +// +// And regardless, we need to allow per-server workdirs, including +// multiple instances, and possible pre/post scripts and exit/signal +// status handlers. But all that seems complicated, leading back to +// "shouldn't we just use an existing daemon manager?". +// +// Alternatively, we could act like an XDG application, which is +// admittedly somewhat odd if you're a daemon, but would at least +// clarify what happens if you run the servers as a user (which we +// do always. When an init script is written, it should run as +// somebody other than root!). +// +////////////////////////////////////////////////////////////////////// +// +// What we actually use instead of tmwa-monitor: +// +// On the main server, we run a tmux session, with one window +// for each server and for each bot. The servers are run directly +// from inside the appropriate directory. +// +// The test server is like the main server without bots, but instead +// of running `tmwa-map` directly, we use the tmwa-map-wrapper script +// from tools/, which restarts the server whenever it exits and merges +// tagged patches from github, except that it does no merges if the +// server exited too quickly after the restart. +// +// On local dev machines, we usually use the `./run-all` script from +// this repo. +// +////////////////////////////////////////////////////////////////////// + + +// Binary to use with message "forked login server". +login_server: ./login-server + +// Binary to use with message "forked char server". +char_server: ./char-server + +// Binary to use with message "forked map server". +map_server: ./map-server + +// Directory in which to run the servers. +// If never set, dynamically computed as $HOME/tmwserver +//workdir: /path/to/tmwa-server-data + +// local settings for this nonserver in this file +import: conf/monitor_local.conf diff --git a/conf/monitor_local.conf.example b/conf/monitor_local.conf.example new file mode 100644 index 00000000..32d168db --- /dev/null +++ b/conf/monitor_local.conf.example @@ -0,0 +1 @@ +// Athena Monitor local configuration file. diff --git a/conf/tmwa-monitor.conf b/conf/tmwa-monitor.conf new file mode 100644 index 00000000..db630d47 --- /dev/null +++ b/conf/tmwa-monitor.conf @@ -0,0 +1,6 @@ +// Master config file for The Mana World Athena (monitor component) +// This file is used since version 14.x.y, but major changes in 15.x.y + +// tmwa-monitor is deprecated, see comments in the below file + +monitor_conf: conf/monitor_athena.conf diff --git a/login/conf/login_athena.conf b/login/conf/login_athena.conf index 41b038a7..a14cfa6f 100644 --- a/login/conf/login_athena.conf +++ b/login/conf/login_athena.conf @@ -16,14 +16,6 @@ gm_account_filename_check_timer: 15 // General log. login_log_filename: log/login.log -// Log for unknown packets. -login_log_unknown_packets_filename: log/login_unknown_packets.log - -// Are unknown packets from the client saved? -// (unknown internal packets are always saved) -// This is not nice to your hard drive. -save_unknown_packets: no - // Print basic header information about incoming client packets. // Also print a little more about client or char auth attempts. display_parse_login: no @@ -41,22 +33,6 @@ display_parse_fromchar: 0 // 0: all players, 1-99: GM level at least this. min_level_to_connect: 0 -// Behavior of relative time adjustments for unlimited accounts. -// If true, ladmin timeadd will first set the limit to right now. -// If false, ladmin timeadd will do nothing on unlimited accounts. -// In either case, you can use ladmin timeset. -add_to_unlimited_account: off - -// Time, in seconds, that a new account has before it expires. -// Set to -1 for unlimited time. -// Use of this setting is not condoned by The Mana World. -//start_limited_time: -1 - -// Check that a player has the same IP when switching from login to char. -// To use this, your lan_support.conf files MUST be correct. -// Disabling this setting is not supported. -check_ip_flag: yes - // How the IP allow/deny lists (below) are interpreted. // Possible values: // "deny, allow" (default): diff --git a/login/conf/tmwa-admin-old.conf b/login/conf/tmwa-admin-old.conf new file mode 100644 index 00000000..7670b002 --- /dev/null +++ b/login/conf/tmwa-admin-old.conf @@ -0,0 +1,6 @@ +// Master config file for The Mana World Athena (admin component) +// This file is used since version 14.x.y + +version-lt: 15.1.23 + +import: conf/ladmin_athena.conf diff --git a/login/conf/tmwa-admin.conf b/login/conf/tmwa-admin.conf index 4584fa13..69f333d9 100644 --- a/login/conf/tmwa-admin.conf +++ b/login/conf/tmwa-admin.conf @@ -1,4 +1,7 @@ // Master config file for The Mana World Athena (admin component) -// This file is used since version 14.x.y +// This file is used since version 14.x.y, but major changes in 15.x.y -import: conf/ladmin_athena.conf +import: conf/tmwa-admin-old.conf +version-ge: 15.1.23 + +admin_conf: conf/ladmin_athena.conf diff --git a/login/conf/tmwa-login-old.conf b/login/conf/tmwa-login-old.conf new file mode 100644 index 00000000..907ada2e --- /dev/null +++ b/login/conf/tmwa-login-old.conf @@ -0,0 +1,7 @@ +// Master config file for The Mana World Athena (login component) +// This file is used since version 14.x.y + +version-lt: 15.1.23 + +import: conf/login_athena.conf +import: conf/lan_support.conf diff --git a/login/conf/tmwa-login.conf b/login/conf/tmwa-login.conf index 89eb61ae..44e3adfe 100644 --- a/login/conf/tmwa-login.conf +++ b/login/conf/tmwa-login.conf @@ -1,5 +1,8 @@ // Master config file for The Mana World Athena (login component) -// This file is used since version 14.x.y +// This file is used since version 14.x.y, but major changes in 15.x.y -import: conf/login_athena.conf -import: conf/lan_support.conf +import: conf/tmwa-login-old.conf +version-ge: 15.1.23 + +login_conf: conf/login_athena.conf +login_lan_conf: conf/lan_support.conf diff --git a/world/conf/char_athena.conf b/world/conf/char_athena.conf index 73aab23c..ee2cba1b 100644 --- a/world/conf/char_athena.conf +++ b/world/conf/char_athena.conf @@ -5,11 +5,6 @@ // of just under 1024 per server (but a world may be many servers). max_connect_user: 0 -// Check that a player has the same IP when switching from char to map. -// To use this, your lan_support.conf files MUST be correct. -// Disabling this is not supported. -check_ip_flag: yes - // Interval, in seconds, between saves of the flatfile databases. autosave_time: 300 @@ -23,15 +18,6 @@ start_point: 029-2.gat,22,24 // Log Filename char_log_filename: log/char.log -// Manage possible letters/symbol in the name of charater. -// Control character (0x00-0x1f) are never accepted. Possible values are: -// 0: no restriction (builtin default, but please don't use) -// 1: only letters/symbols in 'char_name_letters' option -// 2: Letters/symbols in 'char_name_letters' option are forbidden. -// All others are possible (please don't use this). -// Setting this to anything but 1 is not recommended. -char_name_option: 1 - // Set the letters/symbols that you want use with 'char_name_option'. // This is a cumulative option; specify nothing to reset it. // Note: if you want to add a space, it can't be at the beginning or end. diff --git a/world/conf/char_local.conf.example b/world/conf/char_local.conf.example index 4beab7c9..920d7892 100644 --- a/world/conf/char_local.conf.example +++ b/world/conf/char_local.conf.example @@ -7,9 +7,6 @@ passwd: p1 // Server name, no more than 19 characters 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 - // Login Server IP login_ip:127.0.0.1 // Login Server Port diff --git a/world/conf/tmwa-char-old.conf b/world/conf/tmwa-char-old.conf new file mode 100644 index 00000000..b7e37735 --- /dev/null +++ b/world/conf/tmwa-char-old.conf @@ -0,0 +1,8 @@ +// Master config file for The Mana World Athena (char component) +// This file is used since version 14.x.y + +version-lt: 15.1.23 + +import: conf/char_athena.conf +import: conf/lan_support.conf +import: conf/inter_athena.conf diff --git a/world/conf/tmwa-char.conf b/world/conf/tmwa-char.conf index a55cff1f..84213139 100644 --- a/world/conf/tmwa-char.conf +++ b/world/conf/tmwa-char.conf @@ -1,6 +1,8 @@ // Master config file for The Mana World Athena (char component) -// This file is used since version 14.x.y +// This file is used since version 14.x.y, but major changes in 15.x.y -import: conf/char_athena.conf -import: conf/lan_support.conf -import: conf/inter_athena.conf +import: conf/tmwa-char-old.conf +version-ge: 15.1.23 +char_conf: conf/char_athena.conf +char_lan_conf: conf/lan_support.conf +inter_conf: conf/inter_athena.conf diff --git a/world/map/conf/battle_athena.conf b/world/map/conf/battle_athena.conf index 8288601d..6e80b1e7 100644 --- a/world/map/conf/battle_athena.conf +++ b/world/map/conf/battle_athena.conf @@ -99,8 +99,8 @@ monster_max_aspd: 199 // set to 'Yes', Normal players (gm level 0) can never use a GM command even if you set the command level to 0. atcommand_gm_only: no -// [GM] Can equip anything? (No or minimum GM level, can cause client errors.) -gm_all_equipment: no +// [GM] Can equip anything? (0 to disable, or minimum GM level, can cause client errors.) +gm_all_equipment: 0 // Should GMs be given a hashed IP instead of the real one? mask_ip_gms: 1 @@ -131,9 +131,6 @@ natural_healhp_interval: 6000 // The time interval for SP to restore naturally. (in milliseconds) natural_healsp_interval: 8000 -// Automatic healing skill's time interval. (in milliseconds) -natural_heal_skill_interval: 10000 - // The maximum weight for a character to carry when the character stops healing naturally. (in %) natural_heal_weight_rate: 50 @@ -211,12 +208,6 @@ prevent_logout: yes // If skill fails by delay, should it display or not. (Note 1) display_delay_skill_fail: yes -// Is a monster summoned via dead branch aggresive? (Note 1) -dead_branch_active: yes - -// If someone loots, show name in party? (Note 1) -show_steal_in_same_party: no - // How to count the number of the enemies who do an agi penalty... // 1 or less: It is a count altogether. // 2: Full evasion exclusion diff --git a/world/map/conf/map_athena.conf b/world/map/conf/map_athena.conf index f03c0123..f0f59fd7 100644 --- a/world/map/conf/map_athena.conf +++ b/world/map/conf/map_athena.conf @@ -6,9 +6,6 @@ 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: npc/scripts.conf diff --git a/world/map/conf/map_local.conf.example b/world/map/conf/map_local.conf.example index 894a43d3..d4270347 100644 --- a/world/map/conf/map_local.conf.example +++ b/world/map/conf/map_local.conf.example @@ -15,4 +15,4 @@ map_ip: 127.0.0.1 map_port: 5122 // Log of map actions, disabled by default because this is huge. -//map_log: log/map.log +//log_file: log/map.log diff --git a/world/map/conf/tmwa-map.conf b/world/map/conf/tmwa-map.conf index 44ac5757..10dd615e 100644 --- a/world/map/conf/tmwa-map.conf +++ b/world/map/conf/tmwa-map.conf @@ -5,7 +5,6 @@ // Older server versions hard-coded the loaders in (mostly) this order, // and there may still be code dependencies. -// The plan is to turn some of these into just plain 'import' eventually? map_conf: conf/map_athena.conf battle_conf: conf/battle_athena.conf atcommand_conf: conf/atcommand_athena.conf @@ -15,22 +14,22 @@ const_db: db/const-quest.txt const_db: db/const-mapflags.txt const_db: db/const-debugflag.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 -mob_db: db/60_79_mob_db.txt -mob_db: db/80_99_mob_db.txt -mob_db: db/over_100_mob_db.txt +item_db: db/item_db_chest.txt +item_db: db/item_db_foot.txt +item_db: db/item_db_generic.txt +item_db: db/item_db_hand.txt +item_db: db/item_db_head.txt +item_db: db/item_db_leg.txt +item_db: db/item_db_offhand.txt +item_db: db/item_db_trinket.txt +item_db: db/item_db_use.txt +item_db: db/item_db_weapon.txt +mob_db: db/mob_db_0_19.txt +mob_db: db/mob_db_20_39.txt +mob_db: db/mob_db_40_59.txt +mob_db: db/mob_db_60_79.txt +mob_db: db/mob_db_80_99.txt +mob_db: db/mob_db_over_100.txt mob_skill_db: db/mob_skill_db.txt skill_db: db/skill_db.txt diff --git a/world/map/data/027-4.wlk b/world/map/data/027-4.wlk Binary files differindex 4d561765..0933cbc6 100644 --- a/world/map/data/027-4.wlk +++ b/world/map/data/027-4.wlk diff --git a/world/map/data/031-1.wlk b/world/map/data/031-1.wlk Binary files differindex 7ca3abd2..130fd021 100644 --- a/world/map/data/031-1.wlk +++ b/world/map/data/031-1.wlk diff --git a/world/map/db/chest_item_db.txt b/world/map/db/item_db_chest.txt index de94086c..de94086c 100644 --- a/world/map/db/chest_item_db.txt +++ b/world/map/db/item_db_chest.txt diff --git a/world/map/db/foot_item_db.txt b/world/map/db/item_db_foot.txt index e86be1c2..5d0537dc 100644 --- a/world/map/db/foot_item_db.txt +++ b/world/map/db/item_db_foot.txt @@ -1,6 +1,6 @@ // 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, {}, {} +528, Boots, Boots, 5, 2000, 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, {}, {} diff --git a/world/map/db/generic_item_db.txt b/world/map/db/item_db_generic.txt index efae1569..efae1569 100644 --- a/world/map/db/generic_item_db.txt +++ b/world/map/db/item_db_generic.txt diff --git a/world/map/db/hand_item_db.txt b/world/map/db/item_db_hand.txt index d57062b5..d57062b5 100644 --- a/world/map/db/hand_item_db.txt +++ b/world/map/db/item_db_hand.txt diff --git a/world/map/db/head_item_db.txt b/world/map/db/item_db_head.txt index 922ea4b3..a82e68b7 100644 --- a/world/map/db/head_item_db.txt +++ b/world/map/db/item_db_head.txt @@ -27,14 +27,14 @@ 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, {}, {} +654, Cap, Cap, 5, 4000000, 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;} +721, HighPriestCrown, High Priest Crown, 5, 6000000, 5000, 400, 0, 4, 0, 20, 0, 2, 256, 0, 0, 0, {}, {bonus bMaxSP, 20;} +722, MonsterSkullHelmet, Monster Skull Helmet, 5, 6000000, 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";} diff --git a/world/map/db/leg_item_db.txt b/world/map/db/item_db_leg.txt index 95fb53b4..173b8f98 100644 --- a/world/map/db/leg_item_db.txt +++ b/world/map/db/item_db_leg.txt @@ -11,7 +11,7 @@ 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, 1, 0, -2, 0, 2, 1, 0, 1, 0, {}, {} -1172, SilkPants, Silk Pants, 5, 5000, 750, 10, 0, 2, 0, 0, 0, 2, 1, 0, 1, 0, {}, {} +1172, SilkPants, Silk Pants, 5, 20000, 750, 10, 0, 2, 0, 0, 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} 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, {}, {} diff --git a/world/map/db/offhand_item_db.txt b/world/map/db/item_db_offhand.txt index a36e1778..a36e1778 100644 --- a/world/map/db/offhand_item_db.txt +++ b/world/map/db/item_db_offhand.txt diff --git a/world/map/db/trinket_item_db.txt b/world/map/db/item_db_trinket.txt index f3b77bc9..b589f249 100644 --- a/world/map/db/trinket_item_db.txt +++ b/world/map/db/item_db_trinket.txt @@ -18,4 +18,4 @@ 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, {}, {} +4014, SimpleRing, Simple Ring, 5, 100000, 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/item_db_use.txt index b2b13008..b2b13008 100644 --- a/world/map/db/use_item_db.txt +++ b/world/map/db/item_db_use.txt diff --git a/world/map/db/weapon_item_db.txt b/world/map/db/item_db_weapon.txt index a16425f8..0a36f27d 100644 --- a/world/map/db/weapon_item_db.txt +++ b/world/map/db/item_db_weapon.txt @@ -3,7 +3,7 @@ 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";} +530, ShortBow, Short Bow, 4, 2000, 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";} @@ -56,8 +56,8 @@ 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, 3, 0, 0, 0, 0, 2, 32768, 0, 0, 0, {}, {set @AmmoType, AMMO_SLING; callfunc "CheckAmmo";} 906, KidBook, Kid Book, 4, 10000, 5000, 100, 1, 0, 3, 0, 0, 2, 34, 1, 1, 1, {}, {} -1199, Arrow, Arrow, 10, 2, 1, 1, 20, 0, 0, 0, 0, 2, 32768, 0, 0, 0, {}, {set @AmmoType, AMMO_BOW; callfunc "CheckAmmo";} +1199, Arrow, Arrow, 10, 1, 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, {}, {} +1215, ToySabre, Toy Sabre, 4, 2000000, 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/db/0_19_mob_db.txt b/world/map/db/mob_db_0_19.txt index 36169593..36169593 100644 --- a/world/map/db/0_19_mob_db.txt +++ b/world/map/db/mob_db_0_19.txt diff --git a/world/map/db/20_39_mob_db.txt b/world/map/db/mob_db_20_39.txt index b0d1d096..b0d1d096 100644 --- a/world/map/db/20_39_mob_db.txt +++ b/world/map/db/mob_db_20_39.txt diff --git a/world/map/db/40_59_mob_db.txt b/world/map/db/mob_db_40_59.txt index a27c015c..a27c015c 100644 --- a/world/map/db/40_59_mob_db.txt +++ b/world/map/db/mob_db_40_59.txt diff --git a/world/map/db/60_79_mob_db.txt b/world/map/db/mob_db_60_79.txt index 5dd9231a..5dd9231a 100644 --- a/world/map/db/60_79_mob_db.txt +++ b/world/map/db/mob_db_60_79.txt diff --git a/world/map/db/80_99_mob_db.txt b/world/map/db/mob_db_80_99.txt index d6cdde0c..d6cdde0c 100644 --- a/world/map/db/80_99_mob_db.txt +++ b/world/map/db/mob_db_80_99.txt diff --git a/world/map/db/over_100_mob_db.txt b/world/map/db/mob_db_over_100.txt index 3644b4dc..3644b4dc 100644 --- a/world/map/db/over_100_mob_db.txt +++ b/world/map/db/mob_db_over_100.txt diff --git a/world/map/npc/001-1/north_shops.txt b/world/map/npc/001-1/north_shops.txt index a207ccaf..592e351c 100644 --- a/world/map/npc/001-1/north_shops.txt +++ b/world/map/npc/001-1/north_shops.txt @@ -1,6 +1,6 @@ // Northern shopping plaza -001-1.gat,106,105,0|shop|Neko|101,TonoriDelight:*50,CactusDrink:*50,CactusPotion:*70,RoastedMaggot:*110,Beer:*175,ChickenLeg:*500 -001-1.gat,111,108,0|shop|Inar|108,CottonShirt:*300,SerfHat:*500,CottonShorts:*1000,CottonBoots:*2000,DesertShirt:*2000,CottonHeadband:*3000,DesertHat:*9600 +001-1.gat,106,105,0|shop|Neko|101,TonoriDelight:*10,CactusDrink:*1,CactusPotion:*1,RoastedMaggot:*1,Beer:*1,ChickenLeg:*2 +001-1.gat,111,108,0|shop|Inar|108,CottonShirt:*1,SerfHat:*1,CottonShorts:*1,CottonBoots:*1,DesertShirt:*1,CottonHeadband:*1,DesertHat:*4 001-1.gat,48,79,0|script|Well|400 { callfunc "WaterBottle"; diff --git a/world/map/npc/001-2/forge_shops.txt b/world/map/npc/001-2/forge_shops.txt index 5f2ab3ba..f98d7265 100644 --- a/world/map/npc/001-2/forge_shops.txt +++ b/world/map/npc/001-2/forge_shops.txt @@ -1,4 +1,4 @@ // Forge Shops -001-2.gat,30,60,0|shop|Gungnir|311,SlingShot:*500,SlingBullet:*1,ShortBow:*8000,Arrow:*1,IronArrow:*4 -001-2.gat,25,59,0|shop|Mjolnir|377,Knife:*50,SharpKnife:*100,Dagger:*1000,LeatherShirt:*2000,LeatherShield:*2000 +001-2.gat,30,60,0|shop|Gungnir|311,SlingShot:*1,SlingBullet:*1,ShortBow:*4,Arrow:1,IronArrow:*1 +001-2.gat,25,59,0|shop|Mjolnir|377,Knife:*1,SharpKnife:*1,Dagger:*1,LeatherShirt:*1,LeatherShield:*1 diff --git a/world/map/npc/002-2/bakery.txt b/world/map/npc/002-2/bakery.txt index b97c41c1..e5328723 100644 --- a/world/map/npc/002-2/bakery.txt +++ b/world/map/npc/002-2/bakery.txt @@ -129,7 +129,7 @@ L_End: } // The cashier -002-2.gat,25,22,0|shop|Drabur|112,WhiteCake:*500,ChocolateCake:*550,OrangeCake:*600,AppleCake:*600,Cake:*30,CherryCake:*100,OrangeCupcake:*270,Milk:*1500,XmasCake:*70 +002-2.gat,25,22,0|shop|Drabur|112,WhiteCake:*1,ChocolateCake:*1,OrangeCake:*1,AppleCake:*1,Cake:*1,CherryCake:*1,OrangeCupcake:*1,Milk:*1,XmasCake:*1 // Bus boy 002-2.gat,21,28,0|script|Iormo|160 diff --git a/world/map/npc/002-2/casino.txt b/world/map/npc/002-2/casino.txt index 4733bb63..d49313a6 100644 --- a/world/map/npc/002-2/casino.txt +++ b/world/map/npc/002-2/casino.txt @@ -40,7 +40,7 @@ L_End: close; } -002-2.gat,78,56,0|shop|MoneyChanger|124,CasinoCoins:*10 +002-2.gat,78,56,0|shop|MoneyChanger|124,CasinoCoins:*1 002-2.gat,75,60,0|script|BlackJack|107 { @@ -153,7 +153,6 @@ L_b100: L_Check: if(countitem("CasinoCoins") < @bet) goto L_NoCoin; - delitem "CasinoCoins", @bet; menu "Choose a color", L_PickColor, "Choose a number", L_Number; @@ -164,6 +163,7 @@ L_PickColor: "Red", L_Color; L_Color: + delitem "CasinoCoins", @bet; set @color,rand(2); if(@color == 1) goto L_Lost; mes "You won!"; @@ -178,6 +178,7 @@ L_Number: "29", L_Menuitems, "30", L_Menuitems, "31", L_Menuitems, "32", L_Menuitems, "33", L_Menuitems, "34", L_Menuitems, "35", L_Menuitems, "36", L_Menuitems; L_Menuitems: + delitem "CasinoCoins", @bet; if (@menu == 1) set @number, 0; if (@menu == 2) set @number, 37; if (@menu >= 3) set @number, @menu - 2; diff --git a/world/map/npc/002-2/inya.txt b/world/map/npc/002-2/inya.txt index 322d0eb3..d05b19b4 100644 --- a/world/map/npc/002-2/inya.txt +++ b/world/map/npc/002-2/inya.txt @@ -1,13 +1,13 @@ //Gemstones: Diamond (white) , Ruby (red), Emerald (green), Sapphire (blue), Topaz (yellow), Amethyst (purple) //The power of the gems is important to future balance of these rings. Are they related to stats, tiers of power, schools of magic? -002-2.gat,116,61,0|shop|#InyaShop|127,SimpleRing:*100000 +002-2.gat,116,61,0|shop|#InyaShop|127,SimpleRing:*1 002-2.gat,116,61,0|script|Inya|106 { mes "[Inya]"; mes "\"I am Inya, a jeweler of fine rings. I sell and make rings.\""; - next; + next; mes "\"If you have a Simple Ring and a gem, I can set the gem in it for 100,000 gold pieces.\""; next; mes "\"Also, if you have a ring with gems on it, I can remove the gems and return the Simple Ring to you for 50,000 gold pieces.\""; diff --git a/world/map/npc/002-2/latoy.txt b/world/map/npc/002-2/latoy.txt index 23dba644..3e8701a2 100644 --- a/world/map/npc/002-2/latoy.txt +++ b/world/map/npc/002-2/latoy.txt @@ -1,7 +1,7 @@ // A snobby store that won't sell to the player // takes part in quest given by 021-2/kylian.txt -002-2.gat,86,93,0|shop|#LatoyShop|127,SilkHeadband:*20000,SilkGloves:*20000,SilkPants:*80000,SilkRobe:*40000 +002-2.gat,86,93,0|shop|#LatoyShop|127,SilkHeadband:*4,SilkGloves:*4,SilkPants:*4,SilkRobe:*4 002-2.gat,86,93,0|script|Latoy|106 { diff --git a/world/map/npc/002-2/shops.txt b/world/map/npc/002-2/shops.txt index 87986111..b1818d04 100644 --- a/world/map/npc/002-2/shops.txt +++ b/world/map/npc/002-2/shops.txt @@ -1,3 +1,3 @@ // Bartender -002-2.gat,68,25,0|shop|Bartender#Casino|112,Beer:*175,Cake:*30,CherryCake:*100 +002-2.gat,68,25,0|shop|Bartender#Casino|112,Beer:*1,Cake:*1,CherryCake:*1 diff --git a/world/map/npc/002-3/merchant.txt b/world/map/npc/002-3/merchant.txt index 21cab7c7..5285d7e5 100644 --- a/world/map/npc/002-3/merchant.txt +++ b/world/map/npc/002-3/merchant.txt @@ -1,3 +1,3 @@ // -002-3.gat,60,47,0|shop|Ishyah|109,MinersHat:*800,MinerGloves:*3000,ShortBow:*8000,Arrow:*2,LeatherShield:*2000 +002-3.gat,60,47,0|shop|Ishyah|109,MinersHat:*1,MinerGloves:*1,ShortBow:*4,Arrow:*2,LeatherShield:*1 diff --git a/world/map/npc/006-2/shops.txt b/world/map/npc/006-2/shops.txt index f84f2690..8f7331f8 100644 --- a/world/map/npc/006-2/shops.txt +++ b/world/map/npc/006-2/shops.txt @@ -1,5 +1,5 @@ // Exotic Trader // Toy Sabre - 10mil, Cap - 20mil, High Priest Crown - 30mil, Monster Skull Helmet - 30mil -006-2.gat,81,36,0|shop|Reathe|179,ToySabre:*10000000,Cap:*20000000,HighPriestCrown:*30000000,MonsterSkullHelmet:*30000000 +006-2.gat,81,36,0|shop|Reathe|179,ToySabre:*5,Cap:*5,HighPriestCrown:*5,MonsterSkullHelmet:*5 -006-2.gat,30,35,0|shop|Ardra|179,CactusDrink:*50,CactusPotion:*70,BottleOfWater:*200,RoastedMaggot:*110 +006-2.gat,30,35,0|shop|Ardra|179,CactusDrink:*1,CactusPotion:*1,BottleOfWater:*1,RoastedMaggot:*1 diff --git a/world/map/npc/009-2/peter.txt b/world/map/npc/009-2/peter.txt index 4d248819..e5375149 100644 --- a/world/map/npc/009-2/peter.txt +++ b/world/map/npc/009-2/peter.txt @@ -1,5 +1,5 @@ // Nicholas' Apprentice and Armorsmith -009-2.gat,183,57,0|shop|#PeterShop|127,Knife:*50,SharpKnife:*100,Dagger:*1000 +009-2.gat,183,57,0|shop|#PeterShop|127,Knife:*1,SharpKnife:*1,Dagger:*1 009-2.gat,183,57,0|script|Peter|157 { diff --git a/world/map/npc/009-2/shops.txt b/world/map/npc/009-2/shops.txt index e400c3ef..52508ce2 100644 --- a/world/map/npc/009-2/shops.txt +++ b/world/map/npc/009-2/shops.txt @@ -1,12 +1,5 @@ -//################################################################################# -//# # -//# This script file contains all shops and other NPCs with important functions. # -//# # -//################################################################################# - // Bartender -// sells beer, cake and steak -009-2.gat,65,49,0|shop|Barkeeper|112,Beer:*175,Cake:*30,Steak:*275 +009-2.gat,65,49,0|shop|Barkeeper|112,Beer:*1,Cake:*1,Steak:*1 // Receptionist // Offers the player to rest at the inn for 100gp @@ -19,13 +12,10 @@ } // Archer Shop -// sells bow, short bow, arrows and iron arrows -009-2.gat,97,24,0|shop|Apprentice|120,SlingBullet:*1,Arrow:*2,IronArrow:*4,Bow:*1000,ShortBow:*3000 +009-2.gat,97,24,0|shop|Apprentice|120,SlingBullet:*1,Arrow:*2,IronArrow:*1,Bow:*1,ShortBow:*2 // Potion Shop -// sells cactus drink, cactus potion, iron potion, concentration potion, and slow poison potion -009-2.gat,123,22,0|shop|Potions#_M|400,CactusDrink:*50,CactusPotion:*70,IronPotion:*500,ConcentrationPotion:*500,SlowPoisonPotion:*500 +009-2.gat,123,22,0|shop|Potions#_M|400,CactusDrink:*1,CactusPotion:*1,IronPotion:*1,ConcentrationPotion:*1,SlowPoisonPotion:*1 // General Store -// Sells various things, many not sold elsewhere -009-2.gat,32,99,0|shop|General Store#hurnscald|112,Milk:*300,BottleOfWater:*200,CottonShirt:*300,CottonShorts:*1000,Boots:*2000,SerfHat:*500,CottonHeadband:*3000,CottonGloves:*2000 +009-2.gat,32,99,0|shop|General Store#hurnscald|112,Milk:*1,BottleOfWater:*1,CottonShirt:*1,CottonShorts:*1,Boots:*1,SerfHat:*1,CottonHeadband:*1,CottonGloves:*1 diff --git a/world/map/npc/009-2/trader.txt b/world/map/npc/009-2/trader.txt index 572cad1b..c386b05a 100644 --- a/world/map/npc/009-2/trader.txt +++ b/world/map/npc/009-2/trader.txt @@ -3,7 +3,7 @@ // Updated by: TheKandiman // Reviewed by: Wombat -009-2.gat,39,93,0|script|Trader|115 +009-2.gat,29,98,0|script|Trader|115 { set @Ironprice, 1000; set @Sulphurprice, 1200; diff --git a/world/map/npc/009-7/rouge.txt b/world/map/npc/009-7/rouge.txt index 78491431..dd86679c 100644 --- a/world/map/npc/009-7/rouge.txt +++ b/world/map/npc/009-7/rouge.txt @@ -1,14 +1,13 @@ 009-7.gat,32,45,0|script|Rouge#Duels|181 { -if (getgmlevel() >= 40 && getequipid(equip_head) == 647) goto L_CallDebug; -if (!debug && (strcharinfo(0) == "meko") && (getequipid(equip_head) < 1)) goto L_CallDebug; // allow meko to debug (has no dev cap) +if (getgmlevel() >= 40 && (getequipid(equip_head) == 647 || getequipid(equip_head) == 725)) goto L_CallDebug; goto L_Main; L_CallDebug: mes "You are wearing a dev cap: calling debug menu..."; - mes "For the documentation, @@https://wiki.themanaworld.org/index.php/User:Meko/FightClub/debug|click here@@##0"; + mes "For the documentation, @@https://wiki.themanaworld.org/index.php/FightClub|click here@@##0"; callfunc "fightclub_Debug"; - goto L_Main; + goto L_End; L_Main: set @requests, 0; diff --git a/world/map/npc/009-7/shops.txt b/world/map/npc/009-7/shops.txt index aab0b36b..13dd0a4c 100644 --- a/world/map/npc/009-7/shops.txt +++ b/world/map/npc/009-7/shops.txt @@ -1,3 +1,3 @@ -009-7.gat,34,23,0|shop|Bartender#Duels|177,Beer:*175,IronPotion:*500,ConcentrationPotion:*500,SmallManaElixir:*2400,BottleOfWater:*200,Milk:*300 +009-7.gat,34,23,0|shop|Bartender#Duels|177,Beer:*1,IronPotion:*1,ConcentrationPotion:*1,SmallManaElixir:*9,BottleOfWater:*1,Milk:*1 -009-7.gat,27,26,0|shop|Garçon#Duels|180,RoastedMaggot:*110,PickledBeets:*5000,ChickenLeg:*250,Steak:*275,Beer:*180 +009-7.gat,27,26,0|shop|Garçon#Duels|180,RoastedMaggot:*1,PickledBeets:*30,ChickenLeg:*1,Steak:*1,Beer:*1 diff --git a/world/map/npc/010-2/dimonds.txt b/world/map/npc/010-2/dimonds.txt index 364adf8c..c6766892 100644 --- a/world/map/npc/010-2/dimonds.txt +++ b/world/map/npc/010-2/dimonds.txt @@ -536,13 +536,13 @@ L_Close: } -010-2.gat,24,27,0|shop|Bartender|112,Beer:*175,IronPotion:*500,ConcentrationPotion:*500 +010-2.gat,24,27,0|shop|Bartender|112,Beer:*1,IronPotion:*1,ConcentrationPotion:*1 -010-2.gat,32,34,0|shop|Waitress|139,CherryCake:*100,RoastedMaggot:*110,OrangeCupcake:*600,ChickenLeg:*250,Steak:*275 +010-2.gat,32,34,0|shop|Waitress|139,CherryCake:*1,RoastedMaggot:*1,OrangeCupcake:*1,ChickenLeg:*1,Steak:*1 -010-2.gat,85,41,0|shop|Blacksmith|146,ForestBow:*20000,IronArrow:*4,LeatherShield:*2000 +010-2.gat,85,41,0|shop|Blacksmith|146,ForestBow:*1,IronArrow:*1,LeatherShield:*1 -010-2.gat,65,41,0|shop|General Store#dimond|137,CottonShorts:*1000,FancyHat:*1600,SilkHeadband:*5000,CottonSkirt:*1000,Boots:*8000,CottonBoots:*2000 +010-2.gat,65,41,0|shop|General Store#dimond|137,CottonShorts:*1,FancyHat:*1,SilkHeadband:*1,CottonSkirt:*1,Boots:*1,CottonBoots:*1 010-2.gat,75,68,0|script|Basil|107 { @@ -551,4 +551,3 @@ L_Close: callfunc "Inn"; end; } - diff --git a/world/map/npc/010-2/loratay.txt b/world/map/npc/010-2/loratay.txt index f10395a2..b8a00c28 100644 --- a/world/map/npc/010-2/loratay.txt +++ b/world/map/npc/010-2/loratay.txt @@ -1,3 +1,39 @@ +010-2.gat,83,85,0|script|Lora Tay Debug|151 +{ + mes "[Lora Tay Debug]"; + mes "What do you want to do?"; + menu + "Show Quest State", L_ShowState, + "Set Quest State", L_SetState, + "Reset", L_Reset, + "Nothing.", L_Close; + +L_ShowState: + set @wg_state, ((QUEST_WG_state & BYTE_0_MASK) >> BYTE_0_SHIFT); + mes "Current State is " + @wg_state; + goto L_Close; + +L_SetState: + mes "What state do you want?"; + input @wg_state; + callfunc "setWGState"; + mes "Set to " + @wg_state; + goto L_Close; + +L_Reset: + set @wg_state, 0; + callfunc "setWGState"; + mes "Reset!"; + goto L_Close; + +L_Close: + close; + +OnInit: + if (!debug) + disablenpc "Lora Tay Debug"; + end; +} 010-2.gat,85,85,0|script|Lora Tay|151 { set @ROBE_COCOONS_NR, 150; // must be multiple of ten @@ -111,7 +147,7 @@ L_agostine_1: L_Next13: set @wg_state, 10; - callsub S_Update; + callfunc "setWGState"; goto L_Close; L_agostine_menu: @@ -215,7 +251,7 @@ L_give_water: goto L_no_water; delitem "BottleOfWater", 1; set @wg_state, 11; - callsub S_Update; + callfunc "setWGState"; set @xpval, 50000; @@ -302,7 +338,7 @@ L_Next2: mes "Go see Agostine, ask him what he's planning and I will think about it.\""; set @wg_state, 13; - callsub S_Update; + callfunc "setWGState"; goto L_Close; L_proposal_intro: @@ -353,7 +389,7 @@ L_proposal_search_items: L_Next5: set @wg_state, 15; - callsub S_Update; + callfunc "setWGState"; goto L_Close; L_proposal_not_enough_items: @@ -366,7 +402,7 @@ L_proposal_give_items: goto L_proposal_not_enough_items; delitem "SilkCocoon", @FINEDRESS_COCOONS; set @wg_state, 16; - callsub S_Update; + callfunc "setWGState"; mes "[Lora Tay the Seamstress]"; mes "\"Great, now I can spin the silk threading and fix this mess made of these fine materials."; @@ -396,7 +432,7 @@ L_Next6: mes "I am done with the threading but I will now need to sew these materials together into the design.\""; next; set @wg_state, 18; - callsub S_Update; + callfunc "setWGState"; goto L_proposal_wait_dress_finished; L_proposal_wait_dress_finished: @@ -412,7 +448,7 @@ L_proposal_wait_dress_finished: L_proposal_dress_finished: set @wg_state, 19; - callsub S_Update; + callfunc "setWGState"; mes "[Lora Tay the Seamstress]"; mes "\"Well it was difficult seaming with such fragile materials."; mes "But I have done it. The design is finished except for one part of it.\""; @@ -436,7 +472,7 @@ L_Next7: L_Next8: set @wg_state, 20; - callsub S_Update; + callfunc "setWGState"; goto L_Close; L_proposal_deliver_dress: @@ -1141,10 +1177,6 @@ L_CleanSorcererRobe: set @cotton_cloth_id, 0; goto L_Close; -S_Update: - set QUEST_WG_state, (QUEST_WG_state & ~(BYTE_0_MASK) | (@wg_state << BYTE_0_SHIFT)); - return; - L_Close: set @wg_state, 0; close; diff --git a/world/map/npc/011-1/shops.txt b/world/map/npc/011-1/shops.txt index 4aa94d9d..48126fe2 100644 --- a/world/map/npc/011-1/shops.txt +++ b/world/map/npc/011-1/shops.txt @@ -5,4 +5,4 @@ //################################################################################# // Shop -011-1.gat,80,33,0|shop|Fruit Store|400,GreenApple:*20,RedApple:*25,Orange:*40 +011-1.gat,80,33,0|shop|Fruit Store|400,GreenApple:*1,RedApple:*1,Orange:*1 diff --git a/world/map/npc/011-6/_warps.txt b/world/map/npc/011-6/_warps.txt index f4a1c05f..8465b47d 100644 --- a/world/map/npc/011-6/_warps.txt +++ b/world/map/npc/011-6/_warps.txt @@ -5,12 +5,12 @@ 011-6.gat,61,71|warp|To Small Bandit Cave|-1,-1,011-6.gat,270,124 011-6.gat,270,125|warp|To Bandit Cave|-1,-1,011-6.gat,61,72 011-6.gat,260,128|warp|To Bandit Cave|-1,-1,011-6.gat,51,76 -011-6.gat,145,118|warp|To Bandit Cave|-1,-1,011-6.gat,48,119 +011-6.gat,145,118|warp|To Bandit Cave|-1,-1,011-6.gat,47,119 011-6.gat,196,26|warp|To Small Bandit Cave|-1,-1,011-6.gat,261,46 011-6.gat,261,47|warp|To Second Bandit Cave|-1,-1,011-6.gat,196,27 011-6.gat,271,52|warp|To Bandit Cave|-1,-1,011-6.gat,98,31 011-6.gat,98,30|warp|To Small Bandit Cave|-1,-1,011-6.gat,271,51 -011-6.gat,47,120|warp|To Second Bandit Cave|-1,-1,011-6.gat,146,117 +011-6.gat,47,120|warp|To Second Bandit Cave|-1,-1,011-6.gat,145,117 011-6.gat,49,101|warp|To Woodland|-1,-1,011-1.gat,38,37 011-6.gat,24,206|warp|To Lake Cave|-1,-1,011-4.gat,16,58 011-6.gat,47,185|warp|To Lake Cave|-1,-1,011-4.gat,39,36 diff --git a/world/map/npc/012-1/shops.txt b/world/map/npc/012-1/shops.txt index c7468111..fb29a68a 100644 --- a/world/map/npc/012-1/shops.txt +++ b/world/map/npc/012-1/shops.txt @@ -1,6 +1,6 @@ // -012-1.gat,36,99,0|shop|#FlowerShop|127,RedRose:*80,PinkRose:*80,YellowRose:*80,WhiteRose:*80,OrangeRose:*80,DarkRedRose:*80,RedTulip:*80,PinkTulip:*80,YellowTulip:*80,WhiteTulip:*80,OrangeTulip:*80 +012-1.gat,36,99,0|shop|#FlowerShop|127,RedRose:*1,PinkRose:*1,YellowRose:*1,WhiteRose:*1,OrangeRose:*1,DarkRedRose:*1,RedTulip:*1,PinkTulip:*1,YellowTulip:*1,WhiteTulip:*1,OrangeTulip:*1 012-1.gat,36,99,0|script|Blossom|163 { diff --git a/world/map/npc/020-2/furquest.txt b/world/map/npc/020-2/furquest.txt index 9e45b87e..d20e00c7 100644 --- a/world/map/npc/020-2/furquest.txt +++ b/world/map/npc/020-2/furquest.txt @@ -2,7 +2,42 @@ // Script by Shaili and QOAL //################################################################################# -// Tulimshar Crafting Workshop - Agostine, The Legendary Tailor +020-2.gat,24,26,0|script|Agostine Debug|137 +{ + mes "[Agostine Debug]"; + mes "What do you want to do?"; + menu + "Show Quest State", L_ShowState, + "Set Quest State", L_SetState, + "Reset", L_Reset, + "Nothing.", L_Close; + +L_ShowState: + set @wg_state, ((QUEST_WG_state & BYTE_0_MASK) >> BYTE_0_SHIFT); + mes "Current State is " + @wg_state; + goto L_Close; + +L_SetState: + mes "What state do you want?"; + input @wg_state; + callfunc "setWGState"; + mes "Set to " + @wg_state; + goto L_Close; + +L_Reset: + set @wg_state, 0; + callfunc "setWGState"; + mes "Reset!"; + goto L_Close; + +L_Close: + close; + +OnInit: + if (!debug) + disablenpc "Agostine Debug"; + end; +} 020-2.gat,27,26,0|script|Agostine|137 { set @CUTFUR_EXP, 10; @@ -69,6 +104,7 @@ L_State_Accept: mes "[Agostine, The Legendary Tailor]"; mes "\"Thanks so much.\""; set @wg_state, 1; + callfunc "setWGState"; goto L_Close; L_State_0_3: @@ -134,6 +170,7 @@ L_State_0_9: mes "[Agostine, The Legendary Tailor]"; mes "\"This is a little reward for your help. Take 500 GP, my friend!\""; set @wg_state, 2; + callfunc "setWGState"; goto L_Close; L_State_neg: @@ -163,6 +200,7 @@ L_State_2: mes "Only the best furs can be used for these gloves!"; mes "But, as you see, I am a tailor, not a hunter! So, why don't you bring me the best fluffy's fur you can find?\""; set @wg_state, 3; + callfunc "setWGState"; next; menu "You are crazy! I won't kill any animal for this!", L_Close, @@ -172,6 +210,7 @@ L_State_3: mes "[Agostine, The Legendary Tailor]"; mes "\"Remember, I want the best of fur!\""; set @wg_state, 4; + callfunc "setWGState"; goto L_Close; L_State_4: @@ -210,6 +249,7 @@ L_State_4_success: mes "\"It's perfect! Perfect! Good job, my friend! I will prepare your gloves right now!\""; next; set @wg_state, 5; + callfunc "setWGState"; goto L_State_5; L_State_5: @@ -227,6 +267,7 @@ L_State_5_pay: set Zeny, Zeny - 15000; getitem "WinterGloves", 1; set @wg_state, 6; + callfunc "setWGState"; mes "[Agostine, The Legendary Tailor]"; mes "\"Here they are. You will have the most fashionable hands in the world!\""; goto L_Close; @@ -254,6 +295,7 @@ L_State_10: mes "and a pair of Boots, like those you can find in the mines."; mes "They will make you lovely, my friend!\""; set @wg_state, 7; + callfunc "setWGState"; goto L_Close; L_State_11: @@ -292,6 +334,7 @@ L_State_11_success: mes "[Agostine, The Legendary Tailor]"; mes "\"This one is good enough, my friend. Good job.\""; set @wg_state, 8; + callfunc "setWGState"; goto L_State_12; L_State_12: @@ -311,6 +354,7 @@ L_State_12_pay: delitem "Boots", 1; getitem "FurBoots", 1; set @wg_state, 9; + callfunc "setWGState"; mes "[Agostine, The Legendary Tailor]"; mes "\"Enjoy your new boots, my friend!\""; goto L_Close; @@ -381,6 +425,7 @@ L_Next2: L_State_14_Accept: set @wg_state, 12; + callfunc "setWGState"; goto L_Close; L_State_14_AlreadyAccepted: @@ -421,6 +466,7 @@ L_Next4: mes "\"Hurry back my friend!\""; set @wg_state, 14; + callfunc "setWGState"; goto L_Close; @@ -463,6 +509,7 @@ L_Next6: L_Next7: set @wg_state, 17; + callfunc "setWGState"; message strcharinfo(0), "Agostine gives you a folio containing his designs, that you put in a hidden compartment in your backpack."; mes "Agostine gives you a folio containing his designs, that you put in a hidden compartment in your backpack."; @@ -504,6 +551,7 @@ L_State_17_AskItems: L_Next9: set @wg_state, 21; + callfunc "setWGState"; goto L_Close; L_State_17_NotEnoughItems: @@ -517,6 +565,7 @@ L_State_17_GiveItems: goto L_State_17_NotEnoughItems; delitem "CottonCloth", @FINEDRESS_COTTON_CLOTHS; set @wg_state, 22; + callfunc "setWGState"; mes "[Agostine, The Legendary Tailor]"; mes "\"Great now just a little cloth here........\""; @@ -574,6 +623,7 @@ L_Next11: set Zeny, Zeny - @FINEDRESS_GP; getitem "FineDress", 1; set @wg_state, 23; + callfunc "setWGState"; goto L_Close; L_State_17_NoMoney: @@ -595,7 +645,11 @@ L_State_18: goto L_Close; L_Close: - set QUEST_WG_state, (QUEST_WG_state & ~(BYTE_0_MASK) | (@wg_state << BYTE_0_SHIFT)); set @wg_state, 0; close; } +function|script|setWGState +{ + set QUEST_WG_state, (QUEST_WG_state & ~(BYTE_0_MASK) | (@wg_state << BYTE_0_SHIFT)); + return; +} diff --git a/world/map/npc/020-2/shops.txt b/world/map/npc/020-2/shops.txt index 2ce823b6..1c895902 100644 --- a/world/map/npc/020-2/shops.txt +++ b/world/map/npc/020-2/shops.txt @@ -14,9 +14,9 @@ close; } // Weapons shop -020-2.gat,25,65,0|shop|Bracco|135,IronArrow:*4,ShortBow:*8000,Dagger:*1000,LeatherShield:*2000 +020-2.gat,25,65,0|shop|Bracco|135,IronArrow:*1,ShortBow:*4,Dagger:*1,LeatherShield:*1 // Potions shop -020-2.gat,75,24,0|shop|Mede|103,CactusDrink:*50,CactusPotion:*70,IronPotion:*500,ConcentrationPotion:*500 +020-2.gat,75,24,0|shop|Mede|103,CactusDrink:*1,CactusPotion:*1,IronPotion:*1,ConcentrationPotion:*1 // INN 020-2.gat,111,23,0|script|Kane|120 diff --git a/world/map/npc/027-2/gy_inn_shops.txt b/world/map/npc/027-2/gy_inn_shops.txt index f1ab846a..aed37d09 100644 --- a/world/map/npc/027-2/gy_inn_shops.txt +++ b/world/map/npc/027-2/gy_inn_shops.txt @@ -7,10 +7,10 @@ // banker: function -027-2.gat,75,22,0|shop|Chef#graveyard|300,ZombieNachos:*100,LadyFingers:*70,JellAhh:*80,Snapple:*110 -027-2.gat,90,36,0|shop|Estrilda|301,BeetleJuice:*80,GutBuster:*100,BloodWine:*150 -027-2.gat,93,22,0|shop|Umfrey|302,BoneArrows:*50,ShockSweet:*1000 -027-2.gat,56,99,0|shop|Leofwin|304,CactusDrink:*50,CactusPotion:*70,BugLeg:*100,SmallMushroom:*125,IronPotion:*500,ConcentrationPotion:*500,HardSpike:*40,DarkCrystal:*1000,Root:*500,WispPowder:*700,SpectrePowder:*700,PoltergeistPowder:*700 +027-2.gat,75,22,0|shop|Chef#graveyard|300,ZombieNachos:*1,LadyFingers:*1,JellAhh:*1,Snapple:*1 +027-2.gat,90,36,0|shop|Estrilda|301,BeetleJuice:*1,GutBuster:*1,BloodWine:*1 +027-2.gat,93,22,0|shop|Umfrey|302,BoneArrows:*1,ShockSweet:*1 +027-2.gat,56,99,0|shop|Leofwin|304,CactusDrink:*1,CactusPotion:*1,BugLeg:*1,SmallMushroom:*1,IronPotion:*1,ConcentrationPotion:*1,HardSpike:*1,DarkCrystal:*1,Root:*1,WispPowder:*1,SpectrePowder:*1,PoltergeistPowder:*1 027-2.gat,106,22,0|script|Edwin|309 { @@ -45,4 +45,3 @@ callfunc "Banker"; close; } - diff --git a/world/map/npc/029-2/two_arms.txt b/world/map/npc/029-2/two_arms.txt index 33b4b843..012527b6 100644 --- a/world/map/npc/029-2/two_arms.txt +++ b/world/map/npc/029-2/two_arms.txt @@ -1,4 +1,4 @@ // Forge Shops -029-2.gat,99,25,0|shop|Rosen|311,SlingShot:*500,SlingBullet:*1,ShortBow:*8000,Arrow:*1,IronArrow:*4 -029-2.gat,112,24,0|shop|Toichi|377,Knife:*50,SharpKnife:*100,Dagger:*1000,LeatherShirt:*2000,LeatherShield:*2000 +029-2.gat,99,25,0|shop|Rosen|311,SlingShot:*1,SlingBullet:*1,ShortBow:*4,Arrow:*2,IronArrow:*1 +029-2.gat,112,24,0|shop|Toichi|377,Knife:*1,SharpKnife:*1,Dagger:*1,LeatherShirt:*1,LeatherShield:*1 diff --git a/world/map/npc/029-3/parua.txt b/world/map/npc/029-3/parua.txt index 1083df43..78feb900 100644 --- a/world/map/npc/029-3/parua.txt +++ b/world/map/npc/029-3/parua.txt @@ -16,6 +16,7 @@ mes "\"Do you dare challenge the power that sleeps here?\""; menu "No, I'll let it sleep.", L_Exit, "Ha! What's the worst it could do?", L_Next, + "What is this place anyway?", L_Explain, "Actually, I want to leave, but I'm stuck!", L_Stuck; L_Next: @@ -135,6 +136,33 @@ L_NotEnoughPlayers: mes "He takes a moment to calculate. \"You'll probably need at least...five people, including yourself.\""; goto L_Exit; +L_Explain: + mes "[Parua]"; + mes "\"Long ago many human beings and other creatures have been slaughtered in a battle in this now cursed cave. Their souls still lie here.\""; + next; + mes "\"My try to use a spell to cure this place from the curse backfired and turned me into this.\""; + next; + mes "\"To change me back expensive ingredients for a curing potion are required.\""; + next; + mes "\"Pay me and I will use my dark astral magic to summon the undead. If you survive you will receive 100 Boss Points.\""; + menu + "I need to think about this.", L_Exit, + "I'm interested.", L_Next, + "What are Boss Points?", L_Explain_Boss_Points; + +L_Explain_Boss_Points: + mes "[Parua]"; + mes "\"Boss points are another type of experience.\""; + next; + mes "\"Fighting experience makes you level up, magic experience makes your spells more effective and allows you to learn new spells.\""; + next; + mes "\"Boss Points show your skills and nerves in important battles and heroic actions.\""; + next; + mes "\"Be aware, they can be consumed as well. For instance by negative actions, such as selfishness or simply stupidity.\""; + menu + "Thanks, I will think about your offer now.", L_Exit, + "I want to challenge the powers in this cave.", L_Next; + L_Stuck: mes "[Parua]"; mes "\"I see. I can teleport you to another nice cave.\""; diff --git a/world/map/npc/030-2/_import.txt b/world/map/npc/030-2/_import.txt index c2c641aa..c3867abf 100644 --- a/world/map/npc/030-2/_import.txt +++ b/world/map/npc/030-2/_import.txt @@ -9,11 +9,11 @@ npc: npc/030-2/bedding_helper.txt npc: npc/030-2/chief_helper.txt npc: npc/030-2/eljas.txt npc: npc/030-2/empty_boxes_helper.txt -npc: npc/030-2/gaurds.txt npc: npc/030-2/glitter_helper.txt +npc: npc/030-2/guards.txt npc: npc/030-2/mapflags.txt npc: npc/030-2/present_helper.txt -npc: npc/030-2/roasted_acrons_helper.txt +npc: npc/030-2/roasted_acorns_helper.txt npc: npc/030-2/shipping_helper.txt npc: npc/030-2/storage_helper.txt npc: npc/030-2/wrapping_paper_helper.txt diff --git a/world/map/npc/030-2/gaurds.txt b/world/map/npc/030-2/guards.txt index 3fdc1ffa..3fdc1ffa 100644 --- a/world/map/npc/030-2/gaurds.txt +++ b/world/map/npc/030-2/guards.txt diff --git a/world/map/npc/030-2/present_helper.txt b/world/map/npc/030-2/present_helper.txt index 248c296a..0a027ca0 100644 --- a/world/map/npc/030-2/present_helper.txt +++ b/world/map/npc/030-2/present_helper.txt @@ -1,8 +1,8 @@ // Annual Xmas // Author: wushin -// Present Reclaimation +// Present Reclamation -030-2.gat,47,82,0|script|Jonanthan|328 +030-2.gat,47,82,0|script|Jonathan|328 { callfunc "XmasStates"; @@ -84,4 +84,3 @@ L_Close: set @present_name$, ""; close; } - diff --git a/world/map/npc/030-2/roasted_acrons_helper.txt b/world/map/npc/030-2/roasted_acorns_helper.txt index f942c118..f942c118 100644 --- a/world/map/npc/030-2/roasted_acrons_helper.txt +++ b/world/map/npc/030-2/roasted_acorns_helper.txt diff --git a/world/map/npc/030-3/orum_homunculus.txt b/world/map/npc/030-3/orum_homunculus.txt index 16cb1433..4da1c618 100644 --- a/world/map/npc/030-3/orum_homunculus.txt +++ b/world/map/npc/030-3/orum_homunculus.txt @@ -312,7 +312,7 @@ L_FakeList: mes "\"So far my basement portal has remained undetected:"; mes "Head to the west in this cave to find it.\""; mes "\"Once there smash your fist into the small crack and you will be teleported into the basement of the inn.\""; - mes "\"Let me fake the mark Chief Warrick uses to identify his helpers. Don't get to close to the gaurds they might spot you.\""; + mes "\"Let me fake the mark Chief Warrick uses to identify his helpers. Don't get to close to the guards they might spot you.\""; mes "\"Now, prove yourself, gather the required items and go back to the Inn to sabotage Santa's Helpers.\""; callfunc "XmasSetSide"; set XMASTIME, XMASTIME | $@xmas_helper_bit; diff --git a/world/map/npc/035-2/shops.txt b/world/map/npc/035-2/shops.txt index 6ab193a5..7d7d656a 100644 --- a/world/map/npc/035-2/shops.txt +++ b/world/map/npc/035-2/shops.txt @@ -1,6 +1,6 @@ // -035-2.gat,23,38,0|shop|Cooky|213,Beer:*175,Orange:*40,CasinoCoins:*10 +035-2.gat,23,38,0|shop|Cooky|213,Beer:*1,Orange:*1,CasinoCoins:*1 035-2.gat,23,35,0|script|Bunkmaster Phict|212 { diff --git a/world/map/npc/036-2/shops.txt b/world/map/npc/036-2/shops.txt index cbb7c84e..33dd286e 100644 --- a/world/map/npc/036-2/shops.txt +++ b/world/map/npc/036-2/shops.txt @@ -1,7 +1,7 @@ // -036-2.gat,23,38,0|shop|Chef Armand|211,Beer:*175,Steak:*550,CasinoCoins:*10 -036-2.gat,35,22,0|shop|Gunney|138,Arrow:*4,IronArrow:*8 +036-2.gat,23,38,0|shop|Chef Armand|211,Beer:*1,Steak:*2,CasinoCoins:*1 +036-2.gat,35,22,0|shop|Gunney|138,Arrow:*4,IronArrow:*2 036-2.gat,23,35,0|script|Bunkmaster Daban|212 { diff --git a/world/map/npc/annuals/xmas/barriers.txt b/world/map/npc/annuals/xmas/barriers.txt index 80097356..4c7837af 100644 --- a/world/map/npc/annuals/xmas/barriers.txt +++ b/world/map/npc/annuals/xmas/barriers.txt @@ -17,7 +17,7 @@ L_Hint: message strcharinfo(0), "I said get out! We've got no time for your kind here."; mes "[Orum's Homunculus]"; mes "\"What are you doing? Come, see me in the caves below!\""; - mes "\"I said go north till you reach the snoman. Then head into the cave to the east.\""; + mes "\"I said go north till you reach the snowman. Then head into the cave to the east.\""; warp "020-1.gat",33,94; close; diff --git a/world/map/npc/annuals/xmas/config.txt b/world/map/npc/annuals/xmas/config.txt index 8f7c9139..33ddcf97 100644 --- a/world/map/npc/annuals/xmas/config.txt +++ b/world/map/npc/annuals/xmas/config.txt @@ -144,7 +144,7 @@ L_Main: setarray $@xmas_uncommon_reward$, "NutcrackerHat", "AmberChristmasSweater", "RedStockings", "PinkChristmasSweater", "BlueChristmasSweater"; // Quest Side 0 Settings setarray $@xmas_zero_reagents$, "ShockSweet", "EmptyBottle", "EmeraldPowder"; - setarray $@xmas_zero_reagents_names$, "ShockSweet", "Empty Bottles", "Emerald Powders"; + setarray $@xmas_zero_reagents_names$, "Shock Sweet", "Empty Bottles", "Emerald Powders"; setarray $@xmas_zero_reagents_amounts, 1, 4, 10; if(getarraysize($@xmas_zero_reagents_amounts) != getarraysize($@xmas_zero_reagents$)) goto L_XmasError; diff --git a/world/map/npc/annuals/xmas/core.txt b/world/map/npc/annuals/xmas/core.txt index 30562e13..d064efca 100644 --- a/world/map/npc/annuals/xmas/core.txt +++ b/world/map/npc/annuals/xmas/core.txt @@ -209,9 +209,9 @@ L_FinalGift: set @xmas_reward_item2$, $@xmas_uncommon_reward$[@xmas_uncommon_slot2]; if(checkweight("Iten", 1) == 0) goto L_FullInv; - if(@xmas_reward >= 80) + if(@xmas_reward >= $@xmas_reward_tally_rare) getitem @xmas_reward_item$, 1; - if(@xmas_reward >= 40) + if(@xmas_reward >= $@xmas_reward_tally_common) getitem @xmas_reward_item1$, 1; getitem @xmas_reward_item2$, 1; set @xmas_uncommon_slot1, 0; |