Elin Decompiled Documentation EA 23.102 Nightly
Loading...
Searching...
No Matches
TaskCullLife.cs
Go to the documentation of this file.
1using System.Collections.Generic;
2using System.Linq;
3
4public class TaskCullLife : Task
5{
6 public Point dest;
7
8 public static bool CanCull(Card c)
9 {
10 if (c.c_minionType == MinionType.Friend)
11 {
12 return !c.IsPCFaction;
13 }
14 return false;
15 }
16
17 public override bool CanPerform()
18 {
19 return Act.TP.FindChara((Chara c) => CanCull(c)) != null;
20 }
21
22 public override bool CanManualCancel()
23 {
24 return true;
25 }
26
27 public override IEnumerable<Status> Run()
28 {
29 while (true)
30 {
31 Chara target = GetTarget();
32 if (dest != null)
33 {
34 target = dest.FindChara((Chara c) => CanCull(c));
35 dest = null;
36 }
37 if (target == null)
38 {
39 yield return Success();
40 }
41 bool fail = false;
42 yield return DoGoto(target, delegate
43 {
44 fail = true;
45 return Status.Running;
46 });
47 if (!fail && target.IsAliveInCurrentZone)
48 {
49 if (owner.Dist(target) > 1)
50 {
51 yield return Cancel();
52 }
53 owner.PlaySound("shear");
54 Msg.Say("cull_life", EClass.pc, target);
55 target.Die();
56 Thing t = ThingGen.Create("ecopo").SetNum(EClass.rndHalf(target.LV / 10 + 6));
57 EClass.pc.Pick(t);
58 yield return KeepRunning();
59 }
60 }
61 }
62
63 public static Chara GetTarget()
64 {
65 List<Chara> list = new List<Chara>();
66 foreach (Chara chara in EClass._map.charas)
67 {
68 if (CanCull(chara))
69 {
70 list.Add(chara);
71 }
72 }
73 if (list.Count == 0)
74 {
75 return null;
76 }
77 list.Sort((Chara a, Chara b) => EClass.pc.Dist(a) - EClass.pc.Dist(b));
78 return list.First();
79 }
80}
MinionType
Definition: MinionType.cs:2
new Chara owner
Definition: AIAct.cs:14
Status
Definition: AIAct.cs:8
Status DoGoto(Point pos, int dist=0, bool ignoreConnection=false, Func< Status > _onChildFail=null)
Definition: AIAct.cs:432
Status KeepRunning()
Definition: AIAct.cs:321
Definition: ACT.cs:62
static Point TP
Definition: ACT.cs:81
Definition: Card.cs:11
MinionType c_minionType
Definition: Card.cs:948
SoundSource PlaySound(string id, float v=1f, bool spatial=true)
Definition: Card.cs:5404
Thing SetNum(int a)
Definition: Card.cs:3242
int Dist(Card c)
Definition: Card.cs:6777
virtual bool IsPCFaction
Definition: Card.cs:2129
int LV
Definition: Card.cs:370
Definition: Chara.cs:10
override bool IsAliveInCurrentZone
Definition: Chara.cs:546
override void Die(Element e=null, Card origin=null, AttackSource attackSource=AttackSource.None)
Definition: Chara.cs:4800
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 int rndHalf(int a)
Definition: EClass.cs:74
static Chara pc
Definition: EClass.cs:14
List< Chara > charas
Definition: Map.cs:81
Definition: Msg.cs:5
static string Say(string idLang, string ref1, string ref2=null, string ref3=null, string ref4=null)
Definition: Msg.cs:58
Definition: Point.cs:9
Chara FindChara(Func< Chara, bool > func)
Definition: Point.cs:1074
override IEnumerable< Status > Run()
Definition: TaskCullLife.cs:27
static Chara GetTarget()
Definition: TaskCullLife.cs:63
override bool CanManualCancel()
Definition: TaskCullLife.cs:22
override bool CanPerform()
Definition: TaskCullLife.cs:17
static bool CanCull(Card c)
Definition: TaskCullLife.cs:8
Definition: Task.cs:4
override Status Cancel()
Definition: Task.cs:54
static Thing Create(string id, int idMat=-1, int lv=-1)
Definition: ThingGen.cs:53
Definition: Thing.cs:8