Jump to content
  • 0

Custom Skills Special Effects


Zeiyan

Question


  • Group:  Members
  • Topic Count:  49
  • Topics Per Day:  0.01
  • Content Count:  275
  • Reputation:   23
  • Joined:  01/06/13
  • Last Seen:  

I'm configuring my own custom skills mostly based on some already existing skills. My only issue is how do I set which special effects I can use. Please keep in mind the following things that I have already done.

1. Special effects for self buffs, I've used the clif_specialeffect function. The only downside is when the duration of the skill has expired, the effect remains (this applies to effects that lasts i.e. assumptio, energy coat etc.) and the effect goes away if you refresh or change load into a new map. (normal buffs like LK_CONCENTRATION the effects stay whether you refresh/change maps) For normal 1 time effects no issues since they appear when the skill is cast then goes away like it should be. Question for #1 is how do I make the effect last and stay at the same time as the duration?

2. For offensive skills. I have one skill that uses the effect of RK_SONICWAVE. Again i'm using the same function of clif_specialeffect. The only problem is the direction of the "wave" is always north. Question #2: Is there a way to control the direction of the effects?

3. I would prefer doing this client side but for the life of me I can not find the relevant files for the client side effects. the skilleffectinfo folder is not much help since it does not contain all the effects in the const.txt.

 

Any way to do the effects client side?

Any thoughts?

Edited by Zeiyan
Link to comment
Share on other sites

11 answers to this question

Recommended Posts

  • 0

  • Group:  Members
  • Topic Count:  20
  • Topics Per Day:  0.01
  • Content Count:  416
  • Reputation:   73
  • Joined:  05/16/19
  • Last Seen:  

well for the status ones.... idk i didnt experiement totally with them but couldnt you just do a on enter map or whatever and check for those statuses and recast them and get duration or something

 for alot of those skills you should use it like this

bf_weapon ( src,bl,RK_SONICWAVE

use the skill id and it should be fine, damage is seperated too 

Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  27
  • Topics Per Day:  0.01
  • Content Count:  159
  • Reputation:   26
  • Joined:  11/20/11
  • Last Seen:  

you can add new effects in it. it really shows little or few effect list but it doesnt mean that is the limit.

 

for the status one refer to sc_hiding.

 

for the direction krane is right then why not change dir while casting the skill.

 

you can do it bro.

Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  49
  • Topics Per Day:  0.01
  • Content Count:  275
  • Reputation:   23
  • Joined:  01/06/13
  • Last Seen:  

On 1/21/2020 at 5:58 AM, Naruto said:

well for the status ones.... idk i didnt experiement totally with them but couldnt you just do a on enter map or whatever and check for those statuses and recast them and get duration or something

 for alot of those skills you should use it like this

bf_weapon ( src,bl,RK_SONICWAVE

use the skill id and it should be fine, damage is seperated too 

I'm a little confused on what you said. lol. The skills are totally working fine. No issues there. It's the special effects that i'm trying to make work properly. I'll post an attachment here in a little bit to show a better picture. ?

 

This videos is related to my question #2.

As you can see in the video. It does not matter what direction I'm using the skill with. It shows the effect as if i'm using @effect which i guess the default is north. Using the regular skill of RK_SONICWAVE, the "wave effect" would be towards the target. the code i'm using to call the effect is this:

            clif_specialeffect(src, 832, AREA);

I've also tried using bl but it would just show the "wave effect" coming from the target instead of the caster.

This is the "special effect" that I am trying to achieve. I do not see anywhere how the skill RK_SONICWAVE is calling the special effect. I'm assuming it's client side or maybe even hard coded?

Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  20
  • Topics Per Day:  0.01
  • Content Count:  416
  • Reputation:   73
  • Joined:  05/16/19
  • Last Seen:  

10 hours ago, Zeiyan said:

This is the "special effect" that I am trying to achieve. I do not see anywhere how the skill RK_SONICWAVE is calling the special effect. I'm assuming it's client side or maybe even hard coded?

I didnt say anything was wrong its the way your writing a very specific skill

sounds to me like your using skilleffectinfo.lub

well why not try vampire or spear boomerang? They will all produce the same effect, non directional

 

you probably added the new skill and stuck it with these guys

	case LG_RAYOFGENESIS:
	case LG_HESPERUSLIT:
	case LG_OVERBRAND:
	case LG_OVERBRAND_BRANDISH:
	case SR_FALLENEMPIRE:
	case SR_CRESCENTELBOW_AUTOSPELL:
	case SR_GATEOFHELL:
	case SR_GENTLETOUCH_QUIET:
	case WM_SEVERE_RAINSTORM_MELEE:
	case WM_GREAT_ECHO:
	case GN_SLINGITEM_RANGEMELEEATK:
	case KO_SETSUDAN:
	case RL_MASS_SPIRAL:
	case RL_BANISHING_BUSTER:
	case RL_SLUGSHOT:
	case NN_DRENCH:
	case NN_SWIFT:
	case RL_AM_BLAST:
		skill_attack(BF_WEAPON,src,src,bl,skill_id,skill_lv,tick,flag);
		break;

what i recommened for sonic wave is this:

add a new part under it and try this

	case RL_BANISHING_BUSTER:
	case RL_SLUGSHOT:
	case NN_DRENCH:
	case NN_SWIFT:
	case RL_AM_BLAST:
		skill_attack(BF_WEAPON,src,src,bl,skill_id,skill_lv,tick,flag);
		break;

	case MY_SKILL:
		skill_attack(RK_SONICWAVE,src,src,bl,skill_id,skill_lv,tick,flag);
		break;

Its the only way you can fix that afaik, all damage and stuff is based of MY_SKILL, its just you gotta use the RK_SONICWAVE as ammo so to speak... its really dumb

 

 

 

and as for question 1, i never tested it much but you could just have the skill recasted on you when you switch map using a function that potential grabs your remaining duration 

  • Upvote 1
Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  49
  • Topics Per Day:  0.01
  • Content Count:  275
  • Reputation:   23
  • Joined:  01/06/13
  • Last Seen:  

@Naruto

Yo dude I appreciate the help. I haven't went the skilleffectinfo.lub route yet. But i will try what you suggested. I appreciate the tips. I'll post here as soon as I test it.

 

4 hours ago, Naruto said:

case MY_SKILL: skill_attack(RK_SONICWAVE,src,src,bl,skill_id,skill_lv,tick,flag); break;

@Naruto I tried. But it also does not make a lot of sense to me. because the function of "skill_attack" is this:

int64 skill_attack( int attack_type, struct block_list* src, struct block_list *dsrc,struct block_list *bl,uint16 skill_id,uint16 skill_lv,t_tick tick,int flag );

 

first argument requires it to be the "attack_type" where it's usually:

skill_attack(BF_WEAPON,src,src,bl,skill_id,skill_lv,tick,flag);

 

I tried it anyways and got an error when casting the skill. I do appreciate the help and wondering if you have any other tips? I think I get what you're trying to do and I would like to do that as well it's just figuring out how to do it. lol. ? 

Using RK_SONICWAVE as the "ammo" as you said but calling my own skill right?

Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  20
  • Topics Per Day:  0.01
  • Content Count:  416
  • Reputation:   73
  • Joined:  05/16/19
  • Last Seen:  

oh haha i made a mistake i meant this 

 

skill_attack(BF_WEAPON,src,src,bl,skill_id,skill_lv,tick,flag);

skill_attack(BF_WEAPON,src,src,bl,RK_SONICWAVE,skill_lv,tick,flag);

replace skill id with the skill name 

 

this will work 

Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  49
  • Topics Per Day:  0.01
  • Content Count:  275
  • Reputation:   23
  • Joined:  01/06/13
  • Last Seen:  

2 hours ago, Naruto said:

oh haha i made a mistake i meant this 

skill_attack(BF_WEAPON,src,src,bl,skill_id,skill_lv,tick,flag);


skill_attack(BF_WEAPON,src,src,bl,RK_SONICWAVE,skill_lv,tick,flag);

replace skill id with the skill name 

this will work 

I actually did that one. But when casting the skill. it does the proper effect except for the shouting of the skill (text over the head) Sonic Wave. lol. What's the function to remove the skill shouting?

 

EDIT: I'll test again. I forgot if it actually calls RK_SONICWAVE or MY_SKILL.

 

Upon initial testing. It seems that it's using RK_SONICWAVE completely. (battle.cpp damage calculation / effects) The only thing it's retaining on MY_SKILL is the db configurations, (skill_db, skill_cast, etc.)

 

Big question for anyone: How do default skills call their special effects? When I look at the source code, there's barely any clif_specialeffect functions  used, or any code that I resembles calling any special effect.

from the client side, the folder (data\luafiles514\lua files\skilleffectinfo) does not contain even a quarter of the skills in the game. Can anyone help me figure this out? I don't want anyone to babysit me, I just need to figure out how the effects are being called then I'm pretty sure I can figure it out on my own. Unless these are hardcoded into the client.

Edited by Zeiyan
Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  20
  • Topics Per Day:  0.01
  • Content Count:  416
  • Reputation:   73
  • Joined:  05/16/19
  • Last Seen:  

On 1/22/2020 at 12:30 AM, Zeiyan said:

I actually did that one. But when casting the skill. it does the proper effect except for the shouting of the skill (text over the head) Sonic Wave. lol. What's the function to remove the skill shouting?

 

EDIT: I'll test again. I forgot if it actually calls RK_SONICWAVE or MY_SKILL.

no it should be like this

case MY_SKILL:

skill_attack(bf_weapon,src,bl....RK_SONICWAVE

It shouldnt be shouting the old skill you used, and this i what i mean by using OLD iro skills as ammo, some of them can only be modified this way to maintain the same behaviors 

 

On 1/22/2020 at 12:30 AM, Zeiyan said:

I actually did that one. But when casting the skill. it does the proper effect except for the shouting of the skill (text over the head) Sonic Wave. lol. What's the function to remove the skill shouting?

 

EDIT: I'll test again. I forgot if it actually calls RK_SONICWAVE or MY_SKILL.

 

Upon initial testing. It seems that it's using RK_SONICWAVE completely. (battle.cpp damage calculation / effects) The only thing it's retaining on MY_SKILL is the db configurations, (skill_db, skill_cast, etc.)

 

Big question for anyone: How do default skills call their special effects? When I look at the source code, there's barely any clif_specialeffect functions  used, or any code that I resembles calling any special effect.

from the client side, the folder (data\luafiles514\lua files\skilleffectinfo) does not contain even a quarter of the skills in the game. Can anyone help me figure this out? I don't want anyone to babysit me, I just need to figure out how the effects are being called then I'm pretty sure I can figure it out on my own. Unless these are hardcoded into the client.

its all client side, if you decompiled it and looked youd probably see something relevant

 

for example when star gladiator and soul reaper were released we didnt have the stuff right? But as soon as we start adding the IDS belonging to those skills, the effects are linked to the ID

 

I used them as "Ammo" often, because of the way you can share certain effects...

Forexample.. hammer fall? Its a PLACE skill, with an ANIMATION, AND IT SHAKES THE SCREEN... this made a good grenade for me and i would just change the element 

 

Also things like throw shuriken and venom knife ARE NOT linked to any effect, but actually their ITEM BMP ( you see the hot bar? Try changing that sprite )

 

yeah the documents effect_list is very out dated.... I dont have it anymore but you can go through the effects using @effect from whereever you are and add a description to it, not working effects should be because they have special coding within the client 

Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  49
  • Topics Per Day:  0.01
  • Content Count:  275
  • Reputation:   23
  • Joined:  01/06/13
  • Last Seen:  

On 1/22/2020 at 7:26 AM, Naruto said:

its all client side, if you decompiled it and looked youd probably see something relevant

for example when star gladiator and soul reaper were released we didnt have the stuff right? But as soon as we start adding the IDS belonging to those skills, the effects are linked to the ID

I used them as "Ammo" often, because of the way you can share certain effects...

Forexample.. hammer fall? Its a PLACE skill, with an ANIMATION, AND IT SHAKES THE SCREEN... this made a good grenade for me and i would just change the element 

Also things like throw shuriken and venom knife ARE NOT linked to any effect, but actually their ITEM BMP ( you see the hot bar? Try changing that sprite )

yeah the documents effect_list is very out dated.... I dont have it anymore but you can go through the effects using @effect from whereever you are and add a description to it, not working effects should be because they have special coding within the client 

I appreciate it bro. I've talked to stolao on discord and he did mention that some are hard coded in as well. I'm just gonna stay away from directional skill effects for now. ?

 

For Future reference:

I was able to do a work around for special effects for my custom skill. This is more of replicating already existing skills. (i.e RK_SONICWAVE). I've used

in skill.cpp:

case MY_SKILL:

skill_attack(BF_WEAPON,src,src,bl,RK_SONICWAVE,skill_lv,tick,0x1000);  --> 0x1000 prevents the skill being "shouted" by the character overhead. This basically uses MY_SKILL to call RK_SONICWAVE.

in battle.cpp

since I personally do not want to use the battle calculations for RK_SONICWAVE, I implemented an if statement of

-- if(sd->class_ == MAPID_ENTERJOBHERE ) 

skillratio += your values;

 

With this I've basically cloned RK's sonic wave along with the special effects (proper direction), without the overhead skill shouting as well as implementing my own damage calculations. Hope this helps anyone in the future facing the same issue.

Link to comment
Share on other sites

  • 0

  • Group:  Members
  • Topic Count:  162
  • Topics Per Day:  0.04
  • Content Count:  737
  • Reputation:   47
  • Joined:  03/12/14
  • Last Seen:  

just use skilleffectinfolist.lub

here my sample using for Lightsaberthrow

[SKID.PD_LIGHTSABERTHROW] = {
        effectNum = 1,
        effectID = {
            EFID.EF_TOMAHAWK
        },
        onTarget = true
    },

 

Edited by Bringer
Link to comment
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...