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

Public Types

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

Public Member Functions

string GetParam (int i, string def=null)
 
int GetParamInt (int i, int def)
 
virtual SourcePref GetPref ()
 
virtual RenderData GetRenderData ()
 
virtual bool Contains (RecipeSource r)
 
virtual int GetValue ()
 
virtual bool CanStackTo (Thing to)
 
virtual string GetHoverText ()
 
virtual Action GetHealAction (Chara c)
 
virtual bool CanBlend (Thing t)
 
virtual void OnBlend (Thing t, Chara c)
 
virtual int GetActDuration (Chara c)
 
virtual SourceElement.Row GetRefElement ()
 
virtual Sprite GetRefSprite ()
 
virtual void OnRenderExtra (RenderParam p)
 
virtual Emo2 GetHeldEmo (Chara c)
 
virtual void SetOwner (Card _owner)
 
virtual bool IdleUse (Chara c, int dist)
 
virtual void OnSetOwner ()
 
virtual void OnImportMap ()
 
virtual void SetParams (params string[] s)
 
virtual void OnCrafted (Recipe recipe, List< Thing > ings)
 
virtual void OnCreate (int lv)
 
virtual void OnEquip (Chara c, bool onSetOwner)
 
virtual void OnUnequip (Chara c)
 
virtual void OnChangePlaceState (PlaceState state)
 
virtual void OnAddedToZone ()
 
virtual void OnRemovedFromZone ()
 
virtual void OnSimulateHour (VirtualDate date)
 
virtual string GetName ()
 
virtual void SetName (ref string s)
 
virtual void OnRenderTile (Point point, HitResult result, int dir)
 
virtual 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, bool allowChara=true)
 
virtual Recipe GetRecipe ()
 
virtual Recipe GetBuildModeRecipe ()
 
virtual bool CanCook (Card c)
 
void CookProgress ()
 
virtual bool CanOffer (Chara cc, 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 OnDie ()
 
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 CurrencyType CurrencyRerollShop [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 642 of file Trait.cs.

643 {
644 return false;
645 }

Referenced by InvOwnerBlend.ShouldShowGuide().

◆ CanBuiltAt()

virtual bool Trait.CanBuiltAt ( Point  p)
inlinevirtual

Reimplemented in TraitSpotExit.

Definition at line 834 of file Trait.cs.

835 {
836 return true;
837 }

Referenced by TileType._HitTest().

◆ CanChildDecay()

virtual bool Trait.CanChildDecay ( Card  c)
inlinevirtual

Reimplemented in TraitBrewery, and TraitContainerCompost.

Definition at line 1262 of file Trait.cs.

1263 {
1264 return false;
1265 }

Referenced by Card.DecayNatural().

◆ CanCook()

virtual bool Trait.CanCook ( Card  c)
inlinevirtual

Definition at line 933 of file Trait.cs.

934 {
935 if (c == null || !ExistsOnMap || !(c.trait is TraitFood))
936 {
937 return false;
938 }
939 return true;
940 }
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 1654 of file Trait.cs.

1655 {
1656 return false;
1657 }

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

1183 {
1184 return false;
1185 }

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

1174 {
1175 return owner.HasElement(10);
1176 }
bool HasElement(int ele, bool includeNagative=false)
Definition: Card.cs:6383
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 ( Chara  cc,
Card  tg 
)
inlinevirtual

Reimplemented in TraitAltar.

Definition at line 955 of file Trait.cs.

956 {
957 if (tg == null || tg.isChara || tg.trait.CanOnlyCarry)
958 {
959 return false;
960 }
961 if (tg.rarity == Rarity.Artifact)
962 {
963 return false;
964 }
965 return true;
966 }
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 1164 of file Trait.cs.

1165 {
1166 return false;
1167 }

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

1201 {
1202 return false;
1203 }

◆ CanUse() [3/3]

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

Reimplemented in TraitPotionEmpty.

Definition at line 1205 of file Trait.cs.

1206 {
1207 return false;
1208 }

◆ CompareTo()

virtual int Trait.CompareTo ( Card  b)
inlinevirtual

Reimplemented in TraitEffect.

Definition at line 829 of file Trait.cs.

830 {
831 return 0;
832 }

Referenced by Card.SecondaryCompare().

◆ Contains()

virtual bool Trait.Contains ( RecipeSource  r)
inlinevirtual

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

Definition at line 617 of file Trait.cs.

618 {
619 return r.idFactory == ((owner.sourceCard.origin != null) ? owner.sourceCard.origin.id : owner.id);
620 }
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(), InvOwnerMod.IsValidRangedMod(), and Thing.WriteNote().

◆ CookProgress()

void Trait.CookProgress ( )
inline

Definition at line 942 of file Trait.cs.

943 {
944 if (!ExistsOnMap)
945 {
946 return;
947 }
948 foreach (Card item in owner.pos.ListCards())
949 {
950 owner.PlaySound("cook");
951 item.renderer.PlayAnime(AnimeID.Jump);
952 }
953 }
AnimeID
Definition: AnimeID.cs:2
Definition: Card.cs:11
SoundSource PlaySound(string id, float v=1f, bool spatial=true)
Definition: Card.cs:6645
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 2498 of file Trait.cs.

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

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

1110 {
1111 Thing thing = owner.things.List((Thing a) => a.category.id == "currency" || !a.IsUnique).RandomItem();
1112 if (thing != null)
1113 {
1114 if (thing.Num > 10)
1115 {
1116 thing.SetNum(thing.Num / 10 * 9);
1117 }
1118 else if (thing.Num > 1)
1119 {
1120 thing.SetNum(thing.Num - 1);
1121 }
1122 else
1123 {
1124 thing.Destroy();
1125 }
1126 cc.Say("pry_damage", cc, thing);
1127 }
1128 }
bool IsUnique
Definition: Card.cs:2143
void Destroy()
Definition: Card.cs:5314
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:7323
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 651 of file Trait.cs.

652 {
653 return 0;
654 }

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

◆ GetBuildModeRecipe()

virtual Recipe Trait.GetBuildModeRecipe ( )
inlinevirtual

Reimplemented in TraitTile.

Definition at line 928 of file Trait.cs.

929 {
930 return Recipe.Create(owner.Thing);
931 }
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 1546 of file Trait.cs.

1547 {
1548 if (ToggleType == ToggleType.Electronics)
1549 {
1550 if (id == "battery")
1551 {
1552 return 20;
1553 }
1554 }
1555 else
1556 {
1557 if (id == "log")
1558 {
1559 return 20;
1560 }
1561 if (id == "branch")
1562 {
1563 return 5;
1564 }
1565 }
1566 return 0;
1567 }
ToggleType
Definition: ToggleType.cs:2

◆ GetFuelValue() [2/2]

int Trait.GetFuelValue ( Thing  t)
inline

Definition at line 1537 of file Trait.cs.

1538 {
1539 if (t.c_isImportant)
1540 {
1541 return 0;
1542 }
1543 return GetFuelValue(t.id);
1544 }
bool c_isImportant
Definition: Card.cs:1051
int GetFuelValue(Thing t)
Definition: Trait.cs:1537

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

638 {
639 return null;
640 }

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

671 {
672 return Emo2.none;
673 }
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 632 of file Trait.cs.

633 {
634 return null;
635 }

◆ GetName()

virtual string Trait.GetName ( )
inlinevirtual

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

Definition at line 730 of file Trait.cs.

731 {
732 return owner.sourceCard.GetText();
733 }
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 598 of file Trait.cs.

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

References Params.

Referenced by TraitItemProc.OnUse().

◆ GetPoint()

Point Trait.GetPoint ( )
inline

Definition at line 843 of file Trait.cs.

844 {
845 return owner.pos;
846 }

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

608 {
609 return null;
610 }

◆ GetRandomPoint()

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

Definition at line 848 of file Trait.cs.

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

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

924 {
925 return Recipe.Create(owner.Thing);
926 }

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

657 {
658 return null;
659 }

Referenced by ButtonGrid.SetCard().

◆ GetRefSprite()

virtual Sprite Trait.GetRefSprite ( )
inlinevirtual

Reimplemented in TraitScrollStatic.

Definition at line 661 of file Trait.cs.

662 {
663 return null;
664 }

Referenced by ButtonGrid.SetCard().

◆ GetRenderData()

virtual RenderData Trait.GetRenderData ( )
inlinevirtual

Reimplemented in TraitFakeObj, and TraitFakeTile.

Definition at line 612 of file Trait.cs.

613 {
614 return null;
615 }

Referenced by CardRenderer.SetOwner().

◆ GetRestockedIcon()

Emo2 Trait.GetRestockedIcon ( )
inline

Definition at line 1682 of file Trait.cs.

1683 {
1684 if (SlaverType != SlaverType.None)
1685 {
1686 SlaverData obj = owner.GetObj<SlaverData>(5);
1687 if (obj != null && EClass.world.date.IsExpired(obj.dateRefresh))
1688 {
1689 return Emo2.restock;
1690 }
1691 }
1692 int c_dateStockExpire = owner.c_dateStockExpire;
1693 if (c_dateStockExpire != 0 && EClass.world.date.IsExpired(c_dateStockExpire))
1694 {
1695 if (ShopType == ShopType.None)
1696 {
1697 return Emo2.blessing;
1698 }
1699 return Emo2.restock;
1700 }
1701 return Emo2.none;
1702 }
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 1153 of file Trait.cs.

1154 {
1155 _ = 7;
1156 return owner.sourceCard._index;
1157 }

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

1660 {
1661 int rawDeadLine = 0;
1662 if (pet)
1663 {
1664 SlaverData obj = owner.GetObj<SlaverData>(5);
1665 if (obj != null)
1666 {
1667 rawDeadLine = obj.dateRefresh;
1668 }
1669 }
1670 else
1671 {
1672 rawDeadLine = owner.c_dateStockExpire;
1673 }
1674 int remainingHours = EClass.world.date.GetRemainingHours(rawDeadLine);
1675 if (remainingHours > 0)
1676 {
1677 return "nextRestock".lang(lang.lang(), Date.GetText(remainingHours) ?? "");
1678 }
1679 return lang.lang();
1680 }
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 681 of file Trait.cs.

682 {
683 return false;
684 }

Referenced by AI_Idle.TryPerformIdleUse().

◆ Install()

void Trait.Install ( bool  byPlayer)
inline

Definition at line 1287 of file Trait.cs.

1288 {
1289 if (Electricity != 0)
1290 {
1291 EClass._zone.dirtyElectricity = true;
1292 if (Electricity > 0)
1293 {
1294 EClass._zone.electricity += Electricity;
1295 EClass.pc.PlaySound("electricity_on");
1296 }
1297 }
1298 TryToggle();
1301 {
1302 owner.PlaySound("fire");
1303 }
1304 OnInstall(byPlayer);
1305 }
void RecalculateFOV()
Definition: Card.cs:6861
bool isOn
Definition: Card.cs:545
static Chara pc
Definition: EClass.cs:15
virtual void TryToggle()
Definition: Trait.cs:1333
virtual void OnInstall(bool byPlayer)
Definition: Trait.cs:1325
virtual int Electricity
Definition: Trait.cs:119
bool isStarted
Definition: Zone.cs:76

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

1528 {
1529 return GetFuelValue(s) > 0;
1530 }

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

◆ IsFuel() [2/2]

bool Trait.IsFuel ( Thing  t)
inline

Definition at line 1532 of file Trait.cs.

1533 {
1534 return GetFuelValue(t) > 0;
1535 }

◆ IsFuelEnough()

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

Definition at line 1510 of file Trait.cs.

1511 {
1512 if (!IsRequireFuel)
1513 {
1514 return true;
1515 }
1516 if (owner.c_charges >= FuelCost * num)
1517 {
1518 return true;
1519 }
1520 if (owner.autoRefuel)
1521 {
1522 TryRefuel(FuelCost * num - owner.c_charges, excludes);
1523 }
1524 return owner.c_charges >= FuelCost * num;
1525 }
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:1582

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,
bool  allowChara = true 
)
inlinevirtual

Reimplemented in TraitLightSun.

Definition at line 866 of file Trait.cs.

867 {
868 listRadiusPoints.Clear();
869 if (center == null)
870 {
871 center = owner.pos;
872 }
873 if (radius == 0)
874 {
875 listRadiusPoints.Add(center.Copy());
876 return listRadiusPoints;
877 }
878 Room room = center.cell.room;
879 if (room != null && CanUseRoomRadius)
880 {
881 foreach (Point point in room.points)
882 {
883 if (allowChara || !point.HasChara)
884 {
885 if (radiusType == TraitRadiusType.Farm)
886 {
887 listRadiusPoints.Add(point.Copy());
888 }
889 else if ((!onlyPassable || !point.cell.blocked) && !point.cell.HasBlock && point.cell.HasFloor)
890 {
891 listRadiusPoints.Add(point.Copy());
892 }
893 }
894 }
895 }
896 else
897 {
898 EClass._map.ForeachSphere(center.x, center.z, radius + 1, delegate(Point p)
899 {
900 if (allowChara || !p.HasChara)
901 {
902 if (radiusType == TraitRadiusType.Farm)
903 {
904 if (!p.cell.HasBlock || p.cell.HasFence)
905 {
906 listRadiusPoints.Add(p.Copy());
907 }
908 }
909 else if ((!onlyPassable || !p.cell.blocked) && !p.cell.HasBlock && p.cell.HasFloor && (!onlyPassable || Los.IsVisible(center, p)))
910 {
911 listRadiusPoints.Add(p.Copy());
912 }
913 }
914 });
915 }
916 if (listRadiusPoints.Count == 0)
917 {
918 listRadiusPoints.Add(center.Copy());
919 }
920 return listRadiusPoints;
921 }
if(!match.Success)
TraitRadiusType
PointList points
Definition: BaseArea.cs:26
Room room
Definition: Cell.cs:122
bool HasBlock
Definition: Cell.cs:687
bool HasFloor
Definition: Cell.cs:689
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:2533
Point Copy()
Definition: Point.cs:491
int x
Definition: Point.cs:36
int z
Definition: Point.cs:39
Cell cell
Definition: Point.cs:51
bool HasChara
Definition: Point.cs:238
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, Point.HasChara, Cell.HasFloor, if(), 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 990 of file Trait.cs.

991 {
992 if (!ExistsOnMap)
993 {
994 return;
995 }
996 foreach (Card item in owner.pos.ListCards())
997 {
998 if (CanOffer(cc, item))
999 {
1000 item.Destroy();
1001 cc.depression.Mod(100);
1002 owner.PlaySound("offering");
1003 }
1004 }
1005 }
Stats depression
Definition: Chara.cs:1207
virtual void Mod(int a)
Definition: Stats.cs:135
virtual bool CanOffer(Chara cc, Card tg)
Definition: Trait.cs:955

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

Referenced by AI_Offer.Run().

◆ OfferProcess()

void Trait.OfferProcess ( Chara  cc)
inline

Definition at line 968 of file Trait.cs.

969 {
970 if (!ExistsOnMap)
971 {
972 return;
973 }
975 string @ref = row.GetTextArray("name2")[1];
976 string ref2 = row.GetTextArray("name2")[0];
977 if (EClass.rnd(3) == 0)
978 {
979 cc.Talk("offer", @ref, ref2);
980 }
981 foreach (Card item in owner.pos.ListCards())
982 {
983 if (CanOffer(cc, item))
984 {
985 item.renderer.PlayAnime(AnimeID.Shiver);
986 }
987 }
988 }
string c_idDeity
Definition: Card.cs:1621
void Talk(string idTopic, string ref1=null, string ref2=null, bool forceSync=false)
Definition: Card.cs:7205
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 718 of file Trait.cs.

719 {
720 }

Referenced by Map.OnCardAddedToZone().

◆ OnBarter()

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

Reimplemented in TraitGodStatue.

Definition at line 1704 of file Trait.cs.

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

648 {
649 }

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

715 {
716 }

Referenced by Card.SetPlaceState().

◆ OnChildDecay()

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

Reimplemented in TraitBrewery.

Definition at line 1257 of file Trait.cs.

1258 {
1259 return true;
1260 }

◆ OnCrafted()

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

Reimplemented in TraitBlanket, TraitFakeTile, and TraitPotionAlchemy.

Definition at line 698 of file Trait.cs.

699 {
700 }

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

◆ OnCreate()

◆ OnDie()

virtual void Trait.OnDie ( )
inlinevirtual

Reimplemented in TraitGeneratorHamster, and TraitStrangeStatue.

Definition at line 1271 of file Trait.cs.

1272 {
1273 }

Referenced by Card.Die().

◆ OnDrink()

virtual void Trait.OnDrink ( Chara  c)
inlinevirtual

Reimplemented in TraitDrink, TraitDrinkMilkMother, TraitLumiestCrimAle, and TraitPotionEmpty.

Definition at line 1187 of file Trait.cs.

1188 {
1189 }

◆ OnEat()

virtual void Trait.OnEat ( Chara  c)
inlinevirtual

Reimplemented in TraitFortuneCookie.

Definition at line 1178 of file Trait.cs.

1179 {
1180 }

◆ OnEnterScreen()

virtual void Trait.OnEnterScreen ( )
inlinevirtual

Reimplemented in TraitToolTorch.

Definition at line 1615 of file Trait.cs.

1616 {
1618 }
virtual void RefreshRenderer()
Definition: Trait.cs:1620

Referenced by CardRenderer.OnEnterScreen().

◆ OnEquip()

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

Reimplemented in TraitEQFlower.

Definition at line 706 of file Trait.cs.

707 {
708 }

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

◆ OnHeld()

virtual void Trait.OnHeld ( )
inlinevirtual

Reimplemented in TraitDetector.

Definition at line 1241 of file Trait.cs.

1242 {
1243 }

Referenced by HotItemHeld.OnSetCurrentItem().

◆ OnImportMap()

virtual void Trait.OnImportMap ( )
inlinevirtual

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

Definition at line 690 of file Trait.cs.

691 {
692 }

Referenced by SerializedCards.Restore().

◆ OnInstall()

virtual void Trait.OnInstall ( bool  byPlayer)
inlinevirtual

Reimplemented in TraitSwitch.

Definition at line 1325 of file Trait.cs.

1326 {
1327 }

◆ OnListInteraction()

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

Reimplemented in TraitCard, and TraitLightSource.

Definition at line 754 of file Trait.cs.

755 {
756 Card card = owner;
757 Thing t = card as Thing;
758 if (t == null)
759 {
760 return;
761 }
762 if (!LayerChara.Instance)
763 {
764 if (CanRead(EClass.pc))
765 {
766 list.Add("invRead", 110, delegate
767 {
768 t.DoAct(new AI_Read
769 {
770 target = t
771 });
772 }, "remove");
773 }
774 if (CanUse(EClass.pc))
775 {
776 list.Add(LangUse, 120, delegate
777 {
778 if (OnUse(EClass.pc))
779 {
780 EClass.player.EndTurn();
781 }
782 }, "use");
783 }
784 if (CanDrink(EClass.pc))
785 {
786 list.Add("invDrink", 130, delegate
787 {
788 t.DoAct(new AI_Drink
789 {
790 target = t
791 });
792 }, "remove");
793 }
794 else if (CanEat(EClass.pc))
795 {
796 list.Add("invFood", 140, delegate
797 {
798 t.DoAct(new AI_Eat
799 {
800 cook = false,
801 target = t
802 });
803 }, "remove");
804 }
805 if (IsBlendBase)
806 {
807 list.Add("invBlend", 150, delegate
808 {
810 }, "blend");
811 }
812 }
813 if (!context || !CanName)
814 {
815 return;
816 }
817 list.Add("changeName", 200, delegate
818 {
819 Dialog.InputName("dialogChangeName", t.c_refText.IsEmpty(""), delegate(bool cancel, string text)
820 {
821 if (!cancel)
822 {
823 t.c_refText = text;
824 }
825 });
826 });
827 }
@ 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:2026
virtual bool IsBlendBase
Definition: Trait.cs:275
virtual bool CanUse(Chara c)
Definition: Trait.cs:1195
virtual bool CanRead(Chara c)
Definition: Trait.cs:1164
virtual bool CanName
Definition: Trait.cs:147
virtual bool CanEat(Chara c)
Definition: Trait.cs:1173
virtual bool OnUse(Chara c)
Definition: Trait.cs:1210
virtual string LangUse
Definition: Trait.cs:381
virtual bool CanDrink(Chara c)
Definition: Trait.cs:1182

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

1131 {
1132 owner.c_lockLv = 0;
1133 if (owner.c_lockedHard)
1134 {
1135 owner.c_lockedHard = false;
1136 owner.c_priceAdd = 0;
1137 }
1138 if (cc.IsPC && owner.isLostProperty)
1139 {
1141 }
1142 owner.isLostProperty = false;
1143 if (owner.GetBool(127))
1144 {
1145 Steam.GetAchievement(ID_Achievement.FIAMA_CHEST);
1146 }
1147 }
bool c_lockedHard
Definition: Card.cs:1063
bool isLostProperty
Definition: Card.cs:809
bool GetBool(string id)
Definition: Card.cs:2557
override bool IsPC
Definition: Chara.cs:630
void ModKarma(int a)
Definition: Player.cs:2636

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

1284 {
1285 }

Referenced by TraitDoor.TryOpen().

◆ OnRead()

◆ OnRemovedFromZone()

virtual void Trait.OnRemovedFromZone ( )
inlinevirtual

Reimplemented in TraitBoat.

Definition at line 722 of file Trait.cs.

723 {
724 }

Referenced by Map.OnCardRemovedFromZone().

◆ OnRenderExtra()

virtual void Trait.OnRenderExtra ( RenderParam  p)
inlinevirtual

Reimplemented in TraitPaintBoard, and TraitShrine.

Definition at line 666 of file Trait.cs.

667 {
668 }

Referenced by CardRenderer.Draw().

◆ OnRenderTile()

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

Reimplemented in TraitLightSun, and TraitRoadSign.

Definition at line 739 of file Trait.cs.

740 {
741 if (radius == 0)
742 {
743 return;
744 }
745 Vector3 vector = point.Position();
746 vector.z += EClass.setting.render.thingZ;
747 foreach (Point item in ListPoints(point))
748 {
749 Vector3 vector2 = item.Position();
750 EClass.screen.guide.passGuideFloor.Add(vector2.x, vector2.y, vector2.z, 10f, 0.3f);
751 }
752 }
ScreenGuide guide
static BaseGameScreen screen
Definition: EClass.cs:33
static GameSetting setting
Definition: EClass.cs:35
RenderSetting render
Definition: GameSetting.cs:346
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 1267 of file Trait.cs.

1268 {
1269 }

Referenced by ButtonGrid.SetCard().

◆ OnSetCurrentItem()

virtual void Trait.OnSetCurrentItem ( )
inlinevirtual

Reimplemented in TraitToolTorch.

Definition at line 1249 of file Trait.cs.

1250 {
1251 }

◆ OnSetOwner()

virtual void Trait.OnSetOwner ( )
inlinevirtual

Reimplemented in TraitBook.

Definition at line 686 of file Trait.cs.

687 {
688 }

Referenced by SetOwner().

◆ OnSimulateHour()

virtual void Trait.OnSimulateHour ( VirtualDate  date)
inlinevirtual

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

Definition at line 726 of file Trait.cs.

727 {
728 }

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

1276 {
1277 }

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

◆ OnSteppedOut()

virtual void Trait.OnSteppedOut ( Chara  c)
inlinevirtual

Reimplemented in TraitGeneratorWheel, and TraitSwing.

Definition at line 1279 of file Trait.cs.

1280 {
1281 }

Referenced by Chara._Move().

◆ OnThrowGround()

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

Reimplemented in TraitDrink, and TraitDye.

Definition at line 1191 of file Trait.cs.

1192 {
1193 }

Referenced by ActThrow.Throw().

◆ OnTickHeld()

virtual void Trait.OnTickHeld ( )
inlinevirtual

Reimplemented in TraitDetector.

Definition at line 1245 of file Trait.cs.

1246 {
1247 }

◆ OnToggle()

virtual void Trait.OnToggle ( )
inlinevirtual

Reimplemented in TraitJukeBox, and TraitLeverBreaker.

Definition at line 1435 of file Trait.cs.

1436 {
1437 }

◆ OnUnequip()

virtual void Trait.OnUnequip ( Chara  c)
inlinevirtual

Reimplemented in TraitEQFlower.

Definition at line 710 of file Trait.cs.

711 {
712 }

Referenced by CharaBody.Unequip().

◆ OnUninstall()

virtual void Trait.OnUninstall ( )
inlinevirtual

Definition at line 1329 of file Trait.cs.

1330 {
1331 }

◆ OnUnsetCurrentItem()

virtual void Trait.OnUnsetCurrentItem ( )
inlinevirtual

Reimplemented in TraitToolTorch.

Definition at line 1253 of file Trait.cs.

1254 {
1255 }

◆ OnUse() [1/3]

◆ OnUse() [2/3]

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

Reimplemented in TraitDye, and TraitFoodMeat.

Definition at line 1219 of file Trait.cs.

1220 {
1221 return true;
1222 }

◆ OnUse() [3/3]

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

Reimplemented in TraitPotionEmpty.

Definition at line 1224 of file Trait.cs.

1225 {
1226 return true;
1227 }

◆ PlayToggleEffect()

virtual void Trait.PlayToggleEffect ( bool  silent)
inlinevirtual

Reimplemented in TraitWoodMill.

Definition at line 1389 of file Trait.cs.

1390 {
1391 bool flag = ToggleType == ToggleType.Fire;
1392 bool isOn = owner.isOn;
1393 switch (ToggleType)
1394 {
1395 case ToggleType.Lever:
1396 if (!silent)
1397 {
1398 owner.Say("lever", EClass.pc, owner);
1399 owner.PlaySound("switch_lever");
1400 }
1401 return;
1402 case ToggleType.Curtain:
1403 if (!silent)
1404 {
1405 owner.Say(isOn ? "close" : "open", EClass.pc, owner);
1406 owner.PlaySound("Material/leather_drop");
1407 }
1410 return;
1411 case ToggleType.None:
1412 return;
1413 }
1414 if (isOn)
1415 {
1416 if (!silent)
1417 {
1418 owner.Say(flag ? "toggle_fire" : "toggle_ele", EClass.pc, owner);
1420 }
1423 }
1424 else
1425 {
1426 if (!silent)
1427 {
1429 }
1432 }
1433 }
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 1620 of file Trait.cs.

1621 {
1622 if (owner.renderer.isSynced && !IdToggleExtra.IsEmpty())
1623 {
1624 if (owner.isOn)
1625 {
1627 }
1628 else
1629 {
1631 }
1632 }
1633 }
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 1569 of file Trait.cs.

1570 {
1571 t.PlaySoundDrop(spatial: false);
1573 Msg.Say("fueled", t);
1574 if (!owner.isOn)
1575 {
1576 owner.trait.Toggle(on: true);
1577 }
1578 t.Destroy();
1580 }
void PlayAnime(AnimeID id, bool force)
void ModCharge(int a, bool destroy=false)
Definition: Card.cs:4131
void PlaySoundDrop(bool spatial=true)
Definition: Card.cs:6630
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:1355

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

1636 {
1637 if (owner.isThing && !owner.Thing.source.attackType.IsEmpty() && owner.ammoData != null)
1638 {
1639 t.SetText(owner.c_ammo.ToString() ?? "", FontColor.Charge);
1640 t.SetActive(enable: true);
1641 }
1642 else if (owner.Num == 1 && ShowCharges && owner.IsIdentified)
1643 {
1644 t.SetText(owner.c_charges.ToString() ?? "", FontColor.Charge);
1645 t.SetActive(enable: true);
1646 }
1647 else
1648 {
1649 t.SetText(owner.Num.ToShortNumber(), FontColor.ButtonGrid);
1650 t.SetActive(owner.Num > 1);
1651 }
1652 }
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:2447
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 675 of file Trait.cs.

676 {
677 owner = _owner;
678 OnSetOwner();
679 }
virtual void OnSetOwner()
Definition: Trait.cs:686

References OnSetOwner(), and owner.

Referenced by Card.ApplyTrait().

◆ SetParams()

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

Definition at line 694 of file Trait.cs.

695 {
696 }

◆ Toggle()

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

Definition at line 1355 of file Trait.cs.

1356 {
1357 if (owner.isOn == on)
1358 {
1359 return;
1360 }
1361 if (Electricity < 0)
1362 {
1363 if (on)
1364 {
1366 {
1368 {
1369 if (!silent)
1370 {
1371 owner.Say("notEnoughElectricity", owner);
1372 }
1373 owner.PlaySound("electricity_insufficient");
1374 }
1375 return;
1376 }
1377 EClass._zone.electricity += Electricity;
1378 }
1379 else
1380 {
1381 EClass._zone.electricity -= Electricity;
1382 }
1383 }
1384 owner.isOn = on;
1385 PlayToggleEffect(silent);
1386 OnToggle();
1387 }
int electricity
Definition: Spatial.cs:250
virtual void PlayToggleEffect(bool silent)
Definition: Trait.cs:1389
virtual void OnToggle()
Definition: Trait.cs:1435

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

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

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

1008 {
1009 return true;
1010 }

Referenced by AI_Read.Run().

◆ TryPryOpenLock()

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

Definition at line 1059 of file Trait.cs.

1060 {
1061 Thing tool = cc.Tool;
1062 cc.stamina.Mod(-1);
1063 Point pos = owner.GetRootCard().pos;
1065 material.PlayHitEffect(pos);
1066 material.AddBlood(pos);
1067 if (!cc.IsAliveInCurrentZone || tool == null)
1068 {
1069 return LockOpenState.Fail;
1070 }
1071 cc.ModExp(280, 20);
1072 cc.ModExp(70, 30);
1073 int a = Mathf.Clamp(20 * tool.material.hardness / material.hardness, 10, 150);
1074 owner.hp -= EClass.rnd(a);
1075 int num = (int)Mathf.Clamp(20L * (long)(owner.c_lockLv + 20) / cc.STR, 5f, 50f);
1076 if (owner.c_lockedHard)
1077 {
1078 num = num * 3 / 2;
1079 }
1080 if (EClass.rnd(100) < num)
1081 {
1083 }
1084 if (owner.hp < 0)
1085 {
1086 cc.Say("pry_success", cc, owner);
1088 {
1089 cc.PlaySound("lock_open");
1090 }
1091 OnLockOpen(cc);
1092 foreach (Thing item in owner.things.List((Thing thing) => thing.Num > 10))
1093 {
1094 item.SetNum(item.Num / 10 * 8);
1095 }
1096 if (!(owner.trait is TraitChestPractice))
1097 {
1098 if (owner.isNPCProperty && cc.IsPC)
1099 {
1101 }
1102 owner.Die();
1103 }
1104 return LockOpenState.Success;
1105 }
1106 return LockOpenState.Fail;
1107 }
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:5245
SourceMaterial.Row material
Definition: Card.cs:2103
Thing Tool
Definition: Card.cs:2480
int hp
Definition: Card.cs:245
int STR
Definition: Card.cs:2403
Card GetRootCard()
Definition: Card.cs:3607
override bool IsAliveInCurrentZone
Definition: Chara.cs:567
void DamageRandomProperty(Chara cc)
Definition: Trait.cs:1109

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

1583 {
1584 if (FindFuel(refuel: false))
1585 {
1586 FindFuel(refuel: true);
1587 }
1588 bool FindFuel(bool refuel)
1589 {
1590 int num = dest;
1591 List<Thing> list = EClass._zone.TryListThingsInSpot<TraitSpotFuel>((Thing t) => IsFuel(t));
1592 EClass.pc.things.Foreach(delegate(Thing t)
1593 {
1594 if (IsFuel(t) && t.tier == 0 && (excludes == null || !excludes.Contains(t)))
1595 {
1596 list.Add(t);
1597 }
1598 });
1599 foreach (Thing item in list)
1600 {
1601 if (num > 0)
1602 {
1603 int num2 = Mathf.Min(item.Num, Mathf.CeilToInt((float)num / (float)GetFuelValue(item)));
1604 num -= GetFuelValue(item) * num2;
1605 if (refuel)
1606 {
1607 Refuel(item.Split(num2));
1608 }
1609 }
1610 }
1611 return num <= 0;
1612 }
1613 }
void Foreach(Action< Thing > action, bool onlyAccessible=true)
bool IsFuel(string s)
Definition: Trait.cs:1527
void Refuel(Thing t)
Definition: Trait.cs:1569

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

◆ TrySetAct()

◆ TrySetHeldAct()

◆ TrySetToggleAct()

virtual void Trait.TrySetToggleAct ( ActPlan  p)
inlinevirtual

Definition at line 1439 of file Trait.cs.

1440 {
1441 if (!p.IsSelfOrNeighbor)
1442 {
1443 return;
1444 }
1445 switch (ToggleType)
1446 {
1447 case ToggleType.Lever:
1448 p.TrySetAct("ActToggleLever", delegate
1449 {
1450 Toggle(!owner.isOn);
1451 return true;
1452 }, owner);
1453 break;
1454 case ToggleType.Curtain:
1455 p.TrySetAct(owner.isOn ? "actOpen" : "actClose", delegate
1456 {
1457 Toggle(!owner.isOn);
1458 return true;
1459 }, owner);
1460 break;
1461 case ToggleType.Fire:
1462 case ToggleType.Light:
1463 case ToggleType.Electronics:
1464 {
1465 bool flag = ToggleType == ToggleType.Fire;
1466 if (EClass._zone.IsPCFaction || p.altAction || this is TraitCrafter || Electricity < 0)
1467 {
1468 if (owner.isOn)
1469 {
1470 if (p.altAction)
1471 {
1472 p.TrySetAct(flag ? "ActExtinguishTorch" : "ActToggleOff", delegate
1473 {
1474 Toggle(on: false);
1475 return true;
1476 }, owner);
1477 }
1478 }
1479 else if (!(this is TraitFactory) && !(this is TraitIncubator) && (!IsRequireFuel || owner.c_charges > 0))
1480 {
1481 p.TrySetAct(flag ? "ActTorch" : "ActToggleOn", delegate
1482 {
1483 Toggle(on: true);
1484 return true;
1485 }, owner);
1486 }
1488 {
1489 p.TrySetAct("ActFuel", delegate
1490 {
1492 return false;
1493 }, owner);
1494 }
1495 }
1496 if (p.altAction)
1497 {
1498 p.TrySetAct("disableAutoToggle".lang((owner.disableAutoToggle ? "off" : "on").lang()), delegate
1499 {
1500 owner.disableAutoToggle = !owner.disableAutoToggle;
1501 SE.Click();
1502 return true;
1503 }, owner);
1504 }
1505 break;
1506 }
1507 }
1508 }
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:480

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

1334 {
1335 if (!owner.IsInstalled)
1336 {
1337 return;
1338 }
1339 if (Electricity < 0 && owner.isOn && EClass._zone.electricity < 0)
1340 {
1341 Toggle(on: false, silent: true);
1342 }
1343 else if (AutoToggle)
1344 {
1345 int num = ((EClass._map.config.hour == -1) ? EClass.world.date.hour : EClass._map.config.hour);
1346 bool flag = !IsNightOnlyLight || num >= 17 || num <= 5 || EClass._map.IsIndoor;
1348 {
1349 flag = false;
1350 }
1351 Toggle(flag, silent: true);
1352 }
1353 }
bool IsInstalled
Definition: Card.cs:2451
Cell Cell
Definition: Card.cs:2107
bool HasRoof
Definition: Cell.cs:692
int hour
Definition: Date.cs:74
int hour
Definition: MapConfig.cs:95
bool IsIndoor
Definition: Map.cs:136
MapConfig config
Definition: Map.cs:40
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 1307 of file Trait.cs.

1308 {
1309 if (Electricity != 0)
1310 {
1311 if (owner.isOn)
1312 {
1313 Toggle(on: false, silent: true);
1314 }
1315 EClass._zone.dirtyElectricity = true;
1316 if (Electricity > 0)
1317 {
1318 EClass._zone.electricity -= Electricity;
1319 EClass.pc.PlaySound("electricity_off");
1320 }
1321 }
1322 OnUninstall();
1323 }
virtual void OnUninstall()
Definition: Trait.cs:1329

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

840 {
841 }

◆ WriteNote()

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

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

Definition at line 1149 of file Trait.cs.

1150 {
1151 }

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(), TraitGodStatue.OnBarter(), 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(), TraitGeneratorHamster.OnDie(), TraitStrangeStatue.OnDie(), 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(), TraitPowerStatue.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(), and TraitBed.ValidateOwners().

◆ SelfFactory

TraitSelfFactory Trait.SelfFactory = new TraitSelfFactory()
static

Property Documentation

◆ AllowCriminal

virtual bool Trait.AllowCriminal
get

Definition at line 573 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

◆ 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:165
virtual bool IsBlockPass
Definition: TileType.cs:161

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

◆ CanChangeAffinity

virtual bool Trait.CanChangeAffinity
get

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

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

◆ CurrencyRerollShop

virtual CurrencyType Trait.CurrencyRerollShop
get

Definition at line 571 of file Trait.cs.

◆ 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.FindSharedContainer().

◆ 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 579 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 581 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 575 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 577 of file Trait.cs.

◆ TextNextRestock

string Trait.TextNextRestock
get

Definition at line 585 of file Trait.cs.

◆ TextNextRestockPet

string Trait.TextNextRestockPet
get

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