浏览代码

Implemented new Meister skills (#7986)

* Implemented MT_MIGHTY_SMASH
- Deals melee physical damage to all targets around the user.
- When using while under Axe Stomp buff, increases damage and number of hit.
- Fixed casting time : - (based on level 10).
- Variable Casting time : - (based on level 10).
- Cooldown: 0.3 seconds (based on level 10).
- Global cool time : - (based on level 10).

* Updated Mighty Smash to last rebalance
- Increases cooldown from 0.3 seconds to 0.5 seconds.
- Adds global cool time by 0.25 seconds.
- Increases SP consumption from 78 to 95 based on level 10.
- Reduces base damage from 3100%/3150%Atk to 1825%/1850%Atk per hit based on level 10.
- Increases number of hit from 3/5 hits to 5/7 hits.
- While under Axe Stomp buff, increases factor weight of POW in skill formula from 7 to 10.

* Implemented MT_TRIPLE_LASER
- Deals long ranged physical damage to the target.
- Can only be used when using Madogear.
- Has a chance to trigger critical, the critical chance is the user's cri.
- Damage property depends on weapon property.
- Doesn't consume magic gear fuel or cannonball.
- Fixed casting time : 0.5 seconds (based on level 5).
- Variable Casting time : 1 seconds (based on level 5).
- Cooldown: 0.25 seconds (based on level 5).
- Global cool time : - (based on level 5).

* Updated Triple Laser to last rebalance
- Increases cooldown from 0.25 seconds to 0.35 seconds.
- Adds global cool time by 0.25 seconds.
- Increases base damage from 3300%Atk to 5050%Atk per hit based on level 5.
- Increases factor weight of POW in skill formula from 10 to 12.

* Implemented MT_SPARK_BLASTER
- Deals long ranged physical damage to the target and surrounding enemies around the target with the range up to 9x9 cells.
- Can only be used when using Madogear.
- Affected by Hit/Flee calculation.
- Ignores physical defense.
- Doesn't consume magic gear fuel or cannonball.
- Damage property depends on weapon property.
- Recovers 2 AP.
- Fixed casting time : 0.5 seconds (based on level 10).
- Variable Casting time : 1.5 seconds (based on level 10).
- Cooldown: 0.7 seconds (based on level 10).
- Global cool time : 0.25 seconds (based on level 10).

* Updated Spark Blaster to last rebalance
- Reduces cooldown from 0.7 seconds to 0.5 seconds.
- Increases base damage from 7750%Atk to 9250%Atk based on level 10.

Co-authored-by: Lemongrass3110 <lemongrass@kstp.at>

Credits to @datawulf
Atemo 1 年之前
父节点
当前提交
eec9d34ead
共有 6 个文件被更改,包括 211 次插入1 次删除
  1. 160 0
      db/re/skill_db.yml
  2. 15 0
      db/re/skill_tree.yml
  3. 1 1
      src/common/mmo.hpp
  4. 23 0
      src/map/battle.cpp
  5. 5 0
      src/map/skill.cpp
  6. 7 0
      src/map/skill.hpp

+ 160 - 0
db/re/skill_db.yml

@@ -41389,6 +41389,166 @@ Body:
     SplashArea: 6
     Requires:
       SpCost: 1
+  - Id: 6002
+    Name: MT_SPARK_BLASTER
+    Description: Spark Blaster
+    MaxLevel: 10
+    Type: Weapon
+    TargetType: Attack
+    DamageFlags:
+      Splash: true
+      IgnoreDefense: true
+    Flags:
+      AllowOnMado: true
+    Range: 9
+    Hit: Multi_Hit
+    HitCount: 2
+    GiveAp: 2
+    Element: Weapon
+    SplashArea:
+      - Level: 1
+        Area: 3
+      - Level: 2
+        Area: 3
+      - Level: 3
+        Area: 3
+      - Level: 4
+        Area: 3
+      - Level: 5
+        Area: 3
+      - Level: 6
+        Area: 4
+      - Level: 7
+        Area: 4
+      - Level: 8
+        Area: 4
+      - Level: 9
+        Area: 4
+      - Level: 10
+        Area: 4
+    CastCancel: true
+    CastTime: 1500
+    FixedCastTime: 500
+    AfterCastActDelay: 500
+    Cooldown: 500
+    Requires:
+      SpCost:
+        - Level: 1
+          Amount: 48
+        - Level: 2
+          Amount: 52
+        - Level: 3
+          Amount: 56
+        - Level: 4
+          Amount: 60
+        - Level: 5
+          Amount: 64
+        - Level: 6
+          Amount: 68
+        - Level: 7
+          Amount: 72
+        - Level: 8
+          Amount: 76
+        - Level: 9
+          Amount: 80
+        - Level: 10
+          Amount: 84
+      State: Mado
+  - Id: 6003
+    Name: MT_TRIPLE_LASER
+    Description: Triple Laser
+    MaxLevel: 5
+    Type: Weapon
+    TargetType: Attack
+    Flags:
+      AllowOnMado: true
+    DamageFlags:
+      Critical: true
+    Range: 11
+    Hit: Multi_Hit
+    HitCount: 3
+    Element: Weapon
+    CastCancel: true
+    CastTime: 1000
+    FixedCastTime: 500
+    AfterCastActDelay: 250
+    Cooldown: 350
+    Requires:
+      SpCost:
+        - Level: 1
+          Amount: 40
+        - Level: 2
+          Amount: 45
+        - Level: 3
+          Amount: 50
+        - Level: 4
+          Amount: 55
+        - Level: 5
+          Amount: 60
+      State: Mado
+  - Id: 6004
+    Name: MT_MIGHTY_SMASH
+    Description: Mighty Smash
+    MaxLevel: 10
+    Type: Weapon
+    TargetType: Self
+    DamageFlags:
+      Splash: true
+    Flags:
+      AllowOnMado: true
+    Range: 1
+    Hit: Multi_Hit
+    HitCount: 5
+    Element: Weapon
+    SplashArea:
+      - Level: 1
+        Area: 1
+      - Level: 2
+        Area: 1
+      - Level: 3
+        Area: 1
+      - Level: 4
+        Area: 1
+      - Level: 5
+        Area: 2
+      - Level: 6
+        Area: 2
+      - Level: 7
+        Area: 2
+      - Level: 8
+        Area: 2
+      - Level: 9
+        Area: 3
+      - Level: 10
+        Area: 3
+    CastCancel: true
+    AfterCastActDelay: 250
+    Cooldown: 500
+    Requires:
+      SpCost:
+        - Level: 1
+          Amount: 68
+        - Level: 2
+          Amount: 71
+        - Level: 3
+          Amount: 74
+        - Level: 4
+          Amount: 77
+        - Level: 5
+          Amount: 80
+        - Level: 6
+          Amount: 83
+        - Level: 7
+          Amount: 86
+        - Level: 8
+          Amount: 89
+        - Level: 9
+          Amount: 92
+        - Level: 10
+          Amount: 95
+      Weapon:
+        1hAxe: true
+        2hAxe: true
   - Id: 8001
     Name: HLIF_HEAL
     Description: Healing Touch

+ 15 - 0
db/re/skill_tree.yml

@@ -6765,6 +6765,21 @@ Body:
             Level: 3
           - Name: MT_SUMMON_ABR_BATTLE_WARIOR
             Level: 2
+      - Name: MT_SPARK_BLASTER
+        MaxLevel: 10
+        Requires:
+          - Name: MT_M_MACHINE
+            Level: 1
+      - Name: MT_TRIPLE_LASER
+        MaxLevel: 5
+        Requires:
+          - Name: MT_SPARK_BLASTER
+            Level: 5
+      - Name: MT_MIGHTY_SMASH
+        MaxLevel: 10
+        Requires:
+          - Name: MT_AXE_STOMP
+            Level: 3
       - Name: MT_SUMMON_ABR_MOTHER_NET
         MaxLevel: 4
         Requires:

+ 1 - 1
src/common/mmo.hpp

@@ -89,7 +89,7 @@ typedef uint32 t_itemid;
 #endif
 #define MAX_FAME 1000000000 ///Max fame points
 #define MAX_CART 100 ///Maximum item in cart
-#define MAX_SKILL 1500 ///Maximum skill can be hold by Player, Homunculus, & Mercenary (skill list) AND skill_db limit
+#define MAX_SKILL 1623 ///Maximum skill can be hold by Player, Homunculus, & Mercenary (skill list) AND skill_db limit
 #define DEFAULT_WALK_SPEED 150 ///Default walk speed
 #define MIN_WALK_SPEED 20 ///Min walk speed
 #define MAX_WALK_SPEED 1000 ///Max walk speed

+ 23 - 0
src/map/battle.cpp

@@ -5533,6 +5533,15 @@ static int battle_calc_attack_skill_ratio(struct Damage* wd, struct block_list *
 			skillratio += -100 + 350 + 850 * skill_lv + 5 * sstatus->pow;
 			RE_LVL_DMOD(100);
 			break;
+		case MT_MIGHTY_SMASH:
+			skillratio += -100 + 25 + 180 * skill_lv;
+			skillratio += 5 * sstatus->pow;
+			if (sc && sc->getSCE(SC_AXE_STOMP)) {
+				skillratio += 25;
+				skillratio += 5 * sstatus->pow;
+			}
+			RE_LVL_DMOD(100);
+			break;
 		case MT_RUSH_QUAKE:
 			skillratio += -100 + 3600 * skill_lv + 10 * sstatus->pow;
 			if (tstatus->race == RC_FORMLESS || tstatus->race == RC_INSECT)
@@ -5543,6 +5552,16 @@ static int battle_calc_attack_skill_ratio(struct Damage* wd, struct block_list *
 			skillratio += -100 + 200 * skill_lv + 5 * sstatus->pow;
 			RE_LVL_DMOD(100);
 			break;
+		case MT_SPARK_BLASTER:
+			skillratio += -100 + 250 + 900 * skill_lv;
+			skillratio += 5 * sstatus->pow;
+			RE_LVL_DMOD(100);
+			break;
+		case MT_TRIPLE_LASER:
+			skillratio += -100 + 550 + 900 * skill_lv;
+			skillratio += 12 * sstatus->pow;
+			RE_LVL_DMOD(100);
+			break;
 		case ABC_ABYSS_DAGGER:
 			skillratio += -100 + 100 + 500 * skill_lv + 5 * sstatus->pow;
 			RE_LVL_DMOD(100);
@@ -6640,6 +6659,10 @@ static struct Damage initialize_weapon_data(struct block_list *src, struct block
 			case SHC_SAVAGE_IMPACT:
 				wd.div_ = wd.div_ + wd.miscflag;
 				break;
+			case MT_MIGHTY_SMASH:
+				if (sc && sc->getSCE(SC_AXE_STOMP))
+					wd.div_ = 7;
+				break;
 		}
 	} else {
 		bool is_long = false;

+ 5 - 0
src/map/skill.cpp

@@ -5207,6 +5207,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint
 	case ABR_BATTLE_BUSTER:
 	case ABR_DUAL_CANNON_FIRE:
 	case ABR_INFINITY_BUSTER:
+	case MT_TRIPLE_LASER:
 		skill_attack(BF_WEAPON,src,src,bl,skill_id,skill_lv,tick,flag);
 		break;
 
@@ -5641,8 +5642,10 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint
 	case SHC_IMPACT_CRATER:
 	case SHC_FATAL_SHADOW_CROW:
 	case MT_AXE_STOMP:
+	case MT_MIGHTY_SMASH:
 	case MT_RUSH_QUAKE:
 	case MT_A_MACHINE:
+	case MT_SPARK_BLASTER:
 	case ABC_ABYSS_DAGGER:
 	case ABC_CHAIN_REACTION_SHOT:
 	case ABC_DEFT_STAB:
@@ -5730,6 +5733,7 @@ int skill_castend_damage_id (struct block_list* src, struct block_list *bl, uint
 				case GN_CARTCANNON:
 				case SU_SCRATCH:
 				case DK_HACKANDSLASHER:
+				case MT_SPARK_BLASTER:
 					clif_skill_nodamage(src,bl,skill_id,skill_lv,1);
 					break;
 #ifdef RENEWAL
@@ -8486,6 +8490,7 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
 	case IQ_EXPOSION_BLASTER:
 	case SHC_IMPACT_CRATER:
 	case MT_AXE_STOMP:
+	case MT_MIGHTY_SMASH:
 	case ABC_ABYSS_DAGGER:
 	{
 		status_change *sc = status_get_sc(src);

+ 7 - 0
src/map/skill.hpp

@@ -2331,6 +2331,13 @@ enum e_skill {
 	NW_THE_VIGILANTE_AT_NIGHT_GUN_SHOTGUN,
 	SS_FUUMAKOUCHIKU_BLASTING,
 
+	DK_DRAGONIC_BREATH = 6001,
+	MT_SPARK_BLASTER,
+	MT_TRIPLE_LASER,
+	MT_MIGHTY_SMASH,
+	BO_EXPLOSIVE_POWDER,
+	BO_MAYHEMIC_THORNS,
+
 	HLIF_HEAL = 8001,
 	HLIF_AVOID,
 	HLIF_BRAIN,