global.Alien = function(name, can_ult, can_kix, unlockable, randomizer, can_transform, catagory, max_level) {
    this.name = name;
    //global.grave_alien_0.name
    //tells you the aliens name
    this.can_ult = can_ult;
    //global.grave_alien_0.can_ult
    //tells you if the alien can go ultimate
    this.can_kix = can_kix;
    //global.grave_alien_0.can_kix
    //tells you if the alien can go omnikix
    this.unlockable = unlockable;
    //global.grave_alien_0.unlockable
    //tells you if the alien is unlockable
    this.randomizer = randomizer;
    //global.grave_alien_0.randomizer
    //tells you if the alien is on the randomizer
    this.can_transform = can_transform;
    //global.grave_alien_0.can_transform
    //tells you if the alien is able to be transformed into
    this.catagory = catagory;
    //global.grave_alien_0.catagory
    //tells you the alien catagory, options: "heavy", "intelligence", "energy_manipulator", "god", "speed", "elementalist", "sound", "slime", "misc"
    this.max_level = max_level;
    //global.grave_alien_0.max_level
    //tells you the alien level
};

function AntiAlien(name, unlockable, randomizer, can_transform) {
    this.name = name;
    //global.grave_alien_0.name
    //tells you the aliens name
    this.unlockable = unlockable;
    //global.grave_alien_0.unlockable
    //tells you if the alien is unlockable
    this.randomizer = randomizer;
    //global.grave_alien_0.randomizer
    //tells you if the alien is on the randomizer
    this.can_transform = can_transform;
    //global.grave_alien_0.can_transform
    //tells you if the alien is able to be transformed into
}

StartupEvents.postInit((event) => {

    //console.log("TEST: " + global.herotimeconfig['pyronite'].ultimate)

global.grave_alien_0 = new global.Alien("null", false, false, false, false, true, "null", 1);

//let alien1_1 = global.grave_config['pyronite'].ultimate
global.grave_alien_1 = new global.Alien("pyronite", global.herotimeconfig['pyronite'].ultimate, global.herotimeconfig['pyronite'].omnikix, global.herotimeconfig['pyronite'].unlockable, true, global.herotimeconfig['pyronite'].transformable, "elementalist", 10);
// heatblast
global.grave_alien_2 = new global.Alien("vulpimancer", global.herotimeconfig['vulpimancer'].ultimate, global.herotimeconfig['vulpimancer'].omnikix, global.herotimeconfig['vulpimancer'].unlockable, true, global.herotimeconfig['vulpimancer'].transformable, "heavy", 8);
// wildmutt
global.grave_alien_3 = new global.Alien("petrosapien", global.herotimeconfig['petrosapien'].ultimate, global.herotimeconfig['petrosapien'].omnikix, global.herotimeconfig['petrosapien'].unlockable, true, global.herotimeconfig['petrosapien'].transformable, "heavy", 9);
// diamondhead
global.grave_alien_4 = new global.Alien("kineceleran", global.herotimeconfig['kineceleran'].ultimate, global.herotimeconfig['kineceleran'].omnikix, global.herotimeconfig['kineceleran'].unlockable, true, global.herotimeconfig['kineceleran'].transformable, "speed", 9);
// xlr8
global.grave_alien_5 = new global.Alien("galvan", global.herotimeconfig['galvan'].ultimate, global.herotimeconfig['galvan'].omnikix, global.herotimeconfig['galvan'].unlockable, true, global.herotimeconfig['galvan'].transformable, "intelligence", 1);
// greymatter
global.grave_alien_6 = new global.Alien("tetramand", global.herotimeconfig['tetramand'].ultimate, global.herotimeconfig['tetramand'].omnikix, global.herotimeconfig['tetramand'].unlockable, true, global.herotimeconfig['tetramand'].transformable, "heavy", 9);
// fourarms
global.grave_alien_7 = new global.Alien("lepidopterran", global.herotimeconfig['lepidopterran'].ultimate, global.herotimeconfig['lepidopterran'].omnikix, global.herotimeconfig['lepidopterran'].unlockable, true, global.herotimeconfig['lepidopterran'].transformable, "slime", 9);
// stinkfly
global.grave_alien_8 = new global.Alien("piscciss_volann", global.herotimeconfig['piscciss_volann'].ultimate, global.herotimeconfig['piscciss_volann'].omnikix, global.herotimeconfig['piscciss_volann'].unlockable, true, global.herotimeconfig['piscciss_volann'].transformable, "heavy", 7);
// ripjaws
global.grave_alien_9 = new global.Alien("galvanic_mechamorph", global.herotimeconfig['galvanic_mechamorph'].ultimate, global.herotimeconfig['galvanic_mechamorph'].omnikix, global.herotimeconfig['galvanic_mechamorph'].unlockable, true, global.herotimeconfig['galvanic_mechamorph'].transformable, "energy_manipulator", 9);
// upgrade
global.grave_alien_10 = new global.Alien("ectonurite", global.herotimeconfig['ectonurite'].ultimate, global.herotimeconfig['ectonurite'].omnikix, global.herotimeconfig['ectonurite'].unlockable, true, global.herotimeconfig['ectonurite'].transformable, "misc", 9);
// ghostfreak

global.grave_alien_11 = new global.Alien("arburian_pelarota", global.herotimeconfig['arburian_pelarota'].ultimate, global.herotimeconfig['arburian_pelarota'].omnikix, global.herotimeconfig['arburian_pelarota'].unlockable, true, global.herotimeconfig['arburian_pelarota'].transformable, "heavy", 1);
// cannonbolt
global.grave_alien_12 = new global.Alien("florauna", false, false, false, true, false, "null", 1);
// wildvine
global.grave_alien_13 = new global.Alien("loboan", global.herotimeconfig['loboan'].ultimate, global.herotimeconfig['loboan'].omnikix, global.herotimeconfig['loboan'].unlockable, true, global.herotimeconfig['loboan'].transformable, "sound", 1);
// blitzwolfer
global.grave_alien_14 = new global.Alien("thep_khufan", false, false, false, true, false, "null", 1);
// Snare-Oh
global.grave_alien_15 = new global.Alien("transylian", false, false, false, true, false, "null", 1);
// Frankenstrike
global.grave_alien_16 = new global.Alien("perk_gourmand", false, false, false, true, false, "null", 1);
// Upchuck
global.grave_alien_17 = new global.Alien("splixson", global.herotimeconfig['splixson'].ultimate, global.herotimeconfig['splixson'].omnikix, global.herotimeconfig['splixson'].unlockable, true, global.herotimeconfig['splixson'].transformable, "misc", 1);
// ditto
global.grave_alien_18 = new global.Alien("opticoid", false, false, false, true, false, "null", 1);
// Eye guy
global.grave_alien_19 = new global.Alien("to_kustar", global.herotimeconfig['to_kustar'].ultimate, global.herotimeconfig['to_kustar'].omnikix, global.herotimeconfig['to_kustar'].unlockable, true, global.herotimeconfig['to_kustar'].transformable, "heavy", 1);
// Way Big
global.grave_alien_20 = new global.Alien("conductoid", global.herotimeconfig['conductoid'].ultimate, global.herotimeconfig['conductoid'].omnikix, global.herotimeconfig['conductoid'].unlockable, true, global.herotimeconfig['conductoid'].transformable, "energy_manipulator", 1);
// Feedback

global.grave_alien_21 = new global.Alien("polar_manzardill", false, false, false, true, false, "null", 1);
// Arctiguana
global.grave_alien_22 = new global.Alien("spheroid", false, false, false, true, false, "null", 1);
// Spitter
global.grave_alien_23 = new global.Alien("murk_gourmand", false, false, false, true, false, "null", 1);
// Upchuck
global.grave_alien_24 = new global.Alien("nosedeenian", global.herotimeconfig['nosedeenian'].ultimate, global.herotimeconfig['nosedeenian'].omnikix, global.herotimeconfig['nosedeenian'].unlockable, true, global.herotimeconfig['nosedeenian'].transformable, "energy_manipulator", 1);
// Buzzshock
global.grave_alien_25 = new global.Alien("cascan", false, false, false, true, false, "null", 1);
// overflow
global.grave_alien_26 = new global.Alien("ekoplektoid", false, false, false, true, false, "null", 1);
// Slapback
global.grave_alien_27 = new global.Alien("chronian", false, false, false, true, false, "null", 1);
// decades
global.grave_alien_28 = new global.Alien("chimera_sui_generis", false, false, false, true, false, "null", 1);
// Gax
global.grave_alien_29 = new global.Alien("fulmini", global.herotimeconfig['fulmini'].ultimate, global.herotimeconfig['fulmini'].omnikix, global.herotimeconfig['fulmini'].unlockable, true, global.herotimeconfig['fulmini'].transformable, "energy_manipulator", 11);
// Shock rock
global.grave_alien_30 = new global.Alien("xerge", false, false, false, true, false, "null", 1);
// Surge

global.grave_alien_31 = new global.Alien("methanosian", global.herotimeconfig['methanosian'].ultimate, global.herotimeconfig['methanosian'].omnikix, global.herotimeconfig['methanosian'].unlockable, true, global.herotimeconfig['methanosian'].transformable, "elementalist", 8);
// Swampfire
global.grave_alien_32 = new global.Alien("sonorosian", global.herotimeconfig['sonorosian'].ultimate, global.herotimeconfig['sonorosian'].omnikix, global.herotimeconfig['sonorosian'].unlockable, true, global.herotimeconfig['sonorosian'].transformable, "sound", 1);
// echo echo
global.grave_alien_33 = new global.Alien("vaxasaurian", global.herotimeconfig['vaxasaurian'].ultimate, global.herotimeconfig['vaxasaurian'].omnikix, global.herotimeconfig['vaxasaurian'].unlockable, true, global.herotimeconfig['vaxasaurian'].transformable, "heavy", 8);
// Humungousaur
global.grave_alien_34 = new global.Alien("aerophibian", global.herotimeconfig['aerophibian'].ultimate, global.herotimeconfig['aerophibian'].omnikix, global.herotimeconfig['aerophibian'].unlockable, true, global.herotimeconfig['aerophibian'].transformable, "energy_manipulator", 1);
// Jetray
global.grave_alien_35 = new global.Alien("necrofriggian", global.herotimeconfig['necrofriggian'].ultimate, global.herotimeconfig['necrofriggian'].omnikix, global.herotimeconfig['necrofriggian'].unlockable, true, global.herotimeconfig['necrofriggian'].transformable, "elementalist", 7);
// Big-chill
global.grave_alien_36 = new global.Alien("crystalsapien", global.herotimeconfig['crystalsapien'].ultimate, global.herotimeconfig['crystalsapien'].omnikix, global.herotimeconfig['crystalsapien'].unlockable, true, global.herotimeconfig['crystalsapien'].transformable, "energy_manipulator", 1);
// Chromastone
global.grave_alien_37 = new global.Alien("cerebrocrustacean", false, false, false, true, false, "null", 1);
// Brainstorm
global.grave_alien_38 = new global.Alien("arachnochimp", false, false, false, true, false, "null", 1);
// sidermonkey
global.grave_alien_39 = new global.Alien("polymorph", global.herotimeconfig['polymorph'].ultimate, global.herotimeconfig['polymorph'].omnikix, global.herotimeconfig['polymorph'].unlockable, true, global.herotimeconfig['polymorph'].transformable, "slime", 1);
// Goop
global.grave_alien_40 = new global.Alien("celestialsapien", global.herotimeconfig['celestialsapien'].ultimate, global.herotimeconfig['celestialsapien'].omnikix, global.herotimeconfig['celestialsapien'].unlockable, false, global.herotimeconfig['celestialsapien'].transformable, "god", 1);
// Alien x

global.grave_alien_41 = new global.Alien("biot_savartian", global.herotimeconfig['biot_savartian'].ultimate, global.herotimeconfig['biot_savartian'].omnikix, global.herotimeconfig['biot_savartian'].unlockable, true, global.herotimeconfig['biot_savartian'].transformable, "energy_manipulator", 7);
// Lodestar
global.grave_alien_42 = new global.Alien("appoplexian", false, false, false, true, false, "null", 1);
// Rath
global.grave_alien_43 = new global.Alien("nanochip", global.herotimeconfig['nanochip'].ultimate, global.herotimeconfig['nanochip'].omnikix, global.herotimeconfig['nanochip'].unlockable, true, global.herotimeconfig['nanochip'].transformable, "energy_manipulator", 1);
// Nanomech
global.grave_alien_44 = new global.Alien("orishan", false, false, false, true, false, "null", 1);
// Water-Hazard
global.grave_alien_45 = new global.Alien("amperi", false, false, false, true, false, "null", 1);
// Ampfibian
global.grave_alien_46 = new global.Alien("talpaedan", false, false, false, true, false, "null", 1);
// Armodrillo
global.grave_alien_47 = new global.Alien("geochelone_aerio", global.herotimeconfig['geochelone_aerio'].ultimate, global.herotimeconfig['geochelone_aerio'].omnikix, global.herotimeconfig['geochelone_aerio'].unlockable, true, global.herotimeconfig['geochelone_aerio'].transformable, "elementalist", 1);
// Terraspin
global.grave_alien_48 = new global.Alien("prypiatosian_b", false, false, false, true, false, "null", 1);
// NRG
global.grave_alien_49 = new global.Alien("citrakayah", global.herotimeconfig['citrakayah'].ultimate, global.herotimeconfig['citrakayah'].omnikix, global.herotimeconfig['citrakayah'].unlockable, true, global.herotimeconfig['citrakayah'].transformable, "speed", 9);
// Fasttrack
global.grave_alien_50 = new global.Alien("merlinisapien", false, false, false, true, false, "null", 1);
// Chamalien

global.grave_alien_51 = new global.Alien("gimlinopithecus", false, false, false, true, false, "null", 1);
// shocksquach
global.grave_alien_52 = new global.Alien("oryctini", false, false, false, true, false, "null", 1);
// eatle
global.grave_alien_53 = new global.Alien("chronosapien", global.herotimeconfig['chronosapien'].ultimate, global.herotimeconfig['chronosapien'].omnikix, global.herotimeconfig['chronosapien'].unlockable, true, global.herotimeconfig['chronosapien'].transformable, "god", 1);
// Clockwork
global.grave_alien_54 = new global.Alien("planchakule", false, false, false, true, false, "null", 1);
// jurryrigg
global.grave_alien_55 = new global.Alien("segmentasapien", false, false, false, true, false, "null", 1);
// bloxx
global.grave_alien_56 = new global.Alien("galilean", false, false, false, true, false, "null", 1);
// Gravattack
global.grave_alien_57 = new global.Alien("orthopterran", false, false, false, true, false, "null", 1);
// Crashhopper
global.grave_alien_58 = new global.Alien("sputumion", false, false, false, true, false, "null", 1);
// Ball Weevil
global.grave_alien_59 = new global.Alien("ickthyperambuloid", false, false, false, true, false, "null", 1);
// Walkatrout
global.grave_alien_60 = new global.Alien("mobian_hedgehog", global.herotimeconfig['mobian_hedgehog'].ultimate, global.herotimeconfig['mobian_hedgehog'].omnikix, global.herotimeconfig['mobian_hedgehog'].unlockable, true, global.herotimeconfig['mobian_hedgehog'].transformable, "speed", 1);
// "speed"-hog

global.grave_alien_61 = new global.Alien("nemuina", false, false, false, true, false, "null", 1);
// Pesky Dust
global.grave_alien_62 = new global.Alien("dorinian_mole", false, false, false, true, false, "null", 1);
// Mole-Stache
global.grave_alien_63 = new global.Alien("atrocian", false, false, false, true, false, "null", 1);
// The worst
global.grave_alien_64 = new global.Alien("gallinulaoe", false, false, false, true, false, "null", 1);
// Kickin Hawk
global.grave_alien_65 = new global.Alien("terretnal_ogre", false, false, false, true, false, "null", 1);
// Toepick
global.grave_alien_66 = new global.Alien("pturbosaurian", false, false, false, true, false, "null", 1);
// Astrodactyl
global.grave_alien_67 = new global.Alien("incursean", false, false, false, true, false, "null", 1);
// Bullfrag
global.grave_alien_68 = new global.Alien("prypiatosian_a", false, false, false, false, false, "null", 1);
// Atomix
global.grave_alien_69 = new global.Alien("syndyasmosian", false, false, false, true, false, "null", 1);
// Gutrot
global.grave_alien_70 = new global.Alien("vladat", false, false, false, true, false, "null", 1);
// Whampire

global.grave_alien_71 = new global.Alien("cybertronian", false, false, false, true, false, "null", 1);
// techno-change
global.grave_alien_72 = new global.Alien("florpus_tesabo", false, false, false, true, false, "null", 1);
// Portaler
global.grave_alien_73 = new global.Alien("basalt", false, false, false, true, false, "null", 1);
// Rocks
global.grave_alien_74 = new global.Alien("amogus", global.herotimeconfig['amogus'].ultimate, global.herotimeconfig['amogus'].omnikix, global.herotimeconfig['amogus'].unlockable, false, global.herotimeconfig['amogus'].transformable, "god", 1);
// Tennysus
global.grave_alien_75 = new global.Alien("destructoid", false, false, false, true, false, "null", 1);
// outburst
global.grave_alien_76 = new global.Alien("ectoplasmoid", false, false, false, true, false, "null", 1);
// Whispunch
global.grave_alien_77 = new global.Alien("incensa_bestia", global.herotimeconfig['incensa_bestia'].ultimate, global.herotimeconfig['incensa_bestia'].omnikix, global.herotimeconfig['incensa_bestia'].unlockable, true, global.herotimeconfig['incensa_bestia'].transformable, "heavy", 1);
// blazecaster
global.grave_alien_78 = new global.Alien("guide", global.herotimeconfig['guide'].ultimate, global.herotimeconfig['guide'].omnikix, global.herotimeconfig['guide'].unlockable, true, global.herotimeconfig['guide'].transformable, "intelligence", 1);
// Nitro
global.grave_alien_79 = new global.Alien("nepastovusapiens", false, false, false, true, false, "null", 1);
// Smokescreen 
global.grave_alien_80 = new global.Alien("boykisserian", global.herotimeconfig['boykisserian'].ultimate, global.herotimeconfig['boykisserian'].omnikix, global.herotimeconfig['boykisserian'].unlockable, true, global.herotimeconfig['boykisserian'].transformable, "god", 1);
// Fmboi

global.grave_alien_81 = new global.Alien("saiyan", false, false, false, true, false, "null", 1);
// okram
global.grave_alien_82 = new global.Alien("kynetisapien", false, false, false, true, false, "null", 1);
// Kinnection 
global.grave_alien_83 = new global.Alien("slime", global.herotimeconfig['slime'].ultimate, global.herotimeconfig['slime'].omnikix, global.herotimeconfig['slime'].unlockable, true, global.herotimeconfig['slime'].transformable, "slime", 1);
// "slime"
global.grave_alien_84 = new global.Alien("skeleton", false, false, false, false, false, "null", 1);
// Undertale
global.grave_alien_85 = new global.Alien("tv_head", false, false, false, false, false, "null", 1);
// idk just tvhead species
global.grave_alien_86 = new global.Alien("thalassian", false, false, false, false, false, "null", 1);
// merben
global.grave_alien_87 = new global.Alien("antrosapien", false, false, false, false, false, "null", 1);
// super sonic crystalz https://ben10.fandom.com/wiki/Antrosapien
global.grave_alien_88 = new global.Alien("vocaloid", global.herotimeconfig['vocaloid'].ultimate, global.herotimeconfig['vocaloid'].omnikix, global.herotimeconfig['vocaloid'].unlockable, true, global.herotimeconfig['vocaloid'].transformable, "god", 1);
// HATSUNE MIKU WHAT ARE YOU DOING HERE
global.grave_alien_89 = new global.Alien("infurnus", global.herotimeconfig['infurnus'].ultimate, global.herotimeconfig['infurnus'].omnikix, global.herotimeconfig['infurnus'].unlockable, true, global.herotimeconfig['infurnus'].transformable, "elementalist", 1);
// 
global.grave_alien_90 = new global.Alien("dragon", false, false, false, false, false, "null", 1);
// the map charter ig

global.grave_alien_91 = new global.Alien("kryptonian", false, false, false, true, false, "null", 1);
// super-ben
global.grave_alien_92 = new global.Alien("troll", false, false, false, true, false, "null", 1);
// arcadian beast
global.grave_alien_93 = new global.Alien("pierogi", false, false, false, true, false, "null", 1);
// the pie man himself
global.grave_alien_94 = new global.Alien("deaded", false, false, false, true, true, "null", 1);
//literally just deaded :skull:
global.grave_alien_95 = new global.Alien("venwhovian", false, false, false, false, false, "null", 1);
// EW EW EW EW EW EW
global.grave_alien_96 = new global.Alien("kuronuri326", false, false, false, false, false, "null", 1);
// The huz
global.grave_alien_97 = new global.Alien("dead", false, false, false, false, false, "null", 1);
// sculk based alien
global.grave_alien_98 = new global.Alien("dead", false, false, false, false, false, "null", 1);
//
global.grave_alien_99 = new global.Alien("dead", false, false, false, false, false, "null", 1);
//
global.grave_alien_100 = new global.Alien("dead", false, false, false, false, false, "null", 1);
//


global.grave_alien_max = 0
global.grave_alien_absolute_max = 1000
for (let grave_alien_total = 1; grave_alien_total <= global.grave_alien_absolute_max; grave_alien_total++) {
    // check if you can access its name 
    try { let alien_name = global['grave_alien_' + grave_alien_total].name; } 
    catch (error) {
        //if you cant then uh move along there is no alien to be seen here
        continue;
      }
      //alien exists so increment that counter
      global.grave_alien_max++;
}

global.grave_antialien_0 = new AntiAlien("null", false, false, false)


global.grave_antialien_1 = new AntiAlien("pyronite", true, false, true)


})

function containsTag(tags, tag) {
    for (let i = 0; i < tags.length; i++) {
        if(tags[i].equals(tag)) {
            return true;
        }
    }
    return false;
}