# HG changeset patch # User nemo # Date 1534878688 14400 # Node ID f60b3998ba564a474f6326e253be02ee2f93cafb # Parent 3561a457c11c95af4ebb37265d2d64d7a28946ab only-stats should never create visual gears. and lua should never rely on visual gears being created. critical is just to help ensure ones important to gameplay don't get lost in fast-forward diff -r 3561a457c11c -r f60b3998ba56 hedgewars/uScript.pas --- a/hedgewars/uScript.pas Mon Aug 06 21:41:06 2018 +0200 +++ b/hedgewars/uScript.pas Tue Aug 21 15:11:28 2018 -0400 @@ -835,7 +835,7 @@ params = 'x, y, visualGearType, state, critical [, layer]'; begin uid:= 0; - if CheckAndFetchParamCount(L, 5, 6, call, params, n) then + if not(cOnlyStats) and CheckAndFetchParamCount(L, 5, 6, call, params, n) then begin s:= LuaToVisualGearTypeOrd(L, 3, call, params); if s >= 0 then @@ -904,7 +904,7 @@ function lc_getvisualgearvalues(L : Plua_State) : LongInt; Cdecl; var vg: PVisualGear; begin - if CheckLuaParamCount(L, 1, 'GetVisualGearValues', 'vgUid') then + if not(cOnlyStats) and CheckLuaParamCount(L, 1, 'GetVisualGearValues', 'vgUid') then begin vg:= VisualGearByUID(Trunc(lua_tonumber(L, 1))); if vg <> nil then @@ -937,6 +937,8 @@ function lc_setvisualgearvalues(L : Plua_State) : LongInt; Cdecl; var vg : PVisualGear; begin + lc_setvisualgearvalues:= 0; + if cOnlyStats then exit; // Param count can be 1-11 at present // if CheckLuaParamCount(L, 11, 'SetVisualGearValues', 'vgUid, X, Y, dX, dY, Angle, Frame, FrameTicks, State, Timer, Tint') then // begin @@ -963,11 +965,10 @@ vg^.Timer:= Trunc(lua_tonumber(L, 10)); if not lua_isnoneornil(L, 11) then vg^.Tint:= Trunc(lua_tonumber(L, 11)) - end; + end // end // else // lua_pushnil(L); // return value on stack (nil) - lc_setvisualgearvalues:= 0 end; // so. going to use this to get/set some of the more obscure gear values which were not already exposed elsewhere diff -r 3561a457c11c -r f60b3998ba56 hedgewars/uVisualGearsList.pas --- a/hedgewars/uVisualGearsList.pas Mon Aug 06 21:41:06 2018 +0200 +++ b/hedgewars/uVisualGearsList.pas Tue Aug 21 15:11:28 2018 -0400 @@ -63,6 +63,7 @@ sp: real; begin AddVisualGear:= nil; +if cOnlyStats then exit; // stats only should never ever create a visual gear if (GameType <> gmtRecord) and (((GameType = gmtSave) or (fastUntilLag and (GameType = gmtNet)) or fastScrolling) and // we are scrolling now (not Critical)) then