• 0
Lord Ganja

CAP asura strike maximum output damage?

Question

Is there anyway to cap/limit asura strike maximum output damage?

since my server is running on a high rate. the max hp is 1m but asura strike is way too overpowered

and can reach damage more than 1m.

 

I tried reducing its damage on skill_damage_db but it's not enough for me.

 

So I'd like to know if there's a way to CAP its damage, NOT REDUCE it.

 

Thanks in advance!

Share this post


Link to post
Share on other sites

6 answers to this question

Recommended Posts

  • 0

search for function in battle.c

int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Damage *d,int64 damage,uint16 skill_id,uint16 skill_lv)

add

	if (skill_id == MO_EXTREMITYFIST )
		damage = min(damage,500000);

That way, it will be capped to 500000 damage.

  • Upvote 1

Share this post


Link to post
Share on other sites
  • 0

The damage of the skill is set on the formulas on src/map/battle.c here:

case MO_EXTREMITYFIST:
	skillratio += 100 * (7 + sstatus->sp / 10);
	skillratio = min(500000,skillratio); //We stop at roughly 50k SP for overflow protection
	break;

And here:

case MO_EXTREMITYFIST:
	atk = 250 + 150 * skill_lv;
	break;

Share this post


Link to post
Share on other sites
  • 0

 

The damage of the skill is set on the formulas on src/map/battle.c here:

case MO_EXTREMITYFIST:
	skillratio += 100 * (7 + sstatus->sp / 10);
	skillratio = min(500000,skillratio); //We stop at roughly 50k SP for overflow protection
	break;

And here:

case MO_EXTREMITYFIST:
	atk = 250 + 150 * skill_lv;
	break;

Do you know how can I cap it? So if the damage is more than 900k it will be capped on and return the damage as 900k only.

Share this post


Link to post
Share on other sites
  • 0

Do the math...

100 * (7 + SP/10)

It is actually capped on 500000 SP, what means:

100 * (7 + 500000/10)
100 * (7 + 50000)
100 * 50007
5000700 + 250 + (150 * SkillLevel)
5000700 + 1000
5001000

Max Damage is currently 5.001.000, without counting card modifiers and such things.
So, if we change the cap of 500.000 SP to 50.000 for example:

100 * (7 + 50000/10)
100 * (7 + 5000)
100 * 5007
500700

500.700 is our new max damage.
I don't know if it still count Card Modifiers, but I guess you can test it.

Just change:

skillratio = min(500000,skillratio);

To:

skillratio = min(50000,skillratio);

Share this post


Link to post
Share on other sites
  • 0

 

Do the math...

100 * (7 + SP/10)

It is actually capped on 500000 SP, what means:

100 * (7 + 500000/10)
100 * (7 + 50000)
100 * 50007
5000700 + 250 + (150 * SkillLevel)
5000700 + 1000
5001000

Max Damage is currently 5.001.000, without counting card modifiers and such things.

So, if we change the cap of 500.000 SP to 50.000 for example:

100 * (7 + 50000/10)
100 * (7 + 5000)
100 * 5007
500700

500.700 is our new max damage.

I don't know if it still count Card Modifiers, but I guess you can test it.

Just change:

skillratio = min(500000,skillratio);

To:

skillratio = min(50000,skillratio);

I think the card modifiers still counts after modifying 500000. :(

I just tried it and the asura still do more than 2m damage.

So there's no other way to fix the maximum damage that asura can do? 

Share this post


Link to post
Share on other sites
  • 0

search for function in battle.c

int64 battle_calc_damage(struct block_list *src,struct block_list *bl,struct Damage *d,int64 damage,uint16 skill_id,uint16 skill_lv)

add

	if (skill_id == MO_EXTREMITYFIST )
		damage = min(damage,500000);

That way, it will be capped to 500000 damage.

Thanks for this. anyway should I put it on the bottom part of  int64 battle_calc_damage ?

					element = sstatus->rhw.ele;
				}
			} else if( element == -2 ) //Use enchantment's element
				element = status_get_attack_sc_element(src,status_get_sc(src));
			else if( element == -3 ) //Use random element
				element = rnd()%ELE_ALL;
			if( element == ELE_FIRE || element == ELE_WATER )
				pc_overheat(sd,element == ELE_FIRE ? 1 : -1);
		}
	}
+        if (skill_id == MO_EXTREMITYFIST )
+                damage = min(damage,500000);

	return damage;

EDIT:

I did put it there and it's working!! thanks man!

Edited by Lord Ganja

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.   Paste as plain text instead

  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...