• Listen to a special audio message from Bill Roper to the Hive Workshop community (Bill is a former Vice President of Blizzard Entertainment, Producer, Designer, Musician, Voice Actor) 🔗Click here to hear his message!
  • Read Evilhog's interview with Gregory Alper, the original composer of the music for WarCraft: Orcs & Humans 🔗Click here to read the full interview.

Spell Request

Status
Not open for further replies.
Level 5
Joined
Mar 5, 2009
Messages
138
Name TriPower Shot,
Description: fires 3 arrows all at once from the hero in a \I/ shape if you get the idea, max range is 1750 for all 3 arrows,
Level One: each deals 175 damage
Level Two: each deals 250 damage
Level Three: each deals 325 damage
Level Four: each deals 400

The arrows destroy any trees in the way but do NOT effect buildings. Its a shot gun like ability so anyone who happens to get hit by all 3 arrows takes combined damage. Last thing, the arrows disappear when they reach the end of their flight path NOT when they strike a target so they go on and on...
I would like it to be GUI/MUI and if you could, please provide instructions on how to edit. Kudos and rep to whoever can make this.
 
Level 8
Joined
Mar 28, 2008
Messages
470
base it off Forked lightning, and change the spell model to an arrow. It may work, but it won't have the best effect. It may require JASS to make. But if this gets made, I will be quite interested in using it myself. I have an archer hero in my map that needs something involving her arrows. Trying to keep magic to a minimum on non-magical heroes in my map, so this could be useful.
 
Level 5
Joined
Mar 5, 2009
Messages
138
Lol I've been trying to make it myself but havent thought of basing it off Forked Lightning. Ill give it a shot, Im horrible with JASS so Im trying to keep it GUI. Anyways, if your gonna use the Grishnakah make sure to cred me for idea XD
 
Level 5
Joined
Mar 5, 2009
Messages
138
Oh bleh Im not getting the results I want, Im gonna base it off shockwave and try using two dummies.
 

Rmx

Rmx

Level 19
Joined
Aug 27, 2007
Messages
1,164
Help ya want !

Well there is the easiest way is to .....

do a carrion swarm abilitie that looks like an arrow and goes up to 1750 range.

  • A unit start the effect of an ability
  • Ability being cast is Noob
  • Actions :
  • Set Point[1] = Position of Trigering unit.
  • Set Angle = Facing Angle of Trigering unit.
  • Set Angle = Angle - 30
  • For each effect from 1 to 3 do action:
  • --Create dummy unit at Point[1]
  • --Hide last created unit
  • --Add 1 seconds expiration timer to last created unit
  • --Add the ability carrion swarm to last created unit
  • --Set Point[2] = Point[1] offset by 1500 to Angle
  • --Order last created unit to carrion swarm Point[2]
  • --Call RemoveLocation(udg_Point[2])
  • --Set Angle = Angle + 30
  • Set Angle = 0
  • Call RemoveLocation(udg_Point[1]
This should be a nice spell of multishot or anything :p

Or it could give u the idea of how it works :p
 
Last edited:
Level 5
Joined
Mar 5, 2009
Messages
138
It doesnt have to be carrion swarm it could be shockwave. I meant that you create 2 dummies at the caster and have them cast a spell each at an angle slightly away from the main cast point. Ill try to upload a screen shot of my idea.
 
Level 6
Joined
Jul 25, 2005
Messages
221
Alright, as per request, here is a spell that took me a while to make, but it's done.
Please note that this is done entirely from scratch, so I didn't use any abilities other than "Channel".
It can probably be done as suggested above, but I thought this was more challenging, and cool.

Hope you'll like it Elsheen! :cute:

Here's the trigger code if you wanna browse through:


Initialize Variables - This can be done through the variables tab, but it's easier doing it from here
  • Initalize Variables
    • Events
      • Map initialization
    • Conditions
    • Actions
      • Visibility - Disable fog of war
      • Visibility - Disable black mask
      • Set real_BaseDamage = 100.00
      • Set real_DamageFactor = 75.00
      • Set real_DivideDegree = 30.00
      • Set real_Range = 1750.00
      • Set real_OffsetArrowSpawn = 25.00
      • Set real_Speed = 75.00
      • Set real_MAXCOLLISION = 60.00
Initialize the base event
  • TriPowerShotInit
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to TriPower Shot
    • Actions
      • Set point_Spawn = ((Position of (Triggering unit)) offset by real_OffsetArrowSpawn towards (Angle from (Position of (Triggering unit)) to (Target point of ability being cast)) degrees)
      • For each (Integer A) from 1 to 30, do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • bool_Instance[(Integer A)] Equal to False
            • Then - Actions
              • Set unit_ArrowCaster[(Integer A)] = (Triggering unit)
              • For each (Integer B) from 1 to 3, do (Actions)
                • Loop - Actions
                  • Set integer_Calculations = (((Integer A) x 3) - (Integer B))
                  • Set real_Divide = (((Angle from point_Spawn to (Target point of ability being cast)) - (real_DivideDegree x 2.00)) + (real_DivideDegree x (Real((Integer B)))))
                  • Unit - Create 1 Dummy for (Owner of (Triggering unit)) at point_Spawn facing real_Divide degrees
                  • Set unit_Arrow[integer_Calculations] = (Last created unit)
              • Set bool_Instance[(Integer A)] = True
              • Set real_Distance[(Integer A)] = 0.00
              • Custom script: call RemoveLocation( udg_point_Spawn)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (MoveAllArrows <gen> is on) Equal to False
                • Then - Actions
                  • Trigger - Turn on MoveAllArrows <gen>
                • Else - Actions
              • Skip remaining actions
            • Else - Actions
      • Custom script: call RemoveLocation( udg_point_Spawn)
Move all arrows in all instances
  • MoveAllArrows
    • Events
      • Time - Every 0.04 seconds of game time
    • Conditions
    • Actions
      • Set bool_ActiveInstances = False
      • For each (Integer A) from 1 to 30, do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • bool_Instance[(Integer A)] Equal to True
            • Then - Actions
              • Set bool_ActiveInstances = True
            • Else - Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • bool_ActiveInstances Equal to False
        • Then - Actions
          • Trigger - Turn off (This trigger)
        • Else - Actions
      • For each (Integer A) from 1 to 30, do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • bool_Instance[(Integer A)] Equal to True
            • Then - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • real_Distance[(Integer A)] Less than real_Range
                • Then - Actions
                  • For each (Integer B) from 1 to 3, do (Actions)
                    • Loop - Actions
                      • Set integer_Calculations = (((Integer A) x 3) - (Integer B))
                      • Set unit_CurrentArrow = unit_Arrow[integer_Calculations]
                      • Set point_ArrowMove = ((Position of unit_CurrentArrow) offset by real_Speed towards (Facing of unit_CurrentArrow) degrees)
                      • Destructible - Pick every destructible within 100.00 of point_ArrowMove and do (Actions)
                        • Loop - Actions
                          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                            • If - Conditions
                              • ((Picked destructible) is alive) Equal to True
                            • Then - Actions
                              • Destructible - Kill (Picked destructible)
                            • Else - Actions
                      • Unit - Move unit_CurrentArrow instantly to point_ArrowMove
                      • Custom script: set bj_wantDestroyGroup = true
                      • Unit Group - Pick every unit in (Units within real_MAXCOLLISION of point_ArrowMove matching ((((Matching unit) is A structure) Equal to False) and ((((Matching unit) belongs to an enemy of (Owner of unit_CurrentArrow)) Equal to True) and (((Matching unit) is alive) Equal to True)))) and do (Actions)
                        • Loop - Actions
                          • For each (Integer Loop1) from 1 to 100, do (Actions)
                            • Loop - Actions
                              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                                • If - Conditions
                                  • And - All (Conditions) are true
                                    • Conditions
                                      • (Picked unit) Not equal to unit_HasBeenDamaged[Loop1]
                                      • bool_breakloop Equal to False
                                • Then - Actions
                                  • Set unit_HasBeenDamaged[Loop1] = (Picked unit)
                                  • Set real_DamageCalculation = (real_BaseDamage + ((Real((Level of TriPower Shot for unit_ArrowCaster[(Integer A)]))) x real_DamageFactor))
                                  • Unit - Cause unit_CurrentArrow to damage (Picked unit), dealing real_DamageCalculation damage of attack type Spells and damage type Normal
                                  • Special Effect - Create a special effect attached to the chest of (Picked unit) using Abilities\Weapons\SentinelMissile\SentinelMissile.mdl
                                  • Special Effect - Destroy (Last created special effect)
                                  • Set bool_breakloop = True
                                • Else - Actions
                                  • Set bool_breakloop = True
                          • Set bool_breakloop = False
                      • Custom script: call RemoveLocation( udg_point_ArrowMove)
                  • Set real_Distance[(Integer A)] = (real_Distance[(Integer A)] + real_Speed)
                • Else - Actions
                  • For each (Integer B) from 1 to 3, do (Actions)
                    • Loop - Actions
                      • Set integer_Calculations = (((Integer A) x 3) - (Integer B))
                      • Special Effect - Create a special effect at (Position of unit_Arrow[(Integer A)]) using Abilities\Weapons\BloodElfSpellThiefMISSILE\BloodElfSpellThiefMISSILE.mdl
                      • Special Effect - Destroy (Last created special effect)
                      • Unit - Remove unit_Arrow[integer_Calculations] from the game
                  • For each (Integer Loop1) from 1 to 100, do (Actions)
                    • Loop - Actions
                      • Set unit_HasBeenDamaged[Loop1] = No unit
                  • Set bool_Instance[(Integer A)] = False
            • Else - Actions
If you want any major changes or suggestions on how to improve it, then PM me.
( I can convert it to a more efficient JASS version, without the annoying globals and array checks )
 

Attachments

  • TriPower Shot Without Comments.w3x
    41.2 KB · Views: 33
  • TriPower Shot With Comments.w3x
    46.3 KB · Views: 43
Last edited:
Level 5
Joined
Mar 5, 2009
Messages
138
OH.............MAH..........GAWD..........
YOU NAILED IT ON THE SPOT MAN YOU GOT THE IDEA!!!!! As I said in the first post kudos to you on my map and heres a rep point
Btw, you should upload this spell and present it to THW for all to use, just make sure you tell em I came up with the idea XD
 
Level 6
Joined
Jul 25, 2005
Messages
221
OH.............MAH..........GAWD..........
YOU NAILED IT ON THE SPOT MAN YOU GOT THE IDEA!!!!! As I said in the first post kudos to you on my map and heres a rep point
Btw, you should upload this spell and present it to THW for all to use, just make sure you tell em I came up with the idea XD

I put credit in the map so you're mentioned.
I don't think this is worth presenting to the hive yet, there are still some things that need to be done.

Well mine is Really Smaller and Easier to apply and do it ....
why did u use his Triger it's too complicated and comes with the same result as mine :/
Yes, as I said when I posted, it can be done in alot of different ways, but it's more fun doing it all by yourself, sorta like a home made shockwave, if you get my idea. Besides, this way you can control every aspect of the spell.

Now that that has been taken care of, any more spells you want done?
Don't matter how complicated they are, the harder the better.

Make sure to type all the necessary data, but don't worry about the description; it's my favorite part!
 
Level 5
Joined
Mar 5, 2009
Messages
138
Well, well looks like I found a spell maker who likes my requests. I dont' have any spell request at the moment, but if I've got one that I can't make by myself Ill be more than happy to present you with an idea. =)

Oh P.S
Rmx I really couldnt capture your idea with the carrion swarm ability.
 
Level 6
Joined
Jul 25, 2005
Messages
221
Here is what he meant, I created this in a very short period of time, so the upside with this method is that it's quick.
But, some disadvantages as well, which I bring up in the map's comments.

Anyway, here is the trigger(s)

Initialize variables
  • Initialize Variables
    • Events
      • Map initialization
    • Conditions
    • Actions
      • Set real_DivideDegree = 30.00
Execute the spell
  • Alternate TriPower Shot
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to TriPower Shot
    • Actions
      • Set point_Spawn = ((Position of (Triggering unit)) offset by 50.00 towards (Angle from (Position of (Triggering unit)) to (Target point of ability being cast)) degrees)
      • For each (Integer A) from 1 to 3, do (Actions)
        • Loop - Actions
          • Set real_Divide = (((Angle from point_Spawn to (Target point of ability being cast)) - (real_DivideDegree x 2.00)) + (real_DivideDegree x (Real((Integer A)))))
          • Set point_Target = ((Position of (Last created unit)) offset by 1750.00 towards real_Divide degrees)
          • Unit - Create 1 Dummy for (Owner of (Triggering unit)) at point_Spawn facing 0.00 degrees
          • Unit - Set level of Carrion Swarm for (Last created unit) to (Level of TriPower Shot for (Triggering unit))
          • Unit - Order (Last created unit) to Undead Dreadlord - Carrion Swarm point_Target
          • Unit - Add a 3.00 second Generic expiration timer to (Last created unit)
          • Custom script: call RemoveLocation(udg_point_Target)
      • Custom script: call RemoveLocation(udg_point_Spawn)
PS. Don't look at the map size, the first map had more preplaced units and destructibles
 

Attachments

  • Alternate TriPower Shot.w3x
    20.1 KB · Views: 39
Last edited:
Level 5
Joined
Mar 5, 2009
Messages
138
Here is what he meant, I created this in a very short period of time, so the upside with this method is that it's quick.
But, some disadvantages as well, which I bring up in the map's comments.

Anyway, here is the trigger(s)

Initialize variables
  • Initialize Variables
    • Events
      • Map initialization
    • Conditions
    • Actions
      • Set real_DivideDegree = 30.00
Execute the spell
  • Alternate TriPower Shot
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to TriPower Shot
    • Actions
      • Set point_Spawn = ((Position of (Triggering unit)) offset by 50.00 towards (Angle from (Position of (Triggering unit)) to (Target point of ability being cast)) degrees)
      • For each (Integer A) from 1 to 3, do (Actions)
        • Loop - Actions
          • Set real_Divide = (((Angle from point_Spawn to (Target point of ability being cast)) - (real_DivideDegree x 2.00)) + (real_DivideDegree x (Real((Integer A)))))
          • Set point_Target = ((Position of (Last created unit)) offset by 1750.00 towards real_Divide degrees)
          • Unit - Create 1 Dummy for (Owner of (Triggering unit)) at point_Spawn facing 0.00 degrees
          • Unit - Set level of Carrion Swarm for (Last created unit) to (Level of TriPower Shot for (Triggering unit))
          • Unit - Order (Last created unit) to Undead Dreadlord - Carrion Swarm point_Target
          • Unit - Add a 3.00 second Generic expiration timer to (Last created unit)
          • Custom script: call RemoveLocation(udg_point_Target)
      • Custom script: call RemoveLocation(udg_point_Spawn)
PS. Don't look at the map size, the first map had more preplaced units and destructibles

Well I see your point now ShadowMan, the one Rmx thought of is faster but it is indeed harder to control and not as neat as the other one you made, the arrows also tend to fly off in different directions also and arent as accurate, but that makes it a bit realistic since it is harder to shoot three arrows at once.
 
Level 6
Joined
Jul 25, 2005
Messages
221
Haha, indeed, it does make for a nice realistic spell. However, if you noticed, it tend only to fly oddly around 315 - 45 degrees.
Again, I did this rather hastily, so I might have done something wrong by mistake. Anyway, you have to know that there are several ways to approach spells.
My favorites:
1) Doing everything from scratch, this way you get perfect results and you can change everything.
2) Use the existing abilites to your advantage, thus, getting fast and somewhat fine results
 
Status
Not open for further replies.
Top