summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitlab-ci.yml49
-rw-r--r--conf/map/battle/feature.conf8
-rw-r--r--conf/map/battle/items.conf4
-rw-r--r--conf/map/battle/monster.conf4
-rw-r--r--conf/messages.conf9
-rw-r--r--db/attendance_db.conf119
-rw-r--r--db/pet_db2.conf64
-rw-r--r--db/pet_db2.txt55
-rw-r--r--db/re/pet_db.conf112
-rw-r--r--db/re/pet_db.txt55
-rw-r--r--sql-files/main.sql3
-rw-r--r--sql-files/upgrades/2018-03-10--04-06.sql24
-rw-r--r--sql-files/upgrades/index.txt1
13 files changed, 393 insertions, 114 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 1a0083051..71e78c37a 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -58,6 +58,16 @@ mysql_init_5.6:
services:
- mysql:5.6
+mysql_init_5.7:
+ stage: build
+ script:
+ - ./.tools/jobs/install.sh "mysql-client"
+ - ./.tools/jobs/clonedata.sh
+ - ./.tools/jobs/initdb.sh mysql
+ image: debian:unstable
+ services:
+ - mysql:5.7
+
mariadb_init_latest:
stage: build
script:
@@ -88,7 +98,7 @@ mariadb_init_5.5:
services:
- mariadb:5.5
-mysql_run_latest:
+.mysql_run_latest:
stage: test
script:
- export CC=gcc-4.9
@@ -105,6 +115,23 @@ mysql_run_latest:
services:
- mysql:latest
+mysql_run_5.7:
+ stage: test
+ script:
+ - export CC=gcc-4.9
+ - ./.tools/jobs/install.sh "mysql-client
+ gcc-4.9
+ git-core
+ make autoconf automake autopoint
+ libtool libmysqlclient-dev libz-dev libpcre3-dev"
+ - ./.tools/jobs/cloneall.sh
+ - ./.tools/jobs/initdb.sh mysql
+ - ./.tools/jobs/build.sh "--enable-packetver=${packetver} --enable-epoll --enable-debug --enable-sanitize=full --disable-manager --enable-Werror --enable-buildbot" "--enable-werror --enable-lto --enable-sanitize"
+ - ./.tools/jobs/runserver.sh mysql
+ image: debian:jessie
+ services:
+ - mysql:5.7
+
mariadb_run_latest:
stage: test
script:
@@ -122,7 +149,7 @@ mariadb_run_latest:
services:
- mariadb:latest
-mysql_run_valgrind_latest:
+.mysql_run_valgrind_latest:
stage: valgrind
script:
- export CC=gcc-6
@@ -140,6 +167,24 @@ mysql_run_valgrind_latest:
services:
- mysql:latest
+mysql_run_valgrind_5.7:
+ stage: valgrind
+ script:
+ - export CC=gcc-6
+ - ./.tools/jobs/install.sh "mysql-client
+ gcc-6
+ git-core
+ make autoconf automake autopoint
+ libtool libmysqlclient-dev libz-dev libpcre3-dev
+ valgrind"
+ - ./.tools/jobs/cloneall.sh
+ - ./.tools/jobs/initdb.sh mysql
+ - ./.tools/jobs/build.sh "--enable-packetver=${packetver} --enable-epoll --enable-debug --disable-manager --enable-Werror --enable-buildbot" "--enable-werror"
+ - ./.tools/jobs/runservervalgrind.sh mysql
+ image: debian:unstable
+ services:
+ - mysql:5.7
+
mariadb_run_valgrind_latest:
stage: valgrind
script:
diff --git a/conf/map/battle/feature.conf b/conf/map/battle/feature.conf
index e01c7f93d..fc6b49ede 100644
--- a/conf/map/battle/feature.conf
+++ b/conf/map/battle/feature.conf
@@ -70,4 +70,12 @@ features: {
// true: enable (Default)
// false: disable
enable_homun_autofeed: true
+
+ // Enable Attendance System for clients >= 2018-03-07bRagexeRE or 2018-04-04bRagexe
+ // true: enable (Default)
+ // false: disable (NYI on TMW2)
+ enable_attendance_system: false
+
+ // Attendance End time in the format YearMonthDay
+ feature_attendance_endtime: 20180331
}
diff --git a/conf/map/battle/items.conf b/conf/map/battle/items.conf
index f7ffd3f32..135df7107 100644
--- a/conf/map/battle/items.conf
+++ b/conf/map/battle/items.conf
@@ -119,3 +119,7 @@ bow_unequip_arrow: true
// How much should rental mounts increase a player's movement speed? (Note 2)
// Official: 25 (Default)
boarding_halter_speed: 25
+
+// Allow to use items when the storage is open?
+// Official: false (Default)
+storage_use_item: false
diff --git a/conf/map/battle/monster.conf b/conf/map/battle/monster.conf
index beffda982..be18ae5fd 100644
--- a/conf/map/battle/monster.conf
+++ b/conf/map/battle/monster.conf
@@ -234,6 +234,10 @@ mob_slave_keep_target: true
// See http://irowiki.org/wiki/MVP#Gravestone
mvp_tomb_enabled: true
+// Delay before a tomb is spawned, in milliseconds.
+// Default: 10000 (10 seconds)
+mvp_tomb_spawn_delay: 10000
+
// Show hp bar on monsters? (Default: yes)
// NOTE: only works on client 2012-04-04aRagexeRE onwards
show_monster_hp_bar: true
diff --git a/conf/messages.conf b/conf/messages.conf
index e5b2528eb..4359b080e 100644
--- a/conf/messages.conf
+++ b/conf/messages.conf
@@ -74,7 +74,10 @@
46: %s recalled!
47: Base level can't go any higher.
48: Any work in progress (NPC dialog, manufacturing ...) quit and try again.
-//49-52 FREE
+49: Unable to Teleport in this area
+50: This skill cannot be used within this area.
+51: This item cannot be used within this area.
+//52 FREE
53: '%s' stats:
54: No player found in map '%s'.
55: 1 player found in map '%s'.
@@ -474,7 +477,9 @@
538: Hack on trade: character '%s' (account: %d) try to trade more items that he has.
539: This player has %d of a kind of item (id: %d), and tried to trade %d of them.
540: This player has been definitively blocked.
-//541-545 FREE
+//541-543 FREE
+544: <MSG>3455</MSG>
+545: <MSG>3456,%d</MSG>
// @showmobs
546: Please enter a mob name/id (usage: @showmobs <mob name/id>)
547: Invalid mob name %s!
diff --git a/db/attendance_db.conf b/db/attendance_db.conf
new file mode 100644
index 000000000..e5a1b259b
--- /dev/null
+++ b/db/attendance_db.conf
@@ -0,0 +1,119 @@
+//================= Hercules Database =====================================
+//= _ _ _
+//= | | | | | |
+//= | |_| | ___ _ __ ___ _ _| | ___ ___
+//= | _ |/ _ \ '__/ __| | | | |/ _ \/ __|
+//= | | | | __/ | | (__| |_| | | __/\__ \
+//= \_| |_/\___|_| \___|\__,_|_|\___||___/
+//================= License ===============================================
+//= This file is part of Hercules.
+//= http://herc.ws - http://github.com/HerculesWS/Hercules
+//=
+//= Copyright (C) 2018 Hercules Dev Team
+//= Copyright (C) 2018 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/>.
+//=========================================================================
+
+attendance_db:(
+/**************************************************************************
+ ************* Entry structure ********************************************
+ **************************************************************************
+{
+ // ================ Mandatory fields ==============================
+ ItemID: Item Constant (string)
+ Amount: Item Amount (int)
+},
+**************************************************************************/
+{
+ ItemID: "Acorn"
+ Amount: 1
+},
+{
+ ItemID: "Acorn"
+ Amount: 2
+},
+{
+ ItemID: "Acorn"
+ Amount: 3
+},
+{
+ ItemID: "Acorn"
+ Amount: 4
+},
+{
+ ItemID: "Acorn"
+ Amount: 5
+},
+{
+ ItemID: "Acorn"
+ Amount: 6
+},
+{
+ ItemID: "Acorn"
+ Amount: 7
+},
+{
+ ItemID: "Acorn"
+ Amount: 8
+},
+{
+ ItemID: "Acorn"
+ Amount: 9
+},
+{
+ ItemID: "Acorn"
+ Amount: 10
+},
+{
+ ItemID: "Acorn"
+ Amount: 11
+},
+{
+ ItemID: "Acorn"
+ Amount: 12
+},
+{
+ ItemID: "Acorn"
+ Amount: 13
+},
+{
+ ItemID: "Acorn"
+ Amount: 14
+},
+{
+ ItemID: "Acorn"
+ Amount: 15
+},
+{
+ ItemID: "Acorn"
+ Amount: 16
+},
+{
+ ItemID: "Acorn"
+ Amount: 17
+},
+{
+ ItemID: "Acorn"
+ Amount: 18
+},
+{
+ ItemID: "Acorn"
+ Amount: 19
+},
+{
+ ItemID: "Acorn"
+ Amount: 20
+}
+)
diff --git a/db/pet_db2.conf b/db/pet_db2.conf
new file mode 100644
index 000000000..34a6130e4
--- /dev/null
+++ b/db/pet_db2.conf
@@ -0,0 +1,64 @@
+//================= 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/>.
+//=========================================================================
+//= Pets Database
+//=========================================================================
+
+pet_db:(
+/**************************************************************************
+ ************* Entry structure ********************************************
+ **************************************************************************
+{
+ // ================ Mandatory fields ==============================
+ Id: ID (int)
+ SpriteName: "Sprite_Name" (string)
+ Name: "Pet Name" (string)
+ // ================ Optional fields ===============================
+ TamingItem: Taming Item (string, defaults to 0)
+ EggItem: Egg Id (string, defaults to 0)
+ AccessoryItem: Equipment Id (string, defaults to 0)
+ FoodItem: Food Id (string, defaults to 0)
+ FoodEffectiveness: hunger points (int, defaults to 0)
+ HungerDelay: hunger time (int, defaults to 0)
+ Intimacy: {
+ Initial: start intimacy (int, defaults to 0)
+ FeedIncrement: feeding intimacy (int, defaults to 0)
+ OverFeedDecrement: overfeeding intimacy (int, defaults to 0)
+ OwnerDeathDecrement: owner die intimacy (int, defaults to 0)
+ }
+ CaptureRate: capture rate (int, defaults to 0)
+ Speed: speed (int, defaults to 0)
+ SpecialPerformance: true/false (boolean, defaults to false)
+ TalkWithEmotes: convert talk (boolean, defaults to false)
+ AttackRate: attack rate (int, defaults to 0)
+ DefendRate: Defence attack (int, defaults to 0)
+ ChangeTargetRate: change target (int, defaults to 0)
+ PetScript: <" Pet Script (can also be multi-line) ">
+ EquipScript: <" Equip Script (can also be multi-line) ">
+},
+**************************************************************************/
+ // entries in this file will override the ones in /(pre-)re/pet_db.conf
+)
diff --git a/db/pet_db2.txt b/db/pet_db2.txt
deleted file mode 100644
index ca5e4e14a..000000000
--- a/db/pet_db2.txt
+++ /dev/null
@@ -1,55 +0,0 @@
-// Pet Additional Database
-//
-// Structure of Database:
-// MobID,Name,JName,LureID,EggID,EquipID,FoodID,Fullness,HungryDelay,R_Hungry,R_Full,Intimate,Die,Capture,Speed,S_Performance,talk_convert_class,attack_rate,defence_attack_rate,change_target_rate,pet_script,loyal_script
-//
-// 01. MobID Monster ID of the pet.
-// 02. Name Name of the monster as defined in the database.
-// 03. JName The display name of the monster when hatched.
-// 04. LureID Pet Tame Item ID.
-// 05. EggID Pet Egg ID.
-// 06. EquipID Pet Accessory ID.
-// 07. FoodID Pet Food ID.
-// 08. Fullness The amount Hunger is decreased every [HungryDelay] seconds.
-// 09. HungryDelay The amount of time it takes for hunger to decrease after feeding. (Default: 60 seconds)
-// 10. R_Hungry Amount of Intimacy that is increased when fed.
-// 11. R_Full Amount of Intimacy that is decreased when over-fed.
-// 12. Intimate Amount of Intimacy the pet starts with.
-// 13. Die Amount of Intimacy that is decreased when the pet owner dies.
-// 14. Capture Capture succes rate (10000 = 100%)
-// 15. Speed Pet's walk speed. (Defaul: 150)
-// 16. S_Performance Special Performance. (Yes = 1, No = 0)
-// 17. talk_convert_class Disables pet talk (instead of talking they emote with /!.)
-// 18. attack_rate Rate of which the pet will attack (requires at least pet_support_min_friendly intimacy).
-// 19. defence_attack_rate Rate of which the pet will retaliate when master is being attacked (requires at least pet_support_min_friendly intimacy).
-// 20. change_target_rate Rate of which the pet will change its attack target.
-// 21. pet_script Script to execute when the pet is hatched.
-// 22. loyal_script Script to execute when the pet is hatched (requires at least pet_equip_min_friendly intimacy, independent of pet_script).
-//NOTE: The max value (100%) of attack_rate, defense_rate & change_target_rate is 10000.
-
-//In theory you can use any valid script, but it is run only once upon pet
-//loading, so it is recommended you use the specific pet scripts:
-
-//petskillattack skillid, skilllv, rate, bonusrate
-//Skill attack that triggers while the pet is attacking. Rate is the base
-//chance of execution per attack. Bonusrate is an additional success rate when
-//intimacy reaches max.
-
-//petskillattack2 skillid, damage, hits, rate, bonusrate
-//Same as petskillattack, but the damage and number of hits is fixed
-//the damage specified is total, not per hit.
-
-//petskillsupport skillid, skilllv, delay, hp%, sp%
-//Casts a support skill when the health levels are below the specified hp% and
-//sp%. Delay is the minimum time in seconds before the skill can be cast again
-
-//petrecovery type, delay: Cures the "type" status effect after "delay" seconds
-
-//petskillbonus type, value, duration, delay
-//Gives bonus stats. Type is the stat to increase (bStr, bLuk), value is the
-//amount by which it is increased, duration signals how long the bonus lasts
-//delay is the time elapsed after the bonus ends and before it starts again.
-
-//A single pet can have petloot, petskillbonus, petskillattack (or
-//petskillattack2) and petskillsupport at the same time, but only one of each.
-
diff --git a/db/re/pet_db.conf b/db/re/pet_db.conf
new file mode 100644
index 000000000..de86ce75c
--- /dev/null
+++ b/db/re/pet_db.conf
@@ -0,0 +1,112 @@
+//================= 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/>.
+//=========================================================================
+//= Pets Database
+//=========================================================================
+
+pet_db:(
+/**************************************************************************
+ ************* Entry structure ********************************************
+ **************************************************************************
+{
+ // ================ Mandatory fields ==============================
+ Id: ID (int)
+ SpriteName: "Sprite_Name" (string)
+ Name: "Pet Name" (string)
+ // ================ Optional fields ===============================
+ TamingItem: Taming Item (string, defaults to 0)
+ EggItem: Egg Id (string, defaults to 0)
+ AccessoryItem: Equipment Id (string, defaults to 0)
+ FoodItem: Food Id (string, defaults to 0)
+ FoodEffectiveness: hunger points (int, defaults to 0)
+ HungerDelay: hunger time (int, defaults to 0)
+ Intimacy: {
+ Initial: start intimacy (int, defaults to 0)
+ FeedIncrement: feeding intimacy (int, defaults to 0)
+ OverFeedDecrement: overfeeding intimacy (int, defaults to 0)
+ OwnerDeathDecrement: owner die intimacy (int, defaults to 0)
+ }
+ CaptureRate: capture rate (int, defaults to 0)
+ Speed: speed (int, defaults to 0)
+ SpecialPerformance: true/false (boolean, defaults to false)
+ TalkWithEmotes: convert talk (boolean, defaults to false)
+ AttackRate: attack rate (int, defaults to 0)
+ DefendRate: Defence attack (int, defaults to 0)
+ ChangeTargetRate: change target (int, defaults to 0)
+ PetScript: <" Pet Script (can also be multi-line) ">
+ EquipScript: <" Equip Script (can also be multi-line) ">
+},
+**************************************************************************/
+
+{
+ Id: 1002
+ SpriteName: "Piou"
+ Name: "Piou"
+ TamingItem: "PiouFeathers"
+ EggItem: "PiouEgg"
+ FoodItem: "Piberries"
+ FoodEffectiveness: 80
+ HungerDelay: 60
+ Intimacy: {
+ Initial: 250
+ FeedIncrement: 50
+ OverFeedDecrement: 100
+ OwnerDeathDecrement: 20
+ }
+ CaptureRate: 1000
+ Speed: 150
+ SpecialPerformance: true
+ AttackRate: 350
+ DefendRate: 400
+ ChangeTargetRate: 800
+ PetScript: <" petloot 10; ">
+ EquipScript: <" bonus bLuk,2; bonus bCritical,1; ">
+},
+{
+ Id: 1049
+ SpriteName: "Bhop Fluffy"
+ Name: "Bhop Fluffy"
+ TamingItem: "GoldenEasteregg"
+ EggItem: "BhopperEgg"
+ FoodItem: "Aquada"
+ FoodEffectiveness: 100
+ HungerDelay: 60
+ Intimacy: {
+ Initial: 250
+ FeedIncrement: 50
+ OverFeedDecrement: 50
+ OwnerDeathDecrement: 50
+ }
+ CaptureRate: 1000
+ Speed: 140
+ SpecialPerformance: true
+ AttackRate: 350
+ DefendRate: 400
+ ChangeTargetRate: 800
+ PetScript: <" petskillbonus bLuk, 5, 30, 90; ">
+ EquipScript: <" bonus bLuk,2; bonus bSPrecovRate,2; ">
+},
+)
diff --git a/db/re/pet_db.txt b/db/re/pet_db.txt
deleted file mode 100644
index 3a38b2879..000000000
--- a/db/re/pet_db.txt
+++ /dev/null
@@ -1,55 +0,0 @@
-// Pet Database
-//
-// Structure of Database:
-// MobID,Name,JName,LureID,EggID,EquipID,FoodID,Fullness,HungryDelay,R_Hungry,R_Full,Intimate,Die,Capture,Speed,S_Performance,talk_convert_class,attack_rate,defence_attack_rate,change_target_rate,pet_script,loyal_script
-//
-// 01. MobID Monster ID of the pet.
-// 02. Name Name of the monster as defined in the database.
-// 03. JName The display name of the monster when hatched.
-// 04. LureID Pet Tame Item ID.
-// 05. EggID Pet Egg ID.
-// 06. EquipID Pet Accessory ID.
-// 07. FoodID Pet Food ID.
-// 08. Fullness The amount Hunger is decreased every [HungryDelay] seconds.
-// 09. HungryDelay The amount of time it takes for hunger to decrease after feeding. (Default: 60 seconds)
-// 10. R_Hungry Amount of Intimacy that is increased when fed.
-// 11. R_Full Amount of Intimacy that is decreased when over-fed.
-// 12. Intimate Amount of Intimacy the pet starts with.
-// 13. Die Amount of Intimacy that is decreased when the pet owner dies.
-// 14. Capture Capture succes rate (10000 = 100%)
-// 15. Speed Pet's walk speed. (Defaul: 150)
-// 16. S_Performance Special Performance. (Yes = 1, No = 0)
-// 17. talk_convert_class Disables pet talk (instead of talking they emote with /!.)
-// 18. attack_rate Rate of which the pet will attack (requires at least pet_support_min_friendly intimacy).
-// 19. defence_attack_rate Rate of which the pet will retaliate when master is being attacked (requires at least pet_support_min_friendly intimacy).
-// 20. change_target_rate Rate of which the pet will change its attack target.
-// 21. pet_script Script to execute when the pet is hatched.
-// 22. loyal_script Script to execute when the pet is hatched (requires at least pet_equip_min_friendly intimacy, independent of pet_script).
-//NOTE: The max value (100%) of attack_rate, defense_rate & change_target_rate is 10000.
-
-//In theory you can use any valid script, but it is run only once upon pet
-//loading, so it is recommended you use the specific pet scripts:
-
-//petskillattack skillid, skilllv, hits, rate, bonusrate
-//Skill attack that triggers while the pet is attacking. Rate is the base
-//chance of execution per attack. Bonusrate is an additional success rate when
-//intimacy reaches max. If hits is specified and different than 0, it will make
-//the pet cast the skill with a fixed amount of damage inflicted and the
-//specified number of hits. A value of zero uses the skill's defaults.
-
-//petskillsupport skillid, skilllv, delay, hp%, sp%
-//Casts a support skill when the health levels are below the specified hp% and
-//sp%. Delay is the minimum time in seconds before the skill can be cast again
-
-//petrecovery type, delay: Cures the "type" status effect after "delay" seconds
-
-//petskillbonus type, value, duration, delay
-//Gives bonus stats. Type is the stat to increase (bStr, bLuk), value is the
-//amount by which it is increased, duration signals how long the bonus lasts
-//delay is the time elapsed after the bonus ends and before it starts again.
-
-//A single pet can have petloot, petskillbonus, petskillattack and
-//petskillsupport at the same time, but only one of each.
-
-1002,Piou,Piou,701,4000,0,507,80,60,50,100,250,20,1000,150,1,0,350,400,800,{ petloot 10; },{ bonus bLuk,2; bonus bCritical,1; }
-1049,Bhop Fluffy,Bhop Fluffy,834,4001,0,509,100,60,50,50,250,50,1000,140,1,0,350,400,800,{ petskillbonus bLuk, 5, 30, 90; },{ bonus bLuk,2; bonus bSPrecovRate,2; }
diff --git a/sql-files/main.sql b/sql-files/main.sql
index 5546c0271..2e51d6a12 100644
--- a/sql-files/main.sql
+++ b/sql-files/main.sql
@@ -219,6 +219,8 @@ 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',
+ `attendance_count` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0',
+ `attendance_timer` BIGINT(20) NULL DEFAULT '0',
PRIMARY KEY (`char_id`),
UNIQUE KEY `name_key` (`name`),
KEY `account_id` (`account_id`),
@@ -890,6 +892,7 @@ INSERT IGNORE INTO `sql_updates` (`timestamp`) VALUES (1496588640); -- 2017-06-0
INSERT IGNORE INTO `sql_updates` (`timestamp`) VALUES (1496588700); -- 2017-06-04--15-05.sql
INSERT IGNORE INTO `sql_updates` (`timestamp`) VALUES (1509835214); -- 2017-11-04--10-39.sql
INSERT IGNORE INTO `sql_updates` (`timestamp`) VALUES (1519671456); -- 2018-02-26--15-57.sql
+INSERT IGNORE INTO `sql_updates` (`timestamp`) VALUES (1520654809); -- 2018-03-10--04-06.sql
--
-- Table structure for table `storage`
--
diff --git a/sql-files/upgrades/2018-03-10--04-06.sql b/sql-files/upgrades/2018-03-10--04-06.sql
new file mode 100644
index 000000000..ee827735d
--- /dev/null
+++ b/sql-files/upgrades/2018-03-10--04-06.sql
@@ -0,0 +1,24 @@
+#1520654809
+
+-- This file is part of Hercules.
+-- http://herc.ws - http://github.com/HerculesWS/Hercules
+--
+-- Copyright (C) 2017 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 `attendance_count` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0' AFTER `hotkey_rowshift`;
+ALTER TABLE `char` ADD COLUMN `attendance_timer` BIGINT(20) NULL DEFAULT '0' AFTER `attendance_count`;
+
+INSERT INTO `sql_updates` (`timestamp`, `ignored`) VALUES (1520654809 , 'No');
diff --git a/sql-files/upgrades/index.txt b/sql-files/upgrades/index.txt
index 976df13f6..dd474ea9d 100644
--- a/sql-files/upgrades/index.txt
+++ b/sql-files/upgrades/index.txt
@@ -43,3 +43,4 @@
2017-06-04--15-05.sql
2017-11-04--10-39.sql
2018-02-26--15-57.sql
+2018-03-10--04-06.sql