Elin Modding Docs Doc
Loading...
Searching...
No Matches
Trait.cs
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Runtime.CompilerServices;
5using UnityEngine;
6
7// Token: 0x0200030D RID: 781
8public class Trait : EClass
9{
10 // Token: 0x170006C8 RID: 1736
11 // (get) Token: 0x0600186D RID: 6253 RVA: 0x0009E8FC File Offset: 0x0009CAFC
12 public string[] Params
13 {
14 get
15 {
16 if (!this.owner.c_editorTraitVal.IsEmpty())
17 {
18 return ("," + this.owner.c_editorTraitVal).Split(',', StringSplitOptions.None);
19 }
20 return this.owner.sourceCard.trait;
21 }
22 }
23
24 // Token: 0x0600186E RID: 6254 RVA: 0x0009E949 File Offset: 0x0009CB49
25 public string GetParam(int i, string def = null)
26 {
27 if (i < this.Params.Length)
28 {
29 return this.Params[i];
30 }
31 return def;
32 }
33
34 // Token: 0x0600186F RID: 6255 RVA: 0x0009E960 File Offset: 0x0009CB60
35 public int GetParamInt(int i, int def)
36 {
37 if (i < this.Params.Length)
38 {
39 return this.Params[i].ToInt();
40 }
41 return def;
42 }
43
44 // Token: 0x170006C9 RID: 1737
45 // (get) Token: 0x06001870 RID: 6256 RVA: 0x0009E97C File Offset: 0x0009CB7C
46 public virtual byte WeightMod
47 {
48 get
49 {
50 return 0;
51 }
52 }
53
54 // Token: 0x170006CA RID: 1738
55 // (get) Token: 0x06001871 RID: 6257 RVA: 0x0009E97F File Offset: 0x0009CB7F
56 public virtual string Name
57 {
58 get
59 {
60 return this.owner.NameSimple;
61 }
62 }
63
64 // Token: 0x06001872 RID: 6258 RVA: 0x0009E98C File Offset: 0x0009CB8C
65 public virtual bool Contains(RecipeSource r)
66 {
67 return r.idFactory == ((this.owner.sourceCard.origin != null) ? this.owner.sourceCard.origin.id : this.owner.id);
68 }
69
70 // Token: 0x170006CB RID: 1739
71 // (get) Token: 0x06001873 RID: 6259 RVA: 0x0009E9D8 File Offset: 0x0009CBD8
72 public virtual TileType tileType
73 {
74 get
75 {
76 return this.owner.TileType;
77 }
78 }
79
80 // Token: 0x170006CC RID: 1740
81 // (get) Token: 0x06001874 RID: 6260 RVA: 0x0009E9E5 File Offset: 0x0009CBE5
82 public virtual RefCardName RefCardName
83 {
84 get
85 {
86 return RefCardName.Default;
87 }
88 }
89
90 // Token: 0x170006CD RID: 1741
91 // (get) Token: 0x06001875 RID: 6261 RVA: 0x0009E9E8 File Offset: 0x0009CBE8
92 public virtual bool IsBlockPath
93 {
94 get
95 {
96 return this.tileType.IsBlockPass;
97 }
98 }
99
100 // Token: 0x170006CE RID: 1742
101 // (get) Token: 0x06001876 RID: 6262 RVA: 0x0009E9F5 File Offset: 0x0009CBF5
102 public virtual bool IsBlockSight
103 {
104 get
105 {
106 return this.tileType.IsBlockSight;
107 }
108 }
109
110 // Token: 0x170006CF RID: 1743
111 // (get) Token: 0x06001877 RID: 6263 RVA: 0x0009EA02 File Offset: 0x0009CC02
112 public virtual bool IsDoor
113 {
114 get
115 {
116 return false;
117 }
118 }
119
120 // Token: 0x170006D0 RID: 1744
121 // (get) Token: 0x06001878 RID: 6264 RVA: 0x0009EA05 File Offset: 0x0009CC05
122 public virtual bool IsOpenSight
123 {
124 get
125 {
126 return false;
127 }
128 }
129
130 // Token: 0x170006D1 RID: 1745
131 // (get) Token: 0x06001879 RID: 6265 RVA: 0x0009EA08 File Offset: 0x0009CC08
132 public virtual bool IsOpenPath
133 {
134 get
135 {
136 return false;
137 }
138 }
139
140 // Token: 0x170006D2 RID: 1746
141 // (get) Token: 0x0600187A RID: 6266 RVA: 0x0009EA0B File Offset: 0x0009CC0B
142 public virtual bool IsFloating
143 {
144 get
145 {
146 return false;
147 }
148 }
149
150 // Token: 0x170006D3 RID: 1747
151 // (get) Token: 0x0600187B RID: 6267 RVA: 0x0009EA0E File Offset: 0x0009CC0E
152 public virtual bool IsGround
153 {
154 get
155 {
156 return false;
157 }
158 }
159
160 // Token: 0x170006D4 RID: 1748
161 // (get) Token: 0x0600187C RID: 6268 RVA: 0x0009EA11 File Offset: 0x0009CC11
162 public virtual bool InvertHeldSprite
163 {
164 get
165 {
166 return false;
167 }
168 }
169
170 // Token: 0x170006D5 RID: 1749
171 // (get) Token: 0x0600187D RID: 6269 RVA: 0x0009EA14 File Offset: 0x0009CC14
172 public virtual bool IsChangeFloorHeight
173 {
174 get
175 {
176 return this.owner.Pref.Surface;
177 }
178 }
179
180 // Token: 0x170006D6 RID: 1750
181 // (get) Token: 0x0600187E RID: 6270 RVA: 0x0009EA26 File Offset: 0x0009CC26
182 public virtual bool ShouldRefreshTile
183 {
184 get
185 {
186 return this.IsBlockPath || this.IsOpenSight || this.IsBlockSight;
187 }
188 }
189
190 // Token: 0x170006D7 RID: 1751
191 // (get) Token: 0x0600187F RID: 6271 RVA: 0x0009EA40 File Offset: 0x0009CC40
192 public virtual bool ShouldTryRefreshRoom
193 {
194 get
195 {
196 return this.IsDoor;
197 }
198 }
199
200 // Token: 0x170006D8 RID: 1752
201 // (get) Token: 0x06001880 RID: 6272 RVA: 0x0009EA48 File Offset: 0x0009CC48
202 public virtual bool CanHarvest
203 {
204 get
205 {
206 return true;
207 }
208 }
209
210 // Token: 0x170006D9 RID: 1753
211 // (get) Token: 0x06001881 RID: 6273 RVA: 0x0009EA4B File Offset: 0x0009CC4B
212 public virtual int radius
213 {
214 get
215 {
216 return 0;
217 }
218 }
219
220 // Token: 0x170006DA RID: 1754
221 // (get) Token: 0x06001882 RID: 6274 RVA: 0x0009EA4E File Offset: 0x0009CC4E
222 public virtual bool CanUseRoomRadius
223 {
224 get
225 {
226 return true;
227 }
228 }
229
230 // Token: 0x170006DB RID: 1755
231 // (get) Token: 0x06001883 RID: 6275 RVA: 0x0009EA51 File Offset: 0x0009CC51
232 public virtual int GuidePriotiy
233 {
234 get
235 {
236 return 0;
237 }
238 }
239
240 // Token: 0x170006DC RID: 1756
241 // (get) Token: 0x06001884 RID: 6276 RVA: 0x0009EA54 File Offset: 0x0009CC54
242 public virtual int Electricity
243 {
244 get
245 {
246 if (!this.owner.isThing)
247 {
248 return 0;
249 }
250 return this.owner.Thing.source.electricity;
251 }
252 }
253
254 // Token: 0x170006DD RID: 1757
255 // (get) Token: 0x06001885 RID: 6277 RVA: 0x0009EA7A File Offset: 0x0009CC7A
256 public virtual bool IgnoreLastStackHeight
257 {
258 get
259 {
260 return false;
261 }
262 }
263
264 // Token: 0x170006DE RID: 1758
265 // (get) Token: 0x06001886 RID: 6278 RVA: 0x0009EA7D File Offset: 0x0009CC7D
266 public virtual int Decay
267 {
268 get
269 {
270 return this.owner.material.decay;
271 }
272 }
273
274 // Token: 0x170006DF RID: 1759
275 // (get) Token: 0x06001887 RID: 6279 RVA: 0x0009EA8F File Offset: 0x0009CC8F
276 public virtual int DecaySpeed
277 {
278 get
279 {
280 return 100;
281 }
282 }
283
284 // Token: 0x170006E0 RID: 1760
285 // (get) Token: 0x06001888 RID: 6280 RVA: 0x0009EA93 File Offset: 0x0009CC93
286 public virtual int DecaySpeedChild
287 {
288 get
289 {
290 return 100;
291 }
292 }
293
294 // Token: 0x170006E1 RID: 1761
295 // (get) Token: 0x06001889 RID: 6281 RVA: 0x0009EA97 File Offset: 0x0009CC97
296 public virtual bool IsFridge
297 {
298 get
299 {
300 return false;
301 }
302 }
303
304 // Token: 0x0600188A RID: 6282 RVA: 0x0009EA9A File Offset: 0x0009CC9A
305 public virtual int GetValue()
306 {
307 return this.owner.sourceCard.value;
308 }
309
310 // Token: 0x170006E2 RID: 1762
311 // (get) Token: 0x0600188B RID: 6283 RVA: 0x0009EAAC File Offset: 0x0009CCAC
312 public virtual int DefaultStock
313 {
314 get
315 {
316 return 1;
317 }
318 }
319
320 // Token: 0x170006E3 RID: 1763
321 // (get) Token: 0x0600188C RID: 6284 RVA: 0x0009EAAF File Offset: 0x0009CCAF
322 public virtual bool HoldAsDefaultInteraction
323 {
324 get
325 {
326 return false;
327 }
328 }
329
330 // Token: 0x170006E4 RID: 1764
331 // (get) Token: 0x0600188D RID: 6285 RVA: 0x0009EAB2 File Offset: 0x0009CCB2
332 public virtual int CraftNum
333 {
334 get
335 {
336 return 1;
337 }
338 }
339
340 // Token: 0x170006E5 RID: 1765
341 // (get) Token: 0x0600188E RID: 6286 RVA: 0x0009EAB5 File Offset: 0x0009CCB5
342 public virtual bool ShowOrbit
343 {
344 get
345 {
346 return false;
347 }
348 }
349
350 // Token: 0x170006E6 RID: 1766
351 // (get) Token: 0x0600188F RID: 6287 RVA: 0x0009EAB8 File Offset: 0x0009CCB8
352 public virtual bool HaveUpdate
353 {
354 get
355 {
356 return false;
357 }
358 }
359
360 // Token: 0x170006E7 RID: 1767
361 // (get) Token: 0x06001890 RID: 6288 RVA: 0x0009EABB File Offset: 0x0009CCBB
362 public virtual bool IsSpot
363 {
364 get
365 {
366 return this.radius > 0;
367 }
368 }
369
370 // Token: 0x170006E8 RID: 1768
371 // (get) Token: 0x06001891 RID: 6289 RVA: 0x0009EAC6 File Offset: 0x0009CCC6
372 public virtual bool IsFactory
373 {
374 get
375 {
376 return false;
377 }
378 }
379
380 // Token: 0x170006E9 RID: 1769
381 // (get) Token: 0x06001892 RID: 6290 RVA: 0x0009EAC9 File Offset: 0x0009CCC9
382 public virtual bool CanAutofire
383 {
384 get
385 {
386 return false;
387 }
388 }
389
390 // Token: 0x170006EA RID: 1770
391 // (get) Token: 0x06001893 RID: 6291 RVA: 0x0009EACC File Offset: 0x0009CCCC
392 public virtual bool CanName
393 {
394 get
395 {
396 return false;
397 }
398 }
399
400 // Token: 0x170006EB RID: 1771
401 // (get) Token: 0x06001894 RID: 6292 RVA: 0x0009EACF File Offset: 0x0009CCCF
402 public virtual bool CanPutAway
403 {
404 get
405 {
406 return true;
407 }
408 }
409
410 // Token: 0x170006EC RID: 1772
411 // (get) Token: 0x06001895 RID: 6293 RVA: 0x0009EAD2 File Offset: 0x0009CCD2
412 public virtual bool CanStack
413 {
414 get
415 {
416 return this.owner.category.maxStack > 1;
417 }
418 }
419
420 // Token: 0x170006ED RID: 1773
421 // (get) Token: 0x06001896 RID: 6294 RVA: 0x0009EAE7 File Offset: 0x0009CCE7
422 public virtual bool CanCopyInBlueprint
423 {
424 get
425 {
426 return this.owner.rarity <= Rarity.Superior && this.owner.sourceCard.value > 0 && this.CanBeDestroyed;
427 }
428 }
429
430 // Token: 0x06001897 RID: 6295 RVA: 0x0009EB12 File Offset: 0x0009CD12
431 public virtual bool CanStackTo(Thing to)
432 {
433 return this.CanStack;
434 }
435
436 // Token: 0x170006EE RID: 1774
437 // (get) Token: 0x06001898 RID: 6296 RVA: 0x0009EB1A File Offset: 0x0009CD1A
438 public virtual bool CanBeAttacked
439 {
440 get
441 {
442 return false;
443 }
444 }
445
446 // Token: 0x170006EF RID: 1775
447 // (get) Token: 0x06001899 RID: 6297 RVA: 0x0009EB1D File Offset: 0x0009CD1D
448 public virtual bool CanExtendBuild
449 {
450 get
451 {
452 return false;
453 }
454 }
455
456 // Token: 0x170006F0 RID: 1776
457 // (get) Token: 0x0600189A RID: 6298 RVA: 0x0009EB20 File Offset: 0x0009CD20
458 public virtual string langNote
459 {
460 get
461 {
462 return "";
463 }
464 }
465
466 // Token: 0x170006F1 RID: 1777
467 // (get) Token: 0x0600189B RID: 6299 RVA: 0x0009EB27 File Offset: 0x0009CD27
468 public virtual string IDInvStyle
469 {
470 get
471 {
472 return "default";
473 }
474 }
475
476 // Token: 0x170006F2 RID: 1778
477 // (get) Token: 0x0600189C RID: 6300 RVA: 0x0009EB2E File Offset: 0x0009CD2E
478 public virtual string IDActorEx
479 {
480 get
481 {
482 return this.owner.Thing.source.idActorEx;
483 }
484 }
485
486 // Token: 0x0600189D RID: 6301 RVA: 0x0009EB45 File Offset: 0x0009CD45
487 public virtual string GetHoverText()
488 {
489 return null;
490 }
491
492 // Token: 0x170006F3 RID: 1779
493 // (get) Token: 0x0600189E RID: 6302 RVA: 0x0009EB48 File Offset: 0x0009CD48
494 public virtual bool MaskOnBuild
495 {
496 get
497 {
498 return false;
499 }
500 }
501
502 // Token: 0x170006F4 RID: 1780
503 // (get) Token: 0x0600189F RID: 6303 RVA: 0x0009EB4B File Offset: 0x0009CD4B
504 public virtual bool ShowContextOnPick
505 {
506 get
507 {
508 return false;
509 }
510 }
511
512 // Token: 0x170006F5 RID: 1781
513 // (get) Token: 0x060018A0 RID: 6304 RVA: 0x0009EB4E File Offset: 0x0009CD4E
514 public virtual bool IsThrowMainAction
515 {
516 get
517 {
518 return this.owner.HasTag(CTAG.throwWeapon) || this.owner.IsMeleeWeapon;
519 }
520 }
521
522 // Token: 0x170006F6 RID: 1782
523 // (get) Token: 0x060018A1 RID: 6305 RVA: 0x0009EB6C File Offset: 0x0009CD6C
524 public virtual bool LevelAsQuality
525 {
526 get
527 {
528 return false;
529 }
530 }
531
532 // Token: 0x170006F7 RID: 1783
533 // (get) Token: 0x060018A2 RID: 6306 RVA: 0x0009EB6F File Offset: 0x0009CD6F
534 public virtual bool UseDummyTile
535 {
536 get
537 {
538 return true;
539 }
540 }
541
542 // Token: 0x170006F8 RID: 1784
543 // (get) Token: 0x060018A3 RID: 6307 RVA: 0x0009EB72 File Offset: 0x0009CD72
544 public virtual bool RequireFullStackCheck
545 {
546 get
547 {
548 return false;
549 }
550 }
551
552 // Token: 0x060018A4 RID: 6308 RVA: 0x0009EB75 File Offset: 0x0009CD75
553 public virtual Action GetHealAction(Chara c)
554 {
555 return null;
556 }
557
558 // Token: 0x170006F9 RID: 1785
559 // (get) Token: 0x060018A5 RID: 6309 RVA: 0x0009EB78 File Offset: 0x0009CD78
560 public virtual InvGridSize InvGridSize
561 {
562 get
563 {
564 if (!this.owner.IsPC)
565 {
566 return InvGridSize.Default;
567 }
568 return InvGridSize.Backpack;
569 }
570 }
571
572 // Token: 0x170006FA RID: 1786
573 // (get) Token: 0x060018A6 RID: 6310 RVA: 0x0009EB8A File Offset: 0x0009CD8A
574 public virtual bool IsContainer
575 {
576 get
577 {
578 return false;
579 }
580 }
581
582 // Token: 0x170006FB RID: 1787
583 // (get) Token: 0x060018A7 RID: 6311 RVA: 0x0009EB8D File Offset: 0x0009CD8D
584 public virtual bool CanOpenContainer
585 {
586 get
587 {
588 return this.IsContainer && !this.owner.isNPCProperty;
589 }
590 }
591
592 // Token: 0x170006FC RID: 1788
593 // (get) Token: 0x060018A8 RID: 6312 RVA: 0x0009EBA7 File Offset: 0x0009CDA7
594 public virtual bool IsSpecialContainer
595 {
596 get
597 {
598 return false;
599 }
600 }
601
602 // Token: 0x170006FD RID: 1789
603 // (get) Token: 0x060018A9 RID: 6313 RVA: 0x0009EBAA File Offset: 0x0009CDAA
604 public virtual ContainerType ContainerType
605 {
606 get
607 {
608 return ContainerType.Default;
609 }
610 }
611
612 // Token: 0x170006FE RID: 1790
613 // (get) Token: 0x060018AA RID: 6314 RVA: 0x0009EBAD File Offset: 0x0009CDAD
614 public virtual ThrowType ThrowType
615 {
616 get
617 {
618 return ThrowType.Default;
619 }
620 }
621
622 // Token: 0x170006FF RID: 1791
623 // (get) Token: 0x060018AB RID: 6315 RVA: 0x0009EBB0 File Offset: 0x0009CDB0
624 public virtual EffectDead EffectDead
625 {
626 get
627 {
628 return EffectDead.Default;
629 }
630 }
631
632 // Token: 0x17000700 RID: 1792
633 // (get) Token: 0x060018AC RID: 6316 RVA: 0x0009EBB3 File Offset: 0x0009CDB3
634 public virtual bool IsHomeItem
635 {
636 get
637 {
638 return false;
639 }
640 }
641
642 // Token: 0x17000701 RID: 1793
643 // (get) Token: 0x060018AD RID: 6317 RVA: 0x0009EBB6 File Offset: 0x0009CDB6
644 public virtual bool IsAltar
645 {
646 get
647 {
648 return false;
649 }
650 }
651
652 // Token: 0x17000702 RID: 1794
653 // (get) Token: 0x060018AE RID: 6318 RVA: 0x0009EBB9 File Offset: 0x0009CDB9
654 public virtual bool IsRestSpot
655 {
656 get
657 {
658 return false;
659 }
660 }
661
662 // Token: 0x17000703 RID: 1795
663 // (get) Token: 0x060018AF RID: 6319 RVA: 0x0009EBBC File Offset: 0x0009CDBC
664 public virtual bool CanBeMasked
665 {
666 get
667 {
668 return false;
669 }
670 }
671
672 // Token: 0x17000704 RID: 1796
673 // (get) Token: 0x060018B0 RID: 6320 RVA: 0x0009EBBF File Offset: 0x0009CDBF
674 public virtual bool IsBlendBase
675 {
676 get
677 {
678 return false;
679 }
680 }
681
682 // Token: 0x060018B1 RID: 6321 RVA: 0x0009EBC2 File Offset: 0x0009CDC2
683 public virtual bool CanBlend(Thing t)
684 {
685 return false;
686 }
687
688 // Token: 0x060018B2 RID: 6322 RVA: 0x0009EBC5 File Offset: 0x0009CDC5
689 public virtual void OnBlend(Thing t, Chara c)
690 {
691 }
692
693 // Token: 0x17000705 RID: 1797
694 // (get) Token: 0x060018B3 RID: 6323 RVA: 0x0009EBC7 File Offset: 0x0009CDC7
695 public virtual bool CanBeOnlyBuiltInHome
696 {
697 get
698 {
699 return false;
700 }
701 }
702
703 // Token: 0x17000706 RID: 1798
704 // (get) Token: 0x060018B4 RID: 6324 RVA: 0x0009EBCA File Offset: 0x0009CDCA
705 public virtual bool CanBuildInTown
706 {
707 get
708 {
709 return !this.owner.TileType.IsBlockPass && !this.owner.TileType.IsBlockSight;
710 }
711 }
712
713 // Token: 0x17000707 RID: 1799
714 // (get) Token: 0x060018B5 RID: 6325 RVA: 0x0009EBF3 File Offset: 0x0009CDF3
715 public virtual bool CanBeHeld
716 {
717 get
718 {
719 return this.ReqHarvest == null;
720 }
721 }
722
723 // Token: 0x17000708 RID: 1800
724 // (get) Token: 0x060018B6 RID: 6326 RVA: 0x0009EBFE File Offset: 0x0009CDFE
725 public virtual bool CanBeStolen
726 {
727 get
728 {
729 return !this.CanOnlyCarry && this.CanBeHeld;
730 }
731 }
732
733 // Token: 0x17000709 RID: 1801
734 // (get) Token: 0x060018B7 RID: 6327 RVA: 0x0009EC10 File Offset: 0x0009CE10
735 public virtual bool CanOnlyCarry
736 {
737 get
738 {
739 return false;
740 }
741 }
742
743 // Token: 0x1700070A RID: 1802
744 // (get) Token: 0x060018B8 RID: 6328 RVA: 0x0009EC13 File Offset: 0x0009CE13
745 public virtual bool CanBeDestroyed
746 {
747 get
748 {
749 return true;
750 }
751 }
752
753 // Token: 0x1700070B RID: 1803
754 // (get) Token: 0x060018B9 RID: 6329 RVA: 0x0009EC16 File Offset: 0x0009CE16
755 public virtual bool CanBeHallucinated
756 {
757 get
758 {
759 return true;
760 }
761 }
762
763 // Token: 0x1700070C RID: 1804
764 // (get) Token: 0x060018BA RID: 6330 RVA: 0x0009EC19 File Offset: 0x0009CE19
765 public virtual bool CanSearchContents
766 {
767 get
768 {
769 return true;
770 }
771 }
772
773 // Token: 0x1700070D RID: 1805
774 // (get) Token: 0x060018BB RID: 6331 RVA: 0x0009EC1C File Offset: 0x0009CE1C
775 public virtual bool CanBeDropped
776 {
777 get
778 {
779 return true;
780 }
781 }
782
783 // Token: 0x1700070E RID: 1806
784 // (get) Token: 0x060018BC RID: 6332 RVA: 0x0009EC1F File Offset: 0x0009CE1F
785 public virtual string ReqHarvest
786 {
787 get
788 {
789 return null;
790 }
791 }
792
793 // Token: 0x1700070F RID: 1807
794 // (get) Token: 0x060018BD RID: 6333 RVA: 0x0009EC22 File Offset: 0x0009CE22
795 public virtual bool CanBeDisassembled
796 {
797 get
798 {
799 return this.CanBeDestroyed && !(this is TraitTrap) && this.owner.things.Count == 0 && this.owner.rarity < Rarity.Artifact;
800 }
801 }
802
803 // Token: 0x17000710 RID: 1808
804 // (get) Token: 0x060018BE RID: 6334 RVA: 0x0009EC56 File Offset: 0x0009CE56
805 public virtual bool CanBeShipped
806 {
807 get
808 {
809 return !this.owner.IsImportant && !this.owner.IsUnique;
810 }
811 }
812
813 // Token: 0x17000711 RID: 1809
814 // (get) Token: 0x060018BF RID: 6335 RVA: 0x0009EC75 File Offset: 0x0009CE75
815 public virtual bool HasCharges
816 {
817 get
818 {
819 return false;
820 }
821 }
822
823 // Token: 0x17000712 RID: 1810
824 // (get) Token: 0x060018C0 RID: 6336 RVA: 0x0009EC78 File Offset: 0x0009CE78
825 public virtual bool ShowCharges
826 {
827 get
828 {
829 return this.HasCharges;
830 }
831 }
832
833 // Token: 0x17000713 RID: 1811
834 // (get) Token: 0x060018C1 RID: 6337 RVA: 0x0009EC80 File Offset: 0x0009CE80
835 public virtual bool ShowChildrenNumber
836 {
837 get
838 {
839 return this.IsContainer;
840 }
841 }
842
843 // Token: 0x060018C2 RID: 6338 RVA: 0x0009EC88 File Offset: 0x0009CE88
844 public virtual int GetActDuration(Chara c)
845 {
846 return 0;
847 }
848
849 // Token: 0x17000714 RID: 1812
850 // (get) Token: 0x060018C3 RID: 6339 RVA: 0x0009EC8B File Offset: 0x0009CE8B
851 public virtual bool ShowAsTool
852 {
853 get
854 {
855 return false;
856 }
857 }
858
859 // Token: 0x17000715 RID: 1813
860 // (get) Token: 0x060018C4 RID: 6340 RVA: 0x0009EC8E File Offset: 0x0009CE8E
861 public virtual bool CanBeHeldAsFurniture
862 {
863 get
864 {
865 return this is TraitTool || this.IsThrowMainAction;
866 }
867 }
868
869 // Token: 0x17000716 RID: 1814
870 // (get) Token: 0x060018C5 RID: 6341 RVA: 0x0009ECA0 File Offset: 0x0009CEA0
871 public virtual bool HideInAdv
872 {
873 get
874 {
875 return false;
876 }
877 }
878
879 // Token: 0x17000717 RID: 1815
880 // (get) Token: 0x060018C6 RID: 6342 RVA: 0x0009ECA3 File Offset: 0x0009CEA3
881 public virtual bool NoHeldDir
882 {
883 get
884 {
885 return false;
886 }
887 }
888
889 // Token: 0x17000718 RID: 1816
890 // (get) Token: 0x060018C7 RID: 6343 RVA: 0x0009ECA6 File Offset: 0x0009CEA6
891 public virtual bool AlwaysHideOnLowWall
892 {
893 get
894 {
895 return false;
896 }
897 }
898
899 // Token: 0x060018C8 RID: 6344 RVA: 0x0009ECA9 File Offset: 0x0009CEA9
900 public virtual SourceElement.Row GetRefElement()
901 {
902 return null;
903 }
904
905 // Token: 0x060018C9 RID: 6345 RVA: 0x0009ECAC File Offset: 0x0009CEAC
906 public virtual Sprite GetRefSprite()
907 {
908 return null;
909 }
910
911 // Token: 0x17000719 RID: 1817
912 // (get) Token: 0x060018CA RID: 6346 RVA: 0x0009ECAF File Offset: 0x0009CEAF
913 public bool ExistsOnMap
914 {
915 get
916 {
917 return this.owner.ExistsOnMap;
918 }
919 }
920
921 // Token: 0x1700071A RID: 1818
922 // (get) Token: 0x060018CB RID: 6347 RVA: 0x0009ECBC File Offset: 0x0009CEBC
923 public virtual bool RenderExtra
924 {
925 get
926 {
927 return false;
928 }
929 }
930
931 // Token: 0x1700071B RID: 1819
932 // (get) Token: 0x060018CC RID: 6348 RVA: 0x0009ECBF File Offset: 0x0009CEBF
933 public virtual float DropChance
934 {
935 get
936 {
937 return 0f;
938 }
939 }
940
941 // Token: 0x1700071C RID: 1820
942 // (get) Token: 0x060018CD RID: 6349 RVA: 0x0009ECC6 File Offset: 0x0009CEC6
943 public virtual string IdNoRestock
944 {
945 get
946 {
947 return this.owner.id;
948 }
949 }
950
951 // Token: 0x060018CE RID: 6350 RVA: 0x0009ECD3 File Offset: 0x0009CED3
952 public virtual void OnRenderExtra(RenderParam p)
953 {
954 }
955
956 // Token: 0x060018CF RID: 6351 RVA: 0x0009ECD5 File Offset: 0x0009CED5
957 public virtual Emo2 GetHeldEmo(Chara c)
958 {
959 return Emo2.none;
960 }
961
962 // Token: 0x060018D0 RID: 6352 RVA: 0x0009ECD8 File Offset: 0x0009CED8
963 public virtual void SetOwner(Card _owner)
964 {
965 this.owner = _owner;
966 this.OnSetOwner();
967 }
968
969 // Token: 0x060018D1 RID: 6353 RVA: 0x0009ECE7 File Offset: 0x0009CEE7
970 public virtual bool IdleUse(Chara c, int dist)
971 {
972 return false;
973 }
974
975 // Token: 0x1700071D RID: 1821
976 // (get) Token: 0x060018D2 RID: 6354 RVA: 0x0009ECEA File Offset: 0x0009CEEA
977 public virtual int IdleUseChance
978 {
979 get
980 {
981 return 3;
982 }
983 }
984
985 // Token: 0x060018D3 RID: 6355 RVA: 0x0009ECED File Offset: 0x0009CEED
986 public virtual void OnSetOwner()
987 {
988 }
989
990 // Token: 0x060018D4 RID: 6356 RVA: 0x0009ECEF File Offset: 0x0009CEEF
991 public virtual void OnImportMap()
992 {
993 }
994
995 // Token: 0x060018D5 RID: 6357 RVA: 0x0009ECF1 File Offset: 0x0009CEF1
996 public virtual void SetParams(params string[] s)
997 {
998 }
999
1000 // Token: 0x060018D6 RID: 6358 RVA: 0x0009ECF3 File Offset: 0x0009CEF3
1001 public virtual void OnCrafted(Recipe recipe)
1002 {
1003 }
1004
1005 // Token: 0x060018D7 RID: 6359 RVA: 0x0009ECF5 File Offset: 0x0009CEF5
1006 public virtual void OnCreate(int lv)
1007 {
1008 }
1009
1010 // Token: 0x060018D8 RID: 6360 RVA: 0x0009ECF7 File Offset: 0x0009CEF7
1011 public virtual void OnChangePlaceState(PlaceState state)
1012 {
1013 }
1014
1015 // Token: 0x060018D9 RID: 6361 RVA: 0x0009ECF9 File Offset: 0x0009CEF9
1016 public virtual void OnAddedToZone()
1017 {
1018 }
1019
1020 // Token: 0x060018DA RID: 6362 RVA: 0x0009ECFB File Offset: 0x0009CEFB
1021 public virtual void OnRemovedFromZone()
1022 {
1023 }
1024
1025 // Token: 0x060018DB RID: 6363 RVA: 0x0009ECFD File Offset: 0x0009CEFD
1026 public virtual void OnSimulateHour(VirtualDate date)
1027 {
1028 }
1029
1030 // Token: 0x060018DC RID: 6364 RVA: 0x0009ECFF File Offset: 0x0009CEFF
1031 public virtual string GetName()
1032 {
1033 return this.owner.sourceCard.GetText("name", false);
1034 }
1035
1036 // Token: 0x060018DD RID: 6365 RVA: 0x0009ED17 File Offset: 0x0009CF17
1037 public virtual void SetName(ref string s)
1038 {
1039 }
1040
1041 // Token: 0x060018DE RID: 6366 RVA: 0x0009ED1C File Offset: 0x0009CF1C
1042 public unsafe virtual void OnRenderTile(Point point, HitResult result, int dir)
1043 {
1044 if (this.radius == 0)
1045 {
1046 return;
1047 }
1048 Vector3 vector = *point.Position();
1049 vector.z += EClass.setting.render.thingZ;
1050 foreach (Point point2 in this.ListPoints(point, true))
1051 {
1052 Vector3 vector2 = *point2.Position();
1053 EClass.screen.guide.passGuideFloor.Add(vector2.x, vector2.y, vector2.z, 10f, 0.3f);
1054 }
1055 }
1056
1057 // Token: 0x060018DF RID: 6367 RVA: 0x0009EDD4 File Offset: 0x0009CFD4
1058 public virtual int CompareTo(Card b)
1059 {
1060 return 0;
1061 }
1062
1063 // Token: 0x060018E0 RID: 6368 RVA: 0x0009EDD7 File Offset: 0x0009CFD7
1064 public virtual bool CanBuiltAt(Point p)
1065 {
1066 return true;
1067 }
1068
1069 // Token: 0x060018E1 RID: 6369 RVA: 0x0009EDDA File Offset: 0x0009CFDA
1070 public virtual void Update()
1071 {
1072 }
1073
1074 // Token: 0x060018E2 RID: 6370 RVA: 0x0009EDDC File Offset: 0x0009CFDC
1075 public Point GetPoint()
1076 {
1077 return this.owner.pos;
1078 }
1079
1080 // Token: 0x060018E3 RID: 6371 RVA: 0x0009EDEC File Offset: 0x0009CFEC
1081 public Point GetRandomPoint(Func<Point, bool> func = null)
1082 {
1083 if (this.radius == 0)
1084 {
1085 return this.owner.pos;
1086 }
1087 List<Point> list = this.ListPoints(null, true);
1088 for (int i = 0; i < 50; i++)
1089 {
1090 Point point = list.RandomItem<Point>();
1091 if (point.IsValid && (func == null || func(point)))
1092 {
1093 return point;
1094 }
1095 }
1096 return list[0];
1097 }
1098
1099 // Token: 0x060018E4 RID: 6372 RVA: 0x0009EE48 File Offset: 0x0009D048
1100 public virtual List<Point> ListPoints(Point center = null, bool onlyPassable = true)
1101 {
1102 Trait.listRadiusPoints.Clear();
1103 if (center == null)
1104 {
1105 center = this.owner.pos;
1106 }
1107 if (this.radius == 0)
1108 {
1109 Trait.listRadiusPoints.Add(center.Copy());
1110 return Trait.listRadiusPoints;
1111 }
1112 Room room = center.cell.room;
1113 if (room != null && this.CanUseRoomRadius)
1114 {
1115 using (List<Point>.Enumerator enumerator = room.points.GetEnumerator())
1116 {
1117 while (enumerator.MoveNext())
1118 {
1119 Point point = enumerator.Current;
1120 if ((!onlyPassable || !point.cell.blocked) && !point.cell.HasBlock && point.cell.HasFloor)
1121 {
1122 Trait.listRadiusPoints.Add(point.Copy());
1123 }
1124 }
1125 goto IL_119;
1126 }
1127 }
1128 EClass._map.ForeachSphere(center.x, center.z, (float)(this.radius + 1), delegate(Point p)
1129 {
1130 if (onlyPassable && p.cell.blocked)
1131 {
1132 return;
1133 }
1134 if (!p.cell.HasBlock && p.cell.HasFloor && (!onlyPassable || Los.IsVisible(center, p, null)))
1135 {
1136 Trait.listRadiusPoints.Add(p.Copy());
1137 }
1138 });
1139 IL_119:
1140 if (Trait.listRadiusPoints.Count == 0)
1141 {
1142 Trait.listRadiusPoints.Add(center.Copy());
1143 }
1144 return Trait.listRadiusPoints;
1145 }
1146
1147 // Token: 0x060018E5 RID: 6373 RVA: 0x0009EFA4 File Offset: 0x0009D1A4
1148 public virtual Recipe GetRecipe()
1149 {
1150 return Recipe.Create(this.owner.Thing);
1151 }
1152
1153 // Token: 0x060018E6 RID: 6374 RVA: 0x0009EFB6 File Offset: 0x0009D1B6
1154 public virtual Recipe GetBuildModeRecipe()
1155 {
1156 return Recipe.Create(this.owner.Thing);
1157 }
1158
1159 // Token: 0x1700071E RID: 1822
1160 // (get) Token: 0x060018E7 RID: 6375 RVA: 0x0009EFC8 File Offset: 0x0009D1C8
1161 public virtual string RecipeCat
1162 {
1163 get
1164 {
1165 return this.owner.sourceCard.RecipeCat;
1166 }
1167 }
1168
1169 // Token: 0x060018E8 RID: 6376 RVA: 0x0009EFDA File Offset: 0x0009D1DA
1170 public virtual bool CanCook(Card c)
1171 {
1172 return c != null && this.ExistsOnMap && c.trait is TraitFood;
1173 }
1174
1175 // Token: 0x060018E9 RID: 6377 RVA: 0x0009EFF8 File Offset: 0x0009D1F8
1176 public void CookProgress()
1177 {
1178 if (!this.ExistsOnMap)
1179 {
1180 return;
1181 }
1182 foreach (Card card in this.owner.pos.ListCards(false))
1183 {
1184 this.owner.PlaySound("cook", 1f, true);
1185 card.renderer.PlayAnime(AnimeID.Jump, default(Vector3), false);
1186 }
1187 }
1188
1189 // Token: 0x060018EA RID: 6378 RVA: 0x0009F084 File Offset: 0x0009D284
1190 public virtual bool CanOffer(Card tg)
1191 {
1192 return tg != null && !tg.isChara && !tg.trait.CanOnlyCarry && tg.rarity != Rarity.Artifact;
1193 }
1194
1195 // Token: 0x060018EB RID: 6379 RVA: 0x0009F0AC File Offset: 0x0009D2AC
1196 public void OfferProcess(Chara cc)
1197 {
1198 if (!this.ExistsOnMap)
1199 {
1200 return;
1201 }
1202 SourceReligion.Row row = EClass.sources.religions.map.TryGetValue(this.owner.c_idDeity, EClass.sources.religions.map["eyth"]);
1203 string @ref = row.GetTextArray("name2")[1];
1204 string ref2 = row.GetTextArray("name2")[0];
1205 if (EClass.rnd(3) == 0)
1206 {
1207 cc.Talk("offer", @ref, ref2, false);
1208 }
1209 foreach (Card card in this.owner.pos.ListCards(false))
1210 {
1211 if (this.CanOffer(card))
1212 {
1213 card.renderer.PlayAnime(AnimeID.Shiver, default(Vector3), false);
1214 }
1215 }
1216 }
1217
1218 // Token: 0x060018EC RID: 6380 RVA: 0x0009F198 File Offset: 0x0009D398
1219 public void Offer(Chara cc)
1220 {
1221 if (!this.ExistsOnMap)
1222 {
1223 return;
1224 }
1225 foreach (Card card in this.owner.pos.ListCards(false))
1226 {
1227 if (this.CanOffer(card))
1228 {
1229 card.Destroy();
1230 cc.depression.Mod(100);
1231 this.owner.PlaySound("offering", 1f, true);
1232 }
1233 }
1234 }
1235
1236 // Token: 0x060018ED RID: 6381 RVA: 0x0009F22C File Offset: 0x0009D42C
1237 public virtual bool TryProgress(AIProgress p)
1238 {
1239 return true;
1240 }
1241
1242 // Token: 0x060018EE RID: 6382 RVA: 0x0009F230 File Offset: 0x0009D430
1243 public virtual LockOpenState TryOpenLock(Chara cc, bool msgFail = true)
1244 {
1245 Thing thing = cc.things.Find<TraitLockpick>();
1246 int num = (thing == null) ? (cc.Evalue(280) / 2 + 2) : (cc.Evalue(280) + 10);
1247 int num2 = this.owner.c_lockLv;
1248 bool flag = this is TraitChestPractice;
1249 if (flag)
1250 {
1251 num2 = num / 4 * 3 - 1;
1252 }
1253 if (num <= num2 && cc.IsPC)
1254 {
1255 cc.PlaySound("lock", 1f, true);
1256 cc.Say("openLockFail2", null, null);
1257 this.owner.PlayAnime(AnimeID.Shiver, false);
1258 return LockOpenState.NotEnoughSkill;
1259 }
1260 if (thing != null && !flag)
1261 {
1262 thing.ModCharge(-1, true);
1263 }
1264 if (EClass.rnd(num + 6) > num2 + 5 || (!cc.IsPC && EClass.rnd(20) == 0) || EClass.rnd(200) == 0)
1265 {
1266 cc.PlaySound("lock_open", 1f, true);
1267 cc.Say("lockpick_success", cc, this.owner, null, null);
1268 int num3 = 100 + num2 * 10;
1269 if (this.owner.c_lockedHard)
1270 {
1271 num3 *= 10;
1272 }
1273 cc.ModExp(280, num3);
1274 this.owner.c_lockLv = 0;
1275 if (this.owner.c_lockedHard)
1276 {
1277 this.owner.c_lockedHard = false;
1278 this.owner.c_priceAdd = 0;
1279 }
1280 if (cc.IsPC && this.owner.isLostProperty)
1281 {
1282 EClass.player.ModKarma(-8);
1283 }
1284 this.owner.isLostProperty = false;
1285 return LockOpenState.Success;
1286 }
1287 cc.PlaySound("lock", 1f, true);
1288 if (cc.IsPC)
1289 {
1290 cc.Say("openLockFail", null, null);
1291 }
1292 cc.ModExp(280, (thing != null) ? 50 : 30);
1293 if (thing == null | EClass.rnd(2) == 0)
1294 {
1295 cc.stamina.Mod(-1);
1296 }
1297 return LockOpenState.Fail;
1298 }
1299
1300 // Token: 0x060018EF RID: 6383 RVA: 0x0009F40A File Offset: 0x0009D60A
1301 public virtual void WriteNote(UINote n, bool identified)
1302 {
1303 }
1304
1305 // Token: 0x060018F0 RID: 6384 RVA: 0x0009F40C File Offset: 0x0009D60C
1306 public int GetSortVal(UIList.SortMode m)
1307 {
1308 return this.owner.sourceCard._index;
1309 }
1310
1311 // Token: 0x060018F1 RID: 6385 RVA: 0x0009F422 File Offset: 0x0009D622
1312 public virtual HotItem GetHotItem()
1313 {
1314 return new HotItemHeld(this.owner as Thing);
1315 }
1316
1317 // Token: 0x1700071F RID: 1823
1318 // (get) Token: 0x060018F2 RID: 6386 RVA: 0x0009F434 File Offset: 0x0009D634
1319 public virtual bool IsTool
1320 {
1321 get
1322 {
1323 return false;
1324 }
1325 }
1326
1327 // Token: 0x060018F3 RID: 6387 RVA: 0x0009F437 File Offset: 0x0009D637
1328 public virtual bool CanRead(Chara c)
1329 {
1330 return false;
1331 }
1332
1333 // Token: 0x060018F4 RID: 6388 RVA: 0x0009F43A File Offset: 0x0009D63A
1334 public virtual void OnRead(Chara c)
1335 {
1336 }
1337
1338 // Token: 0x060018F5 RID: 6389 RVA: 0x0009F43C File Offset: 0x0009D63C
1339 public virtual bool CanEat(Chara c)
1340 {
1341 return this.owner.HasElement(10, 1);
1342 }
1343
1344 // Token: 0x060018F6 RID: 6390 RVA: 0x0009F44C File Offset: 0x0009D64C
1345 public virtual void OnEat(Chara c)
1346 {
1347 }
1348
1349 // Token: 0x060018F7 RID: 6391 RVA: 0x0009F44E File Offset: 0x0009D64E
1350 public virtual bool CanDrink(Chara c)
1351 {
1352 return false;
1353 }
1354
1355 // Token: 0x060018F8 RID: 6392 RVA: 0x0009F451 File Offset: 0x0009D651
1356 public virtual void OnDrink(Chara c)
1357 {
1358 }
1359
1360 // Token: 0x060018F9 RID: 6393 RVA: 0x0009F453 File Offset: 0x0009D653
1361 public virtual void OnThrowGround(Chara c, Point p)
1362 {
1363 }
1364
1365 // Token: 0x17000720 RID: 1824
1366 // (get) Token: 0x060018FA RID: 6394 RVA: 0x0009F455 File Offset: 0x0009D655
1367 public virtual string LangUse
1368 {
1369 get
1370 {
1371 return "actUse";
1372 }
1373 }
1374
1375 // Token: 0x060018FB RID: 6395 RVA: 0x0009F45C File Offset: 0x0009D65C
1376 public virtual bool CanUse(Chara c)
1377 {
1378 return false;
1379 }
1380
1381 // Token: 0x060018FC RID: 6396 RVA: 0x0009F45F File Offset: 0x0009D65F
1382 public virtual bool CanUse(Chara c, Card tg)
1383 {
1384 return false;
1385 }
1386
1387 // Token: 0x060018FD RID: 6397 RVA: 0x0009F462 File Offset: 0x0009D662
1388 public virtual bool CanUse(Chara c, Point p)
1389 {
1390 return false;
1391 }
1392
1393 // Token: 0x060018FE RID: 6398 RVA: 0x0009F465 File Offset: 0x0009D665
1394 public virtual bool OnUse(Chara c)
1395 {
1396 if (c.held != this.owner)
1397 {
1398 c.TryHoldCard(this.owner, -1, false);
1399 }
1400 return true;
1401 }
1402
1403 // Token: 0x060018FF RID: 6399 RVA: 0x0009F485 File Offset: 0x0009D685
1404 public virtual bool OnUse(Chara c, Card tg)
1405 {
1406 return true;
1407 }
1408
1409 // Token: 0x06001900 RID: 6400 RVA: 0x0009F488 File Offset: 0x0009D688
1410 public virtual bool OnUse(Chara c, Point p)
1411 {
1412 return true;
1413 }
1414
1415 // Token: 0x06001901 RID: 6401 RVA: 0x0009F48C File Offset: 0x0009D68C
1416 public virtual void TrySetAct(ActPlan p)
1417 {
1418 if (this.CanUse(this.owner.Chara))
1419 {
1420 p.TrySetAct(this.LangUse, () => this.OnUse(p.cc), this.owner, null, 1, false, true, false);
1421 }
1422 }
1423
1424 // Token: 0x06001902 RID: 6402 RVA: 0x0009F4E9 File Offset: 0x0009D6E9
1425 public virtual void TrySetHeldAct(ActPlan p)
1426 {
1427 }
1428
1429 // Token: 0x06001903 RID: 6403 RVA: 0x0009F4EB File Offset: 0x0009D6EB
1430 public virtual void OnHeld()
1431 {
1432 }
1433
1434 // Token: 0x06001904 RID: 6404 RVA: 0x0009F4ED File Offset: 0x0009D6ED
1435 public virtual void OnTickHeld()
1436 {
1437 }
1438
1439 // Token: 0x06001905 RID: 6405 RVA: 0x0009F4EF File Offset: 0x0009D6EF
1440 public virtual void OnSetCurrentItem()
1441 {
1442 }
1443
1444 // Token: 0x06001906 RID: 6406 RVA: 0x0009F4F1 File Offset: 0x0009D6F1
1445 public virtual void OnUnsetCurrentItem()
1446 {
1447 }
1448
1449 // Token: 0x06001907 RID: 6407 RVA: 0x0009F4F3 File Offset: 0x0009D6F3
1450 public virtual bool OnChildDecay(Card c)
1451 {
1452 return true;
1453 }
1454
1455 // Token: 0x06001908 RID: 6408 RVA: 0x0009F4F6 File Offset: 0x0009D6F6
1456 public virtual bool CanChildDecay(Card c)
1457 {
1458 return false;
1459 }
1460
1461 // Token: 0x06001909 RID: 6409 RVA: 0x0009F4F9 File Offset: 0x0009D6F9
1462 public virtual void OnSetCardGrid(ButtonGrid b)
1463 {
1464 }
1465
1466 // Token: 0x0600190A RID: 6410 RVA: 0x0009F4FB File Offset: 0x0009D6FB
1467 public virtual void OnStepped(Chara c)
1468 {
1469 }
1470
1471 // Token: 0x0600190B RID: 6411 RVA: 0x0009F4FD File Offset: 0x0009D6FD
1472 public virtual void OnSteppedOut(Chara c)
1473 {
1474 }
1475
1476 // Token: 0x0600190C RID: 6412 RVA: 0x0009F4FF File Offset: 0x0009D6FF
1477 public virtual void OnOpenDoor(Chara c)
1478 {
1479 }
1480
1481 // Token: 0x0600190D RID: 6413 RVA: 0x0009F504 File Offset: 0x0009D704
1482 public void Install(bool byPlayer)
1483 {
1484 if (this.Electricity != 0)
1485 {
1486 EClass._zone.dirtyElectricity = true;
1487 if (this.Electricity > 0)
1488 {
1489 EClass._zone.electricity += this.Electricity;
1490 EClass.pc.PlaySound("electricity_on", 1f, true);
1491 }
1492 }
1493 this.TryToggle();
1494 this.owner.RecalculateFOV();
1495 if (EClass._zone.isStarted && this.ToggleType == ToggleType.Fire && this.owner.isOn)
1496 {
1497 this.owner.PlaySound("fire", 1f, true);
1498 }
1499 this.OnInstall(byPlayer);
1500 }
1501
1502 // Token: 0x0600190E RID: 6414 RVA: 0x0009F5AC File Offset: 0x0009D7AC
1503 public void Uninstall()
1504 {
1505 if (this.Electricity != 0)
1506 {
1507 if (this.owner.isOn)
1508 {
1509 this.Toggle(false, true);
1510 }
1511 EClass._zone.dirtyElectricity = true;
1512 if (this.Electricity > 0)
1513 {
1514 EClass._zone.electricity -= this.Electricity;
1515 EClass.pc.PlaySound("electricity_off", 1f, true);
1516 }
1517 }
1518 this.OnUninstall();
1519 }
1520
1521 // Token: 0x0600190F RID: 6415 RVA: 0x0009F61D File Offset: 0x0009D81D
1522 public virtual void OnInstall(bool byPlayer)
1523 {
1524 }
1525
1526 // Token: 0x06001910 RID: 6416 RVA: 0x0009F61F File Offset: 0x0009D81F
1527 public virtual void OnUninstall()
1528 {
1529 }
1530
1531 // Token: 0x17000721 RID: 1825
1532 // (get) Token: 0x06001911 RID: 6417 RVA: 0x0009F621 File Offset: 0x0009D821
1533 public virtual bool IsOn
1534 {
1535 get
1536 {
1537 return this.owner.isOn;
1538 }
1539 }
1540
1541 // Token: 0x17000722 RID: 1826
1542 // (get) Token: 0x06001912 RID: 6418 RVA: 0x0009F62E File Offset: 0x0009D82E
1543 public virtual bool IsAnimeOn
1544 {
1545 get
1546 {
1547 return this.IsOn || !this.IsToggle;
1548 }
1549 }
1550
1551 // Token: 0x17000723 RID: 1827
1552 // (get) Token: 0x06001913 RID: 6419 RVA: 0x0009F643 File Offset: 0x0009D843
1553 public bool IsToggle
1554 {
1555 get
1556 {
1557 return this.ToggleType > ToggleType.None;
1558 }
1559 }
1560
1561 // Token: 0x17000724 RID: 1828
1562 // (get) Token: 0x06001914 RID: 6420 RVA: 0x0009F64E File Offset: 0x0009D84E
1563 public virtual bool AutoToggle
1564 {
1565 get
1566 {
1567 return (this.IsLighting || this.ToggleType == ToggleType.Curtain || this.ToggleType == ToggleType.Electronics) && !this.owner.disableAutoToggle;
1568 }
1569 }
1570
1571 // Token: 0x17000725 RID: 1829
1572 // (get) Token: 0x06001915 RID: 6421 RVA: 0x0009F67A File Offset: 0x0009D87A
1573 public bool IsLighting
1574 {
1575 get
1576 {
1577 return this.ToggleType == ToggleType.Fire || this.ToggleType == ToggleType.Light;
1578 }
1579 }
1580
1581 // Token: 0x17000726 RID: 1830
1582 // (get) Token: 0x06001916 RID: 6422 RVA: 0x0009F690 File Offset: 0x0009D890
1583 public virtual bool IsLightOn
1584 {
1585 get
1586 {
1587 return this.owner.isChara || this.owner.isOn;
1588 }
1589 }
1590
1591 // Token: 0x17000727 RID: 1831
1592 // (get) Token: 0x06001917 RID: 6423 RVA: 0x0009F6AC File Offset: 0x0009D8AC
1593 public virtual bool IsNightOnlyLight
1594 {
1595 get
1596 {
1597 return this.ToggleType != ToggleType.Electronics && this.IsToggle && !this.owner.isRoofItem;
1598 }
1599 }
1600
1601 // Token: 0x17000728 RID: 1832
1602 // (get) Token: 0x06001918 RID: 6424 RVA: 0x0009F6CF File Offset: 0x0009D8CF
1603 public virtual Trait.TileMode tileMode
1604 {
1605 get
1606 {
1607 return Trait.TileMode.Default;
1608 }
1609 }
1610
1611 // Token: 0x17000729 RID: 1833
1612 // (get) Token: 0x06001919 RID: 6425 RVA: 0x0009F6D2 File Offset: 0x0009D8D2
1613 public virtual bool UseAltTiles
1614 {
1615 get
1616 {
1617 return this.owner.isOn;
1618 }
1619 }
1620
1621 // Token: 0x1700072A RID: 1834
1622 // (get) Token: 0x0600191A RID: 6426 RVA: 0x0009F6DF File Offset: 0x0009D8DF
1623 public virtual bool UseLowblock
1624 {
1625 get
1626 {
1627 return false;
1628 }
1629 }
1630
1631 // Token: 0x1700072B RID: 1835
1632 // (get) Token: 0x0600191B RID: 6427 RVA: 0x0009F6E2 File Offset: 0x0009D8E2
1633 public virtual bool UseExtra
1634 {
1635 get
1636 {
1637 return true;
1638 }
1639 }
1640
1641 // Token: 0x1700072C RID: 1836
1642 // (get) Token: 0x0600191C RID: 6428 RVA: 0x0009F6E5 File Offset: 0x0009D8E5
1643 public virtual bool UseLightColor
1644 {
1645 get
1646 {
1647 return true;
1648 }
1649 }
1650
1651 // Token: 0x1700072D RID: 1837
1652 // (get) Token: 0x0600191D RID: 6429 RVA: 0x0009F6E8 File Offset: 0x0009D8E8
1653 public virtual Color? ColorExtra
1654 {
1655 get
1656 {
1657 return null;
1658 }
1659 }
1660
1661 // Token: 0x1700072E RID: 1838
1662 // (get) Token: 0x0600191E RID: 6430 RVA: 0x0009F6FE File Offset: 0x0009D8FE
1663 public virtual int MaxFuel
1664 {
1665 get
1666 {
1667 if (this.ToggleType != ToggleType.Fire)
1668 {
1669 return 0;
1670 }
1671 return 100;
1672 }
1673 }
1674
1675 // Token: 0x1700072F RID: 1839
1676 // (get) Token: 0x0600191F RID: 6431 RVA: 0x0009F70D File Offset: 0x0009D90D
1677 public virtual int FuelCost
1678 {
1679 get
1680 {
1681 return 1;
1682 }
1683 }
1684
1685 // Token: 0x17000730 RID: 1840
1686 // (get) Token: 0x06001920 RID: 6432 RVA: 0x0009F710 File Offset: 0x0009D910
1687 public virtual bool ShowFuelWindow
1688 {
1689 get
1690 {
1691 return true;
1692 }
1693 }
1694
1695 // Token: 0x17000731 RID: 1841
1696 // (get) Token: 0x06001921 RID: 6433 RVA: 0x0009F713 File Offset: 0x0009D913
1697 public bool IsRequireFuel
1698 {
1699 get
1700 {
1701 return this.MaxFuel > 0;
1702 }
1703 }
1704
1705 // Token: 0x17000732 RID: 1842
1706 // (get) Token: 0x06001922 RID: 6434 RVA: 0x0009F71E File Offset: 0x0009D91E
1707 public string IdToggleExtra
1708 {
1709 get
1710 {
1711 Thing thing = this.owner.Thing;
1712 if (thing == null)
1713 {
1714 return null;
1715 }
1716 return thing.source.idToggleExtra;
1717 }
1718 }
1719
1720 // Token: 0x17000733 RID: 1843
1721 // (get) Token: 0x06001923 RID: 6435 RVA: 0x0009F73B File Offset: 0x0009D93B
1722 public virtual ToggleType ToggleType
1723 {
1724 get
1725 {
1726 if (this.Electricity >= 0)
1727 {
1728 return ToggleType.None;
1729 }
1730 return ToggleType.Electronics;
1731 }
1732 }
1733
1734 // Token: 0x06001924 RID: 6436 RVA: 0x0009F74C File Offset: 0x0009D94C
1735 public virtual void TryToggle()
1736 {
1737 if (!this.owner.IsInstalled)
1738 {
1739 return;
1740 }
1741 if (this.Electricity < 0 && this.owner.isOn && EClass._zone.electricity < 0)
1742 {
1743 this.Toggle(false, true);
1744 return;
1745 }
1746 if (this.AutoToggle)
1747 {
1748 int hour = EClass.world.date.hour;
1749 bool on = !this.IsNightOnlyLight || hour >= 17 || hour <= 5 || EClass._map.IsIndoor;
1750 if (this.ToggleType == ToggleType.Fire && EClass.world.weather.IsRaining && !EClass._map.IsIndoor && !this.owner.Cell.HasRoof)
1751 {
1752 on = false;
1753 }
1754 this.Toggle(on, true);
1755 }
1756 }
1757
1758 // Token: 0x06001925 RID: 6437 RVA: 0x0009F810 File Offset: 0x0009DA10
1759 public virtual void Toggle(bool on, bool silent = false)
1760 {
1761 if (this.owner.isOn == on)
1762 {
1763 return;
1764 }
1765 if (this.Electricity < 0)
1766 {
1767 if (on)
1768 {
1769 if (EClass._zone.electricity + this.Electricity < 0)
1770 {
1771 if (EClass._zone.isStarted)
1772 {
1773 if (!silent)
1774 {
1775 this.owner.Say("notEnoughElectricity", this.owner, null, null);
1776 }
1777 this.owner.PlaySound("electricity_insufficient", 1f, true);
1778 }
1779 return;
1780 }
1781 EClass._zone.electricity += this.Electricity;
1782 }
1783 else
1784 {
1785 EClass._zone.electricity -= this.Electricity;
1786 }
1787 }
1788 this.owner.isOn = on;
1789 bool flag = this.ToggleType == ToggleType.Fire;
1790 ToggleType toggleType = this.ToggleType;
1791 if (toggleType != ToggleType.None)
1792 {
1793 if (toggleType != ToggleType.Curtain)
1794 {
1795 if (toggleType == ToggleType.Lever)
1796 {
1797 if (!silent)
1798 {
1799 this.owner.Say("lever", EClass.pc, this.owner, null, null);
1800 this.owner.PlaySound("switch_lever", 1f, true);
1801 }
1802 }
1803 else if (on)
1804 {
1805 if (!silent)
1806 {
1807 this.owner.Say(flag ? "toggle_fire" : "toggle_ele", EClass.pc, this.owner, null, null);
1808 this.owner.PlaySound((this.Electricity < 0) ? "switch_on_electricity" : (flag ? "torch_lit" : "switch_on"), 1f, true);
1809 }
1810 this.RefreshRenderer();
1811 this.owner.RecalculateFOV();
1812 }
1813 else
1814 {
1815 if (!silent)
1816 {
1817 this.owner.PlaySound((this.Electricity < 0) ? "switch_off_electricity" : (flag ? "torch_unlit" : "switch_off"), 1f, true);
1818 }
1819 this.RefreshRenderer();
1820 this.owner.RecalculateFOV();
1821 }
1822 }
1823 else
1824 {
1825 if (!silent)
1826 {
1827 this.owner.Say(on ? "close" : "open", EClass.pc, this.owner, null, null);
1828 this.owner.PlaySound("Material/leather_drop", 1f, true);
1829 }
1830 this.owner.pos.RefreshNeighborTiles();
1831 EClass.pc.RecalculateFOV();
1832 }
1833 }
1834 this.OnToggle();
1835 }
1836
1837 // Token: 0x06001926 RID: 6438 RVA: 0x0009FA47 File Offset: 0x0009DC47
1838 public virtual void OnToggle()
1839 {
1840 }
1841
1842 // Token: 0x06001927 RID: 6439 RVA: 0x0009FA4C File Offset: 0x0009DC4C
1843 public virtual void TrySetToggleAct(ActPlan p)
1844 {
1845 if (!p.IsSelfOrNeighbor)
1846 {
1847 return;
1848 }
1849 switch (this.ToggleType)
1850 {
1851 case ToggleType.Fire:
1852 case ToggleType.Light:
1853 case ToggleType.Electronics:
1854 {
1855 bool flag = this.ToggleType == ToggleType.Fire;
1856 if (EClass._zone.IsPCFaction || p.altAction || this is TraitCrafter || this.Electricity < 0)
1857 {
1858 if (this.owner.isOn)
1859 {
1860 if (p.altAction)
1861 {
1862 p.TrySetAct(flag ? "ActExtinguishTorch" : "ActToggleOff", delegate()
1863 {
1864 this.Toggle(false, false);
1865 return true;
1866 }, this.owner, null, 1, false, true, false);
1867 }
1868 }
1869 else if (!(this is TraitFactory) && !(this is TraitIncubator) && (!this.IsRequireFuel || this.owner.c_charges > 0))
1870 {
1871 p.TrySetAct(flag ? "ActTorch" : "ActToggleOn", delegate()
1872 {
1873 this.Toggle(true, false);
1874 return true;
1875 }, this.owner, null, 1, false, true, false);
1876 }
1877 if (this.IsRequireFuel && ((p.altAction && this.owner.c_charges < this.MaxFuel) || (!this.owner.isOn && this.owner.c_charges == 0)) && this.ShowFuelWindow)
1878 {
1879 p.TrySetAct("ActFuel", delegate()
1880 {
1881 LayerDragGrid.Create(new InvOwnerRefuel(this.owner, null, CurrencyType.None), false);
1882 return false;
1883 }, this.owner, null, 1, false, true, false);
1884 }
1885 }
1886 if (p.altAction)
1887 {
1888 p.TrySetAct("disableAutoToggle".lang((this.owner.disableAutoToggle ? "off" : "on").lang(), null, null, null, null), delegate()
1889 {
1890 this.owner.disableAutoToggle = !this.owner.disableAutoToggle;
1891 SE.Click();
1892 return true;
1893 }, this.owner, null, 1, false, true, false);
1894 }
1895 return;
1896 }
1897 case ToggleType.Curtain:
1898 p.TrySetAct(this.owner.isOn ? "actOpen" : "actClose", delegate()
1899 {
1900 this.Toggle(!this.owner.isOn, false);
1901 return true;
1902 }, this.owner, null, 1, false, true, false);
1903 return;
1904 case ToggleType.Lever:
1905 p.TrySetAct("ActToggleLever", delegate()
1906 {
1907 this.Toggle(!this.owner.isOn, false);
1908 return true;
1909 }, this.owner, null, 1, false, true, false);
1910 return;
1911 default:
1912 return;
1913 }
1914 }
1915
1916 // Token: 0x06001928 RID: 6440 RVA: 0x0009FC68 File Offset: 0x0009DE68
1917 public bool IsFuelEnough(int num = 1, List<Thing> excludes = null, bool tryRefuel = true)
1918 {
1919 if (!this.IsRequireFuel)
1920 {
1921 return true;
1922 }
1923 if (this.owner.c_charges >= this.FuelCost * num)
1924 {
1925 return true;
1926 }
1927 if (this.owner.autoRefuel)
1928 {
1929 this.TryRefuel(this.FuelCost * num - this.owner.c_charges, excludes);
1930 }
1931 return this.owner.c_charges >= this.FuelCost * num;
1932 }
1933
1934 // Token: 0x06001929 RID: 6441 RVA: 0x0009FCD6 File Offset: 0x0009DED6
1935 public bool IsFuel(string s)
1936 {
1937 return this.GetFuelValue(s) > 0;
1938 }
1939
1940 // Token: 0x0600192A RID: 6442 RVA: 0x0009FCE2 File Offset: 0x0009DEE2
1941 public bool IsFuel(Thing t)
1942 {
1943 return this.GetFuelValue(t) > 0;
1944 }
1945
1946 // Token: 0x0600192B RID: 6443 RVA: 0x0009FCEE File Offset: 0x0009DEEE
1947 public int GetFuelValue(Thing t)
1948 {
1949 return this.GetFuelValue(t.id);
1950 }
1951
1952 // Token: 0x0600192C RID: 6444 RVA: 0x0009FCFC File Offset: 0x0009DEFC
1953 public int GetFuelValue(string id)
1954 {
1955 if (this.ToggleType == ToggleType.Electronics)
1956 {
1957 if (id == "battery")
1958 {
1959 return 20;
1960 }
1961 }
1962 else
1963 {
1964 if (id == "log")
1965 {
1966 return 20;
1967 }
1968 if (id == "branch")
1969 {
1970 return 5;
1971 }
1972 }
1973 return 0;
1974 }
1975
1976 // Token: 0x0600192D RID: 6445 RVA: 0x0009FD38 File Offset: 0x0009DF38
1977 public void Refuel(Thing t)
1978 {
1979 t.PlaySoundDrop(false);
1980 this.owner.ModCharge(t.Num * this.GetFuelValue(t), false);
1981 Msg.Say("fueled", t, null, null, null);
1982 if (!this.owner.isOn)
1983 {
1984 this.owner.trait.Toggle(true, false);
1985 }
1986 t.Destroy();
1987 this.owner.renderer.PlayAnime(AnimeID.Shiver, default(Vector3), false);
1988 }
1989
1990 // Token: 0x0600192E RID: 6446 RVA: 0x0009FDB8 File Offset: 0x0009DFB8
1991 public void TryRefuel(int dest, List<Thing> excludes)
1992 {
1993 Trait.<>c__DisplayClass305_0 CS$<>8__locals1 = new Trait.<>c__DisplayClass305_0();
1994 CS$<>8__locals1.dest = dest;
1995 CS$<>8__locals1.<>4__this = this;
1996 CS$<>8__locals1.excludes = excludes;
1997 if (CS$<>8__locals1.<TryRefuel>g__FindFuel|0(false))
1998 {
1999 CS$<>8__locals1.<TryRefuel>g__FindFuel|0(true);
2000 }
2001 }
2002
2003 // Token: 0x0600192F RID: 6447 RVA: 0x0009FDF1 File Offset: 0x0009DFF1
2004 public virtual void OnEnterScreen()
2005 {
2006 this.RefreshRenderer();
2007 }
2008
2009 // Token: 0x06001930 RID: 6448 RVA: 0x0009FDFC File Offset: 0x0009DFFC
2010 public virtual void RefreshRenderer()
2011 {
2012 if (!this.owner.renderer.isSynced || this.IdToggleExtra.IsEmpty())
2013 {
2014 return;
2015 }
2016 if (this.owner.isOn)
2017 {
2018 this.owner.renderer.AddExtra(this.IdToggleExtra);
2019 return;
2020 }
2021 this.owner.renderer.RemoveExtra(this.IdToggleExtra);
2022 }
2023
2024 // Token: 0x06001931 RID: 6449 RVA: 0x0009FE64 File Offset: 0x0009E064
2025 public virtual void SetMainText(UIText t, bool hotitem)
2026 {
2027 if (this.owner.isThing && !this.owner.Thing.source.attackType.IsEmpty() && this.owner.ammoData != null)
2028 {
2029 string text = this.owner.c_ammo.ToString() ?? "";
2030 t.SetText(text ?? "", FontColor.Charge);
2031 t.SetActive(true);
2032 return;
2033 }
2034 if (this.owner.Num == 1 && this.ShowCharges && this.owner.IsIdentified)
2035 {
2036 t.SetText(this.owner.c_charges.ToString() ?? "", FontColor.Charge);
2037 t.SetActive(true);
2038 return;
2039 }
2040 string text2 = (this.owner.Num >= 1000000) ? ((this.owner.Num / 1000000).ToString() + "M") : ((this.owner.Num >= 1000) ? ((this.owner.Num / 1000).ToString() + "K") : (this.owner.Num.ToString() ?? ""));
2041 t.SetText(text2 ?? "", FontColor.ButtonGrid);
2042 t.SetActive(this.owner.Num > 1);
2043 }
2044
2045 // Token: 0x17000734 RID: 1844
2046 // (get) Token: 0x06001932 RID: 6450 RVA: 0x0009FFDE File Offset: 0x0009E1DE
2047 public virtual int ShopLv
2048 {
2049 get
2050 {
2051 return EClass._zone.development / 10 + this.owner.c_invest + 1;
2052 }
2053 }
2054
2055 // Token: 0x06001933 RID: 6451 RVA: 0x0009FFFB File Offset: 0x0009E1FB
2056 public virtual bool CanCopy(Thing t)
2057 {
2058 return false;
2059 }
2060
2061 // Token: 0x17000735 RID: 1845
2062 // (get) Token: 0x06001934 RID: 6452 RVA: 0x0009FFFE File Offset: 0x0009E1FE
2063 public virtual Trait.CopyShopType CopyShop
2064 {
2065 get
2066 {
2067 return Trait.CopyShopType.None;
2068 }
2069 }
2070
2071 // Token: 0x17000736 RID: 1846
2072 // (get) Token: 0x06001935 RID: 6453 RVA: 0x000A0001 File Offset: 0x0009E201
2073 public virtual int NumCopyItem
2074 {
2075 get
2076 {
2077 return 2 + Mathf.Min(this.owner.c_invest / 10, 3);
2078 }
2079 }
2080
2081 // Token: 0x17000737 RID: 1847
2082 // (get) Token: 0x06001936 RID: 6454 RVA: 0x000A0019 File Offset: 0x0009E219
2083 public virtual ShopType ShopType
2084 {
2085 get
2086 {
2087 return ShopType.None;
2088 }
2089 }
2090
2091 // Token: 0x17000738 RID: 1848
2092 // (get) Token: 0x06001937 RID: 6455 RVA: 0x000A001C File Offset: 0x0009E21C
2093 public virtual CurrencyType CurrencyType
2094 {
2095 get
2096 {
2097 return CurrencyType.Money;
2098 }
2099 }
2100
2101 // Token: 0x17000739 RID: 1849
2102 // (get) Token: 0x06001938 RID: 6456 RVA: 0x000A001F File Offset: 0x0009E21F
2103 public virtual PriceType PriceType
2104 {
2105 get
2106 {
2107 return PriceType.Default;
2108 }
2109 }
2110
2111 // Token: 0x1700073A RID: 1850
2112 // (get) Token: 0x06001939 RID: 6457 RVA: 0x000A0022 File Offset: 0x0009E222
2113 public virtual bool AllowSell
2114 {
2115 get
2116 {
2117 return this.CurrencyType == CurrencyType.Money || this.CurrencyType == CurrencyType.None;
2118 }
2119 }
2120
2121 // Token: 0x1700073B RID: 1851
2122 // (get) Token: 0x0600193A RID: 6458 RVA: 0x000A0038 File Offset: 0x0009E238
2123 public virtual int CostRerollShop
2124 {
2125 get
2126 {
2127 if (this.CurrencyType == CurrencyType.Money || this.CurrencyType == CurrencyType.Influence)
2128 {
2129 return 1;
2130 }
2131 return 0;
2132 }
2133 }
2134
2135 // Token: 0x1700073C RID: 1852
2136 // (get) Token: 0x0600193B RID: 6459 RVA: 0x000A004F File Offset: 0x0009E24F
2137 public virtual bool AllowCriminal
2138 {
2139 get
2140 {
2141 return this.owner.isThing;
2142 }
2143 }
2144
2145 // Token: 0x1700073D RID: 1853
2146 // (get) Token: 0x0600193C RID: 6460 RVA: 0x000A005C File Offset: 0x0009E25C
2147 public virtual int RestockDay
2148 {
2149 get
2150 {
2151 return 5;
2152 }
2153 }
2154
2155 // Token: 0x1700073E RID: 1854
2156 // (get) Token: 0x0600193D RID: 6461 RVA: 0x000A005F File Offset: 0x0009E25F
2157 public virtual SlaverType SlaverType
2158 {
2159 get
2160 {
2161 return SlaverType.None;
2162 }
2163 }
2164
2165 // Token: 0x1700073F RID: 1855
2166 // (get) Token: 0x0600193E RID: 6462 RVA: 0x000A0062 File Offset: 0x0009E262
2167 public virtual string LangBarter
2168 {
2169 get
2170 {
2171 return "daBuy";
2172 }
2173 }
2174
2175 // Token: 0x17000740 RID: 1856
2176 // (get) Token: 0x0600193F RID: 6463 RVA: 0x000A0069 File Offset: 0x0009E269
2177 public string TextNextRestock
2178 {
2179 get
2180 {
2181 return this.GetTextRestock(this.LangBarter, false);
2182 }
2183 }
2184
2185 // Token: 0x17000741 RID: 1857
2186 // (get) Token: 0x06001940 RID: 6464 RVA: 0x000A0078 File Offset: 0x0009E278
2187 public string TextNextRestockPet
2188 {
2189 get
2190 {
2191 return this.GetTextRestock((this.SlaverType == SlaverType.Slave) ? "daBuySlave" : "daBuyPet", true);
2192 }
2193 }
2194
2195 // Token: 0x06001941 RID: 6465 RVA: 0x000A0098 File Offset: 0x0009E298
2196 public string GetTextRestock(string lang, bool pet)
2197 {
2198 int rawDeadLine = 0;
2199 if (pet)
2200 {
2201 SlaverData obj = this.owner.GetObj<SlaverData>(5);
2202 if (obj != null)
2203 {
2204 rawDeadLine = obj.dateRefresh;
2205 }
2206 }
2207 else
2208 {
2209 rawDeadLine = this.owner.c_dateStockExpire;
2210 }
2211 int remainingHours = EClass.world.date.GetRemainingHours(rawDeadLine);
2212 if (remainingHours > 0)
2213 {
2214 return "nextRestock".lang(lang.lang(), Date.GetText(remainingHours) ?? "", null, null, null);
2215 }
2216 return lang.lang();
2217 }
2218
2219 // Token: 0x06001942 RID: 6466 RVA: 0x000A0110 File Offset: 0x0009E310
2220 public Emo2 GetRestockedIcon()
2221 {
2222 if (this.SlaverType != SlaverType.None)
2223 {
2224 SlaverData obj = this.owner.GetObj<SlaverData>(5);
2225 if (obj != null && EClass.world.date.IsExpired(obj.dateRefresh))
2226 {
2227 return Emo2.restock;
2228 }
2229 }
2230 int c_dateStockExpire = this.owner.c_dateStockExpire;
2231 if (c_dateStockExpire == 0 || !EClass.world.date.IsExpired(c_dateStockExpire))
2232 {
2233 return Emo2.none;
2234 }
2235 if (this.ShopType == ShopType.None)
2236 {
2237 return Emo2.blessing;
2238 }
2239 return Emo2.restock;
2240 }
2241
2242 // Token: 0x06001943 RID: 6467 RVA: 0x000A017F File Offset: 0x0009E37F
2243 public Thing FindShopChest()
2244 {
2245 return this.owner.things.Find("chest_merchant", -1, -1);
2246 }
2247
2248 // Token: 0x06001944 RID: 6468 RVA: 0x000A0198 File Offset: 0x0009E398
2249 public void OnBarter()
2250 {
2251 Trait.<>c__DisplayClass342_0 CS$<>8__locals1;
2252 CS$<>8__locals1.<>4__this = this;
2253 CS$<>8__locals1.t = this.owner.things.Find("chest_merchant", -1, -1);
2254 if (CS$<>8__locals1.t == null)
2255 {
2256 CS$<>8__locals1.t = ThingGen.Create("chest_merchant", -1, -1);
2257 this.owner.AddThing(CS$<>8__locals1.t, true, -1, -1);
2258 }
2259 if (!EClass.world.date.IsExpired(this.owner.c_dateStockExpire))
2260 {
2261 return;
2262 }
2263 this.owner.c_dateStockExpire = EClass.world.date.GetRaw(24 * this.RestockDay);
2264 this.owner.isRestocking = true;
2265 CS$<>8__locals1.t.things.DestroyAll((Thing _t) => _t.GetInt(101, null) != 0);
2266 foreach (Thing thing in CS$<>8__locals1.t.things)
2267 {
2268 thing.invX = -1;
2269 }
2270 ShopType shopType = this.ShopType;
2271 string id;
2272 switch (shopType)
2273 {
2274 case ShopType.Medal:
2275 this.<OnBarter>g__NoRestock|342_2(ThingGen.Create("sword_dragon", -1, -1), ref CS$<>8__locals1);
2276 this.<OnBarter>g__Add|342_0("sword_dragon", 1, 0, ref CS$<>8__locals1).SetReplica(true);
2277 this.<OnBarter>g__NoRestock|342_2(ThingGen.Create("axe_destruction", -1, -1), ref CS$<>8__locals1);
2278 this.<OnBarter>g__Add|342_0("axe_destruction", 1, 0, ref CS$<>8__locals1).SetReplica(true);
2279 this.<OnBarter>g__NoRestock|342_2(ThingGen.Create("blunt_bonehammer", -1, -1), ref CS$<>8__locals1);
2280 this.<OnBarter>g__Add|342_0("blunt_bonehammer", 1, 0, ref CS$<>8__locals1).SetReplica(true);
2281 this.<OnBarter>g__NoRestock|342_2(ThingGen.Create("pole_gunlance", -1, -1), ref CS$<>8__locals1);
2282 this.<OnBarter>g__Add|342_0("pole_gunlance", 1, 0, ref CS$<>8__locals1).SetReplica(true);
2283 this.<OnBarter>g__NoRestock|342_2(ThingGen.Create("sword_muramasa", -1, -1), ref CS$<>8__locals1);
2284 this.<OnBarter>g__Add|342_0("sword_muramasa", 1, 0, ref CS$<>8__locals1).SetReplica(true);
2285 this.<OnBarter>g__NoRestock|342_2(ThingGen.Create("sword_forgetmenot", -1, -1), ref CS$<>8__locals1);
2286 this.<OnBarter>g__Add|342_0("sword_forgetmenot", 1, 0, ref CS$<>8__locals1).SetReplica(true);
2287 this.<OnBarter>g__NoRestock|342_2(ThingGen.Create("dagger_fish", -1, -1), ref CS$<>8__locals1);
2288 this.<OnBarter>g__Add|342_0("dagger_fish", 1, 0, ref CS$<>8__locals1).SetReplica(true);
2289 this.<OnBarter>g__NoRestock|342_2(ThingGen.Create("sword_zephir", -1, -1), ref CS$<>8__locals1);
2290 this.<OnBarter>g__Add|342_0("sword_zephir", 1, 0, ref CS$<>8__locals1).SetReplica(true);
2291 this.<OnBarter>g__Add|342_0("helm_sage", 1, 0, ref CS$<>8__locals1);
2292 this.<OnBarter>g__Add|342_0("diary_sister", 1, 0, ref CS$<>8__locals1);
2293 this.<OnBarter>g__Add|342_0("diary_catsister", 1, 0, ref CS$<>8__locals1);
2294 this.<OnBarter>g__Add|342_0("diary_lady", 1, 0, ref CS$<>8__locals1);
2295 this.<OnBarter>g__Add|342_0("1165", 1, 0, ref CS$<>8__locals1).SetNum(5);
2296 this.<OnBarter>g__AddThing|342_1(ThingGen.CreateScroll(9160, 1).SetNum(5), ref CS$<>8__locals1);
2297 this.<OnBarter>g__Add|342_0("monsterball", 1, 0, ref CS$<>8__locals1).SetNum(3).SetLv(20);
2298 this.<OnBarter>g__Add|342_0("monsterball", 1, 0, ref CS$<>8__locals1).SetNum(3).SetLv(40);
2299 this.<OnBarter>g__Add|342_0("bill_tax", 1, 0, ref CS$<>8__locals1).c_bill = 1;
2300 this.<OnBarter>g__Add|342_0("bill_tax", 1, 0, ref CS$<>8__locals1).c_bill = 1;
2301 this.<OnBarter>g__Add|342_0("bill_tax", 1, 0, ref CS$<>8__locals1).c_bill = 1;
2302 this.<OnBarter>g__Add|342_0("container_magic", 1, 0, ref CS$<>8__locals1);
2303 this.<OnBarter>g__Add|342_0("container_magic", 1, 0, ref CS$<>8__locals1).ChangeMaterial("iron").idSkin = 1;
2304 this.<OnBarter>g__Add|342_0("container_magic", 1, 0, ref CS$<>8__locals1).ChangeMaterial("bamboo").idSkin = 2;
2305 this.<OnBarter>g__Add|342_0("wrench_bed", 1, 0, ref CS$<>8__locals1).SetNum(20);
2306 this.<OnBarter>g__Add|342_0("wrench_storage", 1, 0, ref CS$<>8__locals1).SetNum(10);
2307 this.<OnBarter>g__Add|342_0("wrench_fridge", 1, 0, ref CS$<>8__locals1).SetNum(1);
2308 this.<OnBarter>g__Add|342_0("wrench_extend_v", 1, 0, ref CS$<>8__locals1).SetNum(2);
2309 this.<OnBarter>g__Add|342_0("wrench_extend_h", 1, 0, ref CS$<>8__locals1).SetNum(2);
2310 goto IL_E0E;
2311 case ShopType.CaravanMaster:
2312 break;
2313 case ShopType.Starter:
2314 case ShopType.StarterEx:
2315 this.<OnBarter>g__Add|342_0("board_home", 1, 0, ref CS$<>8__locals1);
2316 this.<OnBarter>g__Add|342_0("board_resident", 1, 0, ref CS$<>8__locals1);
2317 this.<OnBarter>g__Add|342_0("1", 1, 0, ref CS$<>8__locals1);
2318 this.<OnBarter>g__Add|342_0("2", 1, 0, ref CS$<>8__locals1);
2319 if (this.ShopType == ShopType.StarterEx)
2320 {
2321 this.<OnBarter>g__Add|342_0("board_expedition", 1, 0, ref CS$<>8__locals1);
2322 this.<OnBarter>g__Add|342_0("mailpost", 1, 0, ref CS$<>8__locals1);
2323 this.<OnBarter>g__Add|342_0("record", 1, 0, ref CS$<>8__locals1);
2324 this.<OnBarter>g__Add|342_0("tent2", 1, 0, ref CS$<>8__locals1);
2325 this.<OnBarter>g__Add|342_0("tent1", 1, 0, ref CS$<>8__locals1);
2326 this.<OnBarter>g__Add|342_0("wagon1", 1, 0, ref CS$<>8__locals1);
2327 this.<OnBarter>g__Add|342_0("wagon_big", 1, 0, ref CS$<>8__locals1);
2328 this.<OnBarter>g__Add|342_0("wagon_big2", 1, 0, ref CS$<>8__locals1);
2329 this.<OnBarter>g__Add|342_0("wagon_big3", 1, 0, ref CS$<>8__locals1);
2330 this.<OnBarter>g__Add|342_0("wagon_big4", 1, 0, ref CS$<>8__locals1);
2331 this.<OnBarter>g__Add|342_0("wagon_big5", 1, 0, ref CS$<>8__locals1);
2332 this.<OnBarter>g__Add|342_0("teleporter", 1, 0, ref CS$<>8__locals1);
2333 this.<OnBarter>g__Add|342_0("teleporter2", 1, 0, ref CS$<>8__locals1);
2334 this.<OnBarter>g__Add|342_0("recharger", 1, 0, ref CS$<>8__locals1);
2335 this.<OnBarter>g__Add|342_0("machine_gene2", 1, 0, ref CS$<>8__locals1);
2336 this.<OnBarter>g__NoRestock|342_2(ThingGen.CreateRecipe("torch_wall"), ref CS$<>8__locals1);
2337 this.<OnBarter>g__NoRestock|342_2(ThingGen.CreateRecipe("factory_sign"), ref CS$<>8__locals1);
2338 this.<OnBarter>g__NoRestock|342_2(ThingGen.CreateRecipe("beehive"), ref CS$<>8__locals1);
2339 this.<OnBarter>g__NoRestock|342_2(ThingGen.Create("rp_food", -1, -1).SetNum(5).SetLv(10).Thing, ref CS$<>8__locals1);
2340 goto IL_E0E;
2341 }
2342 this.<OnBarter>g__AddThing|342_1(ThingGen.CreatePlan(2119), ref CS$<>8__locals1);
2343 this.<OnBarter>g__NoRestock|342_2(ThingGen.Create("rp_food", -1, -1).SetNum(5).SetLv(5).Thing, ref CS$<>8__locals1);
2344 goto IL_E0E;
2345 case ShopType.Farris:
2346 this.<OnBarter>g__AddThing|342_1(ThingGen.CreateScroll(8220, 4 + EClass.rnd(6)), ref CS$<>8__locals1);
2347 this.<OnBarter>g__AddThing|342_1(ThingGen.CreateScroll(8221, 4 + EClass.rnd(6)), ref CS$<>8__locals1);
2348 this.<OnBarter>g__Add|342_0("drawing_paper", 10, 0, ref CS$<>8__locals1);
2349 this.<OnBarter>g__Add|342_0("drawing_paper2", 10, 0, ref CS$<>8__locals1);
2350 this.<OnBarter>g__Add|342_0("stethoscope", 1, 0, ref CS$<>8__locals1);
2351 this.<OnBarter>g__Add|342_0("whip_love", 1, 0, ref CS$<>8__locals1);
2352 this.<OnBarter>g__Add|342_0("whip_interest", 1, 0, ref CS$<>8__locals1);
2353 goto IL_E0E;
2354 default:
2355 switch (shopType)
2356 {
2357 case ShopType.Guild:
2358 if (this is TraitClerk_Merchant)
2359 {
2360 this.<OnBarter>g__Add|342_0("flyer", 1, 0, ref CS$<>8__locals1).SetNum(99);
2361 goto IL_E0E;
2362 }
2363 goto IL_E0E;
2364 case ShopType.Exotic:
2365 case ShopType.Gun:
2366 case ShopType.Dye:
2367 case ShopType.Healer:
2368 case ShopType.Milk:
2369 case ShopType.Ecopo:
2370 goto IL_D81;
2371 case ShopType.Influence:
2372 {
2373 bool flag = this.owner.id == "big_sister";
2374 TraitTicketFurniture.SetZone(flag ? EClass.game.spatials.Find("little_garden") : EClass._zone, this.<OnBarter>g__Add|342_0("ticket_furniture", 1, 0, ref CS$<>8__locals1).SetNum(99));
2375 if (flag)
2376 {
2377 this.<OnBarter>g__Add|342_0("littleball", 10, 0, ref CS$<>8__locals1);
2378 goto IL_E0E;
2379 }
2380 for (int i = 0; i < 10; i++)
2381 {
2382 Thing thing2 = ThingGen.Create(EClass._zone.IsFestival ? "1123" : ((EClass.rnd(3) == 0) ? "1169" : "1160"), -1, -1);
2383 thing2.DyeRandom();
2384 this.<OnBarter>g__AddThing|342_1(thing2, ref CS$<>8__locals1);
2385 }
2386 goto IL_E0E;
2387 }
2388 case ShopType.Deed:
2389 goto IL_38A;
2390 case ShopType.Seed:
2391 this.<OnBarter>g__AddThing|342_1(TraitSeed.MakeSeed("rice"), ref CS$<>8__locals1).SetNum(4 + EClass.rnd(4));
2392 this.<OnBarter>g__AddThing|342_1(TraitSeed.MakeSeed("cabbage"), ref CS$<>8__locals1).SetNum(4 + EClass.rnd(4));
2393 this.<OnBarter>g__AddThing|342_1(TraitSeed.MakeSeed("carrot"), ref CS$<>8__locals1).SetNum(4 + EClass.rnd(4));
2394 this.<OnBarter>g__AddThing|342_1(TraitSeed.MakeSeed("potato"), ref CS$<>8__locals1).SetNum(4 + EClass.rnd(4));
2395 this.<OnBarter>g__AddThing|342_1(TraitSeed.MakeSeed("corn"), ref CS$<>8__locals1).SetNum(4 + EClass.rnd(4));
2396 for (int j = 0; j < EClass.rnd(3) + 1; j++)
2397 {
2398 this.<OnBarter>g__Add|342_0("462", 1, 0, ref CS$<>8__locals1);
2399 }
2400 for (int k = 0; k < EClass.rnd(3) + 1; k++)
2401 {
2402 this.<OnBarter>g__Add|342_0("1167", 1, 0, ref CS$<>8__locals1);
2403 }
2404 goto IL_E0E;
2405 case ShopType.RedBook:
2406 for (int l = 0; l < 30; l++)
2407 {
2408 this.<OnBarter>g__AddThing|342_1(ThingGen.CreateFromCategory("book", -1), ref CS$<>8__locals1);
2409 }
2410 goto IL_E0E;
2411 case ShopType.Casino:
2412 this.<OnBarter>g__Add|342_0("chest_tax", 1, 0, ref CS$<>8__locals1);
2413 this.<OnBarter>g__Add|342_0("1165", 1, 0, ref CS$<>8__locals1);
2414 this.<OnBarter>g__Add|342_0("monsterball", 1, 0, ref CS$<>8__locals1).SetNum(3).SetLv(10);
2415 this.<OnBarter>g__Add|342_0("1175", 1, 0, ref CS$<>8__locals1);
2416 this.<OnBarter>g__Add|342_0("1176", 1, 0, ref CS$<>8__locals1);
2417 this.<OnBarter>g__Add|342_0("pillow_ehekatl", 1, 0, ref CS$<>8__locals1);
2418 this.<OnBarter>g__Add|342_0("grave_dagger1", 1, 0, ref CS$<>8__locals1);
2419 this.<OnBarter>g__Add|342_0("grave_dagger2", 1, 0, ref CS$<>8__locals1);
2420 this.<OnBarter>g__Add|342_0("434", 1, 0, ref CS$<>8__locals1);
2421 this.<OnBarter>g__Add|342_0("433", 1, 0, ref CS$<>8__locals1);
2422 this.<OnBarter>g__Add|342_0("714", 1, 0, ref CS$<>8__locals1);
2423 this.<OnBarter>g__Add|342_0("1017", 1, 0, ref CS$<>8__locals1);
2424 this.<OnBarter>g__Add|342_0("1155", 1, 0, ref CS$<>8__locals1);
2425 this.<OnBarter>g__Add|342_0("1011", 1, 0, ref CS$<>8__locals1);
2426 this.<OnBarter>g__AddThing|342_1(ThingGen.CreatePerfume(9500, 5), ref CS$<>8__locals1);
2427 this.<OnBarter>g__AddThing|342_1(ThingGen.CreatePerfume(9501, 5), ref CS$<>8__locals1);
2428 this.<OnBarter>g__AddThing|342_1(ThingGen.CreatePerfume(9502, 5), ref CS$<>8__locals1);
2429 for (int m = 0; m < 5; m++)
2430 {
2431 Thing thing3 = ThingGen.CreateFromCategory("seasoning", -1).SetNum(10);
2432 thing3.elements.SetBase(2, 40, 0);
2433 thing3.c_priceFix = 1000;
2434 this.<OnBarter>g__AddThing|342_1(thing3, ref CS$<>8__locals1);
2435 }
2436 goto IL_E0E;
2437 case ShopType.Loytel:
2438 this.<OnBarter>g__Add|342_0("board_map", 1, 0, ref CS$<>8__locals1);
2439 this.<OnBarter>g__Add|342_0("board_build", 1, 0, ref CS$<>8__locals1);
2440 this.<OnBarter>g__Add|342_0("book_resident", 1, 0, ref CS$<>8__locals1);
2441 this.<OnBarter>g__Add|342_0("3", 1, 0, ref CS$<>8__locals1);
2442 this.<OnBarter>g__Add|342_0("4", 1, 0, ref CS$<>8__locals1);
2443 this.<OnBarter>g__Add|342_0("5", 1, 0, ref CS$<>8__locals1);
2444 this.<OnBarter>g__AddThing|342_1(ThingGen.CreatePlan(2512), ref CS$<>8__locals1);
2445 this.<OnBarter>g__AddThing|342_1(ThingGen.CreatePlan(2810), ref CS$<>8__locals1);
2446 this.<OnBarter>g__NoRestock|342_2(ThingGen.Create("rp_block", -1, -1).SetLv(1).SetNum(10), ref CS$<>8__locals1);
2447 if (EClass.game.quests.GetPhase<QuestVernis>() >= 3)
2448 {
2449 this.<OnBarter>g__NoRestock|342_2(ThingGen.CreateRecipe("explosive"), ref CS$<>8__locals1);
2450 goto IL_E0E;
2451 }
2452 goto IL_E0E;
2453 case ShopType.Specific:
2454 break;
2455 case ShopType.Copy:
2456 {
2457 Thing c_copyContainer = this.owner.c_copyContainer;
2458 if (c_copyContainer == null)
2459 {
2460 goto IL_E0E;
2461 }
2462 int num = 0;
2463 using (List<Thing>.Enumerator enumerator = c_copyContainer.things.GetEnumerator())
2464 {
2465 while (enumerator.MoveNext())
2466 {
2467 Thing thing4 = enumerator.Current;
2468 if (this.owner.trait.CanCopy(thing4))
2469 {
2470 Thing thing5 = thing4.Duplicate(1);
2471 thing5.isStolen = false;
2472 thing5.isCopy = true;
2473 int num2 = 1;
2474 Trait.CopyShopType copyShop = this.owner.trait.CopyShop;
2475 if (copyShop != Trait.CopyShopType.Item)
2476 {
2477 if (copyShop == Trait.CopyShopType.Spellbook)
2478 {
2479 thing5.c_charges = thing4.c_charges;
2480 }
2481 }
2482 else
2483 {
2484 num2 = (1000 + this.owner.c_invest * 100) / (thing5.GetPrice(CurrencyType.Money, false, PriceType.Default, null) + 50);
2485 foreach (int ele in new int[]
2486 {
2487 701,
2488 704,
2489 703,
2490 702
2491 })
2492 {
2493 if (thing5.HasElement(ele, 1))
2494 {
2495 num2 = 1;
2496 }
2497 }
2498 }
2499 if (num2 > 1 && thing5.trait.CanStack)
2500 {
2501 thing5.SetNum(num2);
2502 }
2503 this.<OnBarter>g__AddThing|342_1(thing5, ref CS$<>8__locals1);
2504 num++;
2505 if (num > this.owner.trait.NumCopyItem)
2506 {
2507 break;
2508 }
2509 }
2510 }
2511 goto IL_E0E;
2512 }
2513 break;
2514 }
2515 case ShopType.Plat:
2516 this.<OnBarter>g__NoRestock|342_2(ThingGen.Create("lucky_coin", -1, -1).SetNum(10), ref CS$<>8__locals1);
2517 goto IL_E0E;
2518 default:
2519 goto IL_D81;
2520 }
2521 id = this.owner.id;
2522 if (id == "mogu")
2523 {
2524 this.<OnBarter>g__AddThing|342_1(ThingGen.Create("casino_coin", -1, -1).SetNum(5000), ref CS$<>8__locals1);
2525 goto IL_E0E;
2526 }
2527 if (!(id == "felmera"))
2528 {
2529 goto IL_E0E;
2530 }
2531 using (List<Thing>.Enumerator enumerator = new DramaOutcome().ListFelmeraBarter().GetEnumerator())
2532 {
2533 while (enumerator.MoveNext())
2534 {
2535 Thing t = enumerator.Current;
2536 this.<OnBarter>g__AddThing|342_1(t, ref CS$<>8__locals1);
2537 }
2538 goto IL_E0E;
2539 }
2540 IL_38A:
2541 this.<OnBarter>g__Add|342_0("deed", 1, 0, ref CS$<>8__locals1);
2542 this.<OnBarter>g__Add|342_0("deed_move", 2 + EClass.rnd(5), 0, ref CS$<>8__locals1);
2543 this.<OnBarter>g__Add|342_0("license_void", 1, 0, ref CS$<>8__locals1);
2544 this.<OnBarter>g__Add|342_0("license_adv", 1, 0, ref CS$<>8__locals1);
2545 goto IL_E0E;
2546 }
2547 IL_D81:
2548 float num3 = (float)(3 + Mathf.Min(this.ShopLv / 5, 10)) + Mathf.Sqrt((float)this.ShopLv);
2549 num3 = num3 * (float)(100 + EClass.pc.Evalue(1406) * 5) / 100f;
2550 int num4 = 0;
2551 while ((float)num4 < num3)
2552 {
2553 Thing thing6 = this.CreateStock();
2554 if ((!(thing6.trait is TraitRod) || thing6.c_charges != 0) && thing6.GetPrice(CurrencyType.Money, false, PriceType.Default, null) > 0)
2555 {
2556 CS$<>8__locals1.t.AddThing(thing6, true, -1, -1);
2557 }
2558 num4++;
2559 }
2560 IL_E0E:
2561 foreach (RecipeSource recipeSource in RecipeManager.list)
2562 {
2563 if (!recipeSource.row.recipeKey.IsEmpty())
2564 {
2565 string[] recipeKey = recipeSource.row.recipeKey;
2566 for (int n = 0; n < recipeKey.Length; n++)
2567 {
2568 if (recipeKey[n] == this.ShopType.ToString())
2569 {
2570 this.<OnBarter>g__NoRestock|342_2(ThingGen.CreateRecipe(recipeSource.id), ref CS$<>8__locals1);
2571 break;
2572 }
2573 }
2574 }
2575 }
2576 shopType = this.ShopType;
2577 if (shopType <= ShopType.Festival)
2578 {
2579 if (shopType <= ShopType.Junk)
2580 {
2581 if (shopType != ShopType.Magic)
2582 {
2583 if (shopType != ShopType.Junk)
2584 {
2585 goto IL_1208;
2586 }
2587 }
2588 else
2589 {
2590 if ((EClass._zone.id == "lumiest" && EClass._zone.lv == 0) || (EClass._zone.id != "lumiest" && EClass.rnd(4) == 0))
2591 {
2592 CS$<>8__locals1.t.AddThing(ThingGen.Create("letter_trial", -1, -1), true, -1, -1);
2593 goto IL_1208;
2594 }
2595 goto IL_1208;
2596 }
2597 }
2598 else
2599 {
2600 if (shopType == ShopType.Food)
2601 {
2602 this.<OnBarter>g__Add|342_0("ration", 15 + EClass.rnd(15), 0, ref CS$<>8__locals1);
2603 goto IL_1208;
2604 }
2605 if (shopType != ShopType.Festival)
2606 {
2607 goto IL_1208;
2608 }
2609 if (!EClass._zone.IsFestival)
2610 {
2611 goto IL_1208;
2612 }
2613 this.<OnBarter>g__Add|342_0("1085", 1, 0, ref CS$<>8__locals1);
2614 if (EClass._zone.id == "noyel")
2615 {
2616 this.<OnBarter>g__Add|342_0("holyFeather", 1, 0, ref CS$<>8__locals1);
2617 goto IL_1208;
2618 }
2619 goto IL_1208;
2620 }
2621 }
2622 else if (shopType <= ShopType.Healer)
2623 {
2624 if (shopType == ShopType.Gun)
2625 {
2626 this.<OnBarter>g__Add|342_0("bullet", 1, 0, ref CS$<>8__locals1).SetNum(300 + EClass.rnd(100)).ChangeMaterial("iron");
2627 this.<OnBarter>g__Add|342_0("bullet_energy", 1, 0, ref CS$<>8__locals1).SetNum(100 + EClass.rnd(100)).ChangeMaterial("iron");
2628 goto IL_1208;
2629 }
2630 if (shopType != ShopType.Healer)
2631 {
2632 goto IL_1208;
2633 }
2634 this.<OnBarter>g__AddThing|342_1(ThingGen.CreatePotion(8400, 1).SetNum(4 + EClass.rnd(6)), ref CS$<>8__locals1);
2635 this.<OnBarter>g__AddThing|342_1(ThingGen.CreatePotion(8401, 1).SetNum(2 + EClass.rnd(4)), ref CS$<>8__locals1);
2636 this.<OnBarter>g__AddThing|342_1(ThingGen.CreatePotion(8402, 1).SetNum(1 + EClass.rnd(3)), ref CS$<>8__locals1);
2637 goto IL_1208;
2638 }
2639 else
2640 {
2641 if (shopType == ShopType.Ecopo)
2642 {
2643 this.<OnBarter>g__Add|342_0("ecomark", 5, 0, ref CS$<>8__locals1);
2644 this.<OnBarter>g__Add|342_0("1165", 1, 0, ref CS$<>8__locals1);
2645 this.<OnBarter>g__AddThing|342_1(ThingGen.CreateScroll(9160, 1).SetNum(5), ref CS$<>8__locals1);
2646 goto IL_1208;
2647 }
2648 if (shopType != ShopType.LoytelMart)
2649 {
2650 goto IL_1208;
2651 }
2652 }
2653 if (this.ShopType == ShopType.LoytelMart)
2654 {
2655 this.<OnBarter>g__Add|342_0("ticket_massage", 1, 0, ref CS$<>8__locals1);
2656 this.<OnBarter>g__Add|342_0("ticket_armpillow", 1, 0, ref CS$<>8__locals1);
2657 this.<OnBarter>g__Add|342_0("ticket_champagne", 1, 0, ref CS$<>8__locals1);
2658 }
2659 for (int num5 = 0; num5 < (EClass.debug.enable ? 30 : 3); num5++)
2660 {
2661 if (EClass.rnd(5) == 0)
2662 {
2663 TreasureType treasureType = (EClass.rnd(10) == 0) ? TreasureType.BossNefia : ((EClass.rnd(10) == 0) ? TreasureType.Map : TreasureType.RandomChest);
2664 int num6 = EClass.rnd(EClass.rnd(this.ShopLv + (EClass.debug.enable ? 200 : 50)) + 1) + 1;
2665 Thing thing7 = ThingGen.Create((treasureType == TreasureType.BossNefia) ? "chest_boss" : ((treasureType == TreasureType.Map) ? "chest_treasure" : "chest3"), -1, -1);
2666 thing7.c_lockedHard = true;
2667 thing7.c_lockLv = num6;
2668 thing7.c_priceAdd = 2000 + num6 * 250 * ((treasureType != TreasureType.RandomChest) ? 5 : 1);
2669 thing7.c_revealLock = true;
2670 ThingGen.CreateTreasureContent(thing7, num6, treasureType, true);
2671 this.<OnBarter>g__AddThing|342_1(thing7, ref CS$<>8__locals1);
2672 }
2673 }
2674 IL_1208:
2675 shopType = this.ShopType;
2676 if (shopType == ShopType.General || shopType == ShopType.Food || shopType == ShopType.Festival)
2677 {
2678 for (int num7 = 0; num7 < (EClass.debug.enable ? 30 : 3); num7++)
2679 {
2680 if (EClass.rnd(3) == 0)
2681 {
2682 int lv = EClass.rnd(EClass.rnd(this.ShopLv + (EClass.debug.enable ? 200 : 50)) + 1) + 1;
2683 Thing t2 = ThingGen.Create("chest_gamble", -1, lv).SetNum(1 + EClass.rnd(20));
2684 this.<OnBarter>g__AddThing|342_1(t2, ref CS$<>8__locals1);
2685 }
2686 }
2687 }
2688 id = this.owner.id;
2689 if (!(id == "rodwyn"))
2690 {
2691 if (!(id == "girl_blue"))
2692 {
2693 if (id == "nola")
2694 {
2695 this.<OnBarter>g__AddThing|342_1(ThingGen.CreateRecipe("ic").SetPriceFix(400), ref CS$<>8__locals1);
2696 this.<OnBarter>g__AddThing|342_1(ThingGen.CreateRecipe("bullet").SetPriceFix(300), ref CS$<>8__locals1);
2697 this.<OnBarter>g__AddThing|342_1(ThingGen.CreateRecipe("break_powder").SetPriceFix(1000), ref CS$<>8__locals1);
2698 this.<OnBarter>g__AddThing|342_1(ThingGen.CreateRecipe("quarrel").SetPriceFix(100), ref CS$<>8__locals1);
2699 this.<OnBarter>g__AddThing|342_1(ThingGen.CreateRecipe("1099").SetPriceFix(400), ref CS$<>8__locals1);
2700 this.<OnBarter>g__AddThing|342_1(ThingGen.CreateRecipe("detector").SetPriceFix(700), ref CS$<>8__locals1);
2701 this.<OnBarter>g__AddThing|342_1(ThingGen.CreatePlan(2710), ref CS$<>8__locals1).SetPriceFix(-100);
2702 }
2703 }
2704 else
2705 {
2706 this.<OnBarter>g__Add|342_0("779", 1 + EClass.rnd(3), 0, ref CS$<>8__locals1);
2707 }
2708 }
2709 else
2710 {
2711 this.<OnBarter>g__AddThing|342_1(ThingGen.CreateSpellbook(8790, 1), ref CS$<>8__locals1);
2712 this.<OnBarter>g__AddThing|342_1(ThingGen.CreatePotion(8791, 1).SetNum(3 + EClass.rnd(3)), ref CS$<>8__locals1);
2713 }
2714 if (Guild.Thief.IsCurrentZone)
2715 {
2716 this.<OnBarter>g__Add|342_0("lockpick", 1, 0, ref CS$<>8__locals1);
2717 if (EClass.rnd(2) == 0)
2718 {
2719 this.<OnBarter>g__Add|342_0("lockpick", 1, 0, ref CS$<>8__locals1);
2720 }
2721 this.<OnBarter>g__AddThing|342_1(ThingGen.CreateScroll(8780, EClass.rndHalf(5)), ref CS$<>8__locals1);
2722 }
2723 foreach (Thing thing8 in CS$<>8__locals1.t.things)
2724 {
2725 thing8.c_idBacker = 0;
2726 if (this.ShopType != ShopType.Copy)
2727 {
2728 thing8.TryMakeRandomItem(this.ShopLv);
2729 if (thing8.Num == 1)
2730 {
2731 thing8.SetNum(thing8.trait.DefaultStock);
2732 }
2733 if (thing8.trait is TraitFoodMeal)
2734 {
2735 CraftUtil.MakeDish(thing8, this.ShopLv);
2736 }
2737 if (thing8.IsFood && this.owner.id == "rodwyn")
2738 {
2739 SourceElement.Row row = (from e in EClass.sources.elements.rows
2740 where !e.foodEffect.IsEmpty() && e.category != "feat"
2741 select e).RandomItem<SourceElement.Row>();
2742 thing8.elements.SetBase(row.id, 10 + EClass.rnd(10), 0);
2743 }
2744 }
2745 if (this.CurrencyType == CurrencyType.Casino_coin)
2746 {
2747 thing8.noSell = true;
2748 }
2749 if (Guild.Thief.IsCurrentZone)
2750 {
2751 thing8.isStolen = true;
2752 }
2753 if (this.CurrencyType == CurrencyType.Money || !thing8.IsUnique)
2754 {
2755 thing8.c_IDTState = 0;
2756 }
2757 if (this.CurrencyType == CurrencyType.Money && (thing8.category.IsChildOf("meal") || thing8.category.IsChildOf("preserved")))
2758 {
2759 thing8.c_priceFix = -70;
2760 }
2761 if (thing8.trait is TraitErohon)
2762 {
2763 thing8.c_IDTState = 5;
2764 }
2765 if (thing8.IsContainer && !thing8.c_revealLock)
2766 {
2767 thing8.RemoveThings();
2768 CS$<>8__locals1.t.c_lockLv = 0;
2769 }
2770 }
2771 if (CS$<>8__locals1.t.things.Count > CS$<>8__locals1.t.things.GridSize)
2772 {
2773 int num8 = CS$<>8__locals1.t.things.width * 10;
2774 if (CS$<>8__locals1.t.things.Count > num8)
2775 {
2776 int num9 = CS$<>8__locals1.t.things.Count - num8;
2777 for (int num10 = 0; num10 < num9; num10++)
2778 {
2779 CS$<>8__locals1.t.things.LastItem<Thing>().Destroy();
2780 }
2781 }
2782 CS$<>8__locals1.t.things.ChangeSize(CS$<>8__locals1.t.things.width, Mathf.Min(CS$<>8__locals1.t.things.Count / CS$<>8__locals1.t.things.width + 1, 10));
2783 }
2784 }
2785
2786 // Token: 0x06001945 RID: 6469 RVA: 0x000A18F4 File Offset: 0x0009FAF4
2787 public Thing CreateStock()
2788 {
2789 switch (this.ShopType)
2790 {
2791 case ShopType.GeneralExotic:
2792 return this.<CreateStock>g__FromFilter|343_1("shop_generalExotic");
2793 case ShopType.Map:
2794 return ThingGen.CreateMap(null, -1);
2795 case ShopType.Plan:
2796 return this.<CreateStock>g__Create|343_3("book_plan");
2797 case ShopType.Weapon:
2798 return this.<CreateStock>g__FromFilter|343_1("shop_weapon");
2799 case ShopType.Bread:
2800 if (EClass.rnd(2) == 0)
2801 {
2802 return this.<CreateStock>g__Create|343_3("dough");
2803 }
2804 return this.<CreateStock>g__FromFilter|343_1("shop_bread");
2805 case ShopType.Furniture:
2806 return this.<CreateStock>g__FromFilter|343_1("shop_furniture");
2807 case ShopType.Magic:
2808 return this.<CreateStock>g__FromFilter|343_1("shop_magic");
2809 case ShopType.Blackmarket:
2810 case ShopType.Exotic:
2811 {
2812 int a = 30;
2813 if (Guild.Thief.IsCurrentZone)
2814 {
2815 a = 25;
2816 }
2817 if (Guild.Merchant.IsCurrentZone)
2818 {
2819 a = 15;
2820 }
2821 CardBlueprint.SetRarity((EClass.rnd(a) == 0) ? Rarity.Legendary : ((EClass.rnd(5) == 0) ? Rarity.Superior : Rarity.Normal));
2822 return this.<CreateStock>g__FromFilter|343_1("shop_blackmarket");
2823 }
2824 case ShopType.Meat:
2825 if (EClass.rnd(5) == 0)
2826 {
2827 return this.<CreateStock>g__Create|343_3("seasoning");
2828 }
2829 return this.<CreateStock>g__FromFilter|343_1("shop_meat");
2830 case ShopType.Fish:
2831 if (EClass.rnd(2) == 0)
2832 {
2833 return this.<CreateStock>g__Create|343_3("bait");
2834 }
2835 if (EClass.rnd(3) == 0)
2836 {
2837 return this.<CreateStock>g__Create|343_3("fishingRod");
2838 }
2839 return this.<CreateStock>g__FromFilter|343_1("shop_fish");
2840 case ShopType.Book:
2841 return this.<CreateStock>g__FromFilter|343_1("shop_book");
2842 case ShopType.Souvenir:
2843 return this.<CreateStock>g__FromFilter|343_1("shop_souvenir");
2844 case ShopType.Junk:
2845 return this.<CreateStock>g__FromFilter|343_1("shop_junk");
2846 case ShopType.Drug:
2847 return this.<CreateStock>g__FromFilter|343_1("shop_drug");
2848 case ShopType.Drink:
2849 return this.<CreateStock>g__FromFilter|343_1("shop_drink");
2850 case ShopType.Fruit:
2851 return this.<CreateStock>g__FromFilter|343_1("shop_fruit");
2852 case ShopType.Booze:
2853 return this.<CreateStock>g__FromFilter|343_1("shop_booze");
2854 case ShopType.Food:
2855 if (EClass.rnd(5) == 0)
2856 {
2857 return this.<CreateStock>g__Create|343_3("seasoning");
2858 }
2859 return this.<CreateStock>g__FromFilter|343_1("shop_food");
2860 case ShopType.VMachine:
2861 if (EClass.rnd(10) == 0)
2862 {
2863 return this.<CreateStock>g__Create|343_3("panty");
2864 }
2865 if (EClass.rnd(5) == 0)
2866 {
2867 return this.<CreateStock>g__Create|343_3("234");
2868 }
2869 return this.<CreateStock>g__FromFilter|343_1("shop_drink");
2870 case ShopType.Festival:
2871 if (EClass.rnd(3) == 0)
2872 {
2873 if (Trait.<CreateStock>g__IsFestival|343_0("olvina"))
2874 {
2875 return this.<CreateStock>g__Create|343_3(new string[]
2876 {
2877 "1125",
2878 "1126"
2879 }.RandomItem<string>());
2880 }
2881 if (Trait.<CreateStock>g__IsFestival|343_0("yowyn"))
2882 {
2883 return this.<CreateStock>g__Create|343_3(new string[]
2884 {
2885 "hat_mushroom",
2886 "hat_witch",
2887 "hat_kumiromi"
2888 }.RandomItem<string>());
2889 }
2890 if (Trait.<CreateStock>g__IsFestival|343_0("noyel"))
2891 {
2892 return this.<CreateStock>g__Create|343_3(new string[]
2893 {
2894 "1127",
2895 "1128"
2896 }.RandomItem<string>());
2897 }
2898 }
2899 if (EClass.rnd(2) == 0)
2900 {
2901 return this.<CreateStock>g__Create|343_3(new string[]
2902 {
2903 "1081",
2904 "1082",
2905 "1083",
2906 "1084"
2907 }.RandomItem<string>());
2908 }
2909 if (EClass.rnd(3) == 0)
2910 {
2911 return this.<CreateStock>g__FromFilter|343_1("shop_junk");
2912 }
2913 return this.<CreateStock>g__FromFilter|343_1("shop_souvenir");
2914 case ShopType.Fireworks:
2915 if (EClass.rnd(3) == 0)
2916 {
2917 return this.<CreateStock>g__Create|343_3("firework_launcher");
2918 }
2919 return this.<CreateStock>g__Create|343_3("firework");
2920 case ShopType.Lamp:
2921 if (EClass.rnd(3) != 0)
2922 {
2923 if (Trait.<CreateStock>g__IsFestival|343_0("kapul"))
2924 {
2925 return this.<CreateStock>g__Create|343_3(new string[]
2926 {
2927 "999",
2928 "1000",
2929 "1001",
2930 "1002",
2931 "1003",
2932 "1004"
2933 }.RandomItem<string>());
2934 }
2935 if (Trait.<CreateStock>g__IsFestival|343_0("yowyn"))
2936 {
2937 return this.<CreateStock>g__Create|343_3(new string[]
2938 {
2939 "1072",
2940 "1073"
2941 }.RandomItem<string>());
2942 }
2943 if (Trait.<CreateStock>g__IsFestival|343_0("noyel"))
2944 {
2945 return this.<CreateStock>g__Create|343_3(new string[]
2946 {
2947 "1069"
2948 }.RandomItem<string>());
2949 }
2950 if (Trait.<CreateStock>g__IsFestival|343_0("olvina"))
2951 {
2952 return this.<CreateStock>g__Create|343_3(new string[]
2953 {
2954 "1070",
2955 "1071"
2956 }.RandomItem<string>());
2957 }
2958 }
2959 if (EClass._zone.IsFestival && EClass.rnd(2) == 0)
2960 {
2961 return this.<CreateStock>g__Create|343_3(new string[]
2962 {
2963 "953",
2964 "954",
2965 "955",
2966 "956"
2967 }.RandomItem<string>());
2968 }
2969 return this.<CreateStock>g__FromFilter|343_1("shop_lamp");
2970 case ShopType.Gun:
2971 if (EClass.rnd(8) == 0)
2972 {
2973 return this.<CreateStock>g__Create|343_3("mod_ranged");
2974 }
2975 return this.<CreateStock>g__FromFilter|343_1("shop_gun");
2976 case ShopType.Dye:
2977 {
2978 Thing thing = ThingGen.Create("dye", -1, -1).SetNum(15 + EClass.rnd(30));
2979 thing.ChangeMaterial(EClass.sources.materials.rows.RandomItem<SourceMaterial.Row>().alias);
2980 return thing;
2981 }
2982 case ShopType.Healer:
2983 {
2984 Thing thing2 = null;
2985 for (int i = 0; i < 1000; i++)
2986 {
2987 thing2 = this.<CreateStock>g__FromFilter|343_1("shop_healer");
2988 TraitScroll traitScroll = thing2.trait as TraitScroll;
2989 if (traitScroll != null && traitScroll.source != null)
2990 {
2991 if (!(traitScroll.source.aliasParent != "WIL"))
2992 {
2993 if (!(traitScroll.source.categorySub == "attack"))
2994 {
2995 break;
2996 }
2997 }
2998 }
2999 else
3000 {
3001 TraitPotionRandom traitPotionRandom = thing2.trait as TraitPotionRandom;
3002 if (traitPotionRandom != null && traitPotionRandom.source != null)
3003 {
3004 if (!(traitPotionRandom.source.aliasParent != "WIL") && !(traitPotionRandom.source.categorySub == "attack"))
3005 {
3006 thing2.SetNum(EClass.rnd(5) + 1);
3007 break;
3008 }
3009 }
3010 else
3011 {
3012 TraitRodRandom traitRodRandom = thing2.trait as TraitRodRandom;
3013 if (traitRodRandom != null && traitRodRandom.source != null && !(traitRodRandom.source.aliasParent != "WIL") && !(traitRodRandom.source.categorySub == "attack"))
3014 {
3015 break;
3016 }
3017 }
3018 }
3019 }
3020 return thing2;
3021 }
3022 case ShopType.Milk:
3023 if (EClass._zone is Zone_Nefu && EClass.rnd(2) == 0)
3024 {
3025 Thing thing3 = ThingGen.Create("milk", -1, -1);
3026 thing3.MakeRefFrom((from r in EClass.sources.charas.rows
3027 where r.race == "mifu" || r.race == "nefu"
3028 select r).RandomItem<SourceChara.Row>().model, null);
3029 Debug.Log(thing3);
3030 return thing3;
3031 }
3032 return this.<CreateStock>g__Create|343_3("milk");
3033 case ShopType.Ecopo:
3034 {
3035 Thing thing4 = TraitSeed.MakeRandomSeed(true);
3036 TraitSeed.LevelSeed(thing4, (thing4.trait as TraitSeed).row, 1);
3037 return thing4;
3038 }
3039 case ShopType.LoytelMart:
3040 if (EClass.player.flags.loytelMartLv >= 1)
3041 {
3042 if (EClass.rnd(10) == 0)
3043 {
3044 return this.<CreateStock>g__Create|343_3("monsterball").SetLv(40 + EClass.rnd(this.ShopLv)).Thing;
3045 }
3046 if (EClass.rnd(30) == 0)
3047 {
3048 return ThingGen.Create("rp_random", -1, this.ShopLv + 10);
3049 }
3050 if (EClass.rnd(100) == 0)
3051 {
3052 return ThingGen.Create("map_treasure", -1, EClass.rndHalf(this.ShopLv));
3053 }
3054 if (EClass.rnd(40) == 0)
3055 {
3056 return this.<CreateStock>g__Create|343_3("water").SetPriceFix(1000);
3057 }
3058 if (EClass.rnd(EClass.debug.enable ? 20 : 1000) == 0)
3059 {
3060 return this.<CreateStock>g__Create|343_3("1165");
3061 }
3062 }
3063 return this.<CreateStock>g__FromFilter|343_1("shop_junk");
3064 case ShopType.StrangeGirl:
3065 return DNA.GenerateGene(SpawnList.Get("chara", null, null).Select(this.ShopLv + 10, -1), new DNA.Type?(DNA.Type.Brain), -1, -1);
3066 }
3067 if (EClass.rnd(100) == 0)
3068 {
3069 return this.<CreateStock>g__Create|343_3("lockpick");
3070 }
3071 return this.<CreateStock>g__FromFilter|343_1("shop_general");
3072 }
3073
3074 // Token: 0x0600194E RID: 6478 RVA: 0x000A2184 File Offset: 0x000A0384
3075 [CompilerGenerated]
3076 private Thing <OnBarter>g__Add|342_0(string id, int a, int idSkin, ref Trait.<>c__DisplayClass342_0 A_4)
3077 {
3078 CardBlueprint.SetNormalRarity(false);
3079 Thing thing = ThingGen.Create(id, -1, this.ShopLv).SetNum(a);
3080 thing.idSkin = idSkin;
3081 return A_4.t.AddThing(thing, true, -1, -1);
3082 }
3083
3084 // Token: 0x0600194F RID: 6479 RVA: 0x000A21C2 File Offset: 0x000A03C2
3085 [CompilerGenerated]
3086 private Thing <OnBarter>g__AddThing|342_1(Thing _t, ref Trait.<>c__DisplayClass342_0 A_2)
3087 {
3088 return A_2.t.AddThing(_t, true, -1, -1);
3089 }
3090
3091 // Token: 0x06001950 RID: 6480 RVA: 0x000A21D4 File Offset: 0x000A03D4
3092 [CompilerGenerated]
3093 private void <OnBarter>g__NoRestock|342_2(Thing _t, ref Trait.<>c__DisplayClass342_0 A_2)
3094 {
3095 HashSet<string> hashSet = EClass.player.noRestocks.TryGetValue(this.owner.id, null);
3096 if (hashSet == null)
3097 {
3098 hashSet = new HashSet<string>();
3099 }
3100 if (hashSet.Contains(_t.trait.IdNoRestock))
3101 {
3102 return;
3103 }
3104 hashSet.Add(_t.trait.IdNoRestock);
3105 EClass.player.noRestocks[this.owner.id] = hashSet;
3106 _t.SetInt(101, 1);
3107 this.<OnBarter>g__AddThing|342_1(_t, ref A_2);
3108 }
3109
3110 // Token: 0x06001951 RID: 6481 RVA: 0x000A2259 File Offset: 0x000A0459
3111 [CompilerGenerated]
3112 internal static bool <CreateStock>g__IsFestival|343_0(string id)
3113 {
3114 return EClass._zone.id == id && EClass._zone.IsFestival;
3115 }
3116
3117 // Token: 0x06001952 RID: 6482 RVA: 0x000A2279 File Offset: 0x000A0479
3118 [CompilerGenerated]
3119 private Thing <CreateStock>g__FromFilter|343_1(string s)
3120 {
3121 return ThingGen.CreateFromFilter(s, this.ShopLv);
3122 }
3123
3124 // Token: 0x06001953 RID: 6483 RVA: 0x000A2287 File Offset: 0x000A0487
3125 [CompilerGenerated]
3126 private Thing <CreateStock>g__FromCat|343_2(string s)
3127 {
3128 return ThingGen.CreateFromCategory(s, this.ShopLv);
3129 }
3130
3131 // Token: 0x06001954 RID: 6484 RVA: 0x000A2295 File Offset: 0x000A0495
3132 [CompilerGenerated]
3133 private Thing <CreateStock>g__Create|343_3(string s)
3134 {
3135 return ThingGen.Create(s, -1, this.ShopLv);
3136 }
3137
3138 // Token: 0x040010AC RID: 4268
3139 public static TraitSelfFactory SelfFactory = new TraitSelfFactory();
3140
3141 // Token: 0x040010AD RID: 4269
3142 public Card owner;
3143
3144 // Token: 0x040010AE RID: 4270
3145 protected static List<Point> listRadiusPoints = new List<Point>();
3146
3147 // Token: 0x02000988 RID: 2440
3148 public enum TileMode
3149 {
3150 // Token: 0x040027E5 RID: 10213
3151 Default,
3152 // Token: 0x040027E6 RID: 10214
3153 Door,
3154 // Token: 0x040027E7 RID: 10215
3155 Illumination,
3156 // Token: 0x040027E8 RID: 10216
3157 DefaultNoAnime
3158 }
3159
3160 // Token: 0x02000989 RID: 2441
3161 public enum CopyShopType
3162 {
3163 // Token: 0x040027EA RID: 10218
3164 None,
3165 // Token: 0x040027EB RID: 10219
3166 Item,
3167 // Token: 0x040027EC RID: 10220
3168 Spellbook
3169 }
3170}
Definition Card.cs:13
Definition Chara.cs:12
Definition DNA.cs:9
Definition Date.cs:6
Definition Guild.cs:5
Definition Los.cs:6
Definition Msg.cs:7
Definition Point.cs:11
Definition Room.cs:6
Definition Thing.cs:10
Definition Trait.cs:9