Elin Decompiled Documentation EA 23.130 Nightly
Loading...
Searching...
No Matches
ActPlan.cs
Go to the documentation of this file.
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using UnityEngine;
5using UnityEngine.UI;
6
7public class ActPlan : EClass
8{
9 public class List : List<Item>
10 {
11 public void Add(Act a, string s = "")
12 {
13 Add(new Item
14 {
15 act = a
16 });
17 }
18 }
19
20 public class Item
21 {
22 public Act act;
23
24 public Card tc;
25
26 public Point pos;
27
28 public Chara cc => EClass.pc;
29
30 public bool HideHint
31 {
32 get
33 {
34 if (!EClass.pc.isBlind)
35 {
36 if (tc != null && tc.isChara)
37 {
38 return !EClass.pc.CanSee(tc);
39 }
40 return false;
41 }
42 return true;
43 }
44 }
45
46 public string GetText(bool showName)
47 {
48 return act.GetText() + ((showName && act.GetTextSmall(tc) != null) ? ("\n<size=28>" + act.GetTextSmall(tc) + "</size>") : "");
49 }
50
51 public string GetTextContext(bool showName)
52 {
53 return act.GetText() + ((showName && tc != null && !HideHint) ? ("<size=13> (" + tc.Name + ")</size>") : "");
54 }
55
56 public bool Perform(bool repeated = false)
57 {
58 if (AM_Adv.actCount == 0 && !Dialog.warned)
59 {
60 warning = true;
61 Chara _CC = Act.CC;
62 Card _TC = Act.TC;
63 Point _TP = new Point(Act.TP);
64 if (EClass._zone.IsCrime(EClass.pc, act) && act.ID != "actContainer")
65 {
66 Dialog.TryWarnCrime(delegate
67 {
68 Act.CC = _CC;
69 Act.TC = _TC;
70 Act.TP.Set(_TP);
71 if (Perform())
72 {
74 }
75 });
76 return false;
77 }
78 if (act is TaskHarvest && (act as TaskHarvest).mode == BaseTaskHarvest.HarvestType.Disassemble)
79 {
81 {
82 Act.CC = _CC;
83 Act.TC = _TC;
84 Act.TP.Set(_TP);
85 if (Perform())
86 {
88 }
89 });
90 return false;
91 }
92 }
93 warning = false;
94 int num = cc.pos.Distance(pos);
95 bool flag = num == 1 && cc.CanInteractTo(pos);
96 AIAct aIAct = act as AIAct;
97 if (act.IsAct)
98 {
99 Act.CC = EClass.pc;
100 if (act.PerformDistance != -1 && (num > act.PerformDistance || (num == 1 && !flag)))
101 {
103 {
104 pos = pos.Copy()
105 });
106 return false;
107 }
108 bool num2 = act.Perform(cc, tc, pos);
109 if (num2 && !EClass.pc.HasNoGoal)
110 {
112 }
113 if (num2)
114 {
115 return EClass.pc.HasNoGoal;
116 }
117 return false;
118 }
119 if (repeated)
120 {
121 if (cc.ai.GetType() == act.GetType() && cc.ai.IsRunning)
122 {
123 return false;
124 }
125 aIAct.Reset();
126 if (!act.CanPerform())
127 {
129 return false;
130 }
131 if (aIAct is Task task)
132 {
133 task.isDestroyed = false;
134 TaskPoint taskPoint = task as TaskPoint;
135 if (EClass.scene.mouseTarget.isValid && taskPoint != null)
136 {
137 taskPoint.isRepeated = true;
138 taskPoint.pos = EClass.scene.mouseTarget.pos.Copy();
139 }
140 }
141 }
142 cc.SetAIImmediate(aIAct);
143 ActionMode.Adv.SetTurbo(aIAct.UseTurbo ? (-1) : 0);
144 return false;
145 }
146 }
147
148 public static bool warning;
149
150 public Point pos = new Point();
151
153
154 public bool performed;
155
156 public bool altAction;
157
159
161
162 private bool showOrder;
163
164 public List list = new List();
165
166 public int dist;
167
168 public Thing tool;
169
171
172 public Act lastAct;
173
174 public bool IsSelf => dist == 0;
175
177
179 {
180 get
181 {
183 {
184 return dist == 1;
185 }
186 return false;
187 }
188 }
189
190 public bool canRepeat
191 {
192 get
193 {
194 if (list.Count == 1)
195 {
196 return list[0].act.CanPressRepeat;
197 }
198 return false;
199 }
200 }
201
202 public Chara cc => EClass.pc;
203
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 }
219
220 public bool WillEndTurn
221 {
222 get
223 {
224 if (list.Count > 0)
225 {
226 return list[0].act.WillEndTurn;
227 }
228 return false;
229 }
230 }
231
232 public bool HideRightInfo
233 {
234 get
235 {
236 if (list.Count > 0)
237 {
238 return list[0].act.HideRightInfo;
239 }
240 return false;
241 }
242 }
243
244 public bool HasAct => list.Count > 0;
245
246 public bool ShowAct
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 }
261
263 {
264 get
265 {
266 if (list.Count > 1)
267 {
268 return list[0].tc != list.LastItem().tc;
269 }
270 return false;
271 }
272 }
273
274 public string GetText(bool showName)
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 }
286
287 public Func<bool> GetAction()
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 }
317
318 public void ShowContextMenu()
319 {
320 UIContextMenu uIContextMenu = EClass.ui.CreateContextMenuInteraction();
321 int num = 1;
322 _ = showOrder;
323 foreach (Item i in list)
324 {
325 string textContext = i.GetTextContext(HasMultipleTargets);
326 textContext = textContext.Replace("\n", " ").Replace(Environment.NewLine, " ");
327 uIContextMenu.AddButton(textContext, delegate
328 {
329 performed = true;
330 if (i.Perform())
331 {
332 EClass.player.EndTurn();
333 }
334 });
335 num++;
336 if (num >= 21)
337 {
338 break;
339 }
340 }
341 uIContextMenu.Show();
342 EClass.ui.hud.HideMouseInfo();
343 }
344
345 public bool TrySetAct(string lang, Func<bool> onPerform, Card tc, CursorInfo cursor = null, int dist = 1, bool isHostileAct = false, bool localAct = true, bool canRepeat = false)
346 {
347 return TrySetAct(new DynamicAct(lang, onPerform)
348 {
349 id = lang,
350 dist = dist,
351 isHostileAct = isHostileAct,
352 localAct = localAct,
353 cursor = ((cursor == CursorSystem.Arrow) ? null : cursor),
354 canRepeat = () => canRepeat
355 }, tc);
356 }
357
358 public bool TrySetAct(string lang, Func<bool> onPerform, CursorInfo cursor = null, int dist = 1)
359 {
360 return TrySetAct(new DynamicAct(lang, onPerform)
361 {
362 id = lang,
363 dist = dist,
364 cursor = ((cursor == CursorSystem.Arrow) ? null : cursor)
365 });
366 }
367
368 public bool TrySetAct(Act _act, Card _tc = null)
369 {
370 if (!ignoreAddCondition && !_act.CanPerform(cc, _tc, pos))
371 {
372 return false;
373 }
374 Item item = new Item
375 {
376 act = _act,
377 tc = _tc,
378 pos = pos.Copy()
379 };
380 if (_tc != null && _tc.isChara)
381 {
382 int num = -1;
383 for (int i = 0; i < list.Count; i++)
384 {
385 if (list[i].tc == _tc)
386 {
387 num = i;
388 }
389 }
390 if (num != -1)
391 {
392 list.Insert(num + 1, item);
393 }
394 else
395 {
396 list.Add(item);
397 }
398 }
399 else
400 {
401 list.Add(item);
402 }
403 return true;
404 }
405
406 public void Clear()
407 {
408 list.Clear();
409 pos.IsValid = false;
410 }
411
412 public void Update(PointTarget target)
413 {
414 if (warning)
415 {
416 return;
417 }
418 _Update(target);
419 if (!HasAct)
420 {
421 return;
422 }
423 Color effectColor = ((list.Count == 1) ? list[0].act.GetActPlanColor() : EClass.Colors.colorAct);
424 if (input == ActInput.LeftMouse || input == ActInput.Key)
425 {
426 EClass.ui.hud.textLeft.SetText(GetText(showName: true));
427 Outline[] components = EClass.ui.hud.textLeft.GetComponents<Outline>();
428 for (int i = 0; i < components.Length; i++)
429 {
430 components[i].effectColor = effectColor;
431 }
432 }
433 else if (input == ActInput.RightMouse)
434 {
436 EClass.ui.hud.imageRight.rectTransform.localScale = new Vector3(2f, 2f, 1f);
437 EClass.ui.hud.textRight.SetText(GetText(showName: true));
438 Outline[] components = EClass.ui.hud.textRight.GetComponents<Outline>();
439 for (int i = 0; i < components.Length; i++)
440 {
441 components[i].effectColor = effectColor;
442 }
443 }
444 }
445
446 public void _Update(PointTarget target)
447 {
448 showOrder = false;
449 performed = false;
450 list.Clear();
451 listPick.Clear();
452 if (!pos.Equals(target.pos))
453 {
454 lastAct = null;
455 }
456 pos.Set(target.pos);
458 if (!pos.IsValid || EClass.pc.isDead)
459 {
460 return;
461 }
462 Point _pos = new Point(pos);
463 _ = target.pos.cell;
464 List<Card> items = _pos.ListCards();
465 bool isKey = input == ActInput.Key;
466 altAction = (EInput.isShiftDown && !EInput.isAltDown && !isKey) || input == ActInput.AllAction;
467 _canInteractNeighbor = dist == 0 || (dist == 1 && cc.CanInteractTo(_pos));
468 if (EClass.pc.isBlind && !_pos.Equals(EClass.pc.pos) && !isKey && input != 0)
469 {
470 return;
471 }
472 if (isKey || input == ActInput.LeftMouse || input == ActInput.AllAction)
473 {
474 if (EClass.ui.IsDragging)
475 {
476 return;
477 }
478 if (_pos.cell.outOfBounds)
479 {
480 if (EClass.player.CanExitBorder(_pos))
481 {
483 }
484 return;
485 }
486 if (!isKey && _pos.Equals(cc.pos) && EClass._zone.IsRegion)
487 {
488 TrySetAct("actNewZone", delegate
489 {
491 return false;
493 if (input == ActInput.AllAction)
494 {
495 TrySetAct("LayerTravel", delegate
496 {
497 EClass.ui.AddLayer<LayerTravel>();
498 return false;
499 }, null, CursorSystem.MoveZone, 1, isHostileAct: false, localAct: false);
500 }
501 }
502 items.ForeachReverse(delegate(Card _c)
503 {
504 Chara c2 = _c.Chara;
505 if (c2 != null && !c2.IsPC && EClass.pc.CanSee(c2))
506 {
507 int num = c2.Dist(EClass.pc);
508 if (num <= 1 || !EClass.pc.isBlind)
509 {
510 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)
511 {
512 bool flag5 = !c2.HasCondition<ConSuspend>() && (!c2.isRestrained || !c2.IsPCFaction);
514 {
515 flag5 = false;
516 }
517 if (flag5 || altAction)
518 {
519 if (EClass.pc.HasElement(1216) && c2.HasCondition<ConSleep>())
520 {
522 {
523 target = c2,
524 succubus = true
525 }, c2);
526 }
527 TrySetAct(ACT.Chat, c2);
528 }
529 }
530 if (c2.host != EClass.pc)
531 {
532 TraitShackle traitShackle = c2.pos.FindThing<TraitShackle>();
534 {
535 if (traitShackle != null && traitShackle.AllowTraining)
536 {
538 {
539 target = c2
540 });
541 }
542 }
543 else if ((c2.IsHostile() || altAction || c2.isRestrained) && c2.IsAliveInCurrentZone)
544 {
545 TrySetAct(ACT.Melee, c2);
546 }
547 }
548 if (c2.IsPCPartyMinion && !c2.Chara.IsEscorted() && altAction)
549 {
550 TrySetAct("ActBanishSummon", delegate
551 {
552 EClass.pc.Say("summon_vanish", c2);
553 c2.pos.PlayEffect("vanish");
554 c2.pos.PlaySound("vanish");
555 c2.pos.PlayEffect("teleport");
556 c2.Destroy();
557 return true;
558 }, c2, null, 99);
559 }
560 }
561 }
562 });
563 if (_pos.IsHidden)
564 {
565 return;
566 }
568 {
569 items.ForeachReverse(delegate(Card _c)
570 {
571 Chara c = _c.Chara;
572 if (c != null)
573 {
574 bool flag3 = EClass.pc.CanSee(c);
575 if (flag3)
576 {
577 if (input == ActInput.LeftMouse && c.IsPCFaction && !c.IsPC && pos.FindThing<TraitHitchingPost>() != null)
578 {
579 Chara ride = c;
580 List<string> list = EClass.core.pccs.sets["ride"].map["body"].map.Keys.ToList();
581 int index = list.IndexOf(ride.c_idRidePCC);
582 if (index == -1)
583 {
584 index = 0;
585 }
586 TrySetAct("ActChangeRideSkin", delegate
587 {
588 UIContextMenu uIContextMenu = EClass.ui.CreateContextMenuInteraction();
589 uIContextMenu.AddSlider("rideSkin", (float a) => list[(int)a].Split('-')[0] ?? "", index, delegate(float a)
590 {
591 ride.c_idRidePCC = list[(int)a];
592 ride._CreateRenderer();
593 }, 0f, list.Count - 1, isInt: true, hideOther: false);
594 uIContextMenu.Show();
595 return false;
596 }, c);
597 }
598 if (!c.IsPC && ((c.IsPCFaction && !c.IsDisabled) || EClass.debug.enable) && input == ActInput.AllAction)
599 {
600 TrySetAct("actTrade", delegate
601 {
603 return false;
604 }, c);
605 }
606 if (c.host != null && EClass.pc.held != null && altAction)
607 {
608 bool flag4 = true;
610 {
611 flag4 = false;
612 }
613 if (!c.IsDisabled && flag4 && c.CanAcceptGift(EClass.pc, EClass.pc.held))
614 {
615 string lang = "actGive";
616 if (c.Evalue(1232) > 0 && EClass.pc.held.trait is TraitDrinkMilkMother)
617 {
618 lang = "actMilk";
619 }
620 TrySetAct(lang, delegate
621 {
622 if (!c.IsValidGiftWeight(EClass.pc.held, 1))
623 {
624 c.Talk("tooHeavy");
625 return true;
626 }
628 {
629 Dialog.YesNo("dialogGive".lang(EClass.pc.held.GetName(NameStyle.Full, 1)), func);
630 }
631 else
632 {
633 func();
634 }
635 return true;
636 }, c);
637 }
638 }
639 }
640 if (input == ActInput.AllAction && EClass.pc.held != null && EClass.pc.held.trait is TraitDrink)
641 {
642 TrySetAct(c.IsPC ? "actPour" : "ActThrow", delegate
643 {
644 ActThrow.Throw(EClass.pc, c.pos, c, EClass.pc.held.Split(1));
645 return true;
646 }, (c.host != null) ? c : EClass.pc.held);
647 }
648 if (!c.IsPC && c.host == null && ((!EClass.pc.isBlind && flag3) || input != ActInput.AllAction))
649 {
650 if (c.isRestrained && (input == ActInput.AllAction || (!c.IsRestrainedResident && !c.IsHostile())))
651 {
652 TrySetAct("ActUnrestrain", delegate
653 {
654 c.TryUnrestrain(force: true, EClass.pc);
655 return true;
656 }, c);
657 }
658 if (!EClass.pc.isBlind && flag3 && input == ActInput.AllAction)
659 {
660 TrySetAct(ACT.Kick, c);
661 if (c.IsMofuable)
662 {
663 TrySetAct("ActCuddle", delegate
664 {
665 EClass.pc.Cuddle(c);
666 return true;
667 }, c);
668 }
670 {
671 TrySetAct("inspect", delegate
672 {
673 c.Inspect();
674 return false;
675 }, c);
676 }
677 }
678 }
679 }
680 else if (_c.isThing)
681 {
682 if (!EClass.pc.isBlind)
683 {
684 Thing t = _c.Thing;
685 if (input == ActInput.AllAction)
686 {
687 if ((EClass.debug.enable || EClass.player.HasKeyItem("license_illumination")) && t.LightData != null)
688 {
689 if (t.c_lightColor != 0)
690 {
691 TrySetAct("actClearLight", delegate
692 {
693 t.c_lightColor = 0;
694 t.RecalculateFOV();
695 t.renderer.GetTC<TCExtra>()?.RefreshColor();
696 return false;
697 }, t);
698 }
699 TrySetAct("actSetLight", delegate
700 {
701 Color lightColor = t.LightColor;
702 EClass.ui.AddLayer<LayerColorPicker>().SetColor(lightColor, lightColor, delegate(PickerState state, Color _c)
703 {
704 if (state == PickerState.Cancel)
705 {
706 t.c_lightColor = 0;
707 }
708 else
709 {
710 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);
711 }
712 t.RecalculateFOV();
714 });
715 return false;
716 }, t);
717 }
719 {
720 TrySetAct("(debug) Toggle Float", delegate
721 {
722 t.isFloating = !t.isFloating;
723 return false;
724 }, t);
725 }
727 {
728 if (t.trait.CanEat(EClass.pc))
729 {
730 TrySetAct(new AI_Eat
731 {
732 target = t
733 }, t);
734 }
735 if (t.trait.CanDrink(EClass.pc))
736 {
738 {
739 target = t
740 }, t);
741 }
742 if (t.trait.CanRead(EClass.pc))
743 {
745 {
746 target = t
747 }, t);
748 }
749 if (t.trait.IsBlendBase)
750 {
751 TrySetAct("invBlend", delegate
752 {
754 return true;
755 }, t);
756 }
757 if (t.trait.CanName)
758 {
759 TrySetAct("changeName", delegate
760 {
761 Dialog.InputName("dialogChangeName", t.c_refText.IsEmpty(""), delegate(bool cancel, string text)
762 {
763 if (!cancel)
764 {
765 t.c_refText = text;
766 }
767 });
768 return false;
769 }, t);
770 }
771 }
772 }
773 if (isKey)
774 {
775 _ = t.trait.CanBeAttacked;
776 }
777 else
778 {
779 if (t.placeState == PlaceState.roaming && (_pos.cell.blocked || t.ignoreAutoPick || altAction || input == ActInput.AllAction || _pos.Equals(EClass.pc.pos)) && EClass.pc.CanPick(t))
780 {
781 listPick.Add(t);
782 }
783 if (t.IsInstalled)
784 {
785 t.trait.TrySetToggleAct(this);
786 t.trait.TrySetAct(this);
787 }
788 }
789 }
790 }
791 void func()
792 {
794 }
795 });
796 if (listPick.Count > 0)
797 {
798 if (listPick.Count == 1)
799 {
800 Thing _t = listPick[0];
802 {
803 TrySetAct("actPickOne", delegate
804 {
805 EClass.pc.Pick(_t);
806 return true;
807 }, listPick[0], CursorSystem.Hand, 1, isHostileAct: false, localAct: false);
808 }
809 }
810 else
811 {
812 IList<Card> _cards = items.Copy();
813 TrySetAct("actPickAll", delegate
814 {
815 foreach (Card item in _cards)
816 {
817 if (item.isThing && item.placeState == PlaceState.roaming)
818 {
819 EClass.pc.Pick(item.Thing);
820 }
821 }
822 return true;
823 }, null, CursorSystem.Hand, 1, isHostileAct: false, localAct: false);
824 }
825 }
826 if (input == ActInput.AllAction && pos.IsSky)
827 {
828 TrySetAct("actSkyJump", delegate
829 {
831 return false;
832 });
833 }
834 if (_pos.Equals(cc.pos))
835 {
836 if (cc.held != null && !cc.held.IsHotItem)
837 {
838 TrySetAct("actPick", delegate
839 {
840 _ = cc.held;
841 cc.PickHeld(msg: true);
842 ActionMode.AdvOrRegion.updatePlans = true;
843 return false;
844 }, cc.held, CursorSystem.Inventory, 1, isHostileAct: false, localAct: false);
845 }
846 else if (!HasAct && !cc.isRestrained)
847 {
849 }
850 if (EClass.pc.party.members.Count > 1)
851 {
852 showOrder = true;
853 }
854 if (input == ActInput.AllAction && EClass.pc.held != null && !EClass.pc.held.trait.CanOnlyCarry)
855 {
856 TrySetAct("actDrop", delegate
857 {
859 return true;
860 });
861 }
862 if (cc.isRestrained)
863 {
864 TrySetAct("ActUnrestrain", delegate
865 {
866 cc.TryUnrestrain(force: true, EClass.pc);
867 return true;
868 }, cc);
869 }
870 }
871 }
872 if (list.Count == 0 && input == ActInput.AllAction && EClass.pc.held == null && pos.cell.IsSnowTile && !pos.IsBlocked && !pos.HasObj && !pos.HasThing)
873 {
875 {
876 pos = pos.Copy()
877 });
878 }
879 if (list.Count != 0 && input != ActInput.AllAction)
880 {
881 return;
882 }
883 items.ForeachReverse(delegate(Card _c)
884 {
885 if (_c.isThing && _c.trait.CanBeAttacked && !(_c.trait is TraitTrainingDummy))
886 {
887 TrySetAct(ACT.Melee, _c);
888 }
889 });
890 }
891 else
892 {
893 if (input != ActInput.RightMouse)
894 {
895 return;
896 }
897 if (pos.cell.outOfBounds || EClass.ui.IsDragging)
898 {
899 return;
900 }
902 if (!hotItem.IsGameAction)
903 {
904 TrySetAct(hotItem.Name, delegate
905 {
906 hotItem.OnClick(hotItem.button, hotItem.hotbar);
907 return false;
908 }, null, -1);
909 }
910 else
911 {
912 hotItem.TrySetAct(this);
913 }
914 bool flag = EClass.game.config.autoCombat.enable && EClass.scene.mouseTarget.TargetChara != null;
915 if (hotItem.Thing != null && hotItem.Thing.trait.DisableAutoCombat)
916 {
917 flag = false;
918 }
919 if (flag)
920 {
922 bool flag2 = true;
923 if (targetChara.hostility >= Hostility.Friend)
924 {
925 flag2 = false;
926 }
928 {
929 flag2 = false;
930 }
931 if (list.Count >= 2)
932 {
933 flag2 = false;
934 }
935 if (list.Count == 1)
936 {
937 if (targetChara.hostility >= Hostility.Neutral)
938 {
939 flag2 = false;
940 }
941 if (!list[0].act.ShowAuto)
942 {
943 flag2 = false;
944 }
945 if (EClass.player.currentHotItem is HotItemNoItem && targetChara.hostility <= Hostility.Enemy)
946 {
947 flag2 = true;
948 }
949 }
950 if (flag2)
951 {
952 list.Clear();
953 TrySetAct(new GoalAutoCombat(targetChara));
954 }
955 }
956 if (list.Count == 0 && !EClass.core.config.test.toolNoPick)
957 {
959 }
960 if ((bool)WidgetCurrentTool.Instance)
961 {
963 }
964 }
965 }
966}
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: AIAct.cs:6
virtual bool UseTurbo
Definition: AIAct.cs:88
virtual bool IsRunning
Definition: AIAct.cs:31
void Reset()
Definition: AIAct.cs:326
Definition: AI_Eat.cs:5
Definition: AM_Adv.cs:6
static int actCount
Definition: AM_Adv.cs:101
void SetTurbo(int mtp=-1)
Definition: AM_Adv.cs:1040
string GetText(bool showName)
Definition: ActPlan.cs:46
Card tc
Definition: ActPlan.cs:24
bool HideHint
Definition: ActPlan.cs:31
Point pos
Definition: ActPlan.cs:26
bool Perform(bool repeated=false)
Definition: ActPlan.cs:56
string GetTextContext(bool showName)
Definition: ActPlan.cs:51
Chara cc
Definition: ActPlan.cs:28
void Add(Act a, string s="")
Definition: ActPlan.cs:11
int dist
Definition: ActPlan.cs:166
bool _canInteractNeighbor
Definition: ActPlan.cs:160
bool HideRightInfo
Definition: ActPlan.cs:233
bool altAction
Definition: ActPlan.cs:156
bool showOrder
Definition: ActPlan.cs:162
bool ShowAct
Definition: ActPlan.cs:247
Thing tool
Definition: ActPlan.cs:168
Chara cc
Definition: ActPlan.cs:202
Act lastAct
Definition: ActPlan.cs:172
static bool warning
Definition: ActPlan.cs:148
bool HasMultipleTargets
Definition: ActPlan.cs:263
bool ignoreAddCondition
Definition: ActPlan.cs:158
bool IsNeighborBlocked
Definition: ActPlan.cs:179
CursorInfo CursorIcon
Definition: ActPlan.cs:205
ActInput input
Definition: ActPlan.cs:152
string GetText(bool showName)
Definition: ActPlan.cs:274
Point pos
Definition: ActPlan.cs:150
void Update(PointTarget target)
Definition: ActPlan.cs:412
Func< bool > GetAction()
Definition: ActPlan.cs:287
bool IsSelfOrNeighbor
Definition: ActPlan.cs:176
bool IsSelf
Definition: ActPlan.cs:174
bool TrySetAct(Act _act, Card _tc=null)
Definition: ActPlan.cs:368
void ShowContextMenu()
Definition: ActPlan.cs:318
List< Thing > listPick
Definition: ActPlan.cs:170
List list
Definition: ActPlan.cs:164
bool WillEndTurn
Definition: ActPlan.cs:221
void _Update(PointTarget target)
Definition: ActPlan.cs:446
void Clear()
Definition: ActPlan.cs:406
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:345
bool TrySetAct(string lang, Func< bool > onPerform, CursorInfo cursor=null, int dist=1)
Definition: ActPlan.cs:358
bool performed
Definition: ActPlan.cs:154
bool canRepeat
Definition: ActPlan.cs:191
bool HasAct
Definition: ActPlan.cs:244
static bool SearchMedal(Chara c, Point p)
Definition: ActWait.cs:20
Definition: ACT.cs:62
virtual bool Perform()
Definition: ACT.cs:264
static Card TC
Definition: ACT.cs:79
virtual bool IsAct
Definition: ACT.cs:99
static Point TP
Definition: ACT.cs:81
virtual int PerformDistance
Definition: ACT.cs:135
static Chara CC
Definition: ACT.cs:77
virtual string ID
Definition: ACT.cs:97
virtual string GetTextSmall(Card c)
Definition: ACT.cs:230
virtual string GetText(string str="")
Definition: ACT.cs:213
virtual bool CanPerform()
Definition: ACT.cs:301
static AM_Adv Adv
Definition: ActionMode.cs:15
TC GetTC(string id)
Definition: Card.cs:11
bool IsPCFactionOrMinion
Definition: Card.cs:2172
virtual bool isThing
Definition: Card.cs:1981
virtual Chara Chara
Definition: Card.cs:1970
bool isNPCProperty
Definition: Card.cs:526
bool IsRestrainedResident
Definition: Card.cs:2158
bool isFloating
Definition: Card.cs:622
bool HasElement(int ele, int req=1)
Definition: Card.cs:5395
bool isRestrained
Definition: Card.cs:538
bool ignoreAutoPick
Definition: Card.cs:478
string c_refText
Definition: Card.cs:1553
string Name
Definition: Card.cs:2037
bool IsHotItem
Definition: Card.cs:115
PlaceState placeState
Definition: Card.cs:79
void RecalculateFOV()
Definition: Card.cs:5797
Point pos
Definition: Card.cs:55
int c_lightColor
Definition: Card.cs:1056
Trait trait
Definition: Card.cs:49
string c_idRidePCC
Definition: Card.cs:1577
void Destroy()
Definition: Card.cs:4680
bool IsInstalled
Definition: Card.cs:2281
virtual bool isChara
Definition: Card.cs:1983
virtual Thing Thing
Definition: Card.cs:1958
int Evalue(int ele)
Definition: Card.cs:2471
int Dist(Card c)
Definition: Card.cs:7025
LightData LightData
Definition: Card.cs:2330
void TryUnrestrain(bool force=false, Chara c=null)
Definition: Card.cs:6504
Color LightColor
Definition: Card.cs:1068
void Inspect()
Definition: Card.cs:7210
CardRenderer renderer
Definition: Card.cs:57
void Say(string lang, string ref1=null, string ref2=null)
Definition: Card.cs:6232
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:551
Card held
Definition: Chara.cs:70
bool CanAcceptGift(Chara c, Card t)
Definition: Chara.cs:7557
AIAct ai
Definition: Chara.cs:192
void Cuddle(Chara c, bool headpat=false)
Definition: Chara.cs:5685
bool CanPick(Card c)
Definition: Chara.cs:3902
override bool IsPC
Definition: Chara.cs:602
Chara host
Definition: Chara.cs:33
bool IsValidGiftWeight(Card t, int num=-1)
Definition: Chara.cs:7526
bool IsMofuable
Definition: Chara.cs:922
override bool IsPCParty
Definition: Chara.cs:605
Party party
Definition: Chara.cs:43
void PickHeld(bool msg=false)
Definition: Chara.cs:4156
bool HasCondition(string alias)
Definition: Chara.cs:8666
AIAct SetAI(AIAct g)
Definition: Chara.cs:8143
override bool IsDisabled
Definition: Chara.cs:575
override bool IsMinion
Definition: Chara.cs:617
override bool isSynced
Definition: Chara.cs:681
override CardRenderer _CreateRenderer()
Definition: Chara.cs:6051
override bool IsPCFaction
Definition: Chara.cs:661
override bool IsPCPartyMinion
Definition: Chara.cs:629
bool CanSee(Card c)
Definition: Chara.cs:1032
void SetAIImmediate(AIAct g)
Definition: Chara.cs:8175
bool CanInteractTo(Card c)
Definition: Chara.cs:2240
static NoGoal _NoGoalRepeat
Definition: Chara.cs:188
bool HasNoGoal
Definition: Chara.cs:826
void DropThing(Thing t, int num=-1)
Definition: Chara.cs:4253
void GiveGift(Chara c, Thing t)
Definition: Chara.cs:7582
Quest quest
Definition: Chara.cs:24
bool isBlind
Definition: Chara.cs:128
void FallFromZone()
Definition: Chara.cs:3204
Hostility hostility
Definition: Chara.cs:281
Card SplitHeld(int a)
Definition: Chara.cs:4216
bool IsHostile()
Definition: Chara.cs:5942
bool isDead
Definition: Chara.cs:379
Thing Pick(Thing t, bool msg=true, bool tryStack=true)
Definition: Chara.cs:3940
bool IsEscorted()
Definition: Chara.cs:2117
bool IsNeutral()
Definition: Chara.cs:5981
new GameConfig game
Definition: CoreConfig.cs:598
bool showExtra
Definition: CoreDebug.cs:167
bool enable
Definition: CoreDebug.cs:285
PCCManager pccs
Definition: Core.cs:41
CoreConfig config
Definition: Core.cs:70
static CursorInfo Arrow
Definition: CursorSystem.cs:46
static CursorInfo Hand
Definition: CursorSystem.cs:60
static CursorInfo Inventory
Definition: CursorSystem.cs:92
static CursorInfo Notice
Definition: CursorSystem.cs:76
static CursorInfo MoveZone
Definition: CursorSystem.cs:86
Definition: Dialog.cs:7
static bool warned
Definition: Dialog.cs:49
static Dialog InputName(string langDetail, string text, Action< bool, string > onClose, InputType inputType=InputType.Default)
Definition: Dialog.cs:528
static void TryWarnDisassemble(Action action)
Definition: Dialog.cs:406
static void TryWarnCrime(Action action)
Definition: Dialog.cs:376
Definition: EClass.cs:5
static Game game
Definition: EClass.cs:8
static Scene scene
Definition: EClass.cs:30
static ColorProfile Colors
Definition: EClass.cs:38
static Core core
Definition: EClass.cs:6
static Zone _zone
Definition: EClass.cs:20
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
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 void SetImage(Image icon)
Definition: HotItem.cs:91
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 > members
Definition: Party.cs:18
bool CanExitBorder(Point p)
Definition: Player.cs:1695
bool HasKeyItem(string alias)
Definition: Player.cs:1957
void EndTurn(bool consume=true)
Definition: Player.cs:1882
void EnterLocalZone(bool encounter=false, Chara mob=null)
Definition: Player.cs:1752
void ExitBorder(ActPlan p=null)
Definition: Player.cs:1653
HotItem currentHotItem
Definition: Player.cs:916
bool isValid
Definition: PointTarget.cs:30
Chara TargetChara
Definition: PointTarget.cs:41
Definition: Point.cs:9
List< Card > ListCards(bool includeMasked=false)
Definition: Point.cs:1027
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:1229
bool HasThing
Definition: Point.cs:239
bool Equals(int _x, int _z)
Definition: Point.cs:936
bool IsValid
Definition: Point.cs:88
Effect PlayEffect(string id)
Definition: Point.cs:1224
bool HasObj
Definition: Point.cs:137
int Distance(Point p)
Definition: Point.cs:965
bool IsHidden
Definition: Point.cs:335
Cell cell
Definition: Point.cs:51
Thing FindThing(Func< Thing, bool > func)
Definition: Point.cs:1116
bool IsDeliverTarget(Chara c)
PointTarget mouseTarget
Definition: Scene.cs:131
virtual bool IsRegion
Definition: Spatial.cs:501
void RefreshColor()
Definition: TCExtra.cs:171
Definition: Task.cs:4
Definition: Thing.cs:8
virtual bool AllowTraining
Definition: TraitShackle.cs:13
virtual bool IsBlendBase
Definition: Trait.cs:257
virtual bool CanBeAttacked
Definition: Trait.cs:163
virtual bool IsTool
Definition: Trait.cs:361
virtual void TrySetAct(ActPlan p)
Definition: Trait.cs:1022
virtual bool CanRead(Chara c)
Definition: Trait.cs:957
virtual void TrySetToggleAct(ActPlan p)
Definition: Trait.cs:1228
virtual bool CanName
Definition: Trait.cs:143
virtual bool CanEat(Chara c)
Definition: Trait.cs:966
virtual bool DisableAutoCombat
Definition: Trait.cs:195
virtual bool CanDrink(Chara c)
Definition: Trait.cs:975
virtual bool CanOnlyCarry
Definition: Trait.cs:287
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:264
ZoneInstance instance
Definition: Zone.cs:52
bool IsCrime(Chara c, Act act)
Definition: Zone.cs:3279