• 🏆 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!
  • 🏆 Hive's 6th HD Modeling Contest: Mechanical is now open! Design and model a mechanical creature, mechanized animal, a futuristic robotic being, or anything else your imagination can tinker with! 📅 Submissions close on June 30, 2024. Don't miss this opportunity to let your creativity shine! Enter now and show us your mechanical masterpiece! 🔗 Click here to enter!

Holy Explosion Version 1.31

This bundle is marked as useful / simple. Simplicity is bliss, low effort and/or may contain minor bugs.
Me and my friend X-OMG-X Have a Battle or Competition On who could make the best Spell.... Sadly my Imagination sucks;( so if he wins its becuse his is better...(the Imagination that is...)

You'll need to have NewGen to Import this spell...

This spell is a Holy spell which creates an explosion of holyness which damages the enemy units inside it...

Descriptions;
Level 1: The Hero Makes an Explosion of Holy ness that damage's the enemies in it for 50 + INT, and it sends down Rays of Light which heals allies for 25 and damages enemies for 35

Level 2: The Hero Makes an Explosion of Holy ness that damage's the enemies in it for 100 + INT, and it sends down Rays of Light which heals allies for 50 and damages enemies for 70

Level 3: The Hero Makes an Explosion of Holy ness that damage's the enemies in it for 150 + INT, and it sends down Rays of Light which heals allies for 75 and damages enemies for 105

JASS:
//---------------------------------------------------------
//Hi, I'm Naitsirk and this is my very first vJASS sepll.
// This spell is ment to make an Explosion that damages the units in it.
//Then send out Rays of Sunlight which damages the enmies being hitted and heals the allies being hitted.
//Thanks to 270898 For helping me with it...
//Thanks to The_Witcher for learning me coordinates:P
// ohh... and sorry if it's abit messy...
//---------------------------------------------------------
//How to Import:
//First: Copy the spell to your map, and Copy the vJASS Trigger change the SPELL_ID global into the Raw Code of the Copied spell.
//Second: If you want to have more damage or heal then just increase the amount of returned in the Damage Function or the Heal Function
//That's it, or should be it... If you get a Problem then just send me a Private massage on The Hive...
//ohh... and if this thing Sucks then i'm sorry...
//---------------------------------------------------------




scope HolyExpl initializer Init
//-----------------Setup Start--------------------------
    globals
        private constant integer SPELL_ID = 'A000'
        private constant attacktype A_TYPE = ATTACK_TYPE_MAGIC
        private constant damagetype D_TYPE = DAMAGE_TYPE_NORMAL
        private constant string EFFECT = "Abilities\\Spells\\Human\\HolyBolt\\HolyBoltSpecialArt.mdl"
        private constant string EFFECT2 = "Abilities\\Spells\\Human\\Resurrect\\ResurrectTarget.mdl"
        private constant string EFFECT3 = "Abilities\\Spells\\NightElf\\Taunt\\TauntCaster.mdl"
    endglobals
    
    private function Damage takes integer level returns real
        return level * 50.
    endfunction
    
    private function Heal takes integer level returns real
        return level * 25.
    endfunction
    
    private function Loopdam takes integer level returns real
        return level * 35.
    endfunction
    
    private function Target takes unit target returns boolean
    return (GetWidgetLife(target) > 0.405) and (IsUnitType(target, UNIT_TYPE_STRUCTURE) == false) and (IsUnitType(target, UNIT_TYPE_MAGIC_IMMUNE) == false) and (IsUnitType(target, UNIT_TYPE_MECHANICAL) == false)
    endfunction 
//-----------------Setup End----------------------------
private function Pick takes nothing returns boolean
    return Target(GetFilterUnit())
endfunction
    globals
        private boolexpr b
        private group groups = CreateGroup()
        private group loopgroup = CreateGroup()
    endglobals

private function c takes nothing returns boolean
    return GetSpellAbilityId() == SPELL_ID
endfunction

private function a takes nothing returns nothing
    local unit caster = GetTriggerUnit()
    local integer loopsec = 0
    local integer level = GetUnitAbilityLevel(caster, SPELL_ID)
    local real x = GetUnitX(caster)
    local real y = GetUnitY(caster)
    local real xRandom = GetRandomReal(x-250, x+250)
    local real yRandom = GetRandomReal(y-250, y+250)
    local real xEffect1 = xRandom+50
    local real yEffect1 = yRandom-50
    
    local real xEffect2 = xRandom-50
    local real yEffect2 = yRandom+50
    
    local real xEffect3 = xRandom-50
    local real yEffect3 = yRandom-50
    
    local real xEffect4 = xRandom+50
    local real yEffect4 = yRandom+50
    local unit target
    call DestroyEffect(AddSpecialEffect(EFFECT, xRandom, yRandom))
    call DestroyEffect(AddSpecialEffect(EFFECT, xEffect1, yEffect1))
    call DestroyEffect(AddSpecialEffect(EFFECT, xEffect2, yEffect2))
    call DestroyEffect(AddSpecialEffect(EFFECT, xEffect3, yEffect3))
    call DestroyEffect(AddSpecialEffect(EFFECT, xEffect4, yEffect4))
    
    call GroupEnumUnitsInRange(groups, xRandom, yRandom, 250., b)
    
    loop
        set target=FirstOfGroup(groups)
        exitwhen target==null
        call UnitDamageTarget(caster, target, Damage(level), true, false, A_TYPE, D_TYPE, null) 
    call GroupRemoveUnit(groups,target)
    endloop
        loop
            set yRandom = GetRandomReal(y-250, y+250)
            set xRandom = GetRandomReal(x-250, x+250)
            exitwhen loopsec == 10
            call TriggerSleepAction(0.10)
            call DestroyEffect(AddSpecialEffect(EFFECT2, xRandom, yRandom))
            call DestroyEffect(AddSpecialEffect(EFFECT3, xRandom, yRandom))
            call GroupEnumUnitsInRange(loopgroup, xRandom, yRandom, 125., null)
            set target = FirstOfGroup(loopgroup)
            if IsUnitAlly(target, GetOwningPlayer(caster)) then
                call SetWidgetLife(target, GetWidgetLife(target) + Heal(level))
            else
                call UnitDamageTarget(caster, target, Loopdam(level), true, false, ATTACK_TYPE_MAGIC, DAMAGE_TYPE_NORMAL, null)
            endif
            set target = null
            set loopsec = loopsec + 1
            call GroupClear(loopgroup)
        endloop
        set loopsec = 0
        set caster = null
        set target = null
    call GroupClear(groups) 
endfunction


private function Init takes nothing returns nothing
    local trigger Holy = CreateTrigger()
    call TriggerRegisterAnyUnitEventBJ(Holy, EVENT_PLAYER_UNIT_SPELL_EFFECT)
    call TriggerAddAction(Holy, function a)
    call TriggerAddCondition(Holy, Condition(function c))    
    
    set b = Condition( function Pick)
    
    //preloading Effects
    call Preload(EFFECT)
    call Preload(EFFECT2)
    call Preload(EFFECT3)
    
    //preloading the spell
    set bj_lastCreatedUnit = CreateUnit(Player(PLAYER_NEUTRAL_PASSIVE), 'hpea', 0,0,0)
    call UnitAddAbility(bj_lastCreatedUnit, SPELL_ID)
    call RemoveUnit(bj_lastCreatedUnit)
endfunction
endscope

Credits:
270898 for helping me with the Code
The_Witcher for learning me Coordinates...


REMEMBER! CREDIT ME IN YOUR MAP IF YOU USE THIS:p
This is my very first FINISHED vJASS but if there's any bugs i'll ofc fix'em...

Please Report bugs to me here

Changelog:
* Removed the Region
*added a new Thing to it Which i calls Sun rays...
*Redid the whole thing into vJASS
* Added Some More Eye Candy
V1.31: I made it Coordinates instead of Locations... and Removed most leaks... Might be some leaks i diden't find... Also fixed the Coloring on the tooltips:p

Keywords:
holy,paladin,explosions, vJASS, naitsirk
Contents

Holy Explosion Test Map (Map)

Reviews
17:42, 9th Nov 2009 TriggerHappy187: I'm not going to approve this with TriggerSleepAction. I mean your using vJass... timers are a piece of cake.

Moderator

M

Moderator

17:42, 9th Nov 2009
TriggerHappy187:

I'm not going to approve this with TriggerSleepAction.

I mean your using vJass... timers are a piece of cake.
 
Level 19
Joined
Feb 4, 2009
Messages
1,313
  • Holy Explosion
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Holy Explosion
    • Actions
      • -------- Here The Point and the Region is Setted to the Hero, And we are making the Unit Group --------
      • Set HE_Caster = (Triggering unit)
      • Set HE_Point = (Position of HE_Caster)
      • Region - Center Spell Region <gen> on HE_Point
      • Set HE_Point2 = (Random point in Spell Region <gen>)
      • Set HE_Group = (Units within 200.00 of HE_Point2 matching ((((Matching unit) belongs to an enemy of (Owner of (Triggering unit))) Equal to True) and ((((Matching unit) is A structure) Equal to False) and (((Matching unit) is Mechanical) Equal to False))))
      • -------- End Of Setup --------
      • -------- Here we Damages the Units and makes the Explotion show... --------
      • Special Effect - Create a special effect at HE_Point2 using war3mapImported\Holy Nova.mdx
      • Special Effect - Destroy (Last created special effect)
      • Unit Group - Pick every unit in HE_Group and do (Actions)
        • Loop - Actions
          • Unit - Cause (Triggering unit) to damage (Picked unit), dealing ((50.00 x (Real((Level of Holy Explosion for (Triggering unit))))) + (Real((Intelligence of (Triggering unit) (Include bonuses))))) damage of attack type Spells and damage type Divine
      • -------- End of Actions --------
      • -------- Here we Clears the Leaks.... --------
      • Custom script: call RemoveLocation(udg_HE_Point)
      • Custom script: call RemoveLocation(udg_HE_Point2)
      • Custom script: call DestroyGroup(udg_HE_Group)
-far too basic
-senceless coding (why do you need a region? oO)
-uses imports
-I don't like your avatar

HOW THE FUCK DO YOU DARE TO MOCK THE MIGHTY ALUCARD WITH YOUR UGLY PICTURE!
BURN IN HELL!
:ctwist:
 
Level 19
Joined
Feb 25, 2009
Messages
2,004
Damn bro, now it realy leaks like hell and its not MUI anymore...

Ok, first of all why not do this:

  • Set HE_Group = (Units within 125.00 of HE_Point2 matching ((((Matching unit) is A structure) Equal to False) and ((((Matching unit) is alive) Equal to True) and ((((Matching unit) is Mechanical) Equal to False) and (((Matching unit) belongs to an enemy of (Owner of HE_Caster))))


The loop is too slowly, make it .10 seconds

And again, make damage type "Unknown" or "Normal" not "Divine"

Also its not MUI, please refer to the tutorial section to learn how to make it MUI.

End, I vote for rejection.
 
Level 10
Joined
Jan 24, 2009
Messages
606
Damn bro, now it realy leaks like hell and its not MUI anymore...

Ok, first of all why not do this:

  • Set HE_Group = (Units within 125.00 of HE_Point2 matching ((((Matching unit) is A structure) Equal to False) and ((((Matching unit) is alive) Equal to True) and ((((Matching unit) is Mechanical) Equal to False) and (((Matching unit) belongs to an enemy of (Owner of HE_Caster))))


The loop is too slowly, make it .10 seconds

And again, make damage type "Unknown" or "Normal" not "Divine"

Also its not MUI, please refer to the tutorial section to learn how to make it MUI.

End, I vote for rejection.

Well... The ones i've read makes no freaking sense!!!!! And if it 0.10 then it happens in like no sec...

And Where the heck is the leaks?? PLEASE TELL ME!!!!

Edit: I will try making this in vJASS becuse it makes it easier for making it MUI....
 
Last edited:
Level 31
Joined
Sep 11, 2009
Messages
1,812
I think the spell is good.. and ''a lot'' more complicated then the one of x-OMG-x... the thing is that its not in MUI and the one of OMG is...

its ez to make it in MUI (in GUI) its pretty much a patern when u use index... just read more than 1... when u will understand the ''patern'' it will be ez
 
Level 10
Joined
Jan 24, 2009
Messages
606
I think the spell is good.. and ''a lot'' more complicated then the one of x-OMG-x... the thing is that its not in MUI and the one of OMG is...

its ez to make it in MUI (in GUI) its pretty much a patern when u use index... just read more than 1... when u will understand the ''patern'' it will be ez

i've justed updated it.... and made it in vJASS so u could check it out if you wanna... BTW:p I learned X-OMG-X alot of GUI:p but please check the vJASS version i just posted
 
Oh my, There is easier way.

[trigger="Random Loc"]
Random Loc
Events
Conditions
Actions
Set TempPointA = (Random point in (Entire map))
Set TempPointB = (TempPointA offset by (Random real number between 0.00 and 200.00) towards (Random angle) degrees)
Custom script: call RemoveLocation(udg_TempPointA)
Custom script: call RemoveLocation(udg_TempPointB)
[/trigger]
Totally random location, you can change the prefix of the TempPointA and TempPointB by yourself.



Hmm... Have you ever heard of... Transparency? It is an nice thing that makes everything look cooler! You should try it out on your Avatar. Which is... Alucard? That is if im correct.
 
Level 10
Joined
Jan 24, 2009
Messages
606
Oh my, There is easier way.

[trigger="Random Loc"]
Random Loc
Events
Conditions
Actions
Set TempPointA = (Random point in (Entire map))
Set TempPointB = (TempPointA offset by (Random real number between 0.00 and 200.00) towards (Random angle) degrees)
Custom script: call RemoveLocation(udg_TempPointA)
Custom script: call RemoveLocation(udg_TempPointB)
[/trigger]
Totally random location, you can change the prefix of the TempPointA and TempPointB by yourself.



Hmm... Have you ever heard of... Transparency? It is an nice thing that makes everything look cooler! You should try it out on your Avatar. Which is... Alucard? That is if im correct.

Ehm, What do you mean by the GUI? it's a vJASS spell....
 
Top