Browse Source

* Updated Breaker, Cloaking
* Corrected 1206Sakexe's packet detection

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

celest 20 years ago
parent
commit
f2636673d7
4 changed files with 21 additions and 11 deletions
  1. 7 0
      Changelog-SVN.txt
  2. 4 2
      src/map/battle.c
  3. 9 8
      src/map/clif.c
  4. 1 1
      src/map/skill.c

+ 7 - 0
Changelog-SVN.txt

@@ -1,5 +1,12 @@
 Date	Added
 
+03/11
+        * Added Breaker's magic damage to be blockable by Pneuma, thanks to DracoRPG
+          [celest]
+        * Corrected 1206Sakexe's packet detection, thanks to Yor / Freya [celest]
+        * When casting cloaking stop displaying the skill title after its finished,
+          thanks to Battitude [celest]
+
 03/09
         * Some changes in sig_dump to allow Cygwin produce stackdumps upon crash again,
           thanks to Ser [celest]

+ 4 - 2
src/map/battle.c

@@ -267,8 +267,10 @@ int battle_calc_damage(struct block_list *src,struct block_list *bl,int damage,i
 				status_change_end(bl,SC_SAFETYWALL,-1);
 			}
 		}
-		if(sc_data[SC_PNEUMA].timer!=-1 && damage>0 && ((flag&BF_WEAPON && flag&BF_LONG && skill_num != NPC_GUIDEDATTACK) ||
-			(flag&BF_MISC && (skill_num ==  HT_BLITZBEAT || skill_num == SN_FALCONASSAULT)))){ // [DracoRPG]
+		if(sc_data[SC_PNEUMA].timer!=-1 && damage>0 &&
+			((flag&BF_WEAPON && flag&BF_LONG && skill_num != NPC_GUIDEDATTACK) ||
+			(flag&BF_MISC && (skill_num ==  HT_BLITZBEAT || skill_num == SN_FALCONASSAULT)) ||
+			(flag&BF_MAGIC && skill_num == ASC_BREAKER))){ // [DracoRPG]
 			// ƒjƒ…�[ƒ}
 			damage=0;
 		}

+ 9 - 8
src/map/clif.c

@@ -7366,10 +7366,11 @@ void clif_parse_WantToConnection(int fd, struct map_session_data *sd)
 			account_id = RFIFOL(fd,12);
 		else if (RFIFOREST(fd) >= 32 && (RFIFOB(fd,31) == 0 || RFIFOB(fd,31) == 1)) // 00 = Female, 01 = Male
 			account_id = RFIFOL(fd,10);
-		else {	// 29 28 28
-			/*if (RFIFOW(fd,1) == 0)	// testing ^^;
+		else {	// 29 28 28 // search correct value
+			// if account id and char id of version 14
+			if (RFIFOL(fd,3) > 700000 && RFIFOL(fd,10) >= 150000 && RFIFOL(fd,10) < 5000000) // account id / char id (more than 5.000.000 characters?) [Yor]
 				account_id = RFIFOL(fd,3);
-			else*/
+			else
 				account_id = RFIFOL(fd,5);
 		}
 	// 0x9B
@@ -7427,7 +7428,8 @@ void clif_parse_WantToConnection(int fd, struct map_session_data *sd)
 				sd->packet_ver = 11; // 5: old, 6: 7july04, 7: 13july04, 8: 26july04, 9: 9aug04/16aug04/17aug04, 10: 6sept04, 11: 21sept04, 12: 18oct04, 13: 25oct04 (by [Yor])
 				pc_setnewpc(sd, account_id, RFIFOL(fd,17), RFIFOL(fd,23), RFIFOL(fd,27), RFIFOB(fd,31), fd);
 			} else { // 29
-				if (RFIFOW(fd,1) == 0) {
+				// if account id and char id of version 14
+				if (RFIFOL(fd,3) > 700000 && RFIFOL(fd,10) >= 150000 && RFIFOL(fd,10) < 5000000) { // account id / char id (more than 5.000.000 characters?)
 					sd->packet_ver = 15; // 5: old, 6: 7july04, 7: 13july04, 8: 26july04, 9: 9aug04/16aug04/17aug04, 10: 6sept04, 11: 21sept04, 12: 18oct04, 13: 25oct04 (by [Yor])
 					pc_setnewpc(sd, account_id, RFIFOL(fd,10), RFIFOL(fd,20), RFIFOL(fd,24), RFIFOB(fd,28), fd);
 				} else {
@@ -10707,12 +10709,11 @@ static int clif_parse(int fd) {
 			else if (RFIFOREST(fd) >= 32 && (RFIFOB(fd,31) == 0 || RFIFOB(fd,31) == 1)) // 00 = Female, 01 = Male
 				packet_ver = 11; // 11: 21sept04
 			else if (RFIFOREST(fd) >= 29 && (RFIFOB(fd,28) == 0 || RFIFOB(fd,28) == 1)) {	// 00 = Female, 01 = Male
-				/*if (RFIFOW(fd,1) == 0)	// testing ^^;
-					packet_ver = 15;
-				else*/
+				if (RFIFOL(fd,3) > 700000 && RFIFOL(fd,10) >= 150000 && RFIFOL(fd,10) < 5000000) // account id / char id (more than 5.000.000 characters?) [Yor]
+					packet_ver = 15;	// 14: 6dec04
+				else
 					packet_ver = 13; // 13: 25oct04 (by [Yor])
 			}
-			// -- some way to identify version 14 and 15? --
 			// else probably incomplete packet
 			else if (RFIFOREST(fd) < 29)
 				return 0;

+ 1 - 1
src/map/skill.c

@@ -3499,7 +3499,7 @@ int skill_castend_nodamage_id( struct block_list *src, struct block_list *bl,int
 		{
 			struct status_change *tsc_data = status_get_sc_data(bl);
 			int sc=SkillStatusChangeTable[skillid];
-			clif_skill_nodamage(src,bl,skillid,skilllv,1);
+			clif_skill_nodamage(src,bl,skillid,-1,1);
 			if(tsc_data && tsc_data[sc].timer!=-1 )
 				/* ‰ð�œ‚·‚é */
 				status_change_end(bl, sc, -1);