Elin Modding Docs Doc
Loading...
Searching...
No Matches
TraitNewZone.cs
1using System;
2using UnityEngine;
3
4// Token: 0x02000470 RID: 1136
5public class TraitNewZone : Trait
6{
7 // Token: 0x170009DA RID: 2522
8 // (get) Token: 0x06001F82 RID: 8066 RVA: 0x000B20E7 File Offset: 0x000B02E7
9 // (set) Token: 0x06001F83 RID: 8067 RVA: 0x000B20F9 File Offset: 0x000B02F9
10 public Zone zone
11 {
12 get
13 {
14 return RefZone.Get(this.owner.c_uidZone);
15 }
16 set
17 {
18 this.owner.c_uidZone = ((value != null) ? value.uid : 0);
19 }
20 }
21
22 // Token: 0x170009DB RID: 2523
23 // (get) Token: 0x06001F84 RID: 8068 RVA: 0x000B2112 File Offset: 0x000B0312
24 public virtual bool CanUseInTempDungeon
25 {
26 get
27 {
28 return false;
29 }
30 }
31
32 // Token: 0x170009DC RID: 2524
33 // (get) Token: 0x06001F85 RID: 8069 RVA: 0x000B2115 File Offset: 0x000B0315
34 public virtual string langOnUse
35 {
36 get
37 {
38 return "";
39 }
40 }
41
42 // Token: 0x170009DD RID: 2525
43 // (get) Token: 0x06001F86 RID: 8070 RVA: 0x000B211C File Offset: 0x000B031C
44 public virtual bool IsUpstairs
45 {
46 get
47 {
48 return false;
49 }
50 }
51
52 // Token: 0x170009DE RID: 2526
53 // (get) Token: 0x06001F87 RID: 8071 RVA: 0x000B211F File Offset: 0x000B031F
54 public virtual bool IsDownstairs
55 {
56 get
57 {
58 return false;
59 }
60 }
61
62 // Token: 0x170009DF RID: 2527
63 // (get) Token: 0x06001F88 RID: 8072 RVA: 0x000B2122 File Offset: 0x000B0322
64 public virtual bool IsTeleport
65 {
66 get
67 {
68 return false;
69 }
70 }
71
72 // Token: 0x170009E0 RID: 2528
73 // (get) Token: 0x06001F89 RID: 8073 RVA: 0x000B2125 File Offset: 0x000B0325
74 public virtual bool OnlyInTheSameTopZone
75 {
76 get
77 {
78 return false;
79 }
80 }
81
82 // Token: 0x170009E1 RID: 2529
83 // (get) Token: 0x06001F8A RID: 8074 RVA: 0x000B2128 File Offset: 0x000B0328
84 public virtual bool AutoEnter
85 {
86 get
87 {
88 return true;
89 }
90 }
91
92 // Token: 0x170009E2 RID: 2530
93 // (get) Token: 0x06001F8B RID: 8075 RVA: 0x000B212B File Offset: 0x000B032B
94 public virtual bool ForceEnter
95 {
96 get
97 {
98 return false;
99 }
100 }
101
102 // Token: 0x170009E3 RID: 2531
103 // (get) Token: 0x06001F8C RID: 8076 RVA: 0x000B212E File Offset: 0x000B032E
104 public virtual bool CanToggleAutoEnter
105 {
106 get
107 {
108 return false;
109 }
110 }
111
112 // Token: 0x170009E4 RID: 2532
113 // (get) Token: 0x06001F8D RID: 8077 RVA: 0x000B2131 File Offset: 0x000B0331
114 public virtual bool CreateExternalZone
115 {
116 get
117 {
118 return !this.IsTeleport && (this.owner.GetStr(30, null) != null || base.GetParam(1, null) != null);
119 }
120 }
121
122 // Token: 0x170009E5 RID: 2533
123 // (get) Token: 0x06001F8E RID: 8078 RVA: 0x000B215A File Offset: 0x000B035A
124 public virtual ZoneTransition.EnterState enterState
125 {
126 get
127 {
128 return ZoneTransition.EnterState.Region;
129 }
130 }
131
132 // Token: 0x170009E6 RID: 2534
133 // (get) Token: 0x06001F8F RID: 8079 RVA: 0x000B215E File Offset: 0x000B035E
134 public virtual bool IsEntrace
135 {
136 get
137 {
138 return !this.IsUpstairs && !this.IsDownstairs;
139 }
140 }
141
142 // Token: 0x170009E7 RID: 2535
143 // (get) Token: 0x06001F90 RID: 8080 RVA: 0x000B2173 File Offset: 0x000B0373
144 public override bool CanBeHeld
145 {
146 get
147 {
148 return false;
149 }
150 }
151
152 // Token: 0x170009E8 RID: 2536
153 // (get) Token: 0x06001F91 RID: 8081 RVA: 0x000B2176 File Offset: 0x000B0376
154 public override bool CanBeDestroyed
155 {
156 get
157 {
158 return false;
159 }
160 }
161
162 // Token: 0x170009E9 RID: 2537
163 // (get) Token: 0x06001F92 RID: 8082 RVA: 0x000B2179 File Offset: 0x000B0379
164 public override bool CanBeStolen
165 {
166 get
167 {
168 return false;
169 }
170 }
171
172 // Token: 0x170009EA RID: 2538
173 // (get) Token: 0x06001F93 RID: 8083 RVA: 0x000B217C File Offset: 0x000B037C
174 public virtual int UseDist
175 {
176 get
177 {
178 return 0;
179 }
180 }
181
182 // Token: 0x06001F94 RID: 8084 RVA: 0x000B217F File Offset: 0x000B037F
183 public override void OnImportMap()
184 {
185 this.owner.c_uidZone = 0;
186 }
187
188 // Token: 0x06001F95 RID: 8085 RVA: 0x000B2190 File Offset: 0x000B0390
189 public virtual Point GetExitPos()
190 {
191 Point point = new Point(this.owner.pos);
192 if (this.owner.dir % 2 == 0)
193 {
194 point.x -= this.owner.sourceCard.W / 2;
195 point.z--;
196 }
197 else
198 {
199 point.x++;
200 point.z += this.owner.sourceCard.H / 2;
201 }
202 return point;
203 }
204
205 // Token: 0x06001F96 RID: 8086 RVA: 0x000B221C File Offset: 0x000B041C
206 public override void TrySetAct(ActPlan p)
207 {
208 if (!EClass._zone.AllowNewZone)
209 {
210 return;
211 }
212 bool flag = this.IsEntrace || p.IsSelf;
213 if (this.owner.sourceRenderCard.multisize)
214 {
215 int x = p.pos.x;
216 int z = p.pos.z;
217 int w = this.owner.W;
218 int h = this.owner.H;
219 flag = ((this.owner.dir % 2 == 0) ? (z == this.owner.pos.z && x > this.owner.pos.x - w + 1 && x <= this.owner.pos.x - 1) : (p.pos.x == this.owner.pos.x && p.pos.z >= this.owner.pos.z + 1 && p.pos.z < this.owner.pos.z + h - 1));
220 }
221 if (!flag)
222 {
223 return;
224 }
225 if (EClass.pc.held != null && EClass.pc.held.trait.CanOnlyCarry)
226 {
227 return;
228 }
229 if (p.dist <= this.UseDist)
230 {
231 p.TrySetAct("actNewZone", delegate()
232 {
233 if ((EClass._zone.RegenerateOnEnter || EClass._zone.IsInstance) && !this.CanUseInTempDungeon)
234 {
235 Msg.Say("badidea");
236 return false;
237 }
238 return this.MoveZone(false);
239 }, this.owner, CursorSystem.MoveZone, 1, false, true, false);
240 }
241 }
242
243 // Token: 0x06001F97 RID: 8087 RVA: 0x000B23A4 File Offset: 0x000B05A4
244 public bool CanAutoEnter()
245 {
246 return EClass._zone.AllowNewZone && !this.owner.sourceRenderCard.multisize && (EClass.pc.held == null || !EClass.pc.held.trait.CanOnlyCarry);
247 }
248
249 // Token: 0x06001F98 RID: 8088 RVA: 0x000B23F8 File Offset: 0x000B05F8
250 public bool MoveZone(bool confirmed = false)
251 {
252 if (this.Electricity != 0 && !this.owner.isOn)
253 {
254 this.owner.PlaySound("electricity_insufficient", 1f, true);
255 return false;
256 }
257 if (this.TryTeleport())
258 {
259 return true;
260 }
261 if (!confirmed && EClass._zone.IsNefia && EClass._zone.Boss != null)
262 {
263 EClass.pc.ai.Cancel();
264 EInput.Consume(true, 1);
265 Dialog.YesNo("ExitZoneBoss".lang(EClass._zone.Name, null, null, null, null), delegate
266 {
267 this.MoveZone(true);
268 }, null, "yes", "no");
269 return false;
270 }
271 ZoneTransition transition = new ZoneTransition
272 {
273 state = this.enterState,
274 idTele = base.GetParam(3, null)
275 };
276 Zone zone = null;
277 string param = base.GetParam(2, null);
278 int num = (param != null) ? param.ToInt() : 0;
279 if (this.OnlyInTheSameTopZone && this.zone != null && this.zone.GetTopZone() != EClass._zone.GetTopZone())
280 {
281 this.zone = null;
282 }
283 if (this.zone == null)
284 {
285 if (this.CreateExternalZone)
286 {
287 zone = EClass._zone;
288 }
289 else if (this.IsTeleport)
290 {
291 zone = EClass.world.region.FindZone(base.GetParam(1, null));
292 if (zone != null)
293 {
294 zone = zone.GetTopZone();
295 this.zone = zone.FindZone(num);
296 }
297 }
298 else if (this.IsDownstairs || this.IsUpstairs)
299 {
300 zone = EClass._zone.GetTopZone();
301 num = EClass._zone.lv + (this.IsUpstairs ? 1 : (this.IsDownstairs ? -1 : 0));
302 this.zone = EClass._zone.GetTopZone().FindZone(num);
303 if (this.zone == null && EClass._zone.parent.IsRegion && ((this.IsUpstairs && EClass._zone.lv == -1) || (this.IsDownstairs && EClass._zone.lv == 1)))
304 {
305 EClass.pc.MoveZone(EClass._zone.parent as Zone, ZoneTransition.EnterState.Auto);
306 return false;
307 }
308 }
309 if (this.OnlyInTheSameTopZone && this.zone != null && this.zone.GetTopZone() != EClass._zone.GetTopZone())
310 {
311 this.zone = null;
312 }
313 if (this.zone == null)
314 {
315 if (this.OnlyInTheSameTopZone && zone != null && zone.GetTopZone() != EClass._zone.GetTopZone())
316 {
317 zone = null;
318 }
319 if (zone == null || EClass._zone.isExternalZone)
320 {
321 Msg.SayNothingHappen();
322 return false;
323 }
324 this.CreateZone(zone, num);
325 }
326 }
327 if ((this.IsDownstairs || this.IsUpstairs) && this.zone.IDGenerator == null && EClass._zone.IDGenerator == null)
328 {
329 this.zone.events.AddPreEnter(new ZonePreEnterDigStairs
330 {
331 pos = this.owner.pos.Copy(),
332 fromAbove = this.IsDownstairs,
333 uidZone = EClass._zone.uid
334 }, true);
335 transition = new ZoneTransition
336 {
337 state = ZoneTransition.EnterState.UndergroundOrSky,
338 x = this.owner.pos.x,
339 z = this.owner.pos.z
340 };
341 }
342 Debug.Log(this.zone);
343 EClass.pc.MoveZone(this.zone, transition);
344 return true;
345 }
346
347 // Token: 0x06001F99 RID: 8089 RVA: 0x000B2764 File Offset: 0x000B0964
348 public Zone CreateZone(Zone dest, int destLv)
349 {
350 string text = dest.GetNewZoneID(destLv);
351 if (this.CreateExternalZone)
352 {
353 text = (this.owner.GetStr(30, null) ?? base.GetParam(1, null));
354 }
355 Debug.Log(string.Concat(new string[]
356 {
357 "Creating:",
358 text,
359 "/",
360 destLv.ToString(),
361 "/",
362 EClass.sources.zones.map.ContainsKey(text).ToString(),
363 "/",
364 (dest != null) ? dest.ToString() : null
365 }));
366 Zone zone = SpatialGen.Create(text, dest, true, this.owner.pos.x, this.owner.pos.z, 0) as Zone;
367 zone.lv = destLv;
368 zone.x = dest.x;
369 zone.y = dest.y;
370 this.owner.c_uidZone = zone.uid;
371 if (this.CreateExternalZone)
372 {
373 zone.isExternalZone = true;
374 }
375 Debug.Log("Created:" + zone.Name + "/" + zone.id);
376 return zone;
377 }
378
379 // Token: 0x06001F9A RID: 8090 RVA: 0x000B289C File Offset: 0x000B0A9C
380 public override void OnStepped(Chara c)
381 {
382 if (this.AutoEnter && c.IsPC && this.owner.IsInstalled && c.IsAliveInCurrentZone && (this.ForceEnter || !EClass.core.config.game.disableAutoStairs))
383 {
384 string str = "OnStepped:";
385 AIAct ai = EClass.pc.ai;
386 Debug.Log(str + ((ai != null) ? ai.ToString() : null));
387 AI_Goto ai_Goto = EClass.pc.ai.Current as AI_Goto;
388 if (ai_Goto == null && !(EClass.pc.ai is GoalManualMove))
389 {
390 return;
391 }
392 if (ai_Goto != null && !ai_Goto.dest.Equals(this.owner.pos))
393 {
394 return;
395 }
396 this.MoveZone(false);
397 }
398 }
399
400 // Token: 0x06001F9B RID: 8091 RVA: 0x000B296B File Offset: 0x000B0B6B
401 public virtual bool TryTeleport()
402 {
403 return false;
404 }
405
406 // Token: 0x06001F9C RID: 8092 RVA: 0x000B2970 File Offset: 0x000B0B70
407 public virtual bool IsFor(Zone z)
408 {
409 if (z == this.zone)
410 {
411 return true;
412 }
413 string param = base.GetParam(1, null);
414 if (!param.IsEmpty())
415 {
416 int num = (base.GetParam(2, null) != null) ? base.GetParam(2, null).ToInt() : 0;
417 if (z.id == param && z.lv == num)
418 {
419 return true;
420 }
421 }
422 return false;
423 }
424}
Definition AIAct.cs:7
Definition Chara.cs:12
Definition Msg.cs:7
Definition Point.cs:11
Definition Trait.cs:9
Definition Zone.cs:14