# HG changeset patch # User sheepluva # Date 1473976903 -7200 # Node ID 38e7206a5df420806671ac33903088005c7e9b33 # Parent 6bf91006d630b1ae2a13fb022e028f4c0f3d064d Lua API: IsHogLocal(gearUid) diff -r 6bf91006d630 -r 38e7206a5df4 hedgewars/uGearsHedgehog.pas --- a/hedgewars/uGearsHedgehog.pas Thu Sep 15 23:16:49 2016 +0200 +++ b/hedgewars/uGearsHedgehog.pas Fri Sep 16 00:01:43 2016 +0200 @@ -660,10 +660,7 @@ if cnt <> 0 then AddAmmo(HH, ammo, cnt) else AddAmmo(HH, ammo); - if (not (HH.Team^.ExtDriven - or (HH.BotLevel > 0))) - or (HH.Team^.Clan^.ClanIndex = LocalClan) - or (GameType = gmtDemo) then + if IsHogLocal(@HH) or (GameType = gmtDemo) then begin if cnt <> 0 then s:= trammo[Ammoz[ammo].NameId] + ansistring(' (+' + IntToStr(cnt) + ')') diff -r 6bf91006d630 -r 38e7206a5df4 hedgewars/uGearsUtils.pas --- a/hedgewars/uGearsUtils.pas Thu Sep 15 23:16:49 2016 +0200 +++ b/hedgewars/uGearsUtils.pas Fri Sep 16 00:01:43 2016 +0200 @@ -57,6 +57,7 @@ function WorldWrap(var Gear: PGear): boolean; +function IsHogLocal(HH: PHedgehog): boolean; function MakeHedgehogsStep(Gear: PGear) : boolean; @@ -1589,4 +1590,9 @@ PlaySound(sndMelonImpact, true) end; +function IsHogLocal(HH: PHedgehog): boolean; +begin + IsHogLocal:= (not (HH^.Team^.ExtDriven or (HH^.BotLevel > 0))) or (HH^.Team^.Clan^.ClanIndex = LocalClan); +end; + end. diff -r 6bf91006d630 -r 38e7206a5df4 hedgewars/uScript.pas --- a/hedgewars/uScript.pas Thu Sep 15 23:16:49 2016 +0200 +++ b/hedgewars/uScript.pas Fri Sep 16 00:01:43 2016 +0200 @@ -1307,6 +1307,7 @@ if CheckLuaParamCount(L, 1, 'GetHogFlag', 'gearUid') then begin gear:= GearByUID(lua_tointeger(L, 1)); + // TODO error messages if (gear <> nil) and (gear^.Kind = gtHedgehog) and (gear^.Hedgehog <> nil) then lua_pushstring(L, str2pchar(gear^.Hedgehog^.Team^.Flag)) else @@ -1317,12 +1318,30 @@ lc_gethogflag:= 1 end; +function lc_ishoglocal(L : Plua_State) : LongInt; Cdecl; +var gear : PGear; +begin + if CheckLuaParamCount(L, 1, 'IsHogLocal', 'gearUid') then + begin + gear:= GearByUID(lua_tointeger(L, 1)); + // TODO error messages + if (gear <> nil) and (gear^.Kind = gtHedgehog) and (gear^.Hedgehog <> nil) then + lua_pushboolean(L, IsHogLocal(gear^.Hedgehog)) + else + lua_pushnil(L); + end + else + lua_pushnil(L); // return value on stack (nil) + lc_ishoglocal:= 1 +end; + function lc_gethogteamname(L : Plua_State) : LongInt; Cdecl; var gear : PGear; begin if CheckLuaParamCount(L, 1, 'GetHogTeamName', 'gearUid') then begin gear:= GearByUID(lua_tointeger(L, 1)); + // TODO error messages if (gear <> nil) and ((gear^.Kind = gtHedgehog) or (gear^.Kind = gtGrave)) and (gear^.Hedgehog <> nil) then lua_pushstring(L, str2pchar(gear^.Hedgehog^.Team^.TeamName)) else @@ -3325,6 +3344,7 @@ lua_register(luaState, _P'GetHogVoicepack', @lc_gethogvoicepack); lua_register(luaState, _P'GetHogFlag', @lc_gethogflag); lua_register(luaState, _P'GetHogGrave', @lc_gethoggrave); +lua_register(luaState, _P'IsHogLocal', @lc_ishoglocal); lua_register(luaState, _P'GetHogTeamName', @lc_gethogteamname); lua_register(luaState, _P'SetHogTeamName', @lc_sethogteamname); lua_register(luaState, _P'GetHogName', @lc_gethogname);