Elin Decompiled Documentation EA 23.201 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 TraitVoidgate 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 IsLocalAct [get]
 
virtual bool IsBlendBase [get]
 
virtual bool CanBeOnlyBuiltInHome [get]
 
virtual bool CanBuildInTown [get]
 
virtual bool CanBeHeld [get]
 
virtual bool CanBeStolen [get]
 
virtual bool CanOnlyCarry [get]
 
virtual bool CanBeDestroyed [get]
 
virtual bool CanBeSmashedToDeath [get]
 
virtual bool CanBeHallucinated [get]
 
virtual bool CanBeDropped [get]
 
virtual string ReqHarvest [get]
 
virtual bool CanBeDisassembled [get]
 
virtual bool CanBeShipped [get]
 
virtual bool HasCharges [get]
 
virtual bool ShowCharges [get]
 
virtual bool ShowChildrenNumber [get]
 
virtual bool ShowAsTool [get]
 
virtual bool CanBeHeldAsFurniture [get]
 
virtual bool HideInAdv [get]
 
virtual bool NoHeldDir [get]
 
virtual bool AlwaysHideOnLowWall [get]
 
bool ExistsOnMap [get]
 
virtual bool RenderExtra [get]
 
virtual float DropChance [get]
 
virtual string IdNoRestock [get]
 
virtual int IdleUseChance [get]
 
virtual string RecipeCat [get]
 
virtual bool IsTool [get]
 
virtual string LangUse [get]
 
virtual bool IgnoreOnSteppedWhenMoving [get]
 
virtual bool IsOn [get]
 
virtual bool IsAnimeOn [get]
 
bool IsToggle [get]
 
virtual bool AutoToggle [get]
 
bool IsLighting [get]
 
virtual bool IsLightOn [get]
 
virtual bool IsNightOnlyLight [get]
 
virtual TileMode tileMode [get]
 
virtual bool UseAltTiles [get]
 
virtual bool UseLowblock [get]
 
virtual bool UseExtra [get]
 
virtual bool UseLightColor [get]
 
virtual ? Color ColorExtra [get]
 
virtual int MaxFuel [get]
 
virtual int FuelCost [get]
 
virtual bool ShowFuelWindow [get]
 
bool IsRequireFuel [get]
 
string IdToggleExtra [get]
 
virtual ToggleType ToggleType [get]
 
virtual string IdSoundToggleOn [get]
 
virtual string IdSoundToggleOff [get]
 
virtual int ShopLv [get]
 
virtual CopyShopType CopyShop [get]
 
virtual int NumCopyItem [get]
 
virtual ShopType ShopType [get]
 
virtual CurrencyType CurrencyType [get]
 
virtual PriceType PriceType [get]
 
virtual bool AllowSell [get]
 
virtual int CostRerollShop [get]
 
virtual bool AllowCriminal [get]
 
virtual int RestockDay [get]
 
virtual SlaverType SlaverType [get]
 
virtual string LangBarter [get]
 
string TextNextRestock [get]
 
string TextNextRestockPet [get]
 
- Properties inherited from EClass
static Game game [get]
 
static bool AdvMode [get]
 
static Player player [get]
 
static Chara pc [get]
 
static UI ui [get]
 
static Map _map [get]
 
static Zone _zone [get]
 
static FactionBranch Branch [get]
 
static FactionBranch BranchOrHomeBranch [get]
 
static Faction Home [get]
 
static Faction Wilds [get]
 
static Scene scene [get]
 
static BaseGameScreen screen [get]
 
static GameSetting setting [get]
 
static GameData gamedata [get]
 
static ColorProfile Colors [get]
 
static World world [get]
 
static SourceManager sources [get]
 
static SourceManager editorSources [get]
 
static SoundManager Sound [get]
 
static CoreDebug debug [get]
 

Additional Inherited Members

- Static Public Member Functions inherited from EClass
static int rndSeed (int a, int seed)
 
static int rnd (long a)
 
static int rnd (int a)
 
static int curve (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 603 of file Trait.cs.

604 {
605 return false;
606 }

Referenced by InvOwnerBlend.ShouldShowGuide().

◆ CanBuiltAt()

virtual bool Trait.CanBuiltAt ( Point  p)
inlinevirtual

Reimplemented in TraitSpotExit.

Definition at line 720 of file Trait.cs.

721 {
722 return true;
723 }

Referenced by TileType._HitTest().

◆ CanChildDecay()

virtual bool Trait.CanChildDecay ( Card  c)
inlinevirtual

Reimplemented in TraitBrewery, and TraitContainerCompost.

Definition at line 1062 of file Trait.cs.

1063 {
1064 return false;
1065 }

Referenced by Card.DecayNatural().

◆ CanCook()

virtual bool Trait.CanCook ( Card  c)
inlinevirtual

Definition at line 813 of file Trait.cs.

814 {
815 if (c == null || !ExistsOnMap || !(c.trait is TraitFood))
816 {
817 return false;
818 }
819 return true;
820 }
Trait trait
Definition: Card.cs:51
bool ExistsOnMap
Definition: Trait.cs:354

References Card.trait.

Referenced by AI_Cook.IsValidTarget().

◆ CanCopy()

virtual bool Trait.CanCopy ( Thing  t)
inlinevirtual

Reimplemented in TraitDemitas, and TraitKettle.

Definition at line 1450 of file Trait.cs.

1451 {
1452 return false;
1453 }

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

983 {
984 return false;
985 }

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

974 {
975 return owner.HasElement(10);
976 }
bool HasElement(int ele, int req=1)
Definition: Card.cs:5725
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 835 of file Trait.cs.

836 {
837 if (tg == null || tg.isChara || tg.trait.CanOnlyCarry)
838 {
839 return false;
840 }
841 if (tg.rarity == Rarity.Artifact)
842 {
843 return false;
844 }
845 return true;
846 }
Rarity
Definition: Rarity.cs:2
Rarity rarity
Definition: Card.cs:300
virtual bool isChara
Definition: Card.cs:2045
virtual bool CanOnlyCarry
Definition: Trait.cs:292

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

965 {
966 return false;
967 }

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

1001 {
1002 return false;
1003 }

◆ CanUse() [3/3]

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

Reimplemented in TraitPotionEmpty.

Definition at line 1005 of file Trait.cs.

1006 {
1007 return false;
1008 }

◆ CompareTo()

virtual int Trait.CompareTo ( Card  b)
inlinevirtual

Reimplemented in TraitEffect.

Definition at line 715 of file Trait.cs.

716 {
717 return 0;
718 }

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

579 {
580 return r.idFactory == ((owner.sourceCard.origin != null) ? owner.sourceCard.origin.id : owner.id);
581 }
CardRow origin
Definition: CardRow.cs:49
string id
Definition: CardRow.cs:7
string id
Definition: Card.cs:33
virtual CardRow sourceCard
Definition: Card.cs:2093

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

823 {
824 if (!ExistsOnMap)
825 {
826 return;
827 }
828 foreach (Card item in owner.pos.ListCards())
829 {
830 owner.PlaySound("cook");
831 item.renderer.PlayAnime(AnimeID.Jump);
832 }
833 }
AnimeID
Definition: AnimeID.cs:2
Definition: Card.cs:11
SoundSource PlaySound(string id, float v=1f, bool spatial=true)
Definition: Card.cs:5939
Point pos
Definition: Card.cs:57
List< Card > ListCards(bool includeMasked=false)
Definition: Point.cs:1035

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

Referenced by AI_Cook.Run().

◆ CreateStock()

Thing Trait.CreateStock ( )
inline

Definition at line 2071 of file Trait.cs.

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

613 {
614 return 0;
615 }

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

◆ GetBuildModeRecipe()

virtual Recipe Trait.GetBuildModeRecipe ( )
inlinevirtual

Reimplemented in TraitTile.

Definition at line 808 of file Trait.cs.

809 {
810 return Recipe.Create(owner.Thing);
811 }
virtual Thing Thing
Definition: Card.cs:2020
Definition: Recipe.cs:7
static Recipe Create(RecipeSource _source, int idMat=-1, Thing ing=null)
Definition: Recipe.cs:326

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

Referenced by BuildMenu.RefreshCategory().

◆ GetFuelValue() [1/2]

int Trait.GetFuelValue ( string  id)
inline

Definition at line 1342 of file Trait.cs.

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

◆ GetFuelValue() [2/2]

int Trait.GetFuelValue ( Thing  t)
inline

Definition at line 1333 of file Trait.cs.

1334 {
1335 if (t.c_isImportant)
1336 {
1337 return 0;
1338 }
1339 return GetFuelValue(t.id);
1340 }
bool c_isImportant
Definition: Card.cs:998
int GetFuelValue(Thing t)
Definition: Trait.cs:1333

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

599 {
600 return null;
601 }

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

632 {
633 return Emo2.none;
634 }
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 593 of file Trait.cs.

594 {
595 return null;
596 }

◆ GetName()

virtual string Trait.GetName ( )
inlinevirtual

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

Definition at line 691 of file Trait.cs.

692 {
693 return owner.sourceCard.GetText();
694 }
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 569 of file Trait.cs.

570 {
571 if (i < Params.Length)
572 {
573 return Params[i].ToInt();
574 }
575 return def;
576 }

References Params.

Referenced by TraitItemProc.OnUse().

◆ GetPoint()

Point Trait.GetPoint ( )
inline

Definition at line 729 of file Trait.cs.

730 {
731 return owner.pos;
732 }

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

735 {
736 if (radius == 0)
737 {
738 return owner.pos;
739 }
740 List<Point> list = ListPoints();
741 for (int i = 0; i < 50; i++)
742 {
743 Point point = list.RandomItem();
744 if (point.IsValid && (func == null || func(point)) && (accessChara == null || accessChara.HasAccess(point)))
745 {
746 return point;
747 }
748 }
749 return list[0];
750 }
bool HasAccess(Card c)
Definition: Chara.cs:1262
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:752

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

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

◆ GetRecipe()

virtual Recipe Trait.GetRecipe ( )
inlinevirtual

Reimplemented in TraitTile.

Definition at line 803 of file Trait.cs.

804 {
805 return Recipe.Create(owner.Thing);
806 }

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

618 {
619 return null;
620 }

Referenced by ButtonGrid.SetCard().

◆ GetRefSprite()

virtual Sprite Trait.GetRefSprite ( )
inlinevirtual

Definition at line 622 of file Trait.cs.

623 {
624 return null;
625 }

Referenced by ButtonGrid.SetCard().

◆ GetRestockedIcon()

Emo2 Trait.GetRestockedIcon ( )
inline

Definition at line 1478 of file Trait.cs.

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

954 {
955 _ = 7;
956 return owner.sourceCard._index;
957 }

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

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

643 {
644 return false;
645 }

Referenced by AI_Idle.TryPerformIdleUse().

◆ Install()

void Trait.Install ( bool  byPlayer)
inline

Definition at line 1083 of file Trait.cs.

1084 {
1085 if (Electricity != 0)
1086 {
1087 EClass._zone.dirtyElectricity = true;
1088 if (Electricity > 0)
1089 {
1090 EClass._zone.electricity += Electricity;
1091 EClass.pc.PlaySound("electricity_on");
1092 }
1093 }
1094 TryToggle();
1097 {
1098 owner.PlaySound("fire");
1099 }
1100 OnInstall(byPlayer);
1101 }
void RecalculateFOV()
Definition: Card.cs:6151
bool isOn
Definition: Card.cs:528
static Chara pc
Definition: EClass.cs:14
virtual void TryToggle()
Definition: Trait.cs:1129
virtual void OnInstall(bool byPlayer)
Definition: Trait.cs:1121
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 1323 of file Trait.cs.

1324 {
1325 return GetFuelValue(s) > 0;
1326 }

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

◆ IsFuel() [2/2]

bool Trait.IsFuel ( Thing  t)
inline

Definition at line 1328 of file Trait.cs.

1329 {
1330 return GetFuelValue(t) > 0;
1331 }

◆ IsFuelEnough()

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

Definition at line 1306 of file Trait.cs.

1307 {
1308 if (!IsRequireFuel)
1309 {
1310 return true;
1311 }
1312 if (owner.c_charges >= FuelCost * num)
1313 {
1314 return true;
1315 }
1316 if (owner.autoRefuel)
1317 {
1318 TryRefuel(FuelCost * num - owner.c_charges, excludes);
1319 }
1320 return owner.c_charges >= FuelCost * num;
1321 }
bool autoRefuel
Definition: Card.cs:612
int c_charges
Definition: Card.cs:1243
virtual int FuelCost
Definition: Trait.cs:460
bool IsRequireFuel
Definition: Trait.cs:464
void TryRefuel(int dest, List< Thing > excludes)
Definition: Trait.cs:1378

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

753 {
754 listRadiusPoints.Clear();
755 if (center == null)
756 {
757 center = owner.pos;
758 }
759 if (radius == 0)
760 {
761 listRadiusPoints.Add(center.Copy());
762 return listRadiusPoints;
763 }
764 Room room = center.cell.room;
765 if (room != null && CanUseRoomRadius)
766 {
767 foreach (Point point in room.points)
768 {
769 if (radiusType == TraitRadiusType.Farm)
770 {
771 listRadiusPoints.Add(point.Copy());
772 }
773 else if ((!onlyPassable || !point.cell.blocked) && !point.cell.HasBlock && point.cell.HasFloor)
774 {
775 listRadiusPoints.Add(point.Copy());
776 }
777 }
778 }
779 else
780 {
781 EClass._map.ForeachSphere(center.x, center.z, radius + 1, delegate(Point p)
782 {
783 if (radiusType == TraitRadiusType.Farm)
784 {
785 if (!p.cell.HasBlock || p.cell.HasFence)
786 {
787 listRadiusPoints.Add(p.Copy());
788 }
789 }
790 else if ((!onlyPassable || !p.cell.blocked) && !p.cell.HasBlock && p.cell.HasFloor && (!onlyPassable || Los.IsVisible(center, p)))
791 {
792 listRadiusPoints.Add(p.Copy());
793 }
794 });
795 }
796 if (listRadiusPoints.Count == 0)
797 {
798 listRadiusPoints.Add(center.Copy());
799 }
800 return listRadiusPoints;
801 }
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:2380
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(), TraitSpotBiome.CountNotableThing(), GetRandomPoint(), Point.IsInSpot< T >(), OnRenderTile(), Map.RefreshSunMap(), and Zone.TryAddThingInSpot< T >().

◆ Offer()

void Trait.Offer ( Chara  cc)
inline

Definition at line 870 of file Trait.cs.

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

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

Referenced by AI_Offer.Run().

◆ OfferProcess()

void Trait.OfferProcess ( Chara  cc)
inline

Definition at line 848 of file Trait.cs.

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

680 {
681 }

Referenced by Map.OnCardAddedToZone().

◆ OnBarter()

void Trait.OnBarter ( )
inline

Definition at line 1500 of file Trait.cs.

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

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.CreateRedBook(), ThingGen.CreateRune(), ThingGen.CreateScroll(), ThingGen.CreateSkillbook(), ThingGen.CreateSpellbook(), ThingGen.CreateTreasureContent(), World.date, EClass.debug, DefaultStock, ThingContainer.DestroyAll(), Card.Duplicate(), Card.DyeRandom(), Card.elements, SourceManager.elements, CoreDebug.enable, Card.Evalue(), ThingContainer.Find(), SpatialManager.Find(), Player.flags, EClass.game, 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 608 of file Trait.cs.

609 {
610 }

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

676 {
677 }

Referenced by Card.SetPlaceState().

◆ OnChildDecay()

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

Reimplemented in TraitBrewery.

Definition at line 1057 of file Trait.cs.

1058 {
1059 return true;
1060 }

◆ OnCrafted()

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

Reimplemented in TraitBlanket, TraitFakeBlock, and TraitPotionAlchemy.

Definition at line 659 of file Trait.cs.

660 {
661 }

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

988 {
989 }

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

◆ OnEat()

virtual void Trait.OnEat ( Chara  c)
inlinevirtual

Reimplemented in TraitFortuneCookie.

Definition at line 978 of file Trait.cs.

979 {
980 }

◆ OnEnterScreen()

virtual void Trait.OnEnterScreen ( )
inlinevirtual

Reimplemented in TraitToolTorch.

Definition at line 1411 of file Trait.cs.

1412 {
1414 }
virtual void RefreshRenderer()
Definition: Trait.cs:1416

Referenced by CardRenderer.OnEnterScreen().

◆ OnEquip()

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

Reimplemented in TraitEQFlower.

Definition at line 667 of file Trait.cs.

668 {
669 }

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

◆ OnHeld()

virtual void Trait.OnHeld ( )
inlinevirtual

Reimplemented in TraitDetector.

Definition at line 1041 of file Trait.cs.

1042 {
1043 }

Referenced by HotItemHeld.OnSetCurrentItem().

◆ OnImportMap()

virtual void Trait.OnImportMap ( )
inlinevirtual

Reimplemented in TraitAltar, TraitBook, TraitNewZone, and TraitNote.

Definition at line 651 of file Trait.cs.

652 {
653 }

Referenced by SerializedCards.Restore().

◆ OnInstall()

virtual void Trait.OnInstall ( bool  byPlayer)
inlinevirtual

Reimplemented in TraitSwitch.

Definition at line 1121 of file Trait.cs.

1122 {
1123 }

◆ OnOpenDoor()

virtual void Trait.OnOpenDoor ( Chara  c)
inlinevirtual

Reimplemented in TraitDoorBell.

Definition at line 1079 of file Trait.cs.

1080 {
1081 }

Referenced by TraitDoor.TryOpen().

◆ OnRead()

◆ OnRemovedFromZone()

virtual void Trait.OnRemovedFromZone ( )
inlinevirtual

Reimplemented in TraitBoat.

Definition at line 683 of file Trait.cs.

684 {
685 }

Referenced by Map.OnCardRemovedFromZone().

◆ OnRenderExtra()

virtual void Trait.OnRenderExtra ( RenderParam  p)
inlinevirtual

Reimplemented in TraitPaintBoard, and TraitShrine.

Definition at line 627 of file Trait.cs.

628 {
629 }

Referenced by CardRenderer.Draw().

◆ OnRenderTile()

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

Reimplemented in TraitLightSun, and TraitRoadSign.

Definition at line 700 of file Trait.cs.

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

1068 {
1069 }

Referenced by ButtonGrid.SetCard().

◆ OnSetCurrentItem()

virtual void Trait.OnSetCurrentItem ( )
inlinevirtual

Reimplemented in TraitToolTorch.

Definition at line 1049 of file Trait.cs.

1050 {
1051 }

◆ OnSetOwner()

virtual void Trait.OnSetOwner ( )
inlinevirtual

Definition at line 647 of file Trait.cs.

648 {
649 }

Referenced by SetOwner().

◆ OnSimulateHour()

virtual void Trait.OnSimulateHour ( VirtualDate  date)
inlinevirtual

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

Definition at line 687 of file Trait.cs.

688 {
689 }

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

1072 {
1073 }

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

◆ OnSteppedOut()

virtual void Trait.OnSteppedOut ( Chara  c)
inlinevirtual

Reimplemented in TraitGeneratorWheel, and TraitSwing.

Definition at line 1075 of file Trait.cs.

1076 {
1077 }

Referenced by Chara._Move().

◆ OnThrowGround()

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

Reimplemented in TraitDrink, and TraitDye.

Definition at line 991 of file Trait.cs.

992 {
993 }

Referenced by ActThrow.Throw().

◆ OnTickHeld()

virtual void Trait.OnTickHeld ( )
inlinevirtual

Reimplemented in TraitDetector.

Definition at line 1045 of file Trait.cs.

1046 {
1047 }

◆ OnToggle()

virtual void Trait.OnToggle ( )
inlinevirtual

Reimplemented in TraitJukeBox, and TraitLeverBreaker.

Definition at line 1231 of file Trait.cs.

1232 {
1233 }

◆ OnUnequip()

virtual void Trait.OnUnequip ( Chara  c)
inlinevirtual

Reimplemented in TraitEQFlower.

Definition at line 671 of file Trait.cs.

672 {
673 }

Referenced by CharaBody.Unequip().

◆ OnUninstall()

virtual void Trait.OnUninstall ( )
inlinevirtual

Definition at line 1125 of file Trait.cs.

1126 {
1127 }

◆ OnUnsetCurrentItem()

virtual void Trait.OnUnsetCurrentItem ( )
inlinevirtual

Reimplemented in TraitToolTorch.

Definition at line 1053 of file Trait.cs.

1054 {
1055 }

◆ OnUse() [1/3]

◆ OnUse() [2/3]

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

Reimplemented in TraitDye, and TraitFoodMeat.

Definition at line 1019 of file Trait.cs.

1020 {
1021 return true;
1022 }

◆ OnUse() [3/3]

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

Reimplemented in TraitPotionEmpty.

Definition at line 1024 of file Trait.cs.

1025 {
1026 return true;
1027 }

◆ PlayToggleEffect()

virtual void Trait.PlayToggleEffect ( bool  silent)
inlinevirtual

Reimplemented in TraitWoodMill.

Definition at line 1185 of file Trait.cs.

1186 {
1187 bool flag = ToggleType == ToggleType.Fire;
1188 bool isOn = owner.isOn;
1189 switch (ToggleType)
1190 {
1191 case ToggleType.Lever:
1192 if (!silent)
1193 {
1194 owner.Say("lever", EClass.pc, owner);
1195 owner.PlaySound("switch_lever");
1196 }
1197 return;
1198 case ToggleType.Curtain:
1199 if (!silent)
1200 {
1201 owner.Say(isOn ? "close" : "open", EClass.pc, owner);
1202 owner.PlaySound("Material/leather_drop");
1203 }
1206 return;
1207 case ToggleType.None:
1208 return;
1209 }
1210 if (isOn)
1211 {
1212 if (!silent)
1213 {
1214 owner.Say(flag ? "toggle_fire" : "toggle_ele", EClass.pc, owner);
1216 }
1219 }
1220 else
1221 {
1222 if (!silent)
1223 {
1225 }
1228 }
1229 }
void Say(string lang, string ref1=null, string ref2=null)
Definition: Card.cs:6586
void RefreshNeighborTiles()
Definition: Point.cs:1260
virtual string IdSoundToggleOff
Definition: Trait.cs:497
virtual string IdSoundToggleOn
Definition: Trait.cs:481

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

1417 {
1418 if (owner.renderer.isSynced && !IdToggleExtra.IsEmpty())
1419 {
1420 if (owner.isOn)
1421 {
1423 }
1424 else
1425 {
1427 }
1428 }
1429 }
void AddExtra(string id)
void RemoveExtra(string id)
CardRenderer renderer
Definition: Card.cs:59
string IdToggleExtra
Definition: Trait.cs:466

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

◆ Refuel()

void Trait.Refuel ( Thing  t)
inline

Definition at line 1365 of file Trait.cs.

1366 {
1367 t.PlaySoundDrop(spatial: false);
1369 Msg.Say("fueled", t);
1370 if (!owner.isOn)
1371 {
1372 owner.trait.Toggle(on: true);
1373 }
1374 t.Destroy();
1376 }
void PlayAnime(AnimeID id, bool force)
void ModCharge(int a, bool destroy=false)
Definition: Card.cs:3848
void Destroy()
Definition: Card.cs:4931
void PlaySoundDrop(bool spatial=true)
Definition: Card.cs:5924
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:1151

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

1432 {
1433 if (owner.isThing && !owner.Thing.source.attackType.IsEmpty() && owner.ammoData != null)
1434 {
1435 t.SetText(owner.c_ammo.ToString() ?? "", FontColor.Charge);
1436 t.SetActive(enable: true);
1437 }
1438 else if (owner.Num == 1 && ShowCharges && owner.IsIdentified)
1439 {
1440 t.SetText(owner.c_charges.ToString() ?? "", FontColor.Charge);
1441 t.SetActive(enable: true);
1442 }
1443 else
1444 {
1445 t.SetText(owner.Num.ToShortNumber(), FontColor.ButtonGrid);
1446 t.SetActive(owner.Num > 1);
1447 }
1448 }
FontColor
Definition: FontColor.cs:2
virtual bool isThing
Definition: Card.cs:2043
int c_ammo
Definition: Card.cs:1435
Thing ammoData
Definition: Card.cs:1759
bool IsIdentified
Definition: Card.cs:2339
virtual bool ShowCharges
Definition: Trait.cs:330
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 636 of file Trait.cs.

637 {
638 owner = _owner;
639 OnSetOwner();
640 }
virtual void OnSetOwner()
Definition: Trait.cs:647

References OnSetOwner(), and owner.

Referenced by Card.ApplyTrait().

◆ SetParams()

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

Definition at line 655 of file Trait.cs.

656 {
657 }

◆ Toggle()

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

Definition at line 1151 of file Trait.cs.

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

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

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

◆ TryOpenLock()

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

Definition at line 892 of file Trait.cs.

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

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

888 {
889 return true;
890 }

Referenced by AI_Read.Run().

◆ TryRefuel()

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

Definition at line 1378 of file Trait.cs.

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

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

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

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

1130 {
1131 if (!owner.IsInstalled)
1132 {
1133 return;
1134 }
1135 if (Electricity < 0 && owner.isOn && EClass._zone.electricity < 0)
1136 {
1137 Toggle(on: false, silent: true);
1138 }
1139 else if (AutoToggle)
1140 {
1141 int num = ((EClass._map.config.hour == -1) ? EClass.world.date.hour : EClass._map.config.hour);
1142 bool on = !IsNightOnlyLight || num >= 17 || num <= 5 || EClass._map.IsIndoor;
1144 {
1145 on = false;
1146 }
1147 Toggle(on, silent: true);
1148 }
1149 }
bool IsInstalled
Definition: Card.cs:2343
Cell Cell
Definition: Card.cs:2017
bool HasRoof
Definition: Cell.cs:648
int hour
Definition: Date.cs:74
int hour
Definition: MapConfig.cs:95
bool IsIndoor
Definition: Map.cs:131
MapConfig config
Definition: Map.cs:37
virtual bool AutoToggle
Definition: Trait.cs:389
virtual bool IsNightOnlyLight
Definition: Trait.cs:425
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 1103 of file Trait.cs.

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

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

Referenced by Card.SetPlaceState().

◆ Update()

virtual void Trait.Update ( )
inlinevirtual

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

Definition at line 725 of file Trait.cs.

726 {
727 }

◆ WriteNote()

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

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

Definition at line 949 of file Trait.cs.

950 {
951 }

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(), TraitSpellbook.Create(), TraitRod.Create(), TraitAbility.CreateAct(), TraitCatalyst.CreateAct(), LayerDragGrid.CreateChaosOffering(), LayerDragGrid.CreateCraft(), LayerDragGrid.CreateGacha(), LayerDragGrid.CreateOffering(), LayerDragGrid.CreateRecycle(), TraitNewZone.CreateZone(), AIAct.DoGoto< T >(), BaseTileMap.DrawTile(), TraitDye.Dye(), 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(), SurvivalManager.GetRandomPoint(), GetRandomPoint(), TraitTile.GetRecipe(), ZoneEventRaid.GetSpawnPos(), 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(), TraitSpotBiome.Update(), TraitSpotSpawn.Update(), FactionBranch.Upgrade(), TraitBed.ValidateOwners(), and TraitGene.WriteNote().

◆ SelfFactory

TraitSelfFactory Trait.SelfFactory = new TraitSelfFactory()
static

Property Documentation

◆ AllowCriminal

virtual bool Trait.AllowCriminal
get

Definition at line 548 of file Trait.cs.

◆ AllowSell

virtual bool Trait.AllowSell
get

Definition at line 524 of file Trait.cs.

525 {
526 get
527 {
528 if (CurrencyType != CurrencyType.Money)
529 {
530 return CurrencyType == CurrencyType.None;
531 }
532 return true;
533 }
534 }

◆ AlwaysHideOnLowWall

virtual bool Trait.AlwaysHideOnLowWall
get

Definition at line 352 of file Trait.cs.

Referenced by BaseTileMap.DrawTile().

◆ AutoToggle

virtual bool Trait.AutoToggle
get

Definition at line 388 of file Trait.cs.

389 {
390 get
391 {
392 if (IsLighting || ToggleType == ToggleType.Curtain || ToggleType == ToggleType.Electronics)
393 {
394 return !owner.disableAutoToggle;
395 }
396 return false;
397 }
398 }
bool IsLighting
Definition: Trait.cs:401

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

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

Referenced by TaskHarvest.TryGetAct().

◆ CanBeDropped

◆ CanBeHallucinated

virtual bool Trait.CanBeHallucinated
get

Definition at line 298 of file Trait.cs.

Referenced by CardRenderer.Draw().

◆ CanBeHeld

virtual bool Trait.CanBeHeld
get

◆ CanBeHeldAsFurniture

virtual bool Trait.CanBeHeldAsFurniture
get

Definition at line 336 of file Trait.cs.

337 {
338 get
339 {
340 if (!(this is TraitTool))
341 {
342 return IsThrowMainAction;
343 }
344 return true;
345 }
346 }
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 316 of file Trait.cs.

317 {
318 get
319 {
320 if (!owner.IsImportant)
321 {
322 return !owner.IsUnique;
323 }
324 return false;
325 }
326 }
bool IsImportant
Definition: Card.cs:2067
bool IsUnique
Definition: Card.cs:2053

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

◆ CanBeSmashedToDeath

virtual bool Trait.CanBeSmashedToDeath
get

Definition at line 296 of file Trait.cs.

Referenced by Card.Die().

◆ CanBeStolen

virtual bool Trait.CanBeStolen
get

Definition at line 280 of file Trait.cs.

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

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

267 {
268 get
269 {
271 {
273 }
274 return false;
275 }
276 }
TileType TileType
Definition: Card.cs:2097
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:540
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 446 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 514 of file Trait.cs.

Referenced by OnBarter().

◆ CostRerollShop

virtual int Trait.CostRerollShop
get

Definition at line 536 of file Trait.cs.

537 {
538 get
539 {
540 if (CurrencyType == CurrencyType.Money || CurrencyType == CurrencyType.Influence)
541 {
542 return 1;
543 }
544 return 0;
545 }
546 }

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

◆ CraftNum

virtual int Trait.CraftNum
get

◆ CurrencyType

virtual CurrencyType Trait.CurrencyType
get

Definition at line 520 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 358 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 354 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 460 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 328 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 348 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 362 of file Trait.cs.

Referenced by AI_Idle.TryPerformIdleUse().

◆ IdNoRestock

virtual string Trait.IdNoRestock
get

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

497 {
498 get
499 {
500 if (Electricity >= 0)
501 {
502 if (ToggleType != ToggleType.Fire)
503 {
504 return "switch_off";
505 }
506 return "torch_unlit";
507 }
508 return "switch_off_electricity";
509 }
510 }

◆ IdSoundToggleOn

virtual string Trait.IdSoundToggleOn
get

Definition at line 480 of file Trait.cs.

481 {
482 get
483 {
484 if (Electricity >= 0)
485 {
486 if (ToggleType != ToggleType.Fire)
487 {
488 return "switch_on";
489 }
490 return "torch_lit";
491 }
492 return "switch_on_electricity";
493 }
494 }

◆ IdToggleExtra

string Trait.IdToggleExtra
get

Definition at line 466 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().

◆ IgnoreOnSteppedWhenMoving

virtual bool Trait.IgnoreOnSteppedWhenMoving
get

Definition at line 370 of file Trait.cs.

Referenced by Chara.Tick().

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

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

375 {
376 get
377 {
378 if (!IsOn)
379 {
380 return !IsToggle;
381 }
382 return true;
383 }
384 }
bool IsToggle
Definition: Trait.cs:386
virtual bool IsOn
Definition: Trait.cs:372

◆ IsBlendBase

virtual bool Trait.IsBlendBase
get

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

401 {
402 get
403 {
404 if (ToggleType != ToggleType.Fire)
405 {
406 return ToggleType == ToggleType.Light;
407 }
408 return true;
409 }
410 }

◆ IsLightOn

virtual bool Trait.IsLightOn
get

Definition at line 412 of file Trait.cs.

413 {
414 get
415 {
416 if (!owner.isChara)
417 {
418 return owner.isOn;
419 }
420 return true;
421 }
422 }

Referenced by Card.GetLightRadius().

◆ IsLocalAct

virtual bool Trait.IsLocalAct
get

Definition at line 260 of file Trait.cs.

Referenced by HotItemHeld.TrySetAct().

◆ IsNightOnlyLight

virtual bool Trait.IsNightOnlyLight
get

Definition at line 424 of file Trait.cs.

425 {
426 get
427 {
428 if (ToggleType != ToggleType.Electronics && IsToggle)
429 {
430 return !owner.isRoofItem;
431 }
432 return false;
433 }
434 }
bool isRoofItem
Definition: Card.cs:564

◆ 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 372 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 464 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:2557
bool IsMeleeWeapon
Definition: Card.cs:2203

Referenced by HotItemHeld.TrySetAct().

◆ IsToggle

bool Trait.IsToggle
get

Definition at line 386 of file Trait.cs.

◆ IsTool

virtual bool Trait.IsTool
get

◆ LangBarter

virtual string Trait.LangBarter
get

Definition at line 554 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 368 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 448 of file Trait.cs.

449 {
450 get
451 {
452 if (ToggleType != ToggleType.Fire)
453 {
454 return 0;
455 }
456 return 100;
457 }
458 }

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(), and TraitRecipe.SetName().

◆ NoHeldDir

virtual bool Trait.NoHeldDir
get

Definition at line 350 of file Trait.cs.

Referenced by CharaRenderer.DrawHeld().

◆ NumCopyItem

virtual int Trait.NumCopyItem
get

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

Referenced by GetParam(), and GetParamInt().

◆ PriceType

virtual PriceType Trait.PriceType
get

Definition at line 522 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 364 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 356 of file Trait.cs.

Referenced by CardRenderer.Draw().

◆ ReqHarvest

virtual string Trait.ReqHarvest
get

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

◆ ShopLv

virtual int Trait.ShopLv
get

Definition at line 512 of file Trait.cs.

◆ ShopType

virtual ShopType Trait.ShopType
get

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

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

◆ ShowCharges

virtual bool Trait.ShowCharges
get

Definition at line 330 of file Trait.cs.

Referenced by Thing.GetName().

◆ ShowChildrenNumber

virtual bool Trait.ShowChildrenNumber
get

Definition at line 332 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 462 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 552 of file Trait.cs.

◆ TextNextRestock

string Trait.TextNextRestock
get

Definition at line 556 of file Trait.cs.

◆ TextNextRestockPet

string Trait.TextNextRestockPet
get

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

◆ tileType

virtual TileType Trait.tileType
get

◆ ToggleType

virtual ToggleType Trait.ToggleType
get

Definition at line 468 of file Trait.cs.

469 {
470 get
471 {
472 if (Electricity >= 0)
473 {
474 return ToggleType.None;
475 }
476 return ToggleType.Electronics;
477 }
478 }

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

◆ UseAltTiles

virtual bool Trait.UseAltTiles
get

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

◆ UseLightColor

virtual bool Trait.UseLightColor
get

Definition at line 444 of file Trait.cs.

◆ UseLowblock

virtual bool Trait.UseLowblock
get

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