flareteam / flare-game

Fantasy action RPG using the FLARE engine
http://flarerpg.org/
Other
1.12k stars 235 forks source link

Is possible to create this skills and item bonuses? #533

Open SarcrofS opened 7 years ago

SarcrofS commented 7 years ago

Hi guys, I create this issue to know if I can or not create skills, I am web designer, never dev in C++, but I can try someday for make somethings in this engine, but for now I am limited to the editions in flare game to create a new game.

A lot of this ideas are front Diablo, Torchlight and others games.

SKILLS

  1. Raise Skeleton (summon a skeleton from a corpse, consume de corpse), if possible show in hud the "stacks"/numbers of skeletons with max quantify possible, make them follow the character, and teleport togheter to the character too. Very complex this.

  2. Corpse Explosion (explosion in the corpse location, consume the corpse).

  3. Whrilwind (the player sprite "rotates" while some spell effects happening, stop the spell when unhold the hotkey button, continue the spell when maintain hold the hotkey of spell). This I think can be made changing the sprites numbers of animation while "casting" the spell and simple add the spell effects, but the question is, how?! and how make the skill performing without stop while hold the hotkey?!

  4. Frenzy (every attack give a stack to attack speed and move speed, stacks be displayed in the hud like buffs) I know, don't are implemented attack speed in flare, but is possible to make the "ms" before each attack more low? this will make the "attack speed" be more "fast" I think.

  5. Magic Missiles (every cast gives a stack, what is show in hud like a buff, every stack up the damage of MM but make the cost more high too).

Item Bonuses:

  1. All skills +X (this will add X points to every skill of talent tree what you have spend at least 1 point).
  2. Skill sinergies (points in one skill gives little bonuses to others) - not too need, since the game dont have classes limits, so is good to make some mix of skills/spells style.
  3. +% dmg vs type of monster.
  4. Spell charges (consumables or not) in items.
  5. +X spell (give X points to a specify spell in talent tree)
  6. +X spell type (give X points to a specify group of spells in talent tree)
  7. Y% Cast spells with X level when striking/stucking (auto cast this spell when striking or are stuck).

Thanks for this engine and game!!!!

dorkster commented 7 years ago

Good ideas here, allow me to address a few of them:

Skills

  1. We haven't really done much with corpses, but both of these seem realistic as I think about them. If we "raise" a corpse, it would likely involve removing the corpse and spawning a matching minion at its position. So the existing minion code that has them follow the player would take over there.
  2. Even simpler than # 1. All we'd have to do is remove the corpse and perform the spell as normal.
  3. This seems possible with the current engine. The caster's animation would either have:
    • active_frame=0 and with the spell having a lifetime equal to the cast animation duration
    • active_frame=all and with the spell having a lifetime equal to 1-2 frames (16-33ms) So as you can see, the active_frame setting defines when the spells hitbox will become active during the casting animation.
  4. Changing attack speed is not elegant to do right now and requires creating a new animation with the faster speed. Although in a case where we know the X number of "stacks" we can have of speed increases, it might make sense to have those separate animations defined. The other major hurdle here is that we don't have a way to stack powers as described. Seeing as it's a common element to several of these ideas, it may be worth implementing.
  5. See the comment on stacking powers in # 4.

Item Bonuses

  1. This one sounds alright and I don't think it would be hard to implement (programmer's last words)
  2. This would probably be more difficult and convoluted, but it could still have purpose in other games.
  3. I could have sworn we could do something like this. If not, I'll probably end up implementing this one.
  4. I like the idea of spell charges, but they aren't viable with the way we store carried items. This would be post-1.0.
  5. This could be accomplished with an implementation of # 1.
  6. Again, this would tie in with # 1.
  7. I think this can be done currently. I might try it out on a unique weapon.
SarcrofS commented 7 years ago

@dorkster Thanks for the answers.

Yep, the stacks show in the HUD like skeletons in Diablo 2 would be cool, and useful for a lot of this spells, isn't possible to make like "block effect" show in HUD but changing the icon and writing in /powers/effects the line "can_stack=true" don't will work? of this stack is for other thing? sorry for asking, this isn't present in Power Definitions (https://github.com/clintbellanger/flare-engine/wiki/Power-Definitions).

About corpses, I see in the flare game some on_halfdeath - When the caster's HP drops below 50%, in passive_trigger only I think, but if this can be writed and work in active powers so we just need to make them to 0% of hp (0% of hp = body/corpse). Or this don't will work ?

I have the plan of create a game more better possible only using the "flare game", without touching code, and after this I will try to learn and edit/create things in "flare engine" to "polish" the game. Do you think this is the more optimized or not???

Sorry for a lot of questions.

Keep making this AWESOME job πŸ‘

dorkster commented 7 years ago

isn't possible to make like "block effect" show in HUD but changing the icon and writing in /powers/effects the line "can_stack=true" don't will work? of this stack is for other thing?

"can_stack" in this case means allowing multiple instances of a single Effect. Setting it to false means only the most recently applied Effect will be active. Setting it to true will allow multiple Effects, each with their own icon.

I think it might be worth adding a flag that allows the icons to be grouped. So instead of displaying multiple icons for the same Effect, display one icon with some "x2"/"x3"/"xN" text on it.

Also, you can find a description of the keys in powers/effects.txt here and the possible values for effect.type here

About corpses, I see in the flare game some on_halfdeath - When the caster's HP drops below 50%, in passive_trigger only I think, but if this can be writed and work in active powers so we just need to make them to 0% of hp (0% of hp = body/corpse). Or this don't will work ?

The engine has its own flag for when enemies are corpses. We'd want to use that in this case, so that enemies can't be raised when their in the middle of a dying animation.

I have the plan of create a game more better possible only using the "flare game", without touching code, and after this I will try to learn and edit/create things in "flare engine" to "polish" the game. Do you think this is the more optimized or not???

We're doing our best to make the engine flexible enough for anyone looking to make an ARPG. Hopefully, you never have to touch the engine source for the game you want to make (although you totally can if you want to).

SarcrofS commented 7 years ago

Yep, this is the idea for flags with stackable effects.

This links you post are very good, I don't notice this, sorry.

About corpse, this is good already flagged, if possible make this flag usable in flare game in a code line like "requires_target=corpse" or something like will be easily to implement in spells/skills.

Changes in Armor Penetration I know exist trait_armor_penetration but why not make this a % editable? Ignore totally the armor is good, but put the exacly % to be ignored will be cool, since this can be used in Unique Items a lot giving like 10%-15% of armor penetration, this can be used in passive talents too.

Create "Resistance" Penetration Create resistance_penetration to spells and being able to put how much % of resistance will be ignored is very cool too. Make this possible to break immunities from monsters is a nice add too.

Palletes change or a fill upper layer The effects be visible with filters, like in Diablo 2, where a poisoned monster/character change the palette for green based, or freezed change the palette to blue. If petrified change palette to gray. This can be implemented to stealth too, create a palette more transparency. I think this palettes need to be put in the more up layer possible, and ignoring the transparency of sprites, only changing the character and not the ground around him. Something like this: http://i203.photobucket.com/albums/aa299/spec_operations/periandydeath.jpg

Fog of war: I know, the engine don't have dynamic light, but is possible to simple put a "image" with color black and some grandient transparency? this will make a "false" effect of fog of war, but will be enough if we put the walls to not allow the player to see the other side (I read some of this about Tiled, I don't know if this can be really made for flare). I think will be next to this: http://gamechurch.com/wp-content/uploads/2012/06/fog_of_war-2.jpg The problem will only be the torchs and fire things, what don't will glow, but at least will be a lot gothic the game.

Debuffs: I see already have "buff_party", is possible to implement a "debuff_enemy"? this will be possible to create active and passive powers to debuff enemies.

Is visible you and others devs are making very good implements to this AWESOME engine, Thanks for all @dorkster, you and devs are GREAT! Keep working!!! πŸ˜„

meow-sokovykh commented 7 years ago

I'm trying to implements feature with stacks, and the only problem is how to render text like "x 37" to show number of stacks -- where can I look for examples of that, and where have I to place code for rendering it (for the sake of code arhitecture)? I would be very nice, if u can give me some tips, @dorkster :)

Right now I achieved just this:

effects_stack1

Stacking can be turned on/off by changing effects.txt, like it has to be.

dorkster commented 7 years ago

@DoKel It would probably go something like this:

  1. Add a WidgetLabel to the EffectIcon class
  2. Use WidgetLabel::set() to add the "x4" text like in your image during MenuActiveEffects::logic()
  3. Call WidgetLabel::render() after the normal icon rendering in MenuActiveEffects::render()
meow-sokovykh commented 7 years ago

So, it finally works!

I added for effects parameter "stack_same_icon". If it is set to true (and can_stack is true too), only the most "gone" (shield with the smallest amount of damage left to absorb or buff which will expire most soon), and the count of effects is displayed on icon (tho it is not clear visible because icons are light and so are text).

Text "xN stacks" is still there, but not for shield effect -- in case of that it just shows total amount of points to be absorbed (the "current/max" part, e.g. "24/27"), i.e. if shield (stackable shield) is casted once it is "27/27", if twice "54/54", after taking 10 damage -- "44/54".

Is it wanted behavior, or have I to do something more before pull-requesting my solution?

dorkster commented 7 years ago

stack_same_icon sounds too close to what can_stack does. I would name it something like group_stack or merge_stack.

Otherwise, what you have sounds good and you should open a pull request. It's a good first step for implementing powers that stack as used etc.

meow-sokovykh commented 7 years ago

Btw, for purposes of testing the stacking feature, I created special skeleton, whose main interaction is cursing player with stackable "Vulnerability to Fire". However, I added him melee fire atack, so he can deal real damage. Maybe I should pull request it for empyrean_campagin? In my opinion it's quite nice enemy. Of course, it's not hard to add same minion for ice elemental.

dorkster commented 7 years ago

That sounds too close to the existing skelatal mages. Does the melee attack have any visual effect with it? Otherwise, it's difficult for the player to tell that the attack is elemental. Projectiles are able to communicate that better.

On May 14, 2017 1:14 PM, "DoKel" notifications@github.com wrote:

Btw, for purposes of testing the stacking feature, I created special skeleton, whose main interaction is cursing player with stackable "Vulnerability to Fire". However, I added him melee fire atack, so he can deal real damage. Maybe I should pull request it for empyrean_campagin? In my opinion it's quite nice enemy. Of course, it's not hard to add same minion for ice elemental.

β€” You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/clintbellanger/flare-game/issues/533#issuecomment-301326338, or mute the thread https://github.com/notifications/unsubscribe-auth/AA3yPmkdeqv9KKA8mpzAj_g5S6s27PHlks5r5zaPgaJpZM4NYeWT .

dorkster commented 7 years ago

One more thing. We need a way to cap the number of stacks for a specific effect. Something like max_stacks.

On May 14, 2017 1:24 PM, "Justin Jacobs" jajdorkster@gmail.com wrote:

That sounds too close to the existing skelatal mages. Does the melee attack have any visual effect with it? Otherwise, it's difficult for the player to tell that the attack is elemental. Projectiles are able to communicate that better.

On May 14, 2017 1:14 PM, "DoKel" notifications@github.com wrote:

Btw, for purposes of testing the stacking feature, I created special skeleton, whose main interaction is cursing player with stackable "Vulnerability to Fire". However, I added him melee fire atack, so he can deal real damage. Maybe I should pull request it for empyrean_campagin? In my opinion it's quite nice enemy. Of course, it's not hard to add same minion for ice elemental.

β€” You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/clintbellanger/flare-game/issues/533#issuecomment-301326338, or mute the thread https://github.com/notifications/unsubscribe-auth/AA3yPmkdeqv9KKA8mpzAj_g5S6s27PHlks5r5zaPgaJpZM4NYeWT .

meow-sokovykh commented 7 years ago

Existing skeletal mages shoot curse-balls just sometimes, and their curses does not stack -- so there is no way to strongly amplify damage. Existing mages are battle mages, and the minion I've created for test is playing support role for others.

And yes, there are effect for elemetnal-melee attack, technically I just wrote power=melee,173,1 And power β„–173 is shooting fireball, so, it's clear enough, that the skeleton attacks with fire.

meow-sokovykh commented 7 years ago

There are following strings at EffectManager.cpp: if (effect_list[i-1].id == effect.id) { ... if (!effect.can_stack) removeEffect(i-1);

Why is it guaranteed, that effects with same type will go in sequence, not like "{id1}{id3}{id1}"? For example, as u could see, I am checking every active effect, for which an icon was already created, in MenuActiveEffects, not only last one. If that's guaranteed, I can optimize my code there.

dorkster commented 7 years ago

I still don't think that's enough reason to create a new type of skeleton when the enemies in that area are already 90% skeletons. A different creature that can stack a different type of curse may be more valuable.

dorkster commented 7 years ago

@DoKel I've made it so that stack-able effects will be in a more optimize-friendly sequence: https://github.com/clintbellanger/flare-engine/commit/16e8c46480178fd7743709b402e212a2ba9cad82

I also made a small change to MenuActiveEffects.cpp, getting rid of some unnecessary stringstream usage, so make sure you pull before working more on that file.

meow-sokovykh commented 7 years ago

And still, why this if (!effect.can_stack) { removeEffect(i-1); } works? It's guaranteed, that stackable effects are in sequence, but not the fact, that effects of same type go together. Why do we removing (i-1)-th element?

dorkster commented 7 years ago

When effects don't stack, we remove the matching effect because we want to use the magnitude/duration/etc. of the new one.

On May 14, 2017 4:06 PM, "DoKel" notifications@github.com wrote:

And still, why this if (!effect.can_stack) { removeEffect(i-1); } works? It's guaranteed, that stackable effects are in sequence, but not the fact, that effects of same type go together. Why do we removing (i-1)-th element?

β€” You are receiving this because you were mentioned.

Reply to this email directly, view it on GitHub https://github.com/clintbellanger/flare-game/issues/533#issuecomment-301336348, or mute the thread https://github.com/notifications/unsubscribe-auth/AA3yPkTCZKeg4Z-tNZJ3fjwc6TKLi6Xtks5r516-gaJpZM4NYeWT .

meow-sokovykh commented 7 years ago

Yep, sure, I understand this. Why matching effect goes right before new one? I mean, we check if (effect_list[i-1].id == effect.id) { But what if, for example effect_list[i-3].id is equal to effect.id too? Why doesn't we check that?

dorkster commented 7 years ago

When can_stack == false, it is implied that only one of the matching Effect id should be in the effect_list.

But what if, for example effect_list[i-3].id is equal to effect.id too? Why doesn't we check that?

We do check that. We iterate over effect_list (starting from the end, which is why we use i-1) so all matching effects will be removed. The new matching effect is then added to the end of the effect_list.

Why matching effect goes right before new one?

So this is not true. The new effect is added to the end of the effect_list.

dorkster commented 7 years ago

P.S. If https://github.com/clintbellanger/flare-engine/commit/16e8c46480178fd7743709b402e212a2ba9cad82 doesn't actually solve what you were inquiring about, let me know so I can improve/revert it.

SarcrofS commented 7 years ago

You guys are great, I am learning a lot reading this "talk". Thanks for this implements. I will try to learn how to build/compile FLARE to use this new implements, I will try using MinGW, do you have any video tutorial to how compile using this?

meow-sokovykh commented 7 years ago

Oh, ty for ur explanation, I kinda misread the code several times. The clintbellanger/flare-engine@16e8c46 is totaly useful, and I already optimized my check in MenuActiveEffects.

SarcrofS commented 7 years ago

I will not create a new issue just for this, so I will ask here.

the command power_tree aren't working?

I put above the codes for Adept class, put likepower_tree=magic and trypower_tree=magic.txt, none of this works. Magic.txt is the same path of default.txt (\powers\trees).

How make this work?

dorkster commented 7 years ago

@SarcrofS filenames are based at the mod root, so for your example, you would want power_tree=powers/trees/magic.txt

SarcrofS commented 7 years ago

thanks @dorkster, you rocks!!!!

SarcrofS commented 7 years ago

@dorkster I created the summon skeleton spell: Create a skeleton with category=skeleton_spawn, created a spell what summon this category, created a post_effect to show numbers of skeletons but when a skeleton die the numbers of stacks not decrease, how I can make this?

Power used in necromancer tree:

[power]
id=500
type=spawn
icon=27
name=Summon Skeleton
new_state=cast
#soundfx=
cooldown=2s
spawn_type=skeleton_spawn
spawn_limit=fixed,2
requires_los=true
requires_empty_target=true
buff=true
post_effect=summonskeleton,0,0

Effect:

[effect]
id=summonskeleton
type=spawn
icon=27
can_stack=true
group_stack=true
max_stacks=-1

The skeleton I just ctrl+c ctrl+v write the name to skeleton_spawn and category to skeleton_spawn (to works the summon).

I think the barrier of magician is the anwser, but don't know how to make this works ;x

dorkster commented 7 years ago

@SarcrofS I don't think this is possible in the engine at the moment. I think what we need is a remove_effect=... property for Powers. That way, your skeletons could have an on_death Power that looks something like this:

# make a hazard big enough to hit the player wherever the skeleton dies
radius=128
use_hazard=true
# don't do damage to the player
modifier_damage=absolute,0,0
ignore_zero_damage=true
# remove 1 of the stack
remove_effect=summonskeleton,1
SarcrofS commented 7 years ago

So how works magic barrier of mage? Btw, where we edit the standard 50 of shield? I don't see in \powers\categories\magician.txt and don't see in\powers\effects.txt, where I can edit this?

I think if can put the skeleton hp to be set like the magic barrier, when die the "stack" will be removed.

dorkster commented 7 years ago

Even if you did something hacky and gave the skeleton 1HP with a magic Shield on top of that, you wouldn't be able to display it as an Effect icon because it would be attached to the skeleton and not the player.

Btw, where we edit the standard 50 of shield? I don't see in \powers\categories\magician.txt and don't see in\powers\effects.txt, where I can edit this?

The magic shield amount is based on the player's Mental damage. You can use the modifier_damage Power key in powers/categories/magician.txt to change the amount.

SarcrofS commented 7 years ago

@dorkster thanks man, you rocks! be able to make summons already awesome, btw the numbers is for help to control the quantify, but you or others devs put the spawn_limit this make the spell icon "gray" when max spawn reached is amazing and is enough to works well.

When I launch the game you know you will receive a steam key, right ? kk

SarcrofS commented 7 years ago

Spawn scales with attributes is possible?

I read the reference and don't find anything about monsters/npcs/spawns scaling with attributes from characters. Reference: https://github.com/clintbellanger/flare-engine/wiki/Attribute-Reference#statblock-enemies

I am thinking to make upgrades like "better" versions of the same skill, 1 point in Summon Skeleton will summon the more weak skeleton, 2 points will summon a more strong skeleton and go for way, what I know is possible. But with this way the summons don't will scale with nothing don't are points, is enough, but scales is amazing too!

dorkster commented 7 years ago

To scale spawned creatures with the player, you can use spawn_level. This can change the spawned creature's level based on one of the hero's primary stats or their own level. Then in the creature's file, you can set stat_per_level for the stats that you want to scale.

power.spawn_level | ["default", "fixed", "stat", "level"], [int, predefined_string] : Mode, Value | The level of spawned creatures. "fixed" and "level" take an integer. "stat" takes a primary stat as a string (e.g. "physical").

SarcrofS commented 7 years ago

In the spawned creature need be like: stat_per_level=hp,20 and in category/necromancer.txt need be: spawn_level=ment,1?

When I summon the skeleton die in the same instant, I am making something wrong :S

SarcrofS commented 7 years ago

They die with lvl 1, so I thing the spawn_level=ment,1 is wrong. If I putspawn_level=fixed,20, he die instant too, but at level 20.

dorkster commented 7 years ago

You need to set stat=hp,20. stat_per_level=hp is additional health after level 1. So you still need to give him some level 1 HP.

The Mental stat is mental, not ment. Also, when using stat, you don't provide an additional value, just use spawn_level=stat,mental

SarcrofS commented 7 years ago

I think is ment and not mental because a lot of spells use this base_damage=ment.

So ment is the mental damage and mental is the mental attribute right?

If I don't provide additional value, how make the level balanced with my mental attribute? how are the math to result in the level so?

@dorkster sorry for asking a lot of doubts, thanks for helping me A LOT.

dorkster commented 7 years ago

base_damage is still hard-coded to be melee, ranged, ment, sorry for the confusion. Note to self: maybe this should be changed now that we have engine/primary_stats.txt?

As I said before, your Mental stat will equal the spawned creature's level. So take for example this creature:

level=1
stat=hp,50
stat_per_level=hp,10
stat=dmg_melee_min,15
stat_per_level=dmg_melee_min,5

If your player's Mental stat is at 5 and you use spawn_level=stat,mental, the resulting creature will be level 5 with HP=90 and Melee Damage Min=35.

dorkster commented 7 years ago

Okay, I think there's a bug with spawn_level. It looks like the parsing is incorrect (I'm unfamiliar with this area of the code to begin with).

dorkster commented 7 years ago

Looks like no bug, but I was severely misunderstanding the syntax for spawn_level. Here are some examples of how to actually use it:

# level = level in enemy file
spawn_level=default

# level = always 10
spawn_level=fixed,10

# level = 2 levels for every 1 level the player has
spawn_level=level,2,1

# level = 2 levels for every 1 point of Mental the player has
spawn_level=stat,2,1,mental
SarcrofS commented 7 years ago

@dorkster working now, but the skeleton aren't spawning with full life.

Using your last syntax, the skeleton spawn with lvl.4 correcly, (4x20 hp = 80 hp), but the skeleton spawn with 20/80 of hp. Strange.

dorkster commented 7 years ago

(4x20 hp = 80 hp), but the skeleton spawn with 20/80 of hp. Strange.

This was actually a bug. It should be fixed now.

SarcrofS commented 7 years ago

I am happy to help in anything, even though it is only finding a bug ,since I am asking a lot of things and you are helping a lot.

Please can you compile and upload the engine for me again?

dorkster commented 7 years ago

Here's the latest build: https://drive.google.com/open?id=0B1BVtHygCIkWdnMxRFR4eDFZTlE

SarcrofS commented 7 years ago

thanks @dorkster you are legendary! ⭐️

SarcrofS commented 7 years ago

Is possible to set vulnerability based in level ? like stat_per_level or stat_per_primary? or even vulnerability_per_level=ice,-5, to lower the weakeness to certain elements?

The idea here is to make the skeletons more resistants to elements based in more level they have.

If no possible no problem, fixed resistances is enough to make skeletons viable summons, asking just to have certain of this. ☠️

dorkster commented 7 years ago

Is possible to set vulnerability based in level ? like stat_per_level or stat_per_primary? or even vulnerability_per_level=ice,-5, to lower the weakeness to certain elements?

Unfortunately, no. I do think it would be worth implementing.

dorkster commented 7 years ago

I've added the remove_effect property to Powers as described here.

I've also added replace_by_effect to Powers. This will allow the creation of "stacking" Powers, like the Frenzy or Magic Missile you described in the original post. Given a stackable Effect, myeffect, you would create Powers like so:

# the base power
[power]
id=1
post_power=100
replace_by_effect=2,myeffect,1

# 1 stack
[power]
id=2
post_power=100
replace_by_effect=3,myeffect,2

# 2 stacks
[power]
id=3
post_power=100
replace_by_effect=4,myeffect,3

# and so on...

# this is the power that applies stacks to the player upon hitting an enemy
[power]
id=100
type=fixed
radius=128
use_hazard=true
modifier_damage=absolute,0,0
ignore_zero_damage=true
# set the source type so that it only hits the player
source_type=enemy
post_effect=myeffect,0,0

@clintbellanger might be interested in this feature for Wandercall, because it allows the creation of light-light-heavy attack combos that are common in ARPGs. Just give a cooldown to the post effects that is just a bit longer than the attack animation.

clintbellanger commented 7 years ago

Yes very interested and just in time too. I plan to add a second melee attack that's more of a backhand swing. And I'll be adding animation timing variants for fast and slow attacks. I'll be looking for ways to pull these together into more engaging combat. I want to try the regular swing having a one-two combo as the first test.

SarcrofS commented 7 years ago

Thanks for all this @dorkster.

I am thinking here, if the "stack" is a buff for some stat (like Frenzy is, since is to boost move speed and maybe physical damage), we can just:

in effects.txt, create a frenzy effect with this (X=any number):

type=speed
can_stack=true
group_stack=true
max_stacks=X

and in Frenzy skill put:

buff=true
post_effect=frenzy,0,3s
speed=?

So every use = 1 stack, each stack have 3 secs, every attack make a new stack and refill the duration. I am just trying to "code less and make the same", using the only stack feature can use less time creating a lot of skills I think.

I can't test, problems when compiling maintained 😒

So the questions:

  1. The Frenzy can works same like your replace_by_effect right?
  2. If this Frenzy can work. this only will work for "stacked buffs", for a possible Magic Missiles what each stack = more damage in only Magic Missiles I think can't be only this, we need to create a lot of powers and use replace_by_effect, right?
  3. I know on_hit is when receive hit, have some trigger for when land a hit? without this the players will "attack the wind" to just gain stacks and move like a crazy guy kkkkk

Sorry for writing a lot everyday, I love you guys! ❀️

dorkster commented 7 years ago

Yes, if all you want to do is stack stat buffs, there's no need to create multiple powers. I mentioned Frenzy only because increasing attack speed would take separate powers with their own animations. I would like to remove the need to do that and just give modders a simple attack_speed Effect type they can play with, but it will take some work.

Magic missiles on the other hand definitely need multiple powers, as you would be using modifier_damage for each power.

I know on_hit is when receive hit, have some trigger for when land a hit? without this the players will "attack the wind" to just gain stacks and move like a crazy guy kkkkk

I made a mistake in my above example. You wouldn't want to have the post_effect on the power that stacks, because then the enemy would get the stacks added to them when hit. What you would want is a post_power that applies the stacks to the player when the enemy is hit. So like the skeleton spawn example I gave earlier, we'd have a power like:

[power]
id=100
type=fixed
radius=128
use_hazard=true
modifier_damage=absolute,0,0
ignore_zero_damage=true
# set the source type so that it only hits the player
source_type=enemy
post_effect=myeffect,0,0

Then the original powers would contain post_power=100