How to revive a unit

Bogrim

y hello thar
Reaction score
154
no what you are talking about is not reviving it but hiding it etc.

how to hide the unit and unhide it again is well known to me. the question was whether i can simply revive it and that is not possible. at least no one has given me a prove of it being possible.
To do something beyond the editor's capability you will have to make a work-around. The method of hiding IS that work-around.

Are you saying it's not possible to revive a unit "in a simple way"? Well obviously, seeing how the ability isn't there. We trigger things for that same reason.

Are you saying it's not possible to work around? That would be wrong. Very wrong. I have just illustrated a way to mimic the ability to a point where you couldn't tell the difference in-game. And that is the alternative to replacing units.

To be perfectly honest I don't even get the reason for this thread. Why isn't it sufficient enough just to replace the unit? And why are you so declining of help? What do you get from an answer that says "No it's not possible"?
 

Accname

2D-Graphics enthusiast
Reaction score
1,462
To be perfectly honest I don't even get the reason for this thread. Why isn't it sufficient enough just to replace the unit? And why are you so declining of help? What do you get from an answer that says "No it's not possible"?

the certitude that it is not possible.

i am not a newbie with the editor, i did know before how to do a "work-around", thats why i havent asked how to make it look like the unit has been revived.
i myself want to know something, the answer to a question which is not easy as it seems.
i just want to find out all possibilitys of the world editor and i didnt know how to revive a normal unit and thatfor i asked. maybe it would be handy in future, maybe it may help other people reading this thread.

but it seems as if there is no way and therefor i have to create new units.

what this thread was good for?
i know a little bit more about the editor, even though only the number of known impossibilitys has increased its still useful in one way or another.
 

Nexor

...
Reaction score
74
It's possible, I just made it. The only thing that isn't what you wanted is, that it saves the unit only when the damage taken is more than it's health.
So there's no way to register when it dies.

Anyway here's the library I created, you can configure some things there, the ability is a modified version of "Item Life Bonus" (it's value is set to 9999999).
There is a function you can call:

JASS:
call ReviveUnit(unit whichUnit, boolean showEyeCandy)


JASS:
library Revive initializer Init

globals
    private constant integer Health_ID = 'A000'
    private constant string Revive_Effect = "Abilities\\Spells\\Human\\Resurrect\\ResurrectTarget.mdl"
    private constant string Revive_Attach = "origin"
    
    public group Group = CreateGroup()
    private group GroupOnEnter = CreateGroup()
    private trigger Trigger = CreateTrigger()
endglobals

function ReviveUnit takes unit u, boolean showeyecandy returns nothing
    call SetUnitState(u,UNIT_STATE_LIFE, GetUnitState(u,UNIT_STATE_MAX_LIFE))
    call UnitRemoveAbility(u,Health_ID)
    call ShowUnit(u,true)
    call GroupRemoveUnit(Group,u)
    if showeyecandy == true then
        call DestroyEffect( AddSpecialEffectTarget(Revive_Effect,u,Revive_Attach))
    endif
endfunction

private function Conditions takes nothing returns boolean
    if GetEventDamage() >= GetWidgetLife(GetTriggerUnit()) then
        call SetUnitState(GetTriggerUnit(),UNIT_STATE_LIFE, GetUnitState(GetTriggerUnit(),UNIT_STATE_MAX_LIFE))
        call UnitAddAbility(GetTriggerUnit(),Health_ID)
        call GroupAddUnit(Group,GetTriggerUnit())
        call ShowUnit(GetTriggerUnit(),false)
        call KillUnit(CreateUnit(GetOwningPlayer(GetTriggerUnit()),GetUnitTypeId(GetTriggerUnit()),GetUnitX(GetTriggerUnit()),GetUnitY(GetTriggerUnit()),GetUnitFacing(GetTriggerUnit())))
    endif
    return true
endfunction

private function ReturnTrue takes nothing returns boolean
    return true
endfunction

private function onEnter takes nothing returns nothing
    if IsUnitInGroup(GetTriggerUnit(),GroupOnEnter) == false then
    
    endif
endfunction

private function Init takes nothing returns nothing
    local trigger t = CreateTrigger()
    local group g = CreateGroup()
    local unit f
    local region rectregion = CreateRegion()
    call RegionAddRect(rectregion,GetWorldBounds())
    call TriggerRegisterEnterRegion(t,rectregion,Condition(function ReturnTrue))
    call TriggerAddAction(t,function onEnter)
    
    call GroupEnumUnitsInRect(g,GetWorldBounds(), Condition(function ReturnTrue))
    
    loop
        set f = FirstOfGroup(g)
        exitwhen f == null
        call TriggerRegisterUnitEvent(Trigger,f, EVENT_UNIT_DAMAGED)
        call GroupAddUnit(GroupOnEnter,f)
        call GroupRemoveUnit(g,f)
    endloop
    call TriggerAddCondition(Trigger,Condition(function Conditions))
    
    set t = null
endfunction

endlibrary
 

Sammyboy03

New Member
Reaction score
0
Answer:

Simple:thup:

Events
Unit - A unit Dies
Conditions
NOne
Actions
Wait 20.00 game-time seconds
Hero - Instantly revive (Dying unit) at (Center of (Wherever you want)), Show revival graphics
:thup:
 

Nexor

...
Reaction score
74
Simple:thup:

Events
Unit - A unit Dies
Conditions
NOne
Actions
Wait 20.00 game-time seconds
Hero - Instantly revive (Dying unit) at (Center of (Wherever you want)), Show revival graphics
:thup:
THIS won't work, please try out your code, before posting anything stupid.
 

Accname

2D-Graphics enthusiast
Reaction score
1,462
@nexor: what you do with the jass trigger is just adding life and hiding it when it dies then unhiding the unit again if i call to revive it.
please correct me if i am wrong, i am not very familiar with jass but aint that exactly what we all were talking about in this thread for numerous times already?
 

Nexor

...
Reaction score
74
There is no way to save a unit when it get's killed, only when it takes damage, because the "Takes damage" event runs around 0. seconds before the damage taken.

I added the bonus life to the unit, hid it, saved it and created a unit from the same type and killed it, to look nice.
I think it's a very clean and good method for this problem of yours.
If you want I can write you a custom KillUnit function, that will give the unit to the Revive_Group.
 

Xienoph

You can change this now in User CP.
Reaction score
43
Have you tried Nenad's suggestion of using ancestral spirit? I think that can work.
 

Nexor

...
Reaction score
74
Yeah I tried, but it only works with units of the classification Tauren.
And even if they die, it seems, that I can't change the dying unit's classification
 

retupmoc258

New Member
Reaction score
1
Simple:thup:

Events
Unit - A unit Dies
Conditions
NOne
Actions
Wait 20.00 game-time seconds
Hero - Instantly revive (Dying unit) at (Center of (Wherever you want)), Show revival graphics
:thup:

You know what's interesting about this idea? If you wanted, you could just revive the unit, hide him, then move him where you want and unhide him when he's ready for battle again. It's actually one of the most simple ideas here, and would be completely successful if that's what you were looking for Acc.
 

Accname

2D-Graphics enthusiast
Reaction score
1,462
You know what's interesting about this idea? If you wanted, you could just revive the unit, hide him, then move him where you want and unhide him when he's ready for battle again. It's actually one of the most simple ideas here, and would be completely successful if that's what you were looking for Acc.

first of all this thread is pretty old, dont revive graveyarded threads.

and i guess you didnt know that the trigger you have quoted doesnt work, normal units cannot be revived by an action to revive hero units, thats the difference between normal and hero units.
 

Never_Quit

New Member
Reaction score
16
first of all this thread is pretty old, dont revive graveyarded threads.

and i guess you didnt know that the trigger you have quoted doesnt work, normal units cannot be revived by an action to revive hero units, thats the difference between normal and hero units.

This is doable, but you will have to make sure that NONE of the units decay. This can cause lag in the map depending on how many units you intend to use this for.

To do this I would create a dummy unit that has a hero ability revive (with 0 mana cost and no cool down and range of 1 AoE 1 max unit revived ect.) The dummy unit is created right above the dead unit and casts immediately.

In order to time the event, I would add an expiration timer to a another dummy unit of a different type. Then when it dies, create the revive dummy unit.

I'm sure there are other ways of doing this that may be simpler.
Also, this will cause you map to lag horribly and if you do not trigger it correctly there will be many leaks (causing greater lag).
 

Accname

2D-Graphics enthusiast
Reaction score
1,462
thank you but first of all this trigger is pretty old and i know how to do a work around this...
 

retupmoc258

New Member
Reaction score
1
and i guess you didnt know that the trigger you have quoted doesnt work, normal units cannot be revived by an action to revive hero units, thats the difference between normal and hero units.

I was not aware the unit you were reviving was a normal unit. I looked up this old post because I was looking to do something like you. But in my case, I was reviving a hero unit (heroes for the sake of distinguishing and reviveable capabilities). I have run into other difficulties--such as trying to imitate a normal death (especially since the hero death seems to glitch every time leaving a ghost behind), and I think I have finally succeeded, just need some fine-tuning. Anyway, that was why I looked this up, and I found that his solution works fine for heroes (in case some other JASS amateur comes looking here for a solution)
 

mapguy

New Member
Reaction score
46
You can use the Hero - Revive for normal units as well, that way they dont lose abilities you have given them etc... Now, I dont think it would work once the unit has decayed, so you probably need to change the gameplay constant for decay if you need to wait too long.

WOOOOOOOOOOOOOOOOOOAH!

I never knew you can revive non-hero units.
awesome...

lame...
 
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