浏览代码

Updates to a few Sorcerer skills (#6561)

* Fixes #6387 and fixes #6425.
* Updates the damage formulas for Earth Grave, Diamond Dust, and Varetyr Spear.
* Removes the NoOverlap flag for Diamond Dust and Comet.
Thanks to @Rayvakarian, @Everade, @Balferian, @kuranwinterfall, @Badarosk0, @attackjom, and @Lemongrass3110!
Aleos 3 年之前
父节点
当前提交
181bc0e856
共有 3 个文件被更改,包括 6 次插入11 次删除
  1. 0 2
      db/pre-re/skill_db.yml
  2. 0 3
      db/re/skill_db.yml
  3. 6 6
      src/map/battle.cpp

+ 0 - 2
db/pre-re/skill_db.yml

@@ -18098,7 +18098,6 @@ Body:
       Interval: 1000
       Interval: 1000
       Target: Enemy
       Target: Enemy
       Flag:
       Flag:
-        NoOverlap: true
         PathCheck: true
         PathCheck: true
   - Id: 2214
   - Id: 2214
     Name: WL_CHAINLIGHTNING
     Name: WL_CHAINLIGHTNING
@@ -25867,7 +25866,6 @@ Body:
       Interval: 1000
       Interval: 1000
       Target: Enemy
       Target: Enemy
       Flag:
       Flag:
-        NoOverlap: true
         PathCheck: true
         PathCheck: true
   - Id: 2448
   - Id: 2448
     Name: SO_POISON_BUSTER
     Name: SO_POISON_BUSTER

+ 0 - 3
db/re/skill_db.yml

@@ -16747,7 +16747,6 @@ Body:
       Interval: 1000
       Interval: 1000
       Target: Enemy
       Target: Enemy
       Flag:
       Flag:
-        NoOverlap: true
         PathCheck: true
         PathCheck: true
   - Id: 709
   - Id: 709
     Name: NPC_ICEMINE
     Name: NPC_ICEMINE
@@ -19145,7 +19144,6 @@ Body:
       Interval: 1000
       Interval: 1000
       Target: Enemy
       Target: Enemy
       Flag:
       Flag:
-        NoOverlap: true
         PathCheck: true
         PathCheck: true
   - Id: 2214
   - Id: 2214
     Name: WL_CHAINLIGHTNING
     Name: WL_CHAINLIGHTNING
@@ -26792,7 +26790,6 @@ Body:
       Interval: 1000
       Interval: 1000
       Target: Enemy
       Target: Enemy
       Flag:
       Flag:
-        NoOverlap: true
         PathCheck: true
         PathCheck: true
   - Id: 2448
   - Id: 2448
     Name: SO_POISON_BUSTER
     Name: SO_POISON_BUSTER

+ 6 - 6
src/map/battle.cpp

@@ -7177,14 +7177,14 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list
 					case NPC_ELECTRICWALK:
 					case NPC_ELECTRICWALK:
 						skillratio += -100 + 100 * skill_lv;
 						skillratio += -100 + 100 * skill_lv;
 						break;
 						break;
-					case SO_EARTHGRAVE: // !TODO: Confirm formula
-						skillratio += -100 + sstatus->int_ / 6 * skill_lv + ((sd) ? pc_checkskill(sd, SA_SEISMICWEAPON) * 200 : 0);
+					case SO_EARTHGRAVE:
+						skillratio += -100 + 2 * sstatus->int_ + 300 * pc_checkskill(sd, SA_SEISMICWEAPON) + sstatus->int_ * skill_lv;
 						RE_LVL_DMOD(100);
 						RE_LVL_DMOD(100);
 						if( sc && sc->data[SC_CURSED_SOIL_OPTION] )
 						if( sc && sc->data[SC_CURSED_SOIL_OPTION] )
 							skillratio += (sd ? sd->status.job_level * 5 : 0);
 							skillratio += (sd ? sd->status.job_level * 5 : 0);
 						break;
 						break;
-					case SO_DIAMONDDUST: // !TODO: Confirm formula
-						skillratio += -100 + 200 * ((sd) ? pc_checkskill(sd, SA_FROSTWEAPON) : 0) + sstatus->int_ / 6 * skill_lv;
+					case SO_DIAMONDDUST:
+						skillratio += -100 + 2 * sstatus->int_ + 300 * pc_checkskill(sd, SA_FROSTWEAPON) + sstatus->int_ * skill_lv;
 						RE_LVL_DMOD(100);
 						RE_LVL_DMOD(100);
 						if( sc && sc->data[SC_COOLER_OPTION] )
 						if( sc && sc->data[SC_COOLER_OPTION] )
 							skillratio += (sd ? sd->status.job_level * 5 : 0);
 							skillratio += (sd ? sd->status.job_level * 5 : 0);
@@ -7224,8 +7224,8 @@ struct Damage battle_calc_magic_attack(struct block_list *src,struct block_list
 					case NPC_CLOUD_KILL:
 					case NPC_CLOUD_KILL:
 						skillratio += -100 + 50 * skill_lv;
 						skillratio += -100 + 50 * skill_lv;
 						break;
 						break;
-					case SO_VARETYR_SPEAR: //MATK [{( Endow Tornado skill level x 50 ) + ( Caster INT x Varetyr Spear Skill level )} x Caster Base Level / 100 ] %
-						skillratio += -100 + sstatus->int_ / 6 * skill_lv + ((sd) ? pc_checkskill(sd, SA_LIGHTNINGLOADER) * 50 : 0); // !TODO: Confirm new formula
+					case SO_VARETYR_SPEAR:
+						skillratio += -100 + (2 * sstatus->int_ + 150 * (pc_checkskill(sd, SO_STRIKING) + pc_checkskill(sd, SA_LIGHTNINGLOADER)) + sstatus->int_ * skill_lv / 2) / 3;
 						RE_LVL_DMOD(100);
 						RE_LVL_DMOD(100);
 						if (sc && sc->data[SC_BLAST_OPTION])
 						if (sc && sc->data[SC_BLAST_OPTION])
 							skillratio += (sd ? sd->status.job_level * 5 : 0);
 							skillratio += (sd ? sd->status.job_level * 5 : 0);