• 🏆 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!
  • It's time for the first HD Modeling Contest of 2024. Join the theme discussion for Hive's HD Modeling Contest #6! Click here to post your idea!

[FINISHED] Spells and Systems Mini-Contest #7

Status
Not open for further replies.
Level 40
Joined
Dec 14, 2005
Messages
10,532
Welcome to The Hive Workshop's

spellsandsystems.gif
Spells & Systems Contest #7


Introduction
The Spells & Systems Contest is a mini-contests due to its low requirement, time limit and prize. The aim in each contest is to make a spell that matches the specification included below. To win, you simply have to try your best to make a spell with the given theme, while considering the main judging points.
Task
This contest's theme is

Destruction

The spell must wreak havoc on things in its path, whether allies or enemies. (you pick if allies may be hit or not) Stay away from any sort of positive effect.
Rules
1. Post your own work only!
2. Only one (triggered) spell should be sumbitted.
3. Don't protect your map!
4. The spell should have been started after the contest started.
5. Do not use custom sounds, icons or models that boost your spell's effects!
6. Your spell must support multiple levels (at least 2)!
7. You cannot use WEU's advanced functions!
8. The test-map should provide proper testing of the spell (low cooldown, many/respawning creeps, etc...)
9. Both JASS and GUI are allowed.
10. If you use any 3rd party tools, say what they are, and if they're obscure, provide a link!
3rd party tool examples:
  • WEWarlock
  • Grimoire (and/or JassNewGenPack)
  • WE Unlimited
  • WE Helper

11. You may use utilities (that do small jobs), but no large do-it-for-you systems.
Examples of utilities:
  • Local Handle Variables
  • CSCache
  • Armor Detection System
  • Vector System

Examples of large do-it-for-you systems:
  • Particle System
  • Caster System

If you break the rules, you will be disqualified from the contest.
Entering
To enter, simply add a reply saying you will enter. You must edit that post, and attach your finished spell there!
Do not reply more than once to make it easier to find who's taking part and who is not. Do not reply unless you wish to take part, only Administrators/Moderators may reply as much as they want about the contest (even if not entering).
You have 13 days to submit/modify your spell, and one day (Sunday) will be used for testing the spells and announcing the winner.


You can not enter this contest, if you
-have a negative reputation
-won the previous spells & systems contest.
Judging
Judging will follow a formula:

1. Idea (5 points) - Originality and execution of the idea is the goal.
2. Triggering (5 points) - Making efficient, leakless, and simple (as possible) triggers is the goal.
3. In-game playability (3 points) - Making sure your spell is easily understandable (tooltip, not overcomplicated) to the average player, as well as having a practical use in x game type is the goal.
4. Visual effects (2 points) - Making a nice-looking (but not too complicated) effect, while not hugely hindering the spells playability value (excepting spells with this theme, such as a spell that masks the screen for enemies of the caster) is the goal.
5. Theme (3 points) - The better the spell matches the theme, the more points you will get in this category. ex: A black hole is 'Evil' (judging by the models) magic, but it doesn't really fit 'Evil', so that would get a low rating should the contest theme be 'Evil'. A Death Bolt spell, on the other hand, would score a high rating.
Prize
A spell can earn a maximum of 18 points. It's simple, the contestant with the most points will win.
The winner's prize will be 10 reputation points, and earn a spot in the "Spells/Systems hall of fame" (list of winners of this contest).
However, the winner cannot participate in the next contest.

You have 13 days to work on and submit your spell.

The deadline is: 13th October (Sunday), 00:00 GMT.

Good luck, hope to see a nice turnout of original spells!
~PurplePoot
 
Last edited:
Level 1
Joined
Jun 14, 2007
Messages
8
I'll enter, and i wanna ask about.
Can I use other people's system? Such as LocalHandleVars or Caster System?
Can I use vjass function?
 
Level 4
Joined
Aug 27, 2007
Messages
127
One question before I enter:

Is it OK if I enter with a spell that I know I had help with?

EDIT: Actually, one more question:

Is it OK to enter a spell that you've already made that fits into the theme and is now saved on another map file?
 
Level 4
Joined
Aug 27, 2007
Messages
127
Thanks for that

I will probably enter: I'm working on my spell right now

Another question: Does the spell have to follow a direct path like Shockwave does for example?
 
Last edited:
Level 4
Joined
Aug 27, 2007
Messages
127
I was meaning more Flame-Strike like attacks, but thanks anyway. Now I can get on will my spell. BTW I hope it gains more points than last time

Oh, and by the way Just_Spectating, if you're spell is supposed to destroy everything... it doesn't. The trees were still standing when I casted your spell. You might want to improve the damage it does on all levels.. I did try it on the first level after all.
 
Last edited:
Level 40
Joined
Dec 14, 2005
Messages
10,532
You've made me confused now, last time you said large system such as Caster System is not allow, but now you've said that no system is allow?!

What if i wanted to use Local Handle Vars System? Some small system such as Armor System (GetUnitArmor())?
As I said, you could've referred to the Zephyr rules for how it worked.


I copied the specific section over, and cleaned the thread.
 
Level 4
Joined
Aug 27, 2007
Messages
127
Stuff it, I'm submitting my spell. Just so you know PurplePoot, I did start this spell from scratch ;)

Burning Cross

Conjures 9 pillars of fire which damage ground units in a target area over time. Also destroys trees. Damage of the spell increases as spell strengthens. 3 levels

I should point out in advance that my testing guy also has Immolation, Unholy Aura and Reincarnation. AND since I claimed that Burning Cross can destroy trees, I've placed plenty of trees on the map

Without further ado, here's the spell

EDIT: Spell has been updated so it strikes diagonally when my testing guy faces a 45/135/225/315 degree angle
 

Attachments

  • Burning Cross.w3x
    30 KB · Views: 52
Last edited:
Level 7
Joined
Jun 10, 2007
Messages
225
@ Carrion
How about making the cross's facing depending on the angle from thehero to the target area? Like, if he casts it diagonally the cross will be diagonal.

@ Spectating
Biggest.suckup.ever.
The shockwaves at start are barely visible, how about making them go farther?

My spell is done; I'm just going to polish & optimize it.
 
Level 7
Joined
Jun 10, 2007
Messages
225
I couldnt think of anything, at all. Here is my spell; totally uninspired and boring :(
Oh- and its JESP so if anyone wants to use it, I will submit it to the spells section after the contest ends.
 

Attachments

  • Spell Contest 7 - Destruction.w3x
    35.2 KB · Views: 65
Level 1
Joined
Jun 14, 2007
Messages
8
View attachment Mad Rush v1.2.w3x
JASS:
scope MadRush

//---------------------------------------------------------
//--                      Mad Rush                       --
//--                 By Kentchow75/~GaLs~                --
//--                                                     --
//--   Specially made for HiveWorkshop's Spell Contest   --
//---------------------------------------------------------
// Implementation Instruction
// 1. Item Needs to Be Copy from Object Editor:
//      >>Ability<<
//      a. Mad Rush (Yeah, only 1 ability)
// 2. Copy the code from the map header to your map's header.
// 3. Copy this trigger to your map.
// 4. Configurate the constant functions.
// 5. Most importantly, Get JassNewGen World Editor From [url]www.wc3campaigns.net[/url]
//
//------------------------------------------------------------------------------------


//=======================================
//==        Constant Functions         ==
//=======================================
private constant function MadRush_ID takes nothing returns integer
    return 'A000' //Rawcode of MadRush
endfunction

private constant function MadRush_Range takes integer level returns integer
    return (level*100)+400 //Level of Ability x100 +400
endfunction

private constant function MadRush_SlideEffect takes nothing returns string
    return "Abilities\\Weapons\\FlamingArrow\\FlamingArrowMissile.mdl" //Enemy Slide Effect
endfunction

private constant function MadRush_HeroSlideEffect takes nothing returns string
    return "Abilities\\Spells\\Human\\MarkOfChaos\\MarkOfChaosDone.mdl" //Hero Slide Effect
endfunction

private constant function MadRush_HeroSlideEffectTWO takes nothing returns string
    return "SharedModels\\Glow1_red.mdl" //Hero Slide Effect 2
endfunction

private constant function MadRush_RushedSlideTime takes nothing returns real
    return 3. //Enemy Slide Time
endfunction

private constant function MadRush_EneRange takes nothing returns real
    return 300. //Push enemy unit in what range
endfunction

private constant function MadRush_KillDesRange takes nothing returns real
    return 150. //Destroy Destructable in what range
endfunction

private constant function MadRush_WantKilLDes takes nothing returns boolean
    return true //want to kill destructable ?
endfunction
//=======================================
//==                End                ==
//=======================================

//=============================================
//==              Main Engine                ==
//=============================================
globals
    private unit u
endglobals

private function H2L takes handle h returns location
    return h
    return null
endfunction

private function KillDes takes nothing returns nothing
    call KillDestructable(GetEnumDestructable())
endfunction

private function RushedCond takes nothing returns boolean
    return GetUnitState(GetFilterUnit(),UNIT_STATE_LIFE)>0 and IsUnitAlly(GetFilterUnit(),GetOwningPlayer(u))!= true and IsUnitType(GetFilterUnit(),UNIT_TYPE_STRUCTURE)!= true
endfunction

private function RushedTAct takes nothing returns nothing
local timer t = GetExpiredTimer()
local unit un = GetHandleUnit(t,"un")
local location uloc =  H2L(GetHandleHandle(t,"uloc"))
local real angles = GetHandleReal(t,"angles")
local location dummyloc = PolarProjectionBJ(uloc,35,angles)

    if GetHandleReal(t,"remain")>0 then
        call SetUnitPositionLoc(un,dummyloc)
        if MadRush_WantKilLDes() == true then
            call EnumDestructablesInCircleBJ(MadRush_KillDesRange(),dummyloc,function KillDes)
        endif
        call DestroyEffect(AddSpecialEffectLoc(MadRush_SlideEffect(),dummyloc))
        call RemoveLocation(uloc)
        set uloc = dummyloc
        call SetHandleHandle(t,"uloc",uloc)
        call SetHandleReal(t,"remain",GetHandleReal(t,"remain")-1.5)
    else
        call PauseTimer(t)
        call FlushHandleLocals(t)
        call DestroyTimer(t)
    endif

set t = null
set un = null
set uloc = null
set dummyloc = null
endfunction

private function RushedAct takes nothing returns nothing
local unit un = GetEnumUnit()
local timer t = CreateTimer()
local location uloc = GetUnitLoc(un)
local real angle = bj_RADTODEG * Atan2(GetLocationY(uloc) - GetUnitY(u), GetLocationX(uloc) - GetUnitX(u))

    call UnitDamageTarget(u,un,5,true,false,ATTACK_TYPE_MAGIC,DAMAGE_TYPE_NORMAL,null)
    call SetHandleHandle(t,"un",un)
    call SetHandleHandle(t,"uloc",uloc)
    call SetHandleReal(t,"remain",MadRush_RushedSlideTime())
    call SetHandleReal(t,"angles",angle)

    call TimerStart(t, .02, true, function RushedTAct)

set un = null
set t = null
set uloc = null
endfunction

private function tAct takes nothing returns nothing
local timer t = GetExpiredTimer()
local unit caster = GetHandleUnit(t,"caster")
local location casterloc = H2L(GetHandleHandle(t,"cloc"))
local location castpoint = H2L(GetHandleHandle(t,"cpoint"))
local location dummyloc
local real angle = GetHandleReal(t,"angle")
local group Rushed = CreateGroup()
    if DistanceBetweenPoints(casterloc,castpoint)<=50 then
        call PauseTimer(t)
        call FlushHandleLocals(t)
        call DestroyTimer(t)
    else
        set dummyloc = PolarProjectionBJ(casterloc,15,angle)
        call SetUnitPositionLoc(caster,dummyloc)
        set u = caster
        call GroupEnumUnitsInRangeOfLoc(Rushed,dummyloc,MadRush_EneRange(),Condition(function RushedCond))
        call DestroyEffect(AddSpecialEffectLoc(MadRush_HeroSlideEffect(),dummyloc))
        call DestroyEffect(AddSpecialEffectLoc(MadRush_HeroSlideEffectTWO(),dummyloc))
        if MadRush_WantKilLDes() == true then
            call EnumDestructablesInCircleBJ(MadRush_KillDesRange(),dummyloc,function KillDes)
        endif
        call ForGroup(Rushed,function RushedAct)
        call RemoveLocation(casterloc)
        set casterloc = dummyloc
        call SetHandleHandle(t,"cloc",casterloc)
    endif
set caster = null
set casterloc = null
set castpoint = null
set dummyloc = null
set t = null
endfunction

function MadRush_Cond takes nothing returns boolean
    return GetSpellAbilityId() == MadRush_ID() //Trigger Condition
endfunction

function MadRush_Actions takes nothing returns nothing
local timer t = CreateTimer()
local unit caster = GetSpellAbilityUnit()
local location casterloc = GetUnitLoc(caster)
local location castpoint = GetSpellTargetLoc()
local real angle = AngleBetweenPoints(casterloc,castpoint)
local real range = I2R(MadRush_Range(GetUnitAbilityLevel(caster,MadRush_ID())))

    if DistanceBetweenPoints(casterloc,castpoint)>range then           //these 3 lines are for adjusting the end location of the spell
        call RemoveLocation(castpoint)
        set castpoint = PolarProjectionBJ(casterloc,range,angle)
    endif

    call SetHandleHandle(t,"caster",caster)
    call SetHandleHandle(t,"cloc",casterloc)
    call SetHandleHandle(t,"cpoint",castpoint)
    call SetHandleReal(t,"angle",angle)
    call TimerStart(t,.01,true,function tAct)

    set t = null
    set caster = null
    set casterloc = null
    set castpoint = null
endfunction
//=============================================
//==                   End                   ==
//=============================================

//===========================================================================
function InitTrig_MadRush takes nothing returns nothing
    local trigger t = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ(t,EVENT_PLAYER_UNIT_SPELL_EFFECT)
    call TriggerAddAction( t, function MadRush_Actions )
    call TriggerAddCondition(t,Condition(function MadRush_Cond))
    set t = null
endfunction


endscope
 
Level 12
Joined
Aug 3, 2005
Messages
745
I thought id finally enter a spell contest.
This spell is generally made to be a Hero Ultimate, would most likely be to strong for a standard spell.

Reqiures - New Gen Editor
MUI - Yes

Still Open for any suggestions

Spell_Shadow_RainOfFire.png
Armageddon

Calls down waves of meteors from the skys onto target point. Each meteor deals 30 damage and stuns for 1 second.

Armageddon-1.jpg
 

Attachments

  • SpellContest7_FullaEntry_Armageddon.w3x
    62.5 KB · Views: 46
Status
Not open for further replies.
Top