- Joined
- Jun 9, 2008
- Messages
- 734
ok here's my WIP...nothing special 

Follow along with the video below to see how to install our site as a web app on your home screen.
Note: This feature may not be available in some browsers.

Target Choosing

Events


Unit - A unit Begins casting an ability

Conditions


(Ability being cast) Equal to Choose Target!

Actions


Unit - Order (Triggering unit) to Stop


Unit - Remove Choose Target! from (Triggering unit)


Set Temp_Loc = (Target point of ability being cast)


Set Temp_Group = (Units owned by (Owner of (Triggering unit)) matching ((Unit-type of (Matching unit)) Equal to Troubled Treant))


Unit Group - Pick every unit in Temp_Group and do (Actions)



Loop - Actions




If (All Conditions are True) then do (Then Actions) else do (Else Actions)





If - Conditions






(Load Caster of (Key (Picked unit)) in Troubled_Treant_Hash) Equal to (Triggering unit)





Then - Actions






Hashtable - Save Handle OfTemp_Loc as Landing_Loc of (Key (Picked unit)) in Troubled_Treant_Hash






Hashtable - Save True as Has_Target of (Key (Picked unit)) in Troubled_Treant_Hash





Else - Actions


Custom script: call RemoveLocation(udg_Temp_Loc)


Custom script: call DestroyGroup(udg_Temp_Group)
Okay everyone, I'm down to the last bug.
Temp_Loc doesn't save correctly in this trigger, it defaults to center of playable map area every time. I don't know why. Does anyone else know?
Target Choosing
Events
Unit - A unit Begins casting an ability
Conditions
(Ability being cast) Equal to Choose Target!
Actions
Unit - Order (Triggering unit) to Stop
Unit - Remove Choose Target! from (Triggering unit)
Set Temp_Loc = (Target point of ability being cast)
Set Temp_Group = (Units owned by (Owner of (Triggering unit)) matching ((Unit-type of (Matching unit)) Equal to Troubled Treant))
Unit Group - Pick every unit in Temp_Group and do (Actions)
Loop - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
If - Conditions
(Load Caster of (Key (Picked unit)) in Troubled_Treant_Hash) Equal to (Triggering unit)
Then - Actions
Hashtable - Save Handle OfTemp_Loc as Landing_Loc of (Key (Picked unit)) in Troubled_Treant_Hash
Hashtable - Save True as Has_Target of (Key (Picked unit)) in Troubled_Treant_Hash
Else - Actions
Custom script: call RemoveLocation(udg_Temp_Loc)
Custom script: call DestroyGroup(udg_Temp_Group)
The issue is that it only fixes one of the treants.... Here, i'll post my 99% completed WIP... 1 sec
Here you are, see if you can figure it out
View attachment 84622
And give me a review too, please
EDIT:THE PROBLEM HAS BEEN FIXED!
Here is the final spell, but not my final submission (i'ma make the map nicer). Please leave me comments!
View attachment 84631


ok here's my WIP...nothing special
My Final Submission Has Arrived!!!!
Thanks for the review Kercyn, i've reformatted the tooltip (tell me if you like it), and yea, i've added moar bookz.
Force Of Nature Gone Awry
Converts a small area of trees into Treants. The caster has ADD, however, and loses focus halfway through casting the spell. This causes unrestrained magic to fling the newly made treants up into the air. The hero can then choose a target (using a spell given after launch) for the high-flying treants to land around. If a target is not chosen, they land around the hero. The hero has 5 seconds before the treants land. When they reach the ground, each treant deals 65 damage and depletes 25 mana in a 250 AoE. Each level increases the number of treants spawned.
View attachment 84641
Deadline's not up yet, so any further comments would be greatly appreciated.

nothing special lols
you always do good god damn it
just a question, you zinced this or just vjass?
btw looking good

Grrrrrr I can't still find nice idea to replace my spell Wrath of Nature!
Why nature always must be trees and green stuff![]()
I got a nice idea.
Im joining this.

i'm using vjass, but i can do both![]()
So the judges are allowed to give feedback? Hmm
Spencenator
Aside from the things I told you about (the exclamation mark and icons), you have a bug.
The targeting spell is being given twice for the unit (for some strange reason) in the first seconds after spell cast, if the target is chosen within the 2nd second after spell cast the ability appears again and another target can be chosen leaving the first exclamation mark on the ground forever!
If (All Conditions are True) then do (Then Actions) else do (Else Actions)

If - Conditions


(Level of Choose Target! for (Load Caster of (Key (Picked unit)) in Troubled_Treant_Hash)) Not equal to 1

Then - Actions


Unit - Add Choose Target! to (Load Caster of (Key (Picked unit)) in Troubled_Treant_Hash)

Else - Actions
perhaps your war3 bugged?
@kilingo
I think the poison needs to deal more damage, it doesn't currently do a whole lot
It was difficult to tell what stasis they got and who got it, perhaps have individual sfx above effected creeps?
It's still very difficult to hit anything with, although i'm not sure how you would fix that.
Otherwise it's good, good luck!
So what did poison do? perhaps you should explain the buffs in tooltip better
Hahaha here my Early WIP.... not close to done....you have to wait
I just starting working on it... forgot bout the Comp...so i must make haste

Hahaha here my Early WIP.... not close to done....you have to wait
I just starting working on it... forgot bout the Comp...so i must make haste
Well here it is: Click@ -Kobas- serious!... DAMNIT
Nature Enchantment Cast

Events


Unit - A unit Starts the effect of an ability

Conditions


(Ability being cast) Equal to Nature Enchantment

Actions


If (All Conditions are True) then do (Then Actions) else do (Else Actions)



If - Conditions




NE_Index[1] Equal to 0



Then - Actions




Trigger - Turn on Nature Enchantment Loop <gen>



Else - Actions


-------- ------------------------------------------------------------ --------


Set NE_Index[2] = (NE_Index[2] + 1)


-------- ------------------------------------------------------------ --------


Set NE_Caster[NE_Index[2]] = (Triggering unit)


Set NE_CasterLoc[NE_Index[2]] = (Position of (Triggering unit))


-------- ------------------------------------------------------------ --------


Set NE_MaxDistance[NE_Index[2]] = (400.00 + (50.00 x (Real((Level of (Ability being cast) for (Triggering unit))))))


Set NE_LifeTime[NE_Index[2]] = (20.00 + (10.00 x (Real((Level of (Ability being cast) for (Triggering unit))))))


Set NE_Chance[NE_Index[2]] = (5.00 + (2.00 x (Real((Level of (Ability being cast) for (Triggering unit))))))


Set NE_ProjectileAoE[NE_Index[2]] = 100.00


Set NE_ChangeAngle[NE_Index[2]] = 8.00


Set NE_Damage[NE_Index[2]] = 3.00


Set NE_Speed[NE_Index[2]] = 20.00


-------- ------------------------------------------------------------ --------


Set NE_CurrentDistance[NE_Index[2]] = 150.00


Set NE_Finish[NE_Index[2]] = False


Set NE_Angle[NE_Index[2]] = 0.00


-------- ------------------------------------------------------------ --------


Set NE_MaxTree[NE_Index[2]] = (6 + (4 + (Level of (Ability being cast) for (Triggering unit))))


Set NE_Bounce[NE_Index[2]] = (3 + (2 x (Level of (Ability being cast) for (Triggering unit))))


Set NE_ProjectileNumber[NE_Index[2]] = 5


-------- ------------------------------------------------------------ --------


Set NE_Effect[1] = Objects\Spawnmodels\NightElf\NECancelDeath\NECancelDeath.mdl


Set NE_Effect[2] = Abilities\Spells\Undead\Sleep\SleepSpecialArt.mdl


For each (Integer NE_Index[4]) from 1 to NE_ProjectileNumber[NE_Index[2]], do (Actions)



Loop - Actions




Set NE_NextLoc[NE_Index[2]] = (NE_CasterLoc[NE_Index[2]] offset by NE_CurrentDistance[NE_Index[2]] towards ((360.00 / (Real(NE_ProjectileNumber[NE_Index[2]]))) x (Real(NE_Index[4]))) degrees)




Unit - Create 1 Nature Enchantment Dummy for (Owner of (Triggering unit)) at NE_NextLoc[NE_Index[2]] facing Default building facing degrees




Unit - Turn collision for (Last created unit) Off




Set NE_Dummy[((NE_Index[2] x NE_ProjectileNumber[NE_Index[2]]) + NE_Index[4])] = (Last created unit)




Custom script: call RemoveLocation( udg_NE_NextLoc[ udg_NE_Index[ 2 ] ] )


Custom script: call RemoveLocation( udg_NE_CasterLoc[ udg_NE_Index[ 2 ] ] )
Nature Enchantment Loop

Events


Time - Every 0.03 seconds of game time

Conditions

Actions


Set NE_Index[1] = 0


For each (Integer NE_Index[3]) from 1 to NE_Index[2], do (Actions)



Loop - Actions




If (All Conditions are True) then do (Then Actions) else do (Else Actions)





If - Conditions






NE_Bounce[NE_Index[3]] Greater than 0





Then - Actions






Set NE_Index[1] = (NE_Index[1] + 1)






Set NE_CasterLoc[NE_Index[3]] = (Position of NE_Caster[NE_Index[3]])






Set NE_Angle[NE_Index[3]] = (NE_Angle[NE_Index[3]] + NE_ChangeAngle[NE_Index[3]])






If (All Conditions are True) then do (Then Actions) else do (Else Actions)







If - Conditions








NE_Booleen[NE_Index[3]] Equal to False







Then - Actions








Set NE_CurrentDistance[NE_Index[3]] = (NE_CurrentDistance[NE_Index[3]] + NE_Speed[NE_Index[3]])







Else - Actions








Set NE_CurrentDistance[NE_Index[3]] = (NE_CurrentDistance[NE_Index[3]] - NE_Speed[NE_Index[3]])






If (All Conditions are True) then do (Then Actions) else do (Else Actions)







If - Conditions








NE_CurrentDistance[NE_Index[3]] Less than or equal to 0.00







Then - Actions








Set NE_Booleen[NE_Index[3]] = False








Unit Group - Remove all units from NE_NonDamageGroup[NE_Index[3]]








Set NE_Bounce[NE_Index[3]] = (NE_Bounce[NE_Index[3]] - 1)







Else - Actions






If (All Conditions are True) then do (Then Actions) else do (Else Actions)







If - Conditions








NE_CurrentDistance[NE_Index[3]] Greater than or equal to NE_MaxDistance[NE_Index[3]]







Then - Actions








Set NE_Booleen[NE_Index[3]] = True







Else - Actions






If (All Conditions are True) then do (Then Actions) else do (Else Actions)







If - Conditions








NE_Bounce[NE_Index[3]] Greater than 0







Then - Actions








For each (Integer NE_Index[4]) from 1 to NE_ProjectileNumber[NE_Index[3]], do (Actions)









Loop - Actions










Set NE_NextLoc[NE_Index[3]] = (NE_CasterLoc[NE_Index[3]] offset by NE_CurrentDistance[NE_Index[3]] towards ((((360.00 / (Real(NE_ProjectileNumber[NE_Index[3]]))) x (Real(NE_Index[4]))) + NE_Angle[NE_Index[3]]) + 1.00) degrees)










Set NE_TempGroup = (Units within NE_ProjectileAoE[NE_Index[3]] of NE_NextLoc[NE_Index[3]] matching (((Matching unit) belongs to an enemy of (Owner of NE_Caster[NE_Index[3]])) Equal to True))










Unit - Move NE_Dummy[((NE_Index[3] x NE_ProjectileNumber[NE_Index[3]]) + NE_Index[4])] instantly to NE_NextLoc[NE_Index[3]]










Unit Group - Pick every unit in NE_TempGroup and do (Actions)











Loop - Actions












Unit - Cause NE_Caster[NE_Index[3]] to damage (Picked unit), dealing NE_Damage[NE_Index[3]] damage of attack type Spells and damage type Plant












Unit Group - Add (Picked unit) to NE_NonDamageGroup[NE_Index[3]]










Destructible - Pick every destructible within NE_ProjectileAoE[NE_Index[3]] of NE_NextLoc[NE_Index[3]] and do (Actions)











Loop - Actions












If (All Conditions are True) then do (Then Actions) else do (Else Actions)













If - Conditions














Or - Any (Conditions) are true















Conditions
















(Destructible-type of (Picked destructible)) Equal to Mur d'arbres d'été
















(Destructible-type of (Picked destructible)) Equal to Mur d'arbres d'Ashenvale
















(Destructible-type of (Picked destructible)) Equal to Canopée d'Ashenvale
















(Destructible-type of (Picked destructible)) Equal to Mur d'arbres de Barrens
















(Destructible-type of (Picked destructible)) Equal to Canopée de Barrens
















(Destructible-type of (Picked destructible)) Equal to Mur d'arbres de ville d'été
















(Destructible-type of (Picked destructible)) Equal to Mur d'arbres de Felwood
















(Destructible-type of (Picked destructible)) Equal to Canopée de Felwood
















(Destructible-type of (Picked destructible)) Equal to Mur d'arbres d'été
















(Destructible-type of (Picked destructible)) Equal to Mur d'arbres en ruines
















(Destructible-type of (Picked destructible)) Equal to Cime d'arbre des ruines
















(Destructible-type of (Picked destructible)) Equal to Mur d'arbres du village













Then - Actions














If (All Conditions are True) then do (Then Actions) else do (Else Actions)















If - Conditions
















NE_MaxTree[NE_Index[3]] Greater than 0















Then - 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


















Set NE_TreeLoc[NE_Index[3]] = (Position of (Picked destructible))


















If (All Conditions are True) then do (Then Actions) else do (Else Actions)



















If - Conditions




















(Random percentage) Less than or equal to NE_Chance[NE_Index[3]]



















Then - Actions




















Destructible - Kill (Picked destructible)




















Set NE_MaxTree[NE_Index[3]] = (NE_MaxTree[NE_Index[3]] - 1)




















Unit - Create 1 Treant for (Owner of NE_Caster[NE_Index[3]]) at NE_TreeLoc[NE_Index[3]] facing NE_CasterLoc[NE_Index[3]]




















Unit - Add a NE_LifeTime[NE_Index[3]] second Generic expiration timer to (Last created unit)




















Unit - Turn collision for (Last created unit) Off




















Special Effect - Create a special effect at NE_NextLoc[NE_Index[3]] using NE_Effect[1]




















Special Effect - Destroy (Last created special effect)




















If (All Conditions are True) then do (Then Actions) else do (Else Actions)





















If - Conditions






















NE_MaxTree[NE_Index[3]] Equal to 0





















Then - Actions






















Set NE_Bounce[NE_Index[3]] = 0





















Else - Actions



















Else - Actions


















Special Effect - Create a special effect at NE_TreeLoc[NE_Index[3]] using NE_Effect[2]


















Special Effect - Destroy (Last created special effect)


















Custom script: call RemoveLocation( udg_NE_TreeLoc[ udg_NE_Index[ 3 ] ] )

















Else - Actions















Else - Actions













Else - Actions










Custom script: call DestroyGroup( udg_NE_TempGroup )










Custom script: call RemoveLocation( udg_NE_NextLoc[ udg_NE_Index[ 3 ] ] )







Else - Actions






Custom script: call RemoveLocation( udg_NE_CasterLoc[ udg_NE_Index[ 3 ] ] )





Else - Actions






If (All Conditions are True) then do (Then Actions) else do (Else Actions)







If - Conditions








NE_Finish[NE_Index[3]] Equal to False







Then - Actions








Set NE_Finish[NE_Index[3]] = True








For each (Integer NE_Index[4]) from 1 to NE_ProjectileNumber[NE_Index[3]], do (Actions)









Loop - Actions










Unit - Kill NE_Dummy[((NE_Index[3] x NE_ProjectileNumber[NE_Index[3]]) + NE_Index[4])]







Else - Actions


If (All Conditions are True) then do (Then Actions) else do (Else Actions)



If - Conditions




NE_Index[1] Equal to 0



Then - Actions




Trigger - Turn off (This trigger)




Set NE_Index[2] = 0



Else - Actions
