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%
|
//Reduction: 6% + 6% every 20%
|
||||||
DAMAGE_SUBRATE(6 * (1+per))
|
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)
|
DAMAGE_SUBRATE(sc->data[SC_GRANITIC_ARMOR]->val2)
|
||||||
}
|
|
||||||
if(sc->data[SC_PAIN_KILLER]){
|
if(sc->data[SC_PAIN_KILLER]){
|
||||||
damage -= sc->data[SC_PAIN_KILLER]->val3;
|
damage -= sc->data[SC_PAIN_KILLER]->val3;
|
||||||
damage = max(1,damage);
|
damage = max(1,damage);
|
||||||
}
|
}
|
||||||
if( sc->data[SC_DARKCROW] && ((flag&(BF_WEAPON|BF_SHORT))==(BF_WEAPON|BF_SHORT)) ) {
|
if( sc->data[SC_DARKCROW] && ((flag&(BF_WEAPON|BF_SHORT))==(BF_WEAPON|BF_SHORT)) )
|
||||||
DAMAGE_ADDRATE(30 * sc->data[SC_DARKCROW]->val1);
|
DAMAGE_ADDRATE(sc->data[SC_DARKCROW]->val2);
|
||||||
}
|
if( (sce=sc->data[SC_MAGMA_FLOW]) && (rnd()%100 <= sce->val2) )
|
||||||
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) ){
|
|
||||||
skill_castend_damage_id(bl,src,MH_MAGMA_FLOW,sce->val1,gettick(),0);
|
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 && ((flag&(BF_WEAPON|BF_SHORT))==(BF_WEAPON|BF_SHORT)) && (sce = sc->data[SC_STONEHARDSKIN]) ) {
|
||||||
sce->val2 -= (int)cap_value(damage,INT_MIN,INT_MAX);;
|
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 effects from caster side.
|
||||||
sc = status_get_sc(src);
|
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
|
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 (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
|
//PK damage rates
|
||||||
if (battle_config.pk_mode && sd && bl->type == BL_PC && damage && map[bl->m].flag.pvp) {
|
if (battle_config.pk_mode && sd && bl->type == BL_PC && damage && map[bl->m].flag.pvp) {
|
||||||
|
@ -8776,7 +8776,7 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
|
|||||||
break;
|
break;
|
||||||
case SC_CLOAKINGEXCEED:
|
case SC_CLOAKINGEXCEED:
|
||||||
val2 = (val1 + 1) / 2; // Hits
|
val2 = (val1 + 1) / 2; // Hits
|
||||||
val3 = 90 + val1 * 10; // Walk speed
|
val3 = (val1 - 1) * 10; // Walk speed
|
||||||
if (bl->type == BL_PC)
|
if (bl->type == BL_PC)
|
||||||
val4 |= battle_config.pc_cloak_check_type&7;
|
val4 |= battle_config.pc_cloak_check_type&7;
|
||||||
else
|
else
|
||||||
@ -9276,6 +9276,12 @@ int status_change_start(struct block_list* src, struct block_list* bl,enum sc_ty
|
|||||||
case SC_FLASHCOMBO:
|
case SC_FLASHCOMBO:
|
||||||
val2 = (20 * val1) + 20; // atk bonus
|
val2 = (20 * val1) + 20; // atk bonus
|
||||||
break;
|
break;
|
||||||
|
case SC_DARKCROW:
|
||||||
|
val2 = 30 * val1;
|
||||||
|
break;
|
||||||
|
case SC_UNLIMIT:
|
||||||
|
val2 = 50 * val1;
|
||||||
|
break;
|
||||||
case SC_MONSTER_TRANSFORM:
|
case SC_MONSTER_TRANSFORM:
|
||||||
if( !mobdb_checkid(val1) )
|
if( !mobdb_checkid(val1) )
|
||||||
val1 = 1002; // Default poring
|
val1 = 1002; // Default poring
|
||||||
|
Loading…
x
Reference in New Issue
Block a user