Jump to content
  • 0
Dragonis1701

Removing player animations from skills but keeping visual animation

Question

I'm trying to figure out how to remove the player doing their standard skill animation from, for example, Magnificat but maintaining the visual effect of Magnificat when it affects a player. Is that possible? I have added if (skill_id == PR_MAGNIFICAT) return fail; under clif_skill_nodamage but that takes away both the player animation and the visual animation from Magnificat. Is there a way to keep one but not the other?

 

Edit: To add a bit more clarity, I want to know if it's possible to have magnificat's animations work like blessing, where it shows the blessing on the player but does not trigger an animation that stops movement or attacking.

Edited by Dragonis1701

Share this post


Link to post
Share on other sites

12 answers to this question

Recommended Posts

  • 1
On 10/30/2019 at 4:37 PM, Dragonis1701 said:

I have added if (skill_id == PR_MAGNIFICAT) return fail; under clif_skill_nodamage but that takes away both the player animation and the visual animation from Magnificat. Is there a way to keep one but not the other?

 

Open ../src/map/clif.cpp and in the function clif_skill_nodamage after:

	nullpo_ret(dst);

add:

	if (skill_id == PR_MAGNIFICAT) {
		clif_specialeffect(dst, EF_MAGNIFICAT, AREA);
		return fail;
	}

 

Edited by Functor
  • Upvote 1

Share this post


Link to post
Share on other sites
  • 0

Update: Took away that code from clif.c and instead changed the clif_skill_nodamage's first "bl" in magnificat and other like buffs skills that target a party member, to src in skill.c. Now it shows the buff animation over the buffer but not over the party member. It's strange but Assumptio uses the same method but Assumptio's animation plays over the targeted player. Why is that?

Edited by Dragonis1701

Share this post


Link to post
Share on other sites
  • 0
2 hours ago, Functor said:

 

Open ../src/map/clif.cpp and in the function clif_skill_nodamage after:

	nullpo_ret(dst);

add:

	if (skill_id == PR_MAGNIFICAT) {
		clif_specialeffect(dst, EF_MAGNIFICAT, AREA);
		return fail;
	}

 

Thank you, this is what I needed. I kept the changes I made to skill.c because I still want the caster to have the animation, just not the party members/target. I added:

if (skill_id == PR_MAGNIFICAT) {
        clif_specialeffect(dst, 76, AREA);
    }


for each skill that caused an animation in clif.c under clif_skill_nodamage. It all works great and looks good in-game but, of course, there's one oddity; Kyrie Eleison. Now the target is no longer hit with an animation but now the priest that casts Kyrie Eleison also has the Kyrie Eleison effect player over their head, as well as their target. How do I fix that?

Share this post


Link to post
Share on other sites
  • 0
14 minutes ago, Dragonis1701 said:

but, of course, there's one oddity; Kyrie Eleison. Now the target is no longer hit with an animation but now the priest that casts Kyrie Eleison also has the Kyrie Eleison effect player over their head, as well as their target. How do I fix that?

At first, you should show me your modification. I can say nothing about modification which I don't see.

Share this post


Link to post
Share on other sites
  • 0
12 hours ago, Functor said:

At first, you should show me your modification. I can say nothing about modification which I don't see.

Sorry.

Skill.c:

case PR_KYRIE:
	case MER_KYRIE:
	case SU_TUNAPARTY:
	case SU_GROOMING:
	case SU_CHATTERING:
		clif_skill_nodamage(bl,bl,skill_id,skill_lv,
			sc_start(src,bl,type,100,skill_lv,skill_get_time(skill_id,skill_lv)));
		break;
case AL_ANGELUS:
	case PR_MAGNIFICAT:
	case PR_GLORIA:
	case SN_WINDWALK:
	case CASH_BLESSING:
	case CASH_INCAGI:
	case CASH_ASSUMPTIO:
	case WM_FRIGG_SONG:
		if( sd == NULL || sd->status.party_id == 0 || (flag & 1) )
			clif_skill_nodamage(src, bl, skill_id, skill_lv, sc_start(src,bl,type,100,skill_lv,skill_get_time(skill_id,skill_lv)));
		else if( sd )
			party_foreachsamemap(skill_area_sub, sd, skill_get_splash(skill_id, skill_lv), src, skill_id, skill_lv, tick, flag|BCT_PARTY|1, skill_castend_nodamage_id);
		break;
case BS_ADRENALINE:
	case BS_ADRENALINE2:
	case BS_WEAPONPERFECT:
	case BS_OVERTHRUST:
		if (sd == NULL || sd->status.party_id == 0 || (flag & 1)) {
			int weapontype = skill_get_weapontype(skill_id);
			if (!weapontype || !dstsd || pc_check_weapontype(dstsd, weapontype)) {
				clif_skill_nodamage(src, bl, skill_id, skill_lv,
					sc_start2(src, bl, type, 100, skill_lv, (src == bl) ? 1 : 0, skill_get_time(skill_id, skill_lv)));
			}
		} else if (sd) {
			party_foreachsamemap(skill_area_sub,
				sd,skill_get_splash(skill_id, skill_lv),
				src,skill_id,skill_lv,tick, flag|BCT_PARTY|1,
				skill_castend_nodamage_id);
		}
		break;

I changed the first "bl" after clif_skill_nodamage to src, so that players in the same party that are affected by these skills no longer do an animation for receiving these party buffs. This works fine but Kyrie is different, being a cast on target skill vs. a party one. This makes it so that Kyrie will always give a visual animation to the priest, as well, if I want to avoid the cast animation on the targeted player.

 

Clif.c
 

if (skill_id == PR_MAGNIFICAT) {
		clif_specialeffect(dst, 76, AREA);
	}
	if (skill_id == AL_ANGELUS) {
		clif_specialeffect(dst, 41, AREA);
	}
	if (skill_id == PR_GLORIA) {
		clif_specialeffect(dst, 75, AREA);
	}
	if (skill_id == SN_WINDWALK) {
		clif_specialeffect(dst, 389, AREA);
	}
	if (skill_id == BS_ADRENALINE) {
		clif_specialeffect(dst, 98, AREA);
	}
	if (skill_id == BS_ADRENALINE2) {
		clif_specialeffect(dst, 98, AREA);
	}
	if (skill_id == BS_WEAPONPERFECT) {
		clif_specialeffect(dst, 103, AREA);
	}
	if (skill_id == BS_OVERTHRUST) {
		clif_specialeffect(dst, 128, AREA);
	}
	if (skill_id == PR_KYRIE) {
		clif_specialeffect(dst, 112, AREA);
	}

If I try to use clif.c to return fail to skip the animation, it looks weird on the player's screen and also takes away the cast animation from the priest, which I would prefer to keep. It seems I can't really take away the visual animation from over the priest's head without having more knowledge on how the entire thing works.

Share this post


Link to post
Share on other sites
  • 0

I added it to the "../src/map/clif.cpp" function "clif_skill_nodamage":

	if (skill_id == PR_KYRIE) {
		clif_specialeffect(dst, 112, AREA);
		return fail;
	}

The result: https://i.imgur.com/glCSiLi.gifv

On the screen of another character, the situation is the same. So, what is wrong?

Edited by Functor

Share this post


Link to post
Share on other sites
  • 0
17 hours ago, Functor said:

I added it to the "../src/map/clif.cpp" function "clif_skill_nodamage":

	if (skill_id == PR_KYRIE) {
		clif_specialeffect(dst, 112, AREA);
		return fail;
	}

The result: https://i.imgur.com/glCSiLi.gifv

On the screen of another character, the situation is the same. So, what is wrong?

I would like the priest to have a successful cast animation. 

Share this post


Link to post
Share on other sites
  • 0

High Priest doesn't have it by default for "Kyrie Eleison".

Server without my modification in "clif_skill_nodamage": https://i.imgur.com/k1IypvL.gifv

Server with my modification in "clif_skill_nodamage": https://i.imgur.com/glCSiLi.gifv

So, my modification doesn't change anything on High Priest.

Edited by Functor

Share this post


Link to post
Share on other sites
  • 0
15 hours ago, Functor said:

High Priest doesn't have it by default for "Kyrie Eleison".

Server without my modification in "clif_skill_nodamage": https://i.imgur.com/k1IypvL.gifv

Server with my modification in "clif_skill_nodamage": https://i.imgur.com/glCSiLi.gifv

So, my modification doesn't change anything on High Priest.

Oh, I'm sorry. For some reason I really believed that Kyrie Eleison had a successful cast animation for the priest for some reason. Thank you for all your help~ 😃

  • Upvote 1

Share this post


Link to post
Share on other sites
  • 0
On 11/1/2019 at 7:21 PM, Functor said:

I added it to the "../src/map/clif.cpp" function "clif_skill_nodamage":

	if (skill_id == PR_KYRIE) {
		clif_specialeffect(dst, 112, AREA);
		return fail;
	}

The result: https://i.imgur.com/glCSiLi.gifv

On the screen of another character, the situation is the same. So, what is wrong?

@Functor How could add something like this but for self skill like a parry that just show Name and Effect 
Thanks in Advance

Share this post


Link to post
Share on other sites
  • 0

how to do this for skills like Sonic Blow and Cross Impact? to remove or shorten the animations

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.


×
×
  • Create New...

Important Information

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