Elin Modding Docs Doc
Loading...
Searching...
No Matches
TraitDrink.cs
1using System;
2
3// Token: 0x02000338 RID: 824
4public class TraitDrink : Trait
5{
6 // Token: 0x17000792 RID: 1938
7 // (get) Token: 0x06001A0E RID: 6670 RVA: 0x000A3F0A File Offset: 0x000A210A
8 public virtual EffectId IdEffect
9 {
10 get
11 {
12 return (base.GetParam(1, null) ?? "Drink").ToEnum(true);
13 }
14 }
15
16 // Token: 0x17000793 RID: 1939
17 // (get) Token: 0x06001A0F RID: 6671 RVA: 0x000A3F23 File Offset: 0x000A2123
18 public virtual int Power
19 {
20 get
21 {
22 if (base.GetParam(2, null) == null)
23 {
24 return 100;
25 }
26 return base.GetParam(2, null).ToInt();
27 }
28 }
29
30 // Token: 0x17000794 RID: 1940
31 // (get) Token: 0x06001A10 RID: 6672 RVA: 0x000A3F3F File Offset: 0x000A213F
32 public virtual int IdEle
33 {
34 get
35 {
36 if (!this.AliasEle.IsEmpty())
37 {
38 return EClass.sources.elements.alias[this.AliasEle].id;
39 }
40 return 0;
41 }
42 }
43
44 // Token: 0x17000795 RID: 1941
45 // (get) Token: 0x06001A11 RID: 6673 RVA: 0x000A3F6F File Offset: 0x000A216F
46 public virtual string AliasEle
47 {
48 get
49 {
50 return this.N1;
51 }
52 }
53
54 // Token: 0x17000796 RID: 1942
55 // (get) Token: 0x06001A12 RID: 6674 RVA: 0x000A3F77 File Offset: 0x000A2177
56 public virtual string N1
57 {
58 get
59 {
60 return base.GetParam(3, null);
61 }
62 }
63
64 // Token: 0x17000797 RID: 1943
65 // (get) Token: 0x06001A13 RID: 6675 RVA: 0x000A3F81 File Offset: 0x000A2181
66 public virtual bool IsNeg
67 {
68 get
69 {
70 return this.owner.HasTag(CTAG.neg);
71 }
72 }
73
74 // Token: 0x17000798 RID: 1944
75 // (get) Token: 0x06001A14 RID: 6676 RVA: 0x000A3F90 File Offset: 0x000A2190
76 public override bool IsThrowMainAction
77 {
78 get
79 {
80 return true;
81 }
82 }
83
84 // Token: 0x17000799 RID: 1945
85 // (get) Token: 0x06001A15 RID: 6677 RVA: 0x000A3F93 File Offset: 0x000A2193
86 public override ThrowType ThrowType
87 {
88 get
89 {
90 return ThrowType.Potion;
91 }
92 }
93
94 // Token: 0x06001A16 RID: 6678 RVA: 0x000A3F96 File Offset: 0x000A2196
95 public override bool CanDrink(Chara c)
96 {
97 return true;
98 }
99
100 // Token: 0x1700079A RID: 1946
101 // (get) Token: 0x06001A17 RID: 6679 RVA: 0x000A3F99 File Offset: 0x000A2199
102 public override bool IsBlendBase
103 {
104 get
105 {
106 return this.IsBlend();
107 }
108 }
109
110 // Token: 0x06001A18 RID: 6680 RVA: 0x000A3FA4 File Offset: 0x000A21A4
111 public bool IsBlend()
112 {
113 EffectId idEffect = this.IdEffect;
114 if (idEffect <= EffectId.Poison)
115 {
116 if (idEffect != EffectId.DrinkWater && idEffect != EffectId.Poison)
117 {
118 return false;
119 }
120 }
121 else if (idEffect != EffectId.Love && idEffect != EffectId.Acidproof)
122 {
123 return false;
124 }
125 return true;
126 }
127
128 // Token: 0x06001A19 RID: 6681 RVA: 0x000A3FE4 File Offset: 0x000A21E4
129 public override bool CanBlend(Thing t)
130 {
131 EffectId idEffect = this.IdEffect;
132 if (idEffect <= EffectId.Poison)
133 {
134 if (idEffect == EffectId.DrinkWater)
135 {
136 return t.category.ignoreBless != 1 && t.id != "water" && t.id != "bucket";
137 }
138 if (idEffect != EffectId.Poison)
139 {
140 return false;
141 }
142 }
143 else if (idEffect != EffectId.Love)
144 {
145 if (idEffect != EffectId.Acidproof)
146 {
147 return false;
148 }
149 return !t.isAcidproof && t.IsEquipmentOrRanged;
150 }
151 return t.IsFood;
152 }
153
154 // Token: 0x06001A1A RID: 6682 RVA: 0x000A4070 File Offset: 0x000A2270
155 public override void OnBlend(Thing t, Chara c)
156 {
157 EffectId idEffect = this.IdEffect;
158 if (idEffect <= EffectId.Poison)
159 {
160 if (idEffect != EffectId.DrinkWater)
161 {
162 if (idEffect == EffectId.Poison)
163 {
164 TraitDrink.BlendPoison(c, t);
165 }
166 }
167 else
168 {
169 BlessedState blessedState = this.owner.blessedState;
170 t = t.Split(1);
171 if (blessedState >= BlessedState.Blessed)
172 {
173 Msg.Say("waterBless", t, null, null, null);
174 t.SetBlessedState(BlessedState.Blessed);
175 c.Pick(t, true, true);
176 }
177 else if (blessedState <= BlessedState.Cursed)
178 {
179 Msg.Say("waterCurse", t, null, null, null);
180 t.SetBlessedState(BlessedState.Cursed);
181 c.Pick(t, true, true);
182 }
183 else
184 {
185 Msg.SayNothingHappen();
186 }
187 }
188 }
189 else if (idEffect != EffectId.Love)
190 {
191 if (idEffect == EffectId.Acidproof)
192 {
193 c.Say("coated", t, c, null, null);
194 if (t.IsEquipment && this.owner.blessedState <= BlessedState.Cursed)
195 {
196 c.Say("blend_curse", t, null, null);
197 t.ModEncLv(-1);
198 }
199 else
200 {
201 t.isAcidproof = true;
202 }
203 }
204 }
205 else
206 {
207 TraitDrink.BlendLove(c, t, false);
208 }
209 this.owner.ModNum(-1, true);
210 }
211
212 // Token: 0x06001A1B RID: 6683 RVA: 0x000A4188 File Offset: 0x000A2388
213 public static void BlendLove(Chara c, Thing t, bool dream = false)
214 {
215 Msg.Say("blend_love", t, null, null, null);
216 Thing thing = t.Split(1);
217 thing.elements.ModBase(dream ? 704 : 703, t.IsBlessed ? 15 : (t.IsCursed ? 5 : 10));
218 c.Pick(thing, true, true);
219 }
220
221 // Token: 0x06001A1C RID: 6684 RVA: 0x000A41EC File Offset: 0x000A23EC
222 public static void BlendPoison(Chara c, Thing t)
223 {
224 Msg.Say("blend_poison", t, null, null, null);
225 Thing thing = t.Split(1);
226 thing.elements.ModBase(702, t.IsBlessed ? 5 : (t.IsCursed ? 15 : 10));
227 c.Pick(thing, true, true);
228 }
229
230 // Token: 0x06001A1D RID: 6685 RVA: 0x000A4244 File Offset: 0x000A2444
231 public override void OnDrink(Chara c)
232 {
233 ActEffect.Proc(this.IdEffect, this.Power, this.owner.blessedState, c, null, new ActRef
234 {
235 n1 = this.N1,
236 isPerfume = (this is TraitPerfume)
237 });
238 }
239
240 // Token: 0x06001A1E RID: 6686 RVA: 0x000A4298 File Offset: 0x000A2498
241 public override void OnThrowGround(Chara c, Point p)
242 {
243 if (this.IdEffect != EffectId.Drink)
244 {
245 bool isHostileAct = c.IsPCParty && this.IsNeg;
246 EClass._map.SetLiquid(p.x, p.z, new CellEffect
247 {
248 id = 4,
249 idEffect = this.IdEffect,
250 power = this.Power,
251 amount = 5,
252 isHostileAct = isHostileAct,
253 color = BaseTileMap.GetColorInt(this.owner.GetRandomColor(), this.owner.sourceRenderCard.colorMod),
254 idEle = this.IdEle,
255 n1 = this.N1,
256 isBlessed = (this.owner.blessedState >= BlessedState.Blessed),
257 isCursed = (this.owner.blessedState <= BlessedState.Cursed)
258 });
259 return;
260 }
261 EClass._map.SetLiquid(p.x, p.z, 1, 3);
262 }
263
264 // Token: 0x06001A1F RID: 6687 RVA: 0x000A4394 File Offset: 0x000A2594
265 public override Action GetHealAction(Chara c)
266 {
267 if (this.IdEffect == EffectId.Heal)
268 {
269 return delegate()
270 {
271 c.Drink(this.owner);
272 };
273 }
274 return null;
275 }
276}
Definition Chara.cs:12
Definition Msg.cs:7
Definition Point.cs:11
Definition Thing.cs:10
Definition Trait.cs:9