Elin Decompiled Documentation EA 23.102 Nightly
Loading...
Searching...
No Matches
AI_Torture.cs
Go to the documentation of this file.
1using System.Collections.Generic;
2
3public class AI_Torture : AIAct
4{
6
7 public Chara _owner;
8
10
11 public override bool HasProgress => true;
12
13 public override bool CancelWhenDamaged => false;
14
15 public override bool CanManualCancel()
16 {
17 return true;
18 }
19
20 public override IEnumerable<Status> Run()
21 {
22 _owner = owner;
23 isFail = () => shackle == null || !shackle.owner.ExistsOnMap || !owner.isRestrained || !shackle.owner.pos.Equals(owner.pos) || owner.stamina.value <= 0;
24 while (!owner.IsPC && owner.stamina.value < owner.stamina.max * 4 / 5)
25 {
26 yield return KeepRunning();
27 }
28 yield return DoProgress();
29 }
30
31 public override AIProgress CreateProgress()
32 {
33 return new Progress_Custom
34 {
35 canProgress = () => !isFail(),
36 onProgressBegin = delegate
37 {
38 },
39 onProgress = delegate(Progress_Custom p)
40 {
41 if (p.progress % 8 == 0)
42 {
44 }
45 if (EClass.rnd(20) == 0)
46 {
47 owner.Talk("restrained");
48 }
49 List<Chara> list = new List<Chara>();
50 foreach (Chara chara in EClass._map.charas)
51 {
52 if (!chara.IsDisabled && chara.IsPCFaction && chara != owner && !chara.IsPC && !chara.isRestrained && chara.host == null && !chara.noMove && !chara.IsInCombat)
53 {
54 list.Add(chara);
55 }
56 }
57 list.Sort((Chara a, Chara b) => SortVal(a) - SortVal(b));
58 int num = 1 + EClass.Branch.members.Count / 5;
59 int num2 = 0;
60 foreach (Chara item in list)
61 {
62 if (EClass.rnd(3) == 0 && item.HasAccess(owner.pos))
63 {
64 item.SetEnemy(owner);
65 }
66 num2++;
67 if (num2 >= num)
68 {
69 break;
70 }
71 }
72 },
73 onProgressComplete = delegate
74 {
75 },
76 cancelWhenDamaged = false
77 }.SetDuration(10000);
78 int SortVal(Chara c)
79 {
80 return owner.Dist(c);
81 }
82 }
83
84 public override void OnCancelOrSuccess()
85 {
86 if (_owner == null)
87 {
88 return;
89 }
91 foreach (Chara chara in EClass._map.charas)
92 {
93 if (chara != _owner && (chara.enemy == _owner || chara.enemy == _owner.parasite || chara.enemy == _owner.ride))
94 {
95 chara.SetEnemy();
96 if (!(chara.ai is AI_Torture))
97 {
98 chara.ai.Cancel();
99 }
100 }
101 }
102 }
103}
Definition: AIAct.cs:6
virtual Status Cancel()
Definition: AIAct.cs:291
new Chara owner
Definition: AIAct.cs:14
Func< bool > isFail
Definition: AIAct.cs:28
Status DoProgress()
Definition: AIAct.cs:517
Status KeepRunning()
Definition: AIAct.cs:321
int progress
Definition: AIProgress.cs:5
override bool HasProgress
Definition: AI_Torture.cs:11
override CursorInfo CursorIcon
Definition: AI_Torture.cs:9
override bool CanManualCancel()
Definition: AI_Torture.cs:15
TraitShackle shackle
Definition: AI_Torture.cs:5
override AIProgress CreateProgress()
Definition: AI_Torture.cs:31
override bool CancelWhenDamaged
Definition: AI_Torture.cs:13
Chara _owner
Definition: AI_Torture.cs:7
override void OnCancelOrSuccess()
Definition: AI_Torture.cs:84
override IEnumerable< Status > Run()
Definition: AI_Torture.cs:20
bool isRestrained
Definition: Card.cs:538
void Talk(string idTopic, string ref1=null, string ref2=null, bool forceSync=false)
Definition: Card.cs:5949
bool ExistsOnMap
Definition: Card.cs:1961
Point pos
Definition: Card.cs:55
bool noMove
Definition: Card.cs:742
int Dist(Card c)
Definition: Card.cs:6777
void PlayAnime(AnimeID id, bool force=false)
Definition: Card.cs:5423
Definition: Chara.cs:10
AIAct ai
Definition: Chara.cs:187
Condition AddCondition(string id, int p=100, bool force=false)
Definition: Chara.cs:8415
override bool IsPC
Definition: Chara.cs:597
Chara host
Definition: Chara.cs:33
bool IsInCombat
Definition: Chara.cs:817
override bool IsDisabled
Definition: Chara.cs:570
override bool IsPCFaction
Definition: Chara.cs:656
Stats stamina
Definition: Chara.cs:955
Chara parasite
Definition: Chara.cs:30
Chara ride
Definition: Chara.cs:27
Chara enemy
Definition: Chara.cs:83
Chara SetEnemy(Chara c=null)
Definition: Chara.cs:5658
static CursorInfo IconMelee
Definition: EClass.cs:5
static int rnd(int a)
Definition: EClass.cs:50
static Map _map
Definition: EClass.cs:18
int SortVal(bool charaSheet=false)
Definition: ELEMENT.cs:452
List< Chara > charas
Definition: Map.cs:81
bool Equals(int _x, int _z)
Definition: Point.cs:924
virtual int value
Definition: Stats.cs:56
virtual int max
Definition: Stats.cs:68
virtual AnimeID animeId
Definition: TraitShackle.cs:7
Card owner
Definition: Trait.cs:26