Elin Decompiled Documentation EA 23.343.5 Nightly
Loading...
Searching...
No Matches
AI_Haul.cs
Go to the documentation of this file.
1using System.Collections.Generic;
2
3public class AI_Haul : AIAct
4{
5 public Thing dest;
6
7 public static List<Thing> _list = new List<Thing>();
8
9 public override IEnumerable<Status> Run()
10 {
11 if (dest.ExistsOnMap)
12 {
13 yield return DoGoto(dest.pos, 1);
14 }
15 if (!dest.ExistsOnMap)
16 {
17 yield return Success();
18 }
20 {
21 owner.Say("haul", owner, dest);
22 if (dest.id == "731")
23 {
24 owner.Talk("clean");
25 }
26 else
27 {
28 owner.Talk("haul");
29 }
30 }
31 yield return Success();
32 }
33
34 public static Thing GetThingToClean(Chara c = null)
35 {
37 if (_list.Count == 0)
38 {
39 return null;
40 }
41 if (c != null)
42 {
43 Thing result = null;
44 int num = 9999;
45 {
46 foreach (Thing item in _list)
47 {
48 int num2 = c.pos.Distance(item.pos);
49 if (num2 < num && EClass._zone.TryAddThingInSharedContainer(item, null, add: false))
50 {
51 num = num2;
52 result = item;
53 }
54 }
55 return result;
56 }
57 }
58 _list.Shuffle();
59 foreach (Thing item2 in _list)
60 {
61 if (EClass._zone.TryAddThingInSharedContainer(item2, null, add: false))
62 {
63 return item2;
64 }
65 }
66 return null;
67 }
68
69 public static List<Thing> ListThingsToClean(List<Thing> result)
70 {
71 result.Clear();
72 foreach (Thing thing in EClass._map.things)
73 {
74 if (thing.placeState != PlaceState.roaming || thing.isMasked)
75 {
76 continue;
77 }
78 switch (thing.id)
79 {
80 case "731":
81 case "_egg":
82 case "egg_fertilized":
83 case "_milk":
84 if (thing.Dist(EClass.pc) > 1)
85 {
86 result.Add(thing);
87 }
88 break;
89 }
90 }
91 return result;
92 }
93
94 public static AI_Haul TryGetAI(Chara c)
95 {
96 Thing thingToClean = GetThingToClean(c);
97 if (thingToClean != null)
98 {
99 return new AI_Haul
100 {
101 dest = thingToClean
102 };
103 }
104 return null;
105 }
106}
PlaceState
Definition: PlaceState.cs:2
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:446
static AI_Haul TryGetAI(Chara c)
Definition: AI_Haul.cs:94
static List< Thing > _list
Definition: AI_Haul.cs:7
static List< Thing > ListThingsToClean(List< Thing > result)
Definition: AI_Haul.cs:69
override IEnumerable< Status > Run()
Definition: AI_Haul.cs:9
static Thing GetThingToClean(Chara c=null)
Definition: AI_Haul.cs:34
Thing dest
Definition: AI_Haul.cs:5
void Add(Act a, string s="")
Definition: ActPlan.cs:11
bool isMasked
Definition: Card.cs:593
string id
Definition: Card.cs:36
void Talk(string idTopic, string ref1=null, string ref2=null, bool forceSync=false)
Definition: Card.cs:7201
bool ExistsOnMap
Definition: Card.cs:2137
PlaceState placeState
Definition: Card.cs:86
Point pos
Definition: Card.cs:60
int Dist(Card c)
Definition: Card.cs:8200
void Say(string lang, string ref1=null, string ref2=null)
Definition: Card.cs:7319
Definition: Chara.cs:10
Definition: EClass.cs:6
static Zone _zone
Definition: EClass.cs:21
static Map _map
Definition: EClass.cs:19
static Chara pc
Definition: EClass.cs:15
List< Thing > things
Definition: Map.cs:49
int Distance(Point p)
Definition: Point.cs:995
Definition: Thing.cs:8
bool TryAddThingInSharedContainer(Thing t, List< Thing > containers=null, bool add=true, bool msg=false, Chara chara=null, bool sharedOnly=true)
Definition: Zone.cs:2299