Parcourir la source

Corrected SP_CURSEEXPLOSION and Soulcurse status (#8754)

* Corrected SP_CURSEEXPLOSION

* Latest formula
[Level 1]: magical damage 500%/1500% (cursed target)
[Level 2]: magical damage 600%/1800% (cursed target)
[Level 3]: magical damage 700%/2100% (cursed target)
[Level 4]: magical damage 800%/2400% (cursed target)
[Level 5]: magical damage 900%/2700% (cursed target)
[Level 6]: magical damage 1000%/3000% (cursed target)
[Level 7]: magical damage 1100%/3300% (cursed target)
[Level 8]: magical damage 1200%/3600% (cursed target)
[Level 9]: magical damage 1300%/3900% (cursed target)
[Level 10]: magical damage 1400%/4200% (cursed target)

* Damage increases additionally based on the caster's base level according to the skill description
* SP_CURSEEXPLOSION does not remove SC_SOULCURSE according to test on kRO (and not mentioned in the skill description)

* Added missing flag in status yaml
* The effect of SC_Soulcurse should also displayed on monster
Atemo il y a 7 mois
Parent
commit
ab437ed47d
3 fichiers modifiés avec 5 ajouts et 5 suppressions
  1. 2 0
      db/re/status.yml
  2. 3 2
      src/map/battle.cpp
  3. 0 3
      src/map/skill.cpp

+ 2 - 0
db/re/status.yml

@@ -7330,6 +7330,8 @@ Body:
   - Status: Soulcurse
     Icon: EFST_SOULCURSE
     DurationLookup: SP_SOULCURSE
+    Flags:
+      BlEffect: true
   - Status: Hells_Plant
     Icon: EFST_HELLS_PLANT_ARMOR
     DurationLookup: GN_HELLS_PLANT

+ 3 - 2
src/map/battle.cpp

@@ -8383,9 +8383,10 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list
 						break;
 					case SP_CURSEEXPLOSION:
 						if (tsc && tsc->getSCE(SC_SOULCURSE))
-							skillratio += 1400 + 200 * skill_lv;
+							skillratio += -100 + 1200 + 300 * skill_lv;
 						else
-							skillratio += 300 + 100 * skill_lv;
+							skillratio += -100 + 400 + 100 * skill_lv;
+						RE_LVL_DMOD(100);
 						break;
 					case SP_SPA:
 						skillratio += 400 + 250 * skill_lv;

+ 0 - 3
src/map/skill.cpp

@@ -2150,9 +2150,6 @@ int skill_additional_effect( struct block_list* src, struct block_list *bl, uint
 	case SJ_STAREMPEROR:
 		sc_start(src, bl, SC_SILENCE, 50 + 10 * skill_lv, skill_lv, skill_get_time(skill_id, skill_lv));
 		break;
-	case SP_CURSEEXPLOSION:
-		status_change_end(bl, SC_SOULCURSE);
-		break;
 	case SP_SHA:
 		sc_start(src, bl, SC_SP_SHA, 100, skill_lv, skill_get_time(skill_id, skill_lv));
 		break;