• 🏆 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!

Kamehameha v4.0 [GUI] [Fixed]

This bundle is marked as useful / simple. Simplicity is bliss, low effort and/or may contain minor bugs.
  • Like
Reactions: GywGod133
Features:
1. Better Goku model - added
2. Remaking of the wave dummy - The head and path.
3. Some indexing fixed
4. New Explosion effect - Must find out !

  • Kamehameha Init
    • Events
      • Map initialization
    • Conditions
    • Actions
      • -------- The Spell Settings --------
      • Set Ka_Spell = Kamehameha
      • -------- ------------------- --------
      • Set Ka_Missle = newSolarBall.mdl
      • -------- ------------------- --------
      • Set Ka_HandEffectString = Bibang.mdl
      • -------- ------------------- --------
      • Set Ka_LeftHand = left hand
      • Set Ka_RightHand = right hand
      • -------- ------------------- --------
      • Set Ka_ExplosionString = NuclearExplosion.mdl
      • -------- ------------------- --------
      • Set Ka_Radius[1] = 100.00
      • Set Ka_Radius[2] = 500.00
      • -------- ------------------- --------
      • Set Ka_Damage[1] = 70.00
      • Set Ka_Damage[2] = 300.00
      • -------- ------------------- --------
      • Custom script: set udg_Ka_Timer = 0.03125
      • -------- ------------------- --------
      • Custom script: set udg_Ka_Harvester = CreateUnit(Player(15), 'hpea', 0, 0, 0)
      • Custom script: call UnitAddAbility(udg_Ka_Harvester, 'Aloc')
      • Unit - Hide Ka_Harvester
      • Set Ka_Harvest = (Order(harvest))
      • Trigger - Add to Kamehameha Loop <gen> the event (Time - Every Ka_Timer seconds of game time)
  • Kamehameha Cast
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Ability being cast) Equal to Ka_Spell
        • Then - Actions
          • Trigger - Turn on Kamehameha Loop <gen>
        • Else - Actions
      • Set Ka_Index = (Ka_Index + 1)
      • Set Ka_Order[Ka_Index] = (Order(Fire))
      • Set Ka_Owner[Ka_Index] = (Triggering player)
      • Set Ka_Caster[Ka_Index] = (Triggering unit)
      • Set Ka_CasterPos = (Position of Ka_Caster[Ka_Index])
      • Set Ka_Target[Ka_Index] = (Target point of ability being cast)
      • Set Ka_Angle[Ka_Index] = (Angle from Ka_CasterPos to Ka_Target[Ka_Index])
      • Unit - Create 1 Missle Head for Ka_Owner[Ka_Index] at Ka_CasterPos facing Ka_Angle[Ka_Index] degrees
      • Set Ka_Dummy[Ka_Index] = (Last created unit)
      • -------- The group creation --------
      • Custom script: set udg_Ka_PathGroup[udg_Ka_Index] = CreateGroup()
      • -------- ---------------- --------
      • Set Ka_TempLoc = (Ka_CasterPos offset by 50.00 towards Ka_Angle[Ka_Index] degrees)
      • Unit - Create 1 Missle Head for Ka_Owner[Ka_Index] at Ka_TempLoc facing Ka_Angle[Ka_IndexLoop] degrees
      • Set Ka_MissleFront[Ka_Index] = (Last created unit)
      • Custom script: call RemoveLocation (udg_Ka_TempLoc)
      • -------- ---------------- --------
      • -------- ---------------- --------
      • -------- Kamehameha Hand Effect Creation. --------
      • Special Effect - Create a special effect attached to the Ka_LeftHand of Ka_Caster[Ka_Index] using Bibang.mdx
      • Set Ka_HandEffect[Ka_Index] = (Last created special effect)
      • Special Effect - Create a special effect attached to the Ka_RightHand of Ka_Caster[Ka_Index] using Bibang.mdx
      • Set Ka_HandEffect2[Ka_Index] = (Last created special effect)
      • -------- ---------------- --------
      • -------- Setting of DistanceReached [Includes: Number] --------
      • Set Ka_DistanceReached[Ka_Index] = 50.00
      • -------- ---------------- --------
      • -------- Setting of the Missle's speed --------
      • Set Ka_Speed[Ka_Index] = 80.00
  • Kamehameha Loop
    • Events
    • Conditions
    • Actions
      • For each (Integer Ka_IndexLoop) from 1 to Ka_Index, do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • Ka_Order[Ka_IndexLoop] Equal to (Order(Fire))
            • Then - Actions
              • Set Ka_DummyPos = (Position of Ka_Dummy[Ka_IndexLoop])
              • Set Ka_DummyPos2[Ka_IndexLoop] = (Position of Ka_Dummy[Ka_IndexLoop])
              • Set Ka_Travel = (Ka_DummyPos2[Ka_IndexLoop] offset by Ka_Speed[Ka_IndexLoop] towards Ka_Angle[Ka_IndexLoop] degrees)
              • Unit - Move Ka_Dummy[Ka_IndexLoop] instantly to Ka_Travel
              • Custom script: call RemoveLocation (udg_Ka_Travel)
              • Set Ka_DummyCP = (Ka_DummyPos offset by -3.00 towards Ka_Angle[Ka_IndexLoop] degrees)
              • -------- ---------------- --------
              • Unit - Create 1 Missle Path for Ka_Owner[Ka_IndexLoop] at Ka_DummyCP facing Ka_Angle[Ka_IndexLoop] degrees
              • Unit Group - Add (Last created unit) to Ka_PathGroup[Ka_IndexLoop]
              • Animation - Change (Last created unit)'s animation speed to 0.00% of its original speed
              • Set Ka_DGroup1 = (Units within Ka_Radius[1] of Ka_DummyPos2[Ka_IndexLoop] matching (((Matching unit) belongs to an enemy of Ka_Owner[Ka_IndexLoop]) Equal to True))
              • Unit Group - Pick every unit in Ka_DGroup1 and do (Actions)
                • Loop - Actions
                  • Set Ka_DGroup1picked = (Picked unit)
                  • Unit - Cause Ka_Dummy[Ka_IndexLoop] to damage Ka_DGroup1picked, dealing Ka_Damage[1] damage of attack type Spells and damage type Universal
              • Custom script: call DestroyGroup (udg_Ka_DGroup1)
              • -------- ---------------- --------
              • Set Ka_DGroup1picked = No unit
              • Destructible - Pick every destructible within Ka_Radius[1] of Ka_DummyPos and do (Actions)
                • Loop - Actions
                  • Set Ka_Dest1 = (Picked destructible)
                  • Custom script: if IssueTargetOrderById(udg_Ka_Harvester, 852018, udg_Ka_Dest1) then
                  • Destructible - Kill Ka_Dest1
                  • Custom script: endif
                  • -------- ------------------- --------
              • Unit - Order Ka_Harvester to Stop
              • Set Ka_Distance[Ka_IndexLoop] = (Distance between Ka_DummyPos and Ka_Target[Ka_IndexLoop])
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • Ka_Distance[Ka_IndexLoop] Less than or equal to Ka_DistanceReached[Ka_IndexLoop]
                • Then - Actions
                  • Unit - Remove Ka_Dummy[Ka_IndexLoop] from the game
                  • Unit - Remove Ka_MissleFront[Ka_IndexLoop] from the game
                  • -------- ---------------- --------
                  • Unit - Create 1 Firega for Neutral Passive at Ka_DummyPos2[Ka_IndexLoop] facing Default building facing degrees
                  • Set Ka_Firega[Ka_IndexLoop] = (Last created unit)
                  • Unit - Add a 2.00 second Generic expiration timer to Ka_Firega[Ka_IndexLoop]
                  • -------- ---------------- --------
                  • Unit - Create 1 Dust Effect for Ka_Owner[Ka_IndexLoop] at Ka_DummyPos2[Ka_IndexLoop] facing Ka_Angle[Ka_IndexLoop] degrees
                  • Set Ka_Dust[Ka_IndexLoop] = (Last created unit)
                  • Unit - Add a 0.01 second Generic expiration timer to Ka_Dust[Ka_IndexLoop]
                  • -------- ---------------- --------
                  • Animation - Reset Ka_Caster[Ka_IndexLoop]'s animation
                  • Animation - Change Ka_Caster[Ka_IndexLoop]'s animation speed to 100.00% of its original speed
                  • -------- ---------------- --------
                  • Custom script: call RemoveLocation (udg_Ka_DummyPos)
                  • Special Effect - Destroy Ka_HandEffect[Ka_IndexLoop]
                  • Special Effect - Destroy Ka_HandEffect2[Ka_IndexLoop]
                  • -------- ---------------- --------
                  • Special Effect - Create a special effect at Ka_DummyPos2[Ka_IndexLoop] using Ka_ExplosionString
                  • Set Ka_Explosion[Ka_IndexLoop] = (Last created special effect)
                  • Special Effect - Destroy Ka_Explosion[Ka_IndexLoop]
                  • -------- ---------------- --------
                  • Set Ka_DummyPos2[Ka_IndexLoop] = (Position of Ka_Dummy[Ka_IndexLoop])
                  • Destructible - Pick every destructible within Ka_Radius[2] of Ka_DummyPos2[Ka_IndexLoop] and do (Actions)
                    • Loop - Actions
                      • Set Ka_Dest2 = (Picked destructible)
                      • Custom script: if IssueTargetOrderById(udg_Ka_Harvester, 852018, udg_Ka_Dest2) then
                      • Destructible - Kill Ka_Dest2
                      • Custom script: endif
                  • Unit - Order Ka_Harvester to Stop
                  • Set Ka_DGroupfinal = (Units within Ka_Radius[2] of Ka_DummyPos2[Ka_IndexLoop] matching (((Matching unit) belongs to an enemy of Ka_Owner[Ka_IndexLoop]) Equal to True))
                  • Unit Group - Pick every unit in Ka_DGroupfinal and do (Actions)
                    • Loop - Actions
                      • Set Ka_DGroupfinalpicked = (Picked unit)
                      • Unit - Cause Ka_Dummy[Ka_IndexLoop] to damage Ka_DGroupfinalpicked, dealing Ka_Damage[2] damage of attack type Spells and damage type Universal
                      • Custom script: call DestroyGroup (udg_Ka_DGroupfinal)
                  • Custom script: call RemoveLocation (udg_Ka_DummyPos2[udg_Ka_IndexLoop])
                  • -------- ---------------- --------
                  • Set Ka_DGroupfinalpicked = No unit
                  • Unit Group - Pick every unit in Ka_PathGroup[Ka_IndexLoop] and do (Actions)
                    • Loop - Actions
                      • Set Ka_DummyPicked = (Picked unit)
                      • Unit - Remove Ka_DummyPicked from the game
                  • Set Ka_DummyPicked = No unit
                  • -------- ---------------- --------
                  • Set Ka_MissleFront[Ka_IndexLoop] = Ka_MissleFront[Ka_Index]
                  • Set Ka_MissleFront[Ka_Index] = No unit
                  • -------- ---------------- --------
                  • Set Ka_Dust[Ka_IndexLoop] = Ka_Dust[Ka_Index]
                  • Set Ka_Dust[Ka_Index] = No unit
                  • -------- ---------------- --------
                  • Set Ka_Firega[Ka_IndexLoop] = Ka_Firega[Ka_Index]
                  • Set Ka_Firega[Ka_IndexLoop] = No unit
                  • -------- ---------------- --------
                  • Set Ka_DummyPos2[Ka_IndexLoop] = (Position of Ka_Dummy[Ka_IndexLoop])
                  • Custom script: call RemoveLocation (udg_Ka_DummyCP)
                  • -------- ---------------- --------
                  • Set Ka_HandEffect[Ka_IndexLoop] = Ka_HandEffect[Ka_Index]
                  • Custom script: set udg_Ka_HandEffect[udg_Ka_Index] = null
                  • -------- ---------------- --------
                  • Set Ka_HandEffect2[Ka_IndexLoop] = Ka_HandEffect2[Ka_Index]
                  • Custom script: set udg_Ka_HandEffect2[udg_Ka_Index] = null
                  • -------- ---------------- --------
                  • Set Ka_Explosion[Ka_IndexLoop] = Ka_Explosion[Ka_Index]
                  • Custom script: set udg_Ka_Explosion[udg_Ka_Index] = null
                  • -------- ---------------- --------
                  • Custom script: call DestroyGroup (udg_Ka_PathGroup[udg_Ka_IndexLoop])
                  • Set Ka_PathGroup[Ka_IndexLoop] = Ka_PathGroup[Ka_Index]
                  • Custom script: set udg_Ka_PathGroup[udg_Ka_Index] = null
                  • -------- ---------------- --------
                  • Set Ka_Owner[Ka_IndexLoop] = Ka_Owner[Ka_Index]
                  • Set Ka_Owner[Ka_Index] = Neutral Passive
                  • -------- ---------------- --------
                  • Set Ka_Caster[Ka_IndexLoop] = Ka_Caster[Ka_Index]
                  • Set Ka_Caster[Ka_Index] = No unit
                  • -------- ---------------- --------
                  • Set Ka_Dummy[Ka_IndexLoop] = Ka_Dummy[Ka_Index]
                  • Set Ka_Dummy[Ka_Index] = No unit
                  • -------- ---------------- --------
                  • Set Ka_Target[Ka_IndexLoop] = Ka_Target[Ka_Index]
                  • Custom script: set udg_Ka_Target[udg_Ka_Index] = null
                  • -------- ---------------- --------
                  • Set Ka_Angle[Ka_IndexLoop] = Ka_Angle[Ka_Index]
                  • -------- ---------------- --------
                  • Set Ka_Distance[Ka_IndexLoop] = Ka_Distance[Ka_Index]
                  • Set Ka_Distance[Ka_Index] = 0.00
                  • -------- ---------------- --------
                  • Set Ka_DistanceReached[Ka_IndexLoop] = Ka_DistanceReached[Ka_Index]
                  • Set Ka_DistanceReached[Ka_Index] = 0.00
                  • -------- ---------------- --------
                  • Set Ka_Index = (Ka_Index - 1)
                  • -------- ---------------- --------
                  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                    • If - Conditions
                      • Ka_Index Equal to 0
                    • Then - Actions
                      • Trigger - Turn off (This trigger)
                    • Else - Actions
                      • Set Ka_IndexLoop = (Ka_IndexLoop - 1)
                • Else - Actions
            • Else - Actions
Keywords:
kamehameha,kamehame,kameha,kame,kamehame wave,dbz,goku spell,dragonball,dragonball z,dragonball gt
Contents

Just another Warcraft III map (Map)

Reviews
12th Dec 2015 IcemanBo: Too long as NeedsFix. Rejected. 12:20, 1st Jan 2015 Maker: Using pause unit action is not allowed. It has side affects like pausing the duration of buffs.

Moderator

M

Moderator

12th Dec 2015
IcemanBo: Too long as NeedsFix. Rejected.

12:20, 1st Jan 2015
Maker: Using pause unit action is not allowed.
It has side affects like pausing the duration of buffs.
 
This'll be the second time I make this post (since the previous upload of this was deleted, and yeah use the update button, don't delete and reupload) with a fresh list of issues (and some repeated ones hence the use of the word "still")

  • Unit Group - Remove (Last created unit) from Ka_UG
Removes the wrong unit from the unit group, should remove the picked unit.

  • Unit - Move Ka_Dummy[Ka_Index[3]] instantly to Ka_Loc[4]
Still should be done with SetUnitX/SetUnitY custom script lines (see previous post I made on this spell on that old thread for explanation of why)

  • Ka_Boolean[Ka_Index[3]] Equal to True
This is never set to false so

  • Else - Actions
    • Set Ka_Index[1] = (Ka_Index[1] - 1)
    • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
      • If - Conditions
        • Ka_Index[1] Equal to 0
      • Then - Actions
        • Set Ka_Index[2] = 0
        • Trigger - Turn off (This trigger)
      • Else - Actions
Will never run

  • Unit - Kill (Picked unit)
Dummy units still need to be removed after they have been killed to prevent memory leaks

  • Unit Group - Pick every unit in Ka_UG and do (Actions)
    • Loop - Actions
      • Unit - Kill (Picked unit)
This will run and effect ALL units in association with this spell, thus if you cast two at once, the paths will be removed early, I believe I also pointed this out before.

You still lack a configuration trigger or general configuration, as I've already said this is against the rules of submissions, as it must support multiple levels by default.

  • Set Ka_Index[2] = 0
This is indexed incorrectly, it should be in line with other indexing

  • Set Ka_Index[1] = (Ka_Index[1] + 1)
Why have this if it's not used for anything? literally it's used for nothing other than turning off and on the other trigger, and that could be a function fulfilled by what you're using Ka_Index[2] for

The reason your path stops working is because you don't de-index properly, thus your unit group removal keeps being used, preventing the path from being created as it's constantly being removed (and trying to remove units that aren't part of the group, from the group) on top of your removal method via group selection being wrong in itself, you should use a unique ID value which connects all parts of the spell so that they can all be removed at once via scanning through the array looking for units with this same ID value

This should be taken to the trigger & scripts section (second time I've said this) the spell resource section is no place for unfinished works, please read the rules you agree to when uploading resources.

Also it /still/ doesn't even deal any damage what so ever, so it's just some "pretty lights" that serve no purpose
 
  • Destructible - Kill (Picked destructible)
If you're going to destroy destructibles, you need to filter out just he trees otherwise you'll destroy the bridges (and other key destructibles) an example of how you do this can be found http://www.hiveworkshop.com/forums/...ui-1-1-a-228385/?prev=search=tree&d=list&r=20 or in various other people's spells/systems

  • Ka_Boolean[Ka_IndexLoop] Equal to True
Is now redudant, remove it

  • Unit - Cause Ka_Dummy[Ka_IndexLoop] to damage Ka_DMGPU, dealing 300.00 damage of attack type Spells and damage type Universal
The damage source should be from the caster of the spell, not the dummy, this is to make the spell damage behave in a way like the normal spells in WC3.

Also again this spell must be able to be levelled, instead of having 1 fixed level

Configuration trigger still needed
Movement still done inefficiently
The dummy itself is killed but not removed even though the path is

  • Set Ka_DMGPU = No unit
This line is repeated, also it should be set to null instead (custom script line)

Eitherway looking much better, good progress
 
Additional to what was mentioned in other reviews:

  • Custom script: if udg_Ka_UG[udg_Ka_Index] == null then
  • Custom script: set udg_Ka_UG[udg_Ka_Index] = CreateGroup()
  • Custom script: endif
No need to check if it's null, it is always.

(Owner of Ka_Dummy[Ka_IndexLoop]) should be replaced by Set Ka_Owner[Ka_IndexLoop]

  • Set Ka_PickedUD = (Picked unit)
^Is not needed if you would use "PickedUnit" only once.

Point[array] is not really needed here. You just could use 2 normal point variables.

  • Set Ka_DMGUG = (Units within 200.00 of Ka_Loc[3] matching (((Matching unit) belongs to an enemy of (Owner of Ka_Dummy[Ka_IndexLoop])) Equal to True))
  • Unit Group - Pick every unit in Ka_DMGUG and do (Actions)
  • Loop - Actions
  • Set Ka_DMGPU = (Picked unit)
  • Unit - Cause Ka_Dummy[Ka_IndexLoop] to damage Ka_DMGPU, dealing 70.00 damage of attack type Spells and damage type Universal
^Leak

In your deindex part:

  • Unit Group - Pick every unit in Ka_UG[Ka_IndexLoop] and do (Actions)
^Here you should store PickedUnit into a variable.

Why this line: (?)
  • Custom script: call DestroyGroup (udg_Ka_DMGUG)
No need to remove units from a group you are going to destroy.

  • Set Ka_DMGPU = No unit
This line is repeated, also it should be set to null instead (custom script line)
I don't think there's a difference to null it via custom script.
 
You should improve the description. Explain in short statements what the spell exactly does, so it can be differed easily with an other kamehameha.

An ingame screenshot would also be very useful, that the user immediatly can analyse the visuals.

  • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
  • If - Conditions
    • (Ability being cast) Equal to Ka_Spell
  • Then - Actions
    • Trigger - Turn on Kamehameha Loop <gen>
  • Else - Actions
^Replace the trigger condition by the condition you use in code shown above.
Check if index == 1 before you turn on the trigger.

  • Set Ka_DummyPos = (Position of Ka_Dummy[Ka_IndexLoop])
I don't see you remove the location.

  • Unit Group - Pick every unit in Ka_DGroup1 and do (Actions)
    • Loop - Actions
      • Set Ka_DGroup1picked = (Picked unit)
      • Unit - Cause Ka_Dummy[Ka_IndexLoop] to damage Ka_DGroup1picked, dealing Ka_Damage[1] damage of attack type Spells and damage type Universal
      • Custom script: call DestroyGroup (udg_Ka_DGroup1)
Why you destroy the group after first iteration?

  • -------- ------------------- --------
  • Visibility - Disable fog of war
  • Visibility - Disable black mask
^Should be moved outside the spell trigger.
 
Level 13
Joined
Jul 16, 2012
Messages
679
@Ajijang2013
This Unit - Create 1 Missle Path for Ka_Owner[Ka_IndexLoop] at Ka_DummyCP facing Ka_Angle[Ka_IndexLoop] degrees in your Loop, you must change the Ka_Owner[Ka_IndexLoop] into Neutral Passive
so become like this
Unit - Create 1 Missle Path for Neutral Passive at Ka_DummyCP facing Ka_Angle[Ka_IndexLoop] degrees

Question: Why you need to change?
Answer: In every 0.03125 sec, you create a huge of amount of units that owner by (Owner of Caster)
If you look in Score Screen, you will get a overwhelming score cuz (One Cast only? lol), so set it in Neutral Passive.

======================================
change this
  • Unit Group - Pick every unit in Ka_DGroup1 and do (Actions)
    • Loop - Actions
      • Set Ka_DGroup1picked = (Picked unit)
      • Unit - Cause Ka_Dummy[Ka_IndexLoop] to damage Ka_DGroup1picked, dealing Ka_Damage[1] damage of attack type Spells and damage type Universal
      • Custom script: call DestroyGroup (udg_Ka_DGroup1)
into this...........
  • Unit Group - Pick every unit in Ka_DGroup1 and do (Actions)
    • Loop - Actions
      • Set Ka_DGroup1picked = (Picked unit)
      • Unit - Cause Ka_Dummy[Ka_IndexLoop] to damage Ka_DGroup1picked, dealing Ka_Damage[1] damage of attack type Spells and damage type Universal
  • Custom script: call DestroyGroup (udg_Ka_DGroup1)
 
Last edited:
Your IsDestTree will break if user remove harvest ability from Peasant.
Why? because the IsDestTree don't add an additional harvest ability for safety. BPower state this before.

I hope you check the Init in GUI part of the linked IsDestTree carefully, this line :
  • Custom script: call UnitAddAbility(udg_DestChecker, 'Ahrl')
is the safety fail in my IsDestTree, add the line below the :
  • Custom script: call UnitAddAbility(udg_DestChecker, 'Aloc')
and it should be safe.

I think the rest are fine. Don't notice anything too weird in my check, maybe I missed something but hopefully not.

Note : There are based on Posted Codes and may not reflect on the actual map.
 
Level 2
Joined
Nov 28, 2015
Messages
8
New Account

Hey, Maker. This is my new account. I'm gonna ask you about my KAMEHAMEHA SPELL. Are the rest of the triggers are all right or acceptable?
 
Top