Any complex spell requests?

Reaction score
86
Sorry for the slow day everyone :( Guests are staying over for a couple days and have to keep them company. I'll be busy for the next few days...

@jig7c: Sorry :( It's not. I post as soon as the spell is done...

Though I finished your spell Renendaru.
I reworked everything, and didn't use structs because I was unsure if you had already used structs. It's mainly in Jass, a little bit of vJass. Anyway here it is.

Also, might have a few bugs... Not sure...

MUI, and vJass.
Description: Time Rupture saves the state of units near him. Save includes Life, Mana, Position, and a few buffs. This *might* bug if you remove the unit. Why? Does not save EXP meaning if you *remove* (if you kill it, it's fine) the hero, it won't revive it.

Code
Time Rupture
JASS:
function Trig_Time_Rupture_Conditions takes nothing returns boolean
    return ( GetSpellAbilityId() == 'A000' )
endfunction

globals
    unit array TG_U
    unit array TG_Caster
    integer array TG_UT
    string array TG_Buffs
    real array TG_HP
    real array TG_MP
    real array TG_X
    real array TG_Y
    real array TG_SECONDS
endglobals

function Trig_Time_Rupture_Actions takes nothing returns nothing
    local unit u = GetTriggerUnit()
    local unit gU
    local integer lvl = GetUnitAbilityLevel(u,'A000')
    local integer i = 0
    local group g = CreateGroup()
    call GroupEnumUnitsInRange(g,GetUnitX(u),GetUnitY(u),500+(lvl*200), null)
    loop
    set gU = FirstOfGroup(g)
    exitwhen gU==null
    call GroupRemoveUnit(g,gU)
        loop
        exitwhen i > 200
            if(TG_Caster<i> == null) then
                set TG_U<i> = gU
                set TG_Caster<i> = u
                set TG_HP<i> = GetUnitState(gU,UNIT_STATE_LIFE)
                set TG_MP<i> = GetUnitState(gU,UNIT_STATE_MANA)
                set TG_X<i> = GetUnitX(gU)
                set TG_Y<i> = GetUnitY(gU)
                set TG_SECONDS<i> = 0
                if (IsUnitType(gU, UNIT_TYPE_HERO) == false) then
                    set TG_UT<i> = GetUnitTypeId(gU)
                endif
                set TG_Buffs<i> = GetBuffs(gU)
                exitwhen true
            endif
            set i = i+1
        endloop
    endloop
    call DestroyGroup(g)
    set g = null
    set u = null
    set gU= null
endfunction

//===========================================================================
function InitTrig_Time_Rupture takes nothing returns nothing
    set gg_trg_Time_Rupture = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_Time_Rupture, EVENT_PLAYER_UNIT_SPELL_EFFECT )
    call TriggerAddCondition( gg_trg_Time_Rupture, Condition( function Trig_Time_Rupture_Conditions ) )
    call TriggerAddAction( gg_trg_Time_Rupture, function Trig_Time_Rupture_Actions )
endfunction</i></i></i></i></i></i></i></i></i></i>


TG_Help
JASS:
function Trig_TG_Help_Actions takes nothing returns nothing
    local integer i = 0
    loop
    exitwhen i &gt; 200
        set TG_SECONDS<i> = TG_SECONDS<i> + 1
        if TG_SECONDS<i> &gt; 30 then
            set TG_Caster<i> = null
        endif
        set i = i + 1
    endloop
endfunction

//===========================================================================
function InitTrig_TG_Help takes nothing returns nothing
    set gg_trg_TG_Help = CreateTrigger(  )
    call TriggerRegisterTimerEvent( gg_trg_TG_Help, 1.00,true )
    call TriggerAddAction( gg_trg_TG_Help, function Trig_TG_Help_Actions )
endfunction
</i></i></i></i>


Times Gamble
JASS:
function Trig_Times_Gamble_Conditions takes nothing returns boolean
    return ( GetSpellAbilityId() == &#039;A001&#039; )
endfunction

function Trig_Times_Gamble_Actions takes nothing returns nothing
    local integer i = GetRandomInt(0,100)
    local integer count = 0
    local player p
    local unit u = GetTriggerUnit()
    local integer lvl = GetUnitAbilityLevel(u,&#039;A001&#039;)
    if(i &lt; 5 - lvl) then
        call KillUnit(u)
    elseif(i &lt; 10) then
        call IssueImmediateOrder(u,&quot;stop&quot;)
        call SetUnitState(u,UNIT_STATE_LIFE,0.15*GetUnitState(u,UNIT_STATE_LIFE))
    else
        if (i &lt; 80-(4*lvl)) then
            call IssueImmediateOrder(u,&quot;stop&quot;)
            call SetUnitState(u,UNIT_STATE_LIFE,0.30*GetUnitState(u,UNIT_STATE_LIFE))
        endif
        loop
        exitwhen count &gt;200
            if(TG_Caster[count] == u) then
                if (GetUnitState(TG_U[count],UNIT_STATE_LIFE)&lt;=0) and TG_HP[count] &gt; 0 then
                    call DestroyEffect(AddSpecialEffect(&quot;Abilities\\Spells\\Human\\ReviveHuman\\ReviveHuman.mdl&quot;,TG_X[count],TG_Y[count]))
                    if (IsUnitType(TG_U[count], UNIT_TYPE_HERO) == false) then
                        set p = GetOwningPlayer(TG_U[count])
                        call RemoveUnit(TG_U[count])
                        set TG_U[count] = CreateUnit(p,TG_UT[count],TG_X[count],TG_Y[count],0)
                    else
                        call ReviveHero(TG_U[count],TG_X[count],TG_Y[count],false)
                    endif
                endif
                call UnitRemoveBuffs(TG_U[count],true,true)
                call DealBuffs(TG_Buffs[count], TG_U[count])
                call IssueImmediateOrder(TG_U[count],&quot;stop&quot;)
                call UnitRemoveAbility(TG_U[count],&#039;B000&#039;)
                call SetUnitX(TG_U[count],TG_X[count])
                call SetUnitY(TG_U[count],TG_Y[count])
                call DestroyEffect(AddSpecialEffect(&quot;Abilities\\Spells\\NightElf\\Blink\\BlinkCaster.mdl&quot;,TG_X[count],TG_Y[count]))
                if (TG_Caster[count] != TG_U[count]) then
                    call SetUnitState(TG_U[count], UNIT_STATE_LIFE, TG_HP[count])
                    call SetUnitState(TG_U[count], UNIT_STATE_MANA, TG_MP[count])
                endif
                set TG_Caster[count] = null
            endif
            set count = count+1
        endloop
    endif
endfunction

//===========================================================================
function InitTrig_Times_Gamble takes nothing returns nothing
    set gg_trg_Times_Gamble = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_Times_Gamble, EVENT_PLAYER_UNIT_SPELL_EFFECT )
    call TriggerAddCondition( gg_trg_Times_Gamble, Condition( function Trig_Times_Gamble_Conditions ) )
    call TriggerAddAction( gg_trg_Times_Gamble, function Trig_Times_Gamble_Actions )
endfunction


Buff Functions

JASS:
library CustomFunc 
    function GetBuffs takes unit gU returns string
        local string B = &quot;&quot;
        if (GetUnitAbilityLevel(gU,&#039;Bpoi&#039;)&gt;0 or GetUnitAbilityLevel(gU,&#039;Bpsd&#039;)&gt;0) then
            set B = B + &quot;Y&quot;
        else
            set B = B + &quot;N&quot;
        endif
        if (GetUnitAbilityLevel(gU,&#039;Bfro&#039;)&gt;0) then
            set B = B + &quot;Y&quot;
        else
            set B = B + &quot;N&quot;
        endif
        if (GetUnitAbilityLevel(gU,&#039;BSTN&#039;)&gt;0 or GetUnitAbilityLevel(gU,&#039;BPSE&#039;)&gt;0) then
            set B = B + &quot;Y&quot;
        else
            set B = B + &quot;N&quot;
        endif
        if (GetUnitAbilityLevel(gU,&#039;Bslo&#039;)&gt;0) then
            set B = B + &quot;Y&quot;
        else
            set B = B + &quot;N&quot;
        endif
        return B
    endfunction
    function DealBuffs takes string b , unit u returns nothing
        local real HP = GetUnitState(u,UNIT_STATE_LIFE)
        local unit d
        call SetUnitState(u,UNIT_STATE_LIFE,GetUnitState(u,UNIT_STATE_MAX_LIFE))
        if( SubString(b,0,1) == &quot;Y&quot; ) then
            set d = CreateUnit(Player(PLAYER_NEUTRAL_AGGRESSIVE),&#039;u000&#039;,GetUnitX(u),GetUnitY(u),0)
            call UnitAddAbility(d,&#039;Aslo&#039;)
            call IssueTargetOrder(d,&quot;slow&quot;,u)
            call UnitApplyTimedLife(d,&#039;BTLF&#039;,1.10)
        endif
        call SetUnitState(u,UNIT_STATE_LIFE,GetUnitState(u,UNIT_STATE_MAX_LIFE))
        if( SubString(b,1,2) == &quot;Y&quot; ) then
            set d = CreateUnit(Player(PLAYER_NEUTRAL_AGGRESSIVE),&#039;u000&#039;,GetUnitX(u),GetUnitY(u),0)
            call UnitAddAbility(d,&#039;AUfn&#039;)
            call IssueTargetOrder(d,&quot;frostnova&quot;,u)
            call UnitApplyTimedLife(d,&#039;BTLF&#039;,1.10)
        endif
        call SetUnitState(u,UNIT_STATE_LIFE,GetUnitState(u,UNIT_STATE_MAX_LIFE))
        if( SubString(b,2,3) == &quot;Y&quot; ) then
            set d = CreateUnit(Player(PLAYER_NEUTRAL_AGGRESSIVE),&#039;u000&#039;,GetUnitX(u),GetUnitY(u),0)
            call UnitAddAbility(d,&#039;A002&#039;)
            call IssueImmediateOrder(d, &quot;stomp&quot;)
            call UnitApplyTimedLife(d,&#039;BTLF&#039;, 1.50)
        endif
        call SetUnitState(u,UNIT_STATE_LIFE,GetUnitState(u,UNIT_STATE_MAX_LIFE))
        if( SubString(b,3,4) == &quot;Y&quot; ) then
            set d = CreateUnit(Player(PLAYER_NEUTRAL_AGGRESSIVE),&#039;u000&#039;,GetUnitX(u),GetUnitY(u),0)
            call UnitAddAbility(d,&#039;Apoi&#039;)
            call IssueTargetOrder(d,&quot;attack&quot;,u)
            call UnitApplyTimedLife(d,&#039;BTLF&#039;,1.10)
        endif
        call SetUnitState(u,UNIT_STATE_LIFE,GetUnitState(u,UNIT_STATE_MAX_LIFE))
    endfunction
endlibrary
 

Attachments

  • TimeSpell.w3x
    21.5 KB · Views: 269

Jedimindtrixxx

┻━┻ ︵ ¯\(ツ)/¯ ︵ ┻━┻
Reaction score
168
quick q. can you post the order of who you have to get still? just so we know whos infront of us and shit. not rushing u j/w
 
Reaction score
86
Sure, heres the order:

Edit: Quick Note: Deleting the older versions of some of the abilities.

Project Status:
Current Project: Expelliarmus (Yay!)
Queue:Gev,
lmichael89,
jig7c,
HappyPeasant,
TeeAichSee,
b_ray210,
PooBucket,
Jagan

Damn that list is long o_O...

Leazy: Here implemented the Dmg[] variable in the map. Simply add to the damage variable whenever the hero gains bonus damage.
 

Attachments

  • Souless.w3x
    19.1 KB · Views: 274

Anti-krazy

New Member
Reaction score
5
@Anti: Can't do anything till it's explained... Please explain your spell in further detail.

its like tinys spell but instead of targeting a unit u jump and to a targeted place or unit which ever, then it makes like that rock effect from avalanche at the position he jumped at damaging ALL units at ionno 300-450?

then when he lands he either becomes immune for # seconds or loses random number of hp in 10-250.

(Damage increases everylevel)

if this is too much work or impossible to do on GUI its aight...
 

Renendaru

(Evol)ution is nothing without love.
Reaction score
309
Eh... I have no idea in GUI how to do it... Ask Infinite.

Thanks man it works fine, but when you fail the spell or get a perfect success, the spell won't show a cooldown.
 

Jedimindtrixxx

┻━┻ ︵ ¯\(ツ)/¯ ︵ ┻━┻
Reaction score
168
GUI IS regular triggers
GUI:
event- blah blah
Conditions - blah
events - super blah

Jass:
function
BLAH BLAH BLAH
endfunction

etc
 

Jagan

New Member
Reaction score
30
Firstly, thanks for accepting my request. And secondly, you can take all the time you need. I'll wait patiently heh. :cool:
 

WildTurkey

Previously known as giv_me_rep
Reaction score
87
Template for Spell Requests:
Name:
Preferred type of code: GUI
Description of the spell: a meteor flys from the sky from above the casters head. the meteor flys to the target point of the ability being cast, comming closer to the ground as it gets closer to the target point. if the missile appears to hit trees i want it to stop moving in its current direction and hit the tree, falling down to the ground and dealing area of effect damage to nearby enemy units. if it does reach the target point, it deals large area of effect damage.

Point of the spell: Meteor flys from the sky towards target point dealing AoE damage. if the projectile art of the meteor hits a tree it falls to the ground.

Amount of Levels: 4 (multi level)

Changing factors in the level: higher AoE damage and faster projectile speed. Note AoE is allways 250.

Additional Info: If you do this i +rep you and in every +rep i give to people i tell them to +rep you to! (if you want)
 

allen204

New Member
Reaction score
1
Can request a spell that when the unit is attacked and is dealing damage, half of that damage (armor damage reduction is applied) is absorb/collected to his data thing (like dotA's nevermore's skill 2, but a dummy skill if thats what its called.) and when it is activated an AoE damage is equal to how much damage the unit has collected and loses all the damage that he collected. If the unit dies half the damage that it has collected damages an AoE (AoE is reduced to half), and also loses all the damage that it has collected.

Level 1 - 800 damage collected 350 AoE
Level 2 - 1000 damage collected 450 AoE
Level 3 - 1500 damage collected 500 AoE

Can you make this?
 

Marsmallos

Member
Reaction score
17
Template for Spell Requests:
Name: Electrical storm
Preferred type of code: Whatever you like, but a GUI version would be great for me to look at =)
Description of the spell: Akilzon [the unit that will use the spell] targets a random enemy unit, lifting it into the air and stunning it for 8 sec. He also creates a cloud around the unit (for 8 seconds), that will shot lightning at all of Akil'zons enemies that are NOT standing under the cloud every second, dealing 80 damage on the first tick, 160 damage on the second tick, 320 damage on the third tick, 640 damage on the fourth tick and so on. This is a channeled spell and cannot be interrupted by silences, nor by the caster etc.
Point of the spell: Already described it once but I'll do another one here then^^
1. It is a spell cast on a unit target only.
2. It lifts the target unit up in the air.
2. It creates a cloud around the lifted unit (using the DragonHawk riders "Cloud" ability effect) and stuns them for 8 sec
4. Any enemy to Akilzon, that are standing in MyRegion, that are NOT standing close to or underneath the lifted unit will be hit with lightning (the chain lightning effect) that shoots from the lifted unit and hits them every second, dealing 80, 160, 320, 640 damage (and so on) every tick. The lifted unit will not be damaged.
5. The lightning-hitting-and-damaging-units-that-are-not-under-the-cloud effect will last for 8 seconds.
6. When the 8 seconds have expired, the lifted unit will drop to the ground again, become "un-stunned", and the cloud and lightning effects will dissappear.
Amount of Levels: single
Changing factors in the level:N/A
Additional Info: It would be great if you could make this GUI, since I might need to be able to tune damage values, how high the unit is lifted, etc.
 
Reaction score
86
XD Everyone, I hope you guys don't have deadlines to meet o_O...


GUI IS regular triggers
Jass:
function
BLAH BLAH BLAH HEADACHE HEADACHE MIGRAINE MIGRAINE LEARNING ME IS IMPOSSIBLE
endfunction

etc

XD Jass isn't that hard. I learned Jass and vJass since I started like a month ago.
 

duderock101

Check out my 2 Player Co-op RPG!
Reaction score
71
Template for Spell Requests:
Name: Jump
Preferred type of code: GUI please
Description of the spell: I would like you to make a spell where a unit jumps so much in the direction hes facing. It will only work if the place he lands (lets say 100.00 in front of him) is walkable, say if he activates jump and theres a pathing blocker 50.00 in front of him he will jump over it but if theres deep water 100.00 in front of him he won't jump at all.
Point of the spell: So on my map you can find secret areas by basically jumping over things. Please don't base it off blink i want to see him jump in the air!!

Amount of Levels: If possible can i have 3.
Level:
1 Jumps 100.00 in front
2 300.00 in front
3 600.00 in front.
Changing factors in the level:N/A
Additional Info: N/A
 
Reaction score
86
Hornet's Crest
Coded in: vJass
MUI: Yes
Spreads a Hornet's Crest (a buff) on the point of contact.
When a second Crest gets spread onto the same sector as the previous (can be casted by any unit with this spell), the target gains a damage over time which lasts until the target's death. Each Crest lasts 10 seconds. The act of spreading a Crest replaces the most recent Crest if they are not in the same sector. Inflicted units have their angle above their head (as a floating text,don't worry about how it looks, I can edit it).

Note:
You can fix it however you like. Basically all it does is it creates the crest. If it comes from the same sector it will cast doom on the unit. A dummy doom that doesn't spawn a summoned unit*. It also doesn't allow it to cast spells. If you want me to change that so that it deals 20 damage per second, instead of casting doom (which is basically the same thing except with levels,) then just post here :D


Code

Casts:
JASS:
function Trig_Casts_Conditions takes nothing returns boolean
    return ( GetSpellAbilityId() == &#039;A000&#039; )
endfunction

globals
    unit array HC_Unit
    integer array HC_Sec
    real array HC_Deg
    texttag array HC_Text
endglobals

function Trig_Casts_Actions takes nothing returns nothing
    local unit u = GetTriggerUnit()
    local unit T = GetSpellTargetUnit()
    local real x1 = GetUnitX(u)
    local real y1 = GetUnitY(u)
    local real x2 = GetUnitX(T)
    local real y2 = GetUnitY(T)
    local real array Sector
    local real Deg = 0
    local boolean b = false
    local integer i = 0
    local integer c = 0
    local integer lvl = GetUnitAbilityLevel(u,&#039;A000&#039;)
    local integer Num = 0
    local integer InSector = 0
    local integer InSector2 = 0
    loop
    exitwhen c &gt; 100
        if(T == HC_Unit[c]) then
            set b = true
            exitwhen true
        endif
        set c = c+1
    endloop
    set Num = 8-lvl
    set i = 0
    set Deg = bj_RADTODEG * Atan2(y2 - y1, x2 - x1)
    if Deg &lt; 0 then
        set Deg = Deg + 360
    endif
    if b == true then
        loop
        exitwhen i &gt;= Num
            set Sector<i> = i * (360/Num)
            if (i!=0) and Deg &gt; Sector[i-1] and Deg &lt; Sector<i> then
                set InSector = i
            endif
            if (i!=0) and HC_Deg[c] &gt; Sector[i-1] and HC_Deg[c] &lt; Sector<i> then
                set InSector2 = i
            endif
            set i = i+1
        endloop
        if InSector2 == InSector then
            set HC_Unit[c]=null
            call DestroyTextTag(HC_Text[c])
            set bj_lastCreatedUnit = CreateUnit(Player(PLAYER_NEUTRAL_AGGRESSIVE),&#039;u000&#039;,GetUnitX(T),GetUnitY(T),0)
            call UnitAddAbility(bj_lastCreatedUnit,&#039;A001&#039;)
            call SetUnitAbilityLevel(bj_lastCreatedUnit,&#039;A001&#039;,lvl)
            call IssueTargetOrder(bj_lastCreatedUnit,&quot;doom&quot;,T)
            call UnitApplyTimedLife(bj_lastCreatedUnit,&#039;BTLF&#039;,5)
            call SetUnitAbilityLevel(T,&#039;B000&#039;,0)
        else
            set HC_Deg[c] = Deg
            call DestroyTextTag(HC_Text[c])
            set HC_Text[c] = CreateTextTag()
            call SetTextTagPermanent(HC_Text[c],true)
            call SetTextTagPosUnit(HC_Text[c],T,10)
            call SetTextTagText(HC_Text[c],I2S(R2I(HC_Deg[c])),0.023)
            call SetTextTagColor(HC_Text[c],150,0,0,180)
        endif
    else
        set i = 0
        loop
        exitwhen i &gt; 100
            if (HC_Unit<i> == null) then
                set HC_Unit<i> = T
                set HC_Deg<i> = Deg
                set HC_Sec<i> = 0
                set HC_Text<i> = CreateTextTag()
                exitwhen true
            endif
            set i = i +1
        endloop
        call SetTextTagPermanent(HC_Text<i>,true)
        call SetTextTagPosUnit(HC_Text<i>,T,10)
        call SetTextTagText(HC_Text<i>,I2S(R2I(HC_Deg<i>)),0.023)
        call SetTextTagColor(HC_Text<i>,150,0,0,180)
    endif
endfunction

//===========================================================================
function InitTrig_Casts takes nothing returns nothing
    set gg_trg_Casts = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_Casts, EVENT_PLAYER_UNIT_SPELL_EFFECT )
    call TriggerAddCondition( gg_trg_Casts, Condition( function Trig_Casts_Conditions ) )
    call TriggerAddAction( gg_trg_Casts, function Trig_Casts_Actions )
endfunction</i></i></i></i></i></i></i></i></i></i></i></i></i>


Move:
JASS:
function Trig_Move_Actions takes nothing returns nothing
    local integer i = 0
    loop
    exitwhen i&gt;100
        if(HC_Unit<i> != null) then
            if(HC_Sec<i> &gt; 250) then
                set HC_Unit<i> = null
                call DestroyTextTag(HC_Text<i>)
            endif
            call SetTextTagPosUnit(HC_Text<i>,HC_Unit<i>,10)
            set HC_Sec<i> = HC_Sec<i> + 1
        endif
        set i = i + 1
    endloop
endfunction

//===========================================================================
function InitTrig_Move takes nothing returns nothing
    set gg_trg_Move = CreateTrigger(  )
    call TriggerRegisterTimerEventPeriodic( gg_trg_Move, 0.04 )
    call TriggerAddAction( gg_trg_Move, function Trig_Move_Actions )
endfunction</i></i></i></i></i></i></i></i>
 

Attachments

  • Hornets crest.w3x
    19.2 KB · Views: 264

Renendaru

(Evol)ution is nothing without love.
Reaction score
309
@Infinite: The spell works fine, but if you fail it, or get a perfect success there's no cooldown.
 

Jedimindtrixxx

┻━┻ ︵ ¯\(ツ)/¯ ︵ ┻━┻
Reaction score
168
wow this thread getting hella popular. 7 pages.
 
Reaction score
86
@ Renendaru: Sorry 'bout that. Thought I could make it so that you can use roar for the atk damage bonus... Didn't work out o_O... Anyway, made another ability called Damage Increase. Set the damage increase in there. And the duration for it is at the very bottom. In the "Trigger Sleep Action." Currently set to a 20 second wait. Change to whatever you like. Not posting the code :(...

@TeeAichSee: That's cuz people write one liner messages like that :D Thanks :thup: ... Keep'em coming, let's get to 10 pages!

@ To anyone whose spell I did: Thanks to the people whose spell I did and they gave me +rep. Boo to the people who didn't :( Only got +3 rep and I did like 5 spells :(
 

Attachments

  • TimeSpell.w3x
    21.7 KB · Views: 285

Jedimindtrixxx

┻━┻ ︵ ¯\(ツ)/¯ ︵ ┻━┻
Reaction score
168
i already gave you rep for helping all these people out and i didnt even get my spell made yet
>>
one liners are ftw btw xD
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Members online

      No members online now.

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top