Stopping the casting of a spell and creating an error message if conditions not met

Ashcat

Hellooo
Reaction score
68
Okay, so I'm kinda making a little WoW warlock for my map, and I have a whole soul system setup where when the warlock kills an enemy he gets 1 soul.

Now, I have various spells that summon demons for the warlock, but they cost 2 souls to be able to cast. So I want it so when the warlock casts a summoning spell and doesn't have 2 or more souls, then the spell is canceled and it creates an error message saying "Need more souls."

So this is what I made

Code:
Demon Summon Cost
    Events
        Unit - A unit Starts the effect of an ability
    Conditions
        Or - Any (Conditions) are true
            Conditions
                (Ability being cast) Equal to Summon Imp (Level 1)
                (Ability being cast) Equal to Summon Imp (Level 2)
                (Ability being cast) Equal to Summon Imp (Level 3)
                (Ability being cast) Equal to Summon Imp (Level 4)
                (Ability being cast) Equal to Summon Imp (Level 5)
                (Ability being cast) Equal to Summon Imp (Level 6)
                (Ability being cast) Equal to Summon Imp (Level 7)
                (Ability being cast) Equal to Summon Imp (Level 8)
                (Ability being cast) Equal to Summon Voidwalker (Level 1)
                (Ability being cast) Equal to Summon Voidwalker (Level 2)
                (Ability being cast) Equal to Summon Voidwalker (Level 3)
                (Ability being cast) Equal to Summon Voidwalker (Level 4)
                (Ability being cast) Equal to Summon Voidwalker (Level 5)
                (Ability being cast) Equal to Summon Voidwalker (Level 6)
                (Ability being cast) Equal to Summon Voidwalker (Level 7)
                (Ability being cast) Equal to Summon Voidwalker (Level 8)
                (Ability being cast) Equal to Summon Succubus (Level 1)
                (Ability being cast) Equal to Summon Succubus (Level 2)
                (Ability being cast) Equal to Summon Succubus (Level 3)
                (Ability being cast) Equal to Summon Succubus (Level 4)
                (Ability being cast) Equal to Summon Succubus (Level 5)
                (Ability being cast) Equal to Summon Succubus (Level 6)
                (Ability being cast) Equal to Summon Succubus (Level 7)
                (Ability being cast) Equal to Summon Succubus (Level 8)
                (Ability being cast) Equal to Summon Felhunter (Level 1)
                (Ability being cast) Equal to Summon Felhunter (Level 2)
                (Ability being cast) Equal to Summon Felhunter (Level 3)
                (Ability being cast) Equal to Summon Felhunter (Level 4)
                (Ability being cast) Equal to Summon Felhunter (Level 5)
                (Ability being cast) Equal to Summon Felhunter (Level 6)
                (Ability being cast) Equal to Summon Felhunter (Level 7)
                (Ability being cast) Equal to Summon Felhunter (Level 8)
    Actions
        If (All Conditions are True) then do (Then Actions) else do (Else Actions)
            If - Conditions
                WarlockSouls Greater than or equal to 3
            Then - Actions
                Unit Group - Pick every unit in (Units in (Playable map area) matching (((Owner of (Matching unit)) Equal to (Owner of (Casting unit))) and (((Matching unit) is Summoned) Equal to True))) and do (Actions)
                    Loop - Actions
                        Unit - Kill (Picked unit)
                Set WarlockSouls = (WarlockSouls - 2)
                Unit - Set level of Souls (Demonology Warlock) for (Casting unit) to WarlockSouls
                Unit - Set level of Soul Prison (Info) for (Casting unit) to WarlockSouls
            Else - Actions
                Unit - Order (Casting unit) to Stop
                Game - Display to (All players matching ((Owner of (Casting unit)) Equal to (Matching player))) the text: |cffffcc00Need more...

The problem with this trigger is that though it does stop the spell from being cast, it doesnt stop the mana cost from being reduced from the warlock's mana. Also, I'd like to know how to be able actually create a genuine error message instead of a simple game message thats yellow.

A good example of what I'm looking for is in the dota map, with the Lone Druid's Summon Spirit Bear spell, when the bear is already summoned it cancels the spell and creates an error message saying that the bear is already summoned.
 
F

FKNCrazy

Guest
Just set the mana from what it is to + the mana cost.
Unit - Set mana of (Triggering unit) to ((Mana of (Triggering unit)) + (Enter the mana cost of the spell here)
Put that under the Else Actions.
 

Ashcat

Hellooo
Reaction score
68
I considered that, but the problem with that is that each of those 32 spells all have different mana costs, and that would take forever to put in gui, so I certainly hope theres an easier way that someone could tell me before I go through with that.
 
General chit-chat
Help Users
  • No one is chatting at the moment.

      The Helper Discord

      Staff online

      Members online

      Affiliates

      Hive Workshop NUON Dome World Editor Tutorials

      Network Sponsors

      Apex Steel Pipe - Buys and sells Steel Pipe.
      Top