diff options
-rw-r--r-- | .gitlab-ci.yml | 2 | ||||
-rwxr-xr-x | .tools/scripts/init.sh | 7 | ||||
-rw-r--r-- | conf/map/battle.conf | 5 | ||||
-rw-r--r-- | conf/map/battle/client.conf | 6 | ||||
-rw-r--r-- | conf/map/battle/drops.conf | 11 | ||||
-rw-r--r-- | conf/map/battle/feature.conf | 12 | ||||
-rw-r--r-- | conf/map/battle/homunc.conf | 2 | ||||
-rw-r--r-- | conf/map/battle/limits.conf | 57 | ||||
-rw-r--r-- | conf/map/battle/skill.conf | 38 | ||||
-rw-r--r-- | conf/map/map-server.conf | 3 | ||||
-rw-r--r-- | conf/map/script.conf | 4 | ||||
-rw-r--r-- | conf/messages.conf | 39 | ||||
-rw-r--r-- | db/castle_db.conf | 44 | ||||
-rw-r--r-- | db/castle_db.txt | 13 | ||||
-rw-r--r-- | db/constants.conf | 114 | ||||
-rw-r--r-- | db/mob_db2.conf | 8 | ||||
-rw-r--r-- | db/option_drop_groups.conf | 53 | ||||
-rw-r--r-- | db/re/mob_db.conf | 4 | ||||
-rw-r--r-- | db/re/refine_db.conf | 81 | ||||
-rw-r--r-- | db/re/skill_db.conf | 1 | ||||
-rw-r--r-- | npc/dev/test.txt | 10 | ||||
-rw-r--r-- | sql-files/main.sql | 5 | ||||
-rw-r--r-- | sql-files/upgrades/2019-04-08--21-52.sql | 29 | ||||
-rw-r--r-- | sql-files/upgrades/2019-04-25--02-12.sql | 24 | ||||
-rw-r--r-- | sql-files/upgrades/2019-05-09--18-07.sql | 22 | ||||
-rw-r--r-- | sql-files/upgrades/index.txt | 3 |
26 files changed, 455 insertions, 142 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index c5234dab0..9004c6ba9 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -12,7 +12,7 @@ variables: GET_SOURCES_ATTEMPTS: "5" ARTIFACT_DOWNLOAD_ATTEMPTS: "5" MYSQL_ROOT_PASSWORD: root - packetver: "20150513" + packetver: "20170517" .build_test: stage: build diff --git a/.tools/scripts/init.sh b/.tools/scripts/init.sh index 7abf5701b..9f74352ac 100755 --- a/.tools/scripts/init.sh +++ b/.tools/scripts/init.sh @@ -182,12 +182,15 @@ function do_init { rm -rf server-code gitclone https://gitlab.com/evol hercules.git server-code check_error $? - cd server-code/src ; git checkout master # v2018.09.23 # 2018-09-24 # s20180713? + cd server-code/src ; git checkout master check_error $? #: ' #Use this to force an old version. You need s20190422 for this. echo "Rolling server back to correct version" cd .. - git diff master 41b5d5e9b6f14fd26197958aec29a02858dff299 > x.diff + # 10.0 and prior: Server s20190513 + #git diff master 41b5d5e9b6f14fd26197958aec29a02858dff299 > x.diff + # Current version: Server s20190819 + git diff master ce2dbb6acdc559ec256d1f9f9a779b8283064708 > x.diff ls head -n 25 x.diff tail -n 40 x.diff diff --git a/conf/map/battle.conf b/conf/map/battle.conf index cc9687233..f8c6b9a14 100644 --- a/conf/map/battle.conf +++ b/conf/map/battle.conf @@ -9,7 +9,7 @@ //= This file is part of Hercules. //= http://herc.ws - http://github.com/HerculesWS/Hercules //= -//= Copyright (C) 2014-2018 Hercules Dev Team +//= Copyright (C) 2014-2019 Hercules Dev Team //= //= Hercules is free software: you can redistribute it and/or modify //= it under the terms of the GNU General Public License as published by @@ -76,6 +76,9 @@ battle_configuration: { // Feature control (on/off) settings @include "conf/map/battle/feature.conf" + // Different calculation limits + @include "conf/map/battle/limits.conf" + // Anything else that didn't fit anywhere else. // Includes duel, day/night, mute/manner, log settings. @include "conf/map/battle/misc.conf" diff --git a/conf/map/battle/client.conf b/conf/map/battle/client.conf index 2198320cf..3372b3e71 100644 --- a/conf/map/battle/client.conf +++ b/conf/map/battle/client.conf @@ -9,7 +9,7 @@ //= This file is part of Hercules. //= http://herc.ws - http://github.com/HerculesWS/Hercules //= -//= Copyright (C) 2014-2018 Hercules Dev Team +//= Copyright (C) 2014-2019 Hercules Dev Team //= //= Hercules is free software: you can redistribute it and/or modify //= it under the terms of the GNU General Public License as published by @@ -198,3 +198,7 @@ ping_timer_inverval: 30 // Send packets timeout in seconds before ping packet can be sent. // For clients 20190320 Re+ ping_time: 20 + +// Drop or not connection after client send disconnect request packet +// Official is false +drop_connection_on_quit: false diff --git a/conf/map/battle/drops.conf b/conf/map/battle/drops.conf index d88de95ba..3ec302dcd 100644 --- a/conf/map/battle/drops.conf +++ b/conf/map/battle/drops.conf @@ -9,7 +9,7 @@ //= This file is part of Hercules. //= http://herc.ws - http://github.com/HerculesWS/Hercules //= -//= Copyright (C) 2014-2018 Hercules Dev Team +//= Copyright (C) 2014-2019 Hercules Dev Team //= //= Hercules is free software: you can redistribute it and/or modify //= it under the terms of the GNU General Public License as published by @@ -152,3 +152,12 @@ drops_by_luk2: 200 // 1: Only marine spheres drop items. // 2: All alchemist summons drop items. alchemist_summon_reward: 1 + +// The maximum number of full iterations that server can do when dropping an item with options. +// When picking random options for a dropped item, it does lots of iterations to choose the option to be set, +// this value limits the number of iterations to avoid making the server hang in a long loop. +option_drop_max_loop: 10 + +// Does autoloot take into account player bonuses and penalties? (Note 1) +// If RENEWAL_DROP, Bubble Gum, or any other modifiers are active autoloot will take them into account. +autoloot_adjust: false diff --git a/conf/map/battle/feature.conf b/conf/map/battle/feature.conf index a60f271b8..aaa2fc86f 100644 --- a/conf/map/battle/feature.conf +++ b/conf/map/battle/feature.conf @@ -9,7 +9,7 @@ //= This file is part of Hercules. //= http://herc.ws - http://github.com/HerculesWS/Hercules //= -//= Copyright (C) 2014-2018 Hercules Dev Team +//= Copyright (C) 2014-2019 Hercules Dev Team //= //= Hercules is free software: you can redistribute it and/or modify //= it under the terms of the GNU General Public License as published by @@ -88,4 +88,14 @@ features: { // true: enable (Default) // false: disable enable_achievement_system: false + + // Enable Refinery UI (requires 2016-10-05Ragexe/RE) + // true: enable (Default) + // false: disable + enable_refinery_ui: false + + // Replace Refine NPCs with Refinery UI + // true: enable + // false: disable (default) + replace_refine_npcs: false } diff --git a/conf/map/battle/homunc.conf b/conf/map/battle/homunc.conf index f08d4bd20..7a94a92e9 100644 --- a/conf/map/battle/homunc.conf +++ b/conf/map/battle/homunc.conf @@ -67,5 +67,5 @@ homunculus_max_level: 140 // Max level for Homunculus S homunculus_S_max_level: 150 -// FF-Update +// Bonus EXP homunculus received from master? (Note 2) hom_bonus_exp_from_master: 15 diff --git a/conf/map/battle/limits.conf b/conf/map/battle/limits.conf new file mode 100644 index 000000000..78498219e --- /dev/null +++ b/conf/map/battle/limits.conf @@ -0,0 +1,57 @@ +//================= Hercules Configuration ================================ +//= _ _ _ +//= | | | | | | +//= | |_| | ___ _ __ ___ _ _| | ___ ___ +//= | _ |/ _ \ '__/ __| | | | |/ _ \/ __| +//= | | | | __/ | | (__| |_| | | __/\__ \ +//= \_| |_/\___|_| \___|\__,_|_|\___||___/ +//================= License =============================================== +//= This file is part of Hercules. +//= http://herc.ws - http://github.com/HerculesWS/Hercules +//= +//= Copyright (C) 2014-2019 Hercules Dev Team +//= +//= Hercules is free software: you can redistribute it and/or modify +//= it under the terms of the GNU General Public License as published by +//= the Free Software Foundation, either version 3 of the License, or +//= (at your option) any later version. +//= +//= This program is distributed in the hope that it will be useful, +//= but WITHOUT ANY WARRANTY; without even the implied warranty of +//= MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +//= GNU General Public License for more details. +//= +//= You should have received a copy of the GNU General Public License +//= along with this program. If not, see <http://www.gnu.org/licenses/>. +//========================================================================= +// Battle (Limits) Configuration File +//========================================================================= + +// basic attack limits +batk_min_limit: 0 +batk_max_limit: 65535 + +// magic attack limits + +matk_min_limit: 0 +matk_max_limit: 65535 + +// weapon attack limits +watk_min_limit: 0 +watk_max_limit: 65535 + +// flee limits +flee_min_limit: 1 +flee_max_limit: 32767 + +// flee2 limits +flee2_min_limit: 10 +flee2_max_limit: 32767 + +// critical attack limits +critical_min_limit: 10 +critical_max_limit: 32767 + +// hit limits +hit_min_limit: 1 +hit_max_limit: 32767 diff --git a/conf/map/battle/skill.conf b/conf/map/battle/skill.conf index 038ec528d..a72632278 100644 --- a/conf/map/battle/skill.conf +++ b/conf/map/battle/skill.conf @@ -9,7 +9,7 @@ //= This file is part of Hercules. //= http://herc.ws - http://github.com/HerculesWS/Hercules //= -//= Copyright (C) 2014-2018 Hercules Dev Team +//= Copyright (C) 2014-2019 Hercules Dev Team //= //= Hercules is free software: you can redistribute it and/or modify //= it under the terms of the GNU General Public License as published by @@ -53,8 +53,8 @@ min_skill_delay_limit: 100 // appear to "teleport" afterwards. default_walk_delay: 300 -//Completely disable skill delay of the following types (Note 3) -//NOTE: By default mobs don't have the skill delay as specified in the skill +// Completely disable skill delay of the following types (Note 3) +// NOTE: By default mobs don't have the skill delay as specified in the skill // database, but follow their own 'reuse' skill delay which is specified on // the mob skill db. When set, the delay for all skills become // min_skill_delay_limit. @@ -107,14 +107,14 @@ clear_skills_on_death: 0 // Should ground placed skills be removed when the caster changes maps? (Note 3) clear_skills_on_warp: 15 -//Setting this to true will override the target mode of ground-based skills with the flag 0x01 to "No Enemies" -//The two skills affected by default are Pneuma and Safety Wall (if set to true, those two skills will not protect everyone, but only allies) -//See db/skill_unit_db.txt for more info. +// Setting this to true will override the target mode of ground-based skills with the flag 0x01 to "No Enemies" +// The two skills affected by default are Pneuma and Safety Wall (if set to true, those two skills will not protect everyone, but only allies) +// See db/skill_unit_db.txt for more info. defunit_not_enemy: false // Do skills do at least 'hits' damage when they don't miss/are blocked? -//(for example, will firebolts always do "number of bolts" damage versus plants?) -//Values (add as appropriate): 1 for weapon-based attacks, 2 for magic attacks, 4 for misc attacks. +// (for example, will firebolts always do "number of bolts" damage versus plants?) +// Values (add as appropriate): 1 for weapon-based attacks, 2 for magic attacks, 4 for misc attacks. skill_min_damage: 6 // The delay rate of monk's combo (Note 2) @@ -138,10 +138,22 @@ skill_nofootset: 1 // Default on official servers: true for player-traps gvg_traps_target_all: 1 -// Some traps settings (add as necessary): -// 1: Traps are invisible to those who come into view of it. When unset, all traps are visible at all times. -// (Invisible traps can be revealed through Hunter's Detecting skill) -traps_setting: 0 +// Hunter's traps visibility setting (with HiddenTrap: true on skill_db.conf) +// Here we have 2 configs: +// visibility stands to how traps are displayed by default: +// 0: Traps are always visible to everyone (Hercules/Pre-renewal) +// 1: Traps with HiddenTrap: true are hidden in versus maps (PvP/GvG/BG) +// 2: Traps with HiddenTrap: true are always invisible (Renewal) (Default) +// Notes: - Invisibility applies to players that are not in caster's party. +// - Invisible traps can be made visible to everyone with Hunter's Detecting skill. +// +// display_on_trigger tells if HiddenTraps should become visible once triggered +// 0: Do not make traps visible once triggered (except for Ankle Snare) (Aegis) +// 1: Always make traps visible once triggered (Hercules) +trap_options: { + visibility: 2 + display_on_trigger: 1 +} // Restrictions applied to the Alchemist's Summon Flora skill (add as necessary) // 1: Enable players to damage the floras outside of versus grounds. @@ -175,7 +187,7 @@ monster_cloak_check_type: 4 // Can't place unlimited land skills at the same time (Note 3) land_skill_limit: 9 -//Determines which kind of skill-failed messages should be sent: +// Determines which kind of skill-failed messages should be sent: // 0 - Enable by default // 1 - Disable all skill-failed messages. // 2 - Disable skill-failed messages due to can-act delays. diff --git a/conf/map/map-server.conf b/conf/map/map-server.conf index ffcc2a38c..be19a1cb2 100644 --- a/conf/map/map-server.conf +++ b/conf/map/map-server.conf @@ -9,7 +9,7 @@ //= This file is part of Hercules. //= http://herc.ws - http://github.com/HerculesWS/Hercules //= -//= Copyright (C) 2014-2018 Hercules Dev Team +//= Copyright (C) 2014-2019 Hercules Dev Team //= //= Hercules is free software: you can redistribute it and/or modify //= it under the terms of the GNU General Public License as published by @@ -102,6 +102,7 @@ map_configuration: { // 0x040: After successfully get/delete/complete a quest // 0x080: After every buying store transaction // 0x100: After every bank transaction (deposit/withdraw) + // 0x200: After every allow party flag change // NOTE: These settings decrease the chance of dupes/lost items // when there's a server crash at the expense of increasing the // map/char server lag. If your server rarely crashes, but diff --git a/conf/map/script.conf b/conf/map/script.conf index f18e9d6e2..802ce2538 100644 --- a/conf/map/script.conf +++ b/conf/map/script.conf @@ -9,7 +9,7 @@ //= This file is part of Hercules. //= http://herc.ws - http://github.com/HerculesWS/Hercules //= -//= Copyright (C) 2014-2018 Hercules Dev Team +//= Copyright (C) 2014-2019 Hercules Dev Team //= //= Hercules is free software: you can redistribute it and/or modify //= it under the terms of the GNU General Public License as published by @@ -52,7 +52,7 @@ script_configuration: { // Default value of the 'min' argument of the script command 'input'. // When the 'min' argument isn't provided, this value is used instead. // Defaults to 0. - //input_min_value: 0 + input_min_value: 0 // Default value of the 'max' argument of the script command 'input'. // When the 'max' argument isn't provided, this value is used instead. diff --git a/conf/messages.conf b/conf/messages.conf index d35ce5c52..b67e84b91 100644 --- a/conf/messages.conf +++ b/conf/messages.conf @@ -448,7 +448,8 @@ // Return pet to egg message 451: You can't return your pet because your inventory is full. 452: usage @camerainfo range rotation latitude -//453-497 FREE +453: Refinery UI is not available +//454-497 FREE // Messages of others (not for GM commands) // ---------------------------------------- @@ -750,18 +751,18 @@ //995 FREE -// @refine +// @refine - Part 1 996: Please enter a position bitmask and an amount (usage: @refine <equip position> <+/- amount>). -997: %d: Lower Headgear -998: %d: Right Hand +997: %d: Headgear (Low) +998: %d: Hand (Right) 999: %d: Garment -1000: %d: Left Accessory +1000: %d: Accessory (Left) 1001: %d: Body Armor -1002: %d: Left Hand +1002: %d: Hand (Left) 1003: %d: Shoes -1004: %d: Right Accessory -1005: %d: Top Headgear -1006: %d: Mid Headgear +1004: %d: Accessory (Right) +1005: %d: Headgear (Top) +1006: %d: Headgear (Mid) // @produce 1007: Please enter at least one item name/ID (usage: @produce <equip name/ID> <element> <# of very's>). @@ -1564,5 +1565,25 @@ // TMW2 Messages 1999: This item cannot be created using GM command. +// @dropall +1500: Usage: @dropall {<type>} +1501: Type List: (default) all = -1, healing = 0, usable = 2, etc = 3, weapon = 4, armor = 5, card = 6, petegg = 7, petarmor = 8, ammo = 10, delayed-consumable = 11, cash = 18 +1502: %d items are dropped! + +// @refine - Part 2 +1503: %d: Costume Headgear (Top) +1504: %d: Costume Headgear (Mid) +1505: %d: Costume Headgear (Low) +1506: %d: Costume Garment +1507: %d: Shadow Armor +1508: %d: Shadow Weapon +1509: %d: Shadow Shield +1510: %d: Shadow Shoes +1511: %d: Shadow Accessory (Right) +1512: %d: Shadow Accessory (Left) +1513: %d: Refine All Equip (General) +1514: %d: Refine All Equip (Costume) +1515: %d: Refine All Equip (Shadow) + //Custom translations import: conf/import/msg_conf.txt diff --git a/db/castle_db.conf b/db/castle_db.conf new file mode 100644 index 000000000..fe4d07fee --- /dev/null +++ b/db/castle_db.conf @@ -0,0 +1,44 @@ +//================= Hercules Database ===================================== +//= _ _ _ +//= | | | | | | +//= | |_| | ___ _ __ ___ _ _| | ___ ___ +//= | _ |/ _ \ '__/ __| | | | |/ _ \/ __| +//= | | | | __/ | | (__| |_| | | __/\__ \ +//= \_| |_/\___|_| \___|\__,_|_|\___||___/ +//================= License =============================================== +//= This file is part of Hercules. +//= http://herc.ws - http://github.com/HerculesWS/Hercules +//= +//= Copyright (C) 2019 Hercules Dev Team +//= Copyright (C) 2019 Asheraf +//= +//= Hercules is free software: you can redistribute it and/or modify +//= it under the terms of the GNU General Public License as published by +//= the Free Software Foundation, either version 3 of the License, or +//= (at your option) any later version. +//= +//= This program is distributed in the hope that it will be useful, +//= but WITHOUT ANY WARRANTY; without even the implied warranty of +//= MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +//= GNU General Public License for more details. +//= +//= You should have received a copy of the GNU General Public License +//= along with this program. If not, see <http://www.gnu.org/licenses/>. +//========================================================================= +//= Castle Database +//========================================================================= + +castle_db: ( +/************************************************************************** + ************* Entry structure ******************************************** + ************************************************************************** +{ + // ================ Mandatory fields ============================== + CastleID: (int) Unique ID of the castle. Must remain unique across all map-servers. + MapName: (string) Map name to be considered as the castle map. + CastleName: (string) Name of the castle (used by scripts and guardian name tags) + OnGuildBreakEventName: (string) NPC unique name to invoke ::OnGuildBreak on, when a occupied + castle is abandoned during guild break. +}, +**************************************************************************/ +) diff --git a/db/castle_db.txt b/db/castle_db.txt deleted file mode 100644 index 89b00eee7..000000000 --- a/db/castle_db.txt +++ /dev/null @@ -1,13 +0,0 @@ -// Guild Castles Database -// -// Structure of Database: -// CastleID,MapName,CastleName,OnGuildBreakEventName,Flag -// -// 01. CastleID Unique ID of the castle. Must remain unique across all map-servers. -// 02. MapName Map name to be considered as the castle map. -// 03. CastleName Name of the castle (used by scripts and guardian name tags). -// 04. OnGuildBreakEventName NPC unique name to invoke ::OnGuildBreak on, when a occupied -// castle is abandoned during guild break. -// 05. Flag Switch flag (reserved as of athena-dev mod0796~0801, not used by server). - - diff --git a/db/constants.conf b/db/constants.conf index 7d37753a0..1703a6f33 100644 --- a/db/constants.conf +++ b/db/constants.conf @@ -424,6 +424,8 @@ constants_db: { mf_noviewid: 56 mf_pairship_startable: 57 mf_pairship_endable: 58 + mf_nostorage: 59 + mf_nogstorage: 60 comment__: "Cell Properties" cell_walkable: 0 @@ -1428,29 +1430,30 @@ constants_db: { } comment__: "getmonsterinfo" - MOB_NAME: 0 - MOB_LV: 1 - MOB_MAXHP: 2 - MOB_BASEEXP: 3 - MOB_JOBEXP: 4 - MOB_ATK1: 5 - MOB_ATK2: 6 - MOB_DEF: 7 - MOB_MDEF: 8 - MOB_STR: 9 - MOB_AGI: 10 - MOB_VIT: 11 - MOB_INT: 12 - MOB_DEX: 13 - MOB_LUK: 14 - MOB_RANGE: 15 - MOB_RANGE2: 16 - MOB_RANGE3: 17 - MOB_SIZE: 18 - MOB_RACE: 19 - MOB_ELEMENT: 20 - MOB_MODE: 21 - MOB_MVPEXP: 22 + MOB_NAME: 0 + MOB_LV: 1 + MOB_MAXHP: 2 + MOB_BASEEXP: 3 + MOB_JOBEXP: 4 + MOB_ATK1: 5 + MOB_ATK2: 6 + MOB_DEF: 7 + MOB_MDEF: 8 + MOB_STR: 9 + MOB_AGI: 10 + MOB_VIT: 11 + MOB_INT: 12 + MOB_DEX: 13 + MOB_LUK: 14 + MOB_RANGE: 15 + MOB_RANGE2: 16 + MOB_RANGE3: 17 + MOB_SIZE: 18 + MOB_RACE: 19 + MOB_ELEMENT: 20 + MOB_MODE: 21 + MOB_MVPEXP: 22 + MOB_DMG_TAKEN_RATE: 23 comment__: "mercenary guilds" ARCH_MERC_GUILD: 0 @@ -3746,71 +3749,6 @@ constants_db: { SEX_MALE: 1 SEX_ANY: 2 - comment__: "Script Unit Data Types" - UDT_TYPE: 0 - UDT_SIZE: 1 - UDT_LEVEL: 2 - UDT_HP: 3 - UDT_MAXHP: 4 - UDT_SP: 5 - UDT_MAXSP: 6 - UDT_MASTERAID: 7 - UDT_MASTERCID: 8 - UDT_MAPIDXY: { - Value: 9 - Deprecated: true // for setunitdata use *unitwarp, for getunitdata use *getmapxy - } - UDT_WALKTOXY: { - Value: 10 - Deprecated: true // use *unitwalk - } - UDT_SPEED: 11 - UDT_MODE: 12 - UDT_AI: 13 - UDT_SCOPTION: 14 - UDT_SEX: 15 - UDT_CLASS: 16 - UDT_HAIRSTYLE: 17 - UDT_HAIRCOLOR: 18 - UDT_HEADBOTTOM: 19 - UDT_HEADMIDDLE: 20 - UDT_HEADTOP: 21 - UDT_CLOTHCOLOR: 22 - UDT_SHIELD: 23 - UDT_WEAPON: 24 - UDT_LOOKDIR: 25 - UDT_CANMOVETICK: 26 - UDT_STR: 27 - UDT_AGI: 28 - UDT_VIT: 29 - UDT_INT: 30 - UDT_DEX: 31 - UDT_LUK: 32 - UDT_ATKRANGE: 33 - UDT_ATKMIN: 34 - UDT_ATKMAX: 35 - UDT_MATKMIN: 36 - UDT_MATKMAX: 37 - UDT_DEF: 38 - UDT_MDEF: 39 - UDT_HIT: 40 - UDT_FLEE: 41 - UDT_PDODGE: 42 - UDT_CRIT: 43 - UDT_RACE: 44 - UDT_ELETYPE: 45 - UDT_ELELEVEL: 46 - UDT_AMOTION: 47 - UDT_ADELAY: 48 - UDT_DMOTION: 49 - UDT_HUNGER: 50 - UDT_INTIMACY: 51 - UDT_LIFETIME: 52 - UDT_MERC_KILLCOUNT: 53 - UDT_STATADD: 54 - UDT_ROBE: 55 - UDT_BODY2: 56 - comment__: "inventory expansion" INVENTORY_INCREASE_STEP: 10 diff --git a/db/mob_db2.conf b/db/mob_db2.conf index 015bae639..e21cc2a27 100644 --- a/db/mob_db2.conf +++ b/db/mob_db2.conf @@ -57,13 +57,15 @@ mob_db: ( MvpExp: mvp experience (int, defaults to 0) MvpDrops: { AegisName: chance (string: int) - ... + // ... } Drops: { AegisName: chance (string: int) - ... + // or + AegisName: (chance, "Option Drop Group") + // ... } - + DamageTakenRate: damage taken rate (int, defaults to 100) }, ******************************************************************************/ diff --git a/db/option_drop_groups.conf b/db/option_drop_groups.conf new file mode 100644 index 000000000..b293be19a --- /dev/null +++ b/db/option_drop_groups.conf @@ -0,0 +1,53 @@ +//================= Hercules Database ===================================== +//= _ _ _ +//= | | | | | | +//= | |_| | ___ _ __ ___ _ _| | ___ ___ +//= | _ |/ _ \ '__/ __| | | | |/ _ \/ __| +//= | | | | __/ | | (__| |_| | | __/\__ \ +//= \_| |_/\___|_| \___|\__,_|_|\___||___/ +//================= License =============================================== +//= This file is part of Hercules. +//= http://herc.ws - http://github.com/HerculesWS/Hercules +//= +//= Copyright (C) 2018 Hercules Dev Team +//= +//= Hercules is free software: you can redistribute it and/or modify +//= it under the terms of the GNU General Public License as published by +//= the Free Software Foundation, either version 3 of the License, or +//= (at your option) any later version. +//= +//= This program is distributed in the hope that it will be useful, +//= but WITHOUT ANY WARRANTY; without even the implied warranty of +//= MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +//= GNU General Public License for more details. +//= +//= You should have received a copy of the GNU General Public License +//= along with this program. If not, see <http://www.gnu.org/licenses/>. +//========================================================================= +//= Random Option Drop Group Database +//========================================================================= + +option_drop_group_db: ( +{ +/************************************************************************** + ************* Entry structure ******************************************** + ************************************************************************** + <Group Name Constant>: ( + { // Option Slot 1 + Rate: (int) chance of filling option slot 1 (100 = 1%) + + // Possible options for slot 1 + // min/max value : int, defaults to 0 + // chance : int, 100 = 1% if not set, will be 100%/number of possibiltiies + OptionName: value + // or + OptionName: [min value, max value] + // or + OptionName: [min value, max value, chance] + // ... (as many as you want) + }, + // ... (up to MAX_ITEM_OPTION) + ), +**************************************************************************/ +} +) diff --git a/db/re/mob_db.conf b/db/re/mob_db.conf index 8973f63f8..f9affdc31 100644 --- a/db/re/mob_db.conf +++ b/db/re/mob_db.conf @@ -95,6 +95,10 @@ mob_db: ( } Drops: { AegisName: chance (string: int) + or + AegisName: (chance, "Option Drop Group") + } + DamageTakenRate: damage taken rate (int, defaults to 100) } WeaponAttacks: { WeaponType: 10000 diff --git a/db/re/refine_db.conf b/db/re/refine_db.conf index 1f0d4a2d2..090522b3c 100644 --- a/db/re/refine_db.conf +++ b/db/re/refine_db.conf @@ -37,6 +37,32 @@ Armors/WeaponLevel1~4: { // Specifies weap RandomBonusStartLevel: (int) // This value specifies the start point for those levels that give a random bonus value (usually the first unsafe upgrade). // - RandomBonusStartLevel is only applied for weapons, and not displayed client-side. RandomBonusValue: (int) // A random number between 0 and (Random bonus start level - Upgrade level + 1) * this value is applied for all upgrades past. + + RefineryUISettings: ( + { + Level: (int or array of int) // Holds either the individule refine level meant for this setting or an array defining a range + of Low to Max level + BlacksmithBlessing: (int) (optional) // How many Blacksmith Blessing required for this range to be safe from breaking + Announce: "(string)" (optional) // Sends an announcement server wide when a player reach this refine level using + Refinery UI, this feature is only available starting from 2017-08-30 RagexeRE or + 2017-09-06 Ragexe the field accepts the following values and it defaults to not announce + Success to set the announcement on item refine successful + Failure to set the announcement on item refine failure + Always to always announce it + Items: { + AegisName: { + Type: "(string)" // The type to determine the chances used for this item, REFINE_CHANCE_TYPE_* + constants are used in here + Cost: (int) (optional) // Amount of zeny required + FailureBehavior: "(string)" (optional) // The expected behvaior on failure for this item, the following strings are used in here + Destroy (default) sets the item to be destroyed on failure + Keep keeps the item after failure + Downgrade downgrades the item by one level on failure + } + } + } + ) + Rates: { // Per level configuration of the refine rates. Lv1~20: { // Lv1 ~ Lv20. NormalChance: (int) // (optional, defaults to 100) Chance of successful refine using normal ores (100 = 100%). @@ -53,6 +79,17 @@ IMPORTANT: On TMW2, max refine level set by scripts is 10 **************************************************************************/ Armors: { + RefineryUISettings: ( + { + Level: [1, 20] + Items: { + Acorn: { + Type: "REFINE_CHANCE_TYPE_NORMAL" + Cost: 100000000 + } + } + }, + ) StatsPerLevel: 0 RandomBonusStartLevel: 0 RandomBonusValue: 0 @@ -174,6 +211,17 @@ WeaponLevel1: { EnrichedChance: 96 } Lv4: { + RefineryUISettings: ( + { + Level: [1, 20] + Items: { + Acorn: { + Type: "REFINE_CHANCE_TYPE_NORMAL" + Cost: 100000000 + } + } + }, + ) NormalChance: 79 EnrichedChance: 93 } @@ -256,6 +304,17 @@ WeaponLevel1: { // Unused : // XXX WARNING XXX: WeaponLevel2: { + RefineryUISettings: ( + { + Level: [1, 20] + Items: { + Acorn: { + Type: "REFINE_CHANCE_TYPE_NORMAL" + Cost: 100000000 + } + } + }, + ) StatsPerLevel: 300 RandomBonusStartLevel: 7 RandomBonusValue: 500 @@ -314,6 +373,17 @@ WeaponLevel2: { } } WeaponLevel3: { + RefineryUISettings: ( + { + Level: [1, 20] + Items: { + Acorn: { + Type: "REFINE_CHANCE_TYPE_NORMAL" + Cost: 100000000 + } + } + }, + ) StatsPerLevel: 500 RandomBonusStartLevel: 6 RandomBonusValue: 800 @@ -376,6 +446,17 @@ WeaponLevel3: { } } WeaponLevel4: { + RefineryUISettings: ( + { + Level: [1, 20] + Items: { + Acorn: { + Type: "REFINE_CHANCE_TYPE_NORMAL" + Cost: 100000000 + } + } + }, + ) StatsPerLevel: 700 RandomBonusStartLevel: 5 RandomBonusValue: 1400 diff --git a/db/re/skill_db.conf b/db/re/skill_db.conf index fa5ca1363..d1c804bc5 100644 --- a/db/re/skill_db.conf +++ b/db/re/skill_db.conf @@ -75,6 +75,7 @@ ShowSkillScale: true/false (boolean, defaults to false) } AttackType: "Attack Type" (string, defaults to "None") + HiddenTrap: true/false (boolean, defaults to false) Types: "None", "Weapon", "Magic" or "Misc" Element: "Element Type" (string) (Optional field - Default "Ele_Neutral") (can be grouped by Levels) diff --git a/npc/dev/test.txt b/npc/dev/test.txt index e9058aee0..f98651dfd 100644 --- a/npc/dev/test.txt +++ b/npc/dev/test.txt @@ -730,10 +730,10 @@ function script HerculesSelfTestHelper { callsub(OnCheckStr, "sprintf (positional)", sprintf("'%2$s' '%1$c'", "First", "Second"), "'Second' 'F'"); if (.errors) { - debugmes "Script engine self-test [ \033[0;31mFAILED\033[0m ]"; - debugmes "**** The test was completed with " + .errors + " errors. ****"; + consolemes(CONSOLEMES_DEBUG, "Script engine self-test [ \033[0;31mFAILED\033[0m ]"); + consolemes(CONSOLEMES_ERROR, "**** The test was completed with " + .errors + " errors. ****"); } else { - debugmes "Script engine self-test [ \033[0;32mPASSED\033[0m ]"; + consolemes(CONSOLEMES_DEBUG, "Script engine self-test [ \033[0;32mPASSED\033[0m ]"); } return .errors; end; @@ -778,8 +778,8 @@ OnReportError: .@val$ = getarg(1,""); .@ref$ = getarg(2,""); if (.errors == 1) - debugmes "**** WARNING: Any self-test results past this point are unreliable because of previous errors. ****"; - debugmes "Error: "+.@msg$+": '"+.@val$+"' (found) != '"+.@ref$+"' (expected)"; + consolemes(CONSOLEMES_ERROR, "**** WARNING: Any self-test results past this point are unreliable because of previous errors. ****"); + consolemes(CONSOLEMES_ERROR, "Error: "+.@msg$+": '"+.@val$+"' (found) != '"+.@ref$+"' (expected)"); ++.errors; //end; return; diff --git a/sql-files/main.sql b/sql-files/main.sql index 45a66e8fa..bafe3265d 100644 --- a/sql-files/main.sql +++ b/sql-files/main.sql @@ -241,6 +241,7 @@ CREATE TABLE IF NOT EXISTS `char` ( `uniqueitem_counter` BIGINT(20) UNSIGNED NOT NULL DEFAULT '0', `sex` ENUM('M','F','U') NOT NULL DEFAULT 'U', `hotkey_rowshift` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0', + `hotkey_rowshift2` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0', `attendance_count` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0', `attendance_timer` BIGINT(20) NULL DEFAULT '0', `title_id` INT(11) UNSIGNED NOT NULL DEFAULT '0', @@ -460,6 +461,7 @@ CREATE TABLE IF NOT EXISTS `guild_castle` ( CREATE TABLE IF NOT EXISTS `guild_expulsion` ( `guild_id` INT(11) UNSIGNED NOT NULL DEFAULT '0', `account_id` INT(11) UNSIGNED NOT NULL DEFAULT '0', + `char_id` INT(11) UNSIGNED NOT NULL DEFAULT '0', `name` VARCHAR(24) NOT NULL DEFAULT '', `mes` VARCHAR(40) NOT NULL DEFAULT '', PRIMARY KEY (`guild_id`,`name`) @@ -936,6 +938,9 @@ INSERT IGNORE INTO `sql_updates` (`timestamp`) VALUES (1532403228); -- 2018-07-2 INSERT IGNORE INTO `sql_updates` (`timestamp`) VALUES (1535865732); -- 2018-09-01--05-22.sql INSERT IGNORE INTO `sql_updates` (`timestamp`) VALUES (1544738447); -- 2018-12-14--01-02.sql INSERT IGNORE INTO `sql_updates` (`timestamp`) VALUES (1546059075); -- 2018-12-29--07-51.sql +INSERT IGNORE INTO `sql_updates` (`timestamp`) VALUES (1554760320); -- 2019-04-08--21-52.sql +INSERT IGNORE INTO `sql_updates` (`timestamp`) VALUES (1556147483); -- 2019-04-25--02-12.sql +INSERT IGNORE INTO `sql_updates` (`timestamp`) VALUES (1557414445); -- 2019-05-09--18-07.sql -- -- Table structure for table `storage` diff --git a/sql-files/upgrades/2019-04-08--21-52.sql b/sql-files/upgrades/2019-04-08--21-52.sql new file mode 100644 index 000000000..bd015acf8 --- /dev/null +++ b/sql-files/upgrades/2019-04-08--21-52.sql @@ -0,0 +1,29 @@ +#1554760320 + +-- This file is part of Hercules. +-- http://herc.ws - http://github.com/HerculesWS/Hercules +-- +-- Copyright (C) 2013-2019 Hercules Dev Team +-- +-- Hercules is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see <http://www.gnu.org/licenses/>. + +UPDATE `auction` SET `card3` = `card2` >> 16, `card2` = `card2` % 65536 WHERE `card2` > 65536 AND (`card0` = 255 OR `card0` = 254); +UPDATE `cart_inventory` SET `card3` = `card2` >> 16, `card2` = `card2` % 65536 WHERE `card2` > 65536 AND (`card0` = 255 OR `card0` = 254); +UPDATE `inventory` SET `card3` = `card2` >> 16, `card2` = `card2` % 65536 WHERE `card2` > 65536 AND (`card0` = 255 OR `card0` = 254); +UPDATE `guild_storage` SET `card3` = `card2` >> 16, `card2` = `card2` % 65536 WHERE `card2` > 65536 AND (`card0` = 255 OR `card0` = 254); +UPDATE `mail` SET `card3` = `card2` >> 16, `card2` = `card2` % 65536 WHERE `card2` > 65536 AND (`card0` = 255 OR `card0` = 254); +UPDATE `rodex_items` SET `card3` = `card2` >> 16, `card2` = `card2` % 65536 WHERE `card2` > 65536 AND (`card0` = 255 OR `card0` = 254); +UPDATE `storage` SET `card3` = `card2` >> 16, `card2` = `card2` % 65536 WHERE `card2` > 65536 AND (`card0` = 255 OR `card0` = 254); + +INSERT INTO `sql_updates` (`timestamp`, `ignored`) VALUES (1554760320, 'No'); diff --git a/sql-files/upgrades/2019-04-25--02-12.sql b/sql-files/upgrades/2019-04-25--02-12.sql new file mode 100644 index 000000000..64abe45b6 --- /dev/null +++ b/sql-files/upgrades/2019-04-25--02-12.sql @@ -0,0 +1,24 @@ +#1556147483 + +-- This file is part of Hercules. +-- http://herc.ws - http://github.com/HerculesWS/Hercules +-- +-- Copyright (C) 2013-2019 Hercules Dev Team +-- +-- Hercules is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see <http://www.gnu.org/licenses/>. + +TRUNCATE TABLE `guild_expulsion`; +ALTER TABLE `guild_expulsion` ADD `char_id` INT(11) UNSIGNED NOT NULL DEFAULT '0' AFTER `account_id`; + +INSERT INTO `sql_updates` (`timestamp`) VALUES (1556147483); diff --git a/sql-files/upgrades/2019-05-09--18-07.sql b/sql-files/upgrades/2019-05-09--18-07.sql new file mode 100644 index 000000000..96d80c29c --- /dev/null +++ b/sql-files/upgrades/2019-05-09--18-07.sql @@ -0,0 +1,22 @@ +#1557414445 + +-- This file is part of Hercules. +-- http://herc.ws - http://github.com/HerculesWS/Hercules +-- +-- Copyright (C) 2015 Hercules Dev Team +-- +-- Hercules is free software: you can redistribute it and/or modify +-- it under the terms of the GNU General Public License as published by +-- the Free Software Foundation, either version 3 of the License, or +-- (at your option) any later version. +-- +-- This program is distributed in the hope that it will be useful, +-- but WITHOUT ANY WARRANTY; without even the implied warranty of +-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +-- GNU General Public License for more details. +-- +-- You should have received a copy of the GNU General Public License +-- along with this program. If not, see <http://www.gnu.org/licenses/>. + +ALTER TABLE `char` ADD COLUMN `hotkey_rowshift2` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0' AFTER `hotkey_rowshift`; +INSERT INTO `sql_updates` (`timestamp`) VALUES (1557414445); diff --git a/sql-files/upgrades/index.txt b/sql-files/upgrades/index.txt index 13b2fda69..915d3565d 100644 --- a/sql-files/upgrades/index.txt +++ b/sql-files/upgrades/index.txt @@ -51,3 +51,6 @@ 2018-09-01--05-22.sql 2018-12-14--01-02.sql 2018-12-29--07-51.sql +2019-04-08--21-52.sql +2019-04-25--02-12.sql +2019-05-09--18-07.sql |