[Spell] Immolation + Mana Shield = Possible?

Level 4
Joined
Apr 25, 2011
Messages
73
Hi.
I was wondering if it is possible to merge Mana Shield with Immolation.

Something like a Mana Shield, which blocks damage per mana point, but also to deal damage in an AoE, Immolation like.

I tried something... But it seems it is not the best way... Because it only last as long the Immolation is on the target (0.25 seconds to be precise).

  • Untitled Trigger 001
    • Events
      • Unit - A unit Begins casting an ability
    • Conditions
      • (Ability being cast) Equal to Mana Shield
    • Actions
      • Unit - Add Immolation to (Triggering unit)
      • Unit - Order (Triggering unit) to Night Elf Demon Hunter - Activate Immolation
      • Wait 0.25 seconds
      • Unit - Remove Immolation from (Triggering unit)
I'm thinking of Immolation in a spellbook, then activate Immolation, remove the spellbook and it Should remain. But I'm not that sure. I know this only works with passive spells.

So... Any ideas?
 

Kusanagi Kuro

Hosted Project: SC
Level 10
Joined
Mar 11, 2012
Messages
708
Use the Permanent Immolation. Though this one has a bug that it cannot be leveled up.
Or just trigger the immolation by yourself since it's really easy.
 
Level 5
Joined
Oct 10, 2012
Messages
109
maybe you could use a dummy unit with permanent immolation with it?
and order the dummy to follow the caster?

something like that i guess
sorry if i wrong
 
Level 16
Joined
Aug 7, 2009
Messages
1,407
^

Except that it's easier to disable the spell book for each player at the map unit.

Or just trigger it yourself, that gives the most flexibility (though it's the hardest solution too, if you're not that experienced).
 
Level 19
Joined
Aug 13, 2013
Messages
1,680
This is your GUI Example to JASS Form. I don't think if this will make your spell MUI. Just showing the Jass form of your GUI Trigger Example. When I test it to my map it seems works fine, MUI, Lagless and Leakless
JASS:
function Trig_IMO_PLUS_MANA_Conditions takes nothing returns boolean
    return GetSpellAbilityId() == 'ANms' // THE RAWCODE OF THE MANA SHIELD ABILITY
endfunction

constant function ImmolationID takes nothing returns integer
    return 'AEim' //THE RAWCODE OF THE IMMOLATION ABILITY
endfunction

constant function OrderID takes nothing returns string
    return "immolation" //THE ORDER OF THE IMMOLATION.
endfunction

function Trig_IMO_PLUS_MANA_Actions takes nothing returns nothing
    local unit someUnit = GetTriggerUnit() // Local Variable to be access a MUI
    local real someReal = .27 // The wait time value it is minimum to .27 seconds MUST be set to Local Variable
    call UnitAddAbility( someUnit, ImmolationID() ) // It will add the immolation ability to the unit
    call IssueImmediateOrder( someUnit, OrderID() )// It will order a unit to cast that ability
    call TriggerSleepAction(someReal)//To make the Immolation work. Just goto object editor->Abil.->Immolation then set the dur to .20
    call UnitRemoveAbility( someUnit, ImmolationID() )//Removing the ability Immolation.
    set someUnit = null //Nullified variables.
endfunction
 

Kusanagi Kuro

Hosted Project: SC
Level 10
Joined
Mar 11, 2012
Messages
708
Well, I'll tell u how I do it and u can decide if u want to do like what I do or not :D.
First u need a unit indexer system. Then make the trigger for casting and turning off the spell like this:
Event - Unit is issue ordered with no target
Condition -
Level of Mana Shield (U should make a custom one) for Triggering Unit greater than 0
Or (any conditions is true)
Issue Order equal to manashieldon (this is the order to turn on mana shield)
Issue Order equal to manashieldoff (this is the order to turn off mana shield)
Actions -
If (all conditions are true)
Conditions -
Issue Order equal to manashieldon
Then -
Set CV (this is an integer variable) = Custom value of Triggering Unit
Set ImmolationDamage[CV](this is where u configure the damage deal by immolation every second, this is a real array variable) = (Put the value or formula u want here)
Set ImmolationAOE[CV](Also a real array variable and will determine how large the immolation will affect) = (Put the value or formula u want here)
Unit Group - Add Triggering Unit to ImmolationGroup (This is a group variable)
Else -
Unit Group - Remove Triggering Unit from ImmolationGroup
If (all Conditions are true)
Conditions
Loop Trigger is on equal to false (This trigger will be mention below)
Then
Trigger - Turn on Loop Trigger
Else
Now u need to create a loop trigger:
Event - Every 0.10 second of game time
Conditions - None
Actions -
If (All conditions are true)
Conditions - ImmolationGroup is empty equal to false
Then -
Unit Group - Pick every unit in ImmolationGroup and do Actions:
Set tempUnit = Picked Unit
If (All conditions are true) then
Conditions -
Mana of tempUnit greater than 0
Then -
Set CV = Custom value of tempUnit
Set tempPoint = Position of tempUnit
Set tempGroup = Unit within ImmolationAOE[CV] range of tempPoint matching Matching Unit is a structure equal to False, Matching Unit equal to magic immune equal to false, Matching unit is alive, Matching unit belongs to an enemy of Owner of tempUnit.
Unit Group - Pick every unit in tempGroup and do actions:
Unit - Cause tempUnit to damage Picked Unit dealing (ImmolationDamage[CV]/10) damage type ? attack type ?
Custom Script: call RemoveLocation(udg_tempPoint)
Custom Script: call DestroyGroup(udg_tempGroup)
Else -
Remove tempUnit from ImmolationGroup.
That's all. Sorry but I cannot post the full and detail trigger since my WE is having a problems. If anyone can translate these outlines into a trigger would be better for him to understand.
 

Kusanagi Kuro

Hosted Project: SC
Level 10
Joined
Mar 11, 2012
Messages
708
Well, just in case the spell can be leveled up, I think I've read somewhere that the Passive Immolation (Permanent Immolation) ability cannot be leveled up so I think using trigger to trigger the immolation would be better :D.
 
Level 4
Joined
Apr 25, 2011
Messages
73
Thanks everyone for posting your ideas.
I'll start like this:

[A] - The Permanent Immolation is not really that flexible like regular Immolation, so I can't deal the amount of damage I want, since it has more than one level.

~AngkySaputra~ That's a good idea. But I have a teleport system, which would make the unit to remain behind when I teleport a big distance.
[A]
Thanks for your help though.

~Nichilus~ [A] Also what if the hero ran out of mana?

~Luorax~ Easier, but not what I want. [A]

~jakeZinc~ I tried that into normal GUI. The problem was that after I added the spell, casted it, waited and then removed it, the buff would also disappear. Also your trigger is not prepared for most of the situations. What if I ran out of mana?

~hayaku1412~ I tried that thing too. Although I got stuck with the seconds group damage. I made another group and now it works fine.
Also
If (All conditions are true) then
Conditions -
Mana of tempUnit greater than 0
Then -
is not really accurate, since a hero will have 0 mana when he has 0 or negative intelligence or some -mana regeneration effect, because he will always have some mana regeneration. Although it has .10 chance of getting the 0 mana, it's slightly unlikely. I replaced that with a buff.
Also, I don't see the use of using the variables in the first trigger... I really don't, since you set them in the second trigger, where that is really necessary.
This are the final triggers:

IMS = Immolation Mana Shield
IMSD = Immolation Mana Shield Damage
p = Point Variable
u = Unit Variable
g = Group Variable
IMSGroup = Group Variable

  • IMS
    • Events
      • Unit - A unit Is issued an order with no target
    • Conditions
      • (Level of Fire Shield for (Triggering unit)) Greater than 0
      • Or - Any (Conditions) are true
        • Conditions
          • (Issued order) Equal to (Order(manashieldon))
          • (Issued order) Equal to (Order(manashieldoff))
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Issued order) Equal to (Order(manashieldon))
        • Then - Actions
          • Unit Group - Add (Triggering unit) to IMSGroup
        • Else - Actions
          • Unit Group - Remove (Triggering unit) from IMSGroup
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (IMSD <gen> is on) Equal to False
            • Then - Actions
              • Trigger - Turn on IMSD <gen>
            • Else - Actions
  • IMSD
    • Events
      • Time - Every 1.00 seconds of game time
    • Conditions
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (IMSGroup is empty) Equal to False
        • Then - Actions
          • Unit Group - Pick every unit in IMSGroup and do (Actions)
            • Loop - Actions
              • Set u = (Picked unit)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (u has buff Fire Shield ) Equal to True
                • Then - Actions
                  • Set p = (Position of u)
                  • Set g = (Units within (250.00 + ((Real((Level of Fire Shield for u))) x 10.00)) of p matching ((((Matching unit) is A structure) Equal to False) and ((((Matching unit) is Magic Immune) Equal to False) and ((((Matching unit) is alive) Equal to True) and (((Matching unit) belongs to an enemy of (Owner of u)) Equal to True)
                  • Unit Group - Pick every unit in g and do (Actions)
                    • Loop - Actions
                      • Unit - Cause u to damage (Picked unit), dealing ((Real((Level of Fire Shield for u))) x 10.00) damage of attack type Spells and damage type Normal
                      • Special Effect - Create a special effect attached to the chest of (Picked unit) using Abilities\Spells\Other\ImmolationRed\ImmolationRedDamage.mdl
                      • Special Effect - Destroy (Last created special effect)
                      • Custom script: call RemoveLocation(udg_p)
                      • Custom script: call DestroyGroup(udg_g)
                • Else - Actions
                  • Unit Group - Remove u from IMSGroup
        • Else - Actions
Now... Are there any problems, leaks anything that does not seem fit? I think it is MUI (I'm like 85% sure), but I I'm wrong, please tell me.

~deathismyfriend~ No waits used. ;)

~UngThanhNhan~ Yes, you are right... It is not really working... But Passive Immolation is too static... I need something dinamic. (So I can modify levels / damage etc.)

~sniper_zero~ I didn't pay too much attention to this spell. But it seems more like Permanent Immolation... Anyway I think I have the right one above.

Thanks all for your help. I'm really grateful.
 

Kusanagi Kuro

Hosted Project: SC
Level 10
Joined
Mar 11, 2012
Messages
708
U've got some problems in ur trigger. Put the Custom script in the second unit group loop outside of that group. Also, put the turn ITE that turn on trigger into the "then - actions".
It's okay to replace the mana condition with a buff, I think :D.
 
Level 4
Joined
Apr 25, 2011
Messages
73
Done.
Like this, right?:

  • IMS
    • Events
      • Unit - A unit Is issued an order with no target
    • Conditions
      • (Level of Fire Shield for (Triggering unit)) Greater than 0
      • Or - Any (Conditions) are true
        • Conditions
          • (Issued order) Equal to (Order(manashieldon))
          • (Issued order) Equal to (Order(manashieldoff))
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Issued order) Equal to (Order(manashieldon))
        • Then - Actions
          • Unit Group - Add (Triggering unit) to IMSGroup
          • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            • If - Conditions
              • (IMSD <gen> is on) Equal to False
            • Then - Actions
              • Trigger - Turn on IMSD <gen>
            • Else - Actions
        • Else - Actions
          • Unit Group - Remove (Triggering unit) from IMSGroup
  • IMSD
    • Events
      • Time - Every 1.00 seconds of game time
    • Conditions
    • Actions
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (IMSGroup is empty) Equal to False
        • Then - Actions
          • Unit Group - Pick every unit in IMSGroup and do (Actions)
            • Loop - Actions
              • Set u = (Picked unit)
              • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
                • If - Conditions
                  • (u has buff Fire Shield ) Equal to True
                • Then - Actions
                  • Set p = (Position of u)
                    • Set g = (Units within (250.00 + ((Real((Level of Fire Shield for u))) x 10.00)) of p matching ((((Matching unit) is A structure) Equal to False) and ((((Matching unit) is Magic Immune) Equal to False) and ((((Matching unit) is alive) Equal to True) and (((Matching unit) belongs to an enemy of (Owner of u)) Equal to True
                  • Unit Group - Pick every unit in g and do (Actions)
                    • Loop - Actions
                      • Unit - Cause u to damage (Picked unit), dealing ((Real((Level of Fire Shield for u))) x 10.00) damage of attack type Spells and damage type Normal
                      • Special Effect - Create a special effect attached to the chest of (Picked unit) using Abilities\Spells\Other\ImmolationRed\ImmolationRedDamage.mdl
                      • Special Effect - Destroy (Last created special effect)
                  • Custom script: call RemoveLocation(udg_p)
                  • Custom script: call DestroyGroup(udg_g)
                • Else - Actions
                  • Unit Group - Remove u from IMSGroup
        • Else - Actions
Is everything ok, now? xD

Thanks for your help again.
 

Kusanagi Kuro

Hosted Project: SC
Level 10
Joined
Mar 11, 2012
Messages
708
Yeh. It's good now. Although I think u should add the Trigger - Turn off this trigger into the "Else - Actions" in the loop when checking if the unit group is empty or not.
 
Top