@@ -66,7 +66,7 @@ class Hits {
6666 HitsData hit[Hits::count];
6767
6868 long skillLevel; // SKILL_UNARMED_COMBAT
69- long psStat [fo::Stat::STAT_base_count];
69+ long pcStat [fo::Stat::STAT_base_count];
7070
7171public:
7272 class Types {
@@ -218,12 +218,12 @@ class Hits {
218218 void GetDudeStats (long sLevel ) {
219219 skillLevel = sLevel ;
220220 for (size_t stat = 0 ; stat < fo::Stat::STAT_base_count; stat++) {
221- psStat [stat] = fo::func::stat_level (fo::var::obj_dude, stat);
221+ pcStat [stat] = fo::func::stat_level (fo::var::obj_dude, stat);
222222 }
223223 }
224224
225225 long SkillLevel () { return skillLevel; }
226- long DudeStat (long stat) { return psStat [stat]; }
226+ long DudeStat (long stat) { return pcStat [stat]; }
227227};
228228
229229Hits unarmed;
@@ -260,6 +260,7 @@ static void __fastcall check_unarmed_left_slot(long skillLevel) {
260260static __declspec (naked) void intface_update_items_hack_punch() {
261261 __asm {
262262 push 0x45F1D7 ;
263+ mov ecx, eax; // unarmed skill level
263264 jmp check_unarmed_left_slot;
264265 }
265266}
@@ -273,14 +274,17 @@ static fo::AttackType GetKickingHit(bool isPrimary) {
273274}
274275
275276// Kick hits
276- static void check_unarmed_right_slot () {
277+ static void __fastcall check_unarmed_right_slot (long skillLevel) {
278+ unarmed.GetDudeStats (skillLevel);
279+
277280 fo::var::itemButtonItems[fo::HandSlot::Right].primaryAttack = GetKickingHit (true );
278281 fo::var::itemButtonItems[fo::HandSlot::Right].secondaryAttack = GetKickingHit (false );
279282}
280283
281284static __declspec (naked) void intface_update_items_hack_kick() {
282285 __asm {
283286 push 0x45F380 ;
287+ mov ecx, eax; // unarmed skill level
284288 jmp check_unarmed_right_slot;
285289 }
286290}
@@ -352,16 +356,6 @@ const char* Unarmed::GetName(fo::AttackType hit) {
352356
353357// //////////////////////////////////////////////////////////////////////////////
354358
355- static fo::AttackType GetPunchingHit () {
356- unarmed.GetDudeStats (fo::func::skill_level (fo::var::obj_dude, fo::Skill::SKILL_UNARMED_COMBAT ));
357- return GetPunchingHit (true );
358- }
359-
360- static fo::AttackType GetKickingHit () {
361- // unarmed.GetDudeStats(fo::func::skill_level(fo::var::obj_dude, fo::Skill::SKILL_UNARMED_COMBAT));
362- return GetKickingHit (true );
363- }
364-
365359static void SlotsStoreCurrentHitMode () {
366360 slotHitData[fo::HandSlot::Left].primaryHit = fo::util::GetHandSlotPrimaryAttack (fo::HandSlot::Left);
367361 slotHitData[fo::HandSlot::Left].secondaryHit = fo::util::GetHandSlotSecondaryAttack (fo::HandSlot::Left);
@@ -387,7 +381,8 @@ fo::AttackType Unarmed::GetStoredHitMode(fo::HandSlot slot) {
387381 }
388382
389383 if (hit < fo::AttackType::ATKTYPE_STRONGPUNCH && hit != fo::AttackType::ATKTYPE_PUNCH && hit != fo::AttackType::ATKTYPE_KICK ) {
390- hit = (slot == fo::HandSlot::Left) ? GetPunchingHit () : GetKickingHit (); // get Primary
384+ unarmed.GetDudeStats (fo::func::skill_level (fo::var::obj_dude, fo::Skill::SKILL_UNARMED_COMBAT ));
385+ hit = (slot == fo::HandSlot::Left) ? GetPunchingHit (true ) : GetKickingHit (true ); // get Primary
391386
392387 slotHitData[slot].primaryHit = hit;
393388 slotHitData[slot].mode = fo::HandSlotMode::Primary;
@@ -470,8 +465,8 @@ void Unarmed::init() {
470465 }
471466
472467 // Only if a custom file is used, otherwise use the engine function code
473- MakeJump (0x45F0DF , intface_update_items_hack_punch);
474- MakeJump (0x45F278 , intface_update_items_hack_kick);
468+ MakeJump (0x45F0D8 , intface_update_items_hack_punch);
469+ MakeJump (0x45F27D , intface_update_items_hack_kick);
475470 }
476471 }
477472 unarmed.Sort ();
0 commit comments