소스 검색

- 'Forget me Not' no longer blocks ASPD bonuses from working or prevents their re-casting, they are simply dispelled when the effect takes place.
- Fixed a possible crash when a player logs out before their create-party request is accepted.


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

skotlex 17 년 전
부모
커밋
7d317be8dd
3개의 변경된 파일12개의 추가작업 그리고 7개의 파일을 삭제
  1. 4 0
      Changelog-Trunk.txt
  2. 6 3
      src/map/party.c
  3. 2 4
      src/map/status.c

+ 4 - 0
Changelog-Trunk.txt

@@ -4,6 +4,10 @@ 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.
 
 2008/02/11
+	* 'Forget me Not' no longer blocks ASPD bonuses from working or prevents
+	  their re-casting, they are simply dispelled when the effect takes place.
+	* Fixed a possible crash when a player logs out before their create-party
+	  request is accepted. [Skotlex]
 	* Expanded the script command 'input': (bugreport:811) [FlavioJS]
 	- two new optional arguments 'min' and 'max'
 	- return value indicating if it's in the correct range

+ 6 - 3
src/map/party.c

@@ -108,9 +108,12 @@ int party_created(int account_id,int char_id,int fail,int party_id,char *name)
 	struct party_data *p;
 	sd=map_id2sd(account_id);
 
-	nullpo_retr(0, sd);
-	if (sd->status.char_id != char_id)
-		return 0; //unlikely failure...
+	if (!sd || sd->status.char_id != char_id)
+	{	//Character logged off before creation ack?
+		if (!fail) //break up party since player could not be added to it.
+			intif_party_leave(party_id,account_id,char_id);
+		return 0;
+	}
 	
 	if(fail){
 		clif_party_created(sd,1);

+ 2 - 4
src/map/status.c

@@ -3775,7 +3775,7 @@ static short status_calc_aspd_rate(struct block_list *bl, struct status_change *
 	if(!sc || !sc->count)
 		return cap_value(aspd_rate,0,SHRT_MAX);
 
-	if(!sc->data[SC_QUAGMIRE] && !sc->data[SC_DONTFORGETME])
+	if(!sc->data[SC_QUAGMIRE])
 	{
 		int max = 0;
 		if(sc->data[SC_STAR_COMFORT])
@@ -4659,7 +4659,6 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val
 		if(sd && !pc_check_weapontype(sd,skill_get_weapontype(BS_ADRENALINE)))
 			return 0;
 		if (sc->data[SC_QUAGMIRE] ||
-			sc->data[SC_DONTFORGETME] ||
 			sc->data[SC_DECREASEAGI]
 		)
 			return 0;
@@ -4668,7 +4667,6 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val
 		if(sd && !pc_check_weapontype(sd,skill_get_weapontype(BS_ADRENALINE2)))
 			return 0;
 		if (sc->data[SC_QUAGMIRE] ||
-			sc->data[SC_DONTFORGETME] ||
 			sc->data[SC_DECREASEAGI]
 		)
 			return 0;
@@ -4684,7 +4682,7 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val
 	case SC_WINDWALK:
 	case SC_CARTBOOST:
 	case SC_ASSNCROS:
-		if (sc->data[SC_QUAGMIRE] || sc->data[SC_DONTFORGETME])
+		if (sc->data[SC_QUAGMIRE])
 			return 0;
 	break;
 	case SC_CLOAKING: