Advertisement
DarthPresidente

Reverse Martial Law

Apr 16th, 2020
245
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 3.05 KB | None | 0 0
  1. --[[
  2.         Reverse Martial Law Edict
  3.             Changes Martial Law Edict to have opposite impact  
  4. --]]
  5.  
  6. local mcfg,ModT,ModCV,ModExp,ModSuccess = RegisterMod(
  7.     "DarthPresidente",      -- Author
  8.     "ReverseMartialLaw",    -- ModID
  9.     100,                    -- Mod Version
  10.     300,                    -- Required Mod Loader Version
  11.     "Reverse Martial Law"   -- Mod Description
  12. )
  13. -- Defines Config Variables
  14. ModCV("RequiredBuildings","number",3,0,1000)
  15. ModCV("ProductionBonus","number",40,0,1000)
  16. ModCV("MilitaristBonus","number",10,-100,100)
  17. if not ModSuccess() then return end
  18.  
  19. OnMsg.DataLoaded = function()
  20.     DataInstances.Edict.MartialLaw.SequenceOn = "NewMartialLawON"
  21.     DataInstances.Edict.MartialLaw.SequenceOff = "NewMartialLawOFF"
  22.     function MartialLawCheck(city)
  23.         if city.labels["Military Buildings"]:GetObjects():Count() < mcfg.RequiredBuildings then
  24.             return false, ModT("MartialLawReq","You need at least <arg1> military buildings to activate this edict.",mcfg.RequiredBuildings)
  25.         else
  26.             return true
  27.         end
  28.     end
  29.     function MartialLawTurnOn(edict)
  30.         local city = edict.city
  31.         local issuetext = ModT("ISSUED_EDICT", "Issued <arg1> Edict", T({6601,"Martial Law"}))
  32.         city:CreateModifier({
  33.             id = "MyMartialLawStateCrime", apply_to = city,
  34.             component = "General", property = "StateCrime",
  35.             add = -20, text = T({issuetext})
  36.         })
  37.         city:CreateModifier({
  38.             id = "MyMartialLawTourismRating", apply_to = city,
  39.             component = "Tourism", property = "TourismRating",
  40.             add = 10, text = T({issuetext})
  41.         })
  42.         city:CreateModifier({
  43.             id = "MyMartialLawProduction", apply_to = city.labels["Production"],
  44.             property = "InherentEffectiveness",
  45.             add = mcfg.ProductionBonus, text = T({issuetext})
  46.         })
  47.         city:CreateModifier({
  48.             id = "MyMartialLawProductionRaw", apply_to = city.labels["ProductionRaw"],
  49.             property = "InherentEffectiveness",
  50.             add = mcfg.ProductionBonus, text = T({issuetext})
  51.         })
  52.         city.FactionStanding:Add("militarists", mcfg.MilitaristBonus, false, T({issuetext}))
  53.         city.NewMartialLawThread = CreateGameTimeThread(function()
  54.                 city:ChangeUnrest(-1)
  55.                 Sleep(const.MonthLength * 12)
  56.         end)
  57.         return
  58.     end
  59.     function MartialLawTurnOff(edict)
  60.         local city = edict.city
  61.         local repealtext = ModT("REPEALED_EDICT", "Repealed <arg1> Edict", T({6601,"Martial Law"}))
  62.         city:RemoveModifier("MyMartialLawStateCrime")
  63.         city:RemoveModifier("MyMartialLawTourismRating")
  64.         city:RemoveModifier("MyMartialLawProduction")
  65.         city:RemoveModifier("MyMartialLawProductionRaw")
  66.         city.FactionStanding:Add("militarists", -mcfg.MilitaristBonus, false, T({repealtext}))
  67.         DeleteThread(city.NewMartialLawThread)
  68.         city.NewMartialLawThread = nil
  69.     end
  70.     DataInstances.Edict.MartialLaw.SequenceOn = MartialLawTurnOn
  71.     DataInstances.Edict.MartialLaw.SequenceOff = MartialLawTurnOff
  72.     DataInstances.Edict.MartialLaw.CondSeq = MartialLawCheck
  73.     -- Remove PreExisting MartialLawEffect to eliminate Unrest impact
  74.     for i = #DataInstances.Scenario.EdictEffects, 1, -1  do
  75.         if DataInstances.Scenario.EdictEffects[i].name == "MartialLawEffect" then
  76.             table.remove(DataInstances.Scenario.EdictEffects,i)
  77.         end
  78.     end
  79. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement