LastSword
Prince
- Joined
- Feb 24, 2013
- Messages
- 1,129
The point is to use GetScenarioDiploModifier2 in several mods without conflict.
Code is dependent on SaveUtils.lua.
1. Installation:
2. Instant change of Diplo value:
3. Change of Diplo value delayed by 'delay' turns:
Site with reference of current diplo penalties.
Code is dependent on SaveUtils.lua.
1. Installation:
Code:
WARN_NOT_SHARED = false; include( "SaveUtils" ); MY_MOD_NAME = "MyMod";
include("SharingDiploModifier")
2. Instant change of Diplo value:
Code:
ChangeDiploMod(aPlayerID (integer), bPlayerID (integer), value (integer))
3. Change of Diplo value delayed by 'delay' turns:
Code:
ChangeDiploMod(aPlayerID (integer), bPlayerID (integer), value (integer), delay (integer))
Spoiler code :
Code:
--SharingDiploModifier Version 4
local iteHelp = GameDefines.MAX_MAJOR_CIVS;
local barbP = GameDefines.MAX_CIV_PLAYERS;
local DiploT = {}
--
--
--
--
--
function LSGetSDM2(aPlayer, bPlayer)
return DiploT["LS_SDM_CDM" .. aPlayer .."S".. bPlayer] or 0;
end
function LSUpdateSDM2(iPlayer)
if barbP == iPlayer then
local GT = Game.GetGameTurn() + 1;
for i = 0, iteHelp - 2 do
local sIteHelp = load(Players[i], "LS_SDM_MPT" .. GT);
if sIteHelp ~= nil then
for j = i + 1, sIteHelp do
local TDM = load(Players[i], "LS_SDM_TC" .. j .. "T" .. GT)
if TDM ~= nil then
local CDM = DiploT["LS_SDM_CDM" .. i .."S".. j] or 0;
DiploT["LS_SDM_CDM" .. i .."S".. j] = TDM + CDM;
DiploT["LS_SDM_CDM" .. j .."S".. i] = TDM + CDM;
save(Players[i], "LS_SDM_CDM" .. j, TDM + CDM);
save(Players[j], "LS_SDM_CDM" .. i, TDM + CDM);
end
end
end
end
end
end
function SaveValues(aPlayer, bPlayer, value)
local CDM = DiploT["LS_SDM_CDM" .. aPlayer .."S".. bPlayer] or 0;
DiploT["LS_SDM_CDM" .. aPlayer .."S".. bPlayer] = CDM + value;
DiploT["LS_SDM_CDM" .. bPlayer .."S".. aPlayer] = CDM + value;
save(Players[aPlayer], "LS_SDM_CDM" .. bPlayer, CDM + value);
save(Players[bPlayer], "LS_SDM_CDM" .. aPlayer, CDM + value);
end
function FutureValues(aPlayer, bPlayer, value, turn)
local iPlayer = aPlayer;
local lPlayer = bPlayer;
if aPlayer > bPlayer then
iPlayer = bPlayer;
lPlayer = aPlayer;
end
local GT = Game.GetGameTurn() + turn;
local SDM = load(Players[iPlayer], "LS_SDM_TC" .. lPlayer .. "T" .. GT) or 0;
save(Players[iPlayer], "LS_SDM_TC" .. lPlayer .. "T" .. GT, value + SDM);
local MP = load(Players[iPlayer], "LS_SDM_MPT" .. GT) or -1;
if lPlayer > MP then
save(Players[iPlayer], "LS_SDM_MPT" .. GT, lPlayer)
end
end
function ReloadCurrentDiplo()
for i = 0, iteHelp - 2 do
for j = i + 1, iteHelp - 1 do
DiploT["LS_SDM_CDM" .. i .."S".. j] = load(Players[i], "LS_SDM_CDM" .. j);
DiploT["LS_SDM_CDM" .. j .."S".. i] = load(Players[j], "LS_SDM_CDM" .. i);
end
end
end
--
--
--
--
--
local retVal = {};
LuaEvents.DiploSharedFunctions_IsGameEventsAdded(retVal);
if (retVal.isInitialized == nil) then
LuaEvents.DiploSharedFunctions_IsGameEventsAdded.Add(function (retVal) retVal.isInitialized = true; end);
GameEvents.GetScenarioDiploModifier2.Add(LSGetSDM2)
ReloadCurrentDiplo()
LuaEvents.LSupdateValuesInMainFile.Add(SaveValues)
LuaEvents.LSupdateFutureInMainFile.Add(FutureValues)
GameEvents.PlayerDoTurn.Add(LSUpdateSDM2)
end
--
--
--
--
--
function ChangeDiploMod(aPlayer, bPlayer, value, turn)
if turn == nil then
LuaEvents.LSupdateValuesInMainFile(aPlayer, bPlayer, value)
return;
end
if turn > 0 then
LuaEvents.LSupdateFutureInMainFile(aPlayer, bPlayer, value, turn)
end
end
Site with reference of current diplo penalties.