Elin Decompiled Documentation EA 23.189 Nightly
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 (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)
 

Detailed Description

Definition at line 7 of file ActPlan.cs.

Member Function Documentation

◆ _Update()

void ActPlan._Update ( PointTarget  target)
inline

Definition at line 467 of file ActPlan.cs.

468 {
469 showOrder = false;
470 performed = false;
471 list.Clear();
472 listPick.Clear();
473 if (!pos.Equals(target.pos))
474 {
475 lastAct = null;
476 }
477 pos.Set(target.pos);
479 if (!pos.IsValid || EClass.pc.isDead)
480 {
481 return;
482 }
483 Point _pos = new Point(pos);
484 _ = target.pos.cell;
485 List<Card> items = _pos.ListCards();
486 bool isKey = input == ActInput.Key;
487 altAction = (EInput.isShiftDown && !EInput.isAltDown && !isKey) || input == ActInput.AllAction;
488 _canInteractNeighbor = dist == 0 || (dist == 1 && cc.CanInteractTo(_pos));
489 if (EClass.pc.isBlind && !_pos.Equals(EClass.pc.pos) && !isKey && input != 0)
490 {
491 return;
492 }
493 if (isKey || input == ActInput.LeftMouse || input == ActInput.AllAction)
494 {
495 if (EClass.ui.IsDragging)
496 {
497 return;
498 }
499 if (_pos.cell.outOfBounds)
500 {
501 if (EClass.player.CanExitBorder(_pos))
502 {
504 }
505 return;
506 }
507 if (!isKey && _pos.Equals(cc.pos) && EClass._zone.IsRegion)
508 {
509 TrySetAct("actNewZone", delegate
510 {
512 return false;
514 if (input == ActInput.AllAction)
515 {
516 TrySetAct("LayerTravel", delegate
517 {
518 EClass.ui.AddLayer<LayerTravel>();
519 return false;
520 }, null, CursorSystem.MoveZone, 1, isHostileAct: false, localAct: false);
521 }
522 }
523 items.ForeachReverse(delegate(Card _c)
524 {
525 Chara c2 = _c.Chara;
526 if (c2 != null && !c2.IsPC && EClass.pc.CanSee(c2))
527 {
528 int num = c2.Dist(EClass.pc);
529 if (num <= 1 || !EClass.pc.isBlind)
530 {
531 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)
532 {
533 bool flag5 = !c2.HasCondition<ConSuspend>() && (!c2.isRestrained || !c2.IsPCFaction);
535 {
536 flag5 = false;
537 }
538 if (flag5 || altAction)
539 {
540 if (EClass.pc.HasElement(1216) && c2.HasCondition<ConSleep>())
541 {
543 {
544 target = c2,
545 succubus = true
546 }, c2);
547 }
548 TrySetAct(ACT.Chat, c2);
549 }
550 }
551 if (c2.host != EClass.pc)
552 {
553 TraitShackle traitShackle = c2.pos.FindThing<TraitShackle>();
555 {
556 if (traitShackle != null && traitShackle.AllowTraining)
557 {
559 {
560 target = c2
561 });
562 }
563 }
564 else if ((c2.IsHostile() || altAction || c2.isRestrained) && c2.IsAliveInCurrentZone)
565 {
566 TrySetAct(ACT.Melee, c2);
567 }
568 }
569 if (c2.IsPCPartyMinion && !c2.Chara.IsEscorted() && altAction)
570 {
571 TrySetAct("ActBanishSummon", delegate
572 {
573 Banish(c2);
574 return true;
575 }, c2, null, 99);
576 List<Chara> list2 = new List<Chara>();
577 foreach (Chara chara in EClass._map.charas)
578 {
579 if (chara.IsPCPartyMinion && !chara.IsEscorted())
580 {
581 list2.Add(chara);
582 }
583 }
584 if (list2.Count > 1)
585 {
586 TrySetAct("ActBanishSummonAll", delegate
587 {
588 foreach (Chara item in list2)
589 {
590 Banish(item);
591 }
592 return true;
593 }, c2, null, 99);
594 }
595 }
596 }
597 }
598 });
599 if (_pos.IsHidden)
600 {
601 return;
602 }
604 {
605 items.ForeachReverse(delegate(Card _c)
606 {
607 Chara c = _c.Chara;
608 if (c != null)
609 {
610 bool flag3 = EClass.pc.CanSee(c);
611 if (flag3)
612 {
613 if (input == ActInput.LeftMouse && c.IsPCFaction && !c.IsPC && pos.FindThing<TraitHitchingPost>() != null)
614 {
615 Chara ride = c;
616 List<string> list = EClass.core.pccs.sets["ride"].map["body"].map.Keys.ToList();
617 int index = list.IndexOf(ride.c_idRidePCC);
618 if (index == -1)
619 {
620 index = 0;
621 }
622 TrySetAct("ActChangeRideSkin", delegate
623 {
624 UIContextMenu uIContextMenu = EClass.ui.CreateContextMenuInteraction();
625 uIContextMenu.AddSlider("rideSkin", (float a) => list[(int)a].Split('-')[0] ?? "", index, delegate(float a)
626 {
627 ride.c_idRidePCC = list[(int)a];
628 ride._CreateRenderer();
629 }, 0f, list.Count - 1, isInt: true, hideOther: false);
630 uIContextMenu.Show();
631 return false;
632 }, c);
633 }
634 if (!c.IsPC && ((c.IsPCFaction && !c.IsDisabled) || EClass.debug.enable) && input == ActInput.AllAction)
635 {
636 TrySetAct("actTrade", delegate
637 {
639 return false;
640 }, c);
641 }
642 if (c.host != null && EClass.pc.held != null && altAction)
643 {
644 bool flag4 = true;
646 {
647 flag4 = false;
648 }
649 if (!c.IsDisabled && flag4 && c.CanAcceptGift(EClass.pc, EClass.pc.held))
650 {
651 string lang = "actGive";
652 if (c.Evalue(1232) > 0 && EClass.pc.held.trait is TraitDrinkMilkMother)
653 {
654 lang = "actMilk";
655 }
656 TrySetAct(lang, delegate
657 {
658 if (!c.IsValidGiftWeight(EClass.pc.held, 1))
659 {
660 c.Talk("tooHeavy");
661 return true;
662 }
664 {
665 Dialog.YesNo("dialogGive".lang(EClass.pc.held.GetName(NameStyle.Full, 1)), func);
666 }
667 else
668 {
669 func();
670 }
671 return true;
672 }, c);
673 }
674 }
675 }
676 if (input == ActInput.AllAction && EClass.pc.held != null && EClass.pc.held.trait is TraitDrink)
677 {
678 TrySetAct(c.IsPC ? "actPour" : "ActThrow", delegate
679 {
680 ActThrow.Throw(EClass.pc, c.pos, c, EClass.pc.held.Split(1));
681 return true;
682 }, (c.host != null) ? c : EClass.pc.held);
683 }
684 if (!c.IsPC && c.host == null && ((!EClass.pc.isBlind && flag3) || input != ActInput.AllAction))
685 {
686 if (c.isRestrained && (input == ActInput.AllAction || (!c.IsRestrainedResident && !c.IsHostile())))
687 {
688 TrySetAct("ActUnrestrain", delegate
689 {
690 c.TryUnrestrain(force: true, EClass.pc);
691 return true;
692 }, c);
693 }
694 if (!EClass.pc.isBlind && flag3 && input == ActInput.AllAction)
695 {
696 TrySetAct(ACT.Kick, c);
697 if (c.IsMofuable)
698 {
699 TrySetAct("ActCuddle", delegate
700 {
701 EClass.pc.Cuddle(c);
702 return true;
703 }, c);
704 }
706 {
707 TrySetAct("inspect", delegate
708 {
709 c.Inspect();
710 return false;
711 }, c);
712 }
713 }
714 }
715 }
716 else if (_c.isThing)
717 {
718 if (!EClass.pc.isBlind)
719 {
720 Thing t = _c.Thing;
721 if (input == ActInput.AllAction)
722 {
723 if ((EClass.debug.enable || EClass.player.HasKeyItem("license_illumination")) && t.LightData != null)
724 {
725 if (t.c_lightColor != 0)
726 {
727 TrySetAct("actClearLight", delegate
728 {
729 t.c_lightColor = 0;
730 t.RecalculateFOV();
731 t.renderer.GetTC<TCExtra>()?.RefreshColor();
732 return false;
733 }, t);
734 }
735 TrySetAct("actSetLight", delegate
736 {
737 Color lightColor = t.LightColor;
738 EClass.ui.AddLayer<LayerColorPicker>().SetColor(lightColor, lightColor, delegate(PickerState state, Color _c)
739 {
740 if (state == PickerState.Cancel)
741 {
742 t.c_lightColor = 0;
743 }
744 else
745 {
746 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);
747 }
748 t.RecalculateFOV();
750 });
751 return false;
752 }, t);
753 }
755 {
756 TrySetAct("(debug) Toggle Float", delegate
757 {
758 t.isFloating = !t.isFloating;
759 return false;
760 }, t);
761 }
763 {
764 if (t.trait.CanEat(EClass.pc))
765 {
766 TrySetAct(new AI_Eat
767 {
768 target = t
769 }, t);
770 }
771 if (t.trait.CanDrink(EClass.pc))
772 {
774 {
775 target = t
776 }, t);
777 }
778 if (t.trait.CanRead(EClass.pc))
779 {
781 {
782 target = t
783 }, t);
784 }
785 if (t.trait.IsBlendBase)
786 {
787 TrySetAct("invBlend", delegate
788 {
790 return true;
791 }, t);
792 }
793 if (t.trait.CanName)
794 {
795 TrySetAct("changeName", delegate
796 {
797 Dialog.InputName("dialogChangeName", t.c_refText.IsEmpty(""), delegate(bool cancel, string text)
798 {
799 if (!cancel)
800 {
801 t.c_refText = text;
802 }
803 });
804 return false;
805 }, t);
806 }
807 }
808 }
809 if (isKey)
810 {
811 _ = t.trait.CanBeAttacked;
812 }
813 else
814 {
815 if (t.placeState == PlaceState.roaming && (_pos.cell.blocked || t.ignoreAutoPick || altAction || input == ActInput.AllAction || _pos.Equals(EClass.pc.pos)) && EClass.pc.CanPick(t))
816 {
817 listPick.Add(t);
818 }
819 if (t.IsInstalled)
820 {
821 t.trait.TrySetToggleAct(this);
822 t.trait.TrySetAct(this);
823 }
824 }
825 }
826 }
827 void func()
828 {
830 }
831 });
832 if (listPick.Count > 0)
833 {
834 if (listPick.Count == 1)
835 {
836 Thing _t = listPick[0];
838 {
839 TrySetAct("actPickOne", delegate
840 {
841 EClass.pc.Pick(_t);
842 return true;
843 }, listPick[0], CursorSystem.Hand, 1, isHostileAct: false, localAct: false);
844 }
845 }
846 else
847 {
848 IList<Card> _cards = items.Copy();
849 TrySetAct("actPickAll", delegate
850 {
851 foreach (Card item2 in _cards)
852 {
853 if (item2.isThing && item2.placeState == PlaceState.roaming)
854 {
855 EClass.pc.Pick(item2.Thing);
856 }
857 }
858 return true;
859 }, null, CursorSystem.Hand, 1, isHostileAct: false, localAct: false);
860 }
861 }
862 if (input == ActInput.AllAction && pos.IsSky && !EClass.game.IsSurvival)
863 {
864 TrySetAct("actSkyJump", delegate
865 {
867 return false;
868 });
869 }
870 if (_pos.Equals(cc.pos))
871 {
872 if (cc.held != null && !cc.held.IsHotItem)
873 {
874 TrySetAct("actPick", delegate
875 {
876 _ = cc.held;
877 cc.PickHeld(msg: true);
878 ActionMode.AdvOrRegion.updatePlans = true;
879 return false;
880 }, cc.held, CursorSystem.Inventory, 1, isHostileAct: false, localAct: false);
881 }
882 else if (!HasAct && !cc.isRestrained)
883 {
885 }
886 if (EClass.debug.enable)
887 {
888 showOrder = true;
889 }
890 if (input == ActInput.AllAction && EClass.pc.held != null && !EClass.pc.held.trait.CanOnlyCarry)
891 {
892 TrySetAct("actDrop", delegate
893 {
895 return true;
896 });
897 }
898 if (cc.isRestrained)
899 {
900 TrySetAct("ActUnrestrain", delegate
901 {
902 cc.TryUnrestrain(force: true, EClass.pc);
903 return true;
904 }, cc);
905 }
906 }
907 }
908 if (list.Count == 0 && input == ActInput.AllAction && EClass.pc.held == null && pos.cell.IsSnowTile && !pos.IsBlocked && !pos.HasObj && !pos.HasThing)
909 {
911 {
912 pos = pos.Copy()
913 });
914 }
915 if (list.Count != 0 && input != ActInput.AllAction)
916 {
917 return;
918 }
919 items.ForeachReverse(delegate(Card _c)
920 {
921 if (_c.isThing && _c.trait.CanBeAttacked && !(_c.trait is TraitTrainingDummy))
922 {
923 TrySetAct(ACT.Melee, _c);
924 }
925 });
926 }
927 else
928 {
929 if (input != ActInput.RightMouse)
930 {
931 return;
932 }
933 if (pos.cell.outOfBounds || EClass.ui.IsDragging)
934 {
935 return;
936 }
938 if (!hotItem.IsGameAction)
939 {
940 TrySetAct(hotItem.Name, delegate
941 {
942 hotItem.OnClick(hotItem.button, hotItem.hotbar);
943 return false;
944 }, null, -1);
945 }
946 else
947 {
948 hotItem.TrySetAct(this);
949 }
950 bool flag = EClass.game.config.autoCombat.enable && EClass.scene.mouseTarget.TargetChara != null;
951 if (hotItem.Thing != null && hotItem.Thing.trait.DisableAutoCombat)
952 {
953 flag = false;
954 }
955 if (flag)
956 {
958 bool flag2 = true;
959 if (targetChara.hostility >= Hostility.Friend)
960 {
961 flag2 = false;
962 }
964 {
965 flag2 = false;
966 }
967 if (list.Count >= 2)
968 {
969 flag2 = false;
970 }
971 if (list.Count == 1)
972 {
973 if (targetChara.hostility >= Hostility.Neutral)
974 {
975 flag2 = false;
976 }
977 if (!list[0].act.ShowAuto)
978 {
979 flag2 = false;
980 }
981 if (EClass.player.currentHotItem is HotItemNoItem && targetChara.hostility <= Hostility.Enemy)
982 {
983 flag2 = true;
984 }
985 }
986 if (flag2)
987 {
988 list.Clear();
989 TrySetAct(new GoalAutoCombat(targetChara));
990 }
991 }
992 if (list.Count == 0 && !EClass.core.config.test.toolNoPick)
993 {
995 }
996 if ((bool)WidgetCurrentTool.Instance)
997 {
999 }
1000 }
1001 static void Banish(Chara m)
1002 {
1003 EClass.pc.Say("summon_vanish", m);
1004 m.pos.PlayEffect("vanish");
1005 m.pos.PlaySound("vanish");
1006 m.pos.PlayEffect("teleport");
1007 m.Destroy();
1008 }
1009 }
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:166
bool _canInteractNeighbor
Definition: ActPlan.cs:160
bool altAction
Definition: ActPlan.cs:156
bool showOrder
Definition: ActPlan.cs:162
Chara cc
Definition: ActPlan.cs:202
Act lastAct
Definition: ActPlan.cs:172
ActInput input
Definition: ActPlan.cs:152
Point pos
Definition: ActPlan.cs:150
bool IsSelfOrNeighbor
Definition: ActPlan.cs:176
List< Thing > listPick
Definition: ActPlan.cs:170
List list
Definition: ActPlan.cs:164
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:366
bool performed
Definition: ActPlan.cs:154
bool HasAct
Definition: ActPlan.cs:244
TC GetTC(string id)
Definition: Card.cs:11
bool IsPCFactionOrMinion
Definition: Card.cs:2234
virtual bool isThing
Definition: Card.cs:2043
virtual Chara Chara
Definition: Card.cs:2032
bool isNPCProperty
Definition: Card.cs:540
bool IsRestrainedResident
Definition: Card.cs:2220
bool isFloating
Definition: Card.cs:636
bool HasElement(int ele, int req=1)
Definition: Card.cs:5638
bool isRestrained
Definition: Card.cs:552
bool ignoreAutoPick
Definition: Card.cs:492
string c_refText
Definition: Card.cs:1603
bool IsHotItem
Definition: Card.cs:117
PlaceState placeState
Definition: Card.cs:81
void RecalculateFOV()
Definition: Card.cs:6064
Point pos
Definition: Card.cs:57
int c_lightColor
Definition: Card.cs:1070
Trait trait
Definition: Card.cs:51
string c_idRidePCC
Definition: Card.cs:1627
void Destroy()
Definition: Card.cs:4850
bool IsInstalled
Definition: Card.cs:2343
virtual Thing Thing
Definition: Card.cs:2020
int Evalue(int ele)
Definition: Card.cs:2533
int Dist(Card c)
Definition: Card.cs:7316
LightData LightData
Definition: Card.cs:2392
void TryUnrestrain(bool force=false, Chara c=null)
Definition: Card.cs:6780
Color LightColor
Definition: Card.cs:1082
void Inspect()
Definition: Card.cs:7501
CardRenderer renderer
Definition: Card.cs:59
void Say(string lang, string ref1=null, string ref2=null)
Definition: Card.cs:6499
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:559
Card held
Definition: Chara.cs:70
bool CanAcceptGift(Chara c, Card t)
Definition: Chara.cs:7840
void Cuddle(Chara c, bool headpat=false)
Definition: Chara.cs:5964
bool CanPick(Card c)
Definition: Chara.cs:4149
override bool IsPC
Definition: Chara.cs:610
Chara host
Definition: Chara.cs:33
bool IsValidGiftWeight(Card t, int num=-1)
Definition: Chara.cs:7809
bool IsMofuable
Definition: Chara.cs:1081
override bool IsPCParty
Definition: Chara.cs:613
void PickHeld(bool msg=false)
Definition: Chara.cs:4403
bool HasCondition(string alias)
Definition: Chara.cs:8980
override bool IsDisabled
Definition: Chara.cs:583
override bool IsMinion
Definition: Chara.cs:625
override bool isSynced
Definition: Chara.cs:689
override CardRenderer _CreateRenderer()
Definition: Chara.cs:6338
override bool IsPCFaction
Definition: Chara.cs:669
override bool IsPCPartyMinion
Definition: Chara.cs:637
bool CanSee(Card c)
Definition: Chara.cs:1200
bool CanInteractTo(Card c)
Definition: Chara.cs:2455
void DropThing(Thing t, int num=-1)
Definition: Chara.cs:4500
void GiveGift(Chara c, Thing t)
Definition: Chara.cs:7865
Quest quest
Definition: Chara.cs:24
bool isBlind
Definition: Chara.cs:130
void FallFromZone()
Definition: Chara.cs:3431
Hostility hostility
Definition: Chara.cs:289
Card SplitHeld(int a)
Definition: Chara.cs:4463
bool IsHostile()
Definition: Chara.cs:6229
bool isDead
Definition: Chara.cs:387
Thing Pick(Thing t, bool msg=true, bool tryStack=true)
Definition: Chara.cs:4187
bool IsEscorted()
Definition: Chara.cs:2332
bool IsNeutral()
Definition: Chara.cs:6268
new GameConfig game
Definition: CoreConfig.cs:602
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:528
Definition: EClass.cs:5
static Game game
Definition: EClass.cs:8
static Scene scene
Definition: EClass.cs:30
static Core core
Definition: EClass.cs:6
static Zone _zone
Definition: EClass.cs:20
static Map _map
Definition: EClass.cs:18
static Player player
Definition: EClass.cs:12
static Chara pc
Definition: EClass.cs:14
static CoreDebug debug
Definition: EClass.cs:48
static UI ui
Definition: EClass.cs:16
ConfigAutoCombat autoCombat
Definition: Game.cs:93
bool IsSurvival
Definition: Game.cs:272
Config config
Definition: Game.cs:215
QuestManager quests
Definition: Game.cs:179
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:1792
bool HasKeyItem(string alias)
Definition: Player.cs:2059
void EnterLocalZone(bool encounter=false, Chara mob=null)
Definition: Player.cs:1849
void ExitBorder(ActPlan p=null)
Definition: Player.cs:1750
HotItem currentHotItem
Definition: Player.cs:1020
Chara TargetChara
Definition: PointTarget.cs:41
Definition: Point.cs:9
List< Card > ListCards(bool includeMasked=false)
Definition: Point.cs:1035
Point Copy()
Definition: Point.cs:479
bool IsSky
Definition: Point.cs:212
Point Set(int _x, int _z)
Definition: Point.cs:491
bool IsBlocked
Definition: Point.cs:351
SoundSource PlaySound(string id, bool synced=true, float v=1f, bool spatial=true)
Definition: Point.cs:1237
bool HasThing
Definition: Point.cs:239
bool Equals(int _x, int _z)
Definition: Point.cs:944
bool IsValid
Definition: Point.cs:88
Effect PlayEffect(string id)
Definition: Point.cs:1232
bool HasObj
Definition: Point.cs:137
int Distance(Point p)
Definition: Point.cs:973
bool IsHidden
Definition: Point.cs:335
Cell cell
Definition: Point.cs:51
Thing FindThing(Func< Thing, bool > func)
Definition: Point.cs:1124
bool IsDeliverTarget(Chara c)
PointTarget mouseTarget
Definition: Scene.cs:135
virtual bool IsRegion
Definition: Spatial.cs:503
void RefreshColor()
Definition: TCExtra.cs:171
Definition: Thing.cs:8
virtual bool AllowTraining
Definition: TraitShackle.cs:13
virtual bool IsBlendBase
Definition: Trait.cs:260
virtual bool CanBeAttacked
Definition: Trait.cs:164
virtual bool IsTool
Definition: Trait.cs:364
virtual void TrySetAct(ActPlan p)
Definition: Trait.cs:1025
virtual bool CanRead(Chara c)
Definition: Trait.cs:960
virtual void TrySetToggleAct(ActPlan p)
Definition: Trait.cs:1231
virtual bool CanName
Definition: Trait.cs:144
virtual bool CanEat(Chara c)
Definition: Trait.cs:969
virtual bool DisableAutoCombat
Definition: Trait.cs:198
virtual bool CanDrink(Chara c)
Definition: Trait.cs:978
virtual bool CanOnlyCarry
Definition: Trait.cs:290
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
virtual bool IsUserZone
Definition: Zone.cs:266
ZoneInstance instance
Definition: Zone.cs:52

References _canInteractNeighbor, Chara._CreateRenderer(), EClass._map, HotItemNoItem._TrySetAct(), EClass._zone, ActPlan.List.Add(), UIContextMenu.AddSlider(), TraitShackle.AllowTraining, altAction, Game.Config.autoCombat, 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, Card.Destroy(), 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(), 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, 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, Card.IsPCFactionOrMinion, Chara.IsPCParty, Chara.IsPCPartyMinion, Spatial.IsRegion, Card.isRestrained, Card.IsRestrainedResident, IsSelfOrNeighbor, Point.IsSky, Cell.IsSnowTile, Game.IsSurvival, Chara.isSynced, Card.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, Scene.mouseTarget, CursorSystem.MoveZone, UIButton.Item.Name, Cell.outOfBounds, EClass.pc, Core.pccs, performed, Chara.Pick(), Chara.PickHeld(), WidgetCurrentTool.placer, Card.placeState, Point.PlayEffect(), EClass.player, Point.PlaySound(), pos, Card.pos, PointTarget.pos, Chara.quest, Game.quests, Card.RecalculateFOV(), UIPlaceHelper.Refresh(), TCExtra.RefreshColor(), Card.renderer, Card.Say(), EClass.scene, Point.Set(), UIContextMenu.Show(), CoreDebug.showExtra, showOrder, Chara.SplitHeld(), PointTarget.TargetChara, CoreConfig.test, Card.Thing, HotItem.Thing, CoreConfig.Test.toolNoPick, Card.trait, 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 427 of file ActPlan.cs.

428 {
429 list.Clear();
430 pos.IsValid = false;
431 }

References list.

Referenced by AM_Adv.ClearPlans().

◆ GetAction()

Func< bool > ActPlan.GetAction ( )
inline

Definition at line 287 of file ActPlan.cs.

288 {
289 if (list.Count == 0)
290 {
291 return () => false;
292 }
293 if (list.Count > 1)
294 {
295 return delegate
296 {
298 {
299 return false;
300 }
302 return false;
303 };
304 }
305 Item item = list[0];
306 return delegate
307 {
308 if (performed && !item.act.CanPressRepeat)
309 {
310 return false;
311 }
312 performed = true;
313 lastAct = item.act;
314 return item.Perform(performed);
315 };
316 }
void ShowContextMenu()
Definition: ActPlan.cs:324
static bool SearchMedal(Chara c, Point p)
Definition: ActWait.cs:20

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 274 of file ActPlan.cs.

275 {
276 if (list.Count == 0)
277 {
278 return "";
279 }
280 if (list.Count == 1)
281 {
282 return list[0].GetText(showName);
283 }
284 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>"));
285 }
bool HasMultipleTargets
Definition: ActPlan.cs:263

References HasMultipleTargets, and list.

Referenced by Update().

◆ Order()

void ActPlan.Order ( string  id)
inline

Definition at line 318 of file ActPlan.cs.

319 {
320 EClass.player.forceTalk = true;
321 EClass.pc.SayRaw(id.lang());
322 }
void SayRaw(string text, string ref1=null, string ref2=null)
Definition: Card.cs:6478

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

Referenced by ShowContextMenu().

◆ ShowContextMenu()

void ActPlan.ShowContextMenu ( )
inline

Definition at line 324 of file ActPlan.cs.

325 {
326 UIContextMenu uIContextMenu = EClass.ui.CreateContextMenuInteraction();
327 int num = 1;
328 if (showOrder)
329 {
330 UIContextMenu uIContextMenu2 = uIContextMenu.AddChild("order_ally");
331 uIContextMenu2.AddButton("order_fight", delegate
332 {
333 Order("order_fight");
334 });
335 uIContextMenu2.AddButton("order_heal", delegate
336 {
337 Order("order_heal");
338 });
339 uIContextMenu2.AddButton("order_wait", delegate
340 {
341 Order("order_wait");
342 });
343 }
344 foreach (Item i in list)
345 {
346 string textContext = i.GetTextContext(HasMultipleTargets);
347 textContext = textContext.Replace("\n", " ").Replace(Environment.NewLine, " ");
348 uIContextMenu.AddButton(textContext, delegate
349 {
350 performed = true;
351 if (i.Perform())
352 {
354 }
355 });
356 num++;
357 if (num >= 21)
358 {
359 break;
360 }
361 }
362 uIContextMenu.Show();
363 EClass.ui.hud.HideMouseInfo();
364 }
void Order(string id)
Definition: ActPlan.cs:318
void EndTurn(bool consume=true)
Definition: Player.cs:1984
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 389 of file ActPlan.cs.

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

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 366 of file ActPlan.cs.

367 {
368 return TrySetAct(new DynamicAct(lang, onPerform)
369 {
370 id = lang,
371 dist = dist,
372 isHostileAct = isHostileAct,
373 localAct = localAct,
374 cursor = ((cursor == CursorSystem.Arrow) ? null : cursor),
375 canRepeat = () => canRepeat
376 }, tc);
377 }
bool canRepeat
Definition: ActPlan.cs:191
static CursorInfo Arrow
Definition: CursorSystem.cs:46

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

Referenced by HotItemNoItem._TrySetAct(), _Update(), 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(), 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(), TraitFakeBlock.TrySetHeldAct(), TraitRod.TrySetHeldAct(), TraitSalesTag.TrySetHeldAct(), TraitShackle.TrySetHeldAct(), TraitSyringeGene.TrySetHeldAct(), TraitSyringeHeaven.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 379 of file ActPlan.cs.

380 {
381 return TrySetAct(new DynamicAct(lang, onPerform)
382 {
383 id = lang,
384 dist = dist,
385 cursor = ((cursor == CursorSystem.Arrow) ? null : cursor)
386 });
387 }

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

◆ Update()

void ActPlan.Update ( PointTarget  target)
inline

Definition at line 433 of file ActPlan.cs.

434 {
435 if (warning)
436 {
437 return;
438 }
439 _Update(target);
440 if (!HasAct)
441 {
442 return;
443 }
444 Color effectColor = ((list.Count == 1) ? list[0].act.GetActPlanColor() : EClass.Colors.colorAct);
445 if (input == ActInput.LeftMouse || input == ActInput.Key)
446 {
447 EClass.ui.hud.textLeft.SetText(GetText(showName: true));
448 Outline[] components = EClass.ui.hud.textLeft.GetComponents<Outline>();
449 for (int i = 0; i < components.Length; i++)
450 {
451 components[i].effectColor = effectColor;
452 }
453 }
454 else if (input == ActInput.RightMouse)
455 {
457 EClass.ui.hud.imageRight.rectTransform.localScale = new Vector3(2f, 2f, 1f);
458 EClass.ui.hud.textRight.SetText(GetText(showName: true));
459 Outline[] components = EClass.ui.hud.textRight.GetComponents<Outline>();
460 for (int i = 0; i < components.Length; i++)
461 {
462 components[i].effectColor = effectColor;
463 }
464 }
465 }
static bool warning
Definition: ActPlan.cs:148
string GetText(bool showName)
Definition: ActPlan.cs:274
void _Update(PointTarget target)
Definition: ActPlan.cs:467
static ColorProfile Colors
Definition: EClass.cs:38
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 160 of file ActPlan.cs.

Referenced by _Update().

◆ altAction

◆ dist

int ActPlan.dist

Definition at line 166 of file ActPlan.cs.

Referenced by _Update(), and TrySetAct().

◆ ignoreAddCondition

bool ActPlan.ignoreAddCondition

Definition at line 158 of file ActPlan.cs.

Referenced by TrySetAct().

◆ input

◆ lastAct

Act ActPlan.lastAct

Definition at line 172 of file ActPlan.cs.

Referenced by _Update(), and GetAction().

◆ list

◆ listPick

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

Definition at line 170 of file ActPlan.cs.

Referenced by _Update().

◆ performed

bool ActPlan.performed

◆ pos

◆ showOrder

bool ActPlan.showOrder
private

Definition at line 162 of file ActPlan.cs.

Referenced by _Update(), and ShowContextMenu().

◆ tool

Thing ActPlan.tool

Definition at line 168 of file ActPlan.cs.

◆ warning

bool ActPlan.warning
static

Definition at line 148 of file ActPlan.cs.

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

Property Documentation

◆ canRepeat

bool ActPlan.canRepeat
get

Definition at line 190 of file ActPlan.cs.

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

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

◆ cc

Chara ActPlan.cc
get

Definition at line 202 of file ActPlan.cs.

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

◆ CursorIcon

CursorInfo ActPlan.CursorIcon
get

Definition at line 204 of file ActPlan.cs.

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

Referenced by AM_Adv.OnUpdateCursor().

◆ HasAct

◆ HasMultipleTargets

bool ActPlan.HasMultipleTargets
get

Definition at line 262 of file ActPlan.cs.

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

Referenced by GetText(), and ShowContextMenu().

◆ HideRightInfo

bool ActPlan.HideRightInfo
get

Definition at line 232 of file ActPlan.cs.

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

Referenced by AM_Adv.PressedAction.SetPlan().

◆ IsNeighborBlocked

bool ActPlan.IsNeighborBlocked
get

Definition at line 178 of file ActPlan.cs.

179 {
180 get
181 {
183 {
184 return dist == 1;
185 }
186 return false;
187 }
188 }

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

◆ IsSelf

◆ IsSelfOrNeighbor

◆ ShowAct

bool ActPlan.ShowAct
get

Definition at line 246 of file ActPlan.cs.

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

Referenced by AM_Adv.OnUpdateCursor().

◆ WillEndTurn

bool ActPlan.WillEndTurn
get

Definition at line 220 of file ActPlan.cs.

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

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


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