37 public override bool IsGrowth => pos.growth !=
null;
82 return "TaskHarvestSeed".lang();
86 string text = (
HaveHarvestThing() ?
"TaskDisassemble" :
"TaskDisassemble_destroy").lang();
90 text = text +
" " +
"TaskDisassemble_newrecipe".lang();
96 return base.GetBaseText(str);
98 return "actHarvest".lang();
105 return base.GetTextSmall(c);
118 bool hasDiggingTool = t !=
null && t.
HasElement(230);
151 for (
int num = p.
Things.Count - 1; num >= 0; num--)
164 for (
int num2 = p.
Things.Count - 1; num2 >= 0; num2--)
179 bool IsValidTarget(
string[] raw)
181 if (raw[0] ==
"digging")
183 return hasDiggingTool;
187 bool flag = ((!num3 && num4 != 250) ?
true :
false);
192 return !flag || hasTool;
205 if (base.CanProgress())
215 return base.CanProgress();
253 float num = (base.IsHarvest ? 0.5f : ((!
IsObj) ? 1f : ((growth !=
null) ? growth.MtpProgress : 1f)));
258 p.maxProgress = (int)((
float)(
maxProgress * 150) * num / 100f);
260 p.onProgressBegin = delegate
266 else if (base.IsTooHard)
292 if (base.IsHarvest && growth !=
null)
317 p.onProgressComplete = delegate
321 int num2 = ((
EClass.
rnd(3) != 0) ? 1 : 0);
334 if (flag && growth !=
null)
361 if (sourceObj.
alias ==
"mound")
380 exp = target.Num * 5;
391 if (backerObj !=
null)
398 switch (backerObj.
id)
404 thing.c_priceFix = -100;
419 thing.
Dye(
"obsidian");
443 Debug.LogError(
"exception: Backer Loot not valid:" + backerObj.
id +
"/" + backerObj.
loot);
450 bool num3 = backerObj.type == 1;
451 Msg.
Say(num3 ?
"backerRemain_read" :
"backerTree_read");
452 Msg.
Say(num3 ?
"backerRemain" :
"backerTree", backerObj.
Text);
478 string[] array =
target.
source.components[0].Split(
'|');
479 for (
int i = 0; i < array.Length; i++)
481 array[i] = array[i].Split(
'/')[0];
483 string result = array[0];
484 if (array.Length > 1)
487 bool flag = category ==
"rock" || category ==
"ore" || category ==
"gem";
488 if (array[0] ==
"ingot" && array[1] ==
"log" && !flag)
514 if (dest.Contains(
"$") || dest.Contains(
"#") || dest.Contains(
"@") || dest.Contains(
"-"))
539 float num2 = 1.0999999f;
555 if (text2 ==
"glass" || text2 ==
"brick")
559 float num3 = num % num2;
561 Debug.Log(
"num:" + num +
" div:" + num3 +
" chance:" + num2 +
" check:" + (num2 - num3 + 1f));
562 if (num3 > 0f &&
EClass.
rndf(num2 - num3 + 1f) < 1f)
592 Msg.
Say(
"spellbookCrumble", thing);
void SetTarget(Chara c, Thing _tool=null)
static void Set(CardBlueprint _bp)
ElementContainerCard elements
virtual void Die(Element e=null, Card origin=null, AttackSource attackSource=AttackSource.None, Chara originalTarget=null)
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)
bool IsEquipmentOrRangedOrAmmo
virtual void SetBlessedState(BlessedState s)
Card MakeFoodFrom(string _id)
void ModExp(string alias, int a)
void PlayAnime(AnimeID id, bool force=false)
SourceCategory.Row category
virtual void ChangeRarity(Rarity q)
void Say(string lang, string ref1=null, string ref2=null)
override void LookAt(Card c)
BackerContentConfig backer
static SourceManager sources
static float rndf(float a)
void ModExp(int ele, float a, bool chain=false)
Element SetBase(string alias, int v, int potential=0)
bool disableUsermapBenefit
virtual AnimeID AnimeProgress
virtual void OnHitFail(Chara c)
virtual bool IsCrimeToHarvest
void OnProgressComplete(Chara c)
virtual string GetSoundProgress()
void DestroyObj(Point point)
void TrySmoothPick(Cell cell, Thing t, Chara c)
void MineObj(Point point, Task task=null, Chara c=null)
SourceBacker.Row GetBackerObj(Point p)
static string Say(string idLang, string ref1, string ref2=null, string ref3=null, string ref4=null)
HashSet< int > doneBackers
void SetObj(int id=0, int value=1, int dir=0)
SoundSource PlaySound(string id, bool synced=true, float v=1f, bool spatial=true)
bool TryWitnessCrime(Chara criminal, Chara target=null, int radius=4, Func< Chara, bool > funcWitness=null)
void Animate(AnimeID id, bool animeBlock=false)
void ComeUpWithRecipe(string idRecipe, int chanceForRandomRecipe=0)
bool CanCeomUpWithRecipe(string idRecipe)
Dictionary< string, CardRow > map
string GetSoundImpact(RenderRow c=null)
void AddBlood(Point p, int a=1)
void PlayHitEffect(Point p, int emit=2)
override bool CanProgress()
override string GetTextSmall(Card c)
override bool IsHostileAct
static TaskHarvest TryGetAct(Chara c, Point p)
override HitResult GetHitResult()
override HarvestType harvestType
bool ShouldGenerateDismantled(string dest)
override string GetBaseText(string str)
override void OnCreateProgress(Progress_Custom p)
override bool CanManualCancel()
static Thing CreateFromCategory(string idCat, int lv=-1)
static Thing Create(string id, int idMat=-1, int lv=-1)
virtual bool CanBeDisassembled
virtual string ReqHarvest
Card AddThing(string id, int x, int z)
bool IsCrime(Chara c, Act act)
Card AddCard(Card t, Point point)