Elin Decompiled Documentation EA 23.331 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 if (!owner.IsPC)
198 {
199 int num2 = EClass.rndHalf(target.MaxHP / (target.IsPowerful ? 100 : 10)) + 1;
200 owner.HealHP(num2);
201 target.DamageHP(num2, AttackSource.Condition, owner);
202 }
203 }
204 else
205 {
206 target.AddCondition<ConWait>(50, force: true);
207 }
208 }
209 if (this.variation == Variation.Bloodsuck || this.variation == Variation.Slime)
210 {
211 owner.pos.TryWitnessCrime(cc, tc, 4, (Chara c) => EClass.rnd(cc.HasCondition<ConTransmuteBat>() ? 50 : 20) == 0);
212 }
213 break;
214 }
215 case FuckType.tame:
216 if (i == 0 || i == 10)
217 {
218 cc.Talk("goodBoy");
219 }
220 if (i % 5 == 0)
221 {
222 tc.PlaySound("brushing");
223 }
224 if (cc.Tool != null && cc.Tool.Evalue(770) > 0)
225 {
226 foreach (Chara item in cc.pos.ListCharasInRadius(cc, 2 + cc.Tool.Evalue(770) / 10, (Chara c) => true))
227 {
228 if (cc == tc || item != cc)
229 {
230 Brush(item);
231 if (cc.isDead)
232 {
233 break;
234 }
235 }
236 }
237 }
238 else
239 {
240 Brush(tc);
241 }
242 break;
243 }
244 }
245 Finish();
246 void Brush(Chara c)
247 {
248 if (c.interest >= 0)
249 {
250 int num3 = 100;
251 if (!c.IsAnimal)
252 {
253 num3 += 50;
254 }
255 if (c.IsHuman)
256 {
257 num3 += 50;
258 }
259 if (c.IsInCombat)
260 {
261 num3 += 100;
262 }
263 if (c == cc)
264 {
265 num3 = 50;
266 }
267 else if (c.affinity.CurrentStage < Affinity.Stage.Respected && EClass.rnd((c.IsPCFaction ? 30 : 10) * 100 / num3) == 0)
268 {
269 tc.AddCondition<ConFear>(60);
270 }
271 c.interest -= (c.IsPCFaction ? 20 : (2 * num3 / 100));
272 if (i % 5 == 0)
273 {
274 int num4 = 0;
275 int num5 = cc.CHA / 2 + cc.Evalue(237) - c.CHA * 2;
276 if (EClass.rnd(cc.CHA / 2 + cc.Evalue(237)) > EClass.rnd(c.CHA * num3 / 100))
277 {
278 num4 = 5 + Mathf.Clamp(num5 / 20, 0, 20);
279 }
280 else
281 {
282 num4 = -5 + ((!tc.IsPCFaction) ? Mathf.Clamp(num5 / 10, -30, 0) : 0);
283 fails++;
284 }
285 int num6 = 20;
287 {
288 num4 = ((EClass.rnd(3) == 0) ? 4 : 0);
289 num6 = 10;
290 }
291 totalAffinity += num4;
292 c.ModAffinity(EClass.pc, num4, show: true, showOnlyEmo: true);
293 cc.elements.ModExp(237, num6);
294 if (EClass.rnd(4) == 0)
295 {
296 cc.stamina.Mod(-1);
297 }
298 }
299 if (c.interest < 0 && c != tc)
300 {
301 Msg.Say("tame_end", c);
302 c.PlaySound("groomed");
303 c.PlayEffect("heal_tick");
304 c.hygiene.Mod(15);
305 if (cc == EClass.pc)
306 {
308 }
309 }
310 }
311 }
312 }
313
314 public void Finish()
315 {
316 Chara chara = (sell ? target : owner);
317 Chara chara2 = (sell ? owner : target);
318 if (chara.isDead || chara2.isDead)
319 {
320 return;
321 }
322 bool flag = EClass.rnd(2) == 0;
323 switch (Type)
324 {
325 case FuckType.fuck:
326 {
327 switch (variation)
328 {
329 case Variation.Bloodsuck:
330 case Variation.Slime:
331 if (EClass.rnd(2) == 0)
332 {
333 chara2.AddCondition<ConConfuse>(500);
334 }
335 if (EClass.rnd(2) == 0)
336 {
337 chara2.AddCondition<ConDim>(500);
338 }
339 if (EClass.rnd(2) == 0)
340 {
341 chara2.AddCondition<ConParalyze>(500);
342 }
343 if (EClass.rnd(10) == 0)
344 {
345 chara2.AddCondition<ConInsane>(100 + EClass.rnd(100));
346 }
347 break;
348 default:
349 {
350 for (int i = 0; i < 2; i++)
351 {
352 Chara chara3 = ((i == 0) ? chara : chara2);
353 chara3.RemoveCondition<ConDrunk>();
354 if (EClass.rnd(15) == 0 && !chara3.HasElement(1216))
355 {
356 chara3.AddCondition<ConDisease>(200);
357 }
358 chara3.ModExp(77, 250);
359 chara3.ModExp(71, 250);
360 chara3.ModExp(75, 250);
361 }
362 if (!chara2.HasElement(1216))
363 {
364 if (EClass.rnd(5) == 0)
365 {
366 chara2.AddCondition<ConParalyze>(500);
367 }
368 if (EClass.rnd(3) == 0)
369 {
370 chara2.AddCondition<ConInsane>(100 + EClass.rnd(100));
371 }
372 }
373 break;
374 }
375 case Variation.MotherMilk:
376 break;
377 }
378 chara.Talk("tail_after");
379 bool flag3 = false;
380 if (variation == Variation.Succubus)
381 {
382 chara.ShowEmo(Emo.love);
383 chara2.ShowEmo(Emo.love);
384 EClass.player.forceTalk = true;
385 chara2.Talk("seduced");
386 }
387 else if (variation != Variation.NTR && variation != Variation.Bloodsuck && variation != Variation.Slime && variation != Variation.MotherMilk && chara != EClass.pc)
388 {
390 {
391 flag = true;
392 }
393 else
394 {
395 int num3 = CalcMoney.Whore(chara2, chara);
396 Chara chara4 = chara;
397 Chara chara5 = chara2;
398 if (variation == Variation.Bitch)
399 {
400 chara = chara5;
401 chara2 = chara4;
402 }
403 Debug.Log("buyer:" + chara.Name + " seller:" + chara2.Name + " money:" + num3);
404 if (!chara.IsPC)
405 {
406 chara.ModCurrency(EClass.rndHalf(num3));
407 }
408 if (!chara2.IsPC && chara.GetCurrency() < num3 && EClass.rnd(2) == 0)
409 {
410 num3 = chara.GetCurrency();
411 }
412 Debug.Log("money:" + num3 + " buyer:" + chara.GetCurrency());
413 if (chara.GetCurrency() >= num3)
414 {
415 chara.Talk("tail_pay");
416 }
417 else
418 {
419 chara.Talk("tail_nomoney");
420 num3 = chara.GetCurrency();
421 chara2.Say("angry", chara2);
422 chara2.Talk("angry");
423 flag = (sell ? true : false);
424 if (EClass.rnd(chara.IsPC ? 2 : 20) == 0)
425 {
426 flag3 = true;
427 }
428 }
429 chara.ModCurrency(-num3);
430 if (chara2 == EClass.pc)
431 {
432 if (num3 > 0)
433 {
436 }
437 }
438 else
439 {
440 int num4 = (chara2.CHA * 10 + 100) / ((chara2.IsPCFaction && chara2.memberType == FactionMemberType.Default) ? 1 : 10);
441 if (chara2.GetCurrency() - num4 > 0)
442 {
443 chara2.c_allowance += num3;
444 }
445 else
446 {
447 chara2.ModCurrency(num3);
448 }
449 }
450 chara = chara4;
451 chara2 = chara5;
452 }
453 }
454 if (flag3)
455 {
456 chara2.DoHostileAction(chara);
457 }
458 if (variation == Variation.Bloodsuck)
459 {
460 int value = chara.hunger.value;
461 Thing food = CraftUtil.MakeBloodMeal(chara, chara2);
462 FoodEffect.Proc(chara, food, consume: false);
463 chara2.AddCondition<ConBleed>(EClass.rndHalf(value * 10));
464 }
465 else
466 {
467 if (chara.IsPCParty || chara2.IsPCParty)
468 {
469 chara.stamina.Mod(-5 - EClass.rnd(chara.stamina.max / 10 + ((variation == Variation.Succubus || variation == Variation.MotherMilk) ? StaminaCost(chara2, chara) : 0) + 1));
470 chara2.stamina.Mod(-5 - EClass.rnd(chara2.stamina.max / 20 + ((variation == Variation.Succubus || variation == Variation.MotherMilk) ? StaminaCost(chara, chara2) : 0) + 1));
471 }
472 SuccubusExp(chara, chara2);
473 SuccubusExp(chara2, chara);
474 }
475 chara2.ModAffinity(chara, (flag || (chara.IsPC && chara2.affinity.CanSleepBeside() && EClass.rnd(10) != 0)) ? 10 : (-5));
476 if (chara == EClass.pc || chara2 == EClass.pc)
477 {
478 if (variation == Variation.MotherMilk)
479 {
482 {
483 EClass.pc.SetFeat(1291, 1, msg: true);
484 }
485 }
486 else
487 {
489 }
490 }
491 switch (variation)
492 {
493 case Variation.NTR:
494 {
495 Thing thing2 = chara2.things.Find<TraitDreamBug>();
496 if (thing2 != null)
497 {
498 thing2.ModNum(-1);
499 if (chara.IsPC)
500 {
501 Msg.Say("dream_spell", EClass.sources.elements.map[9156].GetName().ToLowerInvariant());
502 EClass.pc.GainAbility(9156, EClass.rnd(2) + 1);
503 }
504 }
505 if (!chara.HasElement(1239) || chara2.HasElement(1216))
506 {
507 break;
508 }
509 if (chara2.HasElement(758))
510 {
511 if (chara.ExistsOnMap)
512 {
513 chara.stamina.Mod(-1000000);
514 }
515 }
516 else if (chara2.ExistsOnMap)
517 {
518 chara2.stamina.Mod((!chara2.IsPCFaction) ? (-10000) : (chara2.IsPC ? (-25) : (-50)));
519 }
520 break;
521 }
522 case Variation.Bloodsuck:
523 if (chara2.HasElement(758) && chara.ExistsOnMap)
524 {
525 chara.stamina.Mod(-1000000);
526 }
527 break;
528 case Variation.Slime:
529 {
530 Thing thing = null;
531 for (int j = 0; j < 10; j++)
532 {
533 for (int k = 0; k < 20; k++)
534 {
535 thing = target.MakeGene((j < 3) ? DNA.Type.Superior : DNA.Type.Default);
536 if (EClass.rnd(10) < chara.body.slots.Count - 2)
537 {
538 break;
539 }
540 if (thing.c_DNA.GetBodySlot() != -1)
541 {
542 if (chara.body.GetSlot(35, onlyEmpty: false) == null && EClass.rnd(2) == 0)
543 {
544 thing.c_DNA.ReplaceBodySlot(35);
545 }
546 else if (chara.body.GetSlot(32, onlyEmpty: false) == null && EClass.rnd(2) == 0)
547 {
548 thing.c_DNA.ReplaceBodySlot(32);
549 }
550 break;
551 }
552 }
553 thing.c_DNA.MakeSlimeFood(chara);
554 if (thing.c_DNA.GetInvalidAction(chara) != null || thing.c_DNA.GetInvalidFeat(chara) != null)
555 {
556 thing.c_DNA.vals.Clear();
557 thing.c_DNA.type = DNA.Type.Inferior;
558 continue;
559 }
560 thing.MakeFoodFrom(target);
561 thing.elements.ModBase(10, 20);
562 thing.elements.ModBase(18, 100);
563 break;
564 }
565 FoodEffect.Proc(chara, thing, consume: false);
566 chara.elements.ModExp(6608, 1000f);
567 break;
568 }
569 }
571 {
572 chara.Say("tender_hug", chara, chara2);
573 }
574 break;
575 }
576 case FuckType.tame:
577 {
578 int num = ((!chara2.IsPCFaction) ? (chara2.IsHuman ? 10 : 5) : (chara2.IsHuman ? 5 : 0));
579 Msg.Say("tame_end", target);
580 target.PlaySound("groomed");
581 target.PlayEffect("heal_tick");
582 target.hygiene.Mod(15);
583 if (chara == EClass.pc)
584 {
586 }
587 if (target == owner)
588 {
589 break;
590 }
591 if (totalAffinity > 0)
592 {
593 chara.Say("brush_success", target, owner);
594 }
595 else
596 {
597 chara.Say("brush_fail", target, owner);
598 num *= 5;
599 }
601 bool flag2 = num2 && chara2.affinity.CanInvite() && chara2.GetBestAttribute() < EClass.pc.CHA;
602 if (num2)
603 {
604 if (flag2)
605 {
606 chara.Say("tame_success", owner, target);
607 chara2.MakeAlly();
608 }
609 else
610 {
611 chara.Say("tame_fail", chara, chara2);
612 }
613 }
614 if (fails > 0 && num > EClass.rnd(100))
615 {
616 chara2.DoHostileAction(chara);
617 chara2.calmCheckTurn *= 3;
618 }
619 break;
620 }
621 }
622 static int StaminaCost(Chara c1, Chara c2)
623 {
624 return (int)Mathf.Max(10f * (float)c1.END / (float)Mathf.Max(c2.END, 1), 0f);
625 }
626 void SuccubusExp(Chara c, Chara tg)
627 {
628 if (!c.HasElement(1216) || c.isDead)
629 {
630 return;
631 }
632 foreach (Element item in tg.elements.ListBestAttributes())
633 {
634 if (c.elements.ValueWithoutLink(item.id) < item.ValueWithoutLink)
635 {
636 c.elements.ModTempPotential(item.id, Mathf.Min(EClass.rnd(item.ValueWithoutLink - c.elements.ValueWithoutLink(item.id) / 5), (variation == Variation.MotherMilk) ? 100 : 500));
637 c.Say("succubus_exp", c, item.Name.ToLower());
638 break;
639 }
640 }
641 }
642 }
643}
AnimeID
Definition: AnimeID.cs:2
AttackSource
Definition: AttackSource.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:314
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:2342
int GetBestAttribute()
Definition: Card.cs:2763
virtual Chara Chara
Definition: Card.cs:2122
ElementContainerCard elements
Definition: Card.cs:42
int END
Definition: Card.cs:2407
SoundSource PlaySound(string id, float v=1f, bool spatial=true)
Definition: Card.cs:6613
Thing Tool
Definition: Card.cs:2480
void Talk(string idTopic, string ref1=null, string ref2=null, bool forceSync=false)
Definition: Card.cs:7173
string Name
Definition: Card.cs:2191
int CHA
Definition: Card.cs:2417
bool ExistsOnMap
Definition: Card.cs:2137
Thing SetNum(int a)
Definition: Card.cs:3669
int GetCurrency(string id="money")
Definition: Card.cs:4149
Point pos
Definition: Card.cs:60
Effect PlayEffect(string id, bool useRenderPos=true, float range=0f, Vector3 fix=default(Vector3))
Definition: Card.cs:6647
virtual void HealHP(long a, HealSource origin=HealSource.None)
Definition: Card.cs:4181
void ShowEmo(Emo _emo=Emo.none, float duration=0f, bool skipSame=true)
Definition: Card.cs:6581
void ModCurrency(int a, string id="money")
Definition: Card.cs:4135
bool IsPowerful
Definition: Card.cs:2146
void DamageHP(long dmg, AttackSource attackSource=AttackSource.None, Card origin=null)
Definition: Card.cs:4269
Card MakeFoodFrom(string _id)
Definition: Card.cs:5805
ThingContainer things
Definition: Card.cs:39
int Evalue(int ele)
Definition: Card.cs:2704
int Dist(Card c)
Definition: Card.cs:8172
void ModExp(string alias, int a)
Definition: Card.cs:2781
DNA c_DNA
Definition: Card.cs:1933
void ModNum(int a, bool notify=true)
Definition: Card.cs:3689
CardRenderer renderer
Definition: Card.cs:64
bool HasElement(int ele, bool includeNagative=false)
Definition: Card.cs:6351
void Say(string lang, string ref1=null, string ref2=null)
Definition: Card.cs:7291
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:9773
void ModAffinity(Chara c, int a, bool show=true, bool showOnlyEmo=false)
Definition: Chara.cs:8344
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:10428
override bool IsPCParty
Definition: Chara.cs:633
Stats hygiene
Definition: Chara.cs:1211
int interest
Definition: Chara.cs:321
bool IsInCombat
Definition: Chara.cs:911
bool HasCondition(string alias)
Definition: Chara.cs:9938
Stats hunger
Definition: Chara.cs:1201
bool IsHuman
Definition: Chara.cs:926
bool IsAnimal
Definition: Chara.cs:914
override bool IsPCFaction
Definition: Chara.cs:689
override int MaxHP
Definition: Chara.cs:726
override bool IsDeadOrSleeping
Definition: Chara.cs:579
void MakeAlly(bool msg=true)
Definition: Chara.cs:2478
void GainAbility(int ele, int mtp=100, Thing origin=null)
Definition: Chara.cs:10628
FactionMemberType memberType
Definition: Chara.cs:46
Stats stamina
Definition: Chara.cs:1205
void SetTempHand(int right=0, int left=0)
Definition: Chara.cs:7050
bool IsHomeMember()
Definition: Chara.cs:6915
Thing MakeGene(DNA.Type? type=null)
Definition: Chara.cs:8617
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:6668
bool isDead
Definition: Chara.cs:393
override void LookAt(Card c)
Definition: Chara.cs:3752
Definition: ConDim.cs:2
static Thing MakeBloodMeal(Chara sucker, Chara feeder, bool msg=true)
Definition: CraftUtil.cs:155
Definition: DNA.cs:8
void MakeSlimeFood(Chara c)
Definition: DNA.cs:754
Element GetInvalidFeat(Chara c)
Definition: DNA.cs:684
Type
Definition: DNA.cs:10
int GetBodySlot()
Definition: DNA.cs:730
List< int > vals
Definition: DNA.cs:24
void ReplaceBodySlot(int slot)
Definition: DNA.cs:743
Element GetInvalidAction(Chara c)
Definition: DNA.cs:710
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:16
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)