Ver Fonte

Rebalance windhawk 20220608 (#7859)

* Hawk Rush
- Increases damage from 1000%Atk to 2500%Atk based on level 5.

* Gale Storm
- Reduces cooldown from 2 seconds to 1.5 seconds.
- Increases damage from 2500%Atk to 9500%Atk based on level 10.

Skipped, not enough info (the values have been changed again)
- Reduces SP consumption from 179 to 100 based on level 10.

* Crescive Bolt
- Reduces delay after skill from 0.5 seconds to 0.3 seconds.
- Reduces SP consumption from 100 to 65 based on level 10.
- Increases damage from 3000%Atk to 3400%Atk based on level 10.
- When reach 3 stacks of Crescive Bolt consecutive attack buff, the duration of buff will be refreshed when reusing Crescive Bolt.

* Deep Blind Trap / Solid Trap / Swift Trap / Flame Trap
- Reduces cooldown to 2.5 seconds.
- Increases SP consumption from 62 to 84 based on level 5.
- Increases area of effect to 7 x 7 cells based on level 5.
- Reduces trap duration to 5 seconds.
- Changes damage interval to 0.5 seconds.
- Reduces AP recovery rate from 4 to 3 based on level 5.
- No longer inflict status ailment to the target.
- Increases damage from 1250%Atk to 4250%Atk per hit based on level 5.

Note: already implemented
- Increases factor weight of CON in skill formula from 3 to 5.

* Hawk Boomerang
- Adds 0.15 seconds cooldown.
- Reduces SP consumption from 120 to 80.
- Reduces AP consumption from 15 to 12.
- Increases damage from 2500%Atk to 3000%Atk based on level 5.

* Updated Gale Storm
- Reduces SP consumption from 179 to 100 based on level 10.

Additionally:
- Updated Crescive Bolt ratio (+10% each hit)
Atemo há 1 ano atrás
pai
commit
0a87d2f3d6
3 ficheiros alterados com 177 adições e 108 exclusões
  1. 161 84
      db/re/skill_db.yml
  2. 9 9
      src/map/battle.cpp
  3. 7 15
      src/map/skill.cpp

+ 161 - 84
db/re/skill_db.yml

@@ -39228,10 +39228,11 @@ Body:
     CastCancel: true
     CastTime: 800
     AfterCastActDelay: 500
+    Cooldown: 150
     FixedCastTime: 200
     Requires:
-      SpCost: 120
-      ApCost: 15
+      SpCost: 80
+      ApCost: 12
       Weapon:
         Bow: true
       State: Falcon
@@ -39272,30 +39273,30 @@ Body:
     CastCancel: true
     CastTime: 3500
     AfterCastActDelay: 500
-    Cooldown: 2000
+    Cooldown: 1500
     FixedCastTime: 500
     Requires:
       SpCost:
         - Level: 1
-          Amount: 80
+          Amount: 64
         - Level: 2
-          Amount: 91
+          Amount: 68
         - Level: 3
-          Amount: 102
+          Amount: 72
         - Level: 4
-          Amount: 113
+          Amount: 76
         - Level: 5
-          Amount: 124
+          Amount: 80
         - Level: 6
-          Amount: 135
+          Amount: 84
         - Level: 7
-          Amount: 146
+          Amount: 88
         - Level: 8
-          Amount: 157
+          Amount: 92
         - Level: 9
-          Amount: 168
+          Amount: 96
         - Level: 10
-          Amount: 179
+          Amount: 100
       Weapon:
         Bow: true
       Ammo:
@@ -39313,42 +39314,61 @@ Body:
     Hit: Single
     HitCount: 1
     Element: Dark
-    GiveAp: 3
+    GiveAp:
+      - Level: 1
+        Amount: 1
+      - Level: 2
+        Amount: 1
+      - Level: 3
+        Amount: 2
+      - Level: 4
+        Amount: 2
+      - Level: 5
+        Amount: 3
     CastCancel: true
     CastTime: 1000
     AfterCastActDelay: 500
     Duration1:
       - Level: 1
-        Time: 12000
+        Time: 3000
       - Level: 2
-        Time: 24000
+        Time: 3500
       - Level: 3
-        Time: 36000
+        Time: 4000
       - Level: 4
-        Time: 48000
+        Time: 4500
       - Level: 5
-        Time: 60000
-    Duration2: 20000
-    Cooldown: 30000
+        Time: 5000
+    Cooldown: 2500
     Requires:
       SpCost:
         - Level: 1
-          Amount: 50
+          Amount: 68
         - Level: 2
-          Amount: 53
+          Amount: 72
         - Level: 3
-          Amount: 56
+          Amount: 76
         - Level: 4
-          Amount: 59
+          Amount: 80
         - Level: 5
-          Amount: 62
+          Amount: 84
       ItemCost:
         - Item: Special_Alloy_Trap
           Amount: 2
     Unit:
       Id: Deepblindtrap
-      Range: 1
-      Interval: 3000
+      Range:
+        - Level: 1
+          Size: 1
+        - Level: 2
+          Size: 1
+        - Level: 3
+          Size: 2
+        - Level: 4
+          Size: 2
+        - Level: 5
+          Size: 3
+      Interval: 500
       Target: Enemy
       Flag:
         NoOverlap: true
@@ -39366,43 +39386,62 @@ Body:
     Hit: Single
     HitCount: 1
     Element: Earth
-    GiveAp: 3
+    GiveAp:
+      - Level: 1
+        Amount: 1
+      - Level: 2
+        Amount: 1
+      - Level: 3
+        Amount: 2
+      - Level: 4
+        Amount: 2
+      - Level: 5
+        Amount: 3
     CastCancel: true
     CastTime: 1000
     AfterCastActDelay: 500
     Duration1:
       - Level: 1
-        Time: 12000
+        Time: 3000
       - Level: 2
-        Time: 24000
+        Time: 3500
       - Level: 3
-        Time: 36000
+        Time: 4000
       - Level: 4
-        Time: 48000
+        Time: 4500
       - Level: 5
-        Time: 60000
-    Duration2: 10000
-    Cooldown: 30000
+        Time: 5000
+    Cooldown: 2500
     Requires:
       SpCost:
         - Level: 1
-          Amount: 70
+          Amount: 68
         - Level: 2
-          Amount: 80
+          Amount: 72
         - Level: 3
-          Amount: 90
+          Amount: 76
         - Level: 4
-          Amount: 100
+          Amount: 80
         - Level: 5
-          Amount: 110
+          Amount: 84
       ItemCost:
         - Item: Special_Alloy_Trap
           Amount: 2
     Status: HandicapState_Crystallization
     Unit:
       Id: Solidtrap
-      Range: 1
-      Interval: 3000
+      Range:
+        - Level: 1
+          Size: 1
+        - Level: 2
+          Size: 1
+        - Level: 3
+          Size: 2
+        - Level: 4
+          Size: 2
+        - Level: 5
+          Size: 3
+      Interval: 500
       Target: Enemy
       Flag:
         NoOverlap: true
@@ -39419,43 +39458,62 @@ Body:
     Hit: Single
     HitCount: 1
     Element: Wind
-    GiveAp: 3
+    GiveAp:
+      - Level: 1
+        Amount: 1
+      - Level: 2
+        Amount: 1
+      - Level: 3
+        Amount: 2
+      - Level: 4
+        Amount: 2
+      - Level: 5
+        Amount: 3
     CastCancel: true
     CastTime: 1000
     AfterCastActDelay: 500
     Duration1:
       - Level: 1
-        Time: 12000
+        Time: 3000
       - Level: 2
-        Time: 24000
+        Time: 3500
       - Level: 3
-        Time: 36000
+        Time: 4000
       - Level: 4
-        Time: 48000
+        Time: 4500
       - Level: 5
-        Time: 60000
-    Duration2: 10000
-    Cooldown: 30000
+        Time: 5000
+    Cooldown: 2500
     Requires:
       SpCost:
         - Level: 1
-          Amount: 60
+          Amount: 68
         - Level: 2
-          Amount: 62
+          Amount: 72
         - Level: 3
-          Amount: 64
+          Amount: 76
         - Level: 4
-          Amount: 66
+          Amount: 80
         - Level: 5
-          Amount: 68
+          Amount: 84
       ItemCost:
         - Item: Special_Alloy_Trap
           Amount: 2
     Status: HandicapState_LightningStrike
     Unit:
       Id: Swifttrap
-      Range: 1
-      Interval: 3000
+      Range:
+        - Level: 1
+          Size: 1
+        - Level: 2
+          Size: 1
+        - Level: 3
+          Size: 2
+        - Level: 4
+          Size: 2
+        - Level: 5
+          Size: 3
+      Interval: 500
       Target: Enemy
       Flag:
         NoOverlap: true
@@ -39475,31 +39533,31 @@ Body:
     GiveAp: 1
     CastCancel: true
     CastTime: 800
-    AfterCastActDelay: 500
+    AfterCastActDelay: 300
     Duration1: 10000
     FixedCastTime: 200
     Requires:
       SpCost:
         - Level: 1
-          Amount: 55
+          Amount: 47
         - Level: 2
-          Amount: 60
+          Amount: 49
         - Level: 3
-          Amount: 65
+          Amount: 51
         - Level: 4
-          Amount: 70
+          Amount: 53
         - Level: 5
-          Amount: 75
+          Amount: 55
         - Level: 6
-          Amount: 80
+          Amount: 57
         - Level: 7
-          Amount: 85
+          Amount: 59
         - Level: 8
-          Amount: 90
+          Amount: 61
         - Level: 9
-          Amount: 95
+          Amount: 63
         - Level: 10
-          Amount: 100
+          Amount: 65
       Weapon:
         Bow: true
       Ammo:
@@ -39518,42 +39576,61 @@ Body:
     Hit: Single
     HitCount: 1
     Element: Fire
-    GiveAp: 3
+    GiveAp:
+      - Level: 1
+        Amount: 1
+      - Level: 2
+        Amount: 1
+      - Level: 3
+        Amount: 2
+      - Level: 4
+        Amount: 2
+      - Level: 5
+        Amount: 3
     CastCancel: true
     CastTime: 1000
     AfterCastActDelay: 500
     Duration1:
       - Level: 1
-        Time: 12000
+        Time: 3000
       - Level: 2
-        Time: 24000
+        Time: 3500
       - Level: 3
-        Time: 36000
+        Time: 4000
       - Level: 4
-        Time: 48000
+        Time: 4500
       - Level: 5
-        Time: 60000
-    Duration2: 20000
-    Cooldown: 30000
+        Time: 5000
+    Cooldown: 2500
     Requires:
       SpCost:
         - Level: 1
-          Amount: 40
+          Amount: 68
         - Level: 2
-          Amount: 44
+          Amount: 72
         - Level: 3
-          Amount: 48
+          Amount: 76
         - Level: 4
-          Amount: 52
+          Amount: 80
         - Level: 5
-          Amount: 56
+          Amount: 84
       ItemCost:
         - Item: Special_Alloy_Trap
           Amount: 2
     Unit:
       Id: Flametrap
-      Range: 1
-      Interval: 3000
+      Range:
+        - Level: 1
+          Size: 1
+        - Level: 2
+          Size: 1
+        - Level: 3
+          Size: 2
+        - Level: 4
+          Size: 2
+        - Level: 5
+          Size: 3
+      Interval: 500
       Target: Enemy
       Flag:
         NoOverlap: true

+ 9 - 9
src/map/battle.cpp

@@ -5563,27 +5563,27 @@ static int battle_calc_attack_skill_ratio(struct Damage* wd, struct block_list *
 			RE_LVL_DMOD(100);
 			break;
 		case WH_HAWKRUSH:
-			skillratio += -100 + 200 * skill_lv + 5 * sstatus->con;
+			skillratio += -100 + 500 * skill_lv + 5 * sstatus->con;
 			RE_LVL_DMOD(100);
 			break;
 		case WH_HAWKBOOMERANG:// Affected by trait stats??? CON for sure but the other one unknown. Likely POW. [Rytech]
-			skillratio += -100 + 500 * skill_lv + 10 * sstatus->pow + 10 * sstatus->con;
+			skillratio += -100 + 600 * skill_lv + 10 * sstatus->pow + 10 * sstatus->con;
 			if (tstatus->race == RC_BRUTE || tstatus->race == RC_FISH)
-				skillratio += 250 * skill_lv;
+				skillratio += skillratio * 50 / 100;
 			RE_LVL_DMOD(100);
 			break;
 		case WH_GALESTORM:
-			skillratio += -100 + 250 * skill_lv + 10 * sstatus->con;
+			skillratio += -100 + 950 * skill_lv + 10 * sstatus->con;
 			RE_LVL_DMOD(100);
 			if (sc && sc->getSCE(SC_CALAMITYGALE) && (tstatus->race == RC_BRUTE || tstatus->race == RC_FISH))
-					skillratio += skillratio * 50 / 100;
+				skillratio += skillratio * 50 / 100;
 			break;
 		case WH_CRESCIVE_BOLT:
-			skillratio += -100 + 300 * skill_lv + 5 * sstatus->con;
+			skillratio += -100 + 340 * skill_lv + 5 * sstatus->con;
 			RE_LVL_DMOD(100);
-			if (sc) { // At level 10 the SP usage of 100 increased by 20 on each count. So maybe damage increase is 20%??? [Rytech]
+			if (sc) {
 				if (sc->getSCE(SC_CRESCIVEBOLT))
-					skillratio += skillratio * (20 * sc->getSCE(SC_CRESCIVEBOLT)->val1) / 100;
+					skillratio += skillratio * (10 * sc->getSCE(SC_CRESCIVEBOLT)->val1) / 100;
 
 				if (sc->getSCE(SC_CALAMITYGALE)) {
 					skillratio += skillratio * 20 / 100;
@@ -5597,7 +5597,7 @@ static int battle_calc_attack_skill_ratio(struct Damage* wd, struct block_list *
 		case WH_SOLIDTRAP:
 		case WH_SWIFTTRAP:
 		case WH_FLAMETRAP:
-			skillratio += -100 + 250 * skill_lv + 5 * sstatus->con;
+			skillratio += -100 + 850 * skill_lv + 5 * sstatus->con;
 			RE_LVL_DMOD(100);
 			skillratio += skillratio * (20 * (sd ? pc_checkskill(sd, WH_ADVANCED_TRAP) : 5)) / 100;
 			break;

+ 7 - 15
src/map/skill.cpp

@@ -2179,18 +2179,6 @@ int skill_additional_effect( struct block_list* src, struct block_list *bl, uint
 	case ABC_CHAIN_REACTION_SHOT:
 		skill_castend_damage_id(src, bl, ABC_CHAIN_REACTION_SHOT_ATK, skill_lv, tick, SD_LEVEL);
 		break;
-	case WH_DEEPBLINDTRAP:// Need official success chances for all 4 Windhawk traps.
-		sc_start(src, bl, SC_HANDICAPSTATE_DEEPBLIND, 50, skill_lv, skill_get_time2(skill_id, skill_lv));
-		break;
-	case WH_SOLIDTRAP:
-		sc_start(src, bl, SC_HANDICAPSTATE_CRYSTALLIZATION, 50, skill_lv, skill_get_time2(skill_id, skill_lv));
-		break;
-	case WH_SWIFTTRAP:
-		sc_start(src, bl, SC_HANDICAPSTATE_LIGHTNINGSTRIKE, 50, skill_lv, skill_get_time2(skill_id, skill_lv));
-		break;
-	case WH_FLAMETRAP:
-		sc_start(src, bl, SC_HANDICAPSTATE_CONFLAGRATION, 50, skill_lv, skill_get_time2(skill_id, skill_lv));
-		break;
 	case TR_ROSEBLOSSOM:// Rose blossom seed can only bloom if the target is hit.
 		sc_start4(src, bl, SC_ROSEBLOSSOM, 100, skill_lv, TR_ROSEBLOSSOM_ATK, src->id, 0, skill_get_time(skill_id, skill_lv));
 	case WM_METALICSOUND:
@@ -12973,7 +12961,6 @@ TIMER_FUNC(skill_castend_id){
 	map_session_data *sd;
 	struct mob_data *md;
 	struct unit_data *ud;
-	status_change *sc = NULL;
 	int flag = 0;
 
 	src = map_id2bl(id);
@@ -12992,6 +12979,7 @@ TIMER_FUNC(skill_castend_id){
 
 	sd = BL_CAST(BL_PC,  src);
 	md = BL_CAST(BL_MOB, src);
+	status_change *sc = status_get_sc(src);
 
 	if( src->prev == NULL ) {
 		ud->skilltimer = INVALID_TIMER;
@@ -13155,6 +13143,11 @@ TIMER_FUNC(skill_castend_id){
 								sd->skill_id_old = ud->skill_id; // Prevents AP bonus on non Retro Spection use.
 							}
 							break;
+						case WH_CRESCIVE_BOLT:
+							if (sc && sc->getSCE(SC_CRESCIVEBOLT) && sc->getSCE(SC_CRESCIVEBOLT)->val1 >= 3) {
+								add_ap += 2;
+							}
+							break;
 					}
 
 					status_heal(&sd->bl, 0, 0, add_ap, 0);
@@ -13204,7 +13197,7 @@ TIMER_FUNC(skill_castend_id){
 				else
 					type = SC_STRIPSHIELD;
 
-				if ((sc = status_get_sc(src)) && sc->getSCE(type)) {
+				if (sc && sc->getSCE(type)) {
 					const struct TimerData* timer = get_timer(sc->getSCE(type)->timer);
 
 					if (timer && timer->func == status_change_timer && DIFF_TICK(timer->tick, gettick() + skill_get_time(ud->skill_id, ud->skill_lv)) > 0)
@@ -13233,7 +13226,6 @@ TIMER_FUNC(skill_castend_id){
 			sd->skill_keep_using.tid = add_timer( sd->ud.canact_tick + 100, skill_keep_using, sd->bl.id, 0 );
 		}
 
-		sc = status_get_sc(src);
 		if(sc && sc->count) {
 			if (ud->skill_id != RA_CAMOUFLAGE)
 				status_change_end(src, SC_CAMOUFLAGE); // Applies to the first skill if active