Elin Decompiled Documentation EA 23.320 Nyaightly Patch 1
Loading...
Searching...
No Matches
TaskHarvest.cs
Go to the documentation of this file.
1using UnityEngine;
2
4{
5 public bool wasReapSeed;
6
7 public bool wasCrime;
8
9 public bool harvestingCrop;
10
12
13 public bool IsObj => mode == HarvestType.Obj;
14
15 public bool IsReapSeed
16 {
17 get
18 {
19 if (IsObj && CanReapSeed && owner.Tool != null)
20 {
22 {
23 return owner.Tool.category.IsChildOf("scythe");
24 }
25 return true;
26 }
27 return false;
28 }
29 }
30
31 public override HarvestType harvestType => mode;
32
33 public override int RightHand => 1005;
34
35 public override int destDist => 1;
36
37 public override bool IsGrowth => pos.growth != null;
38
39 public override bool IsHostileAct
40 {
41 get
42 {
43 if (!wasCrime)
44 {
45 if (mode == HarvestType.Disassemble)
46 {
47 Thing thing = target;
48 if (thing != null && thing.isNPCProperty)
49 {
50 goto IL_007b;
51 }
52 }
53 if (mode == HarvestType.Obj)
54 {
55 if (!pos.sourceObj.ContainsTag("crime"))
56 {
57 if (pos.growth != null && pos.growth.IsCrimeToHarvest)
58 {
59 return !(EClass._zone is Zone_Harvest);
60 }
61 return false;
62 }
63 return true;
64 }
65 return false;
66 }
67 goto IL_007b;
68 IL_007b:
69 return true;
70 }
71 }
72
73 public override bool Loop
74 {
75 get
76 {
78 {
79 return CanProgress();
80 }
81 return false;
82 }
83 }
84
85 public override string GetIdRecipe(Point p)
86 {
87 if (!IsObj)
88 {
89 if (target == null)
90 {
91 return "";
92 }
93 return target.source.RecipeID;
94 }
95 return p.sourceObj.RecipeID;
96 }
97
98 public override bool CanManualCancel()
99 {
100 return true;
101 }
102
103 public override string GetBaseText(string str)
104 {
105 if (IsReapSeed)
106 {
107 return "TaskHarvestSeed".lang();
108 }
109 if (mode == HarvestType.Disassemble)
110 {
111 return (HaveHarvestThing() ? "TaskDisassemble" : "TaskDisassemble_destroy").lang();
112 }
113 if (!base.IsHarvest)
114 {
115 return base.GetBaseText(str);
116 }
117 return "actHarvest".lang();
118 }
119
120 public override string GetTextSmall(Card c)
121 {
122 if (IsObj)
123 {
124 return base.GetTextSmall(c);
125 }
126 if (target == null)
127 {
128 return "";
129 }
130 return target.Name;
131 }
132
133 public static TaskHarvest TryGetAct(Chara c, Point p)
134 {
135 Thing t = c.Tool;
136 bool hasTool = t != null && (t.HasElement(225) || t.HasElement(220));
137 bool hasDiggingTool = t != null && t.HasElement(230);
138 if (t != null)
139 {
140 if (t.trait is TraitToolBrush)
141 {
142 return null;
143 }
144 if (t.trait is TraitToolShears)
145 {
146 return null;
147 }
148 if (t.trait is TraitToolWaterCan)
149 {
150 return null;
151 }
152 if (t.trait is TraitToolMusic)
153 {
154 return null;
155 }
156 if (t.trait is TraitToolSickle && !p.cell.CanReapSeed())
157 {
158 return null;
159 }
160 if (t.trait is TraitAbility)
161 {
162 return null;
163 }
164 }
166 {
167 return null;
168 }
169 if (p.HasObj && IsValidTarget(p.sourceObj.reqHarvest))
170 {
171 return new TaskHarvest
172 {
173 pos = p.Copy()
174 };
175 }
176 if (p.HasThing)
177 {
178 for (int num = p.Things.Count - 1; num >= 0; num--)
179 {
180 t = p.Things[num];
181 if (t.trait.ReqHarvest != null && IsValidTarget(t.trait.ReqHarvest.Split(',')))
182 {
183 return new TaskHarvest
184 {
185 pos = p.Copy(),
186 mode = HarvestType.Thing,
187 target = t
188 };
189 }
190 }
191 for (int num2 = p.Things.Count - 1; num2 >= 0; num2--)
192 {
193 t = p.Things[num2];
195 {
196 return new TaskHarvest
197 {
198 pos = p.Copy(),
199 mode = HarvestType.Disassemble,
200 target = t
201 };
202 }
203 }
204 }
205 return null;
206 bool IsValidTarget(string[] raw)
207 {
208 if (raw[0] == "digging")
209 {
210 return hasDiggingTool;
211 }
212 bool num3 = p.cell.CanHarvest();
213 int num4 = (num3 ? 250 : EClass.sources.elements.alias[raw[0]].id);
214 bool flag = ((!num3 && num4 != 250) ? true : false);
215 if (!flag && t != null && !t.trait.CanHarvest)
216 {
217 return false;
218 }
219 return !flag || hasTool;
220 }
221 }
222
223 public override bool CanProgress()
224 {
225 if (tool != null && tool.trait is TraitToolSickle && !pos.cell.CanReapSeed())
226 {
227 return false;
228 }
229 if (IsObj)
230 {
232 if (base.CanProgress())
233 {
234 return pos.HasObj;
235 }
236 return false;
237 }
238 if (target == null || !target.ExistsOnMap)
239 {
240 return false;
241 }
242 return base.CanProgress();
243 }
244
245 public override HitResult GetHitResult()
246 {
247 if (harvestingCrop && !base.IsHarvest)
248 {
249 return HitResult.Default;
250 }
251 if (IsObj)
252 {
253 if (base.IsHarvest)
254 {
255 return HitResult.Valid;
256 }
257 if (pos.HasObj)
258 {
259 return HitResult.Valid;
260 }
262 {
263 return HitResult.Valid;
264 }
265 return HitResult.Default;
266 }
267 if (target == null || !target.ExistsOnMap)
268 {
269 return HitResult.Default;
270 }
271 return HitResult.Valid;
272 }
273
274 public override void OnCreateProgress(Progress_Custom p)
275 {
277 string i = (IsObj ? pos.cell.GetObjName() : target.Name);
278 SourceMaterial.Row mat = ((!IsObj) ? target.material : (pos.cell.isObjDyed ? pos.sourceObj.DefaultMaterial : pos.cell.matObj));
279 GrowSystem growth = pos.growth;
280 float num = (base.IsHarvest ? 0.5f : ((!IsObj) ? 1f : ((growth != null) ? growth.MtpProgress : 1f)));
281 int exp = 50;
284 p.textHint = i;
285 p.maxProgress = (int)((float)(maxProgress * 150) * num / 100f);
286 p.interval = 1;
287 p.onProgressBegin = delegate
288 {
289 if (TryGetAct(owner, pos) == null)
290 {
291 p.Cancel();
292 }
293 else if (base.IsTooHard)
294 {
295 owner.Say((mode == HarvestType.Disassemble) ? "tooHardToDisassemble" : "tooHardToHarvest", owner, i);
296 p.Cancel();
297 }
298 else if (mode == HarvestType.Disassemble)
299 {
300 owner.Say("disassemble_start", owner, owner.Tool, i);
301 }
302 else if (owner.Tool == null)
303 {
304 owner.Say("harvestHand_start", owner, i);
305 }
306 else
307 {
308 owner.Say("harvest_start", owner, owner.Tool, i);
309 }
310 };
311 p.onProgress = delegate(Progress_Custom _p)
312 {
315 if (_p.progress % 2 == 0)
316 {
317 if (IsObj)
318 {
319 if (base.IsHarvest && growth != null)
320 {
322 if (growth.AnimeProgress != 0)
323 {
324 pos.Animate(growth.AnimeProgress);
325 }
326 return;
327 }
328 pos.Animate(AnimeID.HitObj);
329 }
330 else
331 {
332 target.PlayAnime(AnimeID.HitObj);
333 }
335 mat.PlayHitEffect(pos);
336 mat.AddBlood(pos);
337 effectFrame += maxProgress / 4 + 1;
338 if (EClass._zone.IsCrime(owner, this))
339 {
341 }
342 }
343 };
344 p.onProgressComplete = delegate
345 {
346 string idRecipe = GetIdRecipe(pos);
348 int num2 = ((EClass.rnd(3) != 0) ? 1 : 0);
349 if (IsObj)
350 {
351 SourceObj.Row sourceObj = pos.sourceObj;
352 bool flag = false;
353 if (difficulty >= 0 && EClass.rnd(6) == 0)
354 {
355 flag = true;
356 }
357 if (difficulty >= 2 && EClass.rnd(3) == 0)
358 {
359 flag = true;
360 }
361 if (flag && growth != null)
362 {
363 growth.OnHitFail(owner);
364 }
365 if (EClass._zone is Zone_Harvest && !base.IsHarvest && pos.IsFarmField)
366 {
368 pos.SetObj();
369 }
370 else
371 {
372 if (base.IsHarvest && !IsReapSeed)
373 {
374 if (pos.growth.CanHarvest())
375 {
376 harvestingCrop = true;
377 }
379 }
380 else if (growth != null && !IsReapSeed)
381 {
383 }
384 else
385 {
386 EClass._map.MineObj(pos, this);
387 }
388 if (sourceObj.alias == "mound")
389 {
390 if (EClass.rnd(7) == 0)
391 {
392 EClass._zone.AddThing("plat", pos);
393 }
394 else if (EClass.rnd(3) == 0)
395 {
397 }
398 else
399 {
400 EClass._zone.AddThing("bone", pos);
401 }
402 }
403 }
404 }
405 else
406 {
407 exp = target.Num * 5;
408 num2 = target.Num / 3 + EClass.rnd(target.Num / 3 + 2);
410 {
411 HarvestThing();
412 }
413 }
414 if (EClass._zone.IsCrime(owner, this) && EClass.rnd(3) != 0)
415 {
417 }
418 if (backerObj != null)
419 {
420 if (backerObj != null && !backerObj.loot.IsEmpty() && !EClass.player.doneBackers.Contains(backerObj.id))
421 {
422 if (EClass.sources.cards.map.ContainsKey(backerObj.loot))
423 {
424 Thing thing = ThingGen.Create(backerObj.loot);
425 switch (backerObj.id)
426 {
427 case 490:
428 case 867:
429 case 5160:
430 thing.c_charges = 0;
431 thing.c_priceFix = -100;
432 break;
433 case 2531:
434 thing.MakeFoodFrom("cloud_electric");
435 break;
436 case 1027:
437 thing.ChangeMaterial(25);
438 thing.SetBlessedState(BlessedState.Doomed);
439 thing.ChangeRarity(Rarity.Legendary);
440 break;
441 case 4565:
442 EClass._zone.AddThing("rod", pos);
443 EClass._zone.AddThing("money", pos).SetNum(121);
444 break;
445 case 5367:
446 thing.Dye("obsidian");
447 break;
448 case 471:
449 case 1828:
450 case 5765:
451 thing.SetBlessedState(BlessedState.Cursed);
452 break;
453 case 5529:
454 thing.ChangeMaterial(25);
455 break;
456 case 1854:
457 thing.decay = 10000;
458 break;
459 case 4788:
460 thing.SetEncLv(1);
461 break;
462 case 4615:
463 thing.ChangeMaterial("meat");
464 break;
465 }
466 EClass._zone.AddCard(thing, pos);
467 }
468 else
469 {
470 Debug.LogError("exception: Backer Loot not valid:" + backerObj.id + "/" + backerObj.loot);
471 }
472 Debug.Log(backerObj.id + "/" + backerObj.Name + "/" + backerObj.loot);
473 }
474 EClass.player.doneBackers.Add(backerObj.id);
475 if (!backerObj.Text.IsEmpty() && EClass.core.config.backer.Show(backerObj))
476 {
477 bool num3 = backerObj.type == 1;
478 Msg.Say(num3 ? "backerRemain_read" : "backerTree_read");
479 Msg.Say(num3 ? "backerRemain" : "backerTree", backerObj.Text);
480 }
481 }
482 if (owner.IsPC)
483 {
485 }
487 if (wasReapSeed)
488 {
489 owner.ModExp(286, 20);
490 }
491 owner.stamina.Mod(-num2);
492 if (owner != null && owner.IsPC)
493 {
495 }
496 };
497 }
498
499 public string GetIdDismantled()
500 {
501 if (target.HasElement(707))
502 {
503 return "fish_slice";
504 }
505 string[] array = target.source.components[0].Split('|');
506 for (int i = 0; i < array.Length; i++)
507 {
508 array[i] = array[i].Split('/')[0];
509 }
510 string result = array[0];
511 if (array.Length > 1)
512 {
513 string category = target.material.category;
514 bool flag = category == "rock" || category == "ore" || category == "gem";
515 if (array[0] == "ingot" && array[1] == "log" && !flag)
516 {
517 result = array[1];
518 }
519 }
521 {
522 result = target.material.thing;
523 }
524 return result;
525 }
526
527 public bool ShouldGenerateDismantled(string dest)
528 {
530 {
531 return false;
532 }
533 if (target.trait is TraitGrave)
534 {
535 return false;
536 }
538 {
539 return false;
540 }
541 if (dest.Contains("$") || dest.Contains("#") || dest.Contains("@") || dest.Contains("-"))
542 {
543 return false;
544 }
545 if (dest == target.id || !EClass.sources.cards.map.ContainsKey(dest))
546 {
547 return false;
548 }
549 if (target.source.components.IsEmpty())
550 {
551 return false;
552 }
553 return true;
554 }
555
556 public bool HaveHarvestThing()
557 {
558 string idDismantled = GetIdDismantled();
559 return ShouldGenerateDismantled(idDismantled);
560 }
561
562 public void HarvestThing()
563 {
564 string text = GetIdDismantled();
565 if (target.id == "934" || target.id == "1002")
566 {
568 text = ThingGen.CreateFromCategory((EClass.rnd(2) == 0) ? "meal_cookie" : "meal_cake", 5 + EClass.rnd(EClass.rnd(50) + 1)).id;
569 Rand.SetSeed();
570 }
571 float num = target.Num;
572 float num2 = 1.0999999f;
573 if (target.trait.CraftNum > 1)
574 {
575 num2 = (float)target.trait.CraftNum * 1.35f;
576 }
577 switch (text)
578 {
579 case "log":
580 case "rock":
581 num2 = 2.1999998f;
582 break;
583 case "fish_slice":
584 num2 = 4.4f;
585 break;
586 }
587 string text2 = target.id;
588 if (text2 == "glass" || text2 == "brick")
589 {
590 num2 = 2.1999998f;
591 }
592 float num3 = num % num2;
593 num /= num2;
594 Debug.Log("num:" + num + " div:" + num3 + " chance:" + num2 + " check:" + (num2 - num3 + 1f));
595 if (num3 > 0f && EClass.rndf(num2 - num3 + 1f) < 1f)
596 {
597 num += 1f;
598 }
599 if (target.sockets != null)
600 {
602 }
603 int decay = target.decay;
604 int lV = target.LV;
605 target.Die(null, EClass.pc);
606 if ((int)num <= 0 || !ShouldGenerateDismantled(text))
607 {
608 return;
609 }
610 if (target.isCopy || target.HasElement(764))
611 {
612 text = "ash3";
613 }
615 {
616 fixedQuality = true
617 });
618 Thing thing = ThingGen.Create(text, 1, Mathf.Max(1, lV * 2 / 3));
619 if (thing == null)
620 {
621 return;
622 }
623 if (EClass._zone.IsUserZone && target.isNPCProperty && (thing.trait is TraitPotionLove || thing.HasTag(CTAG.rareResource)))
624 {
625 Msg.Say("spellbookCrumble", thing);
626 thing.Destroy();
627 return;
628 }
629 thing.SetNum((int)num);
631 thing.decay = decay;
632 if (thing.IsDecayed && thing.IsFood)
633 {
634 thing.elements.SetBase(73, -10);
635 }
637 }
638}
AnimeID
Definition: AnimeID.cs:2
BlessedState
Definition: BlessedState.cs:2
CTAG
Definition: CTAG.cs:2
HitResult
Definition: HitResult.cs:2
Rarity
Definition: Rarity.cs:2
virtual Status Cancel()
Definition: AIAct.cs:305
new Chara owner
Definition: AIAct.cs:14
int progress
Definition: AIProgress.cs:5
virtual bool CanReapSeed
void SetTarget(Chara c, Thing _tool=null)
static BuildMenu Instance
Definition: BuildMenu.cs:77
static void Set(CardBlueprint _bp=null)
virtual void NextFrame()
Definition: Card.cs:11
bool IsDecayed
Definition: Card.cs:2341
bool isMasked
Definition: Card.cs:593
ElementContainerCard elements
Definition: Card.cs:42
string id
Definition: Card.cs:36
bool isNPCProperty
Definition: Card.cs:557
virtual void Die(Element e=null, Card origin=null, AttackSource attackSource=AttackSource.None, Chara originalTarget=null)
Definition: Card.cs:5200
SourceMaterial.Row material
Definition: Card.cs:2103
SoundSource PlaySound(string id, float v=1f, bool spatial=true)
Definition: Card.cs:6562
Card ChangeMaterial(int idNew, bool ignoreFixedMaterial=false)
Definition: Card.cs:3194
bool isCopy
Definition: Card.cs:881
Thing Tool
Definition: Card.cs:2464
bool IsEquipmentOrRangedOrAmmo
Definition: Card.cs:2284
void CalculateFOV()
Definition: Card.cs:6895
string Name
Definition: Card.cs:2191
bool ExistsOnMap
Definition: Card.cs:2137
void EjectSockets()
Definition: Card.cs:3734
Thing SetNum(int a)
Definition: Card.cs:3653
int decay
Definition: Card.cs:221
bool IsFood
Definition: Card.cs:2229
virtual void SetBlessedState(BlessedState s)
Definition: Card.cs:4053
bool HasTag(CTAG tag)
Definition: Card.cs:2712
Point pos
Definition: Card.cs:60
int uid
Definition: Card.cs:125
void Dye(string idMat)
Definition: Card.cs:6395
Trait trait
Definition: Card.cs:54
void SetEncLv(int a)
Definition: Card.cs:4022
Card MakeFoodFrom(string _id)
Definition: Card.cs:5765
void Destroy()
Definition: Card.cs:5268
bool isHidden
Definition: Card.cs:533
void ModExp(string alias, int a)
Definition: Card.cs:2765
int Num
Definition: Card.cs:161
void PlayAnime(AnimeID id, bool force=false)
Definition: Card.cs:6581
SourceCategory.Row category
Definition: Card.cs:2101
virtual void ChangeRarity(Rarity q)
Definition: Card.cs:4078
List< int > sockets
Definition: Card.cs:48
CardRenderer renderer
Definition: Card.cs:64
bool HasElement(int ele, bool includeNagative=false)
Definition: Card.cs:6304
int LV
Definition: Card.cs:389
void Say(string lang, string ref1=null, string ref2=null)
Definition: Card.cs:7240
bool CanHarvest()
Definition: Cell.cs:1700
SourceMaterial.Row matObj
Definition: Cell.cs:1046
string GetObjName()
Definition: Cell.cs:1640
bool isObjDyed
Definition: Cell.cs:626
bool CanReapSeed()
Definition: Cell.cs:1705
Definition: Chara.cs:10
override bool IsPC
Definition: Chara.cs:630
Stats stamina
Definition: Chara.cs:1181
override void LookAt(Card c)
Definition: Chara.cs:3670
BackerContentConfig backer
Definition: CoreConfig.cs:621
bool godBuild
Definition: CoreDebug.cs:319
CoreConfig config
Definition: Core.cs:70
Definition: EClass.cs:6
static Game game
Definition: EClass.cs:9
static Core core
Definition: EClass.cs:7
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 float rndf(float a)
Definition: EClass.cs:102
static Player player
Definition: EClass.cs:13
static Chara pc
Definition: EClass.cs:15
static CoreDebug debug
Definition: EClass.cs:49
void ModExp(int ele, float a, bool chain=false)
Element SetBase(string alias, int v, int potential=0)
bool disableUsermapBenefit
GamePrincipal principal
Definition: Game.cs:225
bool IsSurvival
Definition: Game.cs:276
bool CanHarvest()
Definition: GrowSystem.cs:520
virtual AnimeID AnimeProgress
Definition: GrowSystem.cs:113
virtual void OnHitFail(Chara c)
Definition: GrowSystem.cs:538
virtual bool IsCrimeToHarvest
Definition: GrowSystem.cs:103
void OnProgressComplete(Chara c)
Definition: GrowSystem.cs:542
virtual string GetSoundProgress()
Definition: GrowSystem.cs:139
void Harvest(Chara c)
Definition: GrowSystem.cs:637
void DestroyObj(Point point)
Definition: Map.cs:1870
void TrySmoothPick(Cell cell, Thing t, Chara c)
Definition: Map.cs:1849
void MineObj(Point point, Task task=null, Chara c=null)
Definition: Map.cs:1885
SourceBacker.Row GetBackerObj(Point p)
Definition: Map.cs:1637
Definition: Msg.cs:5
static string Say(string idLang, string ref1, string ref2=null, string ref3=null, string ref4=null)
Definition: Msg.cs:58
RecipeManager recipes
Definition: Player.cs:1164
void ModKarma(int a)
Definition: Player.cs:2610
HashSet< int > doneBackers
Definition: Player.cs:1140
HotItem currentHotItem
Definition: Player.cs:1167
Definition: Point.cs:9
bool HasDecal
Definition: Point.cs:139
void SetObj(int id=0, int value=1, int dir=0)
Definition: Point.cs:934
Point Copy()
Definition: Point.cs:491
bool IsBlocked
Definition: Point.cs:363
List< Thing > Things
Definition: Point.cs:338
bool IsFarmField
Definition: Point.cs:127
SoundSource PlaySound(string id, bool synced=true, float v=1f, bool spatial=true)
Definition: Point.cs:1259
bool HasThing
Definition: Point.cs:251
SourceObj.Row sourceObj
Definition: Point.cs:69
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
Cell cell
Definition: Point.cs:51
void Animate(AnimeID id, bool animeBlock=false)
Definition: Point.cs:1308
GrowSystem growth
Definition: Point.cs:77
Definition: Rand.cs:4
static void SetSeed(int a=-1)
Definition: Rand.cs:44
void ComeUpWithRecipe(string idRecipe, int chanceForRandomRecipe=0)
Dictionary< string, CardRow > map
Definition: SourceCard.cs:9
SourceCard cards
SourceElement elements
string GetSoundImpact(RenderRow c=null)
void AddBlood(Point p, int a=1)
void PlayHitEffect(Point p, int emit=2)
virtual void Mod(int a)
Definition: Stats.cs:135
override bool CanProgress()
Definition: TaskHarvest.cs:223
bool HaveHarvestThing()
Definition: TaskHarvest.cs:556
override string GetTextSmall(Card c)
Definition: TaskHarvest.cs:120
string GetIdDismantled()
Definition: TaskHarvest.cs:499
bool wasReapSeed
Definition: TaskHarvest.cs:5
override string GetIdRecipe(Point p)
Definition: TaskHarvest.cs:85
HarvestType mode
Definition: TaskHarvest.cs:11
bool IsReapSeed
Definition: TaskHarvest.cs:16
override bool IsHostileAct
Definition: TaskHarvest.cs:40
bool harvestingCrop
Definition: TaskHarvest.cs:9
void HarvestThing()
Definition: TaskHarvest.cs:562
bool wasCrime
Definition: TaskHarvest.cs:7
override int destDist
Definition: TaskHarvest.cs:35
static TaskHarvest TryGetAct(Chara c, Point p)
Definition: TaskHarvest.cs:133
override bool IsGrowth
Definition: TaskHarvest.cs:37
override HitResult GetHitResult()
Definition: TaskHarvest.cs:245
override HarvestType harvestType
Definition: TaskHarvest.cs:31
override int RightHand
Definition: TaskHarvest.cs:33
override bool Loop
Definition: TaskHarvest.cs:74
bool ShouldGenerateDismantled(string dest)
Definition: TaskHarvest.cs:527
override string GetBaseText(string str)
Definition: TaskHarvest.cs:103
override void OnCreateProgress(Progress_Custom p)
Definition: TaskHarvest.cs:274
override bool CanManualCancel()
Definition: TaskHarvest.cs:98
Point pos
Definition: TaskPoint.cs:11
static Thing CreateFromCategory(string idCat, int lv=-1)
Definition: ThingGen.cs:75
static Thing Create(string id, int idMat=-1, int lv=-1)
Definition: ThingGen.cs:53
Definition: Thing.cs:8
SourceThing.Row source
Definition: Thing.cs:11
string alias
Definition: TileRow.cs:12
virtual bool CanHarvest
Definition: Trait.cs:92
virtual bool CanBeDisassembled
Definition: Trait.cs:318
virtual string ReqHarvest
Definition: Trait.cs:315
virtual int CraftNum
Definition: Trait.cs:135
Card AddThing(string id, int x, int z)
Definition: Zone.cs:2076
virtual bool IsUserZone
Definition: Zone.cs:275
bool IsCrime(Chara c, Act act)
Definition: Zone.cs:3714
Card AddCard(Card t, Point point)
Definition: Zone.cs:2086