Dismiss Notice
60,000 passwords have been reset on July 8, 2019. If you cannot login, read this.

Frozen Orb v1.01

Submitted by Eccho
This bundle is marked as approved. It works and satisfies the submission rules.
Those of you who downloaded this spell before and on 2010-15-02, download it again. Last version of the map was called v1.01x and is corrupted.

The current version is 1.01
Thank you!


Yeah well, let's continue, this is my second spell submitted this year. And it is once again an interpretation of a diablo 2 spell.

Coalesces a frozen orb from the air, shredding an area with freezing bolts, damaging nearby enemy ground units. A unit caught dying by a bolt may shatter, leaving no corpse behind.

Level 1 - 20 damage per bolt, 8% chance to shatter.
Level 2 - 30 damage per bolt, 12% chance to shatter.
Level 3 - 40 damage per bolt, 16% chance to shatter.
Level 4 - 50 damage per bolt, 20% chance to shatter.

Slows units for 2 seconds.


Previews

[​IMG]


Introduction
Code (vJASS):

    // 'Introduction'
    //
    // The reason why I did this spell is because I have not
    // seen yet any frozen orb spell which is properly
    // functional, or that I think does not look diablo 2'ish
    // enough (Vexorian made a frozen orb spell, I know, but
    // it isn't working at all anymore. This spell was indeed
    // an interpretation of the sorceress' spell Frozen Orb
    // in Diablo 2.
    //
    // A small note before I continue, due to some
    // complications with vJass I did not manage certain
    // things I had in mind in the beginning. The code may
    // indeed (the callback especially) be written in
    // another way, and I tried that, and failed.
    // Suggestions are welcome.
    //
    // A second note is that, frozen orb by default demands
    // some attention in the memory. Casting this multiply
    // times in a row without a cooldown, is going to have
    // some consequences. This is nothing I can change.
    // Adapt the XE_ANIMATION_PERIOD if needed.
    //
    // Third note is, you will not be able to control the
    // amount of bolts spawned while the orb is alive. These
    // are only depending on the animation period. This is
    // also how Diablo 2 handles Frozen Orb. Each bolt is
    // released each frame until the orb vanishes.
 


Implementation
Code (vJASS):

    // First of all, you will need this library and the
    //  xebasic library. Copy these to your map.
    //
    // Second, you need the Universal Dummy unit found in the
    //  unit editor. Don't forget to import the dummy.mdx and
    //  set the dummy to use it as a model.
    //  
    // Important: In order to apply the slow
    //  buff to the affected unit, make sure the universal
    //  dummy has:
    //   A cooldown time > 0
    //   Damage base != 0 (default -1)
    //   Damage die > 0 (default 1)
    //   A fast projectile speed
    //   A decent range
    //   Targets allowed - At least 'ground'
    //   Weapon type - missile
    //   Attack 1 enabled
    //   (if the unit does not have a movement speed, add it)
    //   And the usual stuff
    //
    // Next copy the ability which will cast the spell, and
    // the ability which will apply the buff, and modify the
    // rawcode id's in the constants below. Don't forget to
    // make sure the dummy unit id in the xebasic library is
    // set right as well.
 


Credits
Code (vJASS):

    // Vexorian - JassHelper, xebasic
    // PitzerMike & MindWorX - JNGP
    // Blizzard - Once again for some tooltip inspiration.
 


Code
Code (vJASS):

library FrozenOrb initializer Init requires xebasic
    //------------------------------------------------------<>
    // 'FROZEN ORB'
    //
    // Submitted by Eccho   2010-02-05 (1.0)
    //                      2010-02-15 (1.01)
    // Changelog can be found at the official submission post
    // at
    // http://www.hiveworkshop.com/forums/spells-569/frozen-orb-v1-0-a-158026/
    //
    // Give credits if used!!
    //------------------------------------------------------<>
 
    //------------------------------------------------------<>
    // 'Native including'
    //
    // If you have this in your code somewhere else,
    // make sure to not double define it.
    //------------------------------------------------------<>

    native UnitAlive takes unit id returns boolean
   
   
    //------------------------------------------------------<>
    // 'Configuration section'
    //
    // Change the spell to fit your needs.
    //------------------------------------------------------<>
   
    globals
        private constant integer    ABILITY_ID              = 'A000'        //The ability triggering the spell
        private constant integer    FROST_SLOW_ID           = 'A001'        //The ability containing the frost attack. It the duration isn't altered of the already existing one in wc3, use that id instead.
        private constant integer    FROST_SLOW_BUFF         = 'Bfro'        //The buff which is used in the slow attack ability
                                                                           
                                                                            //Art of the main orb unit
        private constant string     ORB_ART                 = "Abilities\\Weapons\\FrostWyrmMissile\\FrostWyrmMissile.mdl"
        private constant integer    ORB_SPEED               = 800           //Max travel speed
        private constant integer    ORB_RANGE               = 900           //Max travel distance
        private constant integer    ORB_RADIUS              = 32            //The radius the orb has. It is required as a polar projection offset when the orb explodes in the end
        private constant integer    ORB_HEIGHT              = 48            //The z-height from the ground the orb will travel
        private constant real       ORB_SCALE               = 1.0           //The size/scaling of the orb (I believe the current model have some issues here, but it works with other models)
       
                                                                            //Art of the released bolts. The bolts released when the orb explodes uses this art too.
        private constant string     MISSILE_ART             = "Abilities\\Weapons\\LichMissile\\LichMissile.mdl"
        private constant integer    MISSILE_SPEED           = 450           //...
        private constant integer    MISSILE_RANGE           = 400           //...
        private constant integer    MISSILE_RADIUS          = 32            //Bolt radius. It is used to check the collision of which enemies the bolts will hit and damage.
        private constant integer    MISSILE_HEIGHT          = 48            //...
        private constant real       MISSILE_SCALE           = 0.5           //...
        private constant real       MISSILE_RAD_OFFSET      = 3*bj_PI/5     //Each bolt is released with a certain angle offset (in radians), and is defined by this constant. Each bolt is added this constant + the previous angle.
        private constant integer    MISSILE_AMOUNT_MAX      = 100           //Keep this constant at a secure amount. The spell could go very wrong if this value is less than the maximum amount of bolts released. 100 is used by default.
       
        private constant integer    ORB_EXPLODE_AMOUNT      = 12            //Amount of bolts released when the orb explodes
        private constant integer    ORB_EXPLODE_SPEED       = 500           //Special bolt travel speed
        private constant integer    ORB_EXPLODE_RANGE       = 400           //Special bolt travel distance
       
                                                                            //If a unit shatters, this effect will be created at it's position
        private constant string     IMPACT_SHATTER_ART      = "Abilities\\Spells\\Undead\\FrostNova\\FrostNovaTarget.mdl"
        private constant integer    IMPACT_SHATTER_PER_BASE = 8             //Percental base chance to shatter a unit which dies from the spell
        private constant integer    IMPACT_SHATTER_PER_INC  = 4             //Percental increament chance per level to shatter a unit which dies from the spell (example, if base is 8 and incr is 4, each level adds 4 chance)
        private constant integer    IMPACT_DAMAGE_BASE      = 20            //Base damage
        private constant integer    IMPACT_DAMAGE_INC       = 10            //Increamental damage (works in the same way as the shatter base/incr fields)
                                                                           
                                                                            //Self-explanatory
        private constant attacktype ATTACK_TYPE             = ATTACK_TYPE_MAGIC    
        private constant damagetype DAMAGE_TYPE             = DAMAGE_TYPE_UNIVERSAL
        private constant weapontype WEAPON_TYPE             = WEAPON_TYPE_WHOKNOWS
    endglobals
   
    //------------------------------------------------------<>
    // 'Damage filter'
    //
    // Add more options as desired.
    // Some info: It is used as a condition not a boolexpr,
    // thus, not going to give any issue with IsUnitType.
    //------------------------------------------------------<>    
   
    private function TargetFilter takes unit enemy, player caster, real x, real y returns boolean
        return UnitAlive(enemy) and IsUnitEnemy(enemy, caster) and IsUnitType(enemy, UNIT_TYPE_GROUND) and IsUnitInRangeXY(enemy, x, y, MISSILE_RADIUS)
    endfunction
   
    //------------------------------------------------------<>
    // 'Shatter filter'
    //
    // Add more options as desired.
    // It determines the units which may shatter
    // The filter does not need to contain the same context
    // as the damage filter. It is only potentially ran after
    // the target filter have became true.
    //------------------------------------------------------<>  
   
    private function ShatterFilter takes unit enemy returns boolean
        return not IsUnitType(enemy, UNIT_TYPE_MECHANICAL) and not IsUnitType(enemy, UNIT_TYPE_HERO) and not IsUnitType(enemy, UNIT_TYPE_MAGIC_IMMUNE)
    endfunction
   
    //------------------------------------------------------<>
    // 'Other constants'
    //
    // These should not be altered by default, but if you
    // know what you are doing, or see a way to use other
    // constants instead, feel free.
    //------------------------------------------------------<>
   
    globals
        private constant real       ORB_TMAX                = 1.0*ORB_RANGE/ORB_SPEED
        private constant real       MISSILE_TMAX            = 1.0*MISSILE_RANGE/MISSILE_SPEED
        private constant real       EXPLODE_TMAX            = 1.0*ORB_EXPLODE_RANGE/ORB_EXPLODE_SPEED
        private constant real       RAD_BETWEEN_EXPL        = bj_PI*2/ORB_EXPLODE_AMOUNT
       
        private constant group      ENUM_GROUP              = CreateGroup()
        private constant timer      ANIM_TIMER              = CreateTimer()
    endglobals
   
    //------------------------------------------------------<>
    // 'Spell code'
    //
    // If you even think up of an optimize fully working
    // version, tell me about it.
    //------------------------------------------------------<>
   
    private struct missile
        unit obj
        effect art
        real sx
        real sy
        real xvel
        real yvel
       
        static method create takes string art, player p, real x, real y, real z, real rad, integer speed, real scale returns thistype
            local thistype this = thistype.allocate()
           
            set this.obj = CreateUnit(p, XE_DUMMY_UNITID, x, y, rad*bj_RADTODEG)
            call UnitAddAbility(this.obj, XE_HEIGHT_ENABLER)
            call UnitRemoveAbility(this.obj, XE_HEIGHT_ENABLER)
            call SetUnitFlyHeight(this.obj, z, 0)
            call SetUnitScale(this.obj, scale, scale, scale)
            call SetUnitAnimationByIndex(this.obj, 90)
            call UnitRemoveAbility(this.obj, 'Aatk')
           
            set this.art = AddSpecialEffectTarget(art, this.obj, "origin")
            set this.sx = x
            set this.sy = y
            set this.xvel = speed*Cos(rad)
            set this.yvel = speed*Sin(rad)
           
            return this
        endmethod
       
        method clear takes nothing returns nothing
            call DestroyEffect(this.art)
            call KillUnit(this.obj)
            set this.art = null
            set this.obj = null
        endmethod
    endstruct
   
    private struct spell
        missile orb
        real otick
       
        missile array mis[MISSILE_AMOUNT_MAX]
        real array mtick[MISSILE_AMOUNT_MAX]
        integer mcount
        integer mtot
       
        missile array xpl[ORB_EXPLODE_AMOUNT]
        real xtick //All exploding missiles have the same tickoffset

        player owner
        integer damage
        integer chance
       
        static thistype array tta
        static integer tot = 0
       
        static method callback takes nothing returns nothing
            local thistype this
            local missile m
            local integer i = 0
            local integer j
            local integer k
            local real x
            local real y
            local unit u
            local unit v
           
            loop
                exitwhen (i >= thistype.tot)
                set this = thistype.tta[i]
               
               
                //Bolts goes here
                set j = 0
                loop
                    exitwhen (j >= this.mtot)
                   
                    if (this.mis[j].obj != null) then
                        set this.mtick[j] = this.mtick[j]+XE_ANIMATION_PERIOD
                        set x = this.mis[j].sx+this.mis[j].xvel*this.mtick[j]
                        set y = this.mis[j].sy+this.mis[j].yvel*this.mtick[j]
                       
                        call GroupEnumUnitsInRange(ENUM_GROUP, x, y, XE_MAX_COLLISION_SIZE+MISSILE_RADIUS, null)
                        loop
                            set u = FirstOfGroup(ENUM_GROUP)
                            exitwhen (u == null)
                            call GroupRemoveUnit(ENUM_GROUP, u)
                            exitwhen (TargetFilter(u, this.owner, x, y))
                        endloop
                       
                                                                //A nice BJ, wrapped anyway
                        if (this.mtick[j] <= MISSILE_TMAX and RectContainsCoords(bj_mapInitialPlayableArea, x, y) and u == null) then
                            call SetUnitX(this.mis[j].obj, x)
                            call SetUnitY(this.mis[j].obj, y)
                       
 
                        else
                           
                           
                            if (u != null) then
                               
                                call UnitDamageTarget(this.mis[j].obj, u, this.damage, true, false, ATTACK_TYPE, DAMAGE_TYPE, WEAPON_TYPE)
                                   
                                if (UnitAlive(u)) then
                                    if (GetUnitAbilityLevel(u, FROST_SLOW_BUFF) == 0) then
                                   
                                        set v = CreateUnit(Player(PLAYER_NEUTRAL_PASSIVE), XE_DUMMY_UNITID, x, y, 0)
                                        call UnitAddAbility(v, FROST_SLOW_ID)
                                        call UnitApplyTimedLife(v, 'BTLF', 1.0)
                                        call IssueTargetOrder(v, "attackonce", u)
                                    endif
                                elseif (GetRandomInt(0, 100) <= this.chance and ShatterFilter(u)) then

                                    call DestroyEffect(AddSpecialEffect(IMPACT_SHATTER_ART, x, y))
                                    call RemoveUnit(u)
                                endif
                            endif
                           
                            //A note - instances are not destroyed until the end of the spell, when all instances are properly cleared.
                            call this.mis[j].clear()
                            set this.mcount = this.mcount-1

                        endif
                    endif
                   
                    set j = j+1
                endloop

               
                //Orb goes here
                if (this.orb.obj != null) then
                    set this.otick = this.otick+XE_ANIMATION_PERIOD
                    set x = this.orb.sx+this.orb.xvel*this.otick
                    set y = this.orb.sy+this.orb.yvel*this.otick
                   
                    if (this.otick < ORB_TMAX and RectContainsCoords(bj_mapInitialPlayableArea, x, y)) then
                        call SetUnitX(this.orb.obj, x)
                        call SetUnitY(this.orb.obj, y)
                       
                       
                        set this.mis[this.mtot] = missile.create(MISSILE_ART, this.owner, x, y, MISSILE_HEIGHT, this.mtot*MISSILE_RAD_OFFSET, MISSILE_SPEED, MISSILE_SCALE)
                        set this.mtick[this.mtot] = 0
                        set this.mcount = this.mcount+1
                        set this.mtot = this.mtot+1

                       
                    else
                        //Clears the orb
                        call this.orb.clear()
                       
                        //Proceeds with creating special bolts, aka bolts released when the orb vanishes.
                        set j = 0
                        loop
                            exitwhen (j >= ORB_EXPLODE_AMOUNT)
                            set this.xpl[j] = missile.create(MISSILE_ART, this.owner, x+ORB_RADIUS*Cos(j*RAD_BETWEEN_EXPL), y+ORB_RADIUS*Sin(j*RAD_BETWEEN_EXPL), MISSILE_HEIGHT, j*RAD_BETWEEN_EXPL+bj_PI*0.25, ORB_EXPLODE_SPEED, MISSILE_SCALE)
                            set j = j+1
                        endloop
                        set this.xtick = 0
                       
                    endif
                else
               
                    //Special bolt stuff goes here
                    set this.xtick = this.xtick+XE_ANIMATION_PERIOD
                   
                    set j = 0
                    loop
                        exitwhen (j >= ORB_EXPLODE_AMOUNT)
                           
                        if (this.xpl[j].obj != null) then
                            set x = this.xpl[j].sx+this.xpl[j].xvel*this.xtick
                            set y = this.xpl[j].sy+this.xpl[j].yvel*this.xtick
                           
                           
                            call GroupEnumUnitsInRange(ENUM_GROUP, x, y, XE_MAX_COLLISION_SIZE+MISSILE_RADIUS, null)
                            loop
                                set u = FirstOfGroup(ENUM_GROUP)
                                exitwhen (u == null)
                                call GroupRemoveUnit(ENUM_GROUP, u)
                                exitwhen (TargetFilter(u, this.owner, x, y))
                            endloop
                           
                            if (this.xtick < EXPLODE_TMAX and RectContainsCoords(bj_mapInitialPlayableArea, x, y) and u == null) then
                                call SetUnitX(this.xpl[j].obj, x)
                                call SetUnitY(this.xpl[j].obj, y)
                                   
                            else
                               
                                if (u != null) then
                                   
                                    call UnitDamageTarget(this.xpl[j].obj, u, this.damage, true, false, ATTACK_TYPE, DAMAGE_TYPE, WEAPON_TYPE)
                                       
                                    if (UnitAlive(u)) then
                                        if (GetUnitAbilityLevel(u, FROST_SLOW_BUFF) == 0) then

                                            set v = CreateUnit(Player(PLAYER_NEUTRAL_PASSIVE), XE_DUMMY_UNITID, x, y, 0)
                                            call UnitAddAbility(v, FROST_SLOW_ID)
                                            call UnitApplyTimedLife(v, 'BTLF', 1.0)
                                            call IssueTargetOrder(v, "attackonce", u)
                                        endif
                                    elseif (GetRandomInt(0, 100) <= this.chance and ShatterFilter(u)) then

                                        call DestroyEffect(AddSpecialEffect(IMPACT_SHATTER_ART, x, y))
                                        call RemoveUnit(u)
                                    endif
                                endif
                               
                                //Clears a special bolt
                                call this.xpl[j].clear()
                            endif
                        endif
                        set j = j+1
                    endloop
                   
                endif
               
                //Completely destroys the spell and all instances
                if (this.mcount == 0 and this.orb.obj == null and this.xtick >= ORB_TMAX) then
                   
                    set j = 0
                    loop
                        exitwhen (j >= this.mcount)
                        call this.mis[j].destroy()
                        set j = j+1
                    endloop
                    set j = 0
                    loop
                        exitwhen (j >= ORB_EXPLODE_AMOUNT)
                        call this.xpl[j].destroy()
                        set j = j+1
                    endloop
                   
                    call this.orb.destroy()
                   
                    call this.destroy()
                    set thistype.tot = thistype.tot-1
                    set thistype.tta[i] = thistype.tta[thistype.tot]
                   
                   
       
                    if (thistype.tot == 0) then
                        call PauseTimer(ANIM_TIMER)
                    endif
                   
                else
                    set i = i+1
                endif
            endloop
            set v = null
        endmethod
       
        static method create takes unit su, real tx, real ty returns thistype
            local thistype this = thistype.allocate()
            local real x = GetUnitX(su)
            local real y = GetUnitY(su)
            local integer level = GetUnitAbilityLevel(su, ABILITY_ID)
           
            set this.owner = GetOwningPlayer(su)
            set this.orb = missile.create(ORB_ART, this.owner, x, y, ORB_HEIGHT, Atan2(ty-y, tx-x), ORB_SPEED, ORB_SCALE)
            set this.otick = 0
            set this.mcount = 0
            set this.mtot = 0
            set this.damage = IMPACT_DAMAGE_BASE+IMPACT_DAMAGE_INC*(level-1)
            set this.chance = IMPACT_SHATTER_PER_BASE+IMPACT_SHATTER_PER_INC*(level-1)
           
            set thistype.tta[thistype.tot] = this
           
            if (thistype.tot == 0) then
                call TimerStart(ANIM_TIMER, XE_ANIMATION_PERIOD, true, function thistype.callback)
            endif
           
            set thistype.tot = thistype.tot+1
           
            return this
        endmethod
       
    endstruct
   
    private function Evaluate takes nothing returns boolean
        if (GetSpellAbilityId() == ABILITY_ID) then
            call spell.create(GetTriggerUnit(), GetSpellTargetX(), GetSpellTargetY())
        endif
        return false
    endfunction
   
    private function Init takes nothing returns nothing
        local trigger t = CreateTrigger()
        call TriggerRegisterAnyUnitEventBJ(t, EVENT_PLAYER_UNIT_SPELL_EFFECT)
        call TriggerAddCondition(t, Filter(function Evaluate))
    endfunction

endlibrary
 


changelog
<> v1.01 Added a "shatter filter" to prevent issues such as removing a hero from the game.

More coming soon I think.


Do not forget to give credits if this is used!!
~Eccho~

Keywords:
Frozen, Orb, Chill, Cold, Ice, Icy, Bolt, Missile, Phrozen, Frost, Winter, Lich, Blue, Snow, Shatter, Split, Icicle, Freezing, Freeze
Contents

Frozen Orb v1.01 (Map)

Reviews
Moderator
10:14, 5th Feb 2010 TriggerHappy: The only thing I would suggest doing is recycling the missiles, it would be extremely easy in your scenario.
  1. Catch_ya

    Catch_ya

    Joined:
    May 21, 2009
    Messages:
    981
    Resources:
    1
    Spells:
    1
    Resources:
    1
    Castle Fight's frozen orb doesnt look that good. And yes I believe that they used phoenix ability on a dummy aswell.
     
  2. Itachi009

    Itachi009

    Joined:
    Dec 8, 2008
    Messages:
    97
    Resources:
    0
    Resources:
    0
    hmm sry you are right, vexorians dont work anymore, but on THW are 2 in GUI, but your is better indeed (and i think in diablo 2 all creeps with classification non-boss and special = false can shatter with frost spells)
     
  3. Eccho

    Eccho

    Joined:
    Nov 29, 2006
    Messages:
    2,297
    Resources:
    2
    Spells:
    2
    Resources:
    2
    That's not entirely true. I remember defeating baal with orbs several times, and that he shattered. It could be, however, a case by case which boss can shatter or not.

    As far as I am concerned, I did some seraching for frozen orbs both here, at wc3c and at theHelper. I only found a GUI one here but it isn't comparable to this version, basically because the fact that it is GUI. If I would have found more versions, I wouldn't have submitted it.
     
  4. Itachi009

    Itachi009

    Joined:
    Dec 8, 2008
    Messages:
    97
    Resources:
    0
    Resources:
    0
    that isnt even possible : ) i still play diablo 2, killed baal on normal, nightmare and hell (tried with meppl too) and he didnt shatter. and i cant remember that ever a boss shattered cause they got special death animations (andy will burn to ground, meppl ends in a freezing wave, baal releases some souls)

    and i already said that yours is the best version and that im sry^^ gj
    PS: there are 2 versions on THW, but one got another name
     
  5. Eccho

    Eccho

    Joined:
    Nov 29, 2006
    Messages:
    2,297
    Resources:
    2
    Spells:
    2
    Resources:
    2
    Baal can shatter, I can swear on that. I think, actually, they can shatter, if you already have done the quest. The special death animation only occurs when you complete a quest.
     
  6. Demongrip

    Demongrip

    Joined:
    Sep 8, 2009
    Messages:
    80
    Resources:
    6
    Spells:
    6
    Resources:
    6
    I made a quick view of the spell and haven`t found any bugs(haven`t tested for MUI but it is a jass spell so i`m expecting it is).My only suggestion is to make it slower-in diablo the frozen orb isn`t that fast
     
  7. Eccho

    Eccho

    Joined:
    Nov 29, 2006
    Messages:
    2,297
    Resources:
    2
    Spells:
    2
    Resources:
    2
    It's up to the user :>

    And actually, I did make a test measuring the FPS...

    In Diablo 2, a missile is about 0.88 seconds long, the orb is 1.12 seconds and the final explosion, 0.96 seconds. So I did try to make them have about the same duration
     
  8. incinerate11

    incinerate11

    Joined:
    Oct 5, 2009
    Messages:
    31
    Resources:
    0
    Resources:
    0
    Very nice eccho, lagless,leakless,bugless,mui, and vjass.... +rep , i will credit you if i use this spell in my map (most likely :p) .. just need to figure up some other spells now lol
     
  9. Itachi009

    Itachi009

    Joined:
    Dec 8, 2008
    Messages:
    97
    Resources:
    0
    Resources:
    0
    Well, if you dont believe me pls try it xD I play diablo 2 (name is: divinitus for my chargerdin or endoftheworld for my firedruid or deepfreeze for my orbsoso) I did 10 mf baalruns and one time i helped my friend with the baalquest on hell, he needed the quest, so the earth splattered around baal, when i did mf runs, baal showed his death animation, and DIDNT shattered^^ but the earth was normal, and heroes with positive cold resistance or ravenfrost cant shatter too
     
  10. Eccho

    Eccho

    Joined:
    Nov 29, 2006
    Messages:
    2,297
    Resources:
    2
    Spells:
    2
    Resources:
    2
    Alright, maybe frozen orb itself may not, but I have been in several parties where several effects at once has made baal shatter. But nvm:>
     
  11. incinerate11

    incinerate11

    Joined:
    Oct 5, 2009
    Messages:
    31
    Resources:
    0
    Resources:
    0
    is the missle being recycled?
     
  12. Eccho

    Eccho

    Joined:
    Nov 29, 2006
    Messages:
    2,297
    Resources:
    2
    Spells:
    2
    Resources:
    2
    Not at the moment. It's on my to-do list
     
  13. incinerate11

    incinerate11

    Joined:
    Oct 5, 2009
    Messages:
    31
    Resources:
    0
    Resources:
    0
    okay cool, ill wait for that version instead, cause when i put it in my map , 3 heros casted it at same time and it indeed caused lag :p
     
  14. Mainywc3sear

    Mainywc3sear

    Joined:
    Feb 9, 2009
    Messages:
    195
    Resources:
    0
    Resources:
    0
    fine done, its very nice
     
  15. incinerate11

    incinerate11

    Joined:
    Oct 5, 2009
    Messages:
    31
    Resources:
    0
    Resources:
    0
    hi eccho, as you know, i put this spell into my map :) , and was playing it recently, i found a pretty serious bug . it should not be to hard to fix however..

    basically the Shattering part of this spell works on heroes .. what it did was completely remove the shattered hero from the game and was never to be seen again because i could not revive the hero at base. so i guess it needs a shatter filter check

    so when you get time, can you fix this :p .. i am not sure how to.
     
  16. Eccho

    Eccho

    Joined:
    Nov 29, 2006
    Messages:
    2,297
    Resources:
    2
    Spells:
    2
    Resources:
    2
    Oh yes, I know that, I just forgot :)

    I should add a ShatterFilter for that, to let the user add their own conditions in the top of the spell, to determine what and whatnot can shatter

    Good thing you pointed that out, it will come in a moment.

    Edit: Fixed
     
    Last edited: Feb 15, 2010
  17. Dr. Boom

    Dr. Boom

    Joined:
    May 1, 2008
    Messages:
    1,549
    Resources:
    3
    Maps:
    1
    Spells:
    1
    Tutorials:
    1
    Resources:
    3
    Seas =)

    I tested it now and at the moment I will give you only 1,5/5 points because of the the "universal dummys" on the map after casting the spell. You should remove/fix that and then you get 4/5 points.

    I will wait 3 days - I come back and rate your work. <-- no matter if you did something or not :wsmile:

    EDIT: Get a look
    [​IMG]
     
  18. Eccho

    Eccho

    Joined:
    Nov 29, 2006
    Messages:
    2,297
    Resources:
    2
    Spells:
    2
    Resources:
    2
    lmao what`?

    You obviously imported it wrong somewhat. You can not select units which have the locust ability. Recheck the dummy and make sure it has the locust ability.

    I just tested. They are unselectable.

    Edit: Your case is probaböy suffering from not having the model imported properly either? I see no missiles there


    D: D: D:

    Edit: fuck no... I uploaded the wrong version

    Its fixed now. Please read the first post for details
     
  19. FibSaSk

    FibSaSk

    Joined:
    Nov 2, 2009
    Messages:
    75
    Resources:
    0
    Resources:
    0
    error :S doesn`t work
     
  20. Eccho

    Eccho

    Joined:
    Nov 29, 2006
    Messages:
    2,297
    Resources:
    2
    Spells:
    2
    Resources:
    2
    well, maybe you could tell me what doesnt work?