Elin Decompiled Documentation EA 23.219 Nightly Patch 2
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 }
 
- 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 ()
 
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 ()
 
virtual bool CanPerform ()
 
bool Perform (Chara _cc, Card _tc=null, Point _tp=null)
 
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 int GetSourceValue (int 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)
 
virtual bool IsPurchaseFeatReqMet (ElementContainer owner, int lv=-1)
 
virtual void WritePurchaseReq (UINote n, int lv=1)
 

Public Attributes

Chara target
 
bool sell
 
bool bitch
 
bool succubus
 
bool ntr
 
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]
 
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 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]
 
virtual bool IsCrime [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 int GetResistDamage (int 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 (int a, int start, int step, int rate=75)
 
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.

Member Function Documentation

◆ Finish()

void AI_Fuck.Finish ( )
inline

Definition at line 181 of file AI_Fuck.cs.

182 {
183 Chara chara = (sell ? target : owner);
184 Chara chara2 = (sell ? owner : target);
185 if (chara.isDead || chara2.isDead)
186 {
187 return;
188 }
189 bool flag = EClass.rnd(2) == 0;
190 switch (Type)
191 {
192 case FuckType.fuck:
193 {
194 for (int i = 0; i < 2; i++)
195 {
196 Chara chara3 = ((i == 0) ? chara : chara2);
197 chara3.RemoveCondition<ConDrunk>();
198 if (EClass.rnd(15) == 0 && !chara3.HasElement(1216))
199 {
200 chara3.AddCondition<ConDisease>(200);
201 }
202 chara3.ModExp(77, 250);
203 chara3.ModExp(71, 250);
204 chara3.ModExp(75, 250);
205 }
206 if (!chara2.HasElement(1216))
207 {
208 if (EClass.rnd(5) == 0)
209 {
210 chara2.AddCondition<ConParalyze>(500);
211 }
212 if (EClass.rnd(3) == 0)
213 {
214 chara2.AddCondition<ConInsane>(100 + EClass.rnd(100));
215 }
216 }
217 int num3 = CalcMoney.Whore(chara2, chara);
218 chara.Talk("tail_after");
219 bool flag3 = false;
220 if (succubus)
221 {
222 chara.ShowEmo(Emo.love);
223 chara2.ShowEmo(Emo.love);
224 EClass.player.forceTalk = true;
225 chara2.Talk("seduced");
226 }
227 else if (chara != EClass.pc)
228 {
229 Chara chara4 = chara;
230 Chara chara5 = chara2;
231 if (bitch)
232 {
233 chara = chara5;
234 chara2 = chara4;
235 }
236 Debug.Log("buyer:" + chara.Name + " seller:" + chara2.Name + " money:" + num3);
237 if (!chara.IsPC)
238 {
239 chara.ModCurrency(EClass.rndHalf(num3));
240 }
241 if (!chara2.IsPC && chara.GetCurrency() < num3 && EClass.rnd(2) == 0)
242 {
243 num3 = chara.GetCurrency();
244 }
245 Debug.Log("money:" + num3 + " buyer:" + chara.GetCurrency());
246 if (chara.GetCurrency() >= num3)
247 {
248 chara.Talk("tail_pay");
249 }
250 else
251 {
252 chara.Talk("tail_nomoney");
253 num3 = chara.GetCurrency();
254 chara2.Say("angry", chara2);
255 chara2.Talk("angry");
256 flag = (sell ? true : false);
257 if (EClass.rnd(chara.IsPC ? 2 : 20) == 0)
258 {
259 flag3 = true;
260 }
261 }
262 chara.ModCurrency(-num3);
263 if (chara2 == EClass.pc)
264 {
265 if (num3 > 0)
266 {
269 }
270 }
271 else
272 {
273 int num4 = (chara2.CHA * 10 + 100) / ((chara2.IsPCFaction && chara2.memberType == FactionMemberType.Default) ? 1 : 10);
274 if (chara2.GetCurrency() - num4 > 0)
275 {
276 chara2.c_allowance += num3;
277 }
278 else
279 {
280 chara2.ModCurrency(num3);
281 }
282 }
283 chara = chara4;
284 chara2 = chara5;
285 }
286 if (flag3)
287 {
288 chara2.DoHostileAction(chara);
289 }
290 if (chara.IsPCParty || chara2.IsPCParty)
291 {
292 chara.stamina.Mod(-5 - EClass.rnd(chara.stamina.max / 10 + (succubus ? StaminaCost(chara2, chara) : 0) + 1));
293 chara2.stamina.Mod(-5 - EClass.rnd(chara2.stamina.max / 20 + (succubus ? StaminaCost(chara, chara2) : 0) + 1));
294 }
295 SuccubusExp(chara, chara2);
296 SuccubusExp(chara2, chara);
297 chara2.ModAffinity(chara, flag ? 10 : (-5));
298 if (chara == EClass.pc || chara2 == EClass.pc)
299 {
301 }
302 if (ntr)
303 {
304 Thing thing = chara2.things.Find<TraitDreamBug>();
305 if (thing != null)
306 {
307 thing.ModNum(-1);
308 if (chara.IsPC)
309 {
310 Msg.Say("dream_spell", EClass.sources.elements.map[9156].GetName().ToLowerInvariant());
311 EClass.pc.GainAbility(9156, EClass.rnd(2) + 1);
312 }
313 }
314 }
315 if (!ntr || !chara.HasElement(1239) || chara2.HasElement(1216))
316 {
317 break;
318 }
319 if (chara2.HasElement(758))
320 {
321 if (chara.ExistsOnMap)
322 {
323 chara.stamina.Mod(-1000000);
324 }
325 }
326 else if (chara2.ExistsOnMap)
327 {
328 chara2.stamina.Mod((!chara2.IsPCFaction) ? (-10000) : (chara2.IsPC ? (-25) : (-50)));
329 }
330 break;
331 }
332 case FuckType.tame:
333 {
334 int num = ((!chara2.IsPCFaction) ? (chara2.IsHuman ? 10 : 5) : (chara2.IsHuman ? 5 : 0));
335 Msg.Say("tame_end", target);
336 target.PlaySound("groomed");
337 target.PlayEffect("heal_tick");
338 target.hygiene.Mod(15);
339 if (chara == EClass.pc)
340 {
342 }
343 if (target == owner)
344 {
345 break;
346 }
347 if (totalAffinity > 0)
348 {
349 chara.Say("brush_success", target, owner);
350 }
351 else
352 {
353 chara.Say("brush_fail", target, owner);
354 num *= 5;
355 }
357 bool flag2 = num2 && chara2.affinity.CanInvite() && chara2.GetBestAttribute() < EClass.pc.CHA;
358 if (num2)
359 {
360 if (flag2)
361 {
362 chara.Say("tame_success", owner, target);
363 chara2.MakeAlly();
364 }
365 else
366 {
367 chara.Say("tame_fail", chara, chara2);
368 }
369 }
370 if (fails > 0 && num > EClass.rnd(100))
371 {
372 chara2.DoHostileAction(chara);
373 chara2.calmCheckTurn *= 3;
374 }
375 break;
376 }
377 }
378 static int StaminaCost(Chara c1, Chara c2)
379 {
380 return (int)Mathf.Max(10f * (float)c1.END / (float)Mathf.Max(c2.END, 1), 0f);
381 }
382 static void SuccubusExp(Chara c, Chara tg)
383 {
384 if (!c.HasElement(1216))
385 {
386 return;
387 }
388 foreach (Element item in tg.elements.ListBestAttributes())
389 {
390 if (c.elements.ValueWithoutLink(item.id) < item.ValueWithoutLink)
391 {
392 c.elements.ModTempPotential(item.id, 1 + EClass.rnd(item.ValueWithoutLink - c.elements.ValueWithoutLink(item.id) / 5 + 1));
393 c.Say("succubus_exp", c, item.Name.ToLower());
394 break;
395 }
396 }
397 }
398 }
Emo
Definition: Emo.cs:2
FactionMemberType
new Chara owner
Definition: AIAct.cs:14
bool sell
Definition: AI_Fuck.cs:14
int totalAffinity
Definition: AI_Fuck.cs:28
bool succubus
Definition: AI_Fuck.cs:18
bool ntr
Definition: AI_Fuck.cs:20
int fails
Definition: AI_Fuck.cs:26
Chara target
Definition: AI_Fuck.cs:12
FuckType
Definition: AI_Fuck.cs:7
virtual FuckType Type
Definition: AI_Fuck.cs:30
bool bitch
Definition: AI_Fuck.cs:16
static int Whore(Chara seller, Chara buyer)
Definition: CalcMoney.cs:55
virtual Chara Chara
Definition: Card.cs:2058
ElementContainerCard elements
Definition: Card.cs:41
int END
Definition: Card.cs:2325
bool HasElement(int ele, int req=1)
Definition: Card.cs:5787
SoundSource PlaySound(string id, float v=1f, bool spatial=true)
Definition: Card.cs:6001
void Talk(string idTopic, string ref1=null, string ref2=null, bool forceSync=false)
Definition: Card.cs:6556
string Name
Definition: Card.cs:2125
int CHA
Definition: Card.cs:2335
bool ExistsOnMap
Definition: Card.cs:2073
Thing SetNum(int a)
Definition: Card.cs:3425
int GetCurrency(string id="money")
Definition: Card.cs:3905
Effect PlayEffect(string id, bool useRenderPos=true, float range=0f, Vector3 fix=default(Vector3))
Definition: Card.cs:6035
void ShowEmo(Emo _emo=Emo.none, float duration=0f, bool skipSame=true)
Definition: Card.cs:5969
void ModCurrency(int a, string id="money")
Definition: Card.cs:3891
ThingContainer things
Definition: Card.cs:38
void ModExp(string alias, int a)
Definition: Card.cs:2636
void ModNum(int a, bool notify=true)
Definition: Card.cs:3445
void Say(string lang, string ref1=null, string ref2=null)
Definition: Card.cs:6653
Definition: Chara.cs:10
Condition AddCondition(string id, int p=100, bool force=false)
Definition: Chara.cs:8988
override bool IsPC
Definition: Chara.cs:610
override bool IsPCParty
Definition: Chara.cs:613
Stats hygiene
Definition: Chara.cs:1146
void GainAbility(int ele, int mtp=100, Thing origin=null)
Definition: Chara.cs:9776
Stats stamina
Definition: Chara.cs:1140
void DoHostileAction(Card _tg, bool immediate=false)
Definition: Chara.cs:6212
bool isDead
Definition: Chara.cs:387
Definition: EClass.cs:5
static int rnd(long a)
Definition: EClass.cs:58
static SourceManager sources
Definition: EClass.cs:42
static int rndHalf(int a)
Definition: EClass.cs:87
static Player player
Definition: EClass.cs:12
static Chara pc
Definition: EClass.cs:14
Element ModTempPotential(int ele, int v, int threshMsg=0)
int ValueWithoutLink(int ele)
List< Element > ListBestAttributes()
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:169
long kimo
Definition: Player.cs:145
void ModKarma(int a)
Definition: Player.cs:2496
Stats stats
Definition: Player.cs:1013
Thing DropReward(Thing t, bool silent=false)
Definition: Player.cs:2527
SourceElement elements
virtual void Mod(int a)
Definition: Stats.cs:135
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, bitch, Player.Stats.brush, Affinity.CanInvite(), Card.CHA, Card.Chara, ThingGen.Create(), Debug, Chara.DoHostileAction(), Player.DropReward(), Card.elements, SourceManager.elements, Card.END, Card.ExistsOnMap, fails, ThingContainer.Find(), Chara.GainAbility(), Card.GetBestAttribute(), Card.GetCurrency(), Card.HasElement(), Chara.hygiene, Chara.isDead, Chara.IsHuman, Chara.IsPC, Chara.IsPCFaction, Chara.IsPCParty, TraitToolBrush.IsTamePossible(), item, Player.Stats.kimo, ElementContainer.ListBestAttributes(), Chara.MakeAlly(), Stats.max, Chara.memberType, Stats.Mod(), Chara.ModAffinity(), Card.ModCurrency(), Card.ModExp(), Player.ModKarma(), Card.ModNum(), ElementContainer.ModTempPotential(), Card.Name, ntr, AIAct.owner, EClass.pc, Card.PlayEffect(), EClass.player, Card.PlaySound(), EClass.rnd(), EClass.rndHalf(), Msg.Say(), Card.Say(), sell, Card.SetNum(), Card.ShowEmo(), EClass.sources, Chara.stamina, Player.stats, succubus, Card.Talk(), target, Card.things, totalAffinity, Type, ElementContainer.ValueWithoutLink(), and CalcMoney.Whore().

Referenced by Run().

◆ Run()

override IEnumerable< Status > AI_Fuck.Run ( )
inlinevirtual

Reimplemented from AIAct.

Definition at line 51 of file AI_Fuck.cs.

52 {
53 if (target == null)
54 {
55 foreach (Chara chara in EClass._map.charas)
56 {
57 if (!chara.IsHomeMember() && !chara.IsDeadOrSleeping && chara.Dist(owner) <= 5)
58 {
59 target = chara;
60 break;
61 }
62 }
63 }
64 if (target == null)
65 {
66 yield return Cancel();
67 }
68 Chara cc = (sell ? target : owner);
69 Chara tc = (sell ? owner : target);
70 int destDist = ((Type == FuckType.fuck) ? 1 : 1);
71 yield return DoGoto(target.pos, destDist);
72 cc.Say(Type.ToString() + "_start", cc, tc);
73 isFail = () => !tc.IsAliveInCurrentZone || tc.Dist(owner) > 3;
74 if (Type == FuckType.tame)
75 {
76 cc.SetTempHand(1104, -1);
77 }
78 maxProgress = (ntr ? 10 : 25);
79 if (succubus)
80 {
81 cc.Talk("seduce");
82 }
83 for (int i = 0; i < maxProgress; i++)
84 {
85 progress = i;
86 yield return DoGoto(target.pos, destDist);
87 switch (Type)
88 {
89 case FuckType.fuck:
90 if (ntr)
91 {
92 cc.Say("ntr", cc, tc);
93 }
94 cc.LookAt(tc);
95 tc.LookAt(cc);
96 switch (i % 4)
97 {
98 case 0:
99 cc.renderer.PlayAnime(AnimeID.Attack, tc);
100 if (EClass.rnd(3) == 0 || sell)
101 {
102 cc.Talk("tail");
103 }
104 break;
105 case 2:
106 tc.renderer.PlayAnime(AnimeID.Shiver);
107 if (EClass.rnd(3) == 0)
108 {
109 tc.Talk("tailed");
110 }
111 break;
112 }
113 if (EClass.rnd(3) == 0 || sell)
114 {
115 target.AddCondition<ConWait>(50, force: true);
116 }
117 break;
118 case FuckType.tame:
119 {
120 int num = 100;
121 if (!tc.IsAnimal)
122 {
123 num += 50;
124 }
125 if (tc.IsHuman)
126 {
127 num += 50;
128 }
129 if (tc.IsInCombat)
130 {
131 num += 100;
132 }
133 if (tc == cc)
134 {
135 num = 50;
136 }
137 else if (tc.affinity.CurrentStage < Affinity.Stage.Intimate && EClass.rnd(6 * num / 100) == 0)
138 {
139 tc.AddCondition<ConFear>(60);
140 }
141 tc.interest -= (tc.IsPCFaction ? 20 : (2 * num / 100));
142 if (i == 0 || i == 10)
143 {
144 cc.Talk("goodBoy");
145 }
146 if (i % 5 == 0)
147 {
148 tc.PlaySound("brushing");
149 int num2 = cc.CHA / 2 + cc.Evalue(237) - tc.CHA * 2;
150 int num3;
151 if (EClass.rnd(cc.CHA / 2 + cc.Evalue(237)) > EClass.rnd(tc.CHA * num / 100))
152 {
153 num3 = 5 + Mathf.Clamp(num2 / 20, 0, 20);
154 }
155 else
156 {
157 num3 = -5 + ((!tc.IsPCFaction) ? Mathf.Clamp(num2 / 10, -30, 0) : 0);
158 fails++;
159 }
160 int num4 = 20;
162 {
163 num3 = ((EClass.rnd(3) == 0) ? 4 : 0);
164 num4 = 10;
165 }
166 totalAffinity += num3;
167 tc.ModAffinity(EClass.pc, num3, show: true, showOnlyEmo: true);
168 cc.elements.ModExp(237, num4);
169 if (EClass.rnd(4) == 0)
170 {
171 cc.stamina.Mod(-1);
172 }
173 }
174 break;
175 }
176 }
177 }
178 Finish();
179 }
AnimeID
Definition: AnimeID.cs:2
virtual Status Cancel()
Definition: AIAct.cs:291
Func< bool > isFail
Definition: AIAct.cs:28
Status DoGoto(Point pos, int dist=0, bool ignoreConnection=false, Func< Status > _onChildFail=null)
Definition: AIAct.cs:432
void Finish()
Definition: AI_Fuck.cs:181
int progress
Definition: AI_Fuck.cs:24
int maxProgress
Definition: AI_Fuck.cs:22
Stage CurrentStage
Definition: Affinity.cs:32
void PlayAnime(AnimeID id, bool force)
bool IsPCFactionOrMinion
Definition: Card.cs:2260
Point pos
Definition: Card.cs:59
int Evalue(int ele)
Definition: Card.cs:2559
int Dist(Card c)
Definition: Card.cs:7492
CardRenderer renderer
Definition: Card.cs:61
override bool IsAliveInCurrentZone
Definition: Chara.cs:559
void ModAffinity(Chara c, int a, bool show=true, bool showOnlyEmo=false)
Definition: Chara.cs:7731
bool IsInCombat
Definition: Chara.cs:862
bool IsHuman
Definition: Chara.cs:877
bool IsAnimal
Definition: Chara.cs:865
override bool IsPCFaction
Definition: Chara.cs:669
override bool IsDeadOrSleeping
Definition: Chara.cs:571
void SetTempHand(int right=0, int left=0)
Definition: Chara.cs:6562
bool IsHomeMember()
Definition: Chara.cs:6447
Affinity affinity
Definition: Chara.cs:312
override void LookAt(Card c)
Definition: Chara.cs:3501
static Map _map
Definition: EClass.cs:18
void ModExp(int ele, float a, bool chain=false)
List< Chara > charas
Definition: Map.cs:81

References EClass._map, Chara.AddCondition(), Chara.affinity, AIAct.Cancel(), Card.CHA, Map.charas, Affinity.CurrentStage, Card.Dist(), AIAct.DoGoto(), Card.elements, Card.Evalue(), fails, Finish(), 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(), ntr, AIAct.owner, EClass.pc, CardRenderer.PlayAnime(), Card.PlaySound(), Card.pos, progress, Card.renderer, EClass.rnd(), Card.Say(), sell, Chara.SetTempHand(), Chara.stamina, succubus, Card.Talk(), target, totalAffinity, and Type.

◆ ShouldAllyAttack()

override bool AI_Fuck.ShouldAllyAttack ( Chara  tg)
inlinevirtual

Reimplemented from AIAct.

Definition at line 46 of file AI_Fuck.cs.

47 {
48 return tg != target;
49 }

References target.

Member Data Documentation

◆ bitch

bool AI_Fuck.bitch

Definition at line 16 of file AI_Fuck.cs.

Referenced by Finish().

◆ fails

int AI_Fuck.fails

Definition at line 26 of file AI_Fuck.cs.

Referenced by Finish(), and Run().

◆ maxProgress

int AI_Fuck.maxProgress

Definition at line 22 of file AI_Fuck.cs.

Referenced by Run().

◆ ntr

bool AI_Fuck.ntr

Definition at line 20 of file AI_Fuck.cs.

Referenced by Finish(), and Run().

◆ progress

int AI_Fuck.progress

Definition at line 24 of file AI_Fuck.cs.

Referenced by Run().

◆ sell

bool AI_Fuck.sell

Definition at line 14 of file AI_Fuck.cs.

Referenced by Finish(), and Run().

◆ succubus

bool AI_Fuck.succubus

Definition at line 18 of file AI_Fuck.cs.

Referenced by Finish(), and Run().

◆ target

Chara AI_Fuck.target

Definition at line 12 of file AI_Fuck.cs.

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

◆ totalAffinity

int AI_Fuck.totalAffinity

Definition at line 28 of file AI_Fuck.cs.

Referenced by Finish(), and Run().

Property Documentation

◆ CancelOnAggro

override bool AI_Fuck.CancelOnAggro
get

Definition at line 42 of file AI_Fuck.cs.

◆ CancelWhenDamaged

override bool AI_Fuck.CancelWhenDamaged
get

Definition at line 44 of file AI_Fuck.cs.

◆ CurrentProgress

override int AI_Fuck.CurrentProgress
get

Definition at line 40 of file AI_Fuck.cs.

◆ IsAutoTurn

override bool AI_Fuck.IsAutoTurn
get

Definition at line 34 of file AI_Fuck.cs.

◆ MaxProgress

override int AI_Fuck.MaxProgress
get

Definition at line 38 of file AI_Fuck.cs.

◆ PushChara

override bool AI_Fuck.PushChara
get

Definition at line 32 of file AI_Fuck.cs.

◆ TargetType

override TargetType AI_Fuck.TargetType
get

Definition at line 36 of file AI_Fuck.cs.

◆ Type

virtual FuckType AI_Fuck.Type
get

Definition at line 30 of file AI_Fuck.cs.

Referenced by Finish(), and Run().


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