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