HomeUser Control Panel (unavailable in archive)ForumsTutorialsArt GalleryResourcesMaps

Blood Elf Race. Need some help on spells/abilities.

08-07-2008, 03:09 PM#1
impyshaz
Hello,

A friend of mine and I are working on a little map just for ourselves to play via LAN.

It is just 'regular' warcraft 3 play style, but with custom races/build-trees/heroes.

Anyway, I've chosen the first race I'm customizing to be the Blood Elves. I've taken a few liberties as to the artistic direction of the race and their 'magic' but I need a bit of help on getting my lofty spell ideas to work.

I've disabled all the blood elves mana regeneration by removing their intelligence (as much as I'm able) and giving them a maximum "mana pool" of 500. I've made an ability called "Blood Rite" that damages a friendly unit for 100 hp and then gives the Blood Elf hero 100 mana. This is the only way they have of increasing their mana (beyond fountains, etc.... but I don't know how to turn off that stuff yet).

I was wondering if there is a better way to make the heroes not regen mana without removing their intelligence and not using a degeneration aura (I don't want them to lose the 'blood mana' they gain by using the blood rite ability).

On top of this I have one Blood Elf Archer hero with an ability I cannot seem to get to work properly. The overall effect is two-fold. First there is an initial ability "Mark of Blood" which grants the caster sight of the unit and damages them (like a mix-mash of Faerie Fire and a poison).

The second half is the ability I've dubbed "Heart Seeker" which fires an arrow at a target dealing 100, or 200 damage depending on the level, but if the target is below 25%(or 50% on level 2 [there is only 2 levels for this ability atm]) they will be killed instantly. The kicker to all of this is that I want the ability Heart Seeker to only be able to be cast on units who have the buff "Mark of Blood" currently operating on them.

I'm sorry I can't post the triggers using the tags that would allow you to see them as they are in the World Editor but I'm on break at work, and as such have no access to the World Editor.

What I've tried so far goes something like: (this is all from memory, so please excuse any errors here, as I'm sure they are probably wrong in my actual triggers too)

Event: Unit begins casting ability
Condition: IF THEN ELSE Multiple Conditions
-Ability being cast is "Heart Seeker"
-Unit being targeted currently has buff "Mark of Blood" equal to 'True'
Action:
Then Actions: IF THEN ELSE:
If life of targeted unit less than equal to life of targeted unit * .25 (I want to add a modifier here that makes it (.25*level of spell), but have no idea how.)
Then Kill Unit
Else Damage unit 100 (*level of spell?)

I'm sure I'm off base with these triggers. I have little experience using them, but I've been trying to learn as I go. I do have some programming experience (Java, C++, etc.) but going through all of these little drop down menus trying to find the option that works best for you is maddening.

Please assist me if you are able. I think it would be great fun if I could get this spell to work and I'd love to share a working edition with the rest of you. If you have any questions I'll check in on this post periodically throughout the day as well as many times when I'm home for the evening.

Thank you in advance!
-impyshaz
08-07-2008, 04:22 PM#2
Anitarf
Quote:
I do have some programming experience (Java, C++, etc.) but going through all of these little drop down menus trying to find the option that works best for you is maddening.
My suggestion: drop the silly GUI triggers and start coding in Jass directly. Just take a simple trigger and convert it to custom text to get a vague idea of how that looks like (I say vague because properly coded Jass is fairly different from GUI triggers converted to Jass). Then there are tutorials (Introduction, Triggers) that teach you all the basics; furthermore, it is very recommended that you use the Jass NewGen pack, a world editor modification that makes the life of coders easier (syntax highlighting, less crashing, war3err...) as well as enables you to use vJass syntax, an extension to Jass that comes with all sorts of treats.

Once equiped with that, you should be able to make triggered spells without a problem.
08-07-2008, 05:16 PM#3
impyshaz
I think I will try that out. Thank you for both the links, and the information.

On a slightly different note, does the task I've set myself to sound feasible (Blood Mark/Heart Seeker combination)? I'm not trying anything that simply isn't possible am I? (Because right now with this damn GUI it does seem impossible to get to work 'correctly').
08-08-2008, 08:18 AM#4
Pyrogasm
Quite possible:
Trigger:
Collapse Events
Unit - A unit begins casting an ability //Note that this says "begins casting"
Collapse Conditions
Ability being cast equal to Heart Seeker
Collapse Actions
Collapse If (All conditions are true) then do (Then actions) else do (Else Actions)
Collapse If - Conditions
((Target unit of ability being cast) has buff Mark of Blood) equal to false
Collapse Then - Actions
Unit - Order (Triggering Unit) to Stop
------- If you wanted error-simulating stuff, you would do it here -------
Else - Actions
Trigger:
Collapse Events
Unit - A unit starts the effect of an ability
Collapse Conditions
Ability being cast equal to Heart Seeker
Collapse Actions
Collapse If (All conditions are true) then do (Then actions) else do (Else actions)
Collapse If - Conditions
(Current Life of (Target unit of ability being cast)) less than (Maximum life of (Target Unit of ability being cast) x (0.25 x Real(Level of (Heart Seeker) for (Triggering Unit)))
Collapse Then - Actions
Wait 0.00 game-time seconds //This is so that mana cost/cooldown can still happen
Unit - Cause (Triggering Unit) to damage (Target Unit of ability being cast) dealing 999999.00 damage of attack type Chaos and damage type Universal
Else
08-08-2008, 12:39 PM#5
impyshaz
Ah, thank you. There is definitely a few things in your trigger you've posted in the GUI that would definitely help me. I just could not seem to find those options. I'm positive I could have written this trigger in about 2 minutes with an actual programming language but to see those options you've posted gives me hope that I might be able to pull at least this move off without JASS. (Though I still have made the commitment to learn JASS, as I think the customability, as well as the experience would be worth the effort).

Thank you again for your trigger mock-up.
08-08-2008, 03:13 PM#6
Pyrogasm
Actually, I would change from doing it that way to doing it this way: instead of having the actual ability send the arrow/deal damage, I would create a dummy ability that fires the arrow with 3 levels and a 'fake' hero ability that does nothing.
  • Level 1 does 100 damage
  • Level 2 does 200 damage
  • Level 3 does 999999 damage
Then, I'd replace the actions in the second trigger to look like so:
Trigger:
Actions
Set TempPoint = (Position of (Triggering Unit))
Unit - Create 1 DummyCaster at TempPoint facing default building facing degrees
Custom script: call RemoveLocation(udg_TempPoint)
Unit - Add DummyHeartSeeker to (Last created unit)
Collapse If (All conditions are true) then do (Then actions) else do (Else actions)
Collapse If - Conditions
(Current Life of (Target unit of ability being cast)) less than (Maximum life of (Target Unit of ability being cast) x (0.25 x Real(Level of (Heart Seeker) for (Triggering Unit)))
Collapse Then - Actions
Unit - Set level of DummyHeartSeeker to 3
Collapse Else - Actions
Unit - Set level of DummyHeartSeeker to (Level of (Heart Seeker) for (Triggering Unit))
Unit - Order (Last Created Unit) to <Whatever the base order of the dummy spell is, probably storm bolt, acid bomb, whatever)> (Target unit of ability being cast)
Unit - Add a 5.00 second generic expiration timer to (last created unit)
08-08-2008, 04:46 PM#7
Anitarf
Quote:
Originally Posted by Pyrogasm
Trigger:
Wait 0.00 game-time seconds //This is so that mana cost/cooldown can still happen
As far as I know that's not really needed and can only cause your trigger to malfunction.
08-08-2008, 06:48 PM#8
Pyrogasm
Well, if you ordered it to stop in the trigger then... oh wait.

That's what we're using the Starts the Effect of an Ability event. XD