Fixed SC_UNLIMIT & SC_CLOAKINGEXCEED effect. (thank Akinari and Akuma)
Signed-off-by: Cahyadi Ramadhan Togihon <house.bad@gmail.com>
This commit is contained in:
parent
2e21c39c9b
commit
c382dad802
@ -1075,22 +1075,16 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam
|
||||
//Reduction: 6% + 6% every 20%
|
||||
DAMAGE_SUBRATE(6 * (1+per))
|
||||
}
|
||||
if(sc->data[SC_GRANITIC_ARMOR]){
|
||||
if(sc->data[SC_GRANITIC_ARMOR])
|
||||
DAMAGE_SUBRATE(sc->data[SC_GRANITIC_ARMOR]->val2)
|
||||
}
|
||||
if(sc->data[SC_PAIN_KILLER]){
|
||||
damage -= sc->data[SC_PAIN_KILLER]->val3;
|
||||
damage = max(1,damage);
|
||||
}
|
||||
if( sc->data[SC_DARKCROW] && ((flag&(BF_WEAPON|BF_SHORT))==(BF_WEAPON|BF_SHORT)) ) {
|
||||
DAMAGE_ADDRATE(30 * sc->data[SC_DARKCROW]->val1);
|
||||
}
|
||||
if( sc->data[SC_UNLIMIT] && (flag&(BF_WEAPON|BF_SHORT))==(BF_WEAPON|BF_LONG) ) {
|
||||
DAMAGE_ADDRATE(50 * sc->data[SC_UNLIMIT]->val1);
|
||||
}
|
||||
if((sce=sc->data[SC_MAGMA_FLOW]) && (rnd()%100 <= sce->val2) ){
|
||||
if( sc->data[SC_DARKCROW] && ((flag&(BF_WEAPON|BF_SHORT))==(BF_WEAPON|BF_SHORT)) )
|
||||
DAMAGE_ADDRATE(sc->data[SC_DARKCROW]->val2);
|
||||
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]) ) {
|
||||
sce->val2 -= (int)cap_value(damage,INT_MIN,INT_MAX);;
|
||||
@ -1185,7 +1179,7 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
} //End of target SC_ check
|
||||
|
||||
//SC effects from caster side.
|
||||
sc = status_get_sc(src);
|
||||
@ -1224,7 +1218,9 @@ int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Dam
|
||||
TBL_HOM *hd = BL_CAST(BL_HOM,src); //when attacking
|
||||
if (hd && (rnd()%100<50) ) hom_addspiritball(hd, 10); // According to WarpPortal, this is a flat 50% chance
|
||||
}
|
||||
}
|
||||
if( sc->data[SC_UNLIMIT] && (flag&(BF_WEAPON|BF_LONG))==(BF_WEAPON|BF_LONG) )
|
||||
DAMAGE_ADDRATE(sc->data[SC_UNLIMIT]->val2);
|
||||
} //End of caster SC_ check
|
||||
|
||||
//PK damage rates
|
||||
if (battle_config.pk_mode && sd && bl->type == BL_PC && damage && map[bl->m].flag.pvp) {
|
||||
|
@ -8775,8 +8775,8 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
|
||||
tick_time = 3000; // [GodLesZ] tick time
|
||||
break;
|
||||
case SC_CLOAKINGEXCEED:
|
||||
val2 = ( val1 + 1 ) / 2; // Hits
|
||||
val3 = 90 + val1 * 10; // Walk speed
|
||||
val2 = (val1 + 1) / 2; // Hits
|
||||
val3 = (val1 - 1) * 10; // Walk speed
|
||||
if (bl->type == BL_PC)
|
||||
val4 |= battle_config.pc_cloak_check_type&7;
|
||||
else
|
||||
@ -9276,6 +9276,12 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
|
||||
case SC_FLASHCOMBO:
|
||||
val2 = (20 * val1) + 20; // atk bonus
|
||||
break;
|
||||
case SC_DARKCROW:
|
||||
val2 = 30 * val1;
|
||||
break;
|
||||
case SC_UNLIMIT:
|
||||
val2 = 50 * val1;
|
||||
break;
|
||||
case SC_MONSTER_TRANSFORM:
|
||||
if( !mobdb_checkid(val1) )
|
||||
val1 = 1002; // Default poring
|
||||
|
Loading…
x
Reference in New Issue
Block a user