Small cleanup of Rune Knight Runes (#2596)

* Small cleanup of Rune Knight Runes
* Stone Hard Skin weapon break chance only applies to physical melee attacks.
* Giant Growth's physical bonus damage only applies to Rune Knights.
* Corrected weapon break chance to only happen when damage is increased for Giant Growth.
Thanks to @Rytech2 and @Jeybla!
This commit is contained in:
Aleos 2017-11-13 09:59:24 -05:00 committed by GitHub
parent cd08915530
commit da0883572d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 5 additions and 6 deletions

View File

@ -1371,11 +1371,11 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam
if( (sce=sc->data[SC_MAGMA_FLOW]) && (rnd()%100 <= sce->val2) )
skill_castend_damage_id(bl,src,MH_MAGMA_FLOW,sce->val1,gettick(),0);
if( damage > 0 && ((flag&(BF_WEAPON|BF_SHORT)) == (BF_WEAPON|BF_SHORT)) && (sce = sc->data[SC_STONEHARDSKIN]) ) {
if( damage > 0 && (sce = sc->data[SC_STONEHARDSKIN]) ) {
sce->val2 -= (int)cap_value(damage,INT_MIN,INT_MAX);
if( src->type == BL_MOB ) //using explicit call instead break_equip for duration
sc_start(src,src, SC_STRIPWEAPON, 30, 0, skill_get_time2(RK_STONEHARDSKIN, sce->val1));
else
else if (flag&(BF_WEAPON|BF_SHORT))
skill_break_equip(src,src, EQP_WEAPON, 3000, BCT_SELF);
if( sce->val2 <= 0 )
status_change_end(bl, SC_STONEHARDSKIN, INVALID_TIMER);
@ -3793,7 +3793,7 @@ static int battle_calc_attack_skill_ratio(struct Damage wd, struct block_list *s
skillratio += 100 * skill_lv;
break;
case RK_STORMBLAST:
skillratio += -100 + (((sd) ? pc_checkskill(sd,RK_RUNEMASTERY) : 0) + (status_get_str(src) / 8)) * 100; // ATK = [{Rune Mastery Skill Level + (Caster's STR / 8)} x 100] %
skillratio += -100 + (((sd) ? pc_checkskill(sd,RK_RUNEMASTERY) : 0) + status_get_str(src) / 8) * 100; // ATK = [{Rune Mastery Skill Level + (Caster's STR / 8)} x 100] %
break;
case RK_PHANTOMTHRUST: // ATK = [{(Skill Level x 50) + (Spear Master Level x 10)} x Caster's Base Level / 150] %
skillratio += -100 + 50 * skill_lv + 10 * (sd ? pc_checkskill(sd,KN_SPEARMASTERY) : 5);
@ -7264,7 +7264,8 @@ enum damage_lv battle_weapon_attack(struct block_list* src, struct block_list* t
}
if (sc->data[SC_GIANTGROWTH] && (wd.flag&BF_SHORT) && rnd()%100 < sc->data[SC_GIANTGROWTH]->val2 && !is_infinite_defense(target, wd.flag) && !vanish_damage) {
wd.damage <<= 1; // Double Damage
if (!sc->data[SC_CRUSHSTRIKE]) { // Increase damage again if Crush Strike is not active
skill_break_equip(src, src, EQP_WEAPON, 10, BCT_SELF); // Break chance happens on successful damage increase
if (!sc->data[SC_CRUSHSTRIKE] && (sd->class_&MAPID_THIRDMASK) == MAPID_RUNE_KNIGHT) { // Increase damage again if Crush Strike is not active
if (map_flag_vs(src->m)) // Only half of the 2.5x increase on versus-type maps
wd.damage += wd.damage * 125 / 100;
else

View File

@ -1963,8 +1963,6 @@ int skill_additional_effect(struct block_list* src, struct block_list *bl, uint1
rate = battle_config.equip_natural_break_rate;
if( sc )
{
if(sc->data[SC_GIANTGROWTH])
rate += 10;
if(sc->data[SC_OVERTHRUST])
rate += 10;
if(sc->data[SC_MAXOVERTHRUST])