Elin Decompiled Documentation EA 23.300 Nightly
Loading...
Searching...
No Matches
AI_Fuck.cs
Go to the documentation of this file.
1using System.Collections.Generic;
2using UnityEngine;
3
4public class AI_Fuck : AIAct
5{
6 public enum FuckType
7 {
8 fuck,
9 tame
10 }
11
12 public enum Variation
13 {
14 Normal,
15 Bitch,
17 NTR,
19 Slime,
22 }
23
25
26 public Chara target;
27
28 public bool sell;
29
30 public bool succubus;
31
32 public int maxProgress;
33
34 public int progress;
35
36 public int fails;
37
38 public int totalAffinity;
39
40 public virtual FuckType Type => FuckType.fuck;
41
43 {
44 get
45 {
46 if (variation == Variation.Normal && owner != null && target != null && target != owner && (owner == EClass.pc || owner.IsMarried))
47 {
48 if (target != EClass.pc)
49 {
50 return target.IsMarried;
51 }
52 return true;
53 }
54 return false;
55 }
56 }
57
58 public override bool PushChara => false;
59
60 public override bool IsAutoTurn => true;
61
63
64 public override int MaxProgress => maxProgress;
65
66 public override int CurrentProgress => progress;
67
68 public override bool CancelOnAggro
69 {
70 get
71 {
72 if (variation != Variation.NTR && variation != Variation.Bloodsuck)
73 {
74 return variation != Variation.Slime;
75 }
76 return false;
77 }
78 }
79
80 public override bool CancelWhenDamaged => CancelOnAggro;
81
82 public override bool ShouldAllyAttack(Chara tg)
83 {
84 return tg != target;
85 }
86
87 public override IEnumerable<Status> Run()
88 {
89 if (target == null)
90 {
91 foreach (Chara chara in EClass._map.charas)
92 {
93 if (!chara.IsHomeMember() && !chara.IsDeadOrSleeping && chara.Dist(owner) <= 5)
94 {
95 target = chara;
96 break;
97 }
98 }
99 }
100 if (target == null)
101 {
102 yield return Cancel();
103 }
104 Chara cc = (sell ? target : owner);
105 Chara tc = (sell ? owner : target);
106 int destDist = ((Type == FuckType.fuck) ? 1 : 1);
107 if (owner.host != target)
108 {
109 yield return DoGoto(target.pos, destDist, ignoreConnection: true);
110 }
111 cc.Say((this.variation == Variation.Slime) ? "slime_start" : ((this.variation == Variation.Bloodsuck) ? "suck_start" : (Type.ToString() + "_start")), cc, tc);
112 isFail = () => !tc.IsAliveInCurrentZone || tc.Dist(owner) > 3;
113 if (Type == FuckType.tame)
114 {
115 cc.SetTempHand(1104, -1);
116 }
117 maxProgress = ((this.variation == Variation.NTR || this.variation == Variation.Bloodsuck) ? 10 : 25);
119 if ((uint)(variation - 3) <= 2u)
120 {
121 maxProgress = maxProgress * 100 / (100 + owner.Evalue(1664) * 50);
122 }
123 switch (this.variation)
124 {
125 case Variation.Succubus:
126 cc.Talk("seduce");
127 break;
128 case Variation.Bloodsuck:
129 cc.PlaySound("bloodsuck");
130 break;
131 case Variation.Slime:
132 cc.PlaySound("slime");
133 target.AddCondition<ConEntangle>(500, force: true);
134 break;
135 }
136 for (int i = 0; i < maxProgress; i++)
137 {
138 progress = i;
139 if (owner.host != target)
140 {
141 yield return DoGoto(target.pos, destDist, ignoreConnection: true);
142 }
143 switch (Type)
144 {
145 case FuckType.fuck:
146 {
147 if (this.variation == Variation.NTR)
148 {
149 cc.Say("ntr", cc, tc);
150 }
151 cc.LookAt(tc);
152 tc.LookAt(cc);
153 switch (i % 4)
154 {
155 case 0:
156 cc.renderer.PlayAnime(AnimeID.Attack, tc);
157 if (EClass.rnd(3) == 0 || sell)
158 {
159 if (cc.IsPC && this.variation == Variation.MotherMilk)
160 {
161 EClass.player.forceTalk = true;
162 }
163 cc.Talk((this.variation == Variation.MotherMilk) ? "play_baby" : "tail");
164 }
165 break;
166 case 2:
167 tc.renderer.PlayAnime(AnimeID.Shiver);
168 if (EClass.rnd(3) == 0)
169 {
170 if (tc.IsPC && this.variation == Variation.MotherMilk)
171 {
172 EClass.player.forceTalk = true;
173 }
174 tc.Talk((this.variation == Variation.MotherMilk) ? "play_mama" : "tailed");
175 }
176 break;
177 }
178 int num5 = ((cc.HasElement(1216) || tc.HasElement(1216)) ? 100 : 20);
179 if (this.variation == Variation.MotherMilk)
180 {
181 num5 *= 5;
182 }
183 if (num5 > EClass.rnd(100))
184 {
185 ((EClass.rnd(2) == 0) ? cc : tc).PlayEffect("love2");
186 }
187 if (this.variation == Variation.Slime)
188 {
190 }
191 if (EClass.rnd(3) == 0 || sell)
192 {
193 if (this.variation == Variation.Slime)
194 {
195 target.AddCondition<ConSupress>(200, force: true);
196 }
197 else
198 {
199 target.AddCondition<ConWait>(50, force: true);
200 }
201 }
202 if (this.variation == Variation.Bloodsuck || this.variation == Variation.Slime)
203 {
204 owner.pos.TryWitnessCrime(cc, tc, 4, (Chara c) => EClass.rnd(cc.HasCondition<ConTransmuteBat>() ? 50 : 20) == 0);
205 }
206 break;
207 }
208 case FuckType.tame:
209 {
210 int num = 100;
211 if (!tc.IsAnimal)
212 {
213 num += 50;
214 }
215 if (tc.IsHuman)
216 {
217 num += 50;
218 }
219 if (tc.IsInCombat)
220 {
221 num += 100;
222 }
223 if (tc == cc)
224 {
225 num = 50;
226 }
227 else if (tc.affinity.CurrentStage < Affinity.Stage.Intimate && EClass.rnd(6 * num / 100) == 0)
228 {
229 tc.AddCondition<ConFear>(60);
230 }
231 tc.interest -= (tc.IsPCFaction ? 20 : (2 * num / 100));
232 if (i == 0 || i == 10)
233 {
234 cc.Talk("goodBoy");
235 }
236 if (i % 5 == 0)
237 {
238 tc.PlaySound("brushing");
239 int num2 = cc.CHA / 2 + cc.Evalue(237) - tc.CHA * 2;
240 int num3;
241 if (EClass.rnd(cc.CHA / 2 + cc.Evalue(237)) > EClass.rnd(tc.CHA * num / 100))
242 {
243 num3 = 5 + Mathf.Clamp(num2 / 20, 0, 20);
244 }
245 else
246 {
247 num3 = -5 + ((!tc.IsPCFaction) ? Mathf.Clamp(num2 / 10, -30, 0) : 0);
248 fails++;
249 }
250 int num4 = 20;
252 {
253 num3 = ((EClass.rnd(3) == 0) ? 4 : 0);
254 num4 = 10;
255 }
256 totalAffinity += num3;
257 tc.ModAffinity(EClass.pc, num3, show: true, showOnlyEmo: true);
258 cc.elements.ModExp(237, num4);
259 if (EClass.rnd(4) == 0)
260 {
261 cc.stamina.Mod(-1);
262 }
263 }
264 break;
265 }
266 }
267 }
268 Finish();
269 }
270
271 public void Finish()
272 {
273 Chara chara = (sell ? target : owner);
274 Chara chara2 = (sell ? owner : target);
275 if (chara.isDead || chara2.isDead)
276 {
277 return;
278 }
279 bool flag = EClass.rnd(2) == 0;
280 switch (Type)
281 {
282 case FuckType.fuck:
283 {
284 switch (variation)
285 {
286 case Variation.Bloodsuck:
287 case Variation.Slime:
288 if (EClass.rnd(2) == 0)
289 {
290 chara2.AddCondition<ConConfuse>(500);
291 }
292 if (EClass.rnd(2) == 0)
293 {
294 chara2.AddCondition<ConDim>(500);
295 }
296 if (EClass.rnd(2) == 0)
297 {
298 chara2.AddCondition<ConParalyze>(500);
299 }
300 if (EClass.rnd(10) == 0)
301 {
302 chara2.AddCondition<ConInsane>(100 + EClass.rnd(100));
303 }
304 break;
305 default:
306 {
307 for (int i = 0; i < 2; i++)
308 {
309 Chara chara3 = ((i == 0) ? chara : chara2);
310 chara3.RemoveCondition<ConDrunk>();
311 if (EClass.rnd(15) == 0 && !chara3.HasElement(1216))
312 {
313 chara3.AddCondition<ConDisease>(200);
314 }
315 chara3.ModExp(77, 250);
316 chara3.ModExp(71, 250);
317 chara3.ModExp(75, 250);
318 }
319 if (!chara2.HasElement(1216))
320 {
321 if (EClass.rnd(5) == 0)
322 {
323 chara2.AddCondition<ConParalyze>(500);
324 }
325 if (EClass.rnd(3) == 0)
326 {
327 chara2.AddCondition<ConInsane>(100 + EClass.rnd(100));
328 }
329 }
330 break;
331 }
332 case Variation.MotherMilk:
333 break;
334 }
335 chara.Talk("tail_after");
336 bool flag3 = false;
337 if (variation == Variation.Succubus)
338 {
339 chara.ShowEmo(Emo.love);
340 chara2.ShowEmo(Emo.love);
341 EClass.player.forceTalk = true;
342 chara2.Talk("seduced");
343 }
344 else if (variation != Variation.NTR && variation != Variation.Bloodsuck && variation != Variation.Slime && variation != Variation.MotherMilk && chara != EClass.pc)
345 {
347 {
348 flag = true;
349 }
350 else
351 {
352 int num3 = CalcMoney.Whore(chara2, chara);
353 Chara chara4 = chara;
354 Chara chara5 = chara2;
355 if (variation == Variation.Bitch)
356 {
357 chara = chara5;
358 chara2 = chara4;
359 }
360 Debug.Log("buyer:" + chara.Name + " seller:" + chara2.Name + " money:" + num3);
361 if (!chara.IsPC)
362 {
363 chara.ModCurrency(EClass.rndHalf(num3));
364 }
365 if (!chara2.IsPC && chara.GetCurrency() < num3 && EClass.rnd(2) == 0)
366 {
367 num3 = chara.GetCurrency();
368 }
369 Debug.Log("money:" + num3 + " buyer:" + chara.GetCurrency());
370 if (chara.GetCurrency() >= num3)
371 {
372 chara.Talk("tail_pay");
373 }
374 else
375 {
376 chara.Talk("tail_nomoney");
377 num3 = chara.GetCurrency();
378 chara2.Say("angry", chara2);
379 chara2.Talk("angry");
380 flag = (sell ? true : false);
381 if (EClass.rnd(chara.IsPC ? 2 : 20) == 0)
382 {
383 flag3 = true;
384 }
385 }
386 chara.ModCurrency(-num3);
387 if (chara2 == EClass.pc)
388 {
389 if (num3 > 0)
390 {
393 }
394 }
395 else
396 {
397 int num4 = (chara2.CHA * 10 + 100) / ((chara2.IsPCFaction && chara2.memberType == FactionMemberType.Default) ? 1 : 10);
398 if (chara2.GetCurrency() - num4 > 0)
399 {
400 chara2.c_allowance += num3;
401 }
402 else
403 {
404 chara2.ModCurrency(num3);
405 }
406 }
407 chara = chara4;
408 chara2 = chara5;
409 }
410 }
411 if (flag3)
412 {
413 chara2.DoHostileAction(chara);
414 }
415 if (variation == Variation.Bloodsuck)
416 {
417 int value = chara.hunger.value;
418 Thing food = CraftUtil.MakeBloodMeal(chara, chara2);
419 FoodEffect.Proc(chara, food, consume: false);
420 chara2.AddCondition<ConBleed>(EClass.rndHalf(value * 10));
421 }
422 else
423 {
424 if (chara.IsPCParty || chara2.IsPCParty)
425 {
426 chara.stamina.Mod(-5 - EClass.rnd(chara.stamina.max / 10 + ((variation == Variation.Succubus || variation == Variation.MotherMilk) ? StaminaCost(chara2, chara) : 0) + 1));
427 chara2.stamina.Mod(-5 - EClass.rnd(chara2.stamina.max / 20 + ((variation == Variation.Succubus || variation == Variation.MotherMilk) ? StaminaCost(chara, chara2) : 0) + 1));
428 }
429 SuccubusExp(chara, chara2);
430 SuccubusExp(chara2, chara);
431 }
432 chara2.ModAffinity(chara, (flag || (chara.IsPC && chara2.affinity.CanSleepBeside() && EClass.rnd(10) != 0)) ? 10 : (-5));
433 if (chara == EClass.pc || chara2 == EClass.pc)
434 {
435 if (variation == Variation.MotherMilk)
436 {
439 {
440 EClass.pc.SetFeat(1291, 1, msg: true);
441 }
442 }
443 else
444 {
446 }
447 }
448 switch (variation)
449 {
450 case Variation.NTR:
451 {
452 Thing thing2 = chara2.things.Find<TraitDreamBug>();
453 if (thing2 != null)
454 {
455 thing2.ModNum(-1);
456 if (chara.IsPC)
457 {
458 Msg.Say("dream_spell", EClass.sources.elements.map[9156].GetName().ToLowerInvariant());
459 EClass.pc.GainAbility(9156, EClass.rnd(2) + 1);
460 }
461 }
462 if (!chara.HasElement(1239) || chara2.HasElement(1216))
463 {
464 break;
465 }
466 if (chara2.HasElement(758))
467 {
468 if (chara.ExistsOnMap)
469 {
470 chara.stamina.Mod(-1000000);
471 }
472 }
473 else if (chara2.ExistsOnMap)
474 {
475 chara2.stamina.Mod((!chara2.IsPCFaction) ? (-10000) : (chara2.IsPC ? (-25) : (-50)));
476 }
477 break;
478 }
479 case Variation.Bloodsuck:
480 if (chara2.HasElement(758) && chara.ExistsOnMap)
481 {
482 chara.stamina.Mod(-1000000);
483 }
484 break;
485 case Variation.Slime:
486 {
487 Thing thing = null;
488 for (int j = 0; j < 10; j++)
489 {
490 thing = target.MakeGene((j < 3) ? DNA.Type.Superior : DNA.Type.Default);
491 thing.c_DNA.MakeSlimeFood(chara);
492 if (thing.c_DNA.GetInvalidAction(chara) != null || thing.c_DNA.GetInvalidFeat(chara) != null)
493 {
494 thing.c_DNA.vals.Clear();
495 thing.c_DNA.type = DNA.Type.Inferior;
496 continue;
497 }
498 thing.MakeFoodFrom(target);
499 thing.elements.ModBase(10, 20);
500 thing.elements.ModBase(18, 100);
501 break;
502 }
503 FoodEffect.Proc(chara, thing, consume: false);
504 chara.elements.ModExp(6608, 1000f);
505 break;
506 }
507 }
509 {
510 chara.Say("tender_hug", chara, chara2);
511 }
512 break;
513 }
514 case FuckType.tame:
515 {
516 int num = ((!chara2.IsPCFaction) ? (chara2.IsHuman ? 10 : 5) : (chara2.IsHuman ? 5 : 0));
517 Msg.Say("tame_end", target);
518 target.PlaySound("groomed");
519 target.PlayEffect("heal_tick");
520 target.hygiene.Mod(15);
521 if (chara == EClass.pc)
522 {
524 }
525 if (target == owner)
526 {
527 break;
528 }
529 if (totalAffinity > 0)
530 {
531 chara.Say("brush_success", target, owner);
532 }
533 else
534 {
535 chara.Say("brush_fail", target, owner);
536 num *= 5;
537 }
539 bool flag2 = num2 && chara2.affinity.CanInvite() && chara2.GetBestAttribute() < EClass.pc.CHA;
540 if (num2)
541 {
542 if (flag2)
543 {
544 chara.Say("tame_success", owner, target);
545 chara2.MakeAlly();
546 }
547 else
548 {
549 chara.Say("tame_fail", chara, chara2);
550 }
551 }
552 if (fails > 0 && num > EClass.rnd(100))
553 {
554 chara2.DoHostileAction(chara);
555 chara2.calmCheckTurn *= 3;
556 }
557 break;
558 }
559 }
560 static int StaminaCost(Chara c1, Chara c2)
561 {
562 return (int)Mathf.Max(10f * (float)c1.END / (float)Mathf.Max(c2.END, 1), 0f);
563 }
564 void SuccubusExp(Chara c, Chara tg)
565 {
566 if (!c.HasElement(1216) || c.isDead)
567 {
568 return;
569 }
570 foreach (Element item in tg.elements.ListBestAttributes())
571 {
572 if (c.elements.ValueWithoutLink(item.id) < item.ValueWithoutLink)
573 {
574 c.elements.ModTempPotential(item.id, Mathf.Min(EClass.rnd(item.ValueWithoutLink - c.elements.ValueWithoutLink(item.id) / 5), (variation == Variation.MotherMilk) ? 100 : 500));
575 c.Say("succubus_exp", c, item.Name.ToLower());
576 break;
577 }
578 }
579 }
580 }
581}
AnimeID
Definition: AnimeID.cs:2
Emo
Definition: Emo.cs:2
FactionMemberType
Definition: AIAct.cs:6
virtual Status Cancel()
Definition: AIAct.cs:305
new Chara owner
Definition: AIAct.cs:14
Func< bool > isFail
Definition: AIAct.cs:28
Status DoGoto(Point pos, int dist=0, bool ignoreConnection=false, Func< Status > _onChildFail=null)
Definition: AIAct.cs:446
override bool CancelWhenDamaged
Definition: AI_Fuck.cs:80
void Finish()
Definition: AI_Fuck.cs:271
bool sell
Definition: AI_Fuck.cs:28
int totalAffinity
Definition: AI_Fuck.cs:38
override bool IsAutoTurn
Definition: AI_Fuck.cs:60
override IEnumerable< Status > Run()
Definition: AI_Fuck.cs:87
override bool PushChara
Definition: AI_Fuck.cs:58
override int MaxProgress
Definition: AI_Fuck.cs:64
int progress
Definition: AI_Fuck.cs:34
override bool CancelOnAggro
Definition: AI_Fuck.cs:69
override int CurrentProgress
Definition: AI_Fuck.cs:66
bool succubus
Definition: AI_Fuck.cs:30
Variation
Definition: AI_Fuck.cs:13
int maxProgress
Definition: AI_Fuck.cs:32
int fails
Definition: AI_Fuck.cs:36
Chara target
Definition: AI_Fuck.cs:26
Variation variation
Definition: AI_Fuck.cs:24
override bool ShouldAllyAttack(Chara tg)
Definition: AI_Fuck.cs:82
FuckType
Definition: AI_Fuck.cs:7
virtual FuckType Type
Definition: AI_Fuck.cs:40
bool IsSacredLovemaking
Definition: AI_Fuck.cs:43
bool CanInvite()
Definition: Affinity.cs:56
Stage CurrentStage
Definition: Affinity.cs:32
bool CanSleepBeside()
Definition: Affinity.cs:84
static int Whore(Chara seller, Chara buyer)
Definition: CalcMoney.cs:55
void PlayAnime(AnimeID id, bool force)
bool IsPCFactionOrMinion
Definition: Card.cs:2314
int GetBestAttribute()
Definition: Card.cs:2672
virtual Chara Chara
Definition: Card.cs:2110
ElementContainerCard elements
Definition: Card.cs:42
int END
Definition: Card.cs:2379
SoundSource PlaySound(string id, float v=1f, bool spatial=true)
Definition: Card.cs:6443
void Talk(string idTopic, string ref1=null, string ref2=null, bool forceSync=false)
Definition: Card.cs:7003
string Name
Definition: Card.cs:2179
int CHA
Definition: Card.cs:2389
bool ExistsOnMap
Definition: Card.cs:2125
Thing SetNum(int a)
Definition: Card.cs:3579
int GetCurrency(string id="money")
Definition: Card.cs:4059
Point pos
Definition: Card.cs:60
Effect PlayEffect(string id, bool useRenderPos=true, float range=0f, Vector3 fix=default(Vector3))
Definition: Card.cs:6477
void ShowEmo(Emo _emo=Emo.none, float duration=0f, bool skipSame=true)
Definition: Card.cs:6411
void ModCurrency(int a, string id="money")
Definition: Card.cs:4045
Card MakeFoodFrom(string _id)
Definition: Card.cs:5663
ThingContainer things
Definition: Card.cs:39
int Evalue(int ele)
Definition: Card.cs:2613
int Dist(Card c)
Definition: Card.cs:7996
void ModExp(string alias, int a)
Definition: Card.cs:2690
DNA c_DNA
Definition: Card.cs:1921
void ModNum(int a, bool notify=true)
Definition: Card.cs:3599
CardRenderer renderer
Definition: Card.cs:64
bool HasElement(int ele, bool includeNagative=false)
Definition: Card.cs:6190
void Say(string lang, string ref1=null, string ref2=null)
Definition: Card.cs:7121
Definition: Chara.cs:10
override bool IsAliveInCurrentZone
Definition: Chara.cs:563
Condition AddCondition(string id, int p=100, bool force=false)
Definition: Chara.cs:9472
void ModAffinity(Chara c, int a, bool show=true, bool showOnlyEmo=false)
Definition: Chara.cs:8135
override bool IsPC
Definition: Chara.cs:626
Chara host
Definition: Chara.cs:33
void SetFeat(int id, int value=1, bool msg=false)
Definition: Chara.cs:10111
override bool IsPCParty
Definition: Chara.cs:629
Stats hygiene
Definition: Chara.cs:1178
bool IsInCombat
Definition: Chara.cs:878
bool HasCondition(string alias)
Definition: Chara.cs:9633
Stats hunger
Definition: Chara.cs:1168
bool IsHuman
Definition: Chara.cs:893
bool IsAnimal
Definition: Chara.cs:881
override bool IsPCFaction
Definition: Chara.cs:685
override bool IsDeadOrSleeping
Definition: Chara.cs:575
void MakeAlly(bool msg=true)
Definition: Chara.cs:2339
void GainAbility(int ele, int mtp=100, Thing origin=null)
Definition: Chara.cs:10311
FactionMemberType memberType
Definition: Chara.cs:46
Stats stamina
Definition: Chara.cs:1172
void SetTempHand(int right=0, int left=0)
Definition: Chara.cs:6866
bool IsHomeMember()
Definition: Chara.cs:6741
Thing MakeGene(DNA.Type? type=null)
Definition: Chara.cs:8377
Affinity affinity
Definition: Chara.cs:316
Religion faith
Definition: Chara.cs:441
bool IsMarried
Definition: Chara.cs:611
void DoHostileAction(Card _tg, bool immediate=false)
Definition: Chara.cs:6494
bool isDead
Definition: Chara.cs:391
override void LookAt(Card c)
Definition: Chara.cs:3602
Definition: ConDim.cs:2
static Thing MakeBloodMeal(Chara sucker, Chara feeder, bool msg=true)
Definition: CraftUtil.cs:154
Definition: DNA.cs:8
void MakeSlimeFood(Chara c)
Definition: DNA.cs:708
Element GetInvalidFeat(Chara c)
Definition: DNA.cs:662
Type
Definition: DNA.cs:10
List< int > vals
Definition: DNA.cs:24
Element GetInvalidAction(Chara c)
Definition: DNA.cs:688
Definition: EClass.cs:6
static Game game
Definition: EClass.cs:9
static Map _map
Definition: EClass.cs:19
static int rnd(long a)
Definition: EClass.cs:59
static SourceManager sources
Definition: EClass.cs:43
static int rndHalf(int a)
Definition: EClass.cs:97
static Player player
Definition: EClass.cs:13
static Chara pc
Definition: EClass.cs:15
void ModExp(int ele, float a, bool chain=false)
Element ModTempPotential(int ele, int v, int threshMsg=0)
int ValueWithoutLink(int ele)
Element ModBase(int ele, int v)
List< Element > ListBestAttributes()
static void Proc(Chara c, Thing food, bool consume=true)
Definition: FoodEffect.cs:12
ReligionManager religions
Definition: Game.cs:159
List< Chara > charas
Definition: Map.cs:81
Definition: Msg.cs:5
static string Say(string idLang, string ref1, string ref2=null, string ref3=null, string ref4=null)
Definition: Msg.cs:58
long brush
Definition: Player.cs:189
long kimo
Definition: Player.cs:165
long mama
Definition: Player.cs:237
void ModKarma(int a)
Definition: Player.cs:2610
Stats stats
Definition: Player.cs:1083
Thing DropReward(Thing t, bool silent=false)
Definition: Player.cs:2642
bool TryWitnessCrime(Chara criminal, Chara target=null, int radius=4, Func< Chara, bool > funcWitness=null)
Definition: Point.cs:873
ReligionMoonShadow MoonShadow
SourceElement elements
virtual void Mod(int a)
Definition: Stats.cs:135
virtual int value
Definition: Stats.cs:56
virtual int max
Definition: Stats.cs:68
static TargetTypeChara Chara
Definition: TargetType.cs:17
Thing Find(int uid)
static Thing Create(string id, int idMat=-1, int lv=-1)
Definition: ThingGen.cs:53
Definition: Thing.cs:8
static bool IsTamePossible(Chara c)