1. Are you planning to upload your awesome spell or system to Hive? Please review the rules here.
    Dismiss Notice
  2. Updated Resource Submission Rules: All model & skin resource submissions must now include an in-game screenshot. This is to help speed up the moderation process and to show how the model and/or texture looks like from the in-game camera.
    Dismiss Notice
  3. DID YOU KNOW - That you can unlock new rank icons by posting on the forums or winning contests? Click here to customize your rank or read our User Rank Policy to see a list of ranks that you can unlock. Have you won a contest and still havn't received your rank award? Then please contact the administration.
    Dismiss Notice
  4. The Lich King demands your service! We've reached the 19th edition of the Icon Contest. Come along and make some chilling servants for the one true king.
    Dismiss Notice
  5. The 4th SFX Contest has started. Be sure to participate and have a fun factor in it.
    Dismiss Notice
  6. The poll for the 21st Terraining Contest is LIVE. Be sure to check out the entries and vote for one.
    Dismiss Notice
  7. The results are out! Check them out.
    Dismiss Notice
  8. Don’t forget to sign up for the Hive Cup. There’s a 555 EUR prize pool. Sign up now!
    Dismiss Notice
  9. The Hive Workshop Cup contest results have been announced! See the maps that'll be featured in the Hive Workshop Cup tournament!
    Dismiss Notice
  10. Check out the Staff job openings thread.
    Dismiss Notice
Dismiss Notice
60,000 passwords have been reset on July 8, 2019. If you cannot login, read this.

Missile v1.04

Submitted by Doom_AngeaL
This bundle is marked as substandard. It may contain bugs, not perform optimally or otherwise be in violation of the submission rules.
Requested by Marcikat
Missile! is a spell that fires a rocket that has a range of 1500. The missile flies straight and detonates on impact with either the 1500 range mark or any enemies in the way. Damage, cooldown, range of the rocket, levels, impact range, are all customizable.
Missile! - Level 1 - 100 Damage with 130 impact range.
Missile! - Level 2 - 200 Damage with 180 impact range.
Missile! - Level 3 - 300 Damage with 240 impact range.
Fully MUI/GUI; three different casters included in demo map. Red, blue and teal are available with the testing.
Credits

DooM_AngeaL - Spell
Flood - Fixing
baassee - Fixing
Laserdude - Fixing
Adiktuz - Fixing

Code:

Missile Cast
  • Missile cast
    • Missile cast
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Missile
    • Actions
      • Set player_hero[(Player number of (Owner of (Triggering unit)))] = (Triggering unit)
      • Set temploc3[(Player number of (Owner of (Triggering unit)))] = (Position of (Triggering unit))
      • Animation - Play (Triggering unit)'s attack animation
      • Animation - Queue (Triggering unit)'s stand animation
      • Special Effect - Create a special effect attached to the weapon of (Triggering unit) using Abilities\Spells\Other\Incinerate\FireLordDeathExplode.mdl
      • Special Effect - Destroy (Last created special effect)
      • Unit - Create 1 Missle for (Owner of (Triggering unit)) at temploc3[(Player number of (Owner of (Triggering unit)))] facing (Facing of (Triggering unit)) degrees
      • Unit - Turn collision for (Last created unit) Off
      • Unit - Add a 3.33 second Generic expiration timer to (Last created unit)
      • Unit Group - Add (Last created unit) to missle_unit[(Player number of (Owner of (Triggering unit)))]
      • Trigger - Turn on Missile Collision <gen>
      • Trigger - Turn on Missle Movement <gen>
      • Trigger - Turn on Missile DeathIDamage <gen>
      • Custom script: call RemoveLocation(udg_temploc)
      • Custom script: call RemoveLocation(udg_temploc3[GetConvertedPlayerId(GetOwningPlayer(GetTriggerUnit()))])


Missile Collision
  • Missile Collision
    • Events
      • Time - Every 0.03 seconds of game time
    • Conditions
    • Actions
      • For each (Integer A) from 1 to 12, do (Actions)
        • Loop - Actions
          • Unit Group - Pick every unit in missle_unit[(Integer A)] and do (Actions)
            • Loop - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • ((Picked unit) is alive) Equal to True
                • Then - Actions
                  • Set missle_collisionloc[(Integer A)] = (Position of (Picked unit))
                  • Set missle_unitgroup[(Integer A)] = (Units within 130.00 of missle_collisionloc[(Integer A)])
                  • Unit Group - Pick every unit in missle_unitgroup[(Integer A)] 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
                              • ((Picked unit) is dead) Equal to True
                              • ((Picked unit) belongs to an ally of (Owner of (Random unit from missle_unit[(Integer A)]))) Equal to True
                        • Then - Actions
                        • Else - Actions
                          • Unit Group - Pick every unit in missle_unit[(Integer A)] and do (Actions)
                            • Loop - Actions
                              • Unit - Make (Picked unit) Vulnerable
                          • Unit Group - Pick every unit in missle_unitgroup[(Integer A)] 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
                                      • ((Picked unit) is dead) Equal to True
                                      • ((Picked unit) belongs to an ally of (Owner of (Random unit from missle_unit[(Integer A)]))) Equal to True
                                • Then - Actions
                                • Else - Actions
                                  • Unit Group - Pick every unit in missle_unit[(Integer A)] and do (Actions)
                                    • Loop - Actions
                                      • Unit - Cause (Picked unit) to damage circular area after 0.00 seconds of radius 100.00 at missle_collisionloc[(Integer A)], dealing 1.00 damage of attack type Spells and damage type Normal
                          • Unit Group - Pick every unit in missle_unit[(Integer A)] and do (Actions)
                            • Loop - Actions
                              • Unit - Make (Picked unit) Invulnerable
                  • Custom script: call RemoveLocation(udg_missle_collisionloc[GetForLoopIndexA()])
                  • Custom script: call DestroyGroup(udg_missle_unitgroup[GetForLoopIndexA()])
                • Else - Actions

Missle Death/Damage
  • Missile DeathIDamage
    • Events
      • Unit - A unit Dies
    • Conditions
      • (Unit-type of (Dying unit)) Equal to Missle
    • Actions
      • Set temploc = (Position of (Dying unit))
      • Special Effect - Create a special effect at temploc using Objects\Spawnmodels\Other\NeutralBuildingExplosion\NeutralBuildingExplosion.mdl
      • Special Effect - Destroy (Last created special effect)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Level of Missile for player_hero[(Player number of (Owner of (Dying unit)))]) Equal to 1
        • Then - Actions
          • Unit - Cause (Dying unit) to damage circular area after 0.00 seconds of radius 200.00 at temploc, dealing 100.00 damage of attack type Spells and damage type Normal
          • Destructible - Pick every destructible within 200.00 of temploc and do (Actions)
            • Loop - Actions
              • Destructible - Kill (Picked destructible)
        • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Level of Missile for player_hero[(Player number of (Owner of (Dying unit)))]) Equal to 2
            • Then - Actions
              • Unit - Cause (Dying unit) to damage circular area after 0.00 seconds of radius 200.00 at temploc, dealing 200.00 damage of attack type Spells and damage type Normal
              • Destructible - Pick every destructible within 200.00 of temploc and do (Actions)
                • Loop - Actions
                  • Destructible - Kill (Picked destructible)
            • Else - Actions
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (Level of Missile for player_hero[(Player number of (Owner of (Dying unit)))]) Equal to 3
                • Then - Actions
                  • Unit - Cause (Dying unit) to damage circular area after 0.00 seconds of radius 200.00 at temploc, dealing 300.00 damage of attack type Spells and damage type Normal
                  • Destructible - Pick every destructible within 200.00 of temploc and do (Actions)
                    • Loop - Actions
                      • Destructible - Kill (Picked destructible)
                • Else - Actions
      • Custom script: call RemoveLocation(udg_temploc)
      • Unit Group - Remove (Dying unit) from missle_unit[(Player number of (Owner of (Dying unit)))]
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Number of units in missle_unit[(Player number of (Owner of (Dying unit)))]) Equal to 0
        • Then - Actions
          • Trigger - Turn off (This trigger)
          • Trigger - Turn off Missile Collision <gen>
          • Trigger - Turn off Missle Movement <gen>
        • Else - Actions

Missle Movement
  • Missle Movement
    • Events
      • Time - Every 0.03 seconds of game time
    • Conditions
    • Actions
      • Unit Group - Pick every unit in (Units in (Playable map area)) and do (Actions)
        • Loop - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Unit-type of (Picked unit)) Equal to Missle
              • ((Picked unit) is alive) Equal to True
            • Then - Actions
              • Set temploc1 = (Position of (Picked unit))
              • Set temploc2 = (temploc1 offset by 13.00 towards (Facing of (Picked unit)) degrees)
              • Unit - Move (Picked unit) instantly to temploc2
              • Custom script: call RemoveLocation(udg_temploc1)
              • Custom script: call RemoveLocation(udg_temploc2)
            • Else - Actions
              • Do nothing


Keywords:
cast, missle, request, missile, missle, spell, fire, fires, rocket, range, 1500, fly, straight, boom, explode, impact, enemy, damage, cooldown, levels
Contents

missle (Map)

Reviews
Moderator
12th Dec 2015 IcemanBo: Too long time as NeedsFix. Rejected. 14:30, 4th Mar 2011 Bribe: My review Status: Rejected until updated
  1. Doom_AngeaL

    Doom_AngeaL

    Joined:
    Apr 17, 2010
    Messages:
    112
    Resources:
    0
    Resources:
    0
    Nice biased opinion, friendly.

    Anywho, it does indeed work properly, and there are few leaks. It isn't, as you say, 'very bad'.

    If your going to rate a spell, rate it because of it, not because of past conflicts with its creator.

    I'm honestly doubting you're even thirteen, if that.

    And when you rate a spell, don't just go about spouting nonsense about the general idea of whats wrong, tell me WHERE the leaks are, if you even know what a leak is, or what isn't working 'properly', as you said.
     
    Last edited: Dec 10, 2010
  2. Laserdude

    Laserdude

    Joined:
    Jun 30, 2010
    Messages:
    246
    Resources:
    1
    Tutorials:
    1
    Resources:
    1
    Wrong. It saves a certain value from the particular casting unit. If this value changes, it does not matter, as the value is never changed for the missile unit.
     
  3. baassee

    baassee

    Joined:
    Nov 14, 2008
    Messages:
    3,220
    Resources:
    17
    Spells:
    14
    Tutorials:
    3
    Resources:
    17
    No but the previous instance is overwritten, haven't you read what I've told you?
     
  4. Laserdude

    Laserdude

    Joined:
    Jun 30, 2010
    Messages:
    246
    Resources:
    1
    Tutorials:
    1
    Resources:
    1
    That is the point, it shall be overwritten. The value for the MISSILE, which is the one that counts, NEVER changes, no matter what, therefore, it does not matter if the CASTING UNIT's value changes, since it does not affect the Missiles, except for the newly casted ones.

    If you are talking about the fact that all the values are saved in (Key (Triggering unit)), then maybe you should know that this saves the value to the unit itself, and it can only be overwritten if another value of the same name is saved, or if it is cleared by the action Hashtable - Clear child hashtables.
    However, each time a missile dies, you have to clear the hashtable for that unit.
     
  5. Bribe

    Bribe

    Joined:
    Sep 26, 2009
    Messages:
    8,059
    Resources:
    25
    Maps:
    3
    Spells:
    10
    Tutorials:
    3
    JASS:
    9
    Resources:
    25
    Missile Movement

    You forgot:

    Custom script: set bj_wantDestroyGroup = true

    And...

    Do nothing

    Missile Death

    (Dying unit)

    - Spammed again and again... should be (Triggering unit)

    Unit - Cause (Dying unit) to damage circular area after 0.00 seconds of radius 200.00 at temploc, dealing 200.00 damage of attack type Spells and damage type Normal

    - Whoops, that crashes Mac computers. And friendly units. And... just do a "pick all units" action instead.
    • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
      • If - Conditions
        • (Number of units in missle_unit[(Player number of (Owner of (Dying unit)))]) Equal to 0
      • Then - Actions
        • Trigger - Turn off (This trigger)
        • Trigger - Turn off Missile Collision <gen>
        • Trigger - Turn off Missle Movement <gen>
      • Else - Actions


    You realize that if another player had missiles in-progress this will stop everything in its tracks?
     
  6. EyeCandy

    EyeCandy

    Joined:
    May 13, 2012
    Messages:
    64
    Resources:
    0
    Resources:
    0
    lols
    looks like some AOE version of Elune's Arrow....or a stunless Ashe's Crystal Arrow from LOL.
     
  7. Aztec_devil2000

    Aztec_devil2000

    Joined:
    Nov 1, 2008
    Messages:
    827
    Resources:
    0
    Resources:
    0
    I really like this spell, although I cant seem to fix this problem. I'm not sure if everyone else had this but only player 1 can shoot missiles that actually hit a target. Player 2 to 12 shoots and missess everyone. Not sure how to fix that, i've examened it so many times and it doesn't get past the first line of code "missile is alive", I have no idea what's going on. Please help.

    Edit: I'm going to change everything see if it works better.
    Edit2: Ok It works now, changed unitgroup to just unit.
     
    Last edited: Apr 25, 2013