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

Anime X Hero Spell

This bundle is marked as useful / simple. Simplicity is bliss, low effort and/or may contain minor bugs.
This map made up because the maker like to play an "anime x hero" map. So I'm go try to make spell in the map. Such a "Light Aura" is one of interest spell.

Hint: Try in 0.15 second to "Double-clicks" on hero to choose it. this map can not "-repick", but you can "-restart" to reset all variables, remove every hero, units, items, leaderboard and destructible from map. Then run map initialization again."

"Sorry, This map so huge size, because It have many imported files."


[rainbow]Black Rock Shooter[/rainbow]
Abilities
-Dark
-Black Wave
-Firebird Star
-Pulverize
-Thunder Dark

[rainbow]Magical Lyrical Nanoha (Shakura)[/rainbow]
Abilities
-Light Aura(In this map, it is "Light Circle")
-Light Wave(Don't the same with Anime map)
-Howl of Terror
-Light Sword
-Attribute Bonus

*Light Circle can modifies the direction rotate and speed



  • Shakura Init
    • Events
      • Time - Elapsed game time is 0.01 seconds
    • Conditions
    • Actions
      • Set HT_LaserSetup[1] = 40
      • Set HT_LaserSetup[2] = 50
      • Set HT_LaserSetup[3] = 60
      • Set HT_LaserSetup[4] = 70
      • Set LC_ModifiedRotate[1] = 270.00
      • Set LC_ModifiedRotate[2] = 270.00
      • Set LC_ModifiedSpeed[1] = 5.00
      • Set LC_ModifiedSpeed[2] = 5.00


  • Light Circle
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Light Circle
    • Actions
      • Sound - Play feit2 <gen>
      • Set LC_Count = (LC_Count + 1)
      • Set LC_TempCount = LC_Count
      • Set LC_Cast[LC_TempCount] = (Triggering unit)
      • Set LC_NumberOwnCast[LC_TempCount] = (Player number of (Owner of LC_Cast[LC_TempCount]))
      • Set LC_TLoc[LC_TempCount] = (Target point of ability being cast)
      • Set LC_DMG[LC_TempCount] = (Real((50 x (Level of Light Circle for LC_Cast[LC_TempCount]))))
      • Set LC_DirectionRotate[LC_TempCount] = LC_ModifiedRotate[LC_NumberOwnCast[LC_TempCount]]
      • Set LC_RotateSpeed[LC_TempCount] = LC_ModifiedSpeed[LC_NumberOwnCast[LC_TempCount]]
      • Set LC_RealA[LC_TempCount] = 101.00
      • Set LC_Duration[LC_TempCount] = (LC_RealA[LC_TempCount] / 20.00)
      • Set LC_DMG_Charge[LC_TempCount] = 0.00
      • Set LC_DMG_Inc[LC_TempCount] = 0.00
      • Animation - Play LC_Cast[LC_TempCount]'s Spell Channel animation
      • Unit - Create 1 Light Circle for (Owner of LC_Cast[LC_TempCount]) at LC_TLoc[LC_TempCount] facing Default building facing degrees
      • Set LC_Dummy[LC_TempCount] = (Last created unit)
      • Unit Group - Add LC_Dummy[LC_TempCount] to LC_DummyGroup
      • Unit - Set the custom value of LC_Dummy[LC_TempCount] to LC_Count
      • Unit - Add a LC_Duration[LC_TempCount] second Generic expiration timer to LC_Dummy[LC_TempCount]
      • Unit - Turn collision for LC_Dummy[LC_TempCount] Off
      • Custom script: call RemoveLocation ( udg_LC_TLoc [ udg_LC_TempCount ] )
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Light Circle Loop <gen> is on) Equal to False
        • Then - Actions
          • Trigger - Turn on Light Circle Loop <gen>
        • Else - Actions


  • Light Circle Loop
    • Events
      • Time - Every 0.05 seconds of game time
    • Conditions
    • Actions
      • For each (Integer LC_CountLoop) from 1 to LC_Count, do (Actions)
        • Loop - Actions
          • Set LC_TempCount = LC_CountLoop
          • Set LC_RealA[LC_TempCount] = (LC_RealA[LC_TempCount] - 1.00)
          • Set LC_DMG_Charge[LC_TempCount] = (LC_DMG_Charge[LC_TempCount] + 0.10)
          • -------- Hint: 0.20 x 5 = 1 charge of damage --------
          • Set LC_DMG_Inc[LC_TempCount] = (((Real((Agility of LC_Cast[LC_TempCount] (Exclude bonuses)))) x 0.01) x LC_DMG_Charge[LC_TempCount])
          • Set LC_DMG[LC_TempCount] = (LC_DMG[LC_TempCount] + LC_DMG_Inc[LC_TempCount])
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • LC_RealA[LC_TempCount] Greater than 0.00
            • Then - Actions
              • Unit Group - Pick every unit in LC_DummyGroup and do (Actions)
                • Loop - Actions
                  • Set LC_SlideCentLoc = (Position of (Picked unit))
                  • Set LC_SlideGroup = (Units within 575.00 of LC_SlideCentLoc matching (((((Matching unit) is alive) Equal to True) and (((Matching unit) is A structure) Equal to False)) and (((Matching unit) belongs to an enemy of (Owner of LC_Cast[LC_TempCount])) Equal to True)))
                  • Unit Group - Pick every unit in LC_SlideGroup and do (Actions)
                    • Loop - Actions
                      • Set LC_SlideLoc = (Position of (Picked unit))
                      • Set LC_RealB = ((Angle from LC_SlideCentLoc to LC_SlideLoc) + LC_ModifiedRotate[LC_TempCount])
                      • -------- Hint: (+270/-90) for "Rotate Right" or (+90/-270) for "Rotate Left" --------
                      • Set LC_SlideToLoc = (LC_SlideLoc offset by LC_RotateSpeed[LC_TempCount] towards LC_RealB degrees)
                      • Unit - Move (Picked unit) instantly to LC_SlideToLoc
                      • Special Effect - Create a special effect attached to the origin of (Picked unit) using Abilities\Spells\Other\Stampede\StampedeMissileDeath.mdl
                      • Special Effect - Destroy (Last created special effect)
                      • Unit - Cause LC_Cast[LC_TempCount] to damage (Picked unit), dealing LC_DMG[LC_TempCount] damage of attack type Spells and damage type Normal
                      • Custom script: call RemoveLocation ( udg_LC_SlideLoc )
                      • Custom script: call RemoveLocation ( udg_LC_SlideToLoc )
              • Custom script: call RemoveLocation ( udg_LC_SlideCentLoc )
              • Custom script: call DestroyGroup ( udg_LC_SlideGroup )
            • Else - Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (LC_DummyGroup is empty) Equal to True
        • Then - Actions
          • Set LC_Count = 0
          • Set LC_TempCount = 0
          • Trigger - Turn off (This trigger)
        • Else - Actions


  • Light Circle End
    • Events
      • Unit - A unit Dies
    • Conditions
      • (Unit-type of (Dying unit)) Equal to Light Circle
    • Actions
      • Set LC_CusV = (Custom value of (Dying unit))
      • Custom script: set udg_LC_Cast [ udg_LC_CusV ] = null
      • Custom script: set udg_LC_NumberOwnCast [ udg_LC_CusV ] = 0
      • Custom script: set udg_LC_DirectionRotate [ udg_LC_CusV ] = 0
      • Custom script: set udg_LC_RotateSpeed [ udg_LC_CusV ] = 0
      • Custom script: set udg_LC_RealA [ udg_LC_CusV ] = 0
      • Custom script: set udg_LC_RealB = 0
      • Custom script: set udg_LC_Duration [ udg_LC_CusV ] = 0
      • Custom script: set udg_LC_DMG [ udg_LC_CusV ] = 0
      • Custom script: set udg_LC_DMG_Inc [ udg_LC_CusV ] = 0
      • Custom script: set udg_LC_DMG_Charge [ udg_LC_CusV ] = 0
      • Unit Group - Remove (Dying unit) from LC_DummyGroup
      • Unit - Remove (Dying unit) from the game
      • Custom script: set udg_LC_CusV = 0


  • Light Circle Modified Rotate or Speed
    • Events
      • Player - Player 1 (Red) types a chat message containing <Empty String> as A substring
      • Player - Player 2 (Blue) types a chat message containing <Empty String> as A substring
    • Conditions
      • ((Number of units in (Units owned by (Triggering player) of type Magical Lyrical Nanoha)) Not equal to 0) or ((Number of units in (Units owned by (Triggering player) of type Magical Lyrical Nanoha [Metamorphosis])) Not equal to 0)
      • (Substring((Entered chat string), 1, 3)) Equal to -lc
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Substring((Entered chat string), 4, 5)) Equal to mr
        • Then - Actions
          • Set x_string = (Substring((Entered chat string), 7, 10))
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (((Integer(x_string)) Equal to 270) or ((Integer(x_string)) Equal to -90)) or (((Integer(x_string)) Equal to 90) or ((Integer(x_string)) Equal to -270))
            • Then - Actions
              • Set LC_ModifiedRotate[(Player number of (Triggering player))] = (Real(x_string))
              • Quest - Display to (Player group((Triggering player))) the Quest Completed message: (Modified Rotate = + (String(LC_ModifiedRotate[(Player number of (Triggering player))])))
            • Else - Actions
        • Else - Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Substring((Entered chat string), 4, 5)) Equal to ms
        • Then - Actions
          • Set x_string = (Substring((Entered chat string), 7, 9))
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • ((Integer(x_string)) Greater than or equal to -99) and ((Integer(x_string)) Less than or equal to 99)
            • Then - Actions
              • Set LC_ModifiedSpeed[(Player number of (Triggering player))] = (Real(x_string))
              • Quest - Display to (Player group((Triggering player))) the Quest Completed message: (Modified Rotate Speed = + (String(LC_ModifiedSpeed[(Player number of (Triggering player))])))
            • Else - Actions
        • Else - Actions




  • Howl to Terror
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Howl of Terror
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • HT_Count Equal to 0
        • Then - Actions
          • Trigger - Turn on Howl to Terror Loop <gen>
        • Else - Actions
      • Sound - Play Shakura_____u <gen>
      • Set HT_Count = (HT_Count + 1)
      • Set HT_Cast[HT_Count] = (Triggering unit)
      • Set HT_SpellLvl[HT_Count] = (Level of Howl of Terror for HT_Cast[HT_Count])
      • Set HT_LaserCount[HT_Count] = HT_LaserSetup[HT_SpellLvl[HT_Count]]
      • Set HT_LaserCurrentCount[HT_Count] = 0
      • Set HT_AllLaserCount = (HT_AllLaserCount + HT_LaserCount[HT_Count])


  • Howl to Terror Loop
    • Events
      • Time - Every 0.10 seconds of game time
    • Conditions
    • Actions
      • For each (Integer HTIndexLoop) from 1 to HT_Count, do (Actions)
        • Loop - Actions
          • Set HT_CurrentLaserCount = (HT_CurrentLaserCount + 1)
          • Set HT_Loc = (Position of HT_Cast[HTIndexLoop])
          • Set HT_DMGGroup = (Units within 600.00 of HT_Loc matching (((((Matching unit) is alive) Equal to True) and (((Matching unit) is A structure) Equal to False)) and ((((Matching unit) is visible to (Owner of HT_Cast[HTIndexLoop])) Equal to True) and (((Matching unit) belongs to a
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (HT_Cast[HTIndexLoop] is alive) Equal to True
              • HT_LaserCurrentCount[HTIndexLoop] Less than HT_LaserCount[HTIndexLoop]
              • (Number of units in HT_DMGGroup) Greater than 0
            • Then - Actions
              • Set HT_LaserCurrentCount[HTIndexLoop] = (HT_LaserCurrentCount[HTIndexLoop] + 1)
              • Set HT_DMGUnit = (Random unit from HT_DMGGroup)
              • Set HT_DMGUnitLoc = (Position of HT_DMGUnit)
              • Set HT_Stack = ((Custom value of HT_DMGUnit) + HT_SpellLvl[HTIndexLoop])
              • Set HT_DMG = ((10.00 x (Real(HT_SpellLvl[HTIndexLoop]))) x (Real(HT_Stack)))
              • Unit - Set the custom value of HT_DMGUnit to HT_Stack
              • Unit - Create 1 Laser for (Owner of HT_Cast[HTIndexLoop]) at HT_Loc facing (Facing of HT_DMGUnit) degrees
              • Animation - Change (Last created unit)'s animation speed to 200.00% of its original speed
              • Unit - Add a 0.75 second Generic expiration timer to (Last created unit)
              • Unit - Order (Last created unit) to Move To HT_DMGUnitLoc
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (HT_DMGUnit is in HT_DMGEDGroup) Equal to False
                • Then - Actions
                  • Unit Group - Add HT_DMGUnit to HT_DMGEDGroup
                • Else - Actions
              • Unit - Cause HT_Cast[HTIndexLoop] to damage HT_DMGUnit, dealing HT_DMG damage of attack type Spells and damage type Normal
            • Else - Actions
          • Custom script: call DestroyGroup( udg_HT_DMGGroup )
          • Custom script: call RemoveLocation( udg_HT_Loc )
          • Custom script: set udg_HT_DMGUnit = null
          • Custom script: call RemoveLocation( udg_HT_DMGUnitLoc )
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • HT_CurrentLaserCount Greater than or equal to HT_AllLaserCount
            • Then - Actions
              • Unit Group - Pick every unit in HT_DMGEDGroup and do (Actions)
                • Loop - Actions
                  • Unit - Set the custom value of (Picked unit) to 0
              • Set HT_Count = 0
              • Set HT_CurrentLaserCount = 0
              • Set HT_AllLaserCount = 0
              • Custom script: call DestroyGroup( udg_HT_DMGEDGroup )
              • Trigger - Turn off (This trigger)
            • Else - Actions


  • Howl to Terror Clear
    • Events
      • Unit - A unit Dies
    • Conditions
      • (Unit-type of (Dying unit)) Equal to Laser
    • Actions
      • Unit - Remove (Dying unit) from the game


Screenshort


222601-albums7215-picture81591.jpg



222601-albums7215-picture81593.jpg



222601-albums7215-picture81592.jpg



222601-albums7215-picture81594.jpg


Changelog

Now - First release verion
Keywords:
spell, rotate spell, anime
Contents

Anime X Hero Spell (Map)

Reviews
12th Dec 2015 IcemanBo: Too long as NeedsFix. Rejected. 23:03, 12th Jun 2014 BPower: Needs a lot of various fixes.

Moderator

M

Moderator

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

23:03, 12th Jun 2014
BPower:
Needs a lot of various fixes.
 
Level 3
Joined
Oct 8, 2012
Messages
24
Tell me, if you have the way to make something easier, better or either in this map.

The explosion effect in picture below this. Who knows how to make it? or use what the custom path for it. please tell me.... Since I make map I never use these effect without using "flame strike" spell
13217547981370231394_574_574.jpg
 
Level 29
Joined
Oct 24, 2012
Messages
6,543
Setting the custom value in any spell is not allowed.

I see that you index your spells but I don't see any de-index which means this is very inefficient.

Look at my tutorial Things You Should Know When Using Triggers / GUI link is in my sig.
There is a chapter called how to index. That shows you how to properly index / de-index spells.

You also can't do this if you never Set the unit group.
  • Custom script: call DestroyGroup( udg_HT_DMGEDGroup )
Since you never re-initialize it the spell will crash the next time it is run after that group is destroyed.

Anything used twice or more should be stored into a variable. Then use the variable instead of continually calling functions. Variables are a lot faster.
 
Iosed, ZznatsuzZ in your screenshot is my friend ;) . Anyway, you really need to fixs:

- I've seen many leaks.
- Spells description (You really need to put this things in spell description?: <?????> is basic ability - "If you know this extended description is not give anything. So you don't know about it is good. Do not try to know it is better.") and etc..
- I've seen some trigger can be optimized. (Ex:
  • Set FS_DummyLoc[FS_TempCount] = (Position of (Picked unit))
  • Set FS_DummyLoc2[FS_TempCount] = (Position of (Picked unit))
)
- Missing import instruction
- So, If I've imported this pack, where I can settings damages, special effects, dummy rawcode, ability rawcode, etc...?
- In the trigger: Firebird Star - Firebird Star Loop

  • Firebird Star
    • Events
    • Conditions
    • Actions
      • Unit - Create 1 Megiddo - Firebird Star for (Owner of FS_Cast[FS_TempCount]) at (FS_CastLoc[FS_TempCount] offset by 100.00 towards (Angle from FS_CastLoc[FS_TempCount] to FS_TLoc[FS_TempCount]) degrees) facing (Angle from FS_CastLoc[FS_TempCount] to FS_TLoc[FS_TempCount]) degrees
      • Animation - Change FS_Dummy[FS_TempCount]'s size to ((Random real number between 150.00 and 250.00)%, (Random real number between 150.00 and 250.00)%, (Random real number between 150.00 and 250.00)%) of its original size
      • Set FS_Dummy[FS_TempCount] = (Last created unit)
      • Unit Group - Add FS_Dummy[FS_TempCount] to FS_DummyGroup
  • Firebird Star Loop
    • Events
    • Conditions
    • Actions
      • For each (Integer FSIndexLoop) from 1 to FS_Count, do (Actions)
        • Loop - Actions
          • Set FS_TempCount = FSIndexLoop
          • Unit Group - Pick every unit in FS_DummyGroup and do (Actions)
            • Loop - Actions
Why you add this dummy into FS_DummyGroup without using it via FS_Dummy[FS_TempCount] ?

- Do not use wait
- Some sound doesn't fit with those spells, so don't use it (Ex: Black rock shooter with the spell: Thunder Dark. She call her name: Black Rock Shooter (Burakku Rockku Shoota) (Actually, It's not important for some people, but I'm noticed you: You need to know what does it mean before import (And maybe what spell does too))
- Remove multiboard in the trigger: Light Circle Modified Rotate or Speed, I don't think people will add your multiboard in their maps.
- Your don't need to import models to increase the map sizes.
- Dark Aura, Very bright effect, might hinder the player of sitting in front of the screen for hours ^^!...(Well, include the effect of Isoed map).
- You don't need to use event unit dies to remove the dummy unit.
  • Howl to Terror Clear
    • Events
      • Unit - A unit Dies
    • Conditions
      • (Unit-type of (Dying unit)) Equal to Laser
    • Actions
      • Unit - Remove (Dying unit) from the game
Just go to unit objects and setting: Death Type (udea): Can't raise, does not decay
and setting: Death Time to any value.

- Stored into variable everything that you used twice
- Clear dummy shadow

And another things...

This pack look cool by the way..
 
Last edited:
Level 3
Joined
Oct 8, 2012
Messages
24
- Do not use wait
"I want to play the sound before create an effect"
- Some sound doesn't fit with those spells, so don't use it (Ex: Black rock shooter with the spell: Thunder Dark. She call her name: Black Rock Shooter (Burakku Rockku Shoota) (Actually, It's not important for some people, but I'm noticed you: You need to know what does it mean before import (And maybe what spell does too))
"I import sound and use it like as Anime X hero that map maker made. I don't care that it actually by name of her spell or not."
"(Burakku Rockku Shoota ブラックロックショオタ(burakke rokke shoota) is English of japenese. they call it's burakke rokke shoota instead Black Rock Shooter, such an other word in their language. (television = terebi/internet = intaanetto))"
- Remove multiboard in the trigger: Light Circle Modified Rotate or Speed, I don't think people will add your multiboard in their maps.
"I just add it for some people want to modified effect of spell. But actually, I'm not recommend to use it such a speed, if they modifies it more than 10. An units that rotating inside of circle, they can rotate to outside of circle and unaffected by spell.
Also I ever test it spell by multicast spell. The speed is not accurate with speed setup."
- Your don't need to import models to increase the map sizes.
"So I said at above that "Sorry, This map so huge size, because It have many imported files." "
- Dark Aura, Very bright effect, might hinder the player of sitting in front of the screen for hours ^^!...(Well, include the effect of Isoed map).
"Right!, It's hinder the players that use small desktop resolution in game"
- You don't need to use event unit dies to remove the dummy unit.
"It can destroy died units so fast. Might lag if you not change setting "Bone Decay Time" in the game.(Default is 88 sec to decay unit)"
 
I want to play the sound before create an effect
^^, I understood, but you can use Timer or Trigger Timer instead of use Wait.

(Burakku Rockku Shoota ブラックロックショオタ(burakke rokke shoota) is English of japenese. they call it's burakke rokke shoota instead Black Rock Shooter"

No, Burakku Rockku Shoota, u in Burakku Rockku read as phonetic dumb (Burakk Rockk). (Skip phonetic u and lasted phonetic late). The same as desu, masu, gakku, etc..., sometimes, people read as des, mas, gakk.

such an other word in their language. (television = terebi/internet = intaanetto)

Agree, Japanese Language has two types: Japan's pure word and Japan's English Converted (Latin, Borrowed).

I don't care that it actually by name of her spell or not

Oh yes, I just noticed you. As I said, It's not important for some people.

It can destroy died units so fast. Might lag if you not change setting "Bone Decay Time" in the game.(Default is 88 sec to decay unit)

Unit can't decay if you setting it to Does not decay.

Read this: Go to unit objects and setting: Death Type (udea): Can't raise, does not decay
and setting: Death Time to any value.
. It will automatically remove unit from the game. If you setting Death Time to 0., Unit will be removed from the game immediately.

"I just add it for some people want to modified effect of spell. But actually, I'm not recommend to use it such a speed, if they modifies it more than 10. An units that rotating inside of circle, they can rotate to outside of circle and unaffected by spell.
Also I ever test it spell by multicast spell. The speed is not accurate with speed setup."

Put it in the test map trigger, don't put it into the spell trigger.
 
Last edited:
Level 19
Joined
Mar 18, 2012
Messages
1,716
There is a lot of unrelated stuff inside the demo map.
You also imported a lot of custom models, while I wonder: Are they really needed. In my eyes it only enlarges the file size, which should be avoided.
Having such a huge amount of extra stuff, also makes it hard to seperate, what is needed in order to properly import the spell and what is not.

The spells are lacking a proper configuration trigger, where the user can setup used effects, damage, durations, ... etc

When dealing with GroupEnumeration you could store "picked unit" into a variable if used more than once within the ForGroup loop. This will safe extra computation time, since variable lookups are much faster than function calls.

Set the dummy unit to can't raise, does not decay. Once done the "End" triggers are quite useless.

Waits are not MUI in most cases, furthermore they are inaccurate and should only be used for your own coding (if you really want it), but not for a public resource.

You have location and group leaks here and there, for example in "Light Wave".

Under no circumstances can resources manipulate the UnitUserData == Custom value of a unit. This is reserved for Unit Indexer libraries.
 
Top