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