Elin Decompiled Documentation EA 23.320 Nyaightly Patch 1
Loading...
Searching...
No Matches
TaskDrawWater.cs
Go to the documentation of this file.
1using System.Collections.Generic;
2
4{
6
7 public override int destDist => 1;
8
9 public override bool CanPressRepeat => true;
10
11 public override bool Loop
12 {
13 get
14 {
15 if (CanProgress())
16 {
18 }
19 return false;
20 }
21 }
22
24
25 public override bool CanProgress()
26 {
27 if (base.CanProgress() && pos.cell.IsTopWater && pot.owner.c_charges < pot.MaxCharge)
28 {
29 return owner.Tool == pot.owner;
30 }
31 return false;
32 }
33
34 public override bool CanManualCancel()
35 {
36 return true;
37 }
38
39 public override void OnCreateProgress(Progress_Custom p)
40 {
41 p.textHint = Name;
42 p.maxProgress = 6;
43 p.onProgressBegin = delegate
44 {
45 if (owner.Tool != null)
46 {
47 owner.Say("drawWater_start", owner, owner.Tool);
48 }
49 };
50 p.onProgress = delegate
51 {
52 SourceMaterial.Row row2 = (pos.cell.HasBridge ? pos.cell.matBridge : pos.cell.matFloor);
53 row2.PlayHitEffect(pos);
55 };
56 p.onProgressComplete = delegate
57 {
58 owner.PlaySound("water");
59 int num = owner.Tool?.Evalue(770) ?? 0;
60 num = ((num <= 0) ? 1 : (2 + num / 10));
61 if (num > 1)
62 {
63 List<Point> list = EClass._map.ListPointsInSquare(pos, num - 1);
64 list.Sort((Point a, Point b) => a.Distance(pos) - b.Distance(pos));
65 {
66 foreach (Point item in list)
67 {
68 if (owner == null || owner.isDead)
69 {
70 break;
71 }
72 Draw(item);
73 }
74 return;
75 }
76 }
77 Draw(pos);
78 };
79 void Draw(Point p)
80 {
81 if (pot.owner.c_charges < pot.MaxCharge && GetHitResult(p) != HitResult.Invalid)
82 {
83 Effect.Get("mine").Play(p).SetParticleColor(p.cell.HasBridge ? p.matBridge.GetColor() : p.matFloor.GetColor())
84 .Emit(10 + EClass.rnd(10));
85 p.Animate(AnimeID.Dig, animeBlock: true);
87 switch ((p.HasBridge ? p.sourceBridge : p.sourceFloor).alias)
88 {
89 case "floor_water_shallow":
90 ChangeFloor("floor_water_shallow2");
91 break;
92 case "floor_water":
93 ChangeFloor("floor_water_shallow");
94 break;
95 case "floor_water_deep":
96 ChangeFloor("floor_water");
97 break;
98 default:
99 ChangeFloor("floor_raw3");
100 break;
101 }
103 owner.elements.ModExp(286, 5f);
104 if (EClass.rnd(3) == 0)
105 {
106 owner.stamina.Mod(-1);
107 }
108 }
109 void ChangeFloor(string id)
110 {
112 if (p.HasBridge)
113 {
114 p.cell._bridge = (byte)row.id;
115 if (id == "floor_raw3")
116 {
117 p.cell._bridgeMat = 45;
118 }
119 }
120 else
121 {
122 p.cell._floor = (byte)row.id;
123 if (id == "floor_raw3")
124 {
125 p.cell._floorMat = 45;
126 }
127 }
128 EClass._map.SetLiquid(p.x, p.z);
130 }
131 }
132 }
133
134 public override HitResult GetHitResult()
135 {
137 {
138 return HitResult.Invalid;
139 }
140 return HitResult.Valid;
141 }
142}
AnimeID
Definition: AnimeID.cs:2
if(!match.Success)
HitResult
Definition: HitResult.cs:2
new Chara owner
Definition: AIAct.cs:14
virtual new string Name
Definition: AIAct.cs:68
ElementContainerCard elements
Definition: Card.cs:42
SoundSource PlaySound(string id, float v=1f, bool spatial=true)
Definition: Card.cs:6562
Thing Tool
Definition: Card.cs:2464
void Dye(string idMat)
Definition: Card.cs:6395
void ModCharge(int a, bool destroy=false)
Definition: Card.cs:4108
int Evalue(int ele)
Definition: Card.cs:2688
int c_charges
Definition: Card.cs:1309
void Say(string lang, string ref1=null, string ref2=null)
Definition: Card.cs:7240
bool HasBridge
Definition: Cell.cs:679
bool IsTopWater
Definition: Cell.cs:708
SourceMaterial.Row matFloor
Definition: Cell.cs:1040
bool HasFullBlock
Definition: Cell.cs:825
bool HasCondition(string alias)
Definition: Chara.cs:9811
Stats stamina
Definition: Chara.cs:1181
bool isDead
Definition: Chara.cs:393
static CursorInfo Hand
Definition: CursorSystem.cs:60
Definition: EClass.cs:6
static Map _map
Definition: EClass.cs:19
static int rnd(long a)
Definition: EClass.cs:59
static SourceManager sources
Definition: EClass.cs:43
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)
int id
Definition: ELEMENT.cs:257
void SetLiquid(int x, int z, CellEffect effect=null)
Definition: Map.cs:1522
List< Point > ListPointsInSquare(Point center, int radius, bool mustBeWalkable=true, bool los=true)
Definition: Map.cs:2336
Definition: Point.cs:9
SourceMaterial.Row matFloor
Definition: Point.cs:57
bool HasBridge
Definition: Point.cs:221
int x
Definition: Point.cs:36
int z
Definition: Point.cs:39
SourceMaterial.Row matBridge
Definition: Point.cs:59
SourceFloor.Row sourceFloor
Definition: Point.cs:65
bool HasObj
Definition: Point.cs:137
void RefreshNeighborTiles()
Definition: Point.cs:1282
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
SourceFloor floors
string GetSoundImpact(RenderRow c=null)
void PlayHitEffect(Point p, int emit=2)
virtual void Mod(int a)
Definition: Stats.cs:135
override CursorInfo CursorIcon
override bool CanManualCancel()
override bool CanPressRepeat
Definition: TaskDrawWater.cs:9
override bool Loop
override void OnCreateProgress(Progress_Custom p)
TraitToolWaterPot pot
Definition: TaskDrawWater.cs:5
override HitResult GetHitResult()
override int destDist
Definition: TaskDrawWater.cs:7
override bool CanProgress()
Point pos
Definition: TaskPoint.cs:11
int id
Definition: TileRow.cs:8
Card owner
Definition: Trait.cs:28