With HiHook it is more complicated to get all relevant information, monster count gets stored at [EBP - 10h] from 0x4170E8.
You could also try LoHook near 0x41722A (not ideal location) and directly affect ECX which is
Charisma in AlexSpl's post.
ESI values after 0x417260 if needed:
Interaction Type0 - Run
1 - Fight
2 - Join free
3 - Join $$$
There is almost a good candidate in HiHook (__thiscall) on 0x417295, problem here is Hero structure is not available, so you'd be stuck with a global variable.
[
EDIT or simply get hero structure from _Player_ like the game does around 0x4170EB...]
Dlg_ForMonsterRMHint(_MonsterDlg_ *dlg, BOOL vision, int monsterID, int monsterCount, int interactionType, int joinCost);
Some time back I was asked how to nerf Diplomacy a bit, could give some ideas.
1- change army count for free joiners:
0x4A6C88
c->esi = max(1, (c->esi) >> 2); // integer division by 4, minimum value 1
return EXEC_DEFAULT;
2- change army count for joiners costing gold:
0x4A6EE8
c->edi = max(1, (c->edi) >> 2); // integer division by 4, minimum value 1
return EXEC_DEFAULT;
Also you could make neutrals think they are a larger group than in reality so they will not join as easily:
0x4A73DC
c->ebx += (c->ebx) >> 1; // artificially add 50% to creature count for power calculations
return EXEC_DEFAULT;