Elin Decompiled Documentation EA 23.102 Nightly
Loading...
Searching...
No Matches
TraitAltar.cs
Go to the documentation of this file.
1using UnityEngine;
2
3public class TraitAltar : Trait
4{
5 public override bool CanStack => false;
6
7 public override bool IsAltar => true;
8
9 public bool IsBranchAltar => this is TraitAltarAncient;
10
11 public override bool CanOnlyCarry => IsBranchAltar;
12
13 public virtual string idDeity => owner.c_idDeity.IsEmpty("eyth");
14
16
17 public string StrDeity => Deity.NameDomain;
18
19 public bool IsEyth => idDeity == "eyth";
20
21 public override void OnCreate(int lv)
22 {
24 }
25
26 public override void OnImportMap()
27 {
28 if (owner.c_idDeity.IsEmpty() || GetParam(1) != null)
29 {
31 }
32 }
33
34 public void SetDeity(string id)
35 {
36 owner.c_idDeity = id;
37 if (owner.id == "altar")
38 {
39 owner.ChangeMaterial(Deity.source.idMaterial);
40 }
41 }
42
43 public override void SetName(ref string s)
44 {
45 if (!owner.c_idDeity.IsEmpty())
46 {
47 s = "_of".lang(StrDeity, s);
48 }
49 }
50
51 public override void TrySetAct(ActPlan p)
52 {
53 if (IsBranchAltar)
54 {
55 return;
56 }
58 {
59 p.TrySetAct("actOffer", delegate
60 {
62 return false;
63 }, owner);
64 }
66 {
67 p.TrySetAct("actWorship", delegate
68 {
69 LayerDrama.currentReligion = Deity;
70 LayerDrama.Activate("_adv", "god", "worship");
71 return false;
72 }, owner);
73 }
74 }
75
76 public override bool CanOffer(Card c)
77 {
78 if (c != null && c.HasTag(CTAG.godArtifact) && c.c_idDeity == Deity.id)
79 {
80 return true;
81 }
82 if (base.CanOffer(c) && (EClass.pc.faith.GetOfferingValue(c as Thing) > 0 || c.id == "water"))
83 {
84 return !c.isCopy;
85 }
86 return false;
87 }
88
89 public void OnOffer(Chara c, Thing t)
90 {
91 if (t == null)
92 {
93 return;
94 }
95 if (t.id == "water")
96 {
97 if (Deity != EClass.pc.faith)
98 {
99 if (t.blessedState == BlessedState.Cursed)
100 {
102 return;
103 }
104 Msg.Say("waterCurse", t);
105 EClass.pc.PlayEffect("curse");
106 EClass.pc.PlaySound("curse3");
108 }
109 else if (t.blessedState == BlessedState.Blessed)
110 {
112 }
113 else
114 {
115 Msg.Say("waterBless", t);
116 EClass.pc.PlayEffect("revive");
117 EClass.pc.PlaySound("revive");
118 t.SetBlessedState(BlessedState.Blessed);
119 }
120 return;
121 }
123 {
124 EClass.pc.Say("god_offerEyth", owner, t);
125 return;
126 }
127 EClass.pc.Say("god_offer", owner, t, Deity.Name);
128 if (!CanOffer(t))
129 {
130 EClass.pc.Say("nothingHappens", owner, t);
131 return;
132 }
133 Effect.Get("debuff").Play(owner.pos);
134 EClass.pc.PlaySound("offering");
135 if (IsBranchAltar)
136 {
137 Msg.Say("nothingHappens");
138 }
139 else if (IsEyth)
140 {
141 if (EClass.pc.IsEyth)
142 {
143 Msg.Say("nothingHappens");
144 }
145 else
146 {
147 Msg.Say("takeover_empty", EClass.pc.faith.Name);
148 TakeOver();
149 _OnOffer(c, t, 2);
150 }
151 }
152 else
153 {
154 if (t.HasTag(CTAG.godArtifact) && t.c_idDeity == Deity.id)
155 {
156 _ = t.encLV;
157 t.Destroy();
158 Thing thing = Religion.Reforge(t.id);
159 thing.SetEncLv(t.encLV);
161 if (t.IsIdentified)
162 {
163 thing.Identify(show: true, IDTSource.SuperiorIdentify);
164 }
165 return;
166 }
167 if (EClass.pc.IsEyth)
168 {
169 Msg.Say("nothingHappens");
170 return;
171 }
172 if (Deity != EClass.pc.faith)
173 {
174 bool flag = EClass.rnd(EClass.pc.faith.GetOfferingValue(t, t.Num)) > EClass.rnd(200);
175 if (GetParam(1) != null)
176 {
177 Msg.Say("nothingHappens");
178 return;
179 }
180 Msg.Say("takeover_versus", EClass.pc.faith.Name, Deity.Name);
181 if (flag)
182 {
183 Msg.Say("takeover_success", EClass.pc.faith.TextGodGender);
184 Msg.Say("takeover_success2", EClass.pc.faith.Name);
185 TakeOver();
186 _OnOffer(c, t, 5);
187 }
188 else
189 {
190 Msg.Say("takeover_fail", Deity.Name);
192 }
193 }
194 else
195 {
196 _OnOffer(c, t);
197 }
198 }
199 t.Destroy();
200 }
201
202 public void _OnOffer(Chara c, Thing t, int takeoverMod = 0)
203 {
204 bool @bool = t.GetBool(115);
205 int offeringValue = Deity.GetOfferingValue(t, t.Num);
206 offeringValue = offeringValue * (c.HasElement(1228) ? 130 : 100) / 100;
207 if (takeoverMod == 0)
208 {
209 if (offeringValue >= 200)
210 {
211 Msg.Say("god_offer1", t);
212 EClass.pc.faith.Talk("offer");
213 }
214 else if (offeringValue >= 100)
215 {
216 Msg.Say("god_offer2", t);
217 }
218 else if (offeringValue >= 50)
219 {
220 Msg.Say("god_offer3", t);
221 }
222 else
223 {
224 Msg.Say("god_offer4", t);
225 }
226 }
227 else
228 {
229 Msg.Say("god_offer1", t);
230 offeringValue += Deity.GetOfferingValue(t, 1) * takeoverMod;
231 }
232 int num = Mathf.Max(c.Evalue(306), 1);
233 Element orCreateElement = c.elements.GetOrCreateElement(85);
234 int value = orCreateElement.Value;
235 c.elements.ModExp(orCreateElement.id, offeringValue * 2 / 3);
236 int num2 = 4;
237 if (orCreateElement.vBase >= num)
238 {
239 c.elements.SetBase(orCreateElement.id, num);
240 }
241 else
242 {
243 num2 = Mathf.Clamp(orCreateElement.vBase * 100 / num / 25, 0, 3);
244 }
245 if (num2 == 4 || orCreateElement.Value != value)
246 {
247 Msg.Say("piety" + num2, c, c.faith.TextGodGender);
248 }
249 Debug.Log(offeringValue + "/" + orCreateElement.Value + "/" + orCreateElement.vExp);
250 if (orCreateElement.Value > num * 8 / 10)
251 {
252 c.elements.ModExp(306, offeringValue / 5);
253 }
255 if (@bool)
256 {
258 }
259 }
260
261 public void TakeOver()
262 {
264 EClass.pc.faith.Talk("takeover");
265 EClass.pc.PlayEffect("revive");
266 owner.PlayEffect("aura_heaven");
267 }
268}
BlessedState
Definition: BlessedState.cs:2
CTAG
Definition: CTAG.cs:2
IDTSource
Definition: IDTSource.cs:2
bool TrySetAct(string lang, Func< bool > onPerform, Card tc, CursorInfo cursor=null, int dist=1, bool isHostileAct=false, bool localAct=true, bool canRepeat=false)
Definition: ActPlan.cs:344
bool GetBool(int id)
Definition: BaseCard.cs:15
Definition: Card.cs:11
ElementContainerCard elements
Definition: Card.cs:37
string id
Definition: Card.cs:31
bool HasElement(int ele, int req=1)
Definition: Card.cs:5214
SoundSource PlaySound(string id, float v=1f, bool spatial=true)
Definition: Card.cs:5404
string c_idDeity
Definition: Card.cs:1481
Card ChangeMaterial(int idNew, bool ignoreFixedMaterial=false)
Definition: Card.cs:2838
bool isCopy
Definition: Card.cs:850
virtual void SetBlessedState(BlessedState s)
Definition: Card.cs:3572
bool HasTag(CTAG tag)
Definition: Card.cs:2455
Point pos
Definition: Card.cs:55
Effect PlayEffect(string id, bool useRenderPos=true, float range=0f, Vector3 fix=default(Vector3))
Definition: Card.cs:5438
int encLV
Definition: Card.cs:310
void SetEncLv(int a)
Definition: Card.cs:3567
void Destroy()
Definition: Card.cs:4538
int Evalue(int ele)
Definition: Card.cs:2431
BlessedState blessedState
Definition: Card.cs:262
int Num
Definition: Card.cs:154
bool IsIdentified
Definition: Card.cs:2237
void Say(string lang, string ref1=null, string ref2=null)
Definition: Card.cs:6046
Definition: Chara.cs:10
bool IsEyth
Definition: Chara.cs:875
void RefreshFaithElement()
Definition: Chara.cs:9166
Religion faith
Definition: Chara.cs:424
Definition: EClass.cs:5
static Game game
Definition: EClass.cs:8
static int rnd(int a)
Definition: EClass.cs:50
static FactionBranch Branch
Definition: EClass.cs:22
static Player player
Definition: EClass.cs:12
static Chara pc
Definition: EClass.cs:14
Definition: Effect.cs:7
static Effect Get(Effect original)
Definition: Effect.cs:85
void Play(float delay, Point from, float fixY=0f, Point to=null, Sprite sprite=null)
Definition: Effect.cs:100
void ModExp(int ele, int a, bool chain=false)
Element SetBase(string alias, int v, int potential=0)
Element GetOrCreateElement(Element ele)
int id
Definition: ELEMENT.cs:240
int vBase
Definition: ELEMENT.cs:242
int vExp
Definition: ELEMENT.cs:244
int Value
Definition: ELEMENT.cs:282
ReligionManager religions
Definition: Game.cs:158
static LayerDragGrid CreateOffering(TraitAltar altar)
static LayerDrama Activate(string book, string idSheet, string idStep, Chara target=null, Card ref1=null, string tag="")
Definition: LayerDrama.cs:66
Definition: Msg.cs:5
static string SayNothingHappen()
Definition: Msg.cs:96
static string Say(string idLang, string ref1, string ref2=null, string ref3=null, string ref4=null)
Definition: Msg.cs:58
void ModKarma(int a)
Definition: Player.cs:2289
Religion Find(string id)
ReligionEyth Eyth
Religion GetRandomReligion(bool onlyJoinable=true, bool includeMinor=false)
string NameDomain
Definition: Religion.cs:36
string Name
Definition: Religion.cs:30
int GetOfferingValue(Thing t, int num=-1)
Definition: Religion.cs:172
SourceReligion.Row source
Definition: Religion.cs:32
string TextGodGender
Definition: Religion.cs:40
static Thing Reforge(string id, Point pos=null, bool first=true)
Definition: Religion.cs:279
virtual string id
Definition: Religion.cs:26
void PunishTakeOver(Chara c)
Definition: Religion.cs:497
void Talk(string idTalk, Card c=null, Card agent=null)
Definition: Religion.cs:153
virtual bool CanJoin
Definition: Religion.cs:52
Definition: Thing.cs:8
Thing Identify(bool show=true, IDTSource idtSource=IDTSource.Identify)
Definition: Thing.cs:1959
override void OnCreate(int lv)
Definition: TraitAltar.cs:21
override bool IsAltar
Definition: TraitAltar.cs:7
void SetDeity(string id)
Definition: TraitAltar.cs:34
override bool CanOffer(Card c)
Definition: TraitAltar.cs:76
string StrDeity
Definition: TraitAltar.cs:17
virtual Religion Deity
Definition: TraitAltar.cs:15
bool IsBranchAltar
Definition: TraitAltar.cs:9
override void SetName(ref string s)
Definition: TraitAltar.cs:43
void TakeOver()
Definition: TraitAltar.cs:261
void _OnOffer(Chara c, Thing t, int takeoverMod=0)
Definition: TraitAltar.cs:202
virtual string idDeity
Definition: TraitAltar.cs:13
override void TrySetAct(ActPlan p)
Definition: TraitAltar.cs:51
override bool CanOnlyCarry
Definition: TraitAltar.cs:11
void OnOffer(Chara c, Thing t)
Definition: TraitAltar.cs:89
override bool CanStack
Definition: TraitAltar.cs:5
bool IsEyth
Definition: TraitAltar.cs:19
override void OnImportMap()
Definition: TraitAltar.cs:26
Definition: Trait.cs:7
string GetParam(int i, string def=null)
Definition: Trait.cs:515
Card owner
Definition: Trait.cs:26