Elin Modding Docs Doc
Loading...
Searching...
No Matches
TraitShrine.cs
1using System;
2using System.Collections.Generic;
3using UnityEngine;
4
5// Token: 0x02000423 RID: 1059
7{
8 // Token: 0x17000960 RID: 2400
9 // (get) Token: 0x06001E19 RID: 7705 RVA: 0x000AD94D File Offset: 0x000ABB4D
10 public ShrineData Shrine
11 {
12 get
13 {
14 return EClass.gamedata.shrines[this.owner.refVal];
15 }
16 }
17
18 // Token: 0x17000961 RID: 2401
19 // (get) Token: 0x06001E1A RID: 7706 RVA: 0x000AD969 File Offset: 0x000ABB69
20 public override bool RenderExtra
21 {
22 get
23 {
24 return this.owner.isOn && this.owner.IsInstalled;
25 }
26 }
27
28 // Token: 0x06001E1B RID: 7707 RVA: 0x000AD988 File Offset: 0x000ABB88
29 public override void OnCreate(int lv)
30 {
31 base.OnCreate(lv);
32 this.owner.refVal = EClass.gamedata.shrines.IndexOf(EClass.gamedata.shrines.RandomItemWeighted((ShrineData a) => a.chance));
33 this.owner.idSkin = this.Shrine.skin;
34 }
35
36 // Token: 0x06001E1C RID: 7708 RVA: 0x000AD9FC File Offset: 0x000ABBFC
37 public override void _OnUse(Chara c)
38 {
39 Point point = this.owner.ExistsOnMap ? this.owner.pos : EClass.pc.pos;
40 string id = this.Shrine.id;
41 uint num = <PrivateImplementationDetails>.ComputeStringHash(id);
42 if (num <= 1052114667U)
43 {
44 if (num != 164943590U)
45 {
46 if (num != 413259977U)
47 {
48 if (num != 1052114667U)
49 {
50 return;
51 }
52 if (!(id == "knowledge"))
53 {
54 return;
55 }
56 Thing t = ThingGen.Create((EClass.rnd(3) == 0) ? "book_skill" : "book_ancient", -1, this.owner.LV);
57 EClass._zone.AddCard(t, point);
58 return;
59 }
60 else
61 {
62 if (!(id == "replenish"))
63 {
64 return;
65 }
66 using (List<Chara>.Enumerator enumerator = EClass.pc.party.members.GetEnumerator())
67 {
68 while (enumerator.MoveNext())
69 {
70 Chara chara = enumerator.Current;
71 chara.hp = chara.MaxHP;
72 chara.mana.value = chara.mana.max;
73 chara.stamina.Mod(chara.stamina.max / 3);
74 if (!chara.IsPC)
75 {
76 chara.stamina.value = chara.stamina.max;
77 }
78 chara.PlayEffect("revive", true, 0f, default(Vector3));
79 chara.Say("heal_light", chara, null, null);
80 foreach (Condition condition in chara.conditions.Copy<Condition>())
81 {
82 if (condition.Type == ConditionType.Debuff && !condition.IsKilled)
83 {
84 chara.Say("removeHex", chara, condition.Name.ToLower(), null);
85 condition.Kill(false);
86 }
87 }
88 }
89 return;
90 }
91 }
92 }
93 else if (!(id == "strife"))
94 {
95 return;
96 }
97 for (int i = 0; i < 3 + EClass.rnd(2); i++)
98 {
99 Chara chara2 = EClass._zone.SpawnMob(point.GetNearestPoint(false, false, true, false), (i == 0) ? SpawnSetting.Boss(this.owner.LV, -1) : SpawnSetting.DefenseEnemy(this.owner.LV));
100 if (chara2 != null)
101 {
102 chara2.PlayEffect("teleport", true, 0f, default(Vector3));
103 }
104 }
105 return;
106 }
107 if (num <= 3538210912U)
108 {
109 if (num != 2671260646U)
110 {
111 if (num != 3538210912U)
112 {
113 return;
114 }
115 if (!(id == "material"))
116 {
117 return;
118 }
119 ActEffect.Proc(EffectId.ChangeMaterial, EClass.pc, null, 100, new ActRef
120 {
121 n1 = this.GetMaterial().alias
122 });
123 return;
124 }
125 else
126 {
127 if (!(id == "item"))
128 {
129 return;
130 }
131 Thing t2 = ThingGen.Create("water", -1, -1);
132 EClass._zone.AddCard(t2, point);
133 }
134 }
135 else if (num != 3841201909U)
136 {
137 if (num != 4165567700U)
138 {
139 return;
140 }
141 if (!(id == "armor"))
142 {
143 return;
144 }
145 bool flag = this.mat.alias == "gold";
146 ActEffect.Proc(flag ? EffectId.EnchantArmorGreat : EffectId.EnchantArmor, 100, flag ? BlessedState.Blessed : BlessedState.Normal, EClass.pc, null, default(ActRef));
147 return;
148 }
149 else
150 {
151 if (!(id == "invention"))
152 {
153 return;
154 }
155 EClass.player.recipes.ComeUpWithRandomRecipe(null, 10);
156 return;
157 }
158 }
159
160 // Token: 0x06001E1D RID: 7709 RVA: 0x000ADDC0 File Offset: 0x000ABFC0
161 public override void OnRenderExtra(RenderParam p)
162 {
163 PaintPosition paintPosition = EClass.setting.render.paintPos.TryGetValue("shrine", null);
164 int num = 1;
165 p.x += paintPosition.pos.x * (float)num;
166 p.y += paintPosition.pos.y;
167 p.z += paintPosition.pos.z;
168 p.tile = (float)(EClass.core.refs.renderers.objs_shrine.ConvertTile(this.Shrine.tile) * num);
169 p.matColor = (float)BaseTileMap.GetColorInt(ref this.GetMaterial().matColor, 100);
170 EClass.core.refs.renderers.objs_shrine.Draw(p);
171 }
172
173 // Token: 0x06001E1E RID: 7710 RVA: 0x000ADE98 File Offset: 0x000AC098
174 public SourceMaterial.Row GetMaterial()
175 {
176 if (this.mat != null)
177 {
178 return this.mat;
179 }
180 Rand.SetSeed(this.owner.c_seed);
181 if (this.Shrine.id == "armor")
182 {
183 this.mat = EClass.sources.materials.alias[(EClass.rnd(5) == 0) ? "gold" : "granite"];
184 }
185 else
186 {
187 this.mat = MATERIAL.GetRandomMaterial(this.owner.LV / 3, (EClass.rnd(2) == 0) ? "metal" : "leather", false);
188 }
189 Rand.SetSeed(-1);
190 return this.mat;
191 }
192
193 // Token: 0x06001E1F RID: 7711 RVA: 0x000ADF44 File Offset: 0x000AC144
194 public override string GetName()
195 {
196 string @ref = "";
197 if (this.Shrine.id == "material")
198 {
199 @ref = this.GetMaterial().GetName().ToTitleCase(false);
200 }
201 return ("shrine_" + this.Shrine.id).lang(@ref, null, null, null, null);
202 }
203
204 // Token: 0x040010C7 RID: 4295
205 public SourceMaterial.Row mat;
206}
Definition Chara.cs:12
Definition Point.cs:11
Definition Thing.cs:10