Elin Decompiled Documentation EA 23.286 Nightly
Loading...
Searching...
No Matches
AI_Fuck Class Reference
Inheritance diagram for AI_Fuck:
AIAct Act Element EClass AI_TendAnimal

Public Types

enum  FuckType { fuck , tame }
 
enum  Variation {
  Normal , Bitch , Succubus , NTR ,
  Bloodsuck , Slime , Tentacle
}
 
- Public Types inherited from AIAct
enum  Status { Running , Fail , Success }
 
- Public Types inherited from Act
enum  CostType { None , MP , SP }
 

Public Member Functions

override bool ShouldAllyAttack (Chara tg)
 
override IEnumerable< StatusRun ()
 
void Finish ()
 
- Public Member Functions inherited from AIAct
override string ToString ()
 
override MultiSprite GetStateIcon ()
 
virtual bool ShouldAllyAttack (Chara tg)
 
virtual Point GetDestination ()
 
AIProgress GetProgress ()
 
string GetCurrentActionText ()
 
override bool IsToolValid ()
 
GetChild< T > ()
 
virtual void OnStart ()
 
void SetOwner (Chara c)
 
virtual void OnSetOwner ()
 
void SetChild (AIAct seq, Func< Status > _onChildFail=null)
 
void Start ()
 
override bool Perform ()
 
Status Restart ()
 
Status Success (Action action=null)
 
virtual void OnSuccess ()
 
bool TryCancel (Card c)
 
virtual Status Cancel ()
 
virtual void OnCancel ()
 
virtual void OnCancelOrSuccess ()
 
virtual bool CanManualCancel ()
 
Status KeepRunning ()
 
void Reset ()
 
virtual void OnReset ()
 
Status Tick ()
 
virtual IEnumerable< StatusRun ()
 
Status TickChild ()
 
Status Do (AIAct _seq, Func< Status > _onChildFail=null)
 
Status DoGotoInteraction (Point pos, Func< Status > _onChildFail=null)
 
Status DoGoto (Point pos, int dist=0, bool ignoreConnection=false, Func< Status > _onChildFail=null)
 
Status DoGoto (Card card, Func< Status > _onChildFail=null)
 
Status DoGoto (Card card, int dist, Func< Status > _onChildFail=null)
 
Status DoGotoSpot (Card card, Func< Status > _onChildFail=null)
 
Status DoGoto< T > (Func< Status > _onChildFail=null)
 
Status DoGotoSpot< T > (Func< Status > _onChildFail=null, bool ignoreAccessType=false)
 
Status DoGrab (Card card, int num=-1, bool pickHeld=false, Func< Status > _onChildFail=null)
 
Status DoGrab< T > ()
 
Status DoProgress ()
 
Status DoIdle (int repeat=3)
 
Status DoWait (int count=1)
 
virtual AIProgress CreateProgress ()
 
virtual void OnCreateProgress (Progress_Custom p)
 
virtual bool CanProgress ()
 
virtual void OnBeforeProgress ()
 
virtual void OnProgress ()
 
virtual void OnProgressComplete ()
 
void SimulateZone (int days)
 
virtual void OnSimulateZone (int days)
 
virtual void OnSimulatePosition ()
 
- Public Member Functions inherited from Act
virtual CursorInfo GetCursorIcon (Card c)
 
virtual MultiSprite GetStateIcon ()
 
override Sprite GetSprite ()
 
virtual bool ShowMouseHint (Card c)
 
virtual bool IsValidTC (Card c)
 
virtual string GetHintText (string str="")
 
virtual string GetText (string str="")
 
virtual string GetTextSmall (Card c)
 
bool IsTargetHostileParty ()
 
virtual Color GetActPlanColor ()
 
virtual bool Perform ()
 
bool Perform (Chara _cc, Card _tc=null, Point _tp=null)
 
virtual bool ValidatePerform (Chara _cc, Card _tc, Point _tp)
 
virtual bool CanPerform ()
 
bool CanPerform (Chara _cc, Card _tc=null, Point _tp=null)
 
virtual bool IsToolValid ()
 
new void SetImage (Image image)
 
virtual void OnMarkMapHighlights ()
 
virtual bool ShouldMapHighlight (Point p)
 
- Public Member Functions inherited from Element
virtual SourceElement.Row GetSource ()
 
virtual int GetSourcePotential (int v)
 
virtual Sprite GetSprite ()
 
int GetMaterialSourceValue (Thing t, int v)
 
virtual long GetSourceValue (long v, int lv, SourceValueType type)
 
virtual Sprite GetIcon (string suffix="")
 
bool IsActive (Card c)
 
int SortVal (bool charaSheet=false)
 
virtual bool CanLink (ElementContainer owner)
 
bool HasTag (string tag)
 
void SetImage (Image i)
 
virtual string GetDetail ()
 
bool IsFactionElement (Chara c)
 
Element GetParent (Card c)
 
void WriteNote (UINote n, ElementContainer owner=null, Action< UINote > onWriteNote=null)
 
void WriteNoteWithRef (UINote n, ElementContainer owner, Action< UINote > onWriteNote, Element refEle)
 
void _WriteNote (UINote n, Chara c, Act act)
 
void AddHeaderAbility (UINote n)
 
void _WriteNote (UINote n, ElementContainer owner, Action< UINote > onWriteNote, bool isRef, bool addHeader=true)
 
void AddEncNote (UINote n, Card Card, ElementContainer.NoteMode mode=ElementContainer.NoteMode.Default, Func< Element, string, string > funcText=null, Action< UINote, Element > onAddNote=null)
 
virtual void OnWriteNote (UINote n, ElementContainer owner)
 
virtual void OnChangeValue ()
 
void CheckLevelBonus (ElementContainer owner, UINote n=null)
 
int GetSortVal (UIList.SortMode m)
 
virtual Act.Cost GetCost (Chara c)
 
virtual int GetPower (Card c)
 
virtual void SetTextValue (UIText text, bool shorten=false)
 
virtual bool IsPurchaseFeatReqMet (ElementContainer owner, int lv=-1)
 
virtual void WritePurchaseReq (UINote n, int lv=1)
 

Public Attributes

Variation variation
 
Chara target
 
bool sell
 
bool succubus
 
int maxProgress
 
int progress
 
int fails
 
int totalAffinity
 
- Public Attributes inherited from AIAct
new Chara owner
 
Status status
 
IEnumerator< StatusEnumerator
 
AIAct child
 
AIAct parent
 
byte restartCount
 
Func< StatusonChildFail
 
Func< bool > isFail
 
- Public Attributes inherited from Element
SourceElement.Row _source
 
int id
 
int vBase
 
int vExp
 
int vPotential
 
int vTempPotential
 
int vLink
 
int vSource
 
int vSourcePotential
 
ElementContainer owner
 

Properties

virtual FuckType Type [get]
 
bool IsSacredLovemaking [get]
 
override bool PushChara [get]
 
override bool IsAutoTurn [get]
 
override TargetType TargetType [get]
 
override int MaxProgress [get]
 
override int CurrentProgress [get]
 
override bool CancelOnAggro [get]
 
override bool CancelWhenDamaged [get]
 
- Properties inherited from AIAct
virtual bool IsRunning [get]
 
bool IsChildRunning [get]
 
bool IsMoveAI [get]
 
virtual int MaxRestart [get]
 
virtual new string Name [get]
 
virtual MultiSprite stateIcon [get]
 
virtual Sprite actionIcon [get]
 
virtual bool IsNoGoal [get]
 
virtual bool IsAutoTurn [get]
 
virtual bool IsIdle [get]
 
virtual bool CancelOnAggro [get]
 
virtual bool PushChara [get]
 
virtual int MaxProgress [get]
 
virtual bool ShowProgress [get]
 
virtual bool UseTurbo [get]
 
virtual int CurrentProgress [get]
 
virtual bool ShowCursor [get]
 
virtual bool CancelWhenDamaged [get]
 
virtual bool CancelWhenMoved [get]
 
virtual bool InformCancel [get]
 
virtual Thing RenderThing [get]
 
AIAct Current [get]
 
override bool IsAct [get]
 
override bool ShowPotential [get]
 
override bool UsePotential [get]
 
override bool ShowRelativeAttribute [get]
 
virtual bool HasProgress [get]
 
- Properties inherited from Act
override bool ShowPotential [get]
 
override bool UsePotential [get]
 
override bool ShowRelativeAttribute [get]
 
virtual CursorInfo CursorIcon [get]
 
virtual string ID [get]
 
virtual bool IsAct [get]
 
virtual bool WillEndTurn [get]
 
virtual bool CloseLayers [get]
 
virtual int LeftHand [get]
 
virtual int RightHand [get]
 
virtual int ElementPowerMod [get]
 
virtual bool ShowMapHighlight [get]
 
virtual bool ShowMapHighlightBlock [get]
 
virtual bool PickHeldOnStart [get]
 
virtual bool DropHeldOnStart [get]
 
virtual bool CanPressRepeat [get]
 
virtual bool CanAutofire [get]
 
virtual bool ResetAxis [get]
 
virtual bool RequireTool [get]
 
virtual bool IsHostileAct [get]
 
virtual bool HideRightInfo [get]
 
virtual bool ShouldEndMimicry [get]
 
virtual bool HaveLongPressAction [get]
 
virtual float Radius [get]
 
virtual int PerformDistance [get]
 
virtual int MaxRadius [get]
 
virtual TargetType TargetType [get]
 
virtual bool LocalAct [get]
 
virtual bool CanRapidFire [get]
 
virtual float RapidDelay [get]
 
virtual bool ShowAuto [get]
 
- Properties inherited from Element
SourceElement.Row source [get]
 
virtual int DisplayValue [get]
 
virtual int MinValue [get]
 
int Value [get]
 
int ValueWithoutLink [get]
 
virtual int MinPotential [get]
 
int Potential [get]
 
virtual bool CanGainExp [get]
 
bool IsFlag [get]
 
virtual string Name [get]
 
virtual string FullName [get]
 
virtual int ExpToNext [get]
 
virtual bool UseExpMod [get]
 
virtual int CostTrain [get]
 
virtual int CostLearn [get]
 
virtual bool ShowXP [get]
 
virtual bool ShowMsgOnValueChanged [get]
 
virtual bool ShowValue [get]
 
virtual bool ShowPotential [get]
 
virtual bool UsePotential [get]
 
virtual bool PotentialAsStock [get]
 
virtual bool ShowRelativeAttribute [get]
 
virtual bool ShowBonuses [get]
 
virtual string ShortName [get]
 
bool IsGlobalElement [get]
 
bool IsFactionWideElement [get]
 
bool IsPartyWideElement [get]
 
virtual bool ShowEncNumber [get]
 
bool IsTrait [get]
 
bool IsFoodTrait [get]
 
bool IsFoodTraitMain [get]
 
bool IsMainAttribute [get]
 
Act act [get]
 
- Properties inherited from EClass
static Game game [get]
 
static bool AdvMode [get]
 
static Player player [get]
 
static Chara pc [get]
 
static UI ui [get]
 
static Map _map [get]
 
static Zone _zone [get]
 
static FactionBranch Branch [get]
 
static FactionBranch BranchOrHomeBranch [get]
 
static Faction Home [get]
 
static Faction Wilds [get]
 
static Scene scene [get]
 
static BaseGameScreen screen [get]
 
static GameSetting setting [get]
 
static GameData gamedata [get]
 
static ColorProfile Colors [get]
 
static World world [get]
 
static SourceManager sources [get]
 
static SourceManager editorSources [get]
 
static SoundManager Sound [get]
 
static CoreDebug debug [get]
 

Additional Inherited Members

- Static Public Member Functions inherited from Act
static void SetReference (Chara _cc, Card _tc=null, Point _tp=null)
 
static void SetTool (Thing t)
 
- Static Public Member Functions inherited from Element
static string GetName (string alias)
 
static SourceElement.Row Get (int id)
 
static Dictionary< int, int > GetElementMap (int[] list)
 
static Dictionary< int, int > GetElementMap (int[] list, Dictionary< int, int > map)
 
static SourceElement.Row GetRandomElement (int lv=1, bool useWeight=true)
 
static Element Create (int id, int v=0)
 
static Element Create (string id, int v=1)
 
static int GetId (string alias)
 
static int GetResistLv (int v)
 
static long GetResistDamage (long dmg, int v, int power=0)
 
- Static Public Member Functions inherited from EClass
static int rndSeed (int a, int seed)
 
static int rnd (long a)
 
static int rnd (int a)
 
static int curve (long _a, int start, int step, int rate=75)
 
static int sqrt (int a)
 
static int rndHalf (int a)
 
static float rndf (float a)
 
static int rndSqrt (int a)
 
static void Wait (float a, Card c)
 
static void Wait (float a, Point p)
 
static int Bigger (int a, int b)
 
static int Smaller (int a, int b)
 
- Static Public Attributes inherited from Act
static Chara CC
 
static Card TC
 
static Point TP = new Point()
 
static Thing TOOL
 
static int powerMod = 100
 
static bool forcePt
 
static Act CurrentAct
 
- Static Public Attributes inherited from Element
const int Div = 5
 
static Element Void = new Element()
 
static int[] List_MainAttributes = new int[9] { 70, 72, 71, 77, 74, 75, 76, 73, 79 }
 
static int[] List_MainAttributesMajor = new int[8] { 70, 72, 71, 77, 74, 75, 76, 73 }
 
static int[] List_Body = new int[4] { 70, 72, 71, 77 }
 
static int[] List_Mind = new int[4] { 74, 75, 76, 73 }
 
static List< SourceElement.RowListElements = new List<SourceElement.Row>()
 
static List< SourceElement.RowListAttackElements = new List<SourceElement.Row>()
 
- Static Public Attributes inherited from EClass
static Core core
 

Detailed Description

Definition at line 4 of file AI_Fuck.cs.

Member Enumeration Documentation

◆ FuckType

Enumerator
fuck 
tame 

Definition at line 6 of file AI_Fuck.cs.

◆ Variation

Enumerator
Normal 
Bitch 
Succubus 
NTR 
Bloodsuck 
Slime 
Tentacle 

Definition at line 12 of file AI_Fuck.cs.

Member Function Documentation

◆ Finish()

void AI_Fuck.Finish ( )
inline

Definition at line 250 of file AI_Fuck.cs.

251 {
252 Chara chara = (sell ? target : owner);
253 Chara chara2 = (sell ? owner : target);
254 if (chara.isDead || chara2.isDead)
255 {
256 return;
257 }
258 bool flag = EClass.rnd(2) == 0;
259 switch (Type)
260 {
261 case FuckType.fuck:
262 {
263 if (variation == Variation.Bloodsuck || variation == Variation.Slime)
264 {
265 if (EClass.rnd(2) == 0)
266 {
267 chara2.AddCondition<ConConfuse>(500);
268 }
269 if (EClass.rnd(2) == 0)
270 {
271 chara2.AddCondition<ConDim>(500);
272 }
273 if (EClass.rnd(2) == 0)
274 {
275 chara2.AddCondition<ConParalyze>(500);
276 }
277 if (EClass.rnd(10) == 0)
278 {
279 chara2.AddCondition<ConInsane>(100 + EClass.rnd(100));
280 }
281 }
282 else
283 {
284 for (int i = 0; i < 2; i++)
285 {
286 Chara chara3 = ((i == 0) ? chara : chara2);
287 chara3.RemoveCondition<ConDrunk>();
288 if (EClass.rnd(15) == 0 && !chara3.HasElement(1216))
289 {
290 chara3.AddCondition<ConDisease>(200);
291 }
292 chara3.ModExp(77, 250);
293 chara3.ModExp(71, 250);
294 chara3.ModExp(75, 250);
295 }
296 if (!chara2.HasElement(1216))
297 {
298 if (EClass.rnd(5) == 0)
299 {
300 chara2.AddCondition<ConParalyze>(500);
301 }
302 if (EClass.rnd(3) == 0)
303 {
304 chara2.AddCondition<ConInsane>(100 + EClass.rnd(100));
305 }
306 }
307 }
308 chara.Talk("tail_after");
309 bool flag3 = false;
310 if (variation == Variation.Succubus)
311 {
312 chara.ShowEmo(Emo.love);
313 chara2.ShowEmo(Emo.love);
314 EClass.player.forceTalk = true;
315 chara2.Talk("seduced");
316 }
317 else if (variation != Variation.NTR && variation != Variation.Bloodsuck && variation != Variation.Slime && chara != EClass.pc)
318 {
320 {
321 flag = true;
322 }
323 else
324 {
325 int num3 = CalcMoney.Whore(chara2, chara);
326 Chara chara4 = chara;
327 Chara chara5 = chara2;
328 if (variation == Variation.Bitch)
329 {
330 chara = chara5;
331 chara2 = chara4;
332 }
333 Debug.Log("buyer:" + chara.Name + " seller:" + chara2.Name + " money:" + num3);
334 if (!chara.IsPC)
335 {
336 chara.ModCurrency(EClass.rndHalf(num3));
337 }
338 if (!chara2.IsPC && chara.GetCurrency() < num3 && EClass.rnd(2) == 0)
339 {
340 num3 = chara.GetCurrency();
341 }
342 Debug.Log("money:" + num3 + " buyer:" + chara.GetCurrency());
343 if (chara.GetCurrency() >= num3)
344 {
345 chara.Talk("tail_pay");
346 }
347 else
348 {
349 chara.Talk("tail_nomoney");
350 num3 = chara.GetCurrency();
351 chara2.Say("angry", chara2);
352 chara2.Talk("angry");
353 flag = (sell ? true : false);
354 if (EClass.rnd(chara.IsPC ? 2 : 20) == 0)
355 {
356 flag3 = true;
357 }
358 }
359 chara.ModCurrency(-num3);
360 if (chara2 == EClass.pc)
361 {
362 if (num3 > 0)
363 {
366 }
367 }
368 else
369 {
370 int num4 = (chara2.CHA * 10 + 100) / ((chara2.IsPCFaction && chara2.memberType == FactionMemberType.Default) ? 1 : 10);
371 if (chara2.GetCurrency() - num4 > 0)
372 {
373 chara2.c_allowance += num3;
374 }
375 else
376 {
377 chara2.ModCurrency(num3);
378 }
379 }
380 chara = chara4;
381 chara2 = chara5;
382 }
383 }
384 if (flag3)
385 {
386 chara2.DoHostileAction(chara);
387 }
388 if (variation == Variation.Bloodsuck)
389 {
390 int value = chara.hunger.value;
391 Thing food = CraftUtil.MakeBloodMeal(chara, chara2);
392 FoodEffect.Proc(chara, food, consume: false);
393 chara2.AddCondition<ConBleed>(EClass.rndHalf(value * 10));
394 }
395 else
396 {
397 if (chara.IsPCParty || chara2.IsPCParty)
398 {
399 chara.stamina.Mod(-5 - EClass.rnd(chara.stamina.max / 10 + ((variation == Variation.Succubus) ? StaminaCost(chara2, chara) : 0) + 1));
400 chara2.stamina.Mod(-5 - EClass.rnd(chara2.stamina.max / 20 + ((variation == Variation.Succubus) ? StaminaCost(chara, chara2) : 0) + 1));
401 }
402 SuccubusExp(chara, chara2);
403 SuccubusExp(chara2, chara);
404 }
405 chara2.ModAffinity(chara, (flag || (chara.IsPC && chara2.affinity.CanSleepBeside() && EClass.rnd(10) != 0)) ? 10 : (-5));
406 if (chara == EClass.pc || chara2 == EClass.pc)
407 {
409 }
410 switch (variation)
411 {
412 case Variation.NTR:
413 {
414 Thing thing2 = chara2.things.Find<TraitDreamBug>();
415 if (thing2 != null)
416 {
417 thing2.ModNum(-1);
418 if (chara.IsPC)
419 {
420 Msg.Say("dream_spell", EClass.sources.elements.map[9156].GetName().ToLowerInvariant());
421 EClass.pc.GainAbility(9156, EClass.rnd(2) + 1);
422 }
423 }
424 if (!chara.HasElement(1239) || chara2.HasElement(1216))
425 {
426 break;
427 }
428 if (chara2.HasElement(758))
429 {
430 if (chara.ExistsOnMap)
431 {
432 chara.stamina.Mod(-1000000);
433 }
434 }
435 else if (chara2.ExistsOnMap)
436 {
437 chara2.stamina.Mod((!chara2.IsPCFaction) ? (-10000) : (chara2.IsPC ? (-25) : (-50)));
438 }
439 break;
440 }
441 case Variation.Bloodsuck:
442 if (chara2.HasElement(758) && chara.ExistsOnMap)
443 {
444 chara.stamina.Mod(-1000000);
445 }
446 break;
447 case Variation.Slime:
448 {
449 Thing thing = null;
450 for (int j = 0; j < 10; j++)
451 {
452 thing = target.MakeGene((j < 3) ? DNA.Type.Superior : DNA.Type.Default);
453 thing.c_DNA.MakeSlimeFood(chara);
454 if (thing.c_DNA.GetInvalidAction(chara) != null || thing.c_DNA.GetInvalidFeat(chara) != null)
455 {
456 thing.c_DNA.vals.Clear();
457 thing.c_DNA.type = DNA.Type.Inferior;
458 continue;
459 }
460 thing.MakeFoodFrom(target);
461 thing.elements.ModBase(10, 20);
462 thing.elements.ModBase(18, 100);
463 break;
464 }
465 FoodEffect.Proc(chara, thing, consume: false);
466 chara.elements.ModExp(6608, 1000f);
467 break;
468 }
469 }
471 {
472 chara.Say("tender_hug", chara, chara2);
473 }
474 break;
475 }
476 case FuckType.tame:
477 {
478 int num = ((!chara2.IsPCFaction) ? (chara2.IsHuman ? 10 : 5) : (chara2.IsHuman ? 5 : 0));
479 Msg.Say("tame_end", target);
480 target.PlaySound("groomed");
481 target.PlayEffect("heal_tick");
482 target.hygiene.Mod(15);
483 if (chara == EClass.pc)
484 {
486 }
487 if (target == owner)
488 {
489 break;
490 }
491 if (totalAffinity > 0)
492 {
493 chara.Say("brush_success", target, owner);
494 }
495 else
496 {
497 chara.Say("brush_fail", target, owner);
498 num *= 5;
499 }
501 bool flag2 = num2 && chara2.affinity.CanInvite() && chara2.GetBestAttribute() < EClass.pc.CHA;
502 if (num2)
503 {
504 if (flag2)
505 {
506 chara.Say("tame_success", owner, target);
507 chara2.MakeAlly();
508 }
509 else
510 {
511 chara.Say("tame_fail", chara, chara2);
512 }
513 }
514 if (fails > 0 && num > EClass.rnd(100))
515 {
516 chara2.DoHostileAction(chara);
517 chara2.calmCheckTurn *= 3;
518 }
519 break;
520 }
521 }
522 static int StaminaCost(Chara c1, Chara c2)
523 {
524 return (int)Mathf.Max(10f * (float)c1.END / (float)Mathf.Max(c2.END, 1), 0f);
525 }
526 static void SuccubusExp(Chara c, Chara tg)
527 {
528 if (!c.HasElement(1216))
529 {
530 return;
531 }
532 foreach (Element item in tg.elements.ListBestAttributes())
533 {
534 if (c.elements.ValueWithoutLink(item.id) < item.ValueWithoutLink)
535 {
536 c.elements.ModTempPotential(item.id, 1 + EClass.rnd(item.ValueWithoutLink - c.elements.ValueWithoutLink(item.id) / 5 + 1));
537 c.Say("succubus_exp", c, item.Name.ToLower());
538 break;
539 }
540 }
541 }
542 }
Emo
Definition: Emo.cs:2
FactionMemberType
new Chara owner
Definition: AIAct.cs:14
bool sell
Definition: AI_Fuck.cs:27
int totalAffinity
Definition: AI_Fuck.cs:37
Variation
Definition: AI_Fuck.cs:13
int fails
Definition: AI_Fuck.cs:35
Chara target
Definition: AI_Fuck.cs:25
Variation variation
Definition: AI_Fuck.cs:23
FuckType
Definition: AI_Fuck.cs:7
virtual FuckType Type
Definition: AI_Fuck.cs:39
bool IsSacredLovemaking
Definition: AI_Fuck.cs:42
static int Whore(Chara seller, Chara buyer)
Definition: CalcMoney.cs:55
virtual Chara Chara
Definition: Card.cs:2108
ElementContainerCard elements
Definition: Card.cs:42
int END
Definition: Card.cs:2377
SoundSource PlaySound(string id, float v=1f, bool spatial=true)
Definition: Card.cs:6375
void Talk(string idTopic, string ref1=null, string ref2=null, bool forceSync=false)
Definition: Card.cs:6935
string Name
Definition: Card.cs:2177
int CHA
Definition: Card.cs:2387
bool ExistsOnMap
Definition: Card.cs:2123
Thing SetNum(int a)
Definition: Card.cs:3577
int GetCurrency(string id="money")
Definition: Card.cs:4057
Effect PlayEffect(string id, bool useRenderPos=true, float range=0f, Vector3 fix=default(Vector3))
Definition: Card.cs:6409
void ShowEmo(Emo _emo=Emo.none, float duration=0f, bool skipSame=true)
Definition: Card.cs:6343
void ModCurrency(int a, string id="money")
Definition: Card.cs:4043
Card MakeFoodFrom(string _id)
Definition: Card.cs:5613
ThingContainer things
Definition: Card.cs:39
void ModExp(string alias, int a)
Definition: Card.cs:2688
DNA c_DNA
Definition: Card.cs:1919
void ModNum(int a, bool notify=true)
Definition: Card.cs:3597
bool HasElement(int ele, bool includeNagative=false)
Definition: Card.cs:6122
void Say(string lang, string ref1=null, string ref2=null)
Definition: Card.cs:7052
Definition: Chara.cs:10
Condition AddCondition(string id, int p=100, bool force=false)
Definition: Chara.cs:9451
override bool IsPC
Definition: Chara.cs:626
override bool IsPCParty
Definition: Chara.cs:629
Stats hygiene
Definition: Chara.cs:1178
Stats hunger
Definition: Chara.cs:1168
void GainAbility(int ele, int mtp=100, Thing origin=null)
Definition: Chara.cs:10290
Stats stamina
Definition: Chara.cs:1172
Thing MakeGene(DNA.Type? type=null)
Definition: Chara.cs:8356
void DoHostileAction(Card _tg, bool immediate=false)
Definition: Chara.cs:6488
bool isDead
Definition: Chara.cs:391
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 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
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
void ModKarma(int a)
Definition: Player.cs:2586
Stats stats
Definition: Player.cs:1059
Thing DropReward(Thing t, bool silent=false)
Definition: Player.cs:2618
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
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)

References Chara.AddCondition(), Chara.affinity, Player.Stats.brush, Card.c_DNA, Affinity.CanInvite(), Affinity.CanSleepBeside(), Card.CHA, Card.Chara, ThingGen.Create(), Debug, Chara.DoHostileAction(), Player.DropReward(), Card.elements, SourceManager.elements, Card.END, Card.ExistsOnMap, fails, ThingContainer.Find(), food, Chara.GainAbility(), Card.GetBestAttribute(), Card.GetCurrency(), DNA.GetInvalidAction(), DNA.GetInvalidFeat(), Card.HasElement(), Chara.hunger, Chara.hygiene, Chara.isDead, Chara.IsHuman, Chara.IsPC, Chara.IsPCFaction, Chara.IsPCParty, IsSacredLovemaking, TraitToolBrush.IsTamePossible(), item, Player.Stats.kimo, ElementContainer.ListBestAttributes(), Chara.MakeAlly(), CraftUtil.MakeBloodMeal(), Card.MakeFoodFrom(), Chara.MakeGene(), DNA.MakeSlimeFood(), Stats.max, Chara.memberType, Stats.Mod(), Chara.ModAffinity(), ElementContainer.ModBase(), Card.ModCurrency(), ElementContainer.ModExp(), Card.ModExp(), Player.ModKarma(), Card.ModNum(), ElementContainer.ModTempPotential(), Card.Name, AIAct.owner, EClass.pc, Card.PlayEffect(), EClass.player, Card.PlaySound(), FoodEffect.Proc(), EClass.rnd(), EClass.rndHalf(), Msg.Say(), Card.Say(), sell, Card.SetNum(), Card.ShowEmo(), EClass.sources, Chara.stamina, Player.stats, Card.Talk(), target, Card.things, totalAffinity, Type, DNA.vals, Stats.value, ElementContainer.ValueWithoutLink(), variation, and CalcMoney.Whore().

Referenced by Run().

◆ Run()

override IEnumerable< Status > AI_Fuck.Run ( )
inlinevirtual

Reimplemented from AIAct.

Definition at line 86 of file AI_Fuck.cs.

87 {
88 if (target == null)
89 {
90 foreach (Chara chara in EClass._map.charas)
91 {
92 if (!chara.IsHomeMember() && !chara.IsDeadOrSleeping && chara.Dist(owner) <= 5)
93 {
94 target = chara;
95 break;
96 }
97 }
98 }
99 if (target == null)
100 {
101 yield return Cancel();
102 }
103 Chara cc = (sell ? target : owner);
104 Chara tc = (sell ? owner : target);
105 int destDist = ((Type == FuckType.fuck) ? 1 : 1);
106 if (owner.host != target)
107 {
108 yield return DoGoto(target.pos, destDist);
109 }
110 cc.Say((variation == Variation.Slime) ? "slime_start" : ((variation == Variation.Bloodsuck) ? "suck_start" : (Type.ToString() + "_start")), cc, tc);
111 isFail = () => !tc.IsAliveInCurrentZone || tc.Dist(owner) > 3;
112 if (Type == FuckType.tame)
113 {
114 cc.SetTempHand(1104, -1);
115 }
116 maxProgress = ((variation == Variation.NTR || variation == Variation.Bloodsuck) ? 10 : 25);
117 switch (variation)
118 {
119 case Variation.Succubus:
120 cc.Talk("seduce");
121 break;
122 case Variation.Bloodsuck:
123 cc.PlaySound("bloodsuck");
124 break;
125 case Variation.Slime:
126 cc.PlaySound("slime");
127 target.AddCondition<ConEntangle>(500, force: true);
128 break;
129 }
130 for (int i = 0; i < maxProgress; i++)
131 {
132 progress = i;
133 if (owner.host != target)
134 {
135 yield return DoGoto(target.pos, destDist);
136 }
137 switch (Type)
138 {
139 case FuckType.fuck:
140 if (variation == Variation.NTR)
141 {
142 cc.Say("ntr", cc, tc);
143 }
144 cc.LookAt(tc);
145 tc.LookAt(cc);
146 switch (i % 4)
147 {
148 case 0:
149 cc.renderer.PlayAnime(AnimeID.Attack, tc);
150 if (EClass.rnd(3) == 0 || sell)
151 {
152 cc.Talk("tail");
153 }
154 break;
155 case 2:
156 tc.renderer.PlayAnime(AnimeID.Shiver);
157 if (EClass.rnd(3) == 0)
158 {
159 tc.Talk("tailed");
160 }
161 break;
162 }
163 if (((cc.HasElement(1216) || tc.HasElement(1216)) ? 100 : 20) > EClass.rnd(100))
164 {
165 ((EClass.rnd(2) == 0) ? cc : tc).PlayEffect("love2");
166 }
167 if (variation == Variation.Slime)
168 {
170 }
171 if (EClass.rnd(3) == 0 || sell)
172 {
173 if (variation == Variation.Slime)
174 {
175 target.AddCondition<ConSupress>(200, force: true);
176 }
177 else
178 {
179 target.AddCondition<ConWait>(50, force: true);
180 }
181 }
182 if (variation == Variation.Bloodsuck || variation == Variation.Slime)
183 {
184 owner.pos.TryWitnessCrime(cc, tc, 4, (Chara c) => EClass.rnd(cc.HasCondition<ConTransmuteBat>() ? 50 : 20) == 0);
185 }
186 break;
187 case FuckType.tame:
188 {
189 int num = 100;
190 if (!tc.IsAnimal)
191 {
192 num += 50;
193 }
194 if (tc.IsHuman)
195 {
196 num += 50;
197 }
198 if (tc.IsInCombat)
199 {
200 num += 100;
201 }
202 if (tc == cc)
203 {
204 num = 50;
205 }
206 else if (tc.affinity.CurrentStage < Affinity.Stage.Intimate && EClass.rnd(6 * num / 100) == 0)
207 {
208 tc.AddCondition<ConFear>(60);
209 }
210 tc.interest -= (tc.IsPCFaction ? 20 : (2 * num / 100));
211 if (i == 0 || i == 10)
212 {
213 cc.Talk("goodBoy");
214 }
215 if (i % 5 == 0)
216 {
217 tc.PlaySound("brushing");
218 int num2 = cc.CHA / 2 + cc.Evalue(237) - tc.CHA * 2;
219 int num3;
220 if (EClass.rnd(cc.CHA / 2 + cc.Evalue(237)) > EClass.rnd(tc.CHA * num / 100))
221 {
222 num3 = 5 + Mathf.Clamp(num2 / 20, 0, 20);
223 }
224 else
225 {
226 num3 = -5 + ((!tc.IsPCFaction) ? Mathf.Clamp(num2 / 10, -30, 0) : 0);
227 fails++;
228 }
229 int num4 = 20;
230 if (tc.IsPCFactionOrMinion && tc.affinity.CurrentStage >= Affinity.Stage.Love)
231 {
232 num3 = ((EClass.rnd(3) == 0) ? 4 : 0);
233 num4 = 10;
234 }
235 totalAffinity += num3;
236 tc.ModAffinity(EClass.pc, num3, show: true, showOnlyEmo: true);
237 cc.elements.ModExp(237, num4);
238 if (EClass.rnd(4) == 0)
239 {
240 cc.stamina.Mod(-1);
241 }
242 }
243 break;
244 }
245 }
246 }
247 Finish();
248 }
AnimeID
Definition: AnimeID.cs:2
virtual Status Cancel()
Definition: AIAct.cs:305
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
void Finish()
Definition: AI_Fuck.cs:250
int progress
Definition: AI_Fuck.cs:33
int maxProgress
Definition: AI_Fuck.cs:31
void PlayAnime(AnimeID id, bool force)
Point pos
Definition: Card.cs:60
int Evalue(int ele)
Definition: Card.cs:2611
int Dist(Card c)
Definition: Card.cs:7901
CardRenderer renderer
Definition: Card.cs:62
override bool IsAliveInCurrentZone
Definition: Chara.cs:563
Chara host
Definition: Chara.cs:33
bool HasCondition(string alias)
Definition: Chara.cs:9612
override bool IsDeadOrSleeping
Definition: Chara.cs:575
void SetTempHand(int right=0, int left=0)
Definition: Chara.cs:6850
bool IsHomeMember()
Definition: Chara.cs:6735
override void LookAt(Card c)
Definition: Chara.cs:3597
static Map _map
Definition: EClass.cs:19
List< Chara > charas
Definition: Map.cs:81
bool TryWitnessCrime(Chara criminal, Chara target=null, int radius=4, Func< Chara, bool > funcWitness=null)
Definition: Point.cs:873

References EClass._map, Chara.AddCondition(), Chara.affinity, AIAct.Cancel(), Card.CHA, Map.charas, Affinity.CurrentStage, Card.Dist(), AIAct.DoGoto(), Chara.DoHostileAction(), Card.elements, Card.Evalue(), fails, Finish(), Chara.HasCondition(), Card.HasElement(), Chara.host, Chara.IsAliveInCurrentZone, Chara.IsAnimal, Chara.IsDeadOrSleeping, AIAct.isFail, Chara.IsHomeMember(), Chara.IsHuman, Chara.IsInCombat, Chara.IsPCFaction, Card.IsPCFactionOrMinion, Chara.LookAt(), maxProgress, Stats.Mod(), Chara.ModAffinity(), ElementContainer.ModExp(), AIAct.owner, EClass.pc, CardRenderer.PlayAnime(), Card.PlaySound(), Card.pos, progress, Card.renderer, EClass.rnd(), Card.Say(), sell, Chara.SetTempHand(), Chara.stamina, Card.Talk(), target, totalAffinity, Point.TryWitnessCrime(), Type, and variation.

◆ ShouldAllyAttack()

override bool AI_Fuck.ShouldAllyAttack ( Chara  tg)
inlinevirtual

Reimplemented from AIAct.

Definition at line 81 of file AI_Fuck.cs.

82 {
83 return tg != target;
84 }

References target.

Member Data Documentation

◆ fails

int AI_Fuck.fails

Definition at line 35 of file AI_Fuck.cs.

Referenced by Finish(), and Run().

◆ maxProgress

int AI_Fuck.maxProgress

Definition at line 31 of file AI_Fuck.cs.

Referenced by Run().

◆ progress

int AI_Fuck.progress

Definition at line 33 of file AI_Fuck.cs.

Referenced by Run().

◆ sell

bool AI_Fuck.sell

Definition at line 27 of file AI_Fuck.cs.

Referenced by Finish(), and Run().

◆ succubus

bool AI_Fuck.succubus

Definition at line 29 of file AI_Fuck.cs.

◆ target

Chara AI_Fuck.target

Definition at line 25 of file AI_Fuck.cs.

Referenced by Finish(), Run(), ShouldAllyAttack(), and ConSleep.SuccubusSleep().

◆ totalAffinity

int AI_Fuck.totalAffinity

Definition at line 37 of file AI_Fuck.cs.

Referenced by Finish(), and Run().

◆ variation

Variation AI_Fuck.variation

Definition at line 23 of file AI_Fuck.cs.

Referenced by Finish(), and Run().

Property Documentation

◆ CancelOnAggro

override bool AI_Fuck.CancelOnAggro
get

Definition at line 67 of file AI_Fuck.cs.

68 {
69 get
70 {
71 if (variation != Variation.NTR && variation != Variation.Bloodsuck)
72 {
73 return variation != Variation.Slime;
74 }
75 return false;
76 }
77 }

◆ CancelWhenDamaged

override bool AI_Fuck.CancelWhenDamaged
get

Definition at line 79 of file AI_Fuck.cs.

◆ CurrentProgress

override int AI_Fuck.CurrentProgress
get

Definition at line 65 of file AI_Fuck.cs.

◆ IsAutoTurn

override bool AI_Fuck.IsAutoTurn
get

Definition at line 59 of file AI_Fuck.cs.

◆ IsSacredLovemaking

bool AI_Fuck.IsSacredLovemaking
get

Definition at line 41 of file AI_Fuck.cs.

42 {
43 get
44 {
45 if (variation == Variation.Normal && owner != null && target != null && target != owner && (owner == EClass.pc || owner.IsMarried))
46 {
47 if (target != EClass.pc)
48 {
49 return target.IsMarried;
50 }
51 return true;
52 }
53 return false;
54 }
55 }
bool IsMarried
Definition: Chara.cs:611

Referenced by Finish().

◆ MaxProgress

override int AI_Fuck.MaxProgress
get

Definition at line 63 of file AI_Fuck.cs.

◆ PushChara

override bool AI_Fuck.PushChara
get

Definition at line 57 of file AI_Fuck.cs.

◆ TargetType

override TargetType AI_Fuck.TargetType
get

Definition at line 61 of file AI_Fuck.cs.

◆ Type

virtual FuckType AI_Fuck.Type
get

Definition at line 39 of file AI_Fuck.cs.

Referenced by Finish(), and Run().


The documentation for this class was generated from the following file: