10    public Chara TargetChara
 
   14            if (this.card != 
null)
 
   16                return this.card.Chara;
 
   23    public void Update(
Point _pos)
 
   26        this.isValid = this.pos.IsValid;
 
   28        if (!this.isValid || this.pos.IsHidden || 
EClass.ui.BlockMouseOverUpdate || (
this.mouse && (
EClass.ui.isPointerOverUI || !
EClass.scene.actionMode.ShowMouseoverTarget)))
 
   37        if (this.pos.sourceBlock.tileType.Invisible && !
EClass.scene.actionMode.IsBuildMode)
 
   41        this.obj = (
ObjInfo._CanInspect(this.pos) ? 
ObjInfo.GetTemp(
this.pos) : 
null);
 
   44            this.target = this.obj;
 
   46        else if (this.block != 
null)
 
   48            this.target = this.block;
 
   54        this.drawHighlight = (this.target != 
null);
 
   58            this.area = detail.area;
 
   59            this.task = detail.designation;
 
   62            foreach (
Chara chara2 
in detail.charas)
 
   64                if (!this.ShouldIgnore(chara2))
 
   66                    this.cards.Add(chara2);
 
   67                    if (chara == 
null || chara2.hostility < chara.hostility)
 
   73            foreach (
Thing thing2 
in detail.things)
 
   75                if (!this.ShouldIgnore(thing2))
 
   77                    this.cards.Add(thing2);
 
   83                this.target = (this.card = chara);
 
   84                this.drawHighlight = 
true;
 
   86            else if (thing != 
null)
 
   88                this.target = (this.card = thing);
 
   89                this.drawHighlight = 
true;
 
   91            else if (this.task != 
null)
 
   93                this.target = this.task;
 
   94                this.drawHighlight = 
true;
 
   96            else if (this.area != 
null && 
EClass.scene.actionMode.AreaHihlight != AreaHighlightMode.None)
 
   98                this.target = this.area;
 
  100            if (this.cards.Count > 0 && 
EClass.scene.actionMode.IsBuildMode)
 
  102                this.target = (this.card = this.cards[Mathf.Abs(this.index) % this.cards.Count]);
 
  103                this.drawHighlight = 
true;
 
  106        if ((this.target == 
null || this.target is 
Chara) && 
EClass._zone.IsRegion)
 
  108            Zone zone = 
EClass.scene.elomap.GetZone(this.pos);
 
  114        this.hasInteraction = (this.target != 
null);
 
  115        this.CheckLastTarget();
 
  119    public bool ShouldIgnore(
Card c)
 
  123            if (c.Chara.host != 
null)
 
  127            if (
EClass.scene.actionMode.IsBuildMode)
 
  129                if (!
EClass.debug.ignoreBuildRule && (c.IsPC || !c.IsPCFaction))
 
  136                if ((!
EClass.pc.hasTelepathy || !c.Chara.race.visibleWithTelepathy) && c.isHidden && !
EClass.pc.canSeeInvisible)
 
  144                if (!c.isSynced || !
EClass.player.CanSee(c.Chara))
 
  153            if (c.trait.IsGround && !
this.pos.cell.IsFloorWater && c.Cell.IsFloorWater)
 
  157            if (
EClass.scene.actionMode.IsBuildMode)
 
  159                if (
EClass.scene.actionMode.IsRoofEditMode(
null))
 
  166                else if (c.isRoofItem)
 
  171            else if (c.isHidden || c.isRoofItem || c.isMasked)
 
  180    public void CycleTarget(
int a)
 
  184        this.Update(
Scene.HitPoint);
 
  192    public bool CanCycle()
 
  194        return this.cards.Count >= 2;
 
  203        this.hasInteraction = 
false;
 
  204        this.CheckLastTarget();
 
  208    public void CheckLastTarget()
 
  210        this.hasTargetChanged = (this.target != this.lastTarget || !this.pos.Equals(this.lastPos));
 
  211        this.hasValidTarget = (this.target != 
null);
 
  212        this.lastTarget = this.target;
 
  213        this.lastPos.Set(this.pos);
 
  238    public bool hasTargetChanged;
 
  241    public bool hasValidTarget;
 
  244    public bool drawHighlight;
 
  247    public bool mouse = 
true;
 
  250    public bool hasInteraction;
 
  265    public List<Card> cards = 
new List<Card>();