Elin Decompiled Documentation EA 23.295 Stable Patch 2
Loading...
Searching...
No Matches
ActPlan Class Reference
Inheritance diagram for ActPlan:
EClass

Classes

class  Item
 
class  List
 

Public Member Functions

string GetText (bool showName)
 
Func< bool > GetAction ()
 
void Order (string id)
 
void ShowContextMenu ()
 
bool TrySetAct (string lang, Func< bool > onPerform, Card tc, CursorInfo cursor=null, int dist=1, bool isHostileAct=false, bool localAct=true, bool canRepeat=false)
 
bool TrySetAct (string lang, Func< bool > onPerform, CursorInfo cursor=null, int dist=1)
 
bool TrySetAct (Act _act, Card _tc=null)
 
void Clear ()
 
void Update (PointTarget target)
 
void _Update (PointTarget target)
 

Public Attributes

Point pos = new Point()
 
ActInput input
 
bool performed
 
bool altAction
 
bool ignoreAddCondition
 
List list = new List()
 
int dist
 
Thing tool
 
List< ThinglistPick = new List<Thing>()
 
Act lastAct
 

Static Public Attributes

static bool warning
 
- Static Public Attributes inherited from EClass
static Core core
 

Properties

bool IsSelf [get]
 
bool IsSelfOrNeighbor [get]
 
bool IsNeighborBlocked [get]
 
bool canRepeat [get]
 
Chara cc [get]
 
CursorInfo CursorIcon [get]
 
bool WillEndTurn [get]
 
bool HideRightInfo [get]
 
bool HasAct [get]
 
bool ShowAct [get]
 
bool HasMultipleTargets [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]
 

Private Attributes

bool _canInteractNeighbor
 
bool showOrder
 

Additional Inherited Members

- 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)
 

Detailed Description

Definition at line 7 of file ActPlan.cs.

Member Function Documentation

◆ _Update()

void ActPlan._Update ( PointTarget  target)
inline

Definition at line 473 of file ActPlan.cs.

474 {
475 showOrder = false;
476 performed = false;
477 list.Clear();
478 listPick.Clear();
479 if (!pos.Equals(target.pos))
480 {
481 lastAct = null;
482 }
483 pos.Set(target.pos);
485 if (!pos.IsValid || EClass.pc.isDead)
486 {
487 return;
488 }
489 Point _pos = new Point(pos);
490 _ = target.pos.cell;
491 List<Card> items = _pos.ListCards();
492 bool isKey = input == ActInput.Key;
493 altAction = (EInput.isShiftDown && !EInput.isAltDown && !isKey) || input == ActInput.AllAction;
494 _canInteractNeighbor = dist == 0 || (dist == 1 && cc.CanInteractTo(_pos));
495 if (EClass.pc.isBlind && !_pos.Equals(EClass.pc.pos) && !isKey && input != 0)
496 {
497 return;
498 }
499 if (isKey || input == ActInput.LeftMouse || input == ActInput.AllAction)
500 {
501 if (EClass.ui.IsDragging)
502 {
503 return;
504 }
505 if (_pos.cell.outOfBounds)
506 {
507 if (EClass.player.CanExitBorder(_pos))
508 {
510 }
511 return;
512 }
513 if (!isKey && _pos.Equals(cc.pos) && EClass._zone.IsRegion)
514 {
515 TrySetAct("actNewZone", delegate
516 {
518 return false;
520 if (input == ActInput.AllAction)
521 {
522 TrySetAct("LayerTravel", delegate
523 {
524 EClass.ui.AddLayer<LayerTravel>();
525 return false;
526 }, null, CursorSystem.MoveZone, 1, isHostileAct: false, localAct: false);
527 }
528 }
529 items.ForeachReverse(delegate(Card _c)
530 {
531 Chara c2 = _c.Chara;
532 if (c2 != null && !c2.IsPC && EClass.pc.CanSee(c2))
533 {
534 int num = c2.Dist(EClass.pc);
535 if (num <= 1 || !EClass.pc.isBlind)
536 {
537 if (c2.mimicry != null && c2.mimicry.IsThing && !c2.IsPCParty)
538 {
539 if (num <= 1)
540 {
541 c2.mimicry.TrySetAct(this);
542 }
543 }
544 else
545 {
546 if (!EClass.pc.isBlind && !c2.IsHostile() && (input == ActInput.AllAction || !(c2.IsPCParty || c2.IsMinion || isKey)) && (input == ActInput.AllAction || !c2.IsNeutral() || c2.quest != null || EClass.game.quests.IsDeliverTarget(c2)) && c2.isSynced && num <= 2)
547 {
548 bool flag5 = !c2.HasCondition<ConSuspend>() && (!c2.isRestrained || !c2.IsPCFaction);
550 {
551 flag5 = false;
552 }
553 if (flag5 || altAction)
554 {
555 if (EClass.pc.HasElement(1216) && c2.HasCondition<ConSleep>())
556 {
558 {
559 target = c2,
560 variation = AI_Fuck.Variation.Succubus
561 }, c2);
562 }
563 TrySetAct(ACT.Chat, c2);
564 }
565 }
566 if (!c2.IsPC && num <= 2 && ((c2.IsPCFaction && !c2.IsDisabled) || EClass.debug.enable) && input == ActInput.AllAction)
567 {
568 TrySetAct("actTrade", delegate
569 {
571 return false;
572 }, c2, null, 2);
573 }
574 if (c2.host != EClass.pc)
575 {
576 TraitShackle traitShackle = c2.pos.FindThing<TraitShackle>();
578 {
579 if (traitShackle != null && traitShackle.AllowTraining)
580 {
582 {
583 target = c2
584 });
585 }
586 }
587 else if ((c2.IsHostile() || altAction || c2.isRestrained) && c2.IsAliveInCurrentZone)
588 {
589 TrySetAct(ACT.Melee, c2);
590 }
591 }
592 if (c2.IsPCPartyMinion && !c2.Chara.IsEscorted() && altAction)
593 {
594 TrySetAct("ActBanishSummon", delegate
595 {
596 c2.Banish(EClass.pc);
597 return true;
598 }, c2, null, 99);
599 List<Chara> list2 = new List<Chara>();
600 foreach (Chara chara in EClass._map.charas)
601 {
602 if (chara.IsPCFactionMinion && !chara.IsEscorted())
603 {
604 list2.Add(chara);
605 }
606 }
607 if (list2.Count > 1)
608 {
609 TrySetAct("ActBanishSummonAll", delegate
610 {
611 foreach (Chara item in list2)
612 {
613 item.Banish(EClass.pc);
614 }
615 return true;
616 }, c2, null, 99);
617 }
618 }
619 }
620 }
621 }
622 });
623 if (_pos.IsHidden)
624 {
625 return;
626 }
628 {
629 items.ForeachReverse(delegate(Card _c)
630 {
631 Chara c = _c.Chara;
632 if (c != null && (c.mimicry == null || c.mimicry.IsChara || c.IsPCParty))
633 {
634 bool flag3 = EClass.pc.CanSee(c);
635 if (flag3)
636 {
637 if (input == ActInput.LeftMouse && c.IsPCFaction && !c.IsPC && pos.FindThing<TraitHitchingPost>() != null)
638 {
639 Chara ride = c;
640 List<string> list = EClass.core.pccs.sets["ride"].map["body"].map.Keys.ToList();
641 int index = list.IndexOf(ride.c_idRidePCC);
642 if (index == -1)
643 {
644 index = 0;
645 }
646 TrySetAct("ActChangeRideSkin", delegate
647 {
648 UIContextMenu uIContextMenu = EClass.ui.CreateContextMenuInteraction();
649 uIContextMenu.AddSlider("rideSkin", (float a) => list[(int)a].Split('-')[0] ?? "", index, delegate(float a)
650 {
651 ride.c_idRidePCC = list[(int)a];
652 ride._CreateRenderer();
653 }, 0f, list.Count - 1, isInt: true, hideOther: false);
654 uIContextMenu.Show();
655 return false;
656 }, c);
657 }
658 if (c.host != null && EClass.pc.held != null && altAction)
659 {
660 bool flag4 = true;
662 {
663 flag4 = false;
664 }
665 if (!c.IsDisabled && flag4 && c.CanAcceptGift(EClass.pc, EClass.pc.held))
666 {
667 string lang = "actGive";
668 if (c.Evalue(1232) > 0 && EClass.pc.held.trait is TraitDrinkMilkMother)
669 {
670 lang = "actMilk";
671 }
672 TrySetAct(lang, delegate
673 {
674 if (!c.IsValidGiftWeight(EClass.pc.held, 1))
675 {
676 c.Talk("tooHeavy");
677 return true;
678 }
680 {
681 Dialog.YesNo("dialogGive".lang(EClass.pc.held.GetName(NameStyle.Full, 1)), func);
682 }
683 else
684 {
685 func();
686 }
687 return true;
688 }, c);
689 }
690 }
691 }
692 if (input == ActInput.AllAction && EClass.pc.held != null && EClass.pc.held.trait is TraitDrink)
693 {
694 TrySetAct(c.IsPC ? "actPour" : "ActThrow", delegate
695 {
696 ActThrow.Throw(EClass.pc, c.pos, c, EClass.pc.held.Split(1));
697 return true;
698 }, (c.host != null) ? c : EClass.pc.held);
699 }
700 if (!c.IsPC && c.host == null && ((!EClass.pc.isBlind && flag3) || input != ActInput.AllAction))
701 {
702 if (c.isRestrained && (input == ActInput.AllAction || (!c.IsRestrainedResident && !c.IsHostile())))
703 {
704 TrySetAct("ActUnrestrain", delegate
705 {
706 c.TryUnrestrain(force: true, EClass.pc);
707 return true;
708 }, c);
709 }
710 if (!EClass.pc.isBlind && flag3 && input == ActInput.AllAction)
711 {
712 TrySetAct(ACT.Kick, c);
713 if (c.IsMofuable)
714 {
715 TrySetAct("ActCuddle", delegate
716 {
717 EClass.pc.Cuddle(c);
718 return true;
719 }, c);
720 }
722 {
723 TrySetAct("inspect", delegate
724 {
725 c.Inspect();
726 return false;
727 }, c);
728 }
729 }
730 }
731 }
732 else if (_c.isThing)
733 {
734 if (!EClass.pc.isBlind)
735 {
736 Thing t = _c.Thing;
737 if (EClass._zone.HasField(10001) && t.trait.CanEat(EClass.pc))
738 {
739 TrySetAct(new AI_Eat
740 {
741 target = t
742 }, t);
743 }
744 if (input == ActInput.AllAction)
745 {
746 if ((EClass.debug.enable || EClass.player.HasKeyItem("license_illumination")) && t.LightData != null)
747 {
748 if (t.c_lightColor != 0)
749 {
750 TrySetAct("actClearLight", delegate
751 {
752 t.c_lightColor = 0;
753 t.RecalculateFOV();
754 t.renderer.GetTC<TCExtra>()?.RefreshColor();
755 return false;
756 }, t);
757 }
758 TrySetAct("actSetLight", delegate
759 {
760 Color lightColor = t.LightColor;
761 EClass.ui.AddLayer<LayerColorPicker>().SetColor(lightColor, lightColor, delegate(PickerState state, Color _c)
762 {
763 if (state == PickerState.Cancel)
764 {
765 t.c_lightColor = 0;
766 }
767 else
768 {
769 t.c_lightColor = (byte)Mathf.Clamp(_c.r * 32f, 1f, 31f) * 1024 + (byte)Mathf.Clamp(_c.g * 32f, 1f, 31f) * 32 + (byte)Mathf.Clamp(_c.b * 32f, 1f, 31f);
770 }
771 t.RecalculateFOV();
773 });
774 return false;
775 }, t);
776 }
778 {
779 TrySetAct("(debug) Toggle Float", delegate
780 {
781 t.isFloating = !t.isFloating;
782 return false;
783 }, t);
784 }
786 {
787 if (t.trait.CanEat(EClass.pc))
788 {
789 TrySetAct(new AI_Eat
790 {
791 target = t
792 }, t);
793 }
794 if (t.trait.CanDrink(EClass.pc))
795 {
797 {
798 target = t
799 }, t);
800 }
801 if (t.trait.CanRead(EClass.pc))
802 {
804 {
805 target = t
806 }, t);
807 }
808 if (t.trait.IsBlendBase)
809 {
810 TrySetAct("invBlend", delegate
811 {
813 return true;
814 }, t);
815 }
816 if (t.trait.CanName)
817 {
818 TrySetAct("changeName", delegate
819 {
820 Dialog.InputName("dialogChangeName", t.c_refText.IsEmpty(""), delegate(bool cancel, string text)
821 {
822 if (!cancel)
823 {
824 t.c_refText = text;
825 }
826 });
827 return false;
828 }, t);
829 }
830 }
831 }
832 if (isKey)
833 {
834 _ = t.trait.CanBeAttacked;
835 }
836 else
837 {
838 if (t.placeState == PlaceState.roaming && (_pos.cell.blocked || t.ignoreAutoPick || altAction || input == ActInput.AllAction || _pos.Equals(EClass.pc.pos)) && EClass.pc.CanPick(t))
839 {
840 listPick.Add(t);
841 }
842 if (t.IsInstalled)
843 {
844 t.trait.TrySetToggleAct(this);
845 t.trait.TrySetAct(this);
846 }
847 }
848 }
849 }
850 void func()
851 {
853 }
854 });
855 if (listPick.Count > 0)
856 {
857 if (listPick.Count == 1)
858 {
859 Thing _t = listPick[0];
861 {
862 TrySetAct("actPickOne", delegate
863 {
864 EClass.pc.Pick(_t);
865 return true;
866 }, listPick[0], CursorSystem.Hand, 1, isHostileAct: false, localAct: false);
867 }
868 }
869 else
870 {
871 IList<Card> _cards = items.Copy();
872 TrySetAct("actPickAll", delegate
873 {
874 foreach (Card item2 in _cards)
875 {
876 if (item2.isThing && item2.placeState == PlaceState.roaming)
877 {
878 EClass.pc.Pick(item2.Thing);
879 }
880 }
881 return true;
882 }, null, CursorSystem.Hand, 1, isHostileAct: false, localAct: false);
883 }
884 }
885 if (input == ActInput.AllAction && pos.IsSky && !EClass.game.IsSurvival)
886 {
887 TrySetAct("actSkyJump", delegate
888 {
890 return false;
891 });
892 }
893 if (_pos.Equals(cc.pos))
894 {
895 if (cc.held != null && !cc.held.IsHotItem)
896 {
897 TrySetAct("actPick", delegate
898 {
899 _ = cc.held;
900 cc.PickHeld(msg: true);
901 ActionMode.AdvOrRegion.updatePlans = true;
902 return false;
903 }, cc.held, CursorSystem.Inventory, 1, isHostileAct: false, localAct: false);
904 }
905 else if (!HasAct && !cc.isRestrained)
906 {
908 }
909 if (EClass.debug.enable)
910 {
911 showOrder = true;
912 }
913 if (input == ActInput.AllAction && EClass.pc.held != null && !EClass.pc.held.trait.CanOnlyCarry)
914 {
915 TrySetAct("actDrop", delegate
916 {
918 return true;
919 });
920 }
921 if (cc.isRestrained)
922 {
923 TrySetAct("ActUnrestrain", delegate
924 {
925 cc.TryUnrestrain(force: true, EClass.pc);
926 return true;
927 }, cc);
928 }
929 }
930 }
931 if (list.Count == 0 && input == ActInput.AllAction && EClass.pc.held == null && pos.cell.IsSnowTile && !pos.IsBlocked && !pos.HasObj && !pos.HasThing)
932 {
934 {
935 pos = pos.Copy()
936 });
937 }
938 if (list.Count != 0 && input != ActInput.AllAction)
939 {
940 return;
941 }
942 items.ForeachReverse(delegate(Card _c)
943 {
944 if (_c.isThing && _c.trait.CanBeAttacked && !(_c.trait is TraitTrainingDummy))
945 {
946 TrySetAct(ACT.Melee, _c);
947 }
948 });
949 }
950 else
951 {
952 if (input != ActInput.RightMouse)
953 {
954 return;
955 }
956 if (pos.cell.outOfBounds || EClass.ui.IsDragging)
957 {
958 return;
959 }
961 if (!hotItem.IsGameAction)
962 {
963 TrySetAct(hotItem.Name, delegate
964 {
965 hotItem.OnClick(hotItem.button, hotItem.hotbar);
966 return false;
967 }, null, -1);
968 }
969 else
970 {
971 hotItem.TrySetAct(this);
972 }
973 bool flag = EClass.game.config.autoCombat.enable && EClass.scene.mouseTarget.TargetChara != null && (EClass.scene.mouseTarget.TargetChara.mimicry == null || EClass.scene.mouseTarget.TargetChara.mimicry.IsChara);
974 if (hotItem.Thing != null && hotItem.Thing.trait.DisableAutoCombat)
975 {
976 flag = false;
977 }
978 if (flag)
979 {
981 bool flag2 = true;
982 if (targetChara.hostility >= Hostility.Friend)
983 {
984 flag2 = false;
985 }
987 {
988 flag2 = false;
989 }
990 if (list.Count >= 2)
991 {
992 flag2 = false;
993 }
994 if (list.Count == 1)
995 {
996 if (targetChara.hostility >= Hostility.Neutral)
997 {
998 flag2 = false;
999 }
1000 if (!list[0].act.ShowAuto)
1001 {
1002 flag2 = false;
1003 }
1004 if (EClass.player.currentHotItem is HotItemNoItem && targetChara.hostility <= Hostility.Enemy)
1005 {
1006 flag2 = true;
1007 }
1008 }
1009 if (flag2)
1010 {
1011 list.Clear();
1012 TrySetAct(new GoalAutoCombat(targetChara));
1013 }
1014 }
1015 if (list.Count == 0 && !EClass.core.config.test.toolNoPick)
1016 {
1018 }
1019 if ((bool)WidgetCurrentTool.Instance)
1020 {
1022 }
1023 }
1024 }
ActInput
Definition: ActInput.cs:2
Hostility
Definition: Hostility.cs:2
PickerState
Definition: PickerState.cs:2
PlaceState
Definition: PlaceState.cs:2
if(item3.idFile==idFirstFile &&item3.id==idFirstTopic)
Definition: UIBook.cs:627
Definition: ACT.cs:6
static ActChat Chat
Definition: ACT.cs:9
static new ActWait Wait
Definition: ACT.cs:7
static ActKick Kick
Definition: ACT.cs:13
static ActMelee Melee
Definition: ACT.cs:15
Definition: AI_Eat.cs:5
void Add(Act a, string s="")
Definition: ActPlan.cs:11
int dist
Definition: ActPlan.cs:168
bool _canInteractNeighbor
Definition: ActPlan.cs:162
bool altAction
Definition: ActPlan.cs:158
bool showOrder
Definition: ActPlan.cs:164
Chara cc
Definition: ActPlan.cs:204
Act lastAct
Definition: ActPlan.cs:174
ActInput input
Definition: ActPlan.cs:154
Point pos
Definition: ActPlan.cs:152
bool IsSelfOrNeighbor
Definition: ActPlan.cs:178
List< Thing > listPick
Definition: ActPlan.cs:172
List list
Definition: ActPlan.cs:166
bool TrySetAct(string lang, Func< bool > onPerform, Card tc, CursorInfo cursor=null, int dist=1, bool isHostileAct=false, bool localAct=true, bool canRepeat=false)
Definition: ActPlan.cs:372
bool performed
Definition: ActPlan.cs:156
bool HasAct
Definition: ActPlan.cs:246
TC GetTC(string id)
Definition: Card.cs:11
bool IsPCFactionOrMinion
Definition: Card.cs:2312
virtual bool isThing
Definition: Card.cs:2119
virtual Chara Chara
Definition: Card.cs:2108
bool isNPCProperty
Definition: Card.cs:555
bool IsRestrainedResident
Definition: Card.cs:2298
bool isFloating
Definition: Card.cs:651
bool isRestrained
Definition: Card.cs:567
bool ignoreAutoPick
Definition: Card.cs:507
string c_refText
Definition: Card.cs:1655
bool IsHotItem
Definition: Card.cs:120
PlaceState placeState
Definition: Card.cs:84
void RecalculateFOV()
Definition: Card.cs:6637
Point pos
Definition: Card.cs:60
int c_lightColor
Definition: Card.cs:1109
Trait trait
Definition: Card.cs:54
string c_idRidePCC
Definition: Card.cs:1679
bool IsInstalled
Definition: Card.cs:2421
virtual Thing Thing
Definition: Card.cs:2096
int Evalue(int ele)
Definition: Card.cs:2611
int Dist(Card c)
Definition: Card.cs:7974
LightData LightData
Definition: Card.cs:2470
void TryUnrestrain(bool force=false, Chara c=null)
Definition: Card.cs:7380
Color LightColor
Definition: Card.cs:1121
void Inspect()
Definition: Card.cs:8159
CardRenderer renderer
Definition: Card.cs:62
bool HasElement(int ele, bool includeNagative=false)
Definition: Card.cs:6168
bool IsSnowTile
Definition: Cell.cs:782
bool IsTopWater
Definition: Cell.cs:700
bool outOfBounds
Definition: Cell.cs:414
Definition: Chara.cs:10
override bool IsAliveInCurrentZone
Definition: Chara.cs:563
Card held
Definition: Chara.cs:70
bool CanAcceptGift(Chara c, Card t)
Definition: Chara.cs:8440
void Cuddle(Chara c, bool headpat=false)
Definition: Chara.cs:6368
bool CanPick(Card c)
Definition: Chara.cs:4348
override bool IsPC
Definition: Chara.cs:626
Chara host
Definition: Chara.cs:33
bool IsValidGiftWeight(Card t, int num=-1)
Definition: Chara.cs:8409
bool IsMofuable
Definition: Chara.cs:1125
override bool IsPCParty
Definition: Chara.cs:629
void PickHeld(bool msg=false)
Definition: Chara.cs:4606
bool HasCondition(string alias)
Definition: Chara.cs:9639
void Banish(Chara owner)
Definition: Chara.cs:2393
override bool IsDisabled
Definition: Chara.cs:587
override bool IsMinion
Definition: Chara.cs:641
override bool isSynced
Definition: Chara.cs:705
override CardRenderer _CreateRenderer()
Definition: Chara.cs:6798
override bool IsPCFaction
Definition: Chara.cs:685
override bool IsPCPartyMinion
Definition: Chara.cs:653
bool CanSee(Card c)
Definition: Chara.cs:1244
override bool IsPCFactionMinion
Definition: Chara.cs:669
bool CanInteractTo(Card c)
Definition: Chara.cs:2596
void DropThing(Thing t, int num=-1)
Definition: Chara.cs:4703
void GiveGift(Chara c, Thing t)
Definition: Chara.cs:8465
Quest quest
Definition: Chara.cs:24
bool isBlind
Definition: Chara.cs:132
void FallFromZone()
Definition: Chara.cs:3568
Hostility hostility
Definition: Chara.cs:293
Card SplitHeld(int a)
Definition: Chara.cs:4666
bool IsHostile()
Definition: Chara.cs:6681
bool isDead
Definition: Chara.cs:391
ConBaseTransmuteMimic mimicry
Definition: Chara.cs:106
Thing Pick(Thing t, bool msg=true, bool tryStack=true)
Definition: Chara.cs:4386
bool IsEscorted()
Definition: Chara.cs:2473
bool IsNeutral()
Definition: Chara.cs:6728
virtual void TrySetAct(ActPlan p)
new GameConfig game
Definition: CoreConfig.cs:609
bool showExtra
Definition: CoreDebug.cs:168
bool enable
Definition: CoreDebug.cs:286
PCCManager pccs
Definition: Core.cs:41
CoreConfig config
Definition: Core.cs:70
static CursorInfo Hand
Definition: CursorSystem.cs:60
static CursorInfo Inventory
Definition: CursorSystem.cs:92
static CursorInfo MoveZone
Definition: CursorSystem.cs:86
Definition: Dialog.cs:7
static Dialog InputName(string langDetail, string text, Action< bool, string > onClose, InputType inputType=InputType.Default)
Definition: Dialog.cs:536
Definition: EClass.cs:6
static Game game
Definition: EClass.cs:9
static Scene scene
Definition: EClass.cs:31
static Core core
Definition: EClass.cs:7
static Zone _zone
Definition: EClass.cs:21
static Map _map
Definition: EClass.cs:19
static Player player
Definition: EClass.cs:13
static Chara pc
Definition: EClass.cs:15
static CoreDebug debug
Definition: EClass.cs:49
static UI ui
Definition: EClass.cs:17
ConfigAutoCombat autoCombat
Definition: Game.cs:94
bool IsSurvival
Definition: Game.cs:276
Config config
Definition: Game.cs:219
QuestManager quests
Definition: Game.cs:183
static bool disableTool
Definition: HotItemHeld.cs:11
static bool _TrySetAct(ActPlan p)
virtual bool TrySetAct(ActPlan p)
Definition: HotItem.cs:107
virtual bool IsGameAction
Definition: HotItem.cs:46
virtual Thing Thing
Definition: HotItem.cs:38
static LayerDragGrid Create(InvOwnerDraglet owner, bool refuelFromLayerDragGrid=false)
static LayerInventory CreateContainer(Card owner)
List< Chara > charas
Definition: Map.cs:81
bool CanExitBorder(Point p)
Definition: Player.cs:1961
bool HasKeyItem(string alias)
Definition: Player.cs:2235
void EnterLocalZone(bool encounter=false, Chara mob=null)
Definition: Player.cs:2018
void ExitBorder(ActPlan p=null)
Definition: Player.cs:1919
HotItem currentHotItem
Definition: Player.cs:1167
Chara TargetChara
Definition: PointTarget.cs:41
Definition: Point.cs:9
List< Card > ListCards(bool includeMasked=false)
Definition: Point.cs:1051
Point Copy()
Definition: Point.cs:491
bool IsSky
Definition: Point.cs:224
Point Set(int _x, int _z)
Definition: Point.cs:503
bool IsBlocked
Definition: Point.cs:363
bool HasThing
Definition: Point.cs:251
bool Equals(int _x, int _z)
Definition: Point.cs:960
bool IsValid
Definition: Point.cs:88
bool HasObj
Definition: Point.cs:137
int Distance(Point p)
Definition: Point.cs:989
bool IsHidden
Definition: Point.cs:347
Cell cell
Definition: Point.cs:51
Thing FindThing(Func< Thing, bool > func)
Definition: Point.cs:1140
bool IsDeliverTarget(Chara c)
PointTarget mouseTarget
Definition: Scene.cs:135
virtual bool IsRegion
Definition: Spatial.cs:515
void RefreshColor()
Definition: TCExtra.cs:171
Definition: Thing.cs:8
virtual bool AllowTraining
Definition: TraitShackle.cs:15
virtual bool IsBlendBase
Definition: Trait.cs:275
virtual bool CanBeAttacked
Definition: Trait.cs:177
virtual bool IsTool
Definition: Trait.cs:379
virtual void TrySetAct(ActPlan p)
Definition: Trait.cs:1060
virtual bool CanRead(Chara c)
Definition: Trait.cs:995
virtual void TrySetToggleAct(ActPlan p)
Definition: Trait.cs:1266
virtual bool CanName
Definition: Trait.cs:147
virtual bool CanEat(Chara c)
Definition: Trait.cs:1004
virtual bool DisableAutoCombat
Definition: Trait.cs:211
virtual bool CanDrink(Chara c)
Definition: Trait.cs:1013
virtual bool CanOnlyCarry
Definition: Trait.cs:305
virtual string Name
Definition: UIButton.cs:19
void Show(UIItem i)
UIContextMenuItem AddSlider(string text, Func< float, string > textFunc, float value, Action< float > action, float min=0f, float max=1f, bool isInt=false, bool hideOther=true, bool useInput=false)
static WidgetCurrentTool Instance
UIPlaceHelper placer
bool HasField(int idEle)
Definition: Zone.cs:2954
virtual bool IsUserZone
Definition: Zone.cs:273
ZoneInstance instance
Definition: Zone.cs:55

References _canInteractNeighbor, Chara._CreateRenderer(), EClass._map, HotItemNoItem._TrySetAct(), EClass._zone, ActPlan.List.Add(), UIContextMenu.AddSlider(), TraitShackle.AllowTraining, altAction, Game.Config.autoCombat, Chara.Banish(), ConfigAutoCombat.bDontAutoAttackNeutral, Algorithms.WeightCell.blocked, Card.c_idRidePCC, Card.c_lightColor, Card.c_refText, Chara.CanAcceptGift(), Trait.CanBeAttacked, Trait.CanDrink(), Trait.CanEat(), Player.CanExitBorder(), Chara.CanInteractTo(), Trait.CanName, Trait.CanOnlyCarry, Chara.CanPick(), Trait.CanRead(), Chara.CanSee(), cc, Point.cell, Card.Chara, Map.charas, ACT.Chat, Color, Core.config, Game.config, CoreConfig.GameConfig.confirmGive, Point.Copy(), EClass.core, LayerDragGrid.Create(), LayerInventory.CreateContainer(), Chara.Cuddle(), Player.currentHotItem, EClass.debug, Trait.DisableAutoCombat, HotItemHeld.disableTool, dist, Card.Dist(), Point.Distance(), Chara.DropThing(), CoreDebug.enable, Player.EnterLocalZone(), Point.Equals(), Card.Evalue(), Player.ExitBorder(), Chara.FallFromZone(), Point.FindThing(), CoreConfig.game, EClass.game, CardRenderer.GetTC(), Chara.GiveGift(), CursorSystem.Hand, HasAct, Chara.HasCondition(), Card.HasElement(), Zone.HasField(), Player.HasKeyItem(), Point.HasObj, Point.HasThing, Chara.held, Chara.host, Chara.hostility, if(), Card.ignoreAutoPick, input, Dialog.InputName(), Card.Inspect(), WidgetCurrentTool.Instance, Zone.instance, CursorSystem.Inventory, Chara.IsAliveInCurrentZone, Trait.IsBlendBase, Chara.isBlind, Point.IsBlocked, ConBaseTransmuteMimic.IsChara, Chara.isDead, QuestManager.IsDeliverTarget(), Chara.IsDisabled, Chara.IsEscorted(), Card.isFloating, HotItem.IsGameAction, Point.IsHidden, Chara.IsHostile(), Card.IsHotItem, Card.IsInstalled, Chara.IsMinion, Chara.IsMofuable, Chara.IsNeutral(), Card.isNPCProperty, Chara.IsPC, Chara.IsPCFaction, Chara.IsPCFactionMinion, Card.IsPCFactionOrMinion, Chara.IsPCParty, Chara.IsPCPartyMinion, Spatial.IsRegion, Card.isRestrained, Card.IsRestrainedResident, IsSelfOrNeighbor, Point.IsSky, Cell.IsSnowTile, Game.IsSurvival, Chara.isSynced, Card.isThing, ConBaseTransmuteMimic.IsThing, Trait.IsTool, Cell.IsTopWater, Zone.IsUserZone, Point.IsValid, Chara.IsValidGiftWeight(), item, ACT.Kick, lastAct, Card.LightColor, Card.LightData, list, Point.ListCards(), listPick, ACT.Melee, Chara.mimicry, Scene.mouseTarget, CursorSystem.MoveZone, UIButton.Item.Name, Cell.outOfBounds, EClass.pc, Core.pccs, performed, Chara.Pick(), Chara.PickHeld(), WidgetCurrentTool.placer, Card.placeState, EClass.player, pos, Card.pos, PointTarget.pos, Chara.quest, Game.quests, Card.RecalculateFOV(), UIPlaceHelper.Refresh(), TCExtra.RefreshColor(), Card.renderer, EClass.scene, Point.Set(), UIContextMenu.Show(), CoreDebug.showExtra, showOrder, Chara.SplitHeld(), PointTarget.TargetChara, CoreConfig.test, Card.Thing, HotItem.Thing, CoreConfig.Test.toolNoPick, Card.trait, ConBaseTransmuteMimic.TrySetAct(), HotItem.TrySetAct(), Trait.TrySetAct(), TrySetAct(), Trait.TrySetToggleAct(), Card.TryUnrestrain(), EClass.ui, and ACT.Wait.

Referenced by Update().

◆ Clear()

void ActPlan.Clear ( )
inline

Definition at line 433 of file ActPlan.cs.

434 {
435 list.Clear();
436 pos.IsValid = false;
437 }

References list.

Referenced by AM_Adv.ClearPlans().

◆ GetAction()

Func< bool > ActPlan.GetAction ( )
inline

Definition at line 289 of file ActPlan.cs.

290 {
291 if (list.Count == 0)
292 {
293 return () => false;
294 }
295 if (list.Count > 1)
296 {
297 return delegate
298 {
300 {
301 return false;
302 }
304 return false;
305 };
306 }
307 Item item = list[0];
308 return delegate
309 {
310 if (item.act is AIAct)
311 {
312 (item.act as AIAct).owner = EClass.pc;
313 }
314 if (performed && !item.act.CanPressRepeat)
315 {
316 return false;
317 }
318 performed = true;
319 lastAct = item.act;
320 return item.Perform(performed);
321 };
322 }
Definition: AIAct.cs:6
void ShowContextMenu()
Definition: ActPlan.cs:330
static bool SearchMedal(Chara c, Point p)
Definition: ActWait.cs:22

References Point.Equals(), item, lastAct, list, EClass.pc, performed, pos, Card.pos, ActWait.SearchMedal(), and ShowContextMenu().

Referenced by AM_Adv.AxisMove(), and AM_Adv.PressedAction.SetPlan().

◆ GetText()

string ActPlan.GetText ( bool  showName)
inline

Definition at line 276 of file ActPlan.cs.

277 {
278 if (list.Count == 0)
279 {
280 return "";
281 }
282 if (list.Count == 1)
283 {
284 return list[0].GetText(showName);
285 }
286 return "+" + list.Count + ((HasMultipleTargets || list[0].tc == null) ? ("\n<size=28>(" + "multipleTargets".lang() + ")</size>") : ("\n<size=28>" + list[0].tc.Name + list[0].tc.GetExtraName() + "</size>"));
287 }
bool HasMultipleTargets
Definition: ActPlan.cs:265

References HasMultipleTargets, and list.

Referenced by Update().

◆ Order()

void ActPlan.Order ( string  id)
inline

Definition at line 324 of file ActPlan.cs.

325 {
326 EClass.player.forceTalk = true;
327 EClass.pc.SayRaw(id.lang());
328 }
void SayRaw(string text, string ref1=null, string ref2=null)
Definition: Card.cs:7078

References EClass.pc, and Card.SayRaw().

Referenced by ShowContextMenu().

◆ ShowContextMenu()

void ActPlan.ShowContextMenu ( )
inline

Definition at line 330 of file ActPlan.cs.

331 {
332 UIContextMenu uIContextMenu = EClass.ui.CreateContextMenuInteraction();
333 int num = 1;
334 if (showOrder)
335 {
336 UIContextMenu uIContextMenu2 = uIContextMenu.AddChild("order_ally");
337 uIContextMenu2.AddButton("order_fight", delegate
338 {
339 Order("order_fight");
340 });
341 uIContextMenu2.AddButton("order_heal", delegate
342 {
343 Order("order_heal");
344 });
345 uIContextMenu2.AddButton("order_wait", delegate
346 {
347 Order("order_wait");
348 });
349 }
350 foreach (Item i in list)
351 {
352 string textContext = i.GetTextContext(HasMultipleTargets);
353 textContext = textContext.Replace("\n", " ").Replace(Environment.NewLine, " ");
354 uIContextMenu.AddButton(textContext, delegate
355 {
356 performed = true;
357 if (i.Perform())
358 {
360 }
361 });
362 num++;
363 if (num >= 21)
364 {
365 break;
366 }
367 }
368 uIContextMenu.Show();
369 EClass.ui.hud.HideMouseInfo();
370 }
void Order(string id)
Definition: ActPlan.cs:324
void EndTurn(bool consume=true)
Definition: Player.cs:2153
void AddButton(Func< string > funcText, UnityAction action=null)
UIContextMenu AddChild(string idLang, TextAnchor anchor)

References UIContextMenu.AddButton(), UIContextMenu.AddChild(), Player.EndTurn(), ActPlan.Item.GetTextContext(), HasMultipleTargets, list, Order(), ActPlan.Item.Perform(), performed, EClass.player, showOrder, and EClass.ui.

Referenced by GetAction(), and AM_Adv.ShowAllAction().

◆ TrySetAct() [1/3]

bool ActPlan.TrySetAct ( Act  _act,
Card  _tc = null 
)
inline

Definition at line 395 of file ActPlan.cs.

396 {
397 if (!ignoreAddCondition && !_act.CanPerform(cc, _tc, pos))
398 {
399 return false;
400 }
401 Item item = new Item
402 {
403 act = _act,
404 tc = _tc,
405 pos = pos.Copy()
406 };
407 if (_tc != null && _tc.isChara)
408 {
409 int num = -1;
410 for (int i = 0; i < list.Count; i++)
411 {
412 if (list[i].tc == _tc)
413 {
414 num = i;
415 }
416 }
417 if (num != -1)
418 {
419 list.Insert(num + 1, item);
420 }
421 else
422 {
423 list.Add(item);
424 }
425 }
426 else
427 {
428 list.Add(item);
429 }
430 return true;
431 }
bool ignoreAddCondition
Definition: ActPlan.cs:160
virtual bool CanPerform()
Definition: ACT.cs:321
virtual bool isChara
Definition: Card.cs:2121

References ActPlan.List.Add(), Act.CanPerform(), cc, Point.Copy(), ignoreAddCondition, item, list, and pos.

◆ TrySetAct() [2/3]

bool ActPlan.TrySetAct ( string  lang,
Func< bool >  onPerform,
Card  tc,
CursorInfo  cursor = null,
int  dist = 1,
bool  isHostileAct = false,
bool  localAct = true,
bool  canRepeat = false 
)
inline

Definition at line 372 of file ActPlan.cs.

373 {
374 return TrySetAct(new DynamicAct(lang, onPerform)
375 {
376 id = lang,
377 dist = dist,
378 isHostileAct = isHostileAct,
379 localAct = localAct,
380 cursor = ((cursor == CursorSystem.Arrow) ? null : cursor),
381 canRepeat = () => canRepeat
382 }, tc);
383 }
bool canRepeat
Definition: ActPlan.cs:193
static CursorInfo Arrow
Definition: CursorSystem.cs:46

References CursorSystem.Arrow, canRepeat, dist, and TrySetAct().

Referenced by HotItemNoItem._TrySetAct(), _Update(), ConTransmuteMimic.TrySetAct(), HotItemAct.TrySetAct(), HotItemHeld.TrySetAct(), Trait.TrySetAct(), TraitAltar.TrySetAct(), TraitAltarChaos.TrySetAct(), TraitBath.TrySetAct(), TraitBed.TrySetAct(), TraitBuildBoard.TrySetAct(), TraitCanvas.TrySetAct(), TraitContainer.TrySetAct(), TraitCoreDefense.TrySetAct(), TraitCoreZone.TrySetAct(), TraitCrafter.TrySetAct(), TraitDeliveryChest.TrySetAct(), TraitDoor.TrySetAct(), TraitDrawingPaper.TrySetAct(), TraitEffect.TrySetAct(), TraitFactionBoard.TrySetAct(), TraitFigure.TrySetAct(), TraitGacha.TrySetAct(), TraitHoard.TrySetAct(), TraitHomeBoard.TrySetAct(), TraitHouseBoard.TrySetAct(), TraitMapBoard.TrySetAct(), TraitMirror.TrySetAct(), TraitNewspaper.TrySetAct(), TraitNewZone.TrySetAct(), TraitNote.TrySetAct(), TraitPaintBoard.TrySetAct(), TraitPartyBoard.TrySetAct(), TraitPillowStrange.TrySetAct(), TraitQuestBoard.TrySetAct(), TraitResearchBoard.TrySetAct(), TraitResidentBoard.TrySetAct(), TraitRoomPlate.TrySetAct(), TraitSpecialLantern.TrySetAct(), TraitSwitch.TrySetAct(), TraitTeleporter.TrySetAct(), TraitToolMusic.TrySetAct(), TraitToolMusicBig.TrySetAct(), TraitTrainingDummy.TrySetAct(), TraitWaystone.TrySetAct(), TraitWell.TrySetAct(), TrySetAct(), TraitBroom.TrySetHeldAct(), TraitCatalyst.TrySetHeldAct(), TraitDetector.TrySetHeldAct(), TraitFakeTile.TrySetHeldAct(), TraitGene.TrySetHeldAct(), TraitRod.TrySetHeldAct(), TraitSalesTag.TrySetHeldAct(), TraitShackle.TrySetHeldAct(), TraitSyringeBlood.TrySetHeldAct(), TraitSyringeGene.TrySetHeldAct(), TraitSyringeHeaven.TrySetHeldAct(), TraitSyringeUnicorn.TrySetHeldAct(), TraitToolBuild.TrySetHeldAct(), TraitToolSickle.TrySetHeldAct(), TraitToolTorch.TrySetHeldAct(), TraitToolWaterCan.TrySetHeldAct(), TraitToolWaterPot.TrySetHeldAct(), TraitWrench.TrySetHeldAct(), Trait.TrySetToggleAct(), and HotItemHeld.TrySetToolAct().

◆ TrySetAct() [3/3]

bool ActPlan.TrySetAct ( string  lang,
Func< bool >  onPerform,
CursorInfo  cursor = null,
int  dist = 1 
)
inline

Definition at line 385 of file ActPlan.cs.

386 {
387 return TrySetAct(new DynamicAct(lang, onPerform)
388 {
389 id = lang,
390 dist = dist,
391 cursor = ((cursor == CursorSystem.Arrow) ? null : cursor)
392 });
393 }

References CursorSystem.Arrow, dist, and TrySetAct().

◆ Update()

void ActPlan.Update ( PointTarget  target)
inline

Definition at line 439 of file ActPlan.cs.

440 {
441 if (warning)
442 {
443 return;
444 }
445 _Update(target);
446 if (!HasAct)
447 {
448 return;
449 }
450 Color effectColor = ((list.Count == 1) ? list[0].act.GetActPlanColor() : EClass.Colors.colorAct);
451 if (input == ActInput.LeftMouse || input == ActInput.Key)
452 {
453 EClass.ui.hud.textLeft.SetText(GetText(showName: true));
454 Outline[] components = EClass.ui.hud.textLeft.GetComponents<Outline>();
455 for (int i = 0; i < components.Length; i++)
456 {
457 components[i].effectColor = effectColor;
458 }
459 }
460 else if (input == ActInput.RightMouse)
461 {
463 EClass.ui.hud.imageRight.rectTransform.localScale = new Vector3(2f, 2f, 1f);
464 EClass.ui.hud.textRight.SetText(GetText(showName: true));
465 Outline[] components = EClass.ui.hud.textRight.GetComponents<Outline>();
466 for (int i = 0; i < components.Length; i++)
467 {
468 components[i].effectColor = effectColor;
469 }
470 }
471 }
static bool warning
Definition: ActPlan.cs:150
string GetText(bool showName)
Definition: ActPlan.cs:276
void _Update(PointTarget target)
Definition: ActPlan.cs:473
static ColorProfile Colors
Definition: EClass.cs:39
virtual void SetImage(Image icon)
Definition: HotItem.cs:91

References _Update(), Color, ColorProfile.colorAct, EClass.Colors, Player.currentHotItem, GetText(), HasAct, input, list, Outline, EClass.player, HotItem.SetImage(), EClass.ui, and warning.

Referenced by AM_Adv.AxisMove(), HotItemHeld.CanRotate(), AM_Adv.SetPressedAction(), AM_Adv.ShowAllAction(), and AM_Adv.UpdatePlans().

Member Data Documentation

◆ _canInteractNeighbor

bool ActPlan._canInteractNeighbor
private

Definition at line 162 of file ActPlan.cs.

Referenced by _Update().

◆ altAction

◆ dist

int ActPlan.dist

Definition at line 168 of file ActPlan.cs.

Referenced by _Update(), and TrySetAct().

◆ ignoreAddCondition

bool ActPlan.ignoreAddCondition

Definition at line 160 of file ActPlan.cs.

Referenced by TrySetAct().

◆ input

◆ lastAct

Act ActPlan.lastAct

Definition at line 174 of file ActPlan.cs.

Referenced by _Update(), and GetAction().

◆ list

◆ listPick

List<Thing> ActPlan.listPick = new List<Thing>()

Definition at line 172 of file ActPlan.cs.

Referenced by _Update().

◆ performed

bool ActPlan.performed

◆ pos

◆ showOrder

bool ActPlan.showOrder
private

Definition at line 164 of file ActPlan.cs.

Referenced by _Update(), and ShowContextMenu().

◆ tool

Thing ActPlan.tool

Definition at line 170 of file ActPlan.cs.

◆ warning

bool ActPlan.warning
static

Definition at line 150 of file ActPlan.cs.

Referenced by ActPlan.Item.Perform(), and Update().

Property Documentation

◆ canRepeat

bool ActPlan.canRepeat
get

Definition at line 192 of file ActPlan.cs.

193 {
194 get
195 {
196 if (list.Count == 1)
197 {
198 return list[0].act.CanPressRepeat;
199 }
200 return false;
201 }
202 }

Referenced by AM_Adv.AxisMove(), AM_Adv.PressedAction.SetPlan(), and TrySetAct().

◆ cc

Chara ActPlan.cc
get

Definition at line 204 of file ActPlan.cs.

Referenced by _Update(), TrySetAct(), HotItemHeld.TrySetAct(), and Trait.TrySetAct().

◆ CursorIcon

CursorInfo ActPlan.CursorIcon
get

Definition at line 206 of file ActPlan.cs.

207 {
208 get
209 {
210 if (list.Count != 0)
211 {
212 if (list.Count <= 1)
213 {
214 return list[0].act.GetCursorIcon(list[0].tc);
215 }
216 return CursorSystem.Notice;
217 }
218 return null;
219 }
220 }
static CursorInfo Notice
Definition: CursorSystem.cs:76

Referenced by AM_Adv.OnUpdateCursor().

◆ HasAct

◆ HasMultipleTargets

bool ActPlan.HasMultipleTargets
get

Definition at line 264 of file ActPlan.cs.

265 {
266 get
267 {
268 if (list.Count > 1)
269 {
270 return list[0].tc != list.LastItem().tc;
271 }
272 return false;
273 }
274 }

Referenced by GetText(), and ShowContextMenu().

◆ HideRightInfo

bool ActPlan.HideRightInfo
get

Definition at line 234 of file ActPlan.cs.

235 {
236 get
237 {
238 if (list.Count > 0)
239 {
240 return list[0].act.HideRightInfo;
241 }
242 return false;
243 }
244 }

Referenced by AM_Adv.PressedAction.SetPlan().

◆ IsNeighborBlocked

bool ActPlan.IsNeighborBlocked
get

Definition at line 180 of file ActPlan.cs.

181 {
182 get
183 {
185 {
186 return dist == 1;
187 }
188 return false;
189 }
190 }

Referenced by HotItemNoItem._TrySetAct(), and HotItemHeld.TrySetToolAct().

◆ IsSelf

◆ IsSelfOrNeighbor

◆ ShowAct

bool ActPlan.ShowAct
get

Definition at line 248 of file ActPlan.cs.

249 {
250 get
251 {
252 if (HasAct)
253 {
254 if (lastAct != list[0].act)
255 {
256 return list[0].act.ShowMouseHint(list[0].tc);
257 }
258 return false;
259 }
260 return false;
261 }
262 }

Referenced by AM_Adv.OnUpdateCursor().

◆ WillEndTurn

bool ActPlan.WillEndTurn
get

Definition at line 222 of file ActPlan.cs.

223 {
224 get
225 {
226 if (list.Count > 0)
227 {
228 return list[0].act.WillEndTurn;
229 }
230 return false;
231 }
232 }

Referenced by AM_Adv.AxisMove(), and AM_Adv.PressedAction.SetPlan().


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