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

orbs models(twirling around weapons)

Status
Not open for further replies.
Level 13
Joined
May 11, 2008
Messages
1,198
there's a couple of orbs models i would like. you know those orbs you can buy at the shops in ladder games and the orbs you might find in campaigns...they twirl around your weapon and enable you to attack air. and in the campaign some dreadlords have some orbs in the cinematics. well i want to add some orbs to some heroes in my map but i'm unsatisfied with all the orbs models available. maybe i'm looking in the wrong places but i can't seem to find much of what i'm looking for at the hiveworkshop.

one problem i'm bumping into is finding some orb models that may look good...but i can't find a use for them except maybe if i was making a space map and needed planet models, lol. they're so big...and they don't have a twirling stand function like real orbs.

mainly for now i want to see 2 orbs. i'll try to describe them the best i can.

i want a wind orb. the color should probably be grey, like the tornado. if possible, i'd also like an icon to be made. if you can't do the icon, don't worry, the main thing i want is the model. can worry about the icon later.

i also want an orb of slow orb. i know warcraft 3 already has one, but it's green and not red like the one in the orb of slow icon. lol i'm not sure why this is the case, but it's a color of green different from the orb of slow and i think the trail is a bit different too. anyways, i want an orb that looks just like the one in the icon.
 
Level 7
Joined
Apr 19, 2008
Messages
146
For the icon, why don't you use the wow's primal wind icon?

Inv_elemental_primal_air.png
 
Level 13
Joined
May 11, 2008
Messages
1,198
i'm not sure if that would work but it is an interesting suggestion.

afaik actually it's against hiveworkshop rules to submit the icon from wow to this site, but i am unsure that it's against the rules to show icons as long as you make sure people know it's from wow.

that is a grey tornado icon so that is nice. i can use it for the ability icon.
still, i am definitely looking for the weapon orb if someone is up for making it or if it's been made already.

even if you can take the regular tornado model and shrink it and make it move around like a weapon orb that would be just fine and dandy. and it would have the obvious benefit of working with that icon nicely. it can look very orby or just be a mini-tornado, it's just what would twirl around the staff like what the prophet model carries, that plain brown staff. in case you're wondering if you haven't guessed yet, it's based on the spell in the jass box below.

i'm actually kind of wondering if it might be possible to make a system that simulates weapon orbs with any model. that might very well be...and if i can't get anyone to make the model, that might just have to be done.
JASS:
library TornadoOnDeath requires TimerUtils, xefx, xedamage optional BoundSentinel
//-----------------------------------------------------------------------------------------------
// Tornado by scorpion182
// requires: TimerUtils, BoundSentinel, xe by vexorian
//
//
//
//
//
//-----------------------------------------------------------------------------------------------
//----CALIBRATION SECTION------------------------------------------------------------------------
    globals
        private constant integer SPELL_ID       = 'A01U' //spell rawcode
//spell pretty much codes itself, evasion with 0 chance is just fine for base ability
        private constant string  TORNADO_PATH   = "Abilities\\Spells\\Other\\Tornado\\TornadoElementalSmall.mdl" //tornado effect path
        private constant real    ANGLE_SPEED    = .1 //tornado angle speed
        private constant real    TORNADO_SCALE  = 1. //tornado scaling value
        private constant real    TICK_INC       = 5. //tornado tick increment
        private constant real    MIN_TICK       = 80. //tornado minimum tick distance
    endglobals

    private constant function GetDuration takes integer lvl returns real
        return 30.+lvl*0 //spell duration in seconds
    endfunction
    
    private constant function GetCollisionSize takes integer lvl returns real
        return 150.+lvl*0 //tornado collision size
    endfunction
    
    private constant function GetAoE takes integer lvl returns real
        return 500.+lvl*0 //tornado aoe
    endfunction
    
    private constant function GetDamage takes integer lvl returns real
        return 15.*lvl + 30. //does damage per second
    endfunction
    
    //damage filter
    private function DamageOptions takes xedamage spellDamage returns nothing
        set spellDamage.dtype = DAMAGE_TYPE_UNIVERSAL
        set spellDamage.atype = ATTACK_TYPE_SIEGE
        set spellDamage.exception = UNIT_TYPE_STRUCTURE //don't damage building
        set spellDamage.visibleOnly = false //only damage visible unit
        set spellDamage.damageAllies = false //damage allies if true
        set spellDamage.damageTrees = true
    endfunction
//------------END OF CALIBRATION SECTION---------------------------------------------------------
    globals
        private xedamage xed
    endglobals
    
    private struct data

        unit caster
        timer t
        xefx fx
        real angle
        real tick
        real inc
        integer lvl
        real duration
    
        static method create takes unit c returns thistype
            local thistype this = thistype.allocate()
            local real x = GetUnitX(c)
            local real y = GetUnitY(c)
            local real a = GetRandomReal(0, 2*bj_PI)
            
            set .lvl = GetUnitAbilityLevel(c, SPELL_ID)
            set .caster = c
            set .t = NewTimer()
            set .fx = xefx.create(x, y, a)
            set .fx.fxpath = TORNADO_PATH
            set .fx.scale = TORNADO_SCALE
            set .tick = GetAoE(.lvl)
            set .inc = TICK_INC
            set .angle = a
            set .duration = GetDuration(.lvl)
            
            return this
        endmethod
    
        private method onDestroy takes nothing returns nothing
            call ReleaseTimer(.t)
            call .fx.destroy()
        endmethod
    
        static method onLoop takes nothing returns nothing
            local thistype this = thistype(GetTimerData(GetExpiredTimer()))
            local real a
            
            if .duration>0 and not IsUnitType(.caster, UNIT_TYPE_DEAD) then
                set .duration = .duration - XE_ANIMATION_PERIOD
                set a = .angle + ANGLE_SPEED
                
                set .fx.x = GetUnitX(.caster) + .tick * Cos(a)
                set .fx.y = GetUnitY(.caster) + .tick * Sin(a)
                set .tick = .tick - .inc
                    
                if .tick < MIN_TICK or .tick > GetAoE(.lvl) then
                    set .inc = .inc * -1
                endif
                
                set .angle = a
            
                call xed.damageAOE(.caster, .fx.x, .fx.y, GetCollisionSize(.lvl), GetDamage(.lvl) * XE_ANIMATION_PERIOD)
                
            else
                call .destroy()
            endif
        endmethod
    
        static method SpellEffect takes nothing returns boolean
            local thistype this
            
            if GetUnitAbilityLevel(GetKillingUnit(), SPELL_ID)>0 then
                set this = thistype.create(GetKillingUnit())
                call SetTimerData(.t, this)
                call TimerStart(.t, XE_ANIMATION_PERIOD, true, function thistype.onLoop)
            endif
        
            return false
        endmethod

        static method onInit takes nothing returns nothing
            local trigger t = CreateTrigger()
            call TriggerRegisterAnyUnitEventBJ(t, EVENT_PLAYER_UNIT_DEATH)
            call TriggerAddCondition(t, function thistype.SpellEffect)
            
            //init xedamage
            set xed=xedamage.create()
            call DamageOptions(xed)
            //call XE_PreloadAbility('A01U')
        endmethod

    endstruct

endlibrary
 
Status
Not open for further replies.
Top