Elin Decompiled Documentation EA 23.102 Nightly
Loading...
Searching...
No Matches
AI_Slaughter.cs
Go to the documentation of this file.
1using System.Collections.Generic;
2using UnityEngine;
3
5{
6 public static bool slaughtering;
7
8 public override bool CanManualCancel()
9 {
10 return true;
11 }
12
13 public override string GetText(string str = "")
14 {
15 string[] list = Lang.GetList("fur");
16 string text = list[Mathf.Clamp(target.c_fur / 10, 0, list.Length - 1)];
17 return "AI_Slaughter".lang() + "(" + text + ")";
18 }
19
20 public override bool IsValidTC(Card c)
21 {
22 return c?.ExistsOnMap ?? false;
23 }
24
25 public override bool Perform()
26 {
27 target = Act.TC;
28 return base.Perform();
29 }
30
31 public override IEnumerable<Status> Run()
32 {
33 yield return DoGoto(target);
34 if (target != owner)
35 {
36 target.Chara.AddCondition<ConWait>(1000, force: true);
37 }
39 {
40 canProgress = () => IsValidTC(target),
41 onProgressBegin = delegate
42 {
43 target.PlaySound("slaughter");
44 target.SetCensored(enable: true);
45 owner.Say("disassemble_start", owner, owner.Tool, target.Name);
46 },
47 onProgress = delegate(Progress_Custom p)
48 {
51 if (target != owner)
52 {
53 target.Chara.AddCondition<ConWait>(1000, force: true);
54 }
55 if (owner.Dist(target) > 1)
56 {
58 if (owner == null)
59 {
60 p.Cancel();
61 }
62 else if (owner.Dist(target) > 1)
63 {
64 owner.Say("targetTooFar");
65 p.Cancel();
66 }
67 }
68 },
69 onProgressComplete = delegate
70 {
71 bool num = target.HasElement(1237) || target.Chara.race.id == "cat";
72 target.pos.PlayEffect("revive");
74 owner.ShowEmo(Emo.love);
75 target.SetCensored(enable: false);
76 if (target.HaveFur())
77 {
80 }
81 slaughtering = true;
82 target.SetSale(sale: false);
84 {
85 if (target.Chara.host != null)
86 {
88 }
90 }
91 target.Die();
92 Msg.Say("goto_heaven", target);
93 slaughtering = false;
94 if (!target.IsPC)
95 {
97 {
98 target.c_dateDeathLock = EClass.world.date.GetRaw() + 86400;
99 }
100 else
101 {
103 }
104 }
105 if (owner != null)
106 {
107 owner.elements.ModExp(290, 200);
108 }
109 if (!EClass.pc.isDead)
110 {
111 EClass.pc.stamina.Mod(-3);
112 }
113 if (num)
114 {
115 Msg.Say("killcat");
117 }
118 }
119 }.SetDuration(6000 / (100 + owner.Tool.material.hardness * 2), 3);
120 yield return Do(seq);
121 }
122
123 public override void OnCancelOrSuccess()
124 {
126 {
127 target.Chara.RemoveCondition<ConWait>();
128 target.SetCensored(enable: false);
129 }
130 }
131}
AnimeID
Definition: AnimeID.cs:2
Emo
Definition: Emo.cs:2
Status Do(AIAct _seq, Func< Status > _onChildFail=null)
Definition: AIAct.cs:416
virtual Status Cancel()
Definition: AIAct.cs:291
new Chara owner
Definition: AIAct.cs:14
Status DoGoto(Point pos, int dist=0, bool ignoreConnection=false, Func< Status > _onChildFail=null)
Definition: AIAct.cs:432
static Thing GetFur(Chara c, int mod=100)
Definition: AI_Shear.cs:88
override void OnCancelOrSuccess()
override string GetText(string str="")
Definition: AI_Slaughter.cs:13
override IEnumerable< Status > Run()
Definition: AI_Slaughter.cs:31
override bool Perform()
Definition: AI_Slaughter.cs:25
override bool CanManualCancel()
Definition: AI_Slaughter.cs:8
override bool IsValidTC(Card c)
Definition: AI_Slaughter.cs:20
static bool slaughtering
Definition: AI_Slaughter.cs:6
static void Unride(Chara host, bool parasite=false, bool talk=true)
Definition: ActRide.cs:101
Definition: ACT.cs:62
static Card TC
Definition: ACT.cs:79
void PlayAnime(AnimeID id, bool force)
Definition: Card.cs:11
virtual Chara Chara
Definition: Card.cs:1946
void SetCensored(bool enable)
Definition: Card.cs:6826
ElementContainerCard elements
Definition: Card.cs:37
bool HasElement(int ele, int req=1)
Definition: Card.cs:5214
SourceMaterial.Row material
Definition: Card.cs:1927
SoundSource PlaySound(string id, float v=1f, bool spatial=true)
Definition: Card.cs:5404
Thing Tool
Definition: Card.cs:2270
virtual bool IsPCParty
Definition: Card.cs:2025
string Name
Definition: Card.cs:2013
bool ExistsOnMap
Definition: Card.cs:1961
virtual void Die(Element e=null, Card origin=null, AttackSource attackSource=AttackSource.None)
Definition: Card.cs:4471
Point pos
Definition: Card.cs:55
void ShowEmo(Emo _emo=Emo.none, float duration=0f, bool skipSame=true)
Definition: Card.cs:5372
bool HaveFur()
Definition: Card.cs:6982
virtual bool IsPC
Definition: Card.cs:2019
void SetSale(bool sale)
Definition: Card.cs:6371
int Dist(Card c)
Definition: Card.cs:6777
CardRenderer renderer
Definition: Card.cs:57
int c_fur
Definition: Card.cs:1265
void Say(string lang, string ref1=null, string ref2=null)
Definition: Card.cs:6046
new TraitChara trait
Definition: Chara.cs:488
Condition AddCondition(string id, int p=100, bool force=false)
Definition: Chara.cs:8415
void ModAffinity(Chara c, int a, bool show=true, bool showOnlyEmo=false)
Definition: Chara.cs:7166
Chara host
Definition: Chara.cs:33
Party party
Definition: Chara.cs:43
Stats stamina
Definition: Chara.cs:955
Chara parasite
Definition: Chara.cs:30
MoveResult TryMoveTowards(Point p)
Definition: Chara.cs:2320
FactionBranch homeBranch
Definition: Chara.cs:889
bool isDead
Definition: Chara.cs:374
override void LookAt(Card c)
Definition: Chara.cs:3219
int GetRaw(int offsetHours=0)
Definition: Date.cs:322
Definition: EClass.cs:5
static Zone _zone
Definition: EClass.cs:20
static World world
Definition: EClass.cs:40
static Player player
Definition: EClass.cs:12
static Chara pc
Definition: EClass.cs:14
void ModExp(int ele, int a, bool chain=false)
void BanishMember(Chara c, bool skipMsg=false)
Definition: Lang.cs:6
static string[] GetList(string id)
Definition: Lang.cs:114
Definition: Msg.cs:5
static string Say(string idLang, string ref1, string ref2=null, string ref3=null, string ref4=null)
Definition: Msg.cs:58
void RemoveMember(Chara c)
Definition: Party.cs:84
void ModKarma(int a)
Definition: Player.cs:2289
Effect PlayEffect(string id)
Definition: Point.cs:1212
virtual void Mod(int a)
Definition: Stats.cs:135
Definition: Thing.cs:8
virtual bool IsUnique
Definition: TraitChara.cs:33
GameDate date
Definition: World.cs:6
Card AddCard(Card t, Point point)
Definition: Zone.cs:1893