1using System.Collections.Generic;
100 if (r.factory !=
IdSource || c ==
null)
112 string[] array = ((idx == 0) ? r.ing1 : r.ing2);
113 if (r.type.ToEnum<
MixType>() == MixType.Grind && idx == 1)
115 if (r.tag.Contains(
"rust") && c.encLV >= 0)
119 if (r.tag.Contains(
"mod_eject"))
126 foreach (
int socket
in c.
sockets)
139 string[] array2 = array;
140 foreach (
string text
in array2)
142 if (r.tag.Contains(
"noCarbone") && c.material.alias ==
"carbone")
146 if (text.StartsWith(
'#'))
148 string text2 = text.Replace(
"#",
"");
149 if (c.category.IsChildOf(text2) &&
IsIngredient(text2, c))
155 string[] array3 = text.Split(
'@');
156 if (array3.Length > 1)
158 if (c.id != array3[0] && c.sourceCard._origin != array3[0])
166 if (c.material.tag.Contains(array3[1]))
174 if (
this is
TraitDyeMaker && !c.category.GetRoot().tag.
Contains(
"dye") && !c.category.tag.Contains(
"dye"))
178 if (!c.IsUnique && !c.IsImportant && !c.trait.CanOnlyCarry)
183 if (c.id == text || c.sourceCard._origin == text)
199 string[] ing = r.ing1;
200 for (
int i = 0; i < ing.Length; i++)
230 for (
int i = 0; i <
numIng; i++)
259 if ((uint)(
id - 47) <= 1u)
285 string thing3 = source.
thing;
287 int num = source.
num.Calc();
289 string[] array = thing3.
Split(
'%');
308 if (source.
tag.Contains(
"rust"))
311 ai.
ings[1].ModEncLv(1);
312 ai.
ings[0].ModNum(-1);
314 if (source.
tag.Contains(
"mod_eject"))
316 ai.
ings[1].EjectSockets();
317 ai.
ings[0].ModNum(-1);
327 t.c_idRefCard = cardRow.
id;
352 item.vLink = item.vBase +
item.vSource;
354 item.vBase = runeEnc.
value;
369 thing8.refVal = a.
id;
370 thing8.encLV = a.vBase + a.
vSource;
380 b.button1.interactable =
false;
381 b.
button1.
mainText.gameObject.AddComponent<CanvasGroup>().alpha = 0.5f;
387 .SetTitles(
"wRuneMold");
395 int num5 = thing5.c_charges * source2.charge * (100 + num4 * 50) / 500 + 1;
398 thing6.refVal = source2.
id;
399 thing6.encLV = num6 * (100 + num4 * 10) / 100;
400 thing.ammoData = thing6;
408 Prize(20,
"medal",
"save", cat:
false);
409 Prize(10,
"plat",
"save", cat:
false);
410 Prize(10,
"furniture",
"nice", cat:
true);
411 Prize(4,
"plamo_box",
"nice", cat:
false);
412 Prize(4,
"food",
"", cat:
false);
413 Prize(1,
"casino_coin",
"", cat:
false);
422 for (
int num3 = 3; num3 > 0; num3--)
433 owner.
PlaySound((num2 == 3) ?
"fortuneroll_winBig" :
"fortuneroll_win");
451 if (thing3 ==
"gene")
453 if (ai.
ings[0].c_DNA !=
null)
456 t.c_DNA = ai.
ings[0].c_DNA;
483 void Prize(
int chance,
string s,
string col,
bool cat)
506 EClass.ui.AddLayer<LayerCraft>().SetFactory(_t);
510 Msg.Say(
"noRecipes");
bool TrySetAct(string lang, Func< bool > onPerform, Card tc, CursorInfo cursor=null, int dist=1, bool isHostileAct=false, bool localAct=true, bool canRepeat=false)
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)
Effect PlayEffect(string id, bool useRenderPos=true, float range=0f, Vector3 fix=default(Vector3))
void ModNum(int a, bool notify=true)
void Say(string lang, string ref1=null, string ref2=null)
Thing Pick(Thing t, bool msg=true, bool tryStack=true)
List< CardRow > ListKills()
static Thing MixIngredients(string idProduct, List< Thing > ings, MixType type, int idMat=0, Chara crafter=null)
void GenerateWithGene(Type _type, Card gene, Chara model=null)
static SourceManager sources
List< Element > ListRune()
void GetPrize(int grade, int seed)
UIButton SetSubText(string lang, int x, FontColor c=FontColor.Default, TextAnchor align=TextAnchor.MiddleLeft)
List< ButtonGrid > buttons
static LayerDragGrid Instance
static LayerDragGrid CreateCraft(TraitCrafter crafter)
Layer SetOnKill(Action action)
static string SayCannotUseHere()
static string SayNothingHappen()
static string Say(string idLang, string ref1, string ref2=null, string ref3=null, string ref4=null)
HashSet< int > knownCraft
static void SetSeed(int a=-1)
List< RecipeSource > ListSources(Thing factory, List< RecipeSource > newRecipes=null)
Dictionary< string, CardRow > map
static SpawnList Get(string id, Func< SourceThing.Row, bool > func)
static Thing CreateFromCategory(string idCat, int lv=-1)
static Thing Create(string id, int idMat=-1, int lv=-1)
virtual bool IsConsumeIng
virtual string IDReqEle(RecipeSource r)
virtual bool StopSoundProgress
virtual int WitchDoubleCraftChance(Thing t)
virtual bool CloseOnComplete
virtual string idSoundProgress
virtual string CrafterTitle
virtual bool IsIngredient(string cat, Card c)
virtual bool ShouldConsumeIng(SourceRecipe.Row item, int index)
SourceRecipe.Row GetSource(AI_UseCrafter ai)
virtual AnimeType animeType
override bool OnUse(Chara c)
override bool CanUse(Chara c)
override bool ShowFuelWindow
bool IsIngredient(int idx, SourceRecipe.Row r, Card c)
virtual void OnEndAI(AI_UseCrafter ai)
int GetSortVal(SourceRecipe.Row r)
override void TrySetAct(ActPlan p)
virtual bool CanUseFromInventory
virtual int GetCostSp(AI_UseCrafter ai)
virtual AnimeID IdAnimeProgress
virtual bool IsCraftIngredient(Card c, int idx)
virtual int GetDuration(AI_UseCrafter ai, int costSp)
virtual string idSoundComplete
override bool IsNightOnlyLight
virtual Thing Craft(AI_UseCrafter ai)
override bool HoldAsDefaultInteraction
virtual bool CanTriggerFire
static Chara Incubate(Thing egg, Point pos, Card incubator=null)
virtual bool Contains(RecipeSource r)
string GetParam(int i, string def=null)
FortuneRollData GetOrCreateFortuneRollData(bool refresh=true)
Card AddCard(Card t, Point point)