Elin Decompiled Documentation EA 23.102 Nightly
Loading...
Searching...
No Matches
TraitDrink.cs
Go to the documentation of this file.
1using System;
2
3public class TraitDrink : Trait
4{
5 public virtual EffectId IdEffect => (GetParam(1) ?? "Drink").ToEnum<EffectId>();
6
7 public virtual int Power
8 {
9 get
10 {
11 if (GetParam(2) == null)
12 {
13 return 100;
14 }
15 return GetParam(2).ToInt();
16 }
17 }
18
19 public virtual int IdEle
20 {
21 get
22 {
23 if (!AliasEle.IsEmpty())
24 {
25 return EClass.sources.elements.alias[AliasEle].id;
26 }
27 return 0;
28 }
29 }
30
31 public virtual SourceElement.Row source => null;
32
33 public virtual string AliasEle => N1;
34
35 public virtual string N1 => GetParam(3);
36
37 public virtual bool IsNeg => owner.HasTag(CTAG.neg);
38
39 public override bool IsThrowMainAction => true;
40
41 public override ThrowType ThrowType => ThrowType.Potion;
42
43 public override bool IsBlendBase => IsBlend();
44
45 public override bool CanDrink(Chara c)
46 {
47 return true;
48 }
49
50 public bool IsBlend()
51 {
52 switch (IdEffect)
53 {
54 case EffectId.DrinkWater:
55 case EffectId.Poison:
56 case EffectId.Love:
57 case EffectId.Acidproof:
58 return true;
59 default:
60 return false;
61 }
62 }
63
64 public override bool CanBlend(Thing t)
65 {
66 switch (IdEffect)
67 {
68 case EffectId.Poison:
69 case EffectId.Love:
70 return t.IsFood;
71 case EffectId.Acidproof:
72 if (!t.isAcidproof)
73 {
75 }
76 return false;
77 case EffectId.DrinkWater:
78 if (t.category.ignoreBless != 1 && t.id != "water")
79 {
80 return t.id != "bucket";
81 }
82 return false;
83 default:
84 return false;
85 }
86 }
87
88 public override void OnBlend(Thing t, Chara c)
89 {
90 switch (IdEffect)
91 {
92 case EffectId.Love:
93 BlendLove(c, t);
94 break;
95 case EffectId.Poison:
96 BlendPoison(c, t);
97 break;
98 case EffectId.Acidproof:
99 c.Say("coated", t, c);
100 if (t.IsEquipment && owner.blessedState <= BlessedState.Cursed)
101 {
102 c.Say("blend_curse", t);
103 t.ModEncLv(-1);
104 }
105 else
106 {
107 t.isAcidproof = true;
108 }
109 break;
110 case EffectId.DrinkWater:
111 {
112 BlessedState blessedState = owner.blessedState;
113 t = t.Split(1);
114 if (blessedState >= BlessedState.Blessed)
115 {
116 Msg.Say("waterBless", t);
117 t.SetBlessedState(BlessedState.Blessed);
118 c.Pick(t);
119 }
120 else if (blessedState <= BlessedState.Cursed)
121 {
122 Msg.Say("waterCurse", t);
124 c.Pick(t);
125 }
126 else
127 {
129 }
130 break;
131 }
132 }
133 owner.ModNum(-1);
134 }
135
136 public static void BlendLove(Chara c, Thing t, bool dream = false)
137 {
138 Msg.Say("blend_love", t);
139 Thing thing = t.Split(1);
140 thing.elements.ModBase(dream ? 704 : 703, t.IsBlessed ? 15 : (t.IsCursed ? 5 : 10));
141 c.Pick(thing);
142 }
143
144 public static void BlendPoison(Chara c, Thing t)
145 {
146 Msg.Say("blend_poison", t);
147 Thing thing = t.Split(1);
148 thing.elements.ModBase(702, t.IsBlessed ? 5 : (t.IsCursed ? 15 : 10));
149 c.Pick(thing);
150 }
151
152 public override void OnDrink(Chara c)
153 {
155 {
156 n1 = N1,
157 isPerfume = (this is TraitPerfume),
158 refThing = owner.Thing,
159 act = ((source != null) ? ACT.Create(source) : null)
160 });
161 }
162
163 public override void OnThrowGround(Chara c, Point p)
164 {
165 if (IdEffect != EffectId.Drink)
166 {
167 bool isHostileAct = c.IsPCParty && IsNeg;
169 {
170 id = 4,
171 idEffect = IdEffect,
172 power = Power,
173 amount = 5,
174 isHostileAct = isHostileAct,
175 color = BaseTileMap.GetColorInt(ref owner.GetRandomColor(), owner.sourceRenderCard.colorMod),
176 idEle = IdEle,
177 n1 = N1,
178 isBlessed = (owner.blessedState >= BlessedState.Blessed),
179 isCursed = (owner.blessedState <= BlessedState.Cursed)
180 });
181 }
182 else
183 {
184 EClass._map.SetLiquid(p.x, p.z, 1, 3);
185 }
186 }
187
188 public override Action GetHealAction(Chara c)
189 {
190 if (IdEffect == EffectId.Heal)
191 {
192 return delegate
193 {
194 c.Drink(owner);
195 };
196 }
197 return null;
198 }
199}
BlessedState
Definition: BlessedState.cs:2
CTAG
Definition: CTAG.cs:2
EffectId
Definition: EffectId.cs:2
ThrowType
Definition: ThrowType.cs:2
static void Proc(EffectId id, Card cc, Card tc=null, int power=100, ActRef actRef=default(ActRef))
Definition: ActEffect.cs:788
Thing Split(int a)
Definition: Card.cs:3231
ElementContainerCard elements
Definition: Card.cs:37
string id
Definition: Card.cs:31
bool IsEquipmentOrRangedOrAmmo
Definition: Card.cs:2090
bool IsCursed
Definition: Card.cs:2115
bool IsFood
Definition: Card.cs:2051
virtual void SetBlessedState(BlessedState s)
Definition: Card.cs:3572
bool isAcidproof
Definition: Card.cs:658
bool HasTag(CTAG tag)
Definition: Card.cs:2455
bool IsEquipment
Definition: Card.cs:2049
void ModEncLv(int a)
Definition: Card.cs:3549
BlessedState blessedState
Definition: Card.cs:262
bool IsBlessed
Definition: Card.cs:2113
SourceCategory.Row category
Definition: Card.cs:1925
void ModNum(int a, bool notify=true)
Definition: Card.cs:3262
void Say(string lang, string ref1=null, string ref2=null)
Definition: Card.cs:6046
Definition: Chara.cs:10
void Drink(Card t)
Definition: Chara.cs:4612
Thing Pick(Thing t, bool msg=true, bool tryStack=true)
Definition: Chara.cs:3920
Definition: EClass.cs:5
static Map _map
Definition: EClass.cs:18
static SourceManager sources
Definition: EClass.cs:42
Element ModBase(int ele, int v)
void SetLiquid(int x, int z, CellEffect effect=null)
Definition: Map.cs:1464
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
Definition: Point.cs:9
int x
Definition: Point.cs:36
int z
Definition: Point.cs:39
SourceElement elements
Definition: Thing.cs:8
static void BlendLove(Chara c, Thing t, bool dream=false)
Definition: TraitDrink.cs:136
virtual string AliasEle
Definition: TraitDrink.cs:33
virtual SourceElement.Row source
Definition: TraitDrink.cs:31
bool IsBlend()
Definition: TraitDrink.cs:50
virtual EffectId IdEffect
Definition: TraitDrink.cs:5
virtual bool IsNeg
Definition: TraitDrink.cs:37
virtual string N1
Definition: TraitDrink.cs:35
virtual int Power
Definition: TraitDrink.cs:8
override bool IsThrowMainAction
Definition: TraitDrink.cs:39
override bool IsBlendBase
Definition: TraitDrink.cs:43
override void OnBlend(Thing t, Chara c)
Definition: TraitDrink.cs:88
override Action GetHealAction(Chara c)
Definition: TraitDrink.cs:188
override void OnDrink(Chara c)
Definition: TraitDrink.cs:152
virtual int IdEle
Definition: TraitDrink.cs:20
static void BlendPoison(Chara c, Thing t)
Definition: TraitDrink.cs:144
override void OnThrowGround(Chara c, Point p)
Definition: TraitDrink.cs:163
override bool CanDrink(Chara c)
Definition: TraitDrink.cs:45
override bool CanBlend(Thing t)
Definition: TraitDrink.cs:64
Definition: Trait.cs:7
string GetParam(int i, string def=null)
Definition: Trait.cs:515
Card owner
Definition: Trait.cs:26
Definition: ActRef.cs:2