Elin Modding Docs Doc
Loading...
Searching...
No Matches
GoalManualMove.cs
1using System;
2using System.Collections.Generic;
3using UnityEngine;
4
5// Token: 0x02000232 RID: 562
6public class GoalManualMove : Goal
7{
8 // Token: 0x17000413 RID: 1043
9 // (get) Token: 0x06000FC5 RID: 4037 RVA: 0x00071B8C File Offset: 0x0006FD8C
10 public override bool CancelWhenDamaged
11 {
12 get
13 {
14 return false;
15 }
16 }
17
18 // Token: 0x17000414 RID: 1044
19 // (get) Token: 0x06000FC6 RID: 4038 RVA: 0x00071B8F File Offset: 0x0006FD8F
20 public override bool UseTurbo
21 {
22 get
23 {
24 return false;
25 }
26 }
27
28 // Token: 0x06000FC7 RID: 4039 RVA: 0x00071B92 File Offset: 0x0006FD92
29 public override IEnumerable<AIAct.Status> Run()
30 {
31 GoalManualMove.hasMoved = false;
32 bool willEnd = false;
33 for (;;)
34 {
35 if (EClass.player.TooHeavyToMove())
36 {
37 yield return this.Cancel();
38 }
39 if (EClass.player.nextMove == Vector2.zero)
40 {
41 if (!EClass.core.config.test.extraMoveCancel)
42 {
43 willEnd = true;
44 EClass.player.nextMove = GoalManualMove.lastMove;
45 }
46 else
47 {
48 yield return base.Success(null);
49 }
50 }
51 if (EClass.player.nextMove != GoalManualMove.lastMove)
52 {
53 GoalManualMove.lastMove = EClass.player.nextMove;
54 GoalManualMove.lastPoint.Set(Point.Invalid);
55 GoalManualMove.lastlastPoint.Set(Point.Invalid);
56 }
57 GoalManualMove.dest.Set(EClass.pc.pos);
58 GoalManualMove.dest.x += (int)EClass.player.nextMove.x;
59 GoalManualMove.dest.z += (int)EClass.player.nextMove.y;
60 if (!GoalManualMove.dest.IsValid)
61 {
62 EClass.player.nextMove = Vector2.zero;
63 EClass.pc.ai.Cancel();
64 yield return base.Success(null);
65 }
66 if (!GoalManualMove.TryMove((int)EClass.player.nextMove.x, (int)EClass.player.nextMove.y) && !GoalManualMove.TryAltMove())
67 {
68 EClass.player.nextMove = Vector2.zero;
69 EClass.pc.ai.Cancel();
70 yield return base.Success(null);
71 }
72 GoalManualMove.dest.Set(EClass.pc.pos);
73 GoalManualMove.dest.x += (int)EClass.player.nextMove.x;
74 GoalManualMove.dest.z += (int)EClass.player.nextMove.y;
75 GoalManualMove.dest.Set(EClass.pc.GetFirstStep(GoalManualMove.dest, PathManager.MoveType.Default));
76 if (GoalManualMove.dest.IsInBounds && !GoalManualMove.dest.Equals(EClass.pc.pos))
77 {
78 EClass.pc.TryMove(GoalManualMove.dest, true);
79 if (willEnd)
80 {
81 yield return base.Success(null);
82 }
83 GoalManualMove.hasMoved = true;
84 }
85 else
86 {
87 EClass.player.nextMove = Vector2.zero;
88 EClass.pc.ai.Cancel();
89 yield return base.Success(null);
90 }
91 if (!EClass.pc.pos.Equals(GoalManualMove.lastPoint))
92 {
93 GoalManualMove.lastlastPoint.Set(GoalManualMove.lastPoint);
94 GoalManualMove.lastPoint.Set(EClass.pc.pos);
95 }
96 yield return AIAct.Status.Running;
97 }
98 yield break;
99 }
100
101 // Token: 0x06000FC8 RID: 4040 RVA: 0x00071BA4 File Offset: 0x0006FDA4
102 public static bool CanMove()
103 {
104 Vector2 nextMove = EClass.player.nextMove;
105 Vector2 vector = GoalManualMove.lastMove;
106 Point point = GoalManualMove.lastPoint.Copy();
107 Point point2 = GoalManualMove.lastlastPoint.Copy();
108 if (EClass.player.nextMove != GoalManualMove.lastMove)
109 {
110 GoalManualMove.lastMove = EClass.player.nextMove;
111 GoalManualMove.lastPoint.Set(Point.Invalid);
112 GoalManualMove.lastlastPoint.Set(Point.Invalid);
113 }
114 if (!GoalManualMove.TryMove((int)EClass.player.nextMove.x, (int)EClass.player.nextMove.y) && !GoalManualMove.TryAltMove())
115 {
116 GoalManualMove.lastMove = vector;
117 GoalManualMove.lastPoint.Set(point);
118 GoalManualMove.lastlastPoint.Set(point2);
119 EClass.player.nextMove = nextMove;
120 return false;
121 }
122 GoalManualMove.dest.Set(EClass.pc.pos);
123 GoalManualMove.dest.x += (int)EClass.player.nextMove.x;
124 GoalManualMove.dest.z += (int)EClass.player.nextMove.y;
125 GoalManualMove.dest.Set(EClass.pc.GetFirstStep(GoalManualMove.dest, PathManager.MoveType.Default));
126 GoalManualMove.lastMove = vector;
127 GoalManualMove.lastPoint.Set(point);
128 GoalManualMove.lastlastPoint.Set(point2);
129 EClass.player.nextMove = nextMove;
130 return GoalManualMove.dest.IsInBounds && !GoalManualMove.dest.Equals(EClass.pc.pos) && !EClass.pc.IsEnemyOnPath(GoalManualMove.dest, false);
131 }
132
133 // Token: 0x06000FC9 RID: 4041 RVA: 0x00071D48 File Offset: 0x0006FF48
134 public static bool TryAltMove()
135 {
136 float x = EClass.player.nextMove.x;
137 float y = EClass.player.nextMove.y;
138 bool extraTurnaround = EClass.core.config.test.extraTurnaround;
139 if (y == 1f)
140 {
141 if (x == 1f)
142 {
143 return GoalManualMove.TryMove(1, 0) || GoalManualMove.TryMove(0, 1) || (extraTurnaround && (GoalManualMove.TryMove(1, -1) || GoalManualMove.TryMove(-1, 1)));
144 }
145 if (x == 0f)
146 {
147 return GoalManualMove.TryMove(1, 1) || GoalManualMove.TryMove(-1, 1) || (extraTurnaround && (GoalManualMove.TryMove(1, 0) || GoalManualMove.TryMove(-1, 0)));
148 }
149 return GoalManualMove.TryMove(0, 1) || GoalManualMove.TryMove(-1, 0) || (extraTurnaround && (GoalManualMove.TryMove(1, 1) || GoalManualMove.TryMove(-1, -1)));
150 }
151 else if (y == 0f)
152 {
153 if (x == 1f)
154 {
155 return GoalManualMove.TryMove(1, -1) || GoalManualMove.TryMove(1, 1) || (extraTurnaround && (GoalManualMove.TryMove(0, -1) || GoalManualMove.TryMove(0, 1)));
156 }
157 return GoalManualMove.TryMove(-1, 1) || GoalManualMove.TryMove(-1, -1) || (extraTurnaround && (GoalManualMove.TryMove(0, 1) || GoalManualMove.TryMove(0, -1)));
158 }
159 else
160 {
161 if (x == 1f)
162 {
163 return GoalManualMove.TryMove(0, -1) || GoalManualMove.TryMove(1, 0) || (extraTurnaround && (GoalManualMove.TryMove(-1, -1) || GoalManualMove.TryMove(1, 1)));
164 }
165 if (x == 0f)
166 {
167 return GoalManualMove.TryMove(-1, -1) || GoalManualMove.TryMove(1, -1) || (extraTurnaround && (GoalManualMove.TryMove(-1, 0) || GoalManualMove.TryMove(1, 0)));
168 }
169 return GoalManualMove.TryMove(-1, 0) || GoalManualMove.TryMove(0, -1) || (extraTurnaround && (GoalManualMove.TryMove(-1, 1) || GoalManualMove.TryMove(1, -1)));
170 }
171 }
172
173 // Token: 0x06000FCA RID: 4042 RVA: 0x00071F24 File Offset: 0x00070124
174 public static bool TryMove(int x, int z)
175 {
176 Point.shared.Set(EClass.pc.pos);
177 Point.shared.x += x;
178 Point.shared.z += z;
179 Point.shared.Set(EClass.pc.GetFirstStep(Point.shared, PathManager.MoveType.Default));
180 if (Point.shared.IsInBounds && !Point.shared.Equals(GoalManualMove.lastlastPoint))
181 {
182 EClass.player.nextMove.x = (float)x;
183 EClass.player.nextMove.y = (float)z;
184 return true;
185 }
186 return false;
187 }
188
189 // Token: 0x04000D90 RID: 3472
190 public static Point dest = new Point();
191
192 // Token: 0x04000D91 RID: 3473
193 public static Point lastPoint = new Point();
194
195 // Token: 0x04000D92 RID: 3474
196 public static Point lastlastPoint = new Point();
197
198 // Token: 0x04000D93 RID: 3475
199 public static Vector2 lastMove;
200
201 // Token: 0x04000D94 RID: 3476
202 public static bool hasMoved;
203}
Definition AIAct.cs:7
Definition Goal.cs:5
Definition Point.cs:11