# Kawaii Spell Workshop

Discussion in 'Requests' started by Malhorne, Oct 17, 2013.

Not open for further replies.
1. ### chobibo

Joined:
Sep 24, 2005
Messages:
2,702
Resources:
0
Resources:
0
He said 1000 units wide, so that must be the diameter.

2. ### xAerox

Joined:
Jun 28, 2013
Messages:
370
Resources:
0
Resources:
0
So the range is diameter + collision? @w@

3. ### chobibo

Joined:
Sep 24, 2005
Messages:
2,702
Resources:
0
Resources:
0
You're getting confused because of the term range, range could mean the length of something. That's why I was asking you what you need it for specifically, so I could answer it more precisely.

4. ### xAerox

Joined:
Jun 28, 2013
Messages:
370
Resources:
0
Resources:
0
Um, I was using Unit Group Range - RangeWithin which means AOE Circle

Then one end to another end was a diameter.
I want to create a dummy unit from the start of a diameter n he will move forward until the end of the diameter. So the range of the previous AOE range I put is 1000.

Then I move on trying to move unit. I use Coordinates and "SetUnitX/Y" and move it 1000 "coordinate range" forward.(Because I thought the diameter will be 1000) but he moved very very very very very far away.

So, why? @_@ I hope that's enough to explain. >_<

5. ### chobibo

Joined:
Sep 24, 2005
Messages:
2,702
Resources:
0
Resources:
0
 like this?

File size:
8.8 KB
Views:
70
6. ### xAerox

Joined:
Jun 28, 2013
Messages:
370
Resources:
0
Resources:
0
Yesss! 8D sry, but I edit your image:
Image
ACTUALLY EVEN FURTHER THAN POINT C!!!

File size:
36.7 KB
Views:
73
7. ### chobibo

Joined:
Sep 24, 2005
Messages:
2,702
Resources:
0
Resources:
0
The code is wrong, you should divide the range (in your terms, AoE+collision) with the period (0.03). So it should be move forward by (AoE+collision)/period every 0.03 sec.

8. ### xAerox

Joined:
Jun 28, 2013
Messages:
370
Resources:
0
Resources:
0
But 1000 / 0.03 = 33333.333333333333333333333333333333333333333333~
Which means he is moving 33333.3333333333333333333333333333333~ forward every 0.03 seconds.

1000 x 0.03 = 30, Only he is moving 30 units forward every 0.03 seconds.

O wait, there is another problem, I set the maximum number 1000 and i check if the distance the unit moved is already 1000, he'll stop. So he stop after traveling 1000 which is point C, but why?

The AOE is 1000 which means diameter is 1032 with the collision but why traveling 1000 forward will make you reach far beyond the diameter length?

9. ### chobibo

Joined:
Sep 24, 2005
Messages:
2,702
Resources:
0
Resources:
0
Oh yeah haha wait...
Edit:
I forgot about the time, it should be 1000/(time/period)

Edit:
Because your moving it more than once, if you want it to move 1000 units towards point b then you should move it little by little until it reaches 1000.

10. ### Shanghai

Joined:
Feb 15, 2008
Messages:
2,190
Resources:
2
Maps:
2
Resources:
2
Spell Bomb
I have a item spell request. (GUI) / (MUI)

Name: Bomb

AoE Damage 400
Effects Flame strike (Gona do the same effects as flame strike)

1. You drop the bomb on the ground and after 3 second it blow the ground.
2. Timer on 3 seconds. Gona show red little text 3.2.1 then the explosion will be there.
3. You will see the bomb be there on the ground then disapair when explosion comes.
4. The spell should be planted under your hero when click the item.
5. Should only damage enemy units. Not your self or friends.

Can you do it?

Last edited: Dec 17, 2013
11. ### Malhorne

Joined:
Sep 14, 2012
Messages:
2,330
Resources:
6
Spells:
4
Tutorials:
1
JASS:
1
Resources:
6
Use our template bro

@xAerox -> 0.0312500s period

Joined:
Feb 15, 2008
Messages:
2,190
Resources:
2
Maps:
2
Resources:
2

13. ### xAerox

Joined:
Jun 28, 2013
Messages:
370
Resources:
0
Resources:
0
Okay, I checked my spell again, it does move by a little until it reaches 1000 then i stop it but that fail, i change the number to ~300 n it looks fine. Lemme just post the map and the code here.

Code
Config
• Events
• Map initialization
• Conditions
• Actions
• -------- Kill Trees? --------
• Set HT_Condition[5] = True
• -------- Distance of Diameter of Spawn --------
• Set HT_Diameter[1] = 1000.00
• Set HT_Diameter[2] = 1000.00
• Set HT_Diameter[3] = 1000.00
• -------- Damage per Second x7 --------
• Set HT_Damage_PS[1] = 50.00
• Set HT_Damage_PS[2] = 75.00
• Set HT_Damage_PS[3] = 100.00
• -------- Multiplication for Agility Damage --------
• Set HT_Damage_Attri_Multiply[1] = 1.50
• Set HT_Damage_Attri_Multiply[2] = 1.75
• Set HT_Damage_Attri_Multiply[3] = 2.00
• -------- Final Hit Damage --------
• Set HT_Damage_Final[1] = 400.00
• Set HT_Damage_Final[2] = 500.00
• Set HT_Damage_Final[3] = 600.00
• -------- Dummy INT --------
• Set HT_Dummy_Int = 1
• -------- Hashtable --------
• Hashtable - Create a hashtable
• Set HT_Hash = (Last created hashtable)

Cast
• Events
• Unit - A unit Starts the effect of an ability
• Conditions
• (Ability being cast) Equal to (==) Hassou Tobi
• Actions
• If (HT_Count Greater than or equal to (>=) 1000) then do (Set HT_Count = 0) else do (Set HT_Count = (HT_Count + 1))
• If (Loop_1_Count Greater than or equal to (>=) 1000) then do (Set Loop_1_Count = 0) else do (Set Loop_1_Count = (Loop_1_Count + 1))
• Set Loop_1[Loop_1_Count] = 0
• Set HT_Caster[HT_Count] = (Triggering unit)
• Set HT_Level = (Level of Hassou Tobi for HT_Caster[HT_Count])
• Set HT_TempLoc[HT_Count] = (Target point of ability being cast)
• Set HT_TempLoc3[HT_Count] = (Position of HT_Caster[HT_Count])
• Set HT_Index = (HT_Index + 1)
• Unit - Hide HT_Caster[HT_Count]
• Unit - Turn collision for HT_Caster[HT_Count] Off
• Do Multiple ActionsFor each (Integer Loop_1[Loop_1_Count]) from 1 to 8, do (Actions)
• Loop - Actions
• Set HT_TempLoc2[HT_Count] = (HT_TempLoc[HT_Count] offset by (HT_Diameter[HT_Level] / 2.00) towards (45.00 x (Real(Loop_1[Loop_1_Count]))) degrees)
• Unit - Create 1 Dummy for (Owner of (Triggering unit)) at HT_TempLoc3[HT_Count] facing (Angle from HT_TempLoc2[HT_Count] to HT_TempLoc[HT_Count]) degrees
• Unit - Add Effect (+2) to (Last created unit)
• Unit - Move (Last created unit) instantly to HT_TempLoc2[HT_Count], facing (Angle from HT_TempLoc2[HT_Count] to HT_TempLoc[HT_Count]) degrees
• Set HT_KeyId = (Key (Last created unit))
• Set HT_Temp_Unit[Loop_1[Loop_1_Count]] = (Last created unit)
• Unit Group - Add (Last created unit) to HT_Dummy_Group
• Animation - Change (Last created unit)'s vertex coloring to (100.00%, 100.00%, 100.00%) with 35.00% transparency
• Custom script: call SetUnitAnimationByIndex( GetLastCreatedUnit(), 14)
• Hashtable - Save HT_Level as 0 of HT_KeyId in HT_Hash
• Hashtable - Save HT_Count as 1 of HT_KeyId in HT_Hash
• Hashtable - Save 0.00 as 2 of HT_KeyId in HT_Hash
• Custom script: call RemoveLocation(udg_HT_TempLoc2[udg_HT_Count])
• Unit - Move HT_Caster[HT_Count] instantly to HT_TempLoc[HT_Count]
• Custom script: call RemoveLocation(udg_HT_TempLoc[udg_HT_Count])
• Custom script: call RemoveLocation(udg_HT_TempLoc3[udg_HT_Count])
• Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
• If - Conditions
• HT_Index Equal to (==) 1
• Then - Actions
• Trigger - Turn on Hassou Tobi Loops <gen>
• Else - Actions

Loop
• Events
• Time - Every 0.03 seconds of game time
• Actions
• Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
• If - Conditions
• (HT_Dummy_Group is empty) Equal to (==) False
• Then - Actions
• Custom script: set udg_HT_KeyId = GetHandleId(udg_HT_Temp_Unit[udg_HT_Dummy_Int])
• Set HT_DistX = (Load 2 of HT_KeyId from HT_Hash)
• Set HT_Level = (Load 0 of HT_KeyId from HT_Hash)
• Set HT_TempLoc[HT_Count] = (Position of HT_Temp_Unit[HT_Dummy_Int])
• Set HT_TempLoc2[HT_Count] = (HT_TempLoc[HT_Count] offset by HT_DistX towards (Facing of HT_Temp_Unit[HT_Dummy_Int]) degrees)
• Set HT_TempLoc3[HT_Count] = (Position of HT_Caster[HT_Count])
• Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
• If - Conditions
• 270.00 Greater than (>) HT_DistX
• Then - Actions
• Hashtable - Save (HT_DistX + 30.00) as 2 of HT_KeyId in HT_Hash
• Unit - Move HT_Temp_Unit[HT_Dummy_Int] instantly to HT_TempLoc2[HT_Count]
• Else - Actions
• Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
• If - Conditions
• HT_Dummy_Int Equal to (==) 8
• HT_Dummy_Int Greater than (>) 7
• Then - Actions
• Set HT_Damage_Attri[HT_Count] = (HT_Damage_Attri_Multiply[HT_Level] x (Real((Agility of HT_Caster[HT_Count] (Include bonuses)))))
• Set HT_Damage_Total_Final[HT_Count] = (HT_Damage_Final[HT_Level] + HT_Damage_Attri[HT_Count])
• Set HT_TempGroup = (Units within 800.00 of HT_TempLoc3[HT_Count] matching ((((Matching unit) belongs to an ally of (Owner of HT_Caster[HT_Count])) Equal to (==) False) and (((Matching unit) is alive) Equal to (==) True)))
• Unit Group - Pick every unit in HT_TempGroup and do (Actions)
• Loop - Actions
• Unit - Cause HT_Caster[HT_Count] to damage (Picked unit), dealing HT_Damage_Total_Final[HT_Count] damage of attack type Hero and damage type Normal
• Unit - Create 1 Dummy for (Owner of HT_Caster[HT_Count]) at HT_TempLoc3[HT_Count] facing Default building facing (270.0) degrees
• Unit - Add a 3.00 second Generic expiration timer to (Last created unit)
• Unit - Turn collision for (Last created unit) Off
• Animation - Change (Last created unit)'s size to (300.00%, 300.00%, 300.00%) of its original size
• Special Effect - Create a special effect attached to the origin of (Last created unit) using Abilities\Spells\Orc\WarStomp\WarStompCaster.mdl
• Special Effect - Destroy (Last created special effect)
• Unit Group - Remove all units from HT_TempGroup
• Custom script: call DestroyGroup(udg_HT_TempGroup)
• Unit - Remove HT_Temp_Unit[HT_Dummy_Int] from the game
• Unit Group - Remove all units from HT_Dummy_Group
• Unit - Unhide HT_Caster[HT_Count]
• Unit - Turn collision for HT_Caster[HT_Count] On
• Selection - Select HT_Caster[HT_Count] for (Owner of HT_Caster[HT_Count])
• Hashtable - Save 0.00 as 2 of HT_KeyId in HT_Hash
• Set HT_Index = (HT_Index - 1)
• Set HT_Dummy_Int = 1
• Hashtable - Clear all child hashtables of child HT_KeyId in HT_Hash
• Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
• If - Conditions
• HT_Index Less than or equal to (<=) 0
• Then - Actions
• Trigger - Turn off (This trigger)
• Else - Actions
• Custom script: call RemoveLocation(udg_HT_TempLoc[udg_HT_Count])
• Custom script: call RemoveLocation(udg_HT_TempLoc2[udg_HT_Count])
• Custom script: call RemoveLocation(udg_HT_TempLoc3[udg_HT_Count])
• Skip remaining actions
• Else - Actions
• Multiple FunctionsIf (All Conditions are True) then do (Then Actions) else do (Else Actions)
• If - Conditions
• HT_Dummy_Int Less than or equal to (<=) 7
• HT_Dummy_Int Less than (<) 8
• Then - Actions
• Set HT_Damage_Attri[HT_Count] = (HT_Damage_Attri_Multiply[HT_Level] x (Real((Agility of HT_Caster[HT_Count] (Include bonuses)))))
• Set HT_Damage_Total_PS[HT_Count] = (HT_Damage_PS[HT_Level] + HT_Damage_Attri[HT_Count])
• Set HT_TempGroup = (Units within 800.00 of HT_TempLoc3[HT_Count] matching ((((Matching unit) belongs to an ally of (Owner of HT_Caster[HT_Count])) Equal to (==) False) and (((Matching unit) is alive) Equal to (==) True)))
• Unit Group - Pick every unit in HT_TempGroup and do (Actions)
• Loop - Actions
• Unit - Cause HT_Caster[HT_Count] to damage (Picked unit), dealing HT_Damage_Total_PS[HT_Count] damage of attack type Hero and damage type Normal
• Unit - Create 1 Dummy for (Owner of HT_Caster[HT_Count]) at HT_TempLoc3[HT_Count] facing Default building facing (270.0) degrees
• Unit - Add a 3.00 second Generic expiration timer to (Last created unit)
• Unit - Turn collision for (Last created unit) Off
• Animation - Change (Last created unit)'s size to (300.00%, 300.00%, 300.00%) of its original size
• Special Effect - Create a special effect attached to the origin of (Last created unit) using Abilities\Spells\Orc\WarStomp\WarStompCaster.mdl
• Special Effect - Destroy (Last created special effect)
• Unit Group - Remove all units from HT_TempGroup
• Custom script: call DestroyGroup(udg_HT_TempGroup)
• Unit - Remove HT_Temp_Unit[HT_Dummy_Int] from the game
• Hashtable - Save 0.00 as 2 of HT_KeyId in HT_Hash
• Set HT_Dummy_Int = (HT_Dummy_Int + 1)
• Custom script: call SetUnitAnimationByIndex( udg_HT_Temp_Unit[udg_HT_Dummy_Int], 7)
• Else - Actions
• Custom script: call RemoveLocation(udg_HT_TempLoc[udg_HT_Count])
• Custom script: call RemoveLocation(udg_HT_TempLoc2[udg_HT_Count])
• Custom script: call RemoveLocation(udg_HT_TempLoc3[udg_HT_Count])
• Else - Actions

View attachment Hassou Tobi.w3x Spell isn't MUI yet, will make it MUI until I discover the mystery of range and stuff. PS: I accidentally use hero as dummy but this is just a test map.

No its not, this is my spell. I post it here because I'm trying to discover a mystery. XD BTW, Can i take your request but I'll finish it 2morrow? But pls follow the format given already by Malhorne :3

14. ### Malhorne

Joined:
Sep 14, 2012
Messages:
2,330
Resources:
6
Spells:
4
Tutorials:
1
JASS:
1
Resources:
6
I don't review GUI spells ^^

15. ### Shanghai

Joined:
Feb 15, 2008
Messages:
2,190
Resources:
2
Maps:
2
Resources:
2
who wana make my spell?

Joined:
Sep 14, 2012
Messages:
2,330
Resources:
6
Spells:
4
Tutorials:
1
JASS:
1
Resources:
6
17. ### kenegeneget13

Joined:
Apr 17, 2013
Messages:
376
Resources:
2
Maps:
2
Resources:
2
does it also return the damage of the spells??

18. ### Rheiko

Joined:
Aug 27, 2013
Messages:
2,936
Resources:
7
Icons:
2
Spells:
3
Tutorials:
2
Resources:
7
Whose request is Hassou Tobi!!??

19. ### xAerox

Joined:
Jun 28, 2013
Messages:
370
Resources:
0
Resources:
0
I'LL TAKE THE SPELL!!!!!

I post it here to ask for help about the range and AOE thing :3 Sry about that..

How much is the AOE then? 400 too?

Last edited: Dec 18, 2013
20. ### chobibo

Joined:
Sep 24, 2005
Messages:
2,702
Resources:
0
Resources:
0
No problem dude, just wait for another GUI guy to help.