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...
Now what to do...
>Imported models / icons are not allowed, period.
What about "dummy.mdx"? It's pretty much needed..
> 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.
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 )
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?
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?
Will be my first try. Do you want a screenshot or a download thiny?
where do we post the spell?
scope Glacier
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
//CONFIGURATION MENU
globals
//Rawcode of the ability
private constant integer spellId = 039;A000039;
//Rawcode of the block dummy
private constant integer blockId = 039;h001039;
//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, 039;Nice039;, -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
that would be a no
My spell is ready now:
Ice (sorry had no idea how to name the spell )
Creates an Ice thing that circles around the caster dealing damage and freezing enemys.
Download: