1using System.Collections.Generic;
101 if (r.factory !=
IdSource || c ==
null)
117 string[] array = ((idx == 0) ? r.ing1 : r.ing2);
118 if (r.type.ToEnum<
MixType>() == MixType.Grind && idx == 1)
120 if (r.tag.Contains(
"rust") && c.encLV >= 0)
124 if (r.tag.Contains(
"mod_eject"))
131 foreach (
int socket
in c.
sockets)
144 string[] array2 = array;
145 foreach (
string text
in array2)
147 if (r.tag.Contains(
"noCarbone") && c.material.alias ==
"carbone")
151 if (text.StartsWith(
'#'))
153 string text2 = text.Replace(
"#",
"");
154 if (c.category.IsChildOf(text2) &&
IsIngredient(text2, c))
160 string[] array3 = text.Split(
'@');
161 if (array3.Length > 1)
163 if (c.id != array3[0] && c.sourceCard._origin != array3[0])
171 if (c.material.tag.Contains(array3[1]))
179 if (
this is
TraitDyeMaker && !c.category.GetRoot().tag.
Contains(
"dye") && !c.category.tag.Contains(
"dye"))
183 if (!c.IsUnique && !c.IsImportant && !c.trait.CanOnlyCarry)
188 if (c.id == text || c.sourceCard._origin == text)
204 string[] ing = r.ing1;
205 for (
int i = 0; i < ing.Length; i++)
235 for (
int i = 0; i <
numIng; i++)
264 if ((uint)(
id - 47) <= 1u)
290 string thing3 = source.
thing;
292 int num = source.
num.Calc();
294 string[] array = thing3.
Split(
'%');
313 if (source.
tag.Contains(
"rust"))
316 ai.
ings[1].ModEncLv(1);
317 ai.
ings[0].ModNum(-1);
319 if (source.
tag.Contains(
"mod_eject"))
321 ai.
ings[1].EjectSockets();
322 ai.
ings[0].ModNum(-1);
332 t.c_idRefCard = cardRow.
id;
357 item.vLink = item.vBase +
item.vSource;
359 item.vBase = runeEnc.
value;
374 thing8.refVal = a.
id;
375 thing8.encLV = a.vBase + a.
vSource;
381 string lang = a.vBase + a.vSource + ((a.vLink != 0) ? (
" (" + a.
vLink +
")") :
"");
386 b.button1.interactable =
false;
387 b.
button1.
mainText.gameObject.AddComponent<CanvasGroup>().alpha = 0.5f;
393 .SetTitles(
"wRuneMold");
399 string id = thing2.
id;
400 if (
id ==
"mercury" ||
id ==
"blood_angel")
402 int num7 = thing.
encLV;
403 if (thing2.
id ==
"mercury")
425 int num3 = thing5.c_charges * source2.charge * (100 + num2 * 50) / 500 + 1;
428 thing6.refVal = source2.
id;
429 thing6.encLV = num4 * (100 + num2 * 10) / 100;
430 thing.ammoData = thing6;
438 Prize(20,
"medal",
"save", cat:
false);
439 Prize(10,
"plat",
"save", cat:
false);
440 Prize(10,
"furniture",
"nice", cat:
true);
441 Prize(4,
"plamo_box",
"nice", cat:
false);
442 Prize(4,
"food",
"", cat:
false);
443 Prize(1,
"casino_coin",
"", cat:
false);
452 for (
int num6 = 3; num6 > 0; num6--)
463 owner.
PlaySound((num5 == 3) ?
"fortuneroll_winBig" :
"fortuneroll_win");
481 if (thing3 ==
"gene")
483 if (ai.
ings[0].c_DNA !=
null)
486 t.c_DNA = ai.
ings[0].c_DNA;
515 string text = a.
Name;
516 string encSlot = a.
source.encSlot;
517 if ((encSlot ==
null || encSlot.Length != 0) && !(encSlot ==
"global") && !(encSlot ==
"all"))
520 string[] array2 = a.
source.encSlot.Split(
',');
521 foreach (
string text2
in array2)
523 text += ((text2 ==
"weapon") ?
"weapon_enc".lang() :
EClass.
sources.
elements.alias[text2].GetName().ToTitleCase());
526 text = text.TrimEnd(
", ".ToCharArray()) +
"]";
530 void Prize(
int chance,
string s,
string col,
bool cat)
553 EClass.ui.AddLayer<LayerCraft>().SetFactory(_t);
557 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 int curve(int a, int start, int step, int rate=75)
static SourceManager sources
List< Element > ListRune()
Element SetBase(string alias, int v, int potential=0)
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)
static Thing MakeSeed(SourceObj.Row obj, PlantData plant=null)
static void LevelSeed(Thing t, SourceObj.Row obj, int num)
virtual bool Contains(RecipeSource r)
string GetParam(int i, string def=null)
FortuneRollData GetOrCreateFortuneRollData(bool refresh=true)
Card AddCard(Card t, Point point)