Elin Decompiled Documentation EA 23.324 Nightly
Loading...
Searching...
No Matches
TaskPlow.cs
Go to the documentation of this file.
1using System.Collections.Generic;
2using UnityEngine;
3
5{
7
8 public override bool destIgnoreConnection => false;
9
10 public override bool CanPressRepeat => true;
11
12 public override int destDist
13 {
14 get
15 {
16 if (!pos.cell.blocked)
17 {
18 return 0;
19 }
20 return 1;
21 }
22 }
23
24 public override bool CanProgress()
25 {
26 if (base.CanProgress())
27 {
28 return !pos.IsFarmField;
29 }
30 return false;
31 }
32
33 public override void OnCreateProgress(Progress_Custom p)
34 {
35 p.textHint = Name;
36 p.maxProgress = Mathf.Max((15 + EClass.rnd(20)) * 100 / (100 + owner.Tool.material.hardness * 3), 2);
37 p.onProgressBegin = delegate
38 {
39 if (owner.Tool != null)
40 {
41 owner.Say("till_start", owner, owner.Tool);
42 }
43 };
44 p.onProgress = delegate(Progress_Custom _p)
45 {
46 SourceMaterial.Row row = (pos.cell.HasBridge ? pos.cell.matBridge : pos.cell.matFloor);
47 row.PlayHitEffect(pos);
48 row.AddBlood(pos);
51 if (!(pos.HasBridge ? pos.sourceBridge : pos.sourceFloor).tag.Contains("soil"))
52 {
53 owner.Say("till_invalid");
54 _p.Cancel();
55 }
56 };
57 p.onProgressComplete = delegate
58 {
60 int num = owner.Tool?.Evalue(770) ?? 0;
61 num = ((num <= 0) ? 1 : (2 + num / 10));
62 if (num > 1)
63 {
64 List<Point> list = EClass._map.ListPointsInSquare(pos, num - 1);
65 list.Sort((Point a, Point b) => a.Distance(pos) - b.Distance(pos));
66 {
67 foreach (Point item in list)
68 {
69 if (owner == null || owner.isDead)
70 {
71 break;
72 }
73 Plow(item);
74 }
75 return;
76 }
77 }
78 Plow(pos);
79 };
80 void Plow(Point p)
81 {
82 if ((p.HasBridge ? p.sourceBridge : p.sourceFloor).tag.Contains("soil") && GetHitResult(p) != HitResult.Invalid)
83 {
84 Effect.Get("mine").Play(p).SetParticleColor(p.cell.HasBridge ? p.matBridge.GetColor() : p.matFloor.GetColor())
85 .Emit(10 + EClass.rnd(10));
86 p.Animate(AnimeID.Dig, animeBlock: true);
87 if (p.HasBridge)
88 {
89 p.cell._bridge = 4;
90 }
91 else
92 {
93 p.SetFloor(p.matFloor.id, 4);
94 }
95 owner.elements.ModExp(286, 30f);
96 if (owner.IsPC)
97 {
99 }
100 owner.stamina.Mod(-1);
101 }
102 }
103 }
104
105 public override HitResult GetHitResult()
106 {
108 {
109 return HitResult.Invalid;
110 }
111 return HitResult.Valid;
112 }
113}
AnimeID
Definition: AnimeID.cs:2
HitResult
Definition: HitResult.cs:2
virtual Status Cancel()
Definition: AIAct.cs:305
new Chara owner
Definition: AIAct.cs:14
virtual new string Name
Definition: AIAct.cs:68
virtual void NextFrame()
ElementContainerCard elements
Definition: Card.cs:42
SourceMaterial.Row material
Definition: Card.cs:2103
SoundSource PlaySound(string id, float v=1f, bool spatial=true)
Definition: Card.cs:6594
Thing Tool
Definition: Card.cs:2480
int Evalue(int ele)
Definition: Card.cs:2704
CardRenderer renderer
Definition: Card.cs:64
void Say(string lang, string ref1=null, string ref2=null)
Definition: Card.cs:7272
bool HasBridge
Definition: Cell.cs:679
SourceMaterial.Row matBridge
Definition: Cell.cs:1044
bool IsTopWater
Definition: Cell.cs:708
SourceMaterial.Row matFloor
Definition: Cell.cs:1040
override bool IsPC
Definition: Chara.cs:630
Stats stamina
Definition: Chara.cs:1205
bool isDead
Definition: Chara.cs:393
static CursorInfo Dig
Definition: CursorSystem.cs:66
Definition: EClass.cs:6
static Map _map
Definition: EClass.cs:19
static int rnd(long a)
Definition: EClass.cs:59
static Player player
Definition: EClass.cs:13
Definition: Effect.cs:7
static Effect Get(Effect original)
Definition: Effect.cs:80
void Play(float delay, Point from, float fixY=0f, Point to=null, Sprite sprite=null)
Definition: Effect.cs:100
void ModExp(int ele, float a, bool chain=false)
List< Point > ListPointsInSquare(Point center, int radius, bool mustBeWalkable=true, bool los=true)
Definition: Map.cs:2336
long plow
Definition: Player.cs:213
Stats stats
Definition: Player.cs:1083
Definition: Point.cs:9
SourceMaterial.Row matFloor
Definition: Point.cs:57
bool HasBridge
Definition: Point.cs:221
bool IsFarmField
Definition: Point.cs:127
SourceMaterial.Row matBridge
Definition: Point.cs:59
void SetFloor(int idMat=0, int idFloor=0)
Definition: Point.cs:929
SoundSource PlaySound(string id, bool synced=true, float v=1f, bool spatial=true)
Definition: Point.cs:1259
SourceFloor.Row sourceFloor
Definition: Point.cs:65
bool HasObj
Definition: Point.cs:137
int Distance(Point p)
Definition: Point.cs:995
Cell cell
Definition: Point.cs:51
void Animate(AnimeID id, bool animeBlock=false)
Definition: Point.cs:1308
SourceFloor.Row sourceBridge
Definition: Point.cs:67
string GetSoundImpact(RenderRow c=null)
void AddBlood(Point p, int a=1)
void PlayHitEffect(Point p, int emit=2)
virtual void Mod(int a)
Definition: Stats.cs:135
override bool destIgnoreConnection
Definition: TaskPlow.cs:8
override bool CanProgress()
Definition: TaskPlow.cs:24
override HitResult GetHitResult()
Definition: TaskPlow.cs:105
override void OnCreateProgress(Progress_Custom p)
Definition: TaskPlow.cs:33
override int destDist
Definition: TaskPlow.cs:13
override CursorInfo CursorIcon
Definition: TaskPlow.cs:6
override bool CanPressRepeat
Definition: TaskPlow.cs:10
Point pos
Definition: TaskPoint.cs:11