source: OniSplit/Metadata/ObjectMetadata.cs@ 1114

Last change on this file since 1114 was 1114, checked in by iritscen, 5 years ago

Adding OniSplit source code (v0.9.99.0). Many thanks to Neo for all his work over the years.

File size: 30.2 KB
Line 
1using System;
2using System.Collections.Generic;
3using Oni;
4using Oni.Metadata;
5
6namespace Oni.Metadata
7{
8 internal class ObjectMetadata
9 {
10 internal enum TypeTag
11 {
12 CHAR = 0x43484152,
13 CMBT = 0x434d4254,
14 CONS = 0x434f4e53,
15 DOOR = 0x444f4f52,
16 FLAG = 0x464c4147,
17 FURN = 0x4655524e,
18 MELE = 0x4d454c45,
19 NEUT = 0x4e455554,
20 PART = 0x50415254,
21 PATR = 0x50415452,
22 PWRU = 0x50575255,
23 SNDG = 0x534e4447,
24 TRGV = 0x54524756,
25 TRIG = 0x54524947,
26 TURR = 0x54555252,
27 WEAP = 0x57454150
28 }
29
30 [Flags]
31 public enum ObjectFlags : uint
32 {
33 None = 0x00,
34 Locked = 0x01,
35 PlacedInGame = 0x02,
36 Temporary = 0x04,
37 Gunk = 0x08
38 }
39
40 public static readonly MetaStruct Header = new MetaStruct("Object",
41 new Field(MetaType.Enum<ObjectFlags>(), "Flags"),
42 new Field(MetaType.Vector3, "Position"),
43 new Field(MetaType.Vector3, "Rotation")
44 );
45
46 //
47 // Character Object
48 //
49
50 [Flags]
51 internal enum CharacterFlags : uint
52 {
53 None = 0x00,
54 IsPlayer = 0x01,
55 RandomCostume = 0x02,
56 NotInitiallyPresent = 0x04,
57 NonCombatant = 0x08,
58 CanSpawnMultiple = 0x10,
59 Spawned = 0x20,
60 Unkillable = 0x40,
61 InfiniteAmmo = 0x80,
62 Omniscient = 0x0100,
63 HasLSI = 0x0200,
64 Boss = 0x0400,
65 UpgradeDifficulty = 0x0800,
66 NoAutoDrop = 0x1000
67 }
68
69 internal enum CharacterTeam : uint
70 {
71 Konoko = 0,
72 TCTF = 1,
73 Syndicate = 2,
74 Neutral = 3,
75 SecurityGuard = 4,
76 RogueKonoko = 5,
77 Switzerland = 6,
78 SyndicateAccessory = 7
79 }
80
81 internal enum CharacterJobType : uint
82 {
83 None = 0,
84 Idle = 1,
85 Guard = 2,
86 Patrol = 3,
87 TeamBatle = 4,
88 Combat = 5,
89 Melee = 6,
90 Alarm = 7,
91 Neutral = 8,
92 Panic = 9
93 }
94
95 internal enum CharacterAlertStatus : uint
96 {
97 Lull = 0,
98 Low = 1,
99 Medium = 2,
100 High = 3,
101 Combat = 4
102 }
103
104 internal enum CharacterPursuitMode : uint
105 {
106 None = 0,
107 Forget = 1,
108 GoTo = 2,
109 Wait = 3,
110 Look = 4,
111 Move = 5,
112 Hunt = 6,
113 Glanc = 7,
114 }
115
116 internal enum CharacterPursuitLostBehavior : uint
117 {
118 ReturnToJob = 0,
119 KeepLooking = 1,
120 FindAlarm = 2,
121 }
122
123 public static readonly MetaStruct Character = new MetaStruct("Character",
124 new Field(MetaType.Enum<CharacterFlags>(), "Flags"),
125 new Field(MetaType.String64, "Class"),
126 new Field(MetaType.String32, "Name"),
127 new Field(MetaType.String64, "Weapon"),
128 new Field(new MetaStruct("CharacterScripts",
129 new Field(MetaType.String32, "Spawn"),
130 new Field(MetaType.String32, "Die"),
131 new Field(MetaType.String32, "Combat"),
132 new Field(MetaType.String32, "Alarm"),
133 new Field(MetaType.String32, "Hurt"),
134 new Field(MetaType.String32, "Defeated"),
135 new Field(MetaType.String32, "OutOfAmmo"),
136 new Field(MetaType.String32, "NoPath")), "Scripts"),
137 new Field(MetaType.Int32, "AdditionalHealth"),
138 new Field(new MetaStruct("CharacterJob",
139 new Field(MetaType.Enum<CharacterJobType>(), "Type"),
140 new Field(MetaType.Int16, "PatrolPathId")), "Job"),
141 new Field(new MetaStruct("CharacterBehaviors",
142 new Field(MetaType.Int16, "CombatId"),
143 new Field(MetaType.Int16, "MeleeId"),
144 new Field(MetaType.Int16, "NeutralId")), "Behaviors"),
145 new Field(new MetaStruct("CharacterInventory",
146 new Field(new MetaStruct("Ammo",
147 new Field(MetaType.Int16, "Use"),
148 new Field(MetaType.Int16, "Drop")), "Ammo"),
149 new Field(new MetaStruct("EnergyCell",
150 new Field(MetaType.Int16, "Use"),
151 new Field(MetaType.Int16, "Drop")), "EnergyCell"),
152 new Field(new MetaStruct("Hypo",
153 new Field(MetaType.Int16, "Use"),
154 new Field(MetaType.Int16, "Drop")), "Hypo"),
155 new Field(new MetaStruct("Shield",
156 new Field(MetaType.Int16, "Use"),
157 new Field(MetaType.Int16, "Drop")), "Shield"),
158 new Field(new MetaStruct("Invisibility",
159 new Field(MetaType.Int16, "Use"),
160 new Field(MetaType.Int16, "Drop")), "Invisibility"),
161 new Field(MetaType.Padding(4))), "Inventory"),
162 new Field(MetaType.Enum<CharacterTeam>(), "Team"),
163 new Field(MetaType.Int32, "AmmoPercentage"),
164 new Field(new MetaStruct("CharacterAlert",
165 new Field(MetaType.Enum<CharacterAlertStatus>(), "Initial"),
166 new Field(MetaType.Enum<CharacterAlertStatus>(), "Minimal"),
167 new Field(MetaType.Enum<CharacterAlertStatus>(), "JobStart"),
168 new Field(MetaType.Enum<CharacterAlertStatus>(), "Investigate")), "Alert"),
169 new Field(MetaType.Int32, "AlarmGroups"),
170 new Field(new MetaStruct("CharacterPursuit",
171 new Field(MetaType.Enum<CharacterPursuitMode>(), "StrongUnseen"),
172 new Field(MetaType.Enum<CharacterPursuitMode>(), "WeakUnseen"),
173 new Field(MetaType.Enum<CharacterPursuitMode>(), "StrongSeen"),
174 new Field(MetaType.Enum<CharacterPursuitMode>(), "WeakSeen"),
175 new Field(MetaType.Enum<CharacterPursuitLostBehavior>(), "Lost")), "Pursuit")
176 );
177
178 //
179 // Combat Behavior Object
180 //
181
182 internal enum CombatBehaviorType : uint
183 {
184 None = 0,
185 Stare = 1,
186 HoldAndFire = 2,
187 FiringCharge = 3,
188 Melee = 4,
189 BarabasShoot = 5,
190 BarabasAdvance = 6,
191 BarabasMelee = 7,
192 SuperNinjaFireball = 8,
193 SuperNinjaAdvance = 9,
194 SuperNinjaMelee = 10,
195 RunForAlarm = 11,
196 MutantMuroMelee = 12,
197 MuroThunderbolt = 13
198 }
199
200 internal enum CombatMeleeOverride : uint
201 {
202 None = 0,
203 IfPunched = 1,
204 Cancelled = 2,
205 ShortRange = 3,
206 MediumRange = 4,
207 AlwaysMelee = 5
208 }
209
210 internal enum CombatNoGunBehavior : uint
211 {
212 Melee = 0,
213 Retreat = 1,
214 RunForAlarm = 2
215 }
216
217 public static readonly MetaStruct CombatProfile = new MetaStruct("CombatProfile",
218 new Field(MetaType.String64, "Name"),
219 new Field(MetaType.Int32, "CombatId"),
220 new Field(new MetaStruct("CMBTBehaviors",
221 new Field(MetaType.Enum<CombatBehaviorType>(), "LongRange"),
222 new Field(MetaType.Enum<CombatBehaviorType>(), "MediumRange"),
223 new Field(MetaType.Enum<CombatBehaviorType>(), "ShortRange"),
224 new Field(MetaType.Enum<CombatBehaviorType>(), "MediumRetreat"),
225 new Field(MetaType.Enum<CombatBehaviorType>(), "LongRetreat")), "Behaviors"),
226 new Field(new MetaStruct("CMBTCombat",
227 new Field(MetaType.Float, "MediumRange"),
228 new Field(MetaType.Enum<CombatMeleeOverride>(), "MeleeOverride"),
229 new Field(MetaType.Enum<CombatNoGunBehavior>(), "NoGunBehavior"),
230 new Field(MetaType.Float, "ShortRange"),
231 new Field(MetaType.Float, "PursuitDistance")), "Combat"),
232 new Field(new MetaStruct("CMBTPanic",
233 new Field(MetaType.Int32, "Hurt"),
234 new Field(MetaType.Int32, "GunFire"),
235 new Field(MetaType.Int32, "Melee"),
236 new Field(MetaType.Int32, "Sight")), "Panic"),
237 new Field(new MetaStruct("CMBTAlarm",
238 new Field(MetaType.Float, "SearchDistance"),
239 new Field(MetaType.Float, "EnemyIgnoreDistance"),
240 new Field(MetaType.Float, "EnemyAttackDistance"),
241 new Field(MetaType.Int32, "DamageThreshold"),
242 new Field(MetaType.Int32, "FightTimer")), "Alarm")
243 );
244
245 //
246 // Console Object
247 //
248
249 [Flags]
250 internal enum ConsoleFlags : ushort
251 {
252 None = 0x00,
253 InitialActive = 0x08,
254 Punch = 0x20,
255 IsAlarm = 0x40
256 }
257
258 public static readonly MetaStruct Console = new MetaStruct("Console",
259 new Field(MetaType.String63, "Class"),
260 new Field(MetaType.Int16, "ConsoleId"),
261 new Field(MetaType.Enum<ConsoleFlags>(), "Flags"),
262 new Field(MetaType.String63, "InactiveTexture"),
263 new Field(MetaType.String63, "ActiveTexture"),
264 new Field(MetaType.String63, "TriggeredTexture")
265 );
266
267 //
268 // Door Object
269 //
270
271 [Flags]
272 internal enum DoorFlags : ushort
273 {
274 None = 0x00,
275 InitialLocked = 0x01,
276 InDoorFrame = 0x04,
277 Manual = 0x10,
278 DoubleDoor = 0x80,
279 Mirror = 0x0100,
280 OneWay = 0x0200,
281 Reverse = 0x0400,
282 Jammed = 0x800,
283 InitialOpen = 0x1000,
284 }
285
286 public static readonly MetaStruct Door = new MetaStruct("Door",
287 new Field(MetaType.String63, "Class"),
288 new Field(MetaType.Int16, "DoorId"),
289 new Field(MetaType.Int16, "KeyId"),
290 new Field(MetaType.Enum<DoorFlags>(), "Flags"),
291 new Field(MetaType.Vector3, "Center"),
292 new Field(MetaType.Float, "SquaredActivationRadius"),
293 new Field(MetaType.String63, "Texture1"),
294 new Field(MetaType.String63, "Texture2")
295 );
296
297 //
298 // Flag Object
299 //
300
301 public static readonly MetaStruct Flag = new MetaStruct("Flag",
302 new Field(MetaType.Color, "Color"),
303 new Field(MetaType.Int16, "Prefix"),
304 new Field(MetaType.Int16, "FlagId"),
305 new Field(MetaType.String128, "Notes")
306 );
307
308 //
309 // Furniture Object
310 //
311
312 public static readonly MetaStruct Furniture = new MetaStruct("Furniture",
313 new Field(MetaType.String32, "Class"),
314 new Field(MetaType.String48, "Particle")
315 );
316
317 //
318 // Melee Object
319 //
320
321 public static readonly MetaStruct MeleeProfile = new MetaStruct("MeleeProfile",
322 new Field(MetaType.Int32, "MeleeId"),
323 new Field(MetaType.String64, "Name"),
324 new Field(MetaType.String64, "CharacterClass"),
325 new Field(MetaType.Int32, "Notice"),
326 new Field(new MetaStruct("MeleeDodge",
327 new Field(MetaType.Int32, "Base"),
328 new Field(MetaType.Int32, "Extra"),
329 new Field(MetaType.Int32, "ExtraDamageThreshold")), "Dodge"),
330 new Field(new MetaStruct("MeleeBlockSkill",
331 new Field(MetaType.Int32, "Single"),
332 new Field(MetaType.Int32, "Group")), "BlockSkill"),
333 new Field(MetaType.Float, "NotBlocked"),
334 new Field(MetaType.Float, "MustChangeStance"),
335 new Field(MetaType.Float, "BlockedButUnblockable"),
336 new Field(MetaType.Float, "BlockedButHasStagger"),
337 new Field(MetaType.Float, "BlockedButHasBlockstun"),
338 new Field(MetaType.Float, "Blocked"),
339 new Field(MetaType.Float, "ThrowDanger"),
340 new Field(MetaType.Int16, "DazedMinFrames"),
341 new Field(MetaType.Int16, "DazedMaxFrames")
342 );
343
344 [Flags]
345 internal enum MeleeTechniqueFlags : uint
346 {
347 None = 0x00,
348 Interruptible = 0x01,
349 GenerousDir = 0x02,
350 Fearless = 0x04
351 }
352
353 public static readonly MetaStruct MeleeTechnique = new MetaStruct("MeleeTechnique",
354 new Field(MetaType.String64, "Name"),
355 new Field(MetaType.Enum<MeleeTechniqueFlags>(), "Flags"),
356 new Field(MetaType.UInt32, "Weight"),
357 new Field(MetaType.UInt32, "Importance"),
358 new Field(MetaType.UInt32, "RepeatDelay")
359 );
360
361 internal enum MeleeMoveCategory
362 {
363 Attack = 0,
364 Position = 16,
365 Maneuver = 32,
366 Evade = 48,
367 Throw = 64
368 }
369
370 internal enum MeleeMoveAttackType
371 {
372 P,
373 PP,
374 PPP,
375 PPPP,
376 PF,
377 PL,
378 PR,
379 PB,
380 PD,
381 PF_PF,
382 PF_PF_PF,
383 PL_PL,
384 PL_PL_PL,
385 PR_PR,
386 PR_PR_PR,
387 PB_PB,
388 PB_PB_PB,
389 PD_PD,
390 PD_PD_PD,
391 K,
392 KK,
393 KKK,
394 KKKF,
395 KF,
396 KL,
397 KR,
398 KB,
399 KD,
400 KF_KF,
401 KF_KF_KF,
402 KL_KL,
403 KL_KL_KL,
404 KR_KR,
405 KR_KR_KR,
406 KB_KB,
407 KB_KB_KB,
408 KD_KD,
409 KD_KD_KD,
410 PPK,
411 PKK,
412 PKP,
413 KPK,
414 KPP,
415 KKP,
416 PK,
417 KP,
418 PPKK,
419 PPKKK,
420 PPKKKKK,
421 HP,
422 HPF,
423 HK,
424 HKF,
425 CS_P,
426 CS_K,
427 C_P1,
428 C_P2,
429 C_PF,
430 C_K1,
431 C_K2,
432 C_KF,
433 GETUP_KF,
434 GETUP_KB,
435 R_P,
436 R_K,
437 RB_P,
438 RB_K,
439 RL_P,
440 RL_K,
441 RR_P,
442 RR_K,
443 R_SLIDE,
444 J_P,
445 J_K,
446 JF_P,
447 JF_PB,
448 JF_K,
449 JF_KB,
450 JB_P,
451 JB_K,
452 JL_P,
453 JL_K,
454 JR_P,
455 JR_K
456 }
457
458 internal enum MeleeMovePositionType
459 {
460 RunForward,
461 RunLeft,
462 RunRight,
463 RunBack,
464
465 JumpUp,
466 JumpForward,
467 JumpLeft,
468 JumpRight,
469 JumpBack,
470 StartToCrouch,
471 Crouch,
472 Stand,
473
474 CloseForward,
475 CloseLeft,
476 CloseRight,
477 CloseBack,
478
479 RunJumpForward,
480 RunJumpLeft,
481 RunJumpRight,
482 RunJumpBack
483 }
484
485 internal enum MeleeMoveManeuverType
486 {
487 Advance, // Duration, MinRange, ThresholdRange
488 Retreat, // Duration, MaxRange, ThresholdRange
489 CircleLeft, // Duration, MinAngle, MaxAngle
490 CircleRight, // Duration, MinAngle, MaxAngle
491 Pause, // Duration
492 Crouch, // Duration
493 Jump, // Duration
494 Taunt, // Duration
495 RandomStop, // Chance
496 GetUpForward, // Duration
497 GetUpBackward, // Duration
498 GetUpRollLeft, // Duration
499 GetUpRollRight, // Duration
500 BarabasWave // MaxRange
501 }
502
503 internal class MeleeMoveTypeInfo
504 {
505 public MeleeMoveManeuverType Type;
506 public string[] ParamNames;
507
508 public MeleeMoveTypeInfo(MeleeMoveManeuverType type, params string[] paramNames)
509 {
510 Type = type;
511 ParamNames = paramNames;
512 }
513 }
514
515 public static readonly MeleeMoveTypeInfo[] MeleeMoveManeuverTypeInfo = new MeleeMoveTypeInfo[]
516 {
517 new MeleeMoveTypeInfo(MeleeMoveManeuverType.Advance, "Duration", "MinRange", "ThresholdRange"),
518 new MeleeMoveTypeInfo(MeleeMoveManeuverType.Retreat, "Duration", "MaxRange", "ThresholdRange"),
519 new MeleeMoveTypeInfo(MeleeMoveManeuverType.CircleLeft, "Duration", "MinAngle", "MaxAngle"),
520 new MeleeMoveTypeInfo(MeleeMoveManeuverType.CircleRight, "Duration", "MinAngle", "MaxAngle"),
521 new MeleeMoveTypeInfo(MeleeMoveManeuverType.Pause, "Duration"),
522 new MeleeMoveTypeInfo(MeleeMoveManeuverType.Crouch, "Duration"),
523 new MeleeMoveTypeInfo(MeleeMoveManeuverType.Jump, "Duration"),
524 new MeleeMoveTypeInfo(MeleeMoveManeuverType.Taunt, "Duration"),
525 new MeleeMoveTypeInfo(MeleeMoveManeuverType.RandomStop, "Chance"),
526 new MeleeMoveTypeInfo(MeleeMoveManeuverType.GetUpForward, "Duration"),
527 new MeleeMoveTypeInfo(MeleeMoveManeuverType.GetUpBackward, "Duration"),
528 new MeleeMoveTypeInfo(MeleeMoveManeuverType.GetUpRollLeft, "Duration"),
529 new MeleeMoveTypeInfo(MeleeMoveManeuverType.GetUpRollRight, "Duration"),
530 new MeleeMoveTypeInfo(MeleeMoveManeuverType.BarabasWave, "MaxRange")
531 };
532
533 internal enum MeleeMoveEvadeType
534 {
535 JumpForward,
536 JumpForward2,
537 JumpBack,
538 JumpBack2,
539 JumpLeft,
540 JumpLeft2,
541 JumpRight,
542 JumpRight2,
543 RunJumpForward,
544 RunJumpForward2,
545 RunJumpBack,
546 RunJumpBack2,
547 RunJumpLeft,
548 RunJumpLeft2,
549 RunJumpRight,
550 RunJumpRight2,
551 RollForward,
552 RollBackward,
553 RollLeft,
554 RollRight,
555 SlideForward,
556 SlideBack,
557 SlideLeft,
558 SlideRight
559 }
560
561 internal enum MeleeMoveThrowType
562 {
563 P_Front,
564 K_Front,
565 P_Behind,
566 K_Behind,
567 RP_Front,
568 RK_Front,
569 RP_Behind,
570 RK_Behind,
571 P_FrontDisarm,
572 K_FrontDisarm,
573 P_BehindDisarm,
574 K_BehindDisarm,
575 RP_FrontDisarm,
576 RK_FrontDisarm,
577 RP_BehindDisarm,
578 RK_BehindDisarm,
579 P_FrontRifDisarm,
580 K_FrontRifDisarm,
581 P_BehindRifDisarm,
582 K_BehindRifDisarm,
583 RP_FrontRifDisarm,
584 RK_FrontRifDisarm,
585 RP_BehindRifDisarm,
586 RK_BehindRifDisarm,
587 Tackle
588 }
589
590 public static readonly MetaStruct MeleeMove = new MetaStruct("MeleeMove",
591 new Field(MetaType.Int32, "Type"),
592 new Field(MetaType.Float, "Param1"),
593 new Field(MetaType.Float, "Param2"),
594 new Field(MetaType.Float, "Param3")
595 );
596
597 //
598 // Neutral Object
599 //
600
601 [Flags]
602 internal enum NeutralFlags : uint
603 {
604 None = 0x00,
605 NoResume = 0x01,
606 NoResumeAfterGive = 0x02,
607 Uninterruptible = 0x04
608 }
609
610 [Flags]
611 public enum NeutralItems : byte
612 {
613 None = 0,
614 Shield = 1,
615 Invisibility = 2,
616 LSI = 4
617 }
618
619 public static readonly MetaStruct NeutralBehavior = new MetaStruct("NeutralBehavior",
620 new Field(MetaType.String32, "Name"),
621 new Field(MetaType.Int16, "NeutralId")
622 );
623
624 public static readonly MetaStruct NeutralBehaviorParams = new MetaStruct("NeutralBehaviorParams",
625 new Field(MetaType.Enum<NeutralFlags>(), "Flags"),
626 new Field(new MetaStruct("NeutralBehaviorRange",
627 new Field(MetaType.Float, "Trigger"),
628 new Field(MetaType.Float, "Talk"),
629 new Field(MetaType.Float, "Follow"),
630 new Field(MetaType.Float, "Enemy")), "Ranges"),
631 new Field(new MetaStruct("NeutralehaviorSpeech",
632 new Field(MetaType.String32, "Trigger"),
633 new Field(MetaType.String32, "Abort"),
634 new Field(MetaType.String32, "Enemy")), "Speech"),
635 new Field(new MetaStruct("NeutralBehaviorScript",
636 new Field(MetaType.String32, "AfterTalk")), "Script"),
637 new Field(new MetaStruct("NeutralBehaviorRewards",
638 new Field(MetaType.String32, "WeaponClass"),
639 new Field(MetaType.Byte, "Ammo"),
640 new Field(MetaType.Byte, "EnergyCell"),
641 new Field(MetaType.Byte, "Hypo"),
642 new Field(MetaType.Enum<NeutralItems>(), "Other")), "Rewards")
643 );
644
645 [Flags]
646 public enum NeutralDialogLineFlags : ushort
647 {
648 None = 0x00,
649 IsPlayer = 0x01,
650 GiveItems = 0x02,
651 AnimOnce = 0x04,
652 OtherAnimOnce = 0x08
653 }
654
655 public static readonly MetaStruct NeutralBehaviorDialogLine = new MetaStruct("DialogLine",
656 new Field(MetaType.Enum<NeutralDialogLineFlags>(), "Flags"),
657 new Field(MetaType.Padding(2)),
658 new Field(MetaType.Int16, "Anim"),
659 new Field(MetaType.Int16, "OtherAnim"),
660 new Field(MetaType.String32, "SpeechName")
661 );
662
663 //
664 // Particle Object
665 //
666
667 [Flags]
668 internal enum ParticleFlags : ushort
669 {
670 None = 0x00,
671 NotInitiallyCreated = 0x02,
672 }
673
674 public static readonly MetaStruct Particle = new MetaStruct("Particle",
675 new Field(MetaType.String64, "Class"),
676 new Field(MetaType.String48, "Tag"),
677 new Field(MetaType.Enum<ParticleFlags>(), "Flags"),
678 new Field(MetaType.Vector2, "DecalScale")
679 );
680
681 //
682 // Patrol Path Object
683 //
684
685 internal enum PatrolPathPointType
686 {
687 MoveToFlag = 0,
688 Stop = 1,
689 Pause = 2,
690 LookAtFlag = 3,
691 LookAtPoint = 4,
692 MoveAndFaceFlag = 5,
693 Loop = 6,
694 MovementMode = 7,
695 MoveToPoint = 8,
696 LockFacing = 9,
697 MoveThroughFlag = 10,
698 MoveThroughPoint = 11,
699 StopLooking = 12,
700 FreeFacing = 13,
701 GlanceAtFlagFor = 14, // unused ?
702 MoveNearFlag = 15,
703 LoopFrom = 16,
704 Scan = 17, // unused ?
705 StopScanning = 18,
706 MoveToFlagLookAndWait = 19,
707 CallScript = 20,
708 ForkScript = 21,
709 IgnorePlayer = 22,
710 FaceToFlagAndFire = 23
711 }
712
713 internal enum PatrolPathFacing
714 {
715 Forward = 0,
716 Backward = 1,
717 Left = 1,
718 Right = 2,
719 Stopped = 3
720 }
721
722 internal enum PatrolPathMovementMode
723 {
724 ByAlertLevel = 0,
725 Stop = 1,
726 Crouch = 2,
727 Creep = 3,
728 WalkNoAim = 4,
729 Walk = 5,
730 RunNoAim = 6,
731 Run = 7
732 }
733
734 public static readonly MetaStruct PatrolPath = new MetaStruct("PatrolPath",
735 new Field(MetaType.String32, "Name")
736 );
737
738 public static readonly MetaStruct PatrolPathInfo = new MetaStruct("PatrolPathInfo",
739 new Field(MetaType.Int16, "PatrolId"),
740 new Field(MetaType.Int16, "ReturnToNearest")
741 );
742
743 public static int GetPatrolPathPointSize(PatrolPathPointType pointType)
744 {
745 switch (pointType)
746 {
747 case PatrolPathPointType.IgnorePlayer:
748 return 1;
749 case PatrolPathPointType.MoveToFlag:
750 case PatrolPathPointType.LookAtFlag:
751 case PatrolPathPointType.MoveAndFaceFlag:
752 case PatrolPathPointType.ForkScript:
753 case PatrolPathPointType.CallScript:
754 return 2;
755 case PatrolPathPointType.Pause:
756 case PatrolPathPointType.MovementMode:
757 case PatrolPathPointType.LoopFrom:
758 case PatrolPathPointType.LockFacing:
759 return 4;
760 case PatrolPathPointType.MoveThroughFlag:
761 case PatrolPathPointType.MoveNearFlag:
762 case PatrolPathPointType.GlanceAtFlagFor:
763 case PatrolPathPointType.Scan:
764 return 6;
765 case PatrolPathPointType.MoveToFlagLookAndWait:
766 case PatrolPathPointType.FaceToFlagAndFire:
767 return 8;
768 case PatrolPathPointType.LookAtPoint:
769 case PatrolPathPointType.MoveToPoint:
770 return 12;
771 case PatrolPathPointType.MoveThroughPoint:
772 return 16;
773 default:
774 return 0;
775 }
776 }
777
778 //
779 // PowerUp Object
780 //
781
782 internal enum PowerUpClass : uint
783 {
784 Ammo = 0x424D4D41,
785 EnergyCell = 0x454D4D41,
786 Hypo = 0x4F505948,
787 Shield = 0x444C4853,
788 Invisibility = 0x49564E49,
789 LSI = 0x49534C41,
790 }
791
792 public static readonly MetaStruct PowerUp = new MetaStruct("PowerUp",
793 new Field(MetaType.Enum<PowerUpClass>(), "Class")
794 );
795
796 //
797 // Sound Object
798 //
799
800 internal enum SoundVolumeType
801 {
802 Box = 0x564C4D45,
803 Sphere = 0x53504852
804 }
805
806 public static readonly MetaStruct Sound = new MetaStruct("Sound",
807 new Field(MetaType.String32, "Class")
808 );
809
810 public static readonly MetaStruct SoundSphere = new MetaStruct("SoundSphere",
811 new Field(MetaType.Float, "MinRadius"),
812 new Field(MetaType.Float, "MaxRadius")
813 );
814
815 public static readonly MetaStruct SoundParams = new MetaStruct("SoundParams",
816 new Field(MetaType.Float, "Volume"),
817 new Field(MetaType.Float, "Pitch")
818 );
819
820 //
821 // Trigger Volume Object
822 //
823
824 [Flags]
825 public enum TriggerVolumeFlags : uint
826 {
827 None = 0x00,
828 OneTimeEnter = 0x01,
829 OneTimeInside = 0x02,
830 OneTimeExit = 0x04,
831 EnterDisabled = 0x08,
832 InsideDisabled = 0x10,
833 ExitDisabled = 0x20,
834 Disabled = 0x40,
835 PlayerOnly = 0x80
836 }
837
838 public static readonly MetaStruct TriggerVolume = new MetaStruct("TriggerVolume",
839 new Field(MetaType.String63, "Name"),
840 new Field(new MetaStruct("TriggerVolumeScripts",
841 new Field(MetaType.String32, "Entry"),
842 new Field(MetaType.String32, "Inside"),
843 new Field(MetaType.String32, "Exit")), "Scripts"),
844 new Field(MetaType.Byte, "Teams"),
845 new Field(MetaType.Padding(3)),
846 new Field(MetaType.Vector3, "Size"),
847 new Field(MetaType.Int32, "TriggerVolumeId"),
848 new Field(MetaType.Int32, "ParentId"),
849 new Field(MetaType.String128, "Notes"),
850 new Field(MetaType.Enum<TriggerVolumeFlags>(), "Flags")
851 );
852
853 //
854 // Trigger Object
855 //
856
857 [Flags]
858 public enum TriggerFlags : ushort
859 {
860 None = 0,
861 InitialActive = 0x0008,
862 ReverseAnim = 0x0010,
863 PingPong = 0x0020,
864 }
865
866 public static readonly MetaStruct Trigger = new MetaStruct("Trigger",
867 new Field(MetaType.String63, "Class"),
868 new Field(MetaType.Int16, "TriggerId"),
869 new Field(MetaType.Enum<TriggerFlags>(), "Flags"),
870 new Field(MetaType.Color, "LaserColor"),
871 new Field(MetaType.Float, "StartPosition"),
872 new Field(MetaType.Float, "Speed"),
873 new Field(MetaType.Int16, "EmitterCount"),
874 new Field(MetaType.Int16, "TimeOn"),
875 new Field(MetaType.Int16, "TimeOff")
876 );
877
878 //
879 // Turret Object
880 //
881
882 [Flags]
883 internal enum TurretTargetTeams : uint
884 {
885 None = 0x00,
886 Konoko = 0x01,
887 TCTF = 0x02,
888 Syndicate = 0x04,
889 Neutral = 0x08,
890 SecurityGuard = 0x10,
891 RogueKonoko = 0x20,
892 Switzerland = 0x40,
893 SyndicateAccessory = 0x80
894 }
895
896 [Flags]
897 internal enum TurretFlags : ushort
898 {
899 None = 0,
900 InitialActive = 0x0002,
901 }
902
903 public static readonly MetaStruct Turret = new MetaStruct("Turret",
904 new Field(MetaType.String63, "Class"),
905 new Field(MetaType.Int16, "TurretId"),
906 new Field(MetaType.Enum<TurretFlags>(), "Flags"),
907 new Field(MetaType.Padding(36)),
908 new Field(MetaType.Enum<TurretTargetTeams>(), "TargetedTeams")
909 );
910
911 //
912 // Weapon Object
913 //
914
915 public static readonly MetaStruct Weapon = new MetaStruct("Weapon",
916 new Field(MetaType.String32, "Class")
917 );
918
919 internal enum EventType
920 {
921 None,
922 Script,
923 ActivateTurret,
924 DeactivateTurret,
925 ActivateConsole,
926 DeactivateConsole,
927 ActivateAlarm,
928 DeactivateAlaram,
929 ActivateTrigger,
930 DeactivateTrigger,
931 LockDoor,
932 UnlockDoor
933 }
934 }
935}
Note: See TracBrowser for help on using the repository browser.