2using System.Collections.Generic;
145 public virtual bool CanStack => owner.category.maxStack > 1;
217 return owner.c_lockLv == 0;
299 return owner.rarity <
Rarity.Artifact;
665 Vector3 vector2 =
item.Position();
696 for (
int i = 0; i < 50; i++)
698 Point point = list.RandomItem();
699 if (point.
IsValid && (func ==
null || func(point)) && (accessChara ==
null || accessChara.HasAccess(point)))
719 Room room = center.cell.room;
740 if (!p.cell.HasBlock || p.cell.HasFence)
742 listRadiusPoints.Add(p.Copy());
747 listRadiusPoints.Add(p.Copy());
810 string @ref = row.GetTextArray(
"name2")[1];
811 string ref2 = row.GetTextArray(
"name2")[0];
814 cc.
Talk(
"offer", @ref, ref2);
836 cc.depression.Mod(100);
850 int num = ((thing ==
null) ? (cc.
Evalue(280) / 2 + 2) : (cc.
Evalue(280) + 10));
855 num2 = num / 4 * 3 - 1;
857 if (num <= num2 && cc.
IsPC)
860 cc.
Say(
"openLockFail2");
864 if (thing !=
null && !flag)
871 cc.
Say(
"lockpick_success", cc, owner);
872 int num3 = 100 + num2 * 10;
881 owner.c_lockedHard =
false;
882 owner.c_priceAdd = 0;
888 owner.isLostProperty =
false;
894 cc.
Say(
"openLockFail");
896 cc.
ModExp(280, (thing !=
null) ? 50 : 30);
897 if ((thing ==
null) | (
EClass.
rnd(2) == 0))
986 if (CanUse(owner.
Chara))
1040 if (Electricity != 0)
1042 EClass._zone.dirtyElectricity =
true;
1043 if (Electricity > 0)
1045 EClass._zone.electricity += Electricity;
1055 OnInstall(byPlayer);
1060 if (Electricity != 0)
1064 Toggle(on:
false, silent:
true);
1066 EClass._zone.dirtyElectricity =
true;
1067 if (Electricity > 0)
1069 EClass._zone.electricity -= Electricity;
1092 Toggle(on:
false, silent:
true);
1094 else if (AutoToggle)
1102 Toggle(on, silent:
true);
1106 public virtual void Toggle(
bool on,
bool silent =
false)
1108 if (owner.
isOn == on)
1112 if (Electricity < 0)
1122 owner.
Say(
"notEnoughElectricity", owner);
1124 owner.
PlaySound(
"electricity_insufficient");
1128 EClass._zone.electricity += Electricity;
1132 EClass._zone.electricity -= Electricity;
1136 PlayToggleEffect(silent);
1143 bool isOn = owner.
isOn;
1156 owner.
Say(isOn ?
"close" :
"open",
EClass.
pc, owner);
1157 owner.
PlaySound(
"Material/leather_drop");
1169 owner.
Say(flag ?
"toggle_fire" :
"toggle_ele",
EClass.
pc, owner);
1170 string id = ((Electricity < 0) ?
"switch_on_electricity" : (flag ?
"torch_lit" :
"switch_on"));
1173 id =
"switch_on_musicbox";
1183 string id2 = ((Electricity < 0) ?
"switch_off_electricity" : (flag ?
"torch_unlit" :
"switch_off"));
1186 id2 =
"switch_off_musicbox";
1209 Toggle(!owner.
isOn);
1216 Toggle(!owner.
isOn);
1231 p.
TrySetAct(flag ?
"ActExtinguishTorch" :
"ActToggleOff", delegate
1240 p.
TrySetAct(flag ?
"ActTorch" :
"ActToggleOn", delegate
1269 public bool IsFuelEnough(
int num = 1, List<Thing> excludes =
null,
bool tryRefuel =
true)
1281 TryRefuel(FuelCost * num - owner.
c_charges, excludes);
1283 return owner.c_charges >= FuelCost * num;
1288 return GetFuelValue(s) > 0;
1293 return GetFuelValue(t) > 0;
1302 return GetFuelValue(t.
id);
1309 if (
id ==
"battery")
1343 if (FindFuel(refuel:
false))
1345 FindFuel(refuel:
true);
1347 bool FindFuel(
bool refuel)
1353 if (IsFuel(t) && t.qualityTier == 0 && (excludes ==
null || !excludes.Contains(t)))
1362 int num2 = Mathf.Min(
item.Num, Mathf.CeilToInt((
float)num / (float)GetFuelValue(
item)));
1363 num -= GetFuelValue(
item) * num2;
1366 Refuel(
item.Split(num2));
1399 t.SetActive(enable:
true);
1404 t.SetActive(enable:
true);
1409 t.SetActive(owner.
Num > 1);
1420 int rawDeadLine = 0;
1434 if (remainingHours > 0)
1436 return "nextRestock".lang(lang.lang(),
Date.
GetText(remainingHours) ??
"");
1448 return Emo2.restock;
1456 return Emo2.blessing;
1458 return Emo2.restock;
1477 owner.isRestocking =
true;
1491 if (c_copyContainer ==
null)
1503 thing4.isStolen =
false;
1504 thing4.isCopy =
true;
1505 thing4.c_priceFix = 0;
1515 num4 = (1000 + owner.c_invest * 100) / (thing4.GetPrice() + 50);
1516 int[] array =
new int[4] { 701, 704, 703, 702 };
1517 foreach (
int ele
in array)
1519 if (thing4.HasElement(ele))
1530 if (num4 > 1 && thing4.trait.CanStack)
1532 thing4.SetNum(num4);
1545 string id2 = owner.
id;
1546 if (!(id2 ==
"mogu"))
1548 if (!(id2 ==
"felmera"))
1566 Add(
"license_illumination", 1, 0);
1567 Add(
"license_void", 1, 0);
1568 Add(
"license_adv", 1, 0);
1572 for (
int l = 0; l < 30; l++)
1585 for (
int n = 0; n <
EClass.
rnd(3) + 1; n++)
1589 for (
int num5 = 0; num5 <
EClass.
rnd(3) + 1; num5++)
1596 Add(
"board_map", 1, 0);
1597 Add(
"board_build", 1, 0);
1598 Add(
"book_resident", 1, 0);
1612 Add(
"board_home", 1, 0);
1613 Add(
"board_resident", 1, 0);
1618 Add(
"board_expedition", 1, 0);
1619 Add(
"mailpost", 1, 0);
1620 Add(
"record", 1, 0);
1623 Add(
"wagon1", 1, 0);
1624 Add(
"wagon_big", 1, 0);
1625 Add(
"wagon_big2", 1, 0);
1626 Add(
"wagon_big3", 1, 0);
1627 Add(
"wagon_big4", 1, 0);
1628 Add(
"wagon_big5", 1, 0);
1629 Add(
"teleporter", 1, 0);
1630 Add(
"teleporter2", 1, 0);
1631 Add(
"recharger", 1, 0);
1632 Add(
"machine_gene2", 1, 0);
1649 Add(
"drawing_paper", 10, 0);
1650 Add(
"drawing_paper2", 10, 0);
1651 Add(
"stethoscope", 1, 0);
1652 Add(
"whip_love", 1, 0);
1653 Add(
"whip_interest", 1, 0);
1658 Add(
"flyer", 1, 0).SetNum(99);
1663 bool num2 = owner.id ==
"big_sister";
1667 Add(
"littleball", 10, 0);
1670 for (
int k = 0; k < 10; k++)
1680 Add(
"chest_tax", 1, 0);
1682 Add(
"monsterball", 1, 0).SetNum(3).SetLv(10);
1685 Add(
"pillow_ehekatl", 1, 0);
1686 Add(
"grave_dagger1", 1, 0);
1687 Add(
"grave_dagger2", 1, 0);
1698 for (
int j = 0; j < 5; j++)
1702 thing2.c_priceFix = 1000;
1709 Add(
"sword_dragon", 1, 0).SetReplica(on:
true);
1711 Add(
"axe_destruction", 1, 0).SetReplica(on:
true);
1713 Add(
"blunt_bonehammer", 1, 0).SetReplica(on:
true);
1715 Add(
"pole_gunlance", 1, 0).SetReplica(on:
true);
1717 Add(
"sword_muramasa", 1, 0).SetReplica(on:
true);
1719 Add(
"sword_forgetmenot", 1, 0).SetReplica(on:
true);
1721 Add(
"dagger_fish", 1, 0).SetReplica(on:
true);
1723 Add(
"sword_zephir", 1, 0).SetReplica(on:
true);
1724 Add(
"ribbon", 1, 0);
1725 Add(
"helm_sage", 1, 0);
1726 Add(
"diary_sister", 1, 0);
1727 Add(
"diary_catsister", 1, 0);
1728 Add(
"diary_lady", 1, 0);
1729 Add(
"1165", 1, 0).SetNum(5);
1731 Add(
"monsterball", 1, 0).SetNum(3).SetLv(20);
1732 Add(
"monsterball", 1, 0).SetNum(3).SetLv(40);
1733 Add(
"bill_tax", 1, 0).c_bill = 1;
1734 Add(
"bill_tax", 1, 0).c_bill = 1;
1735 Add(
"bill_tax", 1, 0).c_bill = 1;
1736 Add(
"container_magic", 1, 0);
1737 Add(
"container_magic", 1, 0).ChangeMaterial(
"iron").idSkin = 1;
1738 Add(
"container_magic", 1, 0).ChangeMaterial(
"bamboo").idSkin = 2;
1739 Add(
"wrench_tent_elec", 1, 0);
1740 Add(
"wrench_tent_soil", 1, 0);
1741 Add(
"wrench_bed", 1, 0).SetNum(20);
1742 Add(
"wrench_storage", 1, 0).SetNum(10);
1743 Add(
"wrench_fridge", 1, 0).SetNum(1);
1744 Add(
"wrench_extend_v", 1, 0).SetNum(2);
1745 Add(
"wrench_extend_h", 1, 0).SetNum(2);
1749 float num = (float)(3 + Mathf.Min(ShopLv / 5, 10)) + Mathf.Sqrt(ShopLv);
1751 num = Mathf.Min(num, 300f);
1752 for (
int i = 0; (float)i < num; i++)
1754 Thing thing = CreateStock();
1770 for (
int m = 0; m < recipeKey.Length; m++)
1772 if (recipeKey[m] ==
ShopType.ToString())
1783 int num8 = (EClass.debug.enable ? 20 : (EClass._zone.development / 10));
1786 Add(
"syringe_gene", num8, 0);
1790 Add(
"syringe_heaven", num8 / 5, 0);
1795 Add(
"tool_talisman", 1, 0);
1806 Add(
"ecomark", 5, 0);
1811 Add(
"bullet", 1, 0).SetNum(300 +
EClass.
rnd(100)).ChangeMaterial(
"iron");
1812 Add(
"bullet_energy", 1, 0).SetNum(100 +
EClass.
rnd(100)).ChangeMaterial(
"iron");
1826 Add(
"holyFeather", 1, 0);
1835 Add(
"ticket_massage", 1, 0);
1836 Add(
"ticket_armpillow", 1, 0);
1837 Add(
"ticket_champagne", 1, 0);
1839 for (
int num6 = 0; num6 < (EClass.debug.enable ? 30 : 3); num6++)
1847 TreasureType.Map =>
"chest_treasure",
1848 TreasureType.BossNefia =>
"chest_boss",
1851 thing5.c_lockedHard =
true;
1852 thing5.c_lockLv = num7;
1853 thing5.c_priceAdd = 2000 + num7 * 250 * ((treasureType ==
TreasureType.RandomChest) ? 1 : 5);
1854 thing5.c_revealLock =
true;
1865 for (
int num9 = 0; num9 < (EClass.debug.enable ? 3 : 3); num9++)
1898 Add(
"lockpick", 1, 0);
1901 Add(
"lockpick", 1, 0);
1907 thing9.c_idBacker = 0;
1911 if (thing9.
Num == 1)
1919 if (thing9.
IsFood && owner.
id ==
"rodwyn")
1927 thing9.noSell =
true;
1931 thing9.isStolen =
true;
1935 thing9.c_IDTState = 0;
1939 thing9.c_priceFix = -70;
1943 thing9.c_IDTState = 5;
1951 if (t.things.Count <= t.things.GridSize)
1955 int num10 = t.things.width * 10;
1956 if (t.things.Count > num10)
1958 int num11 = t.things.Count - num10;
1959 for (
int num12 = 0; num12 < num11; num12++)
1961 t.things.LastItem().Destroy();
1964 t.things.ChangeSize(t.things.width, Mathf.Min(t.things.Count / t.things.width + 1, 10));
1965 Thing Add(
string id,
int a,
int idSkin)
1969 thing6.idSkin = idSkin;
1976 void NoRestock(
Thing _t)
1979 if (hashSet ==
null)
1981 hashSet =
new HashSet<string>();
2004 return FromFilter(
"shop_generalExotic");
2008 return Create(
"panty");
2012 return Create(
"234");
2014 return FromFilter(
"shop_drink");
2016 return FromFilter(
"shop_furniture");
2018 return FromFilter(
"shop_book");
2020 return FromFilter(
"shop_magic");
2029 Thing thing2 =
null;
2030 for (
int i = 0; i < 1000; i++)
2032 thing2 = FromFilter(
"shop_healer");
2035 if (!(traitScroll.source.aliasParent !=
"WIL") && !(traitScroll.source.categorySub ==
"attack"))
2042 if (!(traitPotionRandom.source.aliasParent !=
"WIL") && !(traitPotionRandom.source.categorySub ==
"attack"))
2048 else if (thing2.
trait is
TraitRodRandom { source: not null } traitRodRandom && !(traitRodRandom.source.aliasParent !=
"WIL") && !(traitRodRandom.source.categorySub ==
"attack"))
2063 return Create(
"milk");
2067 return Create(
"book_plan");
2069 return FromFilter(
"shop_weapon");
2073 return Create(
"mod_ranged");
2075 return FromFilter(
"shop_gun");
2093 return FromFilter(
"shop_blackmarket");
2096 return FromFilter(
"shop_drink");
2098 return FromFilter(
"shop_booze");
2100 return FromFilter(
"shop_fruit");
2104 return Create(
"bait");
2108 return Create(
"fishingRod");
2110 return FromFilter(
"shop_fish");
2114 return Create(
"seasoning");
2116 return FromFilter(
"shop_meat");
2120 return Create(
"dough");
2122 return FromFilter(
"shop_bread");
2126 return Create(
"dough");
2128 return FromFilter(
"shop_sweet");
2132 return Create(
"seasoning");
2134 return FromFilter(
"shop_food");
2136 return FromFilter(
"shop_drug");
2142 return Create(
"monsterball").SetLv(40 +
EClass.
rnd(ShopLv)).Thing;
2158 return Create(
"1165");
2161 return FromFilter(
"shop_junk");
2163 return FromFilter(
"shop_junk");
2165 return FromFilter(
"shop_souvenir");
2171 return Create(
"firework_launcher");
2173 return Create(
"firework");
2177 if (IsFestival(
"olvina"))
2179 return Create(
new string[4] {
"1125",
"1126",
"pillow_truth",
"1230" }.RandomItem());
2181 if (IsFestival(
"yowyn"))
2183 return Create(
new string[3] {
"hat_mushroom",
"hat_witch",
"hat_kumiromi" }.RandomItem());
2185 if (IsFestival(
"noyel"))
2187 return Create(
new string[9] {
"1127",
"1128",
"xmas_sled",
"xmas_bigbag",
"xmas_bigbox",
"xmas_blackcat",
"xmas_blackcat",
"xmas_jure",
"xmas_crown" }.RandomItem());
2192 return Create(
new string[4] {
"1081",
"1082",
"1083",
"1084" }.RandomItem());
2196 return FromFilter(
"shop_junk");
2198 return FromFilter(
"shop_souvenir");
2202 if (IsFestival(
"kapul"))
2204 return Create(
new string[6] {
"999",
"1000",
"1001",
"1002",
"1003",
"1004" }.RandomItem());
2206 if (IsFestival(
"yowyn"))
2208 return Create(
new string[2] {
"1072",
"1073" }.RandomItem());
2210 if (IsFestival(
"noyel"))
2212 return Create(
new string[1] {
"1069" }.RandomItem());
2214 if (IsFestival(
"olvina"))
2216 return Create(
new string[2] {
"1070",
"1071" }.RandomItem());
2221 return Create(
new string[4] {
"953",
"954",
"955",
"956" }.RandomItem());
2223 return FromFilter(
"shop_lamp");
2227 return Create(
"lockpick");
2229 return FromFilter(
"shop_general");
2231 Thing Create(
string s)
2235 Thing FromFilter(
string s)
2239 static bool IsFestival(
string id)
bool TrySetAct(string lang, Func< bool > onPerform, Card tc, CursorInfo cursor=null, int dist=1, bool isHostileAct=false, bool localAct=true, bool canRepeat=false)
int GetInt(int id, int? defaultInt=null)
void SetInt(int id, int value=0)
static void SetRarity(Rarity q=Rarity.Normal)
static void SetNormalRarity(bool fixedMat=false)
void PlayAnime(AnimeID id, bool force)
void RemoveExtra(string id)
void MakeRefFrom(string id)
ElementContainerCard elements
bool HasElement(int ele, int req=1)
SourceMaterial.Row material
SoundSource PlaySound(string id, float v=1f, bool spatial=true)
Card ChangeMaterial(int idNew, bool ignoreFixedMaterial=false)
virtual int GetPrice(CurrencyType currency=CurrencyType.Money, bool sell=false, PriceType priceType=PriceType.Default, Chara c=null)
Thing AddThing(string id, int lv=-1)
void Talk(string idTopic, string ref1=null, string ref2=null, bool forceSync=false)
void ModCharge(int a, bool destroy=false)
Thing TryMakeRandomItem(int lv=-1)
void PlaySoundDrop(bool spatial=true)
virtual CardRow sourceCard
void ModExp(string alias, int a)
void PlayAnime(AnimeID id, bool force=false)
SourceCategory.Row category
void Say(string lang, string ref1=null, string ref2=null)
bool TryHoldCard(Card t, int num=-1, bool pickHeld=false)
static void MakeDish(Thing food, int lv, Chara crafter=null)
static Thing GenerateGene(Chara c, Type? type=null)
int GetRaw(int offsetHours=0)
string GetText(TextFormat format)
int GetRemainingHours(int rawDeadLine)
static SourceManager sources
static BaseGameScreen screen
static int rndHalf(int a)
static GameSetting setting
Element SetBase(string alias, int v, int potential=0)
override bool IsCurrentZone
override bool IsCurrentZone
static GuildMerchant Merchant
static LayerDragGrid Create(InvOwnerDraglet owner, bool refuelFromLayerDragGrid=false)
static bool IsVisible(Point p1, Point p2, Action< Point, bool > _onVisit=null)
void ForeachSphere(int _x, int _z, float r, Action< Point > action)
void Add(Point point, float tile=0f, float color=0f)
static string Say(string idLang, string ref1, string ref2=null, string ref3=null, string ref4=null)
Dictionary< string, HashSet< string > > noRestocks
ref Vector3 Position(int height)
List< Card > ListCards(bool includeMasked=false)
void RefreshNeighborTiles()
static List< RecipeSource > list
static Recipe Create(RecipeSource _source, int idMat=-1, Thing ing=null)
string GetText(string id="name", bool returnNull=false)
static SpawnList Get(string id, string parent=null, CardFilter filter=null)
CardRow Select(int lv=-1, int levelRange=-1)
void DestroyAll(Func< Thing, bool > funcExclude=null)
void Foreach(Action< Thing > action, bool onlyAccessible=true)
static Thing CreatePotion(int ele, int num=1)
static Thing CreateFromFilter(string id, int lv=-1)
static Thing CreateMap(string idSource=null, int lv=-1)
static Thing CreatePerfume(int ele, int num=1)
static void CreateTreasureContent(Thing t, int lv, TreasureType type, bool clearContent)
static Thing CreateSpellbook(string alias, int num=1)
static Thing CreatePlan(int ele)
static Thing CreateRecipe(string id)
static Thing CreateFromCategory(string idCat, int lv=-1)
static Thing CreateScroll(int ele, int num=1)
static Thing Create(string id, int idMat=-1, int lv=-1)
virtual bool IsBlockSight
static Thing MakeSeed(SourceObj.Row obj, PlantData plant=null)
static Thing MakeRandomSeed(bool enc=false)
static void LevelSeed(Thing t, SourceObj.Row obj, int num)
static void SetZone(Zone zone, Thing t)
virtual string LangBarter
virtual void OnImportMap()
virtual bool RequireFullStackCheck
virtual bool OnUse(Chara c, Card tg)
virtual bool CanExtendBuild
virtual TileMode tileMode
void OfferProcess(Chara cc)
virtual bool IsBlockSight
virtual bool HoldAsDefaultInteraction
virtual int GetActDuration(Chara c)
virtual bool CanBeAttacked
virtual bool CanBeHallucinated
virtual void SetMainText(UIText t, bool hotitem)
virtual bool CanUse(Chara c)
virtual bool ShouldRefreshTile
virtual bool ShowChildrenNumber
virtual List< Point > ListPoints(Point center=null, bool onlyPassable=true)
virtual CopyShopType CopyShop
virtual void OnChangePlaceState(PlaceState state)
virtual Recipe GetRecipe()
virtual void OnSetCardGrid(ButtonGrid b)
virtual string IDInvStyle
virtual HotItem GetHotItem()
int GetSortVal(UIList.SortMode m)
virtual bool Contains(RecipeSource r)
virtual void OnEquip(Chara c, bool onSetOwner)
virtual void OnTickHeld()
virtual void WriteNote(UINote n, bool identified)
int GetParamInt(int i, int def)
virtual void OnSteppedOut(Chara c)
virtual bool TryProgress(AIProgress p)
virtual bool CanBeDisassembled
virtual void OnRead(Chara c)
virtual bool IgnoreLastStackHeight
Point GetRandomPoint(Func< Point, bool > func=null, Chara accessChara=null)
virtual void OnInstall(bool byPlayer)
virtual bool CanChangeHeight
virtual void TrySetAct(ActPlan p)
virtual bool CanSearchContent
virtual bool CanChildDecay(Card c)
virtual void TrySetHeldAct(ActPlan p)
virtual void OnThrowGround(Chara c, Point p)
virtual bool CanStackTo(Thing to)
virtual string ReqHarvest
virtual bool CanBeDestroyed
virtual bool CanRead(Chara c)
virtual bool AlwaysHideOnLowWall
virtual bool CanCook(Card c)
virtual string IdNoRestock
virtual bool CanBuildInTown
virtual void SetOwner(Card _owner)
virtual bool OnChildDecay(Card c, bool firstDecay)
virtual void OnCrafted(Recipe recipe)
virtual void OnRenderTile(Point point, HitResult result, int dir)
string GetTextRestock(string lang, bool pet)
virtual void OnOpenDoor(Chara c)
virtual LockOpenState TryOpenLock(Chara cc, bool msgFail=true)
virtual bool CanOpenContainer
virtual void TrySetToggleAct(ActPlan p)
virtual TileType tileType
virtual void PlayToggleEffect(bool silent)
virtual bool CanUse(Chara c, Card tg)
virtual bool CanUseRoomRadius
virtual bool CanCopy(Thing t)
virtual bool UseDummyTile
virtual void OnUnequip(Chara c)
virtual int DecaySpeedChild
virtual Sprite GetRefSprite()
virtual void OnAddedToZone()
virtual void Toggle(bool on, bool silent=false)
string GetParam(int i, string def=null)
virtual void OnUnsetCurrentItem()
virtual void OnRenderExtra(RenderParam p)
virtual bool CanEat(Chara c)
virtual Recipe GetBuildModeRecipe()
virtual int CostRerollShop
virtual void OnSimulateHour(VirtualDate date)
int GetFuelValue(Thing t)
virtual bool OnUse(Chara c, Point p)
virtual bool IsThrowMainAction
virtual bool InvertHeldSprite
virtual bool CanBeHeldAsFurniture
string TextNextRestockPet
virtual bool IsChangeFloorHeight
virtual void OnStepped(Chara c)
virtual string GetHoverText()
virtual void RefreshRenderer()
virtual bool CanUse(Chara c, Point p)
virtual bool CanOffer(Card tg)
virtual bool DisableAutoCombat
virtual void OnCreate(int lv)
virtual ? Color ColorExtra
virtual void OnSetCurrentItem()
virtual TraitRadiusType radiusType
virtual bool CanCopyInBlueprint
virtual bool OnUse(Chara c)
int GetFuelValue(string id)
void TryRefuel(int dest, List< Thing > excludes)
virtual bool CanBeShipped
virtual void OnUninstall()
static List< Point > listRadiusPoints
virtual void OnSetOwner()
virtual bool CanBuiltAt(Point p)
virtual bool CanUseContent
virtual bool IsNightOnlyLight
virtual void OnDrink(Chara c)
virtual bool UseLightColor
virtual void OnRemovedFromZone()
virtual bool ShouldTryRefreshRoom
virtual bool CanBlend(Thing t)
virtual Emo2 GetHeldEmo(Chara c)
virtual bool CanBeDropped
bool IsFuelEnough(int num=1, List< Thing > excludes=null, bool tryRefuel=true)
virtual bool LevelAsQuality
virtual void OnEat(Chara c)
virtual Action GetHealAction(Chara c)
virtual int IdleUseChance
static TraitSelfFactory SelfFactory
virtual bool ShowContextOnPick
virtual SourceElement.Row GetRefElement()
virtual bool IdleUse(Chara c, int dist)
virtual void OnEnterScreen()
virtual bool IsSpecialContainer
virtual bool ShowFuelWindow
virtual void SetName(ref string s)
virtual bool CanBeOnlyBuiltInHome
virtual void SetParams(params string[] s)
virtual int CompareTo(Card b)
virtual bool CanDrink(Chara c)
virtual int InstallBottomPriority
virtual bool CanOnlyCarry
void Install(bool byPlayer)
virtual bool AllowCriminal
virtual void OnBlend(Thing t, Chara c)