Elin Decompiled Documentation EA 23.167 Nightly
Loading...
Searching...
No Matches
FactionBranch Class Reference
Inheritance diagram for FactionBranch:
EClass

Classes

class  Statistics
 

Public Member Functions

int GetNextExp (int _lv=-1)
 
int Evalue (int ele)
 
int GetProductBonus (Chara c)
 
void RefreshEfficiency ()
 
void Abandon ()
 
void OnCreate (Zone zone)
 
void SetOwner (Zone zone)
 
void OnActivateZone ()
 
void OnAfterSimulate ()
 
void OnUnloadMap ()
 
void OnSimulateHour (VirtualDate date)
 
void AutoClean ()
 
void OnSimulateDay (VirtualDate date)
 
void OnAdvanceDay ()
 
void OnSimulateMonth (VirtualDate date)
 
void GenerateGarbage (VirtualDate date)
 
bool TryTrash (Thing t)
 
void ReceivePackages (VirtualDate date)
 
void DailyOutcome (VirtualDate date)
 
void PutInMailBox (Thing t, bool outside=false, bool install=true)
 
Thing GetMailBox ()
 
Point GetMailBoxPos ()
 
int GetResidentTax ()
 
void CalcInnIncome ()
 
void CalcTourismIncome ()
 
void GetDailyIncome ()
 
Thing GetMeal (Chara c)
 
void OnClaimZone ()
 
void OnUnclaimZone ()
 
void ValidateUpgradePolicies ()
 
void Upgrade ()
 
bool CanUpgrade ()
 
int GetUpgradeCost ()
 
void ModExp (int a)
 
string GetHearthHint (int a)
 
void AddFeat (int ele, int v)
 
void AddMemeber (Chara c)
 
void ChangeMemberType (Chara c, FactionMemberType type)
 
void BanishMember (Chara c, bool skipMsg=false)
 
void RemoveMemeber (Chara c)
 
int GetHappiness (FactionMemberType type)
 
bool IsAllDead ()
 
void Recruit (Chara c)
 
Chara GetMaid ()
 
string GetRandomName ()
 
int CountMembers (FactionMemberType type, bool onlyAlive=false)
 
int CountGuests ()
 
int CountWealthyGuests ()
 
void UpdateReqruits (bool clear=false)
 
void AddRecruit (Chara c)
 
void RemoveRecruit (Chara c)
 
int CountNewRecruits ()
 
void ClearNewRecruits ()
 
bool IsRecruit (Chara c)
 
int CountPasture ()
 
int GetPastureCost ()
 
int GetCivility ()
 
float GetHearthIncome ()
 
float GetHearthIncome (string id)
 
int GetTechUpgradeCost (Element e)
 
string Log (string idLang, string ref1=null, string ref2=null, string ref3=null, string ref4=null)
 
string Log (string idLang, Card c1, Card c2, string ref1=null, string ref2=null)
 
string Log (string idLang, Card c1, string ref1=null, string ref2=null, string ref3=null)
 
string LogRaw (string text, string col=null)
 

Public Attributes

int lv = 1
 
int rank
 
int exp
 
int seedPlan
 
int temper
 
int uidMaid
 
int lastUpdateReqruit
 
int incomeShop
 
bool luckyMonth
 
bool luckyMonthDone
 
GStability stability
 
HomeResourceManager resources = new HomeResourceManager()
 
ResearchManager researches = new ResearchManager()
 
PolicyManager policies = new PolicyManager()
 
HappinessManager happiness = new HappinessManager()
 
MeetingManager meetings = new MeetingManager()
 
Thing stash
 
MsgLog log
 
Religion faith
 
ExpeditionManager expeditions = new ExpeditionManager()
 
List< HireInfolistRecruit = new List<HireInfo>()
 
int dateFound
 
int tourism
 
Statistics statistics = new Statistics()
 
Statistics lastStatistics = new Statistics()
 
Zone owner
 
int incomeInn
 
int incomeTourism
 
int efficiency = 100
 
List< Charamembers = new List<Chara>()
 

Properties

int Money [get]
 
int Worth [get]
 
int NumHeirloom [get]
 
int MaxAP [get]
 
int MaxPopulation [get]
 
int MaxSoil [get]
 
int ContentLV [get]
 
int DangerLV [get]
 
bool HasItemProtection [get]
 
bool HasNetwork [get]
 
bool IsTaxFree [get]
 
string RankText [get]
 
string TextLv [get]
 
bool IsStartBranch [get]
 
ElementContainerZone elements [get]
 
int MaxLv [get]
 
- Properties inherited from EClass
static Game game [get]
 
static bool AdvMode [get]
 
static Player player [get]
 
static Chara pc [get]
 
static UI ui [get]
 
static Map _map [get]
 
static Zone _zone [get]
 
static FactionBranch Branch [get]
 
static FactionBranch BranchOrHomeBranch [get]
 
static Faction Home [get]
 
static Faction Wilds [get]
 
static Scene scene [get]
 
static BaseGameScreen screen [get]
 
static GameSetting setting [get]
 
static GameData gamedata [get]
 
static ColorProfile Colors [get]
 
static World world [get]
 
static SourceManager sources [get]
 
static SourceManager editorSources [get]
 
static SoundManager Sound [get]
 
static CoreDebug debug [get]
 

Additional Inherited Members

- Static Public Member Functions inherited from EClass
static int rndSeed (int a, int seed)
 
static int rnd (int a)
 
static int curve (int a, int start, int step, int rate=75)
 
static int rndHalf (int a)
 
static float rndf (float a)
 
static int rndSqrt (int a)
 
static void Wait (float a, Card c)
 
static void Wait (float a, Point p)
 
static int Bigger (int a, int b)
 
static int Smaller (int a, int b)
 
- Static Public Attributes inherited from EClass
static Core core
 

Detailed Description

Definition at line 7 of file FactionBranch.cs.

Member Function Documentation

◆ Abandon()

void FactionBranch.Abandon ( )
inline

Definition at line 236 of file FactionBranch.cs.

237 {
238 }

◆ AddFeat()

void FactionBranch.AddFeat ( int  ele,
int  v 
)
inline

Definition at line 1424 of file FactionBranch.cs.

1425 {
1426 elements.ModBase(ele, v);
1427 WidgetPopText.Say("rewardElement".lang(EClass.sources.elements.map[ele].GetName()));
1428 }
Definition: EClass.cs:5
static SourceManager sources
Definition: EClass.cs:42
Element ModBase(int ele, int v)
ElementContainerZone elements
SourceElement elements
static void Say(string text, FontColor fontColor=FontColor.Default, Sprite sprite=null)

References SourceManager.elements, WidgetPopText.Say(), and EClass.sources.

Referenced by ResearchPlan.ParseReward().

◆ AddMemeber()

void FactionBranch.AddMemeber ( Chara  c)
inline

Definition at line 1430 of file FactionBranch.cs.

1431 {
1432 if (members.Contains(c))
1433 {
1434 return;
1435 }
1438 c.SetGlobal();
1440 c.SetHomeZone(owner);
1441 foreach (Thing item in c.things.List((Thing a) => a.HasTag(CTAG.godArtifact)).Copy())
1442 {
1444 }
1445 if (c.OriginalHostility <= Hostility.Ally)
1446 {
1447 c.c_originalHostility = Hostility.Ally;
1448 }
1449 c.hostility = Hostility.Ally;
1450 c.enemy = null;
1451 c.orgPos = null;
1452 if (c.memberType != 0 && c.memberType != FactionMemberType.Livestock)
1453 {
1454 c.memberType = FactionMemberType.Default;
1455 }
1456 if (c.hp > c.MaxHP)
1457 {
1458 c.hp = c.MaxHP;
1459 }
1460 if (c.mana.value > c.mana.max)
1461 {
1462 c.mana.value = c.mana.max;
1463 }
1464 if (c.stamina.value > c.stamina.max)
1465 {
1466 c.stamina.value = c.stamina.max;
1467 }
1468 members.Add(c);
1472 if (uidMaid == 0 && c.id == "maid")
1473 {
1474 uidMaid = c.uid;
1475 }
1476 }
CTAG
Definition: CTAG.cs:2
FactionMemberType
Hostility
Definition: Hostility.cs:2
void PurgeDuplicateArtifact(Thing af)
Definition: Card.cs:3138
string id
Definition: Card.cs:31
int hp
Definition: Card.cs:226
bool HasTag(CTAG tag)
Definition: Card.cs:2531
int uid
Definition: Card.cs:118
ThingContainer things
Definition: Card.cs:34
void SetHomeZone(Zone zone)
Definition: Chara.cs:1278
Hostility OriginalHostility
Definition: Chara.cs:467
void SetFaction(Faction f)
Definition: Chara.cs:1271
void RefreshWorkElements(ElementContainer parent=null)
Definition: Chara.cs:8326
Faction faction
Definition: Chara.cs:423
Chara SetGlobal(Zone _home, int x, int z)
Definition: Chara.cs:1314
override int MaxHP
Definition: Chara.cs:704
Stats mana
Definition: Chara.cs:1006
FactionMemberType memberType
Definition: Chara.cs:46
Stats stamina
Definition: Chara.cs:998
static Faction Home
Definition: EClass.cs:26
static Chara pc
Definition: EClass.cs:14
void RefreshEfficiency()
List< Chara > members
void RemoveMemeber(Chara c)
FactionBranch FindBranch(Chara c)
Definition: FACTION.cs:425
ElementContainerFaction charaElements
Definition: FACTION.cs:146
void RemoveReserve(Chara c)
Definition: FACTION.cs:357
virtual int value
Definition: Stats.cs:56
virtual int max
Definition: Stats.cs:68
List< Thing > List(Func< Thing, bool > func, bool onlyAccessible=false)
Definition: Thing.cs:8

References Faction.charaElements, Chara.faction, Faction.FindBranch(), Card.HasTag(), EClass.Home, Card.hp, Card.id, item, ThingContainer.List(), Chara.mana, Stats.max, Chara.MaxHP, Chara.memberType, ElementContainerFaction.OnAddMemeber(), Chara.OriginalHostility, EClass.pc, Card.PurgeDuplicateArtifact(), Chara.RefreshWorkElements(), RemoveMemeber(), Faction.RemoveReserve(), Chara.SetFaction(), Chara.SetGlobal(), Chara.SetHomeZone(), Chara.stamina, Card.things, Card.uid, and Stats.value.

Referenced by Chara._MakeAlly(), Zone.AbandonZone(), Zone.ClaimZone(), TraitFoodEggFertilized.Incubate(), QuestVernis.OnChangePhase(), QuestIntroInspector.OnComplete(), QuestVernis.OnComplete(), QuestDialog.OnDropReward(), Game.OnLoad(), QuestDebt.OnStart(), and CoreDebug.QuickStart().

◆ AddRecruit()

void FactionBranch.AddRecruit ( Chara  c)
inline

Definition at line 1682 of file FactionBranch.cs.

1683 {
1684 HireInfo hireInfo = new HireInfo
1685 {
1686 chara = c,
1687 isNew = true
1688 };
1689 hireInfo.deadline = EClass.world.date.GetRaw() + (EClass.rnd(5) + 1) * 1440 + EClass.rnd(24) * 60;
1690 listRecruit.Add(hireInfo);
1691 }
int GetRaw(int offsetHours=0)
Definition: Date.cs:322
static int rnd(int a)
Definition: EClass.cs:58
static World world
Definition: EClass.cs:40
List< HireInfo > listRecruit
GameDate date
Definition: World.cs:6

References World.date, Date.GetRaw(), EClass.rnd(), and EClass.world.

◆ AutoClean()

void FactionBranch.AutoClean ( )
inline

Definition at line 497 of file FactionBranch.cs.

498 {
499 foreach (Chara member in members)
500 {
501 if (member.IsPCParty || !member.ExistsOnMap || member.memberType != 0)
502 {
503 continue;
504 }
505 Hobby hobby = member.GetWork("Clean") ?? member.GetWork("Chore");
506 if (hobby == null)
507 {
508 continue;
509 }
510 int num = (5 + EClass.rnd(5)) * hobby.GetEfficiency(member) / 100;
511 for (int i = 0; i < num; i++)
512 {
513 Thing thingToClean = AI_Haul.GetThingToClean(member);
514 if (thingToClean == null)
515 {
516 break;
517 }
519 }
520 }
521 }
static Thing GetThingToClean(Chara c=null)
Definition: AI_Haul.cs:34
bool ExistsOnMap
Definition: Card.cs:2021
Definition: Chara.cs:10
override bool IsPCParty
Definition: Chara.cs:611
Hobby GetWork(string id)
Definition: Chara.cs:8307
static Zone _zone
Definition: EClass.cs:20
Definition: Hobby.cs:4
int GetEfficiency(Chara c)
Definition: Hobby.cs:30
bool TryAddThingInSharedContainer(Thing t, List< Thing > containers=null, bool add=true, bool msg=false, Chara chara=null, bool sharedOnly=true)
Definition: Zone.cs:2053

References EClass._zone, Card.ExistsOnMap, Hobby.GetEfficiency(), AI_Haul.GetThingToClean(), Chara.GetWork(), Chara.IsPCParty, Chara.memberType, EClass.rnd(), and Zone.TryAddThingInSharedContainer().

◆ BanishMember()

void FactionBranch.BanishMember ( Chara  c,
bool  skipMsg = false 
)
inline

Definition at line 1488 of file FactionBranch.cs.

1489 {
1490 RemoveMemeber(c);
1491 if (!skipMsg)
1492 {
1493 Msg.Say("banish", c, EClass._zone.Name);
1494 }
1495 if (c.IsGlobal)
1496 {
1497 c.OnBanish();
1498 }
1499 else
1500 {
1501 c.Destroy();
1502 }
1503 }
void Destroy()
Definition: Card.cs:4783
override bool IsGlobal
Definition: Chara.cs:606
void OnBanish()
Definition: Chara.cs:1284
Definition: Msg.cs:5
static string Say(string idLang, string ref1, string ref2=null, string ref3=null, string ref4=null)
Definition: Msg.cs:58
virtual string Name
Definition: Spatial.cs:495

References EClass._zone, Card.Destroy(), Chara.IsGlobal, Spatial.Name, Chara.OnBanish(), and Msg.Say().

Referenced by CoreDebug.Fix_RemoveDemitas(), AI_Slaughter.Run(), and AI_Shopping.SellChara().

◆ CalcInnIncome()

void FactionBranch.CalcInnIncome ( )
inline

Definition at line 1089 of file FactionBranch.cs.

1090 {
1091 int num = CountGuests();
1092 if (num == 0)
1093 {
1094 return;
1095 }
1096 int num2 = 0;
1097 int num3 = 0;
1098 foreach (Thing thing in EClass._map.things)
1099 {
1100 if (thing.IsInstalled && thing.trait is TraitBed traitBed && traitBed.owner.c_bedType == BedType.guest)
1101 {
1102 int maxHolders = traitBed.MaxHolders;
1103 num2 += maxHolders;
1104 num3 += traitBed.owner.LV * (100 + traitBed.owner.Quality / 2 + traitBed.owner.Evalue(750) / 2) / 100 * maxHolders;
1105 }
1106 }
1107 num = Mathf.Min(num, num2);
1108 if (num != 0)
1109 {
1110 num3 /= num2;
1111 num3 = num3 * (100 + 5 * (int)Mathf.Sqrt(Evalue(2812))) / 100;
1112 float num4 = 10f + Mathf.Sqrt(num) * 10f;
1113 if (policies.IsActive(2813))
1114 {
1115 num4 += Mathf.Sqrt(CountWealthyGuests()) * 50f * (80f + 5f * Mathf.Sqrt(Evalue(2813))) / 100f;
1116 }
1117 if (policies.IsActive(2812))
1118 {
1119 num4 = num4 * (float)(100 + num3) / 100f;
1120 }
1121 num4 = Mathf.Min(num4, Mathf.Sqrt(Worth) / 15f + 5f);
1122 incomeInn += EClass.rndHalf((int)num4) + EClass.rndHalf((int)num4);
1123 }
1124 }
BedType
Definition: BedType.cs:2
Trait trait
Definition: Card.cs:49
bool IsInstalled
Definition: Card.cs:2317
BedType c_bedType
Definition: Card.cs:912
static Map _map
Definition: EClass.cs:18
static int rndHalf(int a)
Definition: EClass.cs:82
int Evalue(int ele)
int CountWealthyGuests()
PolicyManager policies
List< Thing > things
Definition: Map.cs:49
bool IsActive(int id, int days=-1)
Card owner
Definition: Trait.cs:27

References EClass._map, Card.c_bedType, PolicyManager.IsActive(), Card.IsInstalled, Trait.owner, EClass.rndHalf(), Map.things, and Card.trait.

◆ CalcTourismIncome()

void FactionBranch.CalcTourismIncome ( )
inline

Definition at line 1126 of file FactionBranch.cs.

1127 {
1128 int num = CountGuests();
1129 if (num != 0)
1130 {
1131 float num2 = 10f + Mathf.Sqrt(num) * 10f;
1132 if (policies.IsActive(2815))
1133 {
1134 num2 += Mathf.Sqrt(CountWealthyGuests()) * 50f * (80f + 5f * Mathf.Sqrt(Evalue(2815))) / 100f;
1135 }
1136 num2 = Mathf.Min(num2, Mathf.Sqrt(tourism) / 5f);
1137 incomeTourism += EClass.rndHalf((int)num2) + EClass.rndHalf((int)num2);
1138 }
1139 }

References PolicyManager.IsActive(), EClass.rndHalf(), and tourism.

◆ CanUpgrade()

bool FactionBranch.CanUpgrade ( )
inline

Definition at line 1363 of file FactionBranch.cs.

1364 {
1365 if (lv < MaxLv)
1366 {
1367 if (exp < GetNextExp())
1368 {
1369 return EClass.debug.enable;
1370 }
1371 return true;
1372 }
1373 return false;
1374 }
bool enable
Definition: CoreDebug.cs:285
static CoreDebug debug
Definition: EClass.cs:48
int GetNextExp(int _lv=-1)

References EClass.debug, and CoreDebug.enable.

◆ ChangeMemberType()

void FactionBranch.ChangeMemberType ( Chara  c,
FactionMemberType  type 
)
inline

Definition at line 1478 of file FactionBranch.cs.

1479 {
1480 c.ClearBed();
1481 c.memberType = type;
1482 c.c_wasInPcParty = false;
1486 }
void ClearBed(Map map=null)
Definition: Chara.cs:6785

References Chara.ClearBed(), Chara.RefreshWorkElements(), and PolicyManager.Validate().

Referenced by TraitFoodEggFertilized.Incubate(), and BaseListPeople.OnClick().

◆ ClearNewRecruits()

void FactionBranch.ClearNewRecruits ( )
inline

Definition at line 1717 of file FactionBranch.cs.

1718 {
1719 foreach (HireInfo item in listRecruit)
1720 {
1721 item.isNew = false;
1722 }
1723 }

References item.

Referenced by LayerHire.OnKill(), and LayerQuestBoard.OnKill().

◆ CountGuests()

int FactionBranch.CountGuests ( )
inline

Definition at line 1597 of file FactionBranch.cs.

1598 {
1599 int num = 0;
1600 foreach (Chara chara in EClass._map.charas)
1601 {
1602 if (chara.memberType == FactionMemberType.Guest)
1603 {
1604 num++;
1605 }
1606 }
1607 return num;
1608 }
List< Chara > charas
Definition: Map.cs:81

References EClass._map, Map.charas, and Chara.memberType.

◆ CountMembers()

int FactionBranch.CountMembers ( FactionMemberType  type,
bool  onlyAlive = false 
)
inline

Definition at line 1584 of file FactionBranch.cs.

1585 {
1586 int num = 0;
1587 foreach (Chara member in members)
1588 {
1589 if (member.memberType == type && (!onlyAlive || !member.isDead) && (type != 0 || member.trait.IsCountAsResident))
1590 {
1591 num++;
1592 }
1593 }
1594 return num;
1595 }
new TraitChara trait
Definition: Chara.cs:499
bool isDead
Definition: Chara.cs:385
virtual bool IsCountAsResident
Definition: TraitChara.cs:67

References TraitChara.IsCountAsResident, Chara.isDead, Chara.memberType, and Chara.trait.

Referenced by OnSimulateHour(), RefreshEfficiency(), ContentHomeReport.RefreshInfo(), and UIHomeInfo.RefreshInfo().

◆ CountNewRecruits()

int FactionBranch.CountNewRecruits ( )
inline

Definition at line 1704 of file FactionBranch.cs.

1705 {
1706 int num = 0;
1707 foreach (HireInfo item in listRecruit)
1708 {
1709 if (item.isNew)
1710 {
1711 num++;
1712 }
1713 }
1714 return num;
1715 }

References item.

◆ CountPasture()

int FactionBranch.CountPasture ( )
inline

Definition at line 1737 of file FactionBranch.cs.

1738 {
1739 return EClass._map.Stocked.GetNum("pasture", onlyShared: true) + EClass._map.Installed.GetNum("pasture");
1740 }
PropsInstalled Installed
Definition: Map.cs:123
PropsStocked Stocked
Definition: Map.cs:121
int GetNum(string id, bool onlyShared=false)
Definition: Props.cs:395

References EClass._map, Props.GetNum(), Map.Installed, and Map.Stocked.

Referenced by UIHomeInfo.RefreshInfo().

◆ CountWealthyGuests()

int FactionBranch.CountWealthyGuests ( )
inline

Definition at line 1610 of file FactionBranch.cs.

1611 {
1612 int num = 0;
1613 foreach (Chara chara in EClass._map.charas)
1614 {
1615 if (chara.memberType == FactionMemberType.Guest && chara.IsWealthy)
1616 {
1617 num++;
1618 }
1619 }
1620 return num;
1621 }
bool IsWealthy
Definition: Chara.cs:921

References EClass._map, Map.charas, Chara.IsWealthy, and Chara.memberType.

◆ DailyOutcome()

void FactionBranch.DailyOutcome ( VirtualDate  date)
inline

Definition at line 744 of file FactionBranch.cs.

745 {
746 Thing thing = null;
747 foreach (Chara member in members)
748 {
749 Chara i = member;
750 if (EClass.rnd(EClass.debug.enable ? 2 : (360 * members.Count)) == 0 && !i.IsPC && EClass.pc.faction.IsGlobalPolicyActive(2712) && i.things.Find((Thing t) => t.id == "panty" && t.c_idRefCard == i.id) == null && !i.things.IsFull())
751 {
752 Thing thing2 = ThingGen.Create("panty");
753 thing2.c_idRefCard = i.id;
754 i.AddThing(thing2);
755 }
756 if (i.IsPCParty || !i.ExistsOnMap)
757 {
758 continue;
759 }
761 if (i.memberType == FactionMemberType.Livestock)
762 {
763 if (thing == null)
764 {
765 thing = EClass._map.Stocked.Find("pasture", -1, -1, shared: true) ?? EClass._map.Installed.Find("pasture");
766 }
767 if (thing == null)
768 {
769 continue;
770 }
771 if (i.race.breeder >= EClass.rnd(2500 - (int)Mathf.Sqrt(Evalue(2827) * 100)))
772 {
773 if (EClass.rnd(3) != 0)
774 {
775 Thing t2 = i.MakeEgg(date.IsRealTime, 1, date.IsRealTime);
776 if (!date.IsRealTime)
777 {
778 i.TryPutShared(t2);
779 }
780 }
781 else
782 {
783 Thing t3 = i.MakeMilk(date.IsRealTime, 1, date.IsRealTime);
784 if (!date.IsRealTime)
785 {
786 i.TryPutShared(t3);
787 }
788 }
789 }
790 if (i.HaveFur())
791 {
792 if (i.HasElement(1533))
793 {
794 i.c_fur = 0;
795 }
796 else
797 {
798 i.c_fur++;
799 if (EClass.rnd(4) == 0 && i.HasElement(1532))
800 {
801 i.c_fur++;
802 }
803 }
804 }
805 thing.ModNum(-1);
806 if (thing.isDestroyed || thing.Num == 0)
807 {
808 thing = null;
809 }
810 continue;
811 }
812 foreach (Hobby item in i.ListHobbies())
813 {
814 GetOutcome(item);
815 }
816 foreach (Hobby item2 in i.ListWorks())
817 {
818 GetOutcome(item2);
819 }
820 void GetOutcome(Hobby h)
821 {
822 int num3 = h.GetEfficiency(i) * GetProductBonus(i) / 100;
823 int num4 = h.GetLv(i);
824 int id = EClass.sources.elements.alias[h.source.skill].id;
825 if (!i.elements.HasBase(id))
826 {
827 i.elements.SetBase(id, 1);
828 }
829 i.ModExp(id, 100);
830 for (int j = 0; j < h.source.things.Length; j += 2)
831 {
832 string text = h.source.things[j];
833 int num5 = Mathf.Max(1, h.source.things[j + 1].ToInt() * num3 / 1000);
834 int num6 = num5 / 1000;
835 if (num5 % 1000 > EClass.rnd(1000))
836 {
837 num6++;
838 }
839 if (num6 != 0)
840 {
841 if (!(text == "_egg"))
842 {
843 if (text == "milk")
844 {
845 i.MakeMilk(date.IsRealTime, num6);
846 }
847 else
848 {
849 Thing thing4 = ((!text.StartsWith("#")) ? ThingGen.Create(h.source.things[j], -1, num4) : ThingGen.CreateFromCategory(text.Replace("#", ""), num4));
850 if (thing4 != null)
851 {
852 num6 *= thing4.trait.CraftNum;
853 if (thing4.category.id == "fish" && EClass.rnd(EClass.debug.enable ? 1 : 5) == 0)
854 {
855 int num7 = Mathf.Min(EClass.rnd(EClass.rnd(EClass.rnd(EClass.curve(num4, 100, 50, 70) + 50))) / 50, 3);
856 if (num7 > 0)
857 {
858 thing4.SetTier(num7);
859 num6 /= num7 + 1;
860 }
861 }
862 if (num6 < 1)
863 {
864 num6 = 1;
865 }
866 if (!thing4.trait.CanStack)
867 {
868 num6 = 1;
869 }
870 thing4.SetNum(num6);
871 thing4.SetBlessedState(BlessedState.Normal);
872 thing4.TryMakeRandomItem(num4);
873 if (thing4.IsAmmo)
874 {
875 thing4.ChangeMaterial("iron");
876 thing4.c_IDTState = 0;
877 }
878 bool flag = thing4.category.id == "garbage";
879 if (thing4.trait is TraitFoodMeal)
880 {
881 if (thing4.HasTag(CTAG.dish_fail))
882 {
883 flag = true;
884 }
885 else
886 {
887 CraftUtil.MakeDish(thing4, num4 + 10, i);
888 }
889 }
890 if (flag)
891 {
892 TryTrash(thing4);
893 }
894 else
895 {
896 i.TryPutShared(thing4);
897 }
898 }
899 }
900 }
901 else
902 {
903 i.MakeEgg(date.IsRealTime, num6);
904 }
905 }
906 }
907 switch (h.source.alias)
908 {
909 case "Nurse":
910 {
911 foreach (Chara member2 in members)
912 {
913 if (!member2.IsPCParty)
914 {
915 if (member2.isDead && member2.CanRevive() && EClass.rnd(num3) > EClass.rnd(100))
916 {
917 Log("bNurse", i, member2);
918 member2.Revive(member2.pos, msg: true);
919 if (date.IsRealTime && member2.c_wasInPcParty)
920 {
921 EClass.pc.party.AddMemeber(member2, showMsg: true);
922 }
923 break;
924 }
925 if (EClass.rnd(num3) > EClass.rnd(100))
926 {
927 member2.CureHost(CureType.HealComplete);
928 }
929 }
930 }
931 break;
932 }
933 case "Chore":
934 case "Clean":
935 {
936 for (int k = 0; k < num3 / 2; k++)
937 {
938 Point randomPoint = EClass._map.bounds.GetRandomPoint();
939 if (randomPoint.HasDecal)
940 {
941 EClass._map.SetDecal(randomPoint.x, randomPoint.z);
942 }
943 }
944 break;
945 }
946 case "TreasureHunt":
947 if (EClass.rnd(num3) > EClass.rnd(EClass.debug.enable ? 100 : 5000))
948 {
950 if (thing5 != null)
951 {
952 Thing thing6 = ThingGen.CreateTreasure("chest_treasure", thing5.LV);
953 i.TryPutShared(thing6);
954 thing5.Destroy();
955 WidgetPopText.Say("foundTreasure".lang(thing6.Name));
956 }
957 }
958 break;
959 }
960 }
961 }
962 int soilCost = EClass._zone.GetSoilCost();
963 int num = Mathf.Min(100, 70 + (MaxSoil - soilCost));
964 int flower = 5;
965 int lv = 1;
966 EClass._map.bounds.ForeachCell(delegate(Cell cell)
967 {
968 if (cell.obj != 0 && cell.sourceObj.tag.Contains("flower"))
969 {
970 PlantData plantData = cell.TryGetPlant();
971 if (plantData != null && plantData.seed != null)
972 {
973 lv += plantData.seed.encLV + 1;
974 }
975 else
976 {
977 lv++;
978 }
979 flower++;
980 }
981 });
982 lv /= flower;
983 int num2 = 0;
984 foreach (Thing thing7 in EClass._map.things)
985 {
986 if (thing7.IsInstalled && thing7.trait is TraitBeekeep && !thing7.things.IsFull())
987 {
988 flower -= 3 + EClass.rnd(5 + num2 * 4);
989 num2++;
990 if (flower < 0)
991 {
992 break;
993 }
994 if (EClass.rnd(100) <= num)
995 {
996 Thing thing3 = ThingGen.Create("honey");
997 thing3.SetEncLv(lv / 10);
998 thing3.elements.SetBase(2, EClass.curve(lv, 50, 10, 80));
999 thing7.AddThing(thing3);
1000 }
1001 }
1002 }
1003 }
BlessedState
Definition: BlessedState.cs:2
CureType
Definition: CureType.cs:2
void SetTier(int a, bool setTraits=true)
Definition: Card.cs:3714
bool isDestroyed
Definition: Card.cs:71
bool IsAmmo
Definition: Card.cs:2183
ElementContainerCard elements
Definition: Card.cs:37
bool c_wasInPcParty
Definition: Card.cs:984
bool HasElement(int ele, int req=1)
Definition: Card.cs:5566
Card ChangeMaterial(int idNew, bool ignoreFixedMaterial=false)
Definition: Card.cs:2957
Thing AddThing(string id, int lv=-1)
Definition: Card.cs:3020
string Name
Definition: Card.cs:2073
Thing SetNum(int a)
Definition: Card.cs:3356
virtual void SetBlessedState(BlessedState s)
Definition: Card.cs:3740
Point pos
Definition: Card.cs:55
Thing MakeMilk(bool effect=true, int num=1, bool addToZone=true, BlessedState? state=null)
Definition: Card.cs:5419
void SetEncLv(int a)
Definition: Card.cs:3709
bool HaveFur()
Definition: Card.cs:7440
Thing TryMakeRandomItem(int lv=-1)
Definition: Card.cs:5138
void ModExp(string alias, int a)
Definition: Card.cs:2584
int Num
Definition: Card.cs:154
SourceCategory.Row category
Definition: Card.cs:1985
void ModNum(int a, bool notify=true)
Definition: Card.cs:3376
int c_fur
Definition: Card.cs:1301
int LV
Definition: Card.cs:370
string c_idRefCard
Definition: Card.cs:1697
Thing MakeEgg(bool effect=true, int num=1, bool addToZone=true, int fertChance=20, BlessedState? state=null)
Definition: Card.cs:5403
Definition: Cell.cs:7
byte obj
Definition: Cell.cs:38
SourceObj.Row sourceObj
Definition: Cell.cs:1072
bool CanRevive()
Definition: Chara.cs:4726
void TryPutShared(Thing t, List< Thing > containers=null, bool dropIfFail=true)
Definition: Chara.cs:4151
void CureHost(CureType type, int p=100, BlessedState state=BlessedState.Normal)
Definition: Chara.cs:8789
override bool IsPC
Definition: Chara.cs:608
Party party
Definition: Chara.cs:43
List< Hobby > ListHobbies(bool useMemberType=true)
Definition: Chara.cs:8287
List< Hobby > ListWorks(bool useMemberType=true)
Definition: Chara.cs:8260
void Revive(Point p=null, bool msg=false)
Definition: Chara.cs:4752
SourceRace.Row race
Definition: Chara.cs:460
static void MakeDish(Thing food, int lv, Chara crafter=null)
Definition: CraftUtil.cs:55
static int curve(int a, int start, int step, int rate=75)
Definition: EClass.cs:63
Element SetBase(string alias, int v, int potential=0)
bool HasBase(int ele)
int GetProductBonus(Chara c)
bool TryTrash(Thing t)
bool IsGlobalPolicyActive(int id)
Definition: FACTION.cs:442
SourceHobby.Row source
Definition: Hobby.cs:7
int GetLv(Chara c)
Definition: Hobby.cs:21
Definition: Log.cs:4
void ForeachCell(Action< Cell > action)
Definition: MapBounds.cs:279
Point GetRandomPoint()
Definition: MapBounds.cs:97
void SetDecal(int x, int z, int id=0, int amount=1, bool refresh=true)
Definition: Map.cs:2036
MapBounds bounds
Definition: Map.cs:52
void AddMemeber(Chara c, bool showMsg=false)
Definition: Party.cs:56
Definition: Point.cs:9
bool HasDecal
Definition: Point.cs:139
int x
Definition: Point.cs:36
int z
Definition: Point.cs:39
Thing Find(int uid)
Definition: Props.cs:357
Thing Find(int uid)
bool IsFull(int y=0)
static Thing CreateTreasure(string id, int lv, TreasureType type=TreasureType.Map)
Definition: ThingGen.cs:224
static Thing CreateFromCategory(string idCat, int lv=-1)
Definition: ThingGen.cs:75
static Thing Create(string id, int idMat=-1, int lv=-1)
Definition: ThingGen.cs:53
virtual int CraftNum
Definition: Trait.cs:132
virtual bool CanStack
Definition: Trait.cs:150
bool IsRealTime
Definition: VirtualDate.cs:7
Thing TryGetThingFromSharedContainer(Func< Thing, bool > func)
Definition: Zone.cs:2176
int GetSoilCost()
Definition: Zone.cs:3537

References EClass._map, EClass._zone, Party.AddMemeber(), Card.AddThing(), Map.bounds, Card.c_fur, Card.c_idRefCard, Card.c_wasInPcParty, Chara.CanRevive(), Trait.CanStack, Card.category, Card.ChangeMaterial(), Trait.CraftNum, ThingGen.Create(), ThingGen.CreateFromCategory(), ThingGen.CreateTreasure(), Chara.CureHost(), EClass.curve(), EClass.debug, Card.Destroy(), SourceManager.elements, CoreDebug.enable, Card.ExistsOnMap, Chara.faction, Props.Find(), ThingContainer.Find(), MapBounds.ForeachCell(), Hobby.GetEfficiency(), Hobby.GetLv(), MapBounds.GetRandomPoint(), Zone.GetSoilCost(), Point.HasDecal, Card.HasElement(), Card.HasTag(), Card.HaveFur(), Card.id, Map.Installed, Card.IsAmmo, Chara.isDead, Card.isDestroyed, ThingContainer.IsFull(), Faction.IsGlobalPolicyActive(), Chara.IsPC, Chara.IsPCParty, item, Chara.ListWorks(), Card.LV, CraftUtil.MakeDish(), Card.MakeEgg(), Card.MakeMilk(), Chara.memberType, Card.ModNum(), Card.Name, Card.Num, Cell.obj, Chara.party, EClass.pc, Card.pos, Chara.race, Chara.RefreshWorkElements(), Chara.Revive(), EClass.rnd(), WidgetPopText.Say(), Card.SetBlessedState(), Map.SetDecal(), Card.SetNum(), Card.SetTier(), Hobby.source, Cell.sourceObj, EClass.sources, Map.Stocked, Card.things, Card.trait, Zone.TryGetThingFromSharedContainer(), Card.TryMakeRandomItem(), Chara.TryPutShared(), Point.x, and Point.z.

◆ Evalue()

◆ GenerateGarbage()

void FactionBranch.GenerateGarbage ( VirtualDate  date)
inline

Definition at line 611 of file FactionBranch.cs.

612 {
613 int sortChance = 40 + GetCivility();
614 int unsortedCount = 0;
615 foreach (Chara member in members)
616 {
617 if (!member.IsPCParty && member.ExistsOnMap)
618 {
619 Hobby hobby = member.GetWork("Clean") ?? member.GetWork("Chore");
620 if (hobby != null)
621 {
622 sortChance += 20 * hobby.GetEfficiency(member) / 100;
623 }
624 }
625 }
626 int num = Evalue(2702);
627 int num2 = EClass.rnd(2);
628 for (int i = 0; i < num2; i++)
629 {
630 if (num == 0 || EClass.rnd(num + (EClass.debug.enable ? 100000 : 10)) == 0)
631 {
632 Generate(null);
633 }
634 }
635 foreach (Chara member2 in members)
636 {
637 if (!member2.IsPCParty && member2.ExistsOnMap && (num == 0 || EClass.rnd(num + (EClass.debug.enable ? 100000 : 10)) == 0))
638 {
639 Generate(member2);
640 }
641 }
642 void Generate(Chara c)
643 {
644 if (c == null || EClass.rnd(5) == 0)
645 {
646 if (EClass.rnd(80) == 0)
647 {
649 }
650 else if (EClass.rnd(40) == 0)
651 {
652 Thing thing;
653 Add(thing = ThingGen.CreateFromTag("garbage"));
654 }
655 else
656 {
657 string id = "trash2";
658 if (EClass.rnd(3) == 0)
659 {
660 id = "trash1";
661 }
662 if (EClass.rnd(10) == 0)
663 {
664 id = ((EClass.rnd(3) == 0) ? "529" : "1170");
665 }
666 if (c != null && (!c.IsUnique || c.memberType == FactionMemberType.Livestock) && EClass.rnd((c.memberType == FactionMemberType.Livestock) ? 2 : 50) == 0)
667 {
668 id = "_poop";
669 }
670 if (EClass.rnd(200000) == 0)
671 {
672 id = "goodness";
673 }
674 Add(ThingGen.Create(id));
675 }
676 }
677 void Add(Thing t)
678 {
679 if (sortChance < EClass.rnd(100))
680 {
681 EClass._zone.TryAddThing(t, (c != null) ? (c.pos.GetRandomPoint(2) ?? c.pos).GetNearestPoint() : EClass._zone.bounds.GetRandomSurface(), destroyIfFail: true);
682 }
683 else
684 {
685 if (t.id == "_poop" && EClass.rnd(150) == 0)
686 {
687 t.ChangeMaterial((EClass.rnd(2) == 0) ? "silver" : "gold");
688 }
689 if (!TryTrash(t))
690 {
691 unsortedCount++;
692 if (unsortedCount >= 5)
693 {
694 Tutorial.Reserve("garbage");
695 }
696 }
697 }
698 }
699 }
700 }
list. Add(item3)
bool IsUnique
Definition: Card.cs:2027
Point GetRandomSurface(int x, int z, int radius, bool walkable=true, bool allowWater=false)
Definition: MapBounds.cs:182
Point GetRandomPoint(int radius, bool requireLos=true, bool allowChara=true, bool allowBlocked=false, int tries=100)
Definition: Point.cs:753
static Thing CreateFromTag(string idTag, int lv=-1)
Definition: ThingGen.cs:80
static void Reserve(string idStep, Action onBeforePlay=null)
Definition: Tutorial.cs:55
MapBounds bounds
Definition: Zone.cs:46
bool TryAddThing(Thing target, Point p, bool destroyIfFail=false)
Definition: Zone.cs:2150

References EClass._zone, Add(), Zone.bounds, Card.ChangeMaterial(), ThingGen.Create(), ThingGen.CreateFromCategory(), ThingGen.CreateFromTag(), EClass.debug, CoreDebug.enable, Card.ExistsOnMap, Hobby.GetEfficiency(), Point.GetRandomPoint(), MapBounds.GetRandomSurface(), Chara.GetWork(), Card.id, Chara.IsPCParty, Card.IsUnique, Chara.memberType, Card.pos, Tutorial.Reserve(), EClass.rnd(), and Zone.TryAddThing().

◆ GetCivility()

int FactionBranch.GetCivility ( )
inline

Definition at line 1747 of file FactionBranch.cs.

1748 {
1749 int num = 10 + Evalue(2203);
1750 if (Evalue(2701) > 0)
1751 {
1752 num += 10 + (int)Mathf.Sqrt(Evalue(2701));
1753 }
1754 if (Evalue(2702) > 0)
1755 {
1756 num -= 10 + (int)Mathf.Sqrt(Evalue(2702));
1757 }
1758 return num;
1759 }

Referenced by UIHomeInfo.RefreshInfo().

◆ GetDailyIncome()

void FactionBranch.GetDailyIncome ( )
inline

Definition at line 1141 of file FactionBranch.cs.

1142 {
1143 GetIncome(ref incomeShop, ref statistics.shop, "getIncomeShop", tax: false);
1144 GetIncome(ref incomeInn, ref statistics.inn, "getIncomeInn", tax: true);
1145 GetIncome(ref incomeTourism, ref statistics.tourism, "getIncomeTourism", tax: true);
1146 void GetIncome(ref int n, ref int stat, string lang, bool tax)
1147 {
1148 if (tax && !IsTaxFree)
1149 {
1150 n = n * 10 / 100;
1151 }
1152 if (n != 0)
1153 {
1154 Msg.Say(lang, Lang._currency(n, "money"), owner.Name);
1155 Thing t = ThingGen.Create("money").SetNum(n);
1156 EClass.pc.Pick(t);
1157 stat += n;
1158 n = 0;
1159 }
1160 }
1161 }
Thing Pick(Thing t, bool msg=true, bool tryStack=true)
Definition: Chara.cs:4017
Statistics statistics
Definition: Lang.cs:6
static string _currency(object a, string IDCurrency)
Definition: Lang.cs:162

References Lang._currency(), ThingGen.Create(), FactionBranch.Statistics.inn, Spatial.Name, EClass.pc, Chara.Pick(), Msg.Say(), Card.SetNum(), FactionBranch.Statistics.shop, and FactionBranch.Statistics.tourism.

Referenced by OnAfterSimulate().

◆ GetHappiness()

int FactionBranch.GetHappiness ( FactionMemberType  type)
inline

Definition at line 1522 of file FactionBranch.cs.

1523 {
1524 float num = 0f;
1525 if (members.Count == 0)
1526 {
1527 return 0;
1528 }
1529 foreach (Chara member in members)
1530 {
1531 num += (float)member.happiness;
1532 }
1533 return (int)(num / (float)members.Count);
1534 }
int happiness
Definition: Chara.cs:108

References Chara.happiness.

◆ GetHearthHint()

string FactionBranch.GetHearthHint ( int  a)
inline

Definition at line 1406 of file FactionBranch.cs.

1407 {
1408 if (a <= 1)
1409 {
1410 return "hearth1".lang();
1411 }
1412 string text = "";
1413 for (int i = 1; i < a; i++)
1414 {
1415 string text2 = ("hearth" + (i + 1)).lang();
1416 if (!text2.IsEmpty())
1417 {
1418 text = text + text2 + Environment.NewLine;
1419 }
1420 }
1421 return text.TrimEnd(Environment.NewLine.ToCharArray());
1422 }

Referenced by UIHomeInfo.RefreshInfo().

◆ GetHearthIncome() [1/2]

float FactionBranch.GetHearthIncome ( )
inline

Definition at line 1761 of file FactionBranch.cs.

1762 {
1763 float num = 0f;
1764 foreach (Element value in elements.dict.Values)
1765 {
1766 if (value.source.category == "culture")
1767 {
1768 num += GetHearthIncome(value.source.alias);
1769 }
1770 }
1771 return num;
1772 }
Dictionary< int, Element > dict
SourceElement.Row source
Definition: ELEMENT.cs:271
float GetHearthIncome()

References Element.source.

◆ GetHearthIncome() [2/2]

float FactionBranch.GetHearthIncome ( string  id)
inline

Definition at line 1774 of file FactionBranch.cs.

1775 {
1776 int num = 0;
1777 foreach (KeyValuePair<int, Element> item in elements.dict)
1778 {
1779 if (item.Value.source.aliasParent == id)
1780 {
1781 num++;
1782 }
1783 }
1784 return 0.2f * (float)num;
1785 }

References item.

◆ GetMaid()

Chara FactionBranch.GetMaid ( )
inline

Definition at line 1563 of file FactionBranch.cs.

1564 {
1565 foreach (Chara member in members)
1566 {
1567 if (member.IsAliveInCurrentZone && member.IsMaid)
1568 {
1569 return member;
1570 }
1571 }
1572 return null;
1573 }
override bool IsAliveInCurrentZone
Definition: Chara.cs:557
bool IsMaid
Definition: Chara.cs:893

References Chara.IsAliveInCurrentZone, and Chara.IsMaid.

Referenced by MeetingManager.CallNext().

◆ GetMailBox()

Thing FactionBranch.GetMailBox ( )
inline

Definition at line 1024 of file FactionBranch.cs.

1025 {
1026 return EClass._map.props.installed.FindEmptyContainer<TraitMailPost>();
1027 }
PropsManager props
Definition: Map.cs:91
PropsInstalled installed
Definition: PropsManager.cs:8

References EClass._map, PropsManager.installed, and Map.props.

◆ GetMailBoxPos()

Point FactionBranch.GetMailBoxPos ( )
inline

Definition at line 1029 of file FactionBranch.cs.

1030 {
1031 Thing thing = GetMailBox();
1032 if (thing == null)
1033 {
1035 }
1036 if (thing != null)
1037 {
1038 return thing.pos.GetNearestPoint(allowBlock: false, allowChara: true, allowInstalled: false, ignoreCenter: true).Clamp(useBounds: true);
1039 }
1040 return EClass._map.GetCenterPos();
1041 }
Thing GetMailBox()
Point GetCenterPos()
Definition: MapBounds.cs:52
Point Clamp(bool useBounds=false)
Definition: Point.cs:988
Point GetNearestPoint(bool allowBlock=false, bool allowChara=true, bool allowInstalled=true, bool ignoreCenter=false)
Definition: Point.cs:607

References EClass._map, Point.Clamp(), Props.Find(), MapBounds.GetCenterPos(), Point.GetNearestPoint(), PropsManager.installed, Card.pos, and Map.props.

◆ GetMeal()

Thing FactionBranch.GetMeal ( Chara  c)
inline

Definition at line 1163 of file FactionBranch.cs.

1164 {
1165 if (c.things.IsFull())
1166 {
1167 return null;
1168 }
1169 Thing thing = EClass._zone.TryGetThingFromSharedContainer((Thing t) => c.CanEat(t, shouldEat: true) && !t.c_isImportant);
1170 if (thing != null)
1171 {
1172 thing = thing.Split(1);
1173 }
1174 return thing;
1175 }
Thing Split(int a)
Definition: Card.cs:3345
bool c_isImportant
Definition: Card.cs:996
bool CanEat(Thing t, bool shouldEat=false)
Definition: Chara.cs:7058

References EClass._zone, Card.c_isImportant, Chara.CanEat(), ThingContainer.IsFull(), Card.Split(), Card.things, and Zone.TryGetThingFromSharedContainer().

Referenced by AI_Idle.Run().

◆ GetNextExp()

int FactionBranch.GetNextExp ( int  _lv = -1)
inline

Definition at line 156 of file FactionBranch.cs.

157 {
158 if (_lv == -1)
159 {
160 _lv = lv;
161 }
162 return _lv * _lv * 100 + 100;
163 }

References lv.

Referenced by WidgetStatsBar.Build(), LayerShippingResult.Refresh(), and CoreDebug.UpdateInput().

◆ GetPastureCost()

int FactionBranch.GetPastureCost ( )
inline

Definition at line 1742 of file FactionBranch.cs.

1743 {
1744 return CountMembers(FactionMemberType.Livestock);
1745 }
int CountMembers(FactionMemberType type, bool onlyAlive=false)

Referenced by UIHomeInfo.RefreshInfo().

◆ GetProductBonus()

int FactionBranch.GetProductBonus ( Chara  c)
inline

Definition at line 179 of file FactionBranch.cs.

180 {
181 if (c.isDead || c.IsPCParty)
182 {
183 return 0;
184 }
185 if (c.memberType == FactionMemberType.Livestock)
186 {
187 return 100;
188 }
189 return Mathf.Max(1, (90 + Evalue(2116) / 2) * efficiency / 100);
190 }

References efficiency, Evalue(), Chara.isDead, Chara.IsPCParty, and Chara.memberType.

◆ GetRandomName()

string FactionBranch.GetRandomName ( )
inline

Definition at line 1575 of file FactionBranch.cs.

1576 {
1577 if (EClass.rnd(4) == 0 || members.Count == 0)
1578 {
1579 return EClass.player.title;
1580 }
1581 return members.RandomItem().Name;
1582 }
static Player player
Definition: EClass.cs:12
string title
Definition: Player.cs:924

References EClass.player, EClass.rnd(), and Player.title.

Referenced by BaseArea.GetRandomName().

◆ GetResidentTax()

int FactionBranch.GetResidentTax ( )
inline

Definition at line 1043 of file FactionBranch.cs.

1044 {
1045 if (!policies.IsActive(2512, 30))
1046 {
1047 return 0;
1048 }
1049 int num = 0;
1050 int num2 = (policies.IsActive(2500, 30) ? Evalue(2500) : 0);
1051 int num3 = (policies.IsActive(2501, 30) ? Evalue(2501) : 0);
1052 int num4 = 50 + (int)Mathf.Sqrt(Evalue(2512)) * 5;
1053 foreach (Chara member in members)
1054 {
1055 if (member.IsPC || member.memberType != 0)
1056 {
1057 continue;
1058 }
1059 bool isWealthy = member.IsWealthy;
1060 int num5 = 0;
1061 foreach (Hobby item in member.ListWorks().Concat(member.ListHobbies()))
1062 {
1063 int num6 = item.source.tax * 100 / 100;
1064 if (num6 > num5)
1065 {
1066 num5 = num6;
1067 }
1068 }
1069 int num7 = ((isWealthy ? 50 : 10) + member.LV * 2) * num5 / 100 * num4 / 100;
1070 if (isWealthy && num2 > 0)
1071 {
1072 num7 = num7 * (150 + (int)Mathf.Sqrt(num2) * 5) / 100;
1073 }
1074 if (num3 > 0)
1075 {
1076 num7 += (80 + (int)Mathf.Sqrt(num3) * 5) * member.faith.source.tax / 100;
1077 }
1078 num7 = num7 * efficiency / (IsTaxFree ? 100 : 1000);
1079 num += num7;
1080 if (num7 > 0)
1081 {
1082 Log("bTax", num7.ToString() ?? "", member.Name);
1083 }
1084 }
1085 statistics.tax += num;
1086 return num;
1087 }
Religion faith
Definition: Chara.cs:435
SourceReligion.Row source
Definition: Religion.cs:32

References Chara.faith, PolicyManager.IsActive(), Chara.IsPC, Chara.IsWealthy, item, Chara.ListHobbies(), Chara.ListWorks(), Card.LV, Chara.memberType, Card.Name, and Religion.source.

Referenced by Faction.GetResidentTax().

◆ GetTechUpgradeCost()

int FactionBranch.GetTechUpgradeCost ( Element  e)
inline

Definition at line 1787 of file FactionBranch.cs.

1788 {
1789 int valueWithoutLink = e.ValueWithoutLink;
1790 valueWithoutLink += e.CostLearn;
1791 if (e.source.max != 0 && e.ValueWithoutLink >= e.source.max)
1792 {
1793 return 0;
1794 }
1795 return valueWithoutLink;
1796 }
int ValueWithoutLink
Definition: ELEMENT.cs:292
virtual int CostLearn
Definition: ELEMENT.cs:312

References Element.CostLearn, Element.source, and Element.ValueWithoutLink.

Referenced by ButtonElement.Refresh(), and LayerHome.RefreshFeat().

◆ GetUpgradeCost()

int FactionBranch.GetUpgradeCost ( )
inline

Definition at line 1376 of file FactionBranch.cs.

1377 {
1378 return lv * lv * lv * 1000;
1379 }

◆ IsAllDead()

bool FactionBranch.IsAllDead ( )
inline

Definition at line 1536 of file FactionBranch.cs.

1537 {
1538 foreach (Chara member in members)
1539 {
1540 if (!member.isDead)
1541 {
1542 return false;
1543 }
1544 }
1545 return true;
1546 }

References Chara.isDead.

Referenced by ZoneEventSiege.OnTickRound().

◆ IsRecruit()

bool FactionBranch.IsRecruit ( Chara  c)
inline

Definition at line 1725 of file FactionBranch.cs.

1726 {
1727 foreach (HireInfo item in listRecruit)
1728 {
1729 if (item.chara == c)
1730 {
1731 return true;
1732 }
1733 }
1734 return false;
1735 }

References item.

Referenced by DramaOutcome.chara_hired().

◆ Log() [1/3]

string FactionBranch.Log ( string  idLang,
Card  c1,
Card  c2,
string  ref1 = null,
string  ref2 = null 
)
inline

Definition at line 1804 of file FactionBranch.cs.

1805 {
1806 Msg.alwaysVisible = true;
1807 return LogRaw(Msg.GetRawText(idLang, c1, c2, ref1, ref2), EClass.sources.langGame.map[idLang].logColor);
1808 }
string LogRaw(string text, string col=null)
static string GetRawText(string idLang, string ref1, string ref2=null, string ref3=null, string ref4=null)
Definition: Msg.cs:37
LangGame langGame

References Msg.GetRawText(), SourceManager.langGame, and EClass.sources.

◆ Log() [2/3]

string FactionBranch.Log ( string  idLang,
Card  c1,
string  ref1 = null,
string  ref2 = null,
string  ref3 = null 
)
inline

Definition at line 1810 of file FactionBranch.cs.

1811 {
1812 Msg.alwaysVisible = true;
1813 return LogRaw(Msg.GetRawText(idLang, c1, ref1, ref2, ref3), EClass.sources.langGame.map[idLang].logColor);
1814 }

References Msg.GetRawText(), SourceManager.langGame, and EClass.sources.

◆ Log() [3/3]

string FactionBranch.Log ( string  idLang,
string  ref1 = null,
string  ref2 = null,
string  ref3 = null,
string  ref4 = null 
)
inline

Definition at line 1798 of file FactionBranch.cs.

1799 {
1800 Msg.alwaysVisible = true;
1801 return LogRaw(Msg.GetRawText(idLang, ref1, ref2, ref3, ref4), EClass.sources.langGame.map[idLang].logColor);
1802 }

References Msg.GetRawText(), SourceManager.langGame, and EClass.sources.

Referenced by AI_Shopping.Buy(), Zone.ClaimZone(), Chara.Die(), Expedition.End(), ElementContainerCard.OnLevelUp(), ElementContainerZone.OnLevelUp(), Chara.Revive(), and Expedition.Start().

◆ LogRaw()

string FactionBranch.LogRaw ( string  text,
string  col = null 
)
inline

Definition at line 1816 of file FactionBranch.cs.

1817 {
1818 log.Add(text, col.IsEmpty() ? null : col);
1819 Msg.alwaysVisible = false;
1820 Msg.SetColor();
1821 return text;
1822 }
void Add(Data data)
Definition: MsgLog.cs:53
static void SetColor()
Definition: Msg.cs:22

References MsgLog.Add(), and Msg.SetColor().

◆ ModExp()

void FactionBranch.ModExp ( int  a)
inline

Definition at line 1381 of file FactionBranch.cs.

1382 {
1383 if (policies.IsActive(2515))
1384 {
1385 return;
1386 }
1387 if (policies.IsActive(2516))
1388 {
1389 a = a * 150 / 100 + EClass.rnd(2);
1390 }
1391 exp += a;
1392 if (exp >= GetNextExp() && CanUpgrade())
1393 {
1394 if (EClass.core.version.demo && lv >= 3)
1395 {
1396 exp = 0;
1397 Msg.Say("demoLimit2");
1398 }
1399 else
1400 {
1401 Upgrade();
1402 }
1403 }
1404 }
Version version
Definition: BaseCore.cs:17
static Core core
Definition: EClass.cs:6
bool demo
Definition: Version.cs:14

References EClass.core, Version.demo, PolicyManager.IsActive(), EClass.rnd(), Msg.Say(), and BaseCore.version.

Referenced by CoreDebug.UpdateInput().

◆ OnActivateZone()

void FactionBranch.OnActivateZone ( )
inline

Definition at line 277 of file FactionBranch.cs.

278 {
279 incomeInn = 0;
280 incomeTourism = 0;
281 foreach (Chara member in members)
282 {
283 if (member.IsAliveInCurrentZone && !member.pos.IsInBounds)
284 {
286 }
288 }
290 }
void MoveImmediate(Point p, bool focus=true, bool cancelAI=true)
Definition: Card.cs:5479
void ValidateUpgradePolicies()
bool IsInBounds
Definition: Point.cs:104

References EClass._map, elements, MapBounds.GetCenterPos(), Point.GetNearestPoint(), incomeInn, incomeTourism, Chara.IsAliveInCurrentZone, Point.IsInBounds, members, Card.MoveImmediate(), Card.pos, Chara.RefreshWorkElements(), and ValidateUpgradePolicies().

◆ OnAdvanceDay()

void FactionBranch.OnAdvanceDay ( )
inline

Definition at line 577 of file FactionBranch.cs.

578 {
579 int num = 0;
580 foreach (Chara member in members)
581 {
582 if (member.IsPC || member.isDead)
583 {
584 continue;
585 }
586 if (member.IsPCParty || member.currentZone == EClass.pc.currentZone)
587 {
588 member.c_daysWithPC++;
589 }
590 if (member.memberType == FactionMemberType.Default)
591 {
592 if (EClass.rnd(3) == 0)
593 {
594 num++;
595 }
596 if (member.GetWork("Pioneer") != null)
597 {
598 num += 3;
599 }
600 }
601 }
602 ModExp(num);
603 }
int c_daysWithPC
Definition: Card.cs:1445
Zone currentZone
Definition: Chara.cs:251
void ModExp(int a)

References Card.c_daysWithPC, Chara.currentZone, Chara.GetWork(), Chara.isDead, Chara.IsPC, Chara.IsPCParty, Chara.memberType, EClass.pc, and EClass.rnd().

Referenced by Faction.OnAdvanceDay().

◆ OnAfterSimulate()

void FactionBranch.OnAfterSimulate ( )
inline

Definition at line 292 of file FactionBranch.cs.

293 {
294 if (!EClass.game.isLoading)
295 {
297 }
298 foreach (Chara chara in EClass._map.charas)
299 {
300 if (!chara.IsPCParty && !chara.noMove)
301 {
302 if ((chara.pos.cell.HasBlock || chara.pos.cell.hasDoor) && !chara.isRestrained && !chara.HasCondition<ConSuspend>())
303 {
304 chara.MoveImmediate(chara.pos.GetNearestPoint(allowBlock: false, allowChara: false) ?? chara.pos);
305 }
307 {
308 EClass.pc.party.AddMemeber(chara, showMsg: true);
309 }
310 }
311 }
312 }
bool isRestrained
Definition: Card.cs:550
bool noMove
Definition: Card.cs:754
bool HasBlock
Definition: Cell.cs:643
bool hasDoor
Definition: Cell.cs:258
bool HasCondition(string alias)
Definition: Chara.cs:8723
static Game game
Definition: EClass.cs:8
void GetDailyIncome()
bool isLoading
Definition: Game.cs:235
bool simulatingZone
Definition: Player.cs:1099
Cell cell
Definition: Point.cs:51

References EClass._map, Party.AddMemeber(), Card.c_wasInPcParty, Point.cell, Map.charas, EClass.game, GetDailyIncome(), Point.GetNearestPoint(), Cell.HasBlock, Chara.HasCondition(), Cell.hasDoor, Game.isLoading, Chara.IsPCParty, Card.isRestrained, Card.MoveImmediate(), Card.noMove, Chara.party, EClass.pc, EClass.player, Card.pos, and Player.simulatingZone.

Referenced by Zone.OnVisit().

◆ OnClaimZone()

void FactionBranch.OnClaimZone ( )
inline

Definition at line 1177 of file FactionBranch.cs.

1178 {
1180 {
1181 foreach (SourceElement.Row item in EClass.sources.elements.rows.Where((SourceElement.Row a) => a.category == "tech"))
1182 {
1183 elements.SetBase(item.id, 1);
1184 }
1185 foreach (SourceElement.Row item2 in EClass.sources.elements.rows.Where((SourceElement.Row a) => a.category == "policy" && !a.tag.Contains("hidden")))
1186 {
1187 policies.AddPolicy(item2.id);
1188 }
1189 }
1190 else
1191 {
1192 elements.SetBase(2003, 1);
1193 elements.SetBase(4002, 1);
1194 elements.SetBase(2115, 1);
1195 elements.SetBase(2204, 1);
1196 elements.SetBase(2120, 1);
1197 policies.AddPolicy(2512);
1198 policies.AddPolicy(2702);
1199 policies.AddPolicy(2703);
1200 policies.AddPolicy(2516);
1201 policies.AddPolicy(2515);
1202 policies.AddPolicy(2514);
1203 }
1205 {
1206 policies.Activate(2514);
1207 }
1208 Element element = EClass._zone.ListLandFeats()[0];
1209 elements.SetBase(element.id, 1);
1210 switch (element.id)
1211 {
1212 case 3604:
1213 elements.SetBase(2206, 10);
1214 break;
1215 case 3602:
1216 elements.SetBase(2206, 15);
1217 break;
1218 }
1220 {
1222 }
1224 {
1225 foreach (SourceElement.Row item3 in EClass.sources.elements.rows.Where((SourceElement.Row a) => a.category == "policy"))
1226 {
1227 policies.AddPolicy(item3.id);
1228 }
1229 }
1231 }
bool allPolicy
Definition: CoreDebug.cs:236
bool allHomeSkill
Definition: CoreDebug.cs:194
int id
Definition: ELEMENT.cs:248
void AddMemeber(Chara c)
int CountTaxFreeLand()
Definition: FACTION.cs:550
Zone StartZone
Definition: Game.cs:269
void Activate(int id)
void AddPolicy(string id)
List< Element > ListLandFeats()
Definition: Zone.cs:2938

References EClass._zone, PolicyManager.Activate(), PolicyManager.AddPolicy(), CoreDebug.allHomeSkill, CoreDebug.allPolicy, Faction.CountTaxFreeLand(), EClass.debug, SourceManager.elements, Chara.faction, EClass.game, Card.id, Element.id, item, Zone.ListLandFeats(), EClass.pc, EClass.sources, and Game.StartZone.

Referenced by Zone.ClaimZone().

◆ OnCreate()

void FactionBranch.OnCreate ( Zone  zone)
inline

Definition at line 240 of file FactionBranch.cs.

241 {
242 SetOwner(zone);
243 stash = ThingGen.Create("container_salary");
247 }
void RemoveThings()
Definition: Card.cs:3171
Religion faith
void SetOwner(Zone zone)
ReligionManager religions
Definition: Game.cs:158
ReligionEyth Eyth

References ThingGen.Create(), World.date, dateFound, ReligionManager.Eyth, faith, EClass.game, Date.GetRaw(), Game.religions, Card.RemoveThings(), SetOwner(), stash, and EClass.world.

Referenced by Zone.ClaimZone().

◆ OnSimulateDay()

void FactionBranch.OnSimulateDay ( VirtualDate  date)
inline

Definition at line 523 of file FactionBranch.cs.

524 {
525 if (owner == null || owner.mainFaction != EClass.Home)
526 {
527 return;
528 }
532 if (!date.IsRealTime)
533 {
534 BranchMap branchMap = date.GetBranchMap();
535 foreach (Chara member in members)
536 {
537 if (!member.IsPCParty && member.memberType != FactionMemberType.Livestock && !member.faith.IsEyth && !member.c_isPrayed && branchMap.altarMap.Contains(member.faith.id))
538 {
539 AI_Pray.Pray(member, silent: true);
540 }
541 }
542 }
543 foreach (Chara member2 in members)
544 {
545 member2.c_isPrayed = false;
546 member2.c_isTrained = false;
547 }
548 if (date.day != 1)
549 {
550 return;
551 }
552 luckyMonth = false;
553 if (date.month == 1)
554 {
555 luckyMonthDone = false;
556 }
557 if (!luckyMonthDone)
558 {
559 bool flag = EClass.pc.faith == EClass.game.religions.Luck;
560 luckyMonth = (float)(flag ? 30 : 5) + Mathf.Sqrt(Evalue(2118)) * (float)(flag ? 4 : 2) > (float)EClass.rnd(720);
561 if (EClass.debug.enable)
562 {
563 luckyMonth = true;
564 }
565 if (luckyMonth)
566 {
567 Log("lucky_month", EClass._zone.Name);
568 Msg.Say("lucky_month", EClass._zone.Name);
569 Msg.Say("umi");
570 SE.Play("godbless");
571 EClass.world.SendPackage(ThingGen.Create("book_kumiromi"));
572 luckyMonthDone = true;
573 }
574 }
575 }
static void Pray(Chara c, bool silent=false)
Definition: AI_Pray.cs:52
HashSet< string > altarMap
Definition: BranchMap.cs:5
bool c_isPrayed
Definition: Card.cs:1044
int month
Definition: Date.cs:50
int day
Definition: Date.cs:62
HappinessManager happiness
ResearchManager researches
HomeResourceManager resources
ReligionLuck Luck
bool IsEyth
Definition: Religion.cs:44
virtual string id
Definition: Religion.cs:26
Faction mainFaction
Definition: Spatial.cs:430
BranchMap GetBranchMap()
Definition: VirtualDate.cs:44
void SendPackage(Thing p)
Definition: World.cs:68

References EClass._zone, Card.c_isPrayed, ThingGen.Create(), EClass.debug, CoreDebug.enable, Chara.faith, EClass.game, VirtualDate.GetBranchMap(), EClass.Home, Religion.id, Religion.IsEyth, Chara.IsPCParty, VirtualDate.IsRealTime, ReligionManager.Luck, Spatial.mainFaction, Chara.memberType, Spatial.Name, HappinessManager.OnSimulateDay(), HomeResourceManager.OnSimulateDay(), ResearchManager.OnSimulateDay(), AI_Pray.Pray(), Game.religions, EClass.rnd(), Msg.Say(), World.SendPackage(), and EClass.world.

Referenced by Zone.OnSimulateDay().

◆ OnSimulateHour()

void FactionBranch.OnSimulateHour ( VirtualDate  date)
inline

Definition at line 318 of file FactionBranch.cs.

319 {
320 int num = CountMembers(FactionMemberType.Default, onlyAlive: true);
321 int starveChance = Mathf.Max(num - MaxPopulation, 0);
322 members.ForeachReverse(delegate(Chara c)
323 {
324 if (!c.IsPCParty && c.IsAliveInCurrentZone && !c.noMove)
325 {
326 if (EClass.rnd(24 * members.Count) < starveChance)
327 {
328 starveChance--;
329 }
330 else
331 {
332 c.TickWork(date);
333 }
334 if (!date.IsRealTime && EClass.rnd(3) != 0 && c.memberType == FactionMemberType.Default)
335 {
336 c.hunger.Mod(1);
337 if (c.hunger.GetPhase() >= 3)
338 {
339 Thing meal = GetMeal(c);
340 if (meal != null)
341 {
342 FoodEffect.Proc(c, meal);
343 meal.Destroy();
344 }
345 else
346 {
347 c.hunger.Mod(-50);
348 }
349 }
350 }
351 }
352 });
356 int num2 = Evalue(3707);
357 int num3 = Evalue(3705) + Evalue(3710) * 2;
358 int num4 = 4 + num3 * 4;
359 int num5 = Mathf.Max(1, (100 + Evalue(2205) * 5 + Evalue(3703) * 100 - num2 * 80) / 10);
360 int num6 = 10;
361 if (policies.IsActive(2709))
362 {
363 num6 = 0;
364 }
366 {
367 num5 /= 2;
368 }
369 if ((date.IsRealTime || num2 > 0) && !EClass.debug.enable && EClass.rnd(num5) == 0 && !EClass.pc.IsDeadOrSleeping && EClass._map.CountHostile() < num4)
370 {
371 int num7 = 1 + EClass.rnd(num2 + num3 + 1);
372 for (int i = 0; i < num7; i++)
373 {
375 }
376 }
377 if ((date.IsRealTime || num2 == 0) && num6 != 0 && EClass.rnd(num6) == 0 && EClass._map.CountWildAnimal() < num4)
378 {
380 }
381 if (EClass.rnd(5) == 0 && policies.IsActive(2810))
382 {
383 int num8 = 3 + lv + Evalue(2206) / 5 + Evalue(3702) * 2 + Evalue(2202) / 2;
384 num8 = num8 * (100 + Evalue(3702) * 20 + Evalue(2206)) / 100;
385 num8 = num8 * (100 + (int)Mathf.Sqrt(Evalue(2811)) * 3) / 100;
386 if (luckyMonth)
387 {
388 num8 = num8 * 2 + 5;
389 }
390 if (EClass._map.CountGuest() < num8)
391 {
392 Chara chara;
393 if (luckyMonth || (policies.IsActive(2822) && Mathf.Sqrt(Evalue(2822) / 2) + 5f >= (float)EClass.rnd(100)))
394 {
397 }
398 else
399 {
401 }
402 if (chara != null && (chara.id == "nun_mother" || chara.id == "prostitute") && policies.IsActive(2710))
403 {
404 chara.Destroy();
405 chara = null;
406 }
407 if (chara != null)
408 {
410 chara.memberType = FactionMemberType.Guest;
411 chara.SetInt(34, EClass.world.date.GetRaw());
412 chara.c_allowance = chara.LV * 100;
413 if (chara.IsWealthy)
414 {
415 chara.c_allowance *= 10;
416 }
417 if (date.IsRealTime)
418 {
419 Msg.Say("guestArrive", chara.Name);
420 }
421 else
422 {
423 chara.TryAssignBed();
424 }
425 }
426 }
427 }
428 foreach (Chara chara3 in EClass._map.charas)
429 {
430 if (chara3.memberType != FactionMemberType.Guest || ((chara3.c_allowance > 0 || EClass.rnd(2) != 0) && chara3.GetInt(34) + 10080 >= EClass.world.date.GetRaw()))
431 {
432 continue;
433 }
434 foreach (Chara item in EClass._zone.ListMinions(chara3))
435 {
436 item.Destroy();
437 }
438 if (!chara3.IsGlobal)
439 {
440 chara3.Destroy();
441 }
442 chara3.ClearBed();
443 break;
444 }
445 if (date.hour == 5)
446 {
447 for (int j = 0; j < ((!luckyMonth) ? 1 : 2); j++)
448 {
449 DailyOutcome(date);
450 }
451 GenerateGarbage(date);
452 if (!date.IsRealTime)
453 {
454 AutoClean();
455 }
458 if (date.IsRealTime)
459 {
461 }
462 }
463 if (!EClass.player.simulatingZone && date.hour == 6)
464 {
465 ReceivePackages(date);
466 }
467 if (!date.IsRealTime && date.hour % 8 == 0)
468 {
469 foreach (Chara item2 in EClass._map.charas.Where((Chara c) => c.memberType == FactionMemberType.Guest).ToList())
470 {
471 for (int k = 0; k < 3; k++)
472 {
473 AI_Shopping.TryShop(item2, realtime: false);
474 }
475 }
476 AI_Shopping.TryRestock(EClass.pc, realtime: false);
477 }
478 if (EClass.rnd(24) == 0 || EClass.debug.enable)
479 {
480 foreach (Thing thing in EClass._map.things)
481 {
482 if (EClass.rnd(20) == 0 && thing.trait is TraitFoodEggFertilized && thing.pos.FindThing<TraitBed>() != null)
483 {
484 Chara chara2 = TraitFoodEggFertilized.Incubate(thing, thing.pos);
485 thing.ModNum(-1);
486 if (date.IsRealTime)
487 {
488 chara2.PlaySound("egg");
489 }
490 break;
491 }
492 }
493 }
495 }
SpawnPosition
Definition: SpawnPosition.cs:2
if(item3.idFile==idFirstFile &&item3.id==idFirstTopic)
Definition: UIBook.cs:627
static bool TryRestock(Chara c, bool realtime)
Definition: AI_Shopping.cs:94
static bool TryShop(Chara c, bool realtime)
Definition: AI_Shopping.cs:10
int GetInt(int id, int? defaultInt=null)
Definition: BaseCard.cs:25
void SetInt(int id, int value=0)
Definition: BaseCard.cs:39
SoundSource PlaySound(string id, float v=1f, bool spatial=true)
Definition: Card.cs:5776
int c_allowance
Definition: Card.cs:1289
static Chara CreateWealthy(int lv=-1)
Definition: CharaGen.cs:53
TraitBed TryAssignBed()
Definition: Chara.cs:6812
override bool IsDeadOrSleeping
Definition: Chara.cs:569
int hour
Definition: Date.cs:74
bool IsNight
Definition: Date.cs:112
MeetingManager meetings
ExpeditionManager expeditions
void DailyOutcome(VirtualDate date)
void CalcInnIncome()
void CalcTourismIncome()
void GenerateGarbage(VirtualDate date)
void ReceivePackages(VirtualDate date)
int CountHostile()
Definition: Map.cs:2452
int CountGuest()
Definition: Map.cs:2439
int CountWildAnimal()
Definition: Map.cs:2465
void OnSimulateHour(VirtualDate date)
Thing FindThing(Func< Thing, bool > func)
Definition: Point.cs:1120
void OnSimulateHour(VirtualDate date)
static SpawnSetting HomeWild(int lv)
Definition: SpawnSetting.cs:91
static SpawnSetting HomeEnemy(int lv)
static SpawnSetting HomeGuest(int lv)
static Chara Incubate(Thing egg, Point pos, Card incubator=null)
List< Chara > ListMinions(Chara c)
Definition: Zone.cs:3511
Chara SpawnMob(Point pos=null, SpawnSetting setting=null)
Definition: Zone.cs:2645
Card AddCard(Card t, Point point)
Definition: Zone.cs:1910
Point GetSpawnPos(Chara c, ZoneTransition.EnterState destState=ZoneTransition.EnterState.Auto)
Definition: Zone.cs:1299

References CountMembers(), if(), Chara.IsAliveInCurrentZone, Chara.IsPCParty, VirtualDate.IsRealTime, MaxPopulation, members, Chara.memberType, Card.noMove, and EClass.rnd().

Referenced by Zone.OnSimulateHour().

◆ OnSimulateMonth()

void FactionBranch.OnSimulateMonth ( VirtualDate  date)
inline

Definition at line 605 of file FactionBranch.cs.

606 {
608 statistics = new Statistics();
609 }
Statistics lastStatistics

Referenced by Zone.OnSimulateMonth().

◆ OnUnclaimZone()

void FactionBranch.OnUnclaimZone ( )
inline

Definition at line 1233 of file FactionBranch.cs.

1234 {
1235 List<Element> source = owner.ListLandFeats();
1236 if (lv >= 5)
1237 {
1238 foreach (Element item in source.Where((Element a) => a.HasTag("network")).ToList())
1239 {
1241 }
1242 }
1243 Element[] array = elements.dict.Values.ToArray();
1244 foreach (Element element in array)
1245 {
1246 elements.SetBase(element.id, 0);
1247 }
1248 owner.landFeats = null;
1250 owner.branch = null;
1251 }
bool HasTag(string tag)
Definition: ELEMENT.cs:471

References Faction.elements, Chara.faction, Element.HasTag(), Element.id, item, Zone.ListLandFeats(), ElementContainer.ModBase(), and EClass.pc.

Referenced by Zone.AbandonZone().

◆ OnUnloadMap()

void FactionBranch.OnUnloadMap ( )
inline

Definition at line 314 of file FactionBranch.cs.

315 {
316 }

Referenced by Zone.UnloadMap().

◆ PutInMailBox()

void FactionBranch.PutInMailBox ( Thing  t,
bool  outside = false,
bool  install = true 
)
inline

Definition at line 1005 of file FactionBranch.cs.

1006 {
1007 if (!outside)
1008 {
1009 Thing mailBox = GetMailBox();
1010 if (mailBox != null)
1011 {
1012 mailBox.AddCard(t);
1013 return;
1014 }
1015 }
1016 Point mailBoxPos = GetMailBoxPos();
1017 EClass._zone.AddCard(t, mailBoxPos);
1018 if (install)
1019 {
1020 t.Install();
1021 }
1022 }
Card AddCard(Card c)
Definition: Card.cs:3006
Card Install()
Definition: Card.cs:3590
Point GetMailBoxPos()

References EClass._zone, Card.AddCard(), Zone.AddCard(), and Card.Install().

◆ ReceivePackages()

void FactionBranch.ReceivePackages ( VirtualDate  date)
inline

Definition at line 713 of file FactionBranch.cs.

714 {
716 {
717 return;
718 }
719 List<Thing> listPackage = EClass.game.cards.listPackage;
720 if (EClass.player.stats.days >= 2 && !EClass.player.flags.elinGift && Steam.HasDLC(ID_DLC.BackerReward))
721 {
722 listPackage.Add(ThingGen.Create("gift"));
723 EClass.player.flags.elinGift = true;
724 }
725 if (listPackage.Count == 0)
726 {
727 return;
728 }
729 SE.Play("notice");
730 int num = 0;
731 foreach (Thing item in listPackage)
732 {
733 if (item.id != "bill")
734 {
735 num++;
736 }
737 PutInMailBox(item, item.id == "cardboard_box" || item.id == "gift");
738 WidgetPopText.Say("popDeliver".lang(item.Name));
739 }
740 Msg.Say("deliver_arrive", num.ToString() ?? "");
741 listPackage.Clear();
742 }
ID_DLC
Definition: ID_DLC.cs:2
void Add(Act a, string s="")
Definition: ActPlan.cs:11
List< Thing > listPackage
Definition: CardManager.cs:61
void PutInMailBox(Thing t, bool outside=false, bool install=true)
CardManager cards
Definition: Game.cs:155
bool elinGift
Definition: Player.cs:374
int days
Definition: Player.cs:75
Flags flags
Definition: Player.cs:1014
Stats stats
Definition: Player.cs:936
Definition: Steam.cs:8
static bool HasDLC(ID_DLC id)
Definition: Steam.cs:39

References ActPlan.List.Add(), Game.cards, ThingGen.Create(), Player.Stats.days, Player.Flags.elinGift, Player.flags, EClass.game, Steam.HasDLC(), item, CardManager.listPackage, EClass.player, Msg.Say(), WidgetPopText.Say(), Player.simulatingZone, and Player.stats.

◆ Recruit()

void FactionBranch.Recruit ( Chara  c)
inline

Definition at line 1548 of file FactionBranch.cs.

1549 {
1550 RemoveRecruit(c);
1551 AddMemeber(c);
1552 c.isRestrained = false;
1553 if (c.currentZone != EClass._zone && !c.isDead)
1554 {
1556 EClass._zone.AddCard(c, point);
1557 }
1560 Msg.Say("hire".langGame(c.Name));
1561 }
void RemoveRecruit(Chara c)
TraitManager traits
Definition: Props.cs:18
TraitSet GetTraitSet(Type t)
Definition: TraitManager.cs:94
Point GetPoint()
Definition: Trait.cs:725

References EClass._map, EClass._zone, Zone.AddCard(), Chara.currentZone, Trait.GetPoint(), TraitManager.GetTraitSet(), Map.Installed, Chara.isDead, Card.Name, EClass.pc, Card.pos, Chara.RefreshWorkElements(), Msg.Say(), and Props.traits.

Referenced by DramaOutcome.chara_hired(), DramaOutcome.chara_hired_ticket(), ListPeopleCallReserve.OnClick(), and DramaOutcome.QuestExploration_MeetFarris2().

◆ RefreshEfficiency()

void FactionBranch.RefreshEfficiency ( )
inline

Definition at line 192 of file FactionBranch.cs.

193 {
194 int num = 100;
195 int num2 = CountMembers(FactionMemberType.Default);
196 int ration = 0;
197 foreach (Chara member in members)
198 {
199 if (member.memberType != 0 || member.IsPCParty || member.homeBranch == null || member.homeBranch.owner == null)
200 {
201 continue;
202 }
203 foreach (Hobby item in member.ListHobbies())
204 {
205 TryAdd(item);
206 }
207 foreach (Hobby item2 in member.ListWorks())
208 {
209 TryAdd(item2);
210 }
211 }
212 if (num2 > MaxPopulation)
213 {
214 num -= (num2 - MaxPopulation) * 20 * 100 / (100 + 20 * (int)Mathf.Sqrt(ration));
215 }
216 if (efficiency < 0)
217 {
218 efficiency = 0;
219 }
220 efficiency = num;
221 void TryAdd(Hobby h)
222 {
223 if (!h.source.elements.IsEmpty())
224 {
225 for (int i = 0; i < h.source.elements.Length; i += 2)
226 {
227 if (h.source.elements[i] == 2207)
228 {
229 ration += h.source.elements[i + 1];
230 }
231 }
232 }
233 }
234 }
FactionBranch homeBranch
Definition: Chara.cs:932

References CountMembers(), efficiency, Chara.homeBranch, Chara.IsPCParty, item, Chara.ListHobbies(), Chara.ListWorks(), MaxPopulation, members, Chara.memberType, owner, and Hobby.source.

Referenced by Party.AddMemeber(), UIHomeInfo.RefreshReport(), Party.RemoveMember(), and SetOwner().

◆ RemoveMemeber()

void FactionBranch.RemoveMemeber ( Chara  c)
inline

◆ RemoveRecruit()

void FactionBranch.RemoveRecruit ( Chara  c)
inline

Definition at line 1693 of file FactionBranch.cs.

1694 {
1695 listRecruit.ForeachReverse(delegate(HireInfo i)
1696 {
1697 if (i.chara == c)
1698 {
1699 listRecruit.Remove(i);
1700 }
1701 });
1702 }
Chara chara
Definition: HireInfo.cs:6

References HireInfo.chara.

◆ SetOwner()

void FactionBranch.SetOwner ( Zone  zone)
inline

Definition at line 249 of file FactionBranch.cs.

250 {
251 owner = zone;
252 resources.SetOwner(this);
253 researches.SetOwner(this);
254 policies.SetOwner(this);
255 happiness.SetOwner(this);
256 expeditions.SetOwner(this);
257 meetings.SetOwner(this);
258 foreach (Chara value in EClass.game.cards.globalCharas.Values)
259 {
260 if (value == null)
261 {
262 Debug.LogError("exception: c==null");
263 }
264 else if (EClass.pc == null)
265 {
266 Debug.LogError("exception: pc==null");
267 }
268 else if (value.homeZone == zone && value.faction == EClass.pc.faction)
269 {
270 members.Add(value);
272 }
273 }
275 }
GlobalCharaList globalCharas
Definition: CardManager.cs:46
Zone homeZone
Definition: Chara.cs:263
void SetOwner(FactionBranch _branch)
void SetOwner(FactionBranch _owner)
void SetOwner(FactionBranch _owner)
void SetOwner(FactionBranch _branch)
void SetOwner(FactionBranch _owner)
void SetOwner(FactionBranch _branch)

References Game.cards, Faction.charaElements, Debug, expeditions, Chara.faction, EClass.game, CardManager.globalCharas, happiness, Chara.homeZone, meetings, members, ElementContainerFaction.OnAddMemeber(), owner, EClass.pc, policies, RefreshEfficiency(), researches, resources, ExpeditionManager.SetOwner(), MeetingManager.SetOwner(), ResearchManager.SetOwner(), HappinessManager.SetOwner(), HomeResourceManager.SetOwner(), and PolicyManager.SetOwner().

Referenced by OnCreate(), and Zone.OnLoad().

◆ TryTrash()

bool FactionBranch.TryTrash ( Thing  t)
inline

Definition at line 702 of file FactionBranch.cs.

703 {
704 Thing thing = ((t.id == "_poop" || t.source._origin == "dish") ? EClass._map.props.installed.FindEmptyContainer<TraitContainerCompost>(t) : (t.isFireproof ? EClass._map.props.installed.FindEmptyContainer<TraitContainerUnburnable>(t) : EClass._map.props.installed.FindEmptyContainer<TraitContainerBurnable>(t)));
705 if (thing != null)
706 {
707 thing.AddCard(t);
708 return true;
709 }
710 return EClass._zone.TryAddThingInSpot<TraitSpotGarbage>(t, useContainer: false);
711 }

References EClass._map, EClass._zone, Card.AddCard(), PropsManager.installed, and Map.props.

◆ UpdateReqruits()

void FactionBranch.UpdateReqruits ( bool  clear = false)
inline

Definition at line 1623 of file FactionBranch.cs.

1624 {
1626 if (clear)
1627 {
1628 listRecruit.ForeachReverse(delegate(HireInfo i)
1629 {
1630 if (!i.chara.IsGlobal)
1631 {
1632 i.chara.Destroy();
1633 }
1634 if (i.chara.isDestroyed)
1635 {
1636 listRecruit.Remove(i);
1637 }
1638 });
1639 listRecruit.Clear();
1640 lastUpdateReqruit = -1;
1641 }
1642 else
1643 {
1644 listRecruit.ForeachReverse(delegate(HireInfo i)
1645 {
1646 if (i.Hours < 0)
1647 {
1648 if (!i.chara.IsGlobal)
1649 {
1650 i.chara.Destroy();
1651 }
1652 listRecruit.Remove(i);
1653 }
1654 });
1655 }
1657 {
1658 return;
1659 }
1661 int num = 2 + (int)Mathf.Sqrt(Evalue(2513)) / 2;
1662 int num2 = EClass.rnd(3 + (int)Mathf.Sqrt(Evalue(2513)) / 2) + num - listRecruit.Count;
1663 if (num2 <= 0)
1664 {
1665 return;
1666 }
1667 new List<Chara>(EClass.game.cards.globalCharas.Values).Shuffle();
1668 for (int j = 0; j < num2; j++)
1669 {
1670 Chara chara = CharaGen.CreateFromFilter("c_neutral", ContentLV + Mathf.Min(EClass.player.stats.days, 10));
1671 if (chara.isBackerContent || chara.source.quality != 0)
1672 {
1673 j--;
1674 }
1675 else
1676 {
1677 AddRecruit(chara);
1678 }
1679 }
1680 }
bool isBackerContent
Definition: Card.cs:897
static Chara CreateFromFilter(string id, int lv=-1, int levelRange=-1)
Definition: CharaGen.cs:22
SourceChara.Row source
Definition: Chara.cs:154
void AddRecruit(Chara c)
int Hours
Definition: HireInfo.cs:26

References HireInfo.chara, HireInfo.Hours, if(), Card.isDestroyed, Chara.IsGlobal, and HomeResourceManager.Refresh().

Referenced by LayerQuestBoard.OnInit().

◆ Upgrade()

void FactionBranch.Upgrade ( )
inline

Definition at line 1290 of file FactionBranch.cs.

1291 {
1292 List<Element> list = owner.ListLandFeats();
1293 if (owner.IsActiveZone)
1294 {
1295 TraitCoreZone traitCoreZone = EClass._map.FindThing<TraitCoreZone>();
1296 if (traitCoreZone != null)
1297 {
1298 SE.Play("godbless");
1299 traitCoreZone.owner.PlayEffect("aura_heaven");
1300 }
1301 }
1302 lv++;
1303 exp = 0;
1304 int admin = 4;
1305 int food = 4;
1306 Set(4, 3);
1307 switch (list[0].id)
1308 {
1309 case 3500:
1310 Set(5, 3);
1311 break;
1312 case 3604:
1313 Set(4, 3);
1314 break;
1315 case 3600:
1316 Set(5, 3);
1317 break;
1318 case 3601:
1319 Set(4, 4);
1320 break;
1321 case 3603:
1322 Set(6, 2);
1323 break;
1324 case 3602:
1325 Set(5, 2);
1326 break;
1327 }
1328 elements.SetBase(2003, Mathf.Min((lv - 1) * 2 + 1, 10));
1329 elements.SetBase(2115, (lv - 1) * admin + 1);
1330 elements.SetBase(2204, (lv - 1) * food + 1);
1333 if (lv == 4)
1334 {
1335 elements.SetBase(list[1].id, 1);
1336 }
1337 if (lv == 7)
1338 {
1339 elements.SetBase(list[2].id, 1);
1340 }
1341 if (lv >= 5)
1342 {
1343 List<Element> list2 = elements.dict.Values.Where((Element a) => a.source.category == "landfeat" && a.HasTag("network")).ToList();
1344 foreach (Element item in list2)
1345 {
1347 }
1348 foreach (Element item2 in list2)
1349 {
1350 elements.Remove(item2.id);
1351 }
1352 }
1353 Msg.Say("upgrade_hearth", lv.ToString() ?? "", owner.Name);
1354 LogRaw("upgrade_hearth".langGame(lv.ToString() ?? "", owner.Name), "Good");
1355 Tutorial.Reserve("stone");
1356 void Set(int a, int f)
1357 {
1358 admin = a;
1359 food = f;
1360 }
1361 }
Effect PlayEffect(string id, bool useRenderPos=true, float range=0f, Vector3 fix=default(Vector3))
Definition: Card.cs:5810
void Remove(int id)
Element GetElement(string alias)
void CheckLevelBonus(ElementContainer owner, UINote n=null)
Definition: ELEMENT.cs:961
Thing FindThing(Func< Thing, bool > func)
Definition: Map.cs:2577
bool IsActiveZone
Definition: Zone.cs:488

References EClass._map, Faction.elements, Chara.faction, Map.FindThing(), food, Element.HasTag(), Element.id, Zone.IsActiveZone, item, Zone.ListLandFeats(), ElementContainer.ModBase(), Spatial.Name, Trait.owner, EClass.pc, Card.PlayEffect(), Tutorial.Reserve(), Msg.Say(), and Element.source.

◆ ValidateUpgradePolicies()

void FactionBranch.ValidateUpgradePolicies ( )
inline

Definition at line 1253 of file FactionBranch.cs.

1254 {
1255 if (lv >= 2)
1256 {
1257 if (!policies.HasPolicy(2705))
1258 {
1259 policies.AddPolicy(2705);
1261 }
1262 if (!policies.HasPolicy(2708))
1263 {
1264 policies.AddPolicy(2708);
1266 }
1267 if (!policies.HasPolicy(2707))
1268 {
1269 policies.AddPolicy(2707);
1270 }
1271 if (!policies.HasPolicy(2709))
1272 {
1273 policies.AddPolicy(2709);
1274 }
1275 if (!policies.HasPolicy(2715))
1276 {
1277 policies.AddPolicy(2715);
1278 }
1279 }
1280 foreach (int globalPolicy in EClass.pc.faction.globalPolicies)
1281 {
1282 if (!policies.HasPolicy(globalPolicy))
1283 {
1284 policies.AddPolicy(globalPolicy, show: false);
1286 }
1287 }
1288 }
HashSet< int > globalPolicies
Definition: FACTION.cs:144
void SetGlobalPolicyActive(int id, bool active)
Definition: FACTION.cs:455
bool HasPolicy(int id)

References PolicyManager.AddPolicy(), Chara.faction, Faction.globalPolicies, PolicyManager.HasPolicy(), Faction.IsGlobalPolicyActive(), EClass.pc, and Faction.SetGlobalPolicyActive().

Referenced by OnActivateZone(), and TraitBookSkill.OnRead().

Member Data Documentation

◆ dateFound

int FactionBranch.dateFound

Definition at line 103 of file FactionBranch.cs.

Referenced by OnCreate(), and UIHomeInfo.RefreshInfo().

◆ efficiency

int FactionBranch.efficiency = 100

Definition at line 120 of file FactionBranch.cs.

Referenced by GetProductBonus(), RefreshEfficiency(), and UIHomeInfo.RefreshReport().

◆ exp

int FactionBranch.exp

Definition at line 40 of file FactionBranch.cs.

Referenced by WidgetStatsBar.Build(), and GameDate.ShipGoods().

◆ expeditions

ExpeditionManager FactionBranch.expeditions = new ExpeditionManager()

◆ faith

Religion FactionBranch.faith

◆ happiness

◆ incomeInn

int FactionBranch.incomeInn

Definition at line 116 of file FactionBranch.cs.

Referenced by OnActivateZone().

◆ incomeShop

int FactionBranch.incomeShop

Definition at line 55 of file FactionBranch.cs.

◆ incomeTourism

int FactionBranch.incomeTourism

Definition at line 118 of file FactionBranch.cs.

Referenced by OnActivateZone().

◆ lastStatistics

Statistics FactionBranch.lastStatistics = new Statistics()

Definition at line 112 of file FactionBranch.cs.

Referenced by ItemStatistics.Refresh().

◆ lastUpdateReqruit

int FactionBranch.lastUpdateReqruit

Definition at line 52 of file FactionBranch.cs.

◆ listRecruit

List<HireInfo> FactionBranch.listRecruit = new List<HireInfo>()

Definition at line 100 of file FactionBranch.cs.

Referenced by LayerQuestBoard.RefreshHire().

◆ log

MsgLog FactionBranch.log
Initial value:
= new MsgLog
{
id = "log"
}
Definition: MsgLog.cs:7

Definition at line 88 of file FactionBranch.cs.

Referenced by ContentHomeLog.RefreshLog(), and GameDate.ShipGoods().

◆ luckyMonth

bool FactionBranch.luckyMonth

Definition at line 58 of file FactionBranch.cs.

Referenced by WidgetDate._Refresh().

◆ luckyMonthDone

bool FactionBranch.luckyMonthDone

Definition at line 61 of file FactionBranch.cs.

◆ lv

◆ meetings

MeetingManager FactionBranch.meetings = new MeetingManager()

Definition at line 82 of file FactionBranch.cs.

Referenced by Meeting.OnEndDrama(), UIHomeInfo.RefreshReport(), and SetOwner().

◆ members

◆ owner

◆ policies

◆ rank

int FactionBranch.rank

◆ researches

◆ resources

◆ seedPlan

int FactionBranch.seedPlan

Definition at line 43 of file FactionBranch.cs.

Referenced by ResearchManager.ShowNewPlans().

◆ stability

GStability FactionBranch.stability
Initial value:
{
value = 1
}

Definition at line 64 of file FactionBranch.cs.

◆ stash

Thing FactionBranch.stash

Definition at line 85 of file FactionBranch.cs.

Referenced by OnCreate().

◆ statistics

Statistics FactionBranch.statistics = new Statistics()

Definition at line 109 of file FactionBranch.cs.

Referenced by ContentHomeLog.OnSwitchContent().

◆ temper

int FactionBranch.temper

Definition at line 46 of file FactionBranch.cs.

Referenced by UIHomeInfo.RefreshInfo().

◆ tourism

int FactionBranch.tourism

Definition at line 106 of file FactionBranch.cs.

Referenced by WidgetStatsBar.Build(), and HomeResourceWorth.WriteNote().

◆ uidMaid

int FactionBranch.uidMaid

Property Documentation

◆ ContentLV

int FactionBranch.ContentLV
get

Definition at line 136 of file FactionBranch.cs.

◆ DangerLV

int FactionBranch.DangerLV
get

Definition at line 138 of file FactionBranch.cs.

◆ elements

◆ HasItemProtection

bool FactionBranch.HasItemProtection
get

Definition at line 140 of file FactionBranch.cs.

Referenced by ActEffect.DamageEle(), Map.TryShatter(), and Chara.TryTakeSharedItems().

◆ HasNetwork

bool FactionBranch.HasNetwork
get

Definition at line 142 of file FactionBranch.cs.

Referenced by Evalue(), ButtonElement.Refresh(), and TraitTeleporter.TryTeleport().

◆ IsStartBranch

bool FactionBranch.IsStartBranch
get

Definition at line 150 of file FactionBranch.cs.

◆ IsTaxFree

bool FactionBranch.IsTaxFree
get

Definition at line 144 of file FactionBranch.cs.

◆ MaxAP

int FactionBranch.MaxAP
get

Definition at line 130 of file FactionBranch.cs.

Referenced by UICurrency.Build(), and LayerPolicy.RefreshPolicyList().

◆ MaxLv

int FactionBranch.MaxLv
get

Definition at line 154 of file FactionBranch.cs.

Referenced by UIHomeInfo.RefreshInfo().

◆ MaxPopulation

int FactionBranch.MaxPopulation
get

Definition at line 132 of file FactionBranch.cs.

Referenced by OnSimulateHour(), RefreshEfficiency(), and UIHomeInfo.RefreshInfo().

◆ MaxSoil

int FactionBranch.MaxSoil
get

Definition at line 134 of file FactionBranch.cs.

Referenced by UIHomeInfo.RefreshInfo().

◆ Money

int FactionBranch.Money
get

Definition at line 124 of file FactionBranch.cs.

◆ NumHeirloom

int FactionBranch.NumHeirloom
get

Definition at line 128 of file FactionBranch.cs.

Referenced by HomeResourceWorth.WriteNote().

◆ RankText

string FactionBranch.RankText
get

Definition at line 146 of file FactionBranch.cs.

Referenced by ContentHomeReport.RefreshInfo(), and UIHomeInfo.RefreshInfo().

◆ TextLv

string FactionBranch.TextLv
get

◆ Worth

int FactionBranch.Worth
get

Definition at line 126 of file FactionBranch.cs.

Referenced by Faction.CountWealth(), and UIHomeInfo.RefreshInfo().


The documentation for this class was generated from the following file: