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

Public Types

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

Public Member Functions

string GetParam (int i, string def=null)
 
int GetParamInt (int i, int def)
 
virtual bool Contains (RecipeSource r)
 
virtual int GetValue ()
 
virtual bool CanStackTo (Thing to)
 
virtual string GetHoverText ()
 
virtual Action GetHealAction (Chara c)
 
virtual bool CanBlend (Thing t)
 
virtual void OnBlend (Thing t, Chara c)
 
virtual int GetActDuration (Chara c)
 
virtual SourceElement.Row GetRefElement ()
 
virtual Sprite GetRefSprite ()
 
virtual void OnRenderExtra (RenderParam p)
 
virtual Emo2 GetHeldEmo (Chara c)
 
virtual void SetOwner (Card _owner)
 
virtual bool IdleUse (Chara c, int dist)
 
virtual void OnSetOwner ()
 
virtual void OnImportMap ()
 
virtual void SetParams (params string[] s)
 
virtual void OnCrafted (Recipe recipe)
 
virtual void OnCreate (int lv)
 
virtual void OnEquip (Chara c, bool onSetOwner)
 
virtual void OnUnequip (Chara c)
 
virtual void OnChangePlaceState (PlaceState state)
 
virtual void OnAddedToZone ()
 
virtual void OnRemovedFromZone ()
 
virtual void OnSimulateHour (VirtualDate date)
 
virtual string GetName ()
 
virtual void SetName (ref string s)
 
virtual void OnRenderTile (Point point, HitResult result, int dir)
 
virtual int CompareTo (Card b)
 
virtual bool CanBuiltAt (Point p)
 
virtual void Update ()
 
Point GetPoint ()
 
Point GetRandomPoint (Func< Point, bool > func=null, Chara accessChara=null)
 
virtual List< PointListPoints (Point center=null, bool onlyPassable=true)
 
virtual Recipe GetRecipe ()
 
virtual Recipe GetBuildModeRecipe ()
 
virtual bool CanCook (Card c)
 
void CookProgress ()
 
virtual bool CanOffer (Card tg)
 
void OfferProcess (Chara cc)
 
void Offer (Chara cc)
 
virtual bool TryProgress (AIProgress p)
 
virtual LockOpenState TryOpenLock (Chara cc, bool msgFail=true)
 
virtual void WriteNote (UINote n, bool identified)
 
int GetSortVal (UIList.SortMode m)
 
virtual HotItem GetHotItem ()
 
virtual bool CanRead (Chara c)
 
virtual void OnRead (Chara c)
 
virtual bool CanEat (Chara c)
 
virtual void OnEat (Chara c)
 
virtual bool CanDrink (Chara c)
 
virtual void OnDrink (Chara c)
 
virtual void OnThrowGround (Chara c, Point p)
 
virtual bool CanUse (Chara c)
 
virtual bool CanUse (Chara c, Card tg)
 
virtual bool CanUse (Chara c, Point p)
 
virtual bool OnUse (Chara c)
 
virtual bool OnUse (Chara c, Card tg)
 
virtual bool OnUse (Chara c, Point p)
 
virtual void TrySetAct (ActPlan p)
 
virtual void TrySetHeldAct (ActPlan p)
 
virtual void OnHeld ()
 
virtual void OnTickHeld ()
 
virtual void OnSetCurrentItem ()
 
virtual void OnUnsetCurrentItem ()
 
virtual bool OnChildDecay (Card c, bool firstDecay)
 
virtual bool CanChildDecay (Card c)
 
virtual void OnSetCardGrid (ButtonGrid b)
 
virtual void OnStepped (Chara c)
 
virtual void OnSteppedOut (Chara c)
 
virtual void OnOpenDoor (Chara c)
 
void Install (bool byPlayer)
 
void Uninstall ()
 
virtual void OnInstall (bool byPlayer)
 
virtual void OnUninstall ()
 
virtual void TryToggle ()
 
virtual void Toggle (bool on, bool silent=false)
 
virtual void PlayToggleEffect (bool silent)
 
virtual void OnToggle ()
 
virtual void TrySetToggleAct (ActPlan p)
 
bool IsFuelEnough (int num=1, List< Thing > excludes=null, bool tryRefuel=true)
 
bool IsFuel (string s)
 
bool IsFuel (Thing t)
 
int GetFuelValue (Thing t)
 
int GetFuelValue (string id)
 
void Refuel (Thing t)
 
void TryRefuel (int dest, List< Thing > excludes)
 
virtual void OnEnterScreen ()
 
virtual void RefreshRenderer ()
 
virtual void SetMainText (UIText t, bool hotitem)
 
virtual bool CanCopy (Thing t)
 
string GetTextRestock (string lang, bool pet)
 
Emo2 GetRestockedIcon ()
 
void OnBarter ()
 
Thing CreateStock ()
 

Public Attributes

Card owner
 

Static Public Attributes

static TraitSelfFactory SelfFactory = new TraitSelfFactory()
 
- Static Public Attributes inherited from EClass
static Core core
 

Static Protected Attributes

static List< PointlistRadiusPoints = new List<Point>()
 

Properties

string[] Params [get]
 
virtual byte WeightMod [get]
 
virtual int IdSkin [get]
 
virtual string Name [get]
 
virtual TileType tileType [get]
 
virtual RefCardName RefCardName [get]
 
virtual bool IsBlockPath [get]
 
virtual bool IsBlockSight [get]
 
virtual bool IsDoor [get]
 
virtual bool IsOpenSight [get]
 
virtual bool IsOpenPath [get]
 
virtual bool IsFloating [get]
 
virtual bool IsNoShop [get]
 
virtual bool IsGround [get]
 
virtual bool IsOnlyUsableByPc [get]
 
virtual bool InvertHeldSprite [get]
 
virtual bool IsChangeFloorHeight [get]
 
virtual bool ShouldRefreshTile [get]
 
virtual bool ShouldTryRefreshRoom [get]
 
virtual int InstallBottomPriority [get]
 
virtual bool CanHarvest [get]
 
virtual int radius [get]
 
virtual TraitRadiusType radiusType [get]
 
virtual bool CanUseRoomRadius [get]
 
virtual int GuidePriotiy [get]
 
virtual int Electricity [get]
 
virtual bool IgnoreLastStackHeight [get]
 
virtual int Decay [get]
 
virtual int DecaySpeed [get]
 
virtual int DecaySpeedChild [get]
 
virtual bool IsFridge [get]
 
virtual int DefaultStock [get]
 
virtual bool HoldAsDefaultInteraction [get]
 
virtual int CraftNum [get]
 
virtual bool ShowOrbit [get]
 
virtual bool HaveUpdate [get]
 
virtual bool IsSpot [get]
 
virtual bool IsFactory [get]
 
virtual bool CanAutofire [get]
 
virtual bool CanName [get]
 
virtual bool CanPutAway [get]
 
virtual bool CanChangeHeight [get]
 
virtual bool CanStack [get]
 
virtual bool CanCopyInBlueprint [get]
 
virtual bool CanBeAttacked [get]
 
virtual bool CanExtendBuild [get]
 
virtual string langNote [get]
 
virtual string IDInvStyle [get]
 
virtual string IDActorEx [get]
 
virtual bool MaskOnBuild [get]
 
virtual bool ShowContextOnPick [get]
 
virtual bool IsThrowMainAction [get]
 
virtual bool LevelAsQuality [get]
 
virtual bool UseDummyTile [get]
 
virtual bool RequireFullStackCheck [get]
 
virtual bool DisableAutoCombat [get]
 
virtual InvGridSize InvGridSize [get]
 
virtual bool IsContainer [get]
 
virtual bool CanUseContent [get]
 
virtual bool CanSearchContent [get]
 
virtual bool CanOpenContainer [get]
 
virtual bool IsSpecialContainer [get]
 
virtual ContainerType ContainerType [get]
 
virtual ThrowType ThrowType [get]
 
virtual EffectDead EffectDead [get]
 
virtual bool IsHomeItem [get]
 
virtual bool IsAltar [get]
 
virtual bool IsRestSpot [get]
 
virtual bool CanBeMasked [get]
 
virtual bool IsBlendBase [get]
 
virtual bool CanBeOnlyBuiltInHome [get]
 
virtual bool CanBuildInTown [get]
 
virtual bool CanBeHeld [get]
 
virtual bool CanBeStolen [get]
 
virtual bool CanOnlyCarry [get]
 
virtual bool CanBeDestroyed [get]
 
virtual bool CanBeSmashedToDeath [get]
 
virtual bool CanBeHallucinated [get]
 
virtual bool CanBeDropped [get]
 
virtual string ReqHarvest [get]
 
virtual bool CanBeDisassembled [get]
 
virtual bool CanBeShipped [get]
 
virtual bool HasCharges [get]
 
virtual bool ShowCharges [get]
 
virtual bool ShowChildrenNumber [get]
 
virtual bool ShowAsTool [get]
 
virtual bool CanBeHeldAsFurniture [get]
 
virtual bool HideInAdv [get]
 
virtual bool NoHeldDir [get]
 
virtual bool AlwaysHideOnLowWall [get]
 
bool ExistsOnMap [get]
 
virtual bool RenderExtra [get]
 
virtual float DropChance [get]
 
virtual string IdNoRestock [get]
 
virtual int IdleUseChance [get]
 
virtual string RecipeCat [get]
 
virtual bool IsTool [get]
 
virtual string LangUse [get]
 
virtual bool IsOn [get]
 
virtual bool IsAnimeOn [get]
 
bool IsToggle [get]
 
virtual bool AutoToggle [get]
 
bool IsLighting [get]
 
virtual bool IsLightOn [get]
 
virtual bool IsNightOnlyLight [get]
 
virtual TileMode tileMode [get]
 
virtual bool UseAltTiles [get]
 
virtual bool UseLowblock [get]
 
virtual bool UseExtra [get]
 
virtual bool UseLightColor [get]
 
virtual ? Color ColorExtra [get]
 
virtual int MaxFuel [get]
 
virtual int FuelCost [get]
 
virtual bool ShowFuelWindow [get]
 
bool IsRequireFuel [get]
 
string IdToggleExtra [get]
 
virtual ToggleType ToggleType [get]
 
virtual string IdSoundToggleOn [get]
 
virtual string IdSoundToggleOff [get]
 
virtual int ShopLv [get]
 
virtual CopyShopType CopyShop [get]
 
virtual int NumCopyItem [get]
 
virtual ShopType ShopType [get]
 
virtual CurrencyType CurrencyType [get]
 
virtual PriceType PriceType [get]
 
virtual bool AllowSell [get]
 
virtual int CostRerollShop [get]
 
virtual bool AllowCriminal [get]
 
virtual int RestockDay [get]
 
virtual SlaverType SlaverType [get]
 
virtual string LangBarter [get]
 
string TextNextRestock [get]
 
string TextNextRestockPet [get]
 
- Properties inherited from EClass
static Game game [get]
 
static bool AdvMode [get]
 
static Player player [get]
 
static Chara pc [get]
 
static UI ui [get]
 
static Map _map [get]
 
static Zone _zone [get]
 
static FactionBranch Branch [get]
 
static FactionBranch BranchOrHomeBranch [get]
 
static Faction Home [get]
 
static Faction Wilds [get]
 
static Scene scene [get]
 
static BaseGameScreen screen [get]
 
static GameSetting setting [get]
 
static GameData gamedata [get]
 
static ColorProfile Colors [get]
 
static World world [get]
 
static SourceManager sources [get]
 
static SourceManager editorSources [get]
 
static SoundManager Sound [get]
 
static CoreDebug debug [get]
 

Additional Inherited Members

- Static Public Member Functions inherited from EClass
static int rndSeed (int a, int seed)
 
static int rnd (int a)
 
static int curve (int a, int start, int step, int rate=75)
 
static int rndHalf (int a)
 
static float rndf (float a)
 
static int rndSqrt (int a)
 
static void Wait (float a, Card c)
 
static void Wait (float a, Point p)
 
static int Bigger (int a, int b)
 
static int Smaller (int a, int b)
 

Detailed Description

Definition at line 6 of file Trait.cs.

Member Enumeration Documentation

◆ CopyShopType

Enumerator
None 
Item 
Spellbook 

Definition at line 17 of file Trait.cs.

◆ TileMode

Enumerator
Default 
Door 
Illumination 
DefaultNoAnime 
SignalAnime 

Definition at line 8 of file Trait.cs.

Member Function Documentation

◆ CanBlend()

virtual bool Trait.CanBlend ( Thing  t)
inlinevirtual

Reimplemented in TraitDreamBug, TraitDrink, TraitDye, and TraitWell.

Definition at line 596 of file Trait.cs.

597 {
598 return false;
599 }

Referenced by InvOwnerBlend.ShouldShowGuide().

◆ CanBuiltAt()

virtual bool Trait.CanBuiltAt ( Point  p)
inlinevirtual

Reimplemented in TraitSpotExit.

Definition at line 713 of file Trait.cs.

714 {
715 return true;
716 }

Referenced by TileType._HitTest().

◆ CanChildDecay()

virtual bool Trait.CanChildDecay ( Card  c)
inlinevirtual

Reimplemented in TraitBrewery, and TraitContainerCompost.

Definition at line 1055 of file Trait.cs.

1056 {
1057 return false;
1058 }

Referenced by Card.DecayNatural().

◆ CanCook()

virtual bool Trait.CanCook ( Card  c)
inlinevirtual

Definition at line 806 of file Trait.cs.

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

References Card.trait.

Referenced by AI_Cook.IsValidTarget().

◆ CanCopy()

virtual bool Trait.CanCopy ( Thing  t)
inlinevirtual

Reimplemented in TraitDemitas, and TraitKettle.

Definition at line 1443 of file Trait.cs.

1444 {
1445 return false;
1446 }

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

◆ CanDrink()

virtual bool Trait.CanDrink ( Chara  c)
inlinevirtual

Reimplemented in TraitDrink, and TraitPotionEmpty.

Definition at line 975 of file Trait.cs.

976 {
977 return false;
978 }

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

◆ CanEat()

virtual bool Trait.CanEat ( Chara  c)
inlinevirtual

Reimplemented in TraitFood, and TraitFoodPreparedPackage.

Definition at line 966 of file Trait.cs.

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

References Card.HasElement().

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

◆ CanOffer()

virtual bool Trait.CanOffer ( Card  tg)
inlinevirtual

Reimplemented in TraitAltar.

Definition at line 828 of file Trait.cs.

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

References CanOnlyCarry, Card.isChara, Card.rarity, and Card.trait.

Referenced by AI_Offer.IsValidTarget().

◆ CanRead()

virtual bool Trait.CanRead ( Chara  c)
inlinevirtual

Reimplemented in TraitBaseSpellbook, TraitBookSecret, TraitBookSkill, TraitScroll, and TraitScrollStatic.

Definition at line 957 of file Trait.cs.

958 {
959 return false;
960 }

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

◆ CanStackTo()

virtual bool Trait.CanStackTo ( Thing  to)
inlinevirtual

◆ CanUse() [1/3]

virtual bool Trait.CanUse ( Chara  c)
inlinevirtual

◆ CanUse() [2/3]

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

Reimplemented in TraitDye, and TraitFoodMeat.

Definition at line 993 of file Trait.cs.

994 {
995 return false;
996 }

◆ CanUse() [3/3]

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

Reimplemented in TraitPotionEmpty.

Definition at line 998 of file Trait.cs.

999 {
1000 return false;
1001 }

◆ CompareTo()

virtual int Trait.CompareTo ( Card  b)
inlinevirtual

Reimplemented in TraitEffect.

Definition at line 708 of file Trait.cs.

709 {
710 return 0;
711 }

Referenced by Card.SecondaryCompare().

◆ Contains()

virtual bool Trait.Contains ( RecipeSource  r)
inlinevirtual

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

Definition at line 571 of file Trait.cs.

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

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

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

◆ CookProgress()

void Trait.CookProgress ( )
inline

Definition at line 815 of file Trait.cs.

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

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

Referenced by AI_Cook.Run().

◆ CreateStock()

Thing Trait.CreateStock ( )
inline

Definition at line 2046 of file Trait.cs.

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

References EClass._zone, Card.ChangeMaterial(), SourceManager.charas, ThingGen.Create(), ThingGen.CreateFromFilter(), ThingGen.CreateMap(), ThingGen.CreatePotion(), ThingGen.CreateRod(), ThingGen.CreateScroll(), ThingGen.CreateSpellbook(), EClass.debug, Debug, Card.Dye(), SourceManager.elements, CoreDebug.enable, Player.flags, DNA.GenerateGene(), SpawnList.Get(), SourceElement.Row.id, Spatial.id, GuildMerchant.IsCurrentZone, GuildThief.IsCurrentZone, Zone.IsFestival, TraitSeed.LevelSeed(), Player.Flags.loytelMartLv, TraitSeed.MakeRandomSeed(), Card.MakeRefFrom(), SourceManager.materials, Guild.Merchant, EClass.player, EClass.rnd(), EClass.rndHalf(), SpawnList.Select(), Card.SetNum(), Card.SetPriceFix(), CardBlueprint.SetRarity(), EClass.sources, Guild.Thief, SourceElement.Row.thing, and Card.trait.

◆ GetActDuration()

virtual int Trait.GetActDuration ( Chara  c)
inlinevirtual

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

Definition at line 605 of file Trait.cs.

606 {
607 return 0;
608 }

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

◆ GetBuildModeRecipe()

virtual Recipe Trait.GetBuildModeRecipe ( )
inlinevirtual

Reimplemented in TraitTile.

Definition at line 801 of file Trait.cs.

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

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

Referenced by BuildMenu.RefreshCategory().

◆ GetFuelValue() [1/2]

int Trait.GetFuelValue ( string  id)
inline

Definition at line 1335 of file Trait.cs.

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

◆ GetFuelValue() [2/2]

int Trait.GetFuelValue ( Thing  t)
inline

Definition at line 1326 of file Trait.cs.

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

References Card.c_isImportant, and Card.id.

Referenced by InvOwnerRefuel._OnProcess().

◆ GetHealAction()

virtual Action Trait.GetHealAction ( Chara  c)
inlinevirtual

Reimplemented in TraitDrink, and TraitItemProc.

Definition at line 591 of file Trait.cs.

592 {
593 return null;
594 }

Referenced by ActItem.BuildAct(), Chara.ShouldThrowAway(), Chara.TryTakeSharedItems(), and Chara.TryUse().

◆ GetHeldEmo()

virtual Emo2 Trait.GetHeldEmo ( Chara  c)
inlinevirtual

Reimplemented in TraitDrinkMilkMother, TraitToolBrush, and TraitToolShears.

Definition at line 624 of file Trait.cs.

625 {
626 return Emo2.none;
627 }
Emo2
Definition: Emo2.cs:2

Referenced by TCOrbitChara.RefreshAll().

◆ GetHotItem()

virtual HotItem Trait.GetHotItem ( )
inlinevirtual

◆ GetHoverText()

virtual string Trait.GetHoverText ( )
inlinevirtual

Reimplemented in TraitBed.

Definition at line 586 of file Trait.cs.

587 {
588 return null;
589 }

◆ GetName()

virtual string Trait.GetName ( )
inlinevirtual

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

Definition at line 684 of file Trait.cs.

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

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

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

◆ GetParam()

◆ GetParamInt()

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

Definition at line 562 of file Trait.cs.

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

References Params.

Referenced by TraitItemProc.OnUse().

◆ GetPoint()

Point Trait.GetPoint ( )
inline

Definition at line 722 of file Trait.cs.

723 {
724 return owner.pos;
725 }

References owner, and Card.pos.

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

◆ GetRandomPoint()

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

Definition at line 727 of file Trait.cs.

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

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

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

◆ GetRecipe()

virtual Recipe Trait.GetRecipe ( )
inlinevirtual

Reimplemented in TraitTile.

Definition at line 796 of file Trait.cs.

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

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

Referenced by HotItemHeld.OnSetCurrentItem().

◆ GetRefElement()

virtual SourceElement.Row Trait.GetRefElement ( )
inlinevirtual

Reimplemented in TraitPotionRandom, TraitRod, and TraitScroll.

Definition at line 610 of file Trait.cs.

611 {
612 return null;
613 }

Referenced by ButtonGrid.SetCard().

◆ GetRefSprite()

virtual Sprite Trait.GetRefSprite ( )
inlinevirtual

Definition at line 615 of file Trait.cs.

616 {
617 return null;
618 }

Referenced by ButtonGrid.SetCard().

◆ GetRestockedIcon()

Emo2 Trait.GetRestockedIcon ( )
inline

Definition at line 1471 of file Trait.cs.

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

References Card.c_dateStockExpire, World.date, SlaverData.dateRefresh, Date.IsExpired(), and EClass.world.

Referenced by TCOrbitChara.RefreshAll(), and TCOrbitThing.RefreshAll().

◆ GetSortVal()

int Trait.GetSortVal ( UIList::SortMode  m)
inline

Definition at line 946 of file Trait.cs.

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

References SourceData< T, T2 >.BaseRow._index, and Card.sourceCard.

Referenced by LayerHome.RefreshSpots().

◆ GetTextRestock()

string Trait.GetTextRestock ( string  lang,
bool  pet 
)
inline

Definition at line 1448 of file Trait.cs.

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

References Card.c_dateStockExpire, World.date, SlaverData.dateRefresh, Date.GetRemainingHours(), Date.GetText(), and EClass.world.

◆ GetValue()

virtual int Trait.GetValue ( )
inlinevirtual

◆ IdleUse()

virtual bool Trait.IdleUse ( Chara  c,
int  dist 
)
inlinevirtual

Reimplemented in TraitChopper, TraitGamble, and TraitTrainingDummy.

Definition at line 635 of file Trait.cs.

636 {
637 return false;
638 }

Referenced by AI_Idle.TryPerformIdleUse().

◆ Install()

void Trait.Install ( bool  byPlayer)
inline

Definition at line 1076 of file Trait.cs.

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

References EClass._zone, Card.isOn, Zone.isStarted, EClass.pc, Card.PlaySound(), and Card.RecalculateFOV().

Referenced by Card.SetPlaceState().

◆ IsFuel() [1/2]

bool Trait.IsFuel ( string  s)
inline

Definition at line 1316 of file Trait.cs.

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

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

◆ IsFuel() [2/2]

bool Trait.IsFuel ( Thing  t)
inline

Definition at line 1321 of file Trait.cs.

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

◆ IsFuelEnough()

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

Definition at line 1299 of file Trait.cs.

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

References Card.autoRefuel, and Card.c_charges.

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

◆ ListPoints()

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

Reimplemented in TraitLightSun.

Definition at line 745 of file Trait.cs.

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

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

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

◆ Offer()

void Trait.Offer ( Chara  cc)
inline

Definition at line 863 of file Trait.cs.

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

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

Referenced by AI_Offer.Run().

◆ OfferProcess()

void Trait.OfferProcess ( Chara  cc)
inline

Definition at line 841 of file Trait.cs.

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

References Card.c_idDeity, item, Point.ListCards(), Card.pos, SourceManager.religions, EClass.rnd(), EClass.sources, and Card.Talk().

Referenced by AI_Offer.Run().

◆ OnAddedToZone()

virtual void Trait.OnAddedToZone ( )
inlinevirtual

Definition at line 672 of file Trait.cs.

673 {
674 }

Referenced by Map.OnCardAddedToZone().

◆ OnBarter()

void Trait.OnBarter ( )
inline

Definition at line 1493 of file Trait.cs.

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

References EClass._zone, Add(), Card.AddThing(), Card.c_charges, Card.c_copyContainer, Card.c_dateStockExpire, Card.c_revealLock, CanCopy(), Card.category, Card.Chara, CopyShop, ThingGen.Create(), ThingGen.CreateFromCategory(), ThingGen.CreatePerfume(), ThingGen.CreatePlan(), ThingGen.CreatePotion(), ThingGen.CreateRecipe(), ThingGen.CreateScroll(), ThingGen.CreateSkillbook(), ThingGen.CreateSpellbook(), ThingGen.CreateTreasureContent(), World.date, EClass.debug, DefaultStock, ThingContainer.DestroyAll(), Card.Duplicate(), Card.DyeRandom(), Card.elements, SourceManager.elements, CoreDebug.enable, Card.Evalue(), ThingContainer.Find(), SpatialManager.Find(), Player.flags, EClass.game, BaseCard.GetInt(), Card.GetPrice(), Date.GetRaw(), Element.HasTag(), Card.id, RecipeSource.id, SourceElement.Row.id, Spatial.id, IdNoRestock, Card.IsContainer, GuildThief.IsCurrentZone, Date.IsExpired(), Zone.IsFestival, Card.IsFood, IsNoShop, item, RecipeManager.list, Player.Flags.loytelMartLv, Spatial.lv, CraftUtil.MakeDish(), TraitSeed.MakeSeed(), Player.noRestocks, Card.Num, NumCopyItem, EClass.pc, EClass.player, Game.quests, RenderRow.recipeKey, ElementContainer.Remove(), Card.RemoveThings(), EClass.rnd(), EClass.rndHalf(), RecipeSource.row, ElementContainer.SetBase(), BaseCard.SetInt(), Card.SetLv(), CardBlueprint.SetNormalRarity(), Card.SetNum(), Card.SetPriceFix(), TraitTicketFurniture.SetZone(), 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 601 of file Trait.cs.

602 {
603 }

Referenced by InvOwnerBlend._OnProcess(), and Chara.TryUse().

◆ OnChangePlaceState()

virtual void Trait.OnChangePlaceState ( PlaceState  state)
inlinevirtual

Reimplemented in TraitBoat, TraitDoorSwing, TraitHouseBoard, TraitLightSun, TraitTeleporter, TraitTent, and TraitTrainingDummyArmor.

Definition at line 668 of file Trait.cs.

669 {
670 }

Referenced by Card.SetPlaceState().

◆ OnChildDecay()

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

Reimplemented in TraitBrewery.

Definition at line 1050 of file Trait.cs.

1051 {
1052 return true;
1053 }

◆ OnCrafted()

virtual void Trait.OnCrafted ( Recipe  recipe)
inlinevirtual

Reimplemented in TraitBlanket, and TraitPotionAlchemy.

Definition at line 652 of file Trait.cs.

653 {
654 }

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

◆ OnCreate()

◆ OnDrink()

virtual void Trait.OnDrink ( Chara  c)
inlinevirtual

Reimplemented in TraitDrink, TraitDrinkMilkMother, and TraitPotionEmpty.

Definition at line 980 of file Trait.cs.

981 {
982 }

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

◆ OnEat()

virtual void Trait.OnEat ( Chara  c)
inlinevirtual

Reimplemented in TraitFortuneCookie.

Definition at line 971 of file Trait.cs.

972 {
973 }

◆ OnEnterScreen()

virtual void Trait.OnEnterScreen ( )
inlinevirtual

Reimplemented in TraitToolTorch.

Definition at line 1404 of file Trait.cs.

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

Referenced by CardRenderer.OnEnterScreen().

◆ OnEquip()

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

Reimplemented in TraitEQFlower.

Definition at line 660 of file Trait.cs.

661 {
662 }

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

◆ OnHeld()

virtual void Trait.OnHeld ( )
inlinevirtual

Reimplemented in TraitDetector.

Definition at line 1034 of file Trait.cs.

1035 {
1036 }

Referenced by HotItemHeld.OnSetCurrentItem().

◆ OnImportMap()

virtual void Trait.OnImportMap ( )
inlinevirtual

Reimplemented in TraitAltar, TraitBook, TraitNewZone, and TraitNote.

Definition at line 644 of file Trait.cs.

645 {
646 }

Referenced by SerializedCards.Restore().

◆ OnInstall()

virtual void Trait.OnInstall ( bool  byPlayer)
inlinevirtual

Reimplemented in TraitSwitch.

Definition at line 1114 of file Trait.cs.

1115 {
1116 }

◆ OnOpenDoor()

virtual void Trait.OnOpenDoor ( Chara  c)
inlinevirtual

Reimplemented in TraitDoorBell.

Definition at line 1072 of file Trait.cs.

1073 {
1074 }

Referenced by TraitDoor.TryOpen().

◆ OnRead()

◆ OnRemovedFromZone()

virtual void Trait.OnRemovedFromZone ( )
inlinevirtual

Reimplemented in TraitBoat.

Definition at line 676 of file Trait.cs.

677 {
678 }

Referenced by Map.OnCardRemovedFromZone().

◆ OnRenderExtra()

virtual void Trait.OnRenderExtra ( RenderParam  p)
inlinevirtual

Reimplemented in TraitPaintBoard, and TraitShrine.

Definition at line 620 of file Trait.cs.

621 {
622 }

Referenced by CardRenderer.Draw().

◆ OnRenderTile()

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

Reimplemented in TraitLightSun, and TraitRoadSign.

Definition at line 693 of file Trait.cs.

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

References MeshPass.Add(), BaseGameScreen.guide, item, ListPoints(), ScreenGuide.passGuideFloor, Point.Position(), radius, GameSetting.render, EClass.screen, EClass.setting, and GameSetting.RenderSetting.thingZ.

Referenced by RecipeCard.OnRenderMarker(), ActionMode.OnRenderTile(), and AM_Adv.OnRenderTile().

◆ OnSetCardGrid()

virtual void Trait.OnSetCardGrid ( ButtonGrid  b)
inlinevirtual

Reimplemented in TraitCanvas, TraitContainer, TraitEquipItem, and TraitFigure.

Definition at line 1060 of file Trait.cs.

1061 {
1062 }

Referenced by ButtonGrid.SetCard().

◆ OnSetCurrentItem()

virtual void Trait.OnSetCurrentItem ( )
inlinevirtual

Reimplemented in TraitToolTorch.

Definition at line 1042 of file Trait.cs.

1043 {
1044 }

◆ OnSetOwner()

virtual void Trait.OnSetOwner ( )
inlinevirtual

Definition at line 640 of file Trait.cs.

641 {
642 }

Referenced by SetOwner().

◆ OnSimulateHour()

virtual void Trait.OnSimulateHour ( VirtualDate  date)
inlinevirtual

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

Definition at line 680 of file Trait.cs.

681 {
682 }

Referenced by Card.OnSimulateHour().

◆ OnStepped()

virtual void Trait.OnStepped ( Chara  c)
inlinevirtual

Reimplemented in TraitCurrencyMedal, TraitFloorSwitch, TraitGeneratorWheel, TraitMiniPool, TraitNewZone, TraitSwing, and TraitTrapMine.

Definition at line 1064 of file Trait.cs.

1065 {
1066 }

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

◆ OnSteppedOut()

virtual void Trait.OnSteppedOut ( Chara  c)
inlinevirtual

Reimplemented in TraitGeneratorWheel, and TraitSwing.

Definition at line 1068 of file Trait.cs.

1069 {
1070 }

Referenced by Chara._Move().

◆ OnThrowGround()

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

Reimplemented in TraitDrink, and TraitDye.

Definition at line 984 of file Trait.cs.

985 {
986 }

Referenced by ActThrow.Throw().

◆ OnTickHeld()

virtual void Trait.OnTickHeld ( )
inlinevirtual

Reimplemented in TraitDetector.

Definition at line 1038 of file Trait.cs.

1039 {
1040 }

Referenced by Chara.Tick().

◆ OnToggle()

virtual void Trait.OnToggle ( )
inlinevirtual

Reimplemented in TraitJukeBox, and TraitLeverBreaker.

Definition at line 1224 of file Trait.cs.

1225 {
1226 }

◆ OnUnequip()

virtual void Trait.OnUnequip ( Chara  c)
inlinevirtual

Reimplemented in TraitEQFlower.

Definition at line 664 of file Trait.cs.

665 {
666 }

Referenced by CharaBody.Unequip().

◆ OnUninstall()

virtual void Trait.OnUninstall ( )
inlinevirtual

Definition at line 1118 of file Trait.cs.

1119 {
1120 }

◆ OnUnsetCurrentItem()

virtual void Trait.OnUnsetCurrentItem ( )
inlinevirtual

Reimplemented in TraitToolTorch.

Definition at line 1046 of file Trait.cs.

1047 {
1048 }

◆ OnUse() [1/3]

◆ OnUse() [2/3]

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

Reimplemented in TraitDye, and TraitFoodMeat.

Definition at line 1012 of file Trait.cs.

1013 {
1014 return true;
1015 }

◆ OnUse() [3/3]

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

Reimplemented in TraitPotionEmpty.

Definition at line 1017 of file Trait.cs.

1018 {
1019 return true;
1020 }

◆ PlayToggleEffect()

virtual void Trait.PlayToggleEffect ( bool  silent)
inlinevirtual

Reimplemented in TraitWoodMill.

Definition at line 1178 of file Trait.cs.

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

References Card.isOn, EClass.pc, Card.PlaySound(), Card.pos, Card.RecalculateFOV(), Point.RefreshNeighborTiles(), and Card.Say().

◆ RefreshRenderer()

virtual void Trait.RefreshRenderer ( )
inlinevirtual

Reimplemented in TraitToolTorch.

Definition at line 1409 of file Trait.cs.

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

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

◆ Refuel()

void Trait.Refuel ( Thing  t)
inline

Definition at line 1358 of file Trait.cs.

1359 {
1360 t.PlaySoundDrop(spatial: false);
1362 Msg.Say("fueled", t);
1363 if (!owner.isOn)
1364 {
1365 owner.trait.Toggle(on: true);
1366 }
1367 t.Destroy();
1369 }
void PlayAnime(AnimeID id, bool force)
void ModCharge(int a, bool destroy=false)
Definition: Card.cs:3795
void Destroy()
Definition: Card.cs:4783
void PlaySoundDrop(bool spatial=true)
Definition: Card.cs:5761
Definition: Msg.cs:5
static string Say(string idLang, string ref1, string ref2=null, string ref3=null, string ref4=null)
Definition: Msg.cs:58
virtual void Toggle(bool on, bool silent=false)
Definition: Trait.cs:1144

References Card.Destroy(), Card.isOn, Card.ModCharge(), Card.Num, CardRenderer.PlayAnime(), Card.PlaySoundDrop(), Card.renderer, Msg.Say(), Toggle(), and Card.trait.

Referenced by InvOwnerRefuel._OnProcess().

◆ SetMainText()

virtual void Trait.SetMainText ( UIText  t,
bool  hotitem 
)
inlinevirtual

Reimplemented in TraitAbility, and TraitToolRange.

Definition at line 1424 of file Trait.cs.

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

References Card.ammoData, Card.c_ammo, Card.c_charges, Card.IsIdentified, Card.isThing, Card.Num, UIText.SetText(), Thing.source, and Card.Thing.

Referenced by ButtonGrid.SetCard(), and HotItemThing.SetSubText().

◆ SetName()

◆ SetOwner()

virtual void Trait.SetOwner ( Card  _owner)
inlinevirtual

Definition at line 629 of file Trait.cs.

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

References OnSetOwner(), and owner.

Referenced by Card.ApplyTrait().

◆ SetParams()

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

Definition at line 648 of file Trait.cs.

649 {
650 }

◆ Toggle()

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

Definition at line 1144 of file Trait.cs.

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

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

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

◆ TryOpenLock()

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

Definition at line 885 of file Trait.cs.

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

References Card.c_lockedHard, Card.c_lockLv, Card.Evalue(), Card.isLostProperty, Chara.IsPC, Stats.Mod(), Card.ModCharge(), Card.ModExp(), Player.ModKarma(), Card.PlayAnime(), EClass.player, Card.PlaySound(), EClass.rnd(), Card.Say(), Chara.stamina, and Card.things.

◆ TryProgress()

virtual bool Trait.TryProgress ( AIProgress  p)
inlinevirtual

Reimplemented in TraitBaseSpellbook.

Definition at line 880 of file Trait.cs.

881 {
882 return true;
883 }

Referenced by AI_Read.Run().

◆ TryRefuel()

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

Definition at line 1371 of file Trait.cs.

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

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

◆ TrySetAct()

virtual void Trait.TrySetAct ( ActPlan  p)
inlinevirtual

◆ TrySetHeldAct()

◆ TrySetToggleAct()

virtual void Trait.TrySetToggleAct ( ActPlan  p)
inlinevirtual

Definition at line 1228 of file Trait.cs.

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

References EClass._zone, ActPlan.altAction, Card.c_charges, LayerDragGrid.Create(), Card.disableAutoToggle, Card.isOn, Zone.IsPCFaction, ActPlan.IsSelfOrNeighbor, and ActPlan.TrySetAct().

Referenced by ActPlan._Update().

◆ TryToggle()

virtual void Trait.TryToggle ( )
inlinevirtual

Definition at line 1122 of file Trait.cs.

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

References EClass._map, EClass._zone, Card.Cell, 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 1096 of file Trait.cs.

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

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

Referenced by Card.SetPlaceState().

◆ Update()

virtual void Trait.Update ( )
inlinevirtual

Reimplemented in TraitDoor, TraitFoodEgg, TraitGeneratorWheel, and TraitSpotSpawn.

Definition at line 718 of file Trait.cs.

719 {
720 }

◆ WriteNote()

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

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

Definition at line 942 of file Trait.cs.

943 {
944 }

Member Data Documentation

◆ listRadiusPoints

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

Definition at line 28 of file Trait.cs.

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

◆ owner

Card Trait.owner

Definition at line 26 of file Trait.cs.

Referenced by Chara._Move(), InvOwnerRecycle._OnProcess(), TraitGodStatue._OnUse(), TraitShrine._OnUse(), TraitSwitch.ActivateTrap(), TraitBed.AddHolder(), TraitHouseBoard.ApplyData(), ActMelee.Attack(), FactionBranch.CalcInnIncome(), TraitTrainingDummyArmor.CalcPV(), TraitTrolley.CanActivate(), TraitBed.CanAssign(), TraitNewZone.CanAutoEnter(), TraitDoor.CanClose(), TaskDrawWater.CanProgress(), TaskPourWater.CanProgress(), TraitScroll.CanRead(), TraitAmmo.CanStackTo(), TraitAncientbook.CanStackTo(), TraitFood.CanStackTo(), TraitFoodEggFertilized.CanStackTo(), TraitMonsterBall.CanStackTo(), TraitFoodPreparedPackage.CanUse(), TraitGamble.CanUse(), TraitGeneMachine.CanUse(), TraitGeneratorWheel.CanUse(), TraitItem.CanUse(), TraitLoytelMart.CanUse(), TraitMoongate.CanUse(), TraitPowerStatue.CanUse(), TraitShackle.CanUse(), TraitSlotMachine.CanUse(), TraitBed.ClearHolders(), TraitEffect.CompareTo(), Contains(), TraitCrafter.Craft(), TraitPotion.Create(), TraitRod.Create(), TraitSpellbook.Create(), TraitAbility.CreateAct(), TraitCatalyst.CreateAct(), LayerDragGrid.CreateChaosOffering(), LayerDragGrid.CreateCraft(), LayerDragGrid.CreateGacha(), LayerDragGrid.CreateOffering(), LayerDragGrid.CreateRecycle(), TraitNewZone.CreateZone(), AIAct.DoGoto< T >(), BaseTileMap.DrawTile(), TraitDye.Dye(), TraitBoat.ForeachDeck(), AI_Pray.GetAltar(), TraitTile.GetBuildModeRecipe(), TraitFactory.GetCostSp(), TraitItemProc.GetCraftNum(), TraitScrollMapTreasure.GetDest(), Hobby.GetEfficiency(), TraitNewZone.GetExitPos(), TraitStairs.GetExitPos(), TraitBed.GetHoverText(), TraitTrolley.GetIdSound(), GetName(), TraitGene.GetName(), TraitPotionRandom.GetName(), GetPoint(), AI_Trolley.GetPoint(), TraitPotionAlchemy.GetPower(), GetRandomPoint(), TraitTile.GetRecipe(), AI_Grab< T >.GetTarget(), TraitGeneMachine.GetTarget(), TeleportManager.GetTeleportZone(), GetValue(), TraitGene.GetValue(), TraitMod.GetValue(), TraitBoat.GetWaterMat(), TraitBed.HasHolder(), TraitChopper.IdleUse(), TraitGamble.IdleUse(), TraitTrainingDummy.IdleUse(), TraitTrap.IgnoreWhenLevitating(), TraitBed.IsFull(), TraitBed.IsHolder(), TraitDoor.IsOpen(), TraitShackle.IsRestraining(), TraitDoor.IsValid(), ListPoints(), TraitLightSun.ListPoints(), TraitBaseSpellbook.ModCharge(), TraitGenerator.ModHP(), TraitNewZone.MoveZone(), TraitHitchingPost.OnActivateTrap(), TraitSeesaw.OnActivateTrap(), TraitTrap.OnActivateTrap(), ConSleep.OnBeforeStart(), TraitDreamBug.OnBlend(), TraitDrink.OnBlend(), TraitWell.OnBlend(), TraitGodStatue.OnChangeMaterial(), TraitHouseBoard.OnChangePlaceState(), TraitTeleporter.OnChangePlaceState(), TraitTent.OnChangePlaceState(), TraitBrewery.OnChildDecay(), TraitBlanket.OnCrafted(), TraitPotionAlchemy.OnCrafted(), TraitBaseContainer.OnCreate(), TraitBaseSpellbook.OnCreate(), TraitBlanket.OnCreate(), TraitBook.OnCreate(), TraitChestPractice.OnCreate(), 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(), TraitRod.TrySetHeldAct(), TraitSalesTag.TrySetHeldAct(), TraitSyringeGene.TrySetHeldAct(), TraitSyringeHeaven.TrySetHeldAct(), TraitToolBuild.TrySetHeldAct(), TraitToolSickle.TrySetHeldAct(), TraitToolTorch.TrySetHeldAct(), TraitToolWaterCan.TrySetHeldAct(), TraitToolWaterPot.TrySetHeldAct(), HotItemHeld.TrySetToolAct(), TraitSeed.TrySprout(), TraitTeleporter.TryTeleport(), TraitFoodEgg.Update(), TraitSpotSpawn.Update(), FactionBranch.Upgrade(), TraitBed.ValidateOwners(), and TraitGene.WriteNote().

◆ SelfFactory

TraitSelfFactory Trait.SelfFactory = new TraitSelfFactory()
static

Property Documentation

◆ AllowCriminal

virtual bool Trait.AllowCriminal
get

Definition at line 541 of file Trait.cs.

◆ AllowSell

virtual bool Trait.AllowSell
get

Definition at line 517 of file Trait.cs.

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

◆ AlwaysHideOnLowWall

virtual bool Trait.AlwaysHideOnLowWall
get

Definition at line 347 of file Trait.cs.

Referenced by BaseTileMap.DrawTile().

◆ AutoToggle

virtual bool Trait.AutoToggle
get

Definition at line 381 of file Trait.cs.

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

◆ CanAutofire

virtual bool Trait.CanAutofire
get

Definition at line 141 of file Trait.cs.

Referenced by Thing.CanAutoFire().

◆ CanBeAttacked

virtual bool Trait.CanBeAttacked
get

◆ CanBeDestroyed

◆ CanBeDisassembled

virtual bool Trait.CanBeDisassembled
get

Definition at line 299 of file Trait.cs.

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

Referenced by TaskHarvest.TryGetAct().

◆ CanBeDropped

◆ CanBeHallucinated

virtual bool Trait.CanBeHallucinated
get

Definition at line 293 of file Trait.cs.

Referenced by CardRenderer.Draw().

◆ CanBeHeld

virtual bool Trait.CanBeHeld
get

◆ CanBeHeldAsFurniture

virtual bool Trait.CanBeHeldAsFurniture
get

Definition at line 331 of file Trait.cs.

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

◆ CanBeMasked

virtual bool Trait.CanBeMasked
get

Definition at line 255 of file Trait.cs.

◆ CanBeOnlyBuiltInHome

virtual bool Trait.CanBeOnlyBuiltInHome
get

◆ CanBeShipped

virtual bool Trait.CanBeShipped
get

Definition at line 311 of file Trait.cs.

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

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

◆ CanBeSmashedToDeath

virtual bool Trait.CanBeSmashedToDeath
get

Definition at line 291 of file Trait.cs.

Referenced by Card.Die().

◆ CanBeStolen

virtual bool Trait.CanBeStolen
get

Definition at line 275 of file Trait.cs.

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

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

◆ CanBuildInTown

virtual bool Trait.CanBuildInTown
get

Definition at line 261 of file Trait.cs.

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

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

◆ CanChangeHeight

virtual bool Trait.CanChangeHeight
get

Definition at line 147 of file Trait.cs.

Referenced by HotItemHeld.CanChangeHeightByWheel().

◆ CanCopyInBlueprint

virtual bool Trait.CanCopyInBlueprint
get

Definition at line 151 of file Trait.cs.

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

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

◆ CanExtendBuild

virtual bool Trait.CanExtendBuild
get

Definition at line 165 of file Trait.cs.

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

◆ CanHarvest

virtual bool Trait.CanHarvest
get

Definition at line 90 of file Trait.cs.

Referenced by TaskHarvest.TryGetAct().

◆ CanName

virtual bool Trait.CanName
get

Definition at line 143 of file Trait.cs.

Referenced by ActPlan._Update().

◆ CanOnlyCarry

◆ CanOpenContainer

virtual bool Trait.CanOpenContainer
get

Definition at line 229 of file Trait.cs.

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

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

◆ CanPutAway

virtual bool Trait.CanPutAway
get

Definition at line 145 of file Trait.cs.

◆ CanSearchContent

virtual bool Trait.CanSearchContent
get

Definition at line 213 of file Trait.cs.

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

Referenced by ThingContainer._List().

◆ CanStack

virtual bool Trait.CanStack
get

◆ CanUseContent

virtual bool Trait.CanUseContent
get

Definition at line 211 of file Trait.cs.

Referenced by QuestDeliver.IsDestThing().

◆ CanUseRoomRadius

virtual bool Trait.CanUseRoomRadius
get

Definition at line 96 of file Trait.cs.

Referenced by ListPoints().

◆ ColorExtra

virtual ? Color Trait.ColorExtra
get

Definition at line 439 of file Trait.cs.

◆ ContainerType

virtual ContainerType Trait.ContainerType
get

Definition at line 243 of file Trait.cs.

◆ CopyShop

virtual CopyShopType Trait.CopyShop
get

Definition at line 507 of file Trait.cs.

Referenced by OnBarter().

◆ CostRerollShop

virtual int Trait.CostRerollShop
get

Definition at line 529 of file Trait.cs.

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

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

◆ CraftNum

virtual int Trait.CraftNum
get

◆ CurrencyType

virtual CurrencyType Trait.CurrencyType
get

Definition at line 513 of file Trait.cs.

Referenced by TraitVendingMachine.OnUse().

◆ Decay

virtual int Trait.Decay
get

Definition at line 119 of file Trait.cs.

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

◆ DecaySpeed

virtual int Trait.DecaySpeed
get

Definition at line 121 of file Trait.cs.

◆ DecaySpeedChild

virtual int Trait.DecaySpeedChild
get

Definition at line 123 of file Trait.cs.

◆ DefaultStock

virtual int Trait.DefaultStock
get

Definition at line 127 of file Trait.cs.

Referenced by OnBarter().

◆ DisableAutoCombat

virtual bool Trait.DisableAutoCombat
get

Definition at line 195 of file Trait.cs.

Referenced by ActPlan._Update().

◆ DropChance

virtual float Trait.DropChance
get

Definition at line 353 of file Trait.cs.

Referenced by Card.SpawnLoot().

◆ EffectDead

virtual EffectDead Trait.EffectDead
get

Definition at line 247 of file Trait.cs.

Referenced by Card.Die().

◆ Electricity

virtual int Trait.Electricity
get

Definition at line 100 of file Trait.cs.

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

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

◆ ExistsOnMap

bool Trait.ExistsOnMap
get

Definition at line 349 of file Trait.cs.

Referenced by AI_Pray.IsValid(), AI_Bladder.Run(), and AI_Paint.Run().

◆ FuelCost

virtual int Trait.FuelCost
get

Definition at line 453 of file Trait.cs.

Referenced by AI_UseCrafter.Run().

◆ GuidePriotiy

virtual int Trait.GuidePriotiy
get

Definition at line 98 of file Trait.cs.

Referenced by DramaCustomSequence.GetListGuide().

◆ HasCharges

virtual bool Trait.HasCharges
get

Definition at line 323 of file Trait.cs.

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

◆ HaveUpdate

virtual bool Trait.HaveUpdate
get

Definition at line 135 of file Trait.cs.

◆ HideInAdv

virtual bool Trait.HideInAdv
get

Definition at line 343 of file Trait.cs.

◆ HoldAsDefaultInteraction

virtual bool Trait.HoldAsDefaultInteraction
get

Definition at line 129 of file Trait.cs.

Referenced by InvOwner.GetAutoUseLang().

◆ IDActorEx

virtual string Trait.IDActorEx
get

Definition at line 171 of file Trait.cs.

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

◆ IDInvStyle

virtual string Trait.IDInvStyle
get

Definition at line 169 of file Trait.cs.

◆ IdleUseChance

virtual int Trait.IdleUseChance
get

Definition at line 357 of file Trait.cs.

Referenced by AI_Idle.TryPerformIdleUse().

◆ IdNoRestock

virtual string Trait.IdNoRestock
get

Definition at line 355 of file Trait.cs.

Referenced by OnBarter().

◆ IdSkin

virtual int Trait.IdSkin
get

Definition at line 44 of file Trait.cs.

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

◆ IdSoundToggleOff

virtual string Trait.IdSoundToggleOff
get

Definition at line 489 of file Trait.cs.

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

◆ IdSoundToggleOn

virtual string Trait.IdSoundToggleOn
get

Definition at line 473 of file Trait.cs.

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

◆ IdToggleExtra

string Trait.IdToggleExtra
get

Definition at line 459 of file Trait.cs.

◆ IgnoreLastStackHeight

virtual bool Trait.IgnoreLastStackHeight
get

Definition at line 117 of file Trait.cs.

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

◆ InstallBottomPriority

virtual int Trait.InstallBottomPriority
get

Definition at line 88 of file Trait.cs.

Referenced by Card.SetPlaceState().

◆ InvertHeldSprite

virtual bool Trait.InvertHeldSprite
get

Definition at line 70 of file Trait.cs.

Referenced by CharaActorPCC.OnRender().

◆ InvGridSize

virtual InvGridSize Trait.InvGridSize
get

Definition at line 197 of file Trait.cs.

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

◆ IsAltar

virtual bool Trait.IsAltar
get

Definition at line 251 of file Trait.cs.

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

◆ IsAnimeOn

virtual bool Trait.IsAnimeOn
get

Definition at line 367 of file Trait.cs.

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

◆ IsBlendBase

virtual bool Trait.IsBlendBase
get

Definition at line 257 of file Trait.cs.

Referenced by ActPlan._Update().

◆ IsBlockPath

virtual bool Trait.IsBlockPath
get

Definition at line 52 of file Trait.cs.

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

◆ IsBlockSight

virtual bool Trait.IsBlockSight
get

Definition at line 54 of file Trait.cs.

Referenced by Cell.Refresh().

◆ IsChangeFloorHeight

virtual bool Trait.IsChangeFloorHeight
get

Definition at line 72 of file Trait.cs.

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

◆ IsContainer

virtual bool Trait.IsContainer
get

◆ IsDoor

virtual bool Trait.IsDoor
get

◆ IsFactory

◆ IsFloating

virtual bool Trait.IsFloating
get

Definition at line 62 of file Trait.cs.

Referenced by Cell.Refresh().

◆ IsFridge

virtual bool Trait.IsFridge
get

Definition at line 125 of file Trait.cs.

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

◆ IsGround

virtual bool Trait.IsGround
get

Definition at line 66 of file Trait.cs.

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

◆ IsHomeItem

virtual bool Trait.IsHomeItem
get

Definition at line 249 of file Trait.cs.

◆ IsLighting

bool Trait.IsLighting
get

Definition at line 393 of file Trait.cs.

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

◆ IsLightOn

virtual bool Trait.IsLightOn
get

Definition at line 405 of file Trait.cs.

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

Referenced by Card.GetLightRadius().

◆ IsNightOnlyLight

virtual bool Trait.IsNightOnlyLight
get

Definition at line 417 of file Trait.cs.

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

◆ IsNoShop

virtual bool Trait.IsNoShop
get

Definition at line 64 of file Trait.cs.

Referenced by OnBarter().

◆ IsOn

virtual bool Trait.IsOn
get

Definition at line 365 of file Trait.cs.

◆ IsOnlyUsableByPc

virtual bool Trait.IsOnlyUsableByPc
get

Definition at line 68 of file Trait.cs.

◆ IsOpenPath

virtual bool Trait.IsOpenPath
get

Definition at line 60 of file Trait.cs.

Referenced by Cell.Refresh().

◆ IsOpenSight

virtual bool Trait.IsOpenSight
get

Definition at line 58 of file Trait.cs.

Referenced by Cell.Refresh().

◆ IsRequireFuel

bool Trait.IsRequireFuel
get

Definition at line 457 of file Trait.cs.

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

◆ IsRestSpot

virtual bool Trait.IsRestSpot
get

Definition at line 253 of file Trait.cs.

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

◆ IsSpecialContainer

virtual bool Trait.IsSpecialContainer
get

◆ IsSpot

virtual bool Trait.IsSpot
get

Definition at line 137 of file Trait.cs.

◆ IsThrowMainAction

virtual bool Trait.IsThrowMainAction
get

Definition at line 177 of file Trait.cs.

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

Referenced by HotItemHeld.TrySetAct().

◆ IsToggle

bool Trait.IsToggle
get

Definition at line 379 of file Trait.cs.

◆ IsTool

virtual bool Trait.IsTool
get

◆ LangBarter

virtual string Trait.LangBarter
get

Definition at line 547 of file Trait.cs.

◆ langNote

virtual string Trait.langNote
get

Definition at line 167 of file Trait.cs.

Referenced by TraitItem.WriteNote().

◆ LangUse

virtual string Trait.LangUse
get

Definition at line 363 of file Trait.cs.

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

◆ LevelAsQuality

virtual bool Trait.LevelAsQuality
get

Definition at line 189 of file Trait.cs.

Referenced by Card.Create().

◆ MaskOnBuild

virtual bool Trait.MaskOnBuild
get

Definition at line 173 of file Trait.cs.

Referenced by RecipeCard.Build().

◆ MaxFuel

virtual int Trait.MaxFuel
get

Definition at line 441 of file Trait.cs.

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

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

◆ Name

virtual string Trait.Name
get

Definition at line 46 of file Trait.cs.

Referenced by LayerHome.RefreshSpots().

◆ NoHeldDir

virtual bool Trait.NoHeldDir
get

Definition at line 345 of file Trait.cs.

Referenced by CharaRenderer.DrawHeld().

◆ NumCopyItem

virtual int Trait.NumCopyItem
get

Definition at line 509 of file Trait.cs.

Referenced by OnBarter().

◆ Params

string [] Trait.Params
get

Definition at line 30 of file Trait.cs.

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

Referenced by GetParam(), and GetParamInt().

◆ PriceType

virtual PriceType Trait.PriceType
get

Definition at line 515 of file Trait.cs.

Referenced by TraitVendingMachine.OnUse().

◆ radius

virtual int Trait.radius
get

◆ radiusType

virtual TraitRadiusType Trait.radiusType
get

Definition at line 94 of file Trait.cs.

Referenced by ListPoints().

◆ RecipeCat

virtual string Trait.RecipeCat
get

Definition at line 359 of file Trait.cs.

Referenced by BuildMenu.RefreshCategory().

◆ RefCardName

virtual RefCardName Trait.RefCardName
get

Definition at line 50 of file Trait.cs.

◆ RenderExtra

virtual bool Trait.RenderExtra
get

Definition at line 351 of file Trait.cs.

Referenced by CardRenderer.Draw().

◆ ReqHarvest

virtual string Trait.ReqHarvest
get

Definition at line 297 of file Trait.cs.

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

◆ RequireFullStackCheck

virtual bool Trait.RequireFullStackCheck
get

Definition at line 193 of file Trait.cs.

◆ RestockDay

virtual int Trait.RestockDay
get

Definition at line 543 of file Trait.cs.

◆ ShopLv

virtual int Trait.ShopLv
get

Definition at line 505 of file Trait.cs.

◆ ShopType

virtual ShopType Trait.ShopType
get

Definition at line 511 of file Trait.cs.

Referenced by Zone.GetRandomVisitPos().

◆ ShouldRefreshTile

virtual bool Trait.ShouldRefreshTile
get

Definition at line 74 of file Trait.cs.

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

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

◆ ShouldTryRefreshRoom

virtual bool Trait.ShouldTryRefreshRoom
get

Definition at line 86 of file Trait.cs.

Referenced by Card.SetPlaceState().

◆ ShowAsTool

virtual bool Trait.ShowAsTool
get

Definition at line 329 of file Trait.cs.

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

◆ ShowCharges

virtual bool Trait.ShowCharges
get

Definition at line 325 of file Trait.cs.

Referenced by Thing.GetName().

◆ ShowChildrenNumber

virtual bool Trait.ShowChildrenNumber
get

Definition at line 327 of file Trait.cs.

◆ ShowContextOnPick

virtual bool Trait.ShowContextOnPick
get

Definition at line 175 of file Trait.cs.

Referenced by AM_MoveInstalled.OnProcessTiles().

◆ ShowFuelWindow

virtual bool Trait.ShowFuelWindow
get

Definition at line 455 of file Trait.cs.

◆ ShowOrbit

virtual bool Trait.ShowOrbit
get

Definition at line 133 of file Trait.cs.

Referenced by CardRenderer.TrySpawnOrbit().

◆ SlaverType

virtual SlaverType Trait.SlaverType
get

Definition at line 545 of file Trait.cs.

◆ TextNextRestock

string Trait.TextNextRestock
get

Definition at line 549 of file Trait.cs.

◆ TextNextRestockPet

string Trait.TextNextRestockPet
get

Definition at line 551 of file Trait.cs.

◆ ThrowType

virtual ThrowType Trait.ThrowType
get

Definition at line 245 of file Trait.cs.

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

◆ tileMode

virtual TileMode Trait.tileMode
get

Definition at line 429 of file Trait.cs.

◆ tileType

virtual TileType Trait.tileType
get

◆ ToggleType

virtual ToggleType Trait.ToggleType
get

Definition at line 461 of file Trait.cs.

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

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

◆ UseAltTiles

virtual bool Trait.UseAltTiles
get

Definition at line 431 of file Trait.cs.

◆ UseDummyTile

virtual bool Trait.UseDummyTile
get

Definition at line 191 of file Trait.cs.

Referenced by CardRenderer.Draw().

◆ UseExtra

virtual bool Trait.UseExtra
get

Definition at line 435 of file Trait.cs.

◆ UseLightColor

virtual bool Trait.UseLightColor
get

Definition at line 437 of file Trait.cs.

◆ UseLowblock

virtual bool Trait.UseLowblock
get

Definition at line 433 of file Trait.cs.

Referenced by BaseTileMap.DrawTile().

◆ WeightMod

virtual byte Trait.WeightMod
get

Definition at line 42 of file Trait.cs.

Referenced by Cell.Refresh().


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