• 🏆 Texturing Contest #33 is OPEN! Contestants must re-texture a SD unit model found in-game (Warcraft 3 Classic), recreating the unit into a peaceful NPC version. 🔗Click here to enter!
  • It's time for the first HD Modeling Contest of 2024. Join the theme discussion for Hive's HD Modeling Contest #6! Click here to post your idea!

Spell Request Workshop

Status
Not open for further replies.
Level 11
Joined
Jul 4, 2016
Messages
627
Yes, that is what should happen. I was thinking that he can simply press the stop button to stop channeling, or click+a the target point earlier to do damage based on the percentage of max mana he has consumed thus far, which will end the channeling.
 
Level 37
Joined
Jul 22, 2015
Messages
3,485
I'm basically done with your spell, but there is a slight issue with your damage formula. I drain the mana every loop iteration (0.03), so I have to convert the (2%) into units of 0.03, which is 0.0006 every 0.03 seconds. Let's say our Hero has 50 strength and the user only lets the Hero channel for one whole second, the damage will be: (50 * 2) * 0.02 = 2 damage.

Also, making it so that a knockback stops the charge would require you run all your knockbacks through Bribe's knockback system. With that in mind, should stunning + knocking back during the charge stop damage from happening?

Another question I have is how should the charging unit react to obstacles?
 
Level 11
Joined
Jul 4, 2016
Messages
627
To the first question, yes. For the second, he should not ignore obstacles. So, if the obstacles are in the way, he will hit the obstacles and not the target.
 
Level 37
Joined
Jul 22, 2015
Messages
3,485
You didn't say anything about these two:

I drain the mana every loop iteration (0.03), so I have to convert the (2%) into units of 0.03, which is 0.0006 every 0.03 seconds. Let's say our Hero has 50 strength and the user only lets the Hero channel for one whole second, the damage will be: (50 * 2) * 0.02 = 2 damage.
...should stunning + knocking back during the charge stop damage from happening?
 
Level 37
Joined
Jul 22, 2015
Messages
3,485
Power Attack
The user begins channeling his strength behind a single devastating attack. Attack animation is stopped before a swing during channeling.

He should be able to move during channeling (I do not mind if this can't be done). This drains 2% of his mana per second.

Click to normal attack to activate the spell on all targets within 100 radius of the main target or in front of the user. This deals damage and knockback the targets x range.

If he gets stunned, or knockbacked, etc. viva spells, or normal attack, it becomes disrupted. The spell should be avoidable.

Level 1 - Damage = (1 x Str) x % of Mana Consumed
Cooldown: 60s

Level 2 - Damage = (2 x Str) x % of Mana Consumed
Cooldown: 54s

Level 3 - Damage = (3 x Str) x % of Mana Consumed
Cooldown: 48s

Spell Type: Unit Target
Targets Allowed: All enemies except air.
That was pretty challenging to make, but I managed to get it done with minimal bugs. The "knockback interrupts caster" mechanic you want absolutely requires that you use Bribe's knockback system and that you run all your knockbacks through it. With that in mind, it also means you need Bribe's unit indexer. The animation can sometimes bug out (ex: caster animation will be standing even though they are charging). It doesn't happen a lot, but don't freak out about it; I wasn't entirely sure how to fix it. One other thing to keep note of is that due to the nature of the spell and PurgeandFire's Check Walkability, the Hero will run through units. However, he will stop on other obstacles. Here are the spell mechanics:

- Initializing the "charge up" will immediately start the cooldown for the spell. It will then remove the "charge up" ability and add the second ability that lets you decide where the Hero will charge. Big thanks to @Quilnez for giving me a point of reference on how to do this properly
- Stunning + knocking back the hero during the "charge up" or "charge" will end the spell instance and not damage + knockback enemy units
- Mana is drained every loop iteration (0.03)
- The current strength of the Hero is taken into damage, not whatever Strength the Hero had at the start of the spell

GIF Preview

PowerAttackPreview.gif

Requirements


Changelog

v1.00 (05 November 2016)
  • Uploaded
v1.01 (05 November 2016)
  • Fixed bug with charge animation still playing even though the caster ran out of mana
 

Attachments

  • Power Attack v1.00.w3x
    52.2 KB · Views: 65
  • Power Attack v1.01.w3x
    52.3 KB · Views: 119
Last edited:
Level 8
Joined
Jan 28, 2016
Messages
486
That's pretty sweet I must say. Well done @KILLCIDE, keep up the good work! :D

One small issue though; when the Chieftain runs out of mana, he keeps playing his walking animation but at a significantly slower pace. I tried looking into the code but I've gotta go soon, so I thought I'd at least bring it up with you. Besides you probably know the triggers like the back of your hand and end up identifying the problem in a matter of seconds.

I also noticed you didn't use the Engineering Upgrade trick to hide the channeling ability. This isn't an issue actually; I was just surprised at how you pulled off the whole hiding-the-spell-and-keeping-the-cooldown-intact thingy without it. Nice alternative.

P.S.: Haha, nice one @IcemanBo. :p
 
Level 37
Joined
Jul 22, 2015
Messages
3,485
when the Chieftain runs out of mana, he keeps playing his walking animation but at a significantly slower pace.
Ahh probably because I don't reset the animation when that instance ends. I only reset it when the charge ends. Thanks for bringing it up! Ill work on it later.

I was just surprised at how you pulled off the whole hiding-the-spell-and-keeping-the-cooldown-intact thingy without it. Nice alternative.
I got the idea from Quilnez. He got the idea from someone else, but I cant remember. I take no credit :p


EDIT

I was right about the animation thing :p fixed! Thank you again for reporting it.
 
Last edited:

Kyrbi0

Arena Moderator
Level 45
Joined
Jul 29, 2008
Messages
9,502
Really? I thought everyone knew the Spellbook trick... Or rather, anyone who's ever needed to hide an ability (i.e. pretty much everyone) had to figure out how, and discovered/was told the Spellbook trick.

(if you're curious: basically you stick the ability/-ies you want to hide into a modified version of the Spellbook item ability. Give that to the unit you want, and (pre-)disable the ability with triggers... Voila, hidden ability that still works.
This works for passives definitely, but even appears to work for active-cast abilities; somehow because of the screwy way the game interprets Spellbooks (see here), it's there & not there at the same time)


Anyway, now I'm really curious. How do you hide stuff then?
 

Kyrbi0

Arena Moderator
Level 45
Joined
Jul 29, 2008
Messages
9,502
The mechanic is that the unit uses the ability, goes on cooldown, gets a second ability, uses that ability, and then gets the first ability back. Hiding the ability is purely aesthetic.
Um? Wait, what's this about a 2nd ability (same as first, or different)? How can it get the 1st one back (does it lose it somehow)?

I'm really curious to figure this out. If you don't want to explain in more detail, I don't mind if you post a link to someone/where else describing it (Quilnez?).

KILLCIDE said:
It also sounds like the spellbook trick is player specific rather than unit specific.
I mean, via trigger one must disable it for the player, but the Spellbook is only on/given to a specific unit (you generally make a different Spellbook for each time you need to use the trick).
 
Level 37
Joined
Jul 22, 2015
Messages
3,485
Um? Wait, what's this about a 2nd ability (same as first, or different)? How can it get the 1st one back (does it lose it somehow)?
The spell request required two abilities. One is an instant cast, and the other is point target. The instant cast is the first ability, which has the cooldown. When the caster uses it, they begin channeling, where I then hide the first ability and add the second ability (the cooldown has already started at this point). You use the second ability to select a target point, where the caster then begins to charge at. The second ability gets removed, the first ability is unhidden, still retaining its cooldown. If you open the map or look at the gif, you will know what I mean.

I'm really curious to figure this out.
Figure what out?
 
Level 18
Joined
Oct 17, 2012
Messages
821
Ominous Blaze
Launch a burning arrow towards target point.

Scenario: Let the launched arrow reach the ground and it will explode in grand fire. All nearby enemy units within X AOE will become "infected".

Use a second ability that is instant to ignite these enemy units on fire. These units will take X damage every X seconds for X seconds and gradually turn smoky black as they run around in a frenzy. Any unit that comes close enough to these units will also catch fire.

Level 1 - 10 Damage every second for 10 seconds, 400 AOE
Level 2 - 10 Damage every 0.5 seconds for 10 seconds, 600 AOE
Level 3 - 20 Damage every 0.25 seconds for 10 seconds, 800 AOE

Spell Type: Point Target
Targets Allowed: Any
 
Last edited:
Level 4
Joined
Nov 25, 2013
Messages
132
Shield Charge
Shield at hand, the unit rushes towards the enemy and damaging everyone in front

Level 1 - 180% of strength as damage, casting range 600
Level 2 - 250% strength as damage, 600 casting range.
Level 3 - 320% strength as damage, 600 casting range.

Spell Type: Unit target
Targets Allowed: Ground Units

Additional Info: If there is a unit blocking the way of the target, the triggering hero stops and deals the damage to that blocking unit and enemies nearby instead of the target of ability. AoE is 200
 
Level 8
Joined
Jan 28, 2016
Messages
486
Level 37
Joined
Jul 22, 2015
Messages
3,485
Shield Charge
Shield at hand, the unit rushes towards the enemy and damaging everyone in front

Level 1 - 180% of strength as damage, casting range 600
Level 2 - 250% strength as damage, 600 casting range.
Level 3 - 320% strength as damage, 600 casting range.

Spell Type: Unit target
Targets Allowed: Ground Units
Additional Info: If there is a unit blocking the way of the target, the triggering hero stops and deals the damage to that blocking unit and enemies nearby instead of the target of ability. AoE is 200
Yayy... another charge spell. I assumed that the mechanics you didn't mention, you actually wanted, sooo (excluding stun stopping the charge):

- Damage is dealt in a cone in front of the caster (starting from the target)
- Strength includes bonuses, and takes current strength of the Hero, not what Strength the caster had when it casted
- Damage is only dealt when the caster succesfuly runs into a unit
- Caster will stop at obstacles (including units)
- Charge is uninterruptible by the player

GIF Preview

ShieldBash.gif

Requirements


Changelog

v1.00 (07 November 2016)
  • Uploaded
 

Attachments

  • Shield Bash v1.00.w3x
    25.7 KB · Views: 166
Level 22
Joined
Feb 6, 2014
Messages
2,466
Maan that sounds complicated (even with the library linked by IcemanBo). I'll keep it in my list for now, but no promises that I can finish it.
I ended up creating my own with somewhat similar structure (Time Lapse) so if you kinda want something with extra challenge and interesting to create, how about this instead?

False Promise
Temporarily alters an ally's destiny, delaying any healing or damage taken until False Promise ends. Any healing that is delayed by False Promise is doubled. Removes most negative status effects and disables on initial cast.

Level 1 - 8 second duration.
Level 2 - 9 second duration.
Level 3 - 10 second duration.

Spell Type: Unit target
Targets Allowed: Allies/Self

To make it less complicated, if the net damage is greater than the heal received during False Promise and the targeted unit's hp is not enough because too much damage is applied during False Promise, the kill will be credited to the unit that applies the most damage.
 
Level 4
Joined
Nov 25, 2013
Messages
132
Yayy... another charge spell. I assumed that the mechanics you didn't mention, you actually wanted, sooo (excluding stun stopping the charge):

- Damage is dealt in a cone in front of the caster (starting from the target)
- Strength includes bonuses, and takes current strength of the Hero, not what Strength the caster had when it casted
- Damage is only dealt when the caster succesfuly runs into a unit
- Caster will stop at obstacles (including units)
- Charge is uninterruptible by the player

GIF Preview

Requirements


Changelog

v1.00 (07 November 2016)
  • Uploaded

(GASP!) It looks like as if you have hacked into my thoughts!
 
Given that I'm by myself and I do this on my free time, I will only make it if you actually have plans of using it :p

Well, if it's worth anything, I really think I could use this idea he has given xD (except the removes most negative status effects part, that's really likely going to colide with another trigger spell hehe)

Also would be interesting if you could make it so it doesn't work on units who already are affected by false promise :p (or at least add the option for this)
 
Could you use the format with the mechanics you want? It would be easier for me to reference back to while I'm making it. I will be able to start on it either tonight or tomorrow evening.

Well, I don't really want to steal his request, so I'll make it similar to his:


False Promise
Temporarily alters an ally's destiny, delaying any healing or damage taken until False Promise ends. Any healing that is delayed by False Promise is multiplied by N. Configurable to make it so new instances on the same unit either add to the duration or do nothing at all.

If ( DAMAGE - N*HEALING > LIFE AT TIME OF CAST), kill the unit. (Kill credit is given to the player whose units did the most damage to the unit, or to nobody at all if that is too time consuming to code)


EDIT: Should have a buff, and spell should end normally if buff is dispelled. Please add custom events for when an instance of the spell begins and when it ends, if it's not too much trouble. Thanks again ^.^

Level 1 - 8 second duration, N=2
Level 2 - 9 second duration, N=2.5
Level 3 - 10 second duration, N=3

Spell Type: Unit Target
Targets Allowed: Friend/Self
 
Last edited:
If a unit has 500 HP, takes 200 damage, and 199 healing, I should kill them?
Woops, my mistake. I meant to say:
if ((DAMAGE - HEALING*N) > CURRENT LIFE) then Kill the Unit
As a side note, do you think that all healing and damage in the map would need to be trigger based to make this possible? Because I wonder how you would deal with the unit's "life per second" :S
 
Level 37
Joined
Jul 22, 2015
Messages
3,485
As long units do not take damage from health subtraction instead of actually dealing damage, then any damage taken can easily be nulled by a DDS. If I run the loop every 0.03 seconds, any healing done to the unit can easily be set back to whatever HP it had when the instance first started (this includes health regeneration). The only issue I don't see possible is making it so that the unit who deals the most damage gets the kill credit.
 
As long units do not take damage from health subtraction instead of actually dealing damage, then any damage taken can easily be nulled by a DDS. If I run the loop every 0.03 seconds, any healing done to the unit can easily be set back to whatever HP it had when the instance first started (this includes health regeneration). The only issue I don't see possible is making it so that the unit who deals the most damage gets the kill credit.


Oh, I was thinking of the looping instance, but I thought you were going to do it another way (it didn't seem to efficient coming from my mind xD)

I guess the loop can also check for non-fatal health subtraction by triggers, but that would not work for any value of the N multiplier except 1, so it's useless

Also, don't worry about the kill credit, it really wouldn't bother me in my application for the spell. I could see it maybe being done inefficiently with a hashtable storing the damage (Parent: spell target unit handle ID -> store damage source handle ID on key x, damage dealt on key x+1) but you really don't need to add the kill credit if it's too much of a hassle or not possible/practical.
 
Level 37
Joined
Jul 22, 2015
Messages
3,485
I guess the loop can also check for non-fatal health subtraction by triggers, but that would not work for any value of the N multiplier except 1, so it's useless
You shouldn't be doing health subtraction to deal damage anyway. If the health subtraction is fatal, kill credit is not applied. I'm a little confused with the last half of the sentence.

Also, don't worry about the kill credit, it really wouldn't bother me in my application for the spell. I could see it maybe being done inefficiently with a hashtable storing the damage
Its possible considering I only need to save the unit who has dealt the most damage so far. I have to consider the possibility of the unit damaging multiple targets with False Promise, which gets super convoluted. I'll see what I can do.
 
You shouldn't be doing health subtraction to deal damage anyway. If the health subtraction is fatal, kill credit is not applied. I'm a little confused with the last half of the sentence.

If the N multiplier for healing is higher than one, than the amount of healing and the amount of health subtraction would matter, and there would be no way to distinguish the two, because you're only reading the health value.
Say, a unit has 450 hp, up from 400. It could've have taken 200 damage and been healed for 250.

If N=1: You should heal for (250 - 200) at the end of the spell duration, so just consider that 50 healing.
If N=2: You should heal for 500 at the end, and take 200 damage, so you would heal for 300. If you go by the HP difference, you would only heal by 100.

So any type of health subtraction is a no-go for this to work. (Luckily most people don't use it anyway)

Its possible considering I only need to save the unit who has dealt the most damage so far. I have to consider the possibility of the unit damaging multiple targets with False Promise, which gets super convoluted. I'll see what I can do.


Good Luck, and thank you :goblin_yeah::goblin_yeah:
 
Last edited:
@_Guhun_ hey sorry I've been busy the past few days. I haven't started on the request yet :( Just had two questions:
  • should it be dispellable?
  • If you want a buff indicator, should it be "negative" or "positive"?

Sure man, don't worry about it :) Take your time with this

-> It should have a buff, and if the buff were to be dispelled, the effect would end normally (take damage and heal for N*healing, die if damage+N*healing > life at time of cast).

PS: It would be great if made a custom event for when an instance of the spell begins and when it ends.


PSS: I edited the post with the submission form to include everything we discussed.
 
Last edited:
Level 37
Joined
Jul 22, 2015
Messages
3,485
It should have a buff
I'm going to use Unholy Frenzy as the base ability. Let me know if this will be a problem.

PS: It would be great if made a custom event for when an instance of the spell begins and when it ends.
Why? o_O


Also one last thing: if the damage taken is fatal, should the target take damage first and then be healed at the end of the instance? Or should it just be healed?
 

I'm just a fan of custom events because they allow a lot of inter-spell interaction and make it easy to add new effects to spells :S

Say, I want to make a unit explode depending on whatever factors I want to check at the end of the spell effect. I can just use the custom event to do this without having to edit your code :)

Or I want to loop the spell or make it so a unit can only be affected every few seconds, custom events make that easy.

I think it makes customization easier, and it's generally too hard to implement, just needs a real variable,a unit variable and some way to store the spell level (probably an integer variable).

Sorry if it sounds like I'm lazy/asking for too much :S Feel free to just ignore the custom events :)

Also one last thing: if the damage taken is fatal, should the target take damage first and then be healed at the end of the instance? Or should it just be healed?

Hmmm... I don't really get this part. Why would you only heal a target that took fatal damage? Don't you need to deal the fatal damage? :S
 
Adding custom events won't be a problem. I was just genuinely curious as to why you wanted it.


Sorry I meant "if the damage isn't fatal..."

If you damage a unit with 500 health for 1500, but then heal it for 5000, will it die or be at 500 HP?

My intuition says that it would die, but if it doesn't than you should deal the damage first, I guess, to be consistent.
 
Status
Not open for further replies.
Top