• 🏆 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!
  • It's time for the first HD Modeling Contest of 2024. Join the theme discussion for Hive's HD Modeling Contest #6! Click here to post your idea!

Unit Corpse Targeting Ability

Status
Not open for further replies.
Level 3
Joined
Mar 26, 2019
Messages
54
I want to make a skill (based on channel, for order ID problem) that raise a selected corpse, but when I test it, i cannot target anything at all. When I point at a corpse it still report "must target a corpse". I have already edit the field "Target at" into dead only. How can I fix this problem?
 
Level 11
Joined
Dec 16, 2018
Messages
365
Sometimes, Channel is hard to use.
You can do a fictional spell based in
cannibalize (no effect spell) and create the triggers using this spell.
I could help you even more, but I need more information. Explain what you want, and I see if cannibalize is useful.
 
Level 3
Joined
Apr 1, 2019
Messages
48
You said, you did that because of "order ID problem". Which other ability is making this problem?
I suppose it is "Raise Skeletons"-Ability of Necromancer.

There are many abilities, which target corpses and I would suggest using those, because - as far as I know - WC3 is hardcoded i.e. on Corpses & Trees.

You can use Death Knights Ability: "Reanimate Dead", Paladins "Resurrection", Meatwagons "Get Corpse", Ghuls "Cannibalize"

As Pyrogasm said, some have a side effect, "Get Corpse" needs a "Cargo" Ability. "Cannibalize" cannot be cast at full HP.
The others can always be used.
 
Level 3
Joined
Mar 26, 2019
Messages
54
Well, I need a single target ability that target a corpse to raise it.
But it seem like that all corpse target ability is no target or area target.
Could anyone let me know whether target a single corpse as a unit target is possible?
In addition, it is not "order ID" field, it is the target type of Channel ability, the one let you setlect whether you can target ground, unit or both.
 
Level 3
Joined
Mar 26, 2019
Messages
54
You said, you did that because of "order ID problem". Which other ability is making this problem?
I suppose it is "Raise Skeletons"-Ability of Necromancer.

There are many abilities, which target corpses and I would suggest using those, because - as far as I know - WC3 is hardcoded i.e. on Corpses & Trees.

You can use Death Knights Ability: "Reanimate Dead", Paladins "Resurrection", Meatwagons "Get Corpse", Ghuls "Cannibalize"

As Pyrogasm said, some have a side effect, "Get Corpse" needs a "Cargo" Ability. "Cannibalize" cannot be cast at full HP.
The others can always be used.
I make a map that allow player to freely acquire skill through skill learning book. Who know what they will learn, and I need a bunch of necromancy skill (some for trolling). So order Id is quite a problem.
 
Level 7
Joined
Apr 17, 2017
Messages
316
Well, instead of directly targeting corpses, you can use channel as a point target ability and get the closest corpse and if there is no corpse in the unit group you can simply display a text message like "Must target a corpse" and order unit to stop. But this way, you won't have corpse indicator, and you can still use the ability on units that don't have a corpse yet.
  • Corpse Target
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Corpse
    • Actions
      • Set temp = (Target point of ability being cast)
      • Set ug = (Units within 50.00 of temp matching (((Matching unit) is dead) Equal to True))
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Number of units in ug) Equal to 0
        • Then - Actions
          • Unit - Order (Triggering unit) to Stop
          • Custom script: if GetTriggerPlayer() == GetLocalPlayer() then
          • Custom script: call BJDebugMsg(" |c00FFFF00Must target a corpse.|r")
          • Custom script: endif
        • Else - Actions
          • -------- do your actions here --------
      • Unit Group - Remove all units from ug
      • Custom script: call RemoveLocation(udg_temp)
 
Level 3
Joined
Mar 26, 2019
Messages
54
Well, instead of directly targeting corpses, you can use channel as a point target ability and get the closest corpse and if there is no corpse in the unit group you can simply display a text message like "Must target a corpse" and order unit to stop. But this way, you won't have corpse indicator, and you can still use the ability on units that don't have a corpse yet.
  • Corpse Target
    • Events
      • Unit - A unit Starts the effect of an ability
    • Conditions
      • (Ability being cast) Equal to Corpse
    • Actions
      • Set temp = (Target point of ability being cast)
      • Set ug = (Units within 50.00 of temp matching (((Matching unit) is dead) Equal to True))
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Number of units in ug) Equal to 0
        • Then - Actions
          • Unit - Order (Triggering unit) to Stop
          • Custom script: if GetTriggerPlayer() == GetLocalPlayer() then
          • Custom script: call BJDebugMsg(" |c00FFFF00Must target a corpse.|r")
          • Custom script: endif
        • Else - Actions
          • -------- do your actions here --------
      • Unit Group - Remove all units from ug
      • Custom script: call RemoveLocation(udg_temp)
Well, thank you. About the problem of unit that do not have corpse, I can simply add a if - unit type. Though it will lengthen the trigger a lot.
 
Level 3
Joined
Mar 26, 2019
Messages
54
There is no way to directly 'target' corpses. The best you can do either use an ground target, and raise the nearest unit, or spawn custom selectable indicators for all corpses.
The second option will undoubtedly cause lag, especially when a lot of unit die at once. Seem like only the first option is valid
 
Level 38
Joined
Feb 27, 2007
Messages
4,951
No it's not a foregone conclusion that it would be performance-intensive to create additional 'fake' corpses to cast on. The game engine is surprisingly efficient, the problem is usually that the triggers people write are just terribly inefficient. As long as the corpse indicators eventually decay and are removed then they won't pile up indefinitely become a problem. If the map can handle 500 units at a time (a 24p map with ~25 units per player) then it can handle 250 units and 250 corpses with exactly the same performance.

People write physics engines in wc3 that move hundreds of objects around on the map 33 times a second and calculate all of the collisions properly, too. It's not about what you're doing but rather how you are doing it.
 
Status
Not open for further replies.
Top