11 public virtual AI_Fuck.FuckType Type
21 public override bool PushChara
31 public override bool IsAutoTurn
51 public override int MaxProgress
55 return this.maxProgress;
61 public override int CurrentProgress
70 public virtual bool CanTame()
76 public override IEnumerable<
AIAct.Status> Run()
78 if (this.target ==
null)
82 if (!chara.IsHomeMember() && !chara.IsDeadOrSleeping && chara.Dist(
this.owner) <= 5)
89 if (this.target ==
null)
91 yield
return this.Cancel();
93 Chara cc = this.sell ? this.target : this.owner;
94 Chara tc = this.sell ? this.owner : this.target;
95 cc.Say(this.Type.ToString() +
"_start", cc, tc,
null,
null);
96 this.isFail = (() => !tc.IsAliveInCurrentZone || tc.Dist(this.owner) > 3);
97 if (this.Type ==
AI_Fuck.FuckType.tame)
99 cc.SetTempHand(1104, -1);
101 int destDist = (this.Type ==
AI_Fuck.FuckType.fuck) ? 1 : 1;
102 this.maxProgress = 25;
105 cc.Talk(
"seduce",
null,
null,
false);
108 for (
int i = 0; i < this.maxProgress; i = num + 1)
111 yield
return base.DoGoto(this.target.pos, destDist,
false,
null);
112 AI_Fuck.FuckType type = this.Type;
113 if (type !=
AI_Fuck.FuckType.fuck)
115 if (type ==
AI_Fuck.FuckType.tame)
119 tc.AddCondition<
ConFear>(50,
false);
121 if (i == 0 || i == 10)
123 cc.Talk(
"goodBoy",
null,
null,
false);
125 cc.elements.ModExp(237, 10,
false);
137 tc.renderer.PlayAnime(AnimeID.Shiver,
default(Vector3),
false);
140 tc.Talk(
"tailed",
null,
null,
false);
146 cc.renderer.PlayAnime(AnimeID.Attack, tc);
147 if (
EClass.rnd(3) == 0 ||
this.sell)
149 cc.Talk(
"tail",
null,
null,
false);
152 if (
EClass.rnd(3) == 0 ||
this.sell)
154 this.target.AddCondition<
ConWait>(50,
true);
166 Chara chara = this.sell ? this.target : this.owner;
167 Chara chara2 = this.sell ? this.owner : this.target;
168 if (chara.isDead || chara2.isDead)
172 bool flag =
EClass.rnd(2) == 0;
173 AI_Fuck.FuckType type = this.Type;
174 if (type !=
AI_Fuck.FuckType.fuck)
176 if (type ==
AI_Fuck.FuckType.tame)
182 chara.Say(
"tame_success", this.owner, this.target,
null,
null);
183 chara2.MakeAlly(
true);
184 chara.elements.ModExp(237, 200,
false);
188 chara.Say(
"tame_fail", chara, chara2,
null,
null);
193 chara.Say(
"tame_invalid", chara2,
null,
null);
199 for (
int i = 0; i < 2; i++)
201 Chara chara3 = (i == 0) ? chara : chara2;
207 chara3.ModExp(77, 250);
208 chara3.ModExp(71, 250);
209 chara3.ModExp(75, 250);
221 chara.Talk(
"tail_after",
null,
null,
false);
225 chara.ShowEmo(Emo.love, 0f,
true);
226 chara2.ShowEmo(Emo.love, 0f,
true);
227 EClass.player.forceTalk =
true;
228 chara2.Talk(
"seduced",
null,
null,
false);
230 else if (chara !=
EClass.pc)
232 Chara chara4 = chara;
233 Chara chara5 = chara2;
239 if (!chara.IsPCParty && chara2 ==
EClass.pc &&
EClass.rnd(4) != 0)
242 chara.ModCurrency(num,
"money");
244 if (chara.GetCurrency(
"money") >= num)
246 chara.Talk(
"tail_pay",
null,
null,
false);
250 chara.Talk(
"tail_nomoney",
null,
null,
false);
251 num = chara.GetCurrency(
"money");
252 chara2.Say(
"angry", chara2,
null,
null);
253 chara2.Talk(
"angry",
null,
null,
false);
260 chara.ModCurrency(-num,
"money");
265 EClass.player.DropReward(
ThingGen.Create(
"money", -1, -1).SetNum(num),
false);
266 EClass.player.ModKarma(-1);
271 chara2.ModCurrency(num,
"money");
278 chara2.DoHostileAction(chara,
false);
280 if (chara.IsPCParty || chara2.IsPCParty)
282 chara.stamina.Mod(-5 -
EClass.rnd(chara.stamina.max / 10 + (
this.succubus ? chara2.LV : 0) + 1));
283 chara2.stamina.Mod(-5 -
EClass.rnd(chara2.stamina.max / 20 + (
this.succubus ? chara.LV : 0) + 1));
285 AI_Fuck.<Finish>g__SuccubusExp|21_0(chara, chara2);
286 AI_Fuck.<Finish>g__SuccubusExp|21_0(chara2, chara);
288 chara2.ModAffinity(chara, flag ? 10 : -5,
true);
293 internal static void <Finish>g__SuccubusExp|21_0(
Chara c,
Chara tg)
295 if (!c.HasElement(1216, 1))
299 foreach (
Element element
in tg.elements.ListBestAttributes())
301 if (c.elements.ValueWithoutLink(element.id) < element.ValueWithoutLink)
303 c.elements.ModTempPotential(element.id, 1 +
EClass.rnd(element.ValueWithoutLink - c.elements.ValueWithoutLink(element.id) / 5 + 1), 0);
304 c.Say(
"succubus_exp", c, element.Name.ToLower(),
null);
320 public bool succubus;
323 public int maxProgress;