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 =
act.
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)
194 owner.sharedCheckTurn += (EClass.debug.enable ? 20 : 200);
208 for (
int l = 0; l < 5; l++)
210 if (thing10.
encLV >= 0)
238 shackle = traitShackle
258 List<Chara> list2 =
new List<Chara>();
261 if (member.
Evalue(1227) > 0)
275 List<Chara> list3 =
new List<Chara>();
351 int num3 = num2 / 200;
354 if (!(value2.
source.category !=
"skill"))
370 if (randomPointInRadius !=
null)
373 if (randomPointInRadius.
IsValid)
377 pos = randomPointInRadius
474 if (nearestPoint ==
null)
480 item3.
Teleport(nearestPoint.GetNearestPoint(allowBlock:
false, allowChara:
false) ?? nearestPoint);
510 if (randomPoint2 !=
null)
538 if (randomPoint !=
null)
571 yield
return DoGoto(point);
594 string[] strs =
new string[4] {
"1294",
"1294",
"1130",
"1131" };
603 SetId(
"shuriken", 1);
607 SetId(
"explosive", 1);
611 SetId(
"explosive_mega", 1);
635 SetId(strs.RandomItem(), 1);
653 string text = ((EClass.player.karma > 10) ? ((
EClass.
player.
karma < 90) ?
"" : (flag4 ?
"rumor_bad" :
"rumor_good")) : (flag4 ?
"rumor_good" :
"rumor_bad"));
661 AI_PlayMusic.ignoreDamage =
true;
663 AI_PlayMusic.ignoreDamage =
false;
680 if (tC ==
null || tC.
pop.
items.Count == 0)
728 if (room2 != room3 && room3 !=
null)
730 mtp = ((room2?.
lot != room3?.
lot) ? 0.4f : 0.7f);
746 if (thing5 ==
null && !flag5)
771 c.
Talk(
"drunk_counter");
798 if (chara4 !=
owner && thing6 !=
null)
828 variation = AI_Fuck.Variation.Bitch
844 if (idAct ==
"janitor" &&
EClass.
rnd(5) == 0)
851 Thing t4 = ThingGen.Create(
"1142");
852 ActThrow.Throw(owner, c.pos, t4);
864 shackle = traitShackle2
876 if (cleanPoint !=
null)
949 owner.idleActTimer = 10 +
EClass.
rnd(50);
952 case "torture_snail":
975 case "buffGuildWatch":
991 thing8 = list4.RandomItem();
1004 thing8.isNPCProperty =
true;
1066 if (!EClass._zone.IsPCFaction)
1068 owner.Teleport(owner.orgPos, silent: false, force: true);
1084 for (
int m = 0; m < 100; m++)
1089 yield
return DoGoto(randomPoint3);
1095 if (!(aiIdle ==
"stand") && !(aiIdle ==
"root"))
1109 if (aI_Haul !=
null)
1111 yield
return Do(aI_Haul);
1117 for (
int n = 0; n < 20; n++)
1122 return randomPoint4;
1127 void SetId(
string _id,
int _num)
1136 string text =
"idle_" + id;
1137 owner.PlaySound(text);
1138 if (
Lang.
Game.map.ContainsKey(text))
1140 owner.Say(text, owner);
1146 if (!owner.HasCondition<T>())
1154 owner.Say(
"idle_cast", owner);
1163 if (
item.type !=
null &&
item.type.uidCharas.Contains(owner.uid))
1165 _listRoom.Add(
item);
1168 return _listRoom.RandomItem();
1175 if (c == owner || !owner.
CanSee(c))
1179 return funcPickChara ==
null || funcPickChara(c);
1183 Chara chara = list.RandomItem();
1184 action?.Invoke(chara);
1194 if (c == owner || !owner.
CanSee(c))
1198 return funcPickChara ==
null || funcPickChara(c);
1202 Chara chara = list.RandomItem();
1203 action?.Invoke(chara);
1211 for (
int i = 0; i < 10; i++)
1213 Point randomPoint = owner.pos.
GetRandomPoint(7, requireLos:
true, allowChara:
true, allowBlocked:
true);
1214 if (randomPoint ==
null || randomPoint.
detail ==
null)
1218 foreach (
Thing thing
in randomPoint.detail.
things)
1222 int num = owner.Dist(thing);
1225 owner.LookAt(thing);
1226 owner.Talk(
"nice_statue");
1231 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)
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)
void AddCooldown(int idEle, int turns=0)
MoveResult TryMoveTowards(Point p)
Chara SetEnemy(Chara c=null)
void DoHostileAction(Card _tg, bool immediate=false)
void TryTakeSharedItems(bool msg=true)
ConBaseTransmuteMimic mimicry
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)