Elin Decompiled Documentation EA 23.327 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 => 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 (t.HasElement(766) && !Deity.IsEyth)
133 {
135 return;
136 }
137 if (!IsBranchAltar && EClass.pc.IsEyth && !EClass.pc.HasElement(1228))
138 {
139 EClass.pc.Say("god_offerEyth", owner, t);
140 return;
141 }
142 EClass.pc.Say("god_offer", owner, t, Deity.Name);
143 if (!CanOffer(t))
144 {
145 EClass.pc.Say("nothingHappens", owner, t);
146 return;
147 }
148 Effect.Get("debuff").Play(owner.pos);
149 EClass.pc.PlaySound("offering");
150 if (IsBranchAltar)
151 {
152 Msg.Say("nothingHappens");
153 }
154 else if (IsEyth && !EClass.pc.HasElement(1228))
155 {
156 if (EClass.pc.IsEyth)
157 {
158 Msg.Say("nothingHappens");
159 }
160 else
161 {
162 Msg.Say("takeover_empty", EClass.pc.faith.Name);
163 TakeOver();
164 _OnOffer(c, t, 2);
165 }
166 }
167 else
168 {
169 if (t.HasTag(CTAG.godArtifact) && (t.c_idDeity == Deity.id || (EClass.pc.IsEyth && EClass.pc.HasElement(1228))))
170 {
171 _ = t.encLV;
172 t.Destroy();
173 Thing thing = EClass.game.religions.Reforge(t.id);
174 if (EClass.pc.IsEyth && EClass.pc.HasElement(1228) && IsEyth)
175 {
176 thing.c_idDeity = EClass.game.religions.Eyth.id;
177 }
178 thing.SetEncLv(t.encLV);
180 if (t.IsIdentified)
181 {
182 thing.Identify(show: true, IDTSource.SuperiorIdentify);
183 }
184 return;
185 }
186 if (EClass.pc.IsEyth && !EClass.pc.HasElement(1228))
187 {
188 Msg.Say("nothingHappens");
189 return;
190 }
191 if (Deity.id != EClass.pc.faith.id)
192 {
193 bool flag = EClass.rnd(EClass.pc.faith.GetOfferingValue(t, t.Num)) > EClass.rnd(200) || IsEyth;
194 if (GetParam(1) != null || EClass.pc.IsEyth)
195 {
196 Msg.Say("nothingHappens");
197 return;
198 }
199 Msg.Say("takeover_versus", EClass.pc.faith.Name, Deity.Name);
200 if (flag)
201 {
202 Msg.Say("takeover_success", EClass.pc.faith.TextGodGender);
203 Msg.Say("takeover_success2", EClass.pc.faith.Name);
204 TakeOver();
205 _OnOffer(c, t, 5);
206 }
207 else
208 {
209 Msg.Say("takeover_fail", Deity.Name);
211 }
212 }
213 else
214 {
215 _OnOffer(c, t);
216 }
217 }
218 t.Destroy();
219 }
220
221 public void _OnOffer(Chara c, Thing t, int takeoverMod = 0)
222 {
223 bool @bool = t.GetBool(115);
224 int offeringValue = Deity.GetOfferingValue(t, t.Num);
225 offeringValue = offeringValue * (EClass.debug.enable ? 1000 : (c.HasElement(1228) ? 130 : 100)) / 100;
226 if (takeoverMod == 0)
227 {
228 if (offeringValue >= 200)
229 {
230 Msg.Say("god_offer1", t);
231 EClass.pc.faith.Talk("offer");
232 }
233 else if (offeringValue >= 100)
234 {
235 Msg.Say("god_offer2", t);
236 }
237 else if (offeringValue >= 50)
238 {
239 Msg.Say("god_offer3", t);
240 }
241 else
242 {
243 Msg.Say("god_offer4", t);
244 }
245 }
246 else
247 {
248 Msg.Say("god_offer1", t);
249 offeringValue += Deity.GetOfferingValue(t, 1) * takeoverMod;
250 }
251 int num = Mathf.Max(c.Evalue(306), 1);
252 Element orCreateElement = c.elements.GetOrCreateElement(85);
253 int value = orCreateElement.Value;
254 if (orCreateElement.vBase < num)
255 {
256 c.elements.ModExp(orCreateElement.id, offeringValue * 2 / 3);
257 if (orCreateElement.vBase >= num)
258 {
259 c.elements.SetBase(orCreateElement.id, num);
260 }
261 }
262 int num2 = 4;
263 if (orCreateElement.vBase < num)
264 {
265 num2 = Mathf.Clamp(orCreateElement.vBase * 100 / num / 25, 0, 3);
266 }
267 if (num2 == 4 || orCreateElement.Value != value)
268 {
269 Msg.Say("piety" + num2, c, c.faith.TextGodGender);
270 }
271 Debug.Log(offeringValue + "/" + orCreateElement.Value + "/" + orCreateElement.vExp);
272 if (orCreateElement.Value > num * 8 / 10)
273 {
274 c.elements.ModExp(306, offeringValue / 5);
275 }
277 if (c.faith.GetGiftRank() != -1)
278 {
279 c.faith.Talk("like");
280 }
281 if (@bool)
282 {
284 }
285 }
286
287 public void TakeOver()
288 {
290 EClass.pc.faith.Talk("takeover");
291 EClass.pc.PlayEffect("revive");
292 owner.PlayEffect("aura_heaven");
293 }
294}
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:372
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:6606
string c_idDeity
Definition: Card.cs:1621
Card ChangeMaterial(int idNew, bool ignoreFixedMaterial=false)
Definition: Card.cs:3210
bool isCopy
Definition: Card.cs:881
virtual void SetBlessedState(BlessedState s)
Definition: Card.cs:4069
bool HasTag(CTAG tag)
Definition: Card.cs:2728
Point pos
Definition: Card.cs:60
Effect PlayEffect(string id, bool useRenderPos=true, float range=0f, Vector3 fix=default(Vector3))
Definition: Card.cs:6640
int encLV
Definition: Card.cs:329
void SetEncLv(int a)
Definition: Card.cs:4038
void Destroy()
Definition: Card.cs:5301
int Evalue(int ele)
Definition: Card.cs:2704
bool GetBool(string id)
Definition: Card.cs:2557
BlessedState blessedState
Definition: Card.cs:281
int Num
Definition: Card.cs:161
bool IsIdentified
Definition: Card.cs:2447
bool HasElement(int ele, bool includeNagative=false)
Definition: Card.cs:6344
void Say(string lang, string ref1=null, string ref2=null)
Definition: Card.cs:7284
Definition: Chara.cs:10
bool IsEyth
Definition: Chara.cs:1099
void RefreshFaithElement()
Definition: Chara.cs:10726
Religion faith
Definition: Chara.cs:443
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:80
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:259
int vBase
Definition: ELEMENT.cs:261
int vExp
Definition: ELEMENT.cs:263
int Value
Definition: ELEMENT.cs:301
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:2610
override string id
Definition: ReligionEyth.cs:3
Religion Find(string id)
ReligionEyth Eyth
Thing Reforge(string id, Point pos=null, bool first=true)
Religion GetRandomReligion(bool onlyJoinable=true, bool includeMinor=false)
virtual string NameDomain
Definition: Religion.cs:57
bool IsEyth
Definition: Religion.cs:65
virtual bool IsValidArtifact(string id)
Definition: Religion.cs:318
virtual int GetGiftRank()
Definition: Religion.cs:241
virtual string TextGodGender
Definition: Religion.cs:61
virtual void PunishTakeOver(Chara c)
Definition: Religion.cs:438
SourceReligion.Row source
Definition: Religion.cs:40
virtual void Talk(string idTalk, Card c=null, Card agent=null)
Definition: Religion.cs:175
virtual int GetOfferingValue(Thing t, int num=-1)
Definition: Religion.cs:191
virtual string id
Definition: Religion.cs:33
virtual bool CanJoin
Definition: Religion.cs:73
virtual string Name
Definition: Religion.cs:37
Definition: Thing.cs:8
Thing Identify(bool show=true, IDTSource idtSource=IDTSource.Identify)
Definition: Thing.cs:2132
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:287
void _OnOffer(Chara c, Thing t, int takeoverMod=0)
Definition: TraitAltar.cs:221
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:587
Card owner
Definition: Trait.cs:28