Elin Decompiled Documentation EA 23.199 Nightly
Loading...
Searching...
No Matches
TaskMine.cs
Go to the documentation of this file.
2{
3 public enum Mode
4 {
6 Ramp
7 }
8
9 public Mode mode;
10
11 public int ramp = 3;
12
13 public bool mined;
14
15 public override HarvestType harvestType => HarvestType.Block;
16
17 public override string IdRecipe => pos.sourceBlock.RecipeID;
18
19 public override int destDist => 1;
20
21 public override bool isBlock => true;
22
23 public override int RightHand => 1004;
24
25 public override bool destIgnoreConnection => true;
26
27 public override bool ShowMapHighlightBlock => true;
28
30
31 public override bool IsHostileAct => true;
32
33 public static bool CanMine(Point pos, Card t)
34 {
35 if (t != null && pos.HasBlock && (!pos.HasObj || !pos.sourceObj.tileType.IsBlockMount))
36 {
37 if (t.HasElement(220))
38 {
39 return true;
40 }
41 if ((pos.matBlock.category == "wood" || pos.matBlock.category == "grass") && t.HasElement(225))
42 {
43 return true;
44 }
45 }
46 return false;
47 }
48
49 public override string GetTextSmall(Card c)
50 {
51 if (!pos.cell.HasBlock)
52 {
53 return pos.cell.GetFloorName();
54 }
55 return pos.cell.GetBlockName();
56 }
57
58 public override void OnCreateProgress(Progress_Custom p)
59 {
61 p.textHint = pos.cell.GetBlockName();
62 p.maxProgress = maxProgress;
63 p.onProgressBegin = delegate
64 {
65 if (!CanMine(pos, owner.Tool))
66 {
67 p.Cancel();
68 }
69 else if (base.IsTooHard)
70 {
71 owner.Say("tooHardToMine", owner, pos.cell.GetBlockName());
72 p.Cancel();
73 }
74 else if (owner.Tool != null)
75 {
76 owner.Say("mine_start", owner, owner.Tool);
77 }
78 };
79 p.onProgress = delegate
80 {
82 owner.PlaySound(pos.matBlock.GetSoundImpact());
83 pos.Animate(AnimeID.HitObj, animeBlock: true);
84 pos.matBlock.PlayHitEffect(pos);
85 pos.matBlock.AddBlood(pos);
87 owner.elements.ModExp(220, 5f);
88 if (EClass._zone.IsCrime(owner, this))
89 {
91 }
92 };
93 }
94
95 public override void DrawMarker(int x, int z, RenderParam p)
96 {
98 {
100 }
101 else
102 {
103 base.DrawMarker(x, z, p);
104 }
105 }
106
107 public override HitResult GetHitResult()
108 {
110 {
111 if (pos.cell._roofBlock == 0)
112 {
113 return HitResult.Default;
114 }
115 return HitResult.Valid;
116 }
117 if (pos.cell.HasBlock || !pos.cell.isSeen)
118 {
119 if (pos.sourceBlock.tileType.Invisible && !ActionMode.Mine.IsActive)
120 {
121 return HitResult.Default;
122 }
123 if (mode == Mode.Ramp && (pos.cell.HasRamp || EClass._map.GetRampDir(pos.x, pos.z, EClass.sources.blocks.rows[ramp].tileType) == -1))
124 {
125 return HitResult.Default;
126 }
127 return HitResult.Valid;
128 }
129 if (!mined && !pos.HasObj && owner != null && !owner.IsAgent && pos.Equals(owner.pos) && pos.Installed == null && EClass._zone.CanDigUnderground)
130 {
131 return HitResult.Valid;
132 }
133 return HitResult.Default;
134 }
135
136 public override void OnProgressComplete()
137 {
138 string idRecipe = IdRecipe;
139 int hardness = pos.matBlock.hardness;
140 switch (mode)
141 {
142 case Mode.Default:
144 {
145 if (owner.IsPC)
146 {
148 }
149 EClass._map.MineBlock(pos, recoverBlock: false, owner);
150 }
151 else if (pos.Installed == null)
152 {
153 EClass._zone.AddThing("stairsDown_cave", pos.x, pos.z).Install();
154 return;
155 }
156 break;
157 case Mode.Ramp:
158 EClass._map.MineRamp(pos, (ramp == 3) ? pos.matBlock.ramp : ramp);
159 break;
160 }
161 if (!owner.IsAgent)
162 {
163 owner.elements.ModExp(220, 20 + hardness);
164 if (EClass.rnd(10) == 0)
165 {
167 }
168 if (EClass.rnd(10) == 0)
169 {
171 }
172 if (EClass._zone.IsCrime(owner, this))
173 {
175 }
176 if (EClass.rnd(2) == 0)
177 {
178 owner.stamina.Mod(-1);
179 }
180 }
181 if (owner != null && owner.IsPC)
182 {
184 }
185 mined = true;
186 }
187}
AnimeID
Definition: AnimeID.cs:2
HitResult
Definition: HitResult.cs:2
virtual Status Cancel()
Definition: AIAct.cs:291
new Chara owner
Definition: AIAct.cs:14
override bool IsRoofEditMode(Card c=null)
Definition: AM_Mine.cs:19
static AM_Mine Mine
Definition: ActionMode.cs:33
ScreenGuide guide
void SetTarget(Chara c, Thing _tool=null)
virtual void NextFrame()
Definition: Card.cs:11
bool IsAgent
Definition: Card.cs:2211
ElementContainerCard elements
Definition: Card.cs:39
bool HasElement(int ele, int req=1)
Definition: Card.cs:5725
SoundSource PlaySound(string id, float v=1f, bool spatial=true)
Definition: Card.cs:5939
Thing Tool
Definition: Card.cs:2372
Point pos
Definition: Card.cs:57
Card Install()
Definition: Card.cs:3639
CardRenderer renderer
Definition: Card.cs:59
void Say(string lang, string ref1=null, string ref2=null)
Definition: Card.cs:6586
bool HasBlock
Definition: Cell.cs:643
byte _roofBlock
Definition: Cell.cs:50
string GetFloorName()
Definition: Cell.cs:1594
bool isSeen
Definition: Cell.cs:282
string GetBlockName()
Definition: Cell.cs:1589
bool HasRamp
Definition: Cell.cs:837
override bool IsPC
Definition: Chara.cs:610
Stats stamina
Definition: Chara.cs:1128
override void LookAt(Card c)
Definition: Chara.cs:3474
BlockColors blockColors
static CursorInfo Mine
Definition: CursorSystem.cs:64
Definition: EClass.cs:5
static ColorProfile Colors
Definition: EClass.cs:38
static Zone _zone
Definition: EClass.cs:20
static Map _map
Definition: EClass.cs:18
static int rnd(long a)
Definition: EClass.cs:58
static SourceManager sources
Definition: EClass.cs:42
static BaseGameScreen screen
Definition: EClass.cs:32
static Player player
Definition: EClass.cs:12
void ModExp(int ele, float a, bool chain=false)
void TrySmoothPick(Cell cell, Thing t, Chara c)
Definition: Map.cs:1804
void MineBlock(Point point, bool recoverBlock=false, Chara c=null, bool mineObj=true)
Definition: Map.cs:1668
int GetRampDir(int x, int z, TileType blockType=null)
Definition: Map.cs:2153
void MineRamp(Point point, int ramp, bool recoverBlock=false)
Definition: Map.cs:1735
int digs
Definition: Player.cs:96
RecipeManager recipes
Definition: Player.cs:1053
void ModKarma(int a)
Definition: Player.cs:2444
Stats stats
Definition: Player.cs:972
Definition: Point.cs:9
Thing Installed
Definition: Point.cs:315
SourceMaterial.Row matBlock
Definition: Point.cs:55
SourceBlock.Row sourceBlock
Definition: Point.cs:63
int x
Definition: Point.cs:36
bool HasWallOrFence
Definition: Point.cs:155
int z
Definition: Point.cs:39
SourceObj.Row sourceObj
Definition: Point.cs:69
bool Equals(int _x, int _z)
Definition: Point.cs:944
bool TryWitnessCrime(Chara criminal, Chara target=null, int radius=4, Func< Chara, bool > funcWitness=null)
Definition: Point.cs:861
bool HasObj
Definition: Point.cs:137
bool HasBlock
Definition: Point.cs:141
Cell cell
Definition: Point.cs:51
void Animate(AnimeID id, bool animeBlock=false)
Definition: Point.cs:1286
void ComeUpWithRecipe(string idRecipe, int chanceForRandomRecipe=0)
void DrawWall(Point point, int color, bool useMarkerPass=false, float offsetZ=0f)
Definition: ScreenGuide.cs:42
SourceBlock blocks
virtual void Mod(int a)
Definition: Stats.cs:135
virtual bool Working
override void DrawMarker(int x, int z, RenderParam p)
Definition: TaskMine.cs:95
override void OnCreateProgress(Progress_Custom p)
Definition: TaskMine.cs:58
override bool isBlock
Definition: TaskMine.cs:21
override bool ShowMapHighlightBlock
Definition: TaskMine.cs:27
override int RightHand
Definition: TaskMine.cs:23
override bool destIgnoreConnection
Definition: TaskMine.cs:25
override string IdRecipe
Definition: TaskMine.cs:17
static bool CanMine(Point pos, Card t)
Definition: TaskMine.cs:33
override HitResult GetHitResult()
Definition: TaskMine.cs:107
override int destDist
Definition: TaskMine.cs:19
int ramp
Definition: TaskMine.cs:11
override CursorInfo CursorIcon
Definition: TaskMine.cs:29
override HarvestType harvestType
Definition: TaskMine.cs:15
override string GetTextSmall(Card c)
Definition: TaskMine.cs:49
override void OnProgressComplete()
Definition: TaskMine.cs:136
override bool IsHostileAct
Definition: TaskMine.cs:31
bool mined
Definition: TaskMine.cs:13
Mode mode
Definition: TaskMine.cs:9
Point pos
Definition: TaskPoint.cs:11
static Thing Create(string id, int idMat=-1, int lv=-1)
Definition: ThingGen.cs:53
virtual bool CanDigUnderground
Definition: Zone.cs:268
Card AddThing(string id, int x, int z)
Definition: Zone.cs:1933
bool IsCrime(Chara c, Act act)
Definition: Zone.cs:3420