瀏覽代碼

- Fix on pc_skill which fixes overlapping when one gets more than one bonus for the same skill.
- Updated main.sql's loginlog table structure.
- Added svn_update6533.sql to update the loginlog structure as suggested by theultramage.


git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@6533 54d463be-8e91-2dee-dedb-b68131a5f0ec

skotlex 19 年之前
父節點
當前提交
26a517cd08
共有 5 個文件被更改,包括 14 次插入5 次删除
  1. 5 0
      Changelog-Trunk.txt
  2. 2 1
      sql-files/main.sql
  3. 2 0
      sql-files/upgrade_svn6533.sql
  4. 4 3
      src/map/pc.c
  5. 1 1
      src/map/skill.c

+ 5 - 0
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]

+ 2 - 1
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;
 
 --

+ 2 - 0
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 ) )

+ 4 - 3
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スキルとする
 		}

+ 1 - 1
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;
 			}