Elin Decompiled Documentation EA 23.316 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 maxProgress = ((this.variation == Variation.NTR || this.variation == Variation.Bloodsuck) ? 10 : 25);
114 if (Type == FuckType.tame)
115 {
116 cc.SetTempHand(1104, -1);
117 }
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 int i;
137 for (i = 0; i < maxProgress; i++)
138 {
139 progress = i;
140 if (owner.host != target)
141 {
142 yield return DoGoto(target.pos, destDist, ignoreConnection: true);
143 }
144 switch (Type)
145 {
146 case FuckType.fuck:
147 {
148 if (this.variation == Variation.NTR)
149 {
150 cc.Say("ntr", cc, tc);
151 }
152 cc.LookAt(tc);
153 tc.LookAt(cc);
154 switch (i % 4)
155 {
156 case 0:
157 cc.renderer.PlayAnime(AnimeID.Attack, tc);
158 if (EClass.rnd(3) == 0 || sell)
159 {
160 if (cc.IsPC && this.variation == Variation.MotherMilk)
161 {
162 EClass.player.forceTalk = true;
163 }
164 cc.Talk((this.variation == Variation.MotherMilk) ? "play_baby" : "tail");
165 }
166 break;
167 case 2:
168 tc.renderer.PlayAnime(AnimeID.Shiver);
169 if (EClass.rnd(3) == 0)
170 {
171 if (tc.IsPC && this.variation == Variation.MotherMilk)
172 {
173 EClass.player.forceTalk = true;
174 }
175 tc.Talk((this.variation == Variation.MotherMilk) ? "play_mama" : "tailed");
176 }
177 break;
178 }
179 int num = ((cc.HasElement(1216) || tc.HasElement(1216)) ? 100 : 20);
180 if (this.variation == Variation.MotherMilk)
181 {
182 num *= 5;
183 }
184 if (num > EClass.rnd(100))
185 {
186 ((EClass.rnd(2) == 0) ? cc : tc).PlayEffect("love2");
187 }
188 if (this.variation == Variation.Slime)
189 {
191 }
192 if (EClass.rnd(3) == 0 || sell)
193 {
194 if (this.variation == Variation.Slime)
195 {
196 target.AddCondition<ConSupress>(200, force: true);
197 }
198 else
199 {
200 target.AddCondition<ConWait>(50, force: true);
201 }
202 }
203 if (this.variation == Variation.Bloodsuck || this.variation == Variation.Slime)
204 {
205 owner.pos.TryWitnessCrime(cc, tc, 4, (Chara c) => EClass.rnd(cc.HasCondition<ConTransmuteBat>() ? 50 : 20) == 0);
206 }
207 break;
208 }
209 case FuckType.tame:
210 if (i == 0 || i == 10)
211 {
212 cc.Talk("goodBoy");
213 }
214 if (i % 5 == 0)
215 {
216 tc.PlaySound("brushing");
217 }
218 if (cc.Tool != null && cc.Tool.Evalue(770) > 0)
219 {
220 foreach (Chara item in cc.pos.ListCharasInRadius(cc, 2 + cc.Tool.Evalue(770) / 10, (Chara c) => true))
221 {
222 if (cc == tc || item != cc)
223 {
224 Brush(item);
225 if (cc.isDead)
226 {
227 break;
228 }
229 }
230 }
231 }
232 else
233 {
234 Brush(tc);
235 }
236 break;
237 }
238 }
239 Finish();
240 void Brush(Chara c)
241 {
242 if (c.interest >= 0)
243 {
244 int num2 = 100;
245 if (!c.IsAnimal)
246 {
247 num2 += 50;
248 }
249 if (c.IsHuman)
250 {
251 num2 += 50;
252 }
253 if (c.IsInCombat)
254 {
255 num2 += 100;
256 }
257 if (c == cc)
258 {
259 num2 = 50;
260 }
261 else if (c.affinity.CurrentStage < Affinity.Stage.Respected && EClass.rnd((c.IsPCFaction ? 30 : 10) * 100 / num2) == 0)
262 {
263 tc.AddCondition<ConFear>(60);
264 }
265 c.interest -= (c.IsPCFaction ? 20 : (2 * num2 / 100));
266 if (i % 5 == 0)
267 {
268 int num3 = 0;
269 int num4 = cc.CHA / 2 + cc.Evalue(237) - c.CHA * 2;
270 if (EClass.rnd(cc.CHA / 2 + cc.Evalue(237)) > EClass.rnd(c.CHA * num2 / 100))
271 {
272 num3 = 5 + Mathf.Clamp(num4 / 20, 0, 20);
273 }
274 else
275 {
276 num3 = -5 + ((!tc.IsPCFaction) ? Mathf.Clamp(num4 / 10, -30, 0) : 0);
277 fails++;
278 }
279 int num5 = 20;
281 {
282 num3 = ((EClass.rnd(3) == 0) ? 4 : 0);
283 num5 = 10;
284 }
285 totalAffinity += num3;
286 c.ModAffinity(EClass.pc, num3, show: true, showOnlyEmo: true);
287 cc.elements.ModExp(237, num5);
288 if (EClass.rnd(4) == 0)
289 {
290 cc.stamina.Mod(-1);
291 }
292 }
293 if (c.interest < 0 && c != tc)
294 {
295 Msg.Say("tame_end", c);
296 c.PlaySound("groomed");
297 c.PlayEffect("heal_tick");
298 c.hygiene.Mod(15);
299 if (cc == EClass.pc)
300 {
302 }
303 }
304 }
305 }
306 }
307
308 public void Finish()
309 {
310 Chara chara = (sell ? target : owner);
311 Chara chara2 = (sell ? owner : target);
312 if (chara.isDead || chara2.isDead)
313 {
314 return;
315 }
316 bool flag = EClass.rnd(2) == 0;
317 switch (Type)
318 {
319 case FuckType.fuck:
320 {
321 switch (variation)
322 {
323 case Variation.Bloodsuck:
324 case Variation.Slime:
325 if (EClass.rnd(2) == 0)
326 {
327 chara2.AddCondition<ConConfuse>(500);
328 }
329 if (EClass.rnd(2) == 0)
330 {
331 chara2.AddCondition<ConDim>(500);
332 }
333 if (EClass.rnd(2) == 0)
334 {
335 chara2.AddCondition<ConParalyze>(500);
336 }
337 if (EClass.rnd(10) == 0)
338 {
339 chara2.AddCondition<ConInsane>(100 + EClass.rnd(100));
340 }
341 break;
342 default:
343 {
344 for (int i = 0; i < 2; i++)
345 {
346 Chara chara3 = ((i == 0) ? chara : chara2);
347 chara3.RemoveCondition<ConDrunk>();
348 if (EClass.rnd(15) == 0 && !chara3.HasElement(1216))
349 {
350 chara3.AddCondition<ConDisease>(200);
351 }
352 chara3.ModExp(77, 250);
353 chara3.ModExp(71, 250);
354 chara3.ModExp(75, 250);
355 }
356 if (!chara2.HasElement(1216))
357 {
358 if (EClass.rnd(5) == 0)
359 {
360 chara2.AddCondition<ConParalyze>(500);
361 }
362 if (EClass.rnd(3) == 0)
363 {
364 chara2.AddCondition<ConInsane>(100 + EClass.rnd(100));
365 }
366 }
367 break;
368 }
369 case Variation.MotherMilk:
370 break;
371 }
372 chara.Talk("tail_after");
373 bool flag3 = false;
374 if (variation == Variation.Succubus)
375 {
376 chara.ShowEmo(Emo.love);
377 chara2.ShowEmo(Emo.love);
378 EClass.player.forceTalk = true;
379 chara2.Talk("seduced");
380 }
381 else if (variation != Variation.NTR && variation != Variation.Bloodsuck && variation != Variation.Slime && variation != Variation.MotherMilk && chara != EClass.pc)
382 {
384 {
385 flag = true;
386 }
387 else
388 {
389 int num3 = CalcMoney.Whore(chara2, chara);
390 Chara chara4 = chara;
391 Chara chara5 = chara2;
392 if (variation == Variation.Bitch)
393 {
394 chara = chara5;
395 chara2 = chara4;
396 }
397 Debug.Log("buyer:" + chara.Name + " seller:" + chara2.Name + " money:" + num3);
398 if (!chara.IsPC)
399 {
400 chara.ModCurrency(EClass.rndHalf(num3));
401 }
402 if (!chara2.IsPC && chara.GetCurrency() < num3 && EClass.rnd(2) == 0)
403 {
404 num3 = chara.GetCurrency();
405 }
406 Debug.Log("money:" + num3 + " buyer:" + chara.GetCurrency());
407 if (chara.GetCurrency() >= num3)
408 {
409 chara.Talk("tail_pay");
410 }
411 else
412 {
413 chara.Talk("tail_nomoney");
414 num3 = chara.GetCurrency();
415 chara2.Say("angry", chara2);
416 chara2.Talk("angry");
417 flag = (sell ? true : false);
418 if (EClass.rnd(chara.IsPC ? 2 : 20) == 0)
419 {
420 flag3 = true;
421 }
422 }
423 chara.ModCurrency(-num3);
424 if (chara2 == EClass.pc)
425 {
426 if (num3 > 0)
427 {
430 }
431 }
432 else
433 {
434 int num4 = (chara2.CHA * 10 + 100) / ((chara2.IsPCFaction && chara2.memberType == FactionMemberType.Default) ? 1 : 10);
435 if (chara2.GetCurrency() - num4 > 0)
436 {
437 chara2.c_allowance += num3;
438 }
439 else
440 {
441 chara2.ModCurrency(num3);
442 }
443 }
444 chara = chara4;
445 chara2 = chara5;
446 }
447 }
448 if (flag3)
449 {
450 chara2.DoHostileAction(chara);
451 }
452 if (variation == Variation.Bloodsuck)
453 {
454 int value = chara.hunger.value;
455 Thing food = CraftUtil.MakeBloodMeal(chara, chara2);
456 FoodEffect.Proc(chara, food, consume: false);
457 chara2.AddCondition<ConBleed>(EClass.rndHalf(value * 10));
458 }
459 else
460 {
461 if (chara.IsPCParty || chara2.IsPCParty)
462 {
463 chara.stamina.Mod(-5 - EClass.rnd(chara.stamina.max / 10 + ((variation == Variation.Succubus || variation == Variation.MotherMilk) ? StaminaCost(chara2, chara) : 0) + 1));
464 chara2.stamina.Mod(-5 - EClass.rnd(chara2.stamina.max / 20 + ((variation == Variation.Succubus || variation == Variation.MotherMilk) ? StaminaCost(chara, chara2) : 0) + 1));
465 }
466 SuccubusExp(chara, chara2);
467 SuccubusExp(chara2, chara);
468 }
469 chara2.ModAffinity(chara, (flag || (chara.IsPC && chara2.affinity.CanSleepBeside() && EClass.rnd(10) != 0)) ? 10 : (-5));
470 if (chara == EClass.pc || chara2 == EClass.pc)
471 {
472 if (variation == Variation.MotherMilk)
473 {
476 {
477 EClass.pc.SetFeat(1291, 1, msg: true);
478 }
479 }
480 else
481 {
483 }
484 }
485 switch (variation)
486 {
487 case Variation.NTR:
488 {
489 Thing thing2 = chara2.things.Find<TraitDreamBug>();
490 if (thing2 != null)
491 {
492 thing2.ModNum(-1);
493 if (chara.IsPC)
494 {
495 Msg.Say("dream_spell", EClass.sources.elements.map[9156].GetName().ToLowerInvariant());
496 EClass.pc.GainAbility(9156, EClass.rnd(2) + 1);
497 }
498 }
499 if (!chara.HasElement(1239) || chara2.HasElement(1216))
500 {
501 break;
502 }
503 if (chara2.HasElement(758))
504 {
505 if (chara.ExistsOnMap)
506 {
507 chara.stamina.Mod(-1000000);
508 }
509 }
510 else if (chara2.ExistsOnMap)
511 {
512 chara2.stamina.Mod((!chara2.IsPCFaction) ? (-10000) : (chara2.IsPC ? (-25) : (-50)));
513 }
514 break;
515 }
516 case Variation.Bloodsuck:
517 if (chara2.HasElement(758) && chara.ExistsOnMap)
518 {
519 chara.stamina.Mod(-1000000);
520 }
521 break;
522 case Variation.Slime:
523 {
524 Thing thing = null;
525 for (int j = 0; j < 10; j++)
526 {
527 for (int k = 0; k < 20; k++)
528 {
529 thing = target.MakeGene((j < 3) ? DNA.Type.Superior : DNA.Type.Default);
530 if (EClass.rnd(10) < chara.body.slots.Count - 2)
531 {
532 break;
533 }
534 if (thing.c_DNA.GetBodySlot() != -1)
535 {
536 if (chara.body.GetSlot(35, onlyEmpty: false) == null && EClass.rnd(2) == 0)
537 {
538 thing.c_DNA.ReplaceBodySlot(35);
539 }
540 else if (chara.body.GetSlot(32, onlyEmpty: false) == null && EClass.rnd(2) == 0)
541 {
542 thing.c_DNA.ReplaceBodySlot(32);
543 }
544 break;
545 }
546 }
547 thing.c_DNA.MakeSlimeFood(chara);
548 if (thing.c_DNA.GetInvalidAction(chara) != null || thing.c_DNA.GetInvalidFeat(chara) != null)
549 {
550 thing.c_DNA.vals.Clear();
551 thing.c_DNA.type = DNA.Type.Inferior;
552 continue;
553 }
554 thing.MakeFoodFrom(target);
555 thing.elements.ModBase(10, 20);
556 thing.elements.ModBase(18, 100);
557 break;
558 }
559 FoodEffect.Proc(chara, thing, consume: false);
560 chara.elements.ModExp(6608, 1000f);
561 break;
562 }
563 }
565 {
566 chara.Say("tender_hug", chara, chara2);
567 }
568 break;
569 }
570 case FuckType.tame:
571 {
572 int num = ((!chara2.IsPCFaction) ? (chara2.IsHuman ? 10 : 5) : (chara2.IsHuman ? 5 : 0));
573 Msg.Say("tame_end", target);
574 target.PlaySound("groomed");
575 target.PlayEffect("heal_tick");
576 target.hygiene.Mod(15);
577 if (chara == EClass.pc)
578 {
580 }
581 if (target == owner)
582 {
583 break;
584 }
585 if (totalAffinity > 0)
586 {
587 chara.Say("brush_success", target, owner);
588 }
589 else
590 {
591 chara.Say("brush_fail", target, owner);
592 num *= 5;
593 }
595 bool flag2 = num2 && chara2.affinity.CanInvite() && chara2.GetBestAttribute() < EClass.pc.CHA;
596 if (num2)
597 {
598 if (flag2)
599 {
600 chara.Say("tame_success", owner, target);
601 chara2.MakeAlly();
602 }
603 else
604 {
605 chara.Say("tame_fail", chara, chara2);
606 }
607 }
608 if (fails > 0 && num > EClass.rnd(100))
609 {
610 chara2.DoHostileAction(chara);
611 chara2.calmCheckTurn *= 3;
612 }
613 break;
614 }
615 }
616 static int StaminaCost(Chara c1, Chara c2)
617 {
618 return (int)Mathf.Max(10f * (float)c1.END / (float)Mathf.Max(c2.END, 1), 0f);
619 }
620 void SuccubusExp(Chara c, Chara tg)
621 {
622 if (!c.HasElement(1216) || c.isDead)
623 {
624 return;
625 }
626 foreach (Element item in tg.elements.ListBestAttributes())
627 {
628 if (c.elements.ValueWithoutLink(item.id) < item.ValueWithoutLink)
629 {
630 c.elements.ModTempPotential(item.id, Mathf.Min(EClass.rnd(item.ValueWithoutLink - c.elements.ValueWithoutLink(item.id) / 5), (variation == Variation.MotherMilk) ? 100 : 500));
631 c.Say("succubus_exp", c, item.Name.ToLower());
632 break;
633 }
634 }
635 }
636 }
637}
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:308
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:2326
int GetBestAttribute()
Definition: Card.cs:2747
virtual Chara Chara
Definition: Card.cs:2122
ElementContainerCard elements
Definition: Card.cs:42
int END
Definition: Card.cs:2391
SoundSource PlaySound(string id, float v=1f, bool spatial=true)
Definition: Card.cs:6543
Thing Tool
Definition: Card.cs:2464
void Talk(string idTopic, string ref1=null, string ref2=null, bool forceSync=false)
Definition: Card.cs:7103
string Name
Definition: Card.cs:2191
int CHA
Definition: Card.cs:2401
bool ExistsOnMap
Definition: Card.cs:2137
Thing SetNum(int a)
Definition: Card.cs:3653
int GetCurrency(string id="money")
Definition: Card.cs:4133
Point pos
Definition: Card.cs:60
Effect PlayEffect(string id, bool useRenderPos=true, float range=0f, Vector3 fix=default(Vector3))
Definition: Card.cs:6577
void ShowEmo(Emo _emo=Emo.none, float duration=0f, bool skipSame=true)
Definition: Card.cs:6511
void ModCurrency(int a, string id="money")
Definition: Card.cs:4119
Card MakeFoodFrom(string _id)
Definition: Card.cs:5750
ThingContainer things
Definition: Card.cs:39
int Evalue(int ele)
Definition: Card.cs:2688
int Dist(Card c)
Definition: Card.cs:8096
void ModExp(string alias, int a)
Definition: Card.cs:2765
DNA c_DNA
Definition: Card.cs:1933
void ModNum(int a, bool notify=true)
Definition: Card.cs:3673
CardRenderer renderer
Definition: Card.cs:64
bool HasElement(int ele, bool includeNagative=false)
Definition: Card.cs:6285
void Say(string lang, string ref1=null, string ref2=null)
Definition: Card.cs:7221
BodySlot GetSlot(Thing t, bool onlyEmpty=false, bool secondSlot=false)
Definition: CharaBody.cs:369
Definition: Chara.cs:10
override bool IsAliveInCurrentZone
Definition: Chara.cs:567
CharaBody body
Definition: Chara.cs:94
Condition AddCondition(string id, int p=100, bool force=false)
Definition: Chara.cs:9647
void ModAffinity(Chara c, int a, bool show=true, bool showOnlyEmo=false)
Definition: Chara.cs:8236
override bool IsPC
Definition: Chara.cs:630
Chara host
Definition: Chara.cs:33
void SetFeat(int id, int value=1, bool msg=false)
Definition: Chara.cs:10286
override bool IsPCParty
Definition: Chara.cs:633
Stats hygiene
Definition: Chara.cs:1187
int interest
Definition: Chara.cs:321
bool IsInCombat
Definition: Chara.cs:887
bool HasCondition(string alias)
Definition: Chara.cs:9808
Stats hunger
Definition: Chara.cs:1177
bool IsHuman
Definition: Chara.cs:902
bool IsAnimal
Definition: Chara.cs:890
override bool IsPCFaction
Definition: Chara.cs:689
override bool IsDeadOrSleeping
Definition: Chara.cs:579
void MakeAlly(bool msg=true)
Definition: Chara.cs:2396
void GainAbility(int ele, int mtp=100, Thing origin=null)
Definition: Chara.cs:10486
FactionMemberType memberType
Definition: Chara.cs:46
Stats stamina
Definition: Chara.cs:1181
void SetTempHand(int right=0, int left=0)
Definition: Chara.cs:6959
bool IsHomeMember()
Definition: Chara.cs:6824
Thing MakeGene(DNA.Type? type=null)
Definition: Chara.cs:8499
Affinity affinity
Definition: Chara.cs:318
Religion faith
Definition: Chara.cs:443
bool IsMarried
Definition: Chara.cs:615
void DoHostileAction(Card _tg, bool immediate=false)
Definition: Chara.cs:6577
bool isDead
Definition: Chara.cs:393
override void LookAt(Card c)
Definition: Chara.cs:3670
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:732
Element GetInvalidFeat(Chara c)
Definition: DNA.cs:662
Type
Definition: DNA.cs:10
int GetBodySlot()
Definition: DNA.cs:708
List< int > vals
Definition: DNA.cs:24
void ReplaceBodySlot(int slot)
Definition: DNA.cs:721
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
List< Chara > ListCharasInRadius(Chara cc, int dist, Func< Chara, bool > func, bool onlyVisible=true)
Definition: Point.cs:1226
bool TryWitnessCrime(Chara criminal, Chara target=null, int radius=4, Func< Chara, bool > funcWitness=null)
Definition: Point.cs:878
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)