Elin Decompiled Documentation EA 23.102 Nightly
Loading...
Searching...
No Matches
AI_Clean.cs
Go to the documentation of this file.
1using System.Collections.Generic;
2
3public class AI_Clean : AIAct
4{
5 public Point pos;
6
7 public int maxRadius = -1;
8
9 public static Point GetCleanPoint(Chara c, int r = -1, int tries = 10)
10 {
11 Point point = new Point();
12 if (r != -1)
13 {
14 for (int i = 0; i < tries; i++)
15 {
16 if (i == 0)
17 {
18 point.Set(c.pos);
19 }
20 else
21 {
22 point.Set(c._x - r + EClass.rnd(r * 2 + 1), c.pos.z - r + EClass.rnd(r * 2 + 1));
23 }
24 if (!point.IsValid)
25 {
26 continue;
27 }
28 if ((point.HasDirt && !EClass._map.config.retainDecal) || point.cell.HasLiquid)
29 {
30 return point;
31 }
32 foreach (Card item in point.ListCards())
33 {
34 _ = item;
35 }
36 }
37 }
38 return null;
39 }
40
41 public override IEnumerable<Status> Run()
42 {
43 while (true)
44 {
45 if (pos == null)
46 {
48 }
49 if (pos != null)
50 {
51 break;
52 }
53 yield return DoIdle(10);
54 }
55 yield return DoGoto(pos);
57 {
59 EClass._map.SetLiquid(pos.x, pos.z, 0, 0);
60 pos.PlayEffect("vanish");
61 owner.Say("clean", owner);
62 owner.PlaySound("clean_floor");
63 yield return KeepRunning();
64 }
65 List<Card> list = owner.pos.ListCards();
66 bool flag = false;
67 foreach (Card item in list)
68 {
69 if (item.isThing)
70 {
71 _ = item.IsInstalled;
72 }
73 }
74 if (flag)
75 {
76 owner.Talk("clean");
77 }
78 yield return Success();
79 }
80}
Definition: AIAct.cs:6
new Chara owner
Definition: AIAct.cs:14
Status DoGoto(Point pos, int dist=0, bool ignoreConnection=false, Func< Status > _onChildFail=null)
Definition: AIAct.cs:432
Status DoIdle(int repeat=3)
Definition: AIAct.cs:523
Status KeepRunning()
Definition: AIAct.cs:321
Point pos
Definition: AI_Clean.cs:5
static Point GetCleanPoint(Chara c, int r=-1, int tries=10)
Definition: AI_Clean.cs:9
int maxRadius
Definition: AI_Clean.cs:7
override IEnumerable< Status > Run()
Definition: AI_Clean.cs:41
Definition: Card.cs:11
SoundSource PlaySound(string id, float v=1f, bool spatial=true)
Definition: Card.cs:5404
void Talk(string idTopic, string ref1=null, string ref2=null, bool forceSync=false)
Definition: Card.cs:5949
Point pos
Definition: Card.cs:55
int _x
Definition: Card.cs:166
void Say(string lang, string ref1=null, string ref2=null)
Definition: Card.cs:6046
bool HasLiquid
Definition: Cell.cs:673
Definition: Chara.cs:10
Definition: EClass.cs:5
static int rnd(int a)
Definition: EClass.cs:50
static Map _map
Definition: EClass.cs:18
bool retainDecal
Definition: MapConfig.cs:44
void SetLiquid(int x, int z, CellEffect effect=null)
Definition: Map.cs:1464
void SetDecal(int x, int z, int id=0, int amount=1, bool refresh=true)
Definition: Map.cs:2029
MapConfig config
Definition: Map.cs:37
Definition: Point.cs:9
bool HasDirt
Definition: Point.cs:85
List< Card > ListCards(bool includeMasked=false)
Definition: Point.cs:1015
Point Set(int _x, int _z)
Definition: Point.cs:479
int x
Definition: Point.cs:36
int z
Definition: Point.cs:39
bool IsValid
Definition: Point.cs:88
Effect PlayEffect(string id)
Definition: Point.cs:1212
Cell cell
Definition: Point.cs:51