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
  • 0

Yes, I'm using renewal. I tried your code and recompiled but unfortunately no change yet... any other ideas? :(

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

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