Fixed a crash bug in ScriptExtender.cpp from commit e075c05

Minor code/document edits.
This commit is contained in:
NovaRain
2021-01-13 11:19:25 +08:00
parent 31af299b4a
commit 3b965fc76c
3 changed files with 11 additions and 8 deletions
+4 -1
View File
@@ -806,7 +806,10 @@
#define bit_32 (0x80000000) #define bit_32 (0x80000000)
#define bit_ALL (0xFFFFFFFF) #define bit_ALL (0xFFFFFFFF)
#define ROLL_CRITICAL_FAILURE 0
#define ROLL_FAILURE 1
#define ROLL_SUCCESS 2
#define ROLL_CRITICAL_SUCCESS 3
//Misc commands //Misc commands
#define obj_get_rot(obj) (has_trait(TRAIT_OBJECT, obj, OBJECT_CUR_ROT)) #define obj_get_rot(obj) (has_trait(TRAIT_OBJECT, obj, OBJECT_CUR_ROT))
+4 -4
View File
@@ -911,7 +911,7 @@ long GetResetScriptReturnValue() {
return val; return val;
} }
static long __stdcall FindOverrideSub(TProgram* program) { static __forceinline long __stdcall FindProgram(TProgram* program) {
std::tr1::unordered_map<TProgram*, SelfOverrideObj>::iterator overrideIt = selfOverrideMap.find(program); std::tr1::unordered_map<TProgram*, SelfOverrideObj>::iterator overrideIt = selfOverrideMap.find(program);
if (overrideIt != selfOverrideMap.end()) { if (overrideIt != selfOverrideMap.end()) {
DWORD scriptId = overrideIt->second.object->scriptId; // script DWORD scriptId = overrideIt->second.object->scriptId; // script
@@ -940,11 +940,11 @@ static long __stdcall FindOverrideSub(TProgram* program) {
return -1; // change nothing return -1; // change nothing
} }
static long __fastcall FindOverride(TProgram* program, TScript* &script) { static long __fastcall FindOverride(TProgram* program, TScript** script) {
long result = FindOverrideSub(program); long result = FindProgram(program);
if (result == -2) { if (result == -2) {
if (script) { if (script) {
script = &overrideScript; // unsafe method! script may contain an incorrect address value in some engine functions *script = &overrideScript; // unsafe method! script may contain an incorrect address value in some engine functions
} else { } else {
result--; // set -3 result--; // set -3
} }
+3 -3
View File
@@ -410,11 +410,11 @@ void Skills_Init() {
if (basedOnPoints) HookCall(0x4AA9EC, (void*)skill_points_); // skill_dec_point_ if (basedOnPoints) HookCall(0x4AA9EC, (void*)skill_points_); // skill_dec_point_
int tagBonus = iniGetInt("Skills", "TagSkillBonus", 20, file); int tagBonus = iniGetInt("Skills", "TagSkillBonus", 20, file);
if (tagBonus != 20 && tagBonus >=0 && tagBonus <= 100) SafeWrite8(0x4AA61E, static_cast<BYTE>(tagBonus)); if (tagBonus != 20 && tagBonus >=0 && tagBonus <= 100) SafeWrite8(0x4AA61E, static_cast<BYTE>(tagBonus)); // skill_level_
int tagMode = iniGetInt("Skills", "TagSkillMode", 0, file); int tagMode = iniGetInt("Skills", "TagSkillMode", 0, file);
if (tagMode & 1) SafeWrite8(0x4AA612, 0xEB); // 4th tag skill can have initial skill bonus (jz > jmp) if (tagMode & 1) SafeWrite8(0x4AA612, 0xEB); // 4th tag skill can have initial skill bonus. skill_level_ (jz > jmp)
if (tagMode & 2) SafeWrite16(0x4AA60E, 0x9090); // skill_level_ disables 2x skill points bonus for tag skills if (tagMode & 2) SafeWrite16(0x4AA60E, 0x9090); // disables double skill points bonus for tag skills. skill_level_
} }
} }