Elin Decompiled Documentation EA 23.331 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 int destDist => 1;
18
19 public override bool isBlock => true;
20
21 public override int RightHand => 1004;
22
23 public override bool destIgnoreConnection => true;
24
25 public override bool ShowMapHighlightBlock => true;
26
28
29 public override bool IsHostileAct => true;
30
31 public override string GetIdRecipe(Point p)
32 {
33 return p.sourceBlock.RecipeID;
34 }
35
36 public static bool CanMine(Point pos, Card t)
37 {
38 if (t != null && pos.HasBlock && (!pos.HasObj || !pos.sourceObj.tileType.IsBlockMount))
39 {
40 if (t.HasElement(220))
41 {
42 return true;
43 }
44 if ((pos.matBlock.category == "wood" || pos.matBlock.category == "grass") && t.HasElement(225))
45 {
46 return true;
47 }
48 }
49 return false;
50 }
51
52 public override string GetTextSmall(Card c)
53 {
54 if (!pos.cell.HasBlock)
55 {
56 return pos.cell.GetFloorName();
57 }
58 return pos.cell.GetBlockName();
59 }
60
61 public override void OnCreateProgress(Progress_Custom p)
62 {
64 p.textHint = pos.cell.GetBlockName();
65 p.maxProgress = maxProgress;
66 p.onProgressBegin = delegate
67 {
68 if (!CanMine(pos, owner.Tool))
69 {
70 p.Cancel();
71 }
72 else if (base.IsTooHard)
73 {
74 owner.Say("tooHardToMine", owner, pos.cell.GetBlockName());
75 p.Cancel();
76 }
77 else if (owner.Tool != null)
78 {
79 owner.Say("mine_start", owner, owner.Tool);
80 }
81 };
82 p.onProgress = delegate
83 {
85 owner.PlaySound(pos.matBlock.GetSoundImpact());
86 pos.Animate(AnimeID.HitObj, animeBlock: true);
87 pos.matBlock.PlayHitEffect(pos);
88 pos.matBlock.AddBlood(pos);
90 owner.elements.ModExp(220, 5f);
91 if (EClass._zone.IsCrime(owner, this))
92 {
94 }
95 };
96 }
97
98 public override void DrawMarker(int x, int z, RenderParam p)
99 {
101 {
103 }
104 else
105 {
106 base.DrawMarker(x, z, p);
107 }
108 }
109
110 public override HitResult GetHitResult()
111 {
113 {
114 if (pos.cell._roofBlock == 0)
115 {
116 return HitResult.Default;
117 }
118 return HitResult.Valid;
119 }
120 if (pos.cell.HasBlock || !pos.cell.isSeen)
121 {
122 if (pos.sourceBlock.tileType.Invisible && !ActionMode.Mine.IsActive)
123 {
124 return HitResult.Default;
125 }
126 if (mode == Mode.Ramp && (pos.cell.HasRamp || EClass._map.GetRampDir(pos.x, pos.z, EClass.sources.blocks.rows[ramp].tileType) == -1))
127 {
128 return HitResult.Default;
129 }
130 return HitResult.Valid;
131 }
132 if (!mined && !pos.HasObj && owner != null && !owner.IsAgent && pos.Equals(owner.pos) && pos.Installed == null && EClass._zone.CanDigUnderground)
133 {
134 return HitResult.Valid;
135 }
136 return HitResult.Default;
137 }
138
139 public override void OnProgressComplete()
140 {
141 string idRecipe = GetIdRecipe(pos);
142 int hardness = pos.matBlock.hardness;
143 switch (mode)
144 {
145 case Mode.Default:
147 {
148 if (owner.IsPC)
149 {
151 }
152 EClass._map.MineBlock(pos, recoverBlock: false, owner);
153 }
154 else if (pos.Installed == null)
155 {
156 EClass._zone.AddThing("stairsDown_cave", pos.x, pos.z).Install();
157 return;
158 }
159 break;
160 case Mode.Ramp:
161 EClass._map.MineRamp(pos, (ramp == 3) ? pos.matBlock.ramp : ramp);
162 break;
163 }
164 if (!owner.IsAgent)
165 {
166 owner.elements.ModExp(220, 20 + hardness);
167 if (EClass.rnd(10) == 0)
168 {
170 }
171 if (EClass.rnd(10) == 0)
172 {
174 }
175 if (EClass._zone.IsCrime(owner, this))
176 {
178 }
179 if (EClass.rnd(2) == 0)
180 {
181 owner.stamina.Mod(-1);
182 }
183 }
184 if (owner != null && owner.IsPC)
185 {
187 }
188 mined = true;
189 }
190}
AnimeID
Definition: AnimeID.cs:2
HitResult
Definition: HitResult.cs:2
virtual Status Cancel()
Definition: AIAct.cs:305
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:2303
ElementContainerCard elements
Definition: Card.cs:42
SoundSource PlaySound(string id, float v=1f, bool spatial=true)
Definition: Card.cs:6613
Thing Tool
Definition: Card.cs:2480
Point pos
Definition: Card.cs:60
Card Install()
Definition: Card.cs:3915
CardRenderer renderer
Definition: Card.cs:64
bool HasElement(int ele, bool includeNagative=false)
Definition: Card.cs:6351
void Say(string lang, string ref1=null, string ref2=null)
Definition: Card.cs:7291
bool HasBlock
Definition: Cell.cs:651
byte _roofBlock
Definition: Cell.cs:52
string GetFloorName()
Definition: Cell.cs:1630
bool isSeen
Definition: Cell.cs:290
string GetBlockName()
Definition: Cell.cs:1625
bool HasRamp
Definition: Cell.cs:845
override bool IsPC
Definition: Chara.cs:630
Stats stamina
Definition: Chara.cs:1205
override void LookAt(Card c)
Definition: Chara.cs:3752
BlockColors blockColors
static CursorInfo Mine
Definition: CursorSystem.cs:64
Definition: EClass.cs:6
static ColorProfile Colors
Definition: EClass.cs:39
static Zone _zone
Definition: EClass.cs:21
static Map _map
Definition: EClass.cs:19
static int rnd(long a)
Definition: EClass.cs:59
static SourceManager sources
Definition: EClass.cs:43
static BaseGameScreen screen
Definition: EClass.cs:33
static Player player
Definition: EClass.cs:13
void ModExp(int ele, float a, bool chain=false)
void TrySmoothPick(Cell cell, Thing t, Chara c)
Definition: Map.cs:1850
void MineBlock(Point point, bool recoverBlock=false, Chara c=null, bool mineObj=true)
Definition: Map.cs:1714
int GetRampDir(int x, int z, TileType blockType=null)
Definition: Map.cs:2199
void MineRamp(Point point, int ramp, bool recoverBlock=false)
Definition: Map.cs:1781
int digs
Definition: Player.cs:93
RecipeManager recipes
Definition: Player.cs:1164
void ModKarma(int a)
Definition: Player.cs:2610
Stats stats
Definition: Player.cs:1083
Definition: Point.cs:9
Thing Installed
Definition: Point.cs:327
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:966
bool TryWitnessCrime(Chara criminal, Chara target=null, int radius=4, Func< Chara, bool > funcWitness=null)
Definition: Point.cs:878
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:1308
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:98
override void OnCreateProgress(Progress_Custom p)
Definition: TaskMine.cs:61
override bool isBlock
Definition: TaskMine.cs:19
override bool ShowMapHighlightBlock
Definition: TaskMine.cs:25
override int RightHand
Definition: TaskMine.cs:21
override bool destIgnoreConnection
Definition: TaskMine.cs:23
static bool CanMine(Point pos, Card t)
Definition: TaskMine.cs:36
override HitResult GetHitResult()
Definition: TaskMine.cs:110
override string GetIdRecipe(Point p)
Definition: TaskMine.cs:31
override int destDist
Definition: TaskMine.cs:17
int ramp
Definition: TaskMine.cs:11
override CursorInfo CursorIcon
Definition: TaskMine.cs:27
override HarvestType harvestType
Definition: TaskMine.cs:15
override string GetTextSmall(Card c)
Definition: TaskMine.cs:52
override void OnProgressComplete()
Definition: TaskMine.cs:139
override bool IsHostileAct
Definition: TaskMine.cs:29
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:277
Card AddThing(string id, int x, int z)
Definition: Zone.cs:2080
bool IsCrime(Chara c, Act act)
Definition: Zone.cs:3728