15 if (this.dir % 2 != 0)
17 return this.target.sourceCard.H;
19 return this.target.sourceCard.W;
29 if (this.dir % 2 != 0)
31 return this.target.sourceCard.W;
33 return this.target.sourceCard.H;
38 public override HitResult GetHitResult()
40 if (!base.CanPlaceCard(
this.pos,
this.target))
42 return HitResult.Invalid;
44 if (base.PointHasOtherDesignation())
46 return HitResult.Invalid;
48 if (
EClass.scene.actionMode.IsRoofEditMode(
null))
50 return HitResult.Valid;
52 return this.target.TileType._HitTest(this.pos, this.target,
true);
56 public override IEnumerable<
AIAct.Status> Run()
58 if (!this.target.ExistsOnMap)
60 yield
return base.Destroy();
62 this.target.TryReserve(
this);
63 yield
return base.DoGrab(this.target, -1,
false,
null);
67 if (this.owner.held !=
this.target)
69 yield
return this.Cancel();
71 CS$<>8__locals1.objPos =
null;
72 this.pos.ForeachMultiSize(this.target.W,
this.target.H, delegate(
Point p,
bool main)
76 CS$<>8__locals1.objPos = p.Copy();
79 if (CS$<>8__locals1.objPos ==
null)
83 yield
return base.Do(
new TaskCut
85 pos = CS$<>8__locals1.objPos
87 CS$<>8__locals1 =
null;
89 yield
return base.DoGoto(this.pos, 1,
false,
null);
90 this.OnProgressComplete();
95 public override void OnProgressComplete()
97 bool flag = this.target.placeState == PlaceState.roaming && this.target.ExistsOnMap;
98 if (this.owner ==
EClass.player.Agent)
100 EClass._zone.RemoveCard(this.target);
101 this.target.dir = this.dir;
102 EClass._zone.AddCard(this.target, this.pos);
106 this.target.dir = this.dir;
107 this.owner.DropHeld(this.pos);
111 this.target.SetPlaceState(PlaceState.roaming,
false);
115 this.target.SetPlaceState(PlaceState.installed,
false);
117 this.target.altitude = this.altitude;
118 this.target.ignoreStackHeight = Input.GetKey(KeyCode.LeftControl);
119 this.target.PlayAnime(AnimeID.Place,
false);
120 this.pos.PlaySound(
"build",
true, 1f,
true);
121 EClass._map.RefreshFOV(this.pos.x,
this.pos.z, 6,
false);