소스 검색

- Storm Kick's range increased to 2.
- Mobinfo's drop list will use jName rather than Name for drop names.
- Some cleaning of the ASC_BREAKER code in skill_attack
- Modified skill_attack so that all skills with amotion get their damage delayed (should fix mob walk-teleport issues)


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

skotlex 19 년 전
부모
커밋
1b38364cab
5개의 변경된 파일18개의 추가작업 그리고 13개의 파일을 삭제
  1. 5 0
      Changelog-Trunk.txt
  2. 1 0
      db/Changelog.txt
  3. 1 1
      db/skill_db.txt
  4. 1 1
      src/map/atcommand.c
  5. 10 11
      src/map/skill.c

+ 5 - 0
Changelog-Trunk.txt

@@ -3,6 +3,11 @@ Date	Added
 AS OF SVN REV. 5091, WE ARE NOW USING TRUNK.  ALL UNTESTED BUGFIXES/FEATURES GO INTO TRUNK.
 IF YOU HAVE A WORKING AND TESTED BUGFIX PUT IT INTO STABLE AS WELL AS TRUNK.
 2006/04/28
+	* Mobinfo's drop list will use jName rather than Name for drop names.
+	  [Skotlex]
+	* Some cleaning of the ASC_BREAKER code in skill_attack [Skotlex]
+	* Modified skill_attack so that all skills with amotion get their damage
+	  delayed (should fix mob walk-teleport issues) [Skotlex]
 	* Added function stristr to strlib.c, used by mob.c and item_db.c for
 	  case-insensitive seeks. [Skotlex]
 	* Removed the sending of the online guild list when you log-on, may fix the

+ 1 - 0
db/Changelog.txt

@@ -27,6 +27,7 @@
 
 =========================
 04/28
+	* Storm Kick's range increased to 2. [Skotlex]
 	* Lowered drop rates of Bio Lab 3 normal mobs [Playtester]
 	- not finished yet, need 12 item drop slots...
 	* Range of Flying Sidekick 10->8 cells [Lupus]

+ 1 - 1
db/skill_db.txt

@@ -432,7 +432,7 @@
 410,9,6,4,0,1,3,1,1,yes,0,4,1,none,0	//WE_CALLBABY#Call Baby#
 411,0,6,4,0,1,0,10,1,yes,0,0,0,misc,0	//TK_RUN#Running#
 412,0,6,4,0,1,0,1,1,no,0,0,0,weapon,0	//TK_READYSTORM#Prepare Whirlwind#
-413,0,8,4,-1,2,2,7,-3,no,0,512,0,weapon,0	//TK_STORMKICK#Whirlwind Kick#
+413,-2,8,4,-1,2,2,7,-3,no,0,512,0,weapon,0	//TK_STORMKICK#Whirlwind Kick#
 414,0,6,4,0,1,0,1,1,no,0,0,0,weapon,0	//TK_READYDOWN#Prepare Axe Kick#
 415,-2,8,4,-1,0,0,7,-3,no,0,512,0,weapon,0	//TK_DOWNKICK#Axe Kick#
 416,0,6,4,0,1,0,1,1,no,0,0,0,weapon,0	//TK_READYTURN#Prepare Round Kick#

+ 1 - 1
src/map/atcommand.c

@@ -9374,7 +9374,7 @@ int atcommand_mobinfo(
 			if (mob->dropitem[i].nameid <= 0 || (item_data = itemdb_search(mob->dropitem[i].nameid)) == NULL)
 				continue;
 			if (mob->dropitem[i].p > 0) {
-				sprintf(atcmd_output2, " - %s  %02.02f%%", item_data->name, (float)mob->dropitem[i].p / 100);
+				sprintf(atcmd_output2, " - %s  %02.02f%%", item_data->jname, (float)mob->dropitem[i].p / 100);
 				strcat(atcmd_output, atcmd_output2);
 				if (++j % 3 == 0) {
 					clif_displaymessage(fd, atcmd_output);

+ 10 - 11
src/map/skill.c

@@ -1931,14 +1931,13 @@ int skill_attack( int attack_type, struct block_list* src, struct block_list *ds
 	case ASC_BREAKER:	// [celest]
 		if (attack_type&BF_WEAPON) { // the 1st attack won't really deal any damage
 			tmpdmg = damage;	// store the temporary weapon damage
-		} else {	// only display damage for the 2nd attack
-			if (tmpdmg == 0 || damage == 0)	// if one or both attack(s) missed, display a 'miss'
-				clif_skill_damage(dsrc, bl, tick, dmg.amotion, dmg.dmotion, 0, dmg.div_, skillid, skilllv, type);
-			damage += tmpdmg;	// add weapon and magic damage
-			tmpdmg = 0;	// clear the temporary weapon damage
-			if (damage > 0)	// if both attacks missed, do not display a 2nd 'miss'
-				dmg.dmotion = clif_skill_damage(dsrc, bl, tick, dmg.amotion, dmg.dmotion, damage, dmg.div_, skillid, skilllv, type);
-		}
+			return 0; //Wait for the second iteration to do all the work below.
+		} 
+		if (tmpdmg == 0 || damage == 0)	// if one or both attack(s) missed, display a 'miss'
+			clif_skill_damage(dsrc, bl, tick, dmg.amotion, dmg.dmotion, 0, dmg.div_, skillid, skilllv, type);
+		damage += tmpdmg;	// add weapon and magic damage
+		tmpdmg = 0;	// clear the temporary weapon damage
+		dmg.dmotion = clif_skill_damage(dsrc, bl, tick, dmg.amotion, dmg.dmotion, damage, dmg.div_, skillid, skilllv, type);
 		break;
 	case NPC_SELFDESTRUCTION:
 		if(src->type==BL_PC)
@@ -1992,7 +1991,7 @@ int skill_attack( int attack_type, struct block_list* src, struct block_list *ds
 		if (su->group && skill_get_inf2(su->group->skill_id)&INF2_TRAP)
 			damage = 0; //Only Heaven's drive may damage traps. [Skotlex]
 	}
-	if ((skillid || flag) && !(attack_type&BF_WEAPON)) {  // do not really deal damage for ASC_BREAKER's 1st attack
+	if (!dmg.amotion) {  // do not really deal damage for ASC_BREAKER's 1st attack
 		battle_damage(src,bl,damage,dmg.dmotion,0); //Deal damage before knockback to allow stuff like firewall+storm gust combo.
 		if (dmg.dmg_lv == ATK_DEF || damage > 0) {
 			if (!status_isdead(bl))
@@ -2007,7 +2006,7 @@ int skill_attack( int attack_type, struct block_list* src, struct block_list *ds
 		skill_blown(dsrc,bl,dmg.blewcount);
 	
 	//Delayed damage must be dealt after the knockback (it needs to know actual position of target)
-	if ((skillid || flag) && attack_type&BF_WEAPON && skillid != ASC_BREAKER) {  // do not really deal damage for ASC_BREAKER's 1st attack
+	if (dmg.amotion) {  // do not really deal damage for ASC_BREAKER's 1st attack
 		battle_delay_damage(tick+dmg.amotion,src,bl,attack_type,skillid,skilllv,damage,dmg.dmg_lv,dmg.dmotion,0);
 	}
 
@@ -2027,7 +2026,7 @@ int skill_attack( int attack_type, struct block_list* src, struct block_list *ds
 	}
 
 	if (rdamage>0) {
-		if (attack_type&BF_WEAPON)
+		if (dmg.amotion)
 			battle_delay_damage(tick+dmg.amotion,bl,src,0,0,0,rdamage,ATK_DEF,0,0);
 		else
 			battle_damage(bl,src,rdamage,0,0);