Просмотр исходного кода

Tarot Card/Gospel vs Chemical Protection (fixes #1108)
* The High Priestess Card from Tarot Card of Fate now removes Chemical Protection (all)
* Gospel now removes Chemical Protection (all) on the caster

Playtester 9 лет назад
Родитель
Сommit
894d6f2fe6
2 измененных файлов с 12 добавлено и 8 удалено
  1. 1 1
      src/map/skill.c
  2. 11 7
      src/map/status.c

+ 1 - 1
src/map/skill.c

@@ -8400,7 +8400,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
 					sc_start(src,bl,SC_INCMATKRATE,100,-50,skill_get_time2(skill_id,skill_lv));
 					break;
 				case 2:	// all buffs removed
-					status_change_clear_buffs(bl,1);
+					status_change_clear_buffs(bl,9);
 					break;
 				case 3:	// 1000 damage, random armor destroyed
 					{

+ 11 - 7
src/map/status.c

@@ -9230,7 +9230,7 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
 			if(val4 == BCT_SELF) {	// Self effect
 				val2 = tick/10000;
 				tick_time = 10000; // [GodLesZ] tick time
-				status_change_clear_buffs(bl,3); // Remove buffs/debuffs
+				status_change_clear_buffs(bl,11); // Remove buffs/debuffs
 			}
 			break;
 
@@ -12832,8 +12832,9 @@ int status_change_timer_sub(struct block_list* bl, va_list ap)
  * @param bl: Object to clear [PC|MOB|HOM|MER|ELEM]
  * @param type: Type to remove
  *	&1: Clear Buffs
- *	$2: Clear Debuffs
+ *	&2: Clear Debuffs
  *	&4: Specific debuffs with a refresh
+ *	&8: Clear chemical protection
  */
 void status_change_clear_buffs (struct block_list* bl, int type)
 {
@@ -12868,10 +12869,6 @@ void status_change_clear_buffs (struct block_list* bl, int type)
 			case SC_JAILED:
 			case SC_ANKLE:
 			case SC_BLADESTOP:
-			case SC_CP_WEAPON:
-			case SC_CP_SHIELD:
-			case SC_CP_ARMOR:
-			case SC_CP_HELM:
 			case SC_STRFOOD:
 			case SC_AGIFOOD:
 			case SC_VITFOOD:
@@ -12957,7 +12954,14 @@ void status_change_clear_buffs (struct block_list* bl, int type)
 			case SC_SPRITEMABLE:
 			case SC_BITESCAR:
 				continue;
-
+			// Chemical Protection is only removed by some skills
+			case SC_CP_WEAPON:
+			case SC_CP_SHIELD:
+			case SC_CP_ARMOR:
+			case SC_CP_HELM:
+				if(!(type&8))
+					continue;
+				break;
 			// Debuffs that can be removed.
 			case SC_DEEPSLEEP:
 			case SC_BURNING: