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

Zephyr Contest #9 - Assassination

Status
Not open for further replies.
Is it okay to have 2 sub-abilities ?
Pleaseee :)

I guess its legal,because as of what Maggy said before,sub-abilities are allowed.
Also Maggy said why it is allowed is because it isnt included in the rules

Jazztastic said:
One small question; Is the use of subabilities ok? My concept desperately hinges on it, and I didn't see it mentioned in the rules.
__________________
Magtheridon96 said:
Yes, that would be totally fine.
 

Cokemonkey11

Spell Reviewer
Level 29
Joined
May 9, 2006
Messages
3,537
Well, I've created my spell but I don't really like it. I guess it looks impressive but I feel like it's too unoriginal in that it's close to something I've already done before.

Here's the tooltip:

The blademaster dashes forward, striking the first enemy unit with a deathblow. Further dash distance increases damage dealt, and enemies weaked more prior to the blow will be knocked back further. Additonally, if the enemy is facing away it receives a killing blow and the damage dealt is temporarily converted to agility for the blademaster.

I have another idea that I think I'm gonna go for, which isn't that much more interesting but it could be fun and have a high skill cap in a real game.
 
Level 5
Joined
Aug 16, 2010
Messages
97
Well, I've created my spell but I don't really like it. I guess it looks impressive but I feel like it's too unoriginal in that it's close to something I've already done before.

Here's the tooltip:



I have another idea that I think I'm gonna go for, which isn't that much more interesting but it could be fun and have a high skill cap in a real game.

U mean the hero moves forward, dashing, knocks back enemies and gains agility plus dealing a killing blow to enemies whose backs are turned? Sounds a bit overpowered in my opinion.
----
Can I post my spell here to receive feedback?
 
Level 33
Joined
Mar 27, 2008
Messages
8,035
Can I post my spell here to receive feedback?
Yes, it is called WiP (Work in Progress).
Feedback about the spell itself is allowed I think (being overpowered, idea not relevant, etc), but repairing the trigger, it should not be done here, as the trigger will be judged, you will get a free early judge if you do that here ;p

But, you can go to Triggers & Script Section for free review about the trigger :)
 
@Radamantus:

Okay, I'm going to give you a few tips:

- "A unit is attacked" != "A unit is damaged"
Try targetting a unit for an attack, and stopping really fast after. If you try hard enough, you can actually deal damage and remain invisible.
You should use a damage detection system like Bribe's DamageEngine to fix this.

- Your "Dummy Cleanup" trigger is not multi-instanceable.

edit
I take that back. I just noticed that SS_Unit is a unit-type and not a unit ;p

Also, use (Triggering unit) whenever possible because it's slightly faster than all the other counterparts (GetAttackedUnit(), GetLearningUnit(), etc...)


About the invisibility,i made it as a Total Invisibility(means no fading)

So,ill make a new subability with so called Buff placer to use a unit takes damage

Also thanks for the tip,ill update it ^^
 
Level 17
Joined
Jun 17, 2010
Messages
2,275
I figure nows a better time then any to post what i've got so far. The coding is a pain in the keester but i really enjoy the ability. Heres the tool tip:

Decieve said:
Allows an Assassin to hide in the shadows, giving up movement speed to move quieter and stealthier. When making contact with an enemy soldier you knock him out and take his identity to get close to your mark. When dusgiuised you have the option to follow orders for a while or take over and end your targets life.

and here are the triggers i have right now, Please do not comment on triggers i have not tested them so i dont know if they work or not. But if you see an obvious mistake point it out! Thank you.


  • Decieve Break
    • Events
      • Unit - A unit Is attacked
    • Conditions
      • ((Attacking unit) has buff Decieve ) Equal to True
    • Actions
      • Set Guise_Controller_Point = (Position of Decieve_Dummy)
      • Set Decieve_Target = (Triggering unit)
      • Custom script: set udg_Decieve_Key = GetHandleId(udg_Decieve_Target)
      • Unit - Create 1 Unit Controller for (Owner of (Triggering unit)) at Guise_Controller_Point facing Default building facing degrees
      • Set Decieve_Dummy = (Last created unit)
      • Unit - Hide (Last created unit)
      • Hashtable - Save Handle OfDecieve_Dummy as 0 of Decieve_Key in Decieve_HashTable
      • Hashtable - Save Decieve_Boolean as 1 of Decieve_Key in Decieve_HashTable
      • Unit Group - Add Decieve_Dummy to Decieve_DummyGroup
      • Trigger - Turn on Dummy Movement <gen>
      • Custom script: call RemoveLocation(udg_Guise_Controller_Point)
  • Dummy Movement
    • Events
      • Time - Every 0.03 seconds of game time
    • Conditions
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Decieve_DummyGroup is empty) Equal to True
        • Then - Actions
          • Trigger - Turn off (This trigger)
        • Else - Actions
          • Unit Group - Pick every unit in Decieve_DummyGroup and do (Actions)
            • Loop - Actions
              • Set Decieve_Dummy = (Picked unit)
              • Hashtable - Save Handle OfGuise_Controller_Point as 2 of Decieve_Key in Decieve_HashTable
              • Set Decieve_Boolean = (Load 1 of Decieve_Key from Decieve_HashTable)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • Decieve_Boolean Equal to False
                • Then - Actions
                  • Set Guise_Controller_Point = (Load 2 of Decieve_Key in Decieve_HashTable)
                  • Unit - Move Decieve_Dummy instantly to Guise_Controller_Point
                • Else - Actions
                  • Unit Group - Remove Decieve_Dummy from Decieve_DummyGroup
                  • Hashtable - Clear all child hashtables of child Decieve_Key in Decieve_HashTable
  • hashtable
    • Events
      • Map initialization
    • Conditions
    • Actions
      • Hashtable - Create a hashtable
      • Set Decieve_HashTable = (Last created hashtable)
  • Controller Move
    • Events
      • Unit - A unit Is issued an order targeting a point
    • Conditions
      • (Triggering unit) Equal to Decieve_Dummy
    • Actions
      • Set Controller_Temploc = (Target point of issued order)
      • Unit - Order Decieve_Target to Move To Controller_Temploc
      • Custom script: call RemoveLocation(udg_Controller_Temploc)
  • Controller Attack
    • Events
      • Unit - A unit Is issued an order targeting an object
    • Conditions
      • (Triggering unit) Equal to Decieve_Dummy
    • Actions
      • Set Controller_Temploc = (Target point of issued order)
      • Unit - Order Decieve_Target to Attack Once (Target unit of issued order)
      • Custom script: call RemoveLocation(udg_Controller_Temploc)
EDIT: Creds to Defskull for giving me a rundown on hashtables, i suck at them.
 
Code so far:
JASS:
library Spell requires SpellEffectEvent

    /*
    * Configuration
    */
    globals
        private constant integer ABIL_CODE           = 'A000'
        
        private constant integer DUMMY_ID_1          = 'h000'
        private constant integer DUMMY_ID_2          = 'h001'
        private constant integer DUMMY_ID_3          = 'h002'
        private constant integer DUMMY_ID_4          = 'h003'
        
        private constant real    FALLOW_TROUGHT_TIME = 5.000 /* Make sure it's same like in Object Editor */ + 0.350 /* We add small delay because of effect */
        private constant real    DURATION_LOOP_TIME  = FALLOW_TROUGHT_TIME / 3
        
        private constant hashtable HASH              = InitHashtable()
    endglobals

    /*private function GetChance takes integer level returns real
        return 0.000
    endfunction
    
    private function GetAoe takes integer level returns real
        return 0.000
    endfunction
    
    private function GetDamage takes integer level returns real
        return 0.000
    endfunction*/

    private struct Spell extends array
        
        private static method doFixedEffect takes nothing returns nothing
            local timer   t = GetExpiredTimer()
            local integer i = 0

            local unit    u              = LoadUnitHandle(HASH, GetHandleId(t), 0)
            local integer player_id      = LoadInteger(   HASH, GetHandleId(t), 1)
            local real    spell_target_x = LoadReal(      HASH, GetHandleId(t), 2)
            local real    spell_target_y = LoadReal(      HASH, GetHandleId(t), 3)
            local real    r
            
            local unit u1
            local unit u2
            local unit u3
            local unit u4
            
            loop
                exitwhen i > 4
                set i = i+1
                
                set u1 = CreateUnit(Player(15), DUMMY_ID_1, spell_target_x + GetRandomReal(-50.000,50.000), spell_target_y + GetRandomReal(-50.000,50.000), GetRandomReal(0.000,360.000))
                call UnitApplyTimedLife(u1, 'BTLF', 2.0)
                call SetUnitAnimation(u1, "birth")
                set r = GetRandomReal(0.500,2.500)
                call SetUnitScale(u1, r, r, r)
                
                set u2 = CreateUnit(Player(15), DUMMY_ID_2, spell_target_x + GetRandomReal(-50.000,50.000), spell_target_y + GetRandomReal(-50.000,50.000), GetRandomReal(0.000,360.000))
                call UnitApplyTimedLife(u2, 'BTLF', 2.0)
                call SetUnitAnimation(u2, "birth")
                set r = GetRandomReal(0.500,2.500)
                call SetUnitScale(u2, r, r, r)
                
                set u3 = CreateUnit(Player(15), DUMMY_ID_3, spell_target_x + GetRandomReal(-50.000,50.000), spell_target_y + GetRandomReal(-50.000,50.000), GetRandomReal(0.000,360.000))
                call UnitApplyTimedLife(u3, 'BTLF', 2.0)
                call SetUnitAnimation(u3, "birth")
                set r = GetRandomReal(0.500,2.500)
                call SetUnitScale(u3, r, r, r)
                
                set u4 = CreateUnit(Player(15), DUMMY_ID_4, spell_target_x + GetRandomReal(-50.000,50.000), spell_target_y + GetRandomReal(-50.000,50.000), GetRandomReal(0.000,360.000))
                call UnitApplyTimedLife(u4, 'BTLF', 2.0)
                call SetUnitAnimation(u4, "birth")
                set r = GetRandomReal(0.500,2.500)
                call SetUnitScale(u4, r, r, r)
            endloop
            
            call PauseTimer(t)
            call DestroyTimer(t)
            set t  = null
            set u  = null
            set u1 = null
            set u2 = null
            set u3 = null
            set u4 = null
        endmethod
        
        private static method doEffect takes nothing returns nothing
            local timer   t     = GetExpiredTimer()
            local real    x
            local real    y
            local real    dist
            local real    angle
            local integer i     = 1
            local integer j     = 1
            
            local real    spell_target_x = LoadReal(HASH, GetHandleId(t), 2)
            local real    spell_target_y = LoadReal(HASH, GetHandleId(t), 3)
            
            local real duration = LoadReal(HASH, GetHandleId(t), 4) - DURATION_LOOP_TIME
            
            if duration < 0 then
                call thistype.doFixedEffect()
                return
            endif
            call SaveReal(HASH, GetHandleId(t), 4, duration)
            
            loop
                exitwhen i > 8
                set j = 1
                loop
                    exitwhen j > 10
                    set dist  = 35.00 * I2R(i) + 25
                    set angle = (360.00 / 10.00 * I2R(j)) + (10.00 * I2R(i))
                    set x = spell_target_x + dist * Cos(angle * bj_DEGTORAD)
                    set y = spell_target_y + dist * Sin(angle * bj_DEGTORAD)
                    
                    call DestroyEffect(AddSpecialEffect("Objects\\Spawnmodels\\Undead\\CryptFiendEggsack\\CryptFiendEggsack.mdl", x, y))
                    
                    set j = j + 1
                endloop
                set i = i + 1
            endloop
        endmethod
        
        private static method run takes nothing returns nothing
            local timer t = CreateTimer()
            
            local real    x
            local real    y
            local real    dist
            local real    angle
            
            local integer i     = 1
            local integer j     = 1
            
            local real    spell_target_x = GetSpellTargetX()
            local real    spell_target_y = GetSpellTargetY()
            
            call SaveUnitHandle(HASH, GetHandleId(t), 0, GetTriggerUnit())
            call SaveInteger(   HASH, GetHandleId(t), 1, GetPlayerId(GetTriggerPlayer()))
            call SaveReal(      HASH, GetHandleId(t), 2, spell_target_x)
            call SaveReal(      HASH, GetHandleId(t), 3, spell_target_y)
            call SaveReal(      HASH, GetHandleId(t), 4, FALLOW_TROUGHT_TIME)
            
            loop
                exitwhen i > 8
                set j = 1
                loop
                    exitwhen j > 10
                    set dist  = 35.00 * I2R(i) + 25
                    set angle = (360.00 / 10.00 * I2R(j)) + (10.00 * I2R(i))
                    set x = spell_target_x + dist * Cos(angle * bj_DEGTORAD)
                    set y = spell_target_y + dist * Sin(angle * bj_DEGTORAD)
                    
                    call DestroyEffect(AddSpecialEffect("Objects\\Spawnmodels\\Undead\\CryptFiendEggsack\\CryptFiendEggsack.mdl", x, y))
                    
                    set j = j + 1
                endloop
                set i = i + 1
            endloop
            
            call TimerStart(t, DURATION_LOOP_TIME, true, function thistype.doEffect)
            set t = null
        endmethod

        private static method onInit takes nothing returns nothing
            call RegisterSpellEffectEvent(ABIL_CODE, function thistype.run)
        endmethod
    endstruct

endlibrary
 
Level 33
Joined
Mar 27, 2008
Messages
8,035
Omg it's baaseee OMG omg omg !

Okay, here's my WiP, it's called Refined Dagger

attachment.php


  • RD Cast
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to RefinedDagger
    • Actions
      • Set TempUnit = (Triggering unit)
      • Set TempLoc = (Position of TempUnit)
      • Set TempLoc2 = (Target point of ability being cast)
      • Set TempReal = (Angle from TempLoc to TempLoc2)
      • Unit - Create 1 RD_DummyDagger for (Triggering player) at TempLoc facing TempReal degrees
      • Set TempUnit2 = (Last created unit)
      • Unit Group - Add TempUnit2 to RD_Group
      • Trigger - Turn on RD Loop <gen>
      • Custom script: call RemoveLocation(udg_TempLoc)
      • Custom script: call RemoveLocation(udg_TempLoc2)
  • RD Loop
    • Events
    • Conditions
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (RD_Group is empty) Equal to True
        • Then - Actions
          • Trigger - Turn off (This trigger)
        • Else - Actions
          • Unit Group - Pick every unit in RD_Group and do (Actions)
            • Loop - Actions
              • Set TempUnit = (Picked unit)
              • Set TempLoc = (Position of TempUnit)
              • Set TempReal = (Facing of TempUnit)
              • Set TempLoc2 = (TempLoc offset by RD_DaggerSpeedPerInterval towards TempReal degrees)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • ((Playable map area) contains TempLoc2) Equal to True
                • Then - Actions
                  • Custom script: call SetUnitX(udg_TempUnit, GetUnitX(udg_TempUnit) + udg_RD_DaggerSpeedPerInterval * Cos(udg_TempReal * bj_DEGTORAD))
                  • Custom script: call SetUnitY(udg_TempUnit, GetUnitY(udg_TempUnit) + udg_RD_DaggerSpeedPerInterval * Sin(udg_TempReal * bj_DEGTORAD))
                • Else - Actions
                  • Unit - Kill TempUnit
              • Custom script: call RemoveLocation(udg_TempLoc)
              • Custom script: call RemoveLocation(udg_TempLoc2)
The trigger is to handle the movement of the dagger.
 

Attachments

  • Refined Dagger.jpg
    Refined Dagger.jpg
    528.3 KB · Views: 127
Level 16
Joined
Apr 4, 2011
Messages
995
Omg it's baaseee OMG omg omg !

Okay, here's my WiP, it's called Refined Dagger

attachment.php


  • RD Cast
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to RefinedDagger
    • Actions
      • Set TempUnit = (Triggering unit)
      • Set TempLoc = (Position of TempUnit)
      • Set TempLoc2 = (Target point of ability being cast)
      • Set TempReal = (Angle from TempLoc to TempLoc2)
      • Unit - Create 1 RD_DummyDagger for (Triggering player) at TempLoc facing TempReal degrees
      • Set TempUnit2 = (Last created unit)
      • Unit Group - Add TempUnit2 to RD_Group
      • Trigger - Turn on RD Loop <gen>
      • Custom script: call RemoveLocation(udg_TempLoc)
      • Custom script: call RemoveLocation(udg_TempLoc2)
  • RD Loop
    • Events
    • Conditions
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (RD_Group is empty) Equal to True
        • Then - Actions
          • Trigger - Turn off (This trigger)
        • Else - Actions
          • Unit Group - Pick every unit in RD_Group and do (Actions)
            • Loop - Actions
              • Set TempUnit = (Picked unit)
              • Set TempLoc = (Position of TempUnit)
              • Set TempReal = (Facing of TempUnit)
              • Set TempLoc2 = (TempLoc offset by RD_DaggerSpeedPerInterval towards TempReal degrees)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • ((Playable map area) contains TempLoc2) Equal to True
                • Then - Actions
                  • Custom script: call SetUnitX(udg_TempUnit, GetUnitX(udg_TempUnit) + udg_RD_DaggerSpeedPerInterval * Cos(udg_TempReal * bj_DEGTORAD))
                  • Custom script: call SetUnitY(udg_TempUnit, GetUnitY(udg_TempUnit) + udg_RD_DaggerSpeedPerInterval * Sin(udg_TempReal * bj_DEGTORAD))
                • Else - Actions
                  • Unit - Kill TempUnit
              • Custom script: call RemoveLocation(udg_TempLoc)
              • Custom script: call RemoveLocation(udg_TempLoc2)
The trigger is to handle the movement of the dagger.

It would be far more efficient to make the check to turn off the looping trigger when the unit dies, not on every instance of the loop. When a spell updates 25 or 33 times a second, that leads to tons and tons of unneeded function calls that will slow down your spell (and earn you a lower score). Also are you using hashtables or indexing? I didn't see either.

Btw what does your spell do? I didn't see a description.

As a side note, I'm scrapping my current idea. It was too lulzy for actual effectiveness, and I couldn't get the groups to work right.
 
Level 29
Joined
Mar 10, 2009
Messages
5,016
baassee you're not F***** Up anymore? :p...WB

EDIT:
I have an idea now...

Spell Name: ?????
Description:
When enabled, the hero will be invisible for X seconds and can't attack but he has a sub ability to put a controllable mine on the ground.

now there are 2 options Im thinking;
1) When mine is triggered, all enemy organic ground units will 'fly knockback' and deals damage...
2) When mind is triggered, the nearest unit will be damaged and the rest of enemy units will be caught by a net...
 
Level 33
Joined
Mar 27, 2008
Messages
8,035
It would be far more efficient to make the check to turn off the looping trigger when the unit dies, not on every instance of the loop. When a spell updates 25 or 33 times a second, that leads to tons and tons of unneeded function calls that will slow down your spell (and earn you a lower score). Also are you using hashtables or indexing? I didn't see either.

Btw what does your spell do? I didn't see a description.

As a side note, I'm scrapping my current idea. It was too lulzy for actual effectiveness, and I couldn't get the groups to work right.
Haha as I said, that trigger is just basic trigger that handles the movement of the dagger, it's just like 5% from the actual trigger.
I don't know how to explain my spell properly yet, because it's kinda complicated, and perhaps the name could have changed.
I'm posting that as to fulfill the 'WiP Requirement'.

baassee you're not F***** Up anymore? :p...WB

EDIT:
I have an idea now...

Spell Name: ?????
Description:
When enabled, the hero will be invisible for X seconds and can't attack but he has a sub ability to put a controllable mine on the ground.

now there are 2 options Im thinking;
1) When mine is triggered, all enemy organic ground units will 'fly knockback' and deals damage...
2) When mind is triggered, the nearest unit will be damaged and the rest of enemy units will be caught by a net...
Looking good my friend, can't wait to see your WiP :)
 
Level 33
Joined
Mar 27, 2008
Messages
8,035
Mckill i dont mean to be a buzzkill, but isnt assassination supposed to be subtle and quiet? I think an explosion is neither of those :3
I don't think so.
My spell contains exploding too, and I was thinking that Assassin is a person that is hired/self-motivate to murder someone or to infiltrate a base.
The person must hold an important rank in an organization or something, that he/she might have been heavily guarded with troops/guards inside their domain.
Therefore, one or two explosion inside their domain could create utter chaos and will increase the chance of the person to be assassinated.
And the act of killing more than 1 person at a time (guards/patrols), is considered to be highly effective in assassination mission.
And why do you think that Ninjas created Smoke Bomb ?

I am a Chaos Assassin.

But still, your statement caused me to create a new spell :(
Because I'm afraid that my understanding towards the concept is not the same as Judge's.
Well I guess I just have to wait for Mag/Pharaoh to come here and lecture us about the concept (explosion), or just a thing or two ;3
 
Level 29
Joined
Mar 10, 2009
Messages
5,016
@InfinateAnswers
The important thing to assassinate someone is that NOBODY KNOWS who you are or who sent you to kill him...

Assassination maybe quite/silence but after it triggers, then chaos comes, there is NO WAY that when you kill
someone, the people around him will KEEP silent or just go on with their NORMAL bussiness, usually people will
act to find and catch you but you cant be found coz you're invisible or or doesnt know who you are...

I have another idea though;
The hero creates a micro-robot in front of him and follows the target, revealing his position and forcing the target
like a mind control to go your position, by then it's too late, then you may strike with deadly force...
 
Level 6
Joined
Jan 22, 2012
Messages
198
I got an idea for this contest which i've sent to others which has had troubles coming up with one, but they're not gonna make it so i thought i'd just post it here in case someone wants it ;)
I don't have any coding skills at all myself thats why i don't participate, still would be nice if i could help someone out with an idea though, thats something i got plenty of hehe

Okay....A skill that makes the hero teleport behind target opponent and place a tracker on him, a split second before it teleports you it will make your hero invisible and double ur movement speed for 5-10s or smth depending on spell lvl, after u've teleported behind ur target you can choose to click the skill again and be teleported back to where you started or just walk away from him, remember still invisible ;)

The tracker can be lots of things, it can:
-Make ur opponent visible on mini-map
-Make ur hero able to shoot an arrow towards him that will follow and have 100% hitchance from whatever distance
-Deal poison dmg to opponent until he manages to fully heal himself or use antidote
-Make all ur hero's ranged attacks automatically fire against target no matter where you aim
-Act as some sort of C4 and explode after a certain amount of time(or by your command)
-Any sort of debuff would fit actually

There are probably plenty of other stuff the tracker could do, but thats what i came up with now :p
Some of them will require a certain hero, like the "homing arrow" or ranged attacks in general, and for the C4 to explode on ur command you would need a 2nd skill i guess, i'm not sure if that would be allowed, but i've seen others have sub-abilities with seperate skill icons(allthough they looked the same)

I got the idea of the teleport thing from this spell:
http://www.hiveworkshop.com/forums/...dowstep%20and%20Vanish%20-%20v0.9&d=list&r=20

Anyways feel free to use this idea, i would actually be happy if someone did, don't need to mention me or anything just make it good hehe

Idk how hard this would be to make though
Anyways....GL to everyone, and if u pick this idea i rly hope u will win! ;P

PS: An assassin usually got 1 specific target, a good assassin will be able to delay the reactions of his actions as long as possible to create confusion and "terror" ;) And ofcourse if his target got no clue that would be best :)
 
Level 29
Joined
Mar 10, 2009
Messages
5,016
Okay the title of my spell now is Obscuration and here is my WIP trigger, it will be in GUI with a mixture of jass...

The invisibility part is done, now I need to polish my sub-ability...

  • Obscuration
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • Or - Any (Conditions) are true
        • Conditions
          • (Ability being cast) Equal to OB_CastInvisibility
          • (Ability being cast) Equal to OB_CastMine
    • Actions
      • Set OB_Caster = (Triggering unit)
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Ability being cast) Equal to OB_CastInvisibility
        • Then - Actions
          • Set OB_Level = (Level of OB_CastInvisibility for OB_Caster)
          • Custom script: call ExecuteFunc("OB_CastInvisibility")
        • Else - Actions
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (Ability being cast) Equal to OB_CastMine
            • Then - Actions
              • Custom script: call ExecuteFunc("OB_CastMine")
            • Else - Actions
      • Custom script: endfunction
      • -------- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --------
      • Custom script: function OB_CastMine takes nothing returns nothing
      • Custom script: endfunction
      • -------- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --------
      • Custom script: function OB_Looper takes nothing returns nothing
      • For each (Integer OB_InstanceLOOP) from 1 to OB_Instance1, do (Actions)
        • Loop - Actions
          • Set OB_Instance2 = OB_InstanceARRAY[OB_InstanceLOOP]
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (OB_CasterAR[OB_Instance2] is alive) Equal to True
              • OB_Dur[OB_Instance2] Greater than or equal to 0.00
            • Then - Actions
              • Set OB_Dur[OB_Instance2] = (OB_Dur[OB_Instance2] - 1.00)
            • Else - Actions
              • Unit - Remove OB_Invisibility from OB_CasterAR[OB_Instance2]
              • Unit - Remove OB_DisableAttackAbil from OB_CasterAR[OB_Instance2]
              • Unit - Remove OB_CastMine from OB_CasterAR[OB_Instance2]
              • Unit Group - Remove OB_CasterAR[OB_Instance2] from OB_Group
              • -------- Recycle --------
              • Set OB_InstanceARRAY[OB_InstanceLOOP] = OB_InstanceARRAY[OB_Instance1]
              • Set OB_InstanceARRAY[OB_Instance1] = OB_Instance2
              • Set OB_InstanceLOOP = (OB_InstanceLOOP - 1)
              • Set OB_Instance1 = (OB_Instance1 - 1)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • OB_Instance1 Equal to 0
                • Then - Actions
                  • Custom script: call PauseTimer(udg_OB_Timer)
                • Else - Actions
      • Custom script: endfunction
      • -------- xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx --------
      • Custom script: function OB_CastInvisibility takes nothing returns nothing
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (OB_Caster is in OB_Group) Equal to False
        • Then - Actions
          • Unit - Add OB_Invisibility to OB_Caster
          • Unit - Add OB_DisableAttackAbil to OB_Caster
          • Unit - Add OB_CastMine to OB_Caster
          • Unit - Set level of OB_CastMine for OB_Caster to OB_Level
          • Unit Group - Add OB_Caster to OB_Group
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • OB_Instance1 Equal to 0
            • Then - Actions
              • Custom script: call TimerStart(udg_OB_Timer, 1.0, true, function OB_Looper)
            • Else - Actions
          • Set OB_Instance1 = (OB_Instance1 + 1)
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • OB_Instance1 Greater than OB_InstanceMAX
            • Then - Actions
              • Set OB_InstanceARRAY[OB_Instance1] = OB_Instance1
              • Set OB_InstanceMAX = OB_Instance1
            • Else - Actions
          • Set OB_Instance2 = OB_InstanceARRAY[OB_Instance1]
          • Set OB_CasterAR[OB_Instance2] = OB_Caster
          • Set OB_Dur[OB_Instance2] = 10.00
        • Else - Actions
 

Cokemonkey11

Spell Reviewer
Level 29
Joined
May 9, 2006
Messages
3,537
U mean the hero moves forward, dashing, knocks back enemies and gains agility plus dealing a killing blow to enemies whose backs are turned? Sounds a bit overpowered in my opinion.

Yes, but only forward (not a targeted spell), and only the first hit enemy receives the knockback (which is very small if you dash a short distance), and the agility is only received if it's a killing blow.

I've thought more about my new idea for the spell, and quite like it, but it won't be as visually appealing as that dash spell I wanted. If I make the tooltip I'll post it up but for now don't get your hopes up that I'll make it :3
 
Level 16
Joined
Apr 4, 2011
Messages
995
U mean the hero moves forward, dashing, knocks back enemies and gains agility plus dealing a killing blow to enemies whose backs are turned? Sounds a bit overpowered in my opinion.
----
Can I post my spell here to receive feedback?

Well it's a good thing that spells aren't going to be judged by how OP it is. The spells will be judged on coding practices, originality, and presentation.
 
Level 29
Joined
Mar 10, 2009
Messages
5,016
@Pharaoh_
sorry for the big word but I'd like to ask something for the benefit of others as well, as you can
see my WIP in post#128, I have 2 abilities, 1 main ability and 1 is the sub which will be enabled
only when the main ability is casted, so pls tell me if this is OK before I continue doing it...

@def
you haven't seen the next 80% of it :p and yes it contain explosions...
 
mckill2009, I have already updated the rules regarding the use of a sub-ability. What you want to do is totally fine.

Smoke bomb was one of the ninjas' tricks and ninjas are assassins. It's fine as well. Explosion in general? You may, but after the whole "uncover" has been done. E.g. move forward as invisible, and, for each 350 range, a new trap will spawn. When you go in sight again, traps will explode. If the explosion is too generic, it lets the assassin's nature ruined.
 
Here you go, check what my spell do...
I hope that I don't need to explain spell code, is simple really.

Whole thing about this is that my ability don't add new one or something, it just improve one of used abilities.

Ofc I need to polish everything, but main idea is that when hero reach level 6 he can learn ultimate ability and improve Impale spell.
 

Attachments

  • Zephyr Contest #9 Assassination.w3x
    27.6 KB · Views: 44
Nice entry there Kobas, can't believe you manage to find Shuriken-like shape from default model of Blizzard lol.

That model, can be used as to lay traps on ground, and acts as Trap Model, could be, hmmm... ideas..
Thanks, well I wanted first to create some demon trap and then use 2nd ability to fire some shits bla bla bla but it looked bad at the end.
 
Status
Not open for further replies.
Top