37 public override bool IsGrowth => pos.growth !=
null;
107 return "TaskHarvestSeed".lang();
111 return (
HaveHarvestThing() ?
"TaskDisassemble" :
"TaskDisassemble_destroy").lang();
115 return base.GetBaseText(str);
117 return "actHarvest".lang();
124 return base.GetTextSmall(c);
137 bool hasDiggingTool = t !=
null && t.
HasElement(230);
178 for (
int num = p.
Things.Count - 1; num >= 0; num--)
191 for (
int num2 = p.
Things.Count - 1; num2 >= 0; num2--)
206 bool IsValidTarget(
string[] raw)
208 if (raw[0] ==
"digging")
210 return hasDiggingTool;
214 bool flag = ((!num3 && num4 != 250) ?
true :
false);
219 return !flag || hasTool;
232 if (base.CanProgress())
242 return base.CanProgress();
280 float num = (base.IsHarvest ? 0.5f : ((!
IsObj) ? 1f : ((growth !=
null) ? growth.MtpProgress : 1f)));
285 p.maxProgress = (int)((
float)(
maxProgress * 150) * num / 100f);
287 p.onProgressBegin = delegate
293 else if (base.IsTooHard)
319 if (base.IsHarvest && growth !=
null)
344 p.onProgressComplete = delegate
348 int num2 = ((
EClass.
rnd(3) != 0) ? 1 : 0);
361 if (flag && growth !=
null)
388 if (sourceObj.
alias ==
"mound")
407 exp = target.Num * 5;
418 if (backerObj !=
null)
425 switch (backerObj.
id)
431 thing.c_priceFix = -100;
446 thing.
Dye(
"obsidian");
470 Debug.LogError(
"exception: Backer Loot not valid:" + backerObj.
id +
"/" + backerObj.
loot);
477 bool num3 = backerObj.type == 1;
478 Msg.
Say(num3 ?
"backerRemain_read" :
"backerTree_read");
479 Msg.
Say(num3 ?
"backerRemain" :
"backerTree", backerObj.
Text);
505 string[] array =
target.
source.components[0].Split(
'|');
506 for (
int i = 0; i < array.Length; i++)
508 array[i] = array[i].Split(
'/')[0];
510 string result = array[0];
511 if (array.Length > 1)
514 bool flag = category ==
"rock" || category ==
"ore" || category ==
"gem";
515 if (array[0] ==
"ingot" && array[1] ==
"log" && !flag)
541 if (dest.Contains(
"$") || dest.Contains(
"#") || dest.Contains(
"@") || dest.Contains(
"-"))
572 float num2 = 1.0999999f;
588 if (text2 ==
"glass" || text2 ==
"brick")
592 float num3 = num % num2;
594 Debug.Log(
"num:" + num +
" div:" + num3 +
" chance:" + num2 +
" check:" + (num2 - num3 + 1f));
595 if (num3 > 0f &&
EClass.
rndf(num2 - num3 + 1f) < 1f)
625 Msg.
Say(
"spellbookCrumble", thing);
void SetTarget(Chara c, Thing _tool=null)
static void Set(CardBlueprint _bp=null)
ElementContainerCard elements
virtual void Die(Element e=null, Card origin=null, AttackSource attackSource=AttackSource.None, Chara originalTarget=null)
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)
bool HasElement(int ele, bool includeNagative=false)
void Say(string lang, string ref1=null, string ref2=null)
SourceMaterial.Row matObj
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)
static void SetSeed(int a=-1)
void ComeUpWithRecipe(string idRecipe, int chanceForRandomRecipe=0)
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 string GetIdRecipe(Point p)
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)