#include "mechspecs.hpp"

// MSL ADD MECH
SMechSpec g_aMechSpecs[NoMechID] =
{
    { DNL_ANNIHILATOR,  81,   100,  IDS_ML_CH_ASSAULT,    DNL_INNERSPHERE,  IDS_ML_ANNIHILATOR_INFO,                  },		// Annihilator
    { DNL_ARCHER,		80,   85,   IDS_ML_CH_HEAVY,	  DNL_INNERSPHERE,  IDS_ML_ARCHER_INFO,                       },		// Archer
    { DNL_ARCTICWOLF,   121,  40,   IDS_ML_CH_MEDIUM,     DNL_CLAN,         IDS_ML_ARCTICWOLF_INFO,                   },		// Arcticwolf
    { DNL_ARES,         97,   60,   IDS_ML_CH_HEAVY,      DNL_CLAN,         IDS_ML_ARES_INFO,                         },		// Argus
    { DNL_ARGUS,        97,   60,   IDS_ML_CH_HEAVY,      DNL_INNERSPHERE,  IDS_ML_ARGUS_INFO,                        },		// Argus
    { DNL_ASSASSIN2,	129,  45,   IDS_ML_CH_MEDIUM,     DNL_INNERSPHERE,  IDS_ML_ASSASSIN2_INFO,					  },		// Assassin2
    { DNL_ATLAS,        81,   100,  IDS_ML_CH_ASSAULT,    DNL_INNERSPHERE,  IDS_ML_ATLAS_INFO,                        },		// Atlas
    { DNL_AVATAR,      105,   70,   IDS_ML_CH_HEAVY,      DNL_INNERSPHERE,  IDS_ML_AVATAR_INFO,                       },		// Avatar
    { DNL_AWESOME,      95,   80,   IDS_ML_CH_ASSAULT,    DNL_INNERSPHERE,  IDS_ML_AWESOME_INFO,                      },		// Awesome
    { DNL_BATTLEMASTER, 81,   100,  IDS_ML_CH_ASSAULT,    DNL_INNERSPHERE,	IDS_ML_BATTLEMASTER_INFO,                 },		// Battlemaster
    { DNL_BATTLEMASTERIIC,    81,   100,  IDS_ML_CH_ASSAULT,    DNL_CLAN,	IDS_ML_BATTLEMASTERIIC_INFO,              },		// Battlemasteriic
    { DNL_BEHEMOTH,     95,   100,  IDS_ML_CH_ASSAULT,    DNL_CLAN,			IDS_ML_BEHEMOTH_INFO,                     },		// Behemoth
    { DNL_BEHEMOTHII,   95,   100,  IDS_ML_CH_ASSAULT,    DNL_CLAN,			IDS_ML_BEHEMOTHII_INFO,                   },		// Behemothii
    { DNL_BLACKHAWK,    95,   50,   IDS_ML_CH_MEDIUM,     DNL_CLAN,         IDS_ML_BLACKHAWK_INFO,                    },        // Blackhawk
    { DNL_BLACKKNIGHT,  93,   75,   IDS_ML_CH_HEAVY,      DNL_INNERSPHERE,  IDS_ML_BLACKKNIGHT_INFO,                  },		// Blackknight
    { DNL_BLACKLANNER,  93,   55,   IDS_ML_CH_MEDIUM,     DNL_CLAN,         IDS_ML_BLACKLANNER_INFO,                  },		// Blacklanner
    { DNL_BRIGAND,      106,  25,   IDS_ML_CH_LIGHT,      DNL_INNERSPHERE,  IDS_ML_BRIGAND_INFO,                      },		// Brigand
    { DNL_BUSHWACKER,   106,  55,   IDS_ML_CH_MEDIUM,     DNL_INNERSPHERE,  IDS_ML_BUSHWACKER_INFO,                   },		// Bushwacker
    { DNL_CATAPULT,     104,  65,   IDS_ML_CH_HEAVY,      DNL_INNERSPHERE,  IDS_ML_CATAPULT_INFO,                     },		// Catapult
    { DNL_CAULDRONBORN, 97,   65,   IDS_ML_CH_HEAVY,      DNL_CLAN,         IDS_ML_CAULDRONBORN_INFO,                 },		// Cauldronborn
    { DNL_CHIMERA,      117,  40,   IDS_ML_CH_MEDIUM,     DNL_INNERSPHERE,  IDS_ML_CHIMERA_INFO,                      },        // Chimera
    { DNL_COMMANDO,     132,  25,   IDS_ML_CH_LIGHT,      DNL_INNERSPHERE,  IDS_ML_COMMANDO_INFO,                     },        // Commando
    { DNL_COUGAR,       132,  35,   IDS_ML_CH_LIGHT,      DNL_CLAN,         IDS_ML_COUGAR_INFO,                       },        // Cougar
    { DNL_CYCLOPS,      81,   90,   IDS_ML_CH_ASSAULT,    DNL_INNERSPHERE,  IDS_ML_CYCLOPS_INFO,                      },        // Cyclops
    { DNL_DAISHI,       76,   100,  IDS_ML_CH_ASSAULT,    DNL_CLAN,         IDS_ML_DAISHI_INFO,                       },        // Daishi
//    { DNL_DASHER,       132,  20,   IDS_ML_CH_LIGHT,      DNL_CLAN,         IDS_ML_DASHER_INFO,                       },      // Dasher
    { DNL_DEIMOS,       95,   85,   IDS_ML_CH_ASSAULT,    DNL_CLAN,         IDS_ML_DEIMOS_INFO,                       },        // Deimos
    { DNL_DRAGON,       97,   60,   IDS_ML_CH_HEAVY,      DNL_INNERSPHERE,  IDS_ML_DRAGON_INFO,                       },		// Dragon
    { DNL_FAFNIR,       58,   100,  IDS_ML_CH_ASSAULT,    DNL_INNERSPHERE,  IDS_ML_FAFNIR_INFO,                       },		// Fafnir
    { DNL_FLEA,         147,  20,   IDS_ML_CH_LIGHT,      DNL_INNERSPHERE,  IDS_ML_FLEA_INFO,                         },		// Flea
    { DNL_GLADIATOR,    76,   95,   IDS_ML_CH_ASSAULT,    DNL_CLAN,         IDS_ML_GLADIATOR_INFO,                    },		// Gladiator
    { DNL_GRIZZLY,      76,   70,   IDS_ML_CH_HEAVY,      DNL_CLAN,         IDS_ML_GRIZZLY_INFO,                      },		// Grizzly
    { DNL_HAUPTMANN,    76,   95,   IDS_ML_CH_ASSAULT,    DNL_CLAN,         IDS_ML_HAUPTMANN_INFO,                    },		// Hauptmann
    { DNL_HELLHOUND,    104,  50,   IDS_ML_CH_MEDIUM,     DNL_CLAN,         IDS_ML_HELLHOUND_INFO,                    },		// Hellhound
    { DNL_HELLSPAWN,    118,  45,   IDS_ML_CH_MEDIUM,     DNL_INNERSPHERE,  IDS_ML_HELLSPAWN_INFO,                    },        // hellspawn
    { DNL_HIGHLANDER,   76,   90,   IDS_ML_CH_ASSAULT,    DNL_INNERSPHERE,  IDS_ML_HIGHLANDER_INFO,                   },		// Highlander
    { DNL_HOLLANDERII,  129,  45,   IDS_ML_CH_MEDIUM,     DNL_INNERSPHERE,  IDS_ML_HOLLANDERII_INFO,                  },		// Hollanderii
    { DNL_HUNCHBACK,    104,  50,   IDS_ML_CH_MEDIUM,     DNL_INNERSPHERE,  IDS_ML_HUNCHBACK_INFO,                    },		// Hunchback
    { DNL_KODIAK,       76,   100,  IDS_ML_CH_ASSAULT,    DNL_CLAN,         IDS_ML_KODIAK_INFO,                       },		// Kodiak
    { DNL_LOKI,         118,  65,   IDS_ML_CH_HEAVY,      DNL_CLAN,         IDS_ML_LOKI_INFO,                         },        // Loki
    { DNL_LONGBOW,      76,   85,   IDS_ML_CH_ASSAULT,    DNL_INNERSPHERE,  IDS_ML_LONGBOW_INFO,                      },		// Longbow
    { DNL_MADCAT,       100,  75,   IDS_ML_CH_HEAVY,      DNL_CLAN,         IDS_ML_MADCAT_INFO,                       },        // Madcat
    { DNL_MADCAT2,      93,   90,   IDS_ML_CH_ASSAULT,    DNL_CLAN,         IDS_ML_MADCATMK2_INFO,                    },        // Madcat2
    { DNL_MASAKARI,     76,   85,   IDS_ML_CH_ASSAULT,    DNL_CLAN,         IDS_ML_MASAKARI_INFO,                     },		// Masakari
    { DNL_MAULER,       90,   90,   IDS_ML_CH_ASSAULT,    DNL_INNERSPHERE,  IDS_ML_MAULER_INFO,                       },		// Mauler
    { DNL_NOVACAT,      108,  70,   IDS_ML_CH_HEAVY,      DNL_CLAN,         IDS_ML_NOVACAT_INFO,                      },		// Novacat
    { DNL_OSIRIS,       140,  30,   IDS_ML_CH_LIGHT,      DNL_INNERSPHERE,  IDS_ML_OSIRIS_INFO,                       },		// Osiris
    { DNL_Owens,        140,  35,   IDS_ML_CH_LIGHT,      DNL_INNERSPHERE,  IDS_ML_OWENS_INFO,                        },		// Owens
    { DNL_PUMA,         104,  35,   IDS_ML_CH_LIGHT,      DNL_CLAN,         IDS_ML_PUMA_INFO,                         },		// Puma
    { DNL_RAVEN,        125,  35,   IDS_ML_CH_LIGHT,      DNL_INNERSPHERE,  IDS_ML_RAVEN_INFO,                        },		// Raven
    { DNL_RIFLEMAN,     97,   60,   IDS_ML_CH_HEAVY,      DNL_INNERSPHERE,  IDS_ML_RIFLEMAN_INFO,                     },		// Argus
    { DNL_RYOKEN,       106,  55,   IDS_ML_CH_MEDIUM,     DNL_CLAN,         IDS_ML_RYOKEN_INFO,                       },		// Ryoken
    { DNL_SHADOWCAT,    117,  45,   IDS_ML_CH_MEDIUM,     DNL_CLAN,         IDS_ML_SHADOWCAT_INFO,                    },		// Shadowcat
    { DNL_SOLITAIRE,    140,  25,   IDS_ML_CH_LIGHT,      DNL_CLAN,         IDS_ML_SOLITAIRE_INFO,                    },		// Sunder
    { DNL_SUNDER,       76,   90,   IDS_ML_CH_ASSAULT,    DNL_INNERSPHERE,  IDS_ML_SUNDER_INFO,                       },		// Sunder
    { DNL_TEMPLAR,      80,   85,   IDS_ML_CH_ASSAULT,    DNL_INNERSPHERE,  IDS_ML_TEMPLAR_INFO,                      },		// Templar
    { DNL_THANATOS,     93,   75,   IDS_ML_CH_HEAVY,      DNL_INNERSPHERE,  IDS_ML_THANATOS_INFO,                     },        // Thanatos
    { DNL_THOR,         109,  70,   IDS_ML_CH_HEAVY,      DNL_CLAN,         IDS_ML_THOR_INFO,                         },        // Thor
    { DNL_ULLER,        144,  30,   IDS_ML_CH_LIGHT,      DNL_CLAN,         IDS_ML_ULLER_INFO,                        },		// Uller
    { DNL_URBANMECH,    144,  30,   IDS_ML_CH_LIGHT,      DNL_INNERSPHERE,  IDS_ML_URBANMECH_INFO,                        },		// Uller
    { DNL_UZIEL,        113,  50,   IDS_ML_CH_MEDIUM,     DNL_INNERSPHERE,  IDS_ML_UZIEL_INFO,                        },		// Uziel
    { DNL_VICTOR,       76,   80,   IDS_ML_CH_ASSAULT,    DNL_INNERSPHERE,  IDS_ML_VICTOR_INFO,                       },		// Victor
    { DNL_VULTURE,      105,  60,   IDS_ML_CH_HEAVY,      DNL_CLAN,         IDS_ML_VULTURE_INFO,                      },		// Vulture
    { DNL_WARHAMMER,    120,  70,   IDS_ML_CH_HEAVY,      DNL_INNERSPHERE,  IDS_ML_WARHAMMER_INFO,                    },		// Wolfhound
    { DNL_WOLFHOUND,    120,  35,   IDS_ML_CH_LIGHT,      DNL_CLAN,         IDS_ML_WOLFHOUND_INFO,                    },		// Wolfhound
    { DNL_ZEUS,         90,   80,   IDS_ML_CH_ASSAULT,    DNL_INNERSPHERE,  IDS_ML_ZEUS_INFO,                         },		// Zeus
};

CMLCallData::CMLCallData()
{
    mech_id = -1;
}

void CMLCallData::Setup_MLCallData()
{
    Call1();
    Call2();
    Call3();
    Call4();
    Call5();
    Call6();
    Call7();
    Call8();
    Call9();
    Call10();
}

int __cdecl CMLCallData::CallML(int nCallID, int nCount, ...)
{
    gosASSERT(nCount < 20);
    void* data[20];
	
    va_list ap;
    va_start(ap, nCount);

    data[0] = (void*)nCallID;
    nCount++;
    for(int i = 1; i < nCount; i++)
    {
        data[i] = va_arg(ap, void*);
    }

    int nRet = MechLab::ML_CallbackHandler(NULL/*instance*/, nCount/*numParams*/, data);

    va_end(ap);

    return nRet;
}
