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

Zephyr Contest #11 - My aura, Your aura

Status
Not open for further replies.

Deleted member 219079

D

Deleted member 219079

Is it forbidden to ask for help in WEHZ? I mean sometimes my units get the buff and sometimes don't...
 
I'd have thought it wouldn't be permitted, particularly if they're giving you code solutions, bug testing is fine. but not actually writing the code for you - that would be teamwork in that the final code would not be written exclusively by yourself
Rules said:
Teamwork is not allowed; however, finding testers to help you with your submission is not considered teamwork.
 

Deleted member 219079

D

Deleted member 219079

I'll try and figure it myself in that case...
 
Update: v 1.3

Kingstride Aura

Nearby allies gain movement speed and attack damage. When an enemy hero within 750 range of the Marshal drops below 40% health, such enemy is marked with true sight and the aura also grants lifesteal.

Lifesteal increases for every enemy hero after the first marked.

Statistics
Area of Effect: 600
Attack Damage Bonus: 25%
Lifesteal: 15%
Lifesteal Per Hero After First: 10%
Movement Bonus: 25%

Credits:
Credits

- JesusHipster (Kingstride Buff Model)
- Nudl9 (Kingstride Icon)
- looking_for_help (Damage Event)

The Kingstride Aura itself is a material change from the Thorns Aura.
  • Configuration
    • Events
      • Map initialization
    • Conditions
    • Actions
      • -------- -------------------------------------------- --------
      • -------- Kingstride Ability itself --------
      • Set Config_KS_Ability = Kingstride Aura
      • -------- Dummy Ability --------
      • Set Config_KS_DummyAbility = Kingstride Reveal
      • -------- Spell Book Ability --------
      • Set Config_KS_SpellBook = Kingstride (Spellbook)
      • -------- -------------------------------------------- --------
      • -------- -------------------------------------------- --------
      • -------- Lifesteal percentage in decimal --------
      • Set Config_KS_Lifesteal = 0.15
      • -------- Lifesteal increase per hero marked after the first - in decimal --------
      • Set Config_KS_LifestealIncrease = 0.10
      • -------- Detection Range --------
      • Set Config_KS_Range = 750.00
      • -------- Trigger Fire Rate in seconds --------
      • Set Config_KS_Rate = 0.75
      • -------- Special Effect for Lifesteal --------
      • Set Config_KS_StealFX = Abilities\Spells\Undead\VampiricAura\VampiricAuraTarget.mdl
      • -------- Threshold of enemy max hp in decimal --------
      • Set Config_KS_Threshold = 0.40
      • -------- Do not touch. --------
      • Custom script: call TriggerRegisterTimerEvent(gg_trg_Kingstride, udg_Config_KS_Rate, true)
      • -------- ----------------------- --------
      • -------- Variable Creator --------
      • -------- !Delete actions below after copying! --------
      • -------- ----------------------- --------
      • Set KS_Caster[KS_Index] = (Triggering unit)
      • Set KS_Dummy = (Triggering unit)
      • Set KS_Group[A] = (Last created unit group)
      • Set KS_Player[A] = (Picked player)
      • Set KS_Enumerated[A] = 0
JASS:
//////////////////////////////////////////////////////////////////////////////
//    _  __  ___    _                                                       //
//   | |/ // ___|  /_\                                                      //
//   |   | \___ \ / _ \                                                     //
//   |_|\_\|____//_/ \_\                                                    //
//                                                                          //
//    Kingstride Aura v 1.3                                                 //
//               by CakeMaster                                              //
//                                                                          //
//////////////////////////////////////////////////////////////////////////////

function KS_RadarCondition takes nothing returns boolean
    return GetUnitState(GetFilterUnit(), UNIT_STATE_LIFE) > 0.405 and GetUnitState(GetFilterUnit(), UNIT_STATE_LIFE) < (GetUnitState(GetFilterUnit(), UNIT_STATE_MAX_LIFE) * udg_Config_KS_Threshold) and IsUnitType(GetFilterUnit(), UNIT_TYPE_HERO) == true and IsUnitEnemy(GetFilterUnit(), udg_KS_Player[udg_A]) == true
endfunction

function KS_GatherCondition takes nothing returns boolean
    return GetUnitState(GetFilterUnit(), UNIT_STATE_LIFE) > 0.405 and IsUnitAlly(GetFilterUnit(), udg_KS_Player[udg_A]) == true
endfunction

function KS_Setup takes nothing returns boolean
    //On init
    local integer i = -1
    loop
        set i = i + 1
        exitwhen i == 15
        call SetPlayerAbilityAvailable(Player(i), 'A001', false)
    endloop
    set udg_KS_Dummy = CreateUnit(Player(0), 'h001', 0., 0., 0.)
    call UnitAddAbility(udg_KS_Dummy, udg_Config_KS_DummyAbility)
    return false
endfunction

function KS_LearnedCache takes nothing returns boolean
    //After a hero learns, cache his data
    if GetLearnedSkill() == 'A000' then
        set udg_KS_Index = ( udg_KS_Index + 1 )
        set udg_KS_Caster[udg_KS_Index] = GetTriggerUnit()
        set udg_KS_Enumerated[udg_KS_Index] = 0
        set udg_KS_Group[udg_KS_Index] = CreateGroup()
        set udg_KS_Player[udg_KS_Index] = GetOwningPlayer(udg_KS_Caster[udg_KS_Index])
        call UnitAddAbility(udg_KS_Caster[udg_KS_Index], udg_Config_KS_SpellBook)
        if udg_KS_Index == 1 then
            call EnableTrigger(gg_trg_Kingstride)
        endif
    endif
    return false
endfunction

function KS_Lifesteal takes nothing returns boolean
    //Lifesteal, the only part that stacks with other Kingstride Auras
    local integer a = 0
    local real f = 0
    local real r = 0.
    if GetUnitAbilityLevel(udg_source, 'B000') > 0 then
        loop
            set a = a + 1
            exitwhen a > udg_KS_Index
            if udg_KS_Enumerated[a] > 0 and IsUnitInGroup(udg_source, udg_KS_Group[a]) == true then
                set f = udg_Config_KS_Lifesteal + (udg_Config_KS_LifestealIncrease * udg_KS_Enumerated[a])
                set r = r + (udg_amount * f)
            endif
        endloop
        if r > 0. then 
            call SetUnitState(udg_source, UNIT_STATE_LIFE, (GetUnitState(udg_source, UNIT_STATE_LIFE) + r))
            call DestroyEffect(AddSpecialEffect(udg_Config_KS_StealFX, GetUnitX(udg_source), GetUnitY(udg_source)))
        endif
    endif
    return false
endfunction

function Kingstride takes nothing returns boolean
    local real x
    local real y
    local group g
    local unit u
    local integer i
    local real tx
    local real ty
    set udg_A = 1
    loop
        exitwhen udg_A > udg_KS_Index
        set x = GetUnitX(udg_KS_Caster[udg_A])
        set y = GetUnitY(udg_KS_Caster[udg_A])
        set g = CreateGroup()
        //Group Enumeration
        call GroupEnumUnitsInRange(g, x, y, udg_Config_KS_Range, Condition(function KS_RadarCondition))
        set i = 0
        //Check for units to mark
        loop
            set u = FirstOfGroup(g)
            exitwhen u == null
            call SetUnitOwner(udg_KS_Dummy, udg_KS_Player[udg_A], false)
            call UnitShareVision(u, udg_KS_Player[udg_A], true)
            call IssueTargetOrder(udg_KS_Dummy, "faeriefire", u)
            call UnitShareVision(u, udg_KS_Player[udg_A], false)
            set i = i + 1
            call GroupRemoveUnit(g, u)
        endloop
        //Radar Check
        if i <= 0 then
            // No weak enemies in range
            set udg_KS_Enumerated[udg_A] = 0
            call GroupClear(udg_KS_Group[udg_A])
        else
            // Weak enemy/ies in range
            set udg_KS_Enumerated[udg_A] = i
            //Add units to the group, auto-remove all units un-included
            call GroupEnumUnitsInRange(udg_KS_Group[udg_A], x, y, udg_Config_KS_Range, Condition(function KS_GatherCondition))
        endif
        call DestroyGroup(g)
        set udg_A = udg_A + 1
    endloop
    set g = null
    set u = null
    return false
endfunction

//===========================================================================
function InitTrig_Kingstride takes nothing returns nothing
    local trigger t = CreateTrigger()
    call TriggerRegisterAnyUnitEventBJ( t, EVENT_PLAYER_HERO_SKILL)
    call TriggerAddCondition(t, Condition(function KS_LearnedCache))
    set t = CreateTrigger()
    call TriggerRegisterTimerEvent(t, 0., false)
    call TriggerAddCondition(t, Condition(function KS_Setup))
    set t = CreateTrigger()
    call TriggerRegisterVariableEvent(t, "udg_damageEventTrigger", EQUAL, 1.)
    call TriggerAddCondition(t, Condition(function KS_Lifesteal))
    set t = null
    set gg_trg_Kingstride = CreateTrigger()
    call DisableTrigger(gg_trg_Kingstride)
    call TriggerAddCondition(gg_trg_Kingstride, Condition(function Kingstride))
endfunction
Changes said:
- Added configuration for abilities
- Removed a useless variable
attachment.php
 

Attachments

  • Kingstride - Zephyr 11.w3x
    92.8 KB · Views: 43
Yea... Right.

I'd have thought it wouldn't be permitted, particularly if they're giving you code solutions, bug testing is fine. but not actually writing the code for you - that would be teamwork in that the final code would not be written exclusively by yourself
That means no one can use any libraries either; since it's code they didn't write, or write specifically for this contest.
 
Only if you interpret what I said in a very strange way, but even if you did the rules state such things as exceptions
Rules said:
You can use any enhancing system (xe, IsDestructableTree, Damage detection systems, etc.), as long as the judge(s) and/or host give(s) consent to its usage.
but what I was saying was more to do with spell/system code itself, not libraries or things which are external to the main code, which the spell/system itself uses
 
Level 23
Joined
Apr 16, 2012
Messages
4,041
I think asking for information(for instance: can Killing unit make it revivable, what is the maximum data that you can store in hashtable etc) SHOULD be allowed, but not requesting systems to be made.

One controversal thing is asking for bugs/leaks, which could be considered teaming or helping, but imo that shouldnt, this is however up to judges/creator to decide
 

Deleted member 219079

D

Deleted member 219079

Nice you post a WIP. Code is most important here, but you also should present the idea and the basic concept in some short statements.

As others have have posted maps themselves too so I attached mine to this one. But I will keep the code on the other post... There's bugs and misdetections I need to fix and more effect indicators, but otherwise it's starting to look like something ^^


Pic 1 - No charge whatsoever
attachment.php


Pic 2 - Moderate charge
attachment.php


Pic 3 - Maxed out charge
attachment.php


Edit: Removed the map, I'm too paranoid to have it open for public lol..
 

Attachments

  • aS1.jpg
    aS1.jpg
    179.3 KB · Views: 244
  • aS2.jpg
    aS2.jpg
    172.9 KB · Views: 229
  • aS3.jpg
    aS3.jpg
    176.9 KB · Views: 208
Last edited by a moderator:

Deleted member 219079

D

Deleted member 219079

Thanks, I'll add booleans for whether it can modify tilesets.

AoE indicator for frost nova? Maybe more effects to it...
 

Deleted member 219079

D

Deleted member 219079

I promise you, you get my spell on 1st of August :) feel free to edit it as much as you like then (but give me credits in that case too)!

Speaking of which, can we upload the spells onto hive after the contest is over?
 

Deleted member 219079

D

Deleted member 219079

Also, a boolean won't work, you'd have to try and always assume it failed.
I'm afraid I'll have to stick to booleans (manually set to whether it uses tileset modifier) as otherwise mods would be like:
grumpy-cat-8141_preview_zps9177ab07.png

And consider it as teamwork :(
 
On the matter of submission of entries to the spell section, I'd say at the very least to wait for the thread to close, I'd recommend at earliest do it when the poll is up - when posted into the resource section people will often post code critique and reviews and suggest changes (Etc. etc.) unaware that they "shouldn't", the issue with that obviously being updating your code, since regardless of if the suggested changes you would realise and change on your own without their input, doing so would appear that you've taken their code changes and applied them (same as asking for help in the WEHZ for code help)

The same occurs when the poll is up, which if anything, hurts your odds when judges come along and critique your work, since they will find more "ammo" to take marks away with, but the counterpoint is a greater level of public awareness for your entry, so that at least is a benefit and drawback
 

Kyrbi0

Arena Moderator
Level 45
Joined
Jul 29, 2008
Messages
9,510
Agree'd. This is something going on over & over again with the Modelling Contests, and in my opinion, it is completely imbalanced and ultimately inequitable. I will continue to champion the inclusion of a "no uploading till after the contest" rule.
 
There have been cases of people uploading their submission in spell section and getting user reviews regarding code before contest ending before, thus allowing for higher coding score.

I see this as cheating personally.

Presumably this would be when people have done it before the polling stage - since the entry thread would be closed and they'd be unable to post any updates after the polling thread is made
 

Deleted member 219079

D

Deleted member 219079

Added new phase indicator (as addition to other 3): The hero will start flashing in red once the rage is full.

Beside that, bug fixing and adding effects.

How are ye else doin' ?
 

Deleted member 219079

D

Deleted member 219079

Can you post it here? :p

Well given you have 21 days left you could be the next JASS god in that time
 

Deleted member 219079

D

Deleted member 219079

Good decision! Education over games any time :)

Luminosity

A burning aura creates scorched ground around the bearer (random patches of ground (algorithm will favor positions closer to enemy units to prevent total uselessness)). Units afflicted take X damage per second and lose Y armor.
Active: Intensify - Burns the life force of the caster to intensify the flame. Burns up to 33/44/55% of current hp as additional flame over 5 seconds. Unit's caught in intense flame keep on burning after moving away from the ground for additional 2 seconds. Units that die under this effect create scorched ground.

Desparation

An aura of decay surrounds the bearer causing up to X nearby enemies to rapidly decay. Decaying enemies lose Y% of their max hp per Z seconds and move and attack slower.
Active: Pestilence - Grants control over the decaying units if their current hp is under a certain threshold. Units controlled still decay uncontrollably but will spread decay to nearby units upon death.

Luminosity! I wanna see scorched ground :p
 
What makes you say that? my effect markers and buff appears instantly on affected targets (granted the activation of the main effect doesn't start until the projectile hits home, but that can be changed to deal 0 damage or even be an instantaneous effect - as well as invisible - by playing around with the config a bit - which would emulate what you suggest)

The definition which I got from TriggerHappy (original starter of the current contest concept thread) agreed with me when I suggested "AOE Passive Centred on the Hero" as a definition of Aura. This was then expanded to include abilities with active effects, in terms of that, don't think I've broken any definitions of Aura which we're working with
 
Status
Not open for further replies.
Top