diff --git a/Changelog-Trunk.txt b/Changelog-Trunk.txt index aaceac8260..d231d1e5f4 100644 --- a/Changelog-Trunk.txt +++ b/Changelog-Trunk.txt @@ -4,6 +4,11 @@ AS OF SVN REV. 5091, WE ARE NOW USING TRUNK. ALL UNTESTED BUGFIXES/FEATURES GO IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK. 2006/05/09 + * Fix on pc_skill which fixes overlapping when one gets more than one bonus + for the same skill. [Skotlex] + * Updated main.sql's loginlog table structure. [Skotlex] + * Added svn_update6533.sql to update the loginlog structure as suggested by + theultramage. [Skotlex] * Cleaned up somewhat the implementation of BladeStop. [Skotlex] * Fixed the head_bottom (pet-armor) position in packet 0x22c (walk packet) when crafted for non-players. [Skotlex] diff --git a/sql-files/main.sql b/sql-files/main.sql index f60f365949..718f811e97 100644 --- a/sql-files/main.sql +++ b/sql-files/main.sql @@ -407,10 +407,11 @@ CREATE TABLE `sc_data` ( DROP TABLE IF EXISTS `loginlog`; CREATE TABLE `loginlog` ( `time` datetime NOT NULL default '0000-00-00 00:00:00', - `ip` varchar(64) NOT NULL default '', + `ip` char(15) NOT NULL default '', `user` varchar(32) NOT NULL default '', `rcode` tinyint(4) NOT NULL default '0', `log` varchar(255) NOT NULL default '' + KEY (`ip`), ) TYPE=MyISAM; -- diff --git a/sql-files/upgrade_svn6533.sql b/sql-files/upgrade_svn6533.sql new file mode 100644 index 0000000000..5dffe02937 --- /dev/null +++ b/sql-files/upgrade_svn6533.sql @@ -0,0 +1,2 @@ +ALTER TABLE `loginlog` CHANGE `ip` `ip` CHAR( 15 ) NOT NULL +ALTER TABLE `loginlog` ADD INDEX ( `ip` ( 15 ) ) diff --git a/src/map/pc.c b/src/map/pc.c index 4657d3bcfd..c3da30b6a4 100644 --- a/src/map/pc.c +++ b/src/map/pc.c @@ -2158,9 +2158,10 @@ int pc_skill(struct map_session_data *sd,int id,int level,int flag) clif_skillinfoblock(sd); } else if(sd->status.skill[id].lv < level){ // ?えられるがlvが小さいなら - if(sd->status.skill[id].id==id) - sd->status.skill[id].flag=sd->status.skill[id].lv+2; // lvを記憶 - else { + if(sd->status.skill[id].id==id) { + if (!sd->status.skill[id].flag) //Non-granted skill, store it's level. + sd->status.skill[id].flag=sd->status.skill[id].lv+2; + } else { sd->status.skill[id].id=id; sd->status.skill[id].flag=1; // cardスキルとする } diff --git a/src/map/skill.c b/src/map/skill.c index ec421d1c53..409cbcb4c4 100644 --- a/src/map/skill.c +++ b/src/map/skill.c @@ -4087,7 +4087,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, in dstsd->char_id == sd->status.partner_id || dstsd->char_id == sd->status.child )) { - status_change_start(src,SC_STUN,10000,skilllv,0,0,0,3000,8); + status_change_start(src,SC_STUN,10000,skilllv,0,0,0,500,8); clif_skill_fail(sd,skillid,0,0); break; }