Elin Modding Docs Doc
Loading...
Searching...
No Matches
TraitWell.cs
1using System;
2
3// Token: 0x0200044D RID: 1101
4public class TraitWell : Trait
5{
6 // Token: 0x17000991 RID: 2449
7 // (get) Token: 0x06001ECB RID: 7883 RVA: 0x000B00A0 File Offset: 0x000AE2A0
8 public bool IsHoly
9 {
10 get
11 {
12 return this is TraitWellHoly;
13 }
14 }
15
16 // Token: 0x17000992 RID: 2450
17 // (get) Token: 0x06001ECC RID: 7884 RVA: 0x000B00AB File Offset: 0x000AE2AB
18 public override bool IsBlendBase
19 {
20 get
21 {
22 return true;
23 }
24 }
25
26 // Token: 0x17000993 RID: 2451
27 // (get) Token: 0x06001ECD RID: 7885 RVA: 0x000B00AE File Offset: 0x000AE2AE
28 public override bool HasCharges
29 {
30 get
31 {
32 return true;
33 }
34 }
35
36 // Token: 0x17000994 RID: 2452
37 // (get) Token: 0x06001ECE RID: 7886 RVA: 0x000B00B1 File Offset: 0x000AE2B1
38 public override bool ShowCharges
39 {
40 get
41 {
42 return false;
43 }
44 }
45
46 // Token: 0x17000995 RID: 2453
47 // (get) Token: 0x06001ECF RID: 7887 RVA: 0x000B00B4 File Offset: 0x000AE2B4
48 public int pollution
49 {
50 get
51 {
52 return this.owner.GetInt(26, null);
53 }
54 }
55
56 // Token: 0x17000996 RID: 2454
57 // (get) Token: 0x06001ED0 RID: 7888 RVA: 0x000B00D7 File Offset: 0x000AE2D7
58 // (set) Token: 0x06001ED1 RID: 7889 RVA: 0x000B00F7 File Offset: 0x000AE2F7
59 public int Charges
60 {
61 get
62 {
63 if (!this.IsHoly)
64 {
65 return this.owner.c_charges;
66 }
67 return EClass.player.holyWell;
68 }
69 set
70 {
71 if (this.IsHoly)
72 {
73 EClass.player.holyWell = value;
74 return;
75 }
76 this.owner.c_charges = value;
77 }
78 }
79
80 // Token: 0x17000997 RID: 2455
81 // (get) Token: 0x06001ED2 RID: 7890 RVA: 0x000B0119 File Offset: 0x000AE319
82 public bool polluted
83 {
84 get
85 {
86 return this.pollution >= 10;
87 }
88 }
89
90 // Token: 0x06001ED3 RID: 7891 RVA: 0x000B0128 File Offset: 0x000AE328
91 public override bool CanBlend(Thing t)
92 {
93 return t.category.IsChildOf("drink");
94 }
95
96 // Token: 0x06001ED4 RID: 7892 RVA: 0x000B013C File Offset: 0x000AE33C
97 public override void OnBlend(Thing t, Chara c)
98 {
99 bool polluted = this.polluted;
100 if (!this.IsHoly)
101 {
102 this.ModCharges(1);
103 }
104 if ((t.id == "water" || t.id == "bucket") && t.IsBlessed)
105 {
106 if (this.IsHoly)
107 {
108 this.ModCharges(1);
109 }
110 if (this.polluted)
111 {
112 Msg.Say("unpolluted", this.owner, null, null, null);
113 this.Charges = 1;
114 }
115 this.owner.SetInt(26, 0);
116 }
117 else
118 {
119 string name = this.owner.Name;
120 this.owner.SetInt(26, this.pollution + EClass.rnd(3) + ((t.blessedState <= BlessedState.Cursed) ? 10 : 0) + (this.IsHoly ? 10 : 0));
121 if (!polluted && this.polluted)
122 {
123 Msg.Say("polluted", name, null, null, null);
124 }
125 }
126 t.ModNum(-1, true);
127 }
128
129 // Token: 0x06001ED5 RID: 7893 RVA: 0x000B0232 File Offset: 0x000AE432
130 public override void OnCreate(int lv)
131 {
132 if (!this.IsHoly)
133 {
134 this.owner.c_charges = EClass.rnd(6) + 2;
135 }
136 }
137
138 // Token: 0x06001ED6 RID: 7894 RVA: 0x000B0250 File Offset: 0x000AE450
139 public override void TrySetAct(ActPlan p)
140 {
141 p.TrySetAct("actDrink", delegate()
142 {
143 if (this.Charges <= 0)
144 {
145 EClass.pc.Say("drinkWell_empty", EClass.pc, this.owner, null, null);
146 return false;
147 }
148 EClass.pc.Say("drinkWell", EClass.pc, this.owner, null, null);
149 EClass.pc.PlaySound("drink", 1f, true);
150 EClass.pc.PlayAnime(AnimeID.Shiver, false);
151 if (this.IsHoly || EClass.rnd(5) == 0)
152 {
153 ActEffect.Proc(EffectId.ModPotential, EClass.pc, null, (!this.polluted && (this.IsHoly || EClass.rnd(2) == 0)) ? 100 : -100, default(ActRef));
154 }
155 else if (EClass.rnd(5) == 0)
156 {
157 TraitWell.BadEffect(EClass.pc);
158 }
159 else if (EClass.rnd(4) == 0)
160 {
161 ActEffect.Proc(EffectId.Mutation, EClass.pc, null, 100, default(ActRef));
162 }
163 else if (EClass.rnd(EClass.debug.enable ? 2 : 10) == 0 && !this.polluted && !EClass.player.wellWished)
164 {
165 if (EClass.player.CountKeyItem("well_wish") > 0)
166 {
167 EClass.player.ModKeyItem("well_wish", -1, true);
168 ActEffect.Proc(EffectId.Wish, EClass.pc, null, 10 + EClass.player.CountKeyItem("well_enhance") * 10, default(ActRef));
169 EClass.player.wellWished = true;
170 }
171 else
172 {
173 Msg.SayNothingHappen();
174 }
175 }
176 else if (this.polluted)
177 {
178 EClass.pc.Say("drinkWater_dirty", null, null);
179 TraitWell.BadEffect(EClass.pc);
180 }
181 else
182 {
183 EClass.pc.Say("drinkWater_clear", null, null);
184 }
185 this.ModCharges(-1);
186 return true;
187 }, this.owner, null, 1, false, true, false);
188 }
189
190 // Token: 0x06001ED7 RID: 7895 RVA: 0x000B0280 File Offset: 0x000AE480
191 public void ModCharges(int a)
192 {
193 this.Charges += a;
194 if (this.Charges <= 0)
195 {
196 EClass.pc.Say("drinkWell_dry", EClass.pc, this.owner, null, null);
197 }
198 }
199
200 // Token: 0x06001ED8 RID: 7896 RVA: 0x000B02B8 File Offset: 0x000AE4B8
201 public static void BadEffect(Chara c)
202 {
203 switch (EClass.rnd(7))
204 {
205 case 0:
206 ActEffect.Proc(EffectId.Blind, c, null, 100, default(ActRef));
207 return;
208 case 1:
209 ActEffect.Proc(EffectId.Paralyze, c, null, 100, default(ActRef));
210 return;
211 case 2:
212 ActEffect.Proc(EffectId.Sleep, c, null, 100, default(ActRef));
213 return;
214 case 3:
215 ActEffect.Proc(EffectId.Poison, c, null, 100, default(ActRef));
216 return;
217 case 4:
218 ActEffect.Proc(EffectId.Faint, c, null, 100, default(ActRef));
219 return;
220 case 5:
221 ActEffect.Proc(EffectId.Disease, c, null, 100, default(ActRef));
222 return;
223 default:
224 ActEffect.Proc(EffectId.Confuse, c, null, 100, default(ActRef));
225 return;
226 }
227 }
228
229 // Token: 0x06001ED9 RID: 7897 RVA: 0x000B0396 File Offset: 0x000AE596
230 public override void SetName(ref string s)
231 {
232 if (this.polluted)
233 {
234 s = "_polluted".lang(s, null, null, null, null);
235 }
236 }
237}
Definition Chara.cs:12
Definition Msg.cs:7
Definition Thing.cs:10
Definition Trait.cs:9