I would like to know how to modify the formulas of the substats (atk, atk2, def, def2, mdef, mdef2, hit, flee) so that after level 175, stop evolving due to level and are influenced only by stat points.
I know the formula is in status.c, but I do not know how to modify it. I looked a lot, but could not.
I think something like a level limiter is missing for the formula.
Question
ViewtifulNinja
Hello masters
I would like to know how to modify the formulas of the substats (atk, atk2, def, def2, mdef, mdef2, hit, flee) so that after level 175, stop evolving due to level and are influenced only by stat points.
I know the formula is in status.c, but I do not know how to modify it. I looked a lot, but could not.
I think something like a level limiter is missing for the formula.
The code I found is the following:
#ifdef RENEWAL // Renewal formulas if (bl->type == BL_HOM) { // Def2 stat = status_get_homvit(bl) + status_get_homagi(bl) / 2; status->def2 = cap_value(stat, 0, SHRT_MAX); // Mdef2 stat = (status_get_homvit(bl) + status_get_homint(bl)) / 2; status->mdef2 = cap_value(stat, 0, SHRT_MAX); // Def stat = status->def; stat += status_get_homvit(bl) + level / 2; status->def = cap_value(stat, 0, SHRT_MAX); // Mdef stat = (int)(((float)status_get_homvit(bl) + level) / 4 + (float)status_get_homint(bl) / 2); status->mdef = cap_value(stat, 0, SHRT_MAX); // Hit stat = level + status->dex + 150; status->hit = cap_value(stat, 1, SHRT_MAX); // Flee stat = level + status_get_homagi(bl); status->flee = cap_value(stat, 1, SHRT_MAX); // Atk stat = (status_get_homstr(bl) + status_get_homdex(bl)) / 5; status->rhw.atk = cap_value(stat, 0, SHRT_MAX); // Atk2 stat = (status_get_homluk(bl) + status_get_homstr(bl) + status_get_homdex(bl)) / 3; status->rhw.atk2 = cap_value(stat, 0, SHRT_MAX); } else { // Hit stat = status->hit; stat += level + status->dex + (bl->type == BL_PC ? status->luk / 3 + 175 : 150); //base level + ( every 1 dex = +1 hit ) + (every 3 luk = +1 hit) + 175 status->hit = cap_value(stat, 1, SHRT_MAX); // Flee stat = status->flee; stat += level + status->agi + (bl->type == BL_MER ? 0 : bl->type == BL_PC ? status->luk / 5 : 0) + 100; //base level + ( every 1 agi = +1 flee ) + (every 5 luk = +1 flee) + 100 status->flee = cap_value(stat, 1, SHRT_MAX); // Def2 if (bl->type == BL_MER) stat = (int)(status->vit + ((float)level / 10) + ((float)status->vit / 5)); else { stat = status->def2; stat += (int)(((float)level + status->vit) / 2 + (bl->type == BL_PC ? ((float)status->agi / 5) : 0)); //base level + (every 2 vit = +1 def) + (every 5 agi = +1 def) } status->def2 = cap_value(stat, 0, SHRT_MAX); // Mdef2 if (bl->type == BL_MER) stat = (int)(((float)level / 10) + ((float)status->int_ / 5)); else { stat = status->mdef2; stat += (int)(bl->type == BL_PC ? (status->int_ + ((float)level / 4) + ((float)(status->dex + status->vit) / 5)) : ((float)(status->int_ + level) / 4)); //(every 4 base level = +1 mdef) + (every 1 int = +1 mdef) + (every 5 dex = +1 mdef) + (every 5 vit = +1 mdef) } status->mdef2 = cap_value(stat, 0, SHRT_MAX); } // MAtk status->matk_min = status->matk_max = status_base_matk(bl, status, level); ///! TODO: Confirm these RENEWAL calculations. Currently is using previous calculation before 083cf5d9 (issue: #321) and until re/mob_db.txt is updated. //switch (bl->type) { // case BL_MOB: // status->matk_min += 70 * ((TBL_MOB*)bl)->status.rhw.atk2 / 100; // status->matk_max += 130 * ((TBL_MOB*)bl)->status.rhw.atk2 / 100; // break; // case BL_MER: // status->matk_min += 70 * ((TBL_MER*)bl)->battle_status.rhw.atk2 / 100; // status->matk_max += 130 * ((TBL_MER*)bl)->battle_status.rhw.atk2 / 100; // break; //} #else // Matk status->matk_min = status_base_matk_min(status); status->matk_max = status_base_matk_max(status); // Hit stat = status->hit; stat += level + status->dex; status->hit = cap_value(stat, 1, SHRT_MAX); // Flee stat = status->flee; stat += level + status->agi; status->flee = cap_value(stat, 1, SHRT_MAX); // Def2 stat = status->def2; stat += status->vit; status->def2 = cap_value(stat, 0, SHRT_MAX); // Mdef2 stat = status->mdef2; stat += status->int_ + (status->vit>>1); status->mdef2 = cap_value(stat, 0, SHRT_MAX); #endif
Can someone help me?
Thanks.
Link to comment
Share on other sites
2 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.