Elin Decompiled Documentation EA 23.241 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 Debug.Log(Deity);
79 Debug.Log(Deity.id);
80 Debug.Log(IsEyth);
81 if (c != null && c.HasTag(CTAG.godArtifact))
82 {
83 if (EClass.pc.IsEyth && EClass.pc.HasElement(1228))
84 {
86 {
87 return true;
88 }
89 }
90 else if (c.c_idDeity == Deity.id)
91 {
92 return true;
93 }
94 }
95 if (base.CanOffer(c) && (EClass.pc.faith.GetOfferingValue(c as Thing) > 0 || c.id == "water") && !c.isCopy)
96 {
97 return !c.HasElement(764);
98 }
99 return false;
100 }
101
102 public void OnOffer(Chara c, Thing t)
103 {
104 if (t == null)
105 {
106 return;
107 }
108 if (t.id == "water")
109 {
110 if (Deity != EClass.pc.faith)
111 {
112 if (t.blessedState == BlessedState.Cursed)
113 {
115 return;
116 }
117 Msg.Say("waterCurse", t);
118 EClass.pc.PlayEffect("curse");
119 EClass.pc.PlaySound("curse3");
121 }
122 else if (t.blessedState == BlessedState.Blessed)
123 {
125 }
126 else
127 {
128 Msg.Say("waterBless", t);
129 EClass.pc.PlayEffect("revive");
130 EClass.pc.PlaySound("revive");
131 t.SetBlessedState(BlessedState.Blessed);
132 }
133 return;
134 }
135 if (!IsBranchAltar && EClass.pc.IsEyth && !EClass.pc.HasElement(1228))
136 {
137 EClass.pc.Say("god_offerEyth", owner, t);
138 return;
139 }
140 EClass.pc.Say("god_offer", owner, t, Deity.Name);
141 if (!CanOffer(t))
142 {
143 EClass.pc.Say("nothingHappens", owner, t);
144 return;
145 }
146 Effect.Get("debuff").Play(owner.pos);
147 EClass.pc.PlaySound("offering");
148 if (IsBranchAltar)
149 {
150 Msg.Say("nothingHappens");
151 }
152 else if (IsEyth && !EClass.pc.HasElement(1228))
153 {
154 if (EClass.pc.IsEyth)
155 {
156 Msg.Say("nothingHappens");
157 }
158 else
159 {
160 Msg.Say("takeover_empty", EClass.pc.faith.Name);
161 TakeOver();
162 _OnOffer(c, t, 2);
163 }
164 }
165 else
166 {
167 if (t.HasTag(CTAG.godArtifact) && (t.c_idDeity == Deity.id || (EClass.pc.IsEyth && EClass.pc.HasElement(1228))))
168 {
169 _ = t.encLV;
170 t.Destroy();
171 Thing thing = Religion.Reforge(t.id);
172 if (EClass.pc.IsEyth && EClass.pc.HasElement(1228) && IsEyth)
173 {
174 thing.c_idDeity = EClass.game.religions.Eyth.id;
175 }
176 thing.SetEncLv(t.encLV);
178 if (t.IsIdentified)
179 {
180 thing.Identify(show: true, IDTSource.SuperiorIdentify);
181 }
182 return;
183 }
184 if (EClass.pc.IsEyth && !EClass.pc.HasElement(1228))
185 {
186 Msg.Say("nothingHappens");
187 return;
188 }
189 if (Deity.id != EClass.pc.faith.id)
190 {
191 bool flag = EClass.rnd(EClass.pc.faith.GetOfferingValue(t, t.Num)) > EClass.rnd(200);
192 if (GetParam(1) != null || EClass.pc.IsEyth)
193 {
194 Msg.Say("nothingHappens");
195 return;
196 }
197 Msg.Say("takeover_versus", EClass.pc.faith.Name, Deity.Name);
198 if (flag)
199 {
200 Msg.Say("takeover_success", EClass.pc.faith.TextGodGender);
201 Msg.Say("takeover_success2", EClass.pc.faith.Name);
202 TakeOver();
203 _OnOffer(c, t, 5);
204 }
205 else
206 {
207 Msg.Say("takeover_fail", Deity.Name);
209 }
210 }
211 else
212 {
213 _OnOffer(c, t);
214 }
215 }
216 t.Destroy();
217 }
218
219 public void _OnOffer(Chara c, Thing t, int takeoverMod = 0)
220 {
221 bool @bool = t.GetBool(115);
222 int offeringValue = Deity.GetOfferingValue(t, t.Num);
223 offeringValue = offeringValue * (c.HasElement(1228) ? 130 : 100) / 100;
224 if (takeoverMod == 0)
225 {
226 if (offeringValue >= 200)
227 {
228 Msg.Say("god_offer1", t);
229 EClass.pc.faith.Talk("offer");
230 }
231 else if (offeringValue >= 100)
232 {
233 Msg.Say("god_offer2", t);
234 }
235 else if (offeringValue >= 50)
236 {
237 Msg.Say("god_offer3", t);
238 }
239 else
240 {
241 Msg.Say("god_offer4", t);
242 }
243 }
244 else
245 {
246 Msg.Say("god_offer1", t);
247 offeringValue += Deity.GetOfferingValue(t, 1) * takeoverMod;
248 }
249 int num = Mathf.Max(c.Evalue(306), 1);
250 Element orCreateElement = c.elements.GetOrCreateElement(85);
251 int value = orCreateElement.Value;
252 c.elements.ModExp(orCreateElement.id, offeringValue * 2 / 3);
253 int num2 = 4;
254 if (orCreateElement.vBase >= num)
255 {
256 c.elements.SetBase(orCreateElement.id, num);
257 }
258 else
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 (@bool)
273 {
275 }
276 }
277
278 public void TakeOver()
279 {
281 EClass.pc.faith.Talk("takeover");
282 EClass.pc.PlayEffect("revive");
283 owner.PlayEffect("aura_heaven");
284 }
285}
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:366
bool GetBool(int id)
Definition: BaseCard.cs:15
Definition: Card.cs:11
ElementContainerCard elements
Definition: Card.cs:41
string id
Definition: Card.cs:35
bool HasElement(int ele, int req=1)
Definition: Card.cs:5897
SoundSource PlaySound(string id, float v=1f, bool spatial=true)
Definition: Card.cs:6129
string c_idDeity
Definition: Card.cs:1581
Card ChangeMaterial(int idNew, bool ignoreFixedMaterial=false)
Definition: Card.cs:3038
bool isCopy
Definition: Card.cs:878
virtual void SetBlessedState(BlessedState s)
Definition: Card.cs:3892
bool HasTag(CTAG tag)
Definition: Card.cs:2595
Point pos
Definition: Card.cs:59
Effect PlayEffect(string id, bool useRenderPos=true, float range=0f, Vector3 fix=default(Vector3))
Definition: Card.cs:6163
int encLV
Definition: Card.cs:326
void SetEncLv(int a)
Definition: Card.cs:3861
void Destroy()
Definition: Card.cs:5067
int Evalue(int ele)
Definition: Card.cs:2571
BlessedState blessedState
Definition: Card.cs:278
int Num
Definition: Card.cs:158
bool IsIdentified
Definition: Card.cs:2377
void Say(string lang, string ref1=null, string ref2=null)
Definition: Card.cs:6781
Definition: Chara.cs:10
bool IsEyth
Definition: Chara.cs:1052
void RefreshFaithElement()
Definition: Chara.cs:10108
Religion faith
Definition: Chara.cs:439
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:250
int vBase
Definition: ELEMENT.cs:252
int vExp
Definition: ELEMENT.cs:254
int Value
Definition: ELEMENT.cs:292
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:2512
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: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:275
virtual string id
Definition: Religion.cs:26
void PunishTakeOver(Chara c)
Definition: Religion.cs:513
void Talk(string idTalk, Card c=null, Card agent=null)
Definition: Religion.cs:153
virtual bool CanJoin
Definition: Religion.cs:52
bool IsValidArtifact(string id)
Definition: Religion.cs:255
Definition: Thing.cs:8
Thing Identify(bool show=true, IDTSource idtSource=IDTSource.Identify)
Definition: Thing.cs:2069
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:278
void _OnOffer(Chara c, Thing t, int takeoverMod=0)
Definition: TraitAltar.cs:219
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:102
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:566
Card owner
Definition: Trait.cs:27