- Joined
- Apr 24, 2012
- Messages
- 5,113
yup,i coded it 3 hours ago 
Someone played my map so far?
Someone played my map? Pls comment it.
It's first invasion, humans wasn't even born as race presented in warcraft 2 or 3, at that time they lived and acted just like troll tribes, it was the high elves (banished night elves) who showed them how to use magic. Humans united during those troll wars and finally defeated trolls with elves help, kingdom was born after.
To make it as simple as possible, there is no logical sense to have both human, high elf, blood elf, dwarf and so on presented here, they don't exist or have no idea what magic is.
So point is create night elf hero, or some ancient like forest creature that will be forgotten over next 10.000 years.
So I guess it is not much of a issue anyway.The lore speaks of the elven cities, but the heroes in the defenses don't necessarily need to be Elves; they can be any race, except the races that were consisting the Legion itself.
Finally, you don't need to acknowledge the lore itself to join this contest. Just create a custom hero and start working on them and their spells.
BTW a quick question: are we allowed to update our entry to the spells section after the deadline?
@Christers - I gotta say, I really like the idea of a Dwarven Engineer (actually was designing something like that as a unit for a Dwarven custom race...), and like several aspects of your hero, but I somehow feel like there's lots of untapped potential.
You've obviously got the "tower building" idea down (and lots (maybe too many?) cool upgrades for them, based on the other abilities you choose), but then... I dunno, maybe it's just me, but it seems like a bit of a let-down. Basic 'mine-laying', a passive that "improves the structure" (defensive, I thought), giving it more damage?? Finally, Magic Missile is a D&D-inspired classic, but I wondered how a analytic engineer turns to magical means all of a sudden.
Perhaps it's a bit much, a bit late. But my mind is already swirling with all the possibilities of a truly 'siege-based hero'; you have Sabotage (like targetted Liquid Fire, perhaps) against enemy buildings, you have Undermine (tunneling under a target building, causing it to collapse), you could have a Siege Weapon +Damage Aura or Summon Siege Weapon (of some creative kind), or perhaps Special Shot (dumb name for a mod. Orb of Corruption ('arrow' on-attack ability, adds AoE & +Damage for mana))... Perhaps creating Roads that speed up your friendly units (passively?), or placing Traps of various sorts, or enhancing the armor of your own buildings... the Tinker's Demolish (+damage to buildings) is a nice simple passive, and could be combined with something else... Maybe a special tower/construct that boosts friendly units but lowers enemy building armor (great for cracking through a turtled base) ("Bastion of Ironforge")...
*pant pant*
Sorry, got a little excited there. Needless to say, there's lots of options, that would really flesh out the idea of a 'Dwarven Engineer', and be incredibly creative. Nice work, though.
I think I need to finish this tonight to be safe because I might be going somewhere tomorrow...
I'm thinking of something like a snowstorm but I cannot find a model for that and my Summon system is still pending too...
library ChillBuff requires T32,Table
private module init
static method onInit takes nothing returns nothing
local integer i = 0
set thistype.t = Table.create()
loop
exitwhen i > 15
call SetPlayerAbilityAvailable(Player(i),ABIL_ID,false)
set i = i + 1
endloop
endmethod
endmodule
struct Chill extends array
static Table t
static constant integer ABIL_ID = 'A000'
static constant integer ULTI_ID = 'A003'
static constant integer BUFF_ID = 'B000'
private static integer instanceCount = 0
private static thistype recycle = 0
private thistype recycleNext
unit u
real duration
method clear takes nothing returns nothing
set this.duration = 0.0
set t[GetHandleId(u)] = 0
call UnitRemoveAbility(this.u,ABIL_ID)
call UnitRemoveAbility(this.u,BUFF_ID)
set this.u = null
call this.stopPeriodic()
set .recycleNext=recycle
set recycle=this
endmethod
method periodic takes nothing returns nothing
set this.duration = this.duration - T32_PERIOD
if this.duration <= 0.0 or GetWidgetLife(this.u) < .405 then
call this.clear()
endif
endmethod
implement T32x
static method new takes nothing returns thistype
local thistype this
if (recycle == 0) then
set instanceCount = instanceCount + 1
return instanceCount
else
set this = recycle
set recycle = recycle.recycleNext
endif
return this
endmethod
static method add takes unit u, real duration, boolean overwrite returns nothing
local integer id = GetHandleId(u)
local thistype this = t[id]
if this == 0 then
set this = new()
set t[id] = this
call UnitAddAbility(u,ABIL_ID)
call this.startPeriodic()
endif
set this.u = u
if overwrite then
set this.duration = duration
else
set this.duration = this.duration + duration
endif
endmethod
implement init
endstruct
endlibrary
library TriFrost requires Nova,ChillBuff,SpellEffectEvent
private module init
static method onInit takes nothing returns nothing
call RegisterSpellEffectEvent(ABIL_ID,function thistype.new)
call NovaSystem.RegisterOnDamage(ABIL_ID,function thistype.chill)
endmethod
endmodule
struct TriFrost extends array
static constant integer ABIL_ID = 'A001'
static constant string NOVA_FX = "ShivasWrath.mdx"
static constant attacktype at = ATTACK_TYPE_MAGIC
static constant damagetype dt = DAMAGE_TYPE_COLD
static constant real chillDuration = 2.00
static method getDamage takes unit caster, integer level, integer which returns real
return (100.0 + 50*(level-1))/(which)
endmethod
static method getAOE takes unit caster, integer level, integer which returns real
return 125.0*which
endmethod
static method getScale takes unit caster, integer level, integer which returns real
return which*0.5
endmethod
static method new takes nothing returns nothing
local unit u = GetTriggerUnit()
local integer level = GetUnitAbilityLevel(u,ABIL_ID)
local real x = GetSpellTargetX()
local real y = GetSpellTargetY()
local integer i = 1
loop
exitwhen i > 3
call NovaSystem.SimpleCreateDelay(u,x,y, 0.5*i, 0.0, getAOE(u,level,i), 0.0,/*
*/ getDamage(u,level,i), getScale(u,level,i), NOVA_FX, at, dt,ABIL_ID)
set i = i + 1
endloop
set u = null
endmethod
static method newEx takes unit u, real x, real y returns nothing
local integer i = 1
local integer level = GetUnitAbilityLevel(u,ABIL_ID)
loop
exitwhen i > 3
call NovaSystem.SimpleCreateDelay(u,x,y, 0.5*i, 0.0, getAOE(u,level,i), 0.0,/*
*/ getDamage(u,level,i), getScale(u,level,i), NOVA_FX, at, dt,ABIL_ID)
set i = i + 1
endloop
endmethod
static method chill takes nothing returns nothing
if GetUnitAbilityLevel(NovaSystem.data.caster,Chill.ULTI_ID) == 0 then
return
endif
call Chill.add(NovaSystem.filter,chillDuration,true)
endmethod
implement init
endstruct
endlibrary
library TremblingFrost requires ImpaleSystem,ChillBuff,SpellEffectEvent
private module init
static method onInit takes nothing returns nothing
call RegisterSpellEffectEvent(ABIL_ID,function thistype.new)
call JumpInPlace.registerStopEvent(ABIL_ID,function thistype.chill)
endmethod
endmodule
struct TremblingFrost extends array
static constant integer ABIL_ID = 'A002'
static constant string HIT_FX = "Crystal Impale Hit.mdx"
static constant string IMPALE_FX = "Crystal Impale.mdx"
static constant attacktype at = ATTACK_TYPE_MAGIC
static constant damagetype dt = DAMAGE_TYPE_COLD
static constant real chillDuration = 3.00 //Added 1 second to account for the stun duration
static constant real aoe = 150.0
static constant real distperwave = 150.0
static constant real scale = 1.0
static method getDamage takes unit caster, integer level returns real
return (100.0 + GetHeroInt(caster,true)*(level+GetUnitAbilityLevel(caster,Chill.ULTI_ID)))
endmethod
static method getDistance takes unit caster, integer level returns real
return (200.0*(level+1))
endmethod
static method new takes nothing returns nothing
local unit u = GetTriggerUnit()
local integer level = GetUnitAbilityLevel(u,ABIL_ID)
local real x1 = GetUnitX(u)
local real y1 = GetUnitY(u)
local real x2 = GetSpellTargetX()
local real y2 = GetSpellTargetY()
local real angle = Atan2(y2-y1,x2-x1)
call Impale.createFireCID(u, level, IMPALE_FX, HIT_FX,/*
*/angle, scale, aoe, getDistance(u,level), distperwave,/*
*/getDamage(u,level), ABIL_ID)
set u = null
endmethod
static method chill takes nothing returns nothing
if GetUnitAbilityLevel(JumpInPlace.tmpCauseUnit,Chill.ULTI_ID) == 0 then
return
endif
call Chill.add(JumpInPlace.tmpFlyUnit,chillDuration,true)
endmethod
implement init
endstruct
endlibrary
library PhasingFrost requires TriFrost
private module init
static method onInit takes nothing returns nothing
call RegisterSpellEffectEvent(ABIL_ID,function thistype.new)
endmethod
endmodule
struct PhasingFrost extends array
static constant integer ABIL_ID = 'A004'
static constant string NOVA_FX = "ShivasWrath.mdx"
static constant attacktype at = ATTACK_TYPE_MAGIC
static constant damagetype dt = DAMAGE_TYPE_COLD
static method getDamage takes unit caster, integer level returns real
return GetHeroInt(caster,true)*(level*2.0)
endmethod
static method getAOE takes unit caster, integer level returns real
return 125.0 + 25.0*level
endmethod
static method getScale takes unit caster, integer level returns real
return 0.5 + level*.2
endmethod
static method new takes nothing returns nothing
local unit u = GetTriggerUnit()
local integer level = GetUnitAbilityLevel(u,ABIL_ID)
local real x = GetSpellTargetX()
local real y = GetSpellTargetY()
local real x2 = GetUnitX(u)
local real y2 = GetUnitY(u)
call NovaSystem.SimpleCreate(u,x,y, 0.0, getAOE(u,level), 0.0,/*
*/ getDamage(u,level), getScale(u,level), NOVA_FX, at, dt,ABIL_ID)
call SetUnitX(u,x)
call SetUnitY(u,y)
call NovaSystem.SimpleCreate(u,x2,y2, 0.0, getAOE(u,level), 0.0,/*
*/ getDamage(u,level), getScale(u,level), NOVA_FX, at, dt,ABIL_ID)
if GetUnitAbilityLevel(u,Chill.ULTI_ID) > 0 and GetUnitAbilityLevel(u,TriFrost.ABIL_ID) > 0 then
call TriFrost.newEx(u,x,y)
call TriFrost.newEx(u,x2,y2)
endif
set u = null
endmethod
implement init
endstruct
endlibrary
You can even now, but it won't be moderated before this contest ends.
Kyrbi0 said:@TwoVenomous - I'll say this, I really love elemental heroes & such, and think you could take that in an interesting direction (as long as you're using jigrael/Tarrasque's "Tidal Lord" model, of course. That's a requirement xD.). However, I'm not so sure about the direction it's taking. First of all, abusing the word "liquid" isn't helping the Theme (also unsure what "Delta the Twist" means & comes from), and the Role is unclear. Where would this character physically be in a battle? What type of combat would he get into?
Further, a suggestion might be to try and pick some aspect of the ocean for this hero to embody. For example, he could be sort of a STR/off-tank/caster hero (~Dreadlord/) embodying "the boundless rage of the ocean"; an AGI/ranged support/tactical hero (~Dark Ranger/Naga Sea Witch/etc) embodying "the ceaseless ebb & flow of the tides"; an INT/support caster/etc (~Lich/Archmage/etc) embodying "the fathomless mysteries of the sea"[/i].
If you pick an outline or a framework to build within/from, then you can create abilities that aren't just "wow splashy cool awexome water sfx", but all that plus meaningful and Role-building.
(Moreover those are just suggestions, and only 3 of the many ways to take such a hero. AGI/INT? More supportive to allies (no damaging abilities)?, etc)
Finally, I might suggest removing the color-code tags for your posts on THW & saving that for the WE; they just make it harder to read online.![]()