Elin Decompiled Documentation EA 23.102 Nightly
Loading...
Searching...
No Matches
TaskCraft.cs
Go to the documentation of this file.
1using System.Collections.Generic;
2using Newtonsoft.Json;
3
4public class TaskCraft : Task
5{
6 [JsonProperty]
7 public Thing factory;
8
9 [JsonProperty]
10 public Recipe recipe;
11
12 [JsonProperty]
13 public int num;
14
15 [JsonProperty]
16 public int costSP;
17
18 [JsonProperty]
19 public List<Thing> resources = new List<Thing>();
20
21 [JsonProperty]
22 public int[] reqs;
23
24 [JsonProperty]
25 public bool repeat;
26
27 [JsonProperty]
28 public bool floatMode;
29
31
33
35 {
36 get
37 {
38 if (factory == null || !factory.ExistsOnMap)
39 {
40 return EClass.pc.pos;
41 }
42 return factory.pos;
43 }
44 }
45
46 public override int MaxRestart => 99999999;
47
48 public override bool CanManualCancel()
49 {
50 return true;
51 }
52
53 public void ResetReq()
54 {
55 reqs = new int[recipe.ingredients.Count];
56 for (int i = 0; i < recipe.ingredients.Count; i++)
57 {
58 reqs[i] = recipe.ingredients[i].req;
59 }
60 }
61
62 public override bool CanProgress()
63 {
64 return true;
65 }
66
67 public override bool _CanPerformTask(Chara chara, int radius)
68 {
69 return true;
70 }
71
72 public override void OnCreateProgress(Progress_Custom p)
73 {
74 p.maxProgress = 5;
75 }
76
77 public override void OnBeforeProgress()
78 {
79 }
80
81 public override void OnProgress()
82 {
85 owner.elements.ModExp(orCreateElement.id, 20);
86 }
87
88 public override IEnumerable<Status> Run()
89 {
91 if (!CanProgress())
92 {
93 yield return Cancel();
94 }
95 yield return DoProgress();
96 ResetReq();
97 if (repeat)
98 {
99 yield return Restart();
100 }
101 if ((bool)layer)
102 {
104 }
105 if ((bool)LayerCraftFloat.Instance)
106 {
108 }
109 }
110
111 public bool IsIngredientsValid(bool destoryResources = false, int numCraft = 1)
112 {
113 bool flag = true;
114 for (int i = 0; i < recipe.ingredients.Count; i++)
115 {
116 Thing thing = recipe.ingredients[i].thing;
117 if (thing == null || thing.isDestroyed || thing.Num < reqs[i] * numCraft)
118 {
119 flag = false;
120 break;
121 }
122 if (destoryResources)
123 {
124 resources.Add(thing.Split(reqs[i]));
125 }
126 }
127 if (!flag)
128 {
129 return false;
130 }
131 if (destoryResources)
132 {
133 foreach (Thing resource in resources)
134 {
135 resource.Destroy();
136 }
137 resources.Clear();
138 }
139 return true;
140 }
141
142 public override void OnProgressComplete()
143 {
144 if (owner == null)
145 {
146 return;
147 }
149 for (int i = 0; i < num; i++)
150 {
151 ResetReq();
152 if (!IsIngredientsValid(destoryResources: true))
153 {
154 Msg.Say("invalidCraftResource");
155 return;
156 }
157 recipe.Craft(blessed, i == 0);
158 owner.elements.ModExp(orCreateElement.id, 200);
159 resources.Clear();
160 }
161 EClass.Sound.Play("craft");
162 Effect.Get("smoke").Play(CraftPos);
163 Effect.Get("mine").Play(CraftPos).SetParticleColor(recipe.GetColorMaterial().GetColor())
164 .Emit(10 + EClass.rnd(10));
166 }
167
168 public void PutOutResources()
169 {
170 foreach (Thing resource in resources)
171 {
173 }
174 resources.Clear();
175 }
176}
BlessedState
Definition: BlessedState.cs:2
new Chara owner
Definition: AIAct.cs:14
Status DoProgress()
Definition: AIAct.cs:517
Status Restart()
Definition: AIAct.cs:237
void Add(Act a, string s="")
Definition: ActPlan.cs:11
bool isDestroyed
Definition: Card.cs:71
Thing Split(int a)
Definition: Card.cs:3231
ElementContainerCard elements
Definition: Card.cs:37
SoundSource PlaySound(string id, float v=1f, bool spatial=true)
Definition: Card.cs:5404
bool ExistsOnMap
Definition: Card.cs:1961
Point pos
Definition: Card.cs:55
int Num
Definition: Card.cs:154
Definition: Chara.cs:10
Stats stamina
Definition: Chara.cs:955
Definition: EClass.cs:5
static int rnd(int a)
Definition: EClass.cs:50
static Zone _zone
Definition: EClass.cs:20
static Chara pc
Definition: EClass.cs:14
static SoundManager Sound
Definition: EClass.cs:46
Definition: Effect.cs:7
static Effect Get(Effect original)
Definition: Effect.cs:85
void Play(float delay, Point from, float fixY=0f, Point to=null, Sprite sprite=null)
Definition: Effect.cs:100
void ModExp(int ele, int a, bool chain=false)
Element GetOrCreateElement(Element ele)
int id
Definition: ELEMENT.cs:240
static LayerCraftFloat Instance
void OnCompleteCraft()
Definition: LayerCraft.cs:219
Definition: Msg.cs:5
static string Say(string idLang, string ref1, string ref2=null, string ref3=null, string ref4=null)
Definition: Msg.cs:58
Definition: Point.cs:9
Element GetReqSkill()
Definition: Recipe.cs:7
virtual RenderRow renderRow
Definition: Recipe.cs:193
RecipeSource source
Definition: Recipe.cs:187
List< Ingredient > ingredients
Definition: Recipe.cs:164
virtual SourceMaterial.Row GetMainMaterial()
Definition: Recipe.cs:467
virtual Thing Craft(BlessedState blessed, bool sound=false, List< Thing > ings=null, TraitCrafter crafter=null, bool model=false)
Definition: Recipe.cs:536
virtual SourceMaterial.Row GetColorMaterial()
Definition: Recipe.cs:481
virtual void Mod(int a)
Definition: Stats.cs:135
void ResetReq()
Definition: TaskCraft.cs:53
BlessedState blessed
Definition: TaskCraft.cs:30
override void OnCreateProgress(Progress_Custom p)
Definition: TaskCraft.cs:72
bool floatMode
Definition: TaskCraft.cs:28
override bool _CanPerformTask(Chara chara, int radius)
Definition: TaskCraft.cs:67
override int MaxRestart
Definition: TaskCraft.cs:46
override bool CanManualCancel()
Definition: TaskCraft.cs:48
int[] reqs
Definition: TaskCraft.cs:22
void PutOutResources()
Definition: TaskCraft.cs:168
override void OnProgressComplete()
Definition: TaskCraft.cs:142
List< Thing > resources
Definition: TaskCraft.cs:19
Thing factory
Definition: TaskCraft.cs:7
int num
Definition: TaskCraft.cs:13
override void OnBeforeProgress()
Definition: TaskCraft.cs:77
override bool CanProgress()
Definition: TaskCraft.cs:62
LayerCraft layer
Definition: TaskCraft.cs:32
int costSP
Definition: TaskCraft.cs:16
override void OnProgress()
Definition: TaskCraft.cs:81
bool IsIngredientsValid(bool destoryResources=false, int numCraft=1)
Definition: TaskCraft.cs:111
override IEnumerable< Status > Run()
Definition: TaskCraft.cs:88
Point CraftPos
Definition: TaskCraft.cs:35
bool repeat
Definition: TaskCraft.cs:25
Recipe recipe
Definition: TaskCraft.cs:10
Definition: Task.cs:4
override Status Cancel()
Definition: Task.cs:54
Definition: Thing.cs:8
Card AddCard(Card t, Point point)
Definition: Zone.cs:1893