[Contest] Official Christmas Spell Contest

Demonwrath

Happy[ExtremelyOverCommercializ ed]HolidaysEveryon
Reaction score
47
Well I will join, I should be getting my computer back this weekend so I should be able to get something done.

Now what to do...
 

T3rm1nat0r

New Member
Reaction score
23
just if any one wants to know, i am half way through my spell :D

my terrain is quite cool :D

must i add a screenie of my terrain?
 

Flare

Stops copies me!
Reaction score
662
Are you allowed to edit a spell you have already submitted to TH.net, and alter it to suit the theme. I would like to enter using an alteration to my Black Arrow spell (to fit theme, some major renovations to the effects etc) or must it be a totally new idea (which I can't think of :p)

EDIT: just FOUND (incase people think i read them and disregarded them ^^) the rules on the first post. Rule #2 relates to my question, but it doesn't really clarify me on the whole thing. Considering that the spell was made before the contest, I would assume it wouldn't be legit according to the rules, but does editting the existing spell still come under that rule?

EDIT: also, in the grading section of the first post, what do you mean by aesthetics and intangibles? aesthetics = visuals of the ability, right?
 

Demonwrath

Happy[ExtremelyOverCommercializ ed]HolidaysEveryon
Reaction score
47
Simple question...

I know you said imports are not allowed for the spell, but can I say import my own custom skin for the Hero? Just so he looks cool? :p
 

Arkan

Nobody rides for free
Reaction score
92
Alright I'm done. I made it easy to modify in case anyone would like to use it.

I bring you... ARCTIC MAELSTROM

A pure damage channeling spell with shitloads of eyecandy.
MUI/vJASS
 

Attachments

  • arctic.jpg
    arctic.jpg
    146.6 KB · Views: 460
  • Arkan_ArcticMaelstrom.w3x
    73.5 KB · Views: 315

werasd

New Member
Reaction score
14
Nice Contest! Count me in!




------------- EDIT -----------
I will soon bring my spell to the forums
 
Reaction score
456
>Just use "none.mdl" No big difference.
There is a HUGE difference. Never spread that kind of information, as some may think that it's true.

none.mdl: as it says, it's nothing. It does not have attachment points, so it's impossible to attach models to it.

dummy.mdx: as it says, it's dummy. It has attachment points, so it's possible to attach models to it.

EDIT://If I understood right, I am allowed to use it. Increases my spell's importability very very much.
 

garet10

Active Member
Reaction score
9
Hi I want to try this

Will be my first try. Do you want a screenshot or a download thiny?

where do we post the spell?
 

emjlr3

Change can be a good thing
Reaction score
395
>Imported models / icons are not allowed, period.
What about "dummy.mdx"? It's pretty much needed..

I thought we had discussed this...

> Tower and Spell at same time.

Just a note about that.
This spell contest ends before the Tower contest.
The Tower contest has around another week to go after this one.
So, my recommendation is to go ahead and enter this contest, then you can come back and enter the other one after you submit your spell for this one.

yes, neglect Ghans.... :)

Are you allowed to edit a spell you have already submitted to TH.net, and alter it to suit the theme. I would like to enter using an alteration to my Black Arrow spell (to fit theme, some major renovations to the effects etc) or must it be a totally new idea (which I can't think of :p)

EDIT: just FOUND (incase people think i read them and disregarded them ^^) the rules on the first post. Rule #2 relates to my question, but it doesn't really clarify me on the whole thing. Considering that the spell was made before the contest, I would assume it wouldn't be legit according to the rules, but does editting the existing spell still come under that rule?

EDIT: also, in the grading section of the first post, what do you mean by aesthetics and intangibles? aesthetics = visuals of the ability, right?

that would be a no

Simple question...

I know you said imports are not allowed for the spell, but can I say import my own custom skin for the Hero? Just so he looks cool? :p

another, no, very, uneeded

Will be my first try. Do you want a screenshot or a download thiny?

where do we post the spell?

sure, preferably here
 
Reaction score
456
This is something I was supposed to make.. but then, for some reason, I changed the idea:

Dragonspawn Lord raises blocks of solid ice from random spots in the area around him. The blocks begin slowly circle around the Dragonspawn Lord, chilling the ground below them, making it slippery for enemy ground units. When a block collides with an enemy ground unit, the unit takes damage, gets frozen, and is temporarily unable to move or cast any spells. After some time, the blocks and the chilled ground will thaw.

failureSpell.png


JASS:
scope Glacier
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
//CONFIGURATION MENU
        globals
            //Rawcode of the ability
            private constant integer spellId = 'A000'
            //Rawcode of the block dummy
            private constant integer blockId = 'h001'
            //Interval of the timer (can't explain any better)
            private constant real interval = 0.035
        endglobals
        
        private constant function SpellArea takes integer level returns real
            //The size of the area where the ice blocks are risen.
            return 500.00 + (level * 100.00)
        endfunction
        
        private constant function ObjectCount takes integer level returns integer
            //How many ice blocks there are risen in the area
            return 4 + (level * 1) 
        endfunction
        
        private function ObjectModels takes nothing returns string
            //Possible models of a dummy. Change only if you know what you're doing.
            local string array possibleModels
            set possibleModels[0] = "Doodads\\Icecrown\\Rocks\\IceBlock\\IceBlock0.mdl"
            set possibleModels[1] = "Doodads\\Icecrown\\Rocks\\IceBlock\\IceBlock1.mdl"
            set possibleModels[2] = "Doodads\\Icecrown\\Rocks\\IceBlock\\IceBlock2.mdl"
            set possibleModels[3] = "Doodads\\Icecrown\\Rocks\\IceBlock\\IceBlock3.mdl"
            return possibleModels[GetRandomInt(0, 3)]
        endfunction
        
        private constant function SpellDuration takes integer level returns real
            //How many ice blocks there are risen in the area
            return 9.00 + (level * 3.00) 
        endfunction 
//END OF CONFIGURATION MENU
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
    
    private struct Gdata
        unit caster
        real area
        integer count
        real duration
        
        unit array blocks[20]
        effect array models[20]
        integer array direction[20]
        real array distance[20]
        
        timer handler = CreateTimer()
        real curTime = 0.00
        
        static method create takes unit caster, real area, integer count, real duration returns Gdata
            local Gdata dat = Gdata.allocate()
            local integer index = 0
            local real x
            local real y
            
            set dat.caster = caster
            set dat.area = area
            set dat.count = count
            set dat.duration = duration
            
            loop
                exitwhen (index == dat.count)
                set x = GetUnitX(dat.caster) + GetRandomReal(128.00, dat.area) * Cos(GetRandomReal(0.00, 359.00) * bj_DEGTORAD)
                set y = GetUnitY(dat.caster) + GetRandomReal(128.00, dat.area) * Sin(GetRandomReal(0.00, 359.00) * bj_DEGTORAD)
                set dat.blocks[index] = CreateUnit(GetOwningPlayer(dat.caster), blockId, x, y, GetRandomReal(0.00, 359.00))
                set dat.models[index] = AddSpecialEffectTarget(ObjectModels(), dat.blocks[index], "origin")
                set dat.direction[index] = GetRandomInt(0, 1)
                set dat.distance[index] = SquareRoot((GetUnitX(dat.blocks[index]) - GetUnitX(dat.caster)) * (GetUnitX(dat.blocks[index]) - GetUnitX(dat.caster)) + (GetUnitY(dat.blocks[index]) - GetUnitY(dat.caster)) * (GetUnitY(dat.blocks[index]) - GetUnitY(dat.caster)))
                set index = index + 1    
            endloop
            
            return dat
        endmethod
        
        method onDestroy takes nothing returns nothing
            local integer index = 0
            loop
                exitwhen (index == this.count)
                call DestroyEffect(this.models[index])
                call RemoveUnit(this.blocks[index])
                set index = index + 1
            endloop
        endmethod
    endstruct
    
    private function GlacierHandler_Actions takes nothing returns nothing
        local Gdata dat
        local timer exprTimer = GetExpiredTimer()
        local integer index = 0
        local real x
        local real y
        local real angle
        local real ad
        local real ai
        
        set dat = GetTimerStructA(exprTimer)
        
        if (dat.curTime >= dat.duration) then
            call ClearTimerStructA(dat.handler)
            call PauseTimer(dat.handler)
            call DestroyTimer(dat.handler)
            call dat.destroy()
        else
            loop
                exitwhen (index == dat.count)
                set angle = bj_RADTODEG * Atan2(GetUnitY(dat.blocks[index]) - GetUnitY(dat.caster), GetUnitX(dat.blocks[index]) - GetUnitX(dat.caster))
                set ad = (dat.area - dat.distance[index]) * 0.01
                set ai = ((dat.area - dat.distance[index]) * 0.01) * 2.00
                if (dat.direction[index] == 0) then
                    set x = GetUnitX(dat.caster) + dat.distance[index] * Cos(((angle + ad) - ai) * bj_DEGTORAD) 
                    set y = GetUnitY(dat.caster) + dat.distance[index] * Sin(((angle + ad) - ai) * bj_DEGTORAD)
                    call SetUnitX(dat.blocks[index], x)
                    call SetUnitY(dat.blocks[index], y)
                else
                    set x = GetUnitX(dat.caster) + dat.distance[index] * Cos(((angle - ad) + ai) * bj_DEGTORAD) 
                    set y = GetUnitY(dat.caster) + dat.distance[index] * Sin(((angle - ad) + ai)* bj_DEGTORAD)
                    call SetUnitX(dat.blocks[index], x)
                    call SetUnitY(dat.blocks[index], y)
                endif
                call SetTerrainType(x, y, 'Nice', -1, 1, 0)
                set index = index + 1
            endloop
        endif
        
        set exprTimer = null
    endfunction
    
    private function Glacier_Conditions takes nothing returns boolean
        return (GetSpellAbilityId() == spellId)
    endfunction
    
    private function Glacier_Actions takes nothing returns nothing
        local unit caster = GetTriggerUnit()
        local integer level = GetUnitAbilityLevel(caster, spellId)
        local Gdata dat = Gdata.create(caster, SpellArea(level), ObjectCount(level), SpellDuration(level))
    
        call SetTimerStructA(dat.handler, dat)
        call TimerStart(dat.handler, interval, true, function GlacierHandler_Actions)
    
        set caster = null
    endfunction
    
    public function InitTrig takes nothing returns nothing
        local trigger trig = CreateTrigger()
        call TriggerRegisterAnyUnitEventBJ(trig, ConvertPlayerUnitEvent(274))
        call TriggerAddAction(trig, function Glacier_Actions)
        call TriggerAddCondition(trig, Condition(function Glacier_Conditions))
        set trig = null
    endfunction
endscope

It'd be nearly impossible to store the coordinates of the changed terrain, as the spell's duration can be infinite.
 

emjlr3

Change can be a good thing
Reaction score
395
neat idea, alternatively, you could have used a dummy unit to make it look as though the terrain had changed, as opposed to actually changing it

btw

JASS:

private constant function SpellArea takes integer level returns real
    //The size of the area where the ice blocks are risen.
    return 500.00 + (level * 100.00)
endfunction


would probably give you issues, along with your other constant functions who take arguments...
 
Reaction score
456
>neat idea, alternatively, you could have used a dummy unit to make it look as though the terrain had changed, as opposed to actually changing it
Thanks :p, but I won't use it anymore.. because:

1. The outer ice blocks moved way too fast comparing to the blocks that are near the caster. (couldn't fix it)
2. The dummy terrain part thing sounds too complicated to me :D
3. I can't use this as you helped me with it so.. ^_______^

>would probably give you issues, along with your other constant functions who take arguments...
How so?

Anyway, I have plenty of time to figure out even better idea.
 

emjlr3

Change can be a good thing
Reaction score
395
constant functions are just that, constant, they never change, however, if your returned real is dependant upon the level of the ability cast, it is not very constant now is it?
 

Trollvottel

never aging title
Reaction score
262
My spell is ready now:


Ice (sorry had no idea how to name the spell :p)
Creates an Ice thing that circles around the caster dealing damage and freezing enemys.
sc1rx6.jpg

sc2sw5.jpg


Download:
 

Attachments

  • IceThingySpellContestChristmasThemeIce.w3x
    31.7 KB · Views: 265

T3rm1nat0r

New Member
Reaction score
23
Elumork, your spell is quite cool :D

when i said "I am half way through my spell", i am not anymore, coz my PC just broke down, so now i have to restart my spell...
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Members online

      No members online now.

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top