|
|
peter1985
Hired Hero
|
posted December 05, 2017 08:31 PM |
|
|
Dear RoseKavalier!
What (Heroes 3) project do you work for?
|
|
RoseKavalier
Admirable
Supreme Hero
|
posted December 06, 2017 01:09 AM |
|
|
We're getting off-topic but if you want to take a look:
SoD_SP
Modified WoG mapeditor. I've not worked on this one in a long time but I plan to work on it in the near future.
A few more things that are for my private use and another thing that will eventually be available when I can locate one piece of code causing some problems.
Mapmaking is my ultimate end goal, however the game was not able to do what I wanted it to so I got into modding a bit to remove Plague/Month of the Creature, fix some bugs... and then it kinda got out of control.
____________
My Let's Plays: Metataxer's Revenge - The Empire of The World 2
|
|
peter1985
Hired Hero
|
posted December 07, 2017 10:42 PM |
|
|
Dear RoseKavalier!
Congratulations to your work! If I'm finished, I'll check it out.
I want to understand something. There are creature buildings in the "object" txt file. There are 79 buildings on the map. (9X7 + 15 neutral) In the txt file, 1 to 79 indicate which creature to be taken in which building. Exe file number 79 is assigned a charge. How do you know where this is in the exe file? If I already know where the ex is, then I can find out.
I found another interesting thing I could not figure out yet!
00273b00
00273be8
00273cd0
00273db8
There are four empty spaces here for creatures. Can these be made active?
|
|
RoseKavalier
Admirable
Supreme Hero
|
posted December 08, 2017 12:03 AM |
|
|
They're not entirely absent from game, they are filler spots for Conflux (since the 4 elementals were originally neutral) and NWC didn't bother to make the ordering nice. For example if you look at cprsmall.def you can see some "unused" sprites - I forget the exact frame number.
I suppose with a lot of work these could be made into something useful... but at this point you may as well just use WoG since all the required tools are already done.
For buildings, I don't know yet and I'm a bit tight on time for the week.
What I would try: use Olly to search for names. The game has to load these text files at some point and the file names are hard-coded.
Search for building in ASCII...
Then search for address of building.txt
This function loads building.txt and then will assign the necessary data in the area which, I presume, stores all data related to these buildings.
If that leads to a dead end, then there are other options to explore.
____________
My Let's Plays: Metataxer's Revenge - The Empire of The World 2
|
|
Nmesa
Hired Hero
|
posted December 08, 2017 05:13 AM |
|
Edited by Nmesa at 05:24, 08 Dec 2017.
|
In this thread i find a post about changing Luna's bonus from her spell to 50% or (3% x lvl) and i've got a crazy idea to make a static percent bonus to all specialists.
As i understand, it begins with Luna at E6358 (00 = 100%). E635a is probably Cielle (01=50%), 06 is (x lvl) formulae for other heroes (i guess its all at once - spells, skills, creatures). Is there some kinda list with offsets for each hero?
And does the creature spec. work the same way? (00 - x2 bonus to initial stats and etc).
|
|
RoseKavalier
Admirable
Supreme Hero
|
posted December 08, 2017 07:21 AM |
|
|
Nmesa said: In this thread i find a post about changing Luna's bonus from her spell to 50% or (3% x lvl) and i've got a crazy idea to make a static percent bonus to all specialists.
As i understand, it begins with Luna at E6358 (00 = 100%). E635a is probably Cielle (01=50%), 06 is (x lvl) formulae for other heroes (i guess its all at once - spells, skills, creatures). Is there some kinda list with offsets for each hero?
And does the creature spec. work the same way? (00 - x2 bonus to initial stats and etc).
Luna/Ciele/... spell specialties are not based on hero, but on spell_id.
It's essentially switch(spell_id) {} that ranges from Firewall (0x0D) to Slayer (0x37). Spells with ID below or above this range do not have specialties.
So @E6358h you have the outcome for Firewall specialty which is normally exit '00' which doubles damage.
@E6359h - Earthquake [06] - (no bonus in this case)
...
and so on, each successive bit represents one spell.
Exits:
[00] - + 100%
[01] - + 50%
[02] - static bonus (Bloodlust, Precision, ...)
[03] - static bonus (Disrupting Ray)
[04] - static bonus (Fortnue)
[05] - static bonus (Slayer)
[06] - + 3% per level bonus type ~ can result in no bonus.
The hex edit I had proposed earlier just swapped the exits around.
~~
Creature specialties are based on creature level, except the static bonuses like Mutare/Kilgor.
____________
My Let's Plays: Metataxer's Revenge - The Empire of The World 2
|
|
Nmesa
Hired Hero
|
posted December 08, 2017 07:32 AM |
|
Edited by Nmesa at 08:20, 08 Dec 2017.
|
RoseKavalier said:
[00] - + 100%
[01] - + 50%
[02] - static bonus (Bloodlust, Precision, ...)
[03] - static bonus (Disrupting Ray)
[04] - static bonus (Fortnue)
[05] - static bonus (Slayer)
[06] - + 3% per level bonus type ~ can result in no bonus.
Thanks, now it make sense, especially about spell order. I guess each creature has such exits for specialisation as well?
RoseKavalier said:
from Firewall (0x0D) to Slayer (0x37)
Strange, because there is no space left for Hypnotize.
|
|
planetavril
Famous Hero
|
posted December 08, 2017 09:40 AM |
|
|
where to put the plugins for hota ?, in which folder?
|
|
Nmesa
Hired Hero
|
posted December 08, 2017 09:50 AM |
|
Edited by Nmesa at 09:51, 08 Dec 2017.
|
planetavril said: where to put the plugins for hota ?, in which folder?
Heroes of Might and Magic 3 _HD3_Data Packs Folder with plugin in it
|
|
RoseKavalier
Admirable
Supreme Hero
|
posted December 08, 2017 03:09 PM |
|
|
Nmesa said:
Thanks, now it make sense, especially about spell order. I guess each creature has such exits for specialisation as well?
I cannot recall right now, I can check in a few days. I would think no since there are not many cases to be handled, more likely some if () statements.
Nmesa said:
Strange, because there is no space left for Hypnotize.
That just means it is elsewhere. Considering the spell works differently (calculations are done before animation), it's not surprising.
____________
My Let's Plays: Metataxer's Revenge - The Empire of The World 2
|
|
Nmesa
Hired Hero
|
posted December 10, 2017 05:50 AM |
|
Edited by Nmesa at 09:32, 15 Dec 2017.
|
There are the offsets for hero's specialties:
_________________
Orrin 278420 (Archery)
Valeska 278448 (Archers)
Edric 278470 (Griffins)
Sylvia 278498 (Navigation)
Haart 2784c0 (Estates)
Sorsha 2784e8 (Swordsmans)
Christian 278510 (Ballista)
Tyris 278538 (Cavaliers)
Rion 278560 (First Aid)
Adela 278588 (Bless)
Cuthbert 2785b0 (Weakness)
Adelaide 2785d8 (Frost Ring)
Ingham 278600 (Monks)
Sanya 278628 (Eagle Eye)
Loynis 278650 (Prayer)
Caitlin 278678 (Gold)
_________________
Mephala 2786a0 (Armorer)
Ufretin 2786c8 (Dwarves)
Jenova 2786f0 (Gold)
Ryland 278718 (Dendroids)
Thorgrim 278740 (Resistance)
Ivor 278768 (Elves)
Clancy 278790 (Unicorns)
Kyrre 2787b8 (Logistics)
Coronius 2787å0 (Slayer)
Uland 278808 (Cure)
Elleshar 278830 (Intelligence)
Gem 278858 (First Aid)
Malcom 278880 (Eagle Eye)
Melodia 2788a8 (Fortune)
Alagar 2788d0 (Ice Bolt)
Aeris 2788f8 (Pegasus)
_________________
Piquedram 278920 (Gargoyles)
Thane 278948 (Genies)
Josephine 278970 (Golems)
Neela 278998 (Armorer)
Torosar 2789c0 (Ballista)
Fafner 2789å8 (Nagas)
Rissa 278a10 (Mercury)
Iona 278a38 (Genies)
Astral 278a60 (Hypnotise)
Halon 278a88 (Misticism)
Serena 278ab0 (Eagle Eye)
Daremyth 278ad8 (Fortune)
Theodorus 278b00 (Mages)
Solmyr 278b28 (Chain Lightning)
Cyra 278b50 (Haste)
Aine 278b78 (Gold)
_________________
Fiona 278ba0 (Hounds)
Rashka 278bc8 (Efreets)
Marius 278bf0 (Demons)
Ignatius 278c18 (Imps)
Octavia 278c40 (Gold)
Calh 278c68 (Gogs)
Pyre 278c90 (Ballista)
Nimus 278cb8 (Pit Fiends)
Ayden 278ce0 (Intelligence)
Xyron 278d08 (Inferno)
Axsis 278d30 (Misticism)
Olema 278d58 (Weakness)
Calid 278d80 (Sulfur)
Ash 278da8 (Bloodlust)
Zydar 278dd0 (Sorcery)
Xarfax 278df8 (Fireball)
_________________
Straker 278å20 (Zombies)
Vokial 278å48 (Vampires)
Moandor 278å70 (Liches)
Charna 278å98 (Wights)
Tamika 278åñ0 (Death Knights)
Isra 278åå8 (Necromancy)
Clavius 278f10 (Gold)
Galthran 278f38 (Skeletons)
Septienna 278f60 (Death Ripple)
Aislinn 278f88 (Meteor Shower)
Sandro 278fb0 (Sorcery)
Nimbus 278fd8 (Eagle Eye)
Thant 279000 (Animate Dead)
Xsi 279028 (Stone Skin)
Vidomina 279050 (Necromancy)
Nagash 279078 (Gold)
_________________
Lorelei 2790a0 (Harpies)
Arlach 2790c8 (Ballista)
Dace 2790f0 (Minotaurs)
Ajit 279118 (Beholders)
Damacon 279140 (Gold)
Gunnar 279168 (Logistics)
Synca 279190 (Manticores)
Shakti 2791b8 (Troglodites)
Alamar 2791å0 (Resurrection)
Jaegar 279208 (Misticism)
Malekith 279230 (Sorcery)
Jeddite 279258 (Resurrection)
Geon 279280 (Eagle Eye)
Deemer 2792a8 (Meteor Shower)
Sephinroth 2792d0 (Crystals)
Darkstorn 2792f8 (Stone Skin)
_________________
Yog 279320 (Cyclopes)
Gurnisson 279348 (Ballista)
Jabarkas 279370 (Orcs)
Shiva 279398 (Rocs)
Gretchin 2793c0 (Goblins)
Krellion 2793å8 (Ogres)
Crag Hack 279410 (Offence)
Tyraxor 279438 (Raiders)
Gird 279460 (Sorcery)
Vey 279488 (Ogres)
Dessa 2794b0 (Logistics)
Terek 2794d8 (Haste)
Zubin 279500 (Precision)
Gundula 279528 (Offence)
Oris 279550 (Eagle Eye)
Saurug 279578 (Gems)
_________________
Bron 2795a0 (Basiliscs)
Drakon 2795c8 (Gnolls)
Wystan 2795f0 (Lizardmen)
Tazar 279618 (Armorer)
Alkin 279640 (Gorgons)
Korbac 279668 (Serpent Flies)
Gerwulf 279690 (Ballista)
Broghild 2796b8 (Wyverns)
Mirlanda 2796å0 (Weakness)
Rosic 279708 (Misticism)
Voy 279730 (Navigation)
Verdish 279758 (First Aid)
Merist 279780 (Stone Skin)
Styg 2797a8 (Sorcery)
Andra 2797d0 (Intelligence)
Tiva 2797f8 (Eagle Eye)
_________________
Pasis 279820 (Magic Elementals)
Thunar 279848 (Earth Elementals)
Ignissa 279870 (Fire Elementals)
Lacus 279898 (Water Elementals)
Monere 2798c0 (Magic Elementals)
Erdamon 2798å8 (Earth Elementals)
Fiur 279910 (Fire Elementals)
Calt 279938 (Water Elementals)
Luna 279960 (Fire Wall)
Brissa 279988 (Haste)
Ciele 2799b0 (Magic Arrow)
Labetha 2799d8 (Stone Skin)
Inteus 279a00 (Bloodlust)
Aenain 279a28 (Disrupting Ray)
Gelare 279a50 (Gold)
Grindan 279a78 (Gold)
_________________
Sir Mullich 279aa0 (+2 Speed)
Adrianne 279ac8 (Expert Fire Magic)
Catherine 279af0 (Swordsman)
Dracon 279b18 (Enchanters)
Gelu 279b40 (Sharpshooters)
Kilgor 279b68 (Behemoths)
Lord Haart 279b90 (Dread Knights)
Mutare 279bb8 (Dragons)
Roland 279be0 (Swordsman)
M Drake 279c08 (Dragons)
Boragus 279c30 (Ogres)
Xeron 279c58 (Devils)
_________________
28h byte per hero. First "field" checks group:
0 for skills. Next one is the number of skill ( 01 - Archery).
1 for creatures (+1 speed and x lvl formulae). Next one is the number of creature (92 - ballista).
2 for resources. Next one is the type of resource (2 - sulfur, 4 - crystal, 6 - gold).
3 for spells. Next one is the number of the spell (29 - Bless).
4 for static bonus to creature (Kilgore, Evil Haart): number of the creature, attack, defence, damage. Sadly, there is no way to affect speed.
5 for Sir Mullich (the next value 02 doesnt affect speed, so its somewhere else).
6 for Creature Training (Jelu and Dracon). You can choose initial creatures (basic, upgraded counts as well) and creature after training.
7 for Mutare, since her bonus affects more than 2 creatures.
ffffff for Adrienne since she doesnt have actual specialty.
_________________
Never thought it was so easy to change them with hex editing. It is possible to create Scouting specialty instead of Navigation or swap them between heroes (Valeska - griffins, Edric - archers). The only drawback is spec icons, which stays the same.
_________________
Edited: By using DefViewer and DefMaker its possible to recreate UN44.def (compilation of .bmp images for specialty's icons) from H3sprite.lod.
Thats just incredible news for me - even withous WoG there is way to change specialties or even create a new one, for example for Lightning Bolt or Destroy Undead, with 100%/50% or level-based bonus.
|
|
FfuzzyLogik
Known Hero
|
posted December 10, 2017 11:42 PM |
|
|
Adrienne has effectively "no speciality" in heroes secondary skills she has expert fire magic at start...
She has some icon for her speciality but it adds nothing. I intend to change this and make a new "special" hero with an other speciality.
But if you find this kind of "speciality" nice you can change the heroes basic skills and their starting troops.
Notice that number of them are not stored here but in a text file (you can also change).
Someone already asked about Mullich's speed value on this thread :
http://heroescommunity.com/viewthread.php3?TID=42152&pagenumber=9
On page 9 this was discussed so you can find where to change it.
____________
FfuzzyLogik.
If I'm crazy ? Sure, because its madness to be normal...
|
|
peter1985
Hired Hero
|
posted December 10, 2017 11:53 PM |
|
|
I also tried to change the heroes' specialty, but I did not succeed!
|
|
Nmesa
Hired Hero
|
posted December 11, 2017 03:49 AM |
|
Edited by Nmesa at 04:02, 11 Dec 2017.
|
I dont' understand one thing - Xeron is the only hero who has a static bonus +4 Attack, +2 Defence and+1 Speed. But there is no value, affecting it, just 04-36-04-02-00...
|
|
Baronus
Legendary Hero
|
posted December 11, 2017 07:17 PM |
|
Edited by Baronus at 20:23, 19 Dec 2017.
|
Baronus
How to get campaign heroes in all maps:
Campaign heroes
Rosecavalier:
Hex edit of HD exe to make all heroes available:
C4B3Ch = FF
...
Thats better solution than editing all map...
_______
Edit. Its: 0C4B3C to FF
And works but you cant get hero in start menu. Only random tawern and random start generation.
|
|
phoenix4ever
Legendary Hero
Heroes is love, Heroes is life
|
posted December 18, 2017 04:22 PM |
|
|
I was messing around with the Planeswalkers static creature bonuses and since I found these static bonuses pretty boring, I changed them to bonus per level, like normal creature specialists and it works well.
I also did this for Kilgor and Xeron, but I am not sure about Mutare (and Mutare Drake) She gets a static bonus to ALL dragons, would it be possible to give her a bonus per level like the other creature specialists? (She has speciality bonus 07 which is exclusive to her, 04 is static bonus to a single creature and 01 is creature bonus per level.)
|
|
RoseKavalier
Admirable
Supreme Hero
|
posted December 19, 2017 08:07 PM |
|
|
Of course, but more work. Since Mutare's bonus is not tied to a single creature, it means that bonus is applied differently and so you will need a plugin to get that effect.
____________
My Let's Plays: Metataxer's Revenge - The Empire of The World 2
|
|
phoenix4ever
Legendary Hero
Heroes is love, Heroes is life
|
posted December 20, 2017 12:07 AM |
|
|
Hmm okay, plug-ins are not my speciality, so I guess I'll just leave her as she is.
|
|
Fearun
Tavern Dweller
|
posted December 20, 2017 04:56 PM |
|
|
Plug-in // C++
It's so F*cking Hard to create a new Plug-in
RoseKavalier, If you steal there, I tried to do something with C++ to change DIPLOMACY skill, but all explanation are in russian, Even when I translate in french, it still remains very hard to understand because the translation isn't perfect.
I create a new project called DIPLOMACY, ok, good, and I've got this:
#include "patcher_x86.hpp"
Patcher* _P;
PatcherInstance* _PI;
static _bool_ plugin_On = 0;
int __stdcall testHook(LoHook* h, HookContext* c)
{
c->eax *= 2;
return EXEC_DEFAULT;
}
BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved)
{
switch ( ul_reason_for_call )
{
case DLL_PROCESS_ATTACH:
if ( !plugin_On )
{
plugin_On = 1;
_P = GetPatcher();
_PI = _P->CreateInstance("HD.Plugin.TestPlugin");
_PI->WriteLoHook(0x44467E, testHook);
}
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
----------
Now, the probleme is...
Where do I put your following instructions: ????
0x4A6C88
c->esi = max(1, (c->esi) >> 2); // integer division by 4, minimum value 1
return EXEC_DEFAULT;
0x4A6EE8
c->edi = max(1, (c->edi) >> 2); // integer division by 4, minimum value 1
return EXEC_DEFAULT;
0x4A73DC
c->ebx += (c->ebx) >> 1; // artificially add 50% to creature count for power calculations
return EXEC_DEFAULT;
---------
HELP
|
|
RoseKavalier
Admirable
Supreme Hero
|
posted December 20, 2017 07:00 PM |
|
|
Create LoHook for each of them at the given address, same thing as you did for testHook. (probably best to use an informative name for each function so you know what you are looking at later on)
int __stdcall testHook2(LoHook* h, HookContext* c)
{
c->esi = max(1, (c->esi) >> 2);
return EXEC_DEFAULT;
}
int __stdcall testHook3(LoHook* h, HookContext* c)
{
c->edi = max(1, (c->edi) >> 2);
return EXEC_DEFAULT;
}
int __stdcall testHook4(LoHook* h, HookContext* c)
{
c->ebx += (c->ebx) >> 1;
return EXEC_DEFAULT;
}
and in DllMain add:
_PI->WriteLoHook(0x4A6C88, testHook2);
_PI->WriteLoHook(0x4A6EE8, testHook3);
_PI->WriteLoHook(0x4A73DC, testHook4);
The first plugin is hardest, don't give up
____________
My Let's Plays: Metataxer's Revenge - The Empire of The World 2
|
|
|
|