1using System.Collections.Generic;
94 if (r.factory !=
IdSource || c ==
null)
102 string[] array = ((idx == 0) ? r.ing1 : r.ing2);
103 if (r.type.ToEnum<
MixType>() == MixType.Grind && idx == 1)
105 if (r.tag.Contains(
"rust") && c.encLV >= 0)
109 if (r.tag.Contains(
"mod_eject"))
116 foreach (
int socket
in c.
sockets)
129 string[] array2 = array;
130 foreach (
string text
in array2)
132 if (r.tag.Contains(
"noCarbone") && c.material.alias ==
"carbone")
136 if (text.StartsWith(
'#'))
138 string text2 = text.Replace(
"#",
"");
139 if (c.category.IsChildOf(text2) &&
IsIngredient(text2, c))
145 string[] array3 = text.Split(
'@');
146 if (array3.Length > 1)
148 if (c.id != array3[0] && c.sourceCard._origin != array3[0])
156 if (c.material.tag.Contains(array3[1]))
164 if (
this is
TraitDyeMaker && !c.category.GetRoot().tag.
Contains(
"dye") && !c.category.tag.Contains(
"dye"))
168 if (!c.IsUnique && !c.IsImportant && !c.trait.CanOnlyCarry)
173 if (c.id == text || c.sourceCard._origin == text)
189 string[] ing = r.ing1;
190 for (
int i = 0; i < ing.Length; i++)
220 for (
int i = 0; i <
numIng; i++)
249 if ((uint)(
id - 47) <= 1u)
275 string thing3 = source.
thing;
277 int num = source.
num.Calc();
287 string[] array = thing3.
Split(
'%');
299 if (source.
tag.Contains(
"rust"))
302 ai.
ings[1].ModEncLv(1);
303 ai.
ings[0].ModNum(-1);
305 if (source.
tag.Contains(
"mod_eject"))
307 ai.
ings[1].EjectSockets();
308 ai.
ings[0].ModNum(-1);
318 t.c_idRefCard = cardRow.
id;
343 item.vLink = item.vBase +
item.vSource;
345 item.vBase = runeEnc.
value;
360 thing8.refVal = a.
id;
361 thing8.encLV = a.vBase + a.
vSource;
371 b.button1.interactable =
false;
372 b.
button1.
mainText.gameObject.AddComponent<CanvasGroup>().alpha = 0.5f;
378 .SetTitles(
"wRuneMold");
386 int num5 = thing5.c_charges * source2.charge * (100 + num4 * 50) / 500 + 1;
389 thing6.refVal = source2.
id;
390 thing6.encLV = num6 * (100 + num4 * 10) / 100;
391 thing.ammoData = thing6;
399 Prize(20,
"medal",
"save", cat:
false);
400 Prize(10,
"plat",
"save", cat:
false);
401 Prize(10,
"furniture",
"nice", cat:
true);
402 Prize(4,
"plamo_box",
"nice", cat:
false);
403 Prize(4,
"food",
"", cat:
false);
404 Prize(1,
"casino_coin",
"", cat:
false);
413 for (
int num3 = 3; num3 > 0; num3--)
424 owner.
PlaySound((num2 == 3) ?
"fortuneroll_winBig" :
"fortuneroll_win");
442 if (thing3 ==
"gene")
444 if (ai.
ings[0].c_DNA !=
null)
447 t.c_DNA = ai.
ings[0].c_DNA;
474 void Prize(
int chance,
string s,
string col,
bool cat)
497 EClass.ui.AddLayer<LayerCraft>().SetFactory(_t);
501 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 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)