Explorar o código

Blacksmith skill update (fixes #912)
* Power-Thrust will no longer affects players that don't have a weapon equipped
* If weapon requirements on Adrenaline Rush or Power-Thrust are not met, the target will no longer display the buff animation
* Party members now only gain +5% ATK from Power-Thrust on all skill levels
* Hilt binding now increases the duration of Adrenaline Rush, Power-Thrust and Power Maximize for all party members as long as the caster has learned it

Playtester %!s(int64=9) %!d(string=hai) anos
pai
achega
e12fb643de
Modificáronse 4 ficheiros con 19 adicións e 16 borrados
  1. 1 1
      db/pre-re/skill_require_db.txt
  2. 1 1
      db/re/skill_require_db.txt
  3. 5 2
      src/map/skill.c
  4. 12 12
      src/map/status.c

+ 1 - 1
db/pre-re/skill_require_db.txt

@@ -139,7 +139,7 @@
 110,0,0,10,0,0,0,1:2:6:7:8,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0						//BS_HAMMERFALL
 111,0,0,20:23:26:29:32,0,0,0,6:7:8,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0				//BS_ADRENALINE
 112,0,0,18:16:14:12:10,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0					//BS_WEAPONPERFECT
-113,0,0,18:16:14:12:10,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0					//BS_OVERTHRUST
+113,0,0,18:16:14:12:10,0,0,0,1:2:3:4:5:6:7:8:9:10:11:12:13:14:15:16:17:18:19:20:21:22:23,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//BS_OVERTHRUST
 114,0,0,10,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0								//BS_MAXIMIZE
 
 //****

+ 1 - 1
db/re/skill_require_db.txt

@@ -139,7 +139,7 @@
 110,0,0,10,0,0,0,1:2:6:7:8,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0						//BS_HAMMERFALL
 111,0,0,20:23:26:29:32,0,0,0,6:7:8,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0				//BS_ADRENALINE
 112,0,0,18:16:14:12:10,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0					//BS_WEAPONPERFECT
-113,0,0,18:16:14:12:10,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0					//BS_OVERTHRUST
+113,0,0,18:16:14:12:10,0,0,0,1:2:3:4:5:6:7:8:9:10:11:12:13:14:15:16:17:18:19:20:21:22:23,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0	//BS_OVERTHRUST
 114,0,0,10,0,0,0,99,0,0,none,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0								//BS_MAXIMIZE
 
 //****

+ 5 - 2
src/map/skill.c

@@ -6806,8 +6806,11 @@ int skill_castend_nodamage_id (struct block_list *src, struct block_list *bl, ui
 	case BS_WEAPONPERFECT:
 	case BS_OVERTHRUST:
 		if (sd == NULL || sd->status.party_id == 0 || (flag & 1)) {
-			clif_skill_nodamage(bl,bl,skill_id,skill_lv,
-				sc_start2(src,bl,type,100,skill_lv,(src == bl)? 1:0,skill_get_time(skill_id,skill_lv)));
+			int weapontype = skill_get_weapontype(skill_id);
+			if (!weapontype || pc_check_weapontype(dstsd, weapontype)) {
+				clif_skill_nodamage(bl, bl, skill_id, skill_lv,
+					sc_start2(src, bl, type, 100, skill_lv, (src == bl) ? 1 : 0, skill_get_time(skill_id, skill_lv)));
+			}
 		} else if (sd) {
 			party_foreachsamemap(skill_area_sub,
 				sd,skill_get_splash(skill_id, skill_lv),

+ 12 - 12
src/map/status.c

@@ -7902,8 +7902,6 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
 			return 0; // Overthrust and Overthrust Max cannot be used on Mado Gear [Ind]
 	break;
 	case SC_ADRENALINE:
-		if(sd && !pc_check_weapontype(sd,skill_get_weapontype(BS_ADRENALINE)))
-			return 0;
 		if (sc->data[SC_QUAGMIRE] ||
 			sc->data[SC_DECREASEAGI] ||
 			sc->data[SC_ADORAMUS] ||
@@ -7912,8 +7910,6 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
 			return 0;
 	break;
 	case SC_ADRENALINE2:
-		if(sd && !pc_check_weapontype(sd,skill_get_weapontype(BS_ADRENALINE2)))
-			return 0;
 		if (sc->data[SC_QUAGMIRE] ||
 			sc->data[SC_DECREASEAGI] ||
 			sc->data[SC_ADORAMUS]
@@ -9304,17 +9300,21 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
 			val2 = 20*val1; // Power increase
 			break;
 		case SC_OVERTHRUST:
-			// val2 holds if it was casted on self, or is bonus received from others
-			val3 = 5*val1; // Power increase
-			if(sd && pc_checkskill(sd,BS_HILTBINDING)>0)
-				tick += tick / 10;
-			break;
 		case SC_ADRENALINE2:
 		case SC_ADRENALINE:
-			val3 = (val2) ? 300 : 200; // aspd increase
 		case SC_WEAPONPERFECTION:
-			if(sd && pc_checkskill(sd,BS_HILTBINDING)>0)
-				tick += tick / 10;
+			{
+				struct map_session_data * s_sd = BL_CAST(BL_PC, src);
+				if (type == SC_OVERTHRUST) {
+					// val2 holds if it was casted on self, or is bonus received from others
+					val3 = (val2) ? 5 * val1 : 5; // Power increase
+				}
+				else if (type == SC_ADRENALINE2 || type == SC_ADRENALINE) {
+					val3 = (val2) ? 300 : 200; // Aspd increase
+				}
+				if (s_sd && pc_checkskill(s_sd, BS_HILTBINDING) > 0)
+					tick += tick / 10; //If caster has Hilt Binding, duration increases by 10%
+			}
 			break;
 		case SC_CONCENTRATION:
 			val2 = 5*val1; // Batk/Watk Increase