• 🏆 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!

Engineering Upgrade Experimentation

Status
Not open for further replies.
Level 35
Joined
Feb 5, 2009
Messages
4,560
Hello all. I am unsure if this has been explored before, or if this will be of particular use to anybody, but I would like to share what I have found in regards to Engineering Upgrade of late.

Now, from what I can gather it is fairly well established that Engineering Upgrade is a rather finicky ability to work with, which is a particular shame as it could open up so much possibilities if it were to be made available to work with Unit abilities. Used incorrectly it can crash the game, and it has a buff that it doesn't seem to use to apply Spiked Carapace to any models that support the required attachment points.

However, there is a particular area I would like to explore with it, and that is what it is designed to do - replace abilities. In effect, that is what it does, although the practical application thusfar is to replace abilities with a slightly altered version of themselves. This can be exploited to make certain things previously deemed impossible to become possible.

Take the Paladin, for example. By default, its skillset is Holy Light, Divine Shield, Devotion Aura and Resurreciton. By making a custom Engineering Upgrade (Hero) Skill with 1 Level, designating it to replace this skillset with that of the Death Knight, you can, through triggers, add the custom ability to the Paladin to replace its moveset. This effectively enables you to alter what abilities are available for learning, but it does run into some complications:
  • If you have, for example, already learned an ability before the Engineering Upgrade skill has been applied, all that will change is the button location.
    • Say, for example, you for some reason wanted to replace Holy Light with Death Pact rather than Death Coil - by applying the Engineering Upgrade skill when you already have the ability, it will keep Holy Light, but relocate it to where Death Pact would normally be.
    • Strangely enough, this will change the mana cost of Holy Light to the mana cost of Death Coil. With consideration that Tinker's use of Engineering Upgrade is perfectly functional, it seems reasonable to deduce that this is purely due to incompatible data fields failing to replace one another in this particular instance.
  • If you already have Engineering Upgrade, and decide to learn the newly acquired Death Coil spell, you will appear to still get Holy Light, but the ability will possess the properties of Death Coil. The effects also do not transition entirely, so when you cast your new spell, it will still use the Holy Light effect, but there will be a slight delay for when Death Coil would normally hit the target - it will then play the animation of Death Coil hitting the target, without the missile appearing, and damage living targets while healing Undead.
A whole other area is if you replace a passive skill with an active skill. If the Engineering Upgrade skill is applied some time after procuring a dummy passive skill, like an edited Moon Glaive, the new active skill will, as previously established, do nothing. However, doing things the other way around is where it can get particularly interesting.

Say you take Battle Roar, and then apply an Engineering Upgrade effect to replace it with Bash. You will still be able to active Battle Roar, but instead of applying a 10 damage bonus at level 1, it will apply 20 - based directly off of the percentage chance of Bash occurring at level 1. Additionally, this will stun the caster and only last for as long as Bash would normally last. It is likely this can produce some wildly unusual effects.

The main part, however, I was particularly interested in was the potential applications to have one hero as a baseline, and present the opportunity for various classes to be applied. So, you have up to four dummy skills (five if you use a second Engineering Upgrade ability), all ready to be replaced with brand new skills based upon a selected hero class. However, to overcome the aforementioned problems, some tweaking is required.

For preliminary debug testing, a scenario was created - replace a dummy ability with Holy Light. When the new Holy Light ability is cast, the game would deliver a message detailing the ability name, the tooltips, extended and default, for both learning and normal, as well as the path of the research icon. All of the tooltips and the ability name were perfectly reflective of Holy Light - the icon research path, however, was of the original ability. This was of particular interest, as the icon shown in what the hero could learn was Holy Light, rather than the original dummy ability. This is likely due to the information stored in the Engineering Upgrade of what the original ability was.

Armed with this information, it became clear that attempting to customize the ability's icon or tooltips for the individual unit, even with recent capabilities in GUI, was a no go. As far as the game was concerned, the hero did not have either ability in question, and as such it was unable to edit it. If you edit the dummy ability for all cases via triggers, the new information will present itself - but this would not be effective as a solution.

Bizarrely enough, however, it was found that if you added Holy Light via triggers before learning it from the dummy ability being used to learn it, it demonstrated everything perfectly. The ability functioned perfectly, and you could level it the rest of the way up and the game would treat it as though it was exactly the way it should be. And thus, all that was left was to set it up so that if it was your first time learning a skill, the skill would be removed and added back again.

Unfortunately, this was not able to be done in raw GUI - the GUI code is severely limited in its capabilities to determine what a hero's "learned skill" is, but despite this, it was found to be fully functional when used as a replacement for "ability being cast". And thus, this code was born:


Code:
function Trig_Ability_Fix_Conditions takes nothing returns boolean
    if ( not ( GetUnitAbilityLevelSwapped(GetLearnedSkillBJ(), GetTriggerUnit()) == 1 ) ) then
        return false
    endif
    return true
endfunction

function Trig_Ability_Fix_Actions takes nothing returns nothing
    call UnitRemoveAbilityBJ( GetLearnedSkillBJ(), GetTriggerUnit() )
    call UnitAddAbilityBJ( GetLearnedSkillBJ(), GetTriggerUnit() )
endfunction

//===========================================================================
function InitTrig_Ability_Fix takes nothing returns nothing
    set gg_trg_Ability_Fix = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_Ability_Fix, EVENT_PLAYER_HERO_SKILL )
    call TriggerAddCondition( gg_trg_Ability_Fix, Condition( function Trig_Ability_Fix_Conditions ) )
    call TriggerAddAction( gg_trg_Ability_Fix, function Trig_Ability_Fix_Actions )
endfunction

So, given all that, I am curious to see what people's thoughts are concerning this, and hope it might help somebody with a problem that this kind of solution might be able to solve for them.
 

Uncle

Warcraft Moderator
Level 64
Joined
Aug 10, 2018
Messages
6,535
Pretty interesting find, thanks for sharing.

And you can get the learned skill in mostly GUI with some custom script.
  • Learn Skill Fix
    • Events
      • Unit - A unit Learns a skill
    • Conditions
    • Actions
      • Custom script: set udg_LearnedSkill = GetLearnedSkill()
      • If (All Conditions are True) then do (Then Actions) else do (Else Actions)
        • If - Conditions
          • (Level of LearnedSkill for (Triggering unit)) Equal to 1
        • Then - Actions
          • Unit - Remove LearnedSkill from (Triggering unit)
          • Unit - Add LearnedSkill to (Triggering unit)
        • Else - Actions
LearnedSkill = Ability Code
 
Last edited:
Level 35
Joined
Feb 5, 2009
Messages
4,560
Yeah, definitely true. The reason I converted to full custom text was to use it in the Conditions area, I think Custom Script commands are unfortunately unavailable there, but with the way you laid it out it sort of bypasses that whole thing which is probably better tbh. Lets you do a lot with just one line of Custom Script.
 

Kyrbi0

Arena Moderator
Level 45
Joined
Jul 29, 2008
Messages
9,501
We have talked about how we need to have someone look deeply into Engineering Upgrade for literal years... It's been a long time coming & i, like many others, believe it to be a remarkably untapped gold mine of possibilities.

That's all to say "excellent work, keep it up!" : )

That being said (& as much as I enjoy reading), I highly suggest you organize your work a bit more; specifically, for your sake as well as ours, you'll want a concise, succinct section of "Results" to talk about what exactly worked (& in what way). Currently it's a bit difficult to parse those important details.

Ultimately this could be an invaluable addition to the Warcraft 3 Ability Insight Guide; but it would need to be organized in a similar fashion.

Good luck!
 
Most of this has been known for a while. I have been making heavy use of engineering upgrade in Gaias to code my talent system there.

It basically uses 3 identical leveled channel abilities as a placeholder and uses engineering upgrade to replace them with the actual talents for each talent level.

There were more than just one trick abusing Engineering upgrade. i remember it also being possible to remove or create hero abilities on units by abusing the replace fields in a creative way, using spellbooks to hide abilities.

I dont know where i got all my information from on this. I just know that Ive read a very good tutorial on engineering upgrade.
Chances are you can find it on hive.



However, this is 2020. we have UI and ability data natives now. Abusing engineering upgrade and dealing with its special flavour bugs is no longer neccesary at this point. Its better to just use dummy abilities that do nothing and replace their visual styles via native control, then use triggers to cast the actual spells for way more freedom and less bugs.
 
Level 35
Joined
Feb 5, 2009
Messages
4,560
For now Engineering Upgrade is still needed for replacing abilities within the Learn mechanics for Heroes, at least as far as I'm aware it is. Hopefully later patches will expand upon it further, though.

It is pretty cool that this has been explored before, I wasn't sure whether or not it had been. I was aware of being able to remove abilities, by having multiple abilities replaced by the same one, but I have so far yet to encounter the way of adding abilities through Engineering Upgrade. That definitely sounds interesting.
 

Kyrbi0

Arena Moderator
Level 45
Joined
Jul 29, 2008
Messages
9,501
If you've got info or sources of info, Zwi, by all means do share. : )

That being said, some of us aren't working with later patches, so we might still desire knowing about the kind of tricks that EU can do.

That being said, the stuff I'm actually interested in are tales I've heard of combining disparate abilities in weird ways to create totally different abilities. I'm hoping testing can be done in that arena.
 
Level 35
Joined
Feb 5, 2009
Messages
4,560
From what I've seen of the example provided on that tutorial, that doesn't seem like the sort of thing I've delved into here at all. It seems to replace existing abilities with like-abilities, and I'm not sure if it's a previous version kind of thing but using Engineering Upgrade in the way described there doesn't seem to actually change the icons of existing abilities. It is likely that this has changed due to the nature of Reforged, which is the version I am operating on.

Also this:
The Engineering Upgrade buff model of the spikes sticking out of the hero's mount are notoriously hard to remove or change. (You can see them sticking out of Thrall's wolf in the test map, attached below.) I've yet to find a good workaround for this, other than just using a hero that doesn't have a mount.

That's actually very easy to remove. Similar to spells like Carrion Swarm, you just have to edit the base buff. Any custom buffs you apply won't remove it, you have to remove the attachments on the base and that will take care of something that was never supposed to appear in the first place.

Whenever you’re replacing abilities using Engineering Upgrade, ALWAYS use the same base ability for all versions of the skill being replaced. If you don’t, you can end up with weird combinations of effects resulting from the replaced ability not being uninstalled properly. (This is how I accidently ended up with a 2 million damage Storm Bolt in my map.)

This is the complete opposite of what I am exploring here, as such it seems the information available in this tutorial, while covering the bare basics of Engineering Upgrade, hasn't exactly done much for a "complex example" or an in-depth look at other ways to use the ability.

It does seem unfortunate, but not only have none of the areas I've actually covered here been covered before in the aforementioned tutorial, but the parts that have actually been covered by the tutorial may have become out-dated due to the most recent patches. That being said, that sort of method for switching between different icons and ability aesthetics should work well enough for pre-forged versions, as far as I am aware, and if you are running that version then those methods will be serviceable enough.
 
Last edited:
Level 35
Joined
Feb 5, 2009
Messages
4,560
Actually it's not in the very specific case of changing what abilities can be learned, which is the case I'm opting to cover. If it were any other situation then the new natives are far more feasible, but as far as I am aware, this is simply not the case for changing what appears when striving to Learn the ability. This abuse of the ability is geared towards providing alternate movesets to the same hero template with considerable ease, ideally before the hero begins leveling up.

There are likely other areas worth exploring with Engineering Upgrade, too, as I think @Kyrbi0 put it best that this does seem to be something of an untapped resource.
 

Kyrbi0

Arena Moderator
Level 45
Joined
Jul 29, 2008
Messages
9,501
Mostly I'm excited by tales of using EU to combine two abilities in a way that results in an ability we could not otherwise create (by mixing-matching data fields, presumably). I don't know how true it is, or how effective it is, but it seems worth testing.

\\EDIT\\ Yeah @Zwiebelchen , just finished reading that tutorial & found my very own post yelling back to me from the void, same thing I'm saying now. : )

Bottom line: I think it's cleartclear door isn't closed on more EU knowledge & Wazz's exploration is a good idea.
 
Last edited:
Level 19
Joined
Dec 12, 2010
Messages
2,069
this ability was built up to upgrade an ability into the very same ability, and it's very buggy if used incorrectly
it doesn't update any core data of the ability - only DataA/B/C/.. and similar editor-related fields
Means if you toggle your Storm Bolt into a Critical Strike, you won't really crit, and if you could cast it, the effect will be the Bolt, despite visuals being broken
And when you take an ability with some hardcoded behavior and change it into maybe similar, but still another ability, it will inherit the hardcoded part
The only difference is when a hero obtains EU - then game will update his learnable abilities if they fit the rules. It allows to change the learnable skills if used wisely.
For instance, this hack is used in LoD - every hero has Z008,Z008,Z008,Z009 skillset available, where every Z008-9 is a dummy orb-ability
after spell picking hero receives pre-made EU with change from Z008 to desired ability, which replaces one of Z008 at first time. Then the same goes for another one, and lastly - for the ultimate.
Because hero didn't learn orbs before applying EU, abilities will not inherit dummy features and will be completely fine further.

It's also possible to reverse the principle by making EU look like "AbilID,Z008"
This way, when the EU is added, unit will not change at all, but when it's removed, Z008 will be "reverted" to AbilID
This is used in chinese versions. It has a small win in terms of not having the dummy EU ability on the hero all along the game, that's all.

Upgraded abils won't inherit on morphs if the EU located on the morph's target unit, causing dirty issues with missing abilities.
 
Level 9
Joined
Mar 26, 2017
Messages
376
this ability was built up to upgrade an ability into the very same ability, and it's very buggy if used incorrectly
it doesn't update any core data of the ability - only DataA/B/C/.. and similar editor-related fields
Means if you toggle your Storm Bolt into a Critical Strike, you won't really crit, and if you could cast it, the effect will be the Bolt, despite visuals being broken
And when you take an ability with some hardcoded behavior and change it into maybe similar, but still another ability, it will inherit the hardcoded part
The only difference is when a hero obtains EU - then game will update his learnable abilities if they fit the rules. It allows to change the learnable skills if used wisely.
For instance, this hack is used in LoD - every hero has Z008,Z008,Z008,Z009 skillset available, where every Z008-9 is a dummy orb-ability
after spell picking hero receives pre-made EU with change from Z008 to desired ability, which replaces one of Z008 at first time. Then the same goes for another one, and lastly - for the ultimate.
Because hero didn't learn orbs before applying EU, abilities will not inherit dummy features and will be completely fine further.

It's also possible to reverse the principle by making EU look like "AbilID,Z008"
This way, when the EU is added, unit will not change at all, but when it's removed, Z008 will be "reverted" to AbilID
This is used in chinese versions. It has a small win in terms of not having the dummy EU ability on the hero all along the game, that's all.

Upgraded abils won't inherit on morphs if the EU located on the morph's target unit, causing dirty issues with missing abilities.

Interesting. And why does the base ability need to be an orb ability?

I want to eventually make a map that makes use of EU, and also be able to unlearn and replace skills during the game. Hopefully it will be possible and free of bugs to first set a base ability level to zero, then remove the UE, and then add UE for the desired new skill (upon which point the player is refunded skill points and will be able to learn the new skill from scratch).
 
Level 35
Joined
Feb 5, 2009
Messages
4,560
I used Moon Glaive personally for a dummy ability, but so far I've mostly explored swapping them before you learn abilities.

If you apply Engineering Upgrade while you already have the abilities, unfortunately that's a whole other area. Although I'd sort of hazard a guess that the best way to handle it would be to do a trigger that does something along the lines of:

- Hero Learns Ability
- Ability = Engineering Upgrade
- Store Ability Levels Of Existing Skills
- Removing Skills
- Relearn The Skills To Designated Levels

That might not cover everything, though.
 
Level 35
Joined
Feb 5, 2009
Messages
4,560
UPDATE:

@Kyrbio, I feel this may be of particular interest to you, and it may apply to Reforged versions exclusively so I'm not sure how viable this will be for previous incarnations of Warcraft 3.

Through some experimentation, I have found that Engineering Upgrade can be applied to unit abilities. Shift+Enter is required for this, so you can then apply the ability codes of unit abilities. This won't allow you to change the icons of the abilities or anything of that nature, unless you use a method for replacing them accordingly, but it does mean you can, for example, use a buff/ability link to apply a temporary boost to certain abilities when using a power up ability. The reason I find this of particular interest is because I think I heard somewhere that, previously, using Engineering Upgrade with units causes the game to crash.

Additionally, Engineering Upgrade can be turned into an item ability. Say, for example, you have Carrion Beetles on a Crypt Lord. You could then have an item change that to an upgrade form that increases the maximum amount of Carrion Beetles you can summon at any given time. This would of course make the item effectively useless for any hero that doesn't have that ability, but the option is absolutely there.
 
Level 35
Joined
Feb 5, 2009
Messages
4,560
Now, on a side note, I've also explored the potential of using upgrades to improve item abilities for specific units. As it turns out, this absolutely works, so I wanted to see if the same could be applied for Engineering Upgrade.

Funnily enough, I found that in tests, Engineering Upgrade doesn't work on some abilities at all - so far the only case I've seen this not work is when I tried using it to replace Item Damage (+3) with Item Damage (+6). But, upon testing it with Raise Dead (Item) to a new version of it that raises Skeleton Archers instead of Skeleton Warriors, the Engineering Upgrade absolutely /does/ influence item abilities. So that means you can use Engineering Upgrade as a means of making items more formidable, too (with limitations).
 
Now, on a side note, I've also explored the potential of using upgrades to improve item abilities for specific units. As it turns out, this absolutely works, so I wanted to see if the same could be applied for Engineering Upgrade.

Funnily enough, I found that in tests, Engineering Upgrade doesn't work on some abilities at all - so far the only case I've seen this not work is when I tried using it to replace Item Damage (+3) with Item Damage (+6). But, upon testing it with Raise Dead (Item) to a new version of it that raises Skeleton Archers instead of Skeleton Warriors, the Engineering Upgrade absolutely /does/ influence item abilities. So that means you can use Engineering Upgrade as a means of making items more formidable, too (with limitations).

This indeed is interesting discovery. Engineering Upgrade has always been an interesting pickle ^^
 
Level 35
Joined
Feb 5, 2009
Messages
4,560
Except as previously stated, for many instances, you can't. I'm not entirely sure what your problem with Engineering Upgrade is, but you don't have to use any of these methods for yourself. It's simply an investigation towards something that can be used in ways that haven't been considered before.
 
Level 9
Joined
Mar 26, 2017
Messages
376
So I'm trying to make a map that uses Engineering Upgrade to allow Heroes to be able to use and learn custom skills.

What I do is, I give heroes 4 'Base' skills. This is just a channel skill that is intended to be replaced with Engineering Upgrade.
Then for every custom skill in my map, I have a corresponding Engineering Upgrade that switches out Base Skill to the target ability.
Engineering Upgrade has 4 levels, so it can either switch Skill 1 to the target ability, Skill2, Skill3, Skill4.

Now I can't get this to work properly. I do manage to get the skills switched properly, and learning and casting the skills work, but several things are now working:
-Ability Icon and Tooltip are still from the Base Skill (though manacost is displayed correctly)
-The Caster and Target Art are still the same from the Base Skill. For instance, if I use Channel as Base skill and switch it to a summoning ability, it will display the Death Pact art around summoned units.

I built a similar system on 1.31, and from what I recall it worked perfectly. Are above issues introduced from Reforged, or am I doing something wrong?


If it is confirmed that Engineering Upgrade is broken by reforged and there is no way around it, I see two possible workarounds;
1. Use functions to alter ability icon and tooltip, and alter effect art using ability string field '
ABILITY_SLF_CASTER' (if this field works at all).
2. Ditch Engineering Upgrade entirely, and substitute Skill Learning with a method using custom UI frames.
 
Level 35
Joined
Feb 5, 2009
Messages
4,560
I think some of the above issues are introduced from Reforged, unfortunately, as it seems in previous versions of the game Engineering Upgrade allowed for such exchanges quite freely.

Basically, the most effective way to get around it now, it seems, is as you apply the Engineering Upgrade skills in question, to then store the level of each skill you want to have replaced temporarily, and relearn the skills for a hard reset. That should hopefully get the result you're after.

Basically, functions trying to edit the ability are a bit strange, too, as the game can be very quickly confused. However if you do reset the abilities accordingly, it should get the correct results.
 

Uncle

Warcraft Moderator
Level 64
Joined
Aug 10, 2018
Messages
6,535
Reforged broke Engineering Upgrade, unfortunately.

I would say that if you're capable of creating custom UI frames then I would go with that option. It's obviously extra work but it gives you so much more freedom and flexibility.

That being said, you could pull this off using Engineering Upgrade if you really wanted to, but it would require a lot of Object Editor data. To do this you would use an additional "Cast" ability that is added with triggers. This is to "replace" our broken ability.

So for example let's say you wanted to add Shockwave to your Q button. The setup would use 3 abilities:
Base Ability (Q) - The base ability that does nothing. It's hidden by default and can't be Researched.

Shockwave (Research)
- This ability is what you reference in Engineering Upgrade. Base Ability (Q) becomes this. It's passive and hidden once learned (this is done by setting it's Normal Button positions to 0,-11). All it does is act as a Tooltip/Icon for visual clarity.

Shockwave (Cast)
- This ability is added and managed via triggers. It is literally Shockwave, and is what you will cast.


So with this setup, you'll need an extra "Cast" version of each ability, and you'll need some triggers to manage their level growth.

Example: A unit learns Shockwave (Research) -> If level of Learned Skill equal to 1 then -> Add Shockwave (Cast), Else -> Set level of Shockwave (Cast) to level of Learned Skill.

Make sure to make the added abilities permanent so they don't get removed after death: UnitMakeAbilityPermanent(whichUnit, permanent, abilityId).

Since we can't adjust hotkeys and button positions (as far as I'm aware), you'd need multiple copies of each ability for each Hotkey. You would also need to manage multiple Engineering Upgrades.
 
Last edited:
Level 35
Joined
Feb 5, 2009
Messages
4,560
I think if you have better ways of getting around it, the biggest difficulty would be changing the Research icon - as far as I can tell, commands for that don't actually work so far, and Engineering Upgrade can be used for that exclusively while you handle the rest with a custom UI. That might be the optimal combination to go for, depending on what you want to do.

Definitely sucks that the latest patches seemed to mess up what worked insanely well previously. It's got some interesting aspects to it, but also lost quite a bit of its function.
 
Level 9
Joined
Mar 26, 2017
Messages
376
Wow that sucks!

And if we could just change the Research Icon... then it could be much simpler: The 'skill learning' part could be handled through dummy hero abilities, and the actual skills can be added as a trigger response to a learn event.
Now we need to create an entire set of Engineer Upgrade AND dummy abilities, one for each custom ability.

Ah well, I guess there is still a working solution. I still prefer using the Blizzard skill point mechanic over custom frames, as it does exactly what I want.


I'm just wondering though if anyone found out how to use instanced ability fields. If this field 'ABILITY_SF_ICON_RESEARCH' would work properly, the entire problem would be solved.

Instead I have been trying to use the function 'ConvertAbilityStringField' with an integer code, but this function seems to crash the thread, no matter what you feed it.

Hopefully somebody knows a bit more about instanced ability fields. Otherwise, I will make an (one) extra set of dummy abilities like Uncle suggested. Luckily, I'm fortunate enough to prefer using fixed hotkeys for an ability - but ensure that no abilities with the same hotkey will become available to a player :)
 
Level 9
Joined
Mar 26, 2017
Messages
376
I am moving on with making my Engineering upgrade system right now.

I have a system in place where I have 3 skills 'Skill 1, Skill 2, Skill 3' that can be swapped around for Hero skills.
Is it better to do:

A.
Make an Engineering Upgrade skill for each Hero skill with 3 levels. When a Hero skill is selected, it will then add this Engineering upgrade and set it either to level 1, 2 or 3, depending on which base skill will be switched out.

B.
Make 3 Engineering Upgrade skills per skill that have 1 level each.

I think a lower amount of skills would be preferable, but I have heard on the Hive that using skills with multiple levels could be detrimental to load times. @DracoL1ch
 

Uncle

Warcraft Moderator
Level 64
Joined
Aug 10, 2018
Messages
6,535
I am moving on with making my Engineering upgrade system right now.

I have a system in place where I have 3 skills 'Skill 1, Skill 2, Skill 3' that can be swapped around for Hero skills.
Is it better to do:

A.
Make an Engineering Upgrade skill for each Hero skill with 3 levels. When a Hero skill is selected, it will then add this Engineering upgrade and set it either to level 1, 2 or 3, depending on which base skill will be switched out.

B.
Make 3 Engineering Upgrade skills per skill that have 1 level each.

I think a lower amount of skills would be preferable, but I have heard on the Hive that using skills with multiple levels could be detrimental to load times. @DracoL1ch
I would not worry about load times, go with A. I highly doubt you would even notice the difference in load times between the two options.
 
Level 9
Joined
Mar 26, 2017
Messages
376
Oh nevermind, I would also prefer to use the 'add and then remove' with a reversed original and upgrade skill, which does not work with multiple levels. Thank you guys though for the answers!
 
Level 19
Joined
Dec 12, 2010
Messages
2,069
moreover, when you add an ability it already takes effect before further manipulations, so your upgrade will always change dummy skill #1 into some skill#10, while you actually wanted it to level up and turn it into skill #20, so it wont work at all
and with deletion you allow yourself to free one ability slot but unable to say if a hero can have this ability at all (by learning at some point), and can only check his pre-saved skillset for that. Normal way you could see for the very this EU.
 
Level 9
Joined
Mar 26, 2017
Messages
376
moreover, when you add an ability it already takes effect before further manipulations, so your upgrade will always change dummy skill #1 into some skill#10, while you actually wanted it to level up and turn it into skill #20, so it wont work at all
and with deletion you allow yourself to free one ability slot but unable to say if a hero can have this ability at all (by learning at some point), and can only check his pre-saved skillset for that. Normal way you could see for the very this EU.

Luckily I only intend to change skills one time at game start without releaning, so it is fairly simple.

As for 'already takes effect', it does seem to pick up correctly when the ability is leveled.
I tested as such:
-Hero has 'Skill 2'
-Unit Add Ability EU (which switches Skill 1 to x at level 1, Skill 2 at level 2...)
-Set EU to level 2.

It worked properly.

Though in my test, I added this EU only after Skill 1 was already switched out with another EU skill.
 
-Ability Icon and Tooltip are still from the Base Skill (though manacost is displayed correctly)
-The Caster and Target Art are still the same from the Base Skill. For instance, if I use Channel as Base skill and switch it to a summoning ability, it will display the Death Pact art around summoned units.

I built a similar system on 1.31, and from what I recall it worked perfectly. Are above issues introduced from Reforged, or am I doing something wrong?


If it is confirmed that Engineering Upgrade is broken by reforged and there is no way around it, I see two possible workarounds;
1. Use functions to alter ability icon and tooltip, and alter effect art using ability string field '
ABILITY_SLF_CASTER' (if this field works at all).
2. Ditch Engineering Upgrade entirely, and substitute Skill Learning with a method using custom UI frames.

I was talking to some guy who was running Patch 1.33 and he said he tested Engineering Upgrade and it was back to the previous pre-Reforged behavior where it would change the icon and tooltips of abilities. This means all of the "Create Your Hero" maps from the past few decades will be working again once that comes out.

That's obviously really secondhand information that deserves scrutiny, but it might be true.
 
Level 9
Joined
Mar 26, 2017
Messages
376
That is nice. (It's actually a good news that patch 1.33 is being worked on. :))

Although, all we really need is a native to change an ability research icon.

If we have that, a much simpler system can be used for a custom hero system:
- Use 4 dummy hero abilities (purely for learning, it's research tooltip and research icon can be set using triggers)
- Once a dummy ability is learned, a corresponding Unit ability is added to the Hero via triggers
- The actual hero abilities are invisible
 
Level 34
Joined
Sep 17, 2010
Messages
2,739
Mind you, I'd also like to see it taken further to the point of not having the number of hero abilities any hero can have limited to just 5. Remove all limitations to Warcraft, almost like some kind of project that sort of Smashes those restrictions. Like some sort of Warsmash.
IMG_20201218_000529.jpg
 
Level 9
Joined
Mar 26, 2017
Messages
376
Maybe interesting for those following this topic; user natass9 discovered that the 1.32 bug for EU can be fixed by turning on in map options 'use custom ability skins'. Next to that, you need to remove the Hero's 'ability skin' field, or else those will take precedence. If this is done, EU works properly without having to make an extra set of skills and triggers.

engineering upgrade
 
Level 35
Joined
Feb 5, 2009
Messages
4,560
Maybe interesting for those following this topic; user natass9 discovered that the 1.32 bug for EU can be fixed by turning on in map options 'use custom ability skins'. Next to that, you need to remove the Hero's 'ability skin' field, or else those will take precedence. If this is done, EU works properly without having to make an extra set of skills and triggers.

engineering upgrade

Damn, that does sound interesting. Admittedly I didn't even know that was an option for the ability skins, that makes them seem far less useless after all :O
 
Status
Not open for further replies.
Top