Elin Decompiled Documentation EA 23.319 Nightly Patch 1
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 void OnListInteraction (InvOwner.ListInteraction list, ButtonGrid b, bool context)
 
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 640 of file Trait.cs.

641 {
642 return false;
643 }

Referenced by InvOwnerBlend.ShouldShowGuide().

◆ CanBuiltAt()

virtual bool Trait.CanBuiltAt ( Point  p)
inlinevirtual

Reimplemented in TraitSpotExit.

Definition at line 832 of file Trait.cs.

833 {
834 return true;
835 }

Referenced by TileType._HitTest().

◆ CanChildDecay()

virtual bool Trait.CanChildDecay ( Card  c)
inlinevirtual

Reimplemented in TraitBrewery, and TraitContainerCompost.

Definition at line 1254 of file Trait.cs.

1255 {
1256 return false;
1257 }

Referenced by Card.DecayNatural().

◆ CanCook()

virtual bool Trait.CanCook ( Card  c)
inlinevirtual

Definition at line 925 of file Trait.cs.

926 {
927 if (c == null || !ExistsOnMap || !(c.trait is TraitFood))
928 {
929 return false;
930 }
931 return true;
932 }
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 1642 of file Trait.cs.

1643 {
1644 return false;
1645 }

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 1174 of file Trait.cs.

1175 {
1176 return false;
1177 }

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

◆ CanEat()

virtual bool Trait.CanEat ( Chara  c)
inlinevirtual

Reimplemented in TraitFood, and TraitFoodPreparedPackage.

Definition at line 1165 of file Trait.cs.

1166 {
1167 return owner.HasElement(10);
1168 }
bool HasElement(int ele, bool includeNagative=false)
Definition: Card.cs:6304
Card owner
Definition: Trait.cs:28

References Card.HasElement().

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

◆ CanOffer()

virtual bool Trait.CanOffer ( Card  tg)
inlinevirtual

Reimplemented in TraitAltar.

Definition at line 947 of file Trait.cs.

948 {
949 if (tg == null || tg.isChara || tg.trait.CanOnlyCarry)
950 {
951 return false;
952 }
953 if (tg.rarity == Rarity.Artifact)
954 {
955 return false;
956 }
957 return true;
958 }
Rarity
Definition: Rarity.cs:2
Rarity rarity
Definition: Card.cs:317
virtual bool isChara
Definition: Card.cs:2135
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 1156 of file Trait.cs.

1157 {
1158 return false;
1159 }

Referenced by ActPlan._Update(), HotItemHeld.GetSelfAct(), OnListInteraction(), 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 1192 of file Trait.cs.

1193 {
1194 return false;
1195 }

◆ CanUse() [3/3]

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

Reimplemented in TraitPotionEmpty.

Definition at line 1197 of file Trait.cs.

1198 {
1199 return false;
1200 }

◆ CompareTo()

virtual int Trait.CompareTo ( Card  b)
inlinevirtual

Reimplemented in TraitEffect.

Definition at line 827 of file Trait.cs.

828 {
829 return 0;
830 }

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 615 of file Trait.cs.

616 {
617 return r.idFactory == ((owner.sourceCard.origin != null) ? owner.sourceCard.origin.id : owner.id);
618 }
CardRow origin
Definition: CardRow.cs:49
string id
Definition: CardRow.cs:7
string id
Definition: Card.cs:36
virtual CardRow sourceCard
Definition: Card.cs:2183

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 934 of file Trait.cs.

935 {
936 if (!ExistsOnMap)
937 {
938 return;
939 }
940 foreach (Card item in owner.pos.ListCards())
941 {
942 owner.PlaySound("cook");
943 item.renderer.PlayAnime(AnimeID.Jump);
944 }
945 }
AnimeID
Definition: AnimeID.cs:2
Definition: Card.cs:11
SoundSource PlaySound(string id, float v=1f, bool spatial=true)
Definition: Card.cs:6562
Point pos
Definition: Card.cs:60
List< Card > ListCards(bool includeMasked=false)
Definition: Point.cs:1057

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

Referenced by AI_Cook.Run().

◆ CreateStock()

Thing Trait.CreateStock ( )
inline

Definition at line 2475 of file Trait.cs.

2476 {
2477 switch (ShopType)
2478 {
2479 case ShopType.Dye:
2480 {
2481 Thing thing = ThingGen.Create("dye").SetNum(15 + EClass.rnd(30));
2482 thing.ChangeMaterial(EClass.sources.materials.rows.Where((SourceMaterial.Row r) => r.tier <= 4).RandomItem().alias);
2483 return thing;
2484 }
2485 case ShopType.GeneralExotic:
2486 return FromFilter("shop_generalExotic");
2487 case ShopType.VMachine:
2488 if (EClass.rnd(10) == 0)
2489 {
2490 return Create("wear_swim");
2491 }
2492 if (EClass.rnd(10) == 0)
2493 {
2494 return Create("panty");
2495 }
2496 if (EClass.rnd(5) == 0)
2497 {
2498 return Create("234");
2499 }
2500 return FromFilter("shop_drink");
2501 case ShopType.Furniture:
2502 return FromFilter("shop_furniture");
2503 case ShopType.Book:
2504 return FromFilter("shop_book");
2505 case ShopType.Magic:
2506 return FromFilter("shop_magic");
2507 case ShopType.Ecopo:
2508 {
2509 Thing thing2 = TraitSeed.MakeRandomSeed(enc: true);
2510 if (EClass.rnd(2) == 0)
2511 {
2512 TraitSeed.LevelSeed(thing2, (thing2.trait as TraitSeed).row, 1);
2513 }
2514 return thing2;
2515 }
2516 case ShopType.Healer:
2517 {
2518 Thing thing3 = null;
2519 for (int i = 0; i < 1000; i++)
2520 {
2521 thing3 = FromFilter("shop_healer");
2522 if (thing3.trait is TraitScroll { source: not null } traitScroll)
2523 {
2524 if (!(traitScroll.source.aliasParent != "WIL") && !(traitScroll.source.categorySub == "attack"))
2525 {
2526 break;
2527 }
2528 }
2529 else if (thing3.trait is TraitPotionRandom { source: not null } traitPotionRandom)
2530 {
2531 if (!(traitPotionRandom.source.aliasParent != "WIL") && !(traitPotionRandom.source.categorySub == "attack"))
2532 {
2533 thing3.SetNum(EClass.rnd(5) + 1);
2534 break;
2535 }
2536 }
2537 else if (thing3.trait is TraitRodRandom { source: not null } traitRodRandom && !(traitRodRandom.source.aliasParent != "WIL") && !(traitRodRandom.source.categorySub == "attack"))
2538 {
2539 break;
2540 }
2541 }
2542 return thing3;
2543 }
2544 case ShopType.Milk:
2545 if (EClass._zone is Zone_Nefu && EClass.rnd(2) == 0)
2546 {
2547 Thing thing4 = ThingGen.Create("_milk");
2548 thing4.MakeRefFrom(EClass.sources.charas.rows.Where((SourceChara.Row r) => r.race == "mifu" || r.race == "nefu").RandomItem().model);
2549 Debug.Log(thing4);
2550 return thing4;
2551 }
2552 return Create("_milk");
2553 case ShopType.Map:
2554 return ThingGen.CreateMap();
2555 case ShopType.Plan:
2556 return Create("book_plan");
2557 case ShopType.Weapon:
2558 return FromFilter("shop_weapon");
2559 case ShopType.Gun:
2560 if (EClass.rnd(8) == 0)
2561 {
2562 return Create("mod_ranged");
2563 }
2564 return FromFilter("shop_gun");
2565 case ShopType.Blackmarket:
2566 case ShopType.Exotic:
2567 case ShopType.TravelMerchant:
2568 {
2569 int num = 30;
2570 if (ShopType == ShopType.TravelMerchant)
2571 {
2572 num = 5;
2573 }
2575 {
2576 num = 25;
2577 }
2579 {
2580 num = 15;
2581 }
2582 CardBlueprint.SetRarity((EClass.rnd(num * 5) == 0) ? Rarity.Mythical : ((EClass.rnd(num) == 0) ? Rarity.Legendary : ((EClass.rnd(5) == 0) ? Rarity.Superior : Rarity.Normal)));
2583 return FromFilter("shop_blackmarket");
2584 }
2585 case ShopType.Drink:
2586 return FromFilter("shop_drink");
2587 case ShopType.Booze:
2588 return FromFilter("shop_booze");
2589 case ShopType.Fruit:
2590 return FromFilter("shop_fruit");
2591 case ShopType.Fish:
2592 if (EClass.rnd(2) == 0)
2593 {
2594 return Create("bait");
2595 }
2596 if (EClass.rnd(3) == 0)
2597 {
2598 return Create("fishingRod");
2599 }
2600 return FromFilter("shop_fish");
2601 case ShopType.Meat:
2602 if (EClass.rnd(5) == 0)
2603 {
2604 return Create("seasoning");
2605 }
2606 return FromFilter("shop_meat");
2607 case ShopType.Bread:
2608 if (EClass.rnd(3) == 0)
2609 {
2610 return Create("dough");
2611 }
2612 return FromFilter("shop_bread");
2613 case ShopType.Sweet:
2614 if (EClass.rnd(3) == 0)
2615 {
2616 return Create("dough");
2617 }
2618 return FromFilter("shop_sweet");
2619 case ShopType.Curry:
2620 if (EClass.rnd(3) == 0)
2621 {
2622 return Create("seasoning");
2623 }
2624 return Create("693");
2625 case ShopType.Food:
2626 if (EClass.rnd(5) == 0)
2627 {
2628 return Create("seasoning");
2629 }
2630 return FromFilter("shop_food");
2631 case ShopType.Drug:
2632 return FromFilter("shop_drug");
2633 case ShopType.LoytelMart:
2634 {
2635 int loytelMartLv = EClass.player.flags.loytelMartLv;
2636 if (loytelMartLv >= 1)
2637 {
2638 if (EClass.rnd(10) == 0)
2639 {
2640 return Create("monsterball").SetLv(40 + EClass.rnd(ShopLv)).Thing;
2641 }
2642 if (EClass.rnd(30) == 0)
2643 {
2644 return ThingGen.Create("rp_random", -1, ShopLv + 10);
2645 }
2646 if (EClass.rnd(100) == 0)
2647 {
2648 return ThingGen.Create("map_treasure", -1, EClass.rndHalf(ShopLv));
2649 }
2650 if (EClass.rnd(40) == 0)
2651 {
2652 return Create("water").SetPriceFix(1000);
2653 }
2654 if (EClass.rnd(1000) == 0)
2655 {
2656 return Create("1165");
2657 }
2658 }
2659 if ((loytelMartLv >= 2 || EClass.debug.enable) && EClass.rnd(10) == 0)
2660 {
2661 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);
2662 switch ((from _s in row.thing.ToCharArray()
2663 where _s != ' '
2664 select _s).RandomItem())
2665 {
2666 case 'B':
2667 return ThingGen.CreateSpellbook(row.id);
2668 case 'P':
2669 return ThingGen.CreatePotion(row.id);
2670 case 'R':
2671 return ThingGen.CreateRod(row.id);
2672 case 'S':
2673 return ThingGen.CreateScroll(row.id);
2674 }
2675 }
2676 return FromFilter("shop_junk");
2677 }
2678 case ShopType.Junk:
2679 case ShopType.Moyer:
2680 return FromFilter("shop_junk");
2681 case ShopType.Souvenir:
2682 return FromFilter("shop_souvenir");
2683 case ShopType.StrangeGirl:
2684 return DNA.GenerateGene(SpawnList.Get("chara").Select(ShopLv + 10), DNA.Type.Brain);
2685 case ShopType.Fireworks:
2686 if (EClass.rnd(3) == 0)
2687 {
2688 return Create("firework_launcher");
2689 }
2690 return Create("firework");
2691 case ShopType.Festival:
2692 if (EClass.rnd(3) != 0)
2693 {
2694 if (IsFestival("olvina"))
2695 {
2696 return Create(new string[4] { "1125", "1126", "pillow_truth", "1230" }.RandomItem());
2697 }
2698 if (IsFestival("yowyn"))
2699 {
2700 return Create(new string[3] { "hat_mushroom", "hat_witch", "hat_kumiromi" }.RandomItem());
2701 }
2702 if (IsFestival("noyel"))
2703 {
2704 return Create(new string[13]
2705 {
2706 "1127", "1128", "xmas_sled", "xmas_bigbag", "xmas_bigbox", "xmas_blackcat", "xmas_blackcat", "xmas_jure", "xmas_crown", "xmas_ball",
2707 "xmas_ball", "xmas_ball", "xmas_string"
2708 }.RandomItem());
2709 }
2710 }
2711 if (EClass.rnd(2) == 0)
2712 {
2713 return Create(new string[4] { "1081", "1082", "1083", "1084" }.RandomItem());
2714 }
2715 if (EClass.rnd(3) == 0)
2716 {
2717 return FromFilter("shop_junk");
2718 }
2719 return FromFilter("shop_souvenir");
2720 case ShopType.Lamp:
2721 if (EClass.rnd(3) != 0)
2722 {
2723 if (IsFestival("kapul"))
2724 {
2725 return Create(new string[6] { "999", "1000", "1001", "1002", "1003", "1004" }.RandomItem());
2726 }
2727 if (IsFestival("yowyn"))
2728 {
2729 return Create(new string[2] { "1072", "1073" }.RandomItem());
2730 }
2731 if (IsFestival("noyel"))
2732 {
2733 return Create(new string[1] { "1069" }.RandomItem());
2734 }
2735 if (IsFestival("olvina"))
2736 {
2737 return Create(new string[2] { "1070", "1071" }.RandomItem());
2738 }
2739 }
2740 if (EClass._zone.IsFestival && EClass.rnd(2) == 0)
2741 {
2742 return Create(new string[4] { "953", "954", "955", "956" }.RandomItem());
2743 }
2744 return FromFilter("shop_lamp");
2745 default:
2746 if (EClass.rnd(100) == 0)
2747 {
2748 return Create("lockpick");
2749 }
2750 return FromFilter("shop_general");
2751 }
2752 Thing Create(string s)
2753 {
2754 return ThingGen.Create(s, -1, ShopLv);
2755 }
2756 Thing FromFilter(string s)
2757 {
2758 return ThingGen.CreateFromFilter(s, ShopLv);
2759 }
2760 static bool IsFestival(string id)
2761 {
2762 if (EClass._zone.id == id)
2763 {
2764 return EClass._zone.IsFestival;
2765 }
2766 return false;
2767 }
2768 }
ShopType
Definition: ShopType.cs:2
static void SetRarity(Rarity q=Rarity.Normal)
Card ChangeMaterial(int idNew, bool ignoreFixedMaterial=false)
Definition: Card.cs:3194
Card MakeRefFrom(string id)
Definition: Card.cs:5960
Thing SetNum(int a)
Definition: Card.cs:3653
Thing SetPriceFix(int a)
Definition: Card.cs:7588
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:224
static Thing CreateFromFilter(string id, int lv=-1)
Definition: ThingGen.cs:63
static Thing CreateMap(string idSource=null, int lv=-1)
Definition: ThingGen.cs:132
static Thing CreateSpellbook(string alias, int num=1)
Definition: ThingGen.cs:159
static Thing CreateScroll(int ele, int num=1)
Definition: ThingGen.cs:190
static Thing CreateRod(int ele, int charge=-1)
Definition: ThingGen.cs:217
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:97
static void LevelSeed(Thing t, SourceObj.Row obj, int num)
Definition: TraitSeed.cs:184
virtual int ShopLv
Definition: Trait.cs:525
virtual bool IsFestival
Definition: Zone.cs:213

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 1101 of file Trait.cs.

1102 {
1103 Thing thing = owner.things.List((Thing a) => a.category.id == "currency" || !a.IsUnique).RandomItem();
1104 if (thing != null)
1105 {
1106 if (thing.Num > 10)
1107 {
1108 thing.SetNum(thing.Num / 10 * 9);
1109 }
1110 else if (thing.Num > 1)
1111 {
1112 thing.SetNum(thing.Num - 1);
1113 }
1114 else
1115 {
1116 thing.Destroy();
1117 }
1118 cc.Say("pry_damage", cc, thing);
1119 }
1120 }
bool IsUnique
Definition: Card.cs:2143
void Destroy()
Definition: Card.cs:5268
ThingContainer things
Definition: Card.cs:39
int Num
Definition: Card.cs:161
SourceCategory.Row category
Definition: Card.cs:2101
void Say(string lang, string ref1=null, string ref2=null)
Definition: Card.cs:7240
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 649 of file Trait.cs.

650 {
651 return 0;
652 }

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

◆ GetBuildModeRecipe()

virtual Recipe Trait.GetBuildModeRecipe ( )
inlinevirtual

Reimplemented in TraitTile.

Definition at line 920 of file Trait.cs.

921 {
922 return Recipe.Create(owner.Thing);
923 }
virtual Thing Thing
Definition: Card.cs:2110
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 1534 of file Trait.cs.

1535 {
1536 if (ToggleType == ToggleType.Electronics)
1537 {
1538 if (id == "battery")
1539 {
1540 return 20;
1541 }
1542 }
1543 else
1544 {
1545 if (id == "log")
1546 {
1547 return 20;
1548 }
1549 if (id == "branch")
1550 {
1551 return 5;
1552 }
1553 }
1554 return 0;
1555 }
ToggleType
Definition: ToggleType.cs:2

◆ GetFuelValue() [2/2]

int Trait.GetFuelValue ( Thing  t)
inline

Definition at line 1525 of file Trait.cs.

1526 {
1527 if (t.c_isImportant)
1528 {
1529 return 0;
1530 }
1531 return GetFuelValue(t.id);
1532 }
bool c_isImportant
Definition: Card.cs:1051
int GetFuelValue(Thing t)
Definition: Trait.cs:1525

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 635 of file Trait.cs.

636 {
637 return null;
638 }

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 668 of file Trait.cs.

669 {
670 return Emo2.none;
671 }
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 630 of file Trait.cs.

631 {
632 return null;
633 }

◆ GetName()

virtual string Trait.GetName ( )
inlinevirtual

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

Definition at line 728 of file Trait.cs.

729 {
730 return owner.sourceCard.GetText();
731 }
string GetText(string id="name", bool returnNull=false)
Definition: SourceData.cs:688

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 596 of file Trait.cs.

597 {
598 if (i < Params.Length)
599 {
600 return Params[i].ToInt();
601 }
602 return def;
603 }

References Params.

Referenced by TraitItemProc.OnUse().

◆ GetPoint()

Point Trait.GetPoint ( )
inline

Definition at line 841 of file Trait.cs.

842 {
843 return owner.pos;
844 }

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 605 of file Trait.cs.

606 {
607 return null;
608 }

◆ GetRandomPoint()

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

Definition at line 846 of file Trait.cs.

847 {
848 if (radius == 0)
849 {
850 return owner.pos;
851 }
852 List<Point> list = ListPoints();
853 for (int i = 0; i < 50; i++)
854 {
855 Point point = list.RandomItem();
856 if (point.IsValid && (func == null || func(point)) && (accessChara == null || accessChara.HasAccess(point)))
857 {
858 return point;
859 }
860 }
861 return list[0];
862 }
bool HasAccess(Card c)
Definition: Chara.cs:1319
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:864

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 915 of file Trait.cs.

916 {
917 return Recipe.Create(owner.Thing);
918 }

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 654 of file Trait.cs.

655 {
656 return null;
657 }

Referenced by ButtonGrid.SetCard().

◆ GetRefSprite()

virtual Sprite Trait.GetRefSprite ( )
inlinevirtual

Reimplemented in TraitScrollStatic.

Definition at line 659 of file Trait.cs.

660 {
661 return null;
662 }

Referenced by ButtonGrid.SetCard().

◆ GetRenderData()

virtual RenderData Trait.GetRenderData ( )
inlinevirtual

Reimplemented in TraitFakeObj, and TraitFakeTile.

Definition at line 610 of file Trait.cs.

611 {
612 return null;
613 }

Referenced by CardRenderer.SetOwner().

◆ GetRestockedIcon()

Emo2 Trait.GetRestockedIcon ( )
inline

Definition at line 1670 of file Trait.cs.

1671 {
1672 if (SlaverType != 0)
1673 {
1674 SlaverData obj = owner.GetObj<SlaverData>(5);
1675 if (obj != null && EClass.world.date.IsExpired(obj.dateRefresh))
1676 {
1677 return Emo2.restock;
1678 }
1679 }
1680 int c_dateStockExpire = owner.c_dateStockExpire;
1681 if (c_dateStockExpire != 0 && EClass.world.date.IsExpired(c_dateStockExpire))
1682 {
1683 if (ShopType == ShopType.None)
1684 {
1685 return Emo2.blessing;
1686 }
1687 return Emo2.restock;
1688 }
1689 return Emo2.none;
1690 }
SlaverType
Definition: SlaverType.cs:2
int c_dateStockExpire
Definition: Card.cs:1273
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 1145 of file Trait.cs.

1146 {
1147 _ = 7;
1148 return owner.sourceCard._index;
1149 }

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 1647 of file Trait.cs.

1648 {
1649 int rawDeadLine = 0;
1650 if (pet)
1651 {
1652 SlaverData obj = owner.GetObj<SlaverData>(5);
1653 if (obj != null)
1654 {
1655 rawDeadLine = obj.dateRefresh;
1656 }
1657 }
1658 else
1659 {
1660 rawDeadLine = owner.c_dateStockExpire;
1661 }
1662 int remainingHours = EClass.world.date.GetRemainingHours(rawDeadLine);
1663 if (remainingHours > 0)
1664 {
1665 return "nextRestock".lang(lang.lang(), Date.GetText(remainingHours) ?? "");
1666 }
1667 return lang.lang();
1668 }
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 679 of file Trait.cs.

680 {
681 return false;
682 }

Referenced by AI_Idle.TryPerformIdleUse().

◆ Install()

void Trait.Install ( bool  byPlayer)
inline

Definition at line 1275 of file Trait.cs.

1276 {
1277 if (Electricity != 0)
1278 {
1279 EClass._zone.dirtyElectricity = true;
1280 if (Electricity > 0)
1281 {
1282 EClass._zone.electricity += Electricity;
1283 EClass.pc.PlaySound("electricity_on");
1284 }
1285 }
1286 TryToggle();
1289 {
1290 owner.PlaySound("fire");
1291 }
1292 OnInstall(byPlayer);
1293 }
void RecalculateFOV()
Definition: Card.cs:6778
bool isOn
Definition: Card.cs:545
static Chara pc
Definition: EClass.cs:15
virtual void TryToggle()
Definition: Trait.cs:1321
virtual void OnInstall(bool byPlayer)
Definition: Trait.cs:1313
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 1515 of file Trait.cs.

1516 {
1517 return GetFuelValue(s) > 0;
1518 }

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

◆ IsFuel() [2/2]

bool Trait.IsFuel ( Thing  t)
inline

Definition at line 1520 of file Trait.cs.

1521 {
1522 return GetFuelValue(t) > 0;
1523 }

◆ IsFuelEnough()

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

Definition at line 1498 of file Trait.cs.

1499 {
1500 if (!IsRequireFuel)
1501 {
1502 return true;
1503 }
1504 if (owner.c_charges >= FuelCost * num)
1505 {
1506 return true;
1507 }
1508 if (owner.autoRefuel)
1509 {
1510 TryRefuel(FuelCost * num - owner.c_charges, excludes);
1511 }
1512 return owner.c_charges >= FuelCost * num;
1513 }
bool autoRefuel
Definition: Card.cs:629
int c_charges
Definition: Card.cs:1309
virtual int FuelCost
Definition: Trait.cs:473
bool IsRequireFuel
Definition: Trait.cs:477
void TryRefuel(int dest, List< Thing > excludes)
Definition: Trait.cs:1570

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 864 of file Trait.cs.

865 {
866 listRadiusPoints.Clear();
867 if (center == null)
868 {
869 center = owner.pos;
870 }
871 if (radius == 0)
872 {
873 listRadiusPoints.Add(center.Copy());
874 return listRadiusPoints;
875 }
876 Room room = center.cell.room;
877 if (room != null && CanUseRoomRadius)
878 {
879 foreach (Point point in room.points)
880 {
881 if (radiusType == TraitRadiusType.Farm)
882 {
883 listRadiusPoints.Add(point.Copy());
884 }
885 else if ((!onlyPassable || !point.cell.blocked) && !point.cell.HasBlock && point.cell.HasFloor)
886 {
887 listRadiusPoints.Add(point.Copy());
888 }
889 }
890 }
891 else
892 {
893 EClass._map.ForeachSphere(center.x, center.z, radius + 1, delegate(Point p)
894 {
895 if (radiusType == TraitRadiusType.Farm)
896 {
897 if (!p.cell.HasBlock || p.cell.HasFence)
898 {
899 listRadiusPoints.Add(p.Copy());
900 }
901 }
902 else if ((!onlyPassable || !p.cell.blocked) && !p.cell.HasBlock && p.cell.HasFloor && (!onlyPassable || Los.IsVisible(center, p)))
903 {
904 listRadiusPoints.Add(p.Copy());
905 }
906 });
907 }
908 if (listRadiusPoints.Count == 0)
909 {
910 listRadiusPoints.Add(center.Copy());
911 }
912 return listRadiusPoints;
913 }
TraitRadiusType
PointList points
Definition: BaseArea.cs:26
Room room
Definition: Cell.cs:110
bool HasBlock
Definition: Cell.cs:651
bool HasFloor
Definition: Cell.cs:653
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:2438
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 982 of file Trait.cs.

983 {
984 if (!ExistsOnMap)
985 {
986 return;
987 }
988 foreach (Card item in owner.pos.ListCards())
989 {
990 if (CanOffer(item))
991 {
992 item.Destroy();
993 cc.depression.Mod(100);
994 owner.PlaySound("offering");
995 }
996 }
997 }
Stats depression
Definition: Chara.cs:1183
virtual void Mod(int a)
Definition: Stats.cs:135
virtual bool CanOffer(Card tg)
Definition: Trait.cs:947

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

Referenced by AI_Offer.Run().

◆ OfferProcess()

void Trait.OfferProcess ( Chara  cc)
inline

Definition at line 960 of file Trait.cs.

961 {
962 if (!ExistsOnMap)
963 {
964 return;
965 }
967 string @ref = row.GetTextArray("name2")[1];
968 string ref2 = row.GetTextArray("name2")[0];
969 if (EClass.rnd(3) == 0)
970 {
971 cc.Talk("offer", @ref, ref2);
972 }
973 foreach (Card item in owner.pos.ListCards())
974 {
975 if (CanOffer(item))
976 {
977 item.renderer.PlayAnime(AnimeID.Shiver);
978 }
979 }
980 }
string c_idDeity
Definition: Card.cs:1621
void Talk(string idTopic, string ref1=null, string ref2=null, bool forceSync=false)
Definition: Card.cs:7122
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 716 of file Trait.cs.

717 {
718 }

Referenced by Map.OnCardAddedToZone().

◆ OnBarter()

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

Definition at line 1692 of file Trait.cs.

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

646 {
647 }

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 712 of file Trait.cs.

713 {
714 }

Referenced by Card.SetPlaceState().

◆ OnChildDecay()

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

Reimplemented in TraitBrewery.

Definition at line 1249 of file Trait.cs.

1250 {
1251 return true;
1252 }

◆ OnCrafted()

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

Reimplemented in TraitBlanket, TraitFakeTile, and TraitPotionAlchemy.

Definition at line 696 of file Trait.cs.

697 {
698 }

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 1179 of file Trait.cs.

1180 {
1181 }

◆ OnEat()

virtual void Trait.OnEat ( Chara  c)
inlinevirtual

Reimplemented in TraitFortuneCookie.

Definition at line 1170 of file Trait.cs.

1171 {
1172 }

◆ OnEnterScreen()

virtual void Trait.OnEnterScreen ( )
inlinevirtual

Reimplemented in TraitToolTorch.

Definition at line 1603 of file Trait.cs.

1604 {
1606 }
virtual void RefreshRenderer()
Definition: Trait.cs:1608

Referenced by CardRenderer.OnEnterScreen().

◆ OnEquip()

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

Reimplemented in TraitEQFlower.

Definition at line 704 of file Trait.cs.

705 {
706 }

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

◆ OnHeld()

virtual void Trait.OnHeld ( )
inlinevirtual

Reimplemented in TraitDetector.

Definition at line 1233 of file Trait.cs.

1234 {
1235 }

Referenced by HotItemHeld.OnSetCurrentItem().

◆ OnImportMap()

virtual void Trait.OnImportMap ( )
inlinevirtual

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

Definition at line 688 of file Trait.cs.

689 {
690 }

Referenced by SerializedCards.Restore().

◆ OnInstall()

virtual void Trait.OnInstall ( bool  byPlayer)
inlinevirtual

Reimplemented in TraitSwitch.

Definition at line 1313 of file Trait.cs.

1314 {
1315 }

◆ OnListInteraction()

virtual void Trait.OnListInteraction ( InvOwner::ListInteraction  list,
ButtonGrid  b,
bool  context 
)
inlinevirtual

Reimplemented in TraitCard, and TraitLightSource.

Definition at line 752 of file Trait.cs.

753 {
754 Card card = owner;
755 Thing t = card as Thing;
756 if (t == null)
757 {
758 return;
759 }
760 if (!LayerChara.Instance)
761 {
762 if (CanRead(EClass.pc))
763 {
764 list.Add("invRead", 110, delegate
765 {
766 t.DoAct(new AI_Read
767 {
768 target = t
769 });
770 }, "remove");
771 }
772 if (CanUse(EClass.pc))
773 {
774 list.Add(LangUse, 120, delegate
775 {
776 if (OnUse(EClass.pc))
777 {
778 EClass.player.EndTurn();
779 }
780 }, "use");
781 }
782 if (CanDrink(EClass.pc))
783 {
784 list.Add("invDrink", 130, delegate
785 {
786 t.DoAct(new AI_Drink
787 {
788 target = t
789 });
790 }, "remove");
791 }
792 else if (CanEat(EClass.pc))
793 {
794 list.Add("invFood", 140, delegate
795 {
796 t.DoAct(new AI_Eat
797 {
798 cook = false,
799 target = t
800 });
801 }, "remove");
802 }
803 if (IsBlendBase)
804 {
805 list.Add("invBlend", 150, delegate
806 {
808 }, "blend");
809 }
810 }
811 if (!context || !CanName)
812 {
813 return;
814 }
815 list.Add("changeName", 200, delegate
816 {
817 Dialog.InputName("dialogChangeName", t.c_refText.IsEmpty(""), delegate(bool cancel, string text)
818 {
819 if (!cancel)
820 {
821 t.c_refText = text;
822 }
823 });
824 });
825 }
@ cook
Definition: AI_Eat.cs:5
string c_refText
Definition: Card.cs:1669
Definition: Dialog.cs:7
static Dialog InputName(string langDetail, string text, Action< bool, string > onClose, InputType inputType=InputType.Default)
Definition: Dialog.cs:536
Interaction Add(string s, int priority, Action action, string idPriority=null)
Definition: InvOwner.cs:474
static LayerChara Instance
Definition: LayerChara.cs:3
static LayerDragGrid Create(InvOwnerDraglet owner, bool refuelFromLayerDragGrid=false)
void DoAct(Act act)
Definition: Thing.cs:2003
virtual bool IsBlendBase
Definition: Trait.cs:275
virtual bool CanUse(Chara c)
Definition: Trait.cs:1187
virtual bool CanRead(Chara c)
Definition: Trait.cs:1156
virtual bool CanName
Definition: Trait.cs:147
virtual bool CanEat(Chara c)
Definition: Trait.cs:1165
virtual bool OnUse(Chara c)
Definition: Trait.cs:1202
virtual string LangUse
Definition: Trait.cs:381
virtual bool CanDrink(Chara c)
Definition: Trait.cs:1174

References Card.Add(), Card.c_refText, CanDrink(), CanEat(), CanName, CanRead(), CanUse(), card, cook, LayerDragGrid.Create(), Thing.DoAct(), Dialog.InputName(), LayerChara.Instance, IsBlendBase, LangUse, OnUse(), owner, and EClass.pc.

Referenced by InvOwnerEquip.ListInteractions().

◆ OnLockOpen()

virtual void Trait.OnLockOpen ( Chara  cc)
inlinevirtual

Definition at line 1122 of file Trait.cs.

1123 {
1124 owner.c_lockLv = 0;
1125 if (owner.c_lockedHard)
1126 {
1127 owner.c_lockedHard = false;
1128 owner.c_priceAdd = 0;
1129 }
1130 if (cc.IsPC && owner.isLostProperty)
1131 {
1133 }
1134 owner.isLostProperty = false;
1135 if (owner.GetBool(127))
1136 {
1137 Steam.GetAchievement(ID_Achievement.FIAMA_CHEST);
1138 }
1139 }
bool c_lockedHard
Definition: Card.cs:1063
bool isLostProperty
Definition: Card.cs:809
bool GetBool(string id)
Definition: Card.cs:2541
override bool IsPC
Definition: Chara.cs:630
void ModKarma(int a)
Definition: Player.cs:2610

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

◆ OnOpenDoor()

virtual void Trait.OnOpenDoor ( Chara  c)
inlinevirtual

Reimplemented in TraitDoorBell.

Definition at line 1271 of file Trait.cs.

1272 {
1273 }

Referenced by TraitDoor.TryOpen().

◆ OnRead()

◆ OnRemovedFromZone()

virtual void Trait.OnRemovedFromZone ( )
inlinevirtual

Reimplemented in TraitBoat.

Definition at line 720 of file Trait.cs.

721 {
722 }

Referenced by Map.OnCardRemovedFromZone().

◆ OnRenderExtra()

virtual void Trait.OnRenderExtra ( RenderParam  p)
inlinevirtual

Reimplemented in TraitPaintBoard, and TraitShrine.

Definition at line 664 of file Trait.cs.

665 {
666 }

Referenced by CardRenderer.Draw().

◆ OnRenderTile()

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

Reimplemented in TraitLightSun, and TraitRoadSign.

Definition at line 737 of file Trait.cs.

738 {
739 if (radius == 0)
740 {
741 return;
742 }
743 Vector3 vector = point.Position();
744 vector.z += EClass.setting.render.thingZ;
745 foreach (Point item in ListPoints(point))
746 {
747 Vector3 vector2 = item.Position();
748 EClass.screen.guide.passGuideFloor.Add(vector2.x, vector2.y, vector2.z, 10f, 0.3f);
749 }
750 }
ScreenGuide guide
static BaseGameScreen screen
Definition: EClass.cs:33
static GameSetting setting
Definition: EClass.cs:35
RenderSetting render
Definition: GameSetting.cs:303
void Add(Point point, float tile=0f, float color=0f)
Definition: MeshPass.cs:122
ref Vector3 Position(int height)
Definition: Point.cs:553
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 1259 of file Trait.cs.

1260 {
1261 }

Referenced by ButtonGrid.SetCard().

◆ OnSetCurrentItem()

virtual void Trait.OnSetCurrentItem ( )
inlinevirtual

Reimplemented in TraitToolTorch.

Definition at line 1241 of file Trait.cs.

1242 {
1243 }

◆ OnSetOwner()

virtual void Trait.OnSetOwner ( )
inlinevirtual

Definition at line 684 of file Trait.cs.

685 {
686 }

Referenced by SetOwner().

◆ OnSimulateHour()

virtual void Trait.OnSimulateHour ( VirtualDate  date)
inlinevirtual

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

Definition at line 724 of file Trait.cs.

725 {
726 }

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 1263 of file Trait.cs.

1264 {
1265 }

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

◆ OnSteppedOut()

virtual void Trait.OnSteppedOut ( Chara  c)
inlinevirtual

Reimplemented in TraitGeneratorWheel, and TraitSwing.

Definition at line 1267 of file Trait.cs.

1268 {
1269 }

Referenced by Chara._Move().

◆ OnThrowGround()

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

Reimplemented in TraitDrink, and TraitDye.

Definition at line 1183 of file Trait.cs.

1184 {
1185 }

Referenced by ActThrow.Throw().

◆ OnTickHeld()

virtual void Trait.OnTickHeld ( )
inlinevirtual

Reimplemented in TraitDetector.

Definition at line 1237 of file Trait.cs.

1238 {
1239 }

◆ OnToggle()

virtual void Trait.OnToggle ( )
inlinevirtual

Reimplemented in TraitJukeBox, and TraitLeverBreaker.

Definition at line 1423 of file Trait.cs.

1424 {
1425 }

◆ OnUnequip()

virtual void Trait.OnUnequip ( Chara  c)
inlinevirtual

Reimplemented in TraitEQFlower.

Definition at line 708 of file Trait.cs.

709 {
710 }

Referenced by CharaBody.Unequip().

◆ OnUninstall()

virtual void Trait.OnUninstall ( )
inlinevirtual

Definition at line 1317 of file Trait.cs.

1318 {
1319 }

◆ OnUnsetCurrentItem()

virtual void Trait.OnUnsetCurrentItem ( )
inlinevirtual

Reimplemented in TraitToolTorch.

Definition at line 1245 of file Trait.cs.

1246 {
1247 }

◆ OnUse() [1/3]

◆ OnUse() [2/3]

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

Reimplemented in TraitDye, and TraitFoodMeat.

Definition at line 1211 of file Trait.cs.

1212 {
1213 return true;
1214 }

◆ OnUse() [3/3]

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

Reimplemented in TraitPotionEmpty.

Definition at line 1216 of file Trait.cs.

1217 {
1218 return true;
1219 }

◆ PlayToggleEffect()

virtual void Trait.PlayToggleEffect ( bool  silent)
inlinevirtual

Reimplemented in TraitWoodMill.

Definition at line 1377 of file Trait.cs.

1378 {
1379 bool flag = ToggleType == ToggleType.Fire;
1380 bool isOn = owner.isOn;
1381 switch (ToggleType)
1382 {
1383 case ToggleType.Lever:
1384 if (!silent)
1385 {
1386 owner.Say("lever", EClass.pc, owner);
1387 owner.PlaySound("switch_lever");
1388 }
1389 return;
1390 case ToggleType.Curtain:
1391 if (!silent)
1392 {
1393 owner.Say(isOn ? "close" : "open", EClass.pc, owner);
1394 owner.PlaySound("Material/leather_drop");
1395 }
1398 return;
1399 case ToggleType.None:
1400 return;
1401 }
1402 if (isOn)
1403 {
1404 if (!silent)
1405 {
1406 owner.Say(flag ? "toggle_fire" : "toggle_ele", EClass.pc, owner);
1408 }
1411 }
1412 else
1413 {
1414 if (!silent)
1415 {
1417 }
1420 }
1421 }
void RefreshNeighborTiles()
Definition: Point.cs:1282
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 1608 of file Trait.cs.

1609 {
1610 if (owner.renderer.isSynced && !IdToggleExtra.IsEmpty())
1611 {
1612 if (owner.isOn)
1613 {
1615 }
1616 else
1617 {
1619 }
1620 }
1621 }
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 1557 of file Trait.cs.

1558 {
1559 t.PlaySoundDrop(spatial: false);
1561 Msg.Say("fueled", t);
1562 if (!owner.isOn)
1563 {
1564 owner.trait.Toggle(on: true);
1565 }
1566 t.Destroy();
1568 }
void PlayAnime(AnimeID id, bool force)
void ModCharge(int a, bool destroy=false)
Definition: Card.cs:4108
void PlaySoundDrop(bool spatial=true)
Definition: Card.cs:6547
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:1343

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 1623 of file Trait.cs.

1624 {
1625 if (owner.isThing && !owner.Thing.source.attackType.IsEmpty() && owner.ammoData != null)
1626 {
1627 t.SetText(owner.c_ammo.ToString() ?? "", FontColor.Charge);
1628 t.SetActive(enable: true);
1629 }
1630 else if (owner.Num == 1 && ShowCharges && owner.IsIdentified)
1631 {
1632 t.SetText(owner.c_charges.ToString() ?? "", FontColor.Charge);
1633 t.SetActive(enable: true);
1634 }
1635 else
1636 {
1637 t.SetText(owner.Num.ToShortNumber(), FontColor.ButtonGrid);
1638 t.SetActive(owner.Num > 1);
1639 }
1640 }
FontColor
Definition: FontColor.cs:2
virtual bool isThing
Definition: Card.cs:2133
int c_ammo
Definition: Card.cs:1501
Thing ammoData
Definition: Card.cs:1825
bool IsIdentified
Definition: Card.cs:2431
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 673 of file Trait.cs.

674 {
675 owner = _owner;
676 OnSetOwner();
677 }
virtual void OnSetOwner()
Definition: Trait.cs:684

References OnSetOwner(), and owner.

Referenced by Card.ApplyTrait().

◆ SetParams()

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

Definition at line 692 of file Trait.cs.

693 {
694 }

◆ Toggle()

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

Definition at line 1343 of file Trait.cs.

1344 {
1345 if (owner.isOn == on)
1346 {
1347 return;
1348 }
1349 if (Electricity < 0)
1350 {
1351 if (on)
1352 {
1354 {
1356 {
1357 if (!silent)
1358 {
1359 owner.Say("notEnoughElectricity", owner);
1360 }
1361 owner.PlaySound("electricity_insufficient");
1362 }
1363 return;
1364 }
1365 EClass._zone.electricity += Electricity;
1366 }
1367 else
1368 {
1369 EClass._zone.electricity -= Electricity;
1370 }
1371 }
1372 owner.isOn = on;
1373 PlayToggleEffect(silent);
1374 OnToggle();
1375 }
int electricity
Definition: Spatial.cs:250
virtual void PlayToggleEffect(bool silent)
Definition: Trait.cs:1377
virtual void OnToggle()
Definition: Trait.cs:1423

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 1004 of file Trait.cs.

1005 {
1006 Thing thing = cc.things.FindBest<TraitLockpick>((Thing t) => -t.c_charges);
1007 int num = ((thing == null) ? (cc.Evalue(280) / 2 + 2) : (cc.Evalue(280) + 10));
1008 int num2 = owner.c_lockLv;
1009 bool flag = this is TraitChestPractice;
1010 if (flag)
1011 {
1012 num2 = num / 4 * 3 - 1;
1013 }
1014 if (num <= num2 && cc.IsPC)
1015 {
1016 cc.PlaySound("lock");
1017 cc.Say("openLockFail2");
1018 owner.PlayAnime(AnimeID.Shiver);
1019 return LockOpenState.NotEnoughSkill;
1020 }
1021 if (thing != null && !flag)
1022 {
1023 thing.ModCharge(-1, destroy: true);
1024 }
1025 if (EClass.rnd(num + 6) > num2 + 5 || (!cc.IsPC && EClass.rnd(20) == 0) || EClass.rnd(200) == 0)
1026 {
1027 cc.PlaySound("lock_open");
1028 cc.Say("lockpick_success", cc, owner);
1029 int num3 = 100 + num2 * 10;
1030 if (owner.c_lockedHard)
1031 {
1032 num3 *= 10;
1033 }
1034 cc.ModExp(280, num3);
1035 OnLockOpen(cc);
1036 return LockOpenState.Success;
1037 }
1038 cc.PlaySound("lock");
1039 if (cc.IsPC)
1040 {
1041 cc.Say("openLockFail");
1042 }
1043 cc.ModExp(280, (thing != null) ? 50 : 30);
1044 if ((thing == null) | (EClass.rnd(2) == 0))
1045 {
1046 cc.stamina.Mod(-1);
1047 }
1048 return LockOpenState.Fail;
1049 }
LockOpenState
Definition: LockOpenState.cs:2
int c_lockLv
Definition: Card.cs:991
void PlayAnime(AnimeID id, bool force=false)
Definition: Card.cs:6581
Stats stamina
Definition: Chara.cs:1181
virtual void OnLockOpen(Chara cc)
Definition: Trait.cs:1122

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 999 of file Trait.cs.

1000 {
1001 return true;
1002 }

Referenced by AI_Read.Run().

◆ TryPryOpenLock()

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

Definition at line 1051 of file Trait.cs.

1052 {
1053 Thing tool = cc.Tool;
1054 cc.stamina.Mod(-1);
1055 Point pos = owner.GetRootCard().pos;
1057 material.PlayHitEffect(pos);
1058 material.AddBlood(pos);
1059 if (!cc.IsAliveInCurrentZone || tool == null)
1060 {
1061 return LockOpenState.Fail;
1062 }
1063 cc.ModExp(280, 20);
1064 cc.ModExp(70, 30);
1065 int a2 = Mathf.Clamp(20 * tool.material.hardness / material.hardness, 10, 150);
1066 owner.hp -= EClass.rnd(a2);
1067 int num = (int)Mathf.Clamp(20L * (long)(owner.c_lockLv + 20) / cc.STR, 5f, 50f);
1068 if (owner.c_lockedHard)
1069 {
1070 num = num * 3 / 2;
1071 }
1072 if (EClass.rnd(100) < num)
1073 {
1075 }
1076 if (owner.hp < 0)
1077 {
1078 cc.Say("pry_success", cc, owner);
1080 {
1081 cc.PlaySound("lock_open");
1082 }
1083 OnLockOpen(cc);
1084 foreach (Thing item in owner.things.List((Thing a) => a.Num > 10))
1085 {
1086 item.SetNum(item.Num / 10 * 8);
1087 }
1088 if (!(owner.trait is TraitChestPractice))
1089 {
1090 if (owner.isNPCProperty && cc.IsPC)
1091 {
1093 }
1094 owner.Die();
1095 }
1096 return LockOpenState.Success;
1097 }
1098 return LockOpenState.Fail;
1099 }
bool isNPCProperty
Definition: Card.cs:557
virtual void Die(Element e=null, Card origin=null, AttackSource attackSource=AttackSource.None, Chara originalTarget=null)
Definition: Card.cs:5200
SourceMaterial.Row material
Definition: Card.cs:2103
Thing Tool
Definition: Card.cs:2464
int hp
Definition: Card.cs:245
int STR
Definition: Card.cs:2387
Card GetRootCard()
Definition: Card.cs:3584
override bool IsAliveInCurrentZone
Definition: Chara.cs:567
void DamageRandomProperty(Chara cc)
Definition: Trait.cs:1101

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 1570 of file Trait.cs.

1571 {
1572 if (FindFuel(refuel: false))
1573 {
1574 FindFuel(refuel: true);
1575 }
1576 bool FindFuel(bool refuel)
1577 {
1578 int num = dest;
1579 List<Thing> list = EClass._zone.TryListThingsInSpot<TraitSpotFuel>((Thing t) => IsFuel(t));
1580 EClass.pc.things.Foreach(delegate(Thing t)
1581 {
1582 if (IsFuel(t) && t.tier == 0 && (excludes == null || !excludes.Contains(t)))
1583 {
1584 list.Add(t);
1585 }
1586 });
1587 foreach (Thing item in list)
1588 {
1589 if (num > 0)
1590 {
1591 int num2 = Mathf.Min(item.Num, Mathf.CeilToInt((float)num / (float)GetFuelValue(item)));
1592 num -= GetFuelValue(item) * num2;
1593 if (refuel)
1594 {
1595 Refuel(item.Split(num2));
1596 }
1597 }
1598 }
1599 return num <= 0;
1600 }
1601 }
void Foreach(Action< Thing > action, bool onlyAccessible=true)
bool IsFuel(string s)
Definition: Trait.cs:1515
void Refuel(Thing t)
Definition: Trait.cs:1557

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

◆ TrySetAct()

◆ TrySetHeldAct()

◆ TrySetToggleAct()

virtual void Trait.TrySetToggleAct ( ActPlan  p)
inlinevirtual

Definition at line 1427 of file Trait.cs.

1428 {
1429 if (!p.IsSelfOrNeighbor)
1430 {
1431 return;
1432 }
1433 switch (ToggleType)
1434 {
1435 case ToggleType.Lever:
1436 p.TrySetAct("ActToggleLever", delegate
1437 {
1438 Toggle(!owner.isOn);
1439 return true;
1440 }, owner);
1441 break;
1442 case ToggleType.Curtain:
1443 p.TrySetAct(owner.isOn ? "actOpen" : "actClose", delegate
1444 {
1445 Toggle(!owner.isOn);
1446 return true;
1447 }, owner);
1448 break;
1449 case ToggleType.Fire:
1450 case ToggleType.Light:
1451 case ToggleType.Electronics:
1452 {
1453 bool flag = ToggleType == ToggleType.Fire;
1454 if (EClass._zone.IsPCFaction || p.altAction || this is TraitCrafter || Electricity < 0)
1455 {
1456 if (owner.isOn)
1457 {
1458 if (p.altAction)
1459 {
1460 p.TrySetAct(flag ? "ActExtinguishTorch" : "ActToggleOff", delegate
1461 {
1462 Toggle(on: false);
1463 return true;
1464 }, owner);
1465 }
1466 }
1467 else if (!(this is TraitFactory) && !(this is TraitIncubator) && (!IsRequireFuel || owner.c_charges > 0))
1468 {
1469 p.TrySetAct(flag ? "ActTorch" : "ActToggleOn", delegate
1470 {
1471 Toggle(on: true);
1472 return true;
1473 }, owner);
1474 }
1476 {
1477 p.TrySetAct("ActFuel", delegate
1478 {
1480 return false;
1481 }, owner);
1482 }
1483 }
1484 if (p.altAction)
1485 {
1486 p.TrySetAct("disableAutoToggle".lang((owner.disableAutoToggle ? "off" : "on").lang()), delegate
1487 {
1488 owner.disableAutoToggle = !owner.disableAutoToggle;
1489 SE.Click();
1490 return true;
1491 }, owner);
1492 }
1493 break;
1494 }
1495 }
1496 }
bool altAction
Definition: ActPlan.cs:158
bool IsSelfOrNeighbor
Definition: ActPlan.cs:178
bool disableAutoToggle
Definition: Card.cs:605
virtual int MaxFuel
Definition: Trait.cs:462
virtual bool ShowFuelWindow
Definition: Trait.cs:475
bool IsPCFaction
Definition: Zone.cs:477

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 1321 of file Trait.cs.

1322 {
1323 if (!owner.IsInstalled)
1324 {
1325 return;
1326 }
1327 if (Electricity < 0 && owner.isOn && EClass._zone.electricity < 0)
1328 {
1329 Toggle(on: false, silent: true);
1330 }
1331 else if (AutoToggle)
1332 {
1333 int num = ((EClass._map.config.hour == -1) ? EClass.world.date.hour : EClass._map.config.hour);
1334 bool on = !IsNightOnlyLight || num >= 17 || num <= 5 || EClass._map.IsIndoor;
1336 {
1337 on = false;
1338 }
1339 Toggle(on, silent: true);
1340 }
1341 }
bool IsInstalled
Definition: Card.cs:2435
Cell Cell
Definition: Card.cs:2107
bool HasRoof
Definition: Cell.cs:656
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 1295 of file Trait.cs.

1296 {
1297 if (Electricity != 0)
1298 {
1299 if (owner.isOn)
1300 {
1301 Toggle(on: false, silent: true);
1302 }
1303 EClass._zone.dirtyElectricity = true;
1304 if (Electricity > 0)
1305 {
1306 EClass._zone.electricity -= Electricity;
1307 EClass.pc.PlaySound("electricity_off");
1308 }
1309 }
1310 OnUninstall();
1311 }
virtual void OnUninstall()
Definition: Trait.cs:1317

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 837 of file Trait.cs.

838 {
839 }

◆ 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 1141 of file Trait.cs.

1142 {
1143 }

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(), OnListInteraction(), TraitCard.OnListInteraction(), 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(), TraitTrolley.ShouldPlaySound(), 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 571 of file Trait.cs.

◆ AllowSell

virtual bool Trait.AllowSell
get

Definition at line 547 of file Trait.cs.

548 {
549 get
550 {
551 if (CurrencyType != CurrencyType.Money)
552 {
553 return CurrencyType == CurrencyType.None;
554 }
555 return true;
556 }
557 }

◆ 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:2157

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:2189
virtual bool IsBlockSight
Definition: TileType.cs:163
virtual bool IsBlockPass
Definition: TileType.cs:159

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

◆ CanChangeAffinity

virtual bool Trait.CanChangeAffinity
get

Definition at line 581 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(), and OnListInteraction().

◆ 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:2712

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 559 of file Trait.cs.

560 {
561 get
562 {
563 if (CurrencyType == CurrencyType.Money || CurrencyType == CurrencyType.Influence)
564 {
565 return 1;
566 }
567 return 0;
568 }
569 }

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

◆ CraftNum

virtual int Trait.CraftNum
get

◆ CurrencyType

virtual CurrencyType Trait.CurrencyType
get

Definition at line 543 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:2197

◆ 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(), and OnListInteraction().

◆ 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:2295

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 577 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 OnListInteraction(), 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:1753

Referenced by GetParam(), and GetParamInt().

◆ PriceType

virtual PriceType Trait.PriceType
get

Definition at line 545 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 579 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 573 of file Trait.cs.

◆ ShopLv

virtual int Trait.ShopLv
get

Definition at line 525 of file Trait.cs.

Referenced by CustomMerchantStock.Generate().

◆ ShopType

virtual ShopType Trait.ShopType
get

Definition at line 531 of file Trait.cs.

532 {
533 get
534 {
535 if (!owner.GetStr("merchant_override").IsEmpty())
536 {
537 return ShopType.CustomContent;
538 }
539 return ShopType.None;
540 }
541 }

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 575 of file Trait.cs.

◆ TextNextRestock

string Trait.TextNextRestock
get

Definition at line 583 of file Trait.cs.

◆ TextNextRestockPet

string Trait.TextNextRestockPet
get

Definition at line 585 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: