Elin Decompiled Documentation EA 23.174 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 TraitFakeBlock 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 , FakeBlock
}
 
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, List< Thing > ings)
 
virtual void OnCreate (int lv)
 
virtual void OnEquip (Chara c, bool onSetOwner)
 
virtual void OnUnequip (Chara c)
 
virtual void OnChangePlaceState (PlaceState state)
 
virtual void OnAddedToZone ()
 
virtual void OnRemovedFromZone ()
 
virtual void OnSimulateHour (VirtualDate date)
 
virtual string GetName ()
 
virtual void SetName (ref string s)
 
virtual void OnRenderTile (Point point, HitResult result, int dir)
 
virtual int CompareTo (Card b)
 
virtual bool CanBuiltAt (Point p)
 
virtual void Update ()
 
Point GetPoint ()
 
Point GetRandomPoint (Func< Point, bool > func=null, Chara accessChara=null)
 
virtual List< PointListPoints (Point center=null, bool onlyPassable=true)
 
virtual Recipe GetRecipe ()
 
virtual Recipe GetBuildModeRecipe ()
 
virtual bool CanCook (Card c)
 
void CookProgress ()
 
virtual bool CanOffer (Card tg)
 
void OfferProcess (Chara cc)
 
void Offer (Chara cc)
 
virtual bool TryProgress (AIProgress p)
 
virtual LockOpenState TryOpenLock (Chara cc, bool msgFail=true)
 
virtual 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 CanBeTeleported [get]
 
virtual bool CanExtendBuild [get]
 
virtual string langNote [get]
 
virtual string IDInvStyle [get]
 
virtual string IDActorEx [get]
 
virtual bool MaskOnBuild [get]
 
virtual bool ShowContextOnPick [get]
 
virtual bool IsThrowMainAction [get]
 
virtual bool LevelAsQuality [get]
 
virtual bool UseDummyTile [get]
 
virtual bool RequireFullStackCheck [get]
 
virtual bool DisableAutoCombat [get]
 
virtual InvGridSize InvGridSize [get]
 
virtual bool IsContainer [get]
 
virtual bool CanUseContent [get]
 
virtual bool CanSearchContent [get]
 
virtual bool CanOpenContainer [get]
 
virtual bool IsSpecialContainer [get]
 
virtual ContainerType ContainerType [get]
 
virtual ThrowType ThrowType [get]
 
virtual EffectDead EffectDead [get]
 
virtual bool IsHomeItem [get]
 
virtual bool IsAltar [get]
 
virtual bool IsRestSpot [get]
 
virtual bool CanBeMasked [get]
 
virtual bool 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 18 of file Trait.cs.

◆ TileMode

Enumerator
Default 
Door 
Illumination 
DefaultNoAnime 
SignalAnime 
FakeBlock 

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

600 {
601 return false;
602 }

Referenced by InvOwnerBlend.ShouldShowGuide().

◆ CanBuiltAt()

virtual bool Trait.CanBuiltAt ( Point  p)
inlinevirtual

Reimplemented in TraitSpotExit.

Definition at line 716 of file Trait.cs.

717 {
718 return true;
719 }

Referenced by TileType._HitTest().

◆ CanChildDecay()

virtual bool Trait.CanChildDecay ( Card  c)
inlinevirtual

Reimplemented in TraitBrewery, and TraitContainerCompost.

Definition at line 1058 of file Trait.cs.

1059 {
1060 return false;
1061 }

Referenced by Card.DecayNatural().

◆ CanCook()

virtual bool Trait.CanCook ( Card  c)
inlinevirtual

Definition at line 809 of file Trait.cs.

810 {
811 if (c == null || !ExistsOnMap || !(c.trait is TraitFood))
812 {
813 return false;
814 }
815 return true;
816 }
Trait trait
Definition: Card.cs:49
bool ExistsOnMap
Definition: Trait.cs:352

References Card.trait.

Referenced by AI_Cook.IsValidTarget().

◆ CanCopy()

virtual bool Trait.CanCopy ( Thing  t)
inlinevirtual

Reimplemented in TraitDemitas, and TraitKettle.

Definition at line 1446 of file Trait.cs.

1447 {
1448 return false;
1449 }

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

979 {
980 return false;
981 }

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

970 {
971 return owner.HasElement(10);
972 }
bool HasElement(int ele, int req=1)
Definition: Card.cs:5589
Card owner
Definition: Trait.cs:27

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

832 {
833 if (tg == null || tg.isChara || tg.trait.CanOnlyCarry)
834 {
835 return false;
836 }
837 if (tg.rarity == Rarity.Artifact)
838 {
839 return false;
840 }
841 return true;
842 }
Rarity
Definition: Rarity.cs:2
Rarity rarity
Definition: Card.cs:298
virtual bool isChara
Definition: Card.cs:2019
virtual bool CanOnlyCarry
Definition: Trait.cs:290

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

961 {
962 return false;
963 }

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

◆ CanStackTo()

virtual bool Trait.CanStackTo ( Thing  to)
inlinevirtual

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

997 {
998 return false;
999 }

◆ CanUse() [3/3]

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

Reimplemented in TraitPotionEmpty.

Definition at line 1001 of file Trait.cs.

1002 {
1003 return false;
1004 }

◆ CompareTo()

virtual int Trait.CompareTo ( Card  b)
inlinevirtual

Reimplemented in TraitEffect.

Definition at line 711 of file Trait.cs.

712 {
713 return 0;
714 }

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

575 {
576 return r.idFactory == ((owner.sourceCard.origin != null) ? owner.sourceCard.origin.id : owner.id);
577 }
CardRow origin
Definition: CardRow.cs:49
string id
Definition: CardRow.cs:7
string id
Definition: Card.cs:31
virtual CardRow sourceCard
Definition: Card.cs:2067

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

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

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

Referenced by AI_Cook.Run().

◆ CreateStock()

Thing Trait.CreateStock ( )
inline

Definition at line 2049 of file Trait.cs.

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

609 {
610 return 0;
611 }

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

◆ GetBuildModeRecipe()

virtual Recipe Trait.GetBuildModeRecipe ( )
inlinevirtual

Reimplemented in TraitTile.

Definition at line 804 of file Trait.cs.

805 {
806 return Recipe.Create(owner.Thing);
807 }
virtual Thing Thing
Definition: Card.cs:1994
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 1338 of file Trait.cs.

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

◆ GetFuelValue() [2/2]

int Trait.GetFuelValue ( Thing  t)
inline

Definition at line 1329 of file Trait.cs.

1330 {
1331 if (t.c_isImportant)
1332 {
1333 return 0;
1334 }
1335 return GetFuelValue(t.id);
1336 }
bool c_isImportant
Definition: Card.cs:996
int GetFuelValue(Thing t)
Definition: Trait.cs:1329

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

595 {
596 return null;
597 }

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

628 {
629 return Emo2.none;
630 }
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 589 of file Trait.cs.

590 {
591 return null;
592 }

◆ GetName()

virtual string Trait.GetName ( )
inlinevirtual

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

Definition at line 687 of file Trait.cs.

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

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

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

◆ GetParam()

◆ GetParamInt()

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

Definition at line 565 of file Trait.cs.

566 {
567 if (i < Params.Length)
568 {
569 return Params[i].ToInt();
570 }
571 return def;
572 }

References Params.

Referenced by TraitItemProc.OnUse().

◆ GetPoint()

Point Trait.GetPoint ( )
inline

Definition at line 725 of file Trait.cs.

726 {
727 return owner.pos;
728 }

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

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

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

800 {
801 return Recipe.Create(owner.Thing);
802 }

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

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

◆ GetRefElement()

virtual SourceElement.Row Trait.GetRefElement ( )
inlinevirtual

Reimplemented in TraitPotionRandom, TraitRod, and TraitScroll.

Definition at line 613 of file Trait.cs.

614 {
615 return null;
616 }

Referenced by ButtonGrid.SetCard().

◆ GetRefSprite()

virtual Sprite Trait.GetRefSprite ( )
inlinevirtual

Definition at line 618 of file Trait.cs.

619 {
620 return null;
621 }

Referenced by ButtonGrid.SetCard().

◆ GetRestockedIcon()

Emo2 Trait.GetRestockedIcon ( )
inline

Definition at line 1474 of file Trait.cs.

1475 {
1476 if (SlaverType != 0)
1477 {
1478 SlaverData obj = owner.GetObj<SlaverData>(5);
1479 if (obj != null && EClass.world.date.IsExpired(obj.dateRefresh))
1480 {
1481 return Emo2.restock;
1482 }
1483 }
1484 int c_dateStockExpire = owner.c_dateStockExpire;
1485 if (c_dateStockExpire != 0 && EClass.world.date.IsExpired(c_dateStockExpire))
1486 {
1487 if (ShopType == ShopType.None)
1488 {
1489 return Emo2.blessing;
1490 }
1491 return Emo2.restock;
1492 }
1493 return Emo2.none;
1494 }
SlaverType
Definition: SlaverType.cs:2
int c_dateStockExpire
Definition: Card.cs:1205
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 949 of file Trait.cs.

950 {
951 _ = 7;
952 return owner.sourceCard._index;
953 }

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

1452 {
1453 int rawDeadLine = 0;
1454 if (pet)
1455 {
1456 SlaverData obj = owner.GetObj<SlaverData>(5);
1457 if (obj != null)
1458 {
1459 rawDeadLine = obj.dateRefresh;
1460 }
1461 }
1462 else
1463 {
1464 rawDeadLine = owner.c_dateStockExpire;
1465 }
1466 int remainingHours = EClass.world.date.GetRemainingHours(rawDeadLine);
1467 if (remainingHours > 0)
1468 {
1469 return "nextRestock".lang(lang.lang(), Date.GetText(remainingHours) ?? "");
1470 }
1471 return lang.lang();
1472 }
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 638 of file Trait.cs.

639 {
640 return false;
641 }

Referenced by AI_Idle.TryPerformIdleUse().

◆ Install()

void Trait.Install ( bool  byPlayer)
inline

Definition at line 1079 of file Trait.cs.

1080 {
1081 if (Electricity != 0)
1082 {
1083 EClass._zone.dirtyElectricity = true;
1084 if (Electricity > 0)
1085 {
1086 EClass._zone.electricity += Electricity;
1087 EClass.pc.PlaySound("electricity_on");
1088 }
1089 }
1090 TryToggle();
1093 {
1094 owner.PlaySound("fire");
1095 }
1096 OnInstall(byPlayer);
1097 }
void RecalculateFOV()
Definition: Card.cs:6011
bool isOn
Definition: Card.cs:526
static Chara pc
Definition: EClass.cs:14
virtual void TryToggle()
Definition: Trait.cs:1125
virtual void OnInstall(bool byPlayer)
Definition: Trait.cs:1117
virtual int Electricity
Definition: Trait.cs:102
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 1319 of file Trait.cs.

1320 {
1321 return GetFuelValue(s) > 0;
1322 }

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

◆ IsFuel() [2/2]

bool Trait.IsFuel ( Thing  t)
inline

Definition at line 1324 of file Trait.cs.

1325 {
1326 return GetFuelValue(t) > 0;
1327 }

◆ IsFuelEnough()

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

Definition at line 1302 of file Trait.cs.

1303 {
1304 if (!IsRequireFuel)
1305 {
1306 return true;
1307 }
1308 if (owner.c_charges >= FuelCost * num)
1309 {
1310 return true;
1311 }
1312 if (owner.autoRefuel)
1313 {
1314 TryRefuel(FuelCost * num - owner.c_charges, excludes);
1315 }
1316 return owner.c_charges >= FuelCost * num;
1317 }
bool autoRefuel
Definition: Card.cs:610
int c_charges
Definition: Card.cs:1241
virtual int FuelCost
Definition: Trait.cs:456
bool IsRequireFuel
Definition: Trait.cs:460
void TryRefuel(int dest, List< Thing > excludes)
Definition: Trait.cs:1374

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

749 {
750 listRadiusPoints.Clear();
751 if (center == null)
752 {
753 center = owner.pos;
754 }
755 if (radius == 0)
756 {
757 listRadiusPoints.Add(center.Copy());
758 return listRadiusPoints;
759 }
760 Room room = center.cell.room;
761 if (room != null && CanUseRoomRadius)
762 {
763 foreach (Point point in room.points)
764 {
765 if (radiusType == TraitRadiusType.Farm)
766 {
767 listRadiusPoints.Add(point.Copy());
768 }
769 else if ((!onlyPassable || !point.cell.blocked) && !point.cell.HasBlock && point.cell.HasFloor)
770 {
771 listRadiusPoints.Add(point.Copy());
772 }
773 }
774 }
775 else
776 {
777 EClass._map.ForeachSphere(center.x, center.z, radius + 1, delegate(Point p)
778 {
779 if (radiusType == TraitRadiusType.Farm)
780 {
781 if (!p.cell.HasBlock || p.cell.HasFence)
782 {
783 listRadiusPoints.Add(p.Copy());
784 }
785 }
786 else if ((!onlyPassable || !p.cell.blocked) && !p.cell.HasBlock && p.cell.HasFloor && (!onlyPassable || Los.IsVisible(center, p)))
787 {
788 listRadiusPoints.Add(p.Copy());
789 }
790 });
791 }
792 if (listRadiusPoints.Count == 0)
793 {
794 listRadiusPoints.Add(center.Copy());
795 }
796 return listRadiusPoints;
797 }
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:2366
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:97
virtual TraitRadiusType radiusType
Definition: Trait.cs:95
static List< Point > listRadiusPoints
Definition: Trait.cs:29

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

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

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

Referenced by AI_Offer.Run().

◆ OfferProcess()

void Trait.OfferProcess ( Chara  cc)
inline

Definition at line 844 of file Trait.cs.

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

676 {
677 }

Referenced by Map.OnCardAddedToZone().

◆ OnBarter()

void Trait.OnBarter ( )
inline

Definition at line 1496 of file Trait.cs.

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

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(), Thing.source, 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 604 of file Trait.cs.

605 {
606 }

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

672 {
673 }

Referenced by Card.SetPlaceState().

◆ OnChildDecay()

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

Reimplemented in TraitBrewery.

Definition at line 1053 of file Trait.cs.

1054 {
1055 return true;
1056 }

◆ OnCrafted()

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

Reimplemented in TraitBlanket, TraitFakeBlock, and TraitPotionAlchemy.

Definition at line 655 of file Trait.cs.

656 {
657 }

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

984 {
985 }

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

◆ OnEat()

virtual void Trait.OnEat ( Chara  c)
inlinevirtual

Reimplemented in TraitFortuneCookie.

Definition at line 974 of file Trait.cs.

975 {
976 }

◆ OnEnterScreen()

virtual void Trait.OnEnterScreen ( )
inlinevirtual

Reimplemented in TraitToolTorch.

Definition at line 1407 of file Trait.cs.

1408 {
1410 }
virtual void RefreshRenderer()
Definition: Trait.cs:1412

Referenced by CardRenderer.OnEnterScreen().

◆ OnEquip()

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

Reimplemented in TraitEQFlower.

Definition at line 663 of file Trait.cs.

664 {
665 }

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

◆ OnHeld()

virtual void Trait.OnHeld ( )
inlinevirtual

Reimplemented in TraitDetector.

Definition at line 1037 of file Trait.cs.

1038 {
1039 }

Referenced by HotItemHeld.OnSetCurrentItem().

◆ OnImportMap()

virtual void Trait.OnImportMap ( )
inlinevirtual

Reimplemented in TraitAltar, TraitBook, TraitNewZone, and TraitNote.

Definition at line 647 of file Trait.cs.

648 {
649 }

Referenced by SerializedCards.Restore().

◆ OnInstall()

virtual void Trait.OnInstall ( bool  byPlayer)
inlinevirtual

Reimplemented in TraitSwitch.

Definition at line 1117 of file Trait.cs.

1118 {
1119 }

◆ OnOpenDoor()

virtual void Trait.OnOpenDoor ( Chara  c)
inlinevirtual

Reimplemented in TraitDoorBell.

Definition at line 1075 of file Trait.cs.

1076 {
1077 }

Referenced by TraitDoor.TryOpen().

◆ OnRead()

◆ OnRemovedFromZone()

virtual void Trait.OnRemovedFromZone ( )
inlinevirtual

Reimplemented in TraitBoat.

Definition at line 679 of file Trait.cs.

680 {
681 }

Referenced by Map.OnCardRemovedFromZone().

◆ OnRenderExtra()

virtual void Trait.OnRenderExtra ( RenderParam  p)
inlinevirtual

Reimplemented in TraitPaintBoard, and TraitShrine.

Definition at line 623 of file Trait.cs.

624 {
625 }

Referenced by CardRenderer.Draw().

◆ OnRenderTile()

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

Reimplemented in TraitLightSun, and TraitRoadSign.

Definition at line 696 of file Trait.cs.

697 {
698 if (radius == 0)
699 {
700 return;
701 }
702 Vector3 vector = point.Position();
703 vector.z += EClass.setting.render.thingZ;
704 foreach (Point item in ListPoints(point))
705 {
706 Vector3 vector2 = item.Position();
707 EClass.screen.guide.passGuideFloor.Add(vector2.x, vector2.y, vector2.z, 10f, 0.3f);
708 }
709 }
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 1063 of file Trait.cs.

1064 {
1065 }

Referenced by ButtonGrid.SetCard().

◆ OnSetCurrentItem()

virtual void Trait.OnSetCurrentItem ( )
inlinevirtual

Reimplemented in TraitToolTorch.

Definition at line 1045 of file Trait.cs.

1046 {
1047 }

◆ OnSetOwner()

virtual void Trait.OnSetOwner ( )
inlinevirtual

Definition at line 643 of file Trait.cs.

644 {
645 }

Referenced by SetOwner().

◆ OnSimulateHour()

virtual void Trait.OnSimulateHour ( VirtualDate  date)
inlinevirtual

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

Definition at line 683 of file Trait.cs.

684 {
685 }

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

1068 {
1069 }

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

◆ OnSteppedOut()

virtual void Trait.OnSteppedOut ( Chara  c)
inlinevirtual

Reimplemented in TraitGeneratorWheel, and TraitSwing.

Definition at line 1071 of file Trait.cs.

1072 {
1073 }

Referenced by Chara._Move().

◆ OnThrowGround()

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

Reimplemented in TraitDrink, and TraitDye.

Definition at line 987 of file Trait.cs.

988 {
989 }

Referenced by ActThrow.Throw().

◆ OnTickHeld()

virtual void Trait.OnTickHeld ( )
inlinevirtual

Reimplemented in TraitDetector.

Definition at line 1041 of file Trait.cs.

1042 {
1043 }

Referenced by Chara.Tick().

◆ OnToggle()

virtual void Trait.OnToggle ( )
inlinevirtual

Reimplemented in TraitJukeBox, and TraitLeverBreaker.

Definition at line 1227 of file Trait.cs.

1228 {
1229 }

◆ OnUnequip()

virtual void Trait.OnUnequip ( Chara  c)
inlinevirtual

Reimplemented in TraitEQFlower.

Definition at line 667 of file Trait.cs.

668 {
669 }

Referenced by CharaBody.Unequip().

◆ OnUninstall()

virtual void Trait.OnUninstall ( )
inlinevirtual

Definition at line 1121 of file Trait.cs.

1122 {
1123 }

◆ OnUnsetCurrentItem()

virtual void Trait.OnUnsetCurrentItem ( )
inlinevirtual

Reimplemented in TraitToolTorch.

Definition at line 1049 of file Trait.cs.

1050 {
1051 }

◆ OnUse() [1/3]

◆ OnUse() [2/3]

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

Reimplemented in TraitDye, and TraitFoodMeat.

Definition at line 1015 of file Trait.cs.

1016 {
1017 return true;
1018 }

◆ OnUse() [3/3]

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

Reimplemented in TraitPotionEmpty.

Definition at line 1020 of file Trait.cs.

1021 {
1022 return true;
1023 }

◆ PlayToggleEffect()

virtual void Trait.PlayToggleEffect ( bool  silent)
inlinevirtual

Reimplemented in TraitWoodMill.

Definition at line 1181 of file Trait.cs.

1182 {
1183 bool flag = ToggleType == ToggleType.Fire;
1184 bool isOn = owner.isOn;
1185 switch (ToggleType)
1186 {
1187 case ToggleType.Lever:
1188 if (!silent)
1189 {
1190 owner.Say("lever", EClass.pc, owner);
1191 owner.PlaySound("switch_lever");
1192 }
1193 return;
1194 case ToggleType.Curtain:
1195 if (!silent)
1196 {
1197 owner.Say(isOn ? "close" : "open", EClass.pc, owner);
1198 owner.PlaySound("Material/leather_drop");
1199 }
1202 return;
1203 case ToggleType.None:
1204 return;
1205 }
1206 if (isOn)
1207 {
1208 if (!silent)
1209 {
1210 owner.Say(flag ? "toggle_fire" : "toggle_ele", EClass.pc, owner);
1212 }
1215 }
1216 else
1217 {
1218 if (!silent)
1219 {
1221 }
1224 }
1225 }
void Say(string lang, string ref1=null, string ref2=null)
Definition: Card.cs:6446
void RefreshNeighborTiles()
Definition: Point.cs:1256
virtual string IdSoundToggleOff
Definition: Trait.cs:493
virtual string IdSoundToggleOn
Definition: Trait.cs:477

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

1413 {
1414 if (owner.renderer.isSynced && !IdToggleExtra.IsEmpty())
1415 {
1416 if (owner.isOn)
1417 {
1419 }
1420 else
1421 {
1423 }
1424 }
1425 }
void AddExtra(string id)
void RemoveExtra(string id)
CardRenderer renderer
Definition: Card.cs:57
string IdToggleExtra
Definition: Trait.cs:462

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

◆ Refuel()

void Trait.Refuel ( Thing  t)
inline

Definition at line 1361 of file Trait.cs.

1362 {
1363 t.PlaySoundDrop(spatial: false);
1365 Msg.Say("fueled", t);
1366 if (!owner.isOn)
1367 {
1368 owner.trait.Toggle(on: true);
1369 }
1370 t.Destroy();
1372 }
void PlayAnime(AnimeID id, bool force)
void ModCharge(int a, bool destroy=false)
Definition: Card.cs:3799
void Destroy()
Definition: Card.cs:4806
void PlaySoundDrop(bool spatial=true)
Definition: Card.cs:5784
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:1147

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

1428 {
1429 if (owner.isThing && !owner.Thing.source.attackType.IsEmpty() && owner.ammoData != null)
1430 {
1431 t.SetText(owner.c_ammo.ToString() ?? "", FontColor.Charge);
1432 t.SetActive(enable: true);
1433 }
1434 else if (owner.Num == 1 && ShowCharges && owner.IsIdentified)
1435 {
1436 t.SetText(owner.c_charges.ToString() ?? "", FontColor.Charge);
1437 t.SetActive(enable: true);
1438 }
1439 else
1440 {
1441 t.SetText(owner.Num.ToShortNumber(), FontColor.ButtonGrid);
1442 t.SetActive(owner.Num > 1);
1443 }
1444 }
FontColor
Definition: FontColor.cs:2
virtual bool isThing
Definition: Card.cs:2017
int c_ammo
Definition: Card.cs:1421
Thing ammoData
Definition: Card.cs:1745
bool IsIdentified
Definition: Card.cs:2313
virtual bool ShowCharges
Definition: Trait.cs:328
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 632 of file Trait.cs.

633 {
634 owner = _owner;
635 OnSetOwner();
636 }
virtual void OnSetOwner()
Definition: Trait.cs:643

References OnSetOwner(), and owner.

Referenced by Card.ApplyTrait().

◆ SetParams()

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

Definition at line 651 of file Trait.cs.

652 {
653 }

◆ Toggle()

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

Definition at line 1147 of file Trait.cs.

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

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

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

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

884 {
885 return true;
886 }

Referenced by AI_Read.Run().

◆ TryRefuel()

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

Definition at line 1374 of file Trait.cs.

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

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

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

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

1126 {
1127 if (!owner.IsInstalled)
1128 {
1129 return;
1130 }
1131 if (Electricity < 0 && owner.isOn && EClass._zone.electricity < 0)
1132 {
1133 Toggle(on: false, silent: true);
1134 }
1135 else if (AutoToggle)
1136 {
1137 int num = ((EClass._map.config.hour == -1) ? EClass.world.date.hour : EClass._map.config.hour);
1138 bool on = !IsNightOnlyLight || num >= 17 || num <= 5 || EClass._map.IsIndoor;
1140 {
1141 on = false;
1142 }
1143 Toggle(on, silent: true);
1144 }
1145 }
bool IsInstalled
Definition: Card.cs:2317
Cell Cell
Definition: Card.cs:1991
bool HasRoof
Definition: Cell.cs:648
int hour
Definition: Date.cs:74
int hour
Definition: MapConfig.cs:92
bool IsIndoor
Definition: Map.cs:131
MapConfig config
Definition: Map.cs:37
virtual bool AutoToggle
Definition: Trait.cs:385
virtual bool IsNightOnlyLight
Definition: Trait.cs:421
bool IsRaining
Definition: Weather.cs:117
Weather weather
Definition: World.cs:12

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

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

◆ Uninstall()

void Trait.Uninstall ( )
inline

Definition at line 1099 of file Trait.cs.

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

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

722 {
723 }

◆ WriteNote()

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

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

Definition at line 945 of file Trait.cs.

946 {
947 }

Member Data Documentation

◆ listRadiusPoints

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

Definition at line 29 of file Trait.cs.

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

◆ owner

Card Trait.owner

Definition at line 27 of file Trait.cs.

Referenced by Chara._Move(), InvOwnerRecycle._OnProcess(), TraitGodStatue._OnUse(), TraitShrine._OnUse(), TraitSwitch.ActivateTrap(), TraitBed.AddHolder(), TraitHouseBoard.ApplyData(), ActMelee.Attack(), FactionBranch.CalcInnIncome(), TraitTrainingDummyArmor.CalcPV(), TraitTrolley.CanActivate(), TraitBed.CanAssign(), TraitNewZone.CanAutoEnter(), TraitDoor.CanClose(), TaskDrawWater.CanProgress(), TaskPourWater.CanProgress(), TraitScroll.CanRead(), TraitAmmo.CanStackTo(), TraitAncientbook.CanStackTo(), TraitFood.CanStackTo(), TraitFoodEggFertilized.CanStackTo(), TraitMonsterBall.CanStackTo(), 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(), TraitPotionAlchemy.GetPower(), 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(), TraitFakeBlock.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(), ActClearWater.Perform(), 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(), TraitFakeBlock.TrySetHeldAct(), TraitRod.TrySetHeldAct(), TraitSalesTag.TrySetHeldAct(), TraitSyringeGene.TrySetHeldAct(), TraitSyringeHeaven.TrySetHeldAct(), TraitToolBuild.TrySetHeldAct(), TraitToolSickle.TrySetHeldAct(), TraitToolTorch.TrySetHeldAct(), TraitToolWaterCan.TrySetHeldAct(), TraitToolWaterPot.TrySetHeldAct(), HotItemHeld.TrySetToolAct(), TraitSeed.TrySprout(), TraitTeleporter.TryTeleport(), 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 544 of file Trait.cs.

◆ AllowSell

virtual bool Trait.AllowSell
get

Definition at line 520 of file Trait.cs.

521 {
522 get
523 {
524 if (CurrencyType != CurrencyType.Money)
525 {
526 return CurrencyType == CurrencyType.None;
527 }
528 return true;
529 }
530 }

◆ AlwaysHideOnLowWall

virtual bool Trait.AlwaysHideOnLowWall
get

Definition at line 350 of file Trait.cs.

Referenced by BaseTileMap.DrawTile().

◆ AutoToggle

virtual bool Trait.AutoToggle
get

Definition at line 384 of file Trait.cs.

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

◆ CanAutofire

virtual bool Trait.CanAutofire
get

Definition at line 142 of file Trait.cs.

Referenced by Thing.CanAutoFire().

◆ CanBeAttacked

virtual bool Trait.CanBeAttacked
get

◆ CanBeDestroyed

◆ CanBeDisassembled

virtual bool Trait.CanBeDisassembled
get

Definition at line 302 of file Trait.cs.

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

Referenced by TaskHarvest.TryGetAct().

◆ CanBeDropped

◆ CanBeHallucinated

virtual bool Trait.CanBeHallucinated
get

Definition at line 296 of file Trait.cs.

Referenced by CardRenderer.Draw().

◆ CanBeHeld

virtual bool Trait.CanBeHeld
get

◆ CanBeHeldAsFurniture

virtual bool Trait.CanBeHeldAsFurniture
get

Definition at line 334 of file Trait.cs.

335 {
336 get
337 {
338 if (!(this is TraitTool))
339 {
340 return IsThrowMainAction;
341 }
342 return true;
343 }
344 }
virtual bool IsThrowMainAction
Definition: Trait.cs:181

◆ CanBeMasked

virtual bool Trait.CanBeMasked
get

Definition at line 258 of file Trait.cs.

◆ CanBeOnlyBuiltInHome

virtual bool Trait.CanBeOnlyBuiltInHome
get

◆ CanBeShipped

virtual bool Trait.CanBeShipped
get

Definition at line 314 of file Trait.cs.

315 {
316 get
317 {
318 if (!owner.IsImportant)
319 {
320 return !owner.IsUnique;
321 }
322 return false;
323 }
324 }
bool IsImportant
Definition: Card.cs:2041
bool IsUnique
Definition: Card.cs:2027

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

◆ CanBeSmashedToDeath

virtual bool Trait.CanBeSmashedToDeath
get

Definition at line 294 of file Trait.cs.

Referenced by Card.Die().

◆ CanBeStolen

virtual bool Trait.CanBeStolen
get

Definition at line 278 of file Trait.cs.

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

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

◆ CanBeTeleported

virtual bool Trait.CanBeTeleported
get

Definition at line 166 of file Trait.cs.

Referenced by Card.Teleport().

◆ CanBuildInTown

virtual bool Trait.CanBuildInTown
get

Definition at line 264 of file Trait.cs.

265 {
266 get
267 {
269 {
271 }
272 return false;
273 }
274 }
TileType TileType
Definition: Card.cs:2071
virtual bool IsBlockSight
Definition: TileType.cs:157
virtual bool IsBlockPass
Definition: TileType.cs:153

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

◆ CanChangeHeight

virtual bool Trait.CanChangeHeight
get

Definition at line 148 of file Trait.cs.

Referenced by HotItemHeld.CanChangeHeightByWheel().

◆ CanCopyInBlueprint

virtual bool Trait.CanCopyInBlueprint
get

Definition at line 152 of file Trait.cs.

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

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

◆ CanExtendBuild

virtual bool Trait.CanExtendBuild
get

Definition at line 168 of file Trait.cs.

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

◆ CanHarvest

virtual bool Trait.CanHarvest
get

Definition at line 91 of file Trait.cs.

Referenced by TaskHarvest.TryGetAct().

◆ CanName

virtual bool Trait.CanName
get

Definition at line 144 of file Trait.cs.

Referenced by ActPlan._Update().

◆ CanOnlyCarry

◆ CanOpenContainer

virtual bool Trait.CanOpenContainer
get

Definition at line 232 of file Trait.cs.

233 {
234 get
235 {
236 if (IsContainer)
237 {
238 return !owner.isNPCProperty;
239 }
240 return false;
241 }
242 }
bool isNPCProperty
Definition: Card.cs:538
virtual bool IsContainer
Definition: Trait.cs:212

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

◆ CanPutAway

virtual bool Trait.CanPutAway
get

Definition at line 146 of file Trait.cs.

◆ CanSearchContent

virtual bool Trait.CanSearchContent
get

Definition at line 216 of file Trait.cs.

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

Referenced by ThingContainer._List().

◆ CanStack

virtual bool Trait.CanStack
get

◆ CanUseContent

virtual bool Trait.CanUseContent
get

Definition at line 214 of file Trait.cs.

Referenced by QuestDeliver.IsDestThing().

◆ CanUseRoomRadius

virtual bool Trait.CanUseRoomRadius
get

Definition at line 97 of file Trait.cs.

Referenced by ListPoints().

◆ ColorExtra

virtual ? Color Trait.ColorExtra
get

Definition at line 442 of file Trait.cs.

◆ ContainerType

virtual ContainerType Trait.ContainerType
get

Definition at line 246 of file Trait.cs.

◆ CopyShop

virtual CopyShopType Trait.CopyShop
get

Definition at line 510 of file Trait.cs.

Referenced by OnBarter().

◆ CostRerollShop

virtual int Trait.CostRerollShop
get

Definition at line 532 of file Trait.cs.

533 {
534 get
535 {
536 if (CurrencyType == CurrencyType.Money || CurrencyType == CurrencyType.Influence)
537 {
538 return 1;
539 }
540 return 0;
541 }
542 }

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

◆ CraftNum

virtual int Trait.CraftNum
get

◆ CurrencyType

virtual CurrencyType Trait.CurrencyType
get

Definition at line 516 of file Trait.cs.

Referenced by TraitVendingMachine.OnUse().

◆ Decay

virtual int Trait.Decay
get

Definition at line 120 of file Trait.cs.

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

◆ DecaySpeed

virtual int Trait.DecaySpeed
get

Definition at line 122 of file Trait.cs.

◆ DecaySpeedChild

virtual int Trait.DecaySpeedChild
get

Definition at line 124 of file Trait.cs.

◆ DefaultStock

virtual int Trait.DefaultStock
get

Definition at line 128 of file Trait.cs.

Referenced by OnBarter().

◆ DisableAutoCombat

virtual bool Trait.DisableAutoCombat
get

Definition at line 198 of file Trait.cs.

Referenced by ActPlan._Update().

◆ DropChance

virtual float Trait.DropChance
get

Definition at line 356 of file Trait.cs.

Referenced by Card.SpawnLoot().

◆ EffectDead

virtual EffectDead Trait.EffectDead
get

Definition at line 250 of file Trait.cs.

Referenced by Card.Die().

◆ Electricity

virtual int Trait.Electricity
get

Definition at line 101 of file Trait.cs.

102 {
103 get
104 {
105 if (!owner.isThing)
106 {
107 return 0;
108 }
109 int electricity = owner.Thing.source.electricity;
110 if (electricity > 0 || EClass._zone == null || EClass._zone.branch == null)
111 {
112 return electricity;
113 }
114 return electricity * 100 / (100 + EClass._zone.branch.Evalue(2700) / 2);
115 }
116 }
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 352 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 456 of file Trait.cs.

Referenced by AI_UseCrafter.Run().

◆ GuidePriotiy

virtual int Trait.GuidePriotiy
get

Definition at line 99 of file Trait.cs.

Referenced by DramaCustomSequence.GetListGuide().

◆ HasCharges

virtual bool Trait.HasCharges
get

Definition at line 326 of file Trait.cs.

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

◆ HaveUpdate

virtual bool Trait.HaveUpdate
get

Definition at line 136 of file Trait.cs.

◆ HideInAdv

virtual bool Trait.HideInAdv
get

Definition at line 346 of file Trait.cs.

◆ HoldAsDefaultInteraction

virtual bool Trait.HoldAsDefaultInteraction
get

Definition at line 130 of file Trait.cs.

Referenced by InvOwner.GetAutoUseLang().

◆ IDActorEx

virtual string Trait.IDActorEx
get

Definition at line 174 of file Trait.cs.

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

◆ IDInvStyle

virtual string Trait.IDInvStyle
get

Definition at line 172 of file Trait.cs.

◆ IdleUseChance

virtual int Trait.IdleUseChance
get

Definition at line 360 of file Trait.cs.

Referenced by AI_Idle.TryPerformIdleUse().

◆ IdNoRestock

virtual string Trait.IdNoRestock
get

Definition at line 358 of file Trait.cs.

Referenced by OnBarter().

◆ IdSkin

virtual int Trait.IdSkin
get

Definition at line 45 of file Trait.cs.

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

◆ IdSoundToggleOff

virtual string Trait.IdSoundToggleOff
get

Definition at line 492 of file Trait.cs.

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

◆ IdSoundToggleOn

virtual string Trait.IdSoundToggleOn
get

Definition at line 476 of file Trait.cs.

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

◆ IdToggleExtra

string Trait.IdToggleExtra
get

Definition at line 462 of file Trait.cs.

◆ IgnoreLastStackHeight

virtual bool Trait.IgnoreLastStackHeight
get

Definition at line 118 of file Trait.cs.

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

◆ InstallBottomPriority

virtual int Trait.InstallBottomPriority
get

Definition at line 89 of file Trait.cs.

Referenced by Card.SetPlaceState().

◆ InvertHeldSprite

virtual bool Trait.InvertHeldSprite
get

Definition at line 71 of file Trait.cs.

Referenced by CharaActorPCC.OnRender().

◆ InvGridSize

virtual InvGridSize Trait.InvGridSize
get

Definition at line 200 of file Trait.cs.

201 {
202 get
203 {
204 if (!owner.IsPC)
205 {
206 return InvGridSize.Default;
207 }
208 return InvGridSize.Backpack;
209 }
210 }
InvGridSize
Definition: InvGridSize.cs:2
virtual bool IsPC
Definition: Card.cs:2079

◆ IsAltar

virtual bool Trait.IsAltar
get

Definition at line 254 of file Trait.cs.

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

◆ IsAnimeOn

virtual bool Trait.IsAnimeOn
get

Definition at line 370 of file Trait.cs.

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

◆ IsBlendBase

virtual bool Trait.IsBlendBase
get

Definition at line 260 of file Trait.cs.

Referenced by ActPlan._Update().

◆ IsBlockPath

virtual bool Trait.IsBlockPath
get

Definition at line 53 of file Trait.cs.

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

◆ IsBlockSight

virtual bool Trait.IsBlockSight
get

Definition at line 55 of file Trait.cs.

Referenced by Cell.Refresh().

◆ IsChangeFloorHeight

virtual bool Trait.IsChangeFloorHeight
get

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

Referenced by Cell.Refresh().

◆ IsFridge

virtual bool Trait.IsFridge
get

Definition at line 126 of file Trait.cs.

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

◆ IsGround

virtual bool Trait.IsGround
get

Definition at line 67 of file Trait.cs.

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

◆ IsHomeItem

virtual bool Trait.IsHomeItem
get

Definition at line 252 of file Trait.cs.

◆ IsLighting

bool Trait.IsLighting
get

Definition at line 396 of file Trait.cs.

397 {
398 get
399 {
400 if (ToggleType != ToggleType.Fire)
401 {
402 return ToggleType == ToggleType.Light;
403 }
404 return true;
405 }
406 }

◆ IsLightOn

virtual bool Trait.IsLightOn
get

Definition at line 408 of file Trait.cs.

409 {
410 get
411 {
412 if (!owner.isChara)
413 {
414 return owner.isOn;
415 }
416 return true;
417 }
418 }

Referenced by Card.GetLightRadius().

◆ IsNightOnlyLight

virtual bool Trait.IsNightOnlyLight
get

Definition at line 420 of file Trait.cs.

421 {
422 get
423 {
424 if (ToggleType != ToggleType.Electronics && IsToggle)
425 {
426 return !owner.isRoofItem;
427 }
428 return false;
429 }
430 }
bool isRoofItem
Definition: Card.cs:562

◆ IsNoShop

virtual bool Trait.IsNoShop
get

Definition at line 65 of file Trait.cs.

Referenced by OnBarter().

◆ IsOn

virtual bool Trait.IsOn
get

Definition at line 368 of file Trait.cs.

◆ IsOnlyUsableByPc

virtual bool Trait.IsOnlyUsableByPc
get

Definition at line 69 of file Trait.cs.

◆ IsOpenPath

virtual bool Trait.IsOpenPath
get

Definition at line 61 of file Trait.cs.

Referenced by Cell.Refresh().

◆ IsOpenSight

virtual bool Trait.IsOpenSight
get

Definition at line 59 of file Trait.cs.

Referenced by Cell.Refresh().

◆ IsRequireFuel

bool Trait.IsRequireFuel
get

Definition at line 460 of file Trait.cs.

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

◆ IsRestSpot

virtual bool Trait.IsRestSpot
get

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

◆ IsThrowMainAction

virtual bool Trait.IsThrowMainAction
get

Definition at line 180 of file Trait.cs.

181 {
182 get
183 {
184 if (!owner.HasTag(CTAG.throwWeapon))
185 {
186 return owner.IsMeleeWeapon;
187 }
188 return true;
189 }
190 }
CTAG
Definition: CTAG.cs:2
bool HasTag(CTAG tag)
Definition: Card.cs:2531
bool IsMeleeWeapon
Definition: Card.cs:2177

Referenced by HotItemHeld.TrySetAct().

◆ IsToggle

bool Trait.IsToggle
get

Definition at line 382 of file Trait.cs.

◆ IsTool

virtual bool Trait.IsTool
get

◆ LangBarter

virtual string Trait.LangBarter
get

Definition at line 550 of file Trait.cs.

◆ langNote

virtual string Trait.langNote
get

Definition at line 170 of file Trait.cs.

Referenced by TraitItem.WriteNote().

◆ LangUse

virtual string Trait.LangUse
get

Definition at line 366 of file Trait.cs.

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

◆ LevelAsQuality

virtual bool Trait.LevelAsQuality
get

Definition at line 192 of file Trait.cs.

Referenced by Card.Create().

◆ MaskOnBuild

virtual bool Trait.MaskOnBuild
get

Definition at line 176 of file Trait.cs.

Referenced by RecipeCard.Build().

◆ MaxFuel

virtual int Trait.MaxFuel
get

Definition at line 444 of file Trait.cs.

445 {
446 get
447 {
448 if (ToggleType != ToggleType.Fire)
449 {
450 return 0;
451 }
452 return 100;
453 }
454 }

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

◆ Name

virtual string Trait.Name
get

Definition at line 47 of file Trait.cs.

Referenced by LayerHome.RefreshSpots().

◆ NoHeldDir

virtual bool Trait.NoHeldDir
get

Definition at line 348 of file Trait.cs.

Referenced by CharaRenderer.DrawHeld().

◆ NumCopyItem

virtual int Trait.NumCopyItem
get

Definition at line 512 of file Trait.cs.

Referenced by OnBarter().

◆ Params

string [] Trait.Params
get

Definition at line 31 of file Trait.cs.

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

Referenced by GetParam(), and GetParamInt().

◆ PriceType

virtual PriceType Trait.PriceType
get

Definition at line 518 of file Trait.cs.

Referenced by TraitVendingMachine.OnUse().

◆ radius

virtual int Trait.radius
get

◆ radiusType

virtual TraitRadiusType Trait.radiusType
get

Definition at line 95 of file Trait.cs.

Referenced by ListPoints().

◆ RecipeCat

virtual string Trait.RecipeCat
get

Definition at line 362 of file Trait.cs.

Referenced by BuildMenu.RefreshCategory().

◆ RefCardName

virtual RefCardName Trait.RefCardName
get

Definition at line 51 of file Trait.cs.

◆ RenderExtra

virtual bool Trait.RenderExtra
get

Definition at line 354 of file Trait.cs.

Referenced by CardRenderer.Draw().

◆ ReqHarvest

virtual string Trait.ReqHarvest
get

Definition at line 300 of file Trait.cs.

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

◆ RequireFullStackCheck

virtual bool Trait.RequireFullStackCheck
get

Definition at line 196 of file Trait.cs.

◆ RestockDay

virtual int Trait.RestockDay
get

Definition at line 546 of file Trait.cs.

◆ ShopLv

virtual int Trait.ShopLv
get

Definition at line 508 of file Trait.cs.

◆ ShopType

virtual ShopType Trait.ShopType
get

Definition at line 514 of file Trait.cs.

Referenced by Zone.GetRandomVisitPos().

◆ ShouldRefreshTile

virtual bool Trait.ShouldRefreshTile
get

Definition at line 75 of file Trait.cs.

76 {
77 get
78 {
79 if (!IsBlockPath && !IsOpenSight)
80 {
81 return IsBlockSight;
82 }
83 return true;
84 }
85 }
virtual bool IsBlockPath
Definition: Trait.cs:53
virtual bool IsBlockSight
Definition: Trait.cs:55
virtual bool IsOpenSight
Definition: Trait.cs:59

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

◆ ShouldTryRefreshRoom

virtual bool Trait.ShouldTryRefreshRoom
get

Definition at line 87 of file Trait.cs.

Referenced by Card.SetPlaceState().

◆ ShowAsTool

virtual bool Trait.ShowAsTool
get

Definition at line 332 of file Trait.cs.

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

◆ ShowCharges

virtual bool Trait.ShowCharges
get

Definition at line 328 of file Trait.cs.

Referenced by Thing.GetName().

◆ ShowChildrenNumber

virtual bool Trait.ShowChildrenNumber
get

Definition at line 330 of file Trait.cs.

◆ ShowContextOnPick

virtual bool Trait.ShowContextOnPick
get

Definition at line 178 of file Trait.cs.

Referenced by AM_MoveInstalled.OnProcessTiles().

◆ ShowFuelWindow

virtual bool Trait.ShowFuelWindow
get

Definition at line 458 of file Trait.cs.

◆ ShowOrbit

virtual bool Trait.ShowOrbit
get

Definition at line 134 of file Trait.cs.

Referenced by CardRenderer.TrySpawnOrbit().

◆ SlaverType

virtual SlaverType Trait.SlaverType
get

Definition at line 548 of file Trait.cs.

◆ TextNextRestock

string Trait.TextNextRestock
get

Definition at line 552 of file Trait.cs.

◆ TextNextRestockPet

string Trait.TextNextRestockPet
get

Definition at line 554 of file Trait.cs.

◆ ThrowType

virtual ThrowType Trait.ThrowType
get

Definition at line 248 of file Trait.cs.

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

◆ tileMode

virtual TileMode Trait.tileMode
get

Definition at line 432 of file Trait.cs.

◆ tileType

virtual TileType Trait.tileType
get

◆ ToggleType

virtual ToggleType Trait.ToggleType
get

Definition at line 464 of file Trait.cs.

465 {
466 get
467 {
468 if (Electricity >= 0)
469 {
470 return ToggleType.None;
471 }
472 return ToggleType.Electronics;
473 }
474 }

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

◆ UseAltTiles

virtual bool Trait.UseAltTiles
get

Definition at line 434 of file Trait.cs.

◆ UseDummyTile

virtual bool Trait.UseDummyTile
get

Definition at line 194 of file Trait.cs.

Referenced by CardRenderer.Draw().

◆ UseExtra

virtual bool Trait.UseExtra
get

Definition at line 438 of file Trait.cs.

◆ UseLightColor

virtual bool Trait.UseLightColor
get

Definition at line 440 of file Trait.cs.

◆ UseLowblock

virtual bool Trait.UseLowblock
get

Definition at line 436 of file Trait.cs.

Referenced by BaseTileMap.DrawTile().

◆ WeightMod

virtual byte Trait.WeightMod
get

Definition at line 43 of file Trait.cs.

Referenced by Cell.Refresh().


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