Skip to content

Commit 4cd428d

Browse files
committed
Merge branch 'master' of https://github.com/sfall-team/sfall into better-docs
2 parents 017df70 + 249adde commit 4cd428d

1 file changed

Lines changed: 12 additions & 17 deletions

File tree

sfall/Modules/Unarmed.cpp

Lines changed: 12 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -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

7171
public:
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

229229
Hits unarmed;
@@ -260,6 +260,7 @@ static void __fastcall check_unarmed_left_slot(long skillLevel) {
260260
static __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

281284
static __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-
365359
static 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

Comments
 (0)