Elin Decompiled Documentation EA 23.286 Nightly Patch 1
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 => Deity.IsEyth;
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))
79 {
80 if (EClass.pc.IsEyth && EClass.pc.HasElement(1228))
81 {
83 {
84 return true;
85 }
86 }
87 else if (c.c_idDeity == Deity.id)
88 {
89 return true;
90 }
91 }
92 if (base.CanOffer(c) && (EClass.pc.faith.GetOfferingValue(c as Thing) > 0 || c.id == "water") && !c.isCopy)
93 {
94 return !c.HasElement(764);
95 }
96 return false;
97 }
98
99 public void OnOffer(Chara c, Thing t)
100 {
101 if (t == null)
102 {
103 return;
104 }
105 if (t.id == "water")
106 {
107 if (Deity != EClass.pc.faith)
108 {
109 if (t.blessedState == BlessedState.Cursed)
110 {
112 return;
113 }
114 Msg.Say("waterCurse", t);
115 EClass.pc.PlayEffect("curse");
116 EClass.pc.PlaySound("curse3");
118 }
119 else if (t.blessedState == BlessedState.Blessed)
120 {
122 }
123 else
124 {
125 Msg.Say("waterBless", t);
126 EClass.pc.PlayEffect("revive");
127 EClass.pc.PlaySound("revive");
128 t.SetBlessedState(BlessedState.Blessed);
129 }
130 return;
131 }
132 if (!IsBranchAltar && EClass.pc.IsEyth && !EClass.pc.HasElement(1228))
133 {
134 EClass.pc.Say("god_offerEyth", owner, t);
135 return;
136 }
137 EClass.pc.Say("god_offer", owner, t, Deity.Name);
138 if (!CanOffer(t))
139 {
140 EClass.pc.Say("nothingHappens", owner, t);
141 return;
142 }
143 Effect.Get("debuff").Play(owner.pos);
144 EClass.pc.PlaySound("offering");
145 if (IsBranchAltar)
146 {
147 Msg.Say("nothingHappens");
148 }
149 else if (IsEyth && !EClass.pc.HasElement(1228))
150 {
151 if (EClass.pc.IsEyth)
152 {
153 Msg.Say("nothingHappens");
154 }
155 else
156 {
157 Msg.Say("takeover_empty", EClass.pc.faith.Name);
158 TakeOver();
159 _OnOffer(c, t, 2);
160 }
161 }
162 else
163 {
164 if (t.HasTag(CTAG.godArtifact) && (t.c_idDeity == Deity.id || (EClass.pc.IsEyth && EClass.pc.HasElement(1228))))
165 {
166 _ = t.encLV;
167 t.Destroy();
168 Thing thing = Religion.Reforge(t.id);
169 if (EClass.pc.IsEyth && EClass.pc.HasElement(1228) && IsEyth)
170 {
171 thing.c_idDeity = EClass.game.religions.Eyth.id;
172 }
173 thing.SetEncLv(t.encLV);
175 if (t.IsIdentified)
176 {
177 thing.Identify(show: true, IDTSource.SuperiorIdentify);
178 }
179 return;
180 }
181 if (EClass.pc.IsEyth && !EClass.pc.HasElement(1228))
182 {
183 Msg.Say("nothingHappens");
184 return;
185 }
186 if (Deity.id != EClass.pc.faith.id)
187 {
188 bool flag = EClass.rnd(EClass.pc.faith.GetOfferingValue(t, t.Num)) > EClass.rnd(200);
189 if (GetParam(1) != null || EClass.pc.IsEyth)
190 {
191 Msg.Say("nothingHappens");
192 return;
193 }
194 Msg.Say("takeover_versus", EClass.pc.faith.Name, Deity.Name);
195 if (flag)
196 {
197 Msg.Say("takeover_success", EClass.pc.faith.TextGodGender);
198 Msg.Say("takeover_success2", EClass.pc.faith.Name);
199 TakeOver();
200 _OnOffer(c, t, 5);
201 }
202 else
203 {
204 Msg.Say("takeover_fail", Deity.Name);
206 }
207 }
208 else
209 {
210 _OnOffer(c, t);
211 }
212 }
213 t.Destroy();
214 }
215
216 public void _OnOffer(Chara c, Thing t, int takeoverMod = 0)
217 {
218 bool @bool = t.GetBool(115);
219 int offeringValue = Deity.GetOfferingValue(t, t.Num);
220 offeringValue = offeringValue * (EClass.debug.enable ? 1000 : (c.HasElement(1228) ? 130 : 100)) / 100;
221 if (takeoverMod == 0)
222 {
223 if (offeringValue >= 200)
224 {
225 Msg.Say("god_offer1", t);
226 EClass.pc.faith.Talk("offer");
227 }
228 else if (offeringValue >= 100)
229 {
230 Msg.Say("god_offer2", t);
231 }
232 else if (offeringValue >= 50)
233 {
234 Msg.Say("god_offer3", t);
235 }
236 else
237 {
238 Msg.Say("god_offer4", t);
239 }
240 }
241 else
242 {
243 Msg.Say("god_offer1", t);
244 offeringValue += Deity.GetOfferingValue(t, 1) * takeoverMod;
245 }
246 int num = Mathf.Max(c.Evalue(306), 1);
247 Element orCreateElement = c.elements.GetOrCreateElement(85);
248 int value = orCreateElement.Value;
249 if (orCreateElement.vBase < num)
250 {
251 c.elements.ModExp(orCreateElement.id, offeringValue * 2 / 3);
252 if (orCreateElement.vBase >= num)
253 {
254 c.elements.SetBase(orCreateElement.id, num);
255 }
256 }
257 int num2 = 4;
258 if (orCreateElement.vBase < num)
259 {
260 num2 = Mathf.Clamp(orCreateElement.vBase * 100 / num / 25, 0, 3);
261 }
262 if (num2 == 4 || orCreateElement.Value != value)
263 {
264 Msg.Say("piety" + num2, c, c.faith.TextGodGender);
265 }
266 Debug.Log(offeringValue + "/" + orCreateElement.Value + "/" + orCreateElement.vExp);
267 if (orCreateElement.Value > num * 8 / 10)
268 {
269 c.elements.ModExp(306, offeringValue / 5);
270 }
272 if (c.faith.GetGiftRank() != -1)
273 {
274 c.faith.Talk("like");
275 }
276 if (@bool)
277 {
279 }
280 }
281
282 public void TakeOver()
283 {
285 EClass.pc.faith.Talk("takeover");
286 EClass.pc.PlayEffect("revive");
287 owner.PlayEffect("aura_heaven");
288 }
289}
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:368
bool GetBool(int id)
Definition: BaseCard.cs:15
Definition: Card.cs:11
ElementContainerCard elements
Definition: Card.cs:42
string id
Definition: Card.cs:36
SoundSource PlaySound(string id, float v=1f, bool spatial=true)
Definition: Card.cs:6375
string c_idDeity
Definition: Card.cs:1607
Card ChangeMaterial(int idNew, bool ignoreFixedMaterial=false)
Definition: Card.cs:3117
bool isCopy
Definition: Card.cs:879
virtual void SetBlessedState(BlessedState s)
Definition: Card.cs:3977
bool HasTag(CTAG tag)
Definition: Card.cs:2635
Point pos
Definition: Card.cs:60
Effect PlayEffect(string id, bool useRenderPos=true, float range=0f, Vector3 fix=default(Vector3))
Definition: Card.cs:6409
int encLV
Definition: Card.cs:327
void SetEncLv(int a)
Definition: Card.cs:3946
void Destroy()
Definition: Card.cs:5164
int Evalue(int ele)
Definition: Card.cs:2611
BlessedState blessedState
Definition: Card.cs:279
int Num
Definition: Card.cs:159
bool IsIdentified
Definition: Card.cs:2417
bool HasElement(int ele, bool includeNagative=false)
Definition: Card.cs:6122
void Say(string lang, string ref1=null, string ref2=null)
Definition: Card.cs:7052
Definition: Chara.cs:10
bool IsEyth
Definition: Chara.cs:1066
void RefreshFaithElement()
Definition: Chara.cs:10404
Religion faith
Definition: Chara.cs:441
Definition: EClass.cs:6
static Game game
Definition: EClass.cs:9
static int rnd(long a)
Definition: EClass.cs:59
static FactionBranch Branch
Definition: EClass.cs:23
static Player player
Definition: EClass.cs:13
static Chara pc
Definition: EClass.cs:15
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, float a, bool chain=false)
Element SetBase(string alias, int v, int potential=0)
Element GetOrCreateElement(Element ele)
int id
Definition: ELEMENT.cs:255
int vBase
Definition: ELEMENT.cs:257
int vExp
Definition: ELEMENT.cs:259
int Value
Definition: ELEMENT.cs:297
ReligionManager religions
Definition: Game.cs:159
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:2598
override string id
Definition: ReligionEyth.cs:3
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
bool IsEyth
Definition: Religion.cs:44
int GetOfferingValue(Thing t, int num=-1)
Definition: Religion.cs:170
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:300
virtual string id
Definition: Religion.cs:26
void PunishTakeOver(Chara c)
Definition: Religion.cs:545
void Talk(string idTalk, Card c=null, Card agent=null)
Definition: Religion.cs:154
virtual bool CanJoin
Definition: Religion.cs:52
bool IsValidArtifact(string id)
Definition: Religion.cs:295
int GetGiftRank()
Definition: Religion.cs:220
Definition: Thing.cs:8
Thing Identify(bool show=true, IDTSource idtSource=IDTSource.Identify)
Definition: Thing.cs:2102
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:282
void _OnOffer(Chara c, Thing t, int takeoverMod=0)
Definition: TraitAltar.cs:216
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:99
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:577
Card owner
Definition: Trait.cs:28