From 0b14111472526923376ffeefaec8a393b7978357 Mon Sep 17 00:00:00 2001 From: NovaRain Date: Sat, 15 Jun 2024 19:08:04 +0800 Subject: [PATCH] Further simplification of the previous commit Updated sslc_readme.md. --- artifacts/ddraw.ini | 2 +- artifacts/scripting/compiler/sslc_readme.md | 10 +++++++++- sfall/Modules/Animations.cpp | 10 ++-------- 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/artifacts/ddraw.ini b/artifacts/ddraw.ini index 1adcc2f4..6904eaa2 100644 --- a/artifacts/ddraw.ini +++ b/artifacts/ddraw.ini @@ -238,7 +238,7 @@ OutlineColor=16 ;Set to 0 if you don't want a reload key, or a DX scancode otherwise ReloadWeaponKey=0 -;A key to hold down to let you move/drop a whole stack of items at once without the 'Move Items' window +;A key to hold down to let you move/drop an entire stack of items at once without the 'Move Items' window ;Set to 0 if you don't want a fast move key, or a DX scancode otherwise ItemFastMoveKey=42 diff --git a/artifacts/scripting/compiler/sslc_readme.md b/artifacts/scripting/compiler/sslc_readme.md index fa8d5152..244a75ad 100644 --- a/artifacts/scripting/compiler/sslc_readme.md +++ b/artifacts/scripting/compiler/sslc_readme.md @@ -287,7 +287,7 @@ Syntax which requires sfall for compiled scripts to be interpreted is marked by ``` __NOTE:__ When using incremental operators like `+=`, `*=`, `++`, `--` compiler will use additional temp variable to get an array at penultimate level in order to avoid making the same chain of `get_array` calls twice. -- (*) `foreach` loops: A shorthand method of looping over all elements in an array. Syntax is `foreach ( in )`. +- (*) `foreach` loops: A shorthand method of looping over all elements in an array. Syntax is `foreach ( in )`. You can declare variables in place by adding the `variable` keyword before the symbol name. - new: ``` procedure bingle begin @@ -348,6 +348,14 @@ There are several changes in this version of sslc which may result in problems f ### Changelog +**sfall 4.4.4:** +- fixed stringified procedure names shifting when the same name is called more than once +- syntax improvements: + - `foreach`: allow to declare variables for key & value header + - `foreach`: allow to use expressions after `in` that start with a symbol without mandatory parentheses + - variables: allow to declare variables anywhere a statement is expected + - expressions: display useful error messages when an expression is expected but nothing is parsed + **sfall 4.4:** - fixed compiler crash when trying to define an exported procedure with variables - fixed compiler giving "symbol or string expected" error when trying to call procedure using a string literal diff --git a/sfall/Modules/Animations.cpp b/sfall/Modules/Animations.cpp index b2a1df46..5b640e2a 100644 --- a/sfall/Modules/Animations.cpp +++ b/sfall/Modules/Animations.cpp @@ -507,8 +507,8 @@ notDude: } } - -static void __fastcall StopAnimationAtCombatStart() { +// replace vanilla anim_stop_ function in combat_begin_ +static void __stdcall combat_begin_anim_stop_hook() { *fo::ptr::anim_in_anim_stop = true; *fo::ptr::curr_anim_set = -1; @@ -522,12 +522,6 @@ static void __fastcall StopAnimationAtCombatStart() { fo::func::object_anim_compact(); } -static __declspec(naked) void combat_begin_anim_stop_hook() { - __asm { - jmp StopAnimationAtCombatStart; - } -} - static void ApplyAnimationsAtOncePatches(signed char aniMax) { //allocate memory to store larger animation struct arrays sf_anim_set.resize(aniMax + 1); // include a dummy