26            if ((result = this._source) == 
null)
 
   28                result = (this._source = 
EClass.sources.factions.map[this.id]);
 
   36    public virtual string TextType
 
   40            return "sub_faction".lang();
 
   56        EClass.game.factions.AssignUID(
this);
 
   57        this.relation.faction = 
this;
 
   58        this.relation.affinity = this.source.relation;
 
   59        this.name = this.source.GetText(
"name", 
false);
 
   65        this.relation.faction = 
this;
 
   69    public float GetHappiness()
 
   75    public Sprite GetSprite()
 
   77        return ResourceCache.Load<Sprite>(
"Media/Graphics/Image/Faction/" + this.source.id);
 
   83        return (
int)((float)this.CountWealth() * 0.1f);
 
   87    public List<FactionBranch> GetChildren()
 
   89        List<FactionBranch> list = 
new List<FactionBranch>();
 
   92            if (spatial.mainFaction == 
this)
 
   94                list.Add((spatial as 
Zone).branch);
 
  101    public int CountWealth()
 
  103        if (
EClass._zone.IsPCFaction)
 
  105            EClass._zone.branch.resources.Refresh();
 
  110            num += factionBranch.Worth;
 
  116    public int CountTerritories()
 
  119        using (Dictionary<int, Spatial>.ValueCollection.Enumerator enumerator = 
EClass.game.spatials.map.Values.GetEnumerator())
 
  121            while (enumerator.MoveNext())
 
  123                if (enumerator.Current.mainFaction == 
this)
 
  133    public int CountMembers()
 
  136        using (Dictionary<int, Chara>.ValueCollection.Enumerator enumerator = 
EClass.game.cards.globalCharas.Values.GetEnumerator())
 
  138            while (enumerator.MoveNext())
 
  140                if (enumerator.Current.Chara.faction == 
this)
 
  150    public Hostility GetHostility()
 
  152        if (
this == 
EClass.Home || 
this.relation.affinity >= 200)
 
  154            return Hostility.Ally;
 
  156        if (this.relation.affinity >= 100)
 
  158            return Hostility.Friend;
 
  160        if (this.relation.affinity <= -100)
 
  162            return Hostility.Enemy;
 
  164        return Hostility.Neutral;
 
  168    public void ModRelation(
int a)
 
  170        this.relation.affinity += a;
 
  174    public bool HasMember(
string id, 
bool includeReserve = 
true)
 
  176        foreach (
Chara chara 
in EClass.game.cards.globalCharas.Values)
 
  178            if (chara.id == 
id && chara.IsHomeMember())
 
  185            using (List<HireInfo>.Enumerator enumerator2 = this.listReserve.GetEnumerator())
 
  187                while (enumerator2.MoveNext())
 
  189                    if (enumerator2.Current.chara.id == 
id)
 
  200    public void AddContribution(
int a)
 
  202        if (a == 0 || this.relation.type != 
FactionRelation.RelationType.Member)
 
  206        this.relation.exp += a;
 
  207        Msg.Say(
"contribute", a.ToString() ?? 
"", 
this.Name, 
null, 
null);
 
  211    public void AddReserve(
Chara c)
 
  213        if (c.memberType == FactionMemberType.Livestock)
 
  215            c.SetInt(36, 
EClass.world.date.GetRaw(0) + 14400);
 
  217        if (c.IsHomeMember())
 
  219            c.homeBranch.RemoveMemeber(c);
 
  221        if (c.currentZone != 
null)
 
  223            c.currentZone.RemoveCard(c);
 
  225        if (
EClass.Branch.uidMaid == c.uid)
 
  227            EClass.Branch.uidMaid = 0;
 
  234        this.listReserve.Add(item);
 
  238    public void RemoveReserve(
Chara c)
 
  240        this.listReserve.ForeachReverse(delegate(
HireInfo i)
 
  242            if (i.chara == c || i.chara.uid == c.uid)
 
  244                this.listReserve.Remove(i);
 
  250    public void OnAdvanceDay()
 
  254            factionBranch.OnAdvanceDay();
 
  259    public void OnAdvanceMonth()
 
  261        if (this.GetChildren().Count == 0)
 
  266        num += this.GetResidentTax();
 
  267        num += this.GetRankIncome();
 
  268        num += this.GetFactionSalary();
 
  276            EClass.world.SendPackage(p);
 
  278        num = this.GetTotalTax(
true);
 
  280        thing2.SetInt(35, 
EClass.player.extraTax);
 
  281        Msg.Say(
"getBill", Lang._currency(num, 
"money"), 
null, 
null, 
null);
 
  282        this.TryPayBill(thing2);
 
  283        Msg.Say(
"bills", 
EClass.player.taxBills.ToString() ?? 
"", 
null, 
null, 
null);
 
  284        if (
EClass.player.taxBills >= 4)
 
  286            EClass.player.ModKarma(-50);
 
  291    public void TryPayBill(
Thing bill)
 
  293        if (this.IsGlobalPolicyActive(2705) && 
EClass.game.cards.container_deposit.GetCurrency(
"money") > bill.c_bill)
 
  298        EClass.world.SendPackage(bill);
 
  306            if (factionBranch.members.Contains(c))
 
  308                return factionBranch;
 
  315    public void AddGlobalPolicy(
int id)
 
  317        this.globalPolicies.Add(
id);
 
  321    public bool IsGlobalPolicyActive(
int id)
 
  324        using (List<FactionBranch>.Enumerator enumerator = 
EClass.pc.faction.GetChildren().GetEnumerator())
 
  326            while (enumerator.MoveNext())
 
  328                if (enumerator.Current.policies.IsActive(
id, -1))
 
  338    public void SetGlobalPolicyActive(
int id, 
bool active)
 
  342            factionBranch.policies.SetActive(
id, active);
 
  347    public int GetResidentTax()
 
  352            num += factionBranch.GetResidentTax();
 
  356            Msg.Say(
"getResidentTax", Lang._currency(num, 
"money"), 
null, 
null, 
null);
 
  362    public int GetRankIncome()
 
  367            num += 
EClass.game.spatials.ranks.GetIncome(factionBranch.owner);
 
  371            Msg.Say(
"getRankIncome", Lang._currency(num, 
"money"), 
null, 
null, 
null);
 
  377    public int GetFactionSalary()
 
  380        foreach (
Faction faction 
in EClass.game.factions.dictAll.Values)
 
  382            num += faction.relation.GetSalary();
 
  386            Msg.Say(
"getFactionSalary", Lang._currency(num, 
"money"), 
null, 
null, 
null);
 
  392    public int GetTotalTax(
bool evasion)
 
  394        return this.GetBaseTax(evasion) + this.GetFameTax(evasion) + 
EClass.player.extraTax;
 
  398    public int GetBaseTax(
bool evasion)
 
  400        int a = EClass.world.date.year - 
EClass.game.Prologue.year;
 
  401        int v = 500 + Mathf.Min(a, 10) * 500;
 
  402        return this.EvadeTax(v, evasion);
 
  406    public int GetFameTax(
bool evasion)
 
  408        int v = 
EClass.curve(
EClass.player.fame * 2, 10000, 2000, 80);
 
  409        return this.EvadeTax(v, evasion);
 
  413    public int EvadeTax(
int v, 
bool evasion)
 
  422            num += factionBranch.Evalue(2119);
 
  424        return (
int)((float)(v * 100) / (100f + Mathf.Sqrt((
float)(num * 5))));
 
  428    public void SetTaxTooltip(UINote n)
 
  430        n.AddHeader(
"tax", 
null);
 
  431        n.AddTopic(
"tax_base", Lang._currency(
this.GetBaseTax(
true), 
true, 14) + 
" (" + Lang._currency(
this.GetBaseTax(
false), 
false, 14) + 
")");
 
  432        n.AddTopic(
"tax_fame", Lang._currency(
this.GetFameTax(
true), 
true, 14) + 
" (" + Lang._currency(
this.GetFameTax(
false), 
false, 14) + 
")");
 
  433        n.AddTopic(
"tax_extra", Lang._currency(
EClass.player.extraTax, 
true, 14));
 
  437    public int CountTaxFreeLand()
 
  440        using (List<FactionBranch>.Enumerator enumerator = 
EClass.pc.faction.GetChildren().GetEnumerator())
 
  442            while (enumerator.MoveNext())
 
  444                if (enumerator.Current.policies.IsActive(2514, -1))
 
  459    public int maxReserve = 3;
 
  475    public List<HireInfo> listReserve = 
new List<HireInfo>();
 
  483    public HashSet<int> globalPolicies = 
new HashSet<int>();