Elin Decompiled Documentation EA 23.102 Nightly
Loading...
Searching...
No Matches
TaskPourWater.cs
Go to the documentation of this file.
2{
4
5 public override int destDist => 1;
6
7 public override bool CanPressRepeat => true;
8
9 public override bool Loop => CanProgress();
10
11 public override bool CanProgress()
12 {
13 if (base.CanProgress() && !pos.HasBridge && pos.cell.sourceSurface.alias != "floor_water_deep" && pot.owner.c_charges > 0)
14 {
15 return owner.Tool == pot.owner;
16 }
17 return false;
18 }
19
20 public override bool CanManualCancel()
21 {
22 return true;
23 }
24
25 public override void OnCreateProgress(Progress_Custom p)
26 {
27 p.textHint = Name;
28 p.maxProgress = 6;
29 p.onProgressBegin = delegate
30 {
31 if (owner.Tool != null)
32 {
33 owner.Say("pourWater_start", owner, owner.Tool);
34 }
35 };
36 p.onProgress = delegate
37 {
38 (pos.cell.HasBridge ? pos.cell.matBridge : pos.cell.matFloor).PlayHitEffect(pos);
39 owner.PlaySound(MATERIAL.sourceWaterSea.GetSoundImpact());
40 };
41 p.onProgressComplete = delegate
42 {
43 if (pot.owner.DyeMat == null)
44 {
46 }
47 switch ((pos.HasBridge ? pos.sourceBridge : pos.sourceFloor).alias)
48 {
49 case "floor_water_shallow2":
50 ChangeFloor("floor_water_shallow");
51 break;
52 case "floor_water_shallow":
53 ChangeFloor("floor_water");
54 break;
55 case "floor_water":
56 ChangeFloor("floor_water_deep");
57 break;
58 default:
59 ChangeFloor("floor_water_shallow2");
60 break;
61 }
62 Effect.Get("mine").Play(pos).SetParticleColor(pos.cell.HasBridge ? pos.matBridge.GetColor() : pos.matFloor.GetColor())
63 .Emit(10 + EClass.rnd(10));
64 pos.Animate(AnimeID.Dig, animeBlock: true);
65 owner.PlaySound("water_farm");
67 if (pot.owner.c_charges <= 0)
68 {
69 pot.owner.Dye(EClass.sources.materials.alias["void"]);
70 }
71 owner.elements.ModExp(286, 5);
72 if (EClass.rnd(3) == 0)
73 {
74 owner.stamina.Mod(-1);
75 }
76 };
77 void ChangeFloor(string id)
78 {
80 if (pos.HasBridge)
81 {
82 pos.cell._bridge = (byte)row.id;
83 pos.cell._bridgeMat = (byte)pot.owner.DyeMat.id;
84 }
85 else
86 {
87 pos.cell._floor = (byte)row.id;
88 pos.cell._floorMat = (byte)pot.owner.DyeMat.id;
89 }
92 }
93 }
94
95 public override HitResult GetHitResult()
96 {
98 {
99 return HitResult.Invalid;
100 }
101 return HitResult.Valid;
102 }
103}
AnimeID
Definition: AnimeID.cs:2
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:37
SourceMaterial.Row DyeMat
Definition: Card.cs:1816
SoundSource PlaySound(string id, float v=1f, bool spatial=true)
Definition: Card.cs:5404
Thing Tool
Definition: Card.cs:2270
void Dye(string idMat)
Definition: Card.cs:5267
void ModCharge(int a, bool destroy=false)
Definition: Card.cs:3627
int c_charges
Definition: Card.cs:1205
void Say(string lang, string ref1=null, string ref2=null)
Definition: Card.cs:6046
bool HasBridge
Definition: Cell.cs:671
byte _floorMat
Definition: Cell.cs:36
byte _bridgeMat
Definition: Cell.cs:48
SourceMaterial.Row matFloor
Definition: Cell.cs:1032
SourceFloor.Row sourceSurface
Definition: Cell.cs:1059
bool HasFullBlock
Definition: Cell.cs:817
Stats stamina
Definition: Chara.cs:955
Definition: EClass.cs:5
static int rnd(int a)
Definition: EClass.cs:50
static Map _map
Definition: EClass.cs:18
static SourceManager sources
Definition: EClass.cs:42
Definition: Effect.cs:7
static Effect Get(Effect original)
Definition: Effect.cs:85
void Play(float delay, Point from, float fixY=0f, Point to=null, Sprite sprite=null)
Definition: Effect.cs:100
void ModExp(int ele, int a, bool chain=false)
int id
Definition: ELEMENT.cs:240
static SourceMaterial.Row sourceWaterSea
Definition: MATERIAL.cs:41
void SetLiquid(int x, int z, CellEffect effect=null)
Definition: Map.cs:1464
SourceMaterial.Row matFloor
Definition: Point.cs:57
bool HasBridge
Definition: Point.cs:209
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:1240
Cell cell
Definition: Point.cs:51
void Animate(AnimeID id, bool animeBlock=false)
Definition: Point.cs:1266
SourceFloor.Row sourceBridge
Definition: Point.cs:67
SourceMaterial materials
SourceFloor floors
virtual void Mod(int a)
Definition: Stats.cs:135
Point pos
Definition: TaskPoint.cs:11
override bool CanManualCancel()
override void OnCreateProgress(Progress_Custom p)
override bool Loop
Definition: TaskPourWater.cs:9
override bool CanPressRepeat
Definition: TaskPourWater.cs:7
override int destDist
Definition: TaskPourWater.cs:5
override bool CanProgress()
TraitToolWaterPot pot
Definition: TaskPourWater.cs:3
override HitResult GetHitResult()
int id
Definition: TileRow.cs:8
Card owner
Definition: Trait.cs:26