Advertisement
Guest User

Untitled

a guest
Sep 26th, 2017
65
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 21.76 KB | None | 0 0
  1. function Run()
  2. local Level = CityGetLevel("")
  3. local DefaultID = GetID("")
  4. local City0ID = GetID("City0")
  5. local Hour = math.mod(GetGametime(), 24)
  6.  
  7. if City0ID == -1 then
  8. local CityCount = ScenarioGetObjects("Settlement", 1, "City")
  9. City0ID = GetID("City0")
  10. end
  11.  
  12. if Level==1 then
  13. -- kontor city - do nothing here
  14. return
  15. elseif Level==2 then
  16. citypinghour_CheckVillage()
  17. elseif Level==3 then
  18. citypinghour_CheckSmallTown()
  19. elseif Level==4 then
  20. citypinghour_CheckTown()
  21. elseif Level==5 then
  22. citypinghour_CheckCapital()
  23. elseif Level==6 then
  24. citypinghour_CheckCapital()
  25. end
  26.  
  27. citypinghour_CheckMusicians()
  28. citypinghour_CheckCrimes()
  29.  
  30. -- Alderman Chooser
  31. if GetData("#AldermanChooser")==nil then
  32. SetData("#AldermanChooser",GetID(""))
  33. elseif GetData("#AldermanChooser")==0 then
  34. SetData("#AldermanChooser",GetID(""))
  35. end
  36. if GetData("#AldermanChooser")==GetID("") then
  37. citypinghour_CheckAlderman()
  38. end
  39.  
  40. -- Imperial Office Chooser
  41. if GetData("#ImperialChooser")==nil then
  42. SetData("#ImperialChooser",GetID(""))
  43. elseif GetData("#ImperialChooser")==0 then
  44. SetData("#ImperialChooser",GetID(""))
  45. end
  46. if GetData("#ImperialChooser")==GetID("") then
  47. citypinghour_CheckImperialOfficer()
  48. end
  49.  
  50. if City0ID == GetID("") then
  51. MeasureRun("","","RandomEvents",true)
  52. end
  53.  
  54. end
  55.  
  56. function CheckMusicians()
  57. --ScenarioGetRandomObject("cl_Settlement","MusicianHomeCity")
  58. if not CityGetRandomBuilding("",3,23,-1,-1,FILTER_IGNORE,"MusicianHomeBuilding") then
  59. return
  60. end
  61. GetPosition("MusicianHomeBuilding","MusicianSpawnPos")
  62. if not AliasExists("#Musician1") then
  63. SimCreate(900,"MusicianHomeBuilding","MusicianSpawnPos","#Musician1")
  64. SimSetBehavior("#Musician1","Musician")
  65. end
  66. if not AliasExists("#Musician2") then
  67. SimCreate(901,"MusicianHomeBuilding","MusicianSpawnPos","#Musician2")
  68. SimSetBehavior("#Musician2","Musician")
  69. end
  70. if not AliasExists("#Musician3") then
  71. SimCreate(902,"MusicianHomeBuilding","MusicianSpawnPos","#Musician3")
  72. SimSetBehavior("#Musician3","Musician")
  73. end
  74. end
  75.  
  76. function CheckCrimes()
  77.  
  78. citypinghour_SetPlayerDynastyImmortal()
  79. ListCrimeReport("crime_report_list") -- liste mit (DynastyID, ActorID, CrimeTotal)
  80.  
  81. -- modifizieren
  82. local TopBias = -1
  83. local TopReport = -1
  84. local TopDynastyID = -1
  85. local TopActorID = -1
  86. local TopCrimeTotal = -1
  87.  
  88. local DepositionTopBias = -1
  89. local DepositionTopReport = -1
  90. local DepositionTopDynastyID = -1
  91. local DepositionTopActorID = -1
  92. local DepositionTopCrimeTotal = -1
  93.  
  94. for iReport = 0,ListSize("crime_report_list")-1 do
  95. ListGetElement("crime_report_list",iReport,"crime_report")
  96. local DynastyID = GetProperty("crime_report", "DynastyID")
  97. local ActorID = GetProperty("crime_report", "ActorID")
  98. local CrimeTotal = GetProperty("crime_report", "CrimeTotal")
  99.  
  100. if GetAliasByID(ActorID,"_actor") then
  101. if SimCanBeCharged("_actor")==0 then
  102. if GetAliasByID(DynastyID,"_dyn") then
  103. for iMember = 0, DynastyGetMemberCount("_dyn")-1 do
  104. if DynastyGetMember("_dyn",iMember,"_sim") then
  105. if GetSettlementID("_sim")==GetID("") then
  106. local Bias = CrimeTotal * 10 -- 0.. ~200
  107.  
  108. local Hours = GetHoursToNextTrial("")
  109. if Hours>16 then
  110. Bias = Bias - Hours * 2 --
  111. end
  112.  
  113. local DiplomaticState = DynastyGetDiplomacyState("_dyn", "_actor")
  114.  
  115. if DiplomaticState> DIP_NEUTRAL then
  116. Bias = 0
  117. elseif DiplomaticState==DIP_FOE then
  118. Bias = Bias
  119. else
  120. Bias = Bias * ((100.0-GetFavorToDynasty("_dyn","_actor"))/100)
  121. end
  122.  
  123. if GetImpactValue("_actor","HaveImmunity")==1 then
  124. if Bias>DepositionTopBias and Bias>0 then
  125. DepositionTopBias = Bias
  126. DepositionTopReport = iReport
  127. DepositionTopDynastyID = DynastyID
  128. DepositionTopActorID = GetID("_actor")
  129. DepositionTopCrimeTotal = CrimeTotal
  130. end
  131. else
  132. if Bias>TopBias and Bias>0 then
  133. TopBias = Bias
  134. TopReport = iReport
  135. TopDynastyID = DynastyID
  136. TopActorID = GetID("_actor")
  137. TopCrimeTotal = CrimeTotal
  138. end
  139. end
  140. end
  141. end
  142. end
  143. end
  144. end
  145. end
  146. end
  147.  
  148. --OutputDebugString("Best Accuser in "..GetName("").." is "..TopDynastyID.." with "..TopBias.." pts (actor="..TopActorID..",crimetotal="..TopCrimeTotal..").\n")
  149. --OutputDebugString("Best Deposition in "..GetName("").." is "..DepositionTopDynastyID.." with "..DepositionTopBias.." pts (actor="..DepositionTopActorID..",crimetotal="..DepositionTopCrimeTotal..").\n")
  150. SetProperty("","Crimes_TopAccuserDynastyID",TopDynastyID)
  151. SetProperty("","Crimes_TopActorID",TopActorID)
  152. SetProperty("","Crimes_TopBias",TopBias)
  153. SetProperty("","Crimes_TopCrimeTotal",TopCrimeTotal)
  154.  
  155. SetProperty("","Crimes_DepositionTopActorID",DepositionTopActorID)
  156. end
  157.  
  158. function CheckVillage()
  159.  
  160. citypinghour_CheckBuilding( GL_BUILDING_CLASS_PUBLICBUILDING, GL_BUILDING_TYPE_TOWNHALL, 1)
  161. citypinghour_CheckBuilding( GL_BUILDING_CLASS_PUBLICBUILDING, GL_BUILDING_TYPE_PRISON, 1)
  162. citypinghour_CheckBuilding( GL_BUILDING_CLASS_PUBLICBUILDING, GL_BUILDING_TYPE_WELL, 1, 1)
  163. citypinghour_CheckBuilding( GL_BUILDING_CLASS_PUBLICBUILDING, GL_BUILDING_TYPE_LINGERPLACE, 1, 1)
  164. citypinghour_CheckBuilding( GL_BUILDING_CLASS_PUBLICBUILDING, GL_BUILDING_TYPE_SCHOOL, 1)
  165. citypinghour_CheckBuilding( GL_BUILDING_CLASS_PUBLICBUILDING, GL_BUILDING_TYPE_GRAVEYARD, -1)
  166. citypinghour_CheckBuilding( GL_BUILDING_CLASS_PUBLICBUILDING, GL_BUILDING_TYPE_WEDDINGCHAPEL, 1)
  167. citypinghour_CheckBuilding( GL_BUILDING_CLASS_PUBLICBUILDING, GL_BUILDING_TYPE_SOLDIERPLACE, 1)
  168.  
  169. AICheckWorkingPlace("", GL_BUILDING_TYPE_RANGERHUT, 1)
  170. AICheckWorkingPlace("", GL_BUILDING_TYPE_FARM, 1)
  171. AICheckWorkingPlace("", GL_BUILDING_TYPE_MINE, 1)
  172. AICheckWorkingPlace("", GL_BUILDING_TYPE_TAVERN, 1)
  173. AICheckWorkingPlace("", GL_BUILDING_TYPE_HOSPITAL, 1)
  174.  
  175. citypinghour_CheckChurch(1)
  176.  
  177. local Mines = CityGetBuildingCount("", -1, GL_BUILDING_TYPE_MINE, -1, -1, FILTER_HAS_DYNASTY)
  178. local Farms = CityGetBuildingCount("", -1, GL_BUILDING_TYPE_FARM, -1, -1, FILTER_HAS_DYNASTY)
  179. local Rangers = CityGetBuildingCount("", -1, GL_BUILDING_TYPE_RANGERHUT, -1, -1, FILTER_HAS_DYNASTY)
  180.  
  181. if Mines>0 then
  182. AICheckWorkingPlace("", GL_BUILDING_TYPE_SMITHY, 1)
  183. end
  184.  
  185. if Farms>0 then
  186. AICheckWorkingPlace("", GL_BUILDING_TYPE_BAKERY, 1)
  187. end
  188.  
  189. if Rangers>0 then
  190. AICheckWorkingPlace("", GL_BUILDING_TYPE_JOINERY, 1)
  191. end
  192. end
  193.  
  194. function CheckSmallTown()
  195.  
  196. CitySetMaxWorkerhutLevel("", 2)
  197.  
  198. citypinghour_CheckBuilding( GL_BUILDING_CLASS_PUBLICBUILDING, GL_BUILDING_TYPE_TOWNHALL, 2)
  199. citypinghour_CheckBuilding( GL_BUILDING_CLASS_MARKET, GL_BUILDING_TYPE_HARBOR, 2)
  200. citypinghour_CheckBuilding( GL_BUILDING_CLASS_PUBLICBUILDING, GL_BUILDING_TYPE_PRISON, 1)
  201. citypinghour_CheckBuilding( GL_BUILDING_CLASS_PUBLICBUILDING, GL_BUILDING_TYPE_WELL, 1, 2)
  202. citypinghour_CheckBuilding( GL_BUILDING_CLASS_PUBLICBUILDING, GL_BUILDING_TYPE_LINGERPLACE, 1, 2)
  203. citypinghour_CheckBuilding( GL_BUILDING_CLASS_PUBLICBUILDING, GL_BUILDING_TYPE_SCHOOL, 1)
  204. citypinghour_CheckBuilding( GL_BUILDING_CLASS_PUBLICBUILDING, GL_BUILDING_TYPE_GRAVEYARD, -1)
  205. citypinghour_CheckBuilding( GL_BUILDING_CLASS_PUBLICBUILDING, GL_BUILDING_TYPE_EXECUTIONS_PLACE, 1)
  206. citypinghour_CheckBuilding( GL_BUILDING_CLASS_PUBLICBUILDING, GL_BUILDING_TYPE_BANK, 1)
  207. citypinghour_CheckBuilding( GL_BUILDING_CLASS_PUBLICBUILDING, GL_BUILDING_TYPE_WEDDINGCHAPEL, 1)
  208. citypinghour_CheckBuilding( GL_BUILDING_CLASS_PUBLICBUILDING, GL_BUILDING_TYPE_SOLDIERPLACE, 1)
  209.  
  210. AICheckWorkingPlace("", GL_BUILDING_TYPE_RANGERHUT, 1)
  211. AICheckWorkingPlace("", GL_BUILDING_TYPE_FARM, 1)
  212. AICheckWorkingPlace("", GL_BUILDING_TYPE_MINE, 1)
  213. AICheckWorkingPlace("", GL_BUILDING_TYPE_TAVERN, 1)
  214. AICheckWorkingPlace("", GL_BUILDING_TYPE_ALCHEMIST, 1)
  215. AICheckWorkingPlace("", GL_BUILDING_TYPE_HOSPITAL, 1)
  216. AICheckWorkingPlace("", GL_BUILDING_TYPE_BANKHOUSE, 1)
  217.  
  218. citypinghour_CheckChurch(1)
  219.  
  220. local Mines = CityGetBuildingCount("", -1, GL_BUILDING_TYPE_MINE, -1, -1, FILTER_HAS_DYNASTY)
  221. local Farms = CityGetBuildingCount("", -1, GL_BUILDING_TYPE_FARM, -1, -1, FILTER_HAS_DYNASTY)
  222. local Rangers = CityGetBuildingCount("", -1, GL_BUILDING_TYPE_RANGERHUT, -1, -1, FILTER_HAS_DYNASTY)
  223.  
  224. if Mines>0 then
  225. AICheckWorkingPlace("", GL_BUILDING_TYPE_SMITHY, 1)
  226. end
  227.  
  228. if Farms>0 then
  229. AICheckWorkingPlace("", GL_BUILDING_TYPE_BAKERY, 1)
  230. AICheckWorkingPlace("", GL_BUILDING_TYPE_TAILORING, 1)
  231. end
  232.  
  233. if Rangers>0 then
  234. AICheckWorkingPlace("", GL_BUILDING_TYPE_JOINERY, 1)
  235. end
  236.  
  237. if not HasProperty("", "AI_Robber_Checked") then
  238. if AICheckWorkingPlace("", GL_BUILDING_TYPE_ROBBER, 1) then
  239. SetProperty("", "AI_Robber_Checked")
  240. end
  241. end
  242. end
  243.  
  244. function CheckTown()
  245.  
  246. CitySetMaxWorkerhutLevel("", 3)
  247.  
  248. citypinghour_CheckBuilding( GL_BUILDING_CLASS_PUBLICBUILDING, GL_BUILDING_TYPE_TOWNHALL, 3)
  249. citypinghour_CheckBuilding( GL_BUILDING_CLASS_MARKET, GL_BUILDING_TYPE_HARBOR, 2)
  250. citypinghour_CheckBuilding( GL_BUILDING_CLASS_PUBLICBUILDING, GL_BUILDING_TYPE_PRISON, 2)
  251. citypinghour_CheckBuilding( GL_BUILDING_CLASS_PUBLICBUILDING, GL_BUILDING_TYPE_WELL, 1, 3)
  252. citypinghour_CheckBuilding( GL_BUILDING_CLASS_PUBLICBUILDING, GL_BUILDING_TYPE_LINGERPLACE, 1, 4)
  253. citypinghour_CheckBuilding( GL_BUILDING_CLASS_PUBLICBUILDING, GL_BUILDING_TYPE_SCHOOL, 2)
  254. citypinghour_CheckBuilding( GL_BUILDING_CLASS_PUBLICBUILDING, GL_BUILDING_TYPE_GRAVEYARD, -1)
  255. citypinghour_CheckBuilding( GL_BUILDING_CLASS_PUBLICBUILDING, GL_BUILDING_TYPE_EXECUTIONS_PLACE, 2)
  256. citypinghour_CheckBuilding( GL_BUILDING_CLASS_PUBLICBUILDING, GL_BUILDING_TYPE_BANK, 2)
  257. citypinghour_CheckBuilding( GL_BUILDING_CLASS_PUBLICBUILDING, GL_BUILDING_TYPE_WEDDINGCHAPEL, 1)
  258. citypinghour_CheckBuilding( GL_BUILDING_CLASS_PUBLICBUILDING, GL_BUILDING_TYPE_SOLDIERPLACE, 1)
  259.  
  260. AICheckWorkingPlace("", GL_BUILDING_TYPE_RANGERHUT, 1)
  261. AICheckWorkingPlace("", GL_BUILDING_TYPE_FARM, 2)
  262. AICheckWorkingPlace("", GL_BUILDING_TYPE_MINE, 2)
  263. AICheckWorkingPlace("", GL_BUILDING_TYPE_TAVERN, 1)
  264. AICheckWorkingPlace("", GL_BUILDING_TYPE_ALCHEMIST, 1)
  265. AICheckWorkingPlace("", GL_BUILDING_TYPE_HOSPITAL, 1)
  266. AICheckWorkingPlace("", GL_BUILDING_TYPE_SMITHY, 1)
  267. AICheckWorkingPlace("", GL_BUILDING_TYPE_BANKHOUSE, 1)
  268.  
  269. citypinghour_CheckChurch(2)
  270.  
  271. local Farms = CityGetBuildingCount("", -1, GL_BUILDING_TYPE_FARM, -1, -1, FILTER_HAS_DYNASTY)
  272. local Rangers = CityGetBuildingCount("", -1, GL_BUILDING_TYPE_RANGERHUT, -1, -1, FILTER_HAS_DYNASTY)
  273.  
  274. if Farms>0 then
  275. AICheckWorkingPlace("", GL_BUILDING_TYPE_BAKERY, 1)
  276. AICheckWorkingPlace("", GL_BUILDING_TYPE_TAILORING, 1)
  277. end
  278.  
  279. if Rangers>0 then
  280. AICheckWorkingPlace("", GL_BUILDING_TYPE_JOINERY, 1)
  281. end
  282.  
  283. if not HasProperty("", "AI_Robber_Checked") then
  284. if AICheckWorkingPlace("", GL_BUILDING_TYPE_ROBBER, 1) then
  285. SetProperty("", "AI_Robber_Checked")
  286. end
  287. end
  288.  
  289. if not HasProperty("", "AI_Thief_Checked") then
  290. if AICheckWorkingPlace("", GL_BUILDING_TYPE_THIEF, 1) then
  291. SetProperty("", "AI_Thief_Checked")
  292. end
  293. end
  294.  
  295. end
  296.  
  297. function CheckCapital()
  298.  
  299. CitySetMaxWorkerhutLevel("", 3)
  300.  
  301. citypinghour_CheckBuilding( GL_BUILDING_CLASS_PUBLICBUILDING, GL_BUILDING_TYPE_TOWNHALL, 4)
  302. citypinghour_CheckBuilding( GL_BUILDING_CLASS_MARKET, GL_BUILDING_TYPE_HARBOR, 3)
  303. citypinghour_CheckBuilding( GL_BUILDING_CLASS_PUBLICBUILDING, GL_BUILDING_TYPE_PRISON, 2)
  304. citypinghour_CheckBuilding( GL_BUILDING_CLASS_PUBLICBUILDING, GL_BUILDING_TYPE_WELL, 1, 3)
  305. citypinghour_CheckBuilding( GL_BUILDING_CLASS_PUBLICBUILDING, GL_BUILDING_TYPE_LINGERPLACE, 1, 6)
  306. citypinghour_CheckBuilding( GL_BUILDING_CLASS_PUBLICBUILDING, GL_BUILDING_TYPE_SCHOOL, 3)
  307. citypinghour_CheckBuilding( GL_BUILDING_CLASS_PUBLICBUILDING, GL_BUILDING_TYPE_GRAVEYARD, -1)
  308. citypinghour_CheckBuilding( GL_BUILDING_CLASS_PUBLICBUILDING, GL_BUILDING_TYPE_EXECUTIONS_PLACE, 2)
  309. citypinghour_CheckBuilding( GL_BUILDING_CLASS_PUBLICBUILDING, GL_BUILDING_TYPE_BANK, 2)
  310. citypinghour_CheckBuilding( GL_BUILDING_CLASS_PUBLICBUILDING, GL_BUILDING_TYPE_WEDDINGCHAPEL, 1)
  311. citypinghour_CheckBuilding( GL_BUILDING_CLASS_PUBLICBUILDING, GL_BUILDING_TYPE_SOLDIERPLACE, 1)
  312.  
  313. AICheckWorkingPlace("", GL_BUILDING_TYPE_RANGERHUT, 2)
  314. AICheckWorkingPlace("", GL_BUILDING_TYPE_FARM, 2)
  315. AICheckWorkingPlace("", GL_BUILDING_TYPE_MINE, 2)
  316. AICheckWorkingPlace("", GL_BUILDING_TYPE_TAVERN, 2)
  317. AICheckWorkingPlace("", GL_BUILDING_TYPE_ALCHEMIST, 1)
  318. AICheckWorkingPlace("", GL_BUILDING_TYPE_HOSPITAL, 1)
  319. AICheckWorkingPlace("", GL_BUILDING_TYPE_SMITHY, 1)
  320. AICheckWorkingPlace("", GL_BUILDING_TYPE_BANKHOUSE, 1)
  321.  
  322. citypinghour_CheckChurch(2)
  323.  
  324. local Farms = CityGetBuildingCount("", -1, GL_BUILDING_TYPE_FARM, -1, -1, FILTER_HAS_DYNASTY) + CityGetBuildingCount("", -1, GL_BUILDING_TYPE_FISHINGHUT, -1, -1, FILTER_HAS_DYNASTY)
  325. local Rangers = CityGetBuildingCount("", -1, GL_BUILDING_TYPE_RANGERHUT, -1, -1, FILTER_HAS_DYNASTY)
  326.  
  327. if Farms>0 then
  328. AICheckWorkingPlace("", GL_BUILDING_TYPE_BAKERY, 1)
  329. AICheckWorkingPlace("", GL_BUILDING_TYPE_TAILORING, 1)
  330. end
  331.  
  332. if Rangers>0 then
  333. AICheckWorkingPlace("", GL_BUILDING_TYPE_JOINERY, 1)
  334. end
  335.  
  336. if not HasProperty("", "AI_Robber_Checked") then
  337. if AICheckWorkingPlace("", GL_BUILDING_TYPE_ROBBER, 1) then
  338. SetProperty("", "AI_Robber_Checked")
  339. end
  340. end
  341.  
  342. if not HasProperty("", "AI_Thief_Checked") then
  343. if AICheckWorkingPlace("", GL_BUILDING_TYPE_THIEF, 1) then
  344. SetProperty("", "AI_Thief_Checked")
  345. end
  346. end
  347.  
  348. end
  349.  
  350. function CheckBuilding(Class, Type, Level, Count)
  351.  
  352. if not Count then
  353. Count = 1
  354. end
  355.  
  356. local BuildTotal = CityGetBuildings("", Class, Type, -1, -1, FILTER_IGNORE, "Found")
  357. local Ist = 0
  358.  
  359. for l=0,BuildTotal-1 do
  360. if BuildingGetLevel("Found"..l) >= Level then
  361. Ist = Ist + 1
  362. if Ist >= Count then
  363. return
  364. end
  365. end
  366. end
  367.  
  368. for l=0,BuildTotal-1 do
  369. if BuildingGetLevel("Found"..l) < Level then
  370. BuildingLevelMeUp("Found"..l, -1)
  371. Ist = Ist + 1
  372. if Ist>=Count then
  373. return
  374. end
  375. end
  376. end
  377.  
  378. while Ist < Count do
  379. local Proto = ScenarioFindBuildingProto(Class, Type, Level, -1)
  380. if not Proto or Proto==-1 then
  381. break
  382. end
  383.  
  384. if not CityBuildNewBuilding("", Proto, nil, "Building") then
  385. break
  386. end
  387. Ist = Ist + 1
  388. end
  389.  
  390. end
  391.  
  392. function CheckChurch(MaxCount)
  393. local ChEv = CityGetBuildingCount("", -1, GL_BUILDING_TYPE_CHURCH_EV, -1, -1, FILTER_HAS_DYNASTY)
  394. local ChCa = CityGetBuildingCount("", -1, GL_BUILDING_TYPE_CHURCH_CATH, -1, -1, FILTER_HAS_DYNASTY)
  395.  
  396. if ChEv + ChCa < MaxCount then
  397. -- no church, so create one
  398.  
  399. local TotalChEv = CityGetBuildingCount("", -1, GL_BUILDING_TYPE_CHURCH_EV, -1, -1, FILTER_NO_DYNASTY)
  400. local TotalChCa = CityGetBuildingCount("", -1, GL_BUILDING_TYPE_CHURCH_CATH, -1, -1, FILTER_NO_DYNASTY)
  401.  
  402. if TotalChEv>0 and TotalChCa==0 then
  403. AICheckWorkingPlace("", GL_BUILDING_TYPE_CHURCH_EV, ChEv+1)
  404. elseif TotalChCa>0 and TotalChEv==0 then
  405. AICheckWorkingPlace("", GL_BUILDING_TYPE_CHURCH_CATH, ChCa+1)
  406. else
  407. if Rand(100) < 50 then
  408. AICheckWorkingPlace("", GL_BUILDING_TYPE_CHURCH_EV, ChEv+1)
  409. else
  410. AICheckWorkingPlace("", GL_BUILDING_TYPE_CHURCH_CATH, ChCa+1)
  411. end
  412. end
  413. end
  414. end
  415.  
  416. function CheckAlderman()
  417. local currentRound = GetRound()
  418. if currentRound > 1 then
  419.  
  420. local currentGameTime = math.mod(GetGametime(),24)
  421. if (currentGameTime == 12) or ((currentGameTime > 12) and (currentGameTime < 13)) then
  422.  
  423. local year = GetYear() - 2 + math.mod(GetGametime(),6)
  424. local DynCount = ScenarioGetObjects("cl_Dynasty", 99, "Dyn")
  425. local SimCount
  426. local Alias
  427. local SimArray = {}
  428. local SimFameArray = {}
  429. local SimArrayCount = 0
  430.  
  431. for d=0,DynCount-1 do
  432. Alias = "Dyn"..d
  433. if GetID(Alias)>0 and DynastyIsPlayer(Alias) or DynastyIsAI(Alias) or DynastyIsShadow(Alias) then
  434. SimCount = DynastyGetMemberCount(Alias)
  435. for e=0,SimCount do
  436. DynastyGetMember(Alias, e, "Sim")
  437. if HasProperty("Sim", "PatronMaster") or HasProperty("Sim", "ArtisanMaster") or HasProperty("Sim", "ScholarMaster") or HasProperty("Sim", "ChiselerMaster") then
  438. local num = 0
  439. while num<100 do
  440. if chr_SimGetFameLevel("Sim")>1 and chr_DynastyGetFameLevel("Sim")>0 then
  441. if SimArray[num]==GetID("Sim") then
  442. break
  443. elseif SimArray[num]==nil then
  444. SimArray[num] = GetID("Sim")
  445. SimFameArray[num] = chr_SimGetFame("Sim") + math.floor(chr_DynastyGetFame("Sim")/10)
  446. SimArrayCount = SimArrayCount + 1
  447. break
  448. end
  449. end
  450. num = num + 1
  451. end
  452. end
  453. end
  454. end
  455. end
  456.  
  457. local AldermanWinner
  458. local AldermanFame = -1
  459. if SimArrayCount>0 then
  460. for x=0,SimArrayCount do
  461. if SimFameArray[x]~=nil and SimFameArray[x]>AldermanFame then
  462. AldermanFame = SimFameArray[x]
  463. AldermanWinner = x
  464. end
  465. end
  466.  
  467. local oldalderman = chr_GetAlderman()
  468. if oldalderman>0 then
  469. GetAliasByID(oldalderman,"Old")
  470. chr_SimAddImperialFame("Old",1)
  471. RemoveProperty("Old", "Alderman")
  472. end
  473. SetData("#Alderman",0)
  474. if GetAliasByID(SimArray[AldermanWinner],"New") then
  475. SetProperty("New","Alderman",1)
  476. SetData("#Alderman",SimArray[AldermanWinner])
  477.  
  478. local label
  479. if SimGetClass("New")==1 then
  480. label = "@L_GUILDHOUSE_MASTERLIST_PATRON"
  481. elseif SimGetClass("New")==2 then
  482. label = "@L_GUILDHOUSE_MASTERLIST_ARTISAN"
  483. elseif SimGetClass("New")==3 then
  484. label = "@L_GUILDHOUSE_MASTERLIST_SCHOLAR"
  485. elseif SimGetClass("New")==4 then
  486. label = "@L_GUILDHOUSE_MASTERLIST_CHISELER"
  487. end
  488.  
  489. if SimGetGender("New")==GL_GENDER_MALE then
  490. label = label.."_MALE_+0"
  491. else
  492. label = label.."_FEMALE_+0"
  493. end
  494.  
  495. GetSettlement("New", "settlement")
  496. famelevelsim = "@L_GUILDHOUSE_FAME_SIM_+"..chr_SimGetFameLevel("New")
  497. fameleveldyn = "@L_GUILDHOUSE_FAME_DYNASTY_+"..chr_DynastyGetFameLevel("New")
  498.  
  499. MsgNewsNoWait("All","New","","politics",-1,
  500. "@L_CHECKALDERMAN_HEAD_+0",
  501. "@L_CHECKALDERMAN_BODY_+0",
  502. GetYear(),GetID("New"), label, GetID("settlement"), famelevelsim, chr_SimGetFame("New"), fameleveldyn, chr_DynastyGetFame("New"))
  503.  
  504. end
  505. else
  506. SetData("#Alderman",0)
  507. end
  508. end
  509. end
  510. end
  511.  
  512. function CheckImperialOfficer()
  513. local currentRound = GetRound()
  514. if currentRound > -1 then
  515.  
  516. local currentGameTime = math.mod(GetGametime(),24)
  517. if (currentGameTime == 13) or ((currentGameTime > 13) and (currentGameTime < 14)) then
  518.  
  519. local year = GetYear() - 2 + math.mod(GetGametime(),6)
  520. local DynCount = ScenarioGetObjects("cl_Dynasty", 99, "Dyn")
  521. local SimCount
  522. local Alias
  523. local SimArray = {}
  524. local SimFameArray = {}
  525. local SimArrayCount = 0
  526.  
  527. for d=0,DynCount-1 do
  528. Alias = "Dyn"..d
  529. if GetID(Alias)>0 and DynastyIsPlayer(Alias) or DynastyIsAI(Alias) or DynastyIsShadow(Alias) then
  530. SimCount = DynastyGetMemberCount(Alias)
  531. for e=0,SimCount do
  532. DynastyGetMember(Alias, e, "Sim")
  533. if not SimGetOfficeLevel("Sim")==7 then
  534. local num = 0
  535. while num<100 do
  536. if chr_SimGetImperialFameLevel("Sim")>1 and chr_DynastyGetImperialFameLevel("Sim")>0 then
  537. if SimArray[num]==GetID("Sim") then
  538. break
  539. elseif SimArray[num]==nil then
  540. SimArray[num] = GetID("Sim")
  541. SimFameArray[num] = chr_SimGetImperialFame("Sim") + math.floor(chr_DynastyGetImperialFame("Sim")/10)
  542. SimArrayCount = SimArrayCount + 1
  543. break
  544. end
  545. end
  546. num = num + 1
  547. end
  548. end
  549. end
  550. end
  551. end
  552.  
  553. local ImperialWinner
  554. local ImperialFame = -1
  555. if SimArrayCount>0 then
  556. for x=0,SimArrayCount do
  557. if SimFameArray[x]~=nil and SimFameArray[x]>ImperialFame then
  558. ImperialFame = SimFameArray[x]
  559. ImperialWinner = x
  560. end
  561. end
  562.  
  563. local oldimperialofficer = chr_GetImperialOfficer()
  564. if oldimperialofficer>0 then
  565. GetAliasByID(oldimperialofficer,"Old")
  566. RemoveProperty("Old", "ImperialOfficer")
  567. end
  568. SetData("#ImperialOfficer",0)
  569. if GetAliasByID(SimArray[ImperialWinner],"New") then
  570. SetProperty("New","ImperialOfficer",1)
  571. SetData("#ImperialOfficer",SimArray[ImperialWinner])
  572.  
  573. local label = "@L_IMPERIAL_OFFICER"
  574. local gender = ""
  575.  
  576. if SimGetGender("New")==GL_GENDER_MALE then
  577. label = label.."_MALE_+1"
  578. gender = gender.."MALE"
  579. else
  580. label = label.."_FEMALE_+1"
  581. gender = gender.."MALE"
  582. end
  583.  
  584. GetScenario("scenario")
  585. local mapid = GetProperty("scenario", "mapid")
  586. local lordlabel = "@L_SCENARIO_LORD_"..GetDatabaseValue("maps", mapid, "lordship").."_+0"
  587.  
  588. GetSettlement("New", "settlement")
  589. famelevelsim = "@L_IMPERIAL_FAME_SIM_+"..chr_SimGetImperialFameLevel("New")
  590. fameleveldyn = "@L_IMPERIAL_FAME_DYNASTY_+"..chr_DynastyGetImperialFameLevel("New")
  591.  
  592. MsgNewsNoWait("All","New","","politics",-1,
  593. "@L_IMPERIAL_OFFICER_"..gender.."_+0",
  594. "@L_CHECKIMPERIALOFFICER_BODY_+0",
  595. GetYear(), GetID("New"), GetID("settlement"), label, famelevelsim, chr_SimGetImperialFame("New"), fameleveldyn, chr_DynastyGetImperialFame("New"), lordlabel)
  596.  
  597. end
  598. else
  599. SetData("#ImperialOfficer",0)
  600. end
  601. end
  602. end
  603. end
  604.  
  605. function SetPlayerDynastyImmortal()
  606.  
  607. GetLocalPlayerDynasty("dynasty")
  608. local iCount = DynastyGetFamilyMemberCount("dynasty")
  609. local CHEAT_ImmortalAge = 18
  610.  
  611. local iIndex
  612. local iCIndex
  613. local DynAge
  614. local iChildCount
  615.  
  616. local SimArray
  617.  
  618. for iIndex = 0, iCount-1 do
  619.  
  620. if DynastyGetFamilyMember("dynasty", iIndex, "member") then
  621. DynAge = SimGetAge( "member" )
  622. LogMessage("DynAge: "..DynAge..".")
  623. if DynAge > CHEAT_ImmortalAge then
  624. SimSetAge( "member" ,CHEAT_ImmortalAge)
  625. end
  626. end
  627. end
  628. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement