mirror of
https://github.com/sfall-team/sfall.git
synced 2026-07-27 16:52:34 -07:00
Some code edits regarding BodyPart defines
This commit is contained in:
+1
-1
@@ -566,7 +566,7 @@ void Combat_Init() {
|
||||
// Remove the dependency of Body_Torso from Body_Uncalled
|
||||
SafeWrite8(0x423830, CODETYPE_JumpShort); // compute_attack_
|
||||
BlockCall(0x42303F); // block Body_Torso check (combat_attack_)
|
||||
SafeWrite8(0x42A713, 7); // Body_Uncalled > Body_Groin (ai_called_shot_)
|
||||
SafeWrite8(0x42A713, BODY_Groin); // Body_Uncalled > Body_Groin (ai_called_shot_)
|
||||
SafeWriteBatch<BYTE>(BODY_Uncalled, bodypartAddr); // replace Body_Torso with Body_Uncalled
|
||||
const DWORD pickHitBodypartAddr[] = {0x429E8C, 0x429ECC, 0x429F09};
|
||||
HookCalls(ai_pick_hit_mode_hook_bodypart, pickHitBodypartAddr);
|
||||
|
||||
+93
-105
@@ -135,18 +135,6 @@ static int CritTableLoad() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
enum BodyPart {
|
||||
Head,
|
||||
ArmLeft,
|
||||
ArmRight,
|
||||
Torso,
|
||||
LegRight,
|
||||
LegLeft,
|
||||
Eyes,
|
||||
Groin,
|
||||
Uncalled
|
||||
};
|
||||
|
||||
enum CritParam {
|
||||
DmgMult,
|
||||
Flags,
|
||||
@@ -167,139 +155,139 @@ static void CriticalTableOverride() {
|
||||
|
||||
if (mode == 2 || mode == 3) { // bug fixes
|
||||
// Children
|
||||
SetEntry(2, LegRight, 1, FlagsFail, 0);
|
||||
SetEntry(2, LegRight, 1, Message, 5216);
|
||||
SetEntry(2, LegRight, 1, MsgFail, 5000);
|
||||
SetEntry(2, BODY_LegRight, 1, FlagsFail, 0);
|
||||
SetEntry(2, BODY_LegRight, 1, Message, 5216);
|
||||
SetEntry(2, BODY_LegRight, 1, MsgFail, 5000);
|
||||
|
||||
SetEntry(2, LegRight, 2, FlagsFail, 0);
|
||||
SetEntry(2, LegRight, 2, Message, 5216);
|
||||
SetEntry(2, LegRight, 2, MsgFail, 5000);
|
||||
SetEntry(2, BODY_LegRight, 2, FlagsFail, 0);
|
||||
SetEntry(2, BODY_LegRight, 2, Message, 5216);
|
||||
SetEntry(2, BODY_LegRight, 2, MsgFail, 5000);
|
||||
|
||||
SetEntry(2, LegLeft, 1, FlagsFail, 0);
|
||||
SetEntry(2, LegLeft, 1, Message, 5216);
|
||||
SetEntry(2, LegLeft, 1, MsgFail, 5000);
|
||||
SetEntry(2, BODY_LegLeft, 1, FlagsFail, 0);
|
||||
SetEntry(2, BODY_LegLeft, 1, Message, 5216);
|
||||
SetEntry(2, BODY_LegLeft, 1, MsgFail, 5000);
|
||||
|
||||
SetEntry(2, LegLeft, 2, FlagsFail, 0);
|
||||
SetEntry(2, LegLeft, 2, Message, 5216);
|
||||
SetEntry(2, LegLeft, 2, MsgFail, 5000);
|
||||
SetEntry(2, BODY_LegLeft, 2, FlagsFail, 0);
|
||||
SetEntry(2, BODY_LegLeft, 2, Message, 5216);
|
||||
SetEntry(2, BODY_LegLeft, 2, MsgFail, 5000);
|
||||
|
||||
// Super Mutants
|
||||
SetEntry(3, LegLeft, 1, MsgFail, 5306);
|
||||
SetEntry(3, BODY_LegLeft, 1, MsgFail, 5306);
|
||||
|
||||
// Ghouls
|
||||
SetEntry(4, Head, 4, StatCheck, -1);
|
||||
SetEntry(4, BODY_Head, 4, StatCheck, -1);
|
||||
|
||||
// Brahmin
|
||||
SetEntry(5, Head, 4, StatCheck, -1);
|
||||
SetEntry(5, BODY_Head, 4, StatCheck, -1);
|
||||
|
||||
// Radscorpions
|
||||
SetEntry(6, LegRight, 1, FlagsFail, DAM_KNOCKED_DOWN);
|
||||
SetEntry(6, BODY_LegRight, 1, FlagsFail, DAM_KNOCKED_DOWN);
|
||||
|
||||
SetEntry(6, LegLeft, 1, FlagsFail, DAM_KNOCKED_DOWN);
|
||||
SetEntry(6, LegLeft, 2, MsgFail, 5608);
|
||||
SetEntry(6, BODY_LegLeft, 1, FlagsFail, DAM_KNOCKED_DOWN);
|
||||
SetEntry(6, BODY_LegLeft, 2, MsgFail, 5608);
|
||||
|
||||
// Centaurs
|
||||
SetEntry(9, Torso, 3, FlagsFail, DAM_KNOCKED_DOWN);
|
||||
SetEntry(9, BODY_Torso, 3, FlagsFail, DAM_KNOCKED_DOWN);
|
||||
|
||||
// Deathclaws
|
||||
SetEntry(13, LegLeft, 1, FlagsFail, DAM_CRIP_LEG_LEFT);
|
||||
SetEntry(13, LegLeft, 2, FlagsFail, DAM_CRIP_LEG_LEFT);
|
||||
SetEntry(13, LegLeft, 3, FlagsFail, DAM_CRIP_LEG_LEFT);
|
||||
SetEntry(13, LegLeft, 4, FlagsFail, DAM_CRIP_LEG_LEFT);
|
||||
SetEntry(13, LegLeft, 5, FlagsFail, DAM_CRIP_LEG_LEFT);
|
||||
SetEntry(13, BODY_LegLeft, 1, FlagsFail, DAM_CRIP_LEG_LEFT);
|
||||
SetEntry(13, BODY_LegLeft, 2, FlagsFail, DAM_CRIP_LEG_LEFT);
|
||||
SetEntry(13, BODY_LegLeft, 3, FlagsFail, DAM_CRIP_LEG_LEFT);
|
||||
SetEntry(13, BODY_LegLeft, 4, FlagsFail, DAM_CRIP_LEG_LEFT);
|
||||
SetEntry(13, BODY_LegLeft, 5, FlagsFail, DAM_CRIP_LEG_LEFT);
|
||||
|
||||
// Big Bad Boss
|
||||
SetEntry(18, Head, 0, Message, 5001);
|
||||
SetEntry(18, Head, 1, Message, 5001);
|
||||
SetEntry(18, Head, 2, Message, 5001);
|
||||
SetEntry(18, Head, 3, Message, 7105);
|
||||
SetEntry(18, Head, 4, Message, 7101);
|
||||
SetEntry(18, Head, 4, MsgFail, 7104);
|
||||
SetEntry(18, Head, 5, Message, 7101);
|
||||
SetEntry(18, BODY_Head, 0, Message, 5001);
|
||||
SetEntry(18, BODY_Head, 1, Message, 5001);
|
||||
SetEntry(18, BODY_Head, 2, Message, 5001);
|
||||
SetEntry(18, BODY_Head, 3, Message, 7105);
|
||||
SetEntry(18, BODY_Head, 4, Message, 7101);
|
||||
SetEntry(18, BODY_Head, 4, MsgFail, 7104);
|
||||
SetEntry(18, BODY_Head, 5, Message, 7101);
|
||||
|
||||
SetEntry(18, ArmLeft, 0, Message, 5008);
|
||||
SetEntry(18, ArmLeft, 1, Message, 5008);
|
||||
SetEntry(18, ArmLeft, 2, Message, 5009);
|
||||
SetEntry(18, ArmLeft, 3, Message, 5009);
|
||||
SetEntry(18, ArmLeft, 4, Message, 7102);
|
||||
SetEntry(18, ArmLeft, 5, Message, 7102);
|
||||
SetEntry(18, BODY_ArmLeft, 0, Message, 5008);
|
||||
SetEntry(18, BODY_ArmLeft, 1, Message, 5008);
|
||||
SetEntry(18, BODY_ArmLeft, 2, Message, 5009);
|
||||
SetEntry(18, BODY_ArmLeft, 3, Message, 5009);
|
||||
SetEntry(18, BODY_ArmLeft, 4, Message, 7102);
|
||||
SetEntry(18, BODY_ArmLeft, 5, Message, 7102);
|
||||
|
||||
SetEntry(18, ArmRight, 0, Message, 5008);
|
||||
SetEntry(18, ArmRight, 1, Message, 5008);
|
||||
SetEntry(18, ArmRight, 2, Message, 5009);
|
||||
SetEntry(18, ArmRight, 3, Message, 5009);
|
||||
SetEntry(18, ArmRight, 4, Message, 7102);
|
||||
SetEntry(18, ArmRight, 5, Message, 7102);
|
||||
SetEntry(18, BODY_ArmRight, 0, Message, 5008);
|
||||
SetEntry(18, BODY_ArmRight, 1, Message, 5008);
|
||||
SetEntry(18, BODY_ArmRight, 2, Message, 5009);
|
||||
SetEntry(18, BODY_ArmRight, 3, Message, 5009);
|
||||
SetEntry(18, BODY_ArmRight, 4, Message, 7102);
|
||||
SetEntry(18, BODY_ArmRight, 5, Message, 7102);
|
||||
|
||||
SetEntry(18, Torso, 4, Message, 7101);
|
||||
SetEntry(18, Torso, 5, Message, 7101);
|
||||
SetEntry(18, BODY_Torso, 4, Message, 7101);
|
||||
SetEntry(18, BODY_Torso, 5, Message, 7101);
|
||||
|
||||
SetEntry(18, LegRight, 0, Message, 5023);
|
||||
SetEntry(18, LegRight, 1, Message, 7101);
|
||||
SetEntry(18, LegRight, 1, MsgFail, 7103);
|
||||
SetEntry(18, LegRight, 2, Message, 7101);
|
||||
SetEntry(18, LegRight, 2, MsgFail, 7103);
|
||||
SetEntry(18, LegRight, 3, Message, 7103);
|
||||
SetEntry(18, LegRight, 4, Message, 7103);
|
||||
SetEntry(18, LegRight, 5, Message, 7103);
|
||||
SetEntry(18, BODY_LegRight, 0, Message, 5023);
|
||||
SetEntry(18, BODY_LegRight, 1, Message, 7101);
|
||||
SetEntry(18, BODY_LegRight, 1, MsgFail, 7103);
|
||||
SetEntry(18, BODY_LegRight, 2, Message, 7101);
|
||||
SetEntry(18, BODY_LegRight, 2, MsgFail, 7103);
|
||||
SetEntry(18, BODY_LegRight, 3, Message, 7103);
|
||||
SetEntry(18, BODY_LegRight, 4, Message, 7103);
|
||||
SetEntry(18, BODY_LegRight, 5, Message, 7103);
|
||||
|
||||
SetEntry(18, LegLeft, 0, Message, 5023);
|
||||
SetEntry(18, LegLeft, 1, Message, 7101);
|
||||
SetEntry(18, LegLeft, 1, MsgFail, 7103);
|
||||
SetEntry(18, LegLeft, 2, Message, 7101);
|
||||
SetEntry(18, LegLeft, 2, MsgFail, 7103);
|
||||
SetEntry(18, LegLeft, 3, Message, 7103);
|
||||
SetEntry(18, LegLeft, 4, Message, 7103);
|
||||
SetEntry(18, LegLeft, 5, Message, 7103);
|
||||
SetEntry(18, BODY_LegLeft, 0, Message, 5023);
|
||||
SetEntry(18, BODY_LegLeft, 1, Message, 7101);
|
||||
SetEntry(18, BODY_LegLeft, 1, MsgFail, 7103);
|
||||
SetEntry(18, BODY_LegLeft, 2, Message, 7101);
|
||||
SetEntry(18, BODY_LegLeft, 2, MsgFail, 7103);
|
||||
SetEntry(18, BODY_LegLeft, 3, Message, 7103);
|
||||
SetEntry(18, BODY_LegLeft, 4, Message, 7103);
|
||||
SetEntry(18, BODY_LegLeft, 5, Message, 7103);
|
||||
|
||||
SetEntry(18, Eyes, 0, Message, 5027);
|
||||
SetEntry(18, Eyes, 1, Message, 5027);
|
||||
SetEntry(18, Eyes, 2, Message, 5027);
|
||||
SetEntry(18, Eyes, 3, Message, 5027);
|
||||
SetEntry(18, Eyes, 4, Message, 7104);
|
||||
SetEntry(18, Eyes, 5, Message, 7104);
|
||||
SetEntry(18, BODY_Eyes, 0, Message, 5027);
|
||||
SetEntry(18, BODY_Eyes, 1, Message, 5027);
|
||||
SetEntry(18, BODY_Eyes, 2, Message, 5027);
|
||||
SetEntry(18, BODY_Eyes, 3, Message, 5027);
|
||||
SetEntry(18, BODY_Eyes, 4, Message, 7104);
|
||||
SetEntry(18, BODY_Eyes, 5, Message, 7104);
|
||||
|
||||
SetEntry(18, Groin, 0, Message, 5033);
|
||||
SetEntry(18, Groin, 1, Message, 5027);
|
||||
SetEntry(18, Groin, 1, MsgFail, 7101);
|
||||
SetEntry(18, Groin, 2, Message, 7101);
|
||||
SetEntry(18, Groin, 3, Message, 7101);
|
||||
SetEntry(18, Groin, 4, Message, 7101);
|
||||
SetEntry(18, Groin, 5, Message, 7101);
|
||||
SetEntry(18, BODY_Groin, 0, Message, 5033);
|
||||
SetEntry(18, BODY_Groin, 1, Message, 5027);
|
||||
SetEntry(18, BODY_Groin, 1, MsgFail, 7101);
|
||||
SetEntry(18, BODY_Groin, 2, Message, 7101);
|
||||
SetEntry(18, BODY_Groin, 3, Message, 7101);
|
||||
SetEntry(18, BODY_Groin, 4, Message, 7101);
|
||||
SetEntry(18, BODY_Groin, 5, Message, 7101);
|
||||
|
||||
// Fixes for uncalled tables
|
||||
// Men
|
||||
SetEntry(0, Uncalled, 2, Flags, DAM_KNOCKED_DOWN | DAM_BYPASS); // 0
|
||||
SetEntry(0, Uncalled, 2, Message, 5019); // 5018
|
||||
SetEntry(0, BODY_Uncalled, 2, Flags, DAM_KNOCKED_DOWN | DAM_BYPASS); // 0
|
||||
SetEntry(0, BODY_Uncalled, 2, Message, 5019); // 5018
|
||||
|
||||
// Children
|
||||
SetEntry(2, Uncalled, 1, DmgMult, 4); // 3
|
||||
SetEntry(2, Uncalled, 2, Flags, DAM_KNOCKED_DOWN | DAM_BYPASS); // DAM_BYPASS
|
||||
SetEntry(2, Uncalled, 2, Message, 5212); // 5211
|
||||
SetEntry(2, BODY_Uncalled, 1, DmgMult, 4); // 3
|
||||
SetEntry(2, BODY_Uncalled, 2, Flags, DAM_KNOCKED_DOWN | DAM_BYPASS); // DAM_BYPASS
|
||||
SetEntry(2, BODY_Uncalled, 2, Message, 5212); // 5211
|
||||
|
||||
// Centaurs
|
||||
SetEntry(9, Uncalled, 3, FlagsFail, DAM_KNOCKED_DOWN); // 0
|
||||
SetEntry(9, BODY_Uncalled, 3, FlagsFail, DAM_KNOCKED_DOWN); // 0
|
||||
|
||||
// Geckos
|
||||
SetEntry(15, Uncalled, 0, Message, 6701); // 6700
|
||||
SetEntry(15, Uncalled, 1, Message, 6701); // 6700
|
||||
SetEntry(15, Uncalled, 2, Flags, DAM_KNOCKED_DOWN | DAM_BYPASS); // 0
|
||||
SetEntry(15, Uncalled, 2, Message, 6704); // 6700
|
||||
SetEntry(15, Uncalled, 3, Message, 6704); // 6700
|
||||
SetEntry(15, Uncalled, 4, Message, 6704); // 6700
|
||||
SetEntry(15, Uncalled, 5, Message, 6704); // 6700
|
||||
SetEntry(15, BODY_Uncalled, 0, Message, 6701); // 6700
|
||||
SetEntry(15, BODY_Uncalled, 1, Message, 6701); // 6700
|
||||
SetEntry(15, BODY_Uncalled, 2, Flags, DAM_KNOCKED_DOWN | DAM_BYPASS); // 0
|
||||
SetEntry(15, BODY_Uncalled, 2, Message, 6704); // 6700
|
||||
SetEntry(15, BODY_Uncalled, 3, Message, 6704); // 6700
|
||||
SetEntry(15, BODY_Uncalled, 4, Message, 6704); // 6700
|
||||
SetEntry(15, BODY_Uncalled, 5, Message, 6704); // 6700
|
||||
|
||||
// Aliens
|
||||
SetEntry(16, Uncalled, 2, Flags, DAM_KNOCKED_DOWN | DAM_BYPASS); // 0
|
||||
SetEntry(16, BODY_Uncalled, 2, Flags, DAM_KNOCKED_DOWN | DAM_BYPASS); // 0
|
||||
|
||||
// Giant Ants
|
||||
SetEntry(17, Uncalled, 2, Flags, DAM_KNOCKED_DOWN | DAM_BYPASS); // 0
|
||||
SetEntry(17, BODY_Uncalled, 2, Flags, DAM_KNOCKED_DOWN | DAM_BYPASS); // 0
|
||||
|
||||
// Big Bad Boss
|
||||
SetEntry(18, Uncalled, 2, DmgMult, 3); // 4
|
||||
SetEntry(18, Uncalled, 4, DmgMult, 4); // 5
|
||||
SetEntry(18, Uncalled, 4, Message, 7101); // 7106
|
||||
SetEntry(18, Uncalled, 5, Message, 7101); // 7106
|
||||
SetEntry(18, BODY_Uncalled, 2, DmgMult, 3); // 4
|
||||
SetEntry(18, BODY_Uncalled, 4, DmgMult, 4); // 5
|
||||
SetEntry(18, BODY_Uncalled, 4, Message, 7101); // 7106
|
||||
SetEntry(18, BODY_Uncalled, 5, Message, 7101); // 7106
|
||||
}
|
||||
|
||||
if (CritTableLoad()) {
|
||||
|
||||
+5
-5
@@ -96,13 +96,13 @@ enum AnimCommand : long
|
||||
RB_END_ANIM = 0x200
|
||||
};
|
||||
|
||||
enum BodyParts : long {
|
||||
enum BodyPart : long {
|
||||
BODY_Head = 0,
|
||||
BODY_LeftArm = 1,
|
||||
BODY_RightArm = 2,
|
||||
BODY_ArmLeft = 1,
|
||||
BODY_ArmRight = 2,
|
||||
BODY_Torso = 3,
|
||||
BODY_RightLeg = 4,
|
||||
BODY_LeftLeg = 5,
|
||||
BODY_LegRight = 4,
|
||||
BODY_LegLeft = 5,
|
||||
BODY_Eyes = 6,
|
||||
BODY_Groin = 7,
|
||||
BODY_Uncalled = 8
|
||||
|
||||
+6
-6
@@ -9,7 +9,7 @@ static void __stdcall SafeWriteFunc(BYTE code, DWORD addr, void* func) {
|
||||
VirtualProtect((void*)addr, 5, oldProtect, &oldProtect);
|
||||
}
|
||||
|
||||
static __declspec(noinline) void __stdcall SafeWriteFunc(BYTE code, DWORD addr, void* func, DWORD len) {
|
||||
static __declspec(noinline) void __stdcall SafeWriteFunc(BYTE code, DWORD addr, void* func, size_t len) {
|
||||
DWORD oldProtect,
|
||||
protectLen = len + 5,
|
||||
addrMem = addr + 5,
|
||||
@@ -19,13 +19,13 @@ static __declspec(noinline) void __stdcall SafeWriteFunc(BYTE code, DWORD addr,
|
||||
*((BYTE*)addr) = code;
|
||||
*((DWORD*)(addr + 1)) = data;
|
||||
|
||||
for (unsigned int i = 0; i < len; i++) {
|
||||
for (size_t i = 0; i < len; i++) {
|
||||
*((BYTE*)(addrMem + i)) = CODETYPE_Nop;
|
||||
}
|
||||
VirtualProtect((void*)addr, protectLen, oldProtect, &oldProtect);
|
||||
}
|
||||
|
||||
void SafeWriteBytes(DWORD addr, BYTE* data, int count) {
|
||||
void SafeWriteBytes(DWORD addr, BYTE* data, size_t count) {
|
||||
DWORD oldProtect;
|
||||
|
||||
VirtualProtect((void*)addr, count, PAGE_EXECUTE_READWRITE, &oldProtect);
|
||||
@@ -74,7 +74,7 @@ void MakeCall(DWORD addr, void* func) {
|
||||
SafeWriteFunc(CODETYPE_Call, addr, func);
|
||||
}
|
||||
|
||||
void MakeCall(DWORD addr, void* func, int len) {
|
||||
void MakeCall(DWORD addr, void* func, size_t len) {
|
||||
SafeWriteFunc(CODETYPE_Call, addr, func, len);
|
||||
}
|
||||
|
||||
@@ -82,11 +82,11 @@ void MakeJump(DWORD addr, void* func) {
|
||||
SafeWriteFunc(CODETYPE_Jump, addr, func);
|
||||
}
|
||||
|
||||
void MakeJump(DWORD addr, void* func, int len) {
|
||||
void MakeJump(DWORD addr, void* func, size_t len) {
|
||||
SafeWriteFunc(CODETYPE_Jump, addr, func, len);
|
||||
}
|
||||
|
||||
void SafeMemSet(DWORD addr, BYTE val, int len) {
|
||||
void SafeMemSet(DWORD addr, BYTE val, size_t len) {
|
||||
DWORD oldProtect;
|
||||
|
||||
VirtualProtect((void*)addr, len, PAGE_EXECUTE_READWRITE, &oldProtect);
|
||||
|
||||
+4
-4
@@ -35,14 +35,14 @@ void __stdcall SafeWrite16(DWORD addr, WORD data);
|
||||
void __stdcall SafeWrite32(DWORD addr, DWORD data);
|
||||
void __stdcall SafeWriteStr(DWORD addr, const char* data);
|
||||
|
||||
void SafeMemSet(DWORD addr, BYTE val, int len);
|
||||
void SafeWriteBytes(DWORD addr, BYTE* data, int count);
|
||||
void SafeMemSet(DWORD addr, BYTE val, size_t len);
|
||||
void SafeWriteBytes(DWORD addr, BYTE* data, size_t count);
|
||||
|
||||
void HookCall(DWORD addr, void* func);
|
||||
void MakeCall(DWORD addr, void* func);
|
||||
void MakeCall(DWORD addr, void* func, int len);
|
||||
void MakeCall(DWORD addr, void* func, size_t len);
|
||||
void MakeJump(DWORD addr, void* func);
|
||||
void MakeJump(DWORD addr, void* func, int len);
|
||||
void MakeJump(DWORD addr, void* func, size_t len);
|
||||
void BlockCall(DWORD addr);
|
||||
|
||||
// emulation of 4.x HookCalls/MakeCalls/MakeJumps
|
||||
|
||||
Reference in New Issue
Block a user