2using System.Collections.Generic;
18 private static List<BaseArea>
_listRoom =
new List<BaseArea>();
20 public override bool IsIdle => !base.IsChildRunning;
34 public override IEnumerable<Status>
Run()
85 thing.isNPCProperty =
true;
112 for (
int k = 0; k < 10; k++)
122 yield
return DoGoto(target);
138 Act actRevive =
null;
146 string[] abilityType = act2.
source.abilityType;
147 if (!abilityType.IsEmpty() && (abilityType[0] ==
"heal" || abilityType[0] ==
"hot"))
154 List<Chara> list = (owner.IsPCParty ? EClass.pc.party.members :
new List<Chara> {
owner });
155 foreach (
Chara item2
in list)
178 owner.sharedCheckTurn += (EClass.debug.enable ? 20 : 200);
192 for (
int l = 0; l < 5; l++)
194 if (thing9.
encLV >= 0)
222 shackle = traitShackle
240 List<Chara> list2 =
new List<Chara>();
243 if (member.
Evalue(1227) > 0)
316 int num2 = num / 200;
319 if (!(value2.
source.category !=
"skill"))
335 if (randomPointInRadius !=
null)
338 if (randomPointInRadius.
IsValid)
342 pos = randomPointInRadius
432 if (nearestPoint ==
null)
438 item3.
Teleport(nearestPoint.GetNearestPoint(allowBlock:
false, allowChara:
false) ?? nearestPoint);
468 if (randomPoint2 !=
null)
496 if (randomPoint !=
null)
529 yield
return DoGoto(point);
553 string text = ((EClass.player.karma > 10) ? ((
EClass.
player.
karma < 90) ?
"" : (flag4 ?
"rumor_bad" :
"rumor_good")) : (flag4 ?
"rumor_good" :
"rumor_bad"));
561 AI_PlayMusic.ignoreDamage =
true;
563 AI_PlayMusic.ignoreDamage =
false;
580 if (tC ==
null || tC.
pop.
items.Count == 0)
628 if (room2 != room3 && room3 !=
null)
630 mtp = ((room2?.
lot != room3?.
lot) ? 0.4f : 0.7f);
634 if (
EClass.
rnd(2000) == 0 && owner.IsHuman && (owner.host ==
null || owner.host.ride !=
owner))
646 if (thing4 ==
null && !flag5)
671 c.
Talk(
"drunk_counter");
698 if (chara4 !=
owner && thing5 !=
null)
728 variation = AI_Fuck.Variation.Bitch
744 if (idAct ==
"janitor" &&
EClass.
rnd(5) == 0)
751 Thing t4 = ThingGen.Create(
"1142");
752 ActThrow.Throw(owner, c.pos, t4);
764 shackle = traitShackle2
776 if (cleanPoint !=
null)
836 owner.idleActTimer = 10 +
EClass.
rnd(50);
839 case "torture_snail":
862 case "buffGuildWatch":
878 thing7 = list3.RandomItem();
891 thing7.isNPCProperty =
true;
953 if (!EClass._zone.IsPCFaction)
955 owner.Teleport(owner.orgPos, silent: false, force: true);
971 for (
int m = 0; m < 100; m++)
976 yield
return DoGoto(randomPoint3);
982 if (!(aiIdle ==
"stand") && !(aiIdle ==
"root"))
998 yield
return Do(aI_Haul);
1004 for (
int n = 0; n < 20; n++)
1009 return randomPoint4;
1018 string text =
"idle_" + id;
1019 owner.PlaySound(text);
1020 if (
Lang.
Game.map.ContainsKey(text))
1022 owner.Say(text, owner);
1028 if (!owner.HasCondition<T>())
1036 owner.Say(
"idle_cast", owner);
1045 if (
item.type !=
null &&
item.type.uidCharas.Contains(owner.uid))
1047 _listRoom.Add(
item);
1050 return _listRoom.RandomItem();
1057 if (c == owner || !owner.
CanSee(c))
1061 return funcPickChara ==
null || funcPickChara(c);
1065 Chara chara = list.RandomItem();
1066 action?.Invoke(chara);
1076 if (c == owner || !owner.
CanSee(c))
1080 return funcPickChara ==
null || funcPickChara(c);
1084 Chara chara = list.RandomItem();
1085 action?.Invoke(chara);
1093 for (
int i = 0; i < 10; i++)
1095 Point randomPoint = owner.pos.
GetRandomPoint(7, requireLos:
true, allowChara:
true, allowBlocked:
true);
1096 if (randomPoint ==
null || randomPoint.
detail ==
null)
1100 foreach (
Thing thing
in randomPoint.detail.
things)
1104 int num = owner.Dist(thing);
1107 owner.LookAt(thing);
1108 owner.Talk(
"nice_statue");
1113 owner.LookAt(thing);
if(item3.idFile==idFirstFile &&item3.id==idFirstTopic)
Status Do(AIAct _seq, Func< Status > _onChildFail=null)
Status DoGotoSpot(Card card, Func< Status > _onChildFail=null)
Status DoGoto(Point pos, int dist=0, bool ignoreConnection=false, Func< Status > _onChildFail=null)
static Point GetCleanPoint(Chara c, int r=-1, int tries=10)
static Point GetFishingPoint(Point p)
static AI_Haul TryGetAI(Chara c)
Chara DoSomethingToNearChara(Func< Chara, bool > funcPickChara, Action< Chara > action=null)
BaseArea GetRandomAssignedRoom()
static List< BaseArea > _listRoom
override IEnumerable< Status > Run()
override bool ShouldEndMimicry
override bool InformCancel
Chara DoSomethingToCharaInRadius(int radius, Func< Chara, bool > funcPickChara, Action< Chara > action=null)
void IdleActText(string id)
void TryCast(EffectId id, int power=100)
static void Proc(EffectId id, Card cc, Card tc=null, int power=100, ActRef actRef=default(ActRef))
static EffectIRenderer Throw(Card c, Point p, Thing t, ThrowMethod method=ThrowMethod.Default, float failChance=0f)
BaseArea.AccessType accessType
virtual Point GetRandomPoint(bool walkable=true, bool allowChara=true)
int GetInt(int id, int? defaultInt=null)
void SetInt(int id, int value=0)
GlobalCharaList globalCharas
void Teleport(Point point, bool silent=false, bool force=false)
ElementContainerCard elements
bool IsRestrainedResident
CardRenderer HostRenderer
SoundSource PlaySound(string id, float v=1f, bool spatial=true)
Thing AddThing(string id, int lv=-1)
void Talk(string idTopic, string ref1=null, string ref2=null, bool forceSync=false)
int GetCurrency(string id="money")
bool IsInMutterDistance(int d=10)
void ShowEmo(Emo _emo=Emo.none, float duration=0f, bool skipSame=true)
void ModCurrency(int a, string id="money")
void DamageHP(long dmg, AttackSource attackSource=AttackSource.None, Card origin=null)
bool HasEditorTag(EditorTag tag)
void PlayAnime(AnimeID id, bool force=false)
SourceCategory.Row category
void ModNum(int a, bool notify=true)
bool HasElement(int ele, bool includeNagative=false)
void Say(string lang, string ref1=null, string ref2=null)
bool HasHobbyOrWork(string alias)
override bool IsAliveInCurrentZone
Thing FindBestFoodToEat()
Hostility OriginalHostility
void Cuddle(Chara c, bool headpat=false)
void InstantEat(Thing t=null, bool sound=true)
Condition AddCondition(string id, int p=100, bool force=false)
Chara GetNearbyCatToSniff()
bool CanSeeLos(Card c, int dist=-1)
void PickHeld(bool msg=false)
bool HasCondition(string alias)
ConTransmuteMimic mimicry
void TryPutSharedItems(IEnumerable< Thing > containers, bool msg=true)
override bool IsPCFaction
bool CanEat(Thing t, bool shouldEat=false)
void ClearInventory(ClearInventoryType type)
FactionMemberType memberType
string TalkTopic(string topic="calm")
bool MoveNeighborDefinitely()
bool UseAbility(int idAct, Card tc=null, Point pos=null, bool pt=false)
void SetTempHand(int right=0, int left=0)
MoveResult TryMoveTowards(Point p)
Chara SetEnemy(Chara c=null)
void DoHostileAction(Card _tg, bool immediate=false)
void TryTakeSharedItems(bool msg=true)
Chara SetHostility(Hostility h)
Thing Pick(Thing t, bool msg=true, bool tryStack=true)
int AllyDistance(Chara c)
static int GetFoodScore(Thing food)
int GetRaw(int offsetHours=0)
static FactionBranch Branch
static int rndHalf(int a)
static SoundManager Sound
Dictionary< int, Element > dict
Element ModTempPotential(int ele, int v, int threshMsg=0)
Element ModBase(int ele, int v)
ReligionManager religions
static bool Has(string id)
static string _currency(object a, string IDCurrency)
static LayerCraft Instance
static LayerDragGrid Instance
static bool IsVisible(Point p1, Point p2, Action< Point, bool > _onVisit=null)
Point GetRandomPoint(Point center, int radius, int tries=100, bool mustBeWalkable=true, bool requireLos=true)
static string Say(string idLang, string ref1, string ref2=null, string ref3=null, string ref4=null)
bool HasElement(int ele, bool excludePC=false)
int EvalueTotal(int ele, Func< Chara, bool > funcIf=null)
ref Vector3 Position(int height)
void ForeachNeighbor(Action< Point > action, bool diagonal=true)
Point GetNearestPoint(bool allowBlock=false, bool allowChara=true, bool allowInstalled=true, bool ignoreCenter=false, int minRadius=0)
List< Chara > ListCharasInNeighbor(Func< Chara, bool > func)
List< Chara > ListCharasInRadius(Chara cc, int dist, Func< Chara, bool > func, bool onlyVisible=true)
bool Equals(int _x, int _z)
Point GetRandomPointInRadius(int minRadius, int maxRadius, bool requireLos=true, bool allowChara=true, bool allowBlocked=false, int tries=2000)
Thing FindThing(Func< Thing, bool > func)
Point GetRandomPoint(int radius, bool requireLos=true, bool allowChara=true, bool allowBlocked=false, int tries=100)
bool IsActive(int id, int days=-1)
List< Thing > List(Func< Thing, bool > func, bool onlyAccessible=false)
static Thing CreateFromCategory(string idCat, int lv=-1)
static Thing Create(string id, int idMat=-1, int lv=-1)
virtual AI_Idle.Behaviour IdleBehaviour
virtual string IdAmbience
virtual bool AllowTraining
virtual bool CanRead(Chara c)
virtual bool CanEat(Chara c)
virtual int IdleUseChance
virtual bool IdleUse(Chara c, int dist)
virtual bool CanDrink(Chara c)
Chara SpawnMob(string id, Point pos=null)
virtual bool IsUnderwater
Card AddCard(Card t, Point point)