소스 검색

Cleanup for some Soul Reaper skills (#6700)

Lemongrass3110 3 년 전
부모
커밋
79d978e010
3개의 변경된 파일18개의 추가작업 그리고 16개의 파일을 삭제
  1. 4 4
      db/re/status.yml
  2. 5 12
      src/map/skill.cpp
  3. 9 0
      src/map/status.cpp

+ 4 - 4
db/re/status.yml

@@ -6975,7 +6975,7 @@ Body:
       NoDispell: true
       NoDispell: true
       NoBanishingBuster: true
       NoBanishingBuster: true
       NoClearance: true
       NoClearance: true
-    End:
+    Fail:
       Spirit: true
       Spirit: true
       Soulgolem: true
       Soulgolem: true
       Soulfalcon: true
       Soulfalcon: true
@@ -6990,7 +6990,7 @@ Body:
       NoDispell: true
       NoDispell: true
       NoBanishingBuster: true
       NoBanishingBuster: true
       NoClearance: true
       NoClearance: true
-    End:
+    Fail:
       Spirit: true
       Spirit: true
       Soulgolem: true
       Soulgolem: true
       Soulshadow: true
       Soulshadow: true
@@ -7006,7 +7006,7 @@ Body:
       NoDispell: true
       NoDispell: true
       NoBanishingBuster: true
       NoBanishingBuster: true
       NoClearance: true
       NoClearance: true
-    End:
+    Fail:
       Spirit: true
       Spirit: true
       Soulgolem: true
       Soulgolem: true
       Soulshadow: true
       Soulshadow: true
@@ -7022,7 +7022,7 @@ Body:
       NoDispell: true
       NoDispell: true
       NoBanishingBuster: true
       NoBanishingBuster: true
       NoClearance: true
       NoClearance: true
-    End:
+    Fail:
       Spirit: true
       Spirit: true
       Soulshadow: true
       Soulshadow: true
       Soulfalcon: true
       Soulfalcon: true

+ 5 - 12
src/map/skill.cpp

@@ -9990,20 +9990,13 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
 	case SP_SOULSHADOW:
 	case SP_SOULSHADOW:
 	case SP_SOULFALCON:
 	case SP_SOULFALCON:
 	case SP_SOULFAIRY:
 	case SP_SOULFAIRY:
-		if (sd && !dstsd) { // Only player's can be soul linked.
-			clif_skill_fail(sd, skill_id, USESKILL_FAIL,0);
-			break;
-		}
-		if (tsc) {
-			if (tsc->data[skill_get_sc(skill_id)]) { // Allow refreshing an already active soul link.
-				clif_skill_nodamage(src, bl, skill_id, skill_lv, sc_start(src, bl, type, 100, skill_lv, skill_get_time(skill_id, skill_lv)));
-				break;
-			} else if (tsc->data[SC_SPIRIT] || tsc->data[SC_SOULGOLEM] || tsc->data[SC_SOULSHADOW] || tsc->data[SC_SOULFALCON] || tsc->data[SC_SOULFAIRY]) { // Soul links from Soul Linker and Soul Reaper skills don't stack.
-				clif_skill_fail(sd, skill_id, USESKILL_FAIL, 0);
-				break;
+		if( sc_start( src, bl, type, 100, skill_lv, skill_get_time( skill_id, skill_lv ) ) ){
+			clif_skill_nodamage( src, bl, skill_id, skill_lv, 1 );
+		}else{
+			if( sd ){
+				clif_skill_fail( sd, skill_id, USESKILL_FAIL, 0 );
 			}
 			}
 		}
 		}
-		clif_skill_nodamage(src, bl, skill_id, skill_lv, sc_start(src, bl, type, 100, skill_lv, skill_get_time(skill_id, skill_lv)));
 		break;
 		break;
 
 
 	case SP_SOULREVOLVE:
 	case SP_SOULREVOLVE:

+ 9 - 0
src/map/status.cpp

@@ -9544,6 +9544,15 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
 				return 0;
 				return 0;
 			}
 			}
 			break;
 			break;
+		case SC_SOULGOLEM:
+		case SC_SOULSHADOW:
+		case SC_SOULFALCON:
+		case SC_SOULFAIRY:
+			if( sd == nullptr ){
+				// Status change is only applicable for players
+				return 0;
+			}
+			break;
 	}
 	}
 
 
 	// Before overlapping fail, one must check for status cured.
 	// Before overlapping fail, one must check for status cured.