• Listen to a special audio message from Bill Roper to the Hive Workshop community (Bill is a former Vice President of Blizzard Entertainment, Producer, Designer, Musician, Voice Actor) 🔗Click here to hear his message!
  • Read Evilhog's interview with Gregory Alper, the original composer of the music for WarCraft: Orcs & Humans 🔗Click here to read the full interview.

===[NEW] Spell Workshop [NEW]===

Status
Not open for further replies.
Level 11
Joined
Jul 5, 2010
Messages
779
Can someone make me the Death System from Wow lets say like this:
1.When player dies on the same place will be grave and you will be teleported to the nearest Graveyard in Night elf Wisp form and you need to go to the place you deid and click on the grave and you will be revived.

Someone?
 
Level 22
Joined
Feb 3, 2009
Messages
3,292
Can someone make me the Death System from Wow lets say like this:
1.When player dies on the same place will be grave and you will be teleported to the nearest Graveyard in Night elf Wisp form and you need to go to the place you deid and click on the grave and you will be revived.

Someone?

That system is used in Extreme Candy Wars, open the map and you'll be able to check it out :thumbs_up:.
 
Level 15
Joined
Oct 18, 2008
Messages
1,591
It happens :) It also happened with me couple of times :) but the most crazy was when i became addicted to WoW which I'm not proud of... but in the end i could easily forget it because books can make me completely ignore my PC which is a rare thing :)

Anyway i got two system requests already which I'll make today I'll take others after i finished these ;)

EDIT:I like that talent system it sounds like fun to make so ill take it after the others but i need details
 
Level 11
Joined
Jul 5, 2010
Messages
779
Alchemy: There will be a table and when you click on table new window appears with lets say more items 1 item Healing Potion will be asking for 3 Roots and you can gather roots with Herbalism.

Mining you will need to attack a rock and when rock is on 0 health a random ore will appear coper,iron.silver,golden,trusilver... etc

Balcksmithing same but with anvil you click on anvil and lets say a new window appears and then there is armor and weapon menu you click on one and than lets say copper sword 3-7 dmg needs 3 copper ores and when you have htem just click create and they add to your inventory same with Alchemy
 
Level 15
Joined
Oct 18, 2008
Messages
1,591
You can work it out step-by-step like:
1. You need to declare the angle ot the attack-use math-angle between points
2. you need to declare the position of the unit you move
3. you use: point-point with polar offset-position of unit + 10.00(or whatever you like) towards the angle you got from the first step
4. you move the unit to that point :)

But I think it's the wrong forum with this post as it should go to the triggers and scripts forum :D

Foron: well those systems aren't that hard, but that talent tree will give me a headache :) How customizable do you want it to be?
 
Level 15
Joined
Oct 18, 2008
Messages
1,591
The other request before yours is delayed due to some missing info and the requester is offline so yours is now :) But I warn you that the talent system will need some tweaking when imported as it needs imported models and destructibles too

EDIT: Pls do NOT double post... I didN't make floating text because he didn't request it, and it uses 1 agro value for each hero on each unit, so that every mob has different agro table, thus making it impossible to show all the agros ^^ It's not a general agro system but a local ^^
 
Level 6
Joined
May 9, 2011
Messages
228
Can you make me a spellpack guys for my hero "Brock the Barbaric"
-make the spell Gui so i can easily import
-make it also configurable

Blood Rage (Active)
Description:
Brock taps on his life source to send out a wave of anguish that deals damage to enemies in an area of 400, based on the amount of health used. Enemies that are hit by the wave starts bleeding, causing them to be pasued temporarily.

Level 1 - 20% of max health points used. Enemies bleed for 2.0 seconds.
Level 2 - 30% of max health points used. Enemies bleed for 2.5 seconds.
Level 3 - 40% of max health points used. Enemies bleed for 3.0 seconds.
Level 4 - 50% of max health points used. Enemies bleed for 4.0 seconds.

Healthcost - 20%/30%/40%/50% of max HP


Barbarian's Blood (Passive)
Description:
Brocks feels each of his wounds and channels the pain, increasing attack speed and damage for each 7% missing health. First bonus starts at full health.

IAS - "increasing attack speed"

Level 1 - 7% IAS and 20 damage per stack
Level 2 - 10% IAS and 30 damage per stack
Level 3 - 15% IAS and 40 damage per stack
Level 4 - 15% IAS and 50 damage per stack


Blood Thirst (Passive)
Description:
Brock has an overwhelming desire for blood. On every attack, Brock heals himself and his nearby allies based on the damage dealt. For every 1% of his health missing, it increases the lifesteal rate by 0.2%.

Level 1 - 10% of damage as base lifesteal.
Level 2 - 15% of damage as base lifesteal.
Level 3 - 20% of damage as base lifesteal.
Level 4 - 25% of damage as base lifesteal.

Orb Effect

attackpower is... ?
Your normal damage or something ?

Yes normal damage of casting unit

the maker will decides...i hope its cool and awesome
and i will give +rep for the hard work
 
Last edited:
Im in need of a spell/ability for a mage type hero.

The spell is supposed to "pick" up buildings and be able to place them a SHORT distance away from its original position. Also, the picked up building MUST be placed, so in other words, the player must not be able to discard of it.

Hope you can make it work :)

Edit: Well either buildings or doodads.
 
Level 11
Joined
Jul 5, 2010
Messages
779
guys i was making my first spell and can you tell me why it doesnt work??

JASS:
scope My First spell initializer Init globals
        private constant integer SPELL_ID = 'A000'  //the rawcode of the spell
        private constant integer DUMMY_ID = 'h000'  //rw of the dummy unit
        private constant string AOE_EFFECT = "Units\\NightElf\\Wisp\\WispExplode.mdl"  //effect that will be created when we cast the spell on the AOE
        private constant string HEAL_EFFECT = "Abilities\\Spells\\Human\\HolyBolt\\HolyBoltSpecialArt.mdl"  //effect that will be created when we heal units
        private constant string DAMAGE_EFFECT = "Abilities\\Weapons\\Bolt\\BoltImpact.mdl"  //effect that will be created when we damage units
        private constant damagetype D_TYPE = DAMAGE_TYPE_NORMAL //the attack type of the spell
        private constant attacktype A_TYPE = ATTACK_TYPE_MAGIC  //the damage type of the spell
    endglobals private function Range takes integer level returns real
    //returns the range the spell will affect
        return level * 150.
    endfunction
    
    private function Heal takes integer level returns real 
    //returns the heal allies will take
        return level * 100.
    endfunction
    
    private function Damage takes integer level returns real
    //returns the damage enemies will take
        return level * 70.
    endfunction
    
    private function Targets takes unit target returns boolean
    //the units the spell will affect
        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=====================================
//=========================================================================== 
    globals
        private group all
        private group copy
        private boolexpr b
    endglobals
//===========================================================================     
    private function CopyGroup takes group g returns group
        set bj_groupAddGroupDest = CreateGroup()
        call ForGroup(g, function GroupAddGroupEnum)
        return bj_groupAddGroupDest
    endfunction
//===========================================================================  
    private function Pick takes nothing returns boolean
        return Targets(GetFilterUnit())
    endfunction
//===========================================================================    
    private function Conditions takes nothing returns boolean
        return GetSpellAbilityId() == SPELL_ID
    endfunction
//===========================================================================
    private function Actions takes nothing returns nothing
        local location spellLoc = GetSpellTargetLoc()
        local real spellX = GetLocationX(spellLoc)
        local real spellY = GetLocationY(spellLoc)
        local unit caster = GetTriggerUnit()
        local integer level = GetUnitAbilityLevel(caster, SPELL_ID)
        local unit f
        local integer allies = 0
        local integer enemies = 0
        
        //create the AOE effect
        call DestroyEffect(AddSpecialEffect(AOE_EFFECT, spellX, spellY))
        
        //counting the units
        call GroupEnumUnitsInRange(all, spellX, spellY, Range(level), b)
        set copy = CopyGroup(all)
        loop
            set f = FirstOfGroup(copy)
            exitwhen(f == null)
            call GroupRemoveUnit(copy, f)
            if IsUnitAlly(f, GetOwningPlayer(caster)) then
                set allies = allies + 1
            else
                set enemies = enemies + 1
            endif
        endloop
        
        //making the effect of the spell
        if allies > enemies then
            loop
                set f = FirstOfGroup(all)
                exitwhen (f == null)
                call GroupRemoveUnit(all, f)
                //heal allies
                if IsUnitAlly(f, GetOwningPlayer(caster)) then
                    call DestroyEffect(AddSpecialEffectTarget(HEAL_EFFECT, f, "origin")) //the healing effect
                    call SetWidgetLife(f, GetWidgetLife(f) + Heal(level))
                endif
            endloop
        elseif enemies > allies then
            loop
                set f = FirstOfGroup(all)
                exitwhen (f == null)
                call GroupRemoveUnit(all, f)
                //damage enemies
                if IsUnitEnemy(f, GetOwningPlayer(caster)) then
                    call DestroyEffect(AddSpecialEffectTarget(DAMAGE_EFFECT, f, "origin"))  //the damaging effect
                    call UnitDamageTarget(caster, f, Damage(level), true, false, A_TYPE, D_TYPE, null)
                endif
            endloop
        elseif allies == enemies then
            loop
                set f = FirstOfGroup(all)
                exitwhen (f == null)
                call GroupRemoveUnit(all, f)
                //heal allies 
                if IsUnitAlly(f,  GetOwningPlayer(caster)) then
                    call DestroyEffect(AddSpecialEffectTarget(HEAL_EFFECT, f, "origin"))
                    call SetWidgetLife(f, GetWidgetLife(f) + Heal(level))
                //if an unit is not an ally than it is an enemy
                else
                    call DestroyEffect(AddSpecialEffectTarget(DAMAGE_EFFECT, f, "origin"))
                    call UnitDamageTarget(caster, f, Damage(level), true, false, A_TYPE, D_TYPE, null)
                endif
            endloop
        endif
        
        call RemoveLocation(spellLoc)
        set spellLoc = null
        set caster = null
    endfunction    
//===========================================================================
    private function Init takes nothing returns nothing
        local trigger InstantJusticeTrg = CreateTrigger()
        call TriggerRegisterAnyUnitEventBJ(InstantJusticeTrg, EVENT_PLAYER_UNIT_SPELL_EFFECT )
        call TriggerAddCondition(InstantJusticeTrg, Condition( function Conditions ) )
        call TriggerAddAction( InstantJusticeTrg, function Actions )
        
        //setting globals
        set all = CreateGroup()
        set copy = CreateGroup()
        set b = Condition(function Pick)
        
        //preloading effects
        call Preload(AOE_EFFECT)
        call Preload(HEAL_EFFECT)
        call Preload(DAMAGE_EFFECT)
        
        //preloading the ability
        set bj_lastCreatedUnit = CreateUnit(Player(PLAYER_NEUTRAL_PASSIVE), DUMMY_ID, 0, 0, 0)
        call UnitAddAbility(bj_lastCreatedUnit, SPELL_ID)
        call KillUnit(bj_lastCreatedUnit)
        
    endfunction
endscope
 
The spell is a mess...

This...
JASS:
scope My First spell initializer Init globals
        private constant integer SPELL_ID = 'A000'  //the rawcode of the spell
        private constant integer DUMMY_ID = 'h000'  //rw of the dummy unit
        private constant string AOE_EFFECT = "Units\\NightElf\\Wisp\\WispExplode.mdl"  //effect that will be created when we cast the spell on the AOE
        private constant string HEAL_EFFECT = "Abilities\\Spells\\Human\\HolyBolt\\HolyBoltSpecialArt.mdl"  //effect that will be created when we heal units
        private constant string DAMAGE_EFFECT = "Abilities\\Weapons\\Bolt\\BoltImpact.mdl"  //effect that will be created when we damage units
        private constant damagetype D_TYPE = DAMAGE_TYPE_NORMAL //the attack type of the spell
        private constant attacktype A_TYPE = ATTACK_TYPE_MAGIC  //the damage type of the spell
    endglobals private function Range takes integer level returns real
    //returns the range the spell will affect
        return level * 150.
    endfunction

to this...
JASS:
scope MyFirstspell initializer Init 

globals
    private constant integer SPELL_ID = 'A000'  //the rawcode of the spell
    private constant integer DUMMY_ID = 'h000'  //rw of the dummy unit
    private constant string AOE_EFFECT = "Units\\NightElf\\Wisp\\WispExplode.mdl"  //effect that will be created when we cast the spell on the AOE
    private constant string HEAL_EFFECT = "Abilities\\Spells\\Human\\HolyBolt\\HolyBoltSpecialArt.mdl"  //effect that will be created when we heal units
    private constant string DAMAGE_EFFECT = "Abilities\\Weapons\\Bolt\\BoltImpact.mdl"  //effect that will be created when we damage units
    private constant damagetype D_TYPE = DAMAGE_TYPE_NORMAL //the attack type of the spell
    private constant attacktype A_TYPE = ATTACK_TYPE_MAGIC  //the damage type of the spell
endglobals
    
    private function Range takes integer level returns real
    //returns the range the spell will affect
        return level * 150.
    endfunction
 
Level 6
Joined
Apr 18, 2009
Messages
224
Passive Spell Request

Description: (It's a passive ability)

(I would prefer it to be done in GUI if possible)

Gives the unit a 15 % chance to ensnare his target(only works when target is an air unit). No cooldown, no autocast. SFX: I would like you to use this SFX upon cast:

Abilities\Spells\Orc\Ensnare\EnsnareMissile.mdl

and apply a buff with the following SFX on the target :

Abilities\Spells\Orc\Ensnare\ensnare_AirTarget.mdl

Thank you for your time.
 
Level 15
Joined
Oct 18, 2008
Messages
1,591
Oookay so thus far I have the following done of the talent system:
-multiplayer support (GetLocalPlayer() ^^)
-tweaked a bit so its easy to implement
-add/remove points buttons (if you want I can remove them and make the icon itself a button-its up to you, but if they remain you have to decide if the player can restat at any time or not)
-Talent dependances on each other

What needs to be done:
-Effect for dependance (hmm, is there any way to show lightning to only 1 player? Oo)
-Point spending effect-should I make it to give a preset ability for the player, or do you want them to empower skills?
-Point limit - not a big deal :)
 
Level 11
Joined
Jul 5, 2010
Messages
779
The spell is a mess...

This...
JASS:
scope My First spell initializer Init globals
        private constant integer SPELL_ID = 'A000'  //the rawcode of the spell
        private constant integer DUMMY_ID = 'h000'  //rw of the dummy unit
        private constant string AOE_EFFECT = "Units\\NightElf\\Wisp\\WispExplode.mdl"  //effect that will be created when we cast the spell on the AOE
        private constant string HEAL_EFFECT = "Abilities\\Spells\\Human\\HolyBolt\\HolyBoltSpecialArt.mdl"  //effect that will be created when we heal units
        private constant string DAMAGE_EFFECT = "Abilities\\Weapons\\Bolt\\BoltImpact.mdl"  //effect that will be created when we damage units
        private constant damagetype D_TYPE = DAMAGE_TYPE_NORMAL //the attack type of the spell
        private constant attacktype A_TYPE = ATTACK_TYPE_MAGIC  //the damage type of the spell
    endglobals private function Range takes integer level returns real
    //returns the range the spell will affect
        return level * 150.
    endfunction

to this...
JASS:
scope MyFirstspell initializer Init 

globals
    private constant integer SPELL_ID = 'A000'  //the rawcode of the spell
    private constant integer DUMMY_ID = 'h000'  //rw of the dummy unit
    private constant string AOE_EFFECT = "Units\\NightElf\\Wisp\\WispExplode.mdl"  //effect that will be created when we cast the spell on the AOE
    private constant string HEAL_EFFECT = "Abilities\\Spells\\Human\\HolyBolt\\HolyBoltSpecialArt.mdl"  //effect that will be created when we heal units
    private constant string DAMAGE_EFFECT = "Abilities\\Weapons\\Bolt\\BoltImpact.mdl"  //effect that will be created when we damage units
    private constant damagetype D_TYPE = DAMAGE_TYPE_NORMAL //the attack type of the spell
    private constant attacktype A_TYPE = ATTACK_TYPE_MAGIC  //the damage type of the spell
endglobals
    
    private function Range takes integer level returns real
    //returns the range the spell will affect
        return level * 150.
    endfunction
I changed but still it gives error here it is:

wehack.lua:437: attempt to index global 'rtc_enabled\ (a nil value)
 
Level 15
Joined
Oct 18, 2008
Messages
1,591
Hmm got around it without special editor... forgot to init hashtable xD ATM I have like 10 of hashtables xD But it seems like it works now - only point spending is left. Do you want point requirement too? (4 points in a row or 5?) I also need to check that if it's initialized in multiplayer it doesn't causes desync as that's my worst nightmare xD
 
Status
Not open for further replies.
Top