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_ALL (0xFFFFFFFF)
#define ROLL_CRITICAL_FAILURE 0
#define ROLL_FAILURE 1
#define ROLL_SUCCESS 2
#define ROLL_CRITICAL_SUCCESS 3
//Misc commands
#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;
}
static long __stdcall FindOverrideSub(TProgram* program) {
static __forceinline long __stdcall FindProgram(TProgram* program) {
std::tr1::unordered_map<TProgram*, SelfOverrideObj>::iterator overrideIt = selfOverrideMap.find(program);
if (overrideIt != selfOverrideMap.end()) {
DWORD scriptId = overrideIt->second.object->scriptId; // script
@@ -940,11 +940,11 @@ static long __stdcall FindOverrideSub(TProgram* program) {
return -1; // change nothing
}
static long __fastcall FindOverride(TProgram* program, TScript* &script) {
long result = FindOverrideSub(program);
static long __fastcall FindOverride(TProgram* program, TScript** script) {
long result = FindProgram(program);
if (result == -2) {
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 {
result--; // set -3
}
+3 -3
View File
@@ -410,11 +410,11 @@ void Skills_Init() {
if (basedOnPoints) HookCall(0x4AA9EC, (void*)skill_points_); // skill_dec_point_
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);
if (tagMode & 1) SafeWrite8(0x4AA612, 0xEB); // 4th tag skill can have initial skill bonus (jz > jmp)
if (tagMode & 2) SafeWrite16(0x4AA60E, 0x9090); // skill_level_ disables 2x skill points bonus for tag skills
if (tagMode & 1) SafeWrite8(0x4AA612, 0xEB); // 4th tag skill can have initial skill bonus. skill_level_ (jz > jmp)
if (tagMode & 2) SafeWrite16(0x4AA60E, 0x9090); // disables double skill points bonus for tag skills. skill_level_
}
}