using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace HaloPlugins.Xbox
{
    public class mulg : TagDefinition
    {
       public mulg() : base("mulg", "multiplayer_globals", 16)
       {
           Fields.AddRange(new IMetaNode[] {
           new TagBlock("Universal", 32, 1, new IMetaNode[] { 
               new TagReference("Random_Player_names", "unic"),
               new TagReference("Team_names", "unic"),
               new TagBlock("Team Colors", 12, 32, new IMetaNode[] { 
                   new Value("Color Red", typeof(float)),
                   new Value("Color Green", typeof(float)),
                   new Value("Color Blue", typeof(float)),
               }),
               new TagReference("Multiplayer_Text", "unic"),
           }),
           new TagBlock("Runtime", 1384, 1, new IMetaNode[] { 
               new TagReference("Flag", "item"),
               new TagReference("Ball", "item"),
               new TagReference("Unit", "unit"),
               new TagReference("Flag_Shader", "shad"),
               new TagReference("Hill_Shader", "shad"),
               new TagReference("Head", "item"),
               new TagReference("Juggernaut_Powerup", "item"),
               new TagReference("Bomb", "item"),
               new Padding(40),
               new TagBlock("Weapon", 8, 20, new IMetaNode[] { 
                   new TagReference("Weapon", "item"),
               }),
               new TagBlock("Vehicles", 8, 20, new IMetaNode[] { 
                   new TagReference("Vehicle", "vehi"),
               }),
               new TagBlock("Grenades", 8, -1, new IMetaNode[] { 
                   new TagReference("Weapon", "weap"),
               }),
               new TagBlock("Powerups", 8, -1, new IMetaNode[] { 
                   new TagReference("Weapon", "weap"),
               }),
               new TagReference("In_Game_Text", "unic"),
               new TagBlock("Sounds", 8, 60, new IMetaNode[] { 
                   new TagReference("Sound", "snd!"),
               }),
               new TagBlock("General Events", 168, 128, new IMetaNode[] { 
                   new Flags("Flags", new string[] { "Quantity_Message" }, 32),
                   new HaloPlugins.Enum("Event", new string[] { "Kill", "Suicide", "Kill_Teammate", "Victory", "Team_Victory", "unused", "unused", "1_Min_To_Win", "Team_1_Min_To_Win", "30_Sec_To_Win", "Team_30_Sec_To_Win", "Player_Quit", "Player_Joined", "Killed_By_Unknown", "30_Minutes_Left", "15_Minutes_Left", "5_Minutes_Left", "1_Minute_Left", "Time_Expired", "Game_Over", "Respawn_Tick", "Last_Respawn_Tick", "Teleporter_Used", "Player_Changed_Team", "Player_Rejoined", "Gained_Lead", "Gained_Team_Lead", "Lost_Lead", "Lost_Team_Lead", "Tied_Leader", "Tied_Team_Leader", "Round_Over", "30_Seconds_Left", "10_Seconds_Left", "Kill_(Falling)", "Kill_(Collision)", "Kill_(Melee)", "Sudden_Death", "Player_Booted_Player", "Kill_(Flag_Carrier)", "Kill_(Bomb_Carrier)", "Kill_(Sticky_Grenade)", "Kill_(Standard_Melee)", "Boarded_Vehicle", "Start_Team_Notice", "Telefrag", "10_Sec_To_Win", "Team_10_Sec_To_Win" }, 16),
                   new HaloPlugins.Enum("Audience", new string[] { "Cause_Player", "Cause_Team", "Effect_Player", "Effect_Team", "All" }, 16),
                   new Padding(4),
                   new StringId("Display String"),
                   new HaloPlugins.Enum("Required Field", new string[] { "None", "Cause_Player", "Cause_Team", "Effect_Player", "Effect_Team" }, 16),
                   new HaloPlugins.Enum("Excluded Audience", new string[] { "None", "Cause_Player", "Cause_Team", "Effect_Player", "Effect_Team" }, 16),
                   new StringId("Primary String"),
                   new Value("Primary String Duration", typeof(float)),
                   new StringId("Pural Display String"),
                   new Padding(28),
                   new Value("Sound Delay (Announcer Only)", typeof(float)),
                   new Flags("Sound Flags", new string[] { "Announcer_Sound" }, 32),
                   new TagReference("English_Sound", "snd!"),
                   new TagReference("Japanese_Sound", "snd!"),
                   new TagReference("German_Sound", "snd!"),
                   new TagReference("French_Sound", "snd!"),
                   new TagReference("Spainish_Sound", "snd!"),
                   new TagReference("Italinan_Sound", "snd!"),
                   new TagReference("Korean_Sound", "snd!"),
                   new TagReference("Chinese_Sound", "snd!"),
                   new TagReference("Portuguese_Sound", "snd!"),
                   new TagBlock("Sound Permutations", 80, 10, new IMetaNode[] { 
                       new Flags("Sound Flags", new string[] { "Announcer_Sound" }, 32),
                       new TagReference("English_Sound", "snd!"),
                       new TagReference("Japanese_Sound", "snd!"),
                       new TagReference("German_Sound", "snd!"),
                       new TagReference("French_Sound", "snd!"),
                       new TagReference("Spainish_Sound", "snd!"),
                       new TagReference("Italinan_Sound", "snd!"),
                       new TagReference("Korean_Sound", "snd!"),
                       new TagReference("Chinese_Sound", "snd!"),
                       new TagReference("Portuguese_Sound", "snd!"),
                       new Value("Probability", typeof(float)),
                   }),
                   new Padding(20),
               }),
               new TagBlock("Flavor Events", 168, 128, new IMetaNode[] { 
                   new Flags("Flags", new string[] { "Quantity_Message" }, 32),
                   new HaloPlugins.Enum("Event", new string[] { "Double_Kill", "Triple_Kill", "Killtacular", "Killing_Spree", "Running_Riot", "Well_Placed_Kill", "Broke_Killing_Spree", "Kill_Frenzy", "Killtrocity", "Killimajaro", "15_In_A_Row", "20_In_A_Row", "25_In_A_Row" }, 16),
                   new HaloPlugins.Enum("Audience", new string[] { "Cause_Player", "Cause_Team", "Effect_Player", "Effect_Team", "All" }, 16),
                   new Padding(4),
                   new StringId("Display String"),
                   new HaloPlugins.Enum("Required Field", new string[] { "None", "Cause_Player", "Cause_Team", "Effect_Player", "Effect_Team" }, 16),
                   new HaloPlugins.Enum("Excluded Audience", new string[] { "None", "Cause_Player", "Cause_Team", "Effect_Player", "Effect_Team" }, 16),
                   new StringId("Primary String"),
                   new Value("Primary String Duration", typeof(float)),
                   new StringId("Pural Display String"),
                   new Padding(28),
                   new Value("Sound Delay (Announcer Only)", typeof(float)),
                   new Flags("Sound Flags", new string[] { "Announcer_Sound" }, 32),
                   new TagReference("English_Sound", "snd!"),
                   new TagReference("Japanese_Sound", "snd!"),
                   new TagReference("German_Sound", "snd!"),
                   new TagReference("French_Sound", "snd!"),
                   new TagReference("Spainish_Sound", "snd!"),
                   new TagReference("Italinan_Sound", "snd!"),
                   new TagReference("Korean_Sound", "snd!"),
                   new TagReference("Chinese_Sound", "snd!"),
                   new TagReference("Portuguese_Sound", "snd!"),
                   new TagBlock("Sound Permutations", 80, 10, new IMetaNode[] { 
                       new Flags("Sound Flags", new string[] { "Announcer_Sound" }, 32),
                       new TagReference("English_Sound", "snd!"),
                       new TagReference("Japanese_Sound", "snd!"),
                       new TagReference("German_Sound", "snd!"),
                       new TagReference("French_Sound", "snd!"),
                       new TagReference("Spainish_Sound", "snd!"),
                       new TagReference("Italinan_Sound", "snd!"),
                       new TagReference("Korean_Sound", "snd!"),
                       new TagReference("Chinese_Sound", "snd!"),
                       new TagReference("Portuguese_Sound", "snd!"),
                       new Value("Probability", typeof(float)),
                   }),
                   new Padding(20),
               }),
               new TagBlock("Slayer Events", 168, 128, new IMetaNode[] { 
                   new Flags("Flags", new string[] { "Quantity_Message" }, 32),
                   new HaloPlugins.Enum("Event", new string[] { "Game_Start", "New_Target" }, 16),
                   new HaloPlugins.Enum("Audience", new string[] { "Cause_Player", "Cause_Team", "Effect_Player", "Effect_Team", "All" }, 16),
                   new Padding(4),
                   new StringId("Display String"),
                   new HaloPlugins.Enum("Required Field", new string[] { "None", "Cause_Player", "Cause_Team", "Effect_Player", "Effect_Team" }, 16),
                   new HaloPlugins.Enum("Excluded Audience", new string[] { "None", "Cause_Player", "Cause_Team", "Effect_Player", "Effect_Team" }, 16),
                   new StringId("Primary String"),
                   new Value("Primary String Duration", typeof(float)),
                   new StringId("Pural Display String"),
                   new Padding(28),
                   new Value("Sound Delay (Announcer Only)", typeof(float)),
                   new Flags("Sound Flags", new string[] { "Announcer_Sound" }, 32),
                   new TagReference("English_Sound", "snd!"),
                   new TagReference("Japanese_Sound", "snd!"),
                   new TagReference("German_Sound", "snd!"),
                   new TagReference("French_Sound", "snd!"),
                   new TagReference("Spainish_Sound", "snd!"),
                   new TagReference("Italinan_Sound", "snd!"),
                   new TagReference("Korean_Sound", "snd!"),
                   new TagReference("Chinese_Sound", "snd!"),
                   new TagReference("Portuguese_Sound", "snd!"),
                   new TagBlock("Sound Permutations", 80, 10, new IMetaNode[] { 
                       new Flags("Sound Flags", new string[] { "Announcer_Sound" }, 32),
                       new TagReference("English_Sound", "snd!"),
                       new TagReference("Japanese_Sound", "snd!"),
                       new TagReference("German_Sound", "snd!"),
                       new TagReference("French_Sound", "snd!"),
                       new TagReference("Spainish_Sound", "snd!"),
                       new TagReference("Italinan_Sound", "snd!"),
                       new TagReference("Korean_Sound", "snd!"),
                       new TagReference("Chinese_Sound", "snd!"),
                       new TagReference("Portuguese_Sound", "snd!"),
                       new Value("Probability", typeof(float)),
                   }),
                   new Padding(20),
               }),
               new TagBlock("CTF Events", 168, 128, new IMetaNode[] { 
                   new Flags("Flags", new string[] { "Quantity_Message" }, 32),
                   new HaloPlugins.Enum("Event", new string[] { "Game_Start", "Flag_Taken", "Flag_Dropped", "Flag_Returned_By_Player", "Flag_Returned_By_Timeout", "Flag_Captured", "Flag_New_Defensive_Team", "Flag_Return_Failure", "Side_Switch_Tick", "Side_Switch_Final_Tick", "Side_Switch_30_Seconds", "Side_Switch_10_Seconds", "Flag_Contested", "Flag_Capture_Failure" }, 16),
                   new HaloPlugins.Enum("Audience", new string[] { "Cause_Player", "Cause_Team", "Effect_Player", "Effect_Team", "All" }, 16),
                   new Padding(4),
                   new StringId("Display String"),
                   new HaloPlugins.Enum("Required Field", new string[] { "None", "Cause_Player", "Cause_Team", "Effect_Player", "Effect_Team" }, 16),
                   new HaloPlugins.Enum("Excluded Audience", new string[] { "None", "Cause_Player", "Cause_Team", "Effect_Player", "Effect_Team" }, 16),
                   new StringId("Primary String"),
                   new Value("Primary String Duration", typeof(float)),
                   new StringId("Pural Display String"),
                   new Padding(28),
                   new Value("Sound Delay (Announcer Only)", typeof(float)),
                   new Flags("Sound Flags", new string[] { "Announcer_Sound" }, 32),
                   new TagReference("English_Sound", "snd!"),
                   new TagReference("Japanese_Sound", "snd!"),
                   new TagReference("German_Sound", "snd!"),
                   new TagReference("French_Sound", "snd!"),
                   new TagReference("Spainish_Sound", "snd!"),
                   new TagReference("Italinan_Sound", "snd!"),
                   new TagReference("Korean_Sound", "snd!"),
                   new TagReference("Chinese_Sound", "snd!"),
                   new TagReference("Portuguese_Sound", "snd!"),
                   new TagBlock("Sound Permutations", 80, 10, new IMetaNode[] { 
                       new Flags("Sound Flags", new string[] { "Announcer_Sound" }, 32),
                       new TagReference("English_Sound", "snd!"),
                       new TagReference("Japanese_Sound", "snd!"),
                       new TagReference("German_Sound", "snd!"),
                       new TagReference("French_Sound", "snd!"),
                       new TagReference("Spainish_Sound", "snd!"),
                       new TagReference("Italinan_Sound", "snd!"),
                       new TagReference("Korean_Sound", "snd!"),
                       new TagReference("Chinese_Sound", "snd!"),
                       new TagReference("Portuguese_Sound", "snd!"),
                       new Value("Probability", typeof(float)),
                   }),
                   new Padding(20),
               }),
               new TagBlock("Oddball Events", 168, 128, new IMetaNode[] { 
                   new Flags("Flags", new string[] { "Quantity_Message" }, 32),
                   new HaloPlugins.Enum("Event", new string[] { "Game_Start", "Ball_Spawned", "Ball_Pickup", "Ball_Dropped", "Ball_Reset", "Ball_Tick" }, 16),
                   new HaloPlugins.Enum("Audience", new string[] { "Cause_Player", "Cause_Team", "Effect_Player", "Effect_Team", "All" }, 16),
                   new Padding(4),
                   new StringId("Display String"),
                   new HaloPlugins.Enum("Required Field", new string[] { "None", "Cause_Player", "Cause_Team", "Effect_Player", "Effect_Team" }, 16),
                   new HaloPlugins.Enum("Excluded Audience", new string[] { "None", "Cause_Player", "Cause_Team", "Effect_Player", "Effect_Team" }, 16),
                   new StringId("Primary String"),
                   new Value("Primary String Duration", typeof(float)),
                   new StringId("Pural Display String"),
                   new Padding(28),
                   new Value("Sound Delay (Announcer Only)", typeof(float)),
                   new Flags("Sound Flags", new string[] { "Announcer_Sound" }, 32),
                   new TagReference("English_Sound", "snd!"),
                   new TagReference("Japanese_Sound", "snd!"),
                   new TagReference("German_Sound", "snd!"),
                   new TagReference("French_Sound", "snd!"),
                   new TagReference("Spainish_Sound", "snd!"),
                   new TagReference("Italinan_Sound", "snd!"),
                   new TagReference("Korean_Sound", "snd!"),
                   new TagReference("Chinese_Sound", "snd!"),
                   new TagReference("Portuguese_Sound", "snd!"),
                   new TagBlock("Sound Permutations", 80, 10, new IMetaNode[] { 
                       new Flags("Sound Flags", new string[] { "Announcer_Sound" }, 32),
                       new TagReference("English_Sound", "snd!"),
                       new TagReference("Japanese_Sound", "snd!"),
                       new TagReference("German_Sound", "snd!"),
                       new TagReference("French_Sound", "snd!"),
                       new TagReference("Spainish_Sound", "snd!"),
                       new TagReference("Italinan_Sound", "snd!"),
                       new TagReference("Korean_Sound", "snd!"),
                       new TagReference("Chinese_Sound", "snd!"),
                       new TagReference("Portuguese_Sound", "snd!"),
                       new Value("Probability", typeof(float)),
                   }),
                   new Padding(20),
               }),
               new Padding(8),
               new TagBlock("KOTH Events", 168, 128, new IMetaNode[] { 
                   new Flags("Flags", new string[] { "Quantity_Message" }, 32),
                   new HaloPlugins.Enum("Event", new string[] { "Game_Start", "Hill_Controlled", "Hill_Contested", "Hill_Tick", "Hill_Move", "Hill_Controlled_Team", "Hill_Contested_Team" }, 16),
                   new HaloPlugins.Enum("Audience", new string[] { "Cause_Player", "Cause_Team", "Effect_Player", "Effect_Team", "All" }, 16),
                   new Padding(4),
                   new StringId("Display String"),
                   new HaloPlugins.Enum("Required Field", new string[] { "None", "Cause_Player", "Cause_Team", "Effect_Player", "Effect_Team" }, 16),
                   new HaloPlugins.Enum("Excluded Audience", new string[] { "None", "Cause_Player", "Cause_Team", "Effect_Player", "Effect_Team" }, 16),
                   new StringId("Primary String"),
                   new Value("Primary String Duration", typeof(float)),
                   new StringId("Pural Display String"),
                   new Padding(28),
                   new Value("Sound Delay (Announcer Only)", typeof(float)),
                   new Flags("Sound Flags", new string[] { "Announcer_Sound" }, 32),
                   new TagReference("English_Sound", "snd!"),
                   new TagReference("Japanese_Sound", "snd!"),
                   new TagReference("German_Sound", "snd!"),
                   new TagReference("French_Sound", "snd!"),
                   new TagReference("Spainish_Sound", "snd!"),
                   new TagReference("Italinan_Sound", "snd!"),
                   new TagReference("Korean_Sound", "snd!"),
                   new TagReference("Chinese_Sound", "snd!"),
                   new TagReference("Portuguese_Sound", "snd!"),
                   new TagBlock("Sound Permutations", 80, 10, new IMetaNode[] { 
                       new Flags("Sound Flags", new string[] { "Announcer_Sound" }, 32),
                       new TagReference("English_Sound", "snd!"),
                       new TagReference("Japanese_Sound", "snd!"),
                       new TagReference("German_Sound", "snd!"),
                       new TagReference("French_Sound", "snd!"),
                       new TagReference("Spainish_Sound", "snd!"),
                       new TagReference("Italinan_Sound", "snd!"),
                       new TagReference("Korean_Sound", "snd!"),
                       new TagReference("Chinese_Sound", "snd!"),
                       new TagReference("Portuguese_Sound", "snd!"),
                       new Value("Probability", typeof(float)),
                   }),
                   new Padding(20),
               }),
               new Padding(8),
               new TagBlock("Juggernaut Events", 168, 128, new IMetaNode[] { 
                   new Flags("Flags", new string[] { "Quantity_Message" }, 32),
                   new HaloPlugins.Enum("Event", new string[] { "Game_Start", "New_Juggernaught", "Juggernaught_Killed" }, 16),
                   new HaloPlugins.Enum("Audience", new string[] { "Cause_Player", "Cause_Team", "Effect_Player", "Effect_Team", "All" }, 16),
                   new Padding(4),
                   new StringId("Display String"),
                   new HaloPlugins.Enum("Required Field", new string[] { "None", "Cause_Player", "Cause_Team", "Effect_Player", "Effect_Team" }, 16),
                   new HaloPlugins.Enum("Excluded Audience", new string[] { "None", "Cause_Player", "Cause_Team", "Effect_Player", "Effect_Team" }, 16),
                   new StringId("Primary String"),
                   new Value("Primary String Duration", typeof(float)),
                   new StringId("Pural Display String"),
                   new Padding(28),
                   new Value("Sound Delay (Announcer Only)", typeof(float)),
                   new Flags("Sound Flags", new string[] { "Announcer_Sound" }, 32),
                   new TagReference("English_Sound", "snd!"),
                   new TagReference("Japanese_Sound", "snd!"),
                   new TagReference("German_Sound", "snd!"),
                   new TagReference("French_Sound", "snd!"),
                   new TagReference("Spainish_Sound", "snd!"),
                   new TagReference("Italinan_Sound", "snd!"),
                   new TagReference("Korean_Sound", "snd!"),
                   new TagReference("Chinese_Sound", "snd!"),
                   new TagReference("Portuguese_Sound", "snd!"),
                   new TagBlock("Sound Permutations", 80, 10, new IMetaNode[] { 
                       new Flags("Sound Flags", new string[] { "Announcer_Sound" }, 32),
                       new TagReference("English_Sound", "snd!"),
                       new TagReference("Japanese_Sound", "snd!"),
                       new TagReference("German_Sound", "snd!"),
                       new TagReference("French_Sound", "snd!"),
                       new TagReference("Spainish_Sound", "snd!"),
                       new TagReference("Italinan_Sound", "snd!"),
                       new TagReference("Korean_Sound", "snd!"),
                       new TagReference("Chinese_Sound", "snd!"),
                       new TagReference("Portuguese_Sound", "snd!"),
                       new Value("Probability", typeof(float)),
                   }),
                   new Padding(20),
               }),
               new TagBlock("Territorys Events", 168, 128, new IMetaNode[] { 
                   new Flags("Flags", new string[] { "Quantity_Message" }, 32),
                   new HaloPlugins.Enum("Event", new string[] { "Game_Start", "Territory_Control_Gained", "Territory_Contest_Lost", "All_Territories_Controled", "Team_Territory_Control_Gained", "Team_Territory_Control_Lost", "Team_All_Territories_Controled" }, 16),
                   new HaloPlugins.Enum("Audience", new string[] { "Cause_Player", "Cause_Team", "Effect_Player", "Effect_Team", "All" }, 16),
                   new Padding(4),
                   new StringId("Display String"),
                   new HaloPlugins.Enum("Required Field", new string[] { "None", "Cause_Player", "Cause_Team", "Effect_Player", "Effect_Team" }, 16),
                   new HaloPlugins.Enum("Excluded Audience", new string[] { "None", "Cause_Player", "Cause_Team", "Effect_Player", "Effect_Team" }, 16),
                   new StringId("Primary String"),
                   new Value("Primary String Duration", typeof(float)),
                   new StringId("Pural Display String"),
                   new Padding(28),
                   new Value("Sound Delay (Announcer Only)", typeof(float)),
                   new Flags("Sound Flags", new string[] { "Announcer_Sound" }, 32),
                   new TagReference("English_Sound", "snd!"),
                   new TagReference("Japanese_Sound", "snd!"),
                   new TagReference("German_Sound", "snd!"),
                   new TagReference("French_Sound", "snd!"),
                   new TagReference("Spainish_Sound", "snd!"),
                   new TagReference("Italinan_Sound", "snd!"),
                   new TagReference("Korean_Sound", "snd!"),
                   new TagReference("Chinese_Sound", "snd!"),
                   new TagReference("Portuguese_Sound", "snd!"),
                   new TagBlock("Sound Permutations", 80, 10, new IMetaNode[] { 
                       new Flags("Sound Flags", new string[] { "Announcer_Sound" }, 32),
                       new TagReference("English_Sound", "snd!"),
                       new TagReference("Japanese_Sound", "snd!"),
                       new TagReference("German_Sound", "snd!"),
                       new TagReference("French_Sound", "snd!"),
                       new TagReference("Spainish_Sound", "snd!"),
                       new TagReference("Italinan_Sound", "snd!"),
                       new TagReference("Korean_Sound", "snd!"),
                       new TagReference("Chinese_Sound", "snd!"),
                       new TagReference("Portuguese_Sound", "snd!"),
                       new Value("Probability", typeof(float)),
                   }),
                   new Padding(20),
               }),
               new TagBlock("Assualt Events", 168, 128, new IMetaNode[] { 
                   new Flags("Flags", new string[] { "Quantity_Message" }, 32),
                   new HaloPlugins.Enum("Event", new string[] { "Game_Start", "Bomb_Taken", "Bomb_Dropped", "Bomb_Returned_By_Player", "Bomb_Returned_By_Timeout", "Bomb_Captured", "Bomb_New_Defensive_Team", "Bomb_Return_Failure", "Side_Switch_Tick", "Side_Switch_Final_Tick", "Side_Switch_30_Seconds", "Side_Switch_10_Seconds", "Bomb_Returned_By_Defusing", "Bomb_Placed_On_Enemy_Post", "Bomb_Arming_Started", "Bomb_Arming_Completed", "Bomb_Contested" }, 16),
                   new HaloPlugins.Enum("Audience", new string[] { "Cause_Player", "Cause_Team", "Effect_Player", "Effect_Team", "All" }, 16),
                   new Padding(4),
                   new StringId("Display String"),
                   new HaloPlugins.Enum("Required Field", new string[] { "None", "Cause_Player", "Cause_Team", "Effect_Player", "Effect_Team" }, 16),
                   new HaloPlugins.Enum("Excluded Audience", new string[] { "None", "Cause_Player", "Cause_Team", "Effect_Player", "Effect_Team" }, 16),
                   new StringId("Primary String"),
                   new Value("Primary String Duration", typeof(float)),
                   new StringId("Pural Display String"),
                   new Padding(28),
                   new Value("Sound Delay (Announcer Only)", typeof(float)),
                   new Flags("Sound Flags", new string[] { "Announcer_Sound" }, 32),
                   new TagReference("English_Sound", "snd!"),
                   new TagReference("Japanese_Sound", "snd!"),
                   new TagReference("German_Sound", "snd!"),
                   new TagReference("French_Sound", "snd!"),
                   new TagReference("Spainish_Sound", "snd!"),
                   new TagReference("Italinan_Sound", "snd!"),
                   new TagReference("Korean_Sound", "snd!"),
                   new TagReference("Chinese_Sound", "snd!"),
                   new TagReference("Portuguese_Sound", "snd!"),
                   new TagBlock("Sound Permutations", 80, 10, new IMetaNode[] { 
                       new Flags("Sound Flags", new string[] { "Announcer_Sound" }, 32),
                       new TagReference("English_Sound", "snd!"),
                       new TagReference("Japanese_Sound", "snd!"),
                       new TagReference("German_Sound", "snd!"),
                       new TagReference("French_Sound", "snd!"),
                       new TagReference("Spainish_Sound", "snd!"),
                       new TagReference("Italinan_Sound", "snd!"),
                       new TagReference("Korean_Sound", "snd!"),
                       new TagReference("Chinese_Sound", "snd!"),
                       new TagReference("Portuguese_Sound", "snd!"),
                       new Value("Probability", typeof(float)),
                   }),
                   new Padding(20),
               }),
               new Padding(32),
               new TagReference("Default_Item_Collection_1", "itmc"),
               new TagReference("Default_Item_Collection_2", "itmc"),
               new Value("Default Frag Grenade Count", typeof(float)),
               new Value("Default Plasma Grenade Count", typeof(float)),
               new Padding(40),
               new Value("Dynamic Spawn Zone Upper Height", typeof(float)),
               new Value("Dynamic Spawn Zone Lower Height", typeof(float)),
               new Padding(40),
               new Value("Enemy Inner Radius", typeof(float)),
               new Value("Enemy Outer Radius", typeof(float)),
               new Value("Enemy Weight", typeof(float)),
               new Padding(16),
               new Value("Friend Inner Radius", typeof(float)),
               new Value("Friend Outer Radius", typeof(float)),
               new Value("Friend Weight", typeof(float)),
               new Padding(16),
               new Value("Enemy Vehicle Inner Radius", typeof(float)),
               new Value("Enemy Vehicle Outer Radius", typeof(float)),
               new Value("Enemy Vehicle Weight", typeof(float)),
               new Padding(16),
               new Value("Friendly Vehicle Inner Radius", typeof(float)),
               new Value("Friendly Vehicle Outer Radius", typeof(float)),
               new Value("Friendly Vehicle Weight", typeof(float)),
               new Padding(16),
               new Value("Empty Vehicle Inner Radius", typeof(float)),
               new Value("Empty Vehicle Outer Radius", typeof(float)),
               new Value("Empty Vehicle Weight", typeof(float)),
               new Padding(16),
               new Value("Oddball Inclusion Inner Radius", typeof(float)),
               new Value("Oddball Inclusion Outer Radius", typeof(float)),
               new Value("Oddball Inclusion Weight", typeof(float)),
               new Padding(16),
               new Value("Oddball Exclusion Inner Radius", typeof(float)),
               new Value("Oddball Exclusion Outer Radius", typeof(float)),
               new Value("Oddball Exclusion Weight", typeof(float)),
               new Padding(16),
               new Value("Hill Inclusion Inner Radius", typeof(float)),
               new Value("Hill Inclusion Outer Radius", typeof(float)),
               new Value("Hill Inclusion Weight", typeof(float)),
               new Padding(16),
               new Value("Hill Exclusion Inner Radius", typeof(float)),
               new Value("Hill Exclusion Outer Radius", typeof(float)),
               new Value("Hill Exclusion Weight", typeof(float)),
               new Padding(16),
               new Value("Last Race Flag Inner Radius", typeof(float)),
               new Value("Last Race Flag Outer Radius", typeof(float)),
               new Value("Last Race Flag Weight", typeof(float)),
               new Padding(16),
               new Value("Dead Ally Inner Radius", typeof(float)),
               new Value("Dead Ally Outer Radius", typeof(float)),
               new Value("Dead Ally Weight", typeof(float)),
               new Padding(16),
               new Value("Controlled Territory Inner Radius", typeof(float)),
               new Value("Controlled Territory Outer Radius", typeof(float)),
               new Value("Controlled Territory Weight", typeof(float)),
               new Padding(624),
               new TagBlock("Multiplayer Constants", 352, 1, new IMetaNode[] { 
                   new Value("Max Random Spawn Bias", typeof(float)),
                   new Value("Teleporter Recharge Time (Sec)", typeof(float)),
                   new Value("Grenade Danger Weight", typeof(float)),
                   new Value("Grenade Danger Inner Radius", typeof(float)),
                   new Value("Grenade Danger Outer Radius", typeof(float)),
                   new Value("Grenade Danger Lead Time", typeof(float)),
                   new Value("Vehicle Danger Min Speed", typeof(float)),
                   new Value("Vehicle Danger Weight", typeof(float)),
                   new Value("Vehicle Danger Radius", typeof(float)),
                   new Value("Vehicle Danger Lead Time", typeof(float)),
                   new Value("Vehicle Nearby Player Distance", typeof(float)),
                   new Padding(148),
                   new TagReference("Hill_Shader", "shad"),
                   new Padding(16),
                   new Value("Flag Reset Stop Distance", typeof(float)),
                   new TagReference("Bomb_Explode_Effect", "effe"),
                   new TagReference("Bomb_Explode_Damage_Effect", "jpt!"),
                   new TagReference("Bomb_Explode_Defuse_Effect", "effe"),
                   new StringId("Bomb Defusal String"),
                   new StringId("Blocked Teleporter String"),
                   new Padding(100),
               }),
               new TagBlock("State Responses", 28, 32, new IMetaNode[] { 
                   new Flags("Flags", new string[] { "unused" }, 32),
                   new HaloPlugins.Enum("State", new string[] { "Waiting_For_Space_To_Clear", "Observing", "Respawing_Soon", "Sitting_Out", "Out_Of_Lives", "Playing_(Winning)", "Playing_(Tied)", "Playing_(Losing)", "Game_Over_(Won)", "Game_Over_(Tied)", "Game_Over_(Lost)", "You_Have_Flag", "Enemy_Has_Flag", "Flag_Not_Home", "Carrying_Oddball", "You_Are_Juggernaught", "You_Control_Hill", "Switching_Sides_Soon", "Player_Recently_Started", "You_Have_Bomb", "Flag_Contested", "Bomb_Contested", "Limited_Lives_Left_(Multiple)", "Limited_Lives_Left_(Single)", "Limited_Lives_Left_(Final)", "Playing_(Winning,_Unlimited)", "Playing_(Tied,_Unlimited)", "Playing_(Losing,_Unlimited)" }, 32),
                   new StringId("FFA Message"),
                   new StringId("Team Message"),
                   new Padding(12),
               }),
               new TagReference("Scorebard_HUD_Definition", "nhdt"),
               new TagReference("Scorebard_Emblem_Shader", "shad"),
               new TagReference("Scorebard_Emblem_Bitmap", "bitm"),
               new TagReference("Scorebard_Dead_Emblem_Shader", "shad"),
               new TagReference("Scorebard_Dead_Emblem_Bitmap", "bitm"),
           }),
           });
       }
    }
}
