summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJesusaves <cpntb1@ymail.com>2019-09-14 18:49:13 -0300
committerJesusaves <cpntb1@ymail.com>2019-09-14 18:49:13 -0300
commitcaa876d59502c2020e7685adba470a3fae8786bb (patch)
treef3119b50fc1ea6f5369d60e7b1c03ba8bffdf98d
parente356ef5e200896fbf74803618c5add7dca8b18ce (diff)
downloadserverdata-caa876d59502c2020e7685adba470a3fae8786bb.tar.gz
serverdata-caa876d59502c2020e7685adba470a3fae8786bb.tar.bz2
serverdata-caa876d59502c2020e7685adba470a3fae8786bb.tar.xz
serverdata-caa876d59502c2020e7685adba470a3fae8786bb.zip
Hercules updates (authored by 4144)
-rw-r--r--.gitlab-ci.yml2
-rwxr-xr-x.tools/scripts/init.sh7
-rw-r--r--conf/map/battle.conf5
-rw-r--r--conf/map/battle/client.conf6
-rw-r--r--conf/map/battle/drops.conf11
-rw-r--r--conf/map/battle/feature.conf12
-rw-r--r--conf/map/battle/homunc.conf2
-rw-r--r--conf/map/battle/limits.conf57
-rw-r--r--conf/map/battle/skill.conf38
-rw-r--r--conf/map/map-server.conf3
-rw-r--r--conf/map/script.conf4
-rw-r--r--conf/messages.conf39
-rw-r--r--db/castle_db.conf44
-rw-r--r--db/castle_db.txt13
-rw-r--r--db/constants.conf114
-rw-r--r--db/mob_db2.conf8
-rw-r--r--db/option_drop_groups.conf53
-rw-r--r--db/re/mob_db.conf4
-rw-r--r--db/re/refine_db.conf81
-rw-r--r--db/re/skill_db.conf1
-rw-r--r--npc/dev/test.txt10
-rw-r--r--sql-files/main.sql5
-rw-r--r--sql-files/upgrades/2019-04-08--21-52.sql29
-rw-r--r--sql-files/upgrades/2019-04-25--02-12.sql24
-rw-r--r--sql-files/upgrades/2019-05-09--18-07.sql22
-rw-r--r--sql-files/upgrades/index.txt3
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