Elin Decompiled Documentation EA 23.102 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 static bool CanMine(Point pos, Card t)
32 {
33 if (t != null && pos.HasBlock && (!pos.HasObj || !pos.sourceObj.tileType.IsBlockMount))
34 {
35 if (t.HasElement(220))
36 {
37 return true;
38 }
39 if ((pos.matBlock.category == "wood" || pos.matBlock.category == "grass") && t.HasElement(225))
40 {
41 return true;
42 }
43 }
44 return false;
45 }
46
47 public override string GetTextSmall(Card c)
48 {
49 if (!pos.cell.HasBlock)
50 {
51 return pos.cell.GetFloorName();
52 }
53 return pos.cell.GetBlockName();
54 }
55
56 public override void OnCreateProgress(Progress_Custom p)
57 {
59 p.textHint = pos.cell.GetBlockName();
60 p.maxProgress = maxProgress;
61 p.onProgressBegin = delegate
62 {
63 if (!CanMine(pos, owner.Tool))
64 {
65 p.Cancel();
66 }
67 else if (base.IsTooHard)
68 {
69 owner.Say("tooHardToMine", owner, pos.cell.GetBlockName());
70 p.Cancel();
71 }
72 else if (owner.Tool != null)
73 {
74 owner.Say("mine_start", owner, owner.Tool);
75 }
76 };
77 p.onProgress = delegate
78 {
80 owner.PlaySound(pos.matBlock.GetSoundImpact());
81 pos.Animate(AnimeID.HitObj, animeBlock: true);
82 pos.matBlock.PlayHitEffect(pos);
83 pos.matBlock.AddBlood(pos);
85 owner.elements.ModExp(220, 5);
86 if (EClass._zone.IsCrime(owner, this))
87 {
89 }
90 };
91 }
92
93 public override void DrawMarker(int x, int z, RenderParam p)
94 {
96 {
98 }
99 else
100 {
101 base.DrawMarker(x, z, p);
102 }
103 }
104
105 public override HitResult GetHitResult()
106 {
108 {
109 if (pos.cell._roofBlock == 0)
110 {
111 return HitResult.Default;
112 }
113 return HitResult.Valid;
114 }
115 if (pos.cell.HasBlock || !pos.cell.isSeen)
116 {
117 if (pos.sourceBlock.tileType.Invisible && !ActionMode.Mine.IsActive)
118 {
119 return HitResult.Default;
120 }
121 if (mode == Mode.Ramp && (pos.cell.HasRamp || EClass._map.GetRampDir(pos.x, pos.z, EClass.sources.blocks.rows[ramp].tileType) == -1))
122 {
123 return HitResult.Default;
124 }
125 return HitResult.Valid;
126 }
127 if (!mined && !pos.HasObj && owner != null && !owner.IsAgent && pos.Equals(owner.pos) && pos.Installed == null && EClass._zone.CanDigUnderground)
128 {
129 return HitResult.Valid;
130 }
131 return HitResult.Default;
132 }
133
134 public override void OnProgressComplete()
135 {
136 string recipeID = pos.sourceBlock.RecipeID;
137 int hardness = pos.matBlock.hardness;
138 switch (mode)
139 {
140 case Mode.Default:
142 {
143 if (owner.IsPC)
144 {
146 }
147 EClass._map.MineBlock(pos, recoverBlock: false, owner);
148 }
149 else if (pos.Installed == null)
150 {
151 EClass._zone.AddThing("stairsDown_cave", pos.x, pos.z).Install();
152 return;
153 }
154 break;
155 case Mode.Ramp:
156 EClass._map.MineRamp(pos, (ramp == 3) ? pos.matBlock.ramp : ramp);
157 break;
158 }
159 if (!owner.IsAgent)
160 {
161 owner.elements.ModExp(220, 20 + hardness);
162 if (EClass.rnd(10) == 0)
163 {
165 }
166 if (EClass.rnd(10) == 0)
167 {
169 }
170 if (EClass._zone.IsCrime(owner, this))
171 {
173 }
174 if (EClass.rnd(2) == 0)
175 {
176 owner.stamina.Mod(-1);
177 }
178 }
179 if (owner != null && owner.IsPC)
180 {
182 }
183 mined = true;
184 }
185}
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:2109
ElementContainerCard elements
Definition: Card.cs:37
bool HasElement(int ele, int req=1)
Definition: Card.cs:5214
SoundSource PlaySound(string id, float v=1f, bool spatial=true)
Definition: Card.cs:5404
Thing Tool
Definition: Card.cs:2270
Point pos
Definition: Card.cs:55
Card Install()
Definition: Card.cs:3448
CardRenderer renderer
Definition: Card.cs:57
void Say(string lang, string ref1=null, string ref2=null)
Definition: Card.cs:6046
bool HasBlock
Definition: Cell.cs:643
byte _roofBlock
Definition: Cell.cs:50
string GetFloorName()
Definition: Cell.cs:1590
bool isSeen
Definition: Cell.cs:282
string GetBlockName()
Definition: Cell.cs:1585
bool HasRamp
Definition: Cell.cs:837
override bool IsPC
Definition: Chara.cs:597
Stats stamina
Definition: Chara.cs:955
override void LookAt(Card c)
Definition: Chara.cs:3219
BlockColors blockColors
static CursorInfo Mine
Definition: CursorSystem.cs:64
Definition: EClass.cs:5
static ColorProfile Colors
Definition: EClass.cs:38
static int rnd(int a)
Definition: EClass.cs:50
static Zone _zone
Definition: EClass.cs:20
static Map _map
Definition: EClass.cs:18
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, int a, bool chain=false)
void TrySmoothPick(Cell cell, Thing t, Chara c)
Definition: Map.cs:1791
void MineBlock(Point point, bool recoverBlock=false, Chara c=null, bool mineObj=true)
Definition: Map.cs:1655
int GetRampDir(int x, int z, TileType blockType=null)
Definition: Map.cs:2131
void MineRamp(Point point, int ramp, bool recoverBlock=false)
Definition: Map.cs:1722
int digs
Definition: Player.cs:82
RecipeManager recipes
Definition: Player.cs:898
void ModKarma(int a)
Definition: Player.cs:2289
Stats stats
Definition: Player.cs:817
Definition: Point.cs:9
Thing Installed
Definition: Point.cs:303
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:924
bool TryWitnessCrime(Chara criminal, Chara target=null, int radius=4, Func< Chara, bool > funcWitness=null)
Definition: Point.cs:845
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:1266
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:93
override void OnCreateProgress(Progress_Custom p)
Definition: TaskMine.cs:56
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:31
override HitResult GetHitResult()
Definition: TaskMine.cs:105
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:47
override void OnProgressComplete()
Definition: TaskMine.cs:134
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:266
Card AddThing(string id, int x, int z)
Definition: Zone.cs:1883
bool IsCrime(Chara c, Act act)
Definition: Zone.cs:3259