Преглед изворни кода

Fixed Divest status changes not loading properly on login with `debuff_on_logout: 0` (bugreport:1331).

git-svn-id: https://svn.code.sf.net/p/rathena/svn/trunk@15513 54d463be-8e91-2dee-dedb-b68131a5f0ec
gepard1984 пре 13 година
родитељ
комит
cb96c947f7
1 измењених фајлова са 4 додато и 4 уклоњено
  1. 4 4
      src/map/status.c

+ 4 - 4
src/map/status.c

@@ -5600,7 +5600,7 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val
 	break;
 	//Strip skills, need to divest something or it fails.
 	case SC_STRIPWEAPON:
-		if (sd) {
+		if (sd && !(flag&4)) { //apply sc anyway if loading saved sc_data
 			int i;
 			opt_flag = 0; //Reuse to check success condition.
 			if(sd->unstripable_equip&EQP_WEAPON)
@@ -5627,7 +5627,7 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val
 	case SC_STRIPSHIELD:
 		if( val2 == 1 ) val2 = 0; //GX effect. Do not take shield off..		
 		else
-		if (sd) {
+		if (sd && !(flag&4)) {
 			int i;
 			if(sd->unstripable_equip&EQP_SHIELD)
 				return 0;
@@ -5640,7 +5640,7 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val
 		if (tick == 1) return 1; //Minimal duration: Only strip without causing the SC
 	break;
 	case SC_STRIPARMOR:
-		if (sd) {
+		if (sd && !(flag&4)) {
 			int i;
 			if(sd->unstripable_equip&EQP_ARMOR)
 				return 0;
@@ -5652,7 +5652,7 @@ int status_change_start(struct block_list* bl,enum sc_type type,int rate,int val
 		if (tick == 1) return 1; //Minimal duration: Only strip without causing the SC
 	break;
 	case SC_STRIPHELM:
-		if (sd) {
+		if (sd && !(flag&4)) {
 			int i;
 			if(sd->unstripable_equip&EQP_HELM)
 				return 0;