Elin Decompiled Documentation EA 23.102 Nightly
Loading...
Searching...
No Matches
AI_PassTime.cs
Go to the documentation of this file.
1using System.Collections.Generic;
2
3public class AI_PassTime : AIAct
4{
5 public enum Type
6 {
10 }
11
12 public Thing target;
13
14 public bool startedFull;
15
16 public virtual Type type => Type.passTime;
17
18 public virtual int exp => 0;
19
20 public virtual int turns => 3000;
21
22 public override bool IsAutoTurn => true;
23
24 public override bool LocalAct => type == Type.selfHarm;
25
26 public override TargetType TargetType
27 {
28 get
29 {
30 if (type != 0)
31 {
32 return TargetType.Self;
33 }
34 return TargetType.Any;
35 }
36 }
37
38 public bool IsFull
39 {
40 get
41 {
42 if (owner != null)
43 {
44 if (owner.hp == owner.MaxHP)
45 {
46 return owner.mana.value == owner.mana.max;
47 }
48 return false;
49 }
50 return true;
51 }
52 }
53
54 public override bool CanManualCancel()
55 {
56 return true;
57 }
58
59 public override MultiSprite GetStateIcon()
60 {
61 return type switch
62 {
63 Type.meditate => EClass.core.refs.stateIcons.meditation,
64 Type.selfHarm => EClass.core.refs.stateIcons.selfharm,
65 _ => base.GetStateIcon(),
66 };
67 }
68
69 public override void OnStart()
70 {
72 }
73
74 public override IEnumerable<Status> Run()
75 {
76 if (target != null)
77 {
78 yield return DoGoto(target.pos);
79 }
80 owner.Say(type.ToString() + "_start", owner);
81 for (int i = 0; i < turns; i++)
82 {
83 if (exp > 0 && i % 5 == 0)
84 {
85 owner.ModExp(GetType().Name, exp);
86 }
87 if (type == Type.selfHarm)
88 {
89 if (EClass.rnd(10) == 0)
90 {
92 }
93 else if (EClass.rnd(10) == 0)
94 {
95 owner.DamageHP(5 + EClass.rnd(5));
96 if (owner != null)
97 {
99 }
100 }
101 }
102 else
103 {
104 foreach (Chara member in EClass.pc.party.members)
105 {
106 bool flag = false;
107 foreach (Condition condition in member.conditions)
108 {
109 if (condition.PreventRegen)
110 {
111 flag = true;
112 }
113 }
114 if (!flag)
115 {
116 int num = 1 + EClass.pc.Evalue(6003) / 5;
117 if (EClass.rnd(3) == 0)
118 {
119 member.HealHP(num * (member.IsPC ? 1 : 2));
120 }
121 member.mana.Mod(num * (member.IsPC ? 1 : 2));
122 }
123 }
124 if (i == 50 && EClass.pc.pos.IsHotSpring && (!EClass.pc.IsPCC || EClass.pc.pccData.state == PCCState.Undie))
125 {
126 int p = (EClass._zone.elements.Has(3701) ? 150 : 100);
127 foreach (Chara member2 in EClass.pc.party.members)
128 {
129 member2.AddCondition<ConHotspring>(p)?.SetPerfume();
130 }
131 }
132 if (!startedFull && IsFull)
133 {
134 yield return Success();
135 }
136 if (!EClass.debug.enable && owner.CanSleep() && EClass.rnd(10) == 0)
137 {
138 owner.Sleep();
139 yield return Success();
140 }
141 }
142 yield return KeepRunning();
143 }
144 if (owner != null)
145 {
146 owner.Say(type.ToString() + "_end", owner);
147 }
148 }
149
150 public override void OnCancel()
151 {
152 if (owner != null)
153 {
154 owner.Say(type.ToString() + "_end", owner);
155 }
156 }
157}
Definition: AIAct.cs:6
new Chara owner
Definition: AIAct.cs:14
virtual new string Name
Definition: AIAct.cs:68
Status DoGoto(Point pos, int dist=0, bool ignoreConnection=false, Func< Status > _onChildFail=null)
Definition: AIAct.cs:432
Status KeepRunning()
Definition: AIAct.cs:321
bool startedFull
Definition: AI_PassTime.cs:14
virtual int turns
Definition: AI_PassTime.cs:20
virtual Type type
Definition: AI_PassTime.cs:16
virtual int exp
Definition: AI_PassTime.cs:18
Thing target
Definition: AI_PassTime.cs:12
override bool LocalAct
Definition: AI_PassTime.cs:24
override void OnStart()
Definition: AI_PassTime.cs:69
override bool CanManualCancel()
Definition: AI_PassTime.cs:54
override MultiSprite GetStateIcon()
Definition: AI_PassTime.cs:59
override bool IsAutoTurn
Definition: AI_PassTime.cs:22
override void OnCancel()
Definition: AI_PassTime.cs:150
override IEnumerable< Status > Run()
Definition: AI_PassTime.cs:74
static Point GetTeleportPos(Point org, int radius=6)
Definition: ActEffect.cs:2196
virtual bool PreventRegen
void Teleport(Point point, bool silent=false, bool force=false)
Definition: Card.cs:5153
void DamageHP(int dmg, AttackSource attackSource=AttackSource.None, Card origin=null)
Definition: Card.cs:3735
virtual void HealHP(int a, HealSource origin=HealSource.None)
Definition: Card.cs:3680
int hp
Definition: Card.cs:226
Point pos
Definition: Card.cs:55
int Evalue(int ele)
Definition: Card.cs:2431
void ModExp(string alias, int a)
Definition: Card.cs:2508
void Say(string lang, string ref1=null, string ref2=null)
Definition: Card.cs:6046
Definition: Chara.cs:10
Condition AddCondition(string id, int p=100, bool force=false)
Definition: Chara.cs:8415
override bool IsPC
Definition: Chara.cs:597
Party party
Definition: Chara.cs:43
List< Condition > conditions
Definition: Chara.cs:196
override int MaxHP
Definition: Chara.cs:693
Stats mana
Definition: Chara.cs:963
bool CanSleep()
Definition: Chara.cs:1108
PCCData pccData
Definition: Chara.cs:64
override bool IsPCC
Definition: Chara.cs:667
void Sleep(Thing bed=null, Thing pillow=null, bool pickup=false, ItemPosition posBed=null, ItemPosition posPillow=null)
Definition: Chara.cs:8812
bool enable
Definition: CoreDebug.cs:285
MultiSprite selfharm
Definition: CoreRef.cs:180
MultiSprite meditation
Definition: CoreRef.cs:178
StateIcons stateIcons
Definition: CoreRef.cs:329
CoreRef refs
Definition: Core.cs:51
Definition: EClass.cs:5
static int rnd(int a)
Definition: EClass.cs:50
static Core core
Definition: EClass.cs:6
static Zone _zone
Definition: EClass.cs:20
static Chara pc
Definition: EClass.cs:14
static CoreDebug debug
Definition: EClass.cs:48
bool Has(int ele)
List< Chara > members
Definition: Party.cs:18
bool IsHotSpring
Definition: Point.cs:351
virtual void Mod(int a)
Definition: Stats.cs:135
virtual int max
Definition: Stats.cs:68
static TargetTypeSelf Self
Definition: TargetType.cs:7
static TargetTypeAny Any
Definition: TargetType.cs:5
Definition: Thing.cs:8
ElementContainerZone elements
Definition: Zone.cs:43