[Contest] Holy Spells Contest!

Exide

I am amazingly focused right now!
Reaction score
448
> And does this spell feel in any way "holy" to you?
Nope. :p
 

Pyrogasm

There are some who would use any excuse to ban me.
Reaction score
134
Blast. I thought I'd have to tweak it to fit the theme.
 

Squll2

je'ne sais pas
Reaction score
76
mabye if u made the mana drain effect (line) holy wave effect line.. if thats possible then itd be more holy .. :p
 

Pyrogasm

There are some who would use any excuse to ban me.
Reaction score
134
But then it'd look gay and it'd be generic. Plus I'd have to find new effects for the whole spell because the blue simply wouldn't go with the gold.

Who says holy has to be gold? Who?
 

~GaLs~

† Ғσſ ŧħə ѕαĸε Φƒ ~Ğ䣚~ †
Reaction score
180
Pyro...You spell seems pretty suits to "Mysterious" theme :D
 

Squll2

je'ne sais pas
Reaction score
76
Personally i dont have a problem with your spell pyro.. was just a suggestion because some others did :p
 

emjlr3

Change can be a good thing
Reaction score
395
in FF wasn't the holy spell always more of a blueish white anyways?

and yea mine and pyros are nothing alike, I did not even know he had made one when I I submitted mine

btw, anyknow a cause of either of my two problems listed??? ;)
 
Reaction score
456
JASS:
//==== Init Trigger Holy Bonds ====
function InitTrig_Holy_Bonds takes nothing returns nothing
    set gg_trg_Holy_Bonds= CreateTrigger()
    call TriggerRegisterAnyUnitEventBJ(gg_trg_Holy_Bonds,EVENT_PLAYER_UNIT_SPELL_EFFECT )
    call TriggerAddCondition(gg_trg_Holy_Bonds, Condition(function Trig_Holy_Bonds_Conditions))
    call TriggerAddAction(gg_trg_Holy_Bonds, function Trig_Holy_Bonds_Actions)
endfunction


Why is that init outside of the scope?

My own spell is coming really slowly, but I think I can make it to the deadline.
 

emjlr3

Change can be a good thing
Reaction score
395
I have trie to do that Init thing suggested, but it never worked for me, thus its outside the scope
 
Reaction score
456
Oh, I see. It just seemed weird.. But I can't really say anything as I don't know how to use scopes in a proper way.
 

Sim

Forum Administrator
Staff member
Reaction score
534
Alright, here's my submission.

Taking a screenshot of this spell was really hard, and so I strongly suggest seeing it yourself before commenting only on the screenshot ;) It happens generally fast.

Sun Ritual

i1089396_SunRitual1.JPG


i1089370_SunRitual.JPG


"Calls upon the sun above the targeted point, illuminating and blasting everything in a 1000 AoE with magically radioactive and extremely hot rays of light containing high concentrations of X-rays and Gamma rays. Damages every enemy unit caught in the AoE as well as afflicting them with a DNA alteration, reducing their stats permanently."

JASS:

//*****************************************************************
//*****************************************************************
//*                        Sun Ritual                             *
//*                                                               *
//*                            by                                 *
//*                                                               *
//*                         Daxtreme                              *
//*                                                               *
//*****************************************************************
//*****************************************************************
//
// To Implement:
//            
//    1. Copy the dummy unit "Dummy" into your map.
//    2. Copy the unit "Sun" into your map.
//    3. Copy the spell "Sun Ritual" into your map.
//    4. Copy the dummy spell "Sun Ritual Dummy" into your map.
//    5. Copy the buff "Sun Ritual" into your map.
//    6. Copy the spell "Spell Book" into your map.
//    7. Copy the spell "Sun Ritual Debuff" into your map.
//    8. Copy the code found in the map header into your map.
//    9. Copy this trigger into your map.
//    10. Copy the sounds "FlameStrikeTargetWaveNonLoop1" and "HolyBolt" into your map.
//    11. Copy the model "TheHolyBomb.mdx" into your map (Export and Import).
//    12. *Optional* Copy the icon "BTNHeroMasamuneDate_2" into your map.
//
// Credits to:
//
//    1. KaTTaNa for the Local Handle Variables system.
//    2. JetFangInferno for TheHolyBomb model.
//    3. meneldor for the spell's icon.
//
//*****************************************************************
//=================================================================
// Configuration Header
//=================================================================

constant function Sun_Ritual_SpellId takes nothing returns integer
    return 'A002'
//
// The Spell's raw code.
//
endfunction

constant function Sun_Ritual_DummySpellId takes nothing returns integer
    return 'A001'
//
// The Blast's raw code.
//
endfunction

constant function Sun_Ritual_Buff_Id takes nothing returns integer
    return 'B000'
//
// The buff's raw code.
//
endfunction

constant function Sun_Ritual_SpellBook_Id takes nothing returns integer
    return 'A000'
//
// The SpellBook's raw code.
//
endfunction

constant function Sun_Ritual_TrackingDebuff_Id takes nothing returns integer
    return 'A003'
//
// The Tracking Ability's raw code.
//
endfunction

constant function Sun_Ritual_DummyId takes nothing returns integer
    return 'h000'
//
// The "Dummy" unit's raw code.
//
endfunction

constant function Sun_Ritual_SunId takes nothing returns integer
    return 'e000'
//
// The "Sun" unit's raw code.
//
endfunction

function Sun_Ritual_LoopTimes takes integer level returns real
    return 100. + I2R(level) * 0.00
//
// The number of times it calls a blast.
//
endfunction

constant function Sun_Ritual_EffectPath takes nothing returns string
    return "war3mapImported\\TheHolyBomb.mdx"
//
// The blast's effect string path. This is an imported model.
//
endfunction

constant function Sun_Ritual_LightningEffect takes nothing returns string
    return "HWPB"
//
// The Lightning effect's code name. It is currently Healing Wave's.
//
endfunction

//=================================================================
// End of Configuration Header
//=================================================================

function Sun_Ritual_Conditions takes nothing returns boolean
    return GetSpellAbilityId() == Sun_Ritual_SpellId()
endfunction

function Sun_Ritual_Loop takes nothing returns nothing
    local timer t = GetExpiredTimer()
    local unit wisp = GetHandleUnit(t, "wisp")
    local unit cast = GetHandleUnit(t, "cast")
    local player p = GetOwningPlayer(cast)
    local player p2
    local integer lvl = GetUnitAbilityLevel(cast, Sun_Ritual_SpellId())
    local real x = GetUnitX(wisp)
    local real y = GetUnitY(wisp)
    local real z = GetUnitFlyHeight(wisp)
    local real x2 = GetRandomReal(x - 500.00, x + 500.00)
    local real y2 = GetRandomReal(y - 500.00, y + 500.00)
    local real count = GetHandleReal(t, "count")
    local unit u = CreateUnit(p, Sun_Ritual_DummyId(), x2, y2, 270.00)  
    local unit targ  
    local lightning light = GetHandleLightning(t, "light")
    local effect e = GetHandleEffect(t, "e")
    local group g
    local integer i = lvl * 2
    local integer trackinglvl = 0


// Stop anything started/initiated in the previous loop (0.05 second ago).    
    call StopSound(gg_snd_HolyBolt, false, true)    
    call DestroyEffect(e)
    call DestroyLightning(light)

// Clean if it's over.
    if count == Sun_Ritual_LoopTimes(lvl) then
        call PauseTimer(t)
        call FlushHandleLocals(t) 
        call DestroyTimer(t)
        set t = null
        set wisp = null
        set cast = null
        set p = null
        set p2 = null
        set u = null
        set light = null
        set e = null
        return
    endif

// Proceed with the Stats reduction.
    set g = CreateGroup()
    call GroupEnumUnitsInRect(g, bj_mapInitialPlayableArea, null)
    loop
        set targ = FirstOfGroup(g)
        exitwhen targ == null
        set trackinglvl = GetUnitAbilityLevel(targ, Sun_Ritual_TrackingDebuff_Id())
        if GetUnitAbilityLevel(targ, Sun_Ritual_Buff_Id()) > 0 and IsUnitType(targ, UNIT_TYPE_HERO) == true and trackinglvl == 0 then
            call SetHeroAgi(targ, GetHeroAgi(targ, false) - i, true )
            call SetHeroInt(targ, GetHeroInt(targ, false) - i, true )
            call SetHeroStr(targ, GetHeroStr(targ, false) - i, true )
            call UnitAddAbility(targ, Sun_Ritual_SpellBook_Id())
            call SetUnitAbilityLevel(targ, Sun_Ritual_TrackingDebuff_Id(), lvl)
            call SetPlayerAbilityAvailable(p2, Sun_Ritual_SpellBook_Id(), false)
        elseif trackinglvl > 0 then
            call SetHeroAgi(targ, GetHeroAgi(targ, false) - (i - trackinglvl * 2), true )
            call SetHeroInt(targ, GetHeroInt(targ, false) - (i - trackinglvl * 2), true )
            call SetHeroStr(targ, GetHeroStr(targ, false) - (i - trackinglvl * 2), true )
            call SetUnitAbilityLevel(targ, Sun_Ritual_TrackingDebuff_Id(), lvl)
        endif
        if GetHeroAgi(targ, true) < 1 then
            call SetHeroAgi(targ, 1, true)
        endif
        if GetHeroInt(targ, true) < 1 then
            call SetHeroInt(targ, 1, true)
        endif
        if GetHeroStr(targ, true) < 1 then
            call SetHeroStr(targ, 1, true)
        endif
        call GroupRemoveUnit(g, targ)
    endloop

// Create things specific to this loop (Every 0.05 second): sound, effect, lightning, explosion, etc., and store them.
    call SetSoundPosition(gg_snd_HolyBolt, x, y, 0.)
    call SetSoundVolumeBJ(gg_snd_HolyBolt, PercentToInt(100, 127))
    call PlaySoundBJ(gg_snd_HolyBolt)
    set light = AddLightningEx(Sun_Ritual_LightningEffect(), true, x, y, z + 400., x2, y2, 0)
    set e = AddSpecialEffect(Sun_Ritual_EffectPath(), x2, y2)
    call UnitAddAbility(u, Sun_Ritual_DummySpellId())
    call SetUnitAbilityLevel(u, Sun_Ritual_DummySpellId(), lvl)
    call UnitApplyTimedLife(u, 'BTLF', 2.00)
    call IssueImmediateOrder(u, "thunderclap")
    call SetHandleHandle(t, "e", e)
    call SetHandleHandle(t, "light", light)
    call SetHandleReal(t, "count", count + 1.)

// Clean.
    call DestroyGroup(g)
    set t = null
    set e = null
    set light = null
    set wisp = null
    set cast = null
    set p = null
    set p2 = null
    set u = null
    set g = null
    set targ = null
endfunction

function Sun_Ritual_Actions takes nothing returns nothing
    local timer t = CreateTimer()
    local unit cast = GetTriggerUnit()
    local player p = GetOwningPlayer(cast)
    local location loc = GetSpellTargetLoc()

// Create the "Sun".
    local unit wisp = CreateUnitAtLoc(Player(4), Sun_Ritual_SunId(), loc, 270.00)

// Initialization and Storing    
    call PlaySoundAtPointBJ( gg_snd_FlameStrikeTargetWaveNonLoop1, 100, loc, 0 )
    call SetUnitAnimation( wisp, "birth" )
    call UnitApplyTimedLife(wisp, 'BTLF', 5.00)
    call SetHandleHandle(t, "cast", cast)
    call SetHandleHandle(t, "wisp", wisp)
    call TimerStart(t, 0.05, true, function Sun_Ritual_Loop)
    call RemoveLocation(loc)

    set t = null
    set cast = null
    set p = null
    set loc = null
    set wisp = null 
endfunction

//===========================================================================
function InitTrig_Sun_Ritual takes nothing returns nothing
    local trigger t = CreateTrigger()
    call TriggerRegisterAnyUnitEventBJ( t, EVENT_PLAYER_UNIT_SPELL_EFFECT )
    call TriggerAddCondition( t, Condition( function Sun_Ritual_Conditions ))
    call TriggerAddAction( t, function Sun_Ritual_Actions )
    call Preload(Sun_Ritual_EffectPath())
    set t = null
endfunction


Requires the Local Handle Variables in order to work. (Yes, the Handle vars :p)

In short, there are beams of holy light coming out from the "Sun", and each time it strikes the ground it creates an explosion of holy energy.

Since the beams of light come directly from the Sun, without any filtering (such as the Earth's atmosphere), the damaging rays (Gamma, X-Rays) are omnipresent and amplified by the spell and thus any unit struck is afflicted by their effects. Permanently.

Enjoy!

~Daxtreme

EDIT: Spell edited, thanks to Pyrogasm.
 

Attachments

  • Sun Ritual.w3x
    64.8 KB · Views: 220

Pyrogasm

There are some who would use any excuse to ban me.
Reaction score
134
Spell: Awesome.
Handlevars: Horrible. I bet you're leaking gamecaches.


Why don't people just learn to use CSCache or Structs? Handlevars is more than outdated at this point.
 

Sim

Forum Administrator
Staff member
Reaction score
534
I had the Local Handle Vars already saved in a nearby .txt file, so I just copied them in the map and used them :p
 

Pyrogasm

There are some who would use any excuse to ban me.
Reaction score
134
I have CSCache saved in a text file too.

I just tested your spell and found some stuff:
  • Upon being struck by the spell, the heroes' attacks were slowed to a mere crawl (and no, it wasn't because they had 1 of each stat). They returned to normal speed after they died and were revived.
  • I got some abominable lag at levels 3 and 4 of the spell, though levels 1 and 2 did not.
  • The first-cast lag is dumb; you should preload the effects.
  • The stat decrease is permanent, but if you get a higher level of the ability, you can't decrease a units stats further by casting the higher level ability on it.
  • The spell would feel much better with a targeting image.
  • -20 stats is a lot... what were you balancing this for?
'tis all for now.
 

Sim

Forum Administrator
Staff member
Reaction score
534
1. Oh. I thought originally of adding a slowing effect to it and forgot to remove it :p Comes from Thunderclap.

2. Strange. There is no difference between level 1 and 2, and level 3 and 4. Except the stats reduction is greater.

3. The only effect (TheHolyBomb) is already being preloaded ;)

4. Didn't notice that. Will fix it in a near future. Thanks.

5. You mean an AoE target?

6. Alright, good point. Nerfed it a bit.

Thanks.
 

Pyrogasm

There are some who would use any excuse to ban me.
Reaction score
134
The other thing is that the units lose the buff that says they have reduced stats when they die. You can fix this by creating a new ability based off of "Slow Aura (Tornado)", placing it in a disabled spellbook, and then giving it to each unit that should be affected instead of doing whatever you do to get the buff on now.

You could even give it 4 levels to detect what level the unit has already had cast on it and then (as you said you will do) make it so that higher level casts affect units with a lower-level buff on them. Rather simple.

And yes, I meant an AoE target.
 

Squll2

je'ne sais pas
Reaction score
76
adding all new submissions to the first page :p

PS:

that wasnt such a bad screenie of the spell dax.. :)
 

Sim

Forum Administrator
Staff member
Reaction score
534
The other thing is that the units lose the buff that says they have reduced stats when they die. You can fix this by creating a new ability based off of "Slow Aura (Tornado)", placing it in a disabled spellbook, and then giving it to each unit that should be affected instead of doing whatever you do to get the buff on now.

You could even give it 4 levels to detect what level the unit has already had cast on it and then (as you said you will do) make it so that higher level casts affect units with a lower-level buff on them. Rather simple.

And yes, I meant an AoE target.

Indeed.

Atm I'm using Custom value and it could mess up with any other system using those. (I'm currently trying to "get" the current user value and compare it with the new level, to prevent that thing you pointed out from happening: Higher levels don't lower stats if the unit has already been affected by the spell).

With the disabled tornado aura I could work it out without using custom values.
 
General chit-chat
Help Users
  • No one is chatting at the moment.
  • Monovertex Monovertex:
    How are you all? :D
    +1
  • Ghan Ghan:
    Howdy
  • Ghan Ghan:
    Still lurking
    +3
  • The Helper The Helper:
    I am great and it is fantastic to see you my friend!
    +1
  • The Helper The Helper:
    If you are new to the site please check out the Recipe and Food Forum https://www.thehelper.net/forums/recipes-and-food.220/
  • Monovertex Monovertex:
    How come you're so into recipes lately? Never saw this much interest in this topic in the old days of TH.net
  • Monovertex Monovertex:
    Hmm, how do I change my signature?
  • tom_mai78101 tom_mai78101:
    Signatures can be edit in your account profile. As for the old stuffs, I'm thinking it's because Blizzard is now under Microsoft, and because of Microsoft Xbox going the way it is, it's dreadful.
  • The Helper The Helper:
    I am not big on the recipes I am just promoting them - I use the site as a practice place promoting stuff
    +2
  • Monovertex Monovertex:
    @tom_mai78101 I must be blind. If I go on my profile I don't see any area to edit the signature; If I go to account details (settings) I don't see any signature area either.
  • The Helper The Helper:
    You can get there if you click the bell icon (alerts) and choose preferences from the bottom, signature will be in the menu on the left there https://www.thehelper.net/account/preferences
  • The Helper The Helper:
    I think I need to split the Sci/Tech news forum into 2 one for Science and one for Tech but I am hating all the moving of posts I would have to do
  • The Helper The Helper:
    What is up Old Mountain Shadow?
  • The Helper The Helper:
    Happy Thursday!
    +1
  • Varine Varine:
    Crazy how much 3d printing has come in the last few years. Sad that it's not as easily modifiable though
  • Varine Varine:
    I bought an Ender 3 during the pandemic and tinkered with it all the time. Just bought a Sovol, not as easy. I'm trying to make it use a different nozzle because I have a fuck ton of Volcanos, and they use what is basically a modified volcano that is just a smidge longer, and almost every part on this thing needs to be redone to make it work
  • Varine Varine:
    Luckily I have a 3d printer for that, I guess. But it's ridiculous. The regular volcanos are 21mm, these Sovol versions are about 23.5mm
  • Varine Varine:
    So, 2.5mm longer. But the thing that measures the bed is about 1.5mm above the nozzle, so if I swap it with a volcano then I'm 1mm behind it. So cool, new bracket to swap that, but THEN the fan shroud to direct air at the part is ALSO going to be .5mm to low, and so I need to redo that, but by doing that it is a little bit off where it should be blowing and it's throwing it at the heating block instead of the part, and fuck man
  • Varine Varine:
    I didn't realize they designed this entire thing to NOT be modded. I would have just got a fucking Bambu if I knew that, the whole point was I could fuck with this. And no one else makes shit for Sovol so I have to go through them, and they have... interesting pricing models. So I have a new extruder altogether that I'm taking apart and going to just design a whole new one to use my nozzles. Dumb design.
  • Varine Varine:
    Can't just buy a new heatblock, you need to get a whole hotend - so block, heater cartridge, thermistor, heatbreak, and nozzle. And they put this fucking paste in there so I can't take the thermistor or cartridge out with any ease, that's 30 dollars. Or you can get the whole extrudor with the direct driver AND that heatblock for like 50, but you still can't get any of it to come apart
  • Varine Varine:
    Partsbuilt has individual parts I found but they're expensive. I think I can get bits swapped around and make this work with generic shit though

      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