@sutebenukun: Hey, glad to see you enjoy it and want to personalize it

Unfortunatly, it is not convenient to modify the spell effects, and you can't go very far. It's in the CIL Code, more precisely the class "btl_calc".
Hades Workshop's CIL Code is quite buggy: it sometimes crashes if the edited methods are too big. It seems that you can't edit the main method related to spell effects ("CalcMain") without crash. You can however edit the sub-methods and put the HP cost in them.
For instance, the spell effect "Physical Strike" use the sub-method "CalcSub_203", which setups the damage for its target. What you can do is adding a script there that removes HP to the caster only if the caster is Steiner.
The C# script for removing HP to the caster is something like this:
Code: [Select]
Code:
// "flag 1" states that the spell will modify the HP (of "ct" = caster, here). Setting both flags 1 and 2 can be used for healingv.ct_flags |= 1;// The damage is based on caster's max hp. The operation ">> 3" is equivalent to "/ 8"v.ct_hp = (short)(v.caster.max.hp >> 3);
But you can't write C# scripts with HW (that's where the Memoria tool is more convenient), so you need to use a CIL code counterpart:
Code: [Select]
Code:
ldarg.0dupldfld 0x40007F6 // CALC_VAR::ct_flagsldc.i4.1orconv.u1stfld 0x40007F6 // CALC_VAR::ct_flagsldarg.0ldarg.0ldfld 0x40007EC // CALC_VAR::casterldfld 0x4000229 // BTL_DATA::maxldfld 0x4000809 // POINTS::hpldc.i4.3shrconv.i2stfld 0x40007F8 // CALC_VAR::ct_hp
"ldarg.0" is the object of type CALC_VAR that contains all the information about the damage calculation. It was called "v" in the C# above.
Now, if I am telling you about C# code, it's because it is much more easy to read (even though it's still a programing language), and you can see here the whole class of "btl_calc" in C#:
https://www.dropbox.com/s/2k2mkezqx0loe4i/Source_BtlCalc.cs?dl=0
I added a few comments and renamed the methods "CalcSub" with less opaque names there.
The CIL script above can be used to remove HP to the caster in one of those "CalcSub" method. Verify that the hexadecimal IDs are the same with your game, which should be the case if it's up-to-date. For instance, the non-edited method "CalcSub_203" should start like this:
Code: [Select]
Code:
ldarg.0ldfld 0x40007F0 // CALC_VAR::at_powldarg.0ldfld 0x40007F1 // CALC_VAR::df_pow
If the 0x..... numbers are different, you need to update your game beforehand (in Steam, "FF9 -> properties -> Verify the integrity of local game file").
Now, we need to add the information that only Steiner's attack should remove HP to him (he's not the only one to cast spells using that "CalcSub_203" method). You can do it like that:
Code: [Select]
Code:
if (v.caster.bi.slot_no == 3) { // Do you stuff}
In CIL:
Code: [Select]
Code:
IL_POS0: ldarg.0IL_POS1: ldfld 0x40007EC // CALC_VAR::casterIL_POS2: ldfld 0x400022D // BTL_DATA::biIL_POS3: ldfld 0x4000272 // BTL_INFO::slot_noIL_POS4: ldc.i4.3IL_POS5: bne.un IL_POSEND// Do your stuffIL_POSEND: // After the "if" block
If we put that together at the start of the method "CalcSub_203", we end up with a method like this:
Code: [Select]
Code:
ldarg.0ldfld 0x40007EC // CALC_VAR::casterldfld 0x400022D // BTL_DATA::bildfld 0x4000272 // BTL_INFO::slot_noldc.i4.3bne.un IL_003Eldarg.0dupldfld 0x40007F6 // CALC_VAR::ct_flagsldc.i4.1orconv.u1stfld 0x40007F6 // CALC_VAR::ct_flagsldarg.0ldarg.0ldfld 0x40007EC // CALC_VAR::casterldfld 0x4000229 // BTL_DATA::maxldfld 0x4000809 // POINTS::hpldc.i4.3shrconv.i2stfld 0x40007F8 // CALC_VAR::ct_hpldarg.0ldfld 0x40007F0 // CALC_VAR::at_powldarg.0ldfld 0x40007F1 // CALC_VAR::df_powsubdupstloc.1ldc.i4.0bgt IL_0055ldc.i4.1stloc.1ldarg.0dupldfld 0x40007F7 // CALC_VAR::tg_flagsldc.i4.1orconv.u1stfld 0x40007F7 // CALC_VAR::tg_flagsldarg.0ldfld 0x40007F3 // CALC_VAR::at_numldc.i4.1bge IL_0077ldarg.0ldc.i4.1stfld 0x40007F3 // CALC_VAR::at_numldloc.1ldarg.0ldfld 0x40007F3 // CALC_VAR::at_nummulstloc.0ldarg.0ldfld 0x40007EE // CALC_VAR::cmdldfld 0x400028B // CMD_DATA::infoldfld 0x4000293 // SELECT_INFO::short_summonbrfalse IL_009Bldloc.0ldc.i4.2mulldc.i4.3divstloc.0ldloc.0ldc.i4 9999ble IL_00ACldc.i4 9999stloc.0ldarg.0ldfld 0x40007F5 // CALC_VAR::flagsldc.i4.8andbrfalse IL_00C8ldarg.0dupldfld 0x40007F7 // CALC_VAR::tg_flagsldc.i4.2orconv.u1stfld 0x40007F7 // CALC_VAR::tg_flagsldarg.0ldloc.0conv.i2stfld 0x40007F9 // CALC_VAR::tg_hpret
(If you copy-paste it, verify that the "IL_POS" numbers are correct: the program tends to update them automatically and not always the right way.)
I tested and it worked wonder for me.
Now you need to do the same thing for other "CalcSub" methods so that it doesn't apply only to damaging spells.
Modifying the engine is the most tedious feature of HW, sorry. I hope it helped you though ^^"
@dclem and Lein: Maybe you can just stop arguing? You both said that you were over with the other and kept posting just to have the final word... that's ridiculous.
Lein, as it was already said, you can't expect everyone to have the same priorities as you. Besides, modding is something that requires time.
I told you that increasing the encounter rate back to normal means understanding what was changed in the Steam version. Those figures that you increased in the fields' scripts are exactly the same between Steam and PSX: if you want to have an encounter rate consistent and balanced as in PSX, that's not what needs to be fixed. If you want a quick and dirty fix, then you're done.
And yes, keeping repeating a few bullets is not going to make those go faster.
No comment about the trendy "autist" insult... That is a very dumb one.