|
Thread: Efreet Sultan Fire Shield Patch | |
|
OldLich
Hired Hero
|
posted February 23, 2018 03:11 AM |
|
Edited by OldLich at 00:28, 28 Feb 2018.
|
Efreet Sultan Fire Shield Patch
I made a patch that allows you to change the effect of the natural fire shield of the Efreet Sultan. It will only affect that creature, not the spell or any other units. You can set the strength of the fire shield from 0 to 100 %.
The tool is not for any modded versions of the game. But you can test it if you like, I haven't tested it for any mods. It was designed for the ordinary game.
Download here
|
|
Alyx182008
Adventuring Hero
|
posted February 23, 2018 06:58 AM |
|
|
I see that you've mentioned it in the Readme file, but you probably should say it in your first post too that this changes your Heroes3.exe permanently and people should probably make a backup.
People tend to have a habit of not reading "Readme" files.
Other than that, nice tool!
|
|
Baronus
Legendary Hero
|
posted February 24, 2018 08:09 AM |
|
|
Nice tool. We must think how bonus is optimal.
|
|
Erdamon
Adventuring Hero
|
posted February 24, 2018 09:30 PM |
|
|
Good job. I see you know your way around coding heroes. Looking forward to more of your releases.
|
|
OldLich
Hired Hero
|
posted February 25, 2018 10:09 PM |
|
Edited by OldLich at 22:12, 25 Feb 2018.
|
Thanks, I hope it worked. I am really more of a player than a modder, but sometimes I create tools, you'll find them if I post them. I updated it, a few minor changes
1. Warning dialog if the selected filename is different than the default name of "Heroes3.exe"
2. Right click with the mouse anywhere in the client area and a new screen will show up that allows to edit the multiplier directly (For users who want more control), right click again somewhere in the client area to go back to the normal screen.
Whichever screen is active will be the defining one when the patch button is clicked.
|
|
OldLich
Hired Hero
|
posted March 02, 2018 07:08 AM |
|
Edited by OldLich at 07:26, 07 Apr 2018.
|
I'm going to leave the top post as it is and just post a new one here. This is a new patcher that will allow to specify a bonus that will only apply for Rashka for each level after (and including) 6th level. The bonus value will be added to the damage multiplier before multiplying with the damage value.
The maximum sets a overall limit. 1.0 is recommended as a good default value. Personally, I would set it lower, perhaps 0.5 (50%)
If damage multiplier is 0.2 and bonus is 0.01 and if Rashka is a level 7 hero, his final multiplier will be 0.2 + (0.01 * 2)
Download here (If you download this, you don't need the one in the top post)
A suggestion:
Damage: 0.2 (Default of Efreet Sultan)
Bonus: 0.016 (1.6% per level after 6th level for Rashka only)
Max: 0.6
That will give Efreet Sultan Fire Shield 20% damage (As it already has as default in the game) and if you use Rashka, he will receive a bonus of 1.6 % for each level after and including 6th level. The Fire Shield will never reflect back more than 60% damage maximum. These values will give Rashka 60% damage when he becomes a level 30 hero.
If you want other outcomes, here is the formula for finding your own bonus multiplier:
Bonus = (Max-Damage) / (WantedHeroLevel-5)
The formula becomes: (0.6 - 0.2) / (30-5) = 0.016 (Bonus must be set to 0.016)
Another example: If you want Rashka's fire shield to reach its full potential damage at level 35, and the maximum must be 80%, and we have a base damage of 20%, here is how to do it:
(0.8 - 0.2) / (35 - 5) = Bonus = 0.02
Here is a full example how to do it, we assume 20% basic damage and want Rashka's fire shield to reach full damage as soon as he reaches a level 20 hero, full damage must be 90%.
Step 1: Open windows calculator
Step 2: Type 20
Step 3: Press - (Minus)
Step 4: Type 5
Step 5: Press =
Step 6: Press M+ (Calculator will remember value)
Step 7: Type 0.9
Step 8: Press - (Minus)
Step 9: Type 0.2
Step 10: Press /
Step 11: Press MR (Calculator will get remembered value)
Step 12: Press = (And there is your bonus)
Just press Ctrl + C to copy it from the calculator and Ctrl V to paste it into the edit box of the patcher.
The same example, just simplified:
Step 1: Calculate 20-5
Step 2: Press M+ (Calculator will remember value)
Step 3: Calculate 0.9-0.2
Step 4: Press / and then MR and then =
For those who are not familiar with multipliers or floating point numbers. They are often used in games to get a fraction or a percentage of a number without having to use the slow divide method.
If you want to get 50% of a number, you can just multiply that number with 0.5 and you'll get 50% of its original value.
Speaking in percentages from 0-100, you'll use multipliers ranging from 0.0 up to 1.0 where 0.0 represents 0 % and 1.0 represents 100%. You can test this in your calculator, type in any number you want and then multiply it by 1.0 and you'll get the exact same number as you typed in, which is 100% of it's original value.
Type another number in and multiply it by 0.0 and you'll get 0 % of its original value.
The first number after the decimal point represents multiples of 10% and the next represents multiples of 1%.
If you want a multiplier that represents 10% you would use 0.1 or 0.10 (for easier reading). If you want a multiplier that represents 1 % you would use 0.01. If you want a multiplier that represents 51 % you would use 0.51
Normally, from a user point of view, most people are used to dealing with percentages because they are easy to comprehend for people. But in the code, inside the core of the game, they use multipliers instead of percentages, because they are easier for the cpu to understand in a faster way.
0 % for a user represents 0.0 inside the game
1 % for a user represents 0.01 inside the game
10% for a user represents 0.1 inside the game
50% for a user represents 0.5 inside the game
100% for a user represents 1.0 inside the game
You can also specify 120% by using 1.2
The top version is a stand alone patch independent from this, the download link 1-2 belongs to the top patcher, but it does not have the ability to adjust bonus or maximum, so if you don't need that you can just download the top patch.
This patch has download link 3-8, most are just user interface adjustments or changes to the readme file.
1 bug has been fixed and 1 lack has been implemented. When there was no hero present (but were fighting a hero-less monster) a pointer would be invalid, that is fixed and then there was a issue when you changed the name of Rashka to another name in the map editor, the patcher would not apply for that new hero name, that it will now apply if you change Rashka's name to an other name.
I have not tested Heroes in a different language and if the patcher works for (Russian for example), the patcher was designed for the English version.
Also, the tome-artifacts, they do alter fire shield effect by 50%, if you set the fire shield on Efreet Sultan too high, it may be a bit overkill, but it would be wrong to invalidate the effect of the tome artifacts, so I don't consider that a bug, it's more of a feature.
If you find anything buggy or anything that lacks, just report it if you find anything.
|
|
Baronus
Legendary Hero
|
posted March 06, 2018 04:42 PM |
|
|
Thanks for explanation how it works.
|
|
OldLich
Hired Hero
|
posted March 08, 2018 12:55 AM |
|
Edited by OldLich at 15:24, 08 Mar 2018.
|
Thanks. I've updated it one last time. It's not often that I play Rashka, I like Calh too, so I implemented an option to teach away Rashka's fire shield skill to one other hero (Which must belong to Inferno). But I made it so that it has to be learned (A slight delay of 6 minutes), to avoid "ruining" the game. if it becomes too easy to get something it ruins the game in a way. It is not meant to stop people from using backups of their Heroes3.exe file, but to stop those who agree with the delay.
|
|
OldLich
Hired Hero
|
posted March 31, 2018 11:49 PM |
|
Edited by OldLich at 07:26, 07 Apr 2018.
|
I updated it but forgot to upload it. I have added regeneration and fear ability for the Efreet Sultan. If you select Resurrect, it will not only regenerate but also bring back dead creatures up to the number of hit points specified.
EDIT1: Fixed a memory read-only bug issue.
EDIT2: Regeneration will now work when resurrect is checked and the unit had no damage, but had dead creatures in the stack + A bit of a quality update on the patcher.
EDIT3: You can now set the probability of the fear to occur, in 1 out of the number you specify. By default it is set to 1/1, which means it will always occur. (It uses Windows cryptographically secure random generator)
EDIT4: I made it possible to specify probability using minimum and maximum, which makes it easier to deal with other types of fractions. (And I removed the "nag screens")
EDIT5: Relocated the randomization code to another place, which caused the game to crash (Did not notice it, been away and busy) and added Unlimited Retaliations ability.
|
|
Zmudziak22
Supreme Hero
Heroes 3 Fan
|
posted April 01, 2018 09:52 AM |
|
|
Well it is possibpe to make default Efreets under Rashka command have Fire Shield but weaker variant?
Efreets -basic Fire Shield power
Sultans - advanced Fire Shield power
|
|
OldLich
Hired Hero
|
posted April 03, 2018 11:48 PM |
|
Edited by OldLich at 06:12, 18 Apr 2018.
|
Of course it is possible, I haven't thought about it yet, it's an interesting thought. Maybe I will do that some time if not someone else beats me to it, but as for now I am on "Vacation" in the game.
It is possible to set fear probability now. As for the Ability text, there is no room for it, so that's something for another time. (Font is simply too big)
|
|
|
|