hedgewars/uScript.pas
changeset 13340 85644a45e988
parent 13272 5984e8c6cbeb
child 13348 5f6208031658
child 13393 ae5d6448c5be
--- a/hedgewars/uScript.pas	Thu Apr 19 15:48:00 2018 +0200
+++ b/hedgewars/uScript.pas	Sat Apr 21 17:17:42 2018 +0200
@@ -1926,6 +1926,35 @@
     lc_endturn:= 0
 end;
 
+function lc_retreat(L : Plua_State) : LongInt; Cdecl;
+var n, time: LongInt;
+    respectFactor: Boolean;
+const
+    call = 'Retreat';
+    params = 'time [, respectGetAwayTimeFactor]';
+begin
+    if CheckAndFetchParamCount(L, 1, 2, call, params, n) then
+        begin
+        IsGetAwayTime:= true;
+        AttackBar:= 0;
+        time:= Trunc(lua_tonumber(L, 1));
+        if n = 2 then
+            respectFactor:= lua_toboolean(L, 2)
+        else
+            respectFactor:= True;
+        if respectFactor then
+            TurnTimeLeft:= (time * cGetAwayTime) div 100
+        else
+            TurnTimeLeft:= time;
+        if ((CurrentHedgehog <> nil) and (CurrentHedgehog^.Gear <> nil)) then
+            begin
+            CurrentHedgehog^.Gear^.State:= CurrentHedgehog^.Gear^.State or gstAttacked;
+            CurrentHedgehog^.Gear^.State:= CurrentHedgehog^.Gear^.State and (not gstAttacking);
+            end;
+        end;
+    lc_retreat:= 0
+end;
+
 function lc_skipturn(L : Plua_State): LongInt; Cdecl;
 begin
     L:= L; // avoid compiler hint
@@ -3830,6 +3859,7 @@
 lua_register(luaState, _P'GetGearType', @lc_getgeartype);
 lua_register(luaState, _P'EndGame', @lc_endgame);
 lua_register(luaState, _P'EndTurn', @lc_endturn);
+lua_register(luaState, _P'Retreat', @lc_retreat);
 lua_register(luaState, _P'SkipTurn', @lc_skipturn);
 lua_register(luaState, _P'GetTeamStats', @lc_getteamstats);
 lua_register(luaState, _P'SendStat', @lc_sendstat);