Elin Decompiled Documentation EA 23.102 Nightly
Loading...
Searching...
No Matches
TaskClean.cs
Go to the documentation of this file.
1using System.Collections.Generic;
2using System.Linq;
3
4public class TaskClean : Task
5{
6 public Point dest;
7
8 public override string GetText(string str = "")
9 {
10 return "actClean".lang();
11 }
12
13 public static bool CanClean(Point p)
14 {
15 if (!p.HasDirt)
16 {
17 return p.cell.HasLiquid;
18 }
19 return true;
20 }
21
22 public override bool CanPerform()
23 {
24 return CanClean(dest);
25 }
26
27 public override bool CanManualCancel()
28 {
29 return true;
30 }
31
32 public override IEnumerable<Status> Run()
33 {
34 while (true)
35 {
37 if (dest == null)
38 {
39 yield return Success();
40 }
41 yield return DoGoto(dest, 1);
42 for (int i = 0; i < ((!dest.cell.HasLiquid) ? 1 : 5); i++)
43 {
46 yield return KeepRunning();
47 }
48 if (!CanClean(dest) || owner.Dist(dest) > 1)
49 {
50 yield return Cancel();
51 }
54 dest.PlayEffect("vanish");
55 EClass.pc.Say("clean", owner);
56 EClass.pc.PlaySound("clean_floor");
57 EClass.pc.stamina.Mod(-1);
58 EClass.pc.ModExp(293, 30);
59 yield return KeepRunning();
60 }
61 }
62
63 public static Point GetTarget(Point dest)
64 {
65 List<Point> list = new List<Point>();
66 foreach (Point item in EClass._map.ListPointsInCircle(dest, 3f, mustBeWalkable: false))
67 {
68 if (CanClean(item))
69 {
70 list.Add(item);
71 }
72 }
73 if (list.Count == 0)
74 {
75 return null;
76 }
77 list.Sort((Point a, Point b) => dest.Distance(a) - dest.Distance(b));
78 return list.First();
79 }
80}
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 KeepRunning()
Definition: AIAct.cs:321
virtual void NextFrame()
SoundSource PlaySound(string id, float v=1f, bool spatial=true)
Definition: Card.cs:5404
int Dist(Card c)
Definition: Card.cs:6777
void ModExp(string alias, int a)
Definition: Card.cs:2508
CardRenderer renderer
Definition: Card.cs:57
void Say(string lang, string ref1=null, string ref2=null)
Definition: Card.cs:6046
bool HasLiquid
Definition: Cell.cs:673
Stats stamina
Definition: Chara.cs:955
override void LookAt(Card c)
Definition: Chara.cs:3219
Definition: EClass.cs:5
static Map _map
Definition: EClass.cs:18
static Chara pc
Definition: EClass.cs:14
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
List< Point > ListPointsInCircle(Point center, float radius, bool mustBeWalkable=true, bool los=true)
Definition: Map.cs:2256
Definition: Point.cs:9
bool HasDirt
Definition: Point.cs:85
int x
Definition: Point.cs:36
int z
Definition: Point.cs:39
Effect PlayEffect(string id)
Definition: Point.cs:1212
int Distance(Point p)
Definition: Point.cs:953
Cell cell
Definition: Point.cs:51
virtual void Mod(int a)
Definition: Stats.cs:135
override bool CanPerform()
Definition: TaskClean.cs:22
static bool CanClean(Point p)
Definition: TaskClean.cs:13
Point dest
Definition: TaskClean.cs:6
override IEnumerable< Status > Run()
Definition: TaskClean.cs:32
static Point GetTarget(Point dest)
Definition: TaskClean.cs:63
override bool CanManualCancel()
Definition: TaskClean.cs:27
override string GetText(string str="")
Definition: TaskClean.cs:8
Definition: Task.cs:4
override Status Cancel()
Definition: Task.cs:54