diff --git a/artifacts/scripting/sfall function notes.txt b/artifacts/scripting/sfall function notes.txt index 68bf814e..4ee95be1 100644 --- a/artifacts/scripting/sfall function notes.txt +++ b/artifacts/scripting/sfall function notes.txt @@ -596,12 +596,12 @@ optional arguments: > array sfall_func3("objects_in_radius", int tile, int radius, int elevation) > array sfall_func4("objects_in_radius", int tile, int radius, int elevation, int type) - returns an array of objects of a type (see OBJ_TYPE_* constants in define_extra.h) within the specified radius from the given tile -- The radius is limited to 50 hexes -- passing -1 to the type argument or not specifying it will return all types of objects +- passing -1 to the type argument or not specifying it will return all objects within the radius +- the radius is limited to 50 hexes > int sfall_func2("tile_by_position", int x, int y) -- returns the tile number at the x/y position relative to the top-left corner of the screen -- returns -1 if the position is outside of the screen +- returns the tile number at the x, y position relative to the top-left corner of the screen +- if the position is outside of the range of tiles, it will return -1 ------------------------ ------ MORE INFO ------- diff --git a/sfall/Perks.cpp b/sfall/Perks.cpp index 5c569c92..a6be728e 100644 --- a/sfall/Perks.cpp +++ b/sfall/Perks.cpp @@ -615,7 +615,7 @@ normalPerk: pop edx; test eax, eax; jnz end; - // fix gain perks + // fix gain perks (add to base stats instead of bonus stats) cmp edx, PERK_gain_strength_perk; jl end; cmp edx, PERK_gain_luck_perk; @@ -721,7 +721,7 @@ static void PerkSetup() { if (perksEnable) { char num[4]; for (int i = 0; i < PERK_count; i++) { - _itoa_s(i, num, 10); + _itoa(i, num, 10); if (iniGetString(num, "Name", "", &Name[i * maxNameLen], maxNameLen - 1, perksFile)) { Perks[i].Name = &Name[i * maxNameLen]; } @@ -1216,10 +1216,11 @@ void PerksAcceptCharScreen() { void PerksInit() { FastShotTraitFix(); + // Disable gain perks for bonus stats for (int i = STAT_st; i <= STAT_lu; i++) SafeWrite8(GainStatPerks[i][0], (BYTE)GainStatPerks[i][1]); PerkEngineInit(); - HookCall(0x442729, PerkInitWrapper); // game_init_ + HookCall(0x442729, PerkInitWrapper); // game_init_ if (GetConfigString("Misc", "PerksFile", "", &perksFile[2], MAX_PATH - 3)) { perksFile[0] = '.'; diff --git a/sfall/ScriptOps/AsmMacros.h b/sfall/ScriptOps/AsmMacros.h index c5c58816..720296b5 100644 --- a/sfall/ScriptOps/AsmMacros.h +++ b/sfall/ScriptOps/AsmMacros.h @@ -122,7 +122,7 @@ notstring##num: /* Returns the value to the script - eax register must contain the script_ptr + eax and ebx register must contain the script_ptr edx register must contain the returned value */ #define _RET_VAL_INT2 __asm { \ diff --git a/sfall/ScriptOps/MiscOps.hpp b/sfall/ScriptOps/MiscOps.hpp index 808b1ff7..194dc49f 100644 --- a/sfall/ScriptOps/MiscOps.hpp +++ b/sfall/ScriptOps/MiscOps.hpp @@ -1205,29 +1205,19 @@ end: static void __declspec(naked) tile_under_cursor() { __asm { - push edx; - push ecx; - push ebx; - mov ecx, eax; - sub esp, 8; - lea edx, [esp]; - lea eax, [esp+4]; + mov esi, ebx; + sub esp, 8; + lea edx, [esp]; + lea eax, [esp + 4]; call mouse_get_position_; - mov ebx, dword ptr ds:[_map_elevation]; - mov edx, [esp]; - mov eax, [esp+4]; - call tile_num_; - mov edx, eax; - mov eax, ecx; - call interpretPushLong_; - mov eax, ecx; - mov edx, VAR_TYPE_INT; - call interpretPushShort_; - add esp, 8; - pop ebx; - pop ecx; - pop edx; - retn; + pop edx; + pop eax; + call tile_num_; // ebx - unused + mov edx, eax; // tile + mov ebx, esi; + mov eax, esi; + _J_RET_VAL_TYPE(VAR_TYPE_INT); +// retn; } }