BrawlCrate v0.41
Wii File Editor
Loading...
Searching...
No Matches
Public Member Functions | Static Public Member Functions | Public Attributes | Static Public Attributes | Properties | List of all members
BrawlLib.SSBB.ResourceNodes.MoveDefNode Class Reference
Inheritance diagram for BrawlLib.SSBB.ResourceNodes.MoveDefNode:
BrawlLib.SSBB.ResourceNodes.ARCEntryNode BrawlLib.SSBB.ResourceNodes.U8EntryNode BrawlLib.SSBB.ResourceNodes.ResourceNode

Public Member Functions

void CreateEventDictionary ()
 
MoveDefExternalNode IsExternal (int offset)
 
ResourceNode FindNode (int offset)
 
MoveDefActionNode GetAction (int offset)
 
MoveDefActionNode GetAction (int list, int type, int index)
 
int GetOffset (int list, int type, int index)
 
void GetLocation (int offset, out int list, out int type, out int index)
 
int GetSize (int offset)
 
void GetBoneIndex (ref int boneIndex)
 
void SetBoneIndex (ref int boneIndex)
 
override bool OnInitialize ()
 
void LoadOtherData ()
 
override void OnPopulate ()
 
override int OnCalculateSize (bool force)
 
override void OnRebuild (VoidPtr address, int length, bool force)
 
- Public Member Functions inherited from BrawlLib.SSBB.ResourceNodes.ARCEntryNode
bool isModelData ()
 
bool isTextureData ()
 
void UpdateName ()
 
override void Initialize (ResourceNode parent, DataSource origSource, DataSource uncompSource)
 
override bool OnInitialize ()
 
- Public Member Functions inherited from BrawlLib.SSBB.ResourceNodes.ResourceNode
void OnRenamed ()
 
List< ResourceNodeGetChildrenRecursive ()
 Used primarily to get bone lists. Kept for all resource nodes for utility. More...
 
virtual void SignalPropertyChange ()
 
virtual void Dispose ()
 
void SelectChildAtIndex (int index)
 
void UpdateProperties ()
 
void UpdateCurrentControl ()
 
virtual bool MoveUp ()
 
virtual bool MoveDown ()
 
virtual void OnMoved ()
 
virtual void DoMoveDown ()
 
virtual void DoMoveDown (bool select)
 
virtual void DoMoveUp ()
 
virtual void DoMoveUp (bool select)
 
virtual bool AddUp ()
 
virtual bool AddDown ()
 
virtual bool ToParent ()
 
void Populate (int levels=-1)
 
virtual void OnPopulate ()
 
void Initialize (ResourceNode parent, FileMap source)
 
void Initialize (ResourceNode parent, VoidPtr address, int length)
 
void Initialize (ResourceNode parent, DataSource origSource)
 
virtual void Initialize (ResourceNode parent, DataSource origSource, DataSource uncompSource)
 
virtual bool OnInitialize ()
 
virtual void Restore ()
 
virtual void Remove ()
 
virtual void RemoveChild (ResourceNode child)
 
virtual void AddChild (ResourceNode child)
 
virtual void AddChild (ResourceNode child, bool change)
 
virtual void InsertChild (ResourceNode child, int index)
 
virtual void InsertChild (ResourceNode child, bool change, int index)
 
void SetSizeInternal (int size)
 
virtual void Replace (string fileName)
 
virtual void Replace (ResourceNode node)
 
virtual void Replace (string fileName, FileMapProtect prot, FileOptions options)
 
virtual void ReplaceRaw (VoidPtr address, int length)
 
virtual void ReplaceRaw (FileMap map)
 
virtual void Export (string outPath)
 
void Export (FileStream outStream)
 
virtual void ExportUncompressed (string outPath)
 
void ExportUncompressed (FileStream outStream)
 
virtual void Rebuild ()
 
virtual void Rebuild (bool force)
 
virtual void Rebuild (VoidPtr address, int length, bool force)
 
virtual void OnRebuild (VoidPtr address, int length, bool force)
 
virtual int CalculateSize (bool force)
 
virtual int OnCalculateSize (bool force)
 
void Merge ()
 
void Merge (bool forceBuild)
 
ResourceNode FindChildByType (string path, bool searchChildren, params ResourceType[] types)
 
ResourceNode FindChildByType (string path, bool searchChildren, StringComparison compare, params ResourceType[] types)
 
ResourceNode FindChild (string path)
 
ResourceNode FindChild (string path, bool searchChildren)
 
ResourceNode FindChild (string path, StringComparison compare)
 
ResourceNode FindChild (string path, bool searchChildren, StringComparison compare)
 
ResourceNode[] FindChildrenByClassType (string path, Type type)
 
ResourceNode[] FindChildrenByType (string path, ResourceType type)
 
ResourceNode[] FindChildrenByTypeInGroup (string path, ResourceType type, byte group)
 
ResourceNode[] FindChildrenByName (string name)
 
unsafe string FindName (string name)
 
ResourceNode FindEmbeddedIndex (int index)
 
virtual unsafe byte[] MD5 ()
 Find the MD5 checksum of this node's data. If this node doesn't have any data (BRESGroupNode, for example), this method will return null. More...
 
string MD5Str ()
 Get the result of the MD5() function as a string of hexadecimal digits. If MD5() returns null, this method will return an empty string. More...
 
ResourceNode PrevSibling ()
 
ResourceNode NextSibling ()
 
override string ToString ()
 
virtual void SortChildren ()
 

Static Public Member Functions

static void LoadEventDictionary ()
 
- Static Public Member Functions inherited from BrawlLib.SSBB.ResourceNodes.ResourceNode
static ResourceNode[] FindAllSubNodes (ResourceNode root)
 
static ResourceNode FindNode (ResourceNode root, string path, bool searchChildren, StringComparison compare)
 

Public Attributes

List< ResourceNode_externalRefs
 
List< MoveDefExternalNode_externalSections
 
bool[] StatusIDs
 
Dictionary< uint, List< MoveDefEventNode > > _events
 
SortedList< int, string > _paths = new SortedList<int, string>()
 
string[] iRequirements
 
string[] iAirGroundStats
 
string[] iCollisionStats
 
string[] iGFXFiles
 
AttributeInfo[] AttributeArray
 
Dictionary< string, SectionParamInfoParams
 
MoveDefActionListNode _subActions
 
MoveDefActionListNode _actions
 
SortedDictionary< int, MoveDefActionNode_subRoutines
 
List< ResourceNode_subRoutineList
 
ResourceNode _subRoutineGroup
 
MoveDefDataNode data
 
MoveDefDataCommonNode dataCommon
 
MoveDefReferenceNode references
 
MoveDefSectionNode sections
 
MoveDefLookupNode lookupNode
 
CompactStringTable refTable
 
Dictionary< int, MoveDefLookupOffsetNode_lookupSizes
 
MDL0Node _model = null
 
VoidPtr BaseAddress
 
Dictionary< int, int > _lookupEntries
 
List< MoveDefEntryNode_postProcessNodes
 
VoidPtr _rebuildBase
 
int lookupCount
 
int lookupLen
 
- Public Attributes inherited from BrawlLib.SSBB.ResourceNodes.ARCEntryNode
ResourceType _resourceType = ResourceType.ARCEntry
 
- Public Attributes inherited from BrawlLib.SSBB.ResourceNodes.U8EntryNode
int _u8Parent
 
int _u8FirstNotChild
 
int _u8Type
 
int _u8Index
 
- Public Attributes inherited from BrawlLib.SSBB.ResourceNodes.ResourceNode
Form _mainForm
 
string _name
 
string _origPath
 
ResourceNode _parent
 
List< ResourceNode_children = new List<ResourceNode>()
 
int _calcSize
 
EventHandler UpdateControl
 
MoveEventHandler MovedDown
 
ResourceEventHandler Renamed
 
ResourceEventHandler PropertyChanged
 
ResourceEventHandler Replaced
 
ResourceEventHandler Restored
 
ResourceChildEventHandler ChildRemoved
 
bool _isPopulating
 
bool _replaced
 

Static Public Attributes

static SortedDictionary< long, ActionEventInfoEventDictionary
 
static bool _dictionaryChanged = false
 
static SortedDictionary< int, MoveDefEntryNodenodeDictionary
 
static LookupManager _lookupOffsets
 

Properties

SortedList< int, string > Paths [get]
 
int LookupOffset [get]
 
int LookupCount [get]
 
int DataTableCount [get]
 
int ExtSubRoutines [get]
 
MDL0Node Model [get]
 
override ResourceType ResourceFileType [get]
 
string DataSize [get]
 
SortedDictionary< int, MoveDefEntryNodeNodeDictionary [get]
 
- Properties inherited from BrawlLib.SSBB.ResourceNodes.ARCEntryNode
override ResourceType ResourceFileType [get]
 
override string Compression [get, set]
 
ARCFileType FileType [get, set]
 
short FileIndex [get, set]
 
byte GroupID [get, set]
 
int AbsoluteIndex [get]
 
short RedirectIndex [get, set]
 
string RedirectTargetName [get]
 
string RedirectTarget [get, set]
 
ResourceNode RedirectNode [get]
 
- Properties inherited from BrawlLib.SSBB.ResourceNodes.U8EntryNode
int ParentIndex [get]
 
int ChildEndIndex [get]
 
int Type [get]
 
int ID [get]
 
- Properties inherited from BrawlLib.SSBB.ResourceNodes.ResourceNode
string FilePath [get]
 
string FileName [get]
 
string DirectoryName [get]
 
ResourceNode RootNode [get]
 
DataSource OriginalSource [get]
 
DataSource UncompressedSource [get]
 
DataSource WorkingSource [get]
 
DataSource WorkingUncompressed [get]
 
virtual bool HasChildren [get]
 
virtual ResourceType ResourceFileType [get]
 
string NodeType [get]
 
virtual string TreePathAbsolute [get]
 
virtual string TreePath [get]
 
virtual int Level [get]
 
virtual int MaxNameLength [get]
 
virtual bool AllowDuplicateNames [get]
 
virtual bool AllowNullNames [get]
 
virtual string Name [get, set]
 
ResourceNode Parent [get, set]
 
List< ResourceNodeChildren [get]
 
int Index [get]
 
int HexIndex [get]
 
bool IsCompressed [get]
 
bool HasChanged [get, set]
 
bool IsBranch [get]
 
bool HasMerged [get]
 
virtual bool AllowSaving [get, set]
 
virtual bool IsDirty [get, set]
 
virtual uint UncompressedSize [get]
 
virtual Type[] AllowedChildTypes [get]
 
virtual string Compression [get, set]
 
virtual bool RetainChildrenOnReplace [get]
 
virtual bool supportsCompression [get]
 
static MD5CryptoServiceProvider MD5Provider [get]
 

Additional Inherited Members

- Protected Member Functions inherited from BrawlLib.SSBB.ResourceNodes.ARCEntryNode
virtual string GetName ()
 
virtual string GetName (string fileType)
 
- Protected Member Functions inherited from BrawlLib.SSBB.ResourceNodes.ResourceNode
void ForceReplacedEvent ()
 
virtual void MergeInternal ()
 
- Protected Attributes inherited from BrawlLib.SSBB.ResourceNodes.ARCEntryNode
ResourceNode redirectTargetNode
 
- Events inherited from BrawlLib.SSBB.ResourceNodes.ResourceNode
SelectEventHandler SelectChild
 
EventHandler UpdateProps
 
MoveEventHandler MovedUp
 
ResourceEventHandler Disposing
 
ResourceChildEventHandler ChildAdded
 
ResourceChildInsertEventHandler ChildInserted
 

Member Function Documentation

◆ CreateEventDictionary()

void BrawlLib.SSBB.ResourceNodes.MoveDefNode.CreateEventDictionary ( )
inline
3006 {
3007 string p1 = "EventDictionary.Add(";
3008 //idNumber
3009 string p2 = ", new ActionEventInfo(";
3010 //idNumber
3011 string p3 = ", \"";
3012 //name
3013 string p4 = "\",\n \"";
3014 //description
3015 string p5 = "\",\n new string[] {";
3016 //param name array
3017 string p6 = " },\n new string[] {";
3018 //param description array
3019 string p7 = " },\n \"";
3020 //syntax
3021 string p8 = "\",\n new long[] {";
3022 //default params
3023 string p9 = " }));";
3024
3025 string dic = "", idString = "";
3026 foreach (ActionEventInfo i in EventDictionary.Values)
3027 {
3028 idString = "0x" + i.idNumber.ToString("X").PadLeft(8, '0');
3029 dic += p1 + idString + p2 + idString + p3 + i._name.Replace("\"", "\\\"") + p4 +
3030 i._description.Replace("\"", "\\\"") + p5;
3031 bool first = true;
3032 if (i.Params != null)
3033 {
3034 foreach (string s in i.Params)
3035 {
3036 if (!first)
3037 {
3038 dic += ",";
3039 }
3040 else
3041 {
3042 first = false;
3043 }
3044
3045 dic += " \"" + s.Replace("\"", "\\\"") + "\"";
3046 }
3047 }
3048 else
3049 {
3050 dic += " ";
3051 }
3052
3053 dic += p6;
3054 first = true;
3055 if (i.pDescs != null)
3056 {
3057 foreach (string s in i.pDescs)
3058 {
3059 if (!first)
3060 {
3061 dic += ",";
3062 }
3063 else
3064 {
3065 first = false;
3066 }
3067
3068 dic += " \"" + s.Replace("\"", "\\\"") + "\"";
3069 }
3070 }
3071 else
3072 {
3073 dic += " ";
3074 }
3075
3076 dic += p7 + i._syntax.Replace("\\", "\\\\") + p8;
3077 first = true;
3078 if (i.defaultParams != null)
3079 {
3080 foreach (long s in i.defaultParams)
3081 {
3082 if (!first)
3083 {
3084 dic += ",";
3085 }
3086 else
3087 {
3088 first = false;
3089 }
3090
3091 dic += " " + s;
3092 }
3093 }
3094 else
3095 {
3096 dic += " ";
3097 }
3098
3099 dic += p9;
3100 Console.WriteLine(dic);
3101 dic = "";
3102 }
3103 }
Definition: ActionEventInfo.cs:7
string[] pDescs
Definition: ActionEventInfo.cs:86
string _syntax
Definition: ActionEventInfo.cs:83
string[] Params
Definition: ActionEventInfo.cs:85
string _description
Definition: ActionEventInfo.cs:82
long idNumber
Definition: ActionEventInfo.cs:80
long[] defaultParams
Definition: ActionEventInfo.cs:88
string _name
Definition: ActionEventInfo.cs:81
static SortedDictionary< long, ActionEventInfo > EventDictionary
Definition: MoveDefNode.cs:305

◆ FindNode()

ResourceNode BrawlLib.SSBB.ResourceNodes.MoveDefNode.FindNode ( int  offset)
inline
3140 {
3141 ResourceNode n;
3142 if (offset == 0)
3143 {
3144 return this;
3145 }
3146 else
3147 {
3148 foreach (MoveDefEntryNode e in Children)
3149 {
3150 if ((n = e.FindNode(offset)) != null)
3151 {
3152 return n;
3153 }
3154 }
3155 }
3156
3157 return null;
3158 }
List< ResourceNode > Children
Definition: ResourceNode.cs:262

◆ GetAction() [1/2]

MoveDefActionNode BrawlLib.SSBB.ResourceNodes.MoveDefNode.GetAction ( int  list,
int  type,
int  index 
)
inline
3168 {
3169 if (list >= 3 && dataCommon == null || list == 4 || index == -1)
3170 {
3171 return null;
3172 }
3173
3174 if (list > 4 && dataCommon != null)
3175 {
3176 if (list == 5 && type >= 0 && index < dataCommon._flashOverlay.Children.Count)
3177 {
3178 return (MoveDefActionNode) dataCommon._flashOverlay.Children[index]; //.Children[0];
3179 }
3180
3181 if (list == 6 && type >= 0 && index < dataCommon._screenTint.Children.Count)
3182 {
3183 return (MoveDefActionNode) dataCommon._screenTint.Children[index]; //.Children[0];
3184 }
3185 }
3186
3187 if (list == 0 && type >= 0 && index < _actions.Children.Count)
3188 {
3189 return (MoveDefActionNode) _actions.Children[index].Children[type];
3190 }
3191
3192 if (list == 1 && type >= 0 && index < _subActions.Children.Count)
3193 {
3194 return (MoveDefActionNode) _subActions.Children[index].Children[type];
3195 }
3196
3197 if (list == 2 && _subRoutineList.Count > index)
3198 {
3199 return (MoveDefActionNode) _subRoutineList[index];
3200 }
3201
3202 return null;
3203 }
MoveDefActionsSkipNode _screenTint
Definition: MoveDefDataCommonNode.cs:76
MoveDefActionsSkipNode _flashOverlay
Definition: MoveDefDataCommonNode.cs:76
List< ResourceNode > _subRoutineList
Definition: MoveDefNode.cs:3449
MoveDefActionListNode _actions
Definition: MoveDefNode.cs:3446
MoveDefActionListNode _subActions
Definition: MoveDefNode.cs:3445
MoveDefDataCommonNode dataCommon
Definition: MoveDefNode.cs:3453

◆ GetAction() [2/2]

MoveDefActionNode BrawlLib.SSBB.ResourceNodes.MoveDefNode.GetAction ( int  offset)
inline
3161 {
3162 int list, type, index;
3163 GetLocation(offset, out list, out type, out index);
3164 return GetAction(list, type, index);
3165 }
MoveDefActionNode GetAction(int offset)
Definition: MoveDefNode.cs:3160
void GetLocation(int offset, out int list, out int type, out int index)
Definition: MoveDefNode.cs:3247

◆ GetBoneIndex()

void BrawlLib.SSBB.ResourceNodes.MoveDefNode.GetBoneIndex ( ref int  boneIndex)
inline
3360 {
3361 if (RootNode.Name.StartsWith("FitWario") || RootNode.Name == "FitKirby")
3362 {
3363 if (data != null)
3364 {
3365 if (data.warioParams8 != null)
3366 {
3367 MoveDefSectionParamNode p1 = data.warioParams8.Children[0] as MoveDefSectionParamNode;
3368 MoveDefSectionParamNode p2 = data.warioParams8.Children[1] as MoveDefSectionParamNode;
3369 bint* values = (bint*) p2.AttributeBuffer.Address;
3370 int i = 0;
3371 for (; i < p2.AttributeBuffer.Length / 4; i++)
3372 {
3373 if (values[i] == boneIndex)
3374 {
3375 break;
3376 }
3377 }
3378
3379 if (p1.AttributeBuffer.Length / 4 > i)
3380 {
3381 int value = -1;
3382 if ((value = (int) ((bint*) p1.AttributeBuffer.Address)[i]) >= 0)
3383 {
3384 boneIndex = value;
3385 return;
3386 }
3387 else
3388 {
3389 boneIndex -= 400;
3390 }
3391 }
3392 }
3393 }
3394 }
3395 }
Wario8 warioParams8
Definition: MoveDefDataNode.cs:186
MoveDefDataNode data
Definition: MoveDefNode.cs:3452
ResourceNode RootNode
Definition: ResourceNode.cs:175
virtual string Name
Definition: ResourceNode.cs:223
Definition: BigEndianTypes.cs:9
VoidPtr Address
Definition: BigEndianTypes.cs:33

◆ GetLocation()

void BrawlLib.SSBB.ResourceNodes.MoveDefNode.GetLocation ( int  offset,
out int  list,
out int  type,
out int  index 
)
inline
3248 {
3249 list = 0;
3250 type = -1;
3251 index = -1;
3252
3253 bool done = false;
3254
3255 if (dataCommon == null && data == null || offset <= 0)
3256 {
3257 list = 4; //Null
3258 done = true;
3259 }
3260
3261 if (!done && _actions != null) //Search actions
3262 {
3263 for (type = 0; type < _actions.ActionOffsets.Count; type++)
3264 {
3265 if ((index = _actions.ActionOffsets[type].IndexOf(offset)) != -1)
3266 {
3267 done = true;
3268 break;
3269 }
3270 }
3271 }
3272
3273 if (!done) //Search sub actions
3274 {
3275 list++;
3276 if (_subActions != null)
3277 {
3278 for (type = 0; type < _subActions.ActionOffsets.Count; type++)
3279 {
3280 if ((index = _subActions.ActionOffsets[type].IndexOf(offset)) != -1)
3281 {
3282 done = true;
3283 break;
3284 }
3285 }
3286 }
3287 }
3288
3289 if (!done) //Search subroutines
3290 {
3291 list++;
3292 if (_subRoutines.ContainsKey(offset))
3293 {
3294 index = _subRoutines[offset].Index;
3295 type = -1;
3296 done = true;
3297 }
3298 }
3299
3300 if (!done)
3301 {
3302 list++;
3303 MoveDefExternalNode e = IsExternal(offset);
3304 if (e != null)
3305 {
3306 index = e.Index;
3307 type = -1;
3308 done = true;
3309 }
3310 }
3311
3312 if (!done)
3313 {
3314 list++;
3315 type = -1;
3316 index = -1;
3317 }
3318
3319 if (dataCommon != null && data == null && offset > 0)
3320 {
3321 if (dataCommon._screenTint != null && !done)
3322 {
3323 list++;
3324 if ((index = dataCommon._screenTint.ActionOffsets.IndexOf((uint) offset)) != -1)
3325 {
3326 return;
3327 }
3328 }
3329
3330 if (dataCommon._flashOverlay != null && !done)
3331 {
3332 list++;
3333 if ((index = dataCommon._flashOverlay.ActionOffsets.IndexOf((uint) offset)) != -1)
3334 {
3335 return;
3336 }
3337 }
3338 }
3339
3340 if (!done)
3341 {
3342 list = 4;
3343 }
3344 }
List< List< int > > ActionOffsets
Definition: MoveDefGeneralNodes.cs:12
MoveDefExternalNode IsExternal(int offset)
Definition: MoveDefNode.cs:3112
SortedDictionary< int, MoveDefActionNode > _subRoutines
Definition: MoveDefNode.cs:3448

◆ GetOffset()

int BrawlLib.SSBB.ResourceNodes.MoveDefNode.GetOffset ( int  list,
int  type,
int  index 
)
inline
3206 {
3207 if (list == 4 || index == -1)
3208 {
3209 return -1;
3210 }
3211
3212 if (list == 0 && type >= 0 && type < _actions.ActionOffsets.Count)
3213 {
3214 if (_actions.ActionOffsets[type].Count > index)
3215 {
3216 return _actions.ActionOffsets[type][index];
3217 }
3218 }
3219
3220 if (list == 1 && type >= 0 && type < _subActions.ActionOffsets.Count)
3221 {
3222 if (_subActions.ActionOffsets[type].Count > index)
3223 {
3224 return _subActions.ActionOffsets[type][index];
3225 }
3226 }
3227
3228 if (list == 2)
3229 {
3230 if (_subRoutineList.Count > index)
3231 {
3232 return ((MoveDefEntryNode) _subRoutineList[index])._offset;
3233 }
3234 }
3235
3236 if (list == 3)
3237 {
3238 if (_externalRefs.Count > index)
3239 {
3240 return ((MoveDefEntryNode) _externalRefs[index])._offset;
3241 }
3242 }
3243
3244 return -1;
3245 }
List< ResourceNode > _externalRefs
Definition: MoveDefNode.cs:3109

◆ GetSize()

int BrawlLib.SSBB.ResourceNodes.MoveDefNode.GetSize ( int  offset)
inline
3349 {
3350 if (_lookupSizes.ContainsKey(offset))
3351 {
3352 //_lookupSizes[offset].remove = true;
3353 return _lookupSizes[offset].DataSize;
3354 }
3355
3356 return -1;
3357 }
Dictionary< int, MoveDefLookupOffsetNode > _lookupSizes
Definition: MoveDefNode.cs:3461

◆ IsExternal()

MoveDefExternalNode BrawlLib.SSBB.ResourceNodes.MoveDefNode.IsExternal ( int  offset)
inline
3113 {
3114 foreach (MoveDefExternalNode e in _externalRefs)
3115 {
3116 foreach (int i in e._offsets)
3117 {
3118 if (i == offset)
3119 {
3120 return e;
3121 }
3122 }
3123 }
3124
3125 foreach (MoveDefExternalNode e in _externalSections)
3126 {
3127 foreach (int i in e._offsets)
3128 {
3129 if (i == offset)
3130 {
3131 return e;
3132 }
3133 }
3134 }
3135
3136 return null;
3137 }
List< MoveDefExternalNode > _externalSections
Definition: MoveDefNode.cs:3110

◆ LoadEventDictionary()

static void BrawlLib.SSBB.ResourceNodes.MoveDefNode.LoadEventDictionary ( )
inlinestatic
313 {
314 EventDictionary = new SortedDictionary<long, ActionEventInfo>();
315 EventDictionary.Add(0x00010100, new ActionEventInfo(0x00010100, "Synchronous Timer",
316 "Pause the current flow of events until the set time is reached. Synchronous timers count down when they are reached in the code.",
317 new string[] {"Frames"},
318 new string[] {"The number of frames to wait."},
319 "\\name(): frames=\\value(0)",
320 new long[] {1}));
321 EventDictionary.Add(0x00020000, new ActionEventInfo(0x00020000, "Nop",
322 "No action.",
323 new string[] { },
324 new string[] { },
325 "",
326 new long[] { }));
327 EventDictionary.Add(0x00020100, new ActionEventInfo(0x00020100, "Asynchronous Timer",
328 "Pause the current flow of events until the set time is reached. Asynchronous Timers start counting from the beginning of the animation.",
329 new string[] {"Frames"},
330 new string[] {"The number of frames to wait."},
331 "\\name(): frames=\\value(0)",
332 new long[] {1}));
333 EventDictionary.Add(0x00040100, new ActionEventInfo(0x00040100, "Set Loop",
334 "Set a loop for X iterations.",
335 new string[] {"Iterations"},
336 new string[] {"The number of times to loop."},
337 "\\name() \\if(\\unhex(\\value(0)),==,-1, Infinite, \\unhex(\\value(0)) Times)",
338 new long[] {0}));
339 EventDictionary.Add(0x00050000, new ActionEventInfo(0x00050000, "Execute Loop",
340 "Execute the the previously set loop.",
341 new string[] { },
342 new string[] { },
343 "",
344 new long[] { }));
345 EventDictionary.Add(0x00070100, new ActionEventInfo(0x00070100, "Subroutine",
346 "Enter the event routine specified and return after ending.",
347 new string[] {"Offset"},
348 new string[] {"The offset inside the file to jump to."},
349 "\\name() \\value(0)",
350 new long[] {2}));
351 EventDictionary.Add(0x00080000, new ActionEventInfo(0x00080000, "Return",
352 "Return from a Subroutine.",
353 new string[] { },
354 new string[] { },
355 "",
356 new long[] { }));
357 EventDictionary.Add(0x00090100, new ActionEventInfo(0x00090100, "Goto",
358 "Goto the event location specified and execute.",
359 new string[] {"Offset"},
360 new string[] {"The offset inside the file to jump to."},
361 "\\name() \\value(0)",
362 new long[] {2}));
363 EventDictionary.Add(0x000A0100, new ActionEventInfo(0x000A0100, "If",
364 "Start an If block until an Else Or an EndIf is reached.",
365 new string[] {"Requirement"},
366 new string[] {"The form of requirement used in evaluation of the if statement."},
367 "\\name() \\value(0):",
368 new long[] {6}));
369 EventDictionary.Add(0x000A0200, new ActionEventInfo(0x000A0200, "If Value",
370 "Start an If block until an Else Or an EndIf is reached.",
371 new string[] {"Requirement", "Variable"},
372 new string[]
373 {
374 "The form of requirement used in evaluation of the event.",
375 "The variable applied to the requirement."
376 },
377 "If \\value(0): \\value(1)",
378 new long[] {6, 0}));
379 EventDictionary.Add(0x000A0400, new ActionEventInfo(0x000A0400, "If Comparison",
380 "Start an If block until an Else Or an EndIf is reached.",
381 new string[] {"Requirement", "Variable", "Comparison Method", "Variable"},
382 new string[]
383 {
384 "The form of requirement used in evaluation of the event.",
385 "The first variable in the comparison requirement.",
386 "The method used to compare the two variables. From 0 to 5: <, ≤, =, ≠, ≥, >",
387 "The second variable in the comparison requirement."
388 },
389 "If \\value(0): \\value(1) \\cmpsign(\\value(2)) \\value(3)",
390 new long[] {6, 5, 0, 5}));
391 EventDictionary.Add(0x000E0000, new ActionEventInfo(0x000E0000, "Else",
392 "Insert an Else block inside an If block.",
393 new string[] { },
394 new string[] { },
395 "",
396 new long[] { }));
397 EventDictionary.Add(0x000B0400, new ActionEventInfo(0x000B0400, "And Comparison",
398 "Seems to be an \"And\" to an If statement.",
399 new string[] {"Requirement", "Variable", "Comparison Method", "Variable"},
400 new string[]
401 {
402 "The form of requirement used in evaluation of the event.",
403 "The first variable in the comparison requirement.",
404 "The method used to compare the two variables. From 0 to 5: <, ≤, =, ≠, ≥, > ",
405 "The second variable in the comparison requirement."
406 },
407 "And \\value(0): \\value(1) \\cmpsign(\\value(2)) \\value(3)",
408 new long[] {6, 5, 0, 5}));
409 EventDictionary.Add(0x000D0400, new ActionEventInfo(0x000D0400, "Else If Comparison",
410 "Insert an Else If block inside of an If block.",
411 new string[] {"Requirement", "Variable", "Comparison Method", "Variable"},
412 new string[]
413 {
414 "The form of requirement used in evaluation of the event.",
415 "The first variable in the comparison requirement.",
416 "The method used to compare the two variables. From 0 to 5: <, ≤, =, ≠, ≥, > ",
417 "The second variable in the comparison requirement."
418 },
419 "Else If \\value(0): \\value(1) \\cmpsign(\\value(2)) \\value(3)",
420 new long[] {6, 5, 0, 5}));
421 EventDictionary.Add(0x000F0000, new ActionEventInfo(0x000F0000, "End If",
422 "End an If block.",
423 new string[] { },
424 new string[] { },
425 "",
426 new long[] { }));
427 EventDictionary.Add(0x00100200, new ActionEventInfo(0x00100200, "Switch",
428 "Begin a multiple case Switch block.",
429 new string[] {"Undefined", "Undefined"},
430 new string[]
431 {
432 "Any type? Has shown to be an IC-Basic \"disguised\" as a value. For example, set as Value 0x3E9 but really uses IC-Basic[1001] (the equivalent).",
433 "Any Type? Has shown to be a Requirement \"disguised\" as a value. For example, set as Value 2B but really uses 2B (Roll A Die)."
434 },
435 "\\name() (\\unhex(\\value(0)), \\value(1))",
436 new long[] {0, 0}));
437 EventDictionary.Add(0x00110100, new ActionEventInfo(0x00110100, "Case",
438 "Handler for if the variable in the switch statement equals the specified value.",
439 new string[] {"Value"},
440 new string[] {"The value applied to the argument."},
441 "\\name() \\unhex(\\value(0)):",
442 new long[] {0}));
443 EventDictionary.Add(0x00120000, new ActionEventInfo(0x00120000, "Default Case",
444 "The case chosen if none of the others are executed.",
445 new string[] { },
446 new string[] { },
447 "\\name():",
448 new long[] { }));
449 EventDictionary.Add(0x00130000, new ActionEventInfo(0x00130000, "End Switch",
450 "End a Switch block.",
451 new string[] { },
452 new string[] { },
453 "",
454 new long[] { }));
455 EventDictionary.Add(0x01010000, new ActionEventInfo(0x01010000, "Loop Rest",
456 "Briefly return execution back to the system to prevent crashes during infinite loops.",
457 new string[] { },
458 new string[] { },
459 "",
460 new long[] { }));
461 EventDictionary.Add(0x02000300, new ActionEventInfo(0x02000300, "Change Action Status",
462 "Change the current action upon the specified requirement being met (the requirement does not have to be met at the time this ID is executed - it can be used anytime after execution.)",
463 new string[] {"Status ID", "Action", "Requirement"},
464 new string[]
465 {
466 "The four-digit status ID of the change action event. Can later be disabled via 02080100 (Disable Action Status ID).",
467 "The ID of the action that the character will execute.",
468 "The form of requirement used in evaluation of the event."
469 },
470 "Prioritized Change Action: priority=\\value(0), action=\\unhex(\\value(1)), requirement=\\value(2)",
471 new long[] {0, 0, 6}));
472 EventDictionary.Add(0x02010200, new ActionEventInfo(0x02010200, "Change Action",
473 "Change the current action upon the specified requirement being met. (the requirement does not have to be met at the time this ID is executed - it can be used anytime after execution.)",
474 new string[] {"Action", "Requirement"},
475 new string[]
476 {
477 "The id of the action that the character will execute.",
478 "The form of requirement used in evaluation of the event."
479 },
480 "\\name() action=\\unhex(\\value(0)), requirement=\\value(1)",
481 new long[] {0, 6}));
482 EventDictionary.Add(0x02010300, new ActionEventInfo(0x02010300, "Change Action",
483 "Change the current action upon the specified requirement being met. (the requirement does not have to be met at the time this ID is executed - it can be used anytime after execution.)",
484 new string[] {"Action", "Requirement", "Variable"},
485 new string[]
486 {
487 "The id of the action that the character will execute.",
488 "The form of requirement used in evaluation of the event.",
489 "The variable applied to the requirement."
490 },
491 "\\name() action=\\unhex(\\value(0)), requirement=\\value(1): \\value(2)",
492 new long[] {0, 6, 5}));
493 EventDictionary.Add(0x02010500, new ActionEventInfo(0x02010500, "Change Action",
494 "Change the current action upon the specified requirement being met. (the requirement does not have to be met at the time this ID is executed - it can be used anytime after execution.)",
495 new string[] {"Action", "Requirement", "Variable", "Comparison Method", "Variable"},
496 new string[]
497 {
498 "The id of the action that the character will execute.",
499 "The form of requirement used in evaluation of the event.",
500 "The first variable in the comparison requirement.",
501 "The method used to compare the two variables. From 0 to 5: <, ≤, =, ≠, ≥, > ",
502 "The second variable in the comparison requirement."
503 },
504 "\\name() action=\\unhex(\\value(0)), requirement=\\value(1): \\value(2) \\cmpsign(\\value(3)) \\value(4)",
505 new long[] {0, 6, 5, 0, 5}));
506 EventDictionary.Add(0x02040100, new ActionEventInfo(0x02040100, "Additional Change Action Requirement",
507 "Add an additional requirement to the preceeding Change Action statement.",
508 new string[] {"Requirement"},
509 new string[] {"The form of requirement used in evaluation of the event."},
510 "\\name() \\value(0)",
511 new long[] {6}));
512 EventDictionary.Add(0x02040200, new ActionEventInfo(0x02040200,
513 "Additional Change Action Requirement Value",
514 "Add an additional requirement to the preceeding Change Action statement.",
515 new string[] {"Requirement", "Variable"},
516 new string[]
517 {
518 "The form of requirement used in evaluation of the event.",
519 "The variable applied to the requirement."
520 },
521 "\\name() \\value(0): \\value(1)",
522 new long[] {6, 5}));
523 EventDictionary.Add(0x02040400, new ActionEventInfo(0x02040400,
524 "Additional Change Action Requirement Comparison",
525 "Add an additional requirement to the preceeding Change Action statement.",
526 new string[] {"Requirement", "Variable", "Comparison Method", "Variable"},
527 new string[]
528 {
529 "The form of requirement used in evaluation of the event.",
530 "The first variable in the comparison requirement.",
531 "The method used to compare the two variables. From 0 to 5: <, ≤, =, ≠, ≥, > ",
532 "The second variable in the comparison requirement."
533 },
534 "\\name() \\value(0): \\value(1) \\cmpsign(\\value(2)) \\value(3)",
535 new long[] {6, 5, 0, 5}));
536 EventDictionary.Add(0x02060100, new ActionEventInfo(0x02060100, "Enable Action Status ID",
537 "Enables the given Status ID.",
538 new string[] {"Status ID"},
539 new string[] {"The Status ID to enable."},
540 "\\name(): \\unhex(\\value(0))",
541 new long[] {0}));
542 EventDictionary.Add(0x04000100, new ActionEventInfo(0x04000100, "Change Subaction",
543 "Change the current subaction.",
544 new string[] {"Subaction"},
545 new string[] {"The ID of the subaction that the character will execute."},
546 "\\name(): sub action=\\value(0)",
547 new long[] {0}));
548 EventDictionary.Add(0x04000200, new ActionEventInfo(0x04000200, "Change Subaction",
549 "Change the current subaction. Specifies whether or not to pass the current frame or start the animation over.",
550 new string[] {"Subaction", "Pass Frame"},
551 new string[]
552 {
553 "The ID of the subaction that the character will execute.",
554 "Whether to pass the current frame of the current animation onto the new animation or not."
555 },
556 "\\name(): sub action=\\value(0), pass frame=\\value(1)",
557 new long[] {0, 3}));
558 EventDictionary.Add(0x05000000, new ActionEventInfo(0x05000000, "Reverse Direction",
559 "Reverse the direction the character is facing after the animation ends.",
560 new string[] { },
561 new string[] { },
562 "",
563 new long[] { }));
564 EventDictionary.Add(0x06000D00, new ActionEventInfo(0x06000D00, "Offensive Collision",
565 "Generate an offensive collision bubble with the specified parameters.",
566 new string[]
567 {
568 "Bone/Id", "Damage", "Trajectory", "Weight Knockback/Knockback Growth",
569 "Shield Damage/Base Knockback", "Size", "X Offset", "Y Offset", "Z Offset", "Tripping Rate",
570 "Hitlag Multiplier", "Directional Influence Multiplier", "Flags"
571 },
572 new string[]
573 {
574 "Value1 = The bone the collision bubble is attached to. Value2 = The id number of the collision bubble.",
575 "The amount of damage inflicted to the target upon collision. ",
576 "The direction in which a target gets launched.",
577 "Value1 = The distance the target is launched proportional to weight for fixed knockback hits. Value2 = The additional distance the target is launched proportional to its damage (launch force for fixed knockback hits).",
578 "Value1 = The amount of damage dealt to the target's shield if it is up. Value2 = The distance the target is launched regardless of its damage (zero for fixed knockback hits).",
579 "The size of the collision bubble.",
580 "The amount the collision bubble is transitioned relative to the currently attached bone.",
581 "The amount the collision bubble is transitioned relative to the currently attached bone.",
582 "The amount the collision bubble is transitioned relative to the currently attached bone.",
583 "The percent possibility of the collision bubble inducing a trip, provided the target doesn't leave the ground from the knockback.",
584 "A multiplier affecting the time in which both parties pause when the collision bubble connects.",
585 "A multiplier affecting the ability for the character to maneuver themselves while suffering from the hitlag generated by this collision bubble.",
586 "Flags for various parameters such as hit effects and sound effects."
587 },
588 "\\name(): Id=\\unhex(\\half2(\\value(0))), Bone=\\bone(\\half1(\\value(0))), Damage=\\unhex(\\value(1)), ShieldDamage=\\unhex(\\half1(\\value(4))), Direction=\\unhex(\\value(2)), BaseKnockback=\\unhex(\\half2(\\value(4))), WeightKnockback=\\unhex(\\half1(\\value(3))), KnockbackGrowth=\\unhex(\\half2(\\value(3))), Size=\\value(5), Z Offset=\\value(6), Y Offset=\\value(7), X Offset=\\value(8), TripRate=\\value(9)%, HitlagMultiplier=x\\value(10), SDIMultiplier=x\\value(11), Flags=\\hex8(\\unhex(\\value(12)))",
589 new long[] {0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0}));
590 EventDictionary.Add(0x06040000, new ActionEventInfo(0x06040000, "Terminate Collisions",
591 "Remove all currently present collision bubbles",
592 new string[] { },
593 new string[] { },
594 "",
595 new long[] { }));
596 EventDictionary.Add(0x06050100, new ActionEventInfo(0x06050100, "Body Collision",
597 "Change how the character's own collision bubbles act.",
598 new string[] {"State"},
599 new string[]
600 {
601 "0 = normal, 1 = invincible, 2 = intangible, 3 = intangible (no flashing), 4 = intangible (quick flashing)"
602 },
603 "\\name(): status=\\collision(\\value(0))",
604 new long[] {0}));
605 EventDictionary.Add(0x06080200, new ActionEventInfo(0x06080200, "Bone Collision",
606 "Sets specific bones to a type of body collision.",
607 new string[] {"Bone", "State"},
608 new string[]
609 {
610 "The bone to be affected.",
611 "The type of body collision. 0 = normal, 1 = invincible, 2 = intangible, 3 = intangible (no flashing), 4 = intangible (quick flashing)"
612 },
613 "\\name(): bone=\\bone(\\value(0)), status=\\collision(\\value(1))",
614 new long[] { }));
615 EventDictionary.Add(0x06060100, new ActionEventInfo(0x06060100, "Undo Bone Collision",
616 "Sets bones to their normal collision type.",
617 new string[] { },
618 new string[] { },
619 "",
620 new long[] { }));
621 EventDictionary.Add(0x060A0800, new ActionEventInfo(0x060A0800, "Catch Collision",
622 "Generate a grabbing collision bubble with the specified parameters",
623 new string[] {"ID", "Bone", "Scale", "X offset", "Y Offset", "Z Offset", "Action", "Air/Ground"},
624 new string[]
625 {
626 "ID of catch collision.", "The bone the grab is attached to.",
627 "The size of the catch collision bubble.", "Transition relative to the currently attached bone.",
628 "Transition relative to the currently attached bone.",
629 "Transition relative to the currently attached bone.",
630 "The Action ID that the foe executes if successfully grabbed.",
631 "0 = grabs nothing, 1 = grabs grounded only, 2 = grabs aerial only, 3 = grabs aerial and grounded."
632 },
633 "\\name(): ID=\\value(0), Bone=\\bone(\\value(1)), Scale=\\value(2), Offset=(\\value(3), \\value(4), \\value(5)), Action=\\unhex(\\value(6)), Type=\\value(7)",
634 new long[] {0, 0, 1, 1, 1, 1, 0, 0}));
635 EventDictionary.Add(0x060D0000, new ActionEventInfo(0x060D0000, "Terminate Catch Collisions",
636 "Remove all currently present grab collision bubbles",
637 new string[] { },
638 new string[] { },
639 "",
640 new long[] { }));
641 EventDictionary.Add(0x060E1100, new ActionEventInfo(0x060E1100, "Throw Specifier",
642 "Specify the properties of the throw to be used when 060F0500 is executed. Used for other things as well, such as some Final Smashes.",
643 new string[]
644 {
645 "ID", "Bone?", "Damage", "Trajectory", "Knockback Growth", "Weight Knockback", "Base Knockback",
646 "Effect", "Undefined", "Undefined", "Undefined", "Undefined", "SFX", "Air/Ground", "Undefined",
647 "Undefined", "Invincibility Frames?"
648 },
649 new string[]
650 {
651 "ID of throw data. Seemingly, a \"0\" indicates this is the throw data, while a \"1\" indicates this is used if the opponent escapes during the throw. \"2\" has also been seen (by Light Arrow).",
652 "Possibly bone used by collision.", "The amount of damage inflicted to the target on throw.",
653 "The direction in which the target gets launched.",
654 "The additional distance the target is launched proportional to its damage.",
655 "The distance the target is launched proportional to weight. Set to non-zero values only for fixed knockback throws.",
656 "The distance the target is launched regardless of its damage. Set to zero for fixed knockback throws.",
657 "The effect of the throw. See the [[Hitbox Flags (Brawl)#Bits 28-32 (Effect)", "Undefined.",
658 "Undefined.", "Undefined.", "Undefined.", "Sound effect played upon throw.",
659 "0 = Never Grabs, 1 = Only Grabs Grounded Foes, 2 = Only Grabs Aerial Foes, 3= Grabs Aerial and Grounded Foes.",
660 "Undefined.", "Undefined.",
661 "The number of invincibility frames the thrower gains when this command is executed?"
662 },
663 "\\name():ID=\\value(0), Bone?=\\value(1), Damage=\\unhex(\\value(2)), Direction=\\unhex(\\value(3)), KnockbackGrowth=\\unhex(\\value(4)), WeightKnockback=\\unhex(\\value(5)),BaseKnockback=\\unhex(\\value(6)), Element=\\value(7), UnknownA=\\value(8), UnknownB=\\value(9), UnknownC=\\value(10), UnknownD=\\value(11), SFX=\\value(12), Direction?=\\value(13), UnknownE=\\value(14), UnknownF=\\value(15), UnknownG=\\value(16)",
664 new long[] {0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 3, 3, 0}));
665 EventDictionary.Add(0x060F0500, new ActionEventInfo(0x060F0500, "Throw Applier",
666 "Throws an opponent based on data provided by 060E1100 (Throw Specifier).",
667 new string[] {"ID?", "Bone", "Undefined", "Undefined", "Undefined"},
668 new string[]
669 {
670 "Undefined.", "Appears to always be the bone the thrown character is attached to.", "Undefined.",
671 "Undefined.", "Undefined"
672 },
673 "",
674 new long[] {0, 0, 5, 5, 5}));
675 EventDictionary.Add(0x06150F00, new ActionEventInfo(0x06150F00, "Special Offensive Collision",
676 "Generate an offensive collision bubble - is able to achieve unique effects.",
677 new string[]
678 {
679 "Bone/Id", "Damage", "Trajectory", "Weight Knockback/Knockback Growth",
680 "Shield Damage/Base Knockback", "Size", "X Offset", "Y Offset", "Z Offset", "Tripping Rate",
681 "Hitlag Multiplier", "Directional Influence Multiplier", "Flags", "Rehit Rate", "Special Flags"
682 },
683 new string[]
684 {
685 "Value1 = The bone the collision bubble is attached to. Value2 = The id number of the collision bubble.",
686 "The amount of damage inflicted to the target upon collision. ",
687 "The direction in which a target gets launched.",
688 "Value1 = The distance the target is launched proportional to weight for fixed knockback hits. Value2 = The additional distance the target is launched proportional to its damage (launch force for fixed knockback hits).",
689 "Value1 = The amount of damage dealt to the target's shield if it is up. Value2 = The distance the target is launched regardless of its damage (zero for fixed knockback hits).",
690 "The size of the collision bubble.", "Transition relative to the currently attached bone.",
691 "Transition relative to the currently attached bone.",
692 "Transition relative to the currently attached bone.",
693 "The percent possibility of the collision bubble inducing a trip, provided the target doesn't leave the ground from the knockback.",
694 "A multiplier affecting the time in which both parties pause when the collision bubble connects.",
695 "A multiplier affecting the ability for the character maneuver themselves while suffering from the hitlag generated by this collision bubble.",
696 "Flags for various parameters such as hit effects and sound effects.",
697 "How many frames between each hitbox refresh; for example a value of 8 will cause the hitbox to hit every 9 frames. A value of 0 disables refreshing; the hitbox will only hit once.",
698 "Flags for hitbox type and attributes such as susceptibility to reflection and absorption."
699 },
700 "\\name(): Id=\\unhex(\\half2(\\value(0))), Bone=\\bone(\\half1(\\value(0))), Damage=\\unhex(\\value(1)), ShieldDamage=\\unhex(\\half1(\\value(4))), Direction=\\unhex(\\value(2)), BaseKnockback=\\unhex(\\half2(\\value(4))), WeightKnockback=\\unhex(\\half1(\\value(3))), KnockbackGrowth=\\unhex(\\half2(\\value(3))), Size=\\value(5), Z Offset=\\value(6), Y Offset=\\value(7), X Offset=\\value(8), TripRate=\\value(9)%, HitlagMultiplier=x\\value(10), SDIMultiplier=x\\value(11), Flags=\\hex8(\\unhex(\\value(12)))",
701 new long[] {0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0}));
702 EventDictionary.Add(0x0C0D0F00, new ActionEventInfo(0x0C0D0F00,
703 "Character Specific Special Offensive Collision",
704 "Generate an offensive collision bubble - is able to achieve unique effects.",
705 new string[]
706 {
707 "Undefined", "Damage", "Trajectory", "Weight Knockback/Knockback Growth",
708 "Shield Damage/Base Knockback", "Size", "X Offset", "Y Offset", "Z Offset", "Tripping Rate",
709 "Hitlag Multiplier", "Directional Influence Multiplier", "Flags", "Rehit Rate", "Special Flags"
710 },
711 new string[]
712 {
713 "Unknown.", "The amount of damage inflicted to the target upon collision. ",
714 "The direction in which a target gets launched.",
715 "Value1 = The distance the target is launched proportional to weight for fixed knockback hits. Value2 = The additional distance the target is launched proportional to its damage (launch force for fixed knockback hits).",
716 "Value1 = The amount of damage dealt to the target's shield if it is up. Value2 = The distance the target is launched regardless of its damage (zero for fixed knockback hits).",
717 "The size of the collision bubble.", "Transition relative to the currently attached bone.",
718 "Transition relative to the currently attached bone.",
719 "Transition relative to the currently attached bone.",
720 "The percent possibility of the collision bubble inducing a trip, provided the target doesn't leave the ground from the knockback.",
721 "A multiplier affecting the time in which both parties pause when the collision bubble connects.",
722 "A multiplier affecting the ability for the character maneuver themselves while suffering from the hitlag generated by this collision bubble.",
723 "Flags for various parameters such as hit effects and sound effects.",
724 "How many frames between each hitbox refresh; for example a value of 8 will cause the hitbox to hit every 9 frames. A value of 0 disables refreshing; the hitbox will only hit once.",
725 "Flags for hitbox type and attributes such as susceptibility to reflection and absorption."
726 },
727 "\\name(): Id=\\unhex(\\half2(\\value(0))), Bone=\\bone(\\half1(\\value(0))), Damage=\\unhex(\\value(1)), ShieldDamage=\\unhex(\\half1(\\value(4))), Direction=\\unhex(\\value(2)), BaseKnockback=\\unhex(\\half2(\\value(4))), WeightKnockback=\\unhex(\\half1(\\value(3))), KnockbackGrowth=\\unhex(\\half2(\\value(3))), Size=\\value(5), Z Offset=\\value(6), Y Offset=\\value(7), X Offset=\\value(8), TripRate=\\value(9)%, HitlagMultiplier=x\\value(10), SDIMultiplier=x\\value(11), Flags=\\hex8(\\unhex(\\value(12)))",
728 new long[] {0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0}));
729 EventDictionary.Add(0x06170300, new ActionEventInfo(0x06170300, "Defensive Collision",
730 "Generate a defensive collision bubble.",
731 new string[] {"Undefined", "Undefined", "Undefined"},
732 new string[] {"Undefined.", "Undefined.", "Undefined"},
733 "",
734 new long[] {0, 0, 0}));
735 EventDictionary.Add(0x06180300, new ActionEventInfo(0x06180300, "Terminate Defensive Collision",
736 "Removes defensive collisions.",
737 new string[] {"Undefined", "Undefined", "Undefined"},
738 new string[] {"Undefined.", "Undefined.", "Undefined"},
739 "",
740 new long[] {0, 0, 0}));
741 EventDictionary.Add(0x061B0500, new ActionEventInfo(0x061B0500, "Move Hitbox",
742 "Repositions an already-existing hitbox.",
743 new string[] {"Hitbox ID", "New Bone", "New X Offset", "New Y Offset", "New Z Offset"},
744 new string[]
745 {
746 "The ID of the hitbox to modify.", "The ID of the bone to attach to.", "The new X translation.",
747 "The new Y translation.", "The new Z translation"
748 },
749 "",
750 new long[] {0, 0, 1, 1, 1}));
751 EventDictionary.Add(0x062B0D00, new ActionEventInfo(0x062B0D00, "Thrown Collision",
752 "Generate a damage collision bubble surrounding the character being thrown.",
753 new string[]
754 {
755 "Bone/Id", "Damage", "Trajectory", "Weight Knockback/Knockback Growth",
756 "Shield Damage/Base Knockback", "Size", "X Offset", "Y Offset", "Z Offset", "Tripping Rate",
757 "Hitlag Multiplier", "Directional Influence Multiplier", "Flags"
758 },
759 new string[]
760 {
761 "The bone the collision bubble is attached to/The id number of the collision bubble. Where XXXXYYYY is X=Bone, Y=Id.",
762 "The amount of damage inflicted to the target upon collision.",
763 "The direction in which a target gets launched.",
764 "The distance the target is launched proportional to weight for fixed knockback hits/The additional distance the target is launched proportional to its damage (launch force for fixed knockback hits). XXXXYYYY is X=Weight Knockback, Y=Knockback Growth.",
765 "The amount of damage dealt to the target's shield if it is up/The distance the target is launched regardless of its damage (zero for fixed knockback hits). XXXXYYYY is X=Shield Damage, Y=Base Knockback.",
766 "The size of the collision bubble.",
767 "The amount the collision bubble is transitioned relative to the currently attached bone.",
768 "The amount the collision bubble is transitioned relative to the currently attached bone.",
769 "The amount the collision bubble is transitioned relative to the currently attached bone.",
770 "The percent possibility of the collision bubble inducing a trip, proving the target doesn't leave the ground from the knockback.",
771 "A multiplier affecting the time in which both parties pause when the collision bubble connects.",
772 "A multiplier affecting the ability for the character maneuver themselves while suffering from the hitlag generated by this collision bubble.",
773 "Flags for various parameters such as hit effects and sound effects."
774 },
775 "",
776 new long[] {0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0}));
777 EventDictionary.Add(0x0A000100, new ActionEventInfo(0x0A000100, "Sound Effect",
778 "Play a specified sound effect.",
779 new string[] {"Sound Effect"},
780 new string[] {"The ID number for the sound effect called."},
781 "\\name(): \\value(0)",
782 new long[] {0}));
783 EventDictionary.Add(0x0A010100, new ActionEventInfo(0x0A010100, "Sound Effect 2",
784 "Play a specified sound effect.",
785 new string[] {"Sound Effect"},
786 new string[] {"The ID number for the sound effect called."},
787 "\\name(): \\value(0)",
788 new long[] {0}));
789 EventDictionary.Add(0x0A020100, new ActionEventInfo(0x0A020100, "Sound Effect (Transient)",
790 "Play a specified sound effect. The sound effect ends with the animation.",
791 new string[] {"Sound Effect"},
792 new string[] {"The ID number for the sound effect called."},
793 "\\name(): \\value(0)",
794 new long[] {0}));
795 EventDictionary.Add(0x0A050100, new ActionEventInfo(0x0A050100, "Sounds 05",
796 "Is used during victory poses.",
797 new string[] {"Undefined"},
798 new string[] {"Undefined"},
799 "",
800 new long[] {0}));
801 EventDictionary.Add(0x0A070100, new ActionEventInfo(0x0A070100, "Sounds 07",
802 "Undefined.",
803 new string[] {"Undefined"},
804 new string[] {"Undefined"},
805 "",
806 new long[] {0}));
807 EventDictionary.Add(0x0A090100, new ActionEventInfo(0x0A090100, "Other Sound Effect 1",
808 "Play a specified sound effect.",
809 new string[] {"Sound Effect"},
810 new string[] {"The ID number of the sound effect to be called."},
811 "\\name(): \\value(0)",
812 new long[] {0}));
813 EventDictionary.Add(0x0A0A0100, new ActionEventInfo(0x0A0A0100, "Other Sound Effect 2",
814 "Play a specified sound effect.",
815 new string[] {"Sound Effect"},
816 new string[] {"The ID number of the sound effect to be called."},
817 "\\name(): \\value(0)",
818 new long[] {0}));
819 EventDictionary.Add(0x0A030100, new ActionEventInfo(0x0A030100, "Stop Sound Effect",
820 "Stops the specified sound effect immediately.",
821 new string[] {"Sound Effect"},
822 new string[] {"The ID number of the sound effect to be called."},
823 "",
824 new long[] {0}));
825 EventDictionary.Add(0x0C050000, new ActionEventInfo(0x0C050000, "Terminate Instance",
826 "Causes the acting instance to terminate (if possible). Will load secondary instance if available.",
827 new string[] { },
828 new string[] { },
829 "",
830 new long[] { }));
831 EventDictionary.Add(0x0C0B0000, new ActionEventInfo(0x0C0B0000, "Low Voice Clip",
832 "Play a random voice clip from the selection of low voice clips.",
833 new string[] { },
834 new string[] { },
835 "",
836 new long[] { }));
837 EventDictionary.Add(0x0C190000, new ActionEventInfo(0x0C190000, "Damage Voice Clip",
838 "Play a random voice clip from the selection of damage voice clips.",
839 new string[] { },
840 new string[] { },
841 "",
842 new long[] { }));
843 EventDictionary.Add(0x0C1D0000, new ActionEventInfo(0x0C1D0000, "Ottotto Voice Clip",
844 "Play the voice clip for Ottotto.",
845 new string[] { },
846 new string[] { },
847 "",
848 new long[] { }));
849 EventDictionary.Add(0x04070100, new ActionEventInfo(0x04070100, "Frame Speed Modifier",
850 "Dictates the frame speed of the subaction. Example: setting to 2 makes the animation and timers occur twice as fast.",
851 new string[] {"Multiplier"},
852 new string[] {"How many times faster the frames are."},
853 "\\name(): Multiplier=\\value(0)x",
854 new long[] {1}));
855 EventDictionary.Add(0x0C230200, new ActionEventInfo(0x0C230200, "Time Manipulation",
856 "Change the speed of time for various parts of the environment.",
857 new string[] {"Multiplier", "Frames"},
858 new string[] {"How many times faster the frames are.", "How long the time is multiplied."},
859 "\\name(): Amount=\\value(0), Frames=\\value(0)",
860 new long[] {0, 0}));
861 EventDictionary.Add(0x0E000100, new ActionEventInfo(0x0E000100, "Set Air/Ground",
862 "Specify whether the character is on or off the ground.",
863 new string[] {"State"},
864 new string[] {"The state of the character's air/ground status. 0 = In Air, 1 = On Ground"},
865 "\\name(): \\airground(\\value(0))",
866 new long[] {0}));
867 EventDictionary.Add(0x08000100, new ActionEventInfo(0x08000100, "Set Edge Slide",
868 "Determines whether or not the character will slide off the edge.",
869 new string[] {"Character State"},
870 new string[]
871 {
872 "1: Can drop off side of stage. 2: Can't drop off side of stage. 5: Treated as in air; can leave stage vertically. Other states currently unknown."
873 },
874 "\\name(): \\enum(\\value(0), 0)",
875 new long[] {0})
876 {
877 Enums = new Dictionary<int, List<string>>()
878 {
879 {
880 0,
881 new List<string>()
882 {
883 "Undefined(0)", "Can drop off side of stage", "Can't drop off side of stage",
884 "Undefined(3)",
885 "Undefined(4)", "In Air; Can leave stage vertically",
886 }
887 }
888 }
889 });
890 EventDictionary.Add(0x10000100, new ActionEventInfo(0x10000100, "Generate Article",
891 "Generate a pre-made prop effect from the prop library.",
892 new string[] {"Article ID"},
893 new string[] {"The id of the prop article to be called."},
894 "\\name(): \\value(0)",
895 new long[] {0}));
896 EventDictionary.Add(0x10030100, new ActionEventInfo(0x10030100, "Remove Article",
897 "Removes an article.",
898 new string[] {"Article"},
899 new string[] {"ID of the article to be affected."},
900 "\\name(): \\value(0)",
901 new long[] {0}));
902 EventDictionary.Add(0x10050200, new ActionEventInfo(0x10050200, "Article Visibility",
903 "Makes an article visible or invisible.",
904 new string[] {"Article", "Visibility"},
905 new string[] {"ID of the article to be affected.", "Set Boolean: True = Visible, False = Invisible"},
906 "\\name(): Article ID=\\value(0), Visible=\\value(1)",
907 new long[] {0, 3}));
908 EventDictionary.Add(0x100A0000, new ActionEventInfo(0x100A0000, "Generate Prop Effect",
909 "Generate a prop effect with the specified parameters.",
910 new string[] { },
911 new string[] { },
912 "",
913 new long[] { }));
914 EventDictionary.Add(0x11001000, new ActionEventInfo(0x11001000, "External Graphic Effect",
915 "Generate a generic graphical effect with the specified parameters.",
916 new string[]
917 {
918 "Graphic", "Bone", "Z Offset", "Y Offset", "X Offset", "Z Rotation", "Y Rotation", "X Rotation",
919 "Scale", "Random Z Offset", "Random Y Offset", "Random Z Offset", "Random Z Rotation",
920 "Random Y Rotation", "Random X Rotation", "Terminate With Animation"
921 },
922 new string[]
923 {
924 "The file from which to call from/The graphical effect to call. Value1 = File#, Value2 = Graphic ID",
925 "The bone to attach the graphical effect to.",
926 "Transition from the attached bone along the Z axis.",
927 "Transition from the attached bone along the Y axis.",
928 "Transition from the attached bone along the X axis.", "Rotation along the Z axis.",
929 "Rotation along the Y axis.", "Rotation along the X axis.", "The size of the graphic.",
930 "A random value lesser than the specified value and added to the Z Offset.",
931 "A random value lesser than the specified value and added to the Y Offset.",
932 "A random value lesser than the specified value and added to the X Offset.",
933 "A random value lesser than the specified value and added to the Z Rotation.",
934 "A random value lesser than the specified value and added to the Y Rotation.",
935 "A random value lesser than the specified value and added to the X Rotation.",
936 "Sets whether or not this graphic effect terminates when the animation ends."
937 },
938 "\\name(): File=\\unhex(\\half1(\\value(0))), Graphic ID=\\unhex(\\half2(\\value(0))), Bone=\\bone(\\value(1)), Translation=(\\value(4), \\value(3), \\value(2)), Rotation=(\\value(7), \\value(6), \\value(5)), Scale=\\value(8), Random Translation=(\\value(11), \\value(10), \\value(9)), Random Rotation=(\\value(14), \\value(13), \\value(12)), Anchored=\\value(15)",
939 new long[] {0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3}));
940 EventDictionary.Add(0x11010A00, new ActionEventInfo(0x11010A00, "External Graphic Effect",
941 "Generate a graphical effect from an external file. (usually the Ef_ file)",
942 new string[]
943 {
944 "Graphic", "Bone", "Z Offset", "Y Offset", "X Offset", "Z Rotation", "Y Rotation", "X Rotation",
945 "Scale", "Terminate With Animation"
946 },
947 new string[]
948 {
949 "The file from which to call from/The graphical effect to call. Value1 = File#, Value2 = Graphic ID",
950 "The bone to attach the graphical effect to.",
951 "Transition from the attached bone along the Z axis.",
952 "Transition from the attached bone along the Y axis.",
953 "Transition from the attached bone along the X axis.", "Rotation along the Z axis.",
954 "Rotation along the Y axis.", "Rotation along the X axis.", "The size of the graphic.",
955 "Sets whether or not this graphic effect terminates when the animation ends."
956 },
957 "\\name(): File=\\unhex(\\half1(\\value(0))), Graphic ID=\\unhex(\\half2(\\value(0))), Bone=\\bone(\\value(1)), Translation=(\\value(4), \\value(3), \\value(2)), Rotation=(\\value(7), \\value(6), \\value(5)), Scale=\\value(8), Anchored=\\value(9)",
958 new long[] {0, 0, 1, 1, 1, 1, 1, 1, 1, 3}));
959 EventDictionary.Add(0x11020A00, new ActionEventInfo(0x11020A00, "External Graphic Effect",
960 "Generate a graphical effect from an external file. (usually the Ef_ file)",
961 new string[]
962 {
963 "Graphic", "Bone", "Z Offset", "Y Offset", "X Offset", "Z Rotation", "Y Rotation", "X Rotation",
964 "Scale", "Terminate With Animation"
965 },
966 new string[]
967 {
968 "The file from which to call from/The graphical effect to call. Value1 = File#, Value2 = Graphic ID",
969 "The bone to attach the graphical effect to.",
970 "Transition from the attached bone along the Z axis.",
971 "Transition from the attached bone along the Y axis.",
972 "Transition from the attached bone along the X axis.", "Rotation along the Z axis.",
973 "Rotation along the Y axis.", "Rotation along the X axis.", "The size of the graphic.",
974 "Sets whether or not this graphic effect terminates when the animation ends."
975 },
976 "\\name(): File=\\unhex(\\half1(\\value(0))), Graphic ID=\\unhex(\\half2(\\value(0))), Bone=\\bone(\\value(1)), Translation=(\\value(4), \\value(3), \\value(2)), Rotation=(\\value(7), \\value(6), \\value(5)), Scale=\\value(8), Anchored=\\value(9)",
977 new long[] {0, 0, 1, 1, 1, 1, 1, 1, 1, 3}));
978 EventDictionary.Add(0x11170700, new ActionEventInfo(0x11170700, "Limited Screen Tint",
979 "Tint the screen to the specified color.",
980 new string[]
981 {"Transition In Time", "Red", "Green", "Blue", "Alpha", "Frame Count", "Transition Out Time"},
982 new string[]
983 {
984 "The time taken to transition from the current color to the specified color.", "The red value.",
985 "The green value.", "The blue value.", "The transparency.",
986 "The amount of frames that the color lasts.", "The amount of time it takes the color to fade out."
987 },
988 "\\name(): TransInTime=\\value(0), RGBA=(\\value(1), \\value(2), \\value(3), \\value(4)), FrameCount=\\value(5), TransOutTime=\\value(6)",
989 new long[] {0, 0, 0, 0, 0, 0, 0}));
990 EventDictionary.Add(0x111A1000, new ActionEventInfo(0x111A1000, "Graphic Effect",
991 "Generate a generic graphical effect with the specified parameters.",
992 new string[]
993 {
994 "Graphic", "Bone", "Z Offset", "Y Offset", "X Offset", "Z Rotation", "Y Rotation", "X Rotation",
995 "Scale", "Random Z Offset", "Random Y Offset", "Random Z Offset", "Random Z Rotation",
996 "Random Y Rotation", "Random X Rotation", "Terminate With Animation"
997 },
998 new string[]
999 {
1000 "The graphical effect to call.", "The bone to attach the graphical effect to.",
1001 "Transition from the attached bone along the Z axis.",
1002 "Transition from the attached bone along the Y axis.",
1003 "Transition from the attached bone along the X axis.", "Rotation along the Z axis.",
1004 "Rotation along the Y axis.", "Rotation along the X axis.", "The size of the graphic.",
1005 "A random value lesser than the specified value and added to the Z Offset.",
1006 "A random value lesser than the specified value and added to the Y Offset.",
1007 "A random value lesser than the specified value and added to the X Offset.",
1008 "A random value lesser than the specified value and added to the Z Rotation.",
1009 "A random value lesser than the specified value and added to the Y Rotation.",
1010 "A random value lesser than the specified value and added to the X Rotation.",
1011 "Sets whether or not this graphic effect terminates when the animation ends."
1012 },
1013 "\\name(): Graphic=\\value(0), Bone=\\bone(\\value(1)), Translation=(\\value(4), \\value(3), \\value(2)), Rotation=(\\value(7), \\value(6), \\value(5)), Scale=\\value(8), Random Translation=(\\value(11), \\value(10), \\value(9)), Random Rotation=(\\value(14), \\value(13), \\value(12)), Anchored=\\value(15)",
1014 new long[] {0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3}));
1015 EventDictionary.Add(0x111B1000, new ActionEventInfo(0x111B1000, "Graphic Effect",
1016 "Generate a generic graphical effect with the specified parameters.",
1017 new string[]
1018 {
1019 "Graphic", "Bone", "Z Offset", "Y Offset", "X Offset", "Z Rotation", "Y Rotation", "X Rotation",
1020 "Scale", "Random Z Offset", "Random Y Offset", "Random Z Offset", "Random Z Rotation",
1021 "Random Y Rotation", "Random X Rotation", "Terminate With Animation"
1022 },
1023 new string[]
1024 {
1025 "The graphical effect to call.", "The bone to attach the graphical effect to.",
1026 "Transition from the attached bone along the Z axis.",
1027 "Transition from the attached bone along the Y axis.",
1028 "Transition from the attached bone along the X axis.", "Rotation along the Z axis.",
1029 "Rotation along the Y axis.", "Rotation along the X axis.", "The size of the graphic.",
1030 "A random value lesser than the specified value and added to the Z Offset.",
1031 "A random value lesser than the specified value and added to the Y Offset.",
1032 "A random value lesser than the specified value and added to the X Offset.",
1033 "A random value lesser than the specified value and added to the Z Rotation.",
1034 "A random value lesser than the specified value and added to the Y Rotation.",
1035 "A random value lesser than the specified value and added to the X Rotation.",
1036 "Sets whether or not this graphic effect terminates when the animation ends."
1037 },
1038 "\\name(): Graphic=\\value(0), Bone=\\bone(\\value(1)), Translation=(\\value(4), \\value(3), \\value(2)), Rotation=(\\value(7), \\value(6), \\value(5)), Scale=\\value(8), Random Translation=(\\value(11), \\value(10), \\value(9)), Random Rotation=(\\value(14), \\value(13), \\value(12)), Anchored=\\value(15)",
1039 new long[] {0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3}));
1040 EventDictionary.Add(0x11031400, new ActionEventInfo(0x11031400, "Sword Glow",
1041 "Creates glow of sword. Only usable when the proper effects are loaded by their respective characters.",
1042 new string[]
1043 {
1044 "Color", "Blur Length", "Trail Bone #1", "X Offset", "Y Offset", "Z Offset", "Trail Bone #2",
1045 "X Offset", "Y Offset", "Z Offset", "Glow State", "Graphic ID", "Glow Bone", "X Offset", "Y Offset",
1046 "Z Offset", "X Rotation", "Y Rotation", "Z Rotation", "Glow Length"
1047 },
1048 new string[]
1049 {
1050 "Controls the hue of the glow.", "The length of the glow's aftershadow.",
1051 "Bone the 1st point of the sword trail follows.", "X offset of the 1st point of the sword trail.",
1052 "Y offset of the 1st point of the sword trail.", "Z offset of the 1st point of the sword trail.",
1053 "Bone the 2nd point of the sword trail follows.", "X offset of the 2nd point of the sword trail.",
1054 "Y offset of the 2nd point of the sword trail.", "Z offset of the 2nd point of the sword trail.",
1055 "If set to true, glow/trail disappears at the end of the subaction.",
1056 "The ID of the External Graphic Effect referenced.", "Bone the sword glow follows.",
1057 "X offset of the sword glow.", "Y offset of the sword glow.", "Z offset of the sword glow.",
1058 "Rotation of the sword glow around the X axis.", "Rotation of the sword glow around the Y axis.",
1059 "Rotation of the sword glow around the Z axis.",
1060 "Length of the sword glow, i.e. halving this value will make it half the sword's length."
1061 },
1062 "\\name(): Hue=\\value(0), Length=\\value(1), Bone #1=\\bone(\\value(2)), Translation=(\\value(3), \\value(4), \\value(5)), Bone #2=\\bone(\\value(6)), Translation=(\\value(7), \\value(8), \\value(9)), State=\\value(10), Graphic=\\value(11), Bone #3=\\bone(\\value(12)), Translation=(\\value(13), \\value(14), \\value(15)), Rotation=(\\value(16), \\value(17), \\value(18)), Length=\\value(19)",
1063 new long[] {0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 3, 0, 0, 1, 1, 1, 1, 1, 1, 1}));
1064 EventDictionary.Add(0x11050100, new ActionEventInfo(0x11050100, "Terminate Sword Glow",
1065 "Eliminates sword glow graphics when set to 1. May have unknown applications.",
1066 new string[] {"Fade Time"},
1067 new string[] {"The time it takes for the sword glow to fade out."},
1068 "\\name(): Fade Time=\\value(0)",
1069 new long[] {0}));
1070 EventDictionary.Add(0x14070A00, new ActionEventInfo(0x14070A00, "Aesthetic Wind Effect",
1071 "Moves nearby movable model parts (capes, hair, etc) with a wind specified by the parameters.",
1072 new string[]
1073 {"Undefined", "Undefined", "Strength", "Speed", "Size?", "Undefined", "Undefined", "Undefined"},
1074 new string[]
1075 {
1076 "Undefined.", "Undefined.", "The power of the wind.", "The speed of the wind.",
1077 "Perhaps the size of the wind.", "Undefined.", "Undefined.", "Undefined"
1078 },
1079 "",
1080 new long[] {0, 1, 1, 1, 1, 1, 1, 0}));
1081 EventDictionary.Add(0x12000200, new ActionEventInfo(0x12000200, "Basic Variable Set",
1082 "Set a basic variable to the specified value.",
1083 new string[] {"Value", "Variable"},
1084 new string[]
1085 {"The value to place inside the specified variable.", "The Basic type variable to access."},
1086 "\\name(): \\value(1) = \\unhex(\\value(0))",
1087 new long[] {0, 5}));
1088 EventDictionary.Add(0x12010200, new ActionEventInfo(0x12010200, "Basic Variable Add",
1089 "Add a specified value to a basic variable.",
1090 new string[] {"Value", "Variable"},
1091 new string[] {"The value add to the specified variable.", "The Basic type variable to access."},
1092 "\\name(): \\value(1) += \\unhex(\\value(0))",
1093 new long[] {0, 5}));
1094 EventDictionary.Add(0x12020200, new ActionEventInfo(0x12020200, "Basic Variable Subtract",
1095 "Subtract a specified value from a basic variable.",
1096 new string[] {"Value", "Variable"},
1097 new string[]
1098 {"The value to subtract from the specified variable.", "The Basic type variable to access."},
1099 "\\name(): \\value(1) -= \\unhex(\\value(0))",
1100 new long[] {0, 5}));
1101 EventDictionary.Add(0x12060200, new ActionEventInfo(0x12060200, "Float Variable Set",
1102 "Set a floating point variable to the specified value.",
1103 new string[] {"Value", "Variable"},
1104 new string[]
1105 {
1106 "The floating point value to place inside the specified variable.",
1107 "The Float type variable to access."
1108 },
1109 "\\name(): \\value(1) = \\unhex(\\value(0))",
1110 new long[] {1, 5}));
1111 EventDictionary.Add(0x12070200, new ActionEventInfo(0x12070200, "Float Variable Add",
1112 "Add a specified value to a float variable.",
1113 new string[] {"Value", "Variable"},
1114 new string[]
1115 {
1116 "The floating point value to add to the specified variable.", "The Float type variable to access."
1117 },
1118 "\\name(): \\value(1) += \\unhex(\\value(0))",
1119 new long[] {1, 5}));
1120 EventDictionary.Add(0x12080200, new ActionEventInfo(0x12080200, "Float Variable Subtract",
1121 "Subtract a specified value from a float variable.",
1122 new string[] {"Value", "Variable"},
1123 new string[]
1124 {
1125 "The floating point value to subtract from the specified variable.",
1126 "The Float type variable to access."
1127 },
1128 "\\name(): \\value(1) -= \\unhex(\\value(0))",
1129 new long[] {1, 5}));
1130 EventDictionary.Add(0x120A0100, new ActionEventInfo(0x120A0100, "Bit Variable Set",
1131 "Set a bit variable to true.",
1132 new string[] {"Variable"},
1133 new string[] {"The Bit type variable to set."},
1134 "\\name(): \\value(0) = true",
1135 new long[] {5}));
1136 EventDictionary.Add(0x120B0100, new ActionEventInfo(0x120B0100, "Bit Variable Clear",
1137 "Set a bit variable to false.",
1138 new string[] {"Variable"},
1139 new string[] {"The Bit type variable to clear."},
1140 "\\name(): \\value(0) = false",
1141 new long[] {5}));
1142 EventDictionary.Add(0x1A040500, new ActionEventInfo(0x1A040500, "Camera Closeup",
1143 "Zoom the camera on the character.",
1144 new string[] {"Zoom Time", "Undefined", "Distance", "X Angle", "Y Angle"},
1145 new string[]
1146 {
1147 "The time it takes to zoom in on the target.", "Undefined.",
1148 "How far away the camera is from the character.", "The horizontal rotation around the character.",
1149 "The vertical rotation around the character."
1150 },
1151 "\\name(): Zoom Time=\\value(0), Undefined=\\value(1), Distance=\\value(2), X Rotation=\\value(3), Y Rotation=\\value(4)",
1152 new long[] {0, 0, 1, 1, 1}));
1153 EventDictionary.Add(0x1A080000, new ActionEventInfo(0x1A080000, "Normal Camera",
1154 "Return the camera to its normal settings.",
1155 new string[] { },
1156 new string[] { },
1157 "",
1158 new long[] { }));
1159 EventDictionary.Add(0x1F000100, new ActionEventInfo(0x1F000100, "Pickup Item",
1160 "Cause the character to recieve the closest item in range.",
1161 new string[] {"Undefined"},
1162 new string[] {"Undefined"},
1163 "",
1164 new long[] {0}));
1165 EventDictionary.Add(0x1F000200, new ActionEventInfo(0x1F000200, "Pickup Item",
1166 "Cause the character to recieve the closest item in range.",
1167 new string[] {"Undefined", "Undefined"},
1168 new string[] {"Undefined.", "Undefined"},
1169 "",
1170 new long[] {0, 0}));
1171 EventDictionary.Add(0x1F010300, new ActionEventInfo(0x1F010300, "Throw Item",
1172 "Cause the character to throw the currently held item.",
1173 new string[] {"Undefined", "Undefined", "Undefined"},
1174 new string[] {"Undefined.", "Undefined.", "Undefined"},
1175 "",
1176 new long[] {5, 5, 5}));
1177 EventDictionary.Add(0x1F020000, new ActionEventInfo(0x1F020000, "Drop Item",
1178 "Cause the character to drop any currently held item.",
1179 new string[] { },
1180 new string[] { },
1181 "",
1182 new long[] { }));
1183 EventDictionary.Add(0x1F030100, new ActionEventInfo(0x1F030100, "Consume Item",
1184 "Cause the character to consume the currently held item.",
1185 new string[] {"Undefined"},
1186 new string[] {"Undefined"},
1187 "",
1188 new long[] {0}));
1189 EventDictionary.Add(0x1F040200, new ActionEventInfo(0x1F040200, "Item Property",
1190 "Modify a property of the currently held item.",
1191 new string[] {"Undefined", "Undefined"},
1192 new string[] {"Undefined.", "Undefined"},
1193 "",
1194 new long[] {0, 1}));
1195 EventDictionary.Add(0x1F070100, new ActionEventInfo(0x1F070100, "Items 1F",
1196 "Is used when firing a cracker launcher.",
1197 new string[] {"Undefined"},
1198 new string[] {"Undefined"},
1199 "",
1200 new long[] {5}));
1201 EventDictionary.Add(0x1F080100, new ActionEventInfo(0x1F080100, "Generate Item",
1202 "Generate an item in the character's hand.",
1203 new string[] {"Undefined"},
1204 new string[] {"Undefined"},
1205 "",
1206 new long[] {0}));
1207 EventDictionary.Add(0x1F0C0100, new ActionEventInfo(0x1F0C0100, "Beam Sword Trail",
1208 "Creates a beam sword trail. Probably has more uses among battering weapons.",
1209 new string[] {"Undefined"},
1210 new string[] {"Undefined"},
1211 "",
1212 new long[] {0}));
1213 EventDictionary.Add(0x1F0E0500, new ActionEventInfo(0x1F0E0500, "Throw Item",
1214 "Causes the character to throw the currently held item.",
1215 new string[] {"Undefined", "Undefined", "Undefined", "Undefined", "Undefined"},
1216 new string[] {"Undefined.", "Undefined.", "Undefined.", "Undefined.", "Undefined"},
1217 "",
1218 new long[] {1, 1, 5, 5, 5}));
1219 EventDictionary.Add(0x1F090100, new ActionEventInfo(0x1F090100, "Item Visibility",
1220 "Determines visibilty of the currently held item.",
1221 new string[] {"Item Visibility"},
1222 new string[] {"Set Boolean: True = Visible, False = Invisible"},
1223 "",
1224 new long[] {3}));
1225 EventDictionary.Add(0x1F050000, new ActionEventInfo(0x1F050000, "Fire Weapon",
1226 "Fires a shot from the currently held item. (May have other unknown applications)",
1227 new string[] { },
1228 new string[] { },
1229 "",
1230 new long[] { }));
1231 EventDictionary.Add(0x1F060100, new ActionEventInfo(0x1F060100, "Fire Projectile",
1232 "Fires a projectile of the specified degree of power.",
1233 new string[] { },
1234 new string[] { },
1235 "",
1236 new long[] { }));
1237 EventDictionary.Add(0x21000000, new ActionEventInfo(0x21000000, "Terminate Flash Effect",
1238 "Terminate all currently active flash effects.",
1239 new string[] { },
1240 new string[] { },
1241 "",
1242 new long[] { }));
1243 EventDictionary.Add(0x21010400, new ActionEventInfo(0x21010400, "Flash Overlay Effect",
1244 "Generate a flash overlay effect over the character with the specified colors and opacity. Replaces any currently active flash effects.",
1245 new string[] {"R", "G", "B", "A"},
1246 new string[]
1247 {
1248 "The red value from 0-255.", "The green value from 0-255.", "The blue value from 0-255.",
1249 "The alpha value from 0-255 (0 = fully transparent, 255 = fully opaque)."
1250 },
1251 "\\name(): RGBA=(\\value(0), \\value(1), \\value(2), \\value(3))",
1252 new long[] {0, 0, 0, 0}));
1253 EventDictionary.Add(0x21020500, new ActionEventInfo(0x21020500, "Change Flash Overlay Color",
1254 "Changes the color of the current flash overlay effect.",
1255 new string[] {"Transition Time", "R", "G", "B", "A"},
1256 new string[]
1257 {
1258 "The number of frames the colour change takes.", "The red value (0-255) of the target colour.",
1259 "The green value (0-255) of the target colour.", "The blue value (0-255) of the target colour.",
1260 "The alpha value (0-255) of the target colour."
1261 },
1262 "\\name(): Transition Time=\\value(0), RGBA=(\\value(1), \\value(2), \\value(3), \\value(4))",
1263 new long[] {0, 0, 0, 0, 0}));
1264 EventDictionary.Add(0x21050600, new ActionEventInfo(0x21050600, "Flash Light Effect",
1265 "Generate a flash lighting effect over the character with the specified colors, opacity and angle. Replaces any currently active flash effects.",
1266 new string[] {"R", "G", "B", "A", "Angle", "Unknown"},
1267 new string[]
1268 {
1269 "The red value from 0-255.", "The green value from 0-255.", "The blue value from 0-255.",
1270 "The alpha value from 0-255 (0 = fully transparent, 255 = fully opaque).",
1271 "The angle in degrees of the virtual light source.",
1272 "Possibly the distance of the virtual light source?"
1273 },
1274 "\\name(): RGBA=(\\value(0), \\value(1), \\value(2), \\value(3)), Light Source X=\\value(4), Light Source Y=\\value(5)",
1275 new long[] {0, 0, 0, 0, 1, 1}));
1276 EventDictionary.Add(0x21070500, new ActionEventInfo(0x21070500, "Change Flash Light Color",
1277 "Changes the color of the current flash light effect.",
1278 new string[] {"Transition Time", "R", "G", "B", "A"},
1279 new string[]
1280 {
1281 "The number of frames the color change takes.", "The red value (0-255) of the target color.",
1282 "The green value (0-255) of the target color.", "The blue value (0-255) of the target color.",
1283 "The alpha value (0-255) of the target color."
1284 },
1285 "\\name(): Transition Time=\\value(0), RGBA=(\\value(1), \\value(2), \\value(3), \\value(4))",
1286 new long[] {0, 0, 0, 0, 0}));
1287 EventDictionary.Add(0x64000000, new ActionEventInfo(0x64000000, "Allow Interrupt",
1288 "Allow the current action to be interrupted by another action.",
1289 new string[] { },
1290 new string[] { },
1291 "",
1292 new long[] { }));
1293 EventDictionary.Add(0x020A0100, new ActionEventInfo(0x020A0100, "Allow Specific Interrupt",
1294 "Allows interruption only by specific commands. See parameters for list of possible interrupts.",
1295 new string[] {"Interrupt ID"},
1296 new string[]
1297 {
1298 "List of types of commands: 1-Ground Special, 2-Ground Item, 3-Ground Catch, 4-Ground Attack, 5-Ground Escape, 6-Ground Guard, 7-Ground Jump, 8-Ground (other), 9-Air Landing, A-Grab Edge, B-Air Special, C-Air Item Throw, D-Air Lasso, E-Air Dodge, F-Air Attack, 10-Air Tread Jump, 11-Air Walljump, 12-Air Jump Aerial, 13-Fall Through Plat(only works in squat)."
1299 },
1300 "\\name(): \\enum(\\value(0), 0)",
1301 new long[] {0})
1302 {
1303 Enums = new Dictionary<int, List<string>>()
1304 {
1305 {
1306 0,
1307 new List<string>()
1308 {
1309 "Main", "Ground Special", "Ground Item", "Ground Catch", "Ground Attack", "Ground Escape",
1310 "Ground Guard", "Ground Jump", "Ground (Other)", "Air Landing", "Grab Edge", "Air Special",
1311 "Air Item Throw", "Air Lasso", "Air Dodge", "Air Attack", "Air Tread Jump", "Air Walljump",
1312 "Air Jump Aerial", "Fall Through Platform (Squat Only)"
1313 }
1314 }
1315 }
1316 });
1317 EventDictionary.Add(0x1A000100, new ActionEventInfo(0x1A000100, "Screenshake",
1318 "Shakes the screen.",
1319 new string[] {"Magnitude"},
1320 new string[] {"The intensity of the screenshake."},
1321 "\\name(): Magnitude=\\value(0)",
1322 new long[] {1}));
1323 EventDictionary.Add(0x0B020100, new ActionEventInfo(0x0B020100, "Visibility",
1324 "Changes whether the model is visible or not.",
1325 new string[] {"Visibility"},
1326 new string[] {"Set Boolean: True = Visible, False = Invisible"},
1327 "Visible: \\value(0)",
1328 new long[] {3}));
1329 EventDictionary.Add(0x07070200, new ActionEventInfo(0x07070200, "Rumble",
1330 "Undefined. Affects the rumble feature of the controller.",
1331 new string[] {"Undefined", "Undefined"},
1332 new string[] {"Undefined.", "Undefined"},
1333 "",
1334 new long[] {0, 0}));
1335 EventDictionary.Add(0x0E080400, new ActionEventInfo(0x0E080400, "Set/Add Momentum",
1336 "Controls the movement velocity of the object.",
1337 new string[] {"Horizontal Velocity", "Vertical Velocity", "Set/Add Horizontal", "Set/Add Vertical"},
1338 new string[]
1339 {
1340 "The speed of the object moving left/right.", "The speed of the object moving up/down.",
1341 "0 = Add, 1 = Set", "0 = Add, 1 = Set"
1342 },
1343 "\\name(): Horizontal=\\value(0), Vertical=\\value(1), Add/Set Horiz=\\value(2), Add/Set Vert=\\value(3)",
1344 new long[] {1, 1, 0, 0}));
1345 EventDictionary.Add(0x0E010200, new ActionEventInfo(0x0E010200, "Add/Subtract Character Momentum",
1346 "Adds or subtracts speed to the character's current momentum.",
1347 new string[] {"Horizontal Velocity", "Vertical Velocity"},
1348 new string[]
1349 {"The speed of the character moving left/right.", "The speed of the character moving up/down."},
1350 "\\name(): Horizontal Speed=\\value(0), Vertical Speed=\\value(1)",
1351 new long[] {1, 1}));
1352 EventDictionary.Add(0x0E060100, new ActionEventInfo(0x0E060100, "Disallow Certain Movements",
1353 "Does not allow the specified type of movement.",
1354 new string[] {"Type"},
1355 new string[]
1356 {
1357 "When set to 1, vertical movement is disallowed. When set to 2, horizontal movement is disallowed."
1358 },
1359 "\\name(): \\enum(\\value(0), 0)",
1360 new long[] {0})
1361 {
1362 Enums = new Dictionary<int, List<string>>()
1363 {{0, new List<string>() {"Undefined(0)", "Vertical", "Horizontal"}}}
1364 });
1365 EventDictionary.Add(0x0E070100, new ActionEventInfo(0x0E070100, "Disallow Certain Movements 2",
1366 "This must be set to the same value as Disallow Certain Movements to work.",
1367 new string[] { },
1368 new string[] { },
1369 "",
1370 new long[] {0}));
1371 EventDictionary.Add(0x0E020100, new ActionEventInfo(0x0E020100, "Disallow Vertical Movement",
1372 "When set to 1, vertical speed and acceleration are reset back to 0.",
1373 new string[] { },
1374 new string[] { },
1375 "\\name(): \\unhex(\\value(0))",
1376 new long[] { }));
1377 EventDictionary.Add(0x0C250100, new ActionEventInfo(0x0C250100, "Tag Display",
1378 "Disables or enables tag display for the current subaction.",
1379 new string[] {"Tag On/Off"},
1380 new string[] {"True = On, False = Off"},
1381 "\\name(): \\value(0)",
1382 new long[] {3}));
1383 EventDictionary.Add(0x1E000200, new ActionEventInfo(0x1E000200, "Super/Heavy Armor",
1384 "Begins super armor or heavy armor. Set both parameters to 0 to end the armor.",
1385 new string[] {"Armor State", "Heavy Armor Tolerance"},
1386 new string[]
1387 {
1388 "0 = None, 1 = Super Armor, 2 = Knockback Based Heavy Armor, 3 = Damage Based Heavy Armor",
1389 "The minimum damage or KB that will cause the character to flinch when using heavy armor."
1390 },
1391 "\\name(): State=\\enum(\\value(0), 0), Tolerance=\\value(1)",
1392 new long[] {0, 1})
1393 {
1394 Enums = new Dictionary<int, List<string>>()
1395 {
1396 {
1397 0,
1398 new List<string>()
1399 {"None", "Super Armor", "Knockback Based Heavy Armor", "Damage Based Heavy Armor"}
1400 }
1401 }
1402 });
1403 EventDictionary.Add(0x1E030100, new ActionEventInfo(0x1E030100, "Add/Subtract Damage",
1404 "Adds or subtracts the specified amount of damage from the character's current percentage.",
1405 new string[] {"Damage"},
1406 new string[] {"The amount of damage to add or subtract."},
1407 "\\name(): \\value(0)",
1408 new long[] {1}));
1409 EventDictionary.Add(0x06010200, new ActionEventInfo(0x06010200, "Change Hitbox Damage",
1410 "Changes a specific hitbox's damage to the new amount. Only guaranteed to work on Offensive Collisions.",
1411 new string[] {"Hitbox", "Damage"},
1412 new string[] {"ID of the hitbox to be changed.", "New damage of the hitbox."},
1413 "\\name(): ID=\\value(0), Damage=\\value(1)",
1414 new long[] {0, 0}));
1415 EventDictionary.Add(0x06030100, new ActionEventInfo(0x06030100, "Delete Hitbox",
1416 "Deletes a hitbox of the specified ID. Only guaranteed to work on Offensive Collisions.",
1417 new string[] {"Hitbox"},
1418 new string[] {"ID of the hitbox to be deleted."},
1419 "\\name(): \\value(0)",
1420 new long[] {0}));
1421 EventDictionary.Add(0x0B000200, new ActionEventInfo(0x0B000200, "Model Changer 1",
1422 "Changes the visibility of certain bones attached to objects. Uses bone groups and switches set in Reference 1 of the Model Visibility section.",
1423 new string[] {"Switch Index", "Bone Group Index"},
1424 new string[]
1425 {
1426 "The index of the switch group in Reference 1 to modify.",
1427 "The index of the group of bones in the switch. A value less than 0 or greater than the amount of groups will disable the visibility of all objects. All other groups will be turned off when switching this one on."
1428 },
1429 "\\name(): Switch=\\value(0), Group=\\value(1)",
1430 new long[] {0, 0}));
1431 EventDictionary.Add(0x0B010200, new ActionEventInfo(0x0B010200, "Model Changer 2",
1432 "Changes the visibility of certain bones attached to objects. Uses bone groups and switches set in Reference 2 of the Model Visibility section.",
1433 new string[] {"Switch Index", "Bone Group Index"},
1434 new string[]
1435 {
1436 "The index of the switch group in Reference 2 to modify.",
1437 "The index of the group of bones in the switch. A value less than 0 or greater than the amount of groups will disable the visibility of all objects. All other groups will be turned off when switching this one on."
1438 },
1439 "\\name(): Switch=\\value(0), Group=\\value(1)",
1440 new long[] { }));
1441 EventDictionary.Add(0x10040100, new ActionEventInfo(0x10040100, "Model Event 1",
1442 "This affects an article/model action. (This only works with characters who have articles in one of their files.",
1443 new string[] {"Model ID"},
1444 new string[]
1445 {
1446 "Model. (Only Summons the Id of the article/model to call. Only summons a FitChar##.pac. For example, Pit's bow is article/model 0)"
1447 },
1448 "\\name(): Model ID=\\value(0)",
1449 new long[] { }));
1450 EventDictionary.Add(0x10040200, new ActionEventInfo(0x10040200, "Set Anchored Article SubAction",
1451 "Sets the specified article to execute the specified action immediately. Only works on anchored articles (Cape, FLUDD, not fireball, water).",
1452 new string[] {"Article ID", "Action"},
1453 new string[]
1454 {
1455 "The ID of the article you would like to edit.", "The action you would like the article to execute."
1456 },
1457 "\\name(): article=\\value(0), action=\\unhex(\\value(1))",
1458 new long[] {0, 0}));
1459 EventDictionary.Add(0x10040300, new ActionEventInfo(0x10040300, "Set Anchored Article SubAction",
1460 "Sets the specified article to execute the specified action immediately. Only works on anchored articles (Cape, FLUDD, not fireball, water).",
1461 new string[] {"Article ID", "Action", "Subaction Exclusive?"},
1462 new string[]
1463 {
1464 "The ID of the article you would like to edit.",
1465 "The action you would like the article to execute.",
1466 "Whether or not you want the article to be automatically deleted when the subaction ends."
1467 },
1468 "\\name(): article=\\value(0), action=\\unhex(\\value(1)): Delete At End=\\value(2)",
1469 new long[] {0, 0, 3}));
1470 EventDictionary.Add(0x14040100, new ActionEventInfo(0x14040100, "Terminate Wind Effect",
1471 "Ends the wind effect spawned by the \"Aesthetic Wind Effect\" event.",
1472 new string[] {"Undefined"},
1473 new string[] {"Usually set to 0."},
1474 "",
1475 new long[] {0}));
1476 EventDictionary.Add(0x070B0200, new ActionEventInfo(0x070B0200, "Rumble Loop",
1477 "Creates a rumble loop on the controller.",
1478 new string[] {"Undefined", "Undefined"},
1479 new string[] {"Undefined.", "Undefined"},
1480 "",
1481 new long[] {0, 0}));
1482 EventDictionary.Add(0x18000100, new ActionEventInfo(0x18000100, "Slope Contour Stand",
1483 "Moves specific parts of the character if on sloped ground?",
1484 new string[] {"Parameter 0"},
1485 new string[] {"Unknown."},
1486 "",
1487 new long[] { }));
1488 EventDictionary.Add(0x18010200, new ActionEventInfo(0x18010200, "Slope Contour Full?",
1489 "Moves entire character to match sloped ground?",
1490 new string[] {"Parameter 0", "Parameter 1"},
1491 new string[] {"Unknown.", "Unknown."},
1492 "",
1493 new long[] { }));
1494 EventDictionary.Add(0x10000200, new ActionEventInfo(0x10000200, "Generate Article",
1495 "Generate a pre-made prop effect from the prop library.",
1496 new string[] {"Article ID", "Subaction Exclusive?"},
1497 new string[]
1498 {
1499 "The id of the prop article to be called.",
1500 "Whether or not you want the article to be automatically deleted when the subaction ends."
1501 },
1502 "",
1503 new long[] {0, 3}));
1504 EventDictionary.Add(0x10010100, new ActionEventInfo(0x10010100, "Article Event 02",
1505 "Makes the article preform an animation when set to 1.",
1506 new string[] {"Article ID"},
1507 new string[] {"ID of the article."},
1508 "",
1509 new long[] { }));
1510 EventDictionary.Add(0x00030000, new ActionEventInfo(0x00030000, "Flow 03",
1511 "Undefined",
1512 new string[] { },
1513 new string[] { },
1514 "",
1515 new long[] { }));
1516 EventDictionary.Add(0x000B0100, new ActionEventInfo(0x000B0100, "And",
1517 "Seems to be an \"and\" to an If statement.",
1518 new string[] { },
1519 new string[] { },
1520 "And \\value(0):",
1521 new long[] { }));
1522 EventDictionary.Add(0x000B0200, new ActionEventInfo(0x000B0200, "And Value",
1523 "Seems to be an \"and\" to an If statement.",
1524 new string[] {"Requirement", "Variable"},
1525 new string[]
1526 {
1527 "The form of requirement used in evaluation of the event.",
1528 "The variable applied to the requirement."
1529 },
1530 "And \\value(0): \\value(1)",
1531 new long[] {6, 0}));
1532 EventDictionary.Add(0x000B0300, new ActionEventInfo(0x000B0300, "And Unknown",
1533 "Seems to be an \"and\" to an If statement.",
1534 new string[] {"Requirement", "Variable", "Unknown"},
1535 new string[]
1536 {
1537 "The form of requirement used in evaluation of the event.",
1538 "The variable applied to the requirement.", "Unknown"
1539 },
1540 "And \\value(0): \\value(1); Unknown=\\value(2)",
1541 new long[] {6, 0, 0}));
1542 EventDictionary.Add(0x000C0100, new ActionEventInfo(0x000C0100, "Or",
1543 "Insert an alternate requirement to fall back on if the above requirement(s) are not met.",
1544 new string[] {"Requirement"},
1545 new string[] {"The form of requirement used in evaluation of the event."},
1546 "Or \\value(0):",
1547 new long[] {6}));
1548 EventDictionary.Add(0x000C0200, new ActionEventInfo(0x000C0200, "Or Value",
1549 "Insert an alternate requirement to fall back on if the above requirement(s) are not met.",
1550 new string[] {"Requirement", "Variable"},
1551 new string[]
1552 {
1553 "The form of requirement used in evaluation of the event.",
1554 "The variable applied to the requirement."
1555 },
1556 "Or \\value(0): \\value(1)",
1557 new long[] {6, 0}));
1558 EventDictionary.Add(0x000C0300, new ActionEventInfo(0x000C0300, "Or Unknown",
1559 "Insert an alternate requirement to fall back on if the above requirement(s) are not met.",
1560 new string[] {"Requirement", "Variable", "Unknown"},
1561 new string[]
1562 {
1563 "The form of requirement used in evaluation of the event.",
1564 "The variable applied to the requirement.", "Undefined"
1565 },
1566 "Or \\value(0): \\value(1); Unknown=\\value(2)",
1567 new long[] {6, 0, 0}));
1568 EventDictionary.Add(0x000C0400, new ActionEventInfo(0x000C0400, "Or Comparison",
1569 "Insert an alternate requirement to fall back on if the above requirement(s) are not met.",
1570 new string[] {"Requirement", "Variable", "Comparison Method", "Variable"},
1571 new string[]
1572 {
1573 "The form of requirement used in evaluation of the event.",
1574 "The first variable in the comparison requirement.",
1575 "The method used to compare the two variables. From 0 to 5: <, ≤, =, ≠, ≥, > ",
1576 "The second variable in the comparison requirement."
1577 },
1578 "Or \\value(0): \\value(1) \\cmpsign(\\value(2)) \\value(3)",
1579 new long[] {6, 5, 0, 5}));
1580 EventDictionary.Add(0x000D0200, new ActionEventInfo(0x000D0200, "Else If Value",
1581 "Insert an Else If block inside of an If block.",
1582 new string[] {"Requirement", "Variable"},
1583 new string[]
1584 {
1585 "The form of requirement used in evaluation of the event.",
1586 "The variable applied to the requirement."
1587 },
1588 "Else If \\value(0): \\value(1)",
1589 new long[] {6, 0}));
1590 EventDictionary.Add(0x000D0300, new ActionEventInfo(0x000D0300, "Else If Unknown",
1591 "Insert an Else If block inside of an If block.",
1592 new string[] {"Requirement", "Variable", "Unknown"},
1593 new string[]
1594 {
1595 "The form of requirement used in evaluation of the event.",
1596 "The variable applied to the requirement.", "Undefined"
1597 },
1598 "Else If \\value(0): \\value(1); Unknown=\\value(2)",
1599 new long[] {6, 0, 0}));
1600 EventDictionary.Add(0x00180000, new ActionEventInfo(0x00180000, "Break",
1601 "Appears within Case statements; exits the switch event completely. All code located in the same case block after this event will not be executed.",
1602 new string[] { },
1603 new string[] { },
1604 "",
1605 new long[] { }));
1606 EventDictionary.Add(0x02000400, new ActionEventInfo(0x02000400, "Change Action Status Value",
1607 "Change the current action upon the specified requirement being met (the requirement does not have to be met at the time this ID is executed - it can be used anytime after execution.)",
1608 new string[] {"Status ID", "Action", "Requirement", "Variable"},
1609 new string[]
1610 {
1611 "The four-digit status ID of the change action event. Can later be disabled via 02080100 (Disable Action Status ID)",
1612 "The ID of the action that the character will execute.",
1613 "The form of requirement used in evaluation of the event.",
1614 "The variable applied to the requirement."
1615 },
1616 "Prioritized Change Action: priority=\\unhex(\\value(0)), action=\\unhex(\\value(1)), requirement=\\value(2): \\value(3)",
1617 new long[] {0, 0, 6, 0}));
1618 EventDictionary.Add(0x02000500, new ActionEventInfo(0x02000500, "Change Action Status Unknown",
1619 "Change the current action upon the specified requirement being met (the requirement does not have to be met at the time this ID is executed - it can be used anytime after execution.)",
1620 new string[] {"Status ID", "Action", "Requirement", "Variable", "Unknown"},
1621 new string[]
1622 {
1623 "The four-digit status ID of the change action event. Can later be disabled via 02080100 (Disable Action Status ID)",
1624 "The ID of the action that the character will execute.",
1625 "The form of requirement used in evaluation of the event.",
1626 "The variable applied to the requirement.",
1627 "Used as a specification for the requirement when necessary (for example, if the requirement is \"button pressed\", this denotes which button)."
1628 },
1629 "Prioritized Change Action: priority=\\unhex(\\value(0)), action=\\unhex(\\value(1)), requirement=\\value(2): \\value(3); Unknown=\\value(4)",
1630 new long[] {0, 0, 6, 0, 0}));
1631 EventDictionary.Add(0x02000600, new ActionEventInfo(0x02000600, "Change Action Status Comparison",
1632 "Change the current action upon the specified requirement being met (the requirement does not have to be met at the time this ID is executed - it can be used anytime after execution.)",
1633 new string[] {"Status ID", "Action", "Requirement", "Variable", "Comparison", "Variable"},
1634 new string[]
1635 {
1636 "The four-digit status ID of the change action event. Can later be disabled via 02080100 (Disable Action Status ID)",
1637 "The ID of the action that the character will execute.",
1638 "The form of requirement used in evaluation of the event.",
1639 "The variable applied to the requirement.", "The first variable in the comparison requirement.",
1640 "The method used to compare the two variables. From 0 to 5: <, ≤, =, ≠, ≥, >",
1641 "The second variable in the comparison requirement."
1642 },
1643 "Prioritized Change Action: priority=\\unhex(\\value(0)), action=\\unhex(\\value(1)), requirement=\\value(2): \\value(3) \\cmpsign(\\value(4)) \\value(5)",
1644 new long[] {0, 0, 6, 0, 0}));
1645 EventDictionary.Add(0x02080100, new ActionEventInfo(0x02080100, "Disable Action Status ID",
1646 "Disables the Action associated with the given Status ID.",
1647 new string[] {"Status ID"},
1648 new string[] {"The Status ID to disable. After this command, the associated Action will not activate."},
1649 "\\name(): \\unhex(\\value(0))",
1650 new long[] {0}));
1651 EventDictionary.Add(0x02090200, new ActionEventInfo(0x02090200, "Invert Action Status ID",
1652 "Appears to invert (or possibly only disable) a specific Status ID's enabled/disabled status. For example, if a character can crawl, this is used to disable the ability to dash when crouched, even though naturally crouching allows dashing through 020A (Allow Specific Interrupt).",
1653 new string[] {"Interrupt ID?", "Status ID?"},
1654 new string[]
1655 {
1656 "Appears to be a Interrupt ID as used by 020A (Allow Specific Interrupt)",
1657 "Appears to be a Status ID."
1658 },
1659 "\\name(): Interrupt ID=\\enum(\\value(0), 0), Status ID=\\unhex(\\value(1))",
1660 new long[] {0, 0})
1661 {
1662 Enums = new Dictionary<int, List<string>>()
1663 {
1664 {
1665 0,
1666 new List<string>()
1667 {
1668 "Main", "Ground Special", "Ground Item", "Ground Catch", "Ground Attack", "Ground Escape",
1669 "Ground Guard", "Ground Jump", "Ground (Other)", "Air Landing", "Grab Edge", "Air Special",
1670 "Air Item Throw", "Air Lasso", "Air Dodge", "Air Attack", "Air Tread Jump", "Air Walljump",
1671 "Air Jump Aerial", "Fall Through Platform (Squat Only)"
1672 }
1673 }
1674 }
1675 });
1676 EventDictionary.Add(0x020B0100, new ActionEventInfo(0x020B0100, "Disallow Specific Interrupt",
1677 "Closes the specific interruption window. Must be set to the same thing as the allow specific interrupt that you wish to cancel.",
1678 new string[] {"Interrupt ID"},
1679 new string[]
1680 {
1681 "List of types of commands: 1-Ground Special, 2-Ground Item, 3-Ground Catch, 4-Ground Attack, 5-Ground Escape, 6-Ground Guard, 7-Ground Jump, 8-Ground (other), 9-Air Landing, A-Grab Edge, B-Air Special, C-Air Item Throw, D-Air Lasso, E-Air Dodge, F-Air Attack, 10-Air Tread Jump, 11-Air Walljump, 12-Air Jump Aerial, 13-Fall Through Plat(only works in squat)."
1682 },
1683 "\\name(): \\enum(\\value(0), 0)",
1684 new long[] {0})
1685 {
1686 Enums = new Dictionary<int, List<string>>()
1687 {
1688 {
1689 0,
1690 new List<string>()
1691 {
1692 "Main", "Ground Special", "Ground Item", "Ground Catch", "Ground Attack", "Ground Escape",
1693 "Ground Guard", "Ground Jump", "Ground (Other)", "Air Landing", "Grab Edge", "Air Special",
1694 "Air Item Throw", "Air Lasso", "Air Dodge", "Air Attack", "Air Tread Jump", "Air Walljump",
1695 "Air Jump Aerial", "Fall Through Platform (Squat Only)"
1696 }
1697 }
1698 }
1699 });
1700 EventDictionary.Add(0x020C0100, new ActionEventInfo(0x020C0100, "Unregister Interrupt?",
1701 "Possibly unregisters a previously created interrupt.",
1702 new string[] {"Interrupt ID"},
1703 new string[] {"Possibly the Interrupt ID to unregister."},
1704 "\\name(): \\enum(\\value(0), 0)",
1705 new long[] {0})
1706 {
1707 Enums = new Dictionary<int, List<string>>()
1708 {
1709 {
1710 0,
1711 new List<string>()
1712 {
1713 "Main", "Ground Special", "Ground Item", "Ground Catch", "Ground Attack", "Ground Escape",
1714 "Ground Guard", "Ground Jump", "Ground (Other)", "Air Landing", "Grab Edge", "Air Special",
1715 "Air Item Throw", "Air Lasso", "Air Dodge", "Air Attack", "Air Tread Jump", "Air Walljump",
1716 "Air Jump Aerial", "Fall Through Platform (Squat Only)"
1717 }
1718 }
1719 }
1720 });
1721 EventDictionary.Add(0x04020100, new ActionEventInfo(0x04020100, "Additional Subaction Change Requirement",
1722 "",
1723 new string[] {"Requirement"},
1724 new string[] {"The form of requirement used in evaluation of the event."},
1725 "\\name(): \\value(0)",
1726 new long[] {6}));
1727 EventDictionary.Add(0x04020200, new ActionEventInfo(0x04020200,
1728 "Additional Subaction Change Requirement Value",
1729 "",
1730 new string[] {"Requirement", "Variable"},
1731 new string[]
1732 {
1733 "The form of requirement used in evaluation of the event.",
1734 "The variable applied to the requirement."
1735 },
1736 "\\name(): \\value(0): \\value(1)",
1737 new long[] {6, 5}));
1738 EventDictionary.Add(0x04020300, new ActionEventInfo(0x04020300,
1739 "Additional Subaction Change Requirement Unknown",
1740 "",
1741 new string[] {"Requirement", "Variable", "Undefined"},
1742 new string[]
1743 {
1744 "The form of requirement used in evaluation of the event.",
1745 "The variable applied to the requirement.", "Undefined"
1746 },
1747 "\\name(): \\value(0): \\value(1), \\value(2)",
1748 new long[] {6, 5, 0}));
1749 EventDictionary.Add(0x04020400, new ActionEventInfo(0x04020400,
1750 "Additional Subaction Change Requirement Compare",
1751 "",
1752 new string[] {"Requirement", "Variable", "Comparison Method", "Variable"},
1753 new string[]
1754 {
1755 "The form of requirement used in evaluation of the event.",
1756 "The first variable in the comparison requirement.",
1757 "The method used to compare the two variables. From 0 to 5: <, ≤, =, ≠, ≥, >",
1758 "The second variable in the comparison requirement."
1759 },
1760 "\\name(): \\value(0): \\value(1) \\cmpsign(\\value(2)) \\value(3)",
1761 new long[] {6, 5, 0, 5}));
1762 EventDictionary.Add(0x04030100, new ActionEventInfo(0x04030100, "Extra Subaction Change Requirement",
1763 "Seems to act as an additional requirement for Additional Subaction Change Requirement.",
1764 new string[] {"Requirement"},
1765 new string[] {"The form of requirement used in evaluation of the event."},
1766 "\\name(): \\value(0)",
1767 new long[] {6}));
1768 EventDictionary.Add(0x04030200, new ActionEventInfo(0x04030200, "Extra Subaction Change Requirement Value",
1769 "",
1770 new string[] {"Requirement", "Variable"},
1771 new string[]
1772 {
1773 "The form of requirement used in evaluation of the event.",
1774 "The variable applied to the requirement."
1775 },
1776 "\\name(): \\value(0): \\value(1)",
1777 new long[] {6, 5}));
1778 EventDictionary.Add(0x04030300, new ActionEventInfo(0x04030300,
1779 "Extra Subaction Change Requirement Unknown",
1780 "",
1781 new string[] {"Requirement", "Variable", "Undefined"},
1782 new string[]
1783 {
1784 "The form of requirement used in evaluation of the event.",
1785 "The variable applied to the requirement.", "Undefined"
1786 },
1787 "\\name(): \\value(0): \\value(1), \\value(2)",
1788 new long[] {6, 5, 0}));
1789 EventDictionary.Add(0x04030400, new ActionEventInfo(0x04030400,
1790 "Extra Subaction Change Requirement Compare",
1791 "",
1792 new string[] {"Requirement", "Variable", "Comparison Method", "Variable"},
1793 new string[]
1794 {
1795 "The form of requirement used in evaluation of the event.",
1796 "The first variable in the comparison requirement.",
1797 "The method used to compare the two variables. From 0 to 5: <, ≤, =, ≠, ≥, > ",
1798 "The second variable in the comparison requirement."
1799 },
1800 "\\name(): \\value(0): \\value(1) \\cmpsign(\\value(2)) \\value(3)",
1801 new long[] {6, 5, 0, 5}));
1802 EventDictionary.Add(0x04060100, new ActionEventInfo(0x04060100, "Set Animation Frame",
1803 "Changes the current frame of the animation. Does not change the frame of the subaction (i.e. timers and such are unaffected).",
1804 new string[] {"Frame"},
1805 new string[] {"The frame to skip to."},
1806 "\\name(): \\value(0)",
1807 new long[] {1}));
1808 EventDictionary.Add(0x040A0100, new ActionEventInfo(0x040A0100, "Subactions 0A",
1809 "",
1810 new string[] {"Undefined"},
1811 new string[] {"Undefined"},
1812 "",
1813 new long[] {0}));
1814 EventDictionary.Add(0x040B0100, new ActionEventInfo(0x040B0100, "Subactions 0B",
1815 "",
1816 new string[] {"Undefined"},
1817 new string[] {"Undefined"},
1818 "",
1819 new long[] {1}));
1820 EventDictionary.Add(0x040C0100, new ActionEventInfo(0x040C0100, "Subactions 0C",
1821 "",
1822 new string[] {"Subaction"},
1823 new string[] {"A subaction ID."},
1824 "",
1825 new long[] {0}));
1826 EventDictionary.Add(0x040D0100, new ActionEventInfo(0x040D0100, "Subactions 0D",
1827 "",
1828 new string[] {"Undefined"},
1829 new string[] {"Undefined"},
1830 "",
1831 new long[] {0}));
1832 EventDictionary.Add(0x04140100, new ActionEventInfo(0x04140100, "Subactions 14",
1833 "",
1834 new string[] {"Undefined"},
1835 new string[] {"Undefined"},
1836 "",
1837 new long[] {1}));
1838 EventDictionary.Add(0x04180100, new ActionEventInfo(0x04180100, "Subactions 18",
1839 "",
1840 new string[] {"Undefined"},
1841 new string[] {"Undefined"},
1842 "",
1843 new long[] {5}));
1844 EventDictionary.Add(0x05010000, new ActionEventInfo(0x05010000, "Posture 01",
1845 "Undefined",
1846 new string[] { },
1847 new string[] { },
1848 "",
1849 new long[] { }));
1850 EventDictionary.Add(0x05020000, new ActionEventInfo(0x05020000, "Posture 02",
1851 "Undefined",
1852 new string[] { },
1853 new string[] { },
1854 "",
1855 new long[] { }));
1856 EventDictionary.Add(0x05030000, new ActionEventInfo(0x05030000, "Posture 03",
1857 "Undefined",
1858 new string[] { },
1859 new string[] { },
1860 "",
1861 new long[] { }));
1862 EventDictionary.Add(0x05040000, new ActionEventInfo(0x05040000, "Posture 04",
1863 "Undefined",
1864 new string[] { },
1865 new string[] { },
1866 "",
1867 new long[] { }));
1868 EventDictionary.Add(0x05070300, new ActionEventInfo(0x05070300, "Posture 07",
1869 "",
1870 new string[] {"Undefined", "Undefined", "Undefined"},
1871 new string[] {"Undefined.", "Undefined.", "Undefined"},
1872 "",
1873 new long[] {1, 5, 1}));
1874 EventDictionary.Add(0x050D0100, new ActionEventInfo(0x050D0100, "Posture 0D",
1875 "",
1876 new string[] {"Undefined"},
1877 new string[] {"Undefined"},
1878 "",
1879 new long[] {0}));
1880 EventDictionary.Add(0x06020200, new ActionEventInfo(0x06020200, "Change Hitbox Size",
1881 "Changes a specific hitbox's size to the new amount. Only guaranteed to work on Offensive Collisions.",
1882 new string[] {"Hitbox", "Size"},
1883 new string[] {"ID of the hitbox to be changed.", "New size of the hitbox."},
1884 "\\name(): ID=\\value(1), Size=\\value(1)",
1885 new long[] {0, 0}));
1886 EventDictionary.Add(0x060C0100, new ActionEventInfo(0x060C0100, "Delete Catch Collision",
1887 "Deletes the catch collision with the specified ID.",
1888 new string[] {"ID"},
1889 new string[] {"ID of the collision to delete"},
1890 "\\name(): \\value(0)",
1891 new long[] {0}));
1892 EventDictionary.Add(0x06101100, new ActionEventInfo(0x06101100, "Inert Collision",
1893 "Generates an oblivious hitbox only used to detect collision with other characters/objects.",
1894 new string[]
1895 {
1896 "Undefined", "Id", "Bone", "Size", "X Offset", "Y Offset", "Z Offset", "Flags", "F", "Air/Ground",
1897 "Undefined", "Undefined", "Undefined", "Undefined", "Rehit Rate?", "Affects Self?", "Undefined"
1898 },
1899 new string[]
1900 {
1901 "When messed with, seemed to affect the accuracy of the collision detection. Should be set to 0 to be safe.",
1902 "The ID of the hitbox", "The bone that the hitbubble is attached to.", "The size of the hitbubble.",
1903 "Transition relative to the currently attached bone.",
1904 "Transition relative to the currently attached bone.",
1905 "Transition relative to the currently attached bone.",
1906 "+02 = Hits Normally, +04=Can be reflected....", "Undefined",
1907 "1 = hits grounded, 2 = hits aerial, 3 = hits grounded and aerial", "Undefined", "Undefined",
1908 "Undefined", "Undefined", "The rehit rate of the hitbubble?",
1909 "Possibly if the uninteractive collision affects the host character.", "Undefined"
1910 },
1911 "\\name(): Id=\\value(1), Bone=\\bone(\\value(2)), Size=\\value(3), Z Offset=\\value(4), Y Offset=\\value(5), X Offset=\\value(6), Air/Ground=\\value(9),Self-Affliction=\\value(15)",
1912 new long[] {0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 3, 0, 0, 3, 0, 3, 0}));
1913 EventDictionary.Add(0x062C0F00, new ActionEventInfo(0x062C0F00, "\"Bump\" Collision?",
1914 "Possibly the \"bump\" collisions that occur when a character in hitstun collides with another body.",
1915 new string[]
1916 {
1917 "Bone/ID?", "Damage", "Trajectory", "Weight Knockback/Knockback Growth?",
1918 "Shield Damage/Base Knockback?", "Size?", "X Offset?", "Y Offset?", "Z Offset?", "Tripping Rate?",
1919 "Hitlag Multiplier?", "Directional Influence Multiplier?", "Flags 1", "Undefined", "Flags 2"
1920 },
1921 new string[]
1922 {
1923 "The bone the collision bubble is attached to/The ID number of the collision bubble. Where XXXXYYYY is X=Bone, Y=Id.",
1924 "The amount of damage inflicted to the target upon collision.",
1925 "The direction in which a target gets launched.",
1926 "The distance the target is launched proportional to weight for fixed knockback hits/The additional distance the target is launched proportional to its damage (launch force for fixed knockback hits). XXXXYYYY is X=Weight Knockback, Y=Knockback Growth.",
1927 "The amount of damage dealt to the target's shield if it is up/The distance the target is launched regardless of its damage (zero for fixed knockback hits). XXXXYYYY is X=Shield Damage, Y=Base Knockback.",
1928 "The size of the collision bubble.",
1929 "The amount the collision bubble is transitioned relative to the currently attached bone.",
1930 "The amount the collision bubble is transitioned relative to the currently attached bone.",
1931 "The amount the collision bubble is transitioned relative to the currently attached bone.",
1932 "The percent possibility of the collision bubble inducing a trip, provided the target doesn't leave the ground from the knockback.",
1933 "A multiplier affecting the time in which both parties pause when the collision bubble connects.",
1934 "A multiplier affecting the ability for the character maneuver themselves while suffering from the hitlag generated by this collision bubble.",
1935 "Flags for various parameters such as hit effects and sound effects.", "Undefined.",
1936 "Flags for various parameters such as hit effects and sound effects."
1937 },
1938 "",
1939 new long[] {0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0}));
1940 EventDictionary.Add(0x062D0000, new ActionEventInfo(0x062D0000, "Collisions 2D",
1941 "Undefined",
1942 new string[] { },
1943 new string[] { },
1944 "",
1945 new long[] { }));
1946 EventDictionary.Add(0x07000000, new ActionEventInfo(0x07000000, "Clear Buffer?",
1947 "Possibly clears the controller buffer.",
1948 new string[] { },
1949 new string[] { },
1950 "",
1951 new long[] { }));
1952 EventDictionary.Add(0x07010000, new ActionEventInfo(0x07010000, "Controller 01",
1953 "Undefined",
1954 new string[] { },
1955 new string[] { },
1956 "",
1957 new long[] { }));
1958 EventDictionary.Add(0x07020000, new ActionEventInfo(0x07020000, "Controller 02",
1959 "Undefined",
1960 new string[] { },
1961 new string[] { },
1962 "",
1963 new long[] { }));
1964 EventDictionary.Add(0x07060100, new ActionEventInfo(0x07060100, "Controller 06",
1965 "",
1966 new string[] {"Undefined"},
1967 new string[] {"Undefined"},
1968 "",
1969 new long[] {3}));
1970 EventDictionary.Add(0x070C0000, new ActionEventInfo(0x070C0000, "Controller 0C",
1971 "Undefined",
1972 new string[] { },
1973 new string[] { },
1974 "",
1975 new long[] { }));
1976 EventDictionary.Add(0x08010100, new ActionEventInfo(0x08010100, "Edge Interaction 01",
1977 "",
1978 new string[] {"Undefined"},
1979 new string[] {"Undefined"},
1980 "",
1981 new long[] {0}));
1982 EventDictionary.Add(0x08020100, new ActionEventInfo(0x08020100, "Edge Interaction 02",
1983 "",
1984 new string[] {"Character State?"},
1985 new string[] {"Appears to use similar values to \"Set Edge Slide.\""},
1986 "",
1987 new long[] {0}));
1988 EventDictionary.Add(0x08040100, new ActionEventInfo(0x08040100, "Edge Interaction 04",
1989 "",
1990 new string[] {"Undefined"},
1991 new string[] {"Undefined"},
1992 "",
1993 new long[] {3}));
1994 EventDictionary.Add(0x08070000, new ActionEventInfo(0x08070000, "Edge Interaction 07",
1995 "Undefined",
1996 new string[] { },
1997 new string[] { },
1998 "",
1999 new long[] { }));
2000 EventDictionary.Add(0x09000100, new ActionEventInfo(0x09000100, "Module09 00",
2001 "",
2002 new string[] {"Undefined"},
2003 new string[] {"Undefined"},
2004 "",
2005 new long[] {0}));
2006 EventDictionary.Add(0x0C010000, new ActionEventInfo(0x0C010000, "Character Specific 01",
2007 "Undefined",
2008 new string[] { },
2009 new string[] { },
2010 "",
2011 new long[] { }));
2012 EventDictionary.Add(0x0C040000, new ActionEventInfo(0x0C040000, "Character Specific 04",
2013 "Undefined",
2014 new string[] { },
2015 new string[] { },
2016 "",
2017 new long[] { }));
2018 EventDictionary.Add(0x0C060000, new ActionEventInfo(0x0C060000, "Enter Final Smash State",
2019 "Allows use of Final Smash locked articles, variables, etc. Highly unstable.",
2020 new string[] { },
2021 new string[] { },
2022 "",
2023 new long[] { }));
2024 EventDictionary.Add(0x0C070000, new ActionEventInfo(0x0C070000, "Exit Final Smash State",
2025 "Undefined",
2026 new string[] { },
2027 new string[] { },
2028 "",
2029 new long[] { }));
2030 EventDictionary.Add(0x0C080000, new ActionEventInfo(0x0C080000, "Terminate Self",
2031 "Used by certain article instances to remove themselves.",
2032 new string[] { },
2033 new string[] { },
2034 "",
2035 new long[] { }));
2036 EventDictionary.Add(0x0C090100, new ActionEventInfo(0x0C090100, "Allow/Disallow Ledgegrab",
2037 "Allow or disallow grabbing ledges during the current subaction.",
2038 new string[] {"Allow/Disallow"},
2039 new string[] {"0 = cannot, 1 = Only in front, 2 = Always"},
2040 "",
2041 new long[] {0}));
2042 EventDictionary.Add(0x0C0A0100, new ActionEventInfo(0x0C0A0100, "Character Specific 0A",
2043 "",
2044 new string[] {"Undefined"},
2045 new string[] {"Undefined"},
2046 "",
2047 new long[] {0}));
2048 EventDictionary.Add(0x0C130000, new ActionEventInfo(0x0C130000, "Character Specific 13",
2049 "Undefined",
2050 new string[] { },
2051 new string[] { },
2052 "",
2053 new long[] { }));
2054 EventDictionary.Add(0x0C160000, new ActionEventInfo(0x0C160000, "Character Specific 16",
2055 "Undefined",
2056 new string[] { },
2057 new string[] { },
2058 "",
2059 new long[] { }));
2060 EventDictionary.Add(0x0C170100, new ActionEventInfo(0x0C170100, "Character Specific 17",
2061 "Undefined. Often appears before 0C25 (Tag Display)",
2062 new string[] {"Undefined"},
2063 new string[] {"Undefined."},
2064 "",
2065 new long[] {3}));
2066 EventDictionary.Add(0x0C170200, new ActionEventInfo(0x0C170200, "Character Specific 17 Variable",
2067 "Undefined. Often appears before 0C25 (Tag Display)",
2068 new string[] {"Undefined", "Undefined"},
2069 new string[] {"Undefined.", "Undefined"},
2070 "",
2071 new long[] {3, 5}));
2072 EventDictionary.Add(0x0C1A0200, new ActionEventInfo(0x0C1A0200, "Character Specific 1A",
2073 "",
2074 new string[] {"Undefined", "Undefined"},
2075 new string[] {"Undefined.", "Undefined"},
2076 "",
2077 new long[] {0, 0}));
2078 EventDictionary.Add(0x0C1B0100, new ActionEventInfo(0x0C1B0100, "Character Specific 1B",
2079 "",
2080 new string[] {"Undefined"},
2081 new string[] {"Undefined"},
2082 "",
2083 new long[] {5}));
2084 EventDictionary.Add(0x0C1C0200, new ActionEventInfo(0x0C1C0200, "Character Specific 1C",
2085 "",
2086 new string[] {"Undefined", "Undefined"},
2087 new string[] {"Undefined.", "Undefined"},
2088 "",
2089 new long[] {0, 0}));
2090 EventDictionary.Add(0x0C1C0300, new ActionEventInfo(0x0C1C0300, "Character Specific 1C Boolean",
2091 "",
2092 new string[] {"Undefined", "Undefined", "Undefined"},
2093 new string[] {"Undefined.", "Undefined.", "Undefined"},
2094 "",
2095 new long[] {0, 0, 3}));
2096 EventDictionary.Add(0x0C1F0000, new ActionEventInfo(0x0C1F0000, "Eating Voice Clip",
2097 "Play a random voice clip from the selection of eating voice clips.",
2098 new string[] { },
2099 new string[] { },
2100 "",
2101 new long[] { }));
2102 EventDictionary.Add(0x0C200200, new ActionEventInfo(0x0C200200, "Character Specific 20",
2103 "",
2104 new string[] {"Undefined", "Undefined"},
2105 new string[] {"Undefined.", "Undefined"},
2106 "",
2107 new long[] {0, 3}));
2108 EventDictionary.Add(0x0C240100, new ActionEventInfo(0x0C240100, "Character Specific 24",
2109 "",
2110 new string[] {"Undefined"},
2111 new string[] {"Undefined"},
2112 "",
2113 new long[] {3}));
2114 EventDictionary.Add(0x0C260100, new ActionEventInfo(0x0C260100, "Character Specific 26",
2115 "",
2116 new string[] {"Undefined"},
2117 new string[] {"Undefined"},
2118 "",
2119 new long[] {3}));
2120 EventDictionary.Add(0x0C270000, new ActionEventInfo(0x0C270000, "Character Specific 27",
2121 "Undefined. Often appears within Switch statements.",
2122 new string[] { },
2123 new string[] { },
2124 "",
2125 new long[] { }));
2126 EventDictionary.Add(0x0C290000, new ActionEventInfo(0x0C290000, "Character Specific 29",
2127 "Undefined",
2128 new string[] { },
2129 new string[] { },
2130 "",
2131 new long[] { }));
2132 EventDictionary.Add(0x0C2B0000, new ActionEventInfo(0x0C2B0000, "Character Specific 2B",
2133 "Undefined",
2134 new string[] { },
2135 new string[] { },
2136 "",
2137 new long[] { }));
2138 EventDictionary.Add(0x0D000200, new ActionEventInfo(0x0D000200, "Concurrent Infinite Loop",
2139 "Runs a subroutine once per frame for the current action.",
2140 new string[] {"Thread ID?", "Offset"},
2141 new string[]
2142 {
2143 "Possibly the thread ID of the concurrent routine. Sometimes 4, sometimes 6, sometimes 9.",
2144 "The subroutine location that contains the events that you would like to loop infinitely."
2145 },
2146 "\\name() (Type \\value(0)) @\\value(1)",
2147 new long[] {0, 2}));
2148 EventDictionary.Add(0x0D010100, new ActionEventInfo(0x0D010100, "Terminate Concurrent Infinite Loop?",
2149 "Seems to stop the execution of a loop created with event 0D000200.",
2150 new string[] {"Thread ID?"},
2151 new string[]
2152 {"Possibly the thread ID of the concurrent routine. Sometimes 4, sometimes 6, sometimes 9."},
2153 "",
2154 new long[] {0}));
2155 EventDictionary.Add(0x0F030200, new ActionEventInfo(0x0F030200, "Link 03",
2156 "",
2157 new string[] {"Undefined", "Undefined"},
2158 new string[] {"Undefined.", "Undefined"},
2159 "",
2160 new long[] {0, 0}));
2161 EventDictionary.Add(0x11180200, new ActionEventInfo(0x11180200, "End Unlimited Screen Tint",
2162 "Terminates an unlimited screen tint with the specified ID.",
2163 new string[] {"ID", "Frames"},
2164 new string[]
2165 {"The ID of the screen tint to end.", "The amount of frames that the color will take to fade out."},
2166 "\\name(): ID=\\value(0), TransOutTime=\\value(1)",
2167 new long[] {0, 0}));
2168 EventDictionary.Add(0x12030100, new ActionEventInfo(0x12030100, "Basic Variable Increment",
2169 "Variable++",
2170 new string[] {"Variable"},
2171 new string[] {"The variable to increment."},
2172 "\\name(): \\value(0)++",
2173 new long[] {5}));
2174 EventDictionary.Add(0x12040100, new ActionEventInfo(0x12040100, "Basic Variable Decrement",
2175 "Variable--",
2176 new string[] {"Variable"},
2177 new string[] {"The variable to decrement."},
2178 "\\name(): \\value(0)--",
2179 new long[] {5}));
2180 EventDictionary.Add(0x120F0200, new ActionEventInfo(0x120F0200, "Float Variable Multiply",
2181 "Multiply a specified value with a float variable.",
2182 new string[] {"Value", "Variable"},
2183 new string[]
2184 {
2185 "The floating point value to multiply with the specified variable.",
2186 "The Float type variable to access."
2187 },
2188 "\\name(): \\value(1) *= \\unhex(\\value(0))",
2189 new long[] {1, 5}));
2190 EventDictionary.Add(0x17010000, new ActionEventInfo(0x17010000, "Physics 01",
2191 "Undefined",
2192 new string[] { },
2193 new string[] { },
2194 "",
2195 new long[] { }));
2196 EventDictionary.Add(0x17050000, new ActionEventInfo(0x17050000, "Physics 05",
2197 "Undefined",
2198 new string[] { },
2199 new string[] { },
2200 "",
2201 new long[] { }));
2202 EventDictionary.Add(0x19010000, new ActionEventInfo(0x19010000, "Module19 01",
2203 "Undefined",
2204 new string[] { },
2205 new string[] { },
2206 "",
2207 new long[] { }));
2208 EventDictionary.Add(0x1A030400, new ActionEventInfo(0x1A030400, "Set Camera Boundaries",
2209 "Changes the camera boundaries of your character. Does not reset the camera boundaries; rather, it adds to them. Reverts to normal when the animation ends.",
2210 new string[] {"Front Boundary", "Back Boundary", "Top Boundary", "Bottom Boundary"},
2211 new string[]
2212 {
2213 "The boundary in front of the character.", "The boundary behind the character.",
2214 "The boundary above the character.", "The boundary below the character."
2215 },
2216 "\\name(): \\value(0) x \\value(1) x \\value(2); size \\value(3)",
2217 new long[] {1, 1, 1, 1}));
2218 EventDictionary.Add(0x1A060100, new ActionEventInfo(0x1A060100, "Detach/Attach Camera (Close)",
2219 "Causes the camera to follow or stop following a character.",
2220 new string[] {"Detached/Attached", "Detached/Attached"},
2221 new string[] {"False = detached, True = attached.", "False = detached, True = attached."},
2222 "",
2223 new long[] {3, 3}));
2224 EventDictionary.Add(0x1A090000, new ActionEventInfo(0x1A090000, "Camera 09",
2225 "Undefined",
2226 new string[] { },
2227 new string[] { },
2228 "",
2229 new long[] { }));
2230 EventDictionary.Add(0x1A0A0100, new ActionEventInfo(0x1A0A0100, "Camera 0A",
2231 "",
2232 new string[] {"Undefined"},
2233 new string[] {"Undefined"},
2234 "",
2235 new long[] {0}));
2236 EventDictionary.Add(0x1A0B0000, new ActionEventInfo(0x1A0B0000, "Force Camera Control",
2237 "Appears to override any other settings in favor of the character's preference.",
2238 new string[] { },
2239 new string[] { },
2240 "",
2241 new long[] { }));
2242 EventDictionary.Add(0x1A0C0000, new ActionEventInfo(0x1A0C0000, "Camera 0C",
2243 "Undefined",
2244 new string[] { },
2245 new string[] { },
2246 "",
2247 new long[] { }));
2248 EventDictionary.Add(0x1F0A0000, new ActionEventInfo(0x1F0A0000, "Obliterate Held Item",
2249 "Deletes the item that the character is holding",
2250 new string[] { },
2251 new string[] { },
2252 "",
2253 new long[] { }));
2254 EventDictionary.Add(0x20000200, new ActionEventInfo(0x20000200, "Turn 00",
2255 "",
2256 new string[] {"Undefined", "Undefined"},
2257 new string[] {"Undefined.", "Undefined"},
2258 "",
2259 new long[] {5, 3}));
2260 EventDictionary.Add(0x64010000, new ActionEventInfo(0x64010000, "Cancel 01",
2261 "Undefined",
2262 new string[] { },
2263 new string[] { },
2264 "",
2265 new long[] { }));
2266 EventDictionary.Add(0x64020000, new ActionEventInfo(0x64020000, "Cancel 02",
2267 "Undefined",
2268 new string[] { },
2269 new string[] { },
2270 "",
2271 new long[] { }));
2272 EventDictionary.Add(0x14050100, new ActionEventInfo(0x14050100, "Aesthetic Wind 05",
2273 "",
2274 new string[] {"Undefined"},
2275 new string[] {"Undefined"},
2276 "",
2277 new long[] {3}));
2278 EventDictionary.Add(0x10070200, new ActionEventInfo(0x10070200, "Set Remote Article SubAction",
2279 "Does the same thing as Set Article Action but seems to work on articles that aren't attached to the character.",
2280 new string[] {"Article ID", "SubAction"},
2281 new string[]
2282 {"ID of the article to be affected.", "The subaction you would like the article to execute."},
2283 "",
2284 new long[] {0, 0}));
2285 EventDictionary.Add(0x111D0100, new ActionEventInfo(0x111D0100, "Effect ID",
2286 "Undefined.",
2287 new string[] { },
2288 new string[] { },
2289 "",
2290 new long[] { }));
2291 EventDictionary.Add(0x1F110100, new ActionEventInfo(0x1F110100, "Item 11",
2292 "Undefined.",
2293 new string[] { },
2294 new string[] { },
2295 "",
2296 new long[] { }));
2297 EventDictionary.Add(0x06130000, new ActionEventInfo(0x06130000, "Collisions 13",
2298 "Undefined.",
2299 new string[] { },
2300 new string[] { },
2301 "",
2302 new long[] { }));
2303 EventDictionary.Add(0x18030200, new ActionEventInfo(0x18030200, "Character Specific Samus",
2304 "Used in samus.",
2305 new string[] { },
2306 new string[] { },
2307 "",
2308 new long[] { }));
2309 EventDictionary.Add(0x1F0F0100, new ActionEventInfo(0x1F0F0100, "Morph Model Event",
2310 "If false model will appear else if true model will disappear.",
2311 new string[] { },
2312 new string[] { },
2313 "",
2314 new long[] { }));
2315 EventDictionary.Add(0x01020000, new ActionEventInfo(0x01020000, "Loop Rest 2 for Goto",
2316 "Often follows 01000000 (Loop Rest 1 for Goto)",
2317 new string[] { },
2318 new string[] { },
2319 "",
2320 new long[] { }));
2321 EventDictionary.Add(0x01000000, new ActionEventInfo(0x01000000, "Loop Rest 1 for Goto",
2322 "Appears to work like 01010000, except is used for loops created by 00090100 (Goto)",
2323 new string[] { },
2324 new string[] { },
2325 "",
2326 new long[] { }));
2327 EventDictionary.Add(0x0E0B0200, new ActionEventInfo(0x0E0B0200, "Graphic Model Specf",
2328 "Appears to control posture graphics.",
2329 new string[] { },
2330 new string[] { },
2331 "",
2332 new long[] { }));
2333 EventDictionary.Add(0x11150300, new ActionEventInfo(0x11150300, "Terminate Graphic Effect",
2334 "Terminate all instances of a lingering graphical effect.",
2335 new string[] {"Graphic", "Undefined", "Undefined"},
2336 new string[]
2337 {
2338 "The file from which to call from/The graphical effect to call. Value1 = File#, Value2 = Graphic ID",
2339 "Undefined.", "Undefined"
2340 },
2341 "\\name(): File=\\unhex(\\half1(\\value(0))), Graphic ID=\\unhex(\\half2(\\value(0))), Undefined1=\\value(1), Undefined2=\\value(2)",
2342 new long[] {0, 3, 3}));
2343 EventDictionary.Add(0x18010300, new ActionEventInfo(0x18010300, "Character Spef GFX 02",
2344 "Appears to control posture graphics.",
2345 new string[] { },
2346 new string[] { },
2347 "",
2348 new long[] { }));
2349 EventDictionary.Add(0x17000000, new ActionEventInfo(0x17000000, "Physics Normalize",
2350 "Returns to normal physics.",
2351 new string[] { },
2352 new string[] { },
2353 "",
2354 new long[] { }));
2355 EventDictionary.Add(0x10080200, new ActionEventInfo(0x10080200, "Set Remote Article SubAction",
2356 "Does the same thing as Set Article Action but seems to work on articles that aren't attached to the character. (Used on Snake's downB)",
2357 new string[] {"Article ID", "SubAction"},
2358 new string[]
2359 {"ID of the article to be affected.", "The subaction you would like the article to execute."},
2360 "",
2361 new long[] {0, 0}));
2362 EventDictionary.Add(0x10020100, new ActionEventInfo(0x10020100, "ONLY Article Event",
2363 "Article Animation.",
2364 new string[] { },
2365 new string[] { },
2366 "",
2367 new long[] { }));
2368 EventDictionary.Add(0x060A0900, new ActionEventInfo(0x060A0900, "Catch Collision 2",
2369 "Generate a grabbing collision bubble with the specified parameters",
2370 new string[]
2371 {"ID", "Bone", "Size", "X offset", "Y Offset", "Z Offset", "Action", "Air/Ground", "Unknown"},
2372 new string[]
2373 {
2374 "ID of catch collision.", "The bone the grab is attached to.",
2375 "The size of the catch collision bubble.", "Transition relative to the currently attached bone.",
2376 "Transition relative to the currently attached bone.",
2377 "Transition relative to the currently attached bone.",
2378 "The Action ID that the foe executes if successfully grabbed.",
2379 "0 = grabs nothing, 1 = grabs grounded only, 2 = grabs aerial only, 3 = grabs aerial and grounded.",
2380 "???"
2381 },
2382 "",
2383 new long[] {0, 0, 1, 1, 1, 1, 0, 0, 0}));
2384 EventDictionary.Add(0x00060000, new ActionEventInfo(0x00060000, "Loop Break?",
2385 "Breaks out of the current loop?",
2386 new string[] { },
2387 new string[] { },
2388 "",
2389 new long[] { }));
2390 EventDictionary.Add(0x000A0300, new ActionEventInfo(0x000A0300, "If Unknown",
2391 "Start an If block until an Else Or an EndIf is reached.",
2392 new string[] {"Requirement", "Variable", "Unknown"},
2393 new string[]
2394 {
2395 "The form of requirement used in evaluation of the event.",
2396 "The variable applied to the requirement.", "Undefined"
2397 },
2398 "If \\value(0): \\value(1); Unknown=\\value(2)",
2399 new long[] {6, 0, 0}));
2400 EventDictionary.Add(0x000D0100, new ActionEventInfo(0x000D0100, "Else If",
2401 "Insert an Else If block inside of an If block.",
2402 new string[] {"Requirement"},
2403 new string[] {"The form of requirement used in evaluation of the event."},
2404 "Else If \\value(0):",
2405 new long[] {6}));
2406 EventDictionary.Add(0x02010400, new ActionEventInfo(0x02010400, "Change Action",
2407 "Change the current action upon the specified requirement being met. (the requirement does not have to be met at the time this ID is executed - it can be used anytime after execution.)",
2408 new string[] {"Action", "Requirement", "Variable", "Unknown"},
2409 new string[]
2410 {
2411 "The id of the action that the character will execute.",
2412 "The form of requirement used in evaluation of the event.",
2413 "The variable applied to the requirement.",
2414 "Used as a specification for the requirement when necessary (for example, if the requirement is \"button pressed\", this denotes which button)."
2415 },
2416 "\\name(): \\value(0): \\value(1); Unknown=\\value(2)",
2417 new long[] {0, 6, 5, 0}));
2418 EventDictionary.Add(0x02020300, new ActionEventInfo(0x02020300, "Unknown",
2419 "Used in the Primid file as alternatives to calling an AI procedure.",
2420 new string[] {"Undefined", "Undefined", "Undefined"},
2421 new string[]
2422 {
2423 "In the Primid file, seems to always equal 200.",
2424 "An action? (equals 7 when current action is not 7)",
2425 "In the Primid file, seems to always be Article Exists (15)."
2426 },
2427 "",
2428 new long[] {0, 0, 6}));
2429 EventDictionary.Add(0x02040300, new ActionEventInfo(0x02040300,
2430 "Additional Change Action Requirement Value",
2431 "Add an additional requirement to the preceeding Change Action statement.",
2432 new string[] {"Requirement", "Variable", "Undefined"},
2433 new string[]
2434 {
2435 "The form of requirement used in evaluation of the event.",
2436 "The variable applied to the requirement.", "Undefined"
2437 },
2438 "",
2439 new long[] {6, 5, 0}));
2440 EventDictionary.Add(0x020E0000, new ActionEventInfo(0x020E0000, "Unknown",
2441 "Used when the Blast Box detonates from a flame attack just before the change to the explosion action. Could be some sort of \"halt current action immediately\" or \"disable all possible statusID-based action changes\".",
2442 new string[] { },
2443 new string[] { },
2444 "",
2445 new long[] { }));
2446 EventDictionary.Add(0x04090100, new ActionEventInfo(0x04090100, "Unknown",
2447 "Used a few times in the Primid file.",
2448 new string[] {"Undefined"},
2449 new string[] {"Undefined"},
2450 "",
2451 new long[] {0}));
2452 EventDictionary.Add(0x04100200, new ActionEventInfo(0x04100200, "Subactions 10",
2453 "",
2454 new string[] {"Undefined", "Undefined"},
2455 new string[] {"Undefined.", "Undefined"},
2456 "",
2457 new long[] {0, 0}));
2458 EventDictionary.Add(0x05050100, new ActionEventInfo(0x05050100, "Posture 05",
2459 "",
2460 new string[] {"Undefined"},
2461 new string[] {"Undefined"},
2462 "",
2463 new long[] {1}));
2464 EventDictionary.Add(0x06140200, new ActionEventInfo(0x06140200, "?",
2465 "Used to increase the damage of the Giant Punch when not fully charged.",
2466 new string[] {"Id", "Source"},
2467 new string[]
2468 {
2469 "The ID of the hitbox to change the damage of.",
2470 "The variable to read to find out how much to change the damage."
2471 },
2472 "",
2473 new long[] {0, 5}));
2474 EventDictionary.Add(0x06192F00, new ActionEventInfo(0x06192F00, "SSE Hitbox",
2475 "The type of hitboxes used for enemies in the Subspace Emissary.",
2476 new string[]
2477 {
2478 "ID", "Undefined", "Bone", "Damage?", "Damage ramp?", "Angle", "Knockback growth?",
2479 "Knockback growth ramp?", "Weight-based knockback?", "WBK ramp?", "Base knockback?",
2480 "Base knockback ramp?", "Size?", "Size ramp?", "X Pos?", "Y Pos?", "Z Pos?", "Effect",
2481 "Trip chance?", "Freeze frames multiplier?", "SDI multiplier?", "Undefined", "Undefined",
2482 "Undefined", "Undefined", "Undefined", "Undefined", "Undefined", "Undefined", "Undefined",
2483 "Undefined", "Undefined", "Undefined", "Undefined", "Undefined", "Undefined", "Rehit rate?",
2484 "Undefined", "Undefined", "Undefined", "Undefined", "Undefined", "Undefined", "Undefined",
2485 "Undefined", "Undefined", "Difficulty level?"
2486 },
2487 new string[]
2488 {
2489 "Undefined.", "Undefined.", "Undefined.", "Undefined.", "Undefined.", "Undefined.", "Undefined.",
2490 "Undefined.", "Undefined.", "Undefined.", "Undefined.", "Undefined.", "Undefined.", "Undefined.",
2491 "Undefined.", "Undefined.", "Undefined.", "i.e. Electric (3), Flame (5), etc", "Undefined.",
2492 "Undefined.", "Undefined.", "Undefined.", "Undefined.", "Undefined.", "Undefined.",
2493 "Aside from effect, the only value to vary between Jyk types (for stage 040201 anyway).",
2494 "Undefined.", "Undefined.", "Undefined.", "Undefined.", "Undefined.", "Undefined.", "Undefined.",
2495 "Undefined.", "Undefined.", "Undefined.", "Undefined.", "Undefined.", "Undefined.", "Undefined.",
2496 "Undefined.", "Undefined.", "Undefined.", "Undefined.", "Undefined.", "Undefined.", "Undefined."
2497 },
2498 "",
2499 new long[]
2500 {
2501 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 3, 3, 0, 0, 0, 0, 3, 0, 0, 3, 0, 3,
2502 3, 3, 3, 0, 3, 3, 0, 3, 3, 3, 3, 3, 0, 5
2503 }));
2504 EventDictionary.Add(0x06240F00, new ActionEventInfo(0x06240F00, "Unknown",
2505 "Used a single time in the Primid file.",
2506 new string[]
2507 {
2508 "Undefined", "Undefined", "Undefined", "Size?", "Undefined", "Undefined", "Undefined", "Undefined",
2509 "Undefined", "Undefined", "Undefined", "Undefined", "Undefined", "Undefined", "Undefined"
2510 },
2511 new string[]
2512 {
2513 "Undefined.", "Undefined.", "Undefined.", "Undefined.", "Undefined.", "Undefined.", "Undefined.",
2514 "Undefined.", "Undefined.", "Undefined.", "Undefined.", "Undefined.", "Undefined.", "Undefined.",
2515 "Undefined."
2516 },
2517 "",
2518 new long[] {0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1}));
2519 EventDictionary.Add(0x0E040100, new ActionEventInfo(0x0E040100, "Disable Horizontal Gravity",
2520 "When set to 1, horizontal speed and decay rate are reset back to 0.",
2521 new string[] { },
2522 new string[] { },
2523 "\\name(): \\unhex(\\value(0))",
2524 new long[] { }));
2525 EventDictionary.Add(0x0E050100, new ActionEventInfo(0x0E040100, "Enable Horizontal Gravity?",
2526 "Undefined.",
2527 new string[] { },
2528 new string[] { },
2529 "\\name(): \\unhex(\\value(0))",
2530 new long[] { }));
2531 EventDictionary.Add(0x0E080200, new ActionEventInfo(0x0E080200, "Set Momentum",
2532 "Controls the movement velocity of the object.",
2533 new string[] {"Horizontal Velocity", "Vertical Velocity"},
2534 new string[] {"The speed of the object moving left/right.", "The speed of the object moving up/down."},
2535 "",
2536 new long[] {1, 1}));
2537 EventDictionary.Add(0x10010200, new ActionEventInfo(0x10010200, "Set Ex-Anchored Article Action",
2538 "Does the same thing as Set Article Action and Set Article Action 2 but seems to work on articles that are only initially attached to the character. (Used on Lucario's Aura Sphere)",
2539 new string[] {"Article ID", "Action"},
2540 new string[] {"ID of the article to be affected.", "The action you would like the article to execute."},
2541 "",
2542 new long[] {0, 0}));
2543 EventDictionary.Add(0x0000100A, new ActionEventInfo(0x0000100A, "Undefined",
2544 "Generate a prop effect with the specified parameters.",
2545 new string[] { },
2546 new string[] { },
2547 "",
2548 new long[] { }));
2549 EventDictionary.Add(0x10130100, new ActionEventInfo(0x10130100, "Link Character and Article?",
2550 "Seems to be used whenever a detached article needs to change its action...",
2551 new string[] {"Article ID"},
2552 new string[] {"ID of the article to be affected."},
2553 "",
2554 new long[] {0}));
2555 EventDictionary.Add(0x110D0100, new ActionEventInfo(0x110D0100, "Unknown",
2556 "",
2557 new string[] {"Undefined"},
2558 new string[] {"Undefined"},
2559 "",
2560 new long[] {0}));
2561 EventDictionary.Add(0x11170600, new ActionEventInfo(0x11170600, "Unlimited Screen Tint",
2562 "Tint the screen to the specified color until terminated by 11180200 (End Screen Tint).",
2563 new string[] {"ID", "Transition Time", "Red", "Green", "Blue", "Alpha"},
2564 new string[]
2565 {
2566 "The ID of the screen tint.",
2567 "The time taken to transition from its current color to the specified color.", "The red value.",
2568 "The green value.", "The blue value.", "The transperency."
2569 },
2570 "\\name(): ID=\\value(0), TransitionTime=\\value(1), RGBA=(\\value(2), \\value(3), \\value(4), \\value(5))",
2571 new long[] {0, 0, 0, 0, 0, 0}));
2572 EventDictionary.Add(0x12100200, new ActionEventInfo(0x12100200, "Float Variable Divide",
2573 "Divide a specified value with a float variable.",
2574 new string[] {"Value", "Variable"},
2575 new string[]
2576 {
2577 "The floating point value to divide with the specified variable.",
2578 "The Float type variable to access."
2579 },
2580 "\\name(): \\value(1) /= \\unhex(\\value(0))",
2581 new long[] {1, 5}));
2582 EventDictionary.Add(0x15000000, new ActionEventInfo(0x15000000, "Unknown",
2583 "Used in the Goomba file in places where Req[0x11] is true.",
2584 new string[] { },
2585 new string[] { },
2586 "",
2587 new long[] { }));
2588 EventDictionary.Add(0x1B020100, new ActionEventInfo(0x1B020100, "Procedure Call?",
2589 "",
2590 new string[] {"Target Procedure"},
2591 new string[] {"Undefined"},
2592 "",
2593 new long[] {4}));
2594 EventDictionary.Add(0x1E010100, new ActionEventInfo(0x1E010100, "Set Damage Immunity?",
2595 "Used at the start of Withdraw; might have something to do with Squirtle's immunity to damage during the move.",
2596 new string[] {"Undefined"},
2597 new string[] {"Undefined"},
2598 "",
2599 new long[] {3}));
2600 EventDictionary.Add(0x1F000400, new ActionEventInfo(0x1F000400, "Pickup Item",
2601 "Cause the character to receive the closest item in range.",
2602 new string[] {"Undefined", "Undefined", "Undefined", "Undefined"},
2603 new string[] {"Undefined.", "Undefined.", "Undefined.", "Undefined"},
2604 "",
2605 new long[] {0, 0, 0, 0}));
2606 EventDictionary.Add(0x22000100, new ActionEventInfo(0x22000100, "Set Team?",
2607 "Used with a parameter of -1 for a few explosives just before they go off (possibly to remove team allegiance and therefore hit the user).",
2608 new string[] {"Undefined"},
2609 new string[] {"Undefined"},
2610 "",
2611 new long[] {0}));
2612 EventDictionary.Add(0x22020100, new ActionEventInfo(0x22020100, "Unknown",
2613 "",
2614 new string[] {"Undefined"},
2615 new string[] {"Undefined"},
2616 "",
2617 new long[] {0}));
2618 EventDictionary.Add(0x65000000, new ActionEventInfo(0x65000000, "Item Self-Delete?",
2619 "Undefined",
2620 new string[] { },
2621 new string[] { },
2622 "",
2623 new long[] { }));
2624 EventDictionary.Add(0x65030200, new ActionEventInfo(0x65030200, "Unknown",
2625 "Something with rotation on item spawning.",
2626 new string[] {"Undefined", "Undefined"},
2627 new string[] {"Undefined.", "Undefined"},
2628 "",
2629 new long[] {1, 1}));
2630 EventDictionary.Add(0x65040100, new ActionEventInfo(0x65040100, "Deletion Timer?",
2631 "Sets how many frames an item has to live? (Also used in enemy files.)",
2632 new string[] {"Lifetime (frames)?"},
2633 new string[] {"Undefined"},
2634 "",
2635 new long[] {0}));
2636 EventDictionary.Add(0x65050100, new ActionEventInfo(0x65050100, "Unknown",
2637 "Unknown. Appears to be another timer.",
2638 new string[] {"Undefined"},
2639 new string[] {"Undefined"},
2640 "",
2641 new long[] {0}));
2642 EventDictionary.Add(0x65070200, new ActionEventInfo(0x65070200, "Unknown",
2643 "Unknown. Appears to affect float variables. Used twice in the Jyk file.",
2644 new string[] {"Undefined", "Undefined"},
2645 new string[] {"Undefined.", "Undefined"},
2646 "",
2647 new long[] {5, 5}));
2648 EventDictionary.Add(0x65090200, new ActionEventInfo(0x65090200, "Unknown",
2649 "Unknown. Appears to affect float variables.",
2650 new string[] {"Undefined", "Undefined"},
2651 new string[] {"Undefined.", "Undefined"},
2652 "",
2653 new long[] {5, 5}));
2654 EventDictionary.Add(0x650F0200, new ActionEventInfo(0x650F0200, "Unknown",
2655 "",
2656 new string[] {"Undefined", "Undefined"},
2657 new string[] {"Undefined.", "Undefined"},
2658 "",
2659 new long[] {5, 0}));
2660 EventDictionary.Add(0x65130900, new ActionEventInfo(0x65130900, "Generate Ratio-Based Random Number",
2661 "Generates a random number from 0 to [number of arguments-2], with the arguments starting at 1 being based on ratios.",
2662 new string[]
2663 {
2664 "Result Variable", "Ratio 1", "Ratio 2", "Ratio 3", "Ratio 4", "Ratio 5", "Ratio 6", "Ratio 7",
2665 "Ratio 8"
2666 },
2667 new string[]
2668 {
2669 "The result of the function is put in this variable.", "Undefined.", "Undefined.", "Undefined.",
2670 "Undefined.", "Undefined.", "Undefined.", "Undefined.", "Undefined"
2671 },
2672 "",
2673 new long[] {5, 1, 1, 1, 1, 1, 1, 1, 1}));
2674 EventDictionary.Add(0x65170200, new ActionEventInfo(0x65170200, "Unknown",
2675 "Has something to do with sounds?",
2676 new string[] {"Undefined", "Undefined"},
2677 new string[] {"Undefined.", "Undefined"},
2678 "",
2679 new long[] {0, 0}));
2680 EventDictionary.Add(0x651B0100, new ActionEventInfo(0x651B0100, "Activate slow motion?",
2681 "Used in the Dragoon.",
2682 new string[] {"Duration?"},
2683 new string[] {"Undefined"},
2684 "",
2685 new long[] {0}));
2686 EventDictionary.Add(0x651C0000, new ActionEventInfo(0x651C0000, "Deactivate slow motion?",
2687 "Used in the Dragoon.",
2688 new string[] { },
2689 new string[] { },
2690 "",
2691 new long[] { }));
2692 EventDictionary.Add(0x651F0100, new ActionEventInfo(0x651F0100, "Unknown",
2693 "Unknown. Used in the bumper item at least.",
2694 new string[] {"Undefined"},
2695 new string[] {"Undefined"},
2696 "",
2697 new long[] {0}));
2698 EventDictionary.Add(0x652C0000, new ActionEventInfo(0x652C0000, "Unknown",
2699 "Unknown. In charizard's sideB subaction. If you nop it, he will not make rock shards or play the rock break sfx. wtf.",
2700 new string[] { },
2701 new string[] { },
2702 "",
2703 new long[] { }));
2704 EventDictionary.Add(0x66000200, new ActionEventInfo(0x66000200, "Unknown",
2705 "",
2706 new string[] {"Undefined", "Undefined"},
2707 new string[] {"Undefined.", "Undefined"},
2708 "",
2709 new long[] {0, 0}));
2710 EventDictionary.Add(0x66000400, new ActionEventInfo(0x66000400, "Unknown",
2711 "Unknown. Used five times in the Jyk file with the values increasing somewhat constantly for each one (difficulty-related?).",
2712 new string[] {"Undefined", "Undefined", "Undefined", "Undefined"},
2713 new string[] {"Undefined.", "Undefined.", "Undefined.", "Undefined"},
2714 "",
2715 new long[] {0, 0, 1, 0}));
2716 EventDictionary.Add(0x66060100, new ActionEventInfo(0x66060100, "Unknown",
2717 "Unknown. Used in action C of bumper at least.",
2718 new string[] {"Undefined"},
2719 new string[] {"Undefined"},
2720 "",
2721 new long[] {0}));
2722 EventDictionary.Add(0x66070100, new ActionEventInfo(0x66070100, "Unknown",
2723 "",
2724 new string[] {"Undefined"},
2725 new string[] {"Undefined"},
2726 "",
2727 new long[] {0}));
2728 EventDictionary.Add(0x66090200, new ActionEventInfo(0x66090200, "Unknown",
2729 "",
2730 new string[] {"Undefined", "Undefined"},
2731 new string[] {"Undefined.", "Undefined"},
2732 "",
2733 new long[] {0, 0}));
2734 EventDictionary.Add(0x660A0200, new ActionEventInfo(0x660A0200, "Unknown",
2735 "",
2736 new string[] {"Undefined", "Undefined"},
2737 new string[] {"Undefined.", "Undefined"},
2738 "",
2739 new long[] {0, 0}));
2740 EventDictionary.Add(0x660B0200, new ActionEventInfo(0x660B0200, "Unknown",
2741 "",
2742 new string[] {"Undefined", "Undefined"},
2743 new string[] {"Undefined.", "Undefined"},
2744 "",
2745 new long[] {0, 0}));
2746 EventDictionary.Add(0x660B0300, new ActionEventInfo(0x660B0300, "Unknown",
2747 "Unknown. Something with spawn rotation.",
2748 new string[] {"Undefined", "Undefined", "Undefined"},
2749 new string[] {"Undefined.", "Undefined.", "Undefined"},
2750 "",
2751 new long[] {1, 1, 1}));
2752 EventDictionary.Add(0x69000100, new ActionEventInfo(0x69000100, "Unknown",
2753 "Only known to be used in cases where \"Req[0x12], 1, \" is true.",
2754 new string[] {"Undefined"},
2755 new string[] {"Undefined"},
2756 "",
2757 new long[] {5}));
2758 EventDictionary.Add(0x6A000100, new ActionEventInfo(0x6A000100, "Unknown",
2759 "",
2760 new string[] {"Undefined"},
2761 new string[] {"Undefined"},
2762 "",
2763 new long[] {0}));
2764 EventDictionary.Add(0x6A000200, new ActionEventInfo(0x6A000200, "Unknown",
2765 "",
2766 new string[] {"Undefined", "Undefined"},
2767 new string[] {"Undefined.", "Undefined"},
2768 "",
2769 new long[] {0, 0}));
2770 EventDictionary.Add(0x6A000400, new ActionEventInfo(0x6A000400, "Unknown",
2771 "",
2772 new string[] {"Undefined", "Undefined", "Undefined", "Undefined"},
2773 new string[] {"Undefined.", "Undefined.", "Undefined.", "Undefined"},
2774 "",
2775 new long[] {0, 0, 0, 0}));
2776 EventDictionary.Add(0x6A010100, new ActionEventInfo(0x6A010100, "Unknown",
2777 "",
2778 new string[] {"Undefined"},
2779 new string[] {"Undefined"},
2780 "",
2781 new long[] {0}));
2782 EventDictionary.Add(0x6A020000, new ActionEventInfo(0x6A020000, "Unknown",
2783 "Undefined",
2784 new string[] { },
2785 new string[] { },
2786 "",
2787 new long[] { }));
2788 EventDictionary.Add(0x6A030000, new ActionEventInfo(0x6A030000, "Unknown",
2789 "Undefined",
2790 new string[] { },
2791 new string[] { },
2792 "",
2793 new long[] { }));
2794 EventDictionary.Add(0x6B020300, new ActionEventInfo(0x6B020300, "Unknown",
2795 "",
2796 new string[] {"Undefined", "Undefined", "Undefined"},
2797 new string[] {"Undefined.", "Undefined.", "Undefined."},
2798 "",
2799 new long[] {3, 5, 5}));
2800 EventDictionary.Add(0x6E000200, new ActionEventInfo(0x6E000200, "Unknown",
2801 "",
2802 new string[] {"Undefined", "Undefined"},
2803 new string[] {"Undefined.", "Undefined"},
2804 "",
2805 new long[] {0, 0}));
2806 EventDictionary.Add(0x000A0500, new ActionEventInfo(0x000A0500, "Unknown",
2807 "",
2808 new string[] { },
2809 new string[] { },
2810 "If \\value(0): \\value(1); Unknown=\\value(2), \\value(3), & \\value(4)",
2811 new long[] { }));
2812 EventDictionary.Add(0x000B0500, new ActionEventInfo(0x000B0500, "Unknown",
2813 "",
2814 new string[] { },
2815 new string[] { },
2816 "Or \\value(0): \\value(1); Unknown=\\value(2), \\value(3), & \\value(4)",
2817 new long[] { }));
2818 EventDictionary.Add(0x000D0500, new ActionEventInfo(0x000D0500, "Unknown",
2819 "",
2820 new string[] { },
2821 new string[] { },
2822 "Else If \\value(0): \\value(1); Unknown=\\value(2), \\value(3), & \\value(4)",
2823 new long[] { }));
2824 EventDictionary.Add(0x02050600, new ActionEventInfo(02050600, "Actions 05 Compare",
2825 "Undefined.",
2826 new string[] {"Interrupt ID?", "Status ID?", "Requirement", "Variable", "Comparison", "Variable"},
2827 new string[]
2828 {
2829 "Undefined.", "Undefined.", "Undefined.", "First variable to compare.",
2830 "From 0 to 5: <, ≤, =, ≠, ≥, >.", "Second variable to compare."
2831 },
2832 "\\name(): Interrupt=\\unhex(\\value(0)), Status ID=\\unhex(\\value(1)), Requirement=\\value(2): \\value(3) \\cmpsign(\\value(4)) \\value(5)",
2833 new long[] { }));
2834 EventDictionary.Add(0x02050400, new ActionEventInfo(02050400, "Actions 05 Value",
2835 "Undefined.",
2836 new string[] {"Interrupt ID?", "Status ID?", "Requirement", "Value"},
2837 new string[] {"Undefined.", "Undefined.", "Undefined.", "Value applied to the requirement.",},
2838 "\\name(): Interrupt=\\unhex(\\value(0)), Status ID=\\unhex(\\value(1)), Requirement=\\value(2): \\value(3)",
2839 new long[] { }));
2840
2841 //Now add on to events with user inputted data
2842
2843 StreamReader sr = null;
2844 long idNumber = 0;
2845 string loc, id;
2846
2847 //Read known events and their descriptions.
2848 loc = Application.StartupPath + "/MovesetData/Events.txt";
2849 if (File.Exists(loc))
2850 {
2851 using (sr = new StreamReader(loc))
2852 {
2853 for (int i = 0; !sr.EndOfStream; i++)
2854 {
2855 id = sr.ReadLine();
2856 idNumber = Convert.ToInt32(id, 16);
2857
2858 if (!EventDictionary.Keys.Contains(idNumber))
2859 {
2860 EventDictionary.Add(idNumber, new ActionEventInfo());
2861 }
2862
2863 EventDictionary[idNumber].idNumber = idNumber;
2864 EventDictionary[idNumber]._name = sr.ReadLine();
2865 EventDictionary[idNumber]._description = sr.ReadLine();
2866 EventDictionary[idNumber].SetDfltParameters(sr.ReadLine());
2867 sr.ReadLine();
2868 }
2869 }
2870 }
2871
2872 //Read known parameters and their descriptions.
2873 loc = Application.StartupPath + "/MovesetData/Parameters.txt";
2874 if (File.Exists(loc))
2875 {
2876 using (sr = new StreamReader(loc))
2877 {
2878 for (int i = 0; !sr.EndOfStream; i++)
2879 {
2880 id = sr.ReadLine();
2881 idNumber = Convert.ToInt32(id, 16);
2882
2883 if (!EventDictionary.Keys.Contains(idNumber))
2884 {
2885 EventDictionary.Add(idNumber, new ActionEventInfo());
2886 }
2887
2888 for (int i2 = 0;; i2++)
2889 {
2890 string name = sr.ReadLine();
2891 if (name == null)
2892 {
2893 name = "";
2894 }
2895
2896 if (name != "")
2897 {
2898 Array.Resize(ref EventDictionary[idNumber].Params, i2 + 1);
2899 Array.Resize(ref EventDictionary[idNumber].pDescs, i2 + 1);
2900 EventDictionary[idNumber].Params[i2] = name;
2901 EventDictionary[idNumber].pDescs[i2] = sr.ReadLine();
2902 }
2903 else
2904 {
2905 break;
2906 }
2907 }
2908 }
2909 }
2910 }
2911
2912 //Read the list containing the syntax to display each event with.
2913 loc = Application.StartupPath + "/MovesetData/EventSyntax.txt";
2914 if (File.Exists(loc))
2915 {
2916 using (sr = new StreamReader(loc))
2917 {
2918 for (int i = 0; !sr.EndOfStream; i++)
2919 {
2920 string syntax = "";
2921 id = sr.ReadLine();
2922 try
2923 {
2924 idNumber = Convert.ToInt32(id, 16);
2925 }
2926 catch
2927 {
2928 syntax = id;
2929 goto AddSyntax;
2930 } //Most likely syntax where the id should be
2931
2932 //Clear the existing syntax
2933 EventDictionary[idNumber]._syntax = "";
2934
2935 syntax = sr.ReadLine();
2936
2937 if (!EventDictionary.Keys.Contains(idNumber))
2938 {
2939 EventDictionary.Add(idNumber, new ActionEventInfo());
2940 }
2941
2942 EventDictionary[idNumber].idNumber = idNumber;
2943
2944 AddSyntax:
2945 while (syntax != "" && syntax != null)
2946 {
2947 EventDictionary[idNumber]._syntax += syntax;
2948 syntax = sr.ReadLine();
2949 }
2950 }
2951 }
2952 }
2953
2954 Dictionary<long, List<int>> list = new Dictionary<long, List<int>>();
2955 List<string> enums = new List<string>();
2956 loc = Application.StartupPath + "/MovesetData/Enums.txt";
2957 if (File.Exists(loc))
2958 {
2959 using (sr = new StreamReader(loc))
2960 {
2961 while (!sr.EndOfStream)
2962 {
2963 list = new Dictionary<long, List<int>>();
2964 enums = new List<string>();
2965 while (!string.IsNullOrEmpty(id = sr.ReadLine()))
2966 {
2967 idNumber = Convert.ToInt32(id, 16);
2968
2969 if (!list.ContainsKey(idNumber))
2970 {
2971 list.Add(idNumber, new List<int>());
2972 }
2973
2974 string p = null;
2975 while (!string.IsNullOrEmpty(p = sr.ReadLine()))
2976 {
2977 list[idNumber].Add(int.Parse(p));
2978 }
2979 }
2980
2981 string val = null;
2982 while (!string.IsNullOrEmpty(val = sr.ReadLine()))
2983 {
2984 enums.Add(val);
2985 }
2986
2987 foreach (long ev in list.Keys)
2988 {
2989 if (EventDictionary.ContainsKey(ev))
2990 {
2991 EventDictionary[ev].Enums = new Dictionary<int, List<string>>();
2992 foreach (int p in list[ev])
2993 {
2994 EventDictionary[ev].Enums.Add(p, enums);
2995 }
2996 }
2997 }
2998 }
2999 }
3000 }
3001
3002 //CreateEventDictionary();
3003 }
Dictionary< string, SectionParamInfo > Params
Definition: MoveDefNode.cs:3443

◆ LoadOtherData()

void BrawlLib.SSBB.ResourceNodes.MoveDefNode.LoadOtherData ( )
inline
3510 {
3511 StreamReader sr = null;
3512 string loc;
3513
3514 //Read the list of Event Requirements.
3515 loc = Application.StartupPath + "/MovesetData/Requirements.txt";
3516 if (File.Exists(loc))
3517 {
3518 using (sr = new StreamReader(loc))
3519 {
3520 for (int i = 0; !sr.EndOfStream; i++)
3521 {
3522 Array.Resize(ref iRequirements, i + 1);
3523 iRequirements[i] = sr.ReadLine();
3524 }
3525 }
3526 }
3527 else
3528 {
3529 iRequirements = new string[124];
3530 iRequirements[0] = "Character Exists?";
3531 iRequirements[1] = "Animation End";
3532 iRequirements[2] = "Animation has looped?";
3533 iRequirements[3] = "On Ground";
3534 iRequirements[4] = "In Air";
3535 iRequirements[5] = "Holding a Ledge";
3536 iRequirements[6] = "On a Passable Floor";
3537 iRequirements[7] = "Compare";
3538 iRequirements[8] = "Bit is Set";
3539 iRequirements[9] = "Facing Right";
3540 iRequirements[10] = "Facing Left";
3541 iRequirements[11] = "Hitbox Connects";
3542 iRequirements[12] = "Touching a Floor, Wall, or Ceiling";
3543 iRequirements[13] = "Is Throwing Someone";
3544 iRequirements[14] = "0E";
3545 iRequirements[15] = "Button Tap?";
3546 iRequirements[16] = "10";
3547 iRequirements[17] = "11";
3548 iRequirements[18] = "12";
3549 iRequirements[19] = "13";
3550 iRequirements[20] = "Entering Hitlag; Is in Hitlag";
3551 iRequirements[21] = "Article Exists";
3552 iRequirements[22] = "Is Overstepping an Edge";
3553 iRequirements[23] = "Has a Floor Below the Player";
3554 iRequirements[24] = "18";
3555 iRequirements[25] = "19";
3556 iRequirements[26] = "1A";
3557 iRequirements[27] = "Change in Air/Ground State";
3558 iRequirements[28] = "Article Available";
3559 iRequirements[29] = "1D";
3560 iRequirements[30] = "1E";
3561 iRequirements[31] = "Holding Item";
3562 iRequirements[32] = "Holding Item of Type";
3563 iRequirements[33] = "Light Item is in Grabbing Range";
3564 iRequirements[34] = "Heavy Item is in Grabbing Range";
3565 iRequirements[35] = "Item of Type(?) is in Grabbing Range";
3566 iRequirements[36] = "Turning with Item";
3567 iRequirements[37] = "25";
3568 iRequirements[38] = "26";
3569 iRequirements[39] = "27";
3570 iRequirements[40] = "28";
3571 iRequirements[41] = "29";
3572 iRequirements[42] = "Is in Water";
3573 iRequirements[43] = "Roll A Die";
3574 iRequirements[44] = "Subaction Exists";
3575 iRequirements[45] = "2D";
3576 iRequirements[46] = "Button Mashing? Status Expired (sleep/bury/freeze)?";
3577 iRequirements[47] = "Is Not in Damaging Magnifier";
3578 iRequirements[48] = "Button Press";
3579 iRequirements[49] = "Button Release";
3580 iRequirements[50] = "Button Pressed";
3581 iRequirements[51] = "Button Not Pressed";
3582 iRequirements[52] = "Stick Direction Pressed?";
3583 iRequirements[53] = "Stick Direction Not Pressed?";
3584 iRequirements[54] = "36";
3585 iRequirements[55] = "Is Being Thrown by Someone (1)";
3586 iRequirements[56] = "Is Being Thrown by Someone (2)";
3587 iRequirements[57] = "Hasn't Tethered 3 Times";
3588 iRequirements[58] = "Has Passed Over an Edge (Forward)";
3589 iRequirements[59] = "Has Passed Over an Edge (Backward)";
3590 iRequirements[60] = "Is Holding Someone in a Grab";
3591 iRequirements[61] = "Hitbox has Connected";
3592 iRequirements[62] = "3E";
3593 iRequirements[63] = "3F";
3594 iRequirements[64] = "40";
3595 iRequirements[65] = "41";
3596 iRequirements[66] = "42";
3597 iRequirements[67] = "43";
3598 iRequirements[68] = "44";
3599 iRequirements[69] = "45";
3600 iRequirements[70] = "46";
3601 iRequirements[71] = "Pick up an Item";
3602 iRequirements[72] = "48";
3603 iRequirements[73] = "49";
3604 iRequirements[74] = "4A";
3605 iRequirements[75] = "4B";
3606 iRequirements[76] = "Has Been Hit by Cape Effect";
3607 iRequirements[77] = "4D";
3608 iRequirements[78] = "4E";
3609 iRequirements[79] = "4F";
3610 iRequirements[80] = "50";
3611 iRequirements[81] = "51";
3612 iRequirements[82] = "52";
3613 iRequirements[83] = "53";
3614 iRequirements[84] = "54";
3615 iRequirements[85] = "55";
3616 iRequirements[86] = "56";
3617 iRequirements[87] = "57";
3618 iRequirements[88] = "58";
3619 iRequirements[89] = "59";
3620 iRequirements[90] = "5A";
3621 iRequirements[91] = "5B";
3622 iRequirements[92] = "5C";
3623 iRequirements[93] = "5D";
3624 iRequirements[94] = "5E";
3625 iRequirements[95] = "5F";
3626 iRequirements[96] = "60";
3627 iRequirements[97] = "61";
3628 iRequirements[98] = "62";
3629 iRequirements[99] = "63";
3630 iRequirements[100] = "64";
3631 iRequirements[101] = "270F";
3632 iRequirements[102] = "2710";
3633 iRequirements[103] = "In walljump situation";
3634 iRequirements[104] = "In wallcling situation";
3635 iRequirements[105] = "Is within footstool range.";
3636 iRequirements[106] = "2714";
3637 iRequirements[107] = "2715";
3638 iRequirements[108] = "Is falling+hit down";
3639 iRequirements[109] = "Has Smash Ball";
3640 iRequirements[110] = "2718";
3641 iRequirements[111] = "Can Pick Up Another Item";
3642 iRequirements[112] = "271A";
3643 iRequirements[113] = "271B";
3644 iRequirements[114] = "271C";
3645 iRequirements[115] = "F-Smash Shortcut";
3646 iRequirements[116] = "271E";
3647 iRequirements[117] = "271F";
3648 iRequirements[118] = "2720";
3649 iRequirements[119] = "2721";
3650 iRequirements[120] = "2722";
3651 iRequirements[121] = "2723";
3652 iRequirements[122] = "2724";
3653 iRequirements[123] = "Tap Jump on";
3654 }
3655
3656 //Read the list of Air Ground Stats.
3657 loc = Application.StartupPath + "/MovesetData/AirGroundStats.txt";
3658 if (File.Exists(loc))
3659 {
3660 using (sr = new StreamReader(loc))
3661 {
3662 for (int i = 0; !sr.EndOfStream; i++)
3663 {
3664 Array.Resize(ref iAirGroundStats, i + 1);
3665 iAirGroundStats[i] = sr.ReadLine();
3666 }
3667 }
3668 }
3669 else
3670 {
3671 iAirGroundStats = new string[7];
3672 iAirGroundStats[0] = "In Air";
3673 iAirGroundStats[1] = "Floating On Ground";
3674 iAirGroundStats[2] = "Undefined(2)";
3675 iAirGroundStats[3] = "Undefined(3)";
3676 iAirGroundStats[4] = "Undefined(4)";
3677 iAirGroundStats[5] = "Undefined(5)";
3678 iAirGroundStats[6] = "On Ground";
3679 }
3680
3681 //Read the list of Collision Stats.
3682 loc = Application.StartupPath + "/MovesetData/CollisionStats.txt";
3683 if (File.Exists(loc))
3684 {
3685 using (sr = new StreamReader(loc))
3686 {
3687 for (int i = 0; !sr.EndOfStream; i++)
3688 {
3689 Array.Resize(ref iCollisionStats, i + 1);
3690 iCollisionStats[i] = sr.ReadLine();
3691 }
3692 }
3693 }
3694 else
3695 {
3696 iCollisionStats = new string[5];
3697 iCollisionStats[0] = "Normal";
3698 iCollisionStats[1] = "Invincible";
3699 iCollisionStats[2] = "Intangible";
3700 iCollisionStats[3] = "Intangible No Flashing";
3701 iCollisionStats[4] = "Intangible Quick Flashing";
3702 }
3703
3704 //Read the list of GFX Files.
3705 loc = Application.StartupPath + "/MovesetData/GFXFiles.txt";
3706 if (File.Exists(loc))
3707 {
3708 using (sr = new StreamReader(loc))
3709 {
3710 for (int i = 0; !sr.EndOfStream; i++)
3711 {
3712 Array.Resize(ref iGFXFiles, i + 1);
3713 iGFXFiles[i] = sr.ReadLine();
3714 }
3715 }
3716 }
3717 else
3718 {
3719 iGFXFiles = new string[259];
3720 iGFXFiles[0] = "Common";
3721 iGFXFiles[1] = "Mario";
3722 iGFXFiles[2] = "Donkey Kong";
3723 iGFXFiles[3] = "Link ";
3724 iGFXFiles[4] = "Samus";
3725 iGFXFiles[5] = "Yoshi";
3726 iGFXFiles[6] = "Kirby";
3727 iGFXFiles[7] = "Fox";
3728 iGFXFiles[8] = "Pikachu";
3729 iGFXFiles[9] = "Luigi";
3730 iGFXFiles[10] = "Falcon";
3731 iGFXFiles[11] = "Ness";
3732 iGFXFiles[12] = "Bowser";
3733 iGFXFiles[13] = "Peach";
3734 iGFXFiles[14] = "Zelda";
3735 iGFXFiles[15] = "15 Shiek?";
3736 iGFXFiles[16] = "Popo";
3737 iGFXFiles[17] = "17 Nana?";
3738 iGFXFiles[18] = "Marth";
3739 iGFXFiles[19] = "19";
3740 iGFXFiles[20] = "Falco";
3741 iGFXFiles[21] = "Ganondorf";
3742 iGFXFiles[22] = "Wario";
3743 iGFXFiles[23] = "Meta Knight";
3744 iGFXFiles[24] = "Pit";
3745 iGFXFiles[25] = "Zerosuit Samus";
3746 iGFXFiles[26] = "Olimar";
3747 iGFXFiles[27] = "Lucas";
3748 iGFXFiles[28] = "Diddy";
3749 iGFXFiles[29] = "Pokemon Trainer";
3750 iGFXFiles[30] = "Charizard";
3751 iGFXFiles[31] = "Squirtle";
3752 iGFXFiles[32] = "Ivysaur";
3753 iGFXFiles[33] = "Dedede";
3754 iGFXFiles[34] = "Lucario";
3755 iGFXFiles[35] = "Ike";
3756 iGFXFiles[36] = "Rob";
3757 iGFXFiles[37] = "37";
3758 iGFXFiles[38] = "Jigglypuff";
3759 iGFXFiles[39] = "39";
3760 iGFXFiles[40] = "40";
3761 iGFXFiles[41] = "41";
3762 iGFXFiles[42] = "Toon Link";
3763 iGFXFiles[43] = "43";
3764 iGFXFiles[44] = "44";
3765 iGFXFiles[45] = "Wolf";
3766 iGFXFiles[46] = "46";
3767 iGFXFiles[47] = "Snake";
3768 iGFXFiles[48] = "Sonic";
3769 iGFXFiles[49] = "49";
3770 iGFXFiles[50] = "50";
3771 iGFXFiles[51] = "51";
3772 iGFXFiles[52] = "52";
3773 iGFXFiles[53] = "53";
3774 iGFXFiles[54] = "54";
3775 iGFXFiles[55] = "55";
3776 iGFXFiles[56] = "56";
3777 iGFXFiles[57] = "57";
3778 iGFXFiles[58] = "58";
3779 iGFXFiles[59] = "59";
3780 iGFXFiles[60] = "60";
3781 iGFXFiles[61] = "61";
3782 iGFXFiles[62] = "62";
3783 iGFXFiles[63] = "63";
3784 iGFXFiles[64] = "64";
3785 iGFXFiles[65] = "65";
3786 iGFXFiles[66] = "66";
3787 iGFXFiles[67] = "67";
3788 iGFXFiles[68] = "68";
3789 iGFXFiles[69] = "69";
3790 iGFXFiles[70] = "70";
3791 iGFXFiles[71] = "71";
3792 iGFXFiles[72] = "72";
3793 iGFXFiles[73] = "73";
3794 iGFXFiles[74] = "74";
3795 iGFXFiles[75] = "75";
3796 iGFXFiles[76] = "76";
3797 iGFXFiles[77] = "77";
3798 iGFXFiles[78] = "78";
3799 iGFXFiles[79] = "79";
3800 iGFXFiles[80] = "80";
3801 iGFXFiles[81] = "81";
3802 iGFXFiles[82] = "82";
3803 iGFXFiles[83] = "83";
3804 iGFXFiles[84] = "84";
3805 iGFXFiles[85] = "85";
3806 iGFXFiles[86] = "86";
3807 iGFXFiles[87] = "87";
3808 iGFXFiles[88] = "88";
3809 iGFXFiles[89] = "89";
3810 iGFXFiles[90] = "90";
3811 iGFXFiles[91] = "91";
3812 iGFXFiles[92] = "92";
3813 iGFXFiles[93] = "93";
3814 iGFXFiles[94] = "94";
3815 iGFXFiles[95] = "95";
3816 iGFXFiles[96] = "96";
3817 iGFXFiles[97] = "97";
3818 iGFXFiles[98] = "98";
3819 iGFXFiles[99] = "99";
3820 iGFXFiles[100] = "100";
3821 iGFXFiles[101] = "101";
3822 iGFXFiles[102] = "102";
3823 iGFXFiles[103] = "103";
3824 iGFXFiles[104] = "104";
3825 iGFXFiles[105] = "105";
3826 iGFXFiles[106] = "106";
3827 iGFXFiles[107] = "107";
3828 iGFXFiles[108] = "108";
3829 iGFXFiles[109] = "109";
3830 iGFXFiles[110] = "110";
3831 iGFXFiles[111] = "111";
3832 iGFXFiles[112] = "112";
3833 iGFXFiles[113] = "113";
3834 iGFXFiles[114] = "114";
3835 iGFXFiles[115] = "115";
3836 iGFXFiles[116] = "116";
3837 iGFXFiles[117] = "117";
3838 iGFXFiles[118] = "118";
3839 iGFXFiles[119] = "119";
3840 iGFXFiles[120] = "120";
3841 iGFXFiles[121] = "121";
3842 iGFXFiles[122] = "122";
3843 iGFXFiles[123] = "123";
3844 iGFXFiles[124] = "124";
3845 iGFXFiles[125] = "125";
3846 iGFXFiles[126] = "126";
3847 iGFXFiles[127] = "127";
3848 iGFXFiles[128] = "128";
3849 iGFXFiles[129] = "129";
3850 iGFXFiles[130] = "130";
3851 iGFXFiles[131] = "131";
3852 iGFXFiles[132] = "132";
3853 iGFXFiles[133] = "133";
3854 iGFXFiles[134] = "134";
3855 iGFXFiles[135] = "135";
3856 iGFXFiles[136] = "136";
3857 iGFXFiles[137] = "137";
3858 iGFXFiles[138] = "138";
3859 iGFXFiles[139] = "139";
3860 iGFXFiles[140] = "140";
3861 iGFXFiles[141] = "141";
3862 iGFXFiles[142] = "142";
3863 iGFXFiles[143] = "143";
3864 iGFXFiles[144] = "144";
3865 iGFXFiles[145] = "145";
3866 iGFXFiles[146] = "146";
3867 iGFXFiles[147] = "147";
3868 iGFXFiles[148] = "148";
3869 iGFXFiles[149] = "149";
3870 iGFXFiles[150] = "150";
3871 iGFXFiles[151] = "151";
3872 iGFXFiles[152] = "152";
3873 iGFXFiles[153] = "153";
3874 iGFXFiles[154] = "154";
3875 iGFXFiles[155] = "155";
3876 iGFXFiles[156] = "156";
3877 iGFXFiles[157] = "157";
3878 iGFXFiles[158] = "158";
3879 iGFXFiles[159] = "159";
3880 iGFXFiles[160] = "160";
3881 iGFXFiles[161] = "161";
3882 iGFXFiles[162] = "162";
3883 iGFXFiles[163] = "163";
3884 iGFXFiles[164] = "164";
3885 iGFXFiles[165] = "165";
3886 iGFXFiles[166] = "166";
3887 iGFXFiles[167] = "167";
3888 iGFXFiles[168] = "168";
3889 iGFXFiles[169] = "169";
3890 iGFXFiles[170] = "170";
3891 iGFXFiles[171] = "171";
3892 iGFXFiles[172] = "172";
3893 iGFXFiles[173] = "173";
3894 iGFXFiles[174] = "174";
3895 iGFXFiles[175] = "175";
3896 iGFXFiles[176] = "176";
3897 iGFXFiles[177] = "177";
3898 iGFXFiles[178] = "178";
3899 iGFXFiles[179] = "179";
3900 iGFXFiles[180] = "180";
3901 iGFXFiles[181] = "181";
3902 iGFXFiles[182] = "182";
3903 iGFXFiles[183] = "183";
3904 iGFXFiles[184] = "184";
3905 iGFXFiles[185] = "185";
3906 iGFXFiles[186] = "186";
3907 iGFXFiles[187] = "187";
3908 iGFXFiles[188] = "188";
3909 iGFXFiles[189] = "189";
3910 iGFXFiles[190] = "190";
3911 iGFXFiles[191] = "191";
3912 iGFXFiles[192] = "192";
3913 iGFXFiles[193] = "193";
3914 iGFXFiles[194] = "194";
3915 iGFXFiles[195] = "195";
3916 iGFXFiles[196] = "196";
3917 iGFXFiles[197] = "197";
3918 iGFXFiles[198] = "198";
3919 iGFXFiles[199] = "Knuckle Joe";
3920 iGFXFiles[200] = "200";
3921 iGFXFiles[201] = "Mr. Resetti";
3922 iGFXFiles[202] = "202";
3923 iGFXFiles[203] = "Gray Fox";
3924 iGFXFiles[204] = "Shadow";
3925 iGFXFiles[205] = "205";
3926 iGFXFiles[206] = "Devil";
3927 iGFXFiles[207] = "207";
3928 iGFXFiles[208] = "Metroid";
3929 iGFXFiles[209] = "209";
3930 iGFXFiles[210] = "210";
3931 iGFXFiles[211] = "Starfy";
3932 iGFXFiles[212] = "Tingle";
3933 iGFXFiles[213] = "Kat & Ana";
3934 iGFXFiles[214] = "Lyn";
3935 iGFXFiles[215] = "Custom Robo";
3936 iGFXFiles[216] = "Little Mac";
3937 iGFXFiles[217] = "Soldier";
3938 iGFXFiles[218] = "Jeff";
3939 iGFXFiles[219] = "219";
3940 iGFXFiles[220] = "Barbara";
3941 iGFXFiles[221] = "Issac";
3942 iGFXFiles[222] = "Saki";
3943 iGFXFiles[223] = "Kururi";
3944 iGFXFiles[224] = "Mario FS";
3945 iGFXFiles[225] = "DK FS";
3946 iGFXFiles[226] = "Link FS";
3947 iGFXFiles[227] = "Toon Link FS";
3948 iGFXFiles[228] = "Samus FS";
3949 iGFXFiles[229] = "Yoshi FS";
3950 iGFXFiles[230] = "Kirby FS";
3951 iGFXFiles[231] = "Fox/Falco FS";
3952 iGFXFiles[232] = "Pikachu FS?";
3953 iGFXFiles[233] = "Luigi FS?";
3954 iGFXFiles[234] = "Falcon FS?";
3955 iGFXFiles[235] = "Ness FS";
3956 iGFXFiles[236] = "Bowser FS";
3957 iGFXFiles[237] = "Peach FS";
3958 iGFXFiles[238] = "Zelda/Sheik FS";
3959 iGFXFiles[239] = "Popo/Nana FS";
3960 iGFXFiles[240] = "Marth FS";
3961 iGFXFiles[241] = "241";
3962 iGFXFiles[242] = "Ganondorf FS";
3963 iGFXFiles[243] = "Wario FS";
3964 iGFXFiles[244] = "Meta Knight FS";
3965 iGFXFiles[245] = "Pit FS";
3966 iGFXFiles[246] = "Zerosuit Samus FS";
3967 iGFXFiles[247] = "Olimar's FS?";
3968 iGFXFiles[248] = "Lucas FS";
3969 iGFXFiles[249] = "Diddy FS";
3970 iGFXFiles[250] = "Pokemon Trainer FS";
3971 iGFXFiles[251] = "Dedede FS?";
3972 iGFXFiles[252] = "Lucario FS";
3973 iGFXFiles[253] = "Ike FS";
3974 iGFXFiles[254] = "Rob FS?";
3975 iGFXFiles[255] = "Jigglypuff FS";
3976 iGFXFiles[256] = "Wolf FS?";
3977 iGFXFiles[257] = "Snake FS";
3978 iGFXFiles[258] = "Sonic FS";
3979 }
3980
3981 //string s = "iGFXFiles = new string[" + iGFXFiles.Length + "];";
3982 //string e = "";
3983 //int x = 0;
3984 //foreach (string v in iGFXFiles)
3985 // e += "\niGFXFiles[" + x++ + "] = \"" + v + "\";";
3986 //Console.WriteLine(s + e);
3987
3988 //string s = "iRequirements = new string[" + iRequirements.Length + "];";
3989 //string e = "";
3990 //int x = 0;
3991 //foreach (string v in iRequirements)
3992 // e += "\niRequirements[" + x++ + "] = \"" + v + "\";";
3993 //Console.WriteLine(s + e);
3994
3995 //s = "iAirGroundStats = new string[" + iAirGroundStats.Length + "];";
3996 //e = "";
3997 //x = 0;
3998 //foreach (string v in iAirGroundStats)
3999 // e += "\niAirGroundStats[" + x++ + "] = \"" + v + "\";";
4000 //Console.WriteLine(s + e);
4001
4002 //s = "iCollisionStats = new string[" + iCollisionStats.Length + "];";
4003 //e = "";
4004 //x = 0;
4005 //foreach (string v in iCollisionStats)
4006 // e += "\niCollisionStats[" + x++ + "] = \"" + v + "\";";
4007 //Console.WriteLine(s + e);
4008
4009 AttributeArray = new AttributeInfo[185];
4010 sr = null;
4011 loc = Application.StartupPath + "/MovesetData/Attributes.txt";
4012
4013 //Read known attributes and their descriptions.
4014 if (File.Exists(loc))
4015 {
4016 using (sr = new StreamReader(loc))
4017 {
4018 for (int i = 0; !sr.EndOfStream && i < 185; i++)
4019 {
4020 AttributeArray[i] = new AttributeInfo();
4021 AttributeArray[i]._name = sr.ReadLine();
4022 AttributeArray[i]._description = sr.ReadLine();
4023 AttributeArray[i]._type = int.Parse(sr.ReadLine());
4024
4025 if (AttributeArray[i]._description == "")
4026 {
4027 AttributeArray[i]._description = "No Description Available.";
4028 }
4029
4030 sr.ReadLine();
4031 }
4032 }
4033 }
4034 else
4035 {
4036 AttributeArray = new AttributeInfo[185];
4037 AttributeArray[0] = new AttributeInfo()
4038 {
4039 _name = "0x000 Walk Initial Velocity",
4040 _description = "The starting velocity obtained the moment the character starts walking.", _type = 0
4041 };
4042 AttributeArray[1] = new AttributeInfo()
4043 {
4044 _name = "0x004 Walk Acceleration", _description = "The speed of acceleration while walking.",
4045 _type = 0
4046 };
4047 AttributeArray[2] = new AttributeInfo()
4048 {
4049 _name = "0x008 Walk Maximum Velocity",
4050 _description = "The maximum velocity obtainable while walking.", _type = 0
4051 };
4052 AttributeArray[3] = new AttributeInfo()
4053 {
4054 _name = "0x00C Stopping Velocity",
4055 _description = "The speed at which the character is able to stop at.", _type = 0
4056 };
4057 AttributeArray[4] = new AttributeInfo()
4058 {
4059 _name = "0x010 Dash & StopTurn Initial Velocity",
4060 _description = "The starting velocity obtained the moment the character starts a Dash.", _type = 0
4061 };
4062 AttributeArray[5] = new AttributeInfo()
4063 {
4064 _name = "0x014 StopTurn Deceleration",
4065 _description = "The speed at which the character decelerates upon performing a StopTurn.", _type = 0
4066 };
4067 AttributeArray[6] = new AttributeInfo()
4068 {
4069 _name = "0x018 StopTurn Acceleration",
4070 _description = "The speed at which the character accelerates after performing a StopTurn", _type = 0
4071 };
4072 AttributeArray[7] = new AttributeInfo()
4073 {
4074 _name = "0x01C Run Initial Velocity",
4075 _description = "The starting velocity obtained the moment the Dash turns into a Run.", _type = 0
4076 };
4077 AttributeArray[8] = new AttributeInfo()
4078 {
4079 _name = "0x020 Run Acceleration?",
4080 _description = "Possibly the time it takes for the character to reach full speed during a run?",
4081 _type = 0
4082 };
4083 AttributeArray[9] = new AttributeInfo()
4084 {_name = "0x024", _description = "No Description Available.", _type = 0};
4085 AttributeArray[10] = new AttributeInfo()
4086 {
4087 _name = "*0x028 Dash Cancel Frame Window?",
4088 _description = "Possibly the amount of frames you have to cancel your dash animation.", _type = 1
4089 };
4090 AttributeArray[11] = new AttributeInfo()
4091 {
4092 _name = "0x02C Guard On Max Momentum",
4093 _description = "The maximum horizontal momentum you can have when entering shield.", _type = 0
4094 };
4095 AttributeArray[12] = new AttributeInfo()
4096 {
4097 _name = "*0x030 Jump Startup Time",
4098 _description =
4099 "The time in frames it takes for your character to life off of the ground when jumping.",
4100 _type = 1
4101 };
4102 AttributeArray[13] = new AttributeInfo()
4103 {
4104 _name = "0x034 Jump H Initial Velocity",
4105 _description = "The starting horizontal velocity the character obtains when jumping.", _type = 0
4106 };
4107 AttributeArray[14] = new AttributeInfo()
4108 {
4109 _name = "0x038 Jump V Initial Velocity",
4110 _description = "The starting vertical velocity the character obtains when jumping.", _type = 0
4111 };
4112 AttributeArray[15] = new AttributeInfo()
4113 {
4114 _name = "0x03C Ground to Air Jump Momentum Multiplier",
4115 _description = "The amount of horizontal momentum from the ground that gets added onto a jump.",
4116 _type = 0
4117 };
4118 AttributeArray[16] = new AttributeInfo()
4119 {
4120 _name = "0x040 Jump H Maximum Velocity",
4121 _description =
4122 "The maximum horizontal velocity the character is able to obtain at the start of a jump.",
4123 _type = 0
4124 };
4125 AttributeArray[17] = new AttributeInfo()
4126 {
4127 _name = "0x044 Hop V Initial Velocity",
4128 _description = "The maximum vertical velocity the character obtains when hopping.", _type = 0
4129 };
4130 AttributeArray[18] = new AttributeInfo()
4131 {
4132 _name = "0x048 Air Jump Multiplier",
4133 _description =
4134 "The velocity obtained from an air jump proportional to the Jump V Initial Velocity.",
4135 _type = 0
4136 };
4137 AttributeArray[19] = new AttributeInfo()
4138 {_name = "0x04C Some Kind of Multiplier?", _description = "No Description Available.", _type = 0};
4139 AttributeArray[20] = new AttributeInfo()
4140 {
4141 _name = "0x050 Footstool V Initial Velocity",
4142 _description =
4143 "The starting vertical velocity the character obtains upon performing a footstool jump.",
4144 _type = 0
4145 };
4146 AttributeArray[21] = new AttributeInfo()
4147 {_name = "0x054", _description = "No Description Available.", _type = 0};
4148 AttributeArray[22] = new AttributeInfo()
4149 {_name = "0x058", _description = "No Description Available.", _type = 0};
4150 AttributeArray[23] = new AttributeInfo()
4151 {_name = "0x05C", _description = "No Description Available.", _type = 0};
4152 AttributeArray[24] = new AttributeInfo()
4153 {
4154 _name = "*0x060 Jumps",
4155 _description = "The number of consecutive jumps the character is able to perform.", _type = 1
4156 };
4157 AttributeArray[25] = new AttributeInfo()
4158 {
4159 _name = "0x064 Gravity", _description = "The speed at which the character accelerates downward.",
4160 _type = 0
4161 };
4162 AttributeArray[26] = new AttributeInfo()
4163 {
4164 _name = "0x068 Terminal Velocity", _description = "The maximum velocity obtainable due to gravity.",
4165 _type = 0
4166 };
4167 AttributeArray[27] = new AttributeInfo()
4168 {_name = "0x06C", _description = "No Description Available.", _type = 0};
4169 AttributeArray[28] = new AttributeInfo()
4170 {_name = "0x070", _description = "No Description Available.", _type = 0};
4171 AttributeArray[29] = new AttributeInfo()
4172 {
4173 _name = "0x074 Air Mobility",
4174 _description = "The speed at which the character is able to maneuver in air.", _type = 0
4175 };
4176 AttributeArray[30] = new AttributeInfo()
4177 {
4178 _name = "0x078 Air Stopping Mobility",
4179 _description = "The speed at which the character is able to stop themselves in air.", _type = 0
4180 };
4181 AttributeArray[31] = new AttributeInfo()
4182 {
4183 _name = "0x07C Maximum H Air Velocity",
4184 _description = "The maximum horizontal velocity the character is able to obtain in air.", _type = 0
4185 };
4186 AttributeArray[32] = new AttributeInfo()
4187 {
4188 _name = "0x080 Horizontal Momentum Decay",
4189 _description = "The speed at which the character's horizontal momentum decreases on its own.",
4190 _type = 0
4191 };
4192 AttributeArray[33] = new AttributeInfo()
4193 {
4194 _name = "0x084 Fastfall Terminal Velocity",
4195 _description = "The initial fastfalling speed of the character. ", _type = 0
4196 };
4197 AttributeArray[34] = new AttributeInfo()
4198 {_name = "0x088", _description = "No Description Available.", _type = 0};
4199 AttributeArray[35] = new AttributeInfo()
4200 {
4201 _name = "*0x08C Glide Frame Window",
4202 _description =
4203 "The amount of time (in frames) that the character has to begin a glide after jumping. Leave at 0 for no glide.",
4204 _type = 1
4205 };
4206 AttributeArray[36] = new AttributeInfo()
4207 {_name = "0x090", _description = "No Description Available.", _type = 0};
4208 AttributeArray[37] = new AttributeInfo()
4209 {_name = "0x094", _description = "No Description Available.", _type = 0};
4210 AttributeArray[38] = new AttributeInfo()
4211 {_name = "0x098", _description = "No Description Available.", _type = 0};
4212 AttributeArray[39] = new AttributeInfo()
4213 {_name = "*0x09C Forward Tilt 2 Flag", _description = "?", _type = 1};
4214 AttributeArray[40] = new AttributeInfo()
4215 {_name = "*0x0A0 Forward Tilt 3 Flag", _description = "?", _type = 1};
4216 AttributeArray[41] = new AttributeInfo()
4217 {_name = "0x0A4 Forward Smash 2 Flag", _description = "No Description Available.", _type = 0};
4218 AttributeArray[42] = new AttributeInfo()
4219 {_name = "0x0A8", _description = "No Description Available.", _type = 0};
4220 AttributeArray[43] = new AttributeInfo()
4221 {_name = "0x0AC", _description = "No Description Available.", _type = 0};
4222 AttributeArray[44] = new AttributeInfo()
4223 {_name = "0x0B0 Weight", _description = "How resiliant the character is to knockback.", _type = 0};
4224 AttributeArray[45] = new AttributeInfo()
4225 {
4226 _name = "0x0B4 Size",
4227 _description = "The scaling of the character from their original model size. 1 = 100%, 0.5 = 50%.",
4228 _type = 0
4229 };
4230 AttributeArray[46] = new AttributeInfo()
4231 {
4232 _name = "0x0B8 Size on Results Screen",
4233 _description = "The scaling of the character on the results screen. 1 = 100%, 0.5 = 50%.", _type = 0
4234 };
4235 AttributeArray[47] = new AttributeInfo()
4236 {_name = "0x0BC", _description = "No Description Available.", _type = 0};
4237 AttributeArray[48] = new AttributeInfo()
4238 {_name = "0x0C0", _description = "No Description Available.", _type = 0};
4239 AttributeArray[49] = new AttributeInfo()
4240 {
4241 _name = "0x0C4 Shield Size",
4242 _description = "The size of the character's shield bubble when it is at full strength.", _type = 0
4243 };
4244 AttributeArray[50] = new AttributeInfo()
4245 {
4246 _name = "0x0C8 Shield Break Bounce Velocity",
4247 _description =
4248 "The velocity at which the character bounces upwards upon having their shield broken.",
4249 _type = 0
4250 };
4251 AttributeArray[51] = new AttributeInfo()
4252 {_name = "0x0CC", _description = "No Description Available.", _type = 0};
4253 AttributeArray[52] = new AttributeInfo()
4254 {_name = "0x0D0", _description = "No Description Available.", _type = 0};
4255 AttributeArray[53] = new AttributeInfo()
4256 {_name = "0x0D4", _description = "No Description Available.", _type = 0};
4257 AttributeArray[54] = new AttributeInfo()
4258 {_name = "0x0D8", _description = "No Description Available.", _type = 0};
4259 AttributeArray[55] = new AttributeInfo()
4260 {_name = "0x0DC", _description = "No Description Available.", _type = 0};
4261 AttributeArray[56] = new AttributeInfo()
4262 {_name = "0x0E0", _description = "No Description Available.", _type = 0};
4263 AttributeArray[57] = new AttributeInfo()
4264 {_name = "0x0E4", _description = "No Description Available.", _type = 0};
4265 AttributeArray[58] = new AttributeInfo()
4266 {_name = "*0x0E8", _description = "No Description Available.", _type = 1};
4267 AttributeArray[59] = new AttributeInfo()
4268 {_name = "*0x0EC", _description = "No Description Available.", _type = 1};
4269 AttributeArray[60] = new AttributeInfo()
4270 {_name = "*0x0F0", _description = "No Description Available.", _type = 1};
4271 AttributeArray[61] = new AttributeInfo()
4272 {_name = "0x0F4", _description = "No Description Available.", _type = 0};
4273 AttributeArray[62] = new AttributeInfo()
4274 {
4275 _name = "0x0F8 Edge Jump H Velocity",
4276 _description = "The starting horizontal velocity obtained from an Edge Jump.", _type = 0
4277 };
4278 AttributeArray[63] = new AttributeInfo()
4279 {
4280 _name = "0x0FC Edge Jump V Velocity",
4281 _description = "The starting vertical velocity obtained from an Edge Jump.", _type = 0
4282 };
4283 AttributeArray[64] = new AttributeInfo()
4284 {_name = "0x100", _description = "No Description Available.", _type = 0};
4285 AttributeArray[65] = new AttributeInfo()
4286 {_name = "0x104", _description = "No Description Available.", _type = 0};
4287 AttributeArray[66] = new AttributeInfo()
4288 {_name = "0x108", _description = "No Description Available.", _type = 0};
4289 AttributeArray[67] = new AttributeInfo()
4290 {_name = "0x10C", _description = "No Description Available.", _type = 0};
4291 AttributeArray[68] = new AttributeInfo()
4292 {_name = "0x110", _description = "No Description Available.", _type = 0};
4293 AttributeArray[69] = new AttributeInfo()
4294 {_name = "*0x114", _description = "No Description Available.", _type = 1};
4295 AttributeArray[70] = new AttributeInfo()
4296 {
4297 _name = "0x118 Item Throw Strength",
4298 _description = "The speed at which an item is projected when thrown.", _type = 0
4299 };
4300 AttributeArray[71] = new AttributeInfo()
4301 {_name = "0x11C", _description = "No Description Available.", _type = 0};
4302 AttributeArray[72] = new AttributeInfo()
4303 {_name = "0x120", _description = "No Description Available.", _type = 0};
4304 AttributeArray[73] = new AttributeInfo()
4305 {_name = "0x124", _description = "No Description Available.", _type = 0};
4306 AttributeArray[74] = new AttributeInfo()
4307 {
4308 _name = "0x128 Projectile Weapon Use Move Speed",
4309 _description =
4310 "The speed at which the character is able to move at while firing a projectile weapon.",
4311 _type = 0
4312 };
4313 AttributeArray[75] = new AttributeInfo()
4314 {
4315 _name = "0x12C Projectile Weapon Use F Dash Speed",
4316 _description =
4317 "The speed at which a character moves during a forward dash while firing a projectile weapon.",
4318 _type = 0
4319 };
4320 AttributeArray[76] = new AttributeInfo()
4321 {
4322 _name = "0x130 Projectile Weapon Use B Dash Speed",
4323 _description =
4324 "The speed at which a character moves during a backward dash while firing a projectile weapon.",
4325 _type = 0
4326 };
4327 AttributeArray[77] = new AttributeInfo()
4328 {_name = "0x134", _description = "No Description Available.", _type = 0};
4329 AttributeArray[78] = new AttributeInfo()
4330 {_name = "0x138", _description = "No Description Available.", _type = 0};
4331 AttributeArray[79] = new AttributeInfo()
4332 {
4333 _name = "0x13C Normal Landing Lag",
4334 _description = "The length of the character's normal landing lag in frames.", _type = 0
4335 };
4336 AttributeArray[80] = new AttributeInfo()
4337 {
4338 _name = "0x140 Nair Landing Lag?",
4339 _description = "The length of the character's nair landing lag animation in frames.", _type = 0
4340 };
4341 AttributeArray[81] = new AttributeInfo()
4342 {
4343 _name = "0x144 Fair Landing Lag?",
4344 _description = "The length of the character's fair landing lag animation in frames.", _type = 0
4345 };
4346 AttributeArray[82] = new AttributeInfo()
4347 {
4348 _name = "0x148 Bair Landing Lag?",
4349 _description = "The length of the character's bair landing lag animation in frames.", _type = 0
4350 };
4351 AttributeArray[83] = new AttributeInfo()
4352 {
4353 _name = "0x14C Uair Landing Lag?",
4354 _description = "The length of the character's uair landing lag animation in frames.", _type = 0
4355 };
4356 AttributeArray[84] = new AttributeInfo()
4357 {
4358 _name = "0x150 Dair Landing Lag",
4359 _description = "The length of the character's dair landing lag animation in frames.", _type = 0
4360 };
4361 AttributeArray[85] = new AttributeInfo()
4362 {_name = "*0x154", _description = "No Description Available.", _type = 1};
4363 AttributeArray[86] = new AttributeInfo()
4364 {_name = "*0x158", _description = "No Description Available.", _type = 1};
4365 AttributeArray[87] = new AttributeInfo()
4366 {_name = "0x15C", _description = "No Description Available.", _type = 0};
4367 AttributeArray[88] = new AttributeInfo()
4368 {_name = "0x160", _description = "No Description Available.", _type = 0};
4369 AttributeArray[89] = new AttributeInfo()
4370 {
4371 _name = "0x164 Walljump H Velocity",
4372 _description = "The starting horazontal velocity obtained from a Walljump.", _type = 0
4373 };
4374 AttributeArray[90] = new AttributeInfo()
4375 {
4376 _name = "0x168 Walljump V Velocity",
4377 _description = "The starting vertical velocity obtained from a Walljump.", _type = 0
4378 };
4379 AttributeArray[91] = new AttributeInfo()
4380 {_name = "0x16C", _description = "No Description Available.", _type = 0};
4381 AttributeArray[92] = new AttributeInfo()
4382 {_name = "0x170", _description = "No Description Available.", _type = 0};
4383 AttributeArray[93] = new AttributeInfo()
4384 {_name = "*0x174", _description = "No Description Available.", _type = 1};
4385 AttributeArray[94] = new AttributeInfo()
4386 {_name = "0x178", _description = "No Description Available.", _type = 0};
4387 AttributeArray[95] = new AttributeInfo()
4388 {_name = "0x17C", _description = "No Description Available.", _type = 0};
4389 AttributeArray[96] = new AttributeInfo()
4390 {_name = "*0x180", _description = "No Description Available.", _type = 1};
4391 AttributeArray[97] = new AttributeInfo()
4392 {_name = "*0x184", _description = "No Description Available.", _type = 1};
4393 AttributeArray[98] = new AttributeInfo()
4394 {_name = "0x188", _description = "No Description Available.", _type = 0};
4395 AttributeArray[99] = new AttributeInfo()
4396 {_name = "0x18C", _description = "No Description Available.", _type = 0};
4397 AttributeArray[100] = new AttributeInfo()
4398 {_name = "0x190", _description = "No Description Available.", _type = 0};
4399 AttributeArray[101] = new AttributeInfo()
4400 {_name = "0x194", _description = "No Description Available.", _type = 0};
4401 AttributeArray[102] = new AttributeInfo()
4402 {_name = "0x198", _description = "No Description Available.", _type = 0};
4403 AttributeArray[103] = new AttributeInfo()
4404 {_name = "0x19C", _description = "No Description Available.", _type = 0};
4405 AttributeArray[104] = new AttributeInfo()
4406 {_name = "0x1A0", _description = "No Description Available.", _type = 0};
4407 AttributeArray[105] = new AttributeInfo()
4408 {_name = "0x1A4", _description = "No Description Available.", _type = 0};
4409 AttributeArray[106] = new AttributeInfo()
4410 {_name = "*0x1A8", _description = "No Description Available.", _type = 1};
4411 AttributeArray[107] = new AttributeInfo()
4412 {_name = "0x1AC", _description = "No Description Available.", _type = 0};
4413 AttributeArray[108] = new AttributeInfo()
4414 {_name = "*0x1B0", _description = "No Description Available.", _type = 1};
4415 AttributeArray[109] = new AttributeInfo()
4416 {_name = "0x1B4", _description = "No Description Available.", _type = 0};
4417 AttributeArray[110] = new AttributeInfo()
4418 {_name = "*0x1B8", _description = "No Description Available.", _type = 1};
4419 AttributeArray[111] = new AttributeInfo()
4420 {_name = "*0x1BC", _description = "No Description Available.", _type = 1};
4421 AttributeArray[112] = new AttributeInfo()
4422 {_name = "0x1C0", _description = "No Description Available.", _type = 0};
4423 AttributeArray[113] = new AttributeInfo()
4424 {_name = "*0x1C4", _description = "No Description Available.", _type = 1};
4425 AttributeArray[114] = new AttributeInfo()
4426 {_name = "0x1C8", _description = "No Description Available.", _type = 0};
4427 AttributeArray[115] = new AttributeInfo()
4428 {_name = "*0x1CC", _description = "No Description Available.", _type = 1};
4429 AttributeArray[116] = new AttributeInfo()
4430 {_name = "*0x1D0", _description = "No Description Available.", _type = 1};
4431 AttributeArray[117] = new AttributeInfo()
4432 {_name = "*0x1D4", _description = "No Description Available.", _type = 1};
4433 AttributeArray[118] = new AttributeInfo()
4434 {_name = "*0x1D8", _description = "No Description Available.", _type = 1};
4435 AttributeArray[119] = new AttributeInfo()
4436 {_name = "0x1DC", _description = "No Description Available.", _type = 0};
4437 AttributeArray[120] = new AttributeInfo()
4438 {_name = "*0x1E0", _description = "No Description Available.", _type = 1};
4439 AttributeArray[121] = new AttributeInfo()
4440 {_name = "0x1E4", _description = "No Description Available.", _type = 0};
4441 AttributeArray[122] = new AttributeInfo()
4442 {_name = "0x1E8", _description = "No Description Available.", _type = 0};
4443 AttributeArray[123] = new AttributeInfo()
4444 {_name = "0x1EC", _description = "No Description Available.", _type = 0};
4445 AttributeArray[124] = new AttributeInfo()
4446 {_name = "0x1F0", _description = "No Description Available.", _type = 0};
4447 AttributeArray[125] = new AttributeInfo()
4448 {_name = "0x1F4", _description = "No Description Available.", _type = 0};
4449 AttributeArray[126] = new AttributeInfo()
4450 {_name = "0x1F8", _description = "No Description Available.", _type = 0};
4451 AttributeArray[127] = new AttributeInfo()
4452 {
4453 _name = "0x1FC Camera Size Front",
4454 _description = "The camera pushing effect's distance in front of the character.", _type = 0
4455 };
4456 AttributeArray[128] = new AttributeInfo()
4457 {
4458 _name = "0x200 Camera Size Back",
4459 _description = "The camera pushing effect's distance behind the character.", _type = 0
4460 };
4461 AttributeArray[129] = new AttributeInfo()
4462 {
4463 _name = "0x204 Camera Size Top",
4464 _description = "The camera pushing effect's distance above the character.", _type = 0
4465 };
4466 AttributeArray[130] = new AttributeInfo()
4467 {
4468 _name = "0x208 Camera Size Bottom",
4469 _description = "The camera pushing effect's distance below the character.", _type = 0
4470 };
4471 AttributeArray[131] = new AttributeInfo()
4472 {_name = "0x20C Opposite of previous?", _description = "?", _type = 0};
4473 AttributeArray[132] = new AttributeInfo()
4474 {
4475 _name = "0x210 Zoom Camera Size Front",
4476 _description = "The zoom boundaries on the character in the front.", _type = 0
4477 };
4478 AttributeArray[133] = new AttributeInfo()
4479 {
4480 _name = "0x214 Zoom Camera Size Back",
4481 _description = "The zoom boundaries on the character in the back.", _type = 0
4482 };
4483 AttributeArray[134] = new AttributeInfo()
4484 {
4485 _name = "0x218 Zoom Camera Size Top",
4486 _description = "The zoom boundaries on the character on the top.", _type = 0
4487 };
4488 AttributeArray[135] = new AttributeInfo()
4489 {
4490 _name = "0x21C Zoom Camera Size Bottom",
4491 _description = "The zoom boundaries on the character on the bottom.", _type = 0
4492 };
4493 AttributeArray[136] = new AttributeInfo()
4494 {_name = "*0x220", _description = "No Description Available.", _type = 1};
4495 AttributeArray[137] = new AttributeInfo()
4496 {_name = "0x224", _description = "No Description Available.", _type = 0};
4497 AttributeArray[138] = new AttributeInfo()
4498 {_name = "0x228", _description = "No Description Available.", _type = 0};
4499 AttributeArray[139] = new AttributeInfo()
4500 {_name = "0x22C", _description = "No Description Available.", _type = 0};
4501 AttributeArray[140] = new AttributeInfo()
4502 {_name = "0x230", _description = "No Description Available.", _type = 0};
4503 AttributeArray[141] = new AttributeInfo()
4504 {_name = "*0x234", _description = "No Description Available.", _type = 1};
4505 AttributeArray[142] = new AttributeInfo()
4506 {_name = "0x238", _description = "No Description Available.", _type = 0};
4507 AttributeArray[143] = new AttributeInfo()
4508 {_name = "0x23C", _description = "No Description Available.", _type = 0};
4509 AttributeArray[144] = new AttributeInfo()
4510 {_name = "0x240", _description = "No Description Available.", _type = 0};
4511 AttributeArray[145] = new AttributeInfo()
4512 {
4513 _name = "0x244 Magnifying Glass Shrink Ratio",
4514 _description = "The size of the character in the magifying glass.", _type = 0
4515 };
4516 AttributeArray[146] = new AttributeInfo()
4517 {_name = "0x248", _description = "No Description Available.", _type = 0};
4518 AttributeArray[147] = new AttributeInfo()
4519 {_name = "0x24C", _description = "No Description Available.", _type = 0};
4520 AttributeArray[148] = new AttributeInfo()
4521 {_name = "0x250", _description = "No Description Available.", _type = 0};
4522 AttributeArray[149] = new AttributeInfo()
4523 {_name = "0x254", _description = "No Description Available.", _type = 0};
4524 AttributeArray[150] = new AttributeInfo()
4525 {_name = "0x258", _description = "No Description Available.", _type = 0};
4526 AttributeArray[151] = new AttributeInfo()
4527 {_name = "0x25C", _description = "No Description Available.", _type = 0};
4528 AttributeArray[152] = new AttributeInfo()
4529 {_name = "0x260", _description = "No Description Available.", _type = 0};
4530 AttributeArray[153] = new AttributeInfo()
4531 {_name = "0x264", _description = "No Description Available.", _type = 0};
4532 AttributeArray[154] = new AttributeInfo()
4533 {_name = "0x268", _description = "No Description Available.", _type = 0};
4534 AttributeArray[155] = new AttributeInfo()
4535 {_name = "0x26C", _description = "No Description Available.", _type = 0};
4536 AttributeArray[156] = new AttributeInfo()
4537 {_name = "0x270", _description = "No Description Available.", _type = 0};
4538 AttributeArray[157] = new AttributeInfo()
4539 {_name = "0x274", _description = "No Description Available.", _type = 0};
4540 AttributeArray[158] = new AttributeInfo()
4541 {_name = "0x278", _description = "No Description Available.", _type = 0};
4542 AttributeArray[159] = new AttributeInfo()
4543 {_name = "0x27C", _description = "No Description Available.", _type = 0};
4544 AttributeArray[160] = new AttributeInfo()
4545 {_name = "0x280", _description = "No Description Available.", _type = 0};
4546 AttributeArray[161] = new AttributeInfo()
4547 {_name = "0x284", _description = "No Description Available.", _type = 0};
4548 AttributeArray[162] = new AttributeInfo()
4549 {_name = "0x288", _description = "No Description Available.", _type = 0};
4550 AttributeArray[163] = new AttributeInfo()
4551 {_name = "*0x28C", _description = "No Description Available.", _type = 1};
4552 AttributeArray[164] = new AttributeInfo()
4553 {_name = "*0x290", _description = "No Description Available.", _type = 1};
4554 AttributeArray[165] = new AttributeInfo()
4555 {_name = "*0x294", _description = "No Description Available.", _type = 1};
4556 AttributeArray[166] = new AttributeInfo()
4557 {_name = "0x298", _description = "No Description Available.", _type = 0};
4558 AttributeArray[167] = new AttributeInfo()
4559 {_name = "*0x29C", _description = "No Description Available.", _type = 1};
4560 AttributeArray[168] = new AttributeInfo()
4561 {_name = "0x2A0", _description = "No Description Available.", _type = 0};
4562 AttributeArray[169] = new AttributeInfo()
4563 {_name = "0x2A4", _description = "No Description Available.", _type = 0};
4564 AttributeArray[170] = new AttributeInfo()
4565 {_name = "0x2A8", _description = "No Description Available.", _type = 0};
4566 AttributeArray[171] = new AttributeInfo()
4567 {_name = "0x2AC", _description = "No Description Available.", _type = 0};
4568 AttributeArray[172] = new AttributeInfo()
4569 {_name = "0x2B0", _description = "No Description Available.", _type = 0};
4570 AttributeArray[173] = new AttributeInfo()
4571 {_name = "0x2B4", _description = "No Description Available.", _type = 0};
4572 AttributeArray[174] = new AttributeInfo()
4573 {_name = "0x2B8", _description = "No Description Available.", _type = 0};
4574 AttributeArray[175] = new AttributeInfo()
4575 {_name = "0x2BC", _description = "No Description Available.", _type = 0};
4576 AttributeArray[176] = new AttributeInfo()
4577 {_name = "*0x2C0", _description = "No Description Available.", _type = 1};
4578 AttributeArray[177] = new AttributeInfo()
4579 {_name = "*0x2C4", _description = "No Description Available.", _type = 1};
4580 AttributeArray[178] = new AttributeInfo()
4581 {_name = "*0x2C8", _description = "No Description Available.", _type = 1};
4582 AttributeArray[179] = new AttributeInfo()
4583 {_name = "*0x2CC", _description = "No Description Available.", _type = 1};
4584 AttributeArray[180] = new AttributeInfo()
4585 {_name = "*0x2D0", _description = "No Description Available.", _type = 1};
4586 AttributeArray[181] = new AttributeInfo()
4587 {_name = "*0x2D4", _description = "No Description Available.", _type = 1};
4588 AttributeArray[182] = new AttributeInfo()
4589 {_name = "*0x2D8", _description = "No Description Available.", _type = 1};
4590 AttributeArray[183] = new AttributeInfo()
4591 {_name = "*0x2DC", _description = "No Description Available.", _type = 1};
4592 AttributeArray[184] = new AttributeInfo()
4593 {_name = "*0x2E0", _description = "No Description Available.", _type = 1};
4594 }
4595
4596 //string s = "AttributeArray = new AttributeInfo[185];";
4597 //string e = "";
4598 //int x = 0;
4599 //foreach (AttributeInfo v in AttributeArray)
4600 // e += "\nAttributeArray[" + x++ + "] = new AttributeInfo() { _name = \"" + v._name + "\", _description = \"" + (v._description == "" ? "No Description Available." : v._description) + "\", _type = " + v._type.ToString().ToLower() + " };";
4601 //Console.WriteLine(s + e);
4602
4603 Params = new Dictionary<string, SectionParamInfo>();
4604 sr = null;
4605 loc = Application.StartupPath + "/MovesetData/CharSpecific/" + Parent.Name + ".txt";
4606 string name = "", attrName = "";
4607 if (File.Exists(loc))
4608 {
4609 using (sr = new StreamReader(loc))
4610 {
4611 while (!sr.EndOfStream)
4612 {
4613 name = sr.ReadLine();
4615 info._newName = sr.ReadLine();
4616 info._attributes = new List<AttributeInfo>();
4617 while (true && !sr.EndOfStream)
4618 {
4619 if (string.IsNullOrEmpty(attrName = sr.ReadLine()))
4620 {
4621 break;
4622 }
4623 else
4624 {
4625 AttributeInfo i = new AttributeInfo();
4626 i._name = attrName;
4627 i._description = sr.ReadLine();
4628 i._type = int.Parse(sr.ReadLine());
4629 info._attributes.Add(i);
4630 sr.ReadLine();
4631 }
4632 }
4633
4634 if (!Params.ContainsKey(name))
4635 {
4636 Params.Add(name, info);
4637 }
4638 }
4639 }
4640 }
4641 }
Definition: AttributeInfo.cs:9
string _name
Definition: AttributeInfo.cs:10
int _type
Definition: AttributeInfo.cs:12
string _description
Definition: AttributeInfo.cs:11
Definition: Helpers.cs:436
List< AttributeInfo > _attributes
Definition: Helpers.cs:438
AttributeInfo[] AttributeArray
Definition: MoveDefNode.cs:3442
string[] iRequirements
Definition: MoveDefNode.cs:3438
string[] iAirGroundStats
Definition: MoveDefNode.cs:3439
string[] iGFXFiles
Definition: MoveDefNode.cs:3441
string[] iCollisionStats
Definition: MoveDefNode.cs:3440
string _name
Definition: ResourceNode.cs:139

◆ OnCalculateSize()

override int BrawlLib.SSBB.ResourceNodes.MoveDefNode.OnCalculateSize ( bool  force)
inlinevirtual

Reimplemented from BrawlLib.SSBB.ResourceNodes.ResourceNode.

4746 {
4747 int size = 0x20;
4748 _postProcessNodes = new List<MoveDefEntryNode>();
4749 _lookupOffsets = new LookupManager();
4750 lookupCount = 0;
4751 lookupLen = 0;
4752 refTable = new CompactStringTable();
4753 foreach (MoveDefEntryNode e in sections._sectionList)
4754 {
4755 e._lookupCount = 0;
4756 if (e is MoveDefExternalNode)
4757 {
4758 MoveDefExternalNode ext = e as MoveDefExternalNode;
4759 if (ext._refs.Count > 0)
4760 {
4761 MoveDefEntryNode entry = ext._refs[0];
4762
4763 if ((entry.Parent is MoveDefDataNode || entry.Parent is MoveDefMiscNode) && !entry.isExtra)
4764 {
4765 lookupCount++;
4766 }
4767
4768 if (!(entry is MoveDefRawDataNode))
4769 {
4770 entry.CalculateSize(true);
4771 }
4772 else if (entry.Children.Count > 0)
4773 {
4774 int off = 0;
4775 foreach (MoveDefEntryNode n in entry.Children)
4776 {
4777 off += n.CalculateSize(true);
4778 entry._lookupCount += n._lookupCount;
4779 }
4780
4781 entry._entryLength = entry._calcSize = off;
4782 }
4783 else
4784 {
4785 entry.CalculateSize(true);
4786 }
4787
4788 e._lookupCount = entry._lookupCount;
4789 e._childLength = entry._childLength;
4790 e._entryLength = entry._entryLength;
4791 e._calcSize = entry._calcSize;
4792 }
4793 else
4794 {
4795 e.CalculateSize(true);
4796 }
4797 }
4798 else
4799 {
4800 e.CalculateSize(true);
4801 }
4802
4803 size += (e._calcSize == 0 ? e._childLength + e._entryLength : e._calcSize) + 8;
4804 lookupCount += e._lookupCount;
4805 refTable.Add(e.Name);
4806 }
4807
4808 refCount = 0;
4809 if (references != null)
4810 {
4811 foreach (MoveDefExternalNode e in references.Children)
4812 {
4813 if (e._refs.Count > 0)
4814 {
4815 refTable.Add(e.Name);
4816 size += 8;
4817 refCount++;
4818 }
4819
4820 //references don't use lookup table
4821 //lookupCount += e._refs.Count - 1;
4822 }
4823 }
4824
4825 return size + (lookupLen = lookupCount * 4) + refTable.TotalSize;
4826 }
int TotalSize
Definition: MoveDefStringTables.cs:71
void Add(string s)
Definition: MoveDefStringTables.cs:62
int lookupCount
Definition: MoveDefNode.cs:4743
List< MoveDefEntryNode > _postProcessNodes
Definition: MoveDefNode.cs:4740
int lookupLen
Definition: MoveDefNode.cs:4743
MoveDefReferenceNode references
Definition: MoveDefNode.cs:3455
MoveDefSectionNode sections
Definition: MoveDefNode.cs:3456
static LookupManager _lookupOffsets
Definition: MoveDefNode.cs:4742
CompactStringTable refTable
Definition: MoveDefNode.cs:3459
List< MoveDefEntryNode > _sectionList
Definition: MoveDefNode.cs:5123

◆ OnInitialize()

override bool BrawlLib.SSBB.ResourceNodes.MoveDefNode.OnInitialize ( )
inlinevirtual

Reimplemented from BrawlLib.SSBB.ResourceNodes.U8EntryNode.

3486 {
3487 if (_name == null)
3488 {
3489 _name = "MoveDef_" + Parent.Name;
3490 }
3491
3492 nodeDictionary = new SortedDictionary<int, MoveDefEntryNode>();
3493
3494 dataSize = Header->_fileSize;
3495 lookupOffset = Header->_lookupOffset;
3496 numLookupEntries = Header->_lookupEntryCount;
3497 numDataTable = Header->_dataTableEntryCount;
3498 numExternalSubRoutine = Header->_externalSubRoutineCount;
3499
3500 BaseAddress = (VoidPtr) Header + 0x20;
3501 return true;
3502 }
static SortedDictionary< int, MoveDefEntryNode > nodeDictionary
Definition: MoveDefNode.cs:3482
VoidPtr BaseAddress
Definition: MoveDefNode.cs:3476
ResourceNode Parent
Definition: ResourceNode.cs:245
Definition: VoidPtr.cs:9
bint _dataTableEntryCount
Definition: FighterDefinition.cs:12
bint _lookupEntryCount
Definition: FighterDefinition.cs:11
bint _lookupOffset
Definition: FighterDefinition.cs:10
bint _externalSubRoutineCount
Definition: FighterDefinition.cs:13
bint _fileSize
Definition: FighterDefinition.cs:9

◆ OnPopulate()

override void BrawlLib.SSBB.ResourceNodes.MoveDefNode.OnPopulate ( )
inlinevirtual

Reimplemented from BrawlLib.SSBB.ResourceNodes.ResourceNode.

4646 {
4647 _subRoutines = new SortedDictionary<int, MoveDefActionNode>();
4648 _externalRefs = new List<ResourceNode>();
4649 _externalSections = new List<MoveDefExternalNode>();
4650 _lookupSizes = new Dictionary<int, MoveDefLookupOffsetNode>();
4651 _events = new Dictionary<uint, List<MoveDefEventNode>>();
4652 StatusIDs = new bool[0];
4653
4655 LoadOtherData();
4656
4657 //Parse references first but don't add to children yet
4658 if (numExternalSubRoutine > 0)
4659 {
4660 (references = new MoveDefReferenceNode(Header->StringTable) {_parent = this}).Initialize(this,
4661 new DataSource(Header->ExternalSubRoutines, numExternalSubRoutine * 8));
4663 }
4664
4665 (sections = new MoveDefSectionNode(Header->_fileSize, (VoidPtr) Header->StringTable)).Initialize(this,
4666 new DataSource(Header->DataTable, Header->_dataTableEntryCount * 8));
4667 (lookupNode = new MoveDefLookupNode(Header->_lookupEntryCount) {_parent = this}).Initialize(this,
4668 new DataSource(Header->LookupEntries, Header->_lookupEntryCount * 4));
4669
4670 //Now add to children
4671 if (references != null)
4672 {
4673 Children.Add(references);
4674 }
4675
4676 MoveDefSubRoutineListNode g = new MoveDefSubRoutineListNode() {_name = "SubRoutines", _parent = this};
4677
4678 _subRoutineGroup = g;
4679 _subRoutineList = g.Children;
4680
4681 //Load subroutines
4682 //if (!RootNode._origPath.Contains("Test"))
4683 {
4685 foreach (MoveDefEntryNode p in sections._sectionList)
4686 {
4687 if (p is MoveDefExternalNode && (p as MoveDefExternalNode)._refs.Count == 0)
4688 {
4689 sections.Children.Add(p);
4690 }
4691 }
4692 }
4693 g._name = "[" + g.Children.Count + "] " + g._name;
4694
4695 _children.Add(g);
4696
4697 _children.Sort(MoveDefEntryNode.Compare);
4698
4699 _children[0]._children.Sort(MoveDefEntryNode.Compare);
4700 for (int i = 0; i < _children[0]._children.Count; i++)
4701 {
4702 _children[0]._children[i]._name = "SubRoutine" + i;
4703 }
4704
4705 int x = 0;
4706 {
4707 foreach (MoveDefActionNode i in _subRoutines.Values)
4708 {
4709 i._name = "SubRoutine" + x;
4710 foreach (MoveDefEventNode e in i._actionRefs)
4711 {
4712 if (e.EventID == 218104320)
4713 {
4714 if (e.Children[1] is MoveDefEventOffsetNode mdo)
4715 {
4716 mdo.index = x;
4717 }
4718 }
4719 else
4720 {
4721 if (e.Children[0] is MoveDefEventOffsetNode mdo)
4722 {
4723 mdo.index = x;
4724 }
4725 }
4726 }
4727
4728 x++;
4729 }
4730 }
4731
4732 //for (int i = 0; i < lookupNode.Children.Count; i++)
4733 // if ((lookupNode.Children[i] as MoveDefLookupOffsetNode).remove)
4734 // lookupNode.Children[i--].Remove();
4735
4736 //foreach (var i in Paths)
4737 // Console.WriteLine(i.ToString());
4738 }
override void Initialize(ResourceNode parent, DataSource origSource, DataSource uncompSource)
Definition: ARCNode.cs:1101
MoveDefLookupNode lookupNode
Definition: MoveDefNode.cs:3457
bool[] StatusIDs
Definition: MoveDefNode.cs:3431
Dictionary< uint, List< MoveDefEventNode > > _events
Definition: MoveDefNode.cs:3433
ResourceNode _subRoutineGroup
Definition: MoveDefNode.cs:3450
static void LoadEventDictionary()
Definition: MoveDefNode.cs:312
void LoadOtherData()
Definition: MoveDefNode.cs:3509
ResourceNode _parent
Definition: ResourceNode.cs:142
List< ResourceNode > _children
Definition: ResourceNode.cs:143
void Populate(int levels=-1)
Definition: ResourceNode.cs:613
FDefStringTable * StringTable
Definition: FighterDefinition.cs:29
FDefStringEntry * DataTable
Definition: FighterDefinition.cs:22
bint * LookupEntries
Definition: FighterDefinition.cs:20
FDefStringEntry * ExternalSubRoutines
Definition: FighterDefinition.cs:25

◆ OnRebuild()

override void BrawlLib.SSBB.ResourceNodes.MoveDefNode.OnRebuild ( VoidPtr  address,
int  length,
bool  force 
)
inlinevirtual

Reimplemented from BrawlLib.SSBB.ResourceNodes.ResourceNode.

4831 {
4832 //Children are built in order but before their parent!
4833
4834 _rebuildBase = address + 0x20;
4835
4836 FDefHeader* header = (FDefHeader*) address;
4837 header->_fileSize = length;
4838 header->_externalSubRoutineCount = refCount;
4841 header->_pad1 = header->_pad2 = header->_pad3 = 0;
4842
4843 VoidPtr dataAddress = _rebuildBase;
4844
4845 int lookupOffset = 0, sectionsOffset = 0;
4846 foreach (MoveDefEntryNode e in sections._sectionList)
4847 {
4848 lookupOffset += e._calcSize == 0 ? e._childLength + e._entryLength : e._calcSize;
4849 sectionsOffset += e._childLength;
4850 }
4851
4852 VoidPtr lookupAddress = dataAddress + lookupOffset;
4853 VoidPtr sectionsAddr = dataAddress + sectionsOffset;
4854 VoidPtr dataHeaderAddr = dataAddress;
4855
4856 foreach (MoveDefEntryNode e in sections._sectionList)
4857 {
4858 e._lookupOffsets.Clear();
4859 if (e.Name == "data" || e.Name == "dataCommon")
4860 {
4861 dataHeaderAddr = sectionsAddr; //Don't rebuild yet
4862 sectionsAddr += e._entryLength;
4863 }
4864 else //Rebuild other sections first
4865 {
4866 if (e is MoveDefExternalNode)
4867 {
4868 MoveDefExternalNode ext = e as MoveDefExternalNode;
4869 if (ext._refs.Count > 0)
4870 {
4871 MoveDefEntryNode entry = ext._refs[0];
4872
4873 if (!(entry is MoveDefRawDataNode))
4874 {
4875 entry.Rebuild(sectionsAddr, entry._calcSize, true);
4876 }
4877 else if (entry.Children.Count > 0)
4878 {
4879 entry._entryOffset = sectionsAddr;
4880 int off = 0;
4881 foreach (MoveDefEntryNode n in entry.Children)
4882 {
4883 n.Rebuild(sectionsAddr + off, n._calcSize, true);
4884 off += n._calcSize;
4885 entry._lookupOffsets.AddRange(n._lookupOffsets);
4886 }
4887 }
4888 else
4889 {
4890 entry.Rebuild(sectionsAddr, entry._calcSize, true);
4891 }
4892
4893 e._entryOffset = entry._entryOffset;
4894 e._lookupOffsets = entry._lookupOffsets;
4895 }
4896 else
4897 {
4898 e.Rebuild(sectionsAddr, e._calcSize, true);
4899 }
4900 }
4901 else
4902 {
4903 e.Rebuild(sectionsAddr, e._calcSize, true);
4904 }
4905
4906 if (e._lookupCount != e._lookupOffsets.Count &&
4907 !((e as MoveDefExternalNode)._refs[0] is MoveDefActionNode))
4908 {
4909 Console.WriteLine();
4910 }
4911
4912 _lookupOffsets.AddRange(e._lookupOffsets.ToArray());
4913 sectionsAddr += e._calcSize;
4914 }
4915 }
4916
4917 if (data != null)
4918 {
4919 data.dataHeaderAddr = dataHeaderAddr;
4920 data.Rebuild(address + 0x20, data._childLength, true);
4921 }
4922 else if (dataCommon != null)
4923 {
4924 dataCommon.dataHeaderAddr = dataHeaderAddr;
4925 dataCommon.Rebuild(address + 0x20, dataCommon._childLength, true);
4926 }
4927
4928 foreach (MoveDefExternalNode e in references.Children)
4929 {
4930 for (int i = 0; i < e._refs.Count; i++)
4931 {
4932 bint* addr = (bint*) e._refs[i]._entryOffset;
4933 if (i == e._refs.Count - 1)
4934 {
4935 *addr = -1;
4936 }
4937 else
4938 {
4939 *addr = (int) e._refs[i + 1]._entryOffset - (int) _rebuildBase;
4940
4941 //references don't use lookup table
4942 //_lookupOffsets.Add((int)addr - (int)_rebuildBase);
4943 }
4944 }
4945 }
4946
4947 _lookupOffsets.values.Sort();
4948
4950 {
4951 Console.WriteLine(lookupCount - _lookupOffsets.Count);
4952 }
4953
4954 header->_lookupOffset = (int) lookupAddress - (int) _rebuildBase;
4956
4957 if (data != null && data.warioSwing4StringOffset > 0 && data.warioParams6 != null)
4958 {
4959 ((WarioExtraParams6*) data.warioParams6._entryOffset)->_offset = data.warioSwing4StringOffset;
4960 }
4961
4962 int val = -1;
4963 if (data != null && data.zssFirstOffset > 0)
4964 {
4965 val = data.zssFirstOffset;
4966 }
4967
4968 bint* values = (bint*) lookupAddress;
4969 foreach (int i in _lookupOffsets.values)
4970 {
4971 if (val == i && data != null && data.zssParams8 != null)
4972 {
4974 *((bint*) data.zssParams8._entryOffset + 1) = (int) values - (int) _rebuildBase;
4975 }
4976
4977 *values++ = i;
4978 }
4979
4980 dataAddress = (VoidPtr) values;
4981 VoidPtr refTableAddr = dataAddress + sections._sectionList.Count * 8 + refCount * 8;
4982 refTable.WriteTable(refTableAddr);
4983
4984 foreach (MoveDefEntryNode e in sections._sectionList)
4985 {
4986 *values++ = (int) e._entryOffset - (int) _rebuildBase;
4987 *values++ = (int) refTable[e.Name] - (int) refTableAddr;
4988 }
4989
4990 foreach (MoveDefExternalNode e in references.Children)
4991 {
4992 if (e._refs.Count > 0)
4993 {
4994 *values++ = (int) e._refs[0]._entryOffset - (int) _rebuildBase;
4995 *values++ = (int) refTable[e.Name] - (int) refTableAddr;
4996 }
4997 }
4998
4999 //Some nodes handle rebuilding their own children,
5000 //so if one of those children has changed, the node will stay dirty and may rebuild over itself.
5001 //Manually set IsDirty to false to avoid that.
5002 IsDirty = false;
5003
5005 }
void WriteTable(VoidPtr address)
Definition: MoveDefStringTables.cs:91
int Count
Definition: MoveDefNode.cs:5011
List< int > values
Definition: MoveDefNode.cs:5010
void AddRange(int[] vals)
Definition: MoveDefNode.cs:5032
int warioSwing4StringOffset
Definition: MoveDefDataNode.cs:188
int zssFirstOffset
Definition: MoveDefDataNode.cs:183
SZerosuitExtraParams8Node zssParams8
Definition: MoveDefDataNode.cs:181
Wario6 warioParams6
Definition: MoveDefDataNode.cs:187
int _childLength
Definition: MoveDefNode.cs:24
VoidPtr _entryOffset
Definition: MoveDefNode.cs:23
override void Rebuild(bool force)
Definition: MoveDefNode.cs:93
VoidPtr _rebuildBase
Definition: MoveDefNode.cs:4741
virtual bool IsDirty
Definition: ResourceNode.cs:344
Definition: FighterDefinition.cs:8
int _pad3
Definition: FighterDefinition.cs:14
int _pad2
Definition: FighterDefinition.cs:14
int _pad1
Definition: FighterDefinition.cs:14

◆ SetBoneIndex()

void BrawlLib.SSBB.ResourceNodes.MoveDefNode.SetBoneIndex ( ref int  boneIndex)
inline
3398 {
3399 if (RootNode.Name.StartsWith("FitWario") || RootNode.Name == "FitKirby")
3400 {
3401 if (data != null)
3402 {
3403 if (data.warioParams8 != null)
3404 {
3405 MoveDefSectionParamNode p1 = data.warioParams8.Children[0] as MoveDefSectionParamNode;
3406 MoveDefSectionParamNode p2 = data.warioParams8.Children[1] as MoveDefSectionParamNode;
3407 bint* values = (bint*) p2.AttributeBuffer.Address;
3408 int i = 0;
3409 for (; i < p1.AttributeBuffer.Length / 4; i++)
3410 {
3411 if (values[i] == boneIndex)
3412 {
3413 break;
3414 }
3415 }
3416
3417 if (p2.AttributeBuffer.Length / 4 > i)
3418 {
3419 int value = -1;
3420 if ((value = ((bint*) p2.AttributeBuffer.Address)[i]) >= 0)
3421 {
3422 boneIndex = value;
3423 return;
3424 }
3425 }
3426 }
3427 }
3428 }
3429 }

Member Data Documentation

◆ _actions

MoveDefActionListNode BrawlLib.SSBB.ResourceNodes.MoveDefNode._actions

◆ _dictionaryChanged

bool BrawlLib.SSBB.ResourceNodes.MoveDefNode._dictionaryChanged = false
static

◆ _events

Dictionary<uint, List<MoveDefEventNode> > BrawlLib.SSBB.ResourceNodes.MoveDefNode._events

◆ _externalRefs

List<ResourceNode> BrawlLib.SSBB.ResourceNodes.MoveDefNode._externalRefs

◆ _externalSections

List<MoveDefExternalNode> BrawlLib.SSBB.ResourceNodes.MoveDefNode._externalSections

◆ _lookupEntries

Dictionary<int, int> BrawlLib.SSBB.ResourceNodes.MoveDefNode._lookupEntries

◆ _lookupOffsets

LookupManager BrawlLib.SSBB.ResourceNodes.MoveDefNode._lookupOffsets
static

◆ _lookupSizes

Dictionary<int, MoveDefLookupOffsetNode> BrawlLib.SSBB.ResourceNodes.MoveDefNode._lookupSizes

◆ _model

MDL0Node BrawlLib.SSBB.ResourceNodes.MoveDefNode._model = null

◆ _paths

SortedList<int, string> BrawlLib.SSBB.ResourceNodes.MoveDefNode._paths = new SortedList<int, string>()

◆ _postProcessNodes

List<MoveDefEntryNode> BrawlLib.SSBB.ResourceNodes.MoveDefNode._postProcessNodes

◆ _rebuildBase

VoidPtr BrawlLib.SSBB.ResourceNodes.MoveDefNode._rebuildBase

◆ _subActions

MoveDefActionListNode BrawlLib.SSBB.ResourceNodes.MoveDefNode._subActions

◆ _subRoutineGroup

ResourceNode BrawlLib.SSBB.ResourceNodes.MoveDefNode._subRoutineGroup

◆ _subRoutineList

List<ResourceNode> BrawlLib.SSBB.ResourceNodes.MoveDefNode._subRoutineList

◆ _subRoutines

SortedDictionary<int, MoveDefActionNode> BrawlLib.SSBB.ResourceNodes.MoveDefNode._subRoutines

◆ AttributeArray

AttributeInfo [] BrawlLib.SSBB.ResourceNodes.MoveDefNode.AttributeArray

◆ BaseAddress

VoidPtr BrawlLib.SSBB.ResourceNodes.MoveDefNode.BaseAddress

◆ data

MoveDefDataNode BrawlLib.SSBB.ResourceNodes.MoveDefNode.data

◆ dataCommon

MoveDefDataCommonNode BrawlLib.SSBB.ResourceNodes.MoveDefNode.dataCommon

◆ EventDictionary

SortedDictionary<long, ActionEventInfo> BrawlLib.SSBB.ResourceNodes.MoveDefNode.EventDictionary
static
Initial value:
=
new SortedDictionary<long, ActionEventInfo>()

◆ iAirGroundStats

string [] BrawlLib.SSBB.ResourceNodes.MoveDefNode.iAirGroundStats

◆ iCollisionStats

string [] BrawlLib.SSBB.ResourceNodes.MoveDefNode.iCollisionStats

◆ iGFXFiles

string [] BrawlLib.SSBB.ResourceNodes.MoveDefNode.iGFXFiles

◆ iRequirements

string [] BrawlLib.SSBB.ResourceNodes.MoveDefNode.iRequirements

◆ lookupCount

int BrawlLib.SSBB.ResourceNodes.MoveDefNode.lookupCount

◆ lookupLen

int BrawlLib.SSBB.ResourceNodes.MoveDefNode.lookupLen

◆ lookupNode

MoveDefLookupNode BrawlLib.SSBB.ResourceNodes.MoveDefNode.lookupNode

◆ nodeDictionary

SortedDictionary<int, MoveDefEntryNode> BrawlLib.SSBB.ResourceNodes.MoveDefNode.nodeDictionary
static
Initial value:
=
new SortedDictionary<int, MoveDefEntryNode>()

◆ Params

Dictionary<string, SectionParamInfo> BrawlLib.SSBB.ResourceNodes.MoveDefNode.Params

◆ references

MoveDefReferenceNode BrawlLib.SSBB.ResourceNodes.MoveDefNode.references

◆ refTable

CompactStringTable BrawlLib.SSBB.ResourceNodes.MoveDefNode.refTable

◆ sections

MoveDefSectionNode BrawlLib.SSBB.ResourceNodes.MoveDefNode.sections

◆ StatusIDs

bool [] BrawlLib.SSBB.ResourceNodes.MoveDefNode.StatusIDs

Property Documentation

◆ DataSize

string BrawlLib.SSBB.ResourceNodes.MoveDefNode.DataSize
get

◆ DataTableCount

int BrawlLib.SSBB.ResourceNodes.MoveDefNode.DataTableCount
get

◆ ExtSubRoutines

int BrawlLib.SSBB.ResourceNodes.MoveDefNode.ExtSubRoutines
get

◆ LookupCount

int BrawlLib.SSBB.ResourceNodes.MoveDefNode.LookupCount
get

◆ LookupOffset

int BrawlLib.SSBB.ResourceNodes.MoveDefNode.LookupOffset
get

◆ Model

MDL0Node BrawlLib.SSBB.ResourceNodes.MoveDefNode.Model
get

◆ NodeDictionary

SortedDictionary<int, MoveDefEntryNode> BrawlLib.SSBB.ResourceNodes.MoveDefNode.NodeDictionary
get

◆ Paths

SortedList<int, string> BrawlLib.SSBB.ResourceNodes.MoveDefNode.Paths
get

◆ ResourceFileType

override ResourceType BrawlLib.SSBB.ResourceNodes.MoveDefNode.ResourceFileType
get

The documentation for this class was generated from the following file: