[Contest] Hero Contest 1#

Status
Not open for further replies.

Daskunk

SC2 Forum MVP - TheSkunk #386
Reaction score
186
Also, what I meant was that could you make 4 active spells (or 4 passive spells for that matter) or do you require something like 3 active, 1 passive?
You can do 4 active, sure.
 

Pyrogasm

There are some who would use any excuse to ban me.
Reaction score
134
Trollvottel said:
Is the Timer Ticker system allowed too? please....
Why? What does it add that you need? The other allowed systems are simply different versions of attachment systems. TimerTicker is not an attachment system, and anything you can do with it you could do with any of the allowed attachment systems.
emootootoo said:
When I saw that quote and a few other things, I realised that this contest would be kind of different to the usual (which is nice), where it is completely based off creativity and execution isn't as important.

Then I saw this
and it explained it all!

The challenge is on! Who can make the laggiest spells? :p
I believe Daskunk has decided to decide "winners" in the fashion I suggested on the 2nd page. This method synthesizes both a public poll (which he did mention, though vaguely) and a nitpicky judge score (which he didn't mention).

Here's how I said it should be done:

  • People submit their heroes.
  • People on the forum playtest the maps for the heroes.
  • Anybody and everybody can vote publicly by posting in some thread. Every voter can give 2 points; they can give 1 point to each of their two favorites, or they can give 2 points to just one submission. Perhaps they only want to give out 1 point.
  • People's votes only count if they give a valid, acceptable reason for doing so. E.G: "I liked hero X for A, B, and C. It did have a flaw due to D, but overall it was the best hero of the bunch."
  • After some time, the public voting is closed.
  • Votes are counted manually by someone (a moderator or the contest runner) and then shown.
  • Either the top N contestants or all of them are then reviewed by 1 or 2 judges and given an X/100 score for their coding.
  • Points given in votes and the judging score are then combined in some way to yield a total score that determines the "winner".
 

Trollvottel

never aging title
Reaction score
262
well not that i !need! it but i made everything with it and it was bad if i had to rewrite all this things just because you dont like it very much... i mean kattanas is much slower and uses game cache and is allowed
 

duyen

New Member
Reaction score
214
They arent EXACTLY alike. Both of them are none-target spells wich shoot things out, just one does AOE waves and the other shoots at acuall units.

Did you even dl the map ffs? 1 deals area damage to whoever is nearby, the other seeks out targets, and with ultimate they are even more different.

*Waits for lecture from Pyrogasm of why they both suck so much*

:p
 

Daskunk

SC2 Forum MVP - TheSkunk #386
Reaction score
186
Did you even dl the map ffs? 1 deals area damage to whoever is nearby, the other seeks out targets, and with ultimate they are even more different.
YES I HAVE DOWLOADED IT. I know they are differnt, I just think you should have a target spell or somthing. They are both just click and deal damage, and cool they make water elementals...
 

Trollvottel

never aging title
Reaction score
262
Ok heres my hero ( with TT):

Night Huntress - Agi based

Has good health but low mana. high mana costs and low cooldowns, can transform health into mana.

Jump Attack - 70/85/100 mana
Jumps to a target enemy unit biting it so it bleeds.
Level 1 - 200 damage over 3 seconds, 600 range
Level 2 - 275 damage over 3 seconds, 800 range
Level 3 - 350 damage over 3 seconds, 1000 range


Elunes Revenge - Passive
If the hero gets attacked in the night you have a 13% chance that elune throws down a glaive.
Level 1 - 45 damage
Level 2 - 60 damage
Level 3 - 75 damage

Mana Spring - No mana cost
The huntress cuts herself to make a sacrifice for her god, Elune. For each hitpoint she loses she gets mana points.
Level 1 - 0.8 mana points per hit point.
Level 2 - 0.9 mana points per hit point.
Level 3 - 1.0 mana points per hit point.
If the huntress' hp are lower than 100 she aborts channeling.

Ultimate:
Moon Power - 160 mana
Turns day into midnight and sends a ghost light to the target unit. When it hits the target it deals 75 damage and splits into 2 new lights who search for new victims in 500 range. Splits up to 5 times.

Maybe I will update the hero... espacially if TT isnt allowed
One imported icon made by myself( just a little recolor to fit the icon color theme)

@cohadar: pls dont kill if there are any golden rules of programming broken in my triggers ;)
View attachment Hero - Night Huntress.w3x
 

Daskunk

SC2 Forum MVP - TheSkunk #386
Reaction score
186
When I do jump bite, I can walk away and blood effect and damage will still happen.

Hero's ult should have longer cooldown or higher mana cost.

Mana Spring, you might want to make hurt you more. Gives full mana and doesnt hurt.

Elunes Revenge seems like more than 17%, Idk if thats bad really, and also it counts spells as being attacked, with I also dont know if matters.

Nice hero, but it seems a little bit imba, I think...
 

warden13

New Member
Reaction score
32
I wanna be in contest but i am not sure of myself. And i have a quetsion: is the stat balance important?
 

Daskunk

SC2 Forum MVP - TheSkunk #386
Reaction score
186
I wanna be in contest but i am not sure of myself. And i have a quetsion: is the stat balance important?
Stat or ability? Becuas stats should be pretty balanced. (Not 0 agility and 200 intelligence or anything) but abilitys are more important to balance.

PS: Trollvottel, make 6 archers and highest level your hero, vs a other night elf hero with 6 archers, and see who wins. (Make both sides use abilities)
 

SerraAvenger

Cuz I can
Reaction score
234
I want to join and finally create a hero I am planning to do since quite a while but I had no occasion to do that.

COunt me in ; )
-Davey
 

Trollvottel

never aging title
Reaction score
262
PS: Trollvottel, make 6 archers and highest level your hero, vs a other night elf hero with 6 archers, and see who wins. (Make both sides use abilities)

well i had to use a AI for this....


anyway i balanced it a bit and yes taking damage from spells counts as attack.
 

Sim

Forum Administrator
Staff member
Reaction score
534
Daskunk, if you elaborate an extensive list of what happens with the public vote I will approve this contest.
 

emootootoo

Top Banana
Reaction score
51
I'd just like to add something:

Since custom models are allowed I personally feel that creative use of default wc3 models to make original effects for spells should be given a lot more points than custom models.

So if you were to have some sort of marking criteria there would be something like Effect Creativity where if they just imported custom models and didn't use them creatively theyd get 0 (unless they made it), but if they used them creatively they could get a higher score. However creative use of default models would allow for a greater score.

This is entirely based on Pyro's post, where he says there will be marking after the public poll, which I agree is the best way.

Like personally I don't see why custom models are even needed considering you can make any effect you can imagine with normal Wc3 models.

So yeah, consider the idea in some shape or form.
 

Pyrogasm

There are some who would use any excuse to ban me.
Reaction score
134
emootootoo said:
I'd just like to add something:

Since custom models are allowed I personally feel that creative use of default wc3 models to make original effects for spells should be given a lot more points than custom models.

So if you were to have some sort of marking criteria there would be something like Effect Creativity where if they just imported custom models and didn't use them creatively theyd get 0 (unless they made it), but if they used them creatively they could get a higher score. However creative use of default models would allow for a greater score.

This is entirely based on Pyro's post, where he says there will be marking after the public poll, which I agree is the best way.

Like personally I don't see why custom models are even needed considering you can make any effect you can imagine with normal Wc3 models.

So yeah, consider the idea in some shape or form.
Those are exactly my feelings on the subject; I really dislike the usage of custom models. The thing is, emootootoo, that people giving votes in the thread are not going to say "Oh, I'll give that spell more points because it used WC3 models."; there are no "points" involved in the public poll and the only time points are factored in is in Judges grading coding. And coding does not include SFX usage.


I still don't know why you need TimerTicker. It really doesn't take that much effort to change the spell code to not use it:
JASS:
//Cohadar's example spell using TimerTicker
//===========================================================================
//  Example spell for using TT
//===========================================================================
scope Glide

globals
    constant integer SID_GLIDE = 'A000'

    private constant real SLIDE_MAX_DISTANCE = 1200.  
    private constant real SLIDE_SPEED = 400. 
    private constant real PERIOD = 0.04
endglobals 

//==============================================================================
private struct SpellData
    unit hero 
    real dx
    real dy
    integer ticks
endstruct 

//==============================================================================
private function PeriodicFunc takes nothing returns boolean
    local SpellData data = TT_GetData() // TT
    
    local real x = GetUnitX(data.hero)+data.dx
    local real y = GetUnitY(data.hero)+data.dy
        
    call SetUnitPosition(data.hero,x,y) 

    set data.ticks = data.ticks - 1
    if data.ticks <= 0 then  
        call SetUnitPathing( data.hero, true )
        call PauseUnit( data.hero, false )
        call data.destroy()
        call SetUnitUserData(data.hero, 0)
        return true // stop ticking
    endif  
    
    return false
endfunction 

//==============================================================================
private function Actions takes nothing returns nothing  
    local SpellData data = SpellData.create() 
    local location target = GetSpellTargetLoc()
    local real Dx
    local real Dy
    local real distance
    local real angle
    
    set data.hero = GetTriggerUnit() 
    
    set Dx = GetLocationX(target) - GetUnitX(data.hero)
    set Dy = GetLocationY(target) - GetUnitY(data.hero)
    call RemoveLocation(target)
    set target = null
    
    set distance = RMinBJ(SLIDE_MAX_DISTANCE, SquareRoot(Dx * Dx + Dy * Dy))
    set data.ticks = R2I(distance / (SLIDE_SPEED*PERIOD))
    
    set angle = Atan2(Dy, Dx)
    set data.dx = (SLIDE_SPEED*PERIOD) * Cos(angle)
    set data.dy = (SLIDE_SPEED*PERIOD) * Sin(angle)
    
    call SetUnitPathing( data.hero, false )
    call PauseUnit( data.hero, true )

    call TT_Start(function PeriodicFunc, data) // TT
endfunction 

//==============================================================================
private function Conditions takes nothing returns boolean
    return  GetSpellAbilityId() == SID_GLIDE
endfunction

//=========================================================================== 
public function InitTrig takes nothing returns nothing  
    local trigger trig = CreateTrigger()  
    
    call TriggerRegisterAnyUnitEventBJ( trig, EVENT_PLAYER_UNIT_SPELL_EFFECT )

    call TriggerAddCondition( trig, Condition( function Conditions ) )
    call TriggerAddAction( trig, function Actions) 
endfunction 
    
endscope

JASS:
//The spell without using TimerTicker
//===========================================================================
//  Example spell for using TT
//===========================================================================
scope Glide

globals
    constant integer SID_GLIDE = 'A000'

    private constant real SLIDE_MAX_DISTANCE = 1200.  
    private constant real SLIDE_SPEED = 400. 
    private constant real PERIOD = 0.04
endglobals 

//==============================================================================
private struct SpellData
    unit hero 
    real dx
    real dy
    integer ticks
endstruct 

//==============================================================================
private function PeriodicFunc takes nothing returns nothing
    local timer T = GetExpiredTimer()
    local SpellData data = SpellData(GetCSData(T))
    
    local real x = GetUnitX(data.hero)+data.dx
    local real y = GetUnitY(data.hero)+data.dy
        
    call SetUnitPosition(data.hero,x,y) 

    set data.ticks = data.ticks - 1
    if data.ticks <= 0 then  
        call SetUnitPathing( data.hero, true )
        call PauseUnit( data.hero, false )
        call data.destroy()
        call SetUnitUserData(data.hero, 0)
        call PauseTimer(T)
        call DestroyTimer(T)
    endif  
    
    set T = null
endfunction 

//==============================================================================
private function Actions takes nothing returns nothing  
    local SpellData data = SpellData.create() 
    local location target = GetSpellTargetLoc()
    local real Dx
    local real Dy
    local real distance
    local real angle
    local timer T = CreateTimer()
    
    set data.hero = GetTriggerUnit() 
    
    set Dx = GetLocationX(target) - GetUnitX(data.hero)
    set Dy = GetLocationY(target) - GetUnitY(data.hero)
    call RemoveLocation(target)
    set target = null
    
    set distance = RMinBJ(SLIDE_MAX_DISTANCE, SquareRoot(Dx * Dx + Dy * Dy))
    set data.ticks = R2I(distance / (SLIDE_SPEED*PERIOD))
    
    set angle = Atan2(Dy, Dx)
    set data.dx = (SLIDE_SPEED*PERIOD) * Cos(angle)
    set data.dy = (SLIDE_SPEED*PERIOD) * Sin(angle)
    
    call SetUnitPathing( data.hero, false )
    call PauseUnit( data.hero, true )

    call SetCSData(T, data) //I use CSCache
    call TimerStart(T, PERIOD, true, PeriodicFunc)
endfunction 

//==============================================================================
private function Conditions takes nothing returns boolean
    return  GetSpellAbilityId() == SID_GLIDE
endfunction

//=========================================================================== 
public function InitTrig takes nothing returns nothing  
    local trigger trig = CreateTrigger()  
    
    call TriggerRegisterAnyUnitEventBJ( trig, EVENT_PLAYER_UNIT_SPELL_EFFECT )

    call TriggerAddCondition( trig, Condition( function Conditions ) )
    call TriggerAddAction( trig, function Actions) 
endfunction 
    
endscope


Oh, Daskunk, I would not put the list explaining the public vote inside [noparse]
[/noparse] tags, it looks bad. Just use a normal indented list, or a numbered list.​
 

Daskunk

SC2 Forum MVP - TheSkunk #386
Reaction score
186
I get your point on custom models now. Also, you dont want people to make a bad hero/spell and just use good effects to win?

I still don't know why you need TimerTicker. It really doesn't take that much effort to change the spell code to not use it:
But if he wants to use it I dont care. :p

>Oh, Daskunk, I would not put the list explaining the public vote inside
tags, it looks bad. Just use a normal indented list, or a numbered list.

Better now?

P.S Has daxtreme not gotten around to approving it? I though if it was official it was made a sticky thread... Allthough if people post this often its not needed. :p
 
Status
Not open for further replies.
General chit-chat
Help Users

      The Helper Discord

      Staff online

      Members online

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top