• Check out the results of the Techtree Contest #19!
  • 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.
  • Create a void inspired texture for Warcraft 3 and enter Hive's 34th Texturing Contest: Void! Click here to enter!
  • The Hive's 22nd Icon Contest: Creep Abilities is now concluded, time to vote for your favourite set of icons! Click here to vote!

Danmaku Spells

This bundle is marked as useful / simple. Simplicity is bliss, low effort and/or may contain minor bugs.
My first spell that I make it public, hope you like it \^o^/
This map contains 4 spells which is a bullet hell (danmaku) type of spells.
Those are:
>Death Sign - Death Maze
>Ice Sign - Ice Arrows
>Fire Sign - Phoenix
>Mind Sign - Lunatic Bullets

Keywords:
danmaku, zecchan, bullet hell, death, ice, fire, mind, sign
Contents

Danmaku Spells (Map)

Reviews
19:53, 30th Nov 2009 TriggerHappy: Some of the effects are a little... much. Point_Temp leaks. You need to store the casting unit's position. It leaks in several triggers (most in which it's been used). Aside from that, it looks good...
19:53, 30th Nov 2009
TriggerHappy:

Some of the effects are a little... much.

  • Point_Temp leaks. You need to store the casting unit's position.
  • It leaks in several triggers (most in which it's been used).

Aside from that, it looks good. Fix the leaks first.
 
  • AtChannelLunaticBullets
    • Events
      • Unit - A unit Begins channeling an ability
    • Conditions
      • (Ability being cast) Equal to Mind Sign - Lunatic Bullets
    • Actions
      • For each (Integer Int_Temp[1]) from 1 to 12, do (Actions)
        • Loop - Actions
          • Set Point_Temp = ((Position of (Casting unit)) offset by 10.00 towards ((Real(Int_Temp[1])) x 30.00) degrees)
          • Unit - Create 1 Danmaku Bullet 1 for (Owner of (Casting unit)) at Point_Temp facing ((Real(Int_Temp[1])) x 30.00) degrees
          • Custom script: call RemoveLocation (udg_Point_Temp)
          • Set Point_Temp = ((Position of (Last created unit)) offset by 300.00 towards (Facing of (Last created unit)) degrees)
          • Unit - Order (Last created unit) to Move To Point_Temp
          • Custom script: call RemoveLocation (udg_Point_Temp)
          • Unit - Add a 1.50 second Generic expiration timer to (Last created unit)
You only need to remove locations at the end of every loop/trigger. Remove the others and save a lot of line space. Also use triggering unit instead of casting/dying etc.
 
  • AtChannelLunaticBullets
    • Events
      • Unit - A unit Begins channeling an ability
    • Conditions
      • (Ability being cast) Equal to Mind Sign - Lunatic Bullets
    • Actions
      • For each (Integer Int_Temp[1]) from 1 to 12, do (Actions)
        • Loop - Actions
          • Set Point_Temp = ((Position of (Casting unit)) offset by 10.00 towards ((Real(Int_Temp[1])) x 30.00) degrees)
          • Unit - Create 1 Danmaku Bullet 1 for (Owner of (Casting unit)) at Point_Temp facing ((Real(Int_Temp[1])) x 30.00) degrees
          • Custom script: call RemoveLocation (udg_Point_Temp)
          • Set Point_Temp = ((Position of (Last created unit)) offset by 300.00 towards (Facing of (Last created unit)) degrees)
          • Unit - Order (Last created unit) to Move To Point_Temp
          • Custom script: call RemoveLocation (udg_Point_Temp)
          • Unit - Add a 1.50 second Generic expiration timer to (Last created unit)
thank God finally someone upload the trigger...
  • Set Point_Temp = ((Position of (Casting unit)) offset by 10.00 towards ((Real(Int_Temp[1])) x 30.00) degrees)
this is the location that leaks, because it creates 2 location, one is the position of casting unit, and 2nd is the polar projection. you only save the polar one so the 1st location leaks...

and yes, I have to admit that your spells is MUI after further read IMO. sorry:smile:
 
  • AtChannelLunaticBullets
  • Events
  • Unit - A unit Begins channeling an ability
  • Conditions
  • (Ability being cast) Equal to Mind Sign - Lunatic Bullets
  • Actions
  • For each (Integer Int_Temp[1]) from 1 to 12, do (Actions)
  • Loop - Actions
  • Set Point_Temp = ((Position of (Casting unit)) offset by 10.00 towards ((Real(Int_Temp[1])) x 30.00) degrees)
  • Unit - Create 1 Danmaku Bullet 1 for (Owner of (Casting unit)) at Point_Temp facing ((Real(Int_Temp[1])) x 30.00) degrees
  • Custom script: call RemoveLocation (udg_Point_Temp)
  • Set Point_Temp = ((Position of (Last created unit)) offset by 300.00 towards (Facing of (Last created unit)) degrees)
  • Unit - Order (Last created unit) to Move To Point_Temp
  • Custom script: call RemoveLocation (udg_Point_Temp)
  • Unit - Add a 1.50 second Generic expiration timer to (Last created unit)
Oh yeah I missed that :P It should be something like this:
  • AtChannelLunaticBullets
  • Events
  • Unit - A unit Begins channeling an ability
  • Conditions
  • (Ability being cast) Equal to Mind Sign - Lunatic Bullets
  • Actions
  • For each (Integer Int_Temp[1]) from 1 to 12, do (Actions)
  • Loop - Actions
  • Set Point_Temp = ((Position of (Casting unit)) offset by 10.00 towards ((Real(Int_Temp[1])) x 30.00) degrees)
  • Unit - Create 1 Danmaku Bullet 1 for (Owner of (Casting unit)) at Point_Temp facing ((Real(Int_Temp[1])) x 30.00) degrees
  • Set Point_Temp = ((Position of (Last created unit))
  • Set Point_Temp2 = Point_Temp offset by 300.00 towards (Facing of (Last created unit)) degrees)
  • Unit - Order (Last created unit) to Move To Point_Temp
  • Unit - Add a 1.50 second Generic expiration timer to (Last created unit)
  • Custom script: call RemoveLocation (udg_Point_Temp)
  • Custom script: call RemoveLocation (udg_Point_Temp2)
 
Last edited:
So I don't need to remove the point every time I use it?
No. If you don`t change it, you can remove it at the end of trigger.

EDIT:
  • Set Point_Temp = ((Position of (Casting unit)) offset by 10.00 towards ((Real(Int_Temp[1])) x 30.00) degrees)
  • Unit - Create 1 Danmaku Bullet 1 for (Owner of (Casting unit)) at Point_Temp facing ((Real(Int_Temp[1])) x 30.00) degrees
  • Set Point_Temp = ((Position of (Last created unit))
  • Set Point_Temp2 = Point_Temp offset by 300.00 towards (Facing of (Last created unit)) degrees)
But this one leaks.

  • Custom script: call RemoveLocation (udg_Point_Temp)
This function is to not overwrite variable, because it takes more memory. In your trigger you leak it
  • Set Point_Temp = ((Position of (Casting unit)) offset by 10.00 towards ((Real(Int_Temp[1])) x 30.00) degrees)
  • Unit - Create 1 Danmaku Bullet 1 for (Owner of (Casting unit)) at Point_Temp facing ((Real(Int_Temp[1])) x 30.00) degrees
  • Set Point_Temp = ((Position of (Last created unit))
here.

You overwrite once setted Point_Temp.

It should be
  • Set Point_Temp = ((Position of (Casting unit)) offset by 10.00 towards ((Real(Int_Temp[1])) x 30.00) degrees)
  • Unit - Create 1 Danmaku Bullet 1 for (Owner of (Casting unit)) at Point_Temp facing ((Real(Int_Temp[1])) x 30.00) degrees
  • Custom script: call RemoveLocation (udg_Point_Temp)
  • Set Point_Temp = ((Position of (Last created unit))
Or even better Position of Last Created Unit set to other variable, to make coding clearlier.
 
Lol. Not becuz u dont use any waits that the triggers are in MUI.
there is 2 way to make ur triggerd in MUI : Using Indexes or Hashtables.
didnt check ur trigger so idk if u use indexs or hashtables.

(For spells that are needing a Periodic Event)

I've checked the triggers and u have 2 periodic events...
witch means u have 2 triggers that arent in MUI

effects of the spells are tooooooo big and it cuz lag.
also.. i got a fatal error using the Lunatic Bullets spell >.>
 
Back
Top