Jump to content
  • 0
Sign in to follow this  
Helena

How to nerf Acid Bomb/Demonstration?

Question

Hello.

 

A member of this forums helped me figure out a way to make magic stronger, but unfortunately it also affected the damage caused with Acid Demonstration... now that skill is way too imbalanced.

 

I know this is the block, but how can I make it weaker? I've messed with numbers but without any luck. Help would be nice. ^^;

 

 

#ifdef RENEWAL		{// [malufett]			int matk=0, atk;			short tdef = iStatus->get_total_def(target);			short tmdef =  iStatus->get_total_mdef(target);			int targetVit = min(120, status_get_vit(target));			short totaldef = (tmdef + tdef - ((uint64)(tmdef + tdef) >> 32)) >> 1;			 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 >>= 1;				if( unknown condition ){					md.damage = 7 * md.damage % 20;					md.damage = 7 * md.damage / 20;

Share this post


Link to post
Share on other sites

7 answers to this question

Recommended Posts

  • 0

as you said you make matk stronger then edit the matk part of the skills

matk = battle->calc_magic_attack(src, target, skill_id, skill_lv, mflag).damage;

to something like:

(reduce by 50%)

matk = battle->calc_magic_attack(src, target, skill_id, skill_lv, mflag).damage / 2;

(reduce by 75%)

matk = battle->calc_magic_attack(src, target, skill_id, skill_lv, mflag).damage * 75 / 100;

or something else..but take note the high int and vit you have and the low vit and int a target has, the more damage it can deal..

 

:meow:

Share this post


Link to post
Share on other sites
  • 0

 

md.damage = (int)(7*tstatus->vit*sstatus->int_*sstatus->int_ / (10*(tstatus->vit+sstatus->int_)));

Haven't tested it. so I am not sure :)

Share this post


Link to post
Share on other sites
  • 0

Thanks for the reply. With what line do I replace that?

 

this one?

 

				md.damage = 7 * targetVit * skill_lv * (atk + matk) / 100;

Share this post


Link to post
Share on other sites
  • 0

this is the whole block.

 

 

    case CR_ACIDDEMONSTRATION:#ifdef RENEWAL        {// [malufett]            int matk=0, atk;            short tdef = iStatus->get_total_def(target);            short tmdef =  iStatus->get_total_mdef(target);            int targetVit = min(120, status_get_vit(target));            short totaldef = (tmdef + tdef - ((uint64)(tmdef + tdef) >> 32)) >> 1;            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 >>= 1;                if( unknown condition ){                    md.damage = 7 * md.damage % 20;                    md.damage = 7 * md.damage / 20;                }*/            }else{                float vitfactor = 0.0f, temp;                                if( (vitfactor=(status_get_vit(target)-120.0f)) > 0)                    vitfactor = (vitfactor * (matk + atk) / 10) / status_get_vit(target);                temp = max(0, vitfactor) + (targetVit * (matk + atk)) / 10;                md.damage =  (int)(temp * 70 * skill_lv / 100);            }            md.damage -= totaldef;        }#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_))); // <-- here        else            md.damage = 0;        if (tsd) md.damage>>=1;#endif        if (md.damage < 0 || 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;

 

try to change this line:

 

 

md.damage = (int)(7*tstatus->vit*sstatus->int_*sstatus->int_ / (10*(tstatus->vit+sstatus->int_)));

Share this post


Link to post
Share on other sites
  • 0

anyway are you using renewal ?

 

@edit

 

try this

 

md.damage = (int)(7*tstatus->vit*sstatus->int_*sstatus->int_ / (10*(tstatus->vit+sstatus->int_))) / 2;
Edited by quesoph

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.