Elin Decompiled Documentation EA 23.303 Nightly
Loading...
Searching...
No Matches
Trait Class Reference
Inheritance diagram for Trait:
EClass TraitASMR TraitAltar TraitAltarChaos TraitBall TraitBaseContainer TraitBath TraitBed TraitBill TraitBlanket TraitBoard TraitBoat TraitCanvas TraitChair TraitChara TraitClock TraitComputer TraitCoreDefense TraitCoreUser TraitCoreZone TraitCrafter TraitCurrency TraitCurtain TraitDeedWedding TraitDice TraitDoor TraitDoorBell TraitDoorBoat TraitDoorFrame TraitDreamBug TraitDresser TraitDrink TraitDye TraitEQ TraitEcoMark TraitEditorSign TraitEternalMonument TraitFakeTile TraitFertilizer TraitFigure TraitFlyer TraitFood TraitFortuneBall TraitGacha TraitGene TraitGenerator TraitGeyser TraitGrave TraitHarvest TraitHoard TraitIllumination TraitIncinerator TraitItem TraitLetterOfWill TraitLever TraitLockpick TraitMiniPool TraitMirror TraitMonsterBall TraitMoongate TraitNewZone TraitNote TraitPaint TraitParasol TraitPetHouse TraitPillow TraitPlamo TraitPunishBall TraitResourceMain TraitRoadSign TraitSack TraitSalesTag TraitScroll TraitSeed TraitShackle TraitShowcase TraitSnow TraitSpeaker TraitSpot TraitSpotExit TraitSpotSearch TraitSpotSpawn TraitStairsCover TraitSwing TraitSwitch TraitSyringe TraitThrown TraitTicketFurniture TraitTicketMassage TraitTile TraitTool TraitTorch TraitTrainingDummy TraitTravel TraitTreeEther TraitVoidgate TraitWaystone TraitWell TraitWindow TraitWrench

Public Types

enum  TileMode {
  Default , Door , Illumination , DefaultNoAnime ,
  SignalAnime , FakeBlock , FakeObj
}
 
enum  CopyShopType { None , Item , Spellbook }
 

Public Member Functions

string GetParam (int i, string def=null)
 
int GetParamInt (int i, int def)
 
virtual SourcePref GetPref ()
 
virtual RenderData GetRenderData ()
 
virtual bool Contains (RecipeSource r)
 
virtual int GetValue ()
 
virtual bool CanStackTo (Thing to)
 
virtual string GetHoverText ()
 
virtual Action GetHealAction (Chara c)
 
virtual bool CanBlend (Thing t)
 
virtual void OnBlend (Thing t, Chara c)
 
virtual int GetActDuration (Chara c)
 
virtual SourceElement.Row GetRefElement ()
 
virtual Sprite GetRefSprite ()
 
virtual void OnRenderExtra (RenderParam p)
 
virtual Emo2 GetHeldEmo (Chara c)
 
virtual void SetOwner (Card _owner)
 
virtual bool IdleUse (Chara c, int dist)
 
virtual void OnSetOwner ()
 
virtual void OnImportMap ()
 
virtual void SetParams (params string[] s)
 
virtual void OnCrafted (Recipe recipe, List< Thing > ings)
 
virtual void OnCreate (int lv)
 
virtual void OnEquip (Chara c, bool onSetOwner)
 
virtual void OnUnequip (Chara c)
 
virtual void OnChangePlaceState (PlaceState state)
 
virtual void OnAddedToZone ()
 
virtual void OnRemovedFromZone ()
 
virtual void OnSimulateHour (VirtualDate date)
 
virtual string GetName ()
 
virtual void SetName (ref string s)
 
virtual void OnRenderTile (Point point, HitResult result, int dir)
 
virtual int CompareTo (Card b)
 
virtual bool CanBuiltAt (Point p)
 
virtual void Update ()
 
Point GetPoint ()
 
Point GetRandomPoint (Func< Point, bool > func=null, Chara accessChara=null)
 
virtual List< PointListPoints (Point center=null, bool onlyPassable=true)
 
virtual Recipe GetRecipe ()
 
virtual Recipe GetBuildModeRecipe ()
 
virtual bool CanCook (Card c)
 
void CookProgress ()
 
virtual bool CanOffer (Card tg)
 
void OfferProcess (Chara cc)
 
void Offer (Chara cc)
 
virtual bool TryProgress (AIProgress p)
 
virtual LockOpenState TryOpenLock (Chara cc, bool msgFail=true)
 
virtual LockOpenState TryPryOpenLock (Chara cc, bool msgFail=true)
 
void DamageRandomProperty (Chara cc)
 
virtual void OnLockOpen (Chara cc)
 
virtual void WriteNote (UINote n, bool identified)
 
int GetSortVal (UIList.SortMode m)
 
virtual HotItem GetHotItem ()
 
virtual bool CanRead (Chara c)
 
virtual void OnRead (Chara c)
 
virtual bool CanEat (Chara c)
 
virtual void OnEat (Chara c)
 
virtual bool CanDrink (Chara c)
 
virtual void OnDrink (Chara c)
 
virtual void OnThrowGround (Chara c, Point p)
 
virtual bool CanUse (Chara c)
 
virtual bool CanUse (Chara c, Card tg)
 
virtual bool CanUse (Chara c, Point p)
 
virtual bool OnUse (Chara c)
 
virtual bool OnUse (Chara c, Card tg)
 
virtual bool OnUse (Chara c, Point p)
 
virtual void TrySetAct (ActPlan p)
 
virtual void TrySetHeldAct (ActPlan p)
 
virtual void OnHeld ()
 
virtual void OnTickHeld ()
 
virtual void OnSetCurrentItem ()
 
virtual void OnUnsetCurrentItem ()
 
virtual bool OnChildDecay (Card c, bool firstDecay)
 
virtual bool CanChildDecay (Card c)
 
virtual void OnSetCardGrid (ButtonGrid b)
 
virtual void OnStepped (Chara c)
 
virtual void OnSteppedOut (Chara c)
 
virtual void OnOpenDoor (Chara c)
 
void Install (bool byPlayer)
 
void Uninstall ()
 
virtual void OnInstall (bool byPlayer)
 
virtual void OnUninstall ()
 
virtual void TryToggle ()
 
virtual void Toggle (bool on, bool silent=false)
 
virtual void PlayToggleEffect (bool silent)
 
virtual void OnToggle ()
 
virtual void TrySetToggleAct (ActPlan p)
 
bool IsFuelEnough (int num=1, List< Thing > excludes=null, bool tryRefuel=true)
 
bool IsFuel (string s)
 
bool IsFuel (Thing t)
 
int GetFuelValue (Thing t)
 
int GetFuelValue (string id)
 
void Refuel (Thing t)
 
void TryRefuel (int dest, List< Thing > excludes)
 
virtual void OnEnterScreen ()
 
virtual void RefreshRenderer ()
 
virtual void SetMainText (UIText t, bool hotitem)
 
virtual bool CanCopy (Thing t)
 
string GetTextRestock (string lang, bool pet)
 
Emo2 GetRestockedIcon ()
 
virtual void OnBarter (bool reroll=false)
 
Thing CreateStock ()
 

Public Attributes

Card owner
 

Static Public Attributes

static TraitSelfFactory SelfFactory = new TraitSelfFactory()
 
- Static Public Attributes inherited from EClass
static Core core
 

Static Protected Attributes

static List< PointlistRadiusPoints = new List<Point>()
 

Properties

string[] Params [get]
 
virtual byte WeightMod [get]
 
virtual int IdSkin [get]
 
virtual string Name [get]
 
virtual TileType tileType [get]
 
virtual RefCardName RefCardName [get]
 
virtual bool IsBlockPath [get]
 
virtual bool IsBlockSight [get]
 
virtual bool IsDoor [get]
 
virtual bool IsOpenSight [get]
 
virtual bool IsOpenPath [get]
 
virtual bool IsFloating [get]
 
virtual bool IsNoShop [get]
 
virtual bool IsGround [get]
 
virtual bool IsOnlyUsableByPc [get]
 
virtual bool InvertHeldSprite [get]
 
virtual bool IsChangeFloorHeight [get]
 
virtual bool ShouldRefreshTile [get]
 
virtual bool ShouldTryRefreshRoom [get]
 
virtual int InstallBottomPriority [get]
 
virtual bool CanHarvest [get]
 
virtual int radius [get]
 
virtual TraitRadiusType radiusType [get]
 
virtual bool CanUseRoomRadius [get]
 
virtual int GuidePriotiy [get]
 
virtual int OriginalElectricity [get]
 
virtual int Electricity [get]
 
virtual bool IgnoreLastStackHeight [get]
 
virtual int Decay [get]
 
virtual int DecaySpeed [get]
 
virtual int DecaySpeedChild [get]
 
virtual bool IsFridge [get]
 
virtual int DefaultStock [get]
 
virtual bool HoldAsDefaultInteraction [get]
 
virtual int CraftNum [get]
 
virtual bool ShowOrbit [get]
 
virtual bool HaveUpdate [get]
 
virtual bool IsSpot [get]
 
virtual bool IsFactory [get]
 
virtual bool CanAutofire [get]
 
virtual bool CanName [get]
 
virtual bool CanPutAway [get]
 
virtual bool CanChangeHeight [get]
 
virtual bool CanStack [get]
 
virtual bool CanCopyInBlueprint [get]
 
virtual bool CanBeAttacked [get]
 
virtual bool CanBeTeleported [get]
 
virtual bool CanExtendBuild [get]
 
virtual string langNote [get]
 
virtual string IDInvStyle [get]
 
virtual string IDActorEx [get]
 
virtual bool MaskOnBuild [get]
 
virtual bool ShowContextOnPick [get]
 
virtual bool IsThrowMainAction [get]
 
virtual bool LevelAsQuality [get]
 
virtual bool UseDummyTile [get]
 
virtual bool RequireFullStackCheck [get]
 
virtual bool DisableAutoCombat [get]
 
virtual InvGridSize InvGridSize [get]
 
virtual bool IsContainer [get]
 
virtual bool CanUseContent [get]
 
virtual bool CanSearchContent [get]
 
virtual bool CanOpenContainer [get]
 
virtual bool IsSpecialContainer [get]
 
virtual ContainerType ContainerType [get]
 
virtual ThrowType ThrowType [get]
 
virtual EffectDead EffectDead [get]
 
virtual bool IsHomeItem [get]
 
virtual bool IsAltar [get]
 
virtual bool IsRestSpot [get]
 
virtual bool CanBeMasked [get]
 
virtual bool IsLocalAct [get]
 
virtual bool IsBlendBase [get]
 
virtual bool CanBeOnlyBuiltInHome [get]
 
virtual bool CanBuildInTown [get]
 
virtual bool CanBeHeld [get]
 
virtual bool CanBeStolen [get]
 
virtual bool CanOnlyCarry [get]
 
virtual bool CanBeDestroyed [get]
 
virtual bool CanBeSmashedToDeath [get]
 
virtual bool CanBeHallucinated [get]
 
virtual bool CanBeDropped [get]
 
virtual string ReqHarvest [get]
 
virtual bool CanBeDisassembled [get]
 
virtual bool CanBeShipped [get]
 
virtual bool HasCharges [get]
 
virtual bool ShowCharges [get]
 
virtual bool ShowChildrenNumber [get]
 
virtual bool ShowAsTool [get]
 
virtual bool CanBeHeldAsFurniture [get]
 
virtual bool HideInAdv [get]
 
virtual bool NoHeldDir [get]
 
virtual bool AlwaysHideOnLowWall [get]
 
bool ExistsOnMap [get]
 
virtual bool RenderExtra [get]
 
virtual float DropChance [get]
 
virtual string IdNoRestock [get]
 
virtual int IdleUseChance [get]
 
virtual string RecipeCat [get]
 
virtual bool IsTool [get]
 
virtual string LangUse [get]
 
virtual bool IgnoreOnSteppedWhenMoving [get]
 
virtual bool IsOn [get]
 
virtual bool IsAnimeOn [get]
 
bool IsToggle [get]
 
virtual bool AutoToggle [get]
 
bool IsLighting [get]
 
virtual bool IsLightOn [get]
 
virtual bool IsNightOnlyLight [get]
 
virtual TileMode tileMode [get]
 
virtual bool UseAltTiles [get]
 
virtual bool UseLowblock [get]
 
virtual bool UseExtra [get]
 
virtual bool UseLightColor [get]
 
virtual ? Color ColorExtra [get]
 
virtual int MaxFuel [get]
 
virtual int FuelCost [get]
 
virtual bool ShowFuelWindow [get]
 
bool IsRequireFuel [get]
 
string IdToggleExtra [get]
 
virtual ToggleType ToggleType [get]
 
virtual string IdSoundToggleOn [get]
 
virtual string IdSoundToggleOff [get]
 
virtual int ShopLv [get]
 
virtual CopyShopType CopyShop [get]
 
virtual int NumCopyItem [get]
 
virtual ShopType ShopType [get]
 
virtual CurrencyType CurrencyType [get]
 
virtual PriceType PriceType [get]
 
virtual bool AllowSell [get]
 
virtual int CostRerollShop [get]
 
virtual bool AllowCriminal [get]
 
virtual int RestockDay [get]
 
virtual SlaverType SlaverType [get]
 
virtual string LangBarter [get]
 
virtual bool RemoveGlobalOnBanish [get]
 
virtual bool CanChangeAffinity [get]
 
string TextNextRestock [get]
 
string TextNextRestockPet [get]
 
- Properties inherited from EClass
static Game game [get]
 
static bool AdvMode [get]
 
static Player player [get]
 
static Chara pc [get]
 
static UI ui [get]
 
static Map _map [get]
 
static Zone _zone [get]
 
static FactionBranch Branch [get]
 
static FactionBranch BranchOrHomeBranch [get]
 
static Faction Home [get]
 
static Faction Wilds [get]
 
static Scene scene [get]
 
static BaseGameScreen screen [get]
 
static GameSetting setting [get]
 
static GameData gamedata [get]
 
static ColorProfile Colors [get]
 
static World world [get]
 
static SourceManager sources [get]
 
static SourceManager editorSources [get]
 
static SoundManager Sound [get]
 
static CoreDebug debug [get]
 

Additional Inherited Members

- Static Public Member Functions inherited from EClass
static int rndSeed (int a, int seed)
 
static int rnd (long a)
 
static int rnd (int a)
 
static int curve (long _a, int start, int step, int rate=75)
 
static int sqrt (int a)
 
static int rndHalf (int a)
 
static float rndf (float a)
 
static int rndSqrt (int a)
 
static void Wait (float a, Card c)
 
static void Wait (float a, Point p)
 
static int Bigger (int a, int b)
 
static int Smaller (int a, int b)
 

Detailed Description

Definition at line 6 of file Trait.cs.

Member Enumeration Documentation

◆ CopyShopType

Enumerator
None 
Item 
Spellbook 

Definition at line 19 of file Trait.cs.

◆ TileMode

Enumerator
Default 
Door 
Illumination 
DefaultNoAnime 
SignalAnime 
FakeBlock 
FakeObj 

Definition at line 8 of file Trait.cs.

Member Function Documentation

◆ CanBlend()

virtual bool Trait.CanBlend ( Thing  t)
inlinevirtual

Reimplemented in TraitDreamBug, TraitDrink, TraitDye, and TraitWell.

Definition at line 630 of file Trait.cs.

631 {
632 return false;
633 }

Referenced by InvOwnerBlend.ShouldShowGuide().

◆ CanBuiltAt()

virtual bool Trait.CanBuiltAt ( Point  p)
inlinevirtual

Reimplemented in TraitSpotExit.

Definition at line 747 of file Trait.cs.

748 {
749 return true;
750 }

Referenced by TileType._HitTest().

◆ CanChildDecay()

virtual bool Trait.CanChildDecay ( Card  c)
inlinevirtual

Reimplemented in TraitBrewery, and TraitContainerCompost.

Definition at line 1169 of file Trait.cs.

1170 {
1171 return false;
1172 }

Referenced by Card.DecayNatural().

◆ CanCook()

virtual bool Trait.CanCook ( Card  c)
inlinevirtual

Definition at line 840 of file Trait.cs.

841 {
842 if (c == null || !ExistsOnMap || !(c.trait is TraitFood))
843 {
844 return false;
845 }
846 return true;
847 }
Trait trait
Definition: Card.cs:54
bool ExistsOnMap
Definition: Trait.cs:367

References Card.trait.

Referenced by AI_Cook.IsValidTarget().

◆ CanCopy()

virtual bool Trait.CanCopy ( Thing  t)
inlinevirtual

Reimplemented in TraitDemitas, and TraitKettle.

Definition at line 1557 of file Trait.cs.

1558 {
1559 return false;
1560 }

Referenced by InvOwnerCopyShop.AllowMoved(), OnBarter(), InvOwner.OnDrag(), and InvOwnerCopyShop.ShouldShowGuide().

◆ CanDrink()

virtual bool Trait.CanDrink ( Chara  c)
inlinevirtual

Reimplemented in TraitDrink, TraitLumiestCrimAle, and TraitPotionEmpty.

Definition at line 1089 of file Trait.cs.

1090 {
1091 return false;
1092 }

Referenced by ActPlan._Update(), HotItemHeld.GetSelfAct(), AI_Idle.Run(), ActThrow.Throw(), and Chara.TryUse().

◆ CanEat()

virtual bool Trait.CanEat ( Chara  c)
inlinevirtual

Reimplemented in TraitFood, and TraitFoodPreparedPackage.

Definition at line 1080 of file Trait.cs.

1081 {
1082 return owner.HasElement(10);
1083 }
bool HasElement(int ele, bool includeNagative=false)
Definition: Card.cs:6201
Card owner
Definition: Trait.cs:28

References Card.HasElement().

Referenced by ActPlan._Update(), Chara.CanEat(), HotItemHeld.GetSelfAct(), AI_Eat.IsValidTarget(), AI_Idle.Run(), and Chara.TryUse().

◆ CanOffer()

virtual bool Trait.CanOffer ( Card  tg)
inlinevirtual

Reimplemented in TraitAltar.

Definition at line 862 of file Trait.cs.

863 {
864 if (tg == null || tg.isChara || tg.trait.CanOnlyCarry)
865 {
866 return false;
867 }
868 if (tg.rarity == Rarity.Artifact)
869 {
870 return false;
871 }
872 return true;
873 }
Rarity
Definition: Rarity.cs:2
Rarity rarity
Definition: Card.cs:317
virtual bool isChara
Definition: Card.cs:2123
virtual bool CanOnlyCarry
Definition: Trait.cs:305

References CanOnlyCarry, Card.isChara, Card.rarity, and Card.trait.

Referenced by AI_Offer.IsValidTarget().

◆ CanRead()

virtual bool Trait.CanRead ( Chara  c)
inlinevirtual

Reimplemented in TraitBaseSpellbook, TraitBookExp, TraitBookSkill, TraitScroll, and TraitScrollStatic.

Definition at line 1071 of file Trait.cs.

1072 {
1073 return false;
1074 }

Referenced by ActPlan._Update(), HotItemHeld.GetSelfAct(), AI_Idle.Run(), and Chara.TryUse().

◆ CanStackTo()

virtual bool Trait.CanStackTo ( Thing  to)
inlinevirtual

◆ CanUse() [1/3]

◆ CanUse() [2/3]

virtual bool Trait.CanUse ( Chara  c,
Card  tg 
)
inlinevirtual

Reimplemented in TraitDye, and TraitFoodMeat.

Definition at line 1107 of file Trait.cs.

1108 {
1109 return false;
1110 }

◆ CanUse() [3/3]

virtual bool Trait.CanUse ( Chara  c,
Point  p 
)
inlinevirtual

Reimplemented in TraitPotionEmpty.

Definition at line 1112 of file Trait.cs.

1113 {
1114 return false;
1115 }

◆ CompareTo()

virtual int Trait.CompareTo ( Card  b)
inlinevirtual

Reimplemented in TraitEffect.

Definition at line 742 of file Trait.cs.

743 {
744 return 0;
745 }

Referenced by Card.SecondaryCompare().

◆ Contains()

virtual bool Trait.Contains ( RecipeSource  r)
inlinevirtual

Reimplemented in TraitAlchemyBench, TraitBBQ, TraitCauldron, TraitHearth, TraitLoom, TraitStove, and TraitToolSculpture.

Definition at line 605 of file Trait.cs.

606 {
607 return r.idFactory == ((owner.sourceCard.origin != null) ? owner.sourceCard.origin.id : owner.id);
608 }
CardRow origin
Definition: CardRow.cs:49
string id
Definition: CardRow.cs:7
string id
Definition: Card.cs:36
virtual CardRow sourceCard
Definition: Card.cs:2171

References Card.id, CardRow.id, CardRow.origin, owner, and Card.sourceCard.

Referenced by TraitCrafter.GetSortVal(), TraitCrafter.IsIngredient(), InvOwnerMod.IsValidRangedMod(), and Thing.WriteNote().

◆ CookProgress()

void Trait.CookProgress ( )
inline

Definition at line 849 of file Trait.cs.

850 {
851 if (!ExistsOnMap)
852 {
853 return;
854 }
855 foreach (Card item in owner.pos.ListCards())
856 {
857 owner.PlaySound("cook");
858 item.renderer.PlayAnime(AnimeID.Jump);
859 }
860 }
AnimeID
Definition: AnimeID.cs:2
Definition: Card.cs:11
SoundSource PlaySound(string id, float v=1f, bool spatial=true)
Definition: Card.cs:6459
Point pos
Definition: Card.cs:60
List< Card > ListCards(bool includeMasked=false)
Definition: Point.cs:1052

References item, Point.ListCards(), Card.PlaySound(), and Card.pos.

Referenced by AI_Cook.Run().

◆ CreateStock()

Thing Trait.CreateStock ( )
inline

Definition at line 2377 of file Trait.cs.

2378 {
2379 switch (ShopType)
2380 {
2381 case ShopType.Dye:
2382 {
2383 Thing thing = ThingGen.Create("dye").SetNum(15 + EClass.rnd(30));
2384 thing.ChangeMaterial(EClass.sources.materials.rows.Where((SourceMaterial.Row r) => r.tier <= 4).RandomItem().alias);
2385 return thing;
2386 }
2387 case ShopType.GeneralExotic:
2388 return FromFilter("shop_generalExotic");
2389 case ShopType.VMachine:
2390 if (EClass.rnd(10) == 0)
2391 {
2392 return Create("wear_swim");
2393 }
2394 if (EClass.rnd(10) == 0)
2395 {
2396 return Create("panty");
2397 }
2398 if (EClass.rnd(5) == 0)
2399 {
2400 return Create("234");
2401 }
2402 return FromFilter("shop_drink");
2403 case ShopType.Furniture:
2404 return FromFilter("shop_furniture");
2405 case ShopType.Book:
2406 return FromFilter("shop_book");
2407 case ShopType.Magic:
2408 return FromFilter("shop_magic");
2409 case ShopType.Ecopo:
2410 {
2411 Thing thing2 = TraitSeed.MakeRandomSeed(enc: true);
2412 if (EClass.rnd(2) == 0)
2413 {
2414 TraitSeed.LevelSeed(thing2, (thing2.trait as TraitSeed).row, 1);
2415 }
2416 return thing2;
2417 }
2418 case ShopType.Healer:
2419 {
2420 Thing thing3 = null;
2421 for (int i = 0; i < 1000; i++)
2422 {
2423 thing3 = FromFilter("shop_healer");
2424 if (thing3.trait is TraitScroll { source: not null } traitScroll)
2425 {
2426 if (!(traitScroll.source.aliasParent != "WIL") && !(traitScroll.source.categorySub == "attack"))
2427 {
2428 break;
2429 }
2430 }
2431 else if (thing3.trait is TraitPotionRandom { source: not null } traitPotionRandom)
2432 {
2433 if (!(traitPotionRandom.source.aliasParent != "WIL") && !(traitPotionRandom.source.categorySub == "attack"))
2434 {
2435 thing3.SetNum(EClass.rnd(5) + 1);
2436 break;
2437 }
2438 }
2439 else if (thing3.trait is TraitRodRandom { source: not null } traitRodRandom && !(traitRodRandom.source.aliasParent != "WIL") && !(traitRodRandom.source.categorySub == "attack"))
2440 {
2441 break;
2442 }
2443 }
2444 return thing3;
2445 }
2446 case ShopType.Milk:
2447 if (EClass._zone is Zone_Nefu && EClass.rnd(2) == 0)
2448 {
2449 Thing thing4 = ThingGen.Create("milk");
2450 thing4.MakeRefFrom(EClass.sources.charas.rows.Where((SourceChara.Row r) => r.race == "mifu" || r.race == "nefu").RandomItem().model);
2451 Debug.Log(thing4);
2452 return thing4;
2453 }
2454 return Create("milk");
2455 case ShopType.Map:
2456 return ThingGen.CreateMap();
2457 case ShopType.Plan:
2458 return Create("book_plan");
2459 case ShopType.Weapon:
2460 return FromFilter("shop_weapon");
2461 case ShopType.Gun:
2462 if (EClass.rnd(8) == 0)
2463 {
2464 return Create("mod_ranged");
2465 }
2466 return FromFilter("shop_gun");
2467 case ShopType.Blackmarket:
2468 case ShopType.Exotic:
2469 case ShopType.TravelMerchant:
2470 {
2471 int num = 30;
2472 if (ShopType == ShopType.TravelMerchant)
2473 {
2474 num = 5;
2475 }
2477 {
2478 num = 25;
2479 }
2481 {
2482 num = 15;
2483 }
2484 CardBlueprint.SetRarity((EClass.rnd(num * 5) == 0) ? Rarity.Mythical : ((EClass.rnd(num) == 0) ? Rarity.Legendary : ((EClass.rnd(5) == 0) ? Rarity.Superior : Rarity.Normal)));
2485 return FromFilter("shop_blackmarket");
2486 }
2487 case ShopType.Drink:
2488 return FromFilter("shop_drink");
2489 case ShopType.Booze:
2490 return FromFilter("shop_booze");
2491 case ShopType.Fruit:
2492 return FromFilter("shop_fruit");
2493 case ShopType.Fish:
2494 if (EClass.rnd(2) == 0)
2495 {
2496 return Create("bait");
2497 }
2498 if (EClass.rnd(3) == 0)
2499 {
2500 return Create("fishingRod");
2501 }
2502 return FromFilter("shop_fish");
2503 case ShopType.Meat:
2504 if (EClass.rnd(5) == 0)
2505 {
2506 return Create("seasoning");
2507 }
2508 return FromFilter("shop_meat");
2509 case ShopType.Bread:
2510 if (EClass.rnd(3) == 0)
2511 {
2512 return Create("dough");
2513 }
2514 return FromFilter("shop_bread");
2515 case ShopType.Sweet:
2516 if (EClass.rnd(3) == 0)
2517 {
2518 return Create("dough");
2519 }
2520 return FromFilter("shop_sweet");
2521 case ShopType.Curry:
2522 if (EClass.rnd(3) == 0)
2523 {
2524 return Create("seasoning");
2525 }
2526 return Create("693");
2527 case ShopType.Food:
2528 if (EClass.rnd(5) == 0)
2529 {
2530 return Create("seasoning");
2531 }
2532 return FromFilter("shop_food");
2533 case ShopType.Drug:
2534 return FromFilter("shop_drug");
2535 case ShopType.LoytelMart:
2536 {
2537 int loytelMartLv = EClass.player.flags.loytelMartLv;
2538 if (loytelMartLv >= 1)
2539 {
2540 if (EClass.rnd(10) == 0)
2541 {
2542 return Create("monsterball").SetLv(40 + EClass.rnd(ShopLv)).Thing;
2543 }
2544 if (EClass.rnd(30) == 0)
2545 {
2546 return ThingGen.Create("rp_random", -1, ShopLv + 10);
2547 }
2548 if (EClass.rnd(100) == 0)
2549 {
2550 return ThingGen.Create("map_treasure", -1, EClass.rndHalf(ShopLv));
2551 }
2552 if (EClass.rnd(40) == 0)
2553 {
2554 return Create("water").SetPriceFix(1000);
2555 }
2556 if (EClass.rnd(1000) == 0)
2557 {
2558 return Create("1165");
2559 }
2560 }
2561 if ((loytelMartLv >= 2 || EClass.debug.enable) && EClass.rnd(10) == 0)
2562 {
2563 SourceElement.Row row = EClass.sources.elements.rows.Where((SourceElement.Row r) => r.tag.Contains("loytelMart") && ShopLv + 10 >= r.LV).ToList().RandomItemWeighted((SourceElement.Row r) => r.chance);
2564 switch ((from _s in row.thing.ToCharArray()
2565 where _s != ' '
2566 select _s).RandomItem())
2567 {
2568 case 'B':
2569 return ThingGen.CreateSpellbook(row.id);
2570 case 'P':
2571 return ThingGen.CreatePotion(row.id);
2572 case 'R':
2573 return ThingGen.CreateRod(row.id);
2574 case 'S':
2575 return ThingGen.CreateScroll(row.id);
2576 }
2577 }
2578 return FromFilter("shop_junk");
2579 }
2580 case ShopType.Junk:
2581 case ShopType.Moyer:
2582 return FromFilter("shop_junk");
2583 case ShopType.Souvenir:
2584 return FromFilter("shop_souvenir");
2585 case ShopType.StrangeGirl:
2586 return DNA.GenerateGene(SpawnList.Get("chara").Select(ShopLv + 10), DNA.Type.Brain);
2587 case ShopType.Fireworks:
2588 if (EClass.rnd(3) == 0)
2589 {
2590 return Create("firework_launcher");
2591 }
2592 return Create("firework");
2593 case ShopType.Festival:
2594 if (EClass.rnd(3) != 0)
2595 {
2596 if (IsFestival("olvina"))
2597 {
2598 return Create(new string[4] { "1125", "1126", "pillow_truth", "1230" }.RandomItem());
2599 }
2600 if (IsFestival("yowyn"))
2601 {
2602 return Create(new string[3] { "hat_mushroom", "hat_witch", "hat_kumiromi" }.RandomItem());
2603 }
2604 if (IsFestival("noyel"))
2605 {
2606 return Create(new string[13]
2607 {
2608 "1127", "1128", "xmas_sled", "xmas_bigbag", "xmas_bigbox", "xmas_blackcat", "xmas_blackcat", "xmas_jure", "xmas_crown", "xmas_ball",
2609 "xmas_ball", "xmas_ball", "xmas_string"
2610 }.RandomItem());
2611 }
2612 }
2613 if (EClass.rnd(2) == 0)
2614 {
2615 return Create(new string[4] { "1081", "1082", "1083", "1084" }.RandomItem());
2616 }
2617 if (EClass.rnd(3) == 0)
2618 {
2619 return FromFilter("shop_junk");
2620 }
2621 return FromFilter("shop_souvenir");
2622 case ShopType.Lamp:
2623 if (EClass.rnd(3) != 0)
2624 {
2625 if (IsFestival("kapul"))
2626 {
2627 return Create(new string[6] { "999", "1000", "1001", "1002", "1003", "1004" }.RandomItem());
2628 }
2629 if (IsFestival("yowyn"))
2630 {
2631 return Create(new string[2] { "1072", "1073" }.RandomItem());
2632 }
2633 if (IsFestival("noyel"))
2634 {
2635 return Create(new string[1] { "1069" }.RandomItem());
2636 }
2637 if (IsFestival("olvina"))
2638 {
2639 return Create(new string[2] { "1070", "1071" }.RandomItem());
2640 }
2641 }
2642 if (EClass._zone.IsFestival && EClass.rnd(2) == 0)
2643 {
2644 return Create(new string[4] { "953", "954", "955", "956" }.RandomItem());
2645 }
2646 return FromFilter("shop_lamp");
2647 default:
2648 if (EClass.rnd(100) == 0)
2649 {
2650 return Create("lockpick");
2651 }
2652 return FromFilter("shop_general");
2653 }
2654 Thing Create(string s)
2655 {
2656 return ThingGen.Create(s, -1, ShopLv);
2657 }
2658 Thing FromFilter(string s)
2659 {
2660 return ThingGen.CreateFromFilter(s, ShopLv);
2661 }
2662 static bool IsFestival(string id)
2663 {
2664 if (EClass._zone.id == id)
2665 {
2666 return EClass._zone.IsFestival;
2667 }
2668 return false;
2669 }
2670 }
ShopType
Definition: ShopType.cs:2
static void SetRarity(Rarity q=Rarity.Normal)
Card ChangeMaterial(int idNew, bool ignoreFixedMaterial=false)
Definition: Card.cs:3119
Card MakeRefFrom(string id)
Definition: Card.cs:5861
Thing SetNum(int a)
Definition: Card.cs:3579
Thing SetPriceFix(int a)
Definition: Card.cs:7485
bool enable
Definition: CoreDebug.cs:301
Definition: DNA.cs:8
Type
Definition: DNA.cs:10
static Thing GenerateGene(Chara c, Type? type=null)
Definition: DNA.cs:116
Definition: EClass.cs:6
static Zone _zone
Definition: EClass.cs:21
static int rnd(long a)
Definition: EClass.cs:59
static SourceManager sources
Definition: EClass.cs:43
static int rndHalf(int a)
Definition: EClass.cs:97
static Player player
Definition: EClass.cs:13
static CoreDebug debug
Definition: EClass.cs:49
override bool IsCurrentZone
Definition: GuildMerchant.cs:5
override bool IsCurrentZone
Definition: GuildThief.cs:6
Definition: Guild.cs:2
static GuildMerchant Merchant
Definition: Guild.cs:62
static GuildThief Thief
Definition: Guild.cs:60
int loytelMartLv
Definition: Player.cs:700
Flags flags
Definition: Player.cs:1161
SourceMaterial materials
SourceElement elements
SourceChara charas
string id
Definition: Spatial.cs:13
static SpawnList Get(string id, string parent=null, CardFilter filter=null)
Definition: SpawnList.cs:18
CardRow Select(int lv=-1, int levelRange=-1)
Definition: SpawnList.cs:139
static Thing CreatePotion(int ele, int num=1)
Definition: ThingGen.cs:216
static Thing CreateFromFilter(string id, int lv=-1)
Definition: ThingGen.cs:63
static Thing CreateMap(string idSource=null, int lv=-1)
Definition: ThingGen.cs:124
static Thing CreateSpellbook(string alias, int num=1)
Definition: ThingGen.cs:151
static Thing CreateScroll(int ele, int num=1)
Definition: ThingGen.cs:182
static Thing CreateRod(int ele, int charge=-1)
Definition: ThingGen.cs:209
static Thing Create(string id, int idMat=-1, int lv=-1)
Definition: ThingGen.cs:53
Definition: Thing.cs:8
static Thing MakeRandomSeed(bool enc=false)
Definition: TraitSeed.cs:192
static void LevelSeed(Thing t, SourceObj.Row obj, int num)
Definition: TraitSeed.cs:145
virtual int ShopLv
Definition: Trait.cs:525
virtual bool IsFestival
Definition: Zone.cs:211

References EClass._zone, Card.ChangeMaterial(), SourceManager.charas, ThingGen.Create(), ThingGen.CreateFromFilter(), ThingGen.CreateMap(), ThingGen.CreatePotion(), ThingGen.CreateRod(), ThingGen.CreateScroll(), ThingGen.CreateSpellbook(), EClass.debug, Debug, Card.Dye(), SourceManager.elements, CoreDebug.enable, Player.flags, DNA.GenerateGene(), SpawnList.Get(), SourceElement.Row.id, Spatial.id, GuildMerchant.IsCurrentZone, GuildThief.IsCurrentZone, Zone.IsFestival, TraitSeed.LevelSeed(), Player.Flags.loytelMartLv, TraitSeed.MakeRandomSeed(), Card.MakeRefFrom(), SourceManager.materials, Guild.Merchant, EClass.player, EClass.rnd(), EClass.rndHalf(), SpawnList.Select(), Card.SetNum(), Card.SetPriceFix(), CardBlueprint.SetRarity(), EClass.sources, Guild.Thief, SourceElement.Row.thing, and Card.trait.

◆ DamageRandomProperty()

void Trait.DamageRandomProperty ( Chara  cc)
inline

Definition at line 1016 of file Trait.cs.

1017 {
1018 Thing thing = owner.things.List((Thing a) => a.category.id == "currency" || !a.IsUnique).RandomItem();
1019 if (thing != null)
1020 {
1021 if (thing.Num > 10)
1022 {
1023 thing.SetNum(thing.Num / 10 * 9);
1024 }
1025 else if (thing.Num > 1)
1026 {
1027 thing.SetNum(thing.Num - 1);
1028 }
1029 else
1030 {
1031 thing.Destroy();
1032 }
1033 cc.Say("pry_damage", cc, thing);
1034 }
1035 }
bool IsUnique
Definition: Card.cs:2131
void Destroy()
Definition: Card.cs:5191
ThingContainer things
Definition: Card.cs:39
int Num
Definition: Card.cs:161
SourceCategory.Row category
Definition: Card.cs:2089
void Say(string lang, string ref1=null, string ref2=null)
Definition: Card.cs:7137
List< Thing > List(Func< Thing, bool > func, bool onlyAccessible=false)

References Card.category, Card.Destroy(), Card.IsUnique, ThingContainer.List(), Card.Num, Card.Say(), Card.SetNum(), and Card.things.

◆ GetActDuration()

virtual int Trait.GetActDuration ( Chara  c)
inlinevirtual

Reimplemented in TraitBaseSpellbook, TraitBookExp, TraitBookSkill, TraitFactory, TraitRecipeBook, and TraitScrollMap.

Definition at line 639 of file Trait.cs.

640 {
641 return 0;
642 }

Referenced by AI_Read.OnSetOwner(), and AI_Read.Run().

◆ GetBuildModeRecipe()

virtual Recipe Trait.GetBuildModeRecipe ( )
inlinevirtual

Reimplemented in TraitTile.

Definition at line 835 of file Trait.cs.

836 {
837 return Recipe.Create(owner.Thing);
838 }
virtual Thing Thing
Definition: Card.cs:2098
Definition: Recipe.cs:7
static Recipe Create(RecipeSource _source, int idMat=-1, Thing ing=null)
Definition: Recipe.cs:325

References Recipe.Create(), and Card.Thing.

Referenced by BuildMenu.RefreshCategory().

◆ GetFuelValue() [1/2]

int Trait.GetFuelValue ( string  id)
inline

Definition at line 1449 of file Trait.cs.

1450 {
1451 if (ToggleType == ToggleType.Electronics)
1452 {
1453 if (id == "battery")
1454 {
1455 return 20;
1456 }
1457 }
1458 else
1459 {
1460 if (id == "log")
1461 {
1462 return 20;
1463 }
1464 if (id == "branch")
1465 {
1466 return 5;
1467 }
1468 }
1469 return 0;
1470 }
ToggleType
Definition: ToggleType.cs:2

◆ GetFuelValue() [2/2]

int Trait.GetFuelValue ( Thing  t)
inline

Definition at line 1440 of file Trait.cs.

1441 {
1442 if (t.c_isImportant)
1443 {
1444 return 0;
1445 }
1446 return GetFuelValue(t.id);
1447 }
bool c_isImportant
Definition: Card.cs:1039
int GetFuelValue(Thing t)
Definition: Trait.cs:1440

References Card.c_isImportant, and Card.id.

Referenced by InvOwnerRefuel._OnProcess().

◆ GetHealAction()

virtual Action Trait.GetHealAction ( Chara  c)
inlinevirtual

Reimplemented in TraitDrink, and TraitItemProc.

Definition at line 625 of file Trait.cs.

626 {
627 return null;
628 }

Referenced by ActItem.BuildAct(), Chara.ShouldThrowAway(), Chara.TryTakeSharedItems(), and Chara.TryUse().

◆ GetHeldEmo()

virtual Emo2 Trait.GetHeldEmo ( Chara  c)
inlinevirtual

Reimplemented in TraitDrinkMilkMother, TraitToolBrush, and TraitToolShears.

Definition at line 658 of file Trait.cs.

659 {
660 return Emo2.none;
661 }
Emo2
Definition: Emo2.cs:2

Referenced by TCOrbitChara.RefreshAll().

◆ GetHotItem()

virtual HotItem Trait.GetHotItem ( )
inlinevirtual

◆ GetHoverText()

virtual string Trait.GetHoverText ( )
inlinevirtual

Reimplemented in TraitBed.

Definition at line 620 of file Trait.cs.

621 {
622 return null;
623 }

◆ GetName()

virtual string Trait.GetName ( )
inlinevirtual

Reimplemented in TraitFakeBlock, TraitFakeObj, TraitGene, TraitPerfume, TraitPotionRandom, TraitRodRandom, TraitScrollRandom, TraitShrine, and TraitSpellbookRandom.

Definition at line 718 of file Trait.cs.

719 {
720 return owner.sourceCard.GetText();
721 }
string GetText(string id="name", bool returnNull=false)
Definition: SourceData.cs:626

References SourceData< T, T2 >.BaseRow.GetText(), owner, and Card.sourceCard.

Referenced by TraitCrafter.Craft(), and Thing.GetName().

◆ GetParam()

◆ GetParamInt()

int Trait.GetParamInt ( int  i,
int  def 
)
inline

Definition at line 586 of file Trait.cs.

587 {
588 if (i < Params.Length)
589 {
590 return Params[i].ToInt();
591 }
592 return def;
593 }

References Params.

Referenced by TraitItemProc.OnUse().

◆ GetPoint()

Point Trait.GetPoint ( )
inline

Definition at line 756 of file Trait.cs.

757 {
758 return owner.pos;
759 }

References owner, and Card.pos.

Referenced by Zone.AddRandomVisitor(), TraitRoadSign.OnRenderTile(), and FactionBranch.Recruit().

◆ GetPref()

virtual SourcePref Trait.GetPref ( )
inlinevirtual

Reimplemented in TraitFakeBlock, and TraitFakeObj.

Definition at line 595 of file Trait.cs.

596 {
597 return null;
598 }

◆ GetRandomPoint()

Point Trait.GetRandomPoint ( Func< Point, bool >  func = null,
Chara  accessChara = null 
)
inline

Definition at line 761 of file Trait.cs.

762 {
763 if (radius == 0)
764 {
765 return owner.pos;
766 }
767 List<Point> list = ListPoints();
768 for (int i = 0; i < 50; i++)
769 {
770 Point point = list.RandomItem();
771 if (point.IsValid && (func == null || func(point)) && (accessChara == null || accessChara.HasAccess(point)))
772 {
773 return point;
774 }
775 }
776 return list[0];
777 }
bool HasAccess(Card c)
Definition: Chara.cs:1306
Definition: Point.cs:9
bool IsValid
Definition: Point.cs:88
virtual int radius
Definition: Trait.cs:94
virtual List< Point > ListPoints(Point center=null, bool onlyPassable=true)
Definition: Trait.cs:779

References Point.IsValid, ListPoints(), owner, Card.pos, and radius.

Referenced by AIAct.DoGotoSpot< T >(), GoalGraze.GetPos(), GoalSpot.Run(), AIWork.SetDestPos(), Zone.TryAddThingInSpot< T >(), and TraitSpotBiome.Update().

◆ GetRecipe()

virtual Recipe Trait.GetRecipe ( )
inlinevirtual

Reimplemented in TraitTile.

Definition at line 830 of file Trait.cs.

831 {
832 return Recipe.Create(owner.Thing);
833 }

References Recipe.Create(), and Card.Thing.

Referenced by HotItemHeld.OnSetCurrentItem(), and TraitFakeTile.TrySetHeldAct().

◆ GetRefElement()

virtual SourceElement.Row Trait.GetRefElement ( )
inlinevirtual

Reimplemented in TraitPotionRandom, TraitRod, and TraitScroll.

Definition at line 644 of file Trait.cs.

645 {
646 return null;
647 }

Referenced by ButtonGrid.SetCard().

◆ GetRefSprite()

virtual Sprite Trait.GetRefSprite ( )
inlinevirtual

Reimplemented in TraitScrollStatic.

Definition at line 649 of file Trait.cs.

650 {
651 return null;
652 }

Referenced by ButtonGrid.SetCard().

◆ GetRenderData()

virtual RenderData Trait.GetRenderData ( )
inlinevirtual

Reimplemented in TraitFakeObj, and TraitFakeTile.

Definition at line 600 of file Trait.cs.

601 {
602 return null;
603 }

Referenced by CardRenderer.SetOwner().

◆ GetRestockedIcon()

Emo2 Trait.GetRestockedIcon ( )
inline

Definition at line 1585 of file Trait.cs.

1586 {
1587 if (SlaverType != 0)
1588 {
1589 SlaverData obj = owner.GetObj<SlaverData>(5);
1590 if (obj != null && EClass.world.date.IsExpired(obj.dateRefresh))
1591 {
1592 return Emo2.restock;
1593 }
1594 }
1595 int c_dateStockExpire = owner.c_dateStockExpire;
1596 if (c_dateStockExpire != 0 && EClass.world.date.IsExpired(c_dateStockExpire))
1597 {
1598 if (ShopType == ShopType.None)
1599 {
1600 return Emo2.blessing;
1601 }
1602 return Emo2.restock;
1603 }
1604 return Emo2.none;
1605 }
SlaverType
Definition: SlaverType.cs:2
int c_dateStockExpire
Definition: Card.cs:1261
bool IsExpired(int time)
Definition: Date.cs:338
static World world
Definition: EClass.cs:41
int dateRefresh
Definition: SlaverData.cs:10
GameDate date
Definition: World.cs:6

References Card.c_dateStockExpire, World.date, SlaverData.dateRefresh, Date.IsExpired(), and EClass.world.

Referenced by TCOrbitChara.RefreshAll(), and TCOrbitThing.RefreshAll().

◆ GetSortVal()

int Trait.GetSortVal ( UIList::SortMode  m)
inline

Definition at line 1060 of file Trait.cs.

1061 {
1062 _ = 7;
1063 return owner.sourceCard._index;
1064 }

References SourceData< T, T2 >.BaseRow._index, and Card.sourceCard.

Referenced by LayerHome.RefreshSpots().

◆ GetTextRestock()

string Trait.GetTextRestock ( string  lang,
bool  pet 
)
inline

Definition at line 1562 of file Trait.cs.

1563 {
1564 int rawDeadLine = 0;
1565 if (pet)
1566 {
1567 SlaverData obj = owner.GetObj<SlaverData>(5);
1568 if (obj != null)
1569 {
1570 rawDeadLine = obj.dateRefresh;
1571 }
1572 }
1573 else
1574 {
1575 rawDeadLine = owner.c_dateStockExpire;
1576 }
1577 int remainingHours = EClass.world.date.GetRemainingHours(rawDeadLine);
1578 if (remainingHours > 0)
1579 {
1580 return "nextRestock".lang(lang.lang(), Date.GetText(remainingHours) ?? "");
1581 }
1582 return lang.lang();
1583 }
Definition: Date.cs:4
string GetText(TextFormat format)
Definition: Date.cs:251
int GetRemainingHours(int rawDeadLine)
Definition: Date.cs:343

References Card.c_dateStockExpire, World.date, SlaverData.dateRefresh, Date.GetRemainingHours(), Date.GetText(), and EClass.world.

◆ GetValue()

virtual int Trait.GetValue ( )
inlinevirtual

◆ IdleUse()

virtual bool Trait.IdleUse ( Chara  c,
int  dist 
)
inlinevirtual

Reimplemented in TraitChopper, TraitGamble, and TraitTrainingDummy.

Definition at line 669 of file Trait.cs.

670 {
671 return false;
672 }

Referenced by AI_Idle.TryPerformIdleUse().

◆ Install()

void Trait.Install ( bool  byPlayer)
inline

Definition at line 1190 of file Trait.cs.

1191 {
1192 if (Electricity != 0)
1193 {
1194 EClass._zone.dirtyElectricity = true;
1195 if (Electricity > 0)
1196 {
1197 EClass._zone.electricity += Electricity;
1198 EClass.pc.PlaySound("electricity_on");
1199 }
1200 }
1201 TryToggle();
1204 {
1205 owner.PlaySound("fire");
1206 }
1207 OnInstall(byPlayer);
1208 }
void RecalculateFOV()
Definition: Card.cs:6675
bool isOn
Definition: Card.cs:545
static Chara pc
Definition: EClass.cs:15
virtual void TryToggle()
Definition: Trait.cs:1236
virtual void OnInstall(bool byPlayer)
Definition: Trait.cs:1228
virtual int Electricity
Definition: Trait.cs:119
bool isStarted
Definition: Zone.cs:73

References EClass._zone, Card.isOn, Zone.isStarted, EClass.pc, Card.PlaySound(), and Card.RecalculateFOV().

Referenced by Card.SetPlaceState().

◆ IsFuel() [1/2]

bool Trait.IsFuel ( string  s)
inline

Definition at line 1430 of file Trait.cs.

1431 {
1432 return GetFuelValue(s) > 0;
1433 }

Referenced by UIDragGridInfo.InitFuel(), and InvOwnerRefuel.ShouldShowGuide().

◆ IsFuel() [2/2]

bool Trait.IsFuel ( Thing  t)
inline

Definition at line 1435 of file Trait.cs.

1436 {
1437 return GetFuelValue(t) > 0;
1438 }

◆ IsFuelEnough()

bool Trait.IsFuelEnough ( int  num = 1,
List< Thing excludes = null,
bool  tryRefuel = true 
)
inline

Definition at line 1413 of file Trait.cs.

1414 {
1415 if (!IsRequireFuel)
1416 {
1417 return true;
1418 }
1419 if (owner.c_charges >= FuelCost * num)
1420 {
1421 return true;
1422 }
1423 if (owner.autoRefuel)
1424 {
1425 TryRefuel(FuelCost * num - owner.c_charges, excludes);
1426 }
1427 return owner.c_charges >= FuelCost * num;
1428 }
bool autoRefuel
Definition: Card.cs:629
int c_charges
Definition: Card.cs:1297
virtual int FuelCost
Definition: Trait.cs:473
bool IsRequireFuel
Definition: Trait.cs:477
void TryRefuel(int dest, List< Thing > excludes)
Definition: Trait.cs:1485

References Card.autoRefuel, and Card.c_charges.

Referenced by AI_UseCrafter.Run(), and InvOwnerCraft.TryStartCraft().

◆ ListPoints()

virtual List< Point > Trait.ListPoints ( Point  center = null,
bool  onlyPassable = true 
)
inlinevirtual

Reimplemented in TraitLightSun.

Definition at line 779 of file Trait.cs.

780 {
781 listRadiusPoints.Clear();
782 if (center == null)
783 {
784 center = owner.pos;
785 }
786 if (radius == 0)
787 {
788 listRadiusPoints.Add(center.Copy());
789 return listRadiusPoints;
790 }
791 Room room = center.cell.room;
792 if (room != null && CanUseRoomRadius)
793 {
794 foreach (Point point in room.points)
795 {
796 if (radiusType == TraitRadiusType.Farm)
797 {
798 listRadiusPoints.Add(point.Copy());
799 }
800 else if ((!onlyPassable || !point.cell.blocked) && !point.cell.HasBlock && point.cell.HasFloor)
801 {
802 listRadiusPoints.Add(point.Copy());
803 }
804 }
805 }
806 else
807 {
808 EClass._map.ForeachSphere(center.x, center.z, radius + 1, delegate(Point p)
809 {
810 if (radiusType == TraitRadiusType.Farm)
811 {
812 if (!p.cell.HasBlock || p.cell.HasFence)
813 {
814 listRadiusPoints.Add(p.Copy());
815 }
816 }
817 else if ((!onlyPassable || !p.cell.blocked) && !p.cell.HasBlock && p.cell.HasFloor && (!onlyPassable || Los.IsVisible(center, p)))
818 {
819 listRadiusPoints.Add(p.Copy());
820 }
821 });
822 }
823 if (listRadiusPoints.Count == 0)
824 {
825 listRadiusPoints.Add(center.Copy());
826 }
827 return listRadiusPoints;
828 }
TraitRadiusType
PointList points
Definition: BaseArea.cs:26
Room room
Definition: Cell.cs:102
bool HasBlock
Definition: Cell.cs:643
bool HasFloor
Definition: Cell.cs:645
static Map _map
Definition: EClass.cs:19
Definition: Los.cs:5
static bool IsVisible(Point p1, Point p2, Action< Point, bool > _onVisit=null)
Definition: Los.cs:167
void ForeachSphere(int _x, int _z, float r, Action< Point > action)
Definition: Map.cs:2381
Point Copy()
Definition: Point.cs:491
int x
Definition: Point.cs:36
int z
Definition: Point.cs:39
Cell cell
Definition: Point.cs:51
Definition: Room.cs:4
virtual bool CanUseRoomRadius
Definition: Trait.cs:98
virtual TraitRadiusType radiusType
Definition: Trait.cs:96
static List< Point > listRadiusPoints
Definition: Trait.cs:30

References EClass._map, Algorithms.WeightCell.blocked, CanUseRoomRadius, Point.cell, Point.Copy(), Map.ForeachSphere(), Cell.HasBlock, Cell.HasFloor, Los.IsVisible(), listRadiusPoints, owner, BaseArea.points, Card.pos, radius, and radiusType.

Referenced by VirtualDate.BuildSunMap(), TraitSpotBiome.CountNotableThing(), GetRandomPoint(), Point.IsInSpot< T >(), OnRenderTile(), Map.RefreshSunMap(), and Zone.TryAddThingInSpot< T >().

◆ Offer()

void Trait.Offer ( Chara  cc)
inline

Definition at line 897 of file Trait.cs.

898 {
899 if (!ExistsOnMap)
900 {
901 return;
902 }
903 foreach (Card item in owner.pos.ListCards())
904 {
905 if (CanOffer(item))
906 {
907 item.Destroy();
908 cc.depression.Mod(100);
909 owner.PlaySound("offering");
910 }
911 }
912 }
Stats depression
Definition: Chara.cs:1174
virtual void Mod(int a)
Definition: Stats.cs:135
virtual bool CanOffer(Card tg)
Definition: Trait.cs:862

References item, Point.ListCards(), Card.PlaySound(), and Card.pos.

Referenced by AI_Offer.Run().

◆ OfferProcess()

void Trait.OfferProcess ( Chara  cc)
inline

Definition at line 875 of file Trait.cs.

876 {
877 if (!ExistsOnMap)
878 {
879 return;
880 }
882 string @ref = row.GetTextArray("name2")[1];
883 string ref2 = row.GetTextArray("name2")[0];
884 if (EClass.rnd(3) == 0)
885 {
886 cc.Talk("offer", @ref, ref2);
887 }
888 foreach (Card item in owner.pos.ListCards())
889 {
890 if (CanOffer(item))
891 {
892 item.renderer.PlayAnime(AnimeID.Shiver);
893 }
894 }
895 }
string c_idDeity
Definition: Card.cs:1609
void Talk(string idTopic, string ref1=null, string ref2=null, bool forceSync=false)
Definition: Card.cs:7019
SourceReligion religions

References Card.c_idDeity, item, Point.ListCards(), Card.pos, SourceManager.religions, EClass.rnd(), EClass.sources, and Card.Talk().

Referenced by AI_Offer.Run().

◆ OnAddedToZone()

virtual void Trait.OnAddedToZone ( )
inlinevirtual

Definition at line 706 of file Trait.cs.

707 {
708 }

Referenced by Map.OnCardAddedToZone().

◆ OnBarter()

virtual void Trait.OnBarter ( bool  reroll = false)
inlinevirtual

Definition at line 1607 of file Trait.cs.

1608 {
1609 Thing t = owner.things.Find("chest_merchant");
1610 if (t == null)
1611 {
1612 t = ThingGen.Create("chest_merchant");
1613 owner.AddThing(t);
1614 }
1615 t.c_lockLv = 0;
1617 {
1618 return;
1619 }
1620 owner.c_dateStockExpire = EClass.world.date.GetRaw(24 * RestockDay);
1621 owner.isRestocking = true;
1622 t.things.DestroyAll((Thing _t) => _t.GetInt(101) != 0);
1623 foreach (Thing thing10 in t.things)
1624 {
1625 thing10.invX = -1;
1626 }
1627 switch (ShopType)
1628 {
1629 case ShopType.Plat:
1630 NoRestock(ThingGen.Create("lucky_coin").SetNum(10));
1631 NoRestock(ThingGen.CreateSkillbook(6662));
1632 NoRestock(ThingGen.CreateSkillbook(6664));
1633 Add("book_exp", 10, 0);
1634 break;
1635 case ShopType.Copy:
1636 {
1637 Thing c_copyContainer = owner.c_copyContainer;
1638 if (c_copyContainer == null)
1639 {
1640 break;
1641 }
1642 int num5 = 0;
1643 foreach (Thing thing11 in c_copyContainer.things)
1644 {
1645 if (!owner.trait.CanCopy(thing11))
1646 {
1647 continue;
1648 }
1649 Thing thing2 = thing11.Duplicate(1);
1650 thing2.isStolen = false;
1651 thing2.isCopy = true;
1652 thing2.c_priceFix = 0;
1653 foreach (Element item in thing2.elements.dict.Values.Where((Element e) => e.HasTag("noInherit")).ToList())
1654 {
1655 thing2.elements.Remove(item.id);
1656 }
1657 int num6 = 1;
1658 switch (owner.trait.CopyShop)
1659 {
1660 case CopyShopType.Item:
1661 {
1662 num6 = (1000 + owner.c_invest * 100) / (thing2.GetPrice(CurrencyType.Money, sell: false, PriceType.CopyShop) + 50);
1663 int[] array = new int[3] { 704, 703, 702 };
1664 foreach (int ele in array)
1665 {
1666 if (thing2.HasElement(ele))
1667 {
1668 num6 = 1;
1669 }
1670 }
1671 break;
1672 }
1673 case CopyShopType.Spellbook:
1674 thing2.c_charges = thing11.c_charges;
1675 break;
1676 }
1677 if (num6 > 1 && thing2.trait.CanStack)
1678 {
1679 thing2.SetNum(num6);
1680 }
1681 AddThing(thing2);
1682 num5++;
1683 if (num5 > owner.trait.NumCopyItem)
1684 {
1685 break;
1686 }
1687 }
1689 break;
1690 }
1691 case ShopType.Specific:
1692 switch (owner.id)
1693 {
1694 case "mogu":
1695 AddThing(ThingGen.Create("casino_coin").SetNum(5000));
1696 break;
1697 case "felmera":
1698 foreach (Thing item2 in new DramaOutcome().ListFelmeraBarter())
1699 {
1700 AddThing(item2);
1701 }
1702 AddThing(ThingGen.Create("crimale2"));
1703 break;
1704 case "mimu":
1705 AddCassette(10, null, 999);
1706 AddCassette(15, null, 999);
1707 AddCassette(17, null, 999);
1708 AddCassette(29, null, 999);
1709 AddCassette(40, null, 999);
1710 AddCassette(46, null, 999);
1711 AddCassette(47, null, 999);
1712 AddCassette(52, null, 999);
1713 AddCassette(54, null, 999);
1714 AddCassette(59, null, 999);
1715 AddCassette(65, null, 999);
1716 AddCassette(109, "debt", 0);
1717 AddCassette(110, "curry", 999);
1718 if (EClass.player.stats.married > 0)
1719 {
1720 AddCassette(122, null, 999);
1721 AddCassette(123, null, 999);
1722 }
1723 break;
1724 }
1725 break;
1726 case ShopType.Deed:
1727 Add("deed", 1, 0);
1728 Add("deed_move", 2 + EClass.rnd(5), 0);
1729 Add("deed_wedding", 1, 0);
1730 Add("deed_divorce", 1, 0);
1731 Add("deed_lostring", 1, 0);
1732 Add("license_illumination", 1, 0);
1733 Add("license_void", 1, 0);
1734 Add("license_adv", 1, 0);
1735 break;
1736 case ShopType.RedBook:
1737 {
1738 for (int num9 = 0; num9 < 30; num9++)
1739 {
1740 AddThing(ThingGen.CreateFromFilter("shop_seeker"));
1741 }
1742 break;
1743 }
1744 case ShopType.TravelMerchant2:
1745 {
1746 int seed = EClass.game.seed + EClass._zone.uid + EClass.world.date.year * 12 + EClass.world.date.month;
1747 Add("tool_talisman", 1, 0);
1748 Add("camera", 1, 0);
1749 Add("dreambug", EClass.rndHalf(10), 0);
1750 Add("mathammer", 1, 0).ChangeMaterial(MATERIAL.GetRandomMaterial(80));
1751 Add("unicorn_horn", 1, 0);
1752 Add("core_user", 1, 0);
1753 Add("generator_hamster1", 1, 0);
1754 Add("generator_hamster2", 1, 0);
1755 Add("generator_solar", 1, 0);
1756 Add("generator_wind", 1, 0);
1757 Add("curtainL", EClass.rndHalf(5), 0);
1758 Add("1337", EClass.rndHalf(5), 0);
1759 Add("1338", EClass.rndHalf(5), 0);
1760 Add("1339", EClass.rndHalf(5), 0);
1761 Add("1340", EClass.rndHalf(5), 0);
1762 Add("1301", EClass.rndHalf(5), 0);
1763 Add("1302", EClass.rndHalf(5), 0);
1764 Add("censored_item", 1, 0);
1765 Add("block_strawberry", EClass.rndHalf(6), 0);
1766 Add("block_cream", EClass.rndHalf(6), 0);
1767 Add("block_mango", EClass.rndHalf(6), 0);
1768 Add("block_cherry", EClass.rndHalf(6), 0);
1769 Add("block_chocoplate", EClass.rndHalf(6), 0);
1770 Add("block_banana", EClass.rndHalf(6), 0);
1771 Add("block_mousse", EClass.rndHalf(6), 0);
1772 Add("block_melon", EClass.rndHalf(6), 0);
1773 Add("block_kiwi", EClass.rndHalf(6), 0);
1774 Add("block_peach", EClass.rndHalf(6), 0);
1775 Add("water", 1, 0);
1776 if (EClass.rndSeed(EClass.debug.enable ? 1 : 5, seed) == 0)
1777 {
1778 Add("hammer_garokk", 1, 0);
1779 }
1780 if (EClass.rndSeed(EClass.debug.enable ? 1 : 100, seed) == 0)
1781 {
1782 Add("water_jure", 1, 0);
1783 }
1784 break;
1785 }
1786 case ShopType.KeeperOfGarden:
1787 {
1788 string[] array2 = new string[11]
1789 {
1790 "stone_defense", "1325", "1326", "1327", "1328", "1330", "1331", "1332", "1333", "1283",
1791 "1268"
1792 };
1793 foreach (string id2 in array2)
1794 {
1795 AddThing(ThingGen.Create(id2, MATERIAL.GetRandomMaterialFromCategory(50, "rock", EClass.sources.materials.alias["granite"]).id).SetNum(99));
1796 }
1797 Add("cloud", 99, 0);
1798 Add("scroll_alias", 99, 0);
1799 Add("scroll_biography", 99, 0);
1800 Add("1329", 1, 0);
1801 Add("statue_lulu", 1, 0);
1802 Add("statue_jure", 1, 0);
1803 Add("statue_ehe", 1, 0);
1804 break;
1805 }
1806 case ShopType.Seed:
1807 {
1808 AddThing(TraitSeed.MakeSeed("rice")).SetNum(4 + EClass.rnd(4));
1809 AddThing(TraitSeed.MakeSeed("cabbage")).SetNum(4 + EClass.rnd(4));
1810 AddThing(TraitSeed.MakeSeed("carrot")).SetNum(4 + EClass.rnd(4));
1811 AddThing(TraitSeed.MakeSeed("potato")).SetNum(4 + EClass.rnd(4));
1812 AddThing(TraitSeed.MakeSeed("corn")).SetNum(4 + EClass.rnd(4));
1813 for (int num10 = 0; num10 < EClass.rnd(3) + 1; num10++)
1814 {
1815 Add("462", 1, 0);
1816 }
1817 for (int num11 = 0; num11 < EClass.rnd(3) + 1; num11++)
1818 {
1819 Add("1167", 1, 0);
1820 }
1821 break;
1822 }
1823 case ShopType.Loytel:
1824 Add("board_map", 1, 0);
1825 Add("board_build", 1, 0);
1826 Add("book_resident", 1, 0);
1827 Add("board_party", 1, 0);
1828 Add("board_party2", 1, 0);
1829 Add("book_roster", 1, 0);
1830 Add("3", 1, 0);
1831 Add("4", 1, 0);
1832 Add("5", 1, 0);
1833 AddThing(ThingGen.CreatePlan(2512));
1834 AddThing(ThingGen.CreatePlan(2810));
1835 NoRestock(ThingGen.Create("rp_block").SetLv(1).SetNum(10));
1837 {
1838 NoRestock(ThingGen.CreateRecipe("explosive"));
1839 }
1840 break;
1841 case ShopType.Starter:
1842 case ShopType.StarterEx:
1843 Add("board_home", 1, 0);
1844 Add("board_resident", 1, 0);
1845 Add("1", 1, 0);
1846 Add("2", 1, 0);
1847 if (ShopType == ShopType.StarterEx)
1848 {
1849 Add("board_expedition", 1, 0);
1850 Add("mailpost", 1, 0);
1851 Add("record", 1, 0);
1852 Add("tent2", 1, 0);
1853 Add("tent1", 1, 0);
1854 Add("wagon1", 1, 0);
1855 Add("wagon_big", 1, 0);
1856 Add("wagon_big2", 1, 0);
1857 Add("wagon_big3", 1, 0);
1858 Add("wagon_big4", 1, 0);
1859 Add("wagon_big5", 1, 0);
1860 Add("teleporter", 1, 0);
1861 Add("teleporter2", 1, 0);
1862 Add("recharger", 1, 0);
1863 Add("machine_gene2", 1, 0);
1864 NoRestock(ThingGen.CreateRecipe("torch_wall"));
1865 NoRestock(ThingGen.CreateRecipe("factory_sign"));
1866 NoRestock(ThingGen.CreateRecipe("beehive"));
1867 NoRestock(ThingGen.Create("rp_food").SetNum(5).SetLv(10)
1868 .Thing);
1869 }
1870 else
1871 {
1872 AddThing(ThingGen.CreatePlan(2119));
1873 NoRestock(ThingGen.Create("rp_food").SetNum(5).SetLv(5)
1874 .Thing);
1875 }
1876 break;
1877 case ShopType.Farris:
1878 AddThing(ThingGen.CreateScroll(8220, 4 + EClass.rnd(6)));
1879 AddThing(ThingGen.CreateScroll(8221, 4 + EClass.rnd(6)));
1880 Add("drawing_paper", 10, 0);
1881 Add("drawing_paper2", 10, 0);
1882 Add("stethoscope", 1, 0);
1883 Add("whip_love", 1, 0);
1884 Add("whip_interest", 1, 0);
1885 Add("syringe_blood", 20, 0);
1887 {
1888 Add("chest_tax", 1, 0);
1889 }
1890 break;
1891 case ShopType.Guild:
1892 if (this is TraitClerk_Merchant)
1893 {
1894 Add("flyer", 1, 0).SetNum(99);
1895 }
1896 break;
1897 case ShopType.Influence:
1898 {
1899 bool num7 = owner.id == "big_sister";
1900 TraitTicketFurniture.SetZone(num7 ? EClass.game.spatials.Find("little_garden") : EClass._zone, Add("ticket_furniture", 1, 0).SetNum(99));
1901 if (num7)
1902 {
1903 Add("littleball", 10, 0);
1905 {
1906 break;
1907 }
1908 if (!owner.Chara.elements.HasBase(287))
1909 {
1910 owner.Chara.elements.SetBase(287, (!EClass.debug.enable) ? 1 : 50);
1911 }
1912 if (!reroll)
1913 {
1914 for (int m = 0; m < 20; m++)
1915 {
1916 owner.Chara.ModExp(287, 1000);
1917 }
1918 }
1920 thing4.elements.SetBase(1229, 1);
1921 AddThing(thing4);
1922 break;
1923 }
1924 for (int n = 0; n < 10; n++)
1925 {
1926 Thing thing5 = ThingGen.Create(EClass._zone.IsFestival ? "1123" : ((EClass.rnd(3) == 0) ? "1169" : "1160"));
1927 thing5.DyeRandom();
1928 AddThing(thing5);
1929 }
1930 if (EClass._zone is Zone_Exile)
1931 {
1932 for (int num8 = 0; num8 < 30; num8++)
1933 {
1934 Add("1235", 1, -1);
1935 Add("1236", 1, -1);
1936 Add("1237", 1, -1);
1937 Add("1239", 1, -1);
1938 Add("candle9", 1, -1);
1939 Add("candle9", 1, -1);
1940 Add("candle9", 1, -1);
1941 Add("candle8", 1, 0);
1942 Add("candle8b", 1, 0);
1943 Add("candle8c", 1, 0);
1944 }
1945 }
1946 break;
1947 }
1948 case ShopType.Casino:
1949 {
1950 Add("chest_tax", 1, 0);
1951 Add("1165", 1, 0);
1952 Add("monsterball", 1, 0).SetNum(3).SetLv(10);
1953 Add("1175", 1, 0);
1954 Add("1176", 1, 0);
1955 Add("pillow_ehekatl", 1, 0);
1956 Add("grave_dagger1", 1, 0);
1957 Add("grave_dagger2", 1, 0);
1958 Add("434", 1, 0);
1959 Add("433", 1, 0);
1960 Add("714", 1, 0);
1961 Add("1017", 1, 0);
1962 Add("1313", 1, 0);
1963 Add("1155", 1, 0);
1964 Add("1287", 1, 0);
1965 Add("1288", 1, 0);
1966 Add("1289", 1, 0);
1967 Add("1290", 1, 0);
1968 Add("1011", 1, 0);
1969 AddThing(ThingGen.CreatePerfume(9500, 5));
1970 AddThing(ThingGen.CreatePerfume(9501, 5));
1971 AddThing(ThingGen.CreatePerfume(9502, 5));
1972 AddThing(ThingGen.CreatePerfume(9503, 5));
1973 for (int l = 0; l < 5; l++)
1974 {
1975 Thing thing3 = ThingGen.CreateFromCategory("seasoning").SetNum(10);
1976 thing3.elements.SetBase(2, 40);
1977 thing3.c_priceFix = 1000;
1978 AddThing(thing3);
1979 }
1980 break;
1981 }
1982 case ShopType.Medal:
1983 NoRestockId("hammer_garokk", 3, 0);
1984 NoRestockId("sword_dragon", 1, 0);
1985 Add("sword_dragon", 1, 0).SetReplica(on: true);
1986 NoRestockId("point_stick", 1, 0);
1987 Add("point_stick", 1, 0).SetReplica(on: true);
1988 NoRestockId("blunt_bonehammer", 1, 0);
1989 Add("blunt_bonehammer", 1, 0).SetReplica(on: true);
1990 NoRestockId("pole_gunlance", 1, 0);
1991 Add("pole_gunlance", 1, 0).SetReplica(on: true);
1992 NoRestockId("sword_muramasa", 1, 0);
1993 Add("sword_muramasa", 1, 0).SetReplica(on: true);
1994 NoRestockId("sword_forgetmenot", 1, 0);
1995 Add("sword_forgetmenot", 1, 0).SetReplica(on: true);
1996 NoRestockId("dagger_fish", 1, 0);
1997 Add("dagger_fish", 1, 0).SetReplica(on: true);
1998 NoRestockId("sword_zephir", 1, 0);
1999 Add("sword_zephir", 1, 0).SetReplica(on: true);
2000 Add("ribbon", 1, 0);
2001 Add("helm_sage", 1, 0);
2002 NoRestockId("wear_swim_danger", 1, 0);
2003 NoRestockId("wear_swim_danger", 1, 1);
2004 Add("diary_sister", 1, 0);
2005 Add("diary_catsister", 1, 0);
2006 Add("diary_lady", 1, 0);
2007 Add("1165", 1, 0).SetNum(5);
2008 AddThing(ThingGen.CreateScroll(9160).SetNum(5));
2009 Add("1282", 1, 0).SetNum(5);
2010 Add("monsterball", 1, 0).SetNum(3).SetLv(20);
2011 Add("monsterball", 1, 0).SetNum(3).SetLv(40);
2012 Add("bill_tax", 1, 0).c_bill = 1;
2013 Add("bill_tax", 1, 0).c_bill = 1;
2014 Add("bill_tax", 1, 0).c_bill = 1;
2015 AddThing(ThingGen.CreateScroll(8288).SetNum(5));
2016 Add("container_magic", 1, 0);
2017 Add("container_magic", 1, 0).ChangeMaterial("iron").idSkin = 1;
2018 Add("container_magic", 1, 0).ChangeMaterial("bamboo").idSkin = 2;
2019 Add("container_magic", 1, 0).ChangeMaterial("feywood").idSkin = 3;
2020 Add("wrench_tent_elec", 1, 0);
2021 Add("wrench_tent_soil", 1, 0);
2022 Add("wrench_tent_seabed", 1, 0);
2023 Add("wrench_bed", 1, 0).SetNum(20);
2024 Add("wrench_storage", 1, 0).SetNum(10);
2025 Add("wrench_fridge", 1, 0).SetNum(1);
2026 Add("wrench_extend_v", 1, 0).SetNum(2);
2027 Add("wrench_extend_h", 1, 0).SetNum(2);
2028 AddThing(ThingGen.CreateSpellbook(9155, 1, 3));
2029 break;
2030 default:
2031 {
2032 float num2 = (float)(3 + Mathf.Min(ShopLv / 5, 10)) + Mathf.Sqrt(ShopLv);
2033 int num3 = 300;
2034 switch (ShopType)
2035 {
2036 case ShopType.Ecopo:
2037 num3 = 30;
2038 break;
2039 case ShopType.StrangeGirl:
2040 num3 = 50;
2041 break;
2042 case ShopType.TravelMerchant:
2043 case ShopType.TravelMerchant2:
2044 num2 /= 3f;
2045 if (num2 < 12f)
2046 {
2047 num2 = 12f;
2048 }
2049 num3 = 30;
2050 break;
2051 }
2052 num2 = num2 * (float)(100 + EClass.pc.Evalue(1406) * 5) / 100f;
2053 num2 = Mathf.Min(num2, num3);
2054 for (int j = 0; (float)j < num2; j++)
2055 {
2056 if (ShopType == ShopType.TravelMerchant)
2057 {
2058 int num4 = EClass.game.seed + (EClass.world.date.year * 12 + EClass.world.date.month) * 30 + EClass._zone.uid;
2059 Rand.SetBaseSeed(num4 + j);
2060 Rand.SetSeed(num4 + j);
2061 }
2062 Thing thing = CreateStock();
2063 Rand.SetBaseSeed();
2064 Rand.SetSeed();
2065 if ((!thing.trait.IsNoShop || (ShopType == ShopType.LoytelMart && (EClass.debug.enable || EClass.player.flags.loytelMartLv >= 2))) && (!(thing.trait is TraitRod) || thing.c_charges != 0) && thing.GetPrice() > 0)
2066 {
2067 bool tryStack = true;
2068 if (ShopType == ShopType.Curry)
2069 {
2070 tryStack = false;
2071 }
2072 t.AddThing(thing, tryStack);
2073 }
2074 }
2075 break;
2076 }
2077 }
2078 foreach (RecipeSource item3 in RecipeManager.list)
2079 {
2080 if (item3.row.recipeKey.IsEmpty())
2081 {
2082 continue;
2083 }
2084 string[] array2 = item3.row.recipeKey;
2085 for (int k = 0; k < array2.Length; k++)
2086 {
2087 if (array2[k] == ShopType.ToString())
2088 {
2089 NoRestock(ThingGen.CreateRecipe(item3.id));
2090 break;
2091 }
2092 }
2093 }
2094 switch (ShopType)
2095 {
2096 case ShopType.Curry:
2097 if (EClass.game.quests.IsCompleted("curry"))
2098 {
2099 AddThing(TraitSeed.MakeSeed("redpepper").SetNum(5));
2100 }
2101 break;
2102 case ShopType.Moyer:
2103 {
2104 for (int num14 = 1; num14 <= 22; num14++)
2105 {
2106 AddAdvWeek(num14);
2107 }
2108 break;
2109 }
2110 case ShopType.StrangeGirl:
2111 {
2112 int num15 = (EClass.debug.enable ? 20 : (EClass._zone.development / 10));
2113 if (num15 > 0)
2114 {
2115 Add("syringe_gene", num15, 0);
2116 Add("diary_little", 1, 0);
2117 }
2118 if (num15 > 10)
2119 {
2120 Add("syringe_heaven", num15 / 5, 0);
2121 Add("1276", 1, 0);
2122 }
2123 Add("medal", 10, 0);
2124 Add("ticket_fortune", 10, 0);
2125 break;
2126 }
2127 case ShopType.GeneralExotic:
2128 Add("tool_talisman", 1, 0);
2129 break;
2130 case ShopType.Healer:
2131 AddThing(ThingGen.CreatePotion(8400).SetNum(4 + EClass.rnd(6)));
2132 AddThing(ThingGen.CreatePotion(8401).SetNum(2 + EClass.rnd(4)));
2133 AddThing(ThingGen.CreatePotion(8402).SetNum(1 + EClass.rnd(3)));
2134 break;
2135 case ShopType.Food:
2136 Add("ration", 2 + EClass.rnd(4), 0);
2137 break;
2138 case ShopType.Ecopo:
2139 Add("ecomark", 5, 0);
2140 Add("whip_egg", 1, 0);
2141 Add("helm_chef", 1, 0);
2142 Add("hammer_strip", 1, 0);
2143 Add("brush_strip", 1, 0);
2144 Add("1165", 1, 0);
2145 Add("plat", 100, 0);
2146 AddThing(ThingGen.CreateScroll(9160).SetNum(5));
2147 AddThing(ThingGen.CreateRune(450, 1, free: true));
2148 break;
2149 case ShopType.Gun:
2150 Add("bullet", 1, 0).SetNum(300 + EClass.rnd(100)).ChangeMaterial("iron");
2151 Add("bullet_energy", 1, 0).SetNum(100 + EClass.rnd(100)).ChangeMaterial("iron");
2152 break;
2153 case ShopType.Magic:
2154 if (!Guild.Mage.IsMember && ((EClass._zone.id == "lumiest" && EClass._zone.lv == 0) || (EClass._zone.id != "lumiest" && EClass.rnd(4) == 0)))
2155 {
2156 t.AddThing(ThingGen.Create("letter_trial"));
2157 }
2158 AddThing(ThingGen.CreateScroll(8220, 4 + EClass.rnd(6)));
2159 AddThing(ThingGen.CreateScroll(8221, 4 + EClass.rnd(6)));
2160 AddThing(ThingGen.CreateScroll(8200, 4 + EClass.rnd(6)));
2161 AddThing(ThingGen.CreateScroll(8201, 4 + EClass.rnd(6)));
2162 break;
2163 case ShopType.Festival:
2165 {
2166 Add("1085", 1, 0);
2167 if (EClass._zone.id == "noyel")
2168 {
2169 Add("holyFeather", 1, 0);
2170 }
2171 }
2172 break;
2173 case ShopType.Junk:
2174 case ShopType.LoytelMart:
2175 {
2176 if (ShopType == ShopType.LoytelMart)
2177 {
2178 Add("ticket_massage", 1, 0);
2179 Add("ticket_armpillow", 1, 0);
2180 Add("ticket_champagne", 1, 0);
2181 }
2182 for (int num12 = 0; num12 < 3; num12++)
2183 {
2184 if (EClass.rnd(5) == 0)
2185 {
2186 TreasureType treasureType = ((EClass.rnd(10) == 0) ? TreasureType.BossNefia : ((EClass.rnd(10) == 0) ? TreasureType.Map : TreasureType.RandomChest));
2187 int num13 = EClass.rnd(EClass.rnd(ShopLv + (EClass.debug.enable ? 200 : 50)) + 1) + 1;
2188 Thing thing6 = ThingGen.Create(treasureType switch
2189 {
2190 TreasureType.Map => "chest_treasure",
2191 TreasureType.BossNefia => "chest_boss",
2192 _ => "chest3",
2193 });
2194 thing6.c_lockedHard = true;
2195 thing6.c_lockLv = num13;
2196 thing6.c_priceAdd = 2000 + num13 * 250 * ((treasureType == TreasureType.RandomChest) ? 1 : 5);
2197 thing6.c_revealLock = true;
2198 ThingGen.CreateTreasureContent(thing6, num13, treasureType, clearContent: true);
2199 AddThing(thing6);
2200 }
2201 }
2202 break;
2203 }
2204 }
2205 switch (ShopType)
2206 {
2207 case ShopType.General:
2208 case ShopType.Food:
2209 {
2210 for (int num16 = 0; num16 < (EClass.debug.enable ? 3 : 3); num16++)
2211 {
2212 if (EClass.rnd(3) == 0)
2213 {
2214 int lv = EClass.rnd(EClass.rnd(ShopLv + (EClass.debug.enable ? 200 : 50)) + 1) + 1;
2215 Thing t2 = ThingGen.Create("chest_gamble", -1, lv).SetNum(1 + EClass.rnd(20));
2216 AddThing(t2);
2217 }
2218 }
2219 break;
2220 }
2221 case ShopType.Booze:
2222 if (EClass._zone is Zone_Yowyn && EClass._zone.lv == -1)
2223 {
2224 Add("churyu", EClass.rndHalf(10), 0);
2225 }
2226 break;
2227 }
2228 switch (owner.id)
2229 {
2230 case "rodwyn":
2231 AddThing(ThingGen.CreateSpellbook(8790));
2232 AddThing(ThingGen.CreatePotion(8791).SetNum(3 + EClass.rnd(3)));
2233 AddThing(ThingGen.CreatePotion(8792).SetNum(3 + EClass.rnd(3)));
2234 AddThing(ThingGen.CreatePotion(8794).SetNum(3 + EClass.rnd(3)));
2235 Add("1341", EClass.rndHalf(5), 0);
2236 break;
2237 case "girl_blue":
2238 Add("779", 1 + EClass.rnd(3), 0);
2239 break;
2240 case "nola":
2241 AddThing(ThingGen.CreateRecipe("ic").SetPriceFix(400));
2242 AddThing(ThingGen.CreateRecipe("bullet").SetPriceFix(300));
2243 AddThing(ThingGen.CreateRecipe("break_powder").SetPriceFix(1000));
2244 AddThing(ThingGen.CreateRecipe("quarrel").SetPriceFix(100));
2245 AddThing(ThingGen.CreateRecipe("1099").SetPriceFix(400));
2246 AddThing(ThingGen.CreateRecipe("detector").SetPriceFix(700));
2247 AddThing(ThingGen.CreatePlan(2710)).SetPriceFix(-100);
2248 AddThing(ThingGen.CreatePlan(2711)).SetPriceFix(-100);
2249 AddThing(ThingGen.CreatePlan(2712)).SetPriceFix(200);
2250 break;
2251 }
2253 {
2254 Add("lockpick", 1, 0);
2255 if (EClass.rnd(2) == 0)
2256 {
2257 Add("lockpick", 1, 0);
2258 }
2259 AddThing(ThingGen.CreateScroll(8780, EClass.rndHalf(5)));
2260 }
2261 foreach (Thing thing12 in t.things)
2262 {
2263 thing12.c_idBacker = 0;
2264 if (ShopType != ShopType.Copy)
2265 {
2266 thing12.TryMakeRandomItem(ShopLv);
2267 if (thing12.Num == 1)
2268 {
2269 thing12.SetNum(thing12.trait.DefaultStock);
2270 }
2271 if (thing12.trait is TraitFoodMeal)
2272 {
2273 CraftUtil.MakeDish(thing12, ShopLv, owner.Chara);
2274 }
2275 if (thing12.IsFood && owner.id == "rodwyn")
2276 {
2277 SourceElement.Row row = EClass.sources.elements.rows.Where((SourceElement.Row e) => !e.foodEffect.IsEmpty() && e.category != "feat" && e.chance > 0).RandomItem();
2278 thing12.elements.SetBase(row.id, 10 + EClass.rnd(10));
2279 }
2280 }
2281 if (CurrencyType == CurrencyType.Casino_coin)
2282 {
2283 thing12.noSell = true;
2284 }
2286 {
2287 thing12.isStolen = true;
2288 }
2289 if (!(thing12.trait is TraitErohon))
2290 {
2291 thing12.c_IDTState = 0;
2292 }
2293 if (CurrencyType == CurrencyType.Money && (thing12.category.IsChildOf("meal") || thing12.category.IsChildOf("preserved")) && thing12.id != "ration" && !thing12.IsUnique)
2294 {
2295 thing12.c_priceFix = -70;
2296 }
2297 if (ShopType == ShopType.TravelMerchant)
2298 {
2299 thing12.c_priceFix = 200;
2300 }
2301 if (thing12.trait is TraitErohon)
2302 {
2303 thing12.c_IDTState = 5;
2304 }
2305 if (thing12.IsContainer && !thing12.c_revealLock)
2306 {
2307 thing12.RemoveThings();
2308 t.c_lockLv = 0;
2309 }
2310 }
2311 if (t.things.Count <= t.things.GridSize)
2312 {
2313 return;
2314 }
2315 int num17 = t.things.width * 10;
2316 if (t.things.Count > num17)
2317 {
2318 int num18 = t.things.Count - num17;
2319 for (int num19 = 0; num19 < num18; num19++)
2320 {
2321 t.things.LastItem().Destroy();
2322 }
2323 }
2324 t.things.ChangeSize(t.things.width, Mathf.Min(t.things.Count / t.things.width + 1, 10));
2325 Thing Add(string id, int a, int idSkin)
2326 {
2328 Thing thing9 = ThingGen.Create(id, -1, ShopLv).SetNum(a);
2329 thing9.idSkin = ((idSkin == -1) ? EClass.rnd(thing9.source.skins.Length + 1) : idSkin);
2330 return t.AddThing(thing9);
2331 }
2332 void AddAdvWeek(int i)
2333 {
2334 Thing thing7 = ThingGen.CreateRedBook("advweek_" + i);
2335 thing7.c_priceFix = -90;
2336 AddThing(thing7);
2337 }
2338 void AddCassette(int idCas, string idQuest, int phase)
2339 {
2340 if (idQuest == null || EClass.game.quests.GetPhase(idQuest) >= phase)
2341 {
2342 AddThing(ThingGen.CreateCassette(idCas));
2343 }
2344 }
2345 Thing AddThing(Thing _t)
2346 {
2347 return t.AddThing(_t);
2348 }
2349 void NoRestock(Thing _t)
2350 {
2351 string text = owner.id;
2352 if (_t.idSkin != 0)
2353 {
2354 text = text + "_skin" + _t.idSkin;
2355 }
2356 HashSet<string> hashSet = EClass.player.noRestocks.TryGetValue(text);
2357 if (hashSet == null)
2358 {
2359 hashSet = new HashSet<string>();
2360 }
2361 if (!hashSet.Contains(_t.trait.IdNoRestock))
2362 {
2363 hashSet.Add(_t.trait.IdNoRestock);
2364 EClass.player.noRestocks[text] = hashSet;
2365 _t.SetInt(101, 1);
2366 AddThing(_t);
2367 }
2368 }
2369 void NoRestockId(string _id, int num, int idSkin)
2370 {
2371 Thing thing8 = ThingGen.Create(_id).SetNum(num);
2372 thing8.idSkin = idSkin;
2373 NoRestock(thing8);
2374 }
2375 }
@ seed
CurrencyType
Definition: CurrencyType.cs:2
ID_Achievement
PriceType
Definition: PriceType.cs:2
TreasureType
Definition: TreasureType.cs:2
bool CanGiveCard()
Definition: Affinity.cs:70
int GetInt(int id, int? defaultInt=null)
Definition: BaseCard.cs:25
void SetInt(int id, int value=0)
Definition: BaseCard.cs:39
static void SetNormalRarity(bool fixedMat=false)
Thing TryMakeRandomItem(int lv=-1, TryMakeRandomItemSource itemSource=TryMakeRandomItemSource.Default, Chara crafter=null)
Definition: Card.cs:5596
virtual Chara Chara
Definition: Card.cs:2110
ElementContainerCard elements
Definition: Card.cs:42
bool isRestocking
Definition: Card.cs:893
virtual int GetPrice(CurrencyType currency=CurrencyType.Money, bool sell=false, PriceType priceType=PriceType.Default, Chara c=null)
Definition: Card.cs:7590
Thing AddThing(string id, int lv=-1)
Definition: Card.cs:3182
Card SetLv(int a)
Definition: Card.cs:2979
bool c_revealLock
Definition: Card.cs:1063
bool IsFood
Definition: Card.cs:2217
void DyeRandom()
Definition: Card.cs:6287
int Evalue(int ele)
Definition: Card.cs:2613
int idSkin
Definition: Card.cs:365
Thing Duplicate(int num)
Definition: Card.cs:3528
Thing c_copyContainer
Definition: Card.cs:1837
void ModExp(string alias, int a)
Definition: Card.cs:2690
bool IsContainer
Definition: Card.cs:2129
void RemoveThings()
Definition: Card.cs:3394
Affinity affinity
Definition: Chara.cs:316
static Thing MakeLoveLunch(Chara c)
Definition: CraftUtil.cs:220
static void MakeDish(Thing food, int lv, Chara crafter=null, int seed=-1)
Definition: CraftUtil.cs:61
int GetRaw(int offsetHours=0)
Definition: Date.cs:328
int month
Definition: Date.cs:50
static Game game
Definition: EClass.cs:9
static int rndSeed(int a, int seed)
Definition: EClass.cs:51
Dictionary< int, Element > dict
Element SetBase(string alias, int v, int potential=0)
void Remove(int id)
bool HasBase(int ele)
bool HasTag(string tag)
Definition: ELEMENT.cs:478
SpatialManager spatials
Definition: Game.cs:153
bool IsSurvival
Definition: Game.cs:276
QuestManager quests
Definition: Game.cs:183
static GuildMage Mage
Definition: Guild.cs:58
bool IsMember
Definition: Guild.cs:72
static SourceMaterial.Row GetRandomMaterial(int lv, string group=null, bool tryLevelMatTier=false)
Definition: MATERIAL.cs:56
static SourceMaterial.Row GetRandomMaterialFromCategory(int lv, string cat, SourceMaterial.Row fallback)
Definition: MATERIAL.cs:93
int married
Definition: Player.cs:132
Stats stats
Definition: Player.cs:1083
Dictionary< string, HashSet< string > > noRestocks
Definition: Player.cs:1194
int GetPhase(string id)
bool IsCompleted(string id)
Definition: Rand.cs:4
static void SetBaseSeed(int a=-1)
Definition: Rand.cs:39
static void SetSeed(int a=-1)
Definition: Rand.cs:44
static List< RecipeSource > list
RenderRow row
Definition: RecipeSource.cs:5
string[] recipeKey
Definition: RenderRow.cs:56
Zone Find(string id)
int lv
Definition: Spatial.cs:142
int uid
Definition: Spatial.cs:70
Definition: Steam.cs:10
static void GetAchievement(ID_Achievement id)
Definition: Steam.cs:51
void DestroyAll(Func< Thing, bool > funcExclude=null)
Thing Find(int uid)
void ChangeSize(int w, int h)
static Thing CreateRune(int ele, int v, bool free=false)
Definition: ThingGen.cs:201
static Thing CreatePerfume(int ele, int num=1)
Definition: ThingGen.cs:223
static Thing CreateRedBook(string id, int num=1)
Definition: ThingGen.cs:167
static void CreateTreasureContent(Thing t, int lv, TreasureType type, bool clearContent)
Definition: ThingGen.cs:263
static Thing CreateCassette(int id)
Definition: ThingGen.cs:230
static Thing CreatePlan(int ele)
Definition: ThingGen.cs:137
static Thing CreateRecipe(string id)
Definition: ThingGen.cs:144
static Thing CreateSkillbook(int ele, int num=1)
Definition: ThingGen.cs:175
static Thing CreateFromCategory(string idCat, int lv=-1)
Definition: ThingGen.cs:75
SourceThing.Row source
Definition: Thing.cs:11
static Thing MakeSeed(string id, PlantData plant=null)
Definition: TraitSeed.cs:88
static void SetZone(Zone zone, Thing t)
virtual CopyShopType CopyShop
Definition: Trait.cs:527
Thing CreateStock()
Definition: Trait.cs:2377
virtual int RestockDay
Definition: Trait.cs:563
virtual string IdNoRestock
Definition: Trait.cs:373
virtual bool IsNoShop
Definition: Trait.cs:66
virtual int DefaultStock
Definition: Trait.cs:131
virtual bool CanCopy(Thing t)
Definition: Trait.cs:1557
CopyShopType
Definition: Trait.cs:20
virtual int NumCopyItem
Definition: Trait.cs:529

References EClass._zone, Card.AddThing(), Chara.affinity, Card.c_charges, Card.c_copyContainer, Card.c_dateStockExpire, Card.c_revealLock, CanCopy(), Affinity.CanGiveCard(), Card.category, Card.Chara, CopyShop, ThingGen.Create(), ThingGen.CreateCassette(), ThingGen.CreateFromCategory(), ThingGen.CreateFromFilter(), ThingGen.CreatePerfume(), ThingGen.CreatePlan(), ThingGen.CreatePotion(), ThingGen.CreateRecipe(), ThingGen.CreateRedBook(), ThingGen.CreateRune(), ThingGen.CreateScroll(), ThingGen.CreateSkillbook(), ThingGen.CreateSpellbook(), ThingGen.CreateTreasureContent(), World.date, EClass.debug, DefaultStock, ThingContainer.DestroyAll(), Card.Duplicate(), Card.DyeRandom(), Card.elements, SourceManager.elements, CoreDebug.enable, Card.Evalue(), ThingContainer.Find(), SpatialManager.Find(), Player.flags, EClass.game, Steam.GetAchievement(), BaseCard.GetInt(), QuestManager.GetPhase(), Card.GetPrice(), MATERIAL.GetRandomMaterial(), MATERIAL.GetRandomMaterialFromCategory(), Date.GetRaw(), ElementContainer.HasBase(), Element.HasTag(), Card.id, RecipeSource.id, SourceElement.Row.id, Spatial.id, IdNoRestock, Card.idSkin, QuestManager.IsCompleted(), Card.IsContainer, GuildThief.IsCurrentZone, Date.IsExpired(), Zone.IsFestival, Card.IsFood, Guild.IsMember, IsNoShop, Card.isRestocking, Game.IsSurvival, Card.IsUnique, item, RecipeManager.list, Player.Flags.loytelMartLv, Spatial.lv, Guild.Mage, CraftUtil.MakeDish(), CraftUtil.MakeLoveLunch(), TraitSeed.MakeSeed(), Player.Stats.married, SourceManager.materials, Card.ModExp(), Date.month, Player.noRestocks, Card.Num, NumCopyItem, EClass.pc, EClass.player, Game.quests, RenderRow.recipeKey, ElementContainer.Remove(), Card.RemoveThings(), EClass.rnd(), EClass.rndHalf(), EClass.rndSeed(), RecipeSource.row, seed, ElementContainer.SetBase(), Rand.SetBaseSeed(), BaseCard.SetInt(), Card.SetLv(), CardBlueprint.SetNormalRarity(), Card.SetNum(), Card.SetPriceFix(), Rand.SetSeed(), TraitTicketFurniture.SetZone(), Thing.source, EClass.sources, Game.spatials, Player.stats, Guild.Thief, Card.Thing, Card.things, Card.trait, Card.TryMakeRandomItem(), Spatial.uid, and EClass.world.

Referenced by TraitVendingMachine.OnUse(), and Card.SpawnLoot().

◆ OnBlend()

virtual void Trait.OnBlend ( Thing  t,
Chara  c 
)
inlinevirtual

Reimplemented in TraitDreamBug, TraitDrink, TraitDye, and TraitWell.

Definition at line 635 of file Trait.cs.

636 {
637 }

Referenced by InvOwnerBlend._OnProcess(), and Chara.TryUse().

◆ OnChangePlaceState()

virtual void Trait.OnChangePlaceState ( PlaceState  state)
inlinevirtual

Reimplemented in TraitBoat, TraitDoorSwing, TraitHouseBoard, TraitLightSun, TraitTeleporter, TraitTent, and TraitTrainingDummyArmor.

Definition at line 702 of file Trait.cs.

703 {
704 }

Referenced by Card.SetPlaceState().

◆ OnChildDecay()

virtual bool Trait.OnChildDecay ( Card  c,
bool  firstDecay 
)
inlinevirtual

Reimplemented in TraitBrewery.

Definition at line 1164 of file Trait.cs.

1165 {
1166 return true;
1167 }

◆ OnCrafted()

virtual void Trait.OnCrafted ( Recipe  recipe,
List< Thing ings 
)
inlinevirtual

Reimplemented in TraitBlanket, TraitFakeTile, and TraitPotionAlchemy.

Definition at line 686 of file Trait.cs.

687 {
688 }

Referenced by Recipe.Craft(), and RecipeCard.Craft().

◆ OnCreate()

◆ OnDrink()

virtual void Trait.OnDrink ( Chara  c)
inlinevirtual

Reimplemented in TraitDrink, TraitDrinkMilkMother, TraitLumiestCrimAle, and TraitPotionEmpty.

Definition at line 1094 of file Trait.cs.

1095 {
1096 }

Referenced by Chara.Drink(), and ActThrow.Throw().

◆ OnEat()

virtual void Trait.OnEat ( Chara  c)
inlinevirtual

Reimplemented in TraitFortuneCookie.

Definition at line 1085 of file Trait.cs.

1086 {
1087 }

◆ OnEnterScreen()

virtual void Trait.OnEnterScreen ( )
inlinevirtual

Reimplemented in TraitToolTorch.

Definition at line 1518 of file Trait.cs.

1519 {
1521 }
virtual void RefreshRenderer()
Definition: Trait.cs:1523

Referenced by CardRenderer.OnEnterScreen().

◆ OnEquip()

virtual void Trait.OnEquip ( Chara  c,
bool  onSetOwner 
)
inlinevirtual

Reimplemented in TraitEQFlower.

Definition at line 694 of file Trait.cs.

695 {
696 }

Referenced by CharaBody.Equip(), and CharaBody.SetOwner().

◆ OnHeld()

virtual void Trait.OnHeld ( )
inlinevirtual

Reimplemented in TraitDetector.

Definition at line 1148 of file Trait.cs.

1149 {
1150 }

Referenced by HotItemHeld.OnSetCurrentItem().

◆ OnImportMap()

virtual void Trait.OnImportMap ( )
inlinevirtual

Reimplemented in TraitAltar, TraitASMR, TraitBook, TraitNewZone, and TraitNote.

Definition at line 678 of file Trait.cs.

679 {
680 }

Referenced by SerializedCards.Restore().

◆ OnInstall()

virtual void Trait.OnInstall ( bool  byPlayer)
inlinevirtual

Reimplemented in TraitSwitch.

Definition at line 1228 of file Trait.cs.

1229 {
1230 }

◆ OnLockOpen()

virtual void Trait.OnLockOpen ( Chara  cc)
inlinevirtual

Definition at line 1037 of file Trait.cs.

1038 {
1039 owner.c_lockLv = 0;
1040 if (owner.c_lockedHard)
1041 {
1042 owner.c_lockedHard = false;
1043 owner.c_priceAdd = 0;
1044 }
1045 if (cc.IsPC && owner.isLostProperty)
1046 {
1048 }
1049 owner.isLostProperty = false;
1050 if (owner.GetBool(127))
1051 {
1052 Steam.GetAchievement(ID_Achievement.FIAMA_CHEST);
1053 }
1054 }
bool GetBool(int id)
Definition: BaseCard.cs:15
bool c_lockedHard
Definition: Card.cs:1051
bool isLostProperty
Definition: Card.cs:809
override bool IsPC
Definition: Chara.cs:626
void ModKarma(int a)
Definition: Player.cs:2610

References Card.c_lockedHard, Steam.GetAchievement(), BaseCard.GetBool(), Card.isLostProperty, Chara.IsPC, Player.ModKarma(), and EClass.player.

◆ OnOpenDoor()

virtual void Trait.OnOpenDoor ( Chara  c)
inlinevirtual

Reimplemented in TraitDoorBell.

Definition at line 1186 of file Trait.cs.

1187 {
1188 }

Referenced by TraitDoor.TryOpen().

◆ OnRead()

◆ OnRemovedFromZone()

virtual void Trait.OnRemovedFromZone ( )
inlinevirtual

Reimplemented in TraitBoat.

Definition at line 710 of file Trait.cs.

711 {
712 }

Referenced by Map.OnCardRemovedFromZone().

◆ OnRenderExtra()

virtual void Trait.OnRenderExtra ( RenderParam  p)
inlinevirtual

Reimplemented in TraitPaintBoard, and TraitShrine.

Definition at line 654 of file Trait.cs.

655 {
656 }

Referenced by CardRenderer.Draw().

◆ OnRenderTile()

virtual void Trait.OnRenderTile ( Point  point,
HitResult  result,
int  dir 
)
inlinevirtual

Reimplemented in TraitLightSun, and TraitRoadSign.

Definition at line 727 of file Trait.cs.

728 {
729 if (radius == 0)
730 {
731 return;
732 }
733 Vector3 vector = point.Position();
734 vector.z += EClass.setting.render.thingZ;
735 foreach (Point item in ListPoints(point))
736 {
737 Vector3 vector2 = item.Position();
738 EClass.screen.guide.passGuideFloor.Add(vector2.x, vector2.y, vector2.z, 10f, 0.3f);
739 }
740 }
ScreenGuide guide
static BaseGameScreen screen
Definition: EClass.cs:33
static GameSetting setting
Definition: EClass.cs:35
RenderSetting render
Definition: GameSetting.cs:301
void Add(Point point, float tile=0f, float color=0f)
Definition: MeshPass.cs:122
ref Vector3 Position(int height)
Definition: Point.cs:548
MeshPass passGuideFloor
Definition: ScreenGuide.cs:7

References MeshPass.Add(), BaseGameScreen.guide, item, ListPoints(), ScreenGuide.passGuideFloor, Point.Position(), radius, GameSetting.render, EClass.screen, EClass.setting, and GameSetting.RenderSetting.thingZ.

Referenced by RecipeCard.OnRenderMarker(), ActionMode.OnRenderTile(), and AM_Adv.OnRenderTile().

◆ OnSetCardGrid()

virtual void Trait.OnSetCardGrid ( ButtonGrid  b)
inlinevirtual

Reimplemented in TraitCanvas, TraitContainer, TraitEquipItem, and TraitFigure.

Definition at line 1174 of file Trait.cs.

1175 {
1176 }

Referenced by ButtonGrid.SetCard().

◆ OnSetCurrentItem()

virtual void Trait.OnSetCurrentItem ( )
inlinevirtual

Reimplemented in TraitToolTorch.

Definition at line 1156 of file Trait.cs.

1157 {
1158 }

◆ OnSetOwner()

virtual void Trait.OnSetOwner ( )
inlinevirtual

Definition at line 674 of file Trait.cs.

675 {
676 }

Referenced by SetOwner().

◆ OnSimulateHour()

virtual void Trait.OnSimulateHour ( VirtualDate  date)
inlinevirtual

Reimplemented in TraitChestPractice, TraitClock, TraitFertilizer, TraitGenerator, and TraitPhone.

Definition at line 714 of file Trait.cs.

715 {
716 }

Referenced by Card.OnSimulateHour().

◆ OnStepped()

virtual void Trait.OnStepped ( Chara  c)
inlinevirtual

Reimplemented in TraitCurrencyMedal, TraitFloorSwitch, TraitGeneratorWheel, TraitMiniPool, TraitNewZone, TraitSwing, and TraitTrapMine.

Definition at line 1178 of file Trait.cs.

1179 {
1180 }

Referenced by Chara._Move(), and Chara.Tick().

◆ OnSteppedOut()

virtual void Trait.OnSteppedOut ( Chara  c)
inlinevirtual

Reimplemented in TraitGeneratorWheel, and TraitSwing.

Definition at line 1182 of file Trait.cs.

1183 {
1184 }

Referenced by Chara._Move().

◆ OnThrowGround()

virtual void Trait.OnThrowGround ( Chara  c,
Point  p 
)
inlinevirtual

Reimplemented in TraitDrink, and TraitDye.

Definition at line 1098 of file Trait.cs.

1099 {
1100 }

Referenced by ActThrow.Throw().

◆ OnTickHeld()

virtual void Trait.OnTickHeld ( )
inlinevirtual

Reimplemented in TraitDetector.

Definition at line 1152 of file Trait.cs.

1153 {
1154 }

◆ OnToggle()

virtual void Trait.OnToggle ( )
inlinevirtual

Reimplemented in TraitJukeBox, and TraitLeverBreaker.

Definition at line 1338 of file Trait.cs.

1339 {
1340 }

◆ OnUnequip()

virtual void Trait.OnUnequip ( Chara  c)
inlinevirtual

Reimplemented in TraitEQFlower.

Definition at line 698 of file Trait.cs.

699 {
700 }

Referenced by CharaBody.Unequip().

◆ OnUninstall()

virtual void Trait.OnUninstall ( )
inlinevirtual

Definition at line 1232 of file Trait.cs.

1233 {
1234 }

◆ OnUnsetCurrentItem()

virtual void Trait.OnUnsetCurrentItem ( )
inlinevirtual

Reimplemented in TraitToolTorch.

Definition at line 1160 of file Trait.cs.

1161 {
1162 }

◆ OnUse() [1/3]

◆ OnUse() [2/3]

virtual bool Trait.OnUse ( Chara  c,
Card  tg 
)
inlinevirtual

Reimplemented in TraitDye, and TraitFoodMeat.

Definition at line 1126 of file Trait.cs.

1127 {
1128 return true;
1129 }

◆ OnUse() [3/3]

virtual bool Trait.OnUse ( Chara  c,
Point  p 
)
inlinevirtual

Reimplemented in TraitPotionEmpty.

Definition at line 1131 of file Trait.cs.

1132 {
1133 return true;
1134 }

◆ PlayToggleEffect()

virtual void Trait.PlayToggleEffect ( bool  silent)
inlinevirtual

Reimplemented in TraitWoodMill.

Definition at line 1292 of file Trait.cs.

1293 {
1294 bool flag = ToggleType == ToggleType.Fire;
1295 bool isOn = owner.isOn;
1296 switch (ToggleType)
1297 {
1298 case ToggleType.Lever:
1299 if (!silent)
1300 {
1301 owner.Say("lever", EClass.pc, owner);
1302 owner.PlaySound("switch_lever");
1303 }
1304 return;
1305 case ToggleType.Curtain:
1306 if (!silent)
1307 {
1308 owner.Say(isOn ? "close" : "open", EClass.pc, owner);
1309 owner.PlaySound("Material/leather_drop");
1310 }
1313 return;
1314 case ToggleType.None:
1315 return;
1316 }
1317 if (isOn)
1318 {
1319 if (!silent)
1320 {
1321 owner.Say(flag ? "toggle_fire" : "toggle_ele", EClass.pc, owner);
1323 }
1326 }
1327 else
1328 {
1329 if (!silent)
1330 {
1332 }
1335 }
1336 }
void RefreshNeighborTiles()
Definition: Point.cs:1277
virtual string IdSoundToggleOff
Definition: Trait.cs:510
virtual string IdSoundToggleOn
Definition: Trait.cs:494

References Card.isOn, EClass.pc, Card.PlaySound(), Card.pos, Card.RecalculateFOV(), Point.RefreshNeighborTiles(), and Card.Say().

◆ RefreshRenderer()

virtual void Trait.RefreshRenderer ( )
inlinevirtual

Reimplemented in TraitToolTorch.

Definition at line 1523 of file Trait.cs.

1524 {
1525 if (owner.renderer.isSynced && !IdToggleExtra.IsEmpty())
1526 {
1527 if (owner.isOn)
1528 {
1530 }
1531 else
1532 {
1534 }
1535 }
1536 }
void AddExtra(string id)
void RemoveExtra(string id)
CardRenderer renderer
Definition: Card.cs:64
string IdToggleExtra
Definition: Trait.cs:479

References CardRenderer.AddExtra(), Card.isOn, RenderObject.isSynced, CardRenderer.RemoveExtra(), and Card.renderer.

◆ Refuel()

void Trait.Refuel ( Thing  t)
inline

Definition at line 1472 of file Trait.cs.

1473 {
1474 t.PlaySoundDrop(spatial: false);
1476 Msg.Say("fueled", t);
1477 if (!owner.isOn)
1478 {
1479 owner.trait.Toggle(on: true);
1480 }
1481 t.Destroy();
1483 }
void PlayAnime(AnimeID id, bool force)
void ModCharge(int a, bool destroy=false)
Definition: Card.cs:4034
void PlaySoundDrop(bool spatial=true)
Definition: Card.cs:6444
Definition: Msg.cs:5
static string Say(string idLang, string ref1, string ref2=null, string ref3=null, string ref4=null)
Definition: Msg.cs:58
virtual void Toggle(bool on, bool silent=false)
Definition: Trait.cs:1258

References Card.Destroy(), Card.isOn, Card.ModCharge(), Card.Num, CardRenderer.PlayAnime(), Card.PlaySoundDrop(), Card.renderer, Msg.Say(), Toggle(), and Card.trait.

Referenced by InvOwnerRefuel._OnProcess().

◆ SetMainText()

virtual void Trait.SetMainText ( UIText  t,
bool  hotitem 
)
inlinevirtual

Reimplemented in TraitAbility, and TraitToolRange.

Definition at line 1538 of file Trait.cs.

1539 {
1540 if (owner.isThing && !owner.Thing.source.attackType.IsEmpty() && owner.ammoData != null)
1541 {
1542 t.SetText(owner.c_ammo.ToString() ?? "", FontColor.Charge);
1543 t.SetActive(enable: true);
1544 }
1545 else if (owner.Num == 1 && ShowCharges && owner.IsIdentified)
1546 {
1547 t.SetText(owner.c_charges.ToString() ?? "", FontColor.Charge);
1548 t.SetActive(enable: true);
1549 }
1550 else
1551 {
1552 t.SetText(owner.Num.ToShortNumber(), FontColor.ButtonGrid);
1553 t.SetActive(owner.Num > 1);
1554 }
1555 }
FontColor
Definition: FontColor.cs:2
virtual bool isThing
Definition: Card.cs:2121
int c_ammo
Definition: Card.cs:1489
Thing ammoData
Definition: Card.cs:1813
bool IsIdentified
Definition: Card.cs:2419
virtual bool ShowCharges
Definition: Trait.cs:343
void SetText(string s)
Definition: UIText.cs:163

References Card.ammoData, Card.c_ammo, Card.c_charges, Card.IsIdentified, Card.isThing, Card.Num, UIText.SetText(), Thing.source, and Card.Thing.

Referenced by ButtonGrid.SetCard(), and HotItemThing.SetSubText().

◆ SetName()

◆ SetOwner()

virtual void Trait.SetOwner ( Card  _owner)
inlinevirtual

Definition at line 663 of file Trait.cs.

664 {
665 owner = _owner;
666 OnSetOwner();
667 }
virtual void OnSetOwner()
Definition: Trait.cs:674

References OnSetOwner(), and owner.

Referenced by Card.ApplyTrait().

◆ SetParams()

virtual void Trait.SetParams ( params string[]  s)
inlinevirtual

Definition at line 682 of file Trait.cs.

683 {
684 }

◆ Toggle()

virtual void Trait.Toggle ( bool  on,
bool  silent = false 
)
inlinevirtual

Definition at line 1258 of file Trait.cs.

1259 {
1260 if (owner.isOn == on)
1261 {
1262 return;
1263 }
1264 if (Electricity < 0)
1265 {
1266 if (on)
1267 {
1269 {
1271 {
1272 if (!silent)
1273 {
1274 owner.Say("notEnoughElectricity", owner);
1275 }
1276 owner.PlaySound("electricity_insufficient");
1277 }
1278 return;
1279 }
1280 EClass._zone.electricity += Electricity;
1281 }
1282 else
1283 {
1284 EClass._zone.electricity -= Electricity;
1285 }
1286 }
1287 owner.isOn = on;
1288 PlayToggleEffect(silent);
1289 OnToggle();
1290 }
int electricity
Definition: Spatial.cs:250
virtual void PlayToggleEffect(bool silent)
Definition: Trait.cs:1292
virtual void OnToggle()
Definition: Trait.cs:1338

References EClass._zone, Spatial.electricity, Card.isOn, Zone.isStarted, Card.PlaySound(), and Card.Say().

Referenced by Card.AddThing(), ZoneEventRaid.GetSpawnPos(), AI_UseCrafter.OnEnd(), TraitFireworkLauncher.OnUse(), TraitGeneratorHamster.OnUse(), TraitItemToggle.OnUse(), TraitMusicBox.OnUse(), TraitTerraGlobe.OnUse(), Refuel(), and AI_UseCrafter.Run().

◆ TryOpenLock()

virtual LockOpenState Trait.TryOpenLock ( Chara  cc,
bool  msgFail = true 
)
inlinevirtual

Definition at line 919 of file Trait.cs.

920 {
921 Thing thing = cc.things.FindBest<TraitLockpick>((Thing t) => -t.c_charges);
922 int num = ((thing == null) ? (cc.Evalue(280) / 2 + 2) : (cc.Evalue(280) + 10));
923 int num2 = owner.c_lockLv;
924 bool flag = this is TraitChestPractice;
925 if (flag)
926 {
927 num2 = num / 4 * 3 - 1;
928 }
929 if (num <= num2 && cc.IsPC)
930 {
931 cc.PlaySound("lock");
932 cc.Say("openLockFail2");
933 owner.PlayAnime(AnimeID.Shiver);
934 return LockOpenState.NotEnoughSkill;
935 }
936 if (thing != null && !flag)
937 {
938 thing.ModCharge(-1, destroy: true);
939 }
940 if (EClass.rnd(num + 6) > num2 + 5 || (!cc.IsPC && EClass.rnd(20) == 0) || EClass.rnd(200) == 0)
941 {
942 cc.PlaySound("lock_open");
943 cc.Say("lockpick_success", cc, owner);
944 int num3 = 100 + num2 * 10;
946 {
947 num3 *= 10;
948 }
949 cc.ModExp(280, num3);
950 OnLockOpen(cc);
951 return LockOpenState.Success;
952 }
953 cc.PlaySound("lock");
954 if (cc.IsPC)
955 {
956 cc.Say("openLockFail");
957 }
958 cc.ModExp(280, (thing != null) ? 50 : 30);
959 if ((thing == null) | (EClass.rnd(2) == 0))
960 {
961 cc.stamina.Mod(-1);
962 }
963 return LockOpenState.Fail;
964 }
LockOpenState
Definition: LockOpenState.cs:2
int c_lockLv
Definition: Card.cs:979
void PlayAnime(AnimeID id, bool force=false)
Definition: Card.cs:6478
Stats stamina
Definition: Chara.cs:1172
virtual void OnLockOpen(Chara cc)
Definition: Trait.cs:1037

References Card.c_lockedHard, Card.c_lockLv, Card.Evalue(), Chara.IsPC, Stats.Mod(), Card.ModCharge(), Card.ModExp(), Card.PlayAnime(), Card.PlaySound(), EClass.rnd(), Card.Say(), Chara.stamina, and Card.things.

◆ TryProgress()

virtual bool Trait.TryProgress ( AIProgress  p)
inlinevirtual

Reimplemented in TraitBaseSpellbook.

Definition at line 914 of file Trait.cs.

915 {
916 return true;
917 }

Referenced by AI_Read.Run().

◆ TryPryOpenLock()

virtual LockOpenState Trait.TryPryOpenLock ( Chara  cc,
bool  msgFail = true 
)
inlinevirtual

Definition at line 966 of file Trait.cs.

967 {
968 Thing tool = cc.Tool;
969 cc.stamina.Mod(-1);
970 Point pos = owner.GetRootCard().pos;
972 material.PlayHitEffect(pos);
973 material.AddBlood(pos);
974 if (!cc.IsAliveInCurrentZone || tool == null)
975 {
976 return LockOpenState.Fail;
977 }
978 cc.ModExp(280, 20);
979 cc.ModExp(70, 30);
980 int a2 = Mathf.Clamp(20 * tool.material.hardness / material.hardness, 10, 150);
981 owner.hp -= EClass.rnd(a2);
982 int num = (int)Mathf.Clamp(20L * (long)(owner.c_lockLv + 20) / cc.STR, 5f, 50f);
984 {
985 num = num * 3 / 2;
986 }
987 if (EClass.rnd(100) < num)
988 {
990 }
991 if (owner.hp < 0)
992 {
993 cc.Say("pry_success", cc, owner);
995 {
996 cc.PlaySound("lock_open");
997 }
998 OnLockOpen(cc);
999 foreach (Thing item in owner.things.List((Thing a) => a.Num > 10))
1000 {
1001 item.SetNum(item.Num / 10 * 8);
1002 }
1003 if (!(owner.trait is TraitChestPractice))
1004 {
1005 if (owner.isNPCProperty && cc.IsPC)
1006 {
1008 }
1009 owner.Die();
1010 }
1011 return LockOpenState.Success;
1012 }
1013 return LockOpenState.Fail;
1014 }
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:5124
SourceMaterial.Row material
Definition: Card.cs:2091
Thing Tool
Definition: Card.cs:2452
int hp
Definition: Card.cs:245
int STR
Definition: Card.cs:2375
Card GetRootCard()
Definition: Card.cs:3510
override bool IsAliveInCurrentZone
Definition: Chara.cs:563
void DamageRandomProperty(Chara cc)
Definition: Trait.cs:1016

References Card.c_lockedHard, Card.Die(), Card.GetRootCard(), Card.hp, Chara.IsAliveInCurrentZone, Card.isNPCProperty, Chara.IsPC, item, ThingContainer.List(), Card.material, material, Stats.Mod(), Card.ModExp(), Player.ModKarma(), Card.Num, EClass.player, Card.PlaySound(), Card.pos, EClass.rnd(), Card.Say(), Chara.stamina, Card.STR, Card.things, Card.Tool, tool, and Card.trait.

◆ TryRefuel()

void Trait.TryRefuel ( int  dest,
List< Thing excludes 
)
inline

Definition at line 1485 of file Trait.cs.

1486 {
1487 if (FindFuel(refuel: false))
1488 {
1489 FindFuel(refuel: true);
1490 }
1491 bool FindFuel(bool refuel)
1492 {
1493 int num = dest;
1494 List<Thing> list = EClass._zone.TryListThingsInSpot<TraitSpotFuel>((Thing t) => IsFuel(t));
1495 EClass.pc.things.Foreach(delegate(Thing t)
1496 {
1497 if (IsFuel(t) && t.tier == 0 && (excludes == null || !excludes.Contains(t)))
1498 {
1499 list.Add(t);
1500 }
1501 });
1502 foreach (Thing item in list)
1503 {
1504 if (num > 0)
1505 {
1506 int num2 = Mathf.Min(item.Num, Mathf.CeilToInt((float)num / (float)GetFuelValue(item)));
1507 num -= GetFuelValue(item) * num2;
1508 if (refuel)
1509 {
1510 Refuel(item.Split(num2));
1511 }
1512 }
1513 }
1514 return num <= 0;
1515 }
1516 }
void Foreach(Action< Thing > action, bool onlyAccessible=true)
bool IsFuel(string s)
Definition: Trait.cs:1430
void Refuel(Thing t)
Definition: Trait.cs:1472

References EClass._zone, ThingContainer.Foreach(), item, EClass.pc, and Card.things.

◆ TrySetAct()

virtual void Trait.TrySetAct ( ActPlan  p)
inlinevirtual

◆ TrySetHeldAct()

◆ TrySetToggleAct()

virtual void Trait.TrySetToggleAct ( ActPlan  p)
inlinevirtual

Definition at line 1342 of file Trait.cs.

1343 {
1344 if (!p.IsSelfOrNeighbor)
1345 {
1346 return;
1347 }
1348 switch (ToggleType)
1349 {
1350 case ToggleType.Lever:
1351 p.TrySetAct("ActToggleLever", delegate
1352 {
1353 Toggle(!owner.isOn);
1354 return true;
1355 }, owner);
1356 break;
1357 case ToggleType.Curtain:
1358 p.TrySetAct(owner.isOn ? "actOpen" : "actClose", delegate
1359 {
1360 Toggle(!owner.isOn);
1361 return true;
1362 }, owner);
1363 break;
1364 case ToggleType.Fire:
1365 case ToggleType.Light:
1366 case ToggleType.Electronics:
1367 {
1368 bool flag = ToggleType == ToggleType.Fire;
1369 if (EClass._zone.IsPCFaction || p.altAction || this is TraitCrafter || Electricity < 0)
1370 {
1371 if (owner.isOn)
1372 {
1373 if (p.altAction)
1374 {
1375 p.TrySetAct(flag ? "ActExtinguishTorch" : "ActToggleOff", delegate
1376 {
1377 Toggle(on: false);
1378 return true;
1379 }, owner);
1380 }
1381 }
1382 else if (!(this is TraitFactory) && !(this is TraitIncubator) && (!IsRequireFuel || owner.c_charges > 0))
1383 {
1384 p.TrySetAct(flag ? "ActTorch" : "ActToggleOn", delegate
1385 {
1386 Toggle(on: true);
1387 return true;
1388 }, owner);
1389 }
1391 {
1392 p.TrySetAct("ActFuel", delegate
1393 {
1395 return false;
1396 }, owner);
1397 }
1398 }
1399 if (p.altAction)
1400 {
1401 p.TrySetAct("disableAutoToggle".lang((owner.disableAutoToggle ? "off" : "on").lang()), delegate
1402 {
1403 owner.disableAutoToggle = !owner.disableAutoToggle;
1404 SE.Click();
1405 return true;
1406 }, owner);
1407 }
1408 break;
1409 }
1410 }
1411 }
bool altAction
Definition: ActPlan.cs:158
bool IsSelfOrNeighbor
Definition: ActPlan.cs:178
bool disableAutoToggle
Definition: Card.cs:605
static LayerDragGrid Create(InvOwnerDraglet owner, bool refuelFromLayerDragGrid=false)
virtual int MaxFuel
Definition: Trait.cs:462
virtual bool ShowFuelWindow
Definition: Trait.cs:475
bool IsPCFaction
Definition: Zone.cs:475

References EClass._zone, ActPlan.altAction, Card.c_charges, LayerDragGrid.Create(), Card.disableAutoToggle, Card.isOn, Zone.IsPCFaction, ActPlan.IsSelfOrNeighbor, and ActPlan.TrySetAct().

Referenced by ActPlan._Update().

◆ TryToggle()

virtual void Trait.TryToggle ( )
inlinevirtual

Definition at line 1236 of file Trait.cs.

1237 {
1238 if (!owner.IsInstalled)
1239 {
1240 return;
1241 }
1242 if (Electricity < 0 && owner.isOn && EClass._zone.electricity < 0)
1243 {
1244 Toggle(on: false, silent: true);
1245 }
1246 else if (AutoToggle)
1247 {
1248 int num = ((EClass._map.config.hour == -1) ? EClass.world.date.hour : EClass._map.config.hour);
1249 bool on = !IsNightOnlyLight || num >= 17 || num <= 5 || EClass._map.IsIndoor;
1251 {
1252 on = false;
1253 }
1254 Toggle(on, silent: true);
1255 }
1256 }
bool IsInstalled
Definition: Card.cs:2423
Cell Cell
Definition: Card.cs:2095
bool HasRoof
Definition: Cell.cs:648
int hour
Definition: Date.cs:74
int hour
Definition: MapConfig.cs:95
bool IsIndoor
Definition: Map.cs:131
MapConfig config
Definition: Map.cs:37
virtual bool AutoToggle
Definition: Trait.cs:402
virtual bool IsNightOnlyLight
Definition: Trait.cs:438
bool IsRaining
Definition: Weather.cs:117
Weather weather
Definition: World.cs:12

References EClass._map, EClass._zone, Card.Cell, Map.config, World.date, Spatial.electricity, Cell.HasRoof, Date.hour, MapConfig.hour, Map.IsIndoor, Card.IsInstalled, Card.isOn, Weather.IsRaining, World.weather, and EClass.world.

Referenced by Scene.Init(), Zone.OnSimulateHour(), and Zone.RefreshElectricity().

◆ Uninstall()

void Trait.Uninstall ( )
inline

Definition at line 1210 of file Trait.cs.

1211 {
1212 if (Electricity != 0)
1213 {
1214 if (owner.isOn)
1215 {
1216 Toggle(on: false, silent: true);
1217 }
1218 EClass._zone.dirtyElectricity = true;
1219 if (Electricity > 0)
1220 {
1221 EClass._zone.electricity -= Electricity;
1222 EClass.pc.PlaySound("electricity_off");
1223 }
1224 }
1225 OnUninstall();
1226 }
virtual void OnUninstall()
Definition: Trait.cs:1232

References Card.isOn, EClass.pc, and Card.PlaySound().

Referenced by Card.SetPlaceState().

◆ Update()

virtual void Trait.Update ( )
inlinevirtual

Reimplemented in TraitASMR, TraitDoor, TraitFoodEgg, TraitGeneratorWheel, TraitSpotBiome, and TraitSpotSpawn.

Definition at line 752 of file Trait.cs.

753 {
754 }

◆ WriteNote()

virtual void Trait.WriteNote ( UINote  n,
bool  identified 
)
inlinevirtual

Reimplemented in TraitBookPlan, TraitBookSkill, TraitGene, TraitItem, TraitLetterOfWill, TraitRecipe, TraitRecipeBook, TraitSeed, and TraitTape.

Definition at line 1056 of file Trait.cs.

1057 {
1058 }

Member Data Documentation

◆ listRadiusPoints

List<Point> Trait.listRadiusPoints = new List<Point>()
staticprotected

Definition at line 30 of file Trait.cs.

Referenced by ListPoints(), and TraitLightSun.ListPoints().

◆ owner

Card Trait.owner

Definition at line 28 of file Trait.cs.

Referenced by Chara._Move(), InvOwnerRecycle._OnProcess(), TraitGodStatue._OnUse(), TraitShrine._OnUse(), TraitSwitch.ActivateTrap(), TraitBed.AddHolder(), TraitHouseBoard.ApplyData(), ActMelee.Attack(), FactionBranch.CalcInnIncome(), TraitTrainingDummyArmor.CalcPV(), TraitTrolley.CanActivate(), TraitBed.CanAssign(), TraitNewZone.CanAutoEnter(), TraitDoor.CanClose(), TaskDrawWater.CanProgress(), TaskPourWater.CanProgress(), TraitScroll.CanRead(), TraitAmmo.CanStackTo(), TraitAncientbook.CanStackTo(), TraitFood.CanStackTo(), TraitFoodEggFertilized.CanStackTo(), TraitMonsterBall.CanStackTo(), TraitCrafter.CanUse(), TraitFoodPreparedPackage.CanUse(), TraitGamble.CanUse(), TraitGarokkHammer.CanUse(), TraitGeneMachine.CanUse(), TraitGeneratorHamster.CanUse(), TraitGeneratorWheel.CanUse(), TraitItem.CanUse(), TraitLoytelMart.CanUse(), TraitMoongate.CanUse(), TraitPowerStatue.CanUse(), TraitShackle.CanUse(), TraitSlotMachine.CanUse(), TraitBed.ClearHolders(), TraitEffect.CompareTo(), Contains(), TraitBed.CountHolders(), TraitCrafter.Craft(), TraitPotion.Create(), TraitSpellbook.Create(), TraitRod.Create(), TraitAbility.CreateAct(), TraitCatalyst.CreateAct(), LayerDragGrid.CreateChaosOffering(), LayerDragGrid.CreateCraft(), LayerDragGrid.CreateGacha(), LayerDragGrid.CreateOffering(), LayerDragGrid.CreateRecycle(), TraitNewZone.CreateZone(), AIAct.DoGoto< T >(), BaseTileMap.DrawTile(), TraitDye.Dye(), TraitSyringe.EffectInject(), TraitBoat.ForeachDeck(), AI_Pray.GetAltar(), TraitTile.GetBuildModeRecipe(), TraitFactory.GetCostSp(), TraitItemProc.GetCraftNum(), TraitScrollMapTreasure.GetDest(), Hobby.GetEfficiency(), TraitNewZone.GetExitPos(), TraitStairs.GetExitPos(), TraitBed.GetHoverText(), TraitTrolley.GetIdSound(), GetName(), TraitFakeBlock.GetName(), TraitFakeObj.GetName(), TraitGene.GetName(), TraitPotionRandom.GetName(), GetPoint(), AI_Trolley.GetPoint(), TraitPotionAlchemy.GetPower(), SurvivalManager.GetRandomPoint(), GetRandomPoint(), TraitTile.GetRecipe(), TraitFakeTile.GetRenderData(), ZoneEventRaid.GetSpawnPos(), AI_Grab< T >.GetTarget(), TraitGeneMachine.GetTarget(), TeleportManager.GetTeleportZone(), GetValue(), TraitGene.GetValue(), TraitMod.GetValue(), TraitMonsterBall.GetValue(), TraitBoat.GetWaterMat(), TraitBed.HasHolder(), TraitChopper.IdleUse(), TraitGamble.IdleUse(), TraitTrainingDummy.IdleUse(), TraitTrap.IgnoreWhenLevitating(), TraitBed.IsFull(), TraitBed.IsHolder(), TraitDoor.IsOpen(), TraitShackle.IsRestraining(), TraitDoor.IsValid(), ListPoints(), TraitLightSun.ListPoints(), TraitBaseSpellbook.ModCharge(), TraitGenerator.ModHP(), TraitNewZone.MoveZone(), TraitHitchingPost.OnActivateTrap(), TraitSeesaw.OnActivateTrap(), TraitTrap.OnActivateTrap(), ConSleep.OnBeforeStart(), TraitDreamBug.OnBlend(), TraitDrink.OnBlend(), TraitWell.OnBlend(), TraitGodStatue.OnChangeMaterial(), TraitHouseBoard.OnChangePlaceState(), TraitTeleporter.OnChangePlaceState(), TraitTent.OnChangePlaceState(), TraitBrewery.OnChildDecay(), TraitBlanket.OnCrafted(), TraitPotionAlchemy.OnCrafted(), TraitBaseContainer.OnCreate(), TraitBaseSpellbook.OnCreate(), TraitBlanket.OnCreate(), TraitBook.OnCreate(), TraitChestPractice.OnCreate(), TraitMonsterBall.OnCreate(), TraitParchmentBottle.OnCreate(), TraitPotionRandom.OnCreate(), TraitPowerStatue.OnCreate(), TraitRecipe.OnCreate(), TraitRod.OnCreate(), TraitRodRandom.OnCreate(), TraitSeed.OnCreate(), TraitSpecialLantern.OnCreate(), TraitToolRangeCane.OnCreate(), TraitToolWaterPot.OnCreate(), TaskDrawWater.OnCreateProgress(), TaskPourWater.OnCreateProgress(), TraitDrink.OnDrink(), TraitDrinkMilkMother.OnDrink(), TraitLumiestCrimAle.OnDrink(), AI_UseCrafter.OnEnd(), TraitRollingFortune.OnEndAI(), TraitEQFlower.OnEquip(), TraitAltar.OnImportMap(), TraitASMR.OnImportMap(), TraitBook.OnImportMap(), TraitSwitch.OnInstall(), TraitAltar.OnOffer(), TraitDoorBell.OnOpenDoor(), AI_Sleep.OnProgressComplete(), TraitBaseSpellbook.OnRead(), TraitBook.OnRead(), TraitBookExp.OnRead(), TraitBookSecret.OnRead(), TraitDeed.OnRead(), TraitDeedRelocate.OnRead(), TraitDiary.OnRead(), TraitIndulgence.OnRead(), TraitLicense.OnRead(), TraitRecipe.OnRead(), TraitRecipeCat.OnRead(), TraitScrollMap.OnRead(), TraitScrollStatic.OnRead(), TraitBoat.OnRemovedFromZone(), TraitPaintBoard.OnRenderExtra(), TraitRoadSign.OnRenderTile(), AM_Blueprint.OnSave(), TraitJukeBox.OnSetBGM(), TraitCanvas.OnSetCardGrid(), TraitContainer.OnSetCardGrid(), TraitEquipItem.OnSetCardGrid(), TraitFigure.OnSetCardGrid(), TraitChestPractice.OnSimulateHour(), TraitClock.OnSimulateHour(), TraitFertilizer.OnSimulateHour(), TraitGenerator.OnSimulateHour(), TraitPhone.OnSimulateHour(), GoalSleep.OnSimulatePosition(), TraitCurrencyMedal.OnStepped(), TraitFloorSwitch.OnStepped(), TraitNewZone.OnStepped(), TraitSwing.OnSteppedOut(), TraitDye.OnThrowGround(), ZoneEventPhone.OnTickRound(), TraitJukeBox.OnToggle(), TraitLeverBreaker.OnToggle(), AM_Paint.OnUpdateInput(), TraitAmmo.OnUse(), TraitBank.OnUse(), TraitCatalyst.OnUse(), TraitCrafter.OnUse(), TraitDaggerGrave.OnUse(), TraitEquipItem.OnUse(), TraitFarmChest.OnUse(), TraitFirework.OnUse(), TraitFireworkLauncher.OnUse(), TraitFoodPreparedPackage.OnUse(), TraitGachaBall.OnUse(), TraitGainPrecious.OnUse(), TraitGeneMachine.OnUse(), TraitGeneratorHamster.OnUse(), TraitGiftJure.OnUse(), TraitGiftNewYear.OnUse(), TraitGiftPack.OnUse(), TraitGoodsCoin.OnUse(), TraitHat.OnUse(), TraitItemProc.OnUse(), TraitItemToggle.OnUse(), TraitMannequin.OnUse(), TraitMod.OnUse(), TraitMusicBox.OnUse(), TraitParcel.OnUse(), TraitPlamoBox.OnUse(), TraitPowerStatue.OnUse(), TraitRadio.OnUse(), TraitScrollMapTreasure.OnUse(), TraitShackle.OnUse(), TraitStairsLocked.OnUse(), TraitTape.OnUse(), TraitTaxChest.OnUse(), TraitTerraGlobe.OnUse(), TraitVendingMachine.OnUse(), TraitWaystone.OnUse(), TraitWhistlePeace.OnUse(), TraitFoodMeat.OnUse(), TraitPotionEmpty.OnUse(), TraitContainer.Open(), ActClearWater.Perform(), ActDrawWater.Perform(), ActRanged.Perform(), ActRestrain.Perform(), ActWater.Perform(), ActZap.Perform(), Zone_Dungeon.PlaceRail(), AttackProcess.PlayRangedAnime(), TraitBaseContainer.Prespawn(), TraitChest.Prespawn(), TraitChestOyster.Prespawn(), TraitCoffin.Prespawn(), TraitContainerCurrency.Prespawn(), TraitToolBelt.Prespawn(), TraitEffect.Proc(), TraitBaseContainer.PutChara(), TraitGenerator.Recover(), TraitToolTorch.RefreshRenderer(), TraitBed.RemoveHolder(), TraitDoor.RotateDoor(), AI_Bladder.Run(), AI_GotoHearth.Run(), AI_LeaveMap.Run(), AI_Paint.Run(), AI_Pray.Run(), AI_Torture.Run(), AI_Trolley.Run(), AI_UseCrafter.Run(), GoalSleep.Run(), TaskWater.Run(), TraitDetector.Search(), TraitBed.SetBedType(), LayerPixelPaint.SetCanvas(), TraitAltar.SetDeity(), TeleportManager.SetID(), TraitAbility.SetMainText(), TraitAbility.SetName(), TraitAltar.SetName(), TraitAmmoTalisman.SetName(), TraitBaseContainer.SetName(), TraitBaseSpellbook.SetName(), TraitBed.SetName(), TraitBloodSample.SetName(), TraitBlueprint.SetName(), TraitGenerator.SetName(), TraitMonsterBall.SetName(), TraitParcel.SetName(), TraitParchmentBottle.SetName(), TraitRecipeCat.SetName(), TraitScrollMap.SetName(), TraitTape.SetName(), TraitToolWaterPot.SetName(), SetOwner(), TraitGenerator.ShortOut(), AI_Trolley.Stop(), TraitAltar.TakeOver(), ActThrow.Throw(), ConSuspend.Tick(), TraitDoor.ToggleDoor(), TraitDoorAutoShoji.ToggleDoor(), TraitDoorSwing.ToggleDoor(), TraitToolTorch.ToggleOn(), TraitSwitch.TryDisarmTrap(), TraitContainer.TryOpen(), TraitDoor.TryOpen(), TraitBaseSpellbook.TryProgress(), TraitAltar.TrySetAct(), TraitAltarChaos.TrySetAct(), TraitBath.TrySetAct(), TraitBed.TrySetAct(), TraitBuildBoard.TrySetAct(), TraitCanvas.TrySetAct(), TraitContainer.TrySetAct(), TraitCoreZone.TrySetAct(), TraitCrafter.TrySetAct(), TraitDeliveryChest.TrySetAct(), TraitDoor.TrySetAct(), TraitDrawingPaper.TrySetAct(), TraitEffect.TrySetAct(), TraitElevator.TrySetAct(), TraitFactionBoard.TrySetAct(), TraitFigure.TrySetAct(), TraitGacha.TrySetAct(), TraitHoard.TrySetAct(), TraitHomeBoard.TrySetAct(), TraitHouseBoard.TrySetAct(), TraitMapBoard.TrySetAct(), TraitMirror.TrySetAct(), TraitNewspaper.TrySetAct(), TraitNewZone.TrySetAct(), TraitNote.TrySetAct(), TraitPaintBoard.TrySetAct(), TraitPartyBoard.TrySetAct(), TraitPillowStrange.TrySetAct(), TraitQuestBoard.TrySetAct(), TraitResearchBoard.TrySetAct(), TraitResidentBoard.TrySetAct(), TraitRoomPlate.TrySetAct(), TraitSpecialLantern.TrySetAct(), TraitSwitch.TrySetAct(), TraitTeleporter.TrySetAct(), TraitToolMusic.TrySetAct(), TraitToolMusicBig.TrySetAct(), TraitTrainingDummy.TrySetAct(), TraitWaystone.TrySetAct(), TraitWell.TrySetAct(), TraitCatalyst.TrySetHeldAct(), TraitDetector.TrySetHeldAct(), TraitFakeTile.TrySetHeldAct(), TraitGene.TrySetHeldAct(), TraitRod.TrySetHeldAct(), TraitSalesTag.TrySetHeldAct(), TraitSyringeGene.TrySetHeldAct(), TraitSyringeHeaven.TrySetHeldAct(), TraitToolBuild.TrySetHeldAct(), TraitToolSickle.TrySetHeldAct(), TraitToolTorch.TrySetHeldAct(), TraitToolWaterCan.TrySetHeldAct(), TraitToolWaterPot.TrySetHeldAct(), HotItemHeld.TrySetToolAct(), TraitSeed.TrySprout(), TraitTeleporter.TryTeleport(), TraitASMR.Update(), TraitFoodEgg.Update(), TraitSpotBiome.Update(), TraitSpotSpawn.Update(), FactionBranch.Upgrade(), TraitBed.ValidateOwners(), and TraitGene.WriteNote().

◆ SelfFactory

TraitSelfFactory Trait.SelfFactory = new TraitSelfFactory()
static

Property Documentation

◆ AllowCriminal

virtual bool Trait.AllowCriminal
get

Definition at line 561 of file Trait.cs.

◆ AllowSell

virtual bool Trait.AllowSell
get

Definition at line 537 of file Trait.cs.

538 {
539 get
540 {
541 if (CurrencyType != CurrencyType.Money)
542 {
543 return CurrencyType == CurrencyType.None;
544 }
545 return true;
546 }
547 }

◆ AlwaysHideOnLowWall

virtual bool Trait.AlwaysHideOnLowWall
get

Definition at line 365 of file Trait.cs.

Referenced by BaseTileMap.DrawTile().

◆ AutoToggle

virtual bool Trait.AutoToggle
get

Definition at line 401 of file Trait.cs.

402 {
403 get
404 {
405 if (IsLighting || ToggleType == ToggleType.Curtain || ToggleType == ToggleType.Electronics)
406 {
407 return !owner.disableAutoToggle;
408 }
409 return false;
410 }
411 }
bool IsLighting
Definition: Trait.cs:414

◆ CanAutofire

virtual bool Trait.CanAutofire
get

Definition at line 145 of file Trait.cs.

Referenced by Thing.CanAutoFire().

◆ CanBeAttacked

virtual bool Trait.CanBeAttacked
get

◆ CanBeDestroyed

◆ CanBeDisassembled

virtual bool Trait.CanBeDisassembled
get

Definition at line 317 of file Trait.cs.

318 {
319 get
320 {
321 if (CanBeDestroyed && !(this is TraitTrap) && owner.things.Count == 0)
322 {
323 return owner.rarity < Rarity.Artifact;
324 }
325 return false;
326 }
327 }
virtual bool CanBeDestroyed
Definition: Trait.cs:307

Referenced by TaskHarvest.TryGetAct().

◆ CanBeDropped

◆ CanBeHallucinated

virtual bool Trait.CanBeHallucinated
get

Definition at line 311 of file Trait.cs.

Referenced by CardRenderer.Draw().

◆ CanBeHeld

virtual bool Trait.CanBeHeld
get

◆ CanBeHeldAsFurniture

virtual bool Trait.CanBeHeldAsFurniture
get

Definition at line 349 of file Trait.cs.

350 {
351 get
352 {
353 if (!(this is TraitTool))
354 {
355 return IsThrowMainAction;
356 }
357 return true;
358 }
359 }
virtual bool IsThrowMainAction
Definition: Trait.cs:194

◆ CanBeMasked

virtual bool Trait.CanBeMasked
get

Definition at line 271 of file Trait.cs.

◆ CanBeOnlyBuiltInHome

virtual bool Trait.CanBeOnlyBuiltInHome
get

◆ CanBeShipped

virtual bool Trait.CanBeShipped
get

Definition at line 329 of file Trait.cs.

330 {
331 get
332 {
333 if (!owner.IsImportant)
334 {
335 return !owner.IsUnique;
336 }
337 return false;
338 }
339 }
bool IsImportant
Definition: Card.cs:2145

Referenced by TraitSalesTag.CanTagSale(), and GameDate.ShipGoods().

◆ CanBeSmashedToDeath

virtual bool Trait.CanBeSmashedToDeath
get

Definition at line 309 of file Trait.cs.

Referenced by Card.Die().

◆ CanBeStolen

virtual bool Trait.CanBeStolen
get

Definition at line 293 of file Trait.cs.

294 {
295 get
296 {
297 if (!CanOnlyCarry)
298 {
299 return CanBeHeld;
300 }
301 return false;
302 }
303 }
virtual bool CanBeHeld
Definition: Trait.cs:291

Referenced by AI_Steal.CanPerform(), ThingContainer.FindStealable(), AI_Steal.IsValidTC(), and TraitTicketFurniture.TrySetHeldAct().

◆ CanBeTeleported

virtual bool Trait.CanBeTeleported
get

Definition at line 179 of file Trait.cs.

Referenced by ActTelekinesis.CanPerform(), and Card.Teleport().

◆ CanBuildInTown

virtual bool Trait.CanBuildInTown
get

Definition at line 279 of file Trait.cs.

280 {
281 get
282 {
284 {
286 }
287 return false;
288 }
289 }
TileType TileType
Definition: Card.cs:2177
virtual bool IsBlockSight
Definition: TileType.cs:159
virtual bool IsBlockPass
Definition: TileType.cs:155

Referenced by HotItemHeld.CanRotate(), TaskBuild.CanRotateBlock(), and TaskBuild.GetHitResult().

◆ CanChangeAffinity

virtual bool Trait.CanChangeAffinity
get

Definition at line 571 of file Trait.cs.

Referenced by DramaActor.Talk().

◆ CanChangeHeight

virtual bool Trait.CanChangeHeight
get

Definition at line 161 of file Trait.cs.

Referenced by HotItemHeld.CanChangeHeightByWheel().

◆ CanCopyInBlueprint

virtual bool Trait.CanCopyInBlueprint
get

Definition at line 165 of file Trait.cs.

166 {
167 get
168 {
169 if (owner.rarity <= Rarity.Superior && owner.sourceCard.value > 0)
170 {
171 return CanBeDestroyed;
172 }
173 return false;
174 }
175 }

Referenced by AM_Copy.HitTest(), PartialMap.Save(), and Map.Save().

◆ CanExtendBuild

virtual bool Trait.CanExtendBuild
get

Definition at line 181 of file Trait.cs.

Referenced by Chara.CanAcceptGift(), ActThrow.CanThrow(), and HotItemHeld.TrySetAct().

◆ CanHarvest

virtual bool Trait.CanHarvest
get

Definition at line 92 of file Trait.cs.

Referenced by TaskHarvest.TryGetAct().

◆ CanName

virtual bool Trait.CanName
get

Definition at line 147 of file Trait.cs.

Referenced by ActPlan._Update().

◆ CanOnlyCarry

◆ CanOpenContainer

virtual bool Trait.CanOpenContainer
get

Definition at line 245 of file Trait.cs.

246 {
247 get
248 {
249 if (IsContainer)
250 {
251 return !owner.isNPCProperty;
252 }
253 return false;
254 }
255 }
virtual bool IsContainer
Definition: Trait.cs:225

Referenced by InvOwner.CanOpenContainer(), TraitBaseContainer.Prespawn(), and TraitContainer.TrySetAct().

◆ CanPutAway

virtual bool Trait.CanPutAway
get

Definition at line 149 of file Trait.cs.

150 {
151 get
152 {
153 if (!CanOnlyCarry)
154 {
155 return !owner.HasTag(CTAG.godArtifact);
156 }
157 return false;
158 }
159 }
CTAG
Definition: CTAG.cs:2
bool HasTag(CTAG tag)
Definition: Card.cs:2637

Referenced by AM_MoveInstalled.CanPutAway().

◆ CanSearchContent

virtual bool Trait.CanSearchContent
get

Definition at line 229 of file Trait.cs.

230 {
231 get
232 {
233 if (!owner.isChara)
234 {
235 if (IsContainer)
236 {
237 return owner.c_lockLv == 0;
238 }
239 return false;
240 }
241 return true;
242 }
243 }

Referenced by ThingContainer._List().

◆ CanStack

virtual bool Trait.CanStack
get

◆ CanUseContent

virtual bool Trait.CanUseContent
get

Definition at line 227 of file Trait.cs.

Referenced by QuestDeliver.IsDestThing().

◆ CanUseRoomRadius

virtual bool Trait.CanUseRoomRadius
get

Definition at line 98 of file Trait.cs.

Referenced by ListPoints().

◆ ColorExtra

virtual ? Color Trait.ColorExtra
get

Definition at line 459 of file Trait.cs.

◆ ContainerType

virtual ContainerType Trait.ContainerType
get

Definition at line 259 of file Trait.cs.

◆ CopyShop

virtual CopyShopType Trait.CopyShop
get

Definition at line 527 of file Trait.cs.

Referenced by OnBarter().

◆ CostRerollShop

virtual int Trait.CostRerollShop
get

Definition at line 549 of file Trait.cs.

550 {
551 get
552 {
553 if (CurrencyType == CurrencyType.Money || CurrencyType == CurrencyType.Influence)
554 {
555 return 1;
556 }
557 return 0;
558 }
559 }

Referenced by LayerInventory.CreateBuy(), and UIInventory.SwitchTab().

◆ CraftNum

virtual int Trait.CraftNum
get

◆ CurrencyType

virtual CurrencyType Trait.CurrencyType
get

Definition at line 533 of file Trait.cs.

Referenced by TraitVendingMachine.OnUse().

◆ Decay

virtual int Trait.Decay
get

Definition at line 123 of file Trait.cs.

Referenced by Card.DecayNatural(), and Zone.TryAddThingInSharedContainer().

◆ DecaySpeed

virtual int Trait.DecaySpeed
get

Definition at line 125 of file Trait.cs.

◆ DecaySpeedChild

virtual int Trait.DecaySpeedChild
get

Definition at line 127 of file Trait.cs.

◆ DefaultStock

virtual int Trait.DefaultStock
get

Definition at line 131 of file Trait.cs.

Referenced by OnBarter().

◆ DisableAutoCombat

virtual bool Trait.DisableAutoCombat
get

Definition at line 211 of file Trait.cs.

Referenced by ActPlan._Update().

◆ DropChance

virtual float Trait.DropChance
get

Definition at line 371 of file Trait.cs.

Referenced by Card.SpawnLoot().

◆ EffectDead

virtual EffectDead Trait.EffectDead
get

Definition at line 263 of file Trait.cs.

Referenced by Card.Die().

◆ Electricity

◆ ExistsOnMap

bool Trait.ExistsOnMap
get

Definition at line 367 of file Trait.cs.

Referenced by AI_Pray.IsValid(), AI_Bladder.Run(), and AI_Paint.Run().

◆ FuelCost

virtual int Trait.FuelCost
get

Definition at line 473 of file Trait.cs.

Referenced by AI_UseCrafter.Run().

◆ GuidePriotiy

virtual int Trait.GuidePriotiy
get

Definition at line 100 of file Trait.cs.

Referenced by DramaCustomSequence.GetListGuide().

◆ HasCharges

virtual bool Trait.HasCharges
get

Definition at line 341 of file Trait.cs.

Referenced by Thing.GetName(), and Card.GetPrice().

◆ HaveUpdate

virtual bool Trait.HaveUpdate
get

Definition at line 139 of file Trait.cs.

◆ HideInAdv

virtual bool Trait.HideInAdv
get

Definition at line 361 of file Trait.cs.

◆ HoldAsDefaultInteraction

virtual bool Trait.HoldAsDefaultInteraction
get

Definition at line 133 of file Trait.cs.

Referenced by InvOwner.GetAutoUseLang().

◆ IDActorEx

virtual string Trait.IDActorEx
get

Definition at line 187 of file Trait.cs.

Referenced by Map._AddCard(), Scene.AddActorEx(), Scene.RebuildActorEx(), and Zone.RemoveCard().

◆ IDInvStyle

virtual string Trait.IDInvStyle
get

Definition at line 185 of file Trait.cs.

◆ IdleUseChance

virtual int Trait.IdleUseChance
get

Definition at line 375 of file Trait.cs.

Referenced by AI_Idle.TryPerformIdleUse().

◆ IdNoRestock

virtual string Trait.IdNoRestock
get

Definition at line 373 of file Trait.cs.

Referenced by OnBarter().

◆ IdSkin

virtual int Trait.IdSkin
get

Definition at line 46 of file Trait.cs.

Referenced by Card.GetSprite(), and ButtonGrid.SetRecipe().

◆ IdSoundToggleOff

virtual string Trait.IdSoundToggleOff
get

Definition at line 509 of file Trait.cs.

510 {
511 get
512 {
513 if (Electricity >= 0)
514 {
515 if (ToggleType != ToggleType.Fire)
516 {
517 return "switch_off";
518 }
519 return "torch_unlit";
520 }
521 return "switch_off_electricity";
522 }
523 }

◆ IdSoundToggleOn

virtual string Trait.IdSoundToggleOn
get

Definition at line 493 of file Trait.cs.

494 {
495 get
496 {
497 if (Electricity >= 0)
498 {
499 if (ToggleType != ToggleType.Fire)
500 {
501 return "switch_on";
502 }
503 return "torch_lit";
504 }
505 return "switch_on_electricity";
506 }
507 }

◆ IdToggleExtra

string Trait.IdToggleExtra
get

Definition at line 479 of file Trait.cs.

◆ IgnoreLastStackHeight

virtual bool Trait.IgnoreLastStackHeight
get

Definition at line 121 of file Trait.cs.

Referenced by BaseTileMap.DrawTile(), and BaseTileMap.GetThingPosition().

◆ IgnoreOnSteppedWhenMoving

virtual bool Trait.IgnoreOnSteppedWhenMoving
get

Definition at line 383 of file Trait.cs.

Referenced by Chara.Tick().

◆ InstallBottomPriority

virtual int Trait.InstallBottomPriority
get

Definition at line 90 of file Trait.cs.

Referenced by Card.SetPlaceState().

◆ InvertHeldSprite

virtual bool Trait.InvertHeldSprite
get

Definition at line 72 of file Trait.cs.

Referenced by CharaActorPCC.OnRender().

◆ InvGridSize

virtual InvGridSize Trait.InvGridSize
get

Definition at line 213 of file Trait.cs.

214 {
215 get
216 {
217 if (!owner.IsPC)
218 {
219 return InvGridSize.Default;
220 }
221 return InvGridSize.Backpack;
222 }
223 }
InvGridSize
Definition: InvGridSize.cs:2
virtual bool IsPC
Definition: Card.cs:2185

◆ IsAltar

virtual bool Trait.IsAltar
get

Definition at line 267 of file Trait.cs.

Referenced by TraitManager.OnAddCard(), and TraitManager.OnRemoveCard().

◆ IsAnimeOn

virtual bool Trait.IsAnimeOn
get

Definition at line 387 of file Trait.cs.

388 {
389 get
390 {
391 if (!IsOn)
392 {
393 return !IsToggle;
394 }
395 return true;
396 }
397 }
bool IsToggle
Definition: Trait.cs:399
virtual bool IsOn
Definition: Trait.cs:385

◆ IsBlendBase

virtual bool Trait.IsBlendBase
get

Definition at line 275 of file Trait.cs.

Referenced by ActPlan._Update().

◆ IsBlockPath

virtual bool Trait.IsBlockPath
get

Definition at line 54 of file Trait.cs.

Referenced by Chara.DestroyPath(), GenBounds.ListEmptyPoint(), and Cell.Refresh().

◆ IsBlockSight

virtual bool Trait.IsBlockSight
get

Definition at line 56 of file Trait.cs.

Referenced by Cell.Refresh().

◆ IsChangeFloorHeight

virtual bool Trait.IsChangeFloorHeight
get

Definition at line 74 of file Trait.cs.

Referenced by Chara._Move(), BaseTileMap.DrawTile(), and BaseTileMap.GetThingPosition().

◆ IsContainer

virtual bool Trait.IsContainer
get

◆ IsDoor

virtual bool Trait.IsDoor
get

◆ IsFactory

◆ IsFloating

virtual bool Trait.IsFloating
get

Definition at line 64 of file Trait.cs.

Referenced by Cell.Refresh().

◆ IsFridge

virtual bool Trait.IsFridge
get

Definition at line 129 of file Trait.cs.

Referenced by ThingContainer.IsFull(), and UIInventory.RefreshMenu().

◆ IsGround

virtual bool Trait.IsGround
get

Definition at line 68 of file Trait.cs.

Referenced by BaseTileMap.DrawTile(), PointTarget.ShouldIgnore(), and AM_Picker.TestThing().

◆ IsHomeItem

virtual bool Trait.IsHomeItem
get

Definition at line 265 of file Trait.cs.

◆ IsLighting

bool Trait.IsLighting
get

Definition at line 413 of file Trait.cs.

414 {
415 get
416 {
417 if (ToggleType != ToggleType.Fire)
418 {
419 return ToggleType == ToggleType.Light;
420 }
421 return true;
422 }
423 }

◆ IsLightOn

virtual bool Trait.IsLightOn
get

Definition at line 425 of file Trait.cs.

426 {
427 get
428 {
429 if (!owner.isChara)
430 {
431 return owner.isOn;
432 }
433 return true;
434 }
435 }

Referenced by Card.GetLightRadius().

◆ IsLocalAct

virtual bool Trait.IsLocalAct
get

Definition at line 273 of file Trait.cs.

Referenced by HotItemHeld.TrySetAct().

◆ IsNightOnlyLight

virtual bool Trait.IsNightOnlyLight
get

Definition at line 437 of file Trait.cs.

438 {
439 get
440 {
441 if (ToggleType != ToggleType.Electronics && IsToggle)
442 {
443 return !owner.isRoofItem;
444 }
445 return false;
446 }
447 }
bool isRoofItem
Definition: Card.cs:581

◆ IsNoShop

virtual bool Trait.IsNoShop
get

Definition at line 66 of file Trait.cs.

Referenced by OnBarter().

◆ IsOn

virtual bool Trait.IsOn
get

Definition at line 385 of file Trait.cs.

Referenced by TraitASMR.Update().

◆ IsOnlyUsableByPc

virtual bool Trait.IsOnlyUsableByPc
get

Definition at line 70 of file Trait.cs.

◆ IsOpenPath

virtual bool Trait.IsOpenPath
get

Definition at line 62 of file Trait.cs.

Referenced by Cell.Refresh().

◆ IsOpenSight

virtual bool Trait.IsOpenSight
get

Definition at line 60 of file Trait.cs.

Referenced by Cell.Refresh().

◆ IsRequireFuel

bool Trait.IsRequireFuel
get

Definition at line 477 of file Trait.cs.

Referenced by AI_UseCrafter.Run(), LayerCraft.SetFactory(), and LayerDragGrid.SetInv().

◆ IsRestSpot

virtual bool Trait.IsRestSpot
get

Definition at line 269 of file Trait.cs.

Referenced by TraitManager.OnAddCard(), and TraitManager.OnRemoveCard().

◆ IsSpecialContainer

virtual bool Trait.IsSpecialContainer
get

◆ IsSpot

virtual bool Trait.IsSpot
get

Definition at line 141 of file Trait.cs.

◆ IsThrowMainAction

virtual bool Trait.IsThrowMainAction
get

Definition at line 193 of file Trait.cs.

194 {
195 get
196 {
197 if (!owner.HasTag(CTAG.throwWeapon))
198 {
199 return owner.IsMeleeWeapon;
200 }
201 return true;
202 }
203 }
bool IsMeleeWeapon
Definition: Card.cs:2283

Referenced by HotItemHeld.TrySetAct().

◆ IsToggle

bool Trait.IsToggle
get

Definition at line 399 of file Trait.cs.

◆ IsTool

virtual bool Trait.IsTool
get

◆ LangBarter

virtual string Trait.LangBarter
get

Definition at line 567 of file Trait.cs.

◆ langNote

virtual string Trait.langNote
get

Definition at line 183 of file Trait.cs.

Referenced by TraitItem.WriteNote().

◆ LangUse

virtual string Trait.LangUse
get

Definition at line 381 of file Trait.cs.

Referenced by HotItemHeld.TrySetAct(), and TraitDetector.TrySetHeldAct().

◆ LevelAsQuality

virtual bool Trait.LevelAsQuality
get

Definition at line 205 of file Trait.cs.

Referenced by Card.Create().

◆ MaskOnBuild

virtual bool Trait.MaskOnBuild
get

Definition at line 189 of file Trait.cs.

Referenced by RecipeCard.Build().

◆ MaxFuel

virtual int Trait.MaxFuel
get

Definition at line 461 of file Trait.cs.

462 {
463 get
464 {
465 if (ToggleType != ToggleType.Fire)
466 {
467 return 0;
468 }
469 return 100;
470 }
471 }

Referenced by LayerDragGrid.RefreshCost(), and LayerCraft.RefreshProduct().

◆ Name

virtual string Trait.Name
get

Definition at line 48 of file Trait.cs.

Referenced by LayerHome.RefreshSpots(), and TraitRecipe.SetName().

◆ NoHeldDir

virtual bool Trait.NoHeldDir
get

Definition at line 363 of file Trait.cs.

Referenced by CharaRenderer.DrawHeld().

◆ NumCopyItem

virtual int Trait.NumCopyItem
get

Definition at line 529 of file Trait.cs.

Referenced by OnBarter().

◆ OriginalElectricity

virtual int Trait.OriginalElectricity
get

Definition at line 102 of file Trait.cs.

103 {
104 get
105 {
106 if (!owner.isThing)
107 {
108 return 0;
109 }
110 int electricity = owner.Thing.source.electricity;
111 if (electricity > 0 || EClass._zone == null || EClass._zone.branch == null)
112 {
113 return electricity;
114 }
115 return electricity * 100 / (100 + EClass._zone.branch.Evalue(2700) / 2);
116 }
117 }
int Evalue(int ele)
FactionBranch branch
Definition: Zone.cs:34

◆ Params

string [] Trait.Params
get

Definition at line 32 of file Trait.cs.

33 {
34 get
35 {
36 if (!owner.c_editorTraitVal.IsEmpty())
37 {
38 return ("," + owner.c_editorTraitVal).Split(',');
39 }
40 return owner.sourceCard.trait;
41 }
42 }
string[] trait
Definition: CardRow.cs:33
string c_editorTraitVal
Definition: Card.cs:1741

Referenced by GetParam(), and GetParamInt().

◆ PriceType

virtual PriceType Trait.PriceType
get

Definition at line 535 of file Trait.cs.

Referenced by TraitVendingMachine.OnUse().

◆ radius

virtual int Trait.radius
get

◆ radiusType

virtual TraitRadiusType Trait.radiusType
get

Definition at line 96 of file Trait.cs.

Referenced by ListPoints().

◆ RecipeCat

virtual string Trait.RecipeCat
get

Definition at line 377 of file Trait.cs.

Referenced by BuildMenu.RefreshCategory().

◆ RefCardName

virtual RefCardName Trait.RefCardName
get

Definition at line 52 of file Trait.cs.

◆ RemoveGlobalOnBanish

virtual bool Trait.RemoveGlobalOnBanish
get

Definition at line 569 of file Trait.cs.

Referenced by FactionBranch.BanishMember().

◆ RenderExtra

virtual bool Trait.RenderExtra
get

Definition at line 369 of file Trait.cs.

Referenced by CardRenderer.Draw().

◆ ReqHarvest

virtual string Trait.ReqHarvest
get

Definition at line 315 of file Trait.cs.

Referenced by BaseTaskHarvest.SetTarget(), and TaskHarvest.TryGetAct().

◆ RequireFullStackCheck

virtual bool Trait.RequireFullStackCheck
get

Definition at line 209 of file Trait.cs.

◆ RestockDay

virtual int Trait.RestockDay
get

Definition at line 563 of file Trait.cs.

◆ ShopLv

virtual int Trait.ShopLv
get

Definition at line 525 of file Trait.cs.

◆ ShopType

virtual ShopType Trait.ShopType
get

Definition at line 531 of file Trait.cs.

Referenced by Zone.GetRandomVisitPos(), and Chara.TryClearInventory().

◆ ShouldRefreshTile

virtual bool Trait.ShouldRefreshTile
get

Definition at line 76 of file Trait.cs.

77 {
78 get
79 {
80 if (!IsBlockPath && !IsOpenSight)
81 {
82 return IsBlockSight;
83 }
84 return true;
85 }
86 }
virtual bool IsBlockPath
Definition: Trait.cs:54
virtual bool IsBlockSight
Definition: Trait.cs:56
virtual bool IsOpenSight
Definition: Trait.cs:60

Referenced by Cell.AddCard(), Cell.RemoveCard(), and Card.SetPlaceState().

◆ ShouldTryRefreshRoom

virtual bool Trait.ShouldTryRefreshRoom
get

Definition at line 88 of file Trait.cs.

Referenced by Card.SetPlaceState().

◆ ShowAsTool

virtual bool Trait.ShowAsTool
get

Definition at line 347 of file Trait.cs.

Referenced by CharaRenderer.Draw(), and CharaActorPCC.OnRender().

◆ ShowCharges

virtual bool Trait.ShowCharges
get

Definition at line 343 of file Trait.cs.

Referenced by Thing.GetName().

◆ ShowChildrenNumber

virtual bool Trait.ShowChildrenNumber
get

Definition at line 345 of file Trait.cs.

◆ ShowContextOnPick

virtual bool Trait.ShowContextOnPick
get

Definition at line 191 of file Trait.cs.

Referenced by AM_MoveInstalled.OnProcessTiles().

◆ ShowFuelWindow

virtual bool Trait.ShowFuelWindow
get

Definition at line 475 of file Trait.cs.

◆ ShowOrbit

virtual bool Trait.ShowOrbit
get

Definition at line 137 of file Trait.cs.

Referenced by CardRenderer.TrySpawnOrbit().

◆ SlaverType

virtual SlaverType Trait.SlaverType
get

Definition at line 565 of file Trait.cs.

◆ TextNextRestock

string Trait.TextNextRestock
get

Definition at line 573 of file Trait.cs.

◆ TextNextRestockPet

string Trait.TextNextRestockPet
get

Definition at line 575 of file Trait.cs.

◆ ThrowType

virtual ThrowType Trait.ThrowType
get

Definition at line 261 of file Trait.cs.

Referenced by Card.Die(), and ActThrow.Throw().

◆ tileMode

virtual TileMode Trait.tileMode
get

Definition at line 449 of file Trait.cs.

◆ tileType

virtual TileType Trait.tileType
get

◆ ToggleType

virtual ToggleType Trait.ToggleType
get

Definition at line 481 of file Trait.cs.

482 {
483 get
484 {
485 if (Electricity >= 0)
486 {
487 return ToggleType.None;
488 }
489 return ToggleType.Electronics;
490 }
491 }

Referenced by ThingContainer.AddFactory(), Card.AddThing(), and RecipeUpdater.RunRecipe().

◆ UseAltTiles

virtual bool Trait.UseAltTiles
get

Definition at line 451 of file Trait.cs.

◆ UseDummyTile

virtual bool Trait.UseDummyTile
get

Definition at line 207 of file Trait.cs.

Referenced by CardRenderer.Draw().

◆ UseExtra

virtual bool Trait.UseExtra
get

Definition at line 455 of file Trait.cs.

◆ UseLightColor

virtual bool Trait.UseLightColor
get

Definition at line 457 of file Trait.cs.

◆ UseLowblock

virtual bool Trait.UseLowblock
get

Definition at line 453 of file Trait.cs.

Referenced by BaseTileMap.DrawTile().

◆ WeightMod

virtual byte Trait.WeightMod
get

Definition at line 44 of file Trait.cs.

Referenced by Cell.Refresh().


The documentation for this class was generated from the following file: