Elin Decompiled Documentation EA 23.130 Nightly
Loading...
Searching...
No Matches
TraitCrafter Class Reference
Inheritance diagram for TraitCrafter:
Trait EClass TraitBarrelMaker TraitButcher TraitDyeMaker TraitFactory TraitGemCutter TraitGrindstone TraitIncubator TraitKiln TraitMill TraitRationMaker TraitRollingFortune TraitRuneMold TraitSawMill TraitScratchMachine TraitSculpture TraitSmelter TraitSpinner TraitStoneCutter TraitToolTalisman TraitWoodMill

Public Types

enum  MixType {
  None , Food , Resource , Dye ,
  Butcher , Grind , Sculpture , Talisman ,
  Scratch , Incubator , Fortune , RuneMold ,
  FixedResource
}
 
enum  AnimeType { Default , Microwave , Pot }
 
- Public Types inherited from Trait
enum  TileMode {
  Default , Door , Illumination , DefaultNoAnime ,
  SignalAnime
}
 
enum  CopyShopType { None , Item , Spellbook }
 

Public Member Functions

virtual int WitchDoubleCraftChance (Thing t)
 
virtual string IDReqEle (RecipeSource r)
 
virtual bool IsCraftIngredient (Card c, int idx)
 
bool IsIngredient (int idx, SourceRecipe.Row r, Card c)
 
virtual bool IsIngredient (string cat, Card c)
 
int GetSortVal (SourceRecipe.Row r)
 
virtual int GetDuration (AI_UseCrafter ai, int costSp)
 
virtual int GetCostSp (AI_UseCrafter ai)
 
SourceRecipe.Row GetSource (AI_UseCrafter ai)
 
virtual bool ShouldConsumeIng (SourceRecipe.Row item, int index)
 
virtual Thing Craft (AI_UseCrafter ai)
 
override void TrySetAct (ActPlan p)
 
override bool CanUse (Chara c)
 
override bool OnUse (Chara c)
 
virtual void OnEndAI (AI_UseCrafter ai)
 
- Public Member Functions inherited from Trait
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 ()
 

Properties

override bool ShowFuelWindow [get]
 
virtual Emo Icon [get]
 
virtual int numIng [get]
 
virtual string IdSource [get]
 
virtual AnimeType animeType [get]
 
virtual AnimeID IdAnimeProgress [get]
 
virtual string idSoundProgress [get]
 
virtual string idSoundComplete [get]
 
virtual bool StopSoundProgress [get]
 
override bool IsNightOnlyLight [get]
 
virtual bool CanUseFromInventory [get]
 
override bool HoldAsDefaultInteraction [get]
 
virtual string idSoundBG [get]
 
virtual string CrafterTitle [get]
 
virtual bool CanTriggerFire [get]
 
virtual bool AutoTurnOff [get]
 
virtual bool IsConsumeIng [get]
 
virtual bool CloseOnComplete [get]
 
virtual int CostSP [get]
 
- Properties inherited from Trait
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)
 
- Public Attributes inherited from Trait
Card owner
 
- Static Public Attributes inherited from Trait
static TraitSelfFactory SelfFactory = new TraitSelfFactory()
 
- Static Public Attributes inherited from EClass
static Core core
 
- Static Protected Attributes inherited from Trait
static List< PointlistRadiusPoints = new List<Point>()
 

Detailed Description

Definition at line 4 of file TraitCrafter.cs.

Member Enumeration Documentation

◆ AnimeType

Enumerator
Default 
Microwave 
Pot 

Definition at line 23 of file TraitCrafter.cs.

◆ MixType

Enumerator
None 
Food 
Resource 
Dye 
Butcher 
Grind 
Sculpture 
Talisman 
Scratch 
Incubator 
Fortune 
RuneMold 
FixedResource 

Definition at line 6 of file TraitCrafter.cs.

Member Function Documentation

◆ CanUse()

override bool TraitCrafter.CanUse ( Chara  c)
inlinevirtual

Reimplemented from Trait.

Definition at line 525 of file TraitCrafter.cs.

526 {
527 return CanUseFromInventory;
528 }
virtual bool CanUseFromInventory
Definition: TraitCrafter.cs:50

References CanUseFromInventory.

◆ Craft()

virtual Thing TraitCrafter.Craft ( AI_UseCrafter  ai)
inlinevirtual

Definition at line 266 of file TraitCrafter.cs.

267 {
268 Thing thing = ai.ings[0];
269 Thing thing2 = ((numIng > 1) ? ai.ings[1] : null);
270 SourceRecipe.Row source = GetSource(ai);
271 if (source == null)
272 {
273 return null;
274 }
275 if (!EClass.player.knownCraft.Contains(source.id))
276 {
277 SE.Play("idea");
278 Msg.Say("newKnownCraft");
279 EClass.player.knownCraft.Add(source.id);
280 if ((bool)LayerDragGrid.Instance)
281 {
283 }
284 }
285 string thing3 = source.thing;
286 MixType mixType = source.type.ToEnum<MixType>();
287 int num = source.num.Calc();
288 Thing t = null;
289 string[] array = thing3.Split('%');
290 bool claimed;
291 switch (mixType)
292 {
293 case MixType.Food:
294 t = CraftUtil.MixIngredients(thing3, ai.ings, CraftUtil.MixType.General, 0, EClass.pc);
295 break;
296 case MixType.Resource:
297 case MixType.FixedResource:
298 t = CraftUtil.MixIngredients(ThingGen.Create(array[0], (array.Length > 1) ? EClass.sources.materials.alias[array[1]].id : thing.material.id), ai.ings, (mixType == MixType.FixedResource) ? CraftUtil.MixType.NoMix : CraftUtil.MixType.General, 999, EClass.pc).Thing;
299 break;
300 case MixType.Dye:
301 t = ThingGen.Create(thing3, thing2.material.id);
302 break;
303 case MixType.Butcher:
304 thing3 = SpawnListThing.Get("butcher", (SourceThing.Row a) => a.Category.id == "bodyparts").Select().id;
305 t = ThingGen.Create(thing3);
306 break;
307 case MixType.Grind:
308 if (source.tag.Contains("rust"))
309 {
310 EClass.pc.Say("polish", EClass.pc, ai.ings[1]);
311 ai.ings[1].ModEncLv(1);
312 ai.ings[0].ModNum(-1);
313 }
314 if (source.tag.Contains("mod_eject"))
315 {
316 ai.ings[1].EjectSockets();
317 ai.ings[0].ModNum(-1);
318 }
319 break;
320 case MixType.Sculpture:
321 {
322 t = ThingGen.Create(thing3);
323 List<CardRow> list2 = EClass.player.codex.ListKills();
324 list2.Add(EClass.sources.cards.map["putty"]);
325 list2.Add(EClass.sources.cards.map["snail"]);
326 CardRow cardRow = list2.RandomItemWeighted((CardRow a) => Mathf.Max(50 - a.LV, Mathf.Clamp(EClass.pc.Evalue(258) / 2, 1, a.LV * 2)));
327 t.c_idRefCard = cardRow.id;
328 t.ChangeMaterial(thing.material);
329 t.SetEncLv(Mathf.Min(EClass.rnd(EClass.rnd(Mathf.Max(5 + EClass.pc.Evalue(258) - cardRow.LV, 1))), 12));
330 t = CraftUtil.MixIngredients(t, ai.ings, CraftUtil.MixType.General, 999, EClass.pc).Thing;
331 break;
332 }
333 case MixType.RuneMold:
334 {
335 Thing eq = ai.ings[0];
336 Thing thing7 = eq.Duplicate(1);
337 thing7.SetEncLv(0);
338 List<Element> list = thing7.elements.ListRune();
339 if (list.Count == 0)
340 {
342 break;
343 }
344 foreach (Element item in list)
345 {
346 SocketData runeEnc = eq.GetRuneEnc(item.id);
347 item.vLink = 0;
348 if (runeEnc != null)
349 {
350 if (item.vBase + item.vSource != runeEnc.value)
351 {
352 item.vLink = item.vBase + item.vSource;
353 }
354 item.vBase = runeEnc.value;
355 item.vSource = 0;
356 }
357 }
358 if (eq.material.hardness > owner.material.hardness && !EClass.debug.enable)
359 {
360 Msg.Say("rune_tooHard", owner);
361 break;
362 }
363 EClass.ui.AddLayer<LayerList>().SetList2(list, (Element a) => a.Name, delegate(Element a, ItemGeneral b)
364 {
365 owner.ModNum(-1);
366 eq.Destroy();
367 Thing thing8 = ThingGen.Create("rune");
369 thing8.refVal = a.id;
370 thing8.encLV = a.vBase + a.vSource;
371 EClass.pc.Pick(thing8);
372 EClass.pc.PlaySound("intonation");
373 EClass.pc.PlayEffect("intonation");
374 }, delegate(Element a, ItemGeneral b)
375 {
376 b.SetSubText(a.vBase + a.vSource + ((a.vLink != 0) ? (" (" + a.vLink + ")") : ""), 200, FontColor.Default, TextAnchor.MiddleRight);
377 b.Build();
378 if (a.HasTag("noRune"))
379 {
380 b.button1.interactable = false;
381 b.button1.mainText.gameObject.AddComponent<CanvasGroup>().alpha = 0.5f;
382 }
383 }).SetSize(500f)
384 .SetOnKill(delegate
385 {
386 })
387 .SetTitles("wRuneMold");
388 break;
389 }
390 case MixType.Talisman:
391 {
392 int num4 = EClass.pc.Evalue(1418);
393 Thing thing5 = ai.ings[1];
394 SourceElement.Row source2 = (thing5.trait as TraitSpellbook).source;
395 int num5 = thing5.c_charges * source2.charge * (100 + num4 * 50) / 500 + 1;
396 int num6 = 100;
397 Thing thing6 = ThingGen.Create("talisman").SetNum(num5);
398 thing6.refVal = source2.id;
399 thing6.encLV = num6 * (100 + num4 * 10) / 100;
400 thing.ammoData = thing6;
401 thing.c_ammo = num5;
402 EClass.pc.Say("talisman", thing, thing6);
403 thing5.Destroy();
404 break;
405 }
406 case MixType.Scratch:
407 claimed = false;
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);
414 break;
415 case MixType.Fortune:
416 {
418 int num2 = 0;
419 FortuneRollData orCreateFortuneRollData = EClass._zone.GetOrCreateFortuneRollData(refresh: false);
420 int seed = orCreateFortuneRollData.seed + orCreateFortuneRollData.count + EClass.player.seedFortune;
422 for (int num3 = 3; num3 > 0; num3--)
423 {
424 if (EClass.rnd(FortuneRollData.chances[num3]) == 0)
425 {
426 num2 = num3;
427 break;
428 }
429 }
430 Rand.SetSeed();
431 if (num2 != 0)
432 {
433 owner.PlaySound((num2 == 3) ? "fortuneroll_winBig" : "fortuneroll_win");
434 }
435 Thing thing4 = ThingGen.Create("fortune_ball");
436 thing4.ChangeMaterial(FortuneRollData.mats[num2]);
437 EClass._zone.AddCard(thing4, owner.pos);
438 owner.PlaySound("fortuneroll_ball");
439 orCreateFortuneRollData.GetPrize(num2, seed);
440 if ((bool)LayerDragGrid.Instance)
441 {
443 }
444 break;
445 }
446 case MixType.Incubator:
448 break;
449 default:
450 t = ThingGen.Create(thing3);
451 if (thing3 == "gene")
452 {
453 if (ai.ings[0].c_DNA != null)
454 {
455 t.MakeRefFrom(ai.ings[0].c_idRefCard);
456 t.c_DNA = ai.ings[0].c_DNA;
457 t.c_DNA.GenerateWithGene(DNA.Type.Inferior, t);
458 }
459 }
460 else
461 {
462 t = CraftUtil.MixIngredients(t, ai.ings, CraftUtil.MixType.General, 999, EClass.pc).Thing;
463 }
464 break;
465 }
466 if (t != null)
467 {
468 if (t.HasElement(1229))
469 {
470 num = 1;
471 }
472 if (t.HasElement(704))
473 {
474 num = 1;
475 }
476 if (t.HasElement(703))
477 {
478 num = 1;
479 }
480 t.SetNum(num);
481 }
482 return t;
483 void Prize(int chance, string s, string col, bool cat)
484 {
485 if (!claimed && EClass.rnd(chance) == 0)
486 {
487 t = (cat ? ThingGen.CreateFromCategory(s, EClass.pc.LV) : ThingGen.Create(s, -1, EClass.pc.LV));
488 claimed = true;
489 if (col != "")
490 {
491 Msg.SetColor(col);
492 }
493 }
494 }
495 }
@ seed
FontColor
Definition: FontColor.cs:2
List< Thing > ings
string id
Definition: CardRow.cs:7
void MakeRefFrom(string id)
Definition: Card.cs:5274
Thing Split(int a)
Definition: Card.cs:3275
ElementContainerCard elements
Definition: Card.cs:37
bool HasElement(int ele, int req=1)
Definition: Card.cs:5395
SourceMaterial.Row material
Definition: Card.cs:1951
SoundSource PlaySound(string id, float v=1f, bool spatial=true)
Definition: Card.cs:5585
Card ChangeMaterial(int idNew, bool ignoreFixedMaterial=false)
Definition: Card.cs:2887
Thing SetNum(int a)
Definition: Card.cs:3286
Point pos
Definition: Card.cs:55
Effect PlayEffect(string id, bool useRenderPos=true, float range=0f, Vector3 fix=default(Vector3))
Definition: Card.cs:5619
void SetEncLv(int a)
Definition: Card.cs:3611
SocketData GetRuneEnc(int idEle)
Definition: Card.cs:3415
void Destroy()
Definition: Card.cs:4680
virtual Thing Thing
Definition: Card.cs:1958
int Evalue(int ele)
Definition: Card.cs:2471
Thing Duplicate(int num)
Definition: Card.cs:3235
DNA c_DNA
Definition: Card.cs:1805
void ModNum(int a, bool notify=true)
Definition: Card.cs:3306
int LV
Definition: Card.cs:370
void Say(string lang, string ref1=null, string ref2=null)
Definition: Card.cs:6232
Thing Pick(Thing t, bool msg=true, bool tryStack=true)
Definition: Chara.cs:3940
List< CardRow > ListKills()
Definition: CodexManager.cs:70
bool enable
Definition: CoreDebug.cs:285
static Thing MixIngredients(string idProduct, List< Thing > ings, MixType type, int idMat=0, Chara crafter=null)
Definition: CraftUtil.cs:144
Definition: DNA.cs:8
void GenerateWithGene(Type _type, Card gene, Chara model=null)
Definition: DNA.cs:247
Type
Definition: DNA.cs:10
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 Player player
Definition: EClass.cs:12
static Chara pc
Definition: EClass.cs:14
static CoreDebug debug
Definition: EClass.cs:48
static UI ui
Definition: EClass.cs:16
List< Element > ListRune()
int id
Definition: ELEMENT.cs:246
int vBase
Definition: ELEMENT.cs:248
bool HasTag(string tag)
Definition: ELEMENT.cs:469
int vLink
Definition: ELEMENT.cs:256
int vSource
Definition: ELEMENT.cs:258
void GetPrize(int grade, int seed)
static string[] mats
static int[] chances
void Build()
Definition: ItemGeneral.cs:161
UIButton SetSubText(string lang, int x, FontColor c=FontColor.Default, TextAnchor align=TextAnchor.MiddleLeft)
Definition: ItemGeneral.cs:119
UIDragGridInfo info
static LayerDragGrid Instance
Layer SetOnKill(Action action)
Definition: Layer.cs:579
Definition: Msg.cs:5
static string SayNothingHappen()
Definition: Msg.cs:96
static string Say(string idLang, string ref1, string ref2=null, string ref3=null, string ref4=null)
Definition: Msg.cs:58
static void SetColor()
Definition: Msg.cs:22
CodexManager codex
Definition: Player.cs:931
HashSet< int > knownCraft
Definition: Player.cs:892
int seedFortune
Definition: Player.cs:769
Definition: Rand.cs:4
static void SetSeed(int a=-1)
Definition: Rand.cs:37
int LV
Definition: RenderRow.cs:22
Dictionary< string, CardRow > map
Definition: SourceCard.cs:8
SourceMaterial materials
SourceCard cards
static SpawnList Get(string id, Func< SourceThing.Row, bool > func)
string id
Definition: SpawnList.cs:10
static Thing CreateFromCategory(string idCat, int lv=-1)
Definition: ThingGen.cs:75
static Thing Create(string id, int idMat=-1, int lv=-1)
Definition: ThingGen.cs:53
Definition: Thing.cs:8
SourceRecipe.Row GetSource(AI_UseCrafter ai)
virtual int numIng
Definition: TraitCrafter.cs:34
static Chara Incubate(Thing egg, Point pos, Card incubator=null)
Card owner
Definition: Trait.cs:26
UIText mainText
Definition: UIButton.cs:102
UIButton button1
Definition: UIItem.cs:18
FortuneRollData GetOrCreateFortuneRollData(bool refresh=true)
Definition: Zone.cs:3556
Card AddCard(Card t, Point point)
Definition: Zone.cs:1893

References EClass._zone, Zone.AddCard(), ItemGeneral.Build(), UIItem.button1, Card.c_DNA, SourceManager.cards, FortuneRollData.chances, Card.ChangeMaterial(), Player.codex, ThingGen.Create(), ThingGen.CreateFromCategory(), EClass.debug, Card.Destroy(), Card.Duplicate(), Card.Dye(), Card.elements, CoreDebug.enable, Card.Evalue(), DNA.GenerateWithGene(), SpawnListThing.Get(), Zone.GetOrCreateFortuneRollData(), FortuneRollData.GetPrize(), GetSource(), Card.HasElement(), Element.HasTag(), CardRow.id, Element.id, SourceElement.Row.id, SourceRecipe.Row.id, SpawnList.id, TraitFoodEggFertilized.Incubate(), LayerDragGrid.info, AI_UseCrafter.ings, LayerDragGrid.Instance, item, Player.knownCraft, CodexManager.ListKills(), ElementContainer.ListRune(), Card.LV, RenderRow.LV, UIButton.mainText, Card.MakeRefFrom(), SourceCard.map, Card.material, SourceManager.materials, FortuneRollData.mats, CraftUtil.MixIngredients(), Card.ModNum(), Element.Name, SourceRecipe.Row.num, numIng, Trait.owner, EClass.pc, Chara.Pick(), Card.PlayEffect(), EClass.player, Card.PlaySound(), Card.pos, UIDragGridInfo.Refresh(), EClass.rnd(), Msg.Say(), Card.Say(), Msg.SayNothingHappen(), seed, Player.seedFortune, Msg.SetColor(), Card.SetEncLv(), Card.SetNum(), Layer.SetOnKill(), Rand.SetSeed(), ItemGeneral.SetSubText(), EClass.sources, Card.Split(), SourceRecipe.Row.tag, Card.Thing, SourceRecipe.Row.thing, SourceRecipe.Row.type, EClass.ui, SocketData.value, Element.vBase, Element.vLink, and Element.vSource.

Referenced by AI_UseCrafter.Run().

◆ GetCostSp()

virtual int TraitCrafter.GetCostSp ( AI_UseCrafter  ai)
inlinevirtual

Reimplemented in TraitFactory.

Definition at line 215 of file TraitCrafter.cs.

216 {
217 return GetSource(ai).sp;
218 }

References GetSource().

Referenced by AI_UseCrafter.Run().

◆ GetDuration()

virtual int TraitCrafter.GetDuration ( AI_UseCrafter  ai,
int  costSp 
)
inlinevirtual

Reimplemented in TraitFactory, TraitRollingFortune, and TraitScratchMachine.

Definition at line 210 of file TraitCrafter.cs.

211 {
212 return Mathf.Max(1, GetSource(ai).time * 100 / (80 + EClass.pc.Evalue(IDReqEle(ai.recipe?.source)) * 5));
213 }
RecipeSource source
Definition: Recipe.cs:187
virtual string IDReqEle(RecipeSource r)
Definition: TraitCrafter.cs:73

References Card.Evalue(), GetSource(), IDReqEle(), EClass.pc, AI_UseCrafter.recipe, and Recipe.source.

Referenced by AI_UseCrafter.Run().

◆ GetSortVal()

int TraitCrafter.GetSortVal ( SourceRecipe::Row  r)
inline

Definition at line 196 of file TraitCrafter.cs.

197 {
198 int num = r.id;
199 string[] ing = r.ing1;
200 for (int i = 0; i < ing.Length; i++)
201 {
202 if (ing[i].Contains('@'))
203 {
204 num -= 10000;
205 }
206 }
207 return num;
208 }
virtual bool Contains(RecipeSource r)
Definition: Trait.cs:571

References Trait.Contains().

Referenced by GetSource().

◆ GetSource()

SourceRecipe.Row TraitCrafter.GetSource ( AI_UseCrafter  ai)
inline

Definition at line 220 of file TraitCrafter.cs.

221 {
222 List<SourceRecipe.Row> list = new List<SourceRecipe.Row>();
223 foreach (SourceRecipe.Row row in EClass.sources.recipes.rows)
224 {
225 if (row.factory == IdSource)
226 {
227 list.Add(row);
228 }
229 }
230 for (int i = 0; i < numIng; i++)
231 {
232 foreach (SourceRecipe.Row row2 in EClass.sources.recipes.rows)
233 {
234 if (i >= ai.ings.Count || !IsIngredient(i, row2, ai.ings[i]))
235 {
236 list.Remove(row2);
237 }
238 }
239 }
240 if (list.Count == 0)
241 {
242 return null;
243 }
244 list.Sort((SourceRecipe.Row a, SourceRecipe.Row b) => GetSortVal(a) - GetSortVal(b));
245 return list[0];
246 }
SourceRecipe recipes
virtual string IdSource
Definition: TraitCrafter.cs:36
bool IsIngredient(int idx, SourceRecipe.Row r, Card c)
Definition: TraitCrafter.cs:98
int GetSortVal(SourceRecipe.Row r)

References GetSortVal(), IdSource, AI_UseCrafter.ings, IsIngredient(), numIng, SourceManager.recipes, and EClass.sources.

Referenced by Craft(), GetCostSp(), GetDuration(), TraitRollingFortune.GetDuration(), TraitScratchMachine.GetDuration(), and AI_UseCrafter.Run().

◆ IDReqEle()

virtual string TraitCrafter.IDReqEle ( RecipeSource  r)
inlinevirtual

Reimplemented in TraitCauldron, TraitDyeMaker, and TraitSelfFactory.

Definition at line 73 of file TraitCrafter.cs.

74 {
75 return GetParam(1) ?? "handicraft";
76 }
string GetParam(int i, string def=null)
Definition: Trait.cs:553

References Trait.GetParam().

Referenced by GetDuration(), and AI_UseCrafter.Run().

◆ IsCraftIngredient()

virtual bool TraitCrafter.IsCraftIngredient ( Card  c,
int  idx 
)
inlinevirtual

Definition at line 78 of file TraitCrafter.cs.

79 {
80 foreach (SourceRecipe.Row row in EClass.sources.recipes.rows)
81 {
82 if (idx == 1)
83 {
85 if (!IsIngredient(0, row, card) || (card == c && card.Num < 2))
86 {
87 continue;
88 }
89 }
90 if (IsIngredient(idx, row, c))
91 {
92 return true;
93 }
94 }
95 return false;
96 }
Definition: Card.cs:11
List< ButtonGrid > buttons

References LayerDragGrid.buttons, card, LayerDragGrid.Instance, IsIngredient(), SourceManager.recipes, and EClass.sources.

Referenced by InvOwnerCraft.ShouldShowGuide().

◆ IsIngredient() [1/2]

bool TraitCrafter.IsIngredient ( int  idx,
SourceRecipe::Row  r,
Card  c 
)
inline

Definition at line 98 of file TraitCrafter.cs.

99 {
100 if (r.factory != IdSource || c == null)
101 {
102 return false;
103 }
104 if (c.c_isImportant && ShouldConsumeIng(r, idx))
105 {
106 return false;
107 }
108 if (c.trait is TraitFoodFishSlice)
109 {
110 return false;
111 }
112 string[] array = ((idx == 0) ? r.ing1 : r.ing2);
113 if (r.type.ToEnum<MixType>() == MixType.Grind && idx == 1)
114 {
115 if (r.tag.Contains("rust") && c.encLV >= 0)
116 {
117 return false;
118 }
119 if (r.tag.Contains("mod_eject"))
120 {
121 if (c.sockets == null)
122 {
123 return false;
124 }
125 bool flag = false;
126 foreach (int socket in c.sockets)
127 {
128 if (socket != 0)
129 {
130 flag = true;
131 }
132 }
133 if (!flag)
134 {
135 return false;
136 }
137 }
138 }
139 string[] array2 = array;
140 foreach (string text in array2)
141 {
142 if (r.tag.Contains("noCarbone") && c.material.alias == "carbone")
143 {
144 return false;
145 }
146 if (text.StartsWith('#'))
147 {
148 string text2 = text.Replace("#", "");
149 if (c.category.IsChildOf(text2) && IsIngredient(text2, c))
150 {
151 return true;
152 }
153 continue;
154 }
155 string[] array3 = text.Split('@');
156 if (array3.Length > 1)
157 {
158 if (c.id != array3[0] && c.sourceCard._origin != array3[0])
159 {
160 return false;
161 }
162 if (c.refCard is SourceChara.Row row && row.race_row.tag.Contains(array3[1]))
163 {
164 return true;
165 }
166 if (c.material.tag.Contains(array3[1]))
167 {
168 return true;
169 }
170 continue;
171 }
172 if (text == "any")
173 {
174 if (this is TraitDyeMaker && !c.category.GetRoot().tag.Contains("dye") && !c.category.tag.Contains("dye"))
175 {
176 return false;
177 }
178 if (!c.IsUnique && !c.IsImportant && !c.trait.CanOnlyCarry)
179 {
180 return true;
181 }
182 }
183 if (c.id == text || c.sourceCard._origin == text)
184 {
185 return true;
186 }
187 }
188 return false;
189 }
string _origin
Definition: CardRow.cs:15
bool IsImportant
Definition: Card.cs:2005
CardRow refCard
Definition: Card.cs:1867
string id
Definition: Card.cs:31
bool IsUnique
Definition: Card.cs:1991
Trait trait
Definition: Card.cs:49
bool c_isImportant
Definition: Card.cs:984
virtual CardRow sourceCard
Definition: Card.cs:2031
SourceCategory.Row category
Definition: Card.cs:1949
List< int > sockets
Definition: Card.cs:43
SourceRace.Row race_row
Definition: SourceChara.cs:75
virtual bool ShouldConsumeIng(SourceRecipe.Row item, int index)
virtual bool CanOnlyCarry
Definition: Trait.cs:287

References Card.c_isImportant, Trait.Contains(), IdSource, IsIngredient(), SourceChara.Row.race_row, ShouldConsumeIng(), Card.sockets, and Card.trait.

Referenced by GetSource(), IsCraftIngredient(), and IsIngredient().

◆ IsIngredient() [2/2]

virtual bool TraitCrafter.IsIngredient ( string  cat,
Card  c 
)
inlinevirtual

Reimplemented in TraitRuneMold, and TraitToolTalisman.

Definition at line 191 of file TraitCrafter.cs.

192 {
193 return true;
194 }

◆ OnEndAI()

virtual void TraitCrafter.OnEndAI ( AI_UseCrafter  ai)
inlinevirtual

Reimplemented in TraitRollingFortune.

Definition at line 554 of file TraitCrafter.cs.

555 {
556 }

Referenced by AI_UseCrafter.OnEnd().

◆ OnUse()

override bool TraitCrafter.OnUse ( Chara  c)
inlinevirtual

Reimplemented from Trait.

Definition at line 530 of file TraitCrafter.cs.

531 {
533 {
535 return false;
536 }
537 if (IsFactory)
538 {
539 Thing thing = owner.Thing;
540 if (EClass.player.recipes.ListSources(thing).Count > 0)
541 {
542 EClass.ui.AddLayer<LayerCraft>().SetFactory(thing);
543 }
544 else
545 {
546 Msg.Say("noRecipes");
547 }
548 return false;
549 }
551 return false;
552 }
static LayerDragGrid CreateCraft(TraitCrafter crafter)
static string SayCannotUseHere()
Definition: Msg.cs:101
RecipeManager recipes
Definition: Player.cs:913
List< RecipeSource > ListSources(Thing factory, List< RecipeSource > newRecipes=null)
virtual bool IsRegion
Definition: Spatial.cs:501
virtual bool IsFactory
Definition: Trait.cs:139

References EClass._zone, LayerDragGrid.CreateCraft(), Trait.IsFactory, Spatial.IsRegion, RecipeManager.ListSources(), Trait.owner, EClass.player, Player.recipes, Msg.Say(), Msg.SayCannotUseHere(), Card.Thing, and EClass.ui.

◆ ShouldConsumeIng()

virtual bool TraitCrafter.ShouldConsumeIng ( SourceRecipe::Row  item,
int  index 
)
inlinevirtual

Reimplemented in TraitBarrelMaker, TraitRuneMold, and TraitToolTalisman.

Definition at line 248 of file TraitCrafter.cs.

249 {
250 if (IsFactory)
251 {
252 return true;
253 }
254 if (item == null)
255 {
256 return false;
257 }
258 int id = item.id;
259 if ((uint)(id - 47) <= 1u)
260 {
261 return index == 0;
262 }
263 return true;
264 }

References Trait.IsFactory, and item.

Referenced by IsIngredient(), and AI_UseCrafter.Run().

◆ TrySetAct()

override void TraitCrafter.TrySetAct ( ActPlan  p)
inlinevirtual

Reimplemented from Trait.

Definition at line 497 of file TraitCrafter.cs.

498 {
499 if (IsFactory)
500 {
501 Thing _t = owner.Thing;
502 p.TrySetAct("craft", delegate
503 {
504 if (EClass.player.recipes.ListSources(_t).Count > 0)
505 {
506 EClass.ui.AddLayer<LayerCraft>().SetFactory(_t);
507 }
508 else
509 {
510 Msg.Say("noRecipes");
511 }
512 return false;
513 }, _t, CursorSystem.Craft);
514 }
515 else if (!(this is TraitIncubator) || EClass._zone.IsPCFaction)
516 {
517 p.TrySetAct(CrafterTitle, delegate
518 {
520 return false;
521 }, owner);
522 }
523 }
bool TrySetAct(string lang, Func< bool > onPerform, Card tc, CursorInfo cursor=null, int dist=1, bool isHostileAct=false, bool localAct=true, bool canRepeat=false)
Definition: ActPlan.cs:345
static CursorInfo Craft
Definition: CursorSystem.cs:90
virtual string CrafterTitle
Definition: TraitCrafter.cs:56
bool IsPCFaction
Definition: Zone.cs:464

References EClass._zone, CursorSystem.Craft, CrafterTitle, LayerDragGrid.CreateCraft(), Trait.IsFactory, Zone.IsPCFaction, RecipeManager.ListSources(), Trait.owner, EClass.player, Player.recipes, Card.Thing, and ActPlan.TrySetAct().

◆ WitchDoubleCraftChance()

virtual int TraitCrafter.WitchDoubleCraftChance ( Thing  t)
inlinevirtual

Reimplemented in TraitAlchemyBench, and TraitToolAlchemy.

Definition at line 68 of file TraitCrafter.cs.

69 {
70 return 0;
71 }

Property Documentation

◆ animeType

virtual AnimeType TraitCrafter.animeType
get

Definition at line 38 of file TraitCrafter.cs.

Referenced by AI_UseCrafter.Run().

◆ AutoTurnOff

virtual bool TraitCrafter.AutoTurnOff
get

Definition at line 60 of file TraitCrafter.cs.

Referenced by AI_UseCrafter.OnEnd().

◆ CanTriggerFire

virtual bool TraitCrafter.CanTriggerFire
get

Definition at line 58 of file TraitCrafter.cs.

◆ CanUseFromInventory

virtual bool TraitCrafter.CanUseFromInventory
get

Definition at line 50 of file TraitCrafter.cs.

Referenced by CanUse().

◆ CloseOnComplete

virtual bool TraitCrafter.CloseOnComplete
get

Definition at line 64 of file TraitCrafter.cs.

Referenced by AI_UseCrafter.Run().

◆ CostSP

virtual int TraitCrafter.CostSP
get

Definition at line 66 of file TraitCrafter.cs.

◆ CrafterTitle

virtual string TraitCrafter.CrafterTitle
get

Definition at line 56 of file TraitCrafter.cs.

Referenced by TrySetAct().

◆ HoldAsDefaultInteraction

override bool TraitCrafter.HoldAsDefaultInteraction
get

Definition at line 52 of file TraitCrafter.cs.

◆ Icon

virtual Emo TraitCrafter.Icon
get

Definition at line 32 of file TraitCrafter.cs.

Referenced by AI_UseCrafter.OnStart().

◆ IdAnimeProgress

virtual AnimeID TraitCrafter.IdAnimeProgress
get

Definition at line 40 of file TraitCrafter.cs.

Referenced by AI_UseCrafter.Run().

◆ idSoundBG

virtual string TraitCrafter.idSoundBG
get

Definition at line 54 of file TraitCrafter.cs.

Referenced by AI_UseCrafter.OnEnd(), and AI_UseCrafter.Run().

◆ idSoundComplete

virtual string TraitCrafter.idSoundComplete
get

Definition at line 44 of file TraitCrafter.cs.

Referenced by AI_UseCrafter.Run().

◆ idSoundProgress

virtual string TraitCrafter.idSoundProgress
get

Definition at line 42 of file TraitCrafter.cs.

Referenced by AI_UseCrafter.Run().

◆ IdSource

virtual string TraitCrafter.IdSource
get

Definition at line 36 of file TraitCrafter.cs.

Referenced by GetSource(), UIDragGridInfo.Init(), and IsIngredient().

◆ IsConsumeIng

virtual bool TraitCrafter.IsConsumeIng
get

Definition at line 62 of file TraitCrafter.cs.

Referenced by AI_UseCrafter.Run().

◆ IsNightOnlyLight

override bool TraitCrafter.IsNightOnlyLight
get

Definition at line 48 of file TraitCrafter.cs.

◆ numIng

virtual int TraitCrafter.numIng
get

Definition at line 34 of file TraitCrafter.cs.

Referenced by Craft(), GetSource(), LayerDragGrid.GetTargets(), and UIDragGridInfo.Init().

◆ ShowFuelWindow

override bool TraitCrafter.ShowFuelWindow
get

Definition at line 30 of file TraitCrafter.cs.

◆ StopSoundProgress

virtual bool TraitCrafter.StopSoundProgress
get

Definition at line 46 of file TraitCrafter.cs.

Referenced by AI_UseCrafter.Run().


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