arthurcunha1991 0 Posted July 4, 2019 Could someone tell me the damage of the case CR_ACIDDEMONSTRATION? Quote Share this post Link to post Share on other sites
0 Waken 7 Posted July 4, 2019 case CR_ACIDDEMONSTRATION: #ifdef RENEWAL {// [malufett] int64 matk=0, atk; short tdef = status->get_total_def(target); short tmdef = status->get_total_mdef(target); int targetVit = min(120, status_get_vit(target)); short totaldef = (tmdef + tdef - ((uint64)(tmdef + tdef) >> 32)) >> 1; // FIXME: What's the >> 32 supposed to do here? tmdef and tdef are both 16-bit... matk = battle->calc_magic_attack(src, target, skill_id, skill_lv, mflag).damage; atk = battle->calc_base_damage(src, target, skill_id, skill_lv, nk, false, s_ele, ELE_NEUTRAL, EQI_HAND_R, (sc && sc->data[SC_MAXIMIZEPOWER]?1:0)|(sc && sc->data[SC_WEAPONPERFECT]?8:0), md.flag); md.damage = matk + atk; if( src->type == BL_MOB ){ totaldef = (tdef + tmdef) >> 1; md.damage = 7 * targetVit * skill_lv * (atk + matk) / 100; /* // Pending [malufett] if( unknown condition ){ md.damage = 7 * md.damage % 20; md.damage = 7 * md.damage / 20; }*/ }else{ float vitfactor = 0.0f, ftemp; if( (vitfactor=(status_get_vit(target)-120.0f)) > 0) vitfactor = (vitfactor * (matk + atk) / 10) / status_get_vit(target); ftemp = max(0, vitfactor) + (targetVit * (matk + atk)) / 10; md.damage = (int64)(ftemp * 70 * skill_lv / 100); if (target->type == BL_PC) md.damage >>= 1; } md.damage -= totaldef; if( tsc && tsc->data[SC_LEXAETERNA] ) { md.damage <<= 1; status_change_end(target, SC_LEXAETERNA, INVALID_TIMER); } } #else // updated the formula based on a Japanese formula found to be exact [Reddozen] if(tstatus->vit+sstatus->int_) //crash fix md.damage = (int)(7*tstatus->vit*sstatus->int_*sstatus->int_ / (10*(tstatus->vit+sstatus->int_))); else md.damage = 0; if (tsd) md.damage>>=1; #endif // Some monsters have totaldef higher than md.damage in some cases, leading to md.damage < 0 if( md.damage < 0 ) md.damage = 0; if( md.damage > INT_MAX>>1 ) //Overflow prevention, will anyone whine if I cap it to a few billion? //Not capped to INT_MAX to give some room for further damage increase. md.damage = INT_MAX>>1; break; In battle_calc_misc_attack (battle.c) 1 Vietlubu reacted to this Quote Share this post Link to post Share on other sites
0 Naruto 38 Posted July 4, 2019 lolol 1 Waken reacted to this Quote Share this post Link to post Share on other sites
0 arthurcunha1991 0 Posted July 8, 2019 Thank you already solved the problem! Quote Share this post Link to post Share on other sites
Could someone tell me the damage of the case CR_ACIDDEMONSTRATION?
Share this post
Link to post
Share on other sites