Spell and Damage System

hi Rhanzel,

1 - you can do the filtering in the ApplyDamageOnHit (or something like that). As team system and self-damage system is usually game specific, you will have to implement this on your own.
2 - I do not have that support yet but thanks for the suggestion. How I would approach that is create a BP_FrontalConeAoE class that is similiar to BP_AreaOfEffect and do an overlap with cone region instead of spherical region.
3 - I currently do not support that yet, thanks for the suggestion. For now, you can disable collision/overlaps after a certain amount of time and just fade out the projectile.

Thanks for the suggestions. Some of the suggestions are really specific to certain games and I do not want to “lower the performance” for other games but most of the suggestions are awesome and could be implemented. Hopefully I get some time to work on them …

Hi ,

I’ve been testing and creating a lot with this system, but there’s a thing that bug’s me.

The UI Does not recognize new characters. What I mean by that is, if I copy the “BP_Third_PersonCaracter” and spawn it somewere in the map or use the copy as the player pawn, it does not show up the Bars and even if I create a new widget and cast everything to this new one it also dosent work.

Ofc I might be doing something wrong, but how would I fix this?

I want to create other character blueprints in order to manage Classes, similar to “BP_Warrior, BP_Archer, BP_Mage”.

It seams that all the functionalities present inside the blueprint does work but the interface.

I know this might look like it’s a game specific functionality but it’s essencial to everyone that don’t want to stick with the same character model and spells, like if you want to create a AI or another playable character.

Thank you so much for the awsome work!

Hi Ranzel,

you are right, the UI system directly casts to BP_ThirdPersonCharacter, so creating a new character will not create a UI on it. The UI system actually needs more information than exposed by the spell casting interface (like the name and casting stuff). You have two ways to approach this:
a) either create your own interface that gives you all the desired properties for the UI to show and replace all things specific to BP_ThirdPersonCharacter in the UI with the calls to that interface
b) extend all you classes from BP_ThirdPersonCharacter (i.e. BP_ThirdPersonCharacter is your parent class). This way, you get an additional bonus that you can put “common code” between all classes to that class. You can also rename BP_ThirdPersonCharacter to something like BP_ClassBase.

In the future, I might also add the a) support, but it just felt too much as the information exposed is very game specific.

The A) Option is kinda what I was trying to do, I was also trying to apply a Widget directly to the Blueprint, but my lack of undertanding about how you manage to get the “Character” variable does not let me code it right. So I got stuck with a widged that has the object a player pawn, so No mather what I did it always “mirrored” the information to all the widgets from the Player 0, so it got “instanced” and even if it was on top of other character it only updated my player information ( Health etc… etc… ) Almost like a “Personal HUD” copied dozens of times, instead of a “over the head”.

The b) Option worked fine, but now i’ll try to figure out how to assign the skills to the classes instead of the Keybinds
(Since I’m aiming towards something like a moba > Choose character > Get all the info and play. > Match ends~no need to store all the info. Yet, I want to be able to choose the skills that each class can use at the round. something like the image below)

http://www.boldyoung.com.br/Clientes/Skill_Select_Mechanic.jpg

I think this might work if somehow i manage to create a gigantic “Base_Character” with all the skills in the game and add distinct Action Events that trigger based on the Interface, or the parented blueprint, but I have no idea how to do this, if you have any idea how to, let me know, and i’ll test it.

The only counterpart is that if you have some kind of system that is mainly used by one class, like my action target system you are stuck with only 1(The one coded inside the parent), or even if you don’t want a class to show a second resource bar. Maybe I can code the target system inside the child. Also maybe I can find a way to hide a part of the HUD with some kind of boolean, like, if the Child is “X” the mana bar is gone. But i’ll be testing things here, and as soon as I get something i’ll post

Just was wondering if the developer was still planning on keeping this updated? It is a great pack good work !

Hi! I am planning to update the package at least for upcoming versions, and possibly add some content to it as well. The problem here is, I ran out of ideas, and I don’t want to implement something that cannot be easily added to your project. So if you have any requests, be sure to post them here so I can evaluate them and make them into new version if feasible.

Great system, my friends and I have learned a lot from playing with it! Thank you so much! I do have one question however. In your example BP_ThirdPersonCharacter, you initialize each spell after spawning it. If you have to do it for every spell, why not initialize the spell in the begin play event of the BP_SpellBase? Why would you wait until the spell is already spawned to initialize it?

I am having difficulty adding an animation to the spell casts. Where would you apply this? I’ve tried adding simple play montage nodes in the player bp before a spell cast, but that doesn’t work. Also, I am trying to make a ‘Mario’’ jump on enemy damage spell. I see you’ve given others advice on game specific stuff, so I was seeing how you would handle that? Thanks!

That is a good question. I remember there were some limitations with “constructors” but apparently they are not there anymore. So I should just initialize in spell base … I think you can use SpellOwner construction property in Begin to initialize the spell. Thanks for the suggestion, it will be in the next release I guess.

I am sorry but you will have to be a bit more specific. One issue might be that the callbacks for spell casting are only trigerred on the server, and you are not getting them on clients. But basically you can broadcast this events (just create a new function, set replication to broadcast, and call it from the events you want).

I would like to create a spell where the spell caster needs to continue to channel the spell. Is this possible? Or could you describe how you would implement this kind of spell. Thanks.

Thinks of XCOM where a creature takes control of another creature and boots their health while channeling. If the castor dies during channeling, other creature takes damage and loses buff.

LogInit: Display: LogLinker: Warning: Asset ‘…/…/…/…/…/Projects/Current/Content/SpellAndDamageSystem/Examples/Spells/BP_Grenade.uasset’ has been saved with empty engine version. The asset will be loaded but may be incompatible.
LogInit: Display: LogLinker: Warning: Asset ‘…/…/…/…/…/Projects/Current/Content/SpellAndDamageSystem/Templates/BP_Projectile_Gravity.uasset’ has been saved with empty engine version. The asset will be loaded but may be incompatible.
LogInit: Display: LogLinker: Warning: Asset ‘…/…/…/…/…/Projects/Current/Content/SpellAndDamageSystem/Templates/BP_DirectSpell.uasset’ has been saved with empty engine version. The asset will be loaded but may be incompatible.

What’s going on here? I can’t export my game because of your system. How do I fix this?

These are warnings. You can disable them by pasting

[Core.System]
ZeroEngineVersionWarning=False

into DefaultEngine.ini. Unreal projects (apparently) also have this version disables. As far as I know, they appear because I use build of engine from source. I didn’t have any problems because of them up till now in my projects.