Skip to content

Commit 676bb37

Browse files
authored
Merge pull request #204 from Tiagobuzzz/codex/conectar-sistema-com-religiões-e-cultura
2 parents e79906f + c7cc6ae commit 676bb37

File tree

2 files changed

+85
-0
lines changed

2 files changed

+85
-0
lines changed
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
using System;
2+
using UltraWorldAI.Politics;
3+
4+
namespace UltraWorldAI.Religion;
5+
6+
public static class ReligiousConflictSystem
7+
{
8+
public static void ProclaimProphecy(string religionName, string title, string trigger, string prediction)
9+
{
10+
var religion = ReligionSystem.Religions.Find(r => r.Name == religionName);
11+
if (religion == null) return;
12+
13+
ProphecySystem.Create(title, religionName, "sacerdotes", trigger, prediction);
14+
HistorySystem.LogEvent($"{religionName} proclamou a profecia '{title}'");
15+
}
16+
17+
public static void TriggerSchism(string doctrineTitle, string founderId, string reason)
18+
{
19+
var doctrine = DoctrineEngine.Doctrines.Find(d => d.Title == doctrineTitle);
20+
if (doctrine == null) return;
21+
22+
var cult = CultSplit.CreateCultFromDoctrine(doctrine, founderId, reason);
23+
HistorySystem.LogEvent($"{founderId} fundou o culto {cult.Name}");
24+
}
25+
26+
public static void StartHolyWar(string religionName, string region)
27+
{
28+
var religion = ReligionSystem.Religions.Find(r => r.Name == religionName);
29+
if (religion == null) return;
30+
31+
var cause = $"Guerra santa de {religionName} em {region}";
32+
HouseWarSystem.DeclareWar(religionName, region, cause);
33+
HistorySystem.LogEvent(cause);
34+
}
35+
}
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
using UltraWorldAI;
2+
using UltraWorldAI.Politics;
3+
using UltraWorldAI.Religion;
4+
using Xunit;
5+
6+
public class ReligiousConflictSystemTests
7+
{
8+
[Fact]
9+
public void ProclaimProphecyAddsProphecyAndLogsEvent()
10+
{
11+
ReligionSystem.Religions.Clear();
12+
HistorySystem.Events.Clear();
13+
var religion = ReligionSystem.FoundReligion("Solaris", "Luz eterna", "Sul");
14+
var before = ProphecySystem.AllProphecies.Count;
15+
16+
ReligiousConflictSystem.ProclaimProphecy(religion.Name, "Ascensao", "eclipse", "nova era");
17+
18+
Assert.Equal(before + 1, ProphecySystem.AllProphecies.Count);
19+
Assert.Contains(HistorySystem.Events, e => e.EventName.Contains("proclamou a profecia"));
20+
}
21+
22+
[Fact]
23+
public void TriggerSchismCreatesCultAndLogs()
24+
{
25+
CultSplit.AllCults.Clear();
26+
DoctrineEngine.Doctrines.Clear();
27+
HistorySystem.Events.Clear();
28+
var god = GodFactory.CreateGod("Zaros", DivineDomain.Luz, DivineTemperament.Benevolente);
29+
var doctrine = DoctrineEngine.CreateDoctrine(god);
30+
31+
ReligiousConflictSystem.TriggerSchism(doctrine.Title, "Cyrus", "discordancia");
32+
33+
Assert.Single(CultSplit.AllCults);
34+
Assert.Contains(HistorySystem.Events, e => e.EventName.Contains("fundou o culto"));
35+
}
36+
37+
[Fact]
38+
public void StartHolyWarCreatesWarAndLogs()
39+
{
40+
ReligionSystem.Religions.Clear();
41+
HouseWarSystem.Wars.Clear();
42+
HistorySystem.Events.Clear();
43+
var religion = ReligionSystem.FoundReligion("Lunaris", "Sombra", "Norte");
44+
45+
ReligiousConflictSystem.StartHolyWar(religion.Name, "Norte");
46+
47+
Assert.Single(HouseWarSystem.Wars);
48+
Assert.Contains(HistorySystem.Events, e => e.EventName.Contains("Guerra santa"));
49+
}
50+
}

0 commit comments

Comments
 (0)