Elin Decompiled Documentation EA 23.130 Nightly
Loading...
Searching...
No Matches
Trait Class Reference
Inheritance diagram for Trait:
EClass TraitAltar TraitAltarChaos TraitBall TraitBaseContainer TraitBath TraitBed TraitBill TraitBlanket TraitBoard TraitBoat TraitCanvas TraitChair TraitChara TraitClock TraitComputer TraitCoreDefense TraitCoreZone TraitCrafter TraitCurrency TraitCurtain TraitDoor TraitDoorBell TraitDoorBoat TraitDoorFrame TraitDreamBug TraitDresser TraitDrink TraitDye TraitEQ TraitEcoMark TraitEditorSign TraitFertilizer TraitFigure TraitFlyer TraitFood TraitFortuneBall TraitGacha TraitGene TraitGenerator 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 TraitSpot TraitSpotExit TraitSpotSearch TraitSpotSpawn TraitStairsCover TraitSwing TraitSwitch TraitSyringeGene TraitSyringeHeaven TraitThrown TraitTicketFurniture TraitTicketMassage TraitTile TraitTool TraitTorch TraitTrainingDummy TraitTravel TraitTreeEther TraitWaystone TraitWell TraitWindow TraitWrench

Public Types

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

Public Member Functions

string GetParam (int i, string def=null)
 
int GetParamInt (int i, int def)
 
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)
 
virtual void OnCreate (int lv)
 
virtual void OnEquip (Chara c, bool onSetOwner)
 
virtual void OnUnequip (Chara c)
 
virtual void OnChangePlaceState (PlaceState state)
 
virtual void OnAddedToZone ()
 
virtual void OnRemovedFromZone ()
 
virtual void OnSimulateHour (VirtualDate date)
 
virtual string GetName ()
 
virtual void SetName (ref string s)
 
virtual void OnRenderTile (Point point, HitResult result, int dir)
 
virtual int CompareTo (Card b)
 
virtual bool CanBuiltAt (Point p)
 
virtual void Update ()
 
Point GetPoint ()
 
Point GetRandomPoint (Func< Point, bool > func=null, Chara accessChara=null)
 
virtual List< PointListPoints (Point center=null, bool onlyPassable=true)
 
virtual Recipe GetRecipe ()
 
virtual Recipe GetBuildModeRecipe ()
 
virtual bool CanCook (Card c)
 
void CookProgress ()
 
virtual bool CanOffer (Card tg)
 
void OfferProcess (Chara cc)
 
void Offer (Chara cc)
 
virtual bool TryProgress (AIProgress p)
 
virtual LockOpenState TryOpenLock (Chara cc, bool msgFail=true)
 
virtual void WriteNote (UINote n, bool identified)
 
int GetSortVal (UIList.SortMode m)
 
virtual HotItem GetHotItem ()
 
virtual bool CanRead (Chara c)
 
virtual void OnRead (Chara c)
 
virtual bool CanEat (Chara c)
 
virtual void OnEat (Chara c)
 
virtual bool CanDrink (Chara c)
 
virtual void OnDrink (Chara c)
 
virtual void OnThrowGround (Chara c, Point p)
 
virtual bool CanUse (Chara c)
 
virtual bool CanUse (Chara c, Card tg)
 
virtual bool CanUse (Chara c, Point p)
 
virtual bool OnUse (Chara c)
 
virtual bool OnUse (Chara c, Card tg)
 
virtual bool OnUse (Chara c, Point p)
 
virtual void TrySetAct (ActPlan p)
 
virtual void TrySetHeldAct (ActPlan p)
 
virtual void OnHeld ()
 
virtual void OnTickHeld ()
 
virtual void OnSetCurrentItem ()
 
virtual void OnUnsetCurrentItem ()
 
virtual bool OnChildDecay (Card c, bool firstDecay)
 
virtual bool CanChildDecay (Card c)
 
virtual void OnSetCardGrid (ButtonGrid b)
 
virtual void OnStepped (Chara c)
 
virtual void OnSteppedOut (Chara c)
 
virtual void OnOpenDoor (Chara c)
 
void Install (bool byPlayer)
 
void Uninstall ()
 
virtual void OnInstall (bool byPlayer)
 
virtual void OnUninstall ()
 
virtual void TryToggle ()
 
virtual void Toggle (bool on, bool silent=false)
 
virtual void PlayToggleEffect (bool silent)
 
virtual void OnToggle ()
 
virtual void TrySetToggleAct (ActPlan p)
 
bool IsFuelEnough (int num=1, List< Thing > excludes=null, bool tryRefuel=true)
 
bool IsFuel (string s)
 
bool IsFuel (Thing t)
 
int GetFuelValue (Thing t)
 
int GetFuelValue (string id)
 
void Refuel (Thing t)
 
void TryRefuel (int dest, List< Thing > excludes)
 
virtual void OnEnterScreen ()
 
virtual void RefreshRenderer ()
 
virtual void SetMainText (UIText t, bool hotitem)
 
virtual bool CanCopy (Thing t)
 
string GetTextRestock (string lang, bool pet)
 
Emo2 GetRestockedIcon ()
 
void OnBarter ()
 
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 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 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 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 IsOn [get]
 
virtual bool IsAnimeOn [get]
 
bool IsToggle [get]
 
virtual bool AutoToggle [get]
 
bool IsLighting [get]
 
virtual bool IsLightOn [get]
 
virtual bool IsNightOnlyLight [get]
 
virtual TileMode tileMode [get]
 
virtual bool UseAltTiles [get]
 
virtual bool UseLowblock [get]
 
virtual bool UseExtra [get]
 
virtual bool UseLightColor [get]
 
virtual ? Color ColorExtra [get]
 
virtual int MaxFuel [get]
 
virtual int FuelCost [get]
 
virtual bool ShowFuelWindow [get]
 
bool IsRequireFuel [get]
 
string IdToggleExtra [get]
 
virtual ToggleType ToggleType [get]
 
virtual string IdSoundToggleOn [get]
 
virtual string IdSoundToggleOff [get]
 
virtual int ShopLv [get]
 
virtual CopyShopType CopyShop [get]
 
virtual int NumCopyItem [get]
 
virtual ShopType ShopType [get]
 
virtual CurrencyType CurrencyType [get]
 
virtual PriceType PriceType [get]
 
virtual bool AllowSell [get]
 
virtual int CostRerollShop [get]
 
virtual bool AllowCriminal [get]
 
virtual int RestockDay [get]
 
virtual SlaverType SlaverType [get]
 
virtual string LangBarter [get]
 
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 (int a)
 
static int curve (int a, int start, int step, int rate=75)
 
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 17 of file Trait.cs.

◆ TileMode

Enumerator
Default 
Door 
Illumination 
DefaultNoAnime 
SignalAnime 

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

597 {
598 return false;
599 }

Referenced by InvOwnerBlend.ShouldShowGuide().

◆ CanBuiltAt()

virtual bool Trait.CanBuiltAt ( Point  p)
inlinevirtual

Reimplemented in TraitSpotExit.

Definition at line 713 of file Trait.cs.

714 {
715 return true;
716 }

Referenced by TileType._HitTest().

◆ CanChildDecay()

virtual bool Trait.CanChildDecay ( Card  c)
inlinevirtual

Reimplemented in TraitBrewery, and TraitContainerCompost.

Definition at line 1055 of file Trait.cs.

1056 {
1057 return false;
1058 }

Referenced by Card.DecayNatural().

◆ CanCook()

virtual bool Trait.CanCook ( Card  c)
inlinevirtual

Definition at line 806 of file Trait.cs.

807 {
808 if (c == null || !ExistsOnMap || !(c.trait is TraitFood))
809 {
810 return false;
811 }
812 return true;
813 }
Trait trait
Definition: Card.cs:49
bool ExistsOnMap
Definition: Trait.cs:349

References Card.trait.

Referenced by AI_Cook.IsValidTarget().

◆ CanCopy()

virtual bool Trait.CanCopy ( Thing  t)
inlinevirtual

Reimplemented in TraitDemitas, and TraitKettle.

Definition at line 1443 of file Trait.cs.

1444 {
1445 return false;
1446 }

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

◆ CanDrink()

virtual bool Trait.CanDrink ( Chara  c)
inlinevirtual

Reimplemented in TraitDrink, and TraitPotionEmpty.

Definition at line 975 of file Trait.cs.

976 {
977 return false;
978 }

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

◆ CanEat()

virtual bool Trait.CanEat ( Chara  c)
inlinevirtual

Reimplemented in TraitFood, and TraitFoodPreparedPackage.

Definition at line 966 of file Trait.cs.

967 {
968 return owner.HasElement(10);
969 }
bool HasElement(int ele, int req=1)
Definition: Card.cs:5395
Card owner
Definition: Trait.cs:26

References Card.HasElement().

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

◆ CanOffer()

virtual bool Trait.CanOffer ( Card  tg)
inlinevirtual

Reimplemented in TraitAltar.

Definition at line 828 of file Trait.cs.

829 {
830 if (tg == null || tg.isChara || tg.trait.CanOnlyCarry)
831 {
832 return false;
833 }
834 if (tg.rarity == Rarity.Artifact)
835 {
836 return false;
837 }
838 return true;
839 }
Rarity
Definition: Rarity.cs:2
Rarity rarity
Definition: Card.cs:298
virtual bool isChara
Definition: Card.cs:1983
virtual bool CanOnlyCarry
Definition: Trait.cs:287

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, TraitBookSecret, TraitBookSkill, TraitScroll, and TraitScrollStatic.

Definition at line 957 of file Trait.cs.

958 {
959 return false;
960 }

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

◆ CanStackTo()

virtual bool Trait.CanStackTo ( Thing  to)
inlinevirtual

Reimplemented in TraitAmmo, TraitAncientbook, TraitBlueprint, TraitBook, TraitFood, TraitFoodEggFertilized, TraitGambleChest, TraitMonsterBall, TraitNote, TraitRecipe, TraitRecipeCat, TraitSalesTag, and TraitShackle.

Definition at line 581 of file Trait.cs.

582 {
583 return CanStack;
584 }
virtual bool CanStack
Definition: Trait.cs:149

References CanStack.

◆ CanUse() [1/3]

virtual bool Trait.CanUse ( Chara  c)
inlinevirtual

◆ CanUse() [2/3]

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

Reimplemented in TraitDye, and TraitFoodMeat.

Definition at line 993 of file Trait.cs.

994 {
995 return false;
996 }

◆ CanUse() [3/3]

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

Reimplemented in TraitPotionEmpty.

Definition at line 998 of file Trait.cs.

999 {
1000 return false;
1001 }

◆ CompareTo()

virtual int Trait.CompareTo ( Card  b)
inlinevirtual

Reimplemented in TraitEffect.

Definition at line 708 of file Trait.cs.

709 {
710 return 0;
711 }

Referenced by Card.SecondaryCompare().

◆ Contains()

virtual bool Trait.Contains ( RecipeSource  r)
inlinevirtual

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

Definition at line 571 of file Trait.cs.

572 {
573 return r.idFactory == ((owner.sourceCard.origin != null) ? owner.sourceCard.origin.id : owner.id);
574 }
CardRow origin
Definition: CardRow.cs:49
string id
Definition: CardRow.cs:7
string id
Definition: Card.cs:31
virtual CardRow sourceCard
Definition: Card.cs:2031

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

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

◆ CookProgress()

void Trait.CookProgress ( )
inline

Definition at line 815 of file Trait.cs.

816 {
817 if (!ExistsOnMap)
818 {
819 return;
820 }
821 foreach (Card item in owner.pos.ListCards())
822 {
823 owner.PlaySound("cook");
824 item.renderer.PlayAnime(AnimeID.Jump);
825 }
826 }
AnimeID
Definition: AnimeID.cs:2
Definition: Card.cs:11
SoundSource PlaySound(string id, float v=1f, bool spatial=true)
Definition: Card.cs:5585
Point pos
Definition: Card.cs:55
List< Card > ListCards(bool includeMasked=false)
Definition: Point.cs:1027

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

Referenced by AI_Cook.Run().

◆ CreateStock()

Thing Trait.CreateStock ( )
inline

Definition at line 2028 of file Trait.cs.

2029 {
2030 switch (ShopType)
2031 {
2032 case ShopType.Dye:
2033 {
2034 Thing thing = ThingGen.Create("dye").SetNum(15 + EClass.rnd(30));
2035 thing.ChangeMaterial(EClass.sources.materials.rows.RandomItem().alias);
2036 return thing;
2037 }
2038 case ShopType.GeneralExotic:
2039 return FromFilter("shop_generalExotic");
2040 case ShopType.VMachine:
2041 if (EClass.rnd(10) == 0)
2042 {
2043 return Create("panty");
2044 }
2045 if (EClass.rnd(5) == 0)
2046 {
2047 return Create("234");
2048 }
2049 return FromFilter("shop_drink");
2050 case ShopType.Furniture:
2051 return FromFilter("shop_furniture");
2052 case ShopType.Book:
2053 return FromFilter("shop_book");
2054 case ShopType.Magic:
2055 return FromFilter("shop_magic");
2056 case ShopType.Ecopo:
2057 {
2058 Thing thing3 = TraitSeed.MakeRandomSeed(enc: true);
2059 if (EClass.rnd(2) == 0)
2060 {
2061 TraitSeed.LevelSeed(thing3, (thing3.trait as TraitSeed).row, 1);
2062 }
2063 return thing3;
2064 }
2065 case ShopType.Healer:
2066 {
2067 Thing thing2 = null;
2068 for (int i = 0; i < 1000; i++)
2069 {
2070 thing2 = FromFilter("shop_healer");
2071 if (thing2.trait is TraitScroll { source: not null } traitScroll)
2072 {
2073 if (!(traitScroll.source.aliasParent != "WIL") && !(traitScroll.source.categorySub == "attack"))
2074 {
2075 break;
2076 }
2077 }
2078 else if (thing2.trait is TraitPotionRandom { source: not null } traitPotionRandom)
2079 {
2080 if (!(traitPotionRandom.source.aliasParent != "WIL") && !(traitPotionRandom.source.categorySub == "attack"))
2081 {
2082 thing2.SetNum(EClass.rnd(5) + 1);
2083 break;
2084 }
2085 }
2086 else if (thing2.trait is TraitRodRandom { source: not null } traitRodRandom && !(traitRodRandom.source.aliasParent != "WIL") && !(traitRodRandom.source.categorySub == "attack"))
2087 {
2088 break;
2089 }
2090 }
2091 return thing2;
2092 }
2093 case ShopType.Milk:
2094 if (EClass._zone is Zone_Nefu && EClass.rnd(2) == 0)
2095 {
2096 Thing thing4 = ThingGen.Create("milk");
2097 thing4.MakeRefFrom(EClass.sources.charas.rows.Where((SourceChara.Row r) => r.race == "mifu" || r.race == "nefu").RandomItem().model);
2098 Debug.Log(thing4);
2099 return thing4;
2100 }
2101 return Create("milk");
2102 case ShopType.Map:
2103 return ThingGen.CreateMap();
2104 case ShopType.Plan:
2105 return Create("book_plan");
2106 case ShopType.Weapon:
2107 return FromFilter("shop_weapon");
2108 case ShopType.Gun:
2109 if (EClass.rnd(8) == 0)
2110 {
2111 return Create("mod_ranged");
2112 }
2113 return FromFilter("shop_gun");
2114 case ShopType.Blackmarket:
2115 case ShopType.Exotic:
2116 {
2117 int num = 30;
2119 {
2120 num = 25;
2121 }
2123 {
2124 num = 15;
2125 }
2126 if (EClass.debug.enable)
2127 {
2128 num = 1;
2129 }
2130 CardBlueprint.SetRarity((EClass.rnd(num * 5) == 0) ? Rarity.Mythical : ((EClass.rnd(num) == 0) ? Rarity.Legendary : ((EClass.rnd(5) == 0) ? Rarity.Superior : Rarity.Normal)));
2131 return FromFilter("shop_blackmarket");
2132 }
2133 case ShopType.Drink:
2134 return FromFilter("shop_drink");
2135 case ShopType.Booze:
2136 return FromFilter("shop_booze");
2137 case ShopType.Fruit:
2138 return FromFilter("shop_fruit");
2139 case ShopType.Fish:
2140 if (EClass.rnd(2) == 0)
2141 {
2142 return Create("bait");
2143 }
2144 if (EClass.rnd(3) == 0)
2145 {
2146 return Create("fishingRod");
2147 }
2148 return FromFilter("shop_fish");
2149 case ShopType.Meat:
2150 if (EClass.rnd(5) == 0)
2151 {
2152 return Create("seasoning");
2153 }
2154 return FromFilter("shop_meat");
2155 case ShopType.Bread:
2156 if (EClass.rnd(3) == 0)
2157 {
2158 return Create("dough");
2159 }
2160 return FromFilter("shop_bread");
2161 case ShopType.Sweet:
2162 if (EClass.rnd(3) == 0)
2163 {
2164 return Create("dough");
2165 }
2166 return FromFilter("shop_sweet");
2167 case ShopType.Food:
2168 if (EClass.rnd(5) == 0)
2169 {
2170 return Create("seasoning");
2171 }
2172 return FromFilter("shop_food");
2173 case ShopType.Drug:
2174 return FromFilter("shop_drug");
2175 case ShopType.LoytelMart:
2176 {
2177 int loytelMartLv = EClass.player.flags.loytelMartLv;
2178 if (loytelMartLv >= 1)
2179 {
2180 if (EClass.rnd(10) == 0)
2181 {
2182 return Create("monsterball").SetLv(40 + EClass.rnd(ShopLv)).Thing;
2183 }
2184 if (EClass.rnd(30) == 0)
2185 {
2186 return ThingGen.Create("rp_random", -1, ShopLv + 10);
2187 }
2188 if (EClass.rnd(100) == 0)
2189 {
2190 return ThingGen.Create("map_treasure", -1, EClass.rndHalf(ShopLv));
2191 }
2192 if (EClass.rnd(40) == 0)
2193 {
2194 return Create("water").SetPriceFix(1000);
2195 }
2196 if (EClass.rnd(1000) == 0)
2197 {
2198 return Create("1165");
2199 }
2200 }
2201 if ((loytelMartLv >= 2 || EClass.debug.enable) && EClass.rnd(10) == 0)
2202 {
2203 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);
2204 switch ((from _s in row.thing.ToCharArray()
2205 where _s != ' '
2206 select _s).RandomItem())
2207 {
2208 case 'B':
2209 return ThingGen.CreateSpellbook(row.id);
2210 case 'P':
2211 return ThingGen.CreatePotion(row.id);
2212 case 'R':
2213 return ThingGen.CreateRod(row.id);
2214 case 'S':
2215 return ThingGen.CreateScroll(row.id);
2216 }
2217 }
2218 return FromFilter("shop_junk");
2219 }
2220 case ShopType.Junk:
2221 return FromFilter("shop_junk");
2222 case ShopType.Souvenir:
2223 return FromFilter("shop_souvenir");
2224 case ShopType.StrangeGirl:
2225 return DNA.GenerateGene(SpawnList.Get("chara").Select(ShopLv + 10), DNA.Type.Brain);
2226 case ShopType.Fireworks:
2227 if (EClass.rnd(3) == 0)
2228 {
2229 return Create("firework_launcher");
2230 }
2231 return Create("firework");
2232 case ShopType.Festival:
2233 if (EClass.rnd(3) == 0)
2234 {
2235 if (IsFestival("olvina"))
2236 {
2237 return Create(new string[4] { "1125", "1126", "pillow_truth", "1230" }.RandomItem());
2238 }
2239 if (IsFestival("yowyn"))
2240 {
2241 return Create(new string[3] { "hat_mushroom", "hat_witch", "hat_kumiromi" }.RandomItem());
2242 }
2243 if (IsFestival("noyel"))
2244 {
2245 return Create(new string[9] { "1127", "1128", "xmas_sled", "xmas_bigbag", "xmas_bigbox", "xmas_blackcat", "xmas_blackcat", "xmas_jure", "xmas_crown" }.RandomItem());
2246 }
2247 }
2248 if (EClass.rnd(2) == 0)
2249 {
2250 return Create(new string[4] { "1081", "1082", "1083", "1084" }.RandomItem());
2251 }
2252 if (EClass.rnd(3) == 0)
2253 {
2254 return FromFilter("shop_junk");
2255 }
2256 return FromFilter("shop_souvenir");
2257 case ShopType.Lamp:
2258 if (EClass.rnd(3) != 0)
2259 {
2260 if (IsFestival("kapul"))
2261 {
2262 return Create(new string[6] { "999", "1000", "1001", "1002", "1003", "1004" }.RandomItem());
2263 }
2264 if (IsFestival("yowyn"))
2265 {
2266 return Create(new string[2] { "1072", "1073" }.RandomItem());
2267 }
2268 if (IsFestival("noyel"))
2269 {
2270 return Create(new string[1] { "1069" }.RandomItem());
2271 }
2272 if (IsFestival("olvina"))
2273 {
2274 return Create(new string[2] { "1070", "1071" }.RandomItem());
2275 }
2276 }
2277 if (EClass._zone.IsFestival && EClass.rnd(2) == 0)
2278 {
2279 return Create(new string[4] { "953", "954", "955", "956" }.RandomItem());
2280 }
2281 return FromFilter("shop_lamp");
2282 default:
2283 if (EClass.rnd(100) == 0)
2284 {
2285 return Create("lockpick");
2286 }
2287 return FromFilter("shop_general");
2288 }
2289 Thing Create(string s)
2290 {
2291 return ThingGen.Create(s, -1, ShopLv);
2292 }
2293 Thing FromFilter(string s)
2294 {
2295 return ThingGen.CreateFromFilter(s, ShopLv);
2296 }
2297 static bool IsFestival(string id)
2298 {
2299 if (EClass._zone.id == id)
2300 {
2301 return EClass._zone.IsFestival;
2302 }
2303 return false;
2304 }
2305 }
ShopType
Definition: ShopType.cs:2
static void SetRarity(Rarity q=Rarity.Normal)
void MakeRefFrom(string id)
Definition: Card.cs:5274
Card ChangeMaterial(int idNew, bool ignoreFixedMaterial=false)
Definition: Card.cs:2887
Thing SetNum(int a)
Definition: Card.cs:3286
Thing SetPriceFix(int a)
Definition: Card.cs:6571
bool enable
Definition: CoreDebug.cs:285
Definition: DNA.cs:8
Type
Definition: DNA.cs:10
static Thing GenerateGene(Chara c, Type? type=null)
Definition: DNA.cs:104
Definition: EClass.cs:5
static int rnd(int a)
Definition: EClass.cs:58
static Zone _zone
Definition: EClass.cs:20
static SourceManager sources
Definition: EClass.cs:42
static int rndHalf(int a)
Definition: EClass.cs:82
static Player player
Definition: EClass.cs:12
static CoreDebug debug
Definition: EClass.cs:48
override bool IsCurrentZone
Definition: GuildMerchant.cs:5
override bool IsCurrentZone
Definition: GuildThief.cs:6
Definition: Guild.cs:2
static GuildMerchant Merchant
Definition: Guild.cs:29
static GuildThief Thief
Definition: Guild.cs:27
int loytelMartLv
Definition: Player.cs:534
Flags flags
Definition: Player.cs:910
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:184
static Thing CreateFromFilter(string id, int lv=-1)
Definition: ThingGen.cs:63
static Thing CreateMap(string idSource=null, int lv=-1)
Definition: ThingGen.cs:124
static Thing CreateRod(int ele)
Definition: ThingGen.cs:177
static Thing CreateSpellbook(string alias, int num=1)
Definition: ThingGen.cs:151
static Thing CreateScroll(int ele, int num=1)
Definition: ThingGen.cs:170
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:176
static void LevelSeed(Thing t, SourceObj.Row obj, int num)
Definition: TraitSeed.cs:129
virtual int ShopLv
Definition: Trait.cs:505
virtual bool IsFestival
Definition: Zone.cs:206

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.

◆ GetActDuration()

virtual int Trait.GetActDuration ( Chara  c)
inlinevirtual

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

Definition at line 605 of file Trait.cs.

606 {
607 return 0;
608 }

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

◆ GetBuildModeRecipe()

virtual Recipe Trait.GetBuildModeRecipe ( )
inlinevirtual

Reimplemented in TraitTile.

Definition at line 801 of file Trait.cs.

802 {
803 return Recipe.Create(owner.Thing);
804 }
virtual Thing Thing
Definition: Card.cs:1958
Definition: Recipe.cs:7
static Recipe Create(RecipeSource _source, int idMat=-1, Thing ing=null)
Definition: Recipe.cs:308

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

Referenced by BuildMenu.RefreshCategory().

◆ GetFuelValue() [1/2]

int Trait.GetFuelValue ( string  id)
inline

Definition at line 1335 of file Trait.cs.

1336 {
1337 if (ToggleType == ToggleType.Electronics)
1338 {
1339 if (id == "battery")
1340 {
1341 return 20;
1342 }
1343 }
1344 else
1345 {
1346 if (id == "log")
1347 {
1348 return 20;
1349 }
1350 if (id == "branch")
1351 {
1352 return 5;
1353 }
1354 }
1355 return 0;
1356 }
ToggleType
Definition: ToggleType.cs:2

◆ GetFuelValue() [2/2]

int Trait.GetFuelValue ( Thing  t)
inline

Definition at line 1326 of file Trait.cs.

1327 {
1328 if (t.c_isImportant)
1329 {
1330 return 0;
1331 }
1332 return GetFuelValue(t.id);
1333 }
bool c_isImportant
Definition: Card.cs:984
int GetFuelValue(Thing t)
Definition: Trait.cs:1326

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

592 {
593 return null;
594 }

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

625 {
626 return Emo2.none;
627 }
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 586 of file Trait.cs.

587 {
588 return null;
589 }

◆ GetName()

virtual string Trait.GetName ( )
inlinevirtual

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

Definition at line 684 of file Trait.cs.

685 {
686 return owner.sourceCard.GetText();
687 }
string GetText(string id="name", bool returnNull=false)
Definition: SourceData.cs:553

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

Referenced by Thing.GetName().

◆ GetParam()

◆ GetParamInt()

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

Definition at line 562 of file Trait.cs.

563 {
564 if (i < Params.Length)
565 {
566 return Params[i].ToInt();
567 }
568 return def;
569 }

References Params.

Referenced by TraitItemProc.OnUse().

◆ GetPoint()

Point Trait.GetPoint ( )
inline

Definition at line 722 of file Trait.cs.

723 {
724 return owner.pos;
725 }

References owner, and Card.pos.

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

◆ GetRandomPoint()

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

Definition at line 727 of file Trait.cs.

728 {
729 if (radius == 0)
730 {
731 return owner.pos;
732 }
733 List<Point> list = ListPoints();
734 for (int i = 0; i < 50; i++)
735 {
736 Point point = list.RandomItem();
737 if (point.IsValid && (func == null || func(point)) && (accessChara == null || accessChara.HasAccess(point)))
738 {
739 return point;
740 }
741 }
742 return list[0];
743 }
bool HasAccess(Card c)
Definition: Chara.cs:1094
Definition: Point.cs:9
bool IsValid
Definition: Point.cs:88
virtual int radius
Definition: Trait.cs:92
virtual List< Point > ListPoints(Point center=null, bool onlyPassable=true)
Definition: Trait.cs:745

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

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

◆ GetRecipe()

virtual Recipe Trait.GetRecipe ( )
inlinevirtual

Reimplemented in TraitTile.

Definition at line 796 of file Trait.cs.

797 {
798 return Recipe.Create(owner.Thing);
799 }

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

Referenced by HotItemHeld.OnSetCurrentItem().

◆ GetRefElement()

virtual SourceElement.Row Trait.GetRefElement ( )
inlinevirtual

Reimplemented in TraitPotionRandom, TraitRod, and TraitScroll.

Definition at line 610 of file Trait.cs.

611 {
612 return null;
613 }

Referenced by ButtonGrid.SetCard().

◆ GetRefSprite()

virtual Sprite Trait.GetRefSprite ( )
inlinevirtual

Definition at line 615 of file Trait.cs.

616 {
617 return null;
618 }

Referenced by ButtonGrid.SetCard().

◆ GetRestockedIcon()

Emo2 Trait.GetRestockedIcon ( )
inline

Definition at line 1471 of file Trait.cs.

1472 {
1473 if (SlaverType != 0)
1474 {
1475 SlaverData obj = owner.GetObj<SlaverData>(5);
1476 if (obj != null && EClass.world.date.IsExpired(obj.dateRefresh))
1477 {
1478 return Emo2.restock;
1479 }
1480 }
1481 int c_dateStockExpire = owner.c_dateStockExpire;
1482 if (c_dateStockExpire != 0 && EClass.world.date.IsExpired(c_dateStockExpire))
1483 {
1484 if (ShopType == ShopType.None)
1485 {
1486 return Emo2.blessing;
1487 }
1488 return Emo2.restock;
1489 }
1490 return Emo2.none;
1491 }
SlaverType
Definition: SlaverType.cs:2
int c_dateStockExpire
Definition: Card.cs:1193
bool IsExpired(int time)
Definition: Date.cs:332
static World world
Definition: EClass.cs:40
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 946 of file Trait.cs.

947 {
948 _ = 7;
949 return owner.sourceCard._index;
950 }

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

1449 {
1450 int rawDeadLine = 0;
1451 if (pet)
1452 {
1453 SlaverData obj = owner.GetObj<SlaverData>(5);
1454 if (obj != null)
1455 {
1456 rawDeadLine = obj.dateRefresh;
1457 }
1458 }
1459 else
1460 {
1461 rawDeadLine = owner.c_dateStockExpire;
1462 }
1463 int remainingHours = EClass.world.date.GetRemainingHours(rawDeadLine);
1464 if (remainingHours > 0)
1465 {
1466 return "nextRestock".lang(lang.lang(), Date.GetText(remainingHours) ?? "");
1467 }
1468 return lang.lang();
1469 }
Definition: Date.cs:4
string GetText(TextFormat format)
Definition: Date.cs:245
int GetRemainingHours(int rawDeadLine)
Definition: Date.cs:337

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

636 {
637 return false;
638 }

Referenced by AI_Idle.TryPerformIdleUse().

◆ Install()

void Trait.Install ( bool  byPlayer)
inline

Definition at line 1076 of file Trait.cs.

1077 {
1078 if (Electricity != 0)
1079 {
1080 EClass._zone.dirtyElectricity = true;
1081 if (Electricity > 0)
1082 {
1083 EClass._zone.electricity += Electricity;
1084 EClass.pc.PlaySound("electricity_on");
1085 }
1086 }
1087 TryToggle();
1090 {
1091 owner.PlaySound("fire");
1092 }
1093 OnInstall(byPlayer);
1094 }
void RecalculateFOV()
Definition: Card.cs:5797
bool isOn
Definition: Card.cs:514
static Chara pc
Definition: EClass.cs:14
virtual void TryToggle()
Definition: Trait.cs:1122
virtual void OnInstall(bool byPlayer)
Definition: Trait.cs:1114
virtual int Electricity
Definition: Trait.cs:101
bool isStarted
Definition: Zone.cs:70

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

1317 {
1318 return GetFuelValue(s) > 0;
1319 }

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

◆ IsFuel() [2/2]

bool Trait.IsFuel ( Thing  t)
inline

Definition at line 1321 of file Trait.cs.

1322 {
1323 return GetFuelValue(t) > 0;
1324 }

◆ IsFuelEnough()

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

Definition at line 1299 of file Trait.cs.

1300 {
1301 if (!IsRequireFuel)
1302 {
1303 return true;
1304 }
1305 if (owner.c_charges >= FuelCost * num)
1306 {
1307 return true;
1308 }
1309 if (owner.autoRefuel)
1310 {
1311 TryRefuel(FuelCost * num - owner.c_charges, excludes);
1312 }
1313 return owner.c_charges >= FuelCost * num;
1314 }
bool autoRefuel
Definition: Card.cs:598
int c_charges
Definition: Card.cs:1229
virtual int FuelCost
Definition: Trait.cs:453
bool IsRequireFuel
Definition: Trait.cs:457
void TryRefuel(int dest, List< Thing > excludes)
Definition: Trait.cs:1371

References Card.autoRefuel, and Card.c_charges.

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

◆ ListPoints()

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

Reimplemented in TraitLightSun.

Definition at line 745 of file Trait.cs.

746 {
747 listRadiusPoints.Clear();
748 if (center == null)
749 {
750 center = owner.pos;
751 }
752 if (radius == 0)
753 {
754 listRadiusPoints.Add(center.Copy());
755 return listRadiusPoints;
756 }
757 Room room = center.cell.room;
758 if (room != null && CanUseRoomRadius)
759 {
760 foreach (Point point in room.points)
761 {
762 if (radiusType == TraitRadiusType.Farm)
763 {
764 listRadiusPoints.Add(point.Copy());
765 }
766 else if ((!onlyPassable || !point.cell.blocked) && !point.cell.HasBlock && point.cell.HasFloor)
767 {
768 listRadiusPoints.Add(point.Copy());
769 }
770 }
771 }
772 else
773 {
774 EClass._map.ForeachSphere(center.x, center.z, radius + 1, delegate(Point p)
775 {
776 if (radiusType == TraitRadiusType.Farm)
777 {
778 if (!p.cell.HasBlock || p.cell.HasFence)
779 {
780 listRadiusPoints.Add(p.Copy());
781 }
782 }
783 else if ((!onlyPassable || !p.cell.blocked) && !p.cell.HasBlock && p.cell.HasFloor && (!onlyPassable || Los.IsVisible(center, p)))
784 {
785 listRadiusPoints.Add(p.Copy());
786 }
787 });
788 }
789 if (listRadiusPoints.Count == 0)
790 {
791 listRadiusPoints.Add(center.Copy());
792 }
793 return listRadiusPoints;
794 }
TraitRadiusType
PointList points
Definition: BaseArea.cs:26
Room room
Definition: Cell.cs:102
bool HasBlock
Definition: Cell.cs:643
bool HasFloor
Definition: Cell.cs:645
static Map _map
Definition: EClass.cs:18
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:2358
Point Copy()
Definition: Point.cs:479
int x
Definition: Point.cs:36
int z
Definition: Point.cs:39
Cell cell
Definition: Point.cs:51
Definition: Room.cs:4
virtual bool CanUseRoomRadius
Definition: Trait.cs:96
virtual TraitRadiusType radiusType
Definition: Trait.cs:94
static List< Point > listRadiusPoints
Definition: Trait.cs:28

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

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

◆ Offer()

void Trait.Offer ( Chara  cc)
inline

Definition at line 863 of file Trait.cs.

864 {
865 if (!ExistsOnMap)
866 {
867 return;
868 }
869 foreach (Card item in owner.pos.ListCards())
870 {
871 if (CanOffer(item))
872 {
873 item.Destroy();
874 cc.depression.Mod(100);
875 owner.PlaySound("offering");
876 }
877 }
878 }
Stats depression
Definition: Chara.cs:962
virtual void Mod(int a)
Definition: Stats.cs:135
virtual bool CanOffer(Card tg)
Definition: Trait.cs:828

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

Referenced by AI_Offer.Run().

◆ OfferProcess()

void Trait.OfferProcess ( Chara  cc)
inline

Definition at line 841 of file Trait.cs.

842 {
843 if (!ExistsOnMap)
844 {
845 return;
846 }
848 string @ref = row.GetTextArray("name2")[1];
849 string ref2 = row.GetTextArray("name2")[0];
850 if (EClass.rnd(3) == 0)
851 {
852 cc.Talk("offer", @ref, ref2);
853 }
854 foreach (Card item in owner.pos.ListCards())
855 {
856 if (CanOffer(item))
857 {
858 item.renderer.PlayAnime(AnimeID.Shiver);
859 }
860 }
861 }
string c_idDeity
Definition: Card.cs:1505
void Talk(string idTopic, string ref1=null, string ref2=null, bool forceSync=false)
Definition: Card.cs:6135
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 672 of file Trait.cs.

673 {
674 }

Referenced by Map.OnCardAddedToZone().

◆ OnBarter()

void Trait.OnBarter ( )
inline

Definition at line 1493 of file Trait.cs.

1494 {
1495 Thing t = owner.things.Find("chest_merchant");
1496 if (t == null)
1497 {
1498 t = ThingGen.Create("chest_merchant");
1499 owner.AddThing(t);
1500 }
1501 t.c_lockLv = 0;
1503 {
1504 return;
1505 }
1506 owner.c_dateStockExpire = EClass.world.date.GetRaw(24 * RestockDay);
1507 owner.isRestocking = true;
1508 t.things.DestroyAll((Thing _t) => _t.GetInt(101) != 0);
1509 foreach (Thing thing7 in t.things)
1510 {
1511 thing7.invX = -1;
1512 }
1513 switch (ShopType)
1514 {
1515 case ShopType.Plat:
1516 NoRestock(ThingGen.Create("lucky_coin").SetNum(10));
1517 NoRestock(ThingGen.CreateSkillbook(6662));
1518 NoRestock(ThingGen.CreateSkillbook(6664));
1519 break;
1520 case ShopType.Copy:
1521 {
1522 Thing c_copyContainer = owner.c_copyContainer;
1523 if (c_copyContainer == null)
1524 {
1525 break;
1526 }
1527 int num3 = 0;
1528 foreach (Thing thing8 in c_copyContainer.things)
1529 {
1530 if (!owner.trait.CanCopy(thing8))
1531 {
1532 continue;
1533 }
1534 Thing thing4 = thing8.Duplicate(1);
1535 thing4.isStolen = false;
1536 thing4.isCopy = true;
1537 thing4.c_priceFix = 0;
1538 foreach (Element item in thing4.elements.dict.Values.Where((Element e) => e.HasTag("noInherit")).ToList())
1539 {
1540 thing4.elements.Remove(item.id);
1541 }
1542 int num4 = 1;
1543 switch (owner.trait.CopyShop)
1544 {
1545 case CopyShopType.Item:
1546 {
1547 num4 = (1000 + owner.c_invest * 100) / (thing4.GetPrice(CurrencyType.Money, sell: false, PriceType.CopyShop) + 50);
1548 int[] array = new int[4] { 701, 704, 703, 702 };
1549 foreach (int ele in array)
1550 {
1551 if (thing4.HasElement(ele))
1552 {
1553 num4 = 1;
1554 }
1555 }
1556 break;
1557 }
1558 case CopyShopType.Spellbook:
1559 thing4.c_charges = thing8.c_charges;
1560 break;
1561 }
1562 if (num4 > 1 && thing4.trait.CanStack)
1563 {
1564 thing4.SetNum(num4);
1565 }
1566 AddThing(thing4);
1567 num3++;
1568 if (num3 > owner.trait.NumCopyItem)
1569 {
1570 break;
1571 }
1572 }
1573 break;
1574 }
1575 case ShopType.Specific:
1576 {
1577 string id2 = owner.id;
1578 if (!(id2 == "mogu"))
1579 {
1580 if (!(id2 == "felmera"))
1581 {
1582 break;
1583 }
1584 foreach (Thing item2 in new DramaOutcome().ListFelmeraBarter())
1585 {
1586 AddThing(item2);
1587 }
1588 }
1589 else
1590 {
1591 AddThing(ThingGen.Create("casino_coin").SetNum(5000));
1592 }
1593 break;
1594 }
1595 case ShopType.Deed:
1596 Add("deed", 1, 0);
1597 Add("deed_move", 2 + EClass.rnd(5), 0);
1598 Add("license_illumination", 1, 0);
1599 Add("license_void", 1, 0);
1600 Add("license_adv", 1, 0);
1601 break;
1602 case ShopType.RedBook:
1603 {
1604 for (int l = 0; l < 30; l++)
1605 {
1606 AddThing(ThingGen.CreateFromCategory("book"));
1607 }
1608 break;
1609 }
1610 case ShopType.Seed:
1611 {
1612 AddThing(TraitSeed.MakeSeed("rice")).SetNum(4 + EClass.rnd(4));
1613 AddThing(TraitSeed.MakeSeed("cabbage")).SetNum(4 + EClass.rnd(4));
1614 AddThing(TraitSeed.MakeSeed("carrot")).SetNum(4 + EClass.rnd(4));
1615 AddThing(TraitSeed.MakeSeed("potato")).SetNum(4 + EClass.rnd(4));
1616 AddThing(TraitSeed.MakeSeed("corn")).SetNum(4 + EClass.rnd(4));
1617 for (int n = 0; n < EClass.rnd(3) + 1; n++)
1618 {
1619 Add("462", 1, 0);
1620 }
1621 for (int num5 = 0; num5 < EClass.rnd(3) + 1; num5++)
1622 {
1623 Add("1167", 1, 0);
1624 }
1625 break;
1626 }
1627 case ShopType.Loytel:
1628 Add("board_map", 1, 0);
1629 Add("board_build", 1, 0);
1630 Add("book_resident", 1, 0);
1631 Add("3", 1, 0);
1632 Add("4", 1, 0);
1633 Add("5", 1, 0);
1634 AddThing(ThingGen.CreatePlan(2512));
1635 AddThing(ThingGen.CreatePlan(2810));
1636 NoRestock(ThingGen.Create("rp_block").SetLv(1).SetNum(10));
1637 if (EClass.game.quests.GetPhase<QuestVernis>() >= 3)
1638 {
1639 NoRestock(ThingGen.CreateRecipe("explosive"));
1640 }
1641 break;
1642 case ShopType.Starter:
1643 case ShopType.StarterEx:
1644 Add("board_home", 1, 0);
1645 Add("board_resident", 1, 0);
1646 Add("1", 1, 0);
1647 Add("2", 1, 0);
1648 if (ShopType == ShopType.StarterEx)
1649 {
1650 Add("board_expedition", 1, 0);
1651 Add("mailpost", 1, 0);
1652 Add("record", 1, 0);
1653 Add("tent2", 1, 0);
1654 Add("tent1", 1, 0);
1655 Add("wagon1", 1, 0);
1656 Add("wagon_big", 1, 0);
1657 Add("wagon_big2", 1, 0);
1658 Add("wagon_big3", 1, 0);
1659 Add("wagon_big4", 1, 0);
1660 Add("wagon_big5", 1, 0);
1661 Add("teleporter", 1, 0);
1662 Add("teleporter2", 1, 0);
1663 Add("recharger", 1, 0);
1664 Add("machine_gene2", 1, 0);
1665 NoRestock(ThingGen.CreateRecipe("torch_wall"));
1666 NoRestock(ThingGen.CreateRecipe("factory_sign"));
1667 NoRestock(ThingGen.CreateRecipe("beehive"));
1668 NoRestock(ThingGen.Create("rp_food").SetNum(5).SetLv(10)
1669 .Thing);
1670 }
1671 else
1672 {
1673 AddThing(ThingGen.CreatePlan(2119));
1674 NoRestock(ThingGen.Create("rp_food").SetNum(5).SetLv(5)
1675 .Thing);
1676 }
1677 break;
1678 case ShopType.Farris:
1679 AddThing(ThingGen.CreateScroll(8220, 4 + EClass.rnd(6)));
1680 AddThing(ThingGen.CreateScroll(8221, 4 + EClass.rnd(6)));
1681 Add("drawing_paper", 10, 0);
1682 Add("drawing_paper2", 10, 0);
1683 Add("stethoscope", 1, 0);
1684 Add("whip_love", 1, 0);
1685 Add("whip_interest", 1, 0);
1686 break;
1687 case ShopType.Guild:
1688 if (this is TraitClerk_Merchant)
1689 {
1690 Add("flyer", 1, 0).SetNum(99);
1691 }
1692 break;
1693 case ShopType.Influence:
1694 {
1695 bool num2 = owner.id == "big_sister";
1696 TraitTicketFurniture.SetZone(num2 ? EClass.game.spatials.Find("little_garden") : EClass._zone, Add("ticket_furniture", 1, 0).SetNum(99));
1697 if (num2)
1698 {
1699 Add("littleball", 10, 0);
1700 break;
1701 }
1702 for (int k = 0; k < 10; k++)
1703 {
1704 Thing thing3 = ThingGen.Create(EClass._zone.IsFestival ? "1123" : ((EClass.rnd(3) == 0) ? "1169" : "1160"));
1705 thing3.DyeRandom();
1706 AddThing(thing3);
1707 }
1708 break;
1709 }
1710 case ShopType.Casino:
1711 {
1712 Add("chest_tax", 1, 0);
1713 Add("1165", 1, 0);
1714 Add("monsterball", 1, 0).SetNum(3).SetLv(10);
1715 Add("1175", 1, 0);
1716 Add("1176", 1, 0);
1717 Add("pillow_ehekatl", 1, 0);
1718 Add("grave_dagger1", 1, 0);
1719 Add("grave_dagger2", 1, 0);
1720 Add("434", 1, 0);
1721 Add("433", 1, 0);
1722 Add("714", 1, 0);
1723 Add("1017", 1, 0);
1724 Add("1155", 1, 0);
1725 Add("1011", 1, 0);
1726 AddThing(ThingGen.CreatePerfume(9500, 5));
1727 AddThing(ThingGen.CreatePerfume(9501, 5));
1728 AddThing(ThingGen.CreatePerfume(9502, 5));
1729 AddThing(ThingGen.CreatePerfume(9503, 5));
1730 for (int j = 0; j < 5; j++)
1731 {
1732 Thing thing2 = ThingGen.CreateFromCategory("seasoning").SetNum(10);
1733 thing2.elements.SetBase(2, 40);
1734 thing2.c_priceFix = 1000;
1735 AddThing(thing2);
1736 }
1737 break;
1738 }
1739 case ShopType.Medal:
1740 NoRestock(ThingGen.Create("sword_dragon"));
1741 Add("sword_dragon", 1, 0).SetReplica(on: true);
1742 NoRestock(ThingGen.Create("axe_destruction"));
1743 Add("axe_destruction", 1, 0).SetReplica(on: true);
1744 NoRestock(ThingGen.Create("blunt_bonehammer"));
1745 Add("blunt_bonehammer", 1, 0).SetReplica(on: true);
1746 NoRestock(ThingGen.Create("pole_gunlance"));
1747 Add("pole_gunlance", 1, 0).SetReplica(on: true);
1748 NoRestock(ThingGen.Create("sword_muramasa"));
1749 Add("sword_muramasa", 1, 0).SetReplica(on: true);
1750 NoRestock(ThingGen.Create("sword_forgetmenot"));
1751 Add("sword_forgetmenot", 1, 0).SetReplica(on: true);
1752 NoRestock(ThingGen.Create("dagger_fish"));
1753 Add("dagger_fish", 1, 0).SetReplica(on: true);
1754 NoRestock(ThingGen.Create("sword_zephir"));
1755 Add("sword_zephir", 1, 0).SetReplica(on: true);
1756 Add("ribbon", 1, 0);
1757 Add("helm_sage", 1, 0);
1758 Add("diary_sister", 1, 0);
1759 Add("diary_catsister", 1, 0);
1760 Add("diary_lady", 1, 0);
1761 Add("1165", 1, 0).SetNum(5);
1762 AddThing(ThingGen.CreateScroll(9160).SetNum(5));
1763 Add("monsterball", 1, 0).SetNum(3).SetLv(20);
1764 Add("monsterball", 1, 0).SetNum(3).SetLv(40);
1765 Add("bill_tax", 1, 0).c_bill = 1;
1766 Add("bill_tax", 1, 0).c_bill = 1;
1767 Add("bill_tax", 1, 0).c_bill = 1;
1768 Add("container_magic", 1, 0);
1769 Add("container_magic", 1, 0).ChangeMaterial("iron").idSkin = 1;
1770 Add("container_magic", 1, 0).ChangeMaterial("bamboo").idSkin = 2;
1771 Add("container_magic", 1, 0).ChangeMaterial("feywood").idSkin = 3;
1772 Add("wrench_tent_elec", 1, 0);
1773 Add("wrench_tent_soil", 1, 0);
1774 Add("wrench_bed", 1, 0).SetNum(20);
1775 Add("wrench_storage", 1, 0).SetNum(10);
1776 Add("wrench_fridge", 1, 0).SetNum(1);
1777 Add("wrench_extend_v", 1, 0).SetNum(2);
1778 Add("wrench_extend_h", 1, 0).SetNum(2);
1779 break;
1780 default:
1781 {
1782 float num = (float)(3 + Mathf.Min(ShopLv / 5, 10)) + Mathf.Sqrt(ShopLv);
1783 num = num * (float)(100 + EClass.pc.Evalue(1406) * 5) / 100f;
1784 num = Mathf.Min(num, 300f);
1785 for (int i = 0; (float)i < num; i++)
1786 {
1787 Thing thing = CreateStock();
1788 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)
1789 {
1790 t.AddThing(thing);
1791 }
1792 }
1793 break;
1794 }
1795 }
1796 foreach (RecipeSource item3 in RecipeManager.list)
1797 {
1798 if (item3.row.recipeKey.IsEmpty())
1799 {
1800 continue;
1801 }
1802 string[] recipeKey = item3.row.recipeKey;
1803 for (int m = 0; m < recipeKey.Length; m++)
1804 {
1805 if (recipeKey[m] == ShopType.ToString())
1806 {
1807 NoRestock(ThingGen.CreateRecipe(item3.id));
1808 break;
1809 }
1810 }
1811 }
1812 switch (ShopType)
1813 {
1814 case ShopType.StrangeGirl:
1815 {
1816 int num8 = (EClass.debug.enable ? 20 : (EClass._zone.development / 10));
1817 if (num8 > 0)
1818 {
1819 Add("syringe_gene", num8, 0);
1820 Add("diary_little", 1, 0);
1821 }
1822 if (num8 > 10)
1823 {
1824 Add("syringe_heaven", num8 / 5, 0);
1825 }
1826 break;
1827 }
1828 case ShopType.GeneralExotic:
1829 Add("tool_talisman", 1, 0);
1830 break;
1831 case ShopType.Healer:
1832 AddThing(ThingGen.CreatePotion(8400).SetNum(4 + EClass.rnd(6)));
1833 AddThing(ThingGen.CreatePotion(8401).SetNum(2 + EClass.rnd(4)));
1834 AddThing(ThingGen.CreatePotion(8402).SetNum(1 + EClass.rnd(3)));
1835 break;
1836 case ShopType.Food:
1837 Add("ration", 2 + EClass.rnd(4), 0);
1838 break;
1839 case ShopType.Ecopo:
1840 Add("ecomark", 5, 0);
1841 Add("1165", 1, 0);
1842 Add("plat", 100, 0);
1843 AddThing(ThingGen.CreateScroll(9160).SetNum(5));
1844 break;
1845 case ShopType.Gun:
1846 Add("bullet", 1, 0).SetNum(300 + EClass.rnd(100)).ChangeMaterial("iron");
1847 Add("bullet_energy", 1, 0).SetNum(100 + EClass.rnd(100)).ChangeMaterial("iron");
1848 break;
1849 case ShopType.Magic:
1850 if ((EClass._zone.id == "lumiest" && EClass._zone.lv == 0) || (EClass._zone.id != "lumiest" && EClass.rnd(4) == 0))
1851 {
1852 t.AddThing(ThingGen.Create("letter_trial"));
1853 }
1854 break;
1855 case ShopType.Festival:
1857 {
1858 Add("1085", 1, 0);
1859 if (EClass._zone.id == "noyel")
1860 {
1861 Add("holyFeather", 1, 0);
1862 }
1863 }
1864 break;
1865 case ShopType.Junk:
1866 case ShopType.LoytelMart:
1867 {
1868 if (ShopType == ShopType.LoytelMart)
1869 {
1870 Add("ticket_massage", 1, 0);
1871 Add("ticket_armpillow", 1, 0);
1872 Add("ticket_champagne", 1, 0);
1873 }
1874 for (int num6 = 0; num6 < 3; num6++)
1875 {
1876 if (EClass.rnd(5) == 0)
1877 {
1878 TreasureType treasureType = ((EClass.rnd(10) == 0) ? TreasureType.BossNefia : ((EClass.rnd(10) == 0) ? TreasureType.Map : TreasureType.RandomChest));
1879 int num7 = EClass.rnd(EClass.rnd(ShopLv + (EClass.debug.enable ? 200 : 50)) + 1) + 1;
1880 Thing thing5 = ThingGen.Create(treasureType switch
1881 {
1882 TreasureType.Map => "chest_treasure",
1883 TreasureType.BossNefia => "chest_boss",
1884 _ => "chest3",
1885 });
1886 thing5.c_lockedHard = true;
1887 thing5.c_lockLv = num7;
1888 thing5.c_priceAdd = 2000 + num7 * 250 * ((treasureType == TreasureType.RandomChest) ? 1 : 5);
1889 thing5.c_revealLock = true;
1890 ThingGen.CreateTreasureContent(thing5, num7, treasureType, clearContent: true);
1891 AddThing(thing5);
1892 }
1893 }
1894 break;
1895 }
1896 }
1897 ShopType shopType = ShopType;
1898 if (shopType == ShopType.General || shopType == ShopType.Food)
1899 {
1900 for (int num9 = 0; num9 < (EClass.debug.enable ? 3 : 3); num9++)
1901 {
1902 if (EClass.rnd(3) == 0)
1903 {
1904 int lv = EClass.rnd(EClass.rnd(ShopLv + (EClass.debug.enable ? 200 : 50)) + 1) + 1;
1905 Thing t2 = ThingGen.Create("chest_gamble", -1, lv).SetNum(1 + EClass.rnd(20));
1906 AddThing(t2);
1907 }
1908 }
1909 }
1910 switch (owner.id)
1911 {
1912 case "rodwyn":
1913 AddThing(ThingGen.CreateSpellbook(8790));
1914 AddThing(ThingGen.CreatePotion(8791).SetNum(3 + EClass.rnd(3)));
1915 break;
1916 case "girl_blue":
1917 Add("779", 1 + EClass.rnd(3), 0);
1918 break;
1919 case "nola":
1920 AddThing(ThingGen.CreateRecipe("ic").SetPriceFix(400));
1921 AddThing(ThingGen.CreateRecipe("bullet").SetPriceFix(300));
1922 AddThing(ThingGen.CreateRecipe("break_powder").SetPriceFix(1000));
1923 AddThing(ThingGen.CreateRecipe("quarrel").SetPriceFix(100));
1924 AddThing(ThingGen.CreateRecipe("1099").SetPriceFix(400));
1925 AddThing(ThingGen.CreateRecipe("detector").SetPriceFix(700));
1926 AddThing(ThingGen.CreatePlan(2710)).SetPriceFix(-100);
1927 AddThing(ThingGen.CreatePlan(2711)).SetPriceFix(-100);
1928 AddThing(ThingGen.CreatePlan(2712)).SetPriceFix(200);
1929 break;
1930 }
1932 {
1933 Add("lockpick", 1, 0);
1934 if (EClass.rnd(2) == 0)
1935 {
1936 Add("lockpick", 1, 0);
1937 }
1938 AddThing(ThingGen.CreateScroll(8780, EClass.rndHalf(5)));
1939 }
1940 foreach (Thing thing9 in t.things)
1941 {
1942 thing9.c_idBacker = 0;
1943 if (ShopType != ShopType.Copy)
1944 {
1945 thing9.TryMakeRandomItem(ShopLv);
1946 if (thing9.Num == 1)
1947 {
1948 thing9.SetNum(thing9.trait.DefaultStock);
1949 }
1950 if (thing9.trait is TraitFoodMeal)
1951 {
1953 }
1954 if (thing9.IsFood && owner.id == "rodwyn")
1955 {
1956 SourceElement.Row row = EClass.sources.elements.rows.Where((SourceElement.Row e) => !e.foodEffect.IsEmpty() && e.category != "feat" && e.chance > 0).RandomItem();
1957 thing9.elements.SetBase(row.id, 10 + EClass.rnd(10));
1958 }
1959 }
1960 if (CurrencyType == CurrencyType.Casino_coin)
1961 {
1962 thing9.noSell = true;
1963 }
1965 {
1966 thing9.isStolen = true;
1967 }
1968 if (!(thing9.trait is TraitErohon))
1969 {
1970 thing9.c_IDTState = 0;
1971 }
1972 if (CurrencyType == CurrencyType.Money && (thing9.category.IsChildOf("meal") || thing9.category.IsChildOf("preserved")) && thing9.id != "ration")
1973 {
1974 thing9.c_priceFix = -70;
1975 }
1976 if (thing9.trait is TraitErohon)
1977 {
1978 thing9.c_IDTState = 5;
1979 }
1980 if (thing9.IsContainer && !thing9.c_revealLock)
1981 {
1982 thing9.RemoveThings();
1983 t.c_lockLv = 0;
1984 }
1985 }
1986 if (t.things.Count <= t.things.GridSize)
1987 {
1988 return;
1989 }
1990 int num10 = t.things.width * 10;
1991 if (t.things.Count > num10)
1992 {
1993 int num11 = t.things.Count - num10;
1994 for (int num12 = 0; num12 < num11; num12++)
1995 {
1996 t.things.LastItem().Destroy();
1997 }
1998 }
1999 t.things.ChangeSize(t.things.width, Mathf.Min(t.things.Count / t.things.width + 1, 10));
2000 Thing Add(string id, int a, int idSkin)
2001 {
2003 Thing thing6 = ThingGen.Create(id, -1, ShopLv).SetNum(a);
2004 thing6.idSkin = idSkin;
2005 return t.AddThing(thing6);
2006 }
2007 Thing AddThing(Thing _t)
2008 {
2009 return t.AddThing(_t);
2010 }
2011 void NoRestock(Thing _t)
2012 {
2013 HashSet<string> hashSet = EClass.player.noRestocks.TryGetValue(owner.id);
2014 if (hashSet == null)
2015 {
2016 hashSet = new HashSet<string>();
2017 }
2018 if (!hashSet.Contains(_t.trait.IdNoRestock))
2019 {
2020 hashSet.Add(_t.trait.IdNoRestock);
2021 EClass.player.noRestocks[owner.id] = hashSet;
2022 _t.SetInt(101, 1);
2023 AddThing(_t);
2024 }
2025 }
2026 }
CurrencyType
Definition: CurrencyType.cs:2
PriceType
Definition: PriceType.cs:2
TreasureType
Definition: TreasureType.cs:2
list. Add(item3)
int GetInt(int id, int? defaultInt=null)
Definition: BaseCard.cs:25
void SetInt(int id, int value=0)
Definition: BaseCard.cs:39
static void SetNormalRarity(bool fixedMat=false)
virtual Chara Chara
Definition: Card.cs:1970
ElementContainerCard elements
Definition: Card.cs:37
virtual int GetPrice(CurrencyType currency=CurrencyType.Money, bool sell=false, PriceType priceType=PriceType.Default, Chara c=null)
Definition: Card.cs:6676
Thing AddThing(string id, int lv=-1)
Definition: Card.cs:2950
Card SetLv(int a)
Definition: Card.cs:2784
bool c_revealLock
Definition: Card.cs:1008
bool IsFood
Definition: Card.cs:2075
void DyeRandom()
Definition: Card.cs:5443
ThingContainer things
Definition: Card.cs:34
int Evalue(int ele)
Definition: Card.cs:2471
Thing TryMakeRandomItem(int lv=-1)
Definition: Card.cs:5030
Thing Duplicate(int num)
Definition: Card.cs:3235
Thing c_copyContainer
Definition: Card.cs:1733
int Num
Definition: Card.cs:154
SourceCategory.Row category
Definition: Card.cs:1949
bool IsContainer
Definition: Card.cs:1989
void RemoveThings()
Definition: Card.cs:3101
static void MakeDish(Thing food, int lv, Chara crafter=null)
Definition: CraftUtil.cs:55
int GetRaw(int offsetHours=0)
Definition: Date.cs:322
static Game game
Definition: EClass.cs:8
Dictionary< int, Element > dict
Element SetBase(string alias, int v, int potential=0)
void Remove(int id)
bool HasTag(string tag)
Definition: ELEMENT.cs:469
SpatialManager spatials
Definition: Game.cs:152
QuestManager quests
Definition: Game.cs:179
Dictionary< string, HashSet< string > > noRestocks
Definition: Player.cs:943
static List< RecipeSource > list
Definition: RecipeManager.cs:9
RenderRow row
Definition: RecipeSource.cs:5
string[] recipeKey
Definition: RenderRow.cs:56
Zone Find(string id)
int lv
Definition: Spatial.cs:142
void DestroyAll(Func< Thing, bool > funcExclude=null)
Thing Find(int uid)
void ChangeSize(int w, int h)
static Thing CreatePerfume(int ele, int num=1)
Definition: ThingGen.cs:191
static void CreateTreasureContent(Thing t, int lv, TreasureType type, bool clearContent)
Definition: ThingGen.cs:224
static Thing CreatePlan(int ele)
Definition: ThingGen.cs:137
static Thing CreateRecipe(string id)
Definition: ThingGen.cs:144
static Thing CreateSkillbook(int ele, int num=1)
Definition: ThingGen.cs:163
static Thing CreateFromCategory(string idCat, int lv=-1)
Definition: ThingGen.cs:75
static Thing MakeSeed(SourceObj.Row obj, PlantData plant=null)
Definition: TraitSeed.cs:77
static void SetZone(Zone zone, Thing t)
virtual CopyShopType CopyShop
Definition: Trait.cs:507
Thing CreateStock()
Definition: Trait.cs:2028
virtual int RestockDay
Definition: Trait.cs:543
virtual string IdNoRestock
Definition: Trait.cs:355
virtual bool IsNoShop
Definition: Trait.cs:64
virtual ShopType ShopType
Definition: Trait.cs:511
virtual int DefaultStock
Definition: Trait.cs:127
virtual bool CanCopy(Thing t)
Definition: Trait.cs:1443
CopyShopType
Definition: Trait.cs:18
virtual int NumCopyItem
Definition: Trait.cs:509

References EClass._zone, Add(), Card.AddThing(), Card.c_charges, Card.c_copyContainer, Card.c_dateStockExpire, Card.c_revealLock, CanCopy(), Card.category, Card.Chara, CopyShop, ThingGen.Create(), ThingGen.CreateFromCategory(), ThingGen.CreatePerfume(), ThingGen.CreatePlan(), ThingGen.CreatePotion(), ThingGen.CreateRecipe(), 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, BaseCard.GetInt(), Card.GetPrice(), Date.GetRaw(), Element.HasTag(), Card.id, RecipeSource.id, SourceElement.Row.id, Spatial.id, IdNoRestock, Card.IsContainer, GuildThief.IsCurrentZone, Date.IsExpired(), Zone.IsFestival, Card.IsFood, IsNoShop, item, RecipeManager.list, Player.Flags.loytelMartLv, Spatial.lv, CraftUtil.MakeDish(), TraitSeed.MakeSeed(), Player.noRestocks, Card.Num, NumCopyItem, EClass.pc, EClass.player, Game.quests, RenderRow.recipeKey, ElementContainer.Remove(), Card.RemoveThings(), EClass.rnd(), EClass.rndHalf(), RecipeSource.row, ElementContainer.SetBase(), BaseCard.SetInt(), Card.SetLv(), CardBlueprint.SetNormalRarity(), Card.SetNum(), Card.SetPriceFix(), TraitTicketFurniture.SetZone(), EClass.sources, Game.spatials, Guild.Thief, Card.Thing, Card.things, Card.trait, Card.TryMakeRandomItem(), and EClass.world.

Referenced by TraitVendingMachine.OnUse().

◆ OnBlend()

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

Reimplemented in TraitDreamBug, TraitDrink, TraitDye, and TraitWell.

Definition at line 601 of file Trait.cs.

602 {
603 }

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

669 {
670 }

Referenced by Card.SetPlaceState().

◆ OnChildDecay()

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

Reimplemented in TraitBrewery.

Definition at line 1050 of file Trait.cs.

1051 {
1052 return true;
1053 }

◆ OnCrafted()

virtual void Trait.OnCrafted ( Recipe  recipe)
inlinevirtual

Reimplemented in TraitBlanket, and TraitPotionAlchemy.

Definition at line 652 of file Trait.cs.

653 {
654 }

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

◆ OnCreate()

◆ OnDrink()

virtual void Trait.OnDrink ( Chara  c)
inlinevirtual

Reimplemented in TraitDrink, TraitDrinkMilkMother, and TraitPotionEmpty.

Definition at line 980 of file Trait.cs.

981 {
982 }

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

◆ OnEat()

virtual void Trait.OnEat ( Chara  c)
inlinevirtual

Reimplemented in TraitFortuneCookie.

Definition at line 971 of file Trait.cs.

972 {
973 }

◆ OnEnterScreen()

virtual void Trait.OnEnterScreen ( )
inlinevirtual

Reimplemented in TraitToolTorch.

Definition at line 1404 of file Trait.cs.

1405 {
1407 }
virtual void RefreshRenderer()
Definition: Trait.cs:1409

Referenced by CardRenderer.OnEnterScreen().

◆ OnEquip()

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

Reimplemented in TraitEQFlower.

Definition at line 660 of file Trait.cs.

661 {
662 }

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

◆ OnHeld()

virtual void Trait.OnHeld ( )
inlinevirtual

Reimplemented in TraitDetector.

Definition at line 1034 of file Trait.cs.

1035 {
1036 }

Referenced by HotItemHeld.OnSetCurrentItem().

◆ OnImportMap()

virtual void Trait.OnImportMap ( )
inlinevirtual

Reimplemented in TraitAltar, TraitBook, TraitNewZone, and TraitNote.

Definition at line 644 of file Trait.cs.

645 {
646 }

Referenced by SerializedCards.Restore().

◆ OnInstall()

virtual void Trait.OnInstall ( bool  byPlayer)
inlinevirtual

Reimplemented in TraitSwitch.

Definition at line 1114 of file Trait.cs.

1115 {
1116 }

◆ OnOpenDoor()

virtual void Trait.OnOpenDoor ( Chara  c)
inlinevirtual

Reimplemented in TraitDoorBell.

Definition at line 1072 of file Trait.cs.

1073 {
1074 }

Referenced by TraitDoor.TryOpen().

◆ OnRead()

◆ OnRemovedFromZone()

virtual void Trait.OnRemovedFromZone ( )
inlinevirtual

Reimplemented in TraitBoat.

Definition at line 676 of file Trait.cs.

677 {
678 }

Referenced by Map.OnCardRemovedFromZone().

◆ OnRenderExtra()

virtual void Trait.OnRenderExtra ( RenderParam  p)
inlinevirtual

Reimplemented in TraitPaintBoard, and TraitShrine.

Definition at line 620 of file Trait.cs.

621 {
622 }

Referenced by CardRenderer.Draw().

◆ OnRenderTile()

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

Reimplemented in TraitLightSun, and TraitRoadSign.

Definition at line 693 of file Trait.cs.

694 {
695 if (radius == 0)
696 {
697 return;
698 }
699 Vector3 vector = point.Position();
700 vector.z += EClass.setting.render.thingZ;
701 foreach (Point item in ListPoints(point))
702 {
703 Vector3 vector2 = item.Position();
704 EClass.screen.guide.passGuideFloor.Add(vector2.x, vector2.y, vector2.z, 10f, 0.3f);
705 }
706 }
ScreenGuide guide
static BaseGameScreen screen
Definition: EClass.cs:32
static GameSetting setting
Definition: EClass.cs:34
RenderSetting render
Definition: GameSetting.cs:301
void Add(Point point, float tile=0f, float color=0f)
Definition: MeshPass.cs:122
ref Vector3 Position(int height)
Definition: Point.cs:536
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 1060 of file Trait.cs.

1061 {
1062 }

Referenced by ButtonGrid.SetCard().

◆ OnSetCurrentItem()

virtual void Trait.OnSetCurrentItem ( )
inlinevirtual

Reimplemented in TraitToolTorch.

Definition at line 1042 of file Trait.cs.

1043 {
1044 }

◆ OnSetOwner()

virtual void Trait.OnSetOwner ( )
inlinevirtual

Definition at line 640 of file Trait.cs.

641 {
642 }

Referenced by SetOwner().

◆ OnSimulateHour()

virtual void Trait.OnSimulateHour ( VirtualDate  date)
inlinevirtual

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

Definition at line 680 of file Trait.cs.

681 {
682 }

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

1065 {
1066 }

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

◆ OnSteppedOut()

virtual void Trait.OnSteppedOut ( Chara  c)
inlinevirtual

Reimplemented in TraitGeneratorWheel, and TraitSwing.

Definition at line 1068 of file Trait.cs.

1069 {
1070 }

Referenced by Chara._Move().

◆ OnThrowGround()

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

Reimplemented in TraitDrink, and TraitDye.

Definition at line 984 of file Trait.cs.

985 {
986 }

Referenced by ActThrow.Throw().

◆ OnTickHeld()

virtual void Trait.OnTickHeld ( )
inlinevirtual

Reimplemented in TraitDetector.

Definition at line 1038 of file Trait.cs.

1039 {
1040 }

Referenced by Chara.Tick().

◆ OnToggle()

virtual void Trait.OnToggle ( )
inlinevirtual

Reimplemented in TraitJukeBox, and TraitLeverBreaker.

Definition at line 1224 of file Trait.cs.

1225 {
1226 }

◆ OnUnequip()

virtual void Trait.OnUnequip ( Chara  c)
inlinevirtual

Reimplemented in TraitEQFlower.

Definition at line 664 of file Trait.cs.

665 {
666 }

Referenced by CharaBody.Unequip().

◆ OnUninstall()

virtual void Trait.OnUninstall ( )
inlinevirtual

Definition at line 1118 of file Trait.cs.

1119 {
1120 }

◆ OnUnsetCurrentItem()

virtual void Trait.OnUnsetCurrentItem ( )
inlinevirtual

Reimplemented in TraitToolTorch.

Definition at line 1046 of file Trait.cs.

1047 {
1048 }

◆ OnUse() [1/3]

◆ OnUse() [2/3]

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

Reimplemented in TraitDye, and TraitFoodMeat.

Definition at line 1012 of file Trait.cs.

1013 {
1014 return true;
1015 }

◆ OnUse() [3/3]

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

Reimplemented in TraitPotionEmpty.

Definition at line 1017 of file Trait.cs.

1018 {
1019 return true;
1020 }

◆ PlayToggleEffect()

virtual void Trait.PlayToggleEffect ( bool  silent)
inlinevirtual

Reimplemented in TraitWoodMill.

Definition at line 1178 of file Trait.cs.

1179 {
1180 bool flag = ToggleType == ToggleType.Fire;
1181 bool isOn = owner.isOn;
1182 switch (ToggleType)
1183 {
1184 case ToggleType.Lever:
1185 if (!silent)
1186 {
1187 owner.Say("lever", EClass.pc, owner);
1188 owner.PlaySound("switch_lever");
1189 }
1190 return;
1191 case ToggleType.Curtain:
1192 if (!silent)
1193 {
1194 owner.Say(isOn ? "close" : "open", EClass.pc, owner);
1195 owner.PlaySound("Material/leather_drop");
1196 }
1199 return;
1200 case ToggleType.None:
1201 return;
1202 }
1203 if (isOn)
1204 {
1205 if (!silent)
1206 {
1207 owner.Say(flag ? "toggle_fire" : "toggle_ele", EClass.pc, owner);
1209 }
1212 }
1213 else
1214 {
1215 if (!silent)
1216 {
1218 }
1221 }
1222 }
void Say(string lang, string ref1=null, string ref2=null)
Definition: Card.cs:6232
void RefreshNeighborTiles()
Definition: Point.cs:1252
virtual string IdSoundToggleOff
Definition: Trait.cs:490
virtual string IdSoundToggleOn
Definition: Trait.cs:474

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

1410 {
1411 if (owner.renderer.isSynced && !IdToggleExtra.IsEmpty())
1412 {
1413 if (owner.isOn)
1414 {
1416 }
1417 else
1418 {
1420 }
1421 }
1422 }
void AddExtra(string id)
void RemoveExtra(string id)
CardRenderer renderer
Definition: Card.cs:57
string IdToggleExtra
Definition: Trait.cs:459

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

◆ Refuel()

void Trait.Refuel ( Thing  t)
inline

Definition at line 1358 of file Trait.cs.

1359 {
1360 t.PlaySoundDrop(spatial: false);
1362 Msg.Say("fueled", t);
1363 if (!owner.isOn)
1364 {
1365 owner.trait.Toggle(on: true);
1366 }
1367 t.Destroy();
1369 }
void PlayAnime(AnimeID id, bool force)
void ModCharge(int a, bool destroy=false)
Definition: Card.cs:3697
void Destroy()
Definition: Card.cs:4680
void PlaySoundDrop(bool spatial=true)
Definition: Card.cs:5570
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:1144

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

1425 {
1426 if (owner.isThing && !owner.Thing.source.attackType.IsEmpty() && owner.ammoData != null)
1427 {
1428 t.SetText(owner.c_ammo.ToString() ?? "", FontColor.Charge);
1429 t.SetActive(enable: true);
1430 }
1431 else if (owner.Num == 1 && ShowCharges && owner.IsIdentified)
1432 {
1433 t.SetText(owner.c_charges.ToString() ?? "", FontColor.Charge);
1434 t.SetActive(enable: true);
1435 }
1436 else
1437 {
1438 t.SetText(owner.Num.ToShortNumber(), FontColor.ButtonGrid);
1439 t.SetActive(owner.Num > 1);
1440 }
1441 }
FontColor
Definition: FontColor.cs:2
virtual bool isThing
Definition: Card.cs:1981
int c_ammo
Definition: Card.cs:1409
Thing ammoData
Definition: Card.cs:1709
bool IsIdentified
Definition: Card.cs:2277
SourceThing.Row source
Definition: Thing.cs:11
virtual bool ShowCharges
Definition: Trait.cs:325
void SetText(string s)
Definition: UIText.cs:159

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

630 {
631 owner = _owner;
632 OnSetOwner();
633 }
virtual void OnSetOwner()
Definition: Trait.cs:640

References OnSetOwner(), and owner.

Referenced by Card.ApplyTrait().

◆ SetParams()

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

Definition at line 648 of file Trait.cs.

649 {
650 }

◆ Toggle()

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

Definition at line 1144 of file Trait.cs.

1145 {
1146 if (owner.isOn == on)
1147 {
1148 return;
1149 }
1150 if (Electricity < 0)
1151 {
1152 if (on)
1153 {
1155 {
1157 {
1158 if (!silent)
1159 {
1160 owner.Say("notEnoughElectricity", owner);
1161 }
1162 owner.PlaySound("electricity_insufficient");
1163 }
1164 return;
1165 }
1166 EClass._zone.electricity += Electricity;
1167 }
1168 else
1169 {
1170 EClass._zone.electricity -= Electricity;
1171 }
1172 }
1173 owner.isOn = on;
1174 PlayToggleEffect(silent);
1175 OnToggle();
1176 }
int electricity
Definition: Spatial.cs:250
virtual void PlayToggleEffect(bool silent)
Definition: Trait.cs:1178
virtual void OnToggle()
Definition: Trait.cs:1224

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

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

◆ TryOpenLock()

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

Definition at line 885 of file Trait.cs.

886 {
887 Thing thing = cc.things.FindBest<TraitLockpick>((Thing t) => -t.c_charges);
888 int num = ((thing == null) ? (cc.Evalue(280) / 2 + 2) : (cc.Evalue(280) + 10));
889 int num2 = owner.c_lockLv;
890 bool flag = this is TraitChestPractice;
891 if (flag)
892 {
893 num2 = num / 4 * 3 - 1;
894 }
895 if (num <= num2 && cc.IsPC)
896 {
897 cc.PlaySound("lock");
898 cc.Say("openLockFail2");
899 owner.PlayAnime(AnimeID.Shiver);
900 return LockOpenState.NotEnoughSkill;
901 }
902 if (thing != null && !flag)
903 {
904 thing.ModCharge(-1, destroy: true);
905 }
906 if (EClass.rnd(num + 6) > num2 + 5 || (!cc.IsPC && EClass.rnd(20) == 0) || EClass.rnd(200) == 0)
907 {
908 cc.PlaySound("lock_open");
909 cc.Say("lockpick_success", cc, owner);
910 int num3 = 100 + num2 * 10;
912 {
913 num3 *= 10;
914 }
915 cc.ModExp(280, num3);
916 owner.c_lockLv = 0;
918 {
919 owner.c_lockedHard = false;
920 owner.c_priceAdd = 0;
921 }
922 if (cc.IsPC && owner.isLostProperty)
923 {
925 }
926 owner.isLostProperty = false;
927 return LockOpenState.Success;
928 }
929 cc.PlaySound("lock");
930 if (cc.IsPC)
931 {
932 cc.Say("openLockFail");
933 }
934 cc.ModExp(280, (thing != null) ? 50 : 30);
935 if ((thing == null) | (EClass.rnd(2) == 0))
936 {
937 cc.stamina.Mod(-1);
938 }
939 return LockOpenState.Fail;
940 }
LockOpenState
Definition: LockOpenState.cs:2
bool c_lockedHard
Definition: Card.cs:996
bool isLostProperty
Definition: Card.cs:778
int c_lockLv
Definition: Card.cs:924
void ModExp(string alias, int a)
Definition: Card.cs:2548
void PlayAnime(AnimeID id, bool force=false)
Definition: Card.cs:5604
override bool IsPC
Definition: Chara.cs:602
Stats stamina
Definition: Chara.cs:960
void ModKarma(int a)
Definition: Player.cs:2306

References Card.c_lockedHard, Card.c_lockLv, Card.Evalue(), Card.isLostProperty, Chara.IsPC, Stats.Mod(), Card.ModCharge(), Card.ModExp(), Player.ModKarma(), Card.PlayAnime(), EClass.player, 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 880 of file Trait.cs.

881 {
882 return true;
883 }

Referenced by AI_Read.Run().

◆ TryRefuel()

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

Definition at line 1371 of file Trait.cs.

1372 {
1373 if (FindFuel(refuel: false))
1374 {
1375 FindFuel(refuel: true);
1376 }
1377 bool FindFuel(bool refuel)
1378 {
1379 int num = dest;
1380 List<Thing> list = EClass._zone.TryListThingsInSpot<TraitSpotFuel>((Thing t) => IsFuel(t));
1381 EClass.pc.things.Foreach(delegate(Thing t)
1382 {
1383 if (IsFuel(t) && t.tier == 0 && (excludes == null || !excludes.Contains(t)))
1384 {
1385 list.Add(t);
1386 }
1387 });
1388 foreach (Thing item in list)
1389 {
1390 if (num > 0)
1391 {
1392 int num2 = Mathf.Min(item.Num, Mathf.CeilToInt((float)num / (float)GetFuelValue(item)));
1393 num -= GetFuelValue(item) * num2;
1394 if (refuel)
1395 {
1396 Refuel(item.Split(num2));
1397 }
1398 }
1399 }
1400 return num <= 0;
1401 }
1402 }
void Foreach(Action< Thing > action, bool onlyAccessible=true)
bool IsFuel(string s)
Definition: Trait.cs:1316
void Refuel(Thing t)
Definition: Trait.cs:1358

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

◆ TrySetAct()

virtual void Trait.TrySetAct ( ActPlan  p)
inlinevirtual

◆ TrySetHeldAct()

◆ TrySetToggleAct()

virtual void Trait.TrySetToggleAct ( ActPlan  p)
inlinevirtual

Definition at line 1228 of file Trait.cs.

1229 {
1230 if (!p.IsSelfOrNeighbor)
1231 {
1232 return;
1233 }
1234 switch (ToggleType)
1235 {
1236 case ToggleType.Lever:
1237 p.TrySetAct("ActToggleLever", delegate
1238 {
1239 Toggle(!owner.isOn);
1240 return true;
1241 }, owner);
1242 break;
1243 case ToggleType.Curtain:
1244 p.TrySetAct(owner.isOn ? "actOpen" : "actClose", delegate
1245 {
1246 Toggle(!owner.isOn);
1247 return true;
1248 }, owner);
1249 break;
1250 case ToggleType.Fire:
1251 case ToggleType.Light:
1252 case ToggleType.Electronics:
1253 {
1254 bool flag = ToggleType == ToggleType.Fire;
1255 if (EClass._zone.IsPCFaction || p.altAction || this is TraitCrafter || Electricity < 0)
1256 {
1257 if (owner.isOn)
1258 {
1259 if (p.altAction)
1260 {
1261 p.TrySetAct(flag ? "ActExtinguishTorch" : "ActToggleOff", delegate
1262 {
1263 Toggle(on: false);
1264 return true;
1265 }, owner);
1266 }
1267 }
1268 else if (!(this is TraitFactory) && !(this is TraitIncubator) && (!IsRequireFuel || owner.c_charges > 0))
1269 {
1270 p.TrySetAct(flag ? "ActTorch" : "ActToggleOn", delegate
1271 {
1272 Toggle(on: true);
1273 return true;
1274 }, owner);
1275 }
1277 {
1278 p.TrySetAct("ActFuel", delegate
1279 {
1281 return false;
1282 }, owner);
1283 }
1284 }
1285 if (p.altAction)
1286 {
1287 p.TrySetAct("disableAutoToggle".lang((owner.disableAutoToggle ? "off" : "on").lang()), delegate
1288 {
1289 owner.disableAutoToggle = !owner.disableAutoToggle;
1290 SE.Click();
1291 return true;
1292 }, owner);
1293 }
1294 break;
1295 }
1296 }
1297 }
bool altAction
Definition: ActPlan.cs:156
bool IsSelfOrNeighbor
Definition: ActPlan.cs:176
bool disableAutoToggle
Definition: Card.cs:574
static LayerDragGrid Create(InvOwnerDraglet owner, bool refuelFromLayerDragGrid=false)
virtual int MaxFuel
Definition: Trait.cs:442
virtual bool ShowFuelWindow
Definition: Trait.cs:455
bool IsPCFaction
Definition: Zone.cs:464

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

1123 {
1124 if (!owner.IsInstalled)
1125 {
1126 return;
1127 }
1128 if (Electricity < 0 && owner.isOn && EClass._zone.electricity < 0)
1129 {
1130 Toggle(on: false, silent: true);
1131 }
1132 else if (AutoToggle)
1133 {
1134 int hour = EClass.world.date.hour;
1135 bool on = !IsNightOnlyLight || hour >= 17 || hour <= 5 || EClass._map.IsIndoor;
1137 {
1138 on = false;
1139 }
1140 Toggle(on, silent: true);
1141 }
1142 }
bool IsInstalled
Definition: Card.cs:2281
Cell Cell
Definition: Card.cs:1955
bool HasRoof
Definition: Cell.cs:648
int hour
Definition: Date.cs:74
bool IsIndoor
Definition: Map.cs:131
virtual bool AutoToggle
Definition: Trait.cs:382
virtual bool IsNightOnlyLight
Definition: Trait.cs:418
bool IsRaining
Definition: Weather.cs:117
Weather weather
Definition: World.cs:12

References EClass._map, EClass._zone, Card.Cell, World.date, Spatial.electricity, Cell.HasRoof, Date.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 1096 of file Trait.cs.

1097 {
1098 if (Electricity != 0)
1099 {
1100 if (owner.isOn)
1101 {
1102 Toggle(on: false, silent: true);
1103 }
1104 EClass._zone.dirtyElectricity = true;
1105 if (Electricity > 0)
1106 {
1107 EClass._zone.electricity -= Electricity;
1108 EClass.pc.PlaySound("electricity_off");
1109 }
1110 }
1111 OnUninstall();
1112 }
virtual void OnUninstall()
Definition: Trait.cs:1118

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

Referenced by Card.SetPlaceState().

◆ Update()

virtual void Trait.Update ( )
inlinevirtual

Reimplemented in TraitDoor, TraitFoodEgg, TraitGeneratorWheel, and TraitSpotSpawn.

Definition at line 718 of file Trait.cs.

719 {
720 }

◆ WriteNote()

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

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

Definition at line 942 of file Trait.cs.

943 {
944 }

Member Data Documentation

◆ listRadiusPoints

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

Definition at line 28 of file Trait.cs.

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

◆ owner

Card Trait.owner

Definition at line 26 of file Trait.cs.

Referenced by Chara._Move(), 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(), TraitFoodPreparedPackage.CanUse(), TraitGamble.CanUse(), TraitGeneMachine.CanUse(), TraitGeneratorWheel.CanUse(), TraitItem.CanUse(), TraitLoytelMart.CanUse(), TraitMoongate.CanUse(), TraitPowerStatue.CanUse(), TraitShackle.CanUse(), TraitSlotMachine.CanUse(), TraitBed.ClearHolders(), TraitEffect.CompareTo(), Contains(), TraitCrafter.Craft(), TraitPotion.Create(), TraitRod.Create(), TraitSpellbook.Create(), TraitAbility.CreateAct(), TraitCatalyst.CreateAct(), LayerDragGrid.CreateChaosOffering(), LayerDragGrid.CreateCraft(), LayerDragGrid.CreateGacha(), LayerDragGrid.CreateOffering(), LayerDragGrid.CreateRecycle(), TraitNewZone.CreateZone(), AIAct.DoGoto< T >(), BaseTileMap.DrawTile(), TraitDye.Dye(), TraitBoat.ForeachDeck(), AI_Pray.GetAltar(), TraitTile.GetBuildModeRecipe(), TraitFactory.GetCostSp(), TraitItemProc.GetCraftNum(), TraitScrollMapTreasure.GetDest(), Hobby.GetEfficiency(), TraitNewZone.GetExitPos(), TraitStairs.GetExitPos(), TraitBed.GetHoverText(), TraitTrolley.GetIdSound(), GetName(), TraitGene.GetName(), TraitPotionRandom.GetName(), GetPoint(), AI_Trolley.GetPoint(), GetRandomPoint(), TraitTile.GetRecipe(), AI_Grab< T >.GetTarget(), TraitGeneMachine.GetTarget(), TeleportManager.GetTeleportZone(), GetValue(), TraitGene.GetValue(), TraitMod.GetValue(), TraitBoat.GetWaterMat(), TraitBed.HasHolder(), TraitChopper.IdleUse(), TraitGamble.IdleUse(), TraitTrainingDummy.IdleUse(), TraitTrap.IgnoreWhenLevitating(), TraitBed.IsFull(), TraitBed.IsHolder(), TraitDoor.IsOpen(), TraitShackle.IsRestraining(), TraitDoor.IsValid(), ListPoints(), TraitLightSun.ListPoints(), TraitBaseSpellbook.ModCharge(), TraitGenerator.ModHP(), TraitNewZone.MoveZone(), TraitHitchingPost.OnActivateTrap(), TraitSeesaw.OnActivateTrap(), TraitTrap.OnActivateTrap(), ConSleep.OnBeforeStart(), TraitDreamBug.OnBlend(), TraitDrink.OnBlend(), TraitWell.OnBlend(), TraitGodStatue.OnChangeMaterial(), TraitHouseBoard.OnChangePlaceState(), TraitTeleporter.OnChangePlaceState(), TraitTent.OnChangePlaceState(), TraitBrewery.OnChildDecay(), TraitBlanket.OnCrafted(), TraitPotionAlchemy.OnCrafted(), TraitBaseContainer.OnCreate(), TraitBaseSpellbook.OnCreate(), TraitBlanket.OnCreate(), TraitBook.OnCreate(), TraitChestPractice.OnCreate(), TraitMonsterBall.OnCreate(), TraitPotionRandom.OnCreate(), TraitPowerStatue.OnCreate(), TraitRecipe.OnCreate(), TraitRod.OnCreate(), TraitRodRandom.OnCreate(), TraitSeed.OnCreate(), TraitSpecialLantern.OnCreate(), TraitToolRangeCane.OnCreate(), TraitToolWaterPot.OnCreate(), TaskDrawWater.OnCreateProgress(), TaskPourWater.OnCreateProgress(), TraitDrink.OnDrink(), TraitDrinkMilkMother.OnDrink(), AI_UseCrafter.OnEnd(), TraitRollingFortune.OnEndAI(), TraitEQFlower.OnEquip(), TraitAltar.OnImportMap(), TraitBook.OnImportMap(), TraitSwitch.OnInstall(), TraitAltar.OnOffer(), TraitDoorBell.OnOpenDoor(), TraitBaseSpellbook.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(), TraitGiftJure.OnUse(), TraitGiftNewYear.OnUse(), TraitGiftPack.OnUse(), TraitGoodsCoin.OnUse(), TraitHat.OnUse(), TraitItemProc.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(), ActDrawWater.Perform(), ActRestrain.Perform(), ActWater.Perform(), ActZap.Perform(), Zone_Dungeon.PlaceRail(), AttackProcess.PlayRangedAnime(), TraitBaseContainer.Prespawn(), TraitChest.Prespawn(), TraitChestOyster.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(), TraitBlueprint.SetName(), TraitGenerator.SetName(), TraitMonsterBall.SetName(), TraitParcel.SetName(), TraitRecipeCat.SetName(), TraitScrollMap.SetName(), TraitTape.SetName(), TraitToolWaterPot.SetName(), SetOwner(), TraitGenerator.ShortOut(), AI_Trolley.Stop(), TraitAltar.TakeOver(), ActThrow.Throw(), ConSuspend.Tick(), TraitDoor.ToggleDoor(), TraitDoorAutoShoji.ToggleDoor(), TraitDoorSwing.ToggleDoor(), TraitToolTorch.ToggleOn(), TraitSwitch.TryDisarmTrap(), TraitContainer.TryOpen(), TraitDoor.TryOpen(), TraitBaseSpellbook.TryProgress(), TraitAltar.TrySetAct(), TraitAltarChaos.TrySetAct(), TraitBath.TrySetAct(), TraitBed.TrySetAct(), TraitBuildBoard.TrySetAct(), TraitCanvas.TrySetAct(), TraitContainer.TrySetAct(), TraitCoreZone.TrySetAct(), TraitCrafter.TrySetAct(), TraitDeliveryChest.TrySetAct(), TraitDoor.TrySetAct(), TraitDrawingPaper.TrySetAct(), TraitEffect.TrySetAct(), TraitElevator.TrySetAct(), TraitFactionBoard.TrySetAct(), TraitFigure.TrySetAct(), TraitGacha.TrySetAct(), TraitHoard.TrySetAct(), TraitHomeBoard.TrySetAct(), TraitHouseBoard.TrySetAct(), TraitMapBoard.TrySetAct(), TraitMirror.TrySetAct(), TraitNewspaper.TrySetAct(), TraitNewZone.TrySetAct(), TraitNote.TrySetAct(), TraitPaintBoard.TrySetAct(), 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(), TraitRod.TrySetHeldAct(), TraitSalesTag.TrySetHeldAct(), TraitSyringeGene.TrySetHeldAct(), TraitSyringeHeaven.TrySetHeldAct(), TraitToolBuild.TrySetHeldAct(), TraitToolSickle.TrySetHeldAct(), TraitToolTorch.TrySetHeldAct(), TraitToolWaterCan.TrySetHeldAct(), HotItemHeld.TrySetToolAct(), TraitSeed.TrySprout(), TraitTeleporter.TryTeleport(), TraitFoodEgg.Update(), TraitSpotSpawn.Update(), FactionBranch.Upgrade(), TraitBed.ValidateOwners(), and TraitGene.WriteNote().

◆ SelfFactory

TraitSelfFactory Trait.SelfFactory = new TraitSelfFactory()
static

Property Documentation

◆ AllowCriminal

virtual bool Trait.AllowCriminal
get

Definition at line 541 of file Trait.cs.

◆ AllowSell

virtual bool Trait.AllowSell
get

Definition at line 517 of file Trait.cs.

518 {
519 get
520 {
521 if (CurrencyType != CurrencyType.Money)
522 {
523 return CurrencyType == CurrencyType.None;
524 }
525 return true;
526 }
527 }

◆ AlwaysHideOnLowWall

virtual bool Trait.AlwaysHideOnLowWall
get

Definition at line 347 of file Trait.cs.

Referenced by BaseTileMap.DrawTile().

◆ AutoToggle

virtual bool Trait.AutoToggle
get

Definition at line 381 of file Trait.cs.

382 {
383 get
384 {
385 if (IsLighting || ToggleType == ToggleType.Curtain || ToggleType == ToggleType.Electronics)
386 {
387 return !owner.disableAutoToggle;
388 }
389 return false;
390 }
391 }
bool IsLighting
Definition: Trait.cs:394

◆ CanAutofire

virtual bool Trait.CanAutofire
get

Definition at line 141 of file Trait.cs.

Referenced by Thing.CanAutoFire().

◆ CanBeAttacked

virtual bool Trait.CanBeAttacked
get

◆ CanBeDestroyed

◆ CanBeDisassembled

virtual bool Trait.CanBeDisassembled
get

Definition at line 299 of file Trait.cs.

300 {
301 get
302 {
303 if (CanBeDestroyed && !(this is TraitTrap) && owner.things.Count == 0)
304 {
305 return owner.rarity < Rarity.Artifact;
306 }
307 return false;
308 }
309 }
virtual bool CanBeDestroyed
Definition: Trait.cs:289

Referenced by TaskHarvest.TryGetAct().

◆ CanBeDropped

◆ CanBeHallucinated

virtual bool Trait.CanBeHallucinated
get

Definition at line 293 of file Trait.cs.

Referenced by CardRenderer.Draw().

◆ CanBeHeld

virtual bool Trait.CanBeHeld
get

◆ CanBeHeldAsFurniture

virtual bool Trait.CanBeHeldAsFurniture
get

Definition at line 331 of file Trait.cs.

332 {
333 get
334 {
335 if (!(this is TraitTool))
336 {
337 return IsThrowMainAction;
338 }
339 return true;
340 }
341 }
virtual bool IsThrowMainAction
Definition: Trait.cs:178

◆ CanBeMasked

virtual bool Trait.CanBeMasked
get

Definition at line 255 of file Trait.cs.

◆ CanBeOnlyBuiltInHome

virtual bool Trait.CanBeOnlyBuiltInHome
get

◆ CanBeShipped

virtual bool Trait.CanBeShipped
get

Definition at line 311 of file Trait.cs.

312 {
313 get
314 {
315 if (!owner.IsImportant)
316 {
317 return !owner.IsUnique;
318 }
319 return false;
320 }
321 }
bool IsImportant
Definition: Card.cs:2005
bool IsUnique
Definition: Card.cs:1991

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

◆ CanBeSmashedToDeath

virtual bool Trait.CanBeSmashedToDeath
get

Definition at line 291 of file Trait.cs.

Referenced by Card.Die().

◆ CanBeStolen

virtual bool Trait.CanBeStolen
get

Definition at line 275 of file Trait.cs.

276 {
277 get
278 {
279 if (!CanOnlyCarry)
280 {
281 return CanBeHeld;
282 }
283 return false;
284 }
285 }
virtual bool CanBeHeld
Definition: Trait.cs:273

Referenced by ThingContainer.FindStealable(), and AI_Steal.IsValidTC().

◆ CanBuildInTown

virtual bool Trait.CanBuildInTown
get

Definition at line 261 of file Trait.cs.

262 {
263 get
264 {
266 {
268 }
269 return false;
270 }
271 }
TileType TileType
Definition: Card.cs:2035
virtual bool IsBlockSight
Definition: TileType.cs:153
virtual bool IsBlockPass
Definition: TileType.cs:149

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

◆ CanChangeHeight

virtual bool Trait.CanChangeHeight
get

Definition at line 147 of file Trait.cs.

Referenced by HotItemHeld.CanChangeHeightByWheel().

◆ CanCopyInBlueprint

virtual bool Trait.CanCopyInBlueprint
get

Definition at line 151 of file Trait.cs.

152 {
153 get
154 {
155 if (owner.rarity <= Rarity.Superior && owner.sourceCard.value > 0)
156 {
157 return CanBeDestroyed;
158 }
159 return false;
160 }
161 }

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

◆ CanExtendBuild

virtual bool Trait.CanExtendBuild
get

Definition at line 165 of file Trait.cs.

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

◆ CanHarvest

virtual bool Trait.CanHarvest
get

Definition at line 90 of file Trait.cs.

Referenced by TaskHarvest.TryGetAct().

◆ CanName

virtual bool Trait.CanName
get

Definition at line 143 of file Trait.cs.

Referenced by ActPlan._Update().

◆ CanOnlyCarry

◆ CanOpenContainer

virtual bool Trait.CanOpenContainer
get

Definition at line 229 of file Trait.cs.

230 {
231 get
232 {
233 if (IsContainer)
234 {
235 return !owner.isNPCProperty;
236 }
237 return false;
238 }
239 }
bool isNPCProperty
Definition: Card.cs:526
virtual bool IsContainer
Definition: Trait.cs:209

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

◆ CanPutAway

virtual bool Trait.CanPutAway
get

Definition at line 145 of file Trait.cs.

◆ CanSearchContent

virtual bool Trait.CanSearchContent
get

Definition at line 213 of file Trait.cs.

214 {
215 get
216 {
217 if (!owner.isChara)
218 {
219 if (IsContainer)
220 {
221 return owner.c_lockLv == 0;
222 }
223 return false;
224 }
225 return true;
226 }
227 }

Referenced by ThingContainer._List().

◆ CanStack

virtual bool Trait.CanStack
get

◆ CanUseContent

virtual bool Trait.CanUseContent
get

Definition at line 211 of file Trait.cs.

Referenced by QuestDeliver.IsDestThing().

◆ CanUseRoomRadius

virtual bool Trait.CanUseRoomRadius
get

Definition at line 96 of file Trait.cs.

Referenced by ListPoints().

◆ ColorExtra

virtual ? Color Trait.ColorExtra
get

Definition at line 439 of file Trait.cs.

◆ ContainerType

virtual ContainerType Trait.ContainerType
get

Definition at line 243 of file Trait.cs.

◆ CopyShop

virtual CopyShopType Trait.CopyShop
get

Definition at line 507 of file Trait.cs.

Referenced by OnBarter().

◆ CostRerollShop

virtual int Trait.CostRerollShop
get

Definition at line 529 of file Trait.cs.

530 {
531 get
532 {
533 if (CurrencyType == CurrencyType.Money || CurrencyType == CurrencyType.Influence)
534 {
535 return 1;
536 }
537 return 0;
538 }
539 }

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

◆ CraftNum

virtual int Trait.CraftNum
get

◆ CurrencyType

virtual CurrencyType Trait.CurrencyType
get

Definition at line 513 of file Trait.cs.

Referenced by TraitVendingMachine.OnUse().

◆ Decay

virtual int Trait.Decay
get

Definition at line 119 of file Trait.cs.

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

◆ DecaySpeed

virtual int Trait.DecaySpeed
get

Definition at line 121 of file Trait.cs.

◆ DecaySpeedChild

virtual int Trait.DecaySpeedChild
get

Definition at line 123 of file Trait.cs.

◆ DefaultStock

virtual int Trait.DefaultStock
get

Definition at line 127 of file Trait.cs.

Referenced by OnBarter().

◆ DisableAutoCombat

virtual bool Trait.DisableAutoCombat
get

Definition at line 195 of file Trait.cs.

Referenced by ActPlan._Update().

◆ DropChance

virtual float Trait.DropChance
get

Definition at line 353 of file Trait.cs.

Referenced by Card.SpawnLoot().

◆ EffectDead

virtual EffectDead Trait.EffectDead
get

Definition at line 247 of file Trait.cs.

Referenced by Card.Die().

◆ Electricity

virtual int Trait.Electricity
get

Definition at line 100 of file Trait.cs.

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

Referenced by TraitGamble.CanUse(), TraitItem.CanUse(), Zone.GetElectricity(), TraitNewZone.MoveZone(), TraitJukeBox.OnSetBGM(), UIMagicChest.RefreshBottom(), and Zone.RefreshElectricity().

◆ ExistsOnMap

bool Trait.ExistsOnMap
get

Definition at line 349 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 453 of file Trait.cs.

Referenced by AI_UseCrafter.Run().

◆ GuidePriotiy

virtual int Trait.GuidePriotiy
get

Definition at line 98 of file Trait.cs.

Referenced by DramaCustomSequence.GetListGuide().

◆ HasCharges

virtual bool Trait.HasCharges
get

Definition at line 323 of file Trait.cs.

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

◆ HaveUpdate

virtual bool Trait.HaveUpdate
get

Definition at line 135 of file Trait.cs.

◆ HideInAdv

virtual bool Trait.HideInAdv
get

Definition at line 343 of file Trait.cs.

◆ HoldAsDefaultInteraction

virtual bool Trait.HoldAsDefaultInteraction
get

Definition at line 129 of file Trait.cs.

Referenced by InvOwner.GetAutoUseLang().

◆ IDActorEx

virtual string Trait.IDActorEx
get

Definition at line 171 of file Trait.cs.

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

◆ IDInvStyle

virtual string Trait.IDInvStyle
get

Definition at line 169 of file Trait.cs.

◆ IdleUseChance

virtual int Trait.IdleUseChance
get

Definition at line 357 of file Trait.cs.

Referenced by AI_Idle.TryPerformIdleUse().

◆ IdNoRestock

virtual string Trait.IdNoRestock
get

Definition at line 355 of file Trait.cs.

Referenced by OnBarter().

◆ IdSkin

virtual int Trait.IdSkin
get

Definition at line 44 of file Trait.cs.

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

◆ IdSoundToggleOff

virtual string Trait.IdSoundToggleOff
get

Definition at line 489 of file Trait.cs.

490 {
491 get
492 {
493 if (Electricity >= 0)
494 {
495 if (ToggleType != ToggleType.Fire)
496 {
497 return "switch_off";
498 }
499 return "torch_unlit";
500 }
501 return "switch_off_electricity";
502 }
503 }

◆ IdSoundToggleOn

virtual string Trait.IdSoundToggleOn
get

Definition at line 473 of file Trait.cs.

474 {
475 get
476 {
477 if (Electricity >= 0)
478 {
479 if (ToggleType != ToggleType.Fire)
480 {
481 return "switch_on";
482 }
483 return "torch_lit";
484 }
485 return "switch_on_electricity";
486 }
487 }

◆ IdToggleExtra

string Trait.IdToggleExtra
get

Definition at line 459 of file Trait.cs.

◆ IgnoreLastStackHeight

virtual bool Trait.IgnoreLastStackHeight
get

Definition at line 117 of file Trait.cs.

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

◆ InstallBottomPriority

virtual int Trait.InstallBottomPriority
get

Definition at line 88 of file Trait.cs.

Referenced by Card.SetPlaceState().

◆ InvertHeldSprite

virtual bool Trait.InvertHeldSprite
get

Definition at line 70 of file Trait.cs.

Referenced by CharaActorPCC.OnRender().

◆ InvGridSize

virtual InvGridSize Trait.InvGridSize
get

Definition at line 197 of file Trait.cs.

198 {
199 get
200 {
201 if (!owner.IsPC)
202 {
203 return InvGridSize.Default;
204 }
205 return InvGridSize.Backpack;
206 }
207 }
InvGridSize
Definition: InvGridSize.cs:2
virtual bool IsPC
Definition: Card.cs:2043

◆ IsAltar

virtual bool Trait.IsAltar
get

Definition at line 251 of file Trait.cs.

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

◆ IsAnimeOn

virtual bool Trait.IsAnimeOn
get

Definition at line 367 of file Trait.cs.

368 {
369 get
370 {
371 if (!IsOn)
372 {
373 return !IsToggle;
374 }
375 return true;
376 }
377 }
bool IsToggle
Definition: Trait.cs:379
virtual bool IsOn
Definition: Trait.cs:365

◆ IsBlendBase

virtual bool Trait.IsBlendBase
get

Definition at line 257 of file Trait.cs.

Referenced by ActPlan._Update().

◆ IsBlockPath

virtual bool Trait.IsBlockPath
get

Definition at line 52 of file Trait.cs.

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

◆ IsBlockSight

virtual bool Trait.IsBlockSight
get

Definition at line 54 of file Trait.cs.

Referenced by Cell.Refresh().

◆ IsChangeFloorHeight

virtual bool Trait.IsChangeFloorHeight
get

Definition at line 72 of file Trait.cs.

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

◆ IsContainer

virtual bool Trait.IsContainer
get

◆ IsDoor

virtual bool Trait.IsDoor
get

◆ IsFactory

◆ IsFloating

virtual bool Trait.IsFloating
get

Definition at line 62 of file Trait.cs.

Referenced by Cell.Refresh().

◆ IsFridge

virtual bool Trait.IsFridge
get

Definition at line 125 of file Trait.cs.

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

◆ IsGround

virtual bool Trait.IsGround
get

Definition at line 66 of file Trait.cs.

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

◆ IsHomeItem

virtual bool Trait.IsHomeItem
get

Definition at line 249 of file Trait.cs.

◆ IsLighting

bool Trait.IsLighting
get

Definition at line 393 of file Trait.cs.

394 {
395 get
396 {
397 if (ToggleType != ToggleType.Fire)
398 {
399 return ToggleType == ToggleType.Light;
400 }
401 return true;
402 }
403 }

◆ IsLightOn

virtual bool Trait.IsLightOn
get

Definition at line 405 of file Trait.cs.

406 {
407 get
408 {
409 if (!owner.isChara)
410 {
411 return owner.isOn;
412 }
413 return true;
414 }
415 }

Referenced by Card.GetLightRadius().

◆ IsNightOnlyLight

virtual bool Trait.IsNightOnlyLight
get

Definition at line 417 of file Trait.cs.

418 {
419 get
420 {
421 if (ToggleType != ToggleType.Electronics && IsToggle)
422 {
423 return !owner.isRoofItem;
424 }
425 return false;
426 }
427 }
bool isRoofItem
Definition: Card.cs:550

◆ IsNoShop

virtual bool Trait.IsNoShop
get

Definition at line 64 of file Trait.cs.

Referenced by OnBarter().

◆ IsOn

virtual bool Trait.IsOn
get

Definition at line 365 of file Trait.cs.

◆ IsOnlyUsableByPc

virtual bool Trait.IsOnlyUsableByPc
get

Definition at line 68 of file Trait.cs.

◆ IsOpenPath

virtual bool Trait.IsOpenPath
get

Definition at line 60 of file Trait.cs.

Referenced by Cell.Refresh().

◆ IsOpenSight

virtual bool Trait.IsOpenSight
get

Definition at line 58 of file Trait.cs.

Referenced by Cell.Refresh().

◆ IsRequireFuel

bool Trait.IsRequireFuel
get

Definition at line 457 of file Trait.cs.

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

◆ IsRestSpot

virtual bool Trait.IsRestSpot
get

Definition at line 253 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 137 of file Trait.cs.

◆ IsThrowMainAction

virtual bool Trait.IsThrowMainAction
get

Definition at line 177 of file Trait.cs.

178 {
179 get
180 {
181 if (!owner.HasTag(CTAG.throwWeapon))
182 {
183 return owner.IsMeleeWeapon;
184 }
185 return true;
186 }
187 }
CTAG
Definition: CTAG.cs:2
bool HasTag(CTAG tag)
Definition: Card.cs:2495
bool IsMeleeWeapon
Definition: Card.cs:2141

Referenced by HotItemHeld.TrySetAct().

◆ IsToggle

bool Trait.IsToggle
get

Definition at line 379 of file Trait.cs.

◆ IsTool

virtual bool Trait.IsTool
get

◆ LangBarter

virtual string Trait.LangBarter
get

Definition at line 547 of file Trait.cs.

◆ langNote

virtual string Trait.langNote
get

Definition at line 167 of file Trait.cs.

Referenced by TraitItem.WriteNote().

◆ LangUse

virtual string Trait.LangUse
get

Definition at line 363 of file Trait.cs.

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

◆ LevelAsQuality

virtual bool Trait.LevelAsQuality
get

Definition at line 189 of file Trait.cs.

Referenced by Card.Create().

◆ MaskOnBuild

virtual bool Trait.MaskOnBuild
get

Definition at line 173 of file Trait.cs.

Referenced by RecipeCard.Build().

◆ MaxFuel

virtual int Trait.MaxFuel
get

Definition at line 441 of file Trait.cs.

442 {
443 get
444 {
445 if (ToggleType != ToggleType.Fire)
446 {
447 return 0;
448 }
449 return 100;
450 }
451 }

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

◆ Name

virtual string Trait.Name
get

Definition at line 46 of file Trait.cs.

Referenced by LayerHome.RefreshSpots().

◆ NoHeldDir

virtual bool Trait.NoHeldDir
get

Definition at line 345 of file Trait.cs.

Referenced by CharaRenderer.DrawHeld().

◆ NumCopyItem

virtual int Trait.NumCopyItem
get

Definition at line 509 of file Trait.cs.

Referenced by OnBarter().

◆ Params

string [] Trait.Params
get

Definition at line 30 of file Trait.cs.

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

Referenced by GetParam(), and GetParamInt().

◆ PriceType

virtual PriceType Trait.PriceType
get

Definition at line 515 of file Trait.cs.

Referenced by TraitVendingMachine.OnUse().

◆ radius

virtual int Trait.radius
get

◆ radiusType

virtual TraitRadiusType Trait.radiusType
get

Definition at line 94 of file Trait.cs.

Referenced by ListPoints().

◆ RecipeCat

virtual string Trait.RecipeCat
get

Definition at line 359 of file Trait.cs.

Referenced by BuildMenu.RefreshCategory().

◆ RefCardName

virtual RefCardName Trait.RefCardName
get

Definition at line 50 of file Trait.cs.

◆ RenderExtra

virtual bool Trait.RenderExtra
get

Definition at line 351 of file Trait.cs.

Referenced by CardRenderer.Draw().

◆ ReqHarvest

virtual string Trait.ReqHarvest
get

Definition at line 297 of file Trait.cs.

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

◆ RequireFullStackCheck

virtual bool Trait.RequireFullStackCheck
get

Definition at line 193 of file Trait.cs.

◆ RestockDay

virtual int Trait.RestockDay
get

Definition at line 543 of file Trait.cs.

◆ ShopLv

virtual int Trait.ShopLv
get

Definition at line 505 of file Trait.cs.

◆ ShopType

virtual ShopType Trait.ShopType
get

Definition at line 511 of file Trait.cs.

Referenced by Zone.GetRandomVisitPos().

◆ ShouldRefreshTile

virtual bool Trait.ShouldRefreshTile
get

Definition at line 74 of file Trait.cs.

75 {
76 get
77 {
78 if (!IsBlockPath && !IsOpenSight)
79 {
80 return IsBlockSight;
81 }
82 return true;
83 }
84 }
virtual bool IsBlockPath
Definition: Trait.cs:52
virtual bool IsBlockSight
Definition: Trait.cs:54
virtual bool IsOpenSight
Definition: Trait.cs:58

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

◆ ShouldTryRefreshRoom

virtual bool Trait.ShouldTryRefreshRoom
get

Definition at line 86 of file Trait.cs.

Referenced by Card.SetPlaceState().

◆ ShowAsTool

virtual bool Trait.ShowAsTool
get

Definition at line 329 of file Trait.cs.

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

◆ ShowCharges

virtual bool Trait.ShowCharges
get

Definition at line 325 of file Trait.cs.

Referenced by Thing.GetName().

◆ ShowChildrenNumber

virtual bool Trait.ShowChildrenNumber
get

Definition at line 327 of file Trait.cs.

◆ ShowContextOnPick

virtual bool Trait.ShowContextOnPick
get

Definition at line 175 of file Trait.cs.

Referenced by AM_MoveInstalled.OnProcessTiles().

◆ ShowFuelWindow

virtual bool Trait.ShowFuelWindow
get

Definition at line 455 of file Trait.cs.

◆ ShowOrbit

virtual bool Trait.ShowOrbit
get

Definition at line 133 of file Trait.cs.

Referenced by CardRenderer.TrySpawnOrbit().

◆ SlaverType

virtual SlaverType Trait.SlaverType
get

Definition at line 545 of file Trait.cs.

◆ TextNextRestock

string Trait.TextNextRestock
get

Definition at line 549 of file Trait.cs.

◆ TextNextRestockPet

string Trait.TextNextRestockPet
get

Definition at line 551 of file Trait.cs.

◆ ThrowType

virtual ThrowType Trait.ThrowType
get

Definition at line 245 of file Trait.cs.

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

◆ tileMode

virtual TileMode Trait.tileMode
get

Definition at line 429 of file Trait.cs.

◆ tileType

virtual TileType Trait.tileType
get

◆ ToggleType

virtual ToggleType Trait.ToggleType
get

Definition at line 461 of file Trait.cs.

462 {
463 get
464 {
465 if (Electricity >= 0)
466 {
467 return ToggleType.None;
468 }
469 return ToggleType.Electronics;
470 }
471 }

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

◆ UseAltTiles

virtual bool Trait.UseAltTiles
get

Definition at line 431 of file Trait.cs.

◆ UseDummyTile

virtual bool Trait.UseDummyTile
get

Definition at line 191 of file Trait.cs.

Referenced by CardRenderer.Draw().

◆ UseExtra

virtual bool Trait.UseExtra
get

Definition at line 435 of file Trait.cs.

◆ UseLightColor

virtual bool Trait.UseLightColor
get

Definition at line 437 of file Trait.cs.

◆ UseLowblock

virtual bool Trait.UseLowblock
get

Definition at line 433 of file Trait.cs.

Referenced by BaseTileMap.DrawTile().

◆ WeightMod

virtual byte Trait.WeightMod
get

Definition at line 42 of file Trait.cs.

Referenced by Cell.Refresh().


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