diff options
29 files changed, 228 insertions, 206 deletions
diff --git a/db/constants.conf b/db/constants.conf index ee78cf32e..59cbc431c 100644 --- a/db/constants.conf +++ b/db/constants.conf @@ -451,124 +451,6 @@ constants_db: { cell_chknovending: 12 cell_chknochat: 13 - comment__: "Parameters" - BaseExp: { - Value: 1 - Parameter: true - } - JobExp: { - Value: 2 - Parameter: true - } - Karma: { - Value: 3 - Parameter: true - } - Manner: { - Value: 4 - Parameter: true - } - Hp: { - Value: 5 - Parameter: true - } - MaxHp: { - Value: 6 - Parameter: true - } - Sp: { - Value: 7 - Parameter: true - } - MaxSp: { - Value: 8 - Parameter: true - } - StatusPoint: { - Value: 9 - Parameter: true - } - BaseLevel: { - Value: 11 - Parameter: true - } - SkillPoint: { - Value: 12 - Parameter: true - } - Class: { - Value: 19 - Parameter: true - } - Zeny: { - Value: 20 - Parameter: true - } - Sex: { - Value: 21 - Parameter: true - } - NextBaseExp: { - Value: 22 - Parameter: true - } - NextJobExp: { - Value: 23 - Parameter: true - } - Weight: { - Value: 24 - Parameter: true - } - MaxWeight: { - Value: 25 - Parameter: true - } - JobLevel: { - Value: 55 - Parameter: true - } - Upper: { - Value: 56 - Parameter: true - } - BaseJob: { - Value: 119 - Parameter: true - } - BaseClass: { - Value: 120 - Parameter: true - } - killerrid: { - Value: 121 - Parameter: true - } - killedrid: { - Value: 122 - Parameter: true - } - SlotChange: { - Value: 123 - Parameter: true - } - CharRename: { - Value: 124 - Parameter: true - } - ModExp: { - Value: 125 - Parameter: true - } - ModDrop: { - Value: 126 - Parameter: true - } - ModDeath: { - Value: 127 - Parameter: true - } - comment__: "Bonuses / Parameter IDs" bMaxHP: 6 bMaxSP: 8 diff --git a/db/pre-re/item_db.conf b/db/pre-re/item_db.conf index 48c6b2957..5546d35cf 100644 --- a/db/pre-re/item_db.conf +++ b/db/pre-re/item_db.conf @@ -43544,8 +43544,8 @@ item_db: ( Refine: false View: 373 Script: <" - bonus2 bResEff,Eff_Stun,500; - skill HT_FLASHER,1; + bonus bBaseAtk, 5; + bonus5 bAutoSpellWhenHit, BS_GREED, 1, 10, BF_SHORT, 0; "> }, { diff --git a/db/re/item_db.conf b/db/re/item_db.conf index efd73e534..9b7ad19c4 100644 --- a/db/re/item_db.conf +++ b/db/re/item_db.conf @@ -58593,9 +58593,12 @@ item_db: ( Loc: 256 Refine: false View: 373 + Trade: { + nodrop: true + } Script: <" - bonus2 bResEff,Eff_Stun,500; - skill HT_FLASHER,1; + bonus bBaseAtk, 5; + bonus5 bAutoSpellWhenHit, BS_GREED, 1, 10, BF_SHORT, 0; "> }, { diff --git a/doc/constants.md b/doc/constants.md index bec13413b..138808dfe 100644 --- a/doc/constants.md +++ b/doc/constants.md @@ -384,38 +384,6 @@ - `cell_chknovending`: 12 - `cell_chknochat`: 13 -### Parameters - -- `BaseExp`: [param] -- `JobExp`: [param] -- `Karma`: [param] -- `Manner`: [param] -- `Hp`: [param] -- `MaxHp`: [param] -- `Sp`: [param] -- `MaxSp`: [param] -- `StatusPoint`: [param] -- `BaseLevel`: [param] -- `SkillPoint`: [param] -- `Class`: [param] -- `Zeny`: [param] -- `Sex`: [param] -- `NextBaseExp`: [param] -- `NextJobExp`: [param] -- `Weight`: [param] -- `MaxWeight`: [param] -- `JobLevel`: [param] -- `Upper`: [param] -- `BaseJob`: [param] -- `BaseClass`: [param] -- `killerrid`: [param] -- `killedrid`: [param] -- `SlotChange`: [param] -- `CharRename`: [param] -- `ModExp`: [param] -- `ModDrop`: [param] -- `ModDeath`: [param] - ### Bonuses / Parameter IDs - `bMaxHP`: 6 @@ -3807,6 +3775,42 @@ - `RENEWAL_ASPD`: 1 +## Parameters (source) + + +### Parameters + +- `BaseExp`: [param] +- `JobExp`: [param] +- `Karma`: [param] +- `Manner`: [param] +- `Hp`: [param] +- `MaxHp`: [param] +- `Sp`: [param] +- `MaxSp`: [param] +- `StatusPoint`: [param] +- `BaseLevel`: [param] +- `SkillPoint`: [param] +- `Class`: [param] +- `Zeny`: [param] +- `Sex`: [param] +- `NextBaseExp`: [param] +- `NextJobExp`: [param] +- `Weight`: [param] +- `MaxWeight`: [param] +- `JobLevel`: [param] +- `Upper`: [param] +- `BaseJob`: [param] +- `BaseClass`: [param] +- `killerrid`: [param] +- `killedrid`: [param] +- `SlotChange`: [param] +- `CharRename`: [param] +- `ModExp`: [param] +- `ModDrop`: [param] +- `ModDeath`: [param] + + ## Skills (db/re/skill_db.txt) - `NV_BASIC`: 1 diff --git a/sql-files/item_db.sql b/sql-files/item_db.sql index 4d5649b67..f7abfd9db 100644 --- a/sql-files/item_db.sql +++ b/sql-files/item_db.sql @@ -2532,7 +2532,7 @@ REPLACE INTO `item_db` VALUES ('5361','Gang_Scarf','Gangster Scarf','5','20','10 REPLACE INTO `item_db` VALUES ('5362','Ninja_Scroll','Ninja Scroll','5','20','10','200','0','0','0','0','0','0xFFFFFFFFFFFFFFFF','63','2','1','0','60',NULL,'0','370','0','0','0','0','73',NULL,'0',NULL,'0',NULL,'0','bonus bMatkRate,1;','',''); REPLACE INTO `item_db` VALUES ('5363','Helm_Of_Abyss','Helm Of Abyss','5','20','10','1000','0','0','2','0','1','0x654E2','63','2','256','0','70',NULL,'1','371','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus2 bSubRace,RC_DemiPlayer,-10; bonus2 bSubRace,RC_Boss,10;','',''); REPLACE INTO `item_db` VALUES ('5364','Dark_Snake_Lord_Hat','Evil Snake Lord Hat','5','20','10','500','0','0','2','0','1','0xFFFFFFFFFFFFFFFF','63','2','256','0','60',NULL,'1','372','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bStr,1; bonus bInt,1; bonus bAgi,2;','',''); -REPLACE INTO `item_db` VALUES ('5365','Fried_Egg','Magnolia Hat','5','20','10','100','0','0','3','0','1','0xFFFFFFFFFFFFFFFF','63','2','256','0','1',NULL,'0','373','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus2 bResEff,Eff_Stun,500; skill HT_FLASHER,1;','',''); +REPLACE INTO `item_db` VALUES ('5365','Fried_Egg','Magnolia Hat','5','20','10','100','0','0','3','0','1','0xFFFFFFFFFFFFFFFF','63','2','256','0','1',NULL,'0','373','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bBaseAtk, 5; bonus5 bAutoSpellWhenHit, BS_GREED, 1, 10, BF_SHORT, 0;','',''); REPLACE INTO `item_db` VALUES ('5366','Hat_0f_King','Love Dad Bandana','5','20','10','200','0','0','3','0','0','0xFFFFFFFFFFFFFFFF','63','2','256','0','0',NULL,'1','374','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAllStats,5;','',''); REPLACE INTO `item_db` VALUES ('5367','Hyegun_Hat','Hyegun Hat','5','20','10','100','0','0','5','0','1','0xFFFFFFFFFFFFFFFF','63','2','769','0','10',NULL,'0','375','0','0','0','0','73',NULL,'0',NULL,'0',NULL,'0','bonus bMdef,3; bonus2 bSubRace,RC_Demon,10;','',''); REPLACE INTO `item_db` VALUES ('5368','White_Wing','White Wing','5','20','10','100','0','0','2','0','0','0xFFFFFFFFFFFFFFFF','63','2','256','0','0',NULL,'1','38','0','0','0','0','475',NULL,'0',NULL,'0',NULL,'0','bonus2 bAddMonsterDropItem,12280,300;','',''); diff --git a/sql-files/item_db_re.sql b/sql-files/item_db_re.sql index bcd6e4d71..7d0f42257 100644 --- a/sql-files/item_db_re.sql +++ b/sql-files/item_db_re.sql @@ -3435,7 +3435,7 @@ REPLACE INTO `item_db` VALUES ('5361','Gang_Scarf','Gangster Scarf','5','20','10 REPLACE INTO `item_db` VALUES ('5362','Ninja_Scroll','Ninja Scroll','5','20','10','200','0','0','0','0','0','0xFFFFFFFFFFFFFFFF','63','2','1','0','0',NULL,'0','370','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bUnbreakableHelm,0; bonus bMatkRate,1;','',''); REPLACE INTO `item_db` VALUES ('5363','Helm_Of_Abyss','Abysmal Knight Helm','5','20','10','1000','0','0','9','0','1','0x654E2','63','2','256','0','70',NULL,'1','371','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus2 bSubRace,RC_DemiPlayer,-10; bonus2 bSubRace,RC_Boss,10;','',''); REPLACE INTO `item_db` VALUES ('5364','Dark_Snake_Lord_Hat','Evil Snake Lord Hat','5','20','10','500','0','0','4','0','1','0xFFFFFFFFFFFFFFFF','63','2','256','0','150',NULL,'1','372','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bStr,1; bonus bInt,1; bonus bAgi,2; bonus2 bAddMonsterDropItem,12582,30;','',''); -REPLACE INTO `item_db` VALUES ('5365','Fried_Egg','Mangolia Hat','5','20','10','100','0','0','2','0','1','0xFFFFFFFFFFFFFFFF','63','2','256','0','0',NULL,'0','373','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus2 bResEff,Eff_Stun,500; skill HT_FLASHER,1;','',''); +REPLACE INTO `item_db` VALUES ('5365','Fried_Egg','Mangolia Hat','5','20','10','100','0','0','2','0','1','0xFFFFFFFFFFFFFFFF','63','2','256','0','0',NULL,'0','373','0','0','0','0','1',NULL,'0',NULL,'0',NULL,'0','bonus bBaseAtk, 5; bonus5 bAutoSpellWhenHit, BS_GREED, 1, 10, BF_SHORT, 0;','',''); REPLACE INTO `item_db` VALUES ('5366','Hat_0f_King','Love Dad Bandana','5','20','10','200','0','0','5','0','0','0xFFFFFFFFFFFFFFFF','63','2','256','0','0',NULL,'1','374','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bAllStats,5;','',''); REPLACE INTO `item_db` VALUES ('5367','Hyegun_Hat','Yao Jun Hat','5','20','10','100','0','0','5','0','1','0xFFFFFFFFFFFFFFFF','63','2','769','0','10',NULL,'0','375','0','0','0','0','0',NULL,'0',NULL,'0',NULL,'0','bonus bMdef,3; bonus2 bAddRaceTolerance,RC_Demon,10;','',''); REPLACE INTO `item_db` VALUES ('5368','White_Wing','White Wing','5','20','10','100','0','0','4','0','0','0xFFFFFFFFFFFFFFFF','63','2','256','0','0',NULL,'1','38','0','0','0','0','475',NULL,'0',NULL,'0',NULL,'0','bonus2 bAddMonsterDropItem,12280,300;','',''); diff --git a/sql-files/logs.sql b/sql-files/logs.sql index 0c97fdecf..ab722a2fe 100644 --- a/sql-files/logs.sql +++ b/sql-files/logs.sql @@ -144,7 +144,7 @@ CREATE TABLE IF NOT EXISTS `picklog` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `time` DATETIME NOT NULL DEFAULT '0000-00-00 00:00:00', `char_id` INT(11) NOT NULL DEFAULT '0', - `type` ENUM('M','P','L','T','V','S','N','C','A','R','G','E','B','O','I','X','D','U') NOT NULL DEFAULT 'P', + `type` ENUM('M','P','L','T','V','S','N','C','A','R','G','E','B','O','I','X','D','U','K','Y','Z','W','Q','J','H','@','0','1','2') NOT NULL DEFAULT 'P', `nameid` INT(11) NOT NULL DEFAULT '0', `amount` INT(11) NOT NULL DEFAULT '1', `refine` TINYINT(3) UNSIGNED NOT NULL DEFAULT '0', diff --git a/sql-files/main.sql b/sql-files/main.sql index 1ed751d15..e2717cdc5 100644 --- a/sql-files/main.sql +++ b/sql-files/main.sql @@ -824,6 +824,7 @@ INSERT IGNORE INTO `sql_updates` (`timestamp`) VALUES (1436360978); -- 2015-07-0 INSERT IGNORE INTO `sql_updates` (`timestamp`) VALUES (1440688342); -- 2015-08-27--20-42.sql INSERT IGNORE INTO `sql_updates` (`timestamp`) VALUES (1450241859); -- 2015-12-16--12-57.sql INSERT IGNORE INTO `sql_updates` (`timestamp`) VALUES (1450367880); -- 2015-12-17--15-58.sql +INSERT IGNORE INTO `sql_updates` (`timestamp`) VALUES (1457638175); -- 2016-03-10--22-18.sql -- -- Table structure for table `storage` diff --git a/sql-files/upgrades/2016-03-10--22-18.sql b/sql-files/upgrades/2016-03-10--22-18.sql new file mode 100644 index 000000000..80266bcca --- /dev/null +++ b/sql-files/upgrades/2016-03-10--22-18.sql @@ -0,0 +1,22 @@ +#1457638175 + +-- This file is part of Hercules. +-- http://herc.ws - http://github.com/HerculesWS/Hercules +-- +-- Copyright (C) 2015-2016 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 `picklog` MODIFY `type` enum('M','P','L','T','V','S','N','C','A','R','G','E','B','O','I','X','D','U','K','Y','Z','W','Q','J','H','@','0','1','2') NOT NULL default 'P'; +INSERT INTO `sql_updates` (`timestamp`) VALUES (1457638175) diff --git a/sql-files/upgrades/index.txt b/sql-files/upgrades/index.txt index e73a8659d..6e81bd199 100644 --- a/sql-files/upgrades/index.txt +++ b/sql-files/upgrades/index.txt @@ -29,3 +29,4 @@ 2015-07-08--13-08.sql 2015-08-27--20-42.sql 2015-12-17--15-58.sql +2016-03-10--22-18.sql diff --git a/sql-files/upgrades/rAthena-logs-upgrade.sql b/sql-files/upgrades/rAthena-logs-upgrade.sql index b0faed244..5e9dbf60c 100644 --- a/sql-files/upgrades/rAthena-logs-upgrade.sql +++ b/sql-files/upgrades/rAthena-logs-upgrade.sql @@ -34,7 +34,7 @@ DROP TABLE IF EXISTS `cashlog`; ALTER TABLE `mvplog` MODIFY `prize` INT(11) NOT NULL DEFAULT '0'; -- Upgrades to table `picklog` -ALTER TABLE `picklog` MODIFY `type` enum('M','P','L','T','V','S','N','C','A','R','G','E','B','O','I','X','D','U') NOT NULL default 'P'; +ALTER TABLE `picklog` MODIFY `type` enum('M','P','L','T','V','S','N','C','A','R','G','E','B','O','I','X','D','U','K','Y','Z','W','Q','J','H','@','0','1','2') NOT NULL default 'P'; ALTER TABLE `picklog` MODIFY `nameid` INT(11) NOT NULL DEFAULT '0'; ALTER TABLE `picklog` MODIFY `card0` INT(11) NOT NULL DEFAULT '0'; ALTER TABLE `picklog` MODIFY `card1` INT(11) NOT NULL DEFAULT '0'; diff --git a/src/map/atcommand.c b/src/map/atcommand.c index f28c24dcb..e422a5de4 100644 --- a/src/map/atcommand.c +++ b/src/map/atcommand.c @@ -3643,6 +3643,8 @@ ACMD(reloadbattleconf) memcpy(&prev_config, &battle_config, sizeof(prev_config)); battle->config_read(map->BATTLE_CONF_FILENAME); + if (prev_config.feature_roulette == 0 && battle_config.feature_roulette == 1 && !clif->parse_roulette_db()) + battle_config.feature_roulette = 0; if( prev_config.item_rate_mvp != battle_config.item_rate_mvp || prev_config.item_rate_common != battle_config.item_rate_common @@ -5262,7 +5264,7 @@ ACMD(clearcart) for( i = 0; i < MAX_CART; i++ ) if(sd->status.cart[i].nameid > 0) - pc->cart_delitem(sd, i, sd->status.cart[i].amount, 1, LOG_TYPE_OTHER); + pc->cart_delitem(sd, i, sd->status.cart[i].amount, 1, LOG_TYPE_COMMAND); clif->clearcart(fd); clif->updatestatus(sd,SP_CARTINFO); diff --git a/src/map/chrif.c b/src/map/chrif.c index 578942897..70339c378 100644 --- a/src/map/chrif.c +++ b/src/map/chrif.c @@ -933,14 +933,14 @@ bool chrif_divorceack(int char_id, int partner_id) { sd->status.partner_id = 0; for(i = 0; i < MAX_INVENTORY; i++) if (sd->status.inventory[i].nameid == WEDDING_RING_M || sd->status.inventory[i].nameid == WEDDING_RING_F) - pc->delitem(sd, i, 1, 0, DELITEM_NORMAL, LOG_TYPE_OTHER); + pc->delitem(sd, i, 1, 0, DELITEM_NORMAL, LOG_TYPE_DIVORCE); } if( ( sd = map->charid2sd(partner_id) ) != NULL && sd->status.partner_id == char_id ) { sd->status.partner_id = 0; for(i = 0; i < MAX_INVENTORY; i++) if (sd->status.inventory[i].nameid == WEDDING_RING_M || sd->status.inventory[i].nameid == WEDDING_RING_F) - pc->delitem(sd, i, 1, 0, DELITEM_NORMAL, LOG_TYPE_OTHER); + pc->delitem(sd, i, 1, 0, DELITEM_NORMAL, LOG_TYPE_DIVORCE); } return true; diff --git a/src/map/clif.c b/src/map/clif.c index 07b0b323b..71409fab4 100644 --- a/src/map/clif.c +++ b/src/map/clif.c @@ -11521,7 +11521,7 @@ void clif_parse_OneClick_ItemIdentify(int fd, struct map_session_data *sd) return; if ((n = pc->have_magnifier(sd) ) != INDEX_NOT_FOUND && - pc->delitem(sd, n, 1, 0, DELITEM_NORMAL, LOG_TYPE_OTHER) == 0) + pc->delitem(sd, n, 1, 0, DELITEM_NORMAL, LOG_TYPE_CONSUME) == 0) skill->identify(sd, idx); } @@ -18404,7 +18404,7 @@ void clif_parse_RouletteGenerate(int fd, struct map_session_data* sd) { it.nameid = clif->rd.nameid[stage][0]; it.identify = 1; - pc->additem(sd, &it, clif->rd.qty[stage][0], LOG_TYPE_OTHER);/** TODO maybe a new log type for roulette items? **/ + pc->additem(sd, &it, clif->rd.qty[stage][0], LOG_TYPE_ROULETTE);/** TODO maybe a new log type for roulette items? **/ sd->roulette.stage = 0; result = GENERATE_ROULETTE_LOSING; @@ -18439,7 +18439,7 @@ void clif_parse_RouletteRecvItem(int fd, struct map_session_data* sd) { it.nameid = clif->rd.nameid[sd->roulette.prizeStage][sd->roulette.prizeIdx]; it.identify = 1; - switch (pc->additem(sd, &it, clif->rd.qty[sd->roulette.prizeStage][sd->roulette.prizeIdx], LOG_TYPE_OTHER)) { + switch (pc->additem(sd, &it, clif->rd.qty[sd->roulette.prizeStage][sd->roulette.prizeIdx], LOG_TYPE_ROULETTE)) { case 0: p.Result = RECV_ITEM_SUCCESS; sd->roulette.claimPrize = false; diff --git a/src/map/itemdb.c b/src/map/itemdb.c index 630bc4488..ce6232965 100644 --- a/src/map/itemdb.c +++ b/src/map/itemdb.c @@ -2343,7 +2343,7 @@ void do_init_itemdb(bool minimal) { clif->cashshop_load(); /** it failed? we disable it **/ - if( !clif->parse_roulette_db() ) + if (battle_config.feature_roulette == 1 && !clif->parse_roulette_db()) battle_config.feature_roulette = 0; } void itemdb_defaults(void) { diff --git a/src/map/log.c b/src/map/log.c index f757faf43..072f7b6fd 100644 --- a/src/map/log.c +++ b/src/map/log.c @@ -62,6 +62,16 @@ char log_picktype2char(e_log_pick_type type) { case LOG_TYPE_BUYING_STORE: return 'B'; // (B)uying Store case LOG_TYPE_LOOT: return 'L'; // (L)oot (consumed monster pick/drop) case LOG_TYPE_BANK: return 'K'; // Ban(K) Transactions + case LOG_TYPE_DIVORCE: return 'Y'; // Divorce + case LOG_TYPE_ROULETTE: return 'Z'; // Roulette + case LOG_TYPE_RENTAL: return 'W'; // Rental + case LOG_TYPE_CARD: return 'Q'; // Card + case LOG_TYPE_INV_INVALID: return 'J'; // Invalid in inventory + case LOG_TYPE_CART_INVALID: return 'H'; // Invalid in cart + case LOG_TYPE_EGG: return '@'; // Egg + case LOG_TYPE_QUEST: return '0'; // Quest + case LOG_TYPE_SKILL: return '1'; // Skill + case LOG_TYPE_REFINE: return '2'; // Refine case LOG_TYPE_OTHER: return 'X'; // Other } diff --git a/src/map/log.h b/src/map/log.h index fbd0acc0e..69622adc6 100644 --- a/src/map/log.h +++ b/src/map/log.h @@ -57,29 +57,40 @@ typedef enum e_log_chat_type { } e_log_chat_type; typedef enum e_log_pick_type { - LOG_TYPE_NONE = 0, - LOG_TYPE_TRADE = 0x00001, - LOG_TYPE_VENDING = 0x00002, - LOG_TYPE_PICKDROP_PLAYER = 0x00004, - LOG_TYPE_PICKDROP_MONSTER = 0x00008, - LOG_TYPE_NPC = 0x00010, - LOG_TYPE_SCRIPT = 0x00020, - LOG_TYPE_STEAL = 0x00040, - LOG_TYPE_CONSUME = 0x00080, - LOG_TYPE_PRODUCE = 0x00100, - LOG_TYPE_MVP = 0x00200, - LOG_TYPE_COMMAND = 0x00400, - LOG_TYPE_STORAGE = 0x00800, - LOG_TYPE_GSTORAGE = 0x01000, - LOG_TYPE_MAIL = 0x02000, - LOG_TYPE_AUCTION = 0x04000, - LOG_TYPE_BUYING_STORE = 0x08000, - LOG_TYPE_OTHER = 0x10000, - LOG_TYPE_BANK = 0x20000, + LOG_TYPE_NONE = 0x00000000, + LOG_TYPE_TRADE = 0x00000001, + LOG_TYPE_VENDING = 0x00000002, + LOG_TYPE_PICKDROP_PLAYER = 0x00000004, + LOG_TYPE_PICKDROP_MONSTER = 0x00000008, + LOG_TYPE_NPC = 0x00000010, + LOG_TYPE_SCRIPT = 0x00000020, + LOG_TYPE_STEAL = 0x00000040, + LOG_TYPE_CONSUME = 0x00000080, + LOG_TYPE_PRODUCE = 0x00000100, + LOG_TYPE_MVP = 0x00000200, + LOG_TYPE_COMMAND = 0x00000400, + LOG_TYPE_STORAGE = 0x00000800, + LOG_TYPE_GSTORAGE = 0x00001000, + LOG_TYPE_MAIL = 0x00002000, + LOG_TYPE_AUCTION = 0x00004000, + LOG_TYPE_BUYING_STORE = 0x00008000, + LOG_TYPE_OTHER = 0x00010000, + LOG_TYPE_BANK = 0x00020000, + LOG_TYPE_DIVORCE = 0x00040000, + LOG_TYPE_ROULETTE = 0x00080000, + LOG_TYPE_RENTAL = 0x00100000, + LOG_TYPE_CARD = 0x00200000, + LOG_TYPE_INV_INVALID = 0x00400000, + LOG_TYPE_CART_INVALID = 0x00800000, + LOG_TYPE_EGG = 0x01000000, + LOG_TYPE_QUEST = 0x02000000, + LOG_TYPE_SKILL = 0x04000000, + LOG_TYPE_REFINE = 0x08000000, + // combinations LOG_TYPE_LOOT = LOG_TYPE_PICKDROP_MONSTER|LOG_TYPE_CONSUME, // all - LOG_TYPE_ALL = 0xFFFFF, + LOG_TYPE_ALL = 0xFFFFFFFF, } e_log_pick_type; /// filters for item logging diff --git a/src/map/map.h b/src/map/map.h index ff7ca2d38..54b0c3575 100644 --- a/src/map/map.h +++ b/src/map/map.h @@ -398,7 +398,7 @@ struct flooritem_data { struct item item_data; }; -enum status_point_types { +enum status_point_types { //we better clean up this enum and change it name [Hemagx] SP_SPEED,SP_BASEEXP,SP_JOBEXP,SP_KARMA,SP_MANNER,SP_HP,SP_MAXHP,SP_SP, // 0-7 SP_MAXSP,SP_STATUSPOINT,SP_0a,SP_BASELEVEL,SP_SKILLPOINT,SP_STR,SP_AGI,SP_VIT, // 8-15 SP_INT,SP_DEX,SP_LUK,SP_CLASS,SP_ZENY,SP_SEX,SP_NEXTBASEEXP,SP_NEXTJOBEXP, // 16-23 diff --git a/src/map/pc.c b/src/map/pc.c index 7b4d47db2..e958f32b6 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -539,7 +539,7 @@ void pc_rental_expire(struct map_session_data *sd, int i) { } clif->rental_expired(sd->fd, i, sd->status.inventory[i].nameid); - pc->delitem(sd, i, sd->status.inventory[i].amount, 0, DELITEM_NORMAL, LOG_TYPE_OTHER); + pc->delitem(sd, i, sd->status.inventory[i].amount, 0, DELITEM_NORMAL, LOG_TYPE_RENTAL); } void pc_inventory_rentals(struct map_session_data *sd) { @@ -4136,7 +4136,7 @@ int pc_insert_card(struct map_session_data* sd, int idx_card, int idx_equip) // remember the card id to insert nameid = sd->status.inventory[idx_card].nameid; - if( pc->delitem(sd, idx_card, 1, 1, DELITEM_NORMAL, LOG_TYPE_OTHER) == 1 ) + if( pc->delitem(sd, idx_card, 1, 1, DELITEM_NORMAL, LOG_TYPE_CARD) == 1 ) {// failed clif->insert_card(sd,idx_equip,idx_card,1); } @@ -4146,9 +4146,9 @@ int pc_insert_card(struct map_session_data* sd, int idx_card, int idx_equip) ARR_FIND( 0, sd->inventory_data[idx_equip]->slot, i, sd->status.inventory[idx_equip].card[i] == 0); if (i == sd->inventory_data[idx_equip]->slot) return 0; // no free slots - logs->pick_pc(sd, LOG_TYPE_OTHER, -1, &sd->status.inventory[idx_equip],sd->inventory_data[idx_equip]); + logs->pick_pc(sd, LOG_TYPE_CARD, -1, &sd->status.inventory[idx_equip],sd->inventory_data[idx_equip]); sd->status.inventory[idx_equip].card[i] = nameid; - logs->pick_pc(sd, LOG_TYPE_OTHER, 1, &sd->status.inventory[idx_equip],sd->inventory_data[idx_equip]); + logs->pick_pc(sd, LOG_TYPE_CARD, 1, &sd->status.inventory[idx_equip],sd->inventory_data[idx_equip]); clif->insert_card(sd,idx_equip,idx_card,0); return 1; } @@ -9905,7 +9905,7 @@ int pc_checkitem(struct map_session_data *sd) if (!itemdb_available(id)) { ShowWarning("Removed invalid/disabled item id %d from inventory (amount=%d, char_id=%d).\n", id, sd->status.inventory[i].amount, sd->status.char_id); - pc->delitem(sd, i, sd->status.inventory[i].amount, 0, DELITEM_NORMAL, LOG_TYPE_OTHER); + pc->delitem(sd, i, sd->status.inventory[i].amount, 0, DELITEM_NORMAL, LOG_TYPE_INV_INVALID); continue; } @@ -9921,7 +9921,7 @@ int pc_checkitem(struct map_session_data *sd) if( !itemdb_available(id) ) { ShowWarning("Removed invalid/disabled item id %d from cart (amount=%d, char_id=%d).\n", id, sd->status.cart[i].amount, sd->status.char_id); - pc->cart_delitem(sd, i, sd->status.cart[i].amount, 0, LOG_TYPE_OTHER); + pc->cart_delitem(sd, i, sd->status.cart[i].amount, 0, LOG_TYPE_CART_INVALID); continue; } @@ -10139,9 +10139,9 @@ int pc_divorce(struct map_session_data *sd) for( i = 0; i < MAX_INVENTORY; i++ ) { if( sd->status.inventory[i].nameid == WEDDING_RING_M || sd->status.inventory[i].nameid == WEDDING_RING_F ) - pc->delitem(sd, i, 1, 0, DELITEM_NORMAL, LOG_TYPE_OTHER); + pc->delitem(sd, i, 1, 0, DELITEM_NORMAL, LOG_TYPE_DIVORCE); if( p_sd->status.inventory[i].nameid == WEDDING_RING_M || p_sd->status.inventory[i].nameid == WEDDING_RING_F ) - pc->delitem(p_sd, i, 1, 0, DELITEM_NORMAL, LOG_TYPE_OTHER); + pc->delitem(p_sd, i, 1, 0, DELITEM_NORMAL, LOG_TYPE_DIVORCE); } clif->divorced(sd, p_sd->status.name); diff --git a/src/map/pet.c b/src/map/pet.c index 256324d29..e2b257e10 100644 --- a/src/map/pet.c +++ b/src/map/pet.c @@ -317,7 +317,7 @@ int pet_return_egg(struct map_session_data *sd, struct pet_data *pd) tmp_item.card[1] = GetWord(pd->pet.pet_id,0); tmp_item.card[2] = GetWord(pd->pet.pet_id,1); tmp_item.card[3] = pd->pet.rename_flag; - if((flag = pc->additem(sd,&tmp_item,1,LOG_TYPE_OTHER))) { + if((flag = pc->additem(sd,&tmp_item,1,LOG_TYPE_EGG))) { clif->additem(sd,0,0,flag); map->addflooritem(&sd->bl, &tmp_item, 1, sd->bl.m, sd->bl.x, sd->bl.y, 0, 0, 0, 0); } @@ -464,7 +464,7 @@ int pet_recv_petdata(int account_id,struct s_pet *p,int flag) { return 1; } if (!pet->birth_process(sd,p)) //Pet hatched. Delete egg. - pc->delitem(sd, i, 1, 0, DELITEM_NORMAL, LOG_TYPE_OTHER); + pc->delitem(sd, i, 1, 0, DELITEM_NORMAL, LOG_TYPE_EGG); } else { pet->data_init(sd,p); if(sd->pd && sd->bl.prev != NULL) { @@ -703,7 +703,7 @@ int pet_equipitem(struct map_session_data *sd,int index) { return 1; } - pc->delitem(sd, index, 1, 0, DELITEM_NORMAL, LOG_TYPE_OTHER); + pc->delitem(sd, index, 1, 0, DELITEM_NORMAL, LOG_TYPE_CONSUME); pd->pet.equip = nameid; status->set_viewdata(&pd->bl, pd->pet.class_); //Updates view_data. clif->send_petdata(NULL, sd->pd, 3, sd->pd->vd.head_bottom); @@ -734,7 +734,7 @@ int pet_unequipitem(struct map_session_data *sd, struct pet_data *pd) { memset(&tmp_item,0,sizeof(tmp_item)); tmp_item.nameid = nameid; tmp_item.identify = 1; - if((flag = pc->additem(sd,&tmp_item,1,LOG_TYPE_OTHER))) { + if((flag = pc->additem(sd,&tmp_item,1,LOG_TYPE_CONSUME))) { clif->additem(sd,0,0,flag); map->addflooritem(&sd->bl, &tmp_item, 1, sd->bl.m, sd->bl.x, sd->bl.y, 0, 0, 0, 0); } diff --git a/src/map/quest.c b/src/map/quest.c index bf0a76b16..79328ae9d 100644 --- a/src/map/quest.c +++ b/src/map/quest.c @@ -316,7 +316,7 @@ void quest_update_objective(struct map_session_data *sd, int mob_id) item.nameid = dropitem->nameid; item.identify = itemdb->isidentified2(data); item.amount = 1; - if((temp = pc->additem(sd, &item, 1, LOG_TYPE_OTHER)) != 0) { // TODO: We might want a new log type here? + if((temp = pc->additem(sd, &item, 1, LOG_TYPE_QUEST)) != 0) { // TODO: We might want a new log type here? // Failed to obtain the item clif->additem(sd, 0, 0, temp); } diff --git a/src/map/script.c b/src/map/script.c index 7d5ce7d43..67413669b 100644 --- a/src/map/script.c +++ b/src/map/script.c @@ -2349,6 +2349,8 @@ void read_constdb(void) } else { value = libconfig->setting_get_int(t); } + if (is_parameter) + ShowWarning("read_constdb: Defining parameters in the constants configuration is deprecated and will no longer be possible in a future version. Parameters should be defined in source. (parameter = '%s')\n", name); script->set_constant(name, value, is_parameter, is_deprecated); } script->constdb_comment(NULL); @@ -2367,6 +2369,49 @@ void script_constdb_comment(const char *comment) (void)comment; } +void script_load_parameters(void) +{ + int i = 0; + struct { + char *name; + enum status_point_types type; + } parameters[] = { + {"BaseExp", SP_BASEEXP}, + {"JobExp", SP_JOBEXP}, + {"Karma", SP_KARMA}, + {"Manner", SP_MANNER}, + {"Hp", SP_HP}, + {"MaxHp", SP_MAXHP}, + {"Sp", SP_SP}, + {"MaxSp", SP_MAXSP}, + {"StatusPoint", SP_STATUSPOINT}, + {"BaseLevel", SP_BASELEVEL}, + {"SkillPoint", SP_SKILLPOINT}, + {"Class", SP_CLASS}, + {"Zeny", SP_ZENY}, + {"Sex", SP_SEX}, + {"NextBaseExp", SP_NEXTBASEEXP}, + {"NextJobExp", SP_NEXTJOBEXP}, + {"Weight", SP_WEIGHT}, + {"MaxWeight", SP_MAXWEIGHT}, + {"JobLevel", SP_JOBLEVEL}, + {"Upper", SP_UPPER}, + {"BaseJob", SP_BASEJOB}, + {"BaseClass", SP_BASECLASS}, + {"killerrid", SP_KILLERRID}, + {"killedrid", SP_KILLEDRID}, + {"SlotChange", SP_SLOTCHANGE}, + {"CharRename", SP_CHARRENAME}, + {"ModExp", SP_MOD_EXP}, + {"ModDrop", SP_MOD_DROP}, + {"ModDeath", SP_MOD_DEATH}, + }; + + script->constdb_comment("Parameters"); + for (i=0; i < ARRAYLENGTH(parameters); ++i) + script->set_constant(parameters[i].name, parameters[i].type, true, false); + script->constdb_comment(NULL); +} // Standard UNIX tab size is 8 #define TAB_SIZE 8 #define update_tabstop(tabstop,chars) \ @@ -5141,6 +5186,7 @@ void do_init_script(bool minimal) { script->parse_builtin(); script->read_constdb(); + script->load_parameters(); script->hardcoded_constants(); if (minimal) @@ -21161,6 +21207,7 @@ void script_defaults(void) { script->parse_line = parse_line; script->read_constdb = read_constdb; script->constdb_comment = script_constdb_comment; + script->load_parameters = script_load_parameters; script->print_line = script_print_line; script->errorwarning_sub = script_errorwarning_sub; script->set_reg = set_reg; diff --git a/src/map/script.h b/src/map/script.h index 351ccd02a..fffe1fb1c 100644 --- a/src/map/script.h +++ b/src/map/script.h @@ -725,6 +725,7 @@ struct script_interface { const char* (*parse_line) (const char *p); void (*read_constdb) (void); void (*constdb_comment) (const char *comment); + void (*load_parameters) (void); const char* (*print_line) (StringBuf *buf, const char *p, const char *mark, int line); void (*errorwarning_sub) (StringBuf *buf, const char *src, const char *file, int start_line, const char *error_msg, const char *error_pos); int (*set_reg) (struct script_state *st, struct map_session_data *sd, int64 num, const char *name, const void *value, struct reg_db *ref); diff --git a/src/map/skill.c b/src/map/skill.c index de5368cdf..8271991fe 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -7505,7 +7505,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin memset(&item_tmp,0,sizeof(item_tmp)); item_tmp.nameid = skill->dbs->db[su->group->skill_id].itemid[i]; item_tmp.identify = 1; - if (item_tmp.nameid && (success=pc->additem(sd,&item_tmp,skill->dbs->db[su->group->skill_id].amount[i],LOG_TYPE_OTHER)) != 0) { + if (item_tmp.nameid && (success=pc->additem(sd,&item_tmp,skill->dbs->db[su->group->skill_id].amount[i],LOG_TYPE_SKILL)) != 0) { clif->additem(sd,0,0,success); map->addflooritem(&sd->bl, &item_tmp, skill->dbs->db[su->group->skill_id].amount[i], sd->bl.m, sd->bl.x, sd->bl.y, 0, 0, 0, 0); } @@ -7517,7 +7517,7 @@ int skill_castend_nodamage_id(struct block_list *src, struct block_list *bl, uin memset(&item_tmp,0,sizeof(item_tmp)); item_tmp.nameid = su->group->item_id?su->group->item_id:ITEMID_TRAP; item_tmp.identify = 1; - if (item_tmp.nameid && (flag=pc->additem(sd,&item_tmp,1,LOG_TYPE_OTHER)) != 0) { + if (item_tmp.nameid && (flag=pc->additem(sd,&item_tmp,1,LOG_TYPE_SKILL)) != 0) { clif->additem(sd,0,0,flag); map->addflooritem(&sd->bl, &item_tmp, 1, sd->bl.m, sd->bl.x, sd->bl.y, 0, 0, 0, 0); } @@ -15313,12 +15313,12 @@ void skill_weaponrefine (struct map_session_data *sd, int idx) else per += 5 * ((signed int)sd->status.job_level - 50); - pc->delitem(sd, i, 1, 0, DELITEM_NORMAL, LOG_TYPE_OTHER); // FIXME: is this the correct reason flag? + pc->delitem(sd, i, 1, 0, DELITEM_NORMAL, LOG_TYPE_REFINE); // FIXME: is this the correct reason flag? if (per > rnd() % 1000) { int ep = 0; - logs->pick_pc(sd, LOG_TYPE_OTHER, -1, item, ditem); + logs->pick_pc(sd, LOG_TYPE_REFINE, -1, item, ditem); item->refine++; - logs->pick_pc(sd, LOG_TYPE_OTHER, 1, item, ditem); + logs->pick_pc(sd, LOG_TYPE_REFINE, 1, item, ditem); if(item->equip) { ep = item->equip; pc->unequipitem(sd, idx, PCUNEQUIPITEM_RECALC|PCUNEQUIPITEM_FORCE); @@ -15351,7 +15351,7 @@ void skill_weaponrefine (struct map_session_data *sd, int idx) if(item->equip) pc->unequipitem(sd, idx, PCUNEQUIPITEM_RECALC|PCUNEQUIPITEM_FORCE); clif->refine(sd->fd,1,idx,item->refine); - pc->delitem(sd, idx, 1, 0, DELITEM_NORMAL, LOG_TYPE_OTHER); + pc->delitem(sd, idx, 1, 0, DELITEM_NORMAL, LOG_TYPE_REFINE); clif->misceffect(&sd->bl,2); clif->emotion(&sd->bl, E_OMG); } diff --git a/src/map/status.h b/src/map/status.h index 4e2f1bdc0..046227b78 100644 --- a/src/map/status.h +++ b/src/map/status.h @@ -1789,9 +1789,13 @@ enum si_type { //SI_DORAM_BUF_01 = 935, //SI_DORAM_BUF_02 = 936, //SI_SPRITEMABLE = 937, + //SI_EP16_2_BUFF_SS = 963, + //SI_EP16_2_BUFF_SC = 964, + //SI_EP16_2_BUFF_AC = 965, SI_MAX, }; + // JOINTBEAT stackable ailments enum e_joint_break { @@ -1804,7 +1808,6 @@ enum e_joint_break BREAK_FLAGS = BREAK_ANKLE | BREAK_WRIST | BREAK_KNEE | BREAK_SHOULDER | BREAK_WAIST | BREAK_NECK, }; - /** * Mob mode definitions. [Skotlex] * diff --git a/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc b/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc index e5457e47c..caea8381e 100644 --- a/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc +++ b/src/plugins/HPMHooking/HPMHooking_map.HPMHooksCore.inc @@ -4658,6 +4658,8 @@ struct { struct HPMHookPoint *HP_script_read_constdb_post; struct HPMHookPoint *HP_script_constdb_comment_pre; struct HPMHookPoint *HP_script_constdb_comment_post; + struct HPMHookPoint *HP_script_load_parameters_pre; + struct HPMHookPoint *HP_script_load_parameters_post; struct HPMHookPoint *HP_script_print_line_pre; struct HPMHookPoint *HP_script_print_line_post; struct HPMHookPoint *HP_script_errorwarning_sub_pre; @@ -10535,6 +10537,8 @@ struct { int HP_script_read_constdb_post; int HP_script_constdb_comment_pre; int HP_script_constdb_comment_post; + int HP_script_load_parameters_pre; + int HP_script_load_parameters_post; int HP_script_print_line_pre; int HP_script_print_line_post; int HP_script_errorwarning_sub_pre; diff --git a/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc b/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc index 365bda5da..f6bb75104 100644 --- a/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc +++ b/src/plugins/HPMHooking/HPMHooking_map.HookingPoints.inc @@ -2383,6 +2383,7 @@ struct HookingPointData HookingPoints[] = { { HP_POP(script->parse_line, HP_script_parse_line) }, { HP_POP(script->read_constdb, HP_script_read_constdb) }, { HP_POP(script->constdb_comment, HP_script_constdb_comment) }, + { HP_POP(script->load_parameters, HP_script_load_parameters) }, { HP_POP(script->print_line, HP_script_print_line) }, { HP_POP(script->errorwarning_sub, HP_script_errorwarning_sub) }, { HP_POP(script->set_reg, HP_script_set_reg) }, diff --git a/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc b/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc index f8d5193e1..a94651c16 100644 --- a/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc +++ b/src/plugins/HPMHooking/HPMHooking_map.Hooks.inc @@ -62133,6 +62133,32 @@ void HP_script_constdb_comment(const char *comment) { } return; } +void HP_script_load_parameters(void) { + int hIndex = 0; + if( HPMHooks.count.HP_script_load_parameters_pre ) { + void (*preHookFunc) (void); + *HPMforce_return = false; + for(hIndex = 0; hIndex < HPMHooks.count.HP_script_load_parameters_pre; hIndex++ ) { + preHookFunc = HPMHooks.list.HP_script_load_parameters_pre[hIndex].func; + preHookFunc(); + } + if( *HPMforce_return ) { + *HPMforce_return = false; + return; + } + } + { + HPMHooks.source.script.load_parameters(); + } + if( HPMHooks.count.HP_script_load_parameters_post ) { + void (*postHookFunc) (void); + for(hIndex = 0; hIndex < HPMHooks.count.HP_script_load_parameters_post; hIndex++ ) { + postHookFunc = HPMHooks.list.HP_script_load_parameters_post[hIndex].func; + postHookFunc(); + } + } + return; +} const char* HP_script_print_line(StringBuf *buf, const char *p, const char *mark, int line) { int hIndex = 0; const char* retVal___ = NULL; diff --git a/src/plugins/constdb2doc.c b/src/plugins/constdb2doc.c index 1d5f37ad5..cb0b82278 100644 --- a/src/plugins/constdb2doc.c +++ b/src/plugins/constdb2doc.c @@ -93,6 +93,10 @@ void constdb2doc_constdb(void) script->hardcoded_constants(); fprintf(out_fp, "\n"); + fprintf(out_fp, "## Parameters (source)\n\n"); + script->load_parameters(); + fprintf(out_fp, "\n"); + /* Unlink */ script->set_constant = script_set_constant; script->constdb_comment = script_constdb_comment; |