Pārlūkot izejas kodu

Added skill ALL_NIFLHEIM_RECALL (#8903)

Additionally added some missing status changes

Co-authored-by: Atemo <Atemo@users.noreply.github.com>
Lemongrass3110 4 mēneši atpakaļ
vecāks
revīzija
557357b671
6 mainītis faili ar 121 papildinājumiem un 9 dzēšanām
  1. 27 4
      db/re/skill_db.yml
  2. 56 0
      db/re/status.yml
  3. 8 0
      src/map/script_constants.hpp
  4. 14 3
      src/map/skill.cpp
  5. 7 2
      src/map/skill.hpp
  6. 9 0
      src/map/status.hpp

+ 27 - 4
db/re/skill_db.yml

@@ -29697,6 +29697,7 @@ Body:
       IgnoreItemBonus: true
     Requires:
       SpCost: 1
+    Status: Return_To_Eldicastes
   - Id: 2535
     Name: ALL_BUYING_STORE
     Description: Open Buying Store
@@ -29730,6 +29731,7 @@ Body:
       IgnoreItemBonus: true
     Requires:
       SpCost: 1
+    Status: Guardian_Recall
   - Id: 2537
     Name: ALL_ODINS_POWER
     Description: Odin's Power
@@ -32999,8 +33001,6 @@ Body:
     TargetType: Self
     DamageFlags:
       NoDamage: true
-    Hit: Single
-    HitCount: 1
     CastTime: 3000
     Cooldown: 300000
     CastTimeFlags:
@@ -33013,6 +33013,27 @@ Body:
       IgnoreItemBonus: true
     Requires:
       SpCost: 1
+    Status: Eclage_Recall
+  - Id: 3041
+    Name: ALL_NIFLHEIM_RECALL
+    Description: Niflheim Recall
+    MaxLevel: 1
+    TargetType: Self
+    DamageFlags:
+      NoDamage: true
+    Cooldown: 300000
+    FixedCastTime: 1000
+    CastTimeFlags:
+      IgnoreDex: true
+      IgnoreStatus: true
+      IgnoreItemBonus: true
+    CastDelayFlags:
+      IgnoreDex: true
+      IgnoreStatus: true
+      IgnoreItemBonus: true
+    Requires:
+      SpCost: 10
+    Status: All_Niflheim_Recall
   - Id: 3042
     Name: ALL_PRONTERA_RECALL
     Description: Prontera Recall
@@ -33020,8 +33041,6 @@ Body:
     TargetType: Self
     DamageFlags:
       NoDamage: true
-    Hit: Single
-    HitCount: 1
     Cooldown:
       - Level: 1
         Time: 1800000
@@ -33038,6 +33057,7 @@ Body:
       IgnoreItemBonus: true
     Requires:
       SpCost: 1
+    Status: All_Prontera_Recall
   - Id: 3043
     Name: ALL_GLASTHEIM_RECALL
     Description: Return To Glast Heim
@@ -33057,6 +33077,7 @@ Body:
       IgnoreItemBonus: true
     Requires:
       SpCost: 1
+    Status: All_Glastheim_Recall
   - Id: 3044
     Name: ALL_THANATOS_RECALL
     Description: Return To Thanatos
@@ -33076,6 +33097,7 @@ Body:
       IgnoreItemBonus: true
     Requires:
       SpCost: 1
+    Status: All_Thanatos_Recall
   - Id: 3045
     Name: ALL_LIGHTHALZEN_RECALL
     Description: Return To Lighthalzen
@@ -33095,6 +33117,7 @@ Body:
       IgnoreItemBonus: true
     Requires:
       SpCost: 1
+    Status: All_Lighthalzen_Recall
   - Id: 5001
     Name: GC_DARKCROW
     Description: Dark Claw

+ 56 - 0
db/re/status.yml

@@ -9512,3 +9512,59 @@ Body:
     DurationLookup: SOA_SOUL_OF_HEAVEN_AND_EARTH
     CalcFlags:
       All: true
+  - Status: RETURN_TO_ELDICASTES
+    Icon: EFST_RETURN_TO_ELDICASTES
+    Flags:
+      NoClearbuff: true
+      NoDispell: true
+      NoBanishingBuster: true
+      NoClearance: true
+  - Status: GUARDIAN_RECALL
+    Icon: EFST_GUARDIAN_RECALL
+    Flags:
+      NoClearbuff: true
+      NoDispell: true
+      NoBanishingBuster: true
+      NoClearance: true
+  - Status: ECLAGE_RECALL
+    Icon: EFST_ECLAGE_RECALL
+    Flags:
+      NoClearbuff: true
+      NoDispell: true
+      NoBanishingBuster: true
+      NoClearance: true
+  - Status: ALL_NIFLHEIM_RECALL
+    Icon: EFST_ALL_NIFLHEIM_RECALL
+    Flags:
+      NoClearbuff: true
+      NoDispell: true
+      NoBanishingBuster: true
+      NoClearance: true
+  - Status: ALL_PRONTERA_RECALL
+    Icon: EFST_ALL_PRONTERA_RECALL
+    Flags:
+      NoClearbuff: true
+      NoDispell: true
+      NoBanishingBuster: true
+      NoClearance: true
+  - Status: ALL_GLASTHEIM_RECALL
+    Icon: EFST_ALL_GLASTHEIM_RECALL
+    Flags:
+      NoClearbuff: true
+      NoDispell: true
+      NoBanishingBuster: true
+      NoClearance: true
+  - Status: ALL_THANATOS_RECALL
+    Icon: EFST_ALL_THANATOS_RECALL
+    Flags:
+      NoClearbuff: true
+      NoDispell: true
+      NoBanishingBuster: true
+      NoClearance: true
+  - Status: ALL_LIGHTHALZEN_RECALL
+    Icon: EFST_ALL_LIGHTHALZEN_RECALL
+    Flags:
+      NoClearbuff: true
+      NoDispell: true
+      NoBanishingBuster: true
+      NoClearance: true

+ 8 - 0
src/map/script_constants.hpp

@@ -1932,6 +1932,14 @@
 	export_constant(SC_T_FOURTH_GOD);
 	export_constant(SC_T_FIFTH_GOD);
 	export_constant(SC_HEAVEN_AND_EARTH);
+	export_constant(SC_RETURN_TO_ELDICASTES);
+	export_constant(SC_GUARDIAN_RECALL);
+	export_constant(SC_ECLAGE_RECALL);
+	export_constant(SC_ALL_NIFLHEIM_RECALL);
+	export_constant(SC_ALL_PRONTERA_RECALL);
+	export_constant(SC_ALL_GLASTHEIM_RECALL);
+	export_constant(SC_ALL_THANATOS_RECALL);
+	export_constant(SC_ALL_LIGHTHALZEN_RECALL);
 
 /// Do not modify code below this, until the end of the API hook, since it will be automatically generated again
 /// @APIHOOK_START(EFST_CONST)

+ 14 - 3
src/map/skill.cpp

@@ -872,6 +872,7 @@ bool skill_isNotOk( uint16 skill_id, map_session_data& sd ){
 		case RETURN_TO_ELDICASTES:
 		case ALL_GUARDIAN_RECALL:
 		case ECLAGE_RECALL:
+		case ALL_NIFLHEIM_RECALL:
 		case ALL_PRONTERA_RECALL:
 		case ALL_GLASTHEIM_RECALL:
 		case ALL_THANATOS_RECALL:
@@ -11912,16 +11913,18 @@ int32 skill_castend_nodamage_id (struct block_list *src, struct block_list *bl,
 	case RETURN_TO_ELDICASTES:
 	case ALL_GUARDIAN_RECALL:
 	case ECLAGE_RECALL:
+	case ALL_NIFLHEIM_RECALL:
 	case ALL_PRONTERA_RECALL:
 	case ALL_GLASTHEIM_RECALL:
 	case ALL_THANATOS_RECALL:
 	case ALL_LIGHTHALZEN_RECALL:
 		if( sd != nullptr ){
-			short x=0, y=0; // Destination position.
-			unsigned short mapindex=0;
+			// Destination position.
+			uint16 x;
+			uint16 y;
+			uint16 mapindex;
 
 			switch(skill_id){
-			default:
 			case RETURN_TO_ELDICASTES:
 				x = 198;
 				y = 187;
@@ -11937,6 +11940,11 @@ int32 skill_castend_nodamage_id (struct block_list *src, struct block_list *bl,
 				y = 31;
 				mapindex  = mapindex_name2id(MAP_ECLAGE_IN);
 				break;
+			case ALL_NIFLHEIM_RECALL:
+				x = 193;
+				y = 186;
+				mapindex = mapindex_name2id( MAP_NIFLHEIM );
+				break;
 			case ALL_PRONTERA_RECALL:
 				if(skill_lv == 1) {
 					x = 115;
@@ -11965,12 +11973,15 @@ int32 skill_castend_nodamage_id (struct block_list *src, struct block_list *bl,
 				break;
 			}
 
+			sc_start( src, bl, type, 100, skill_lv, skill_get_cooldown( skill_id, skill_lv ) );
+
 			if(!mapindex)
 			{ //Given map not found?
 				clif_skill_fail( *sd, skill_id );
 				map_freeblock_unlock();
 				return 0;
 			}
+
 			pc_setpos(sd, mapindex, x, y, CLR_TELEPORT);
 		}
 		break;

+ 7 - 2
src/map/skill.hpp

@@ -1954,8 +1954,13 @@ enum e_skill {
 	ECL_SADAGUI,
 	ECL_SEQUOIADUST,
 	ECLAGE_RECALL,
-
-	ALL_PRONTERA_RECALL = 3042,
+	BA_POEMBRAGI2,
+	DC_FORTUNEKISS2,
+	// ITEM_OPTION_SPLASH_ATTACK,
+	GM_FORCE_TRANSFER = 3039,
+	GM_WIDE_RESURRECTION,
+	ALL_NIFLHEIM_RECALL,
+	ALL_PRONTERA_RECALL,
 	ALL_GLASTHEIM_RECALL,
 	ALL_THANATOS_RECALL,
 	ALL_LIGHTHALZEN_RECALL,

+ 9 - 0
src/map/status.hpp

@@ -1350,6 +1350,15 @@ enum sc_type : int16 {
 	SC_HEAVEN_AND_EARTH,
 	SC_TOTEM_OF_TUTELARY,
 
+	SC_RETURN_TO_ELDICASTES,
+	SC_GUARDIAN_RECALL,
+	SC_ECLAGE_RECALL,
+	SC_ALL_NIFLHEIM_RECALL,
+	SC_ALL_PRONTERA_RECALL,
+	SC_ALL_GLASTHEIM_RECALL,
+	SC_ALL_THANATOS_RECALL,
+	SC_ALL_LIGHTHALZEN_RECALL,
+
 	SC_MAX, //Automatically updated max, used in for's to check we are within bounds.
 };