VGA Planets 4: Game/Universe Mastering with Scripts. To Master/Create a new
game for players to participate in, you will first need to use the. Master.exe ...
VGA Planets 4: Game/Universe Mastering with Scripts To Master/Create a new game for players to participate in, you will first need to use the Master.exe application. The graphical user interface (GUI) is self-explanatory for the most part, so this document will focus on using the VGA Planets Script (VPS) files. The Anatomy Of A VPS File A VPS file can be constructed by hand (using your favorite text-editor application), exporting an active game from the Planets4 client, or using a 3rd Party Application, such as ScriptZ0r. A VPS file contains sections of configuration information; some of which will only be entered once and others that can be entered several times to produce several units of a given type. Each section will start with a “Begin [Section]” statement and will terminate with an “End” statement. The available sections are shown in the table below.
VPS Script Section Table Section Races Start Tech Exotic Map PlanetNames
Description Configures the races being played, attack settings, and spy mana. This should be the first section of your script. Configures the game settings, starting conditions, and starting positions. Configures the starting technology levels for all players. Configures the galactic bank and exotic technologies active. Specifies the .MAP file to be used. Provides a list of names for planets into the script that will be assigned to planets that aren't provided a name.
Base Buoy Minefield Planet Ship Thing Wing
Creates a new ground base object in the game. Creates a new buoy object in the game. Creates a new minefield object in the game. Creates a new planet object in the game. Creates a new starship object in the game. Creates a new miscellaneous object in the game. Creates a new wing object in the game.
AssaultPod ConPod GoldPod LifePod NativePod OrePod OutfitPod ResupplyPod Wreckage
Creates a new assault pod object in the game. Creates a new construction pod object in the game. Creates a new gold pod object in the game. Creates a new life pod object in the game. Creates a new native pod object in the game. Creates a new ore pod object in the game. Creates a new outfit pod object in the game. Creates a new resupply pod object in the game. Creates a new wreckage object in the game.
Within each section, you can give commands or set the properties of the object that you may be creating. Commands will normally only be one word. Setting properties will involve a word followed by an equals-sign (=) then have the value that you would like assigned to it. Some properties may have the same name, but will have multiple iterations of that name, such as GEN(1)=5, which is the first iteration of the GEN property, which you are assigning the value of 5 to. In some situations, for backwards compatibility or flexibility, there may be multiple names for a property, such as ELEN and FUEL. You can use either property name to assign a value to it. Using both won’t produce any differing results. Section Details The following are the details behind each section and how to use them in your script. Section names, commands, and property names are not case-sensitive. The values that you assign to the properties may be case sensitive, such as assigning a name to a starship. Races Description: Configures the races being played, attack settings, and spy mana. This should be the first section of your script. Available Commands: none Available Properties: PLAYERCOUNT, PLAYER(x), ATTACK(x), SPYMANA(x), TECHPLANET(x), TECHLARGE(x), TECHSMALL(x), TECHPD(x), TECHGEN(x), TECHENGINE(x), TECHHULL(x), TECHHYP(x), TECHSHIELD(x) PLAYERCOUNT: This sets the game up with the number of players equal to the value you assign. Example: PLAYERCOUNT=5 will create a game with 5 players. Valid values are from 2 to 30. PLAYER(x): This sets the race number that player x will be using in the game. Example: PLAYER(2)=104 will set the race for player #2 to “The Stormer Kingdom”. For a list of race numbers available at the time of the writing of this document, see Appendix A. ATTACK(x): This sets the Attack on/off status for each other player in the game. By default, all players will attack each other. If you want to simulate alliances or situations where two or more players are at peace with each other, then this would be the way to do it. This value is the decimal representation of a bitfield containing “on” bits for those players that you will attack and “off” bits for those you will not. Example: ATTACK(3)=28 ‘ 11100 will have attack setting “on” for players 3 to 5 and “off” for players 1, 2, and 6 to 30. The comment here shows the last 5 bits, which assumes that all preceding bits are 0’s. You read right to left for which bit applies to which player. SPYMANA(x): This sets the starting spy mana amount for the individual player. Example: SPYMANA(1)=47 will set the starting spy mana to 47 for player #1. Valid values are from 0 to 1 billion.
TECHPLANET(x): This sets the starting planet technology level for player x to the value assigned. Example: TECHPLANET(3)=10 will start player 3 at planet tech 10. Valid values are from 0 to 10. TECHLARGE(x): This sets the starting large weapon technology level for player x to the value assigned. Valid values are from 0 to 5. TECHSMALL(x): This sets the starting small weapon technology level for player x to the value assigned. Valid values are from 0 to 5. TECHPD(x): This sets the starting point defense technology level for player x to the value assigned. Valid values are from 0 to 5. TECHGEN(x): This sets the starting power generator technology level for player x to the value assigned. Valid values are from 0 to 5. TECHENGINE(x): This sets the starting starship engine technology level for player x to the value assigned. Valid values are from 0 to 7. TECHHULL(x): This sets the starting starship hull technology level for player x to the value assigned. Valid values are from 0 to 7. TECHHYP(x): This sets the starting starship hyperdrive technology level for player x to the value assigned. Valid values are from 0 to 5. TECHSHIELD(x): This sets the starting starship shield technology level for player x to the value assigned. Valid values are from 0 to 5. Start Description: Configures the game settings, starting conditions, and starting positions. Available Commands: none Available Properties: HOMEMINERAL, HOMENATIVE, HOMECASH, HOMEPOPULATION, HOMECARGO, MINERAL, NATIVE, CONTRABAND, CARGO, GALMONEY, GAMENAME, HOSTNAME, RSTNAME, EXTRAFREIGHTERS, STARTINGSHIPS, STARTPOSITIONS HOMEMINERAL: This sets the starting homeworld minerals to the same branded levels as in using the Master GUI. See Appendix B for a table that shows the mapping of values to their associated branded names. Valid values are from 0 to 5. HOMENATIVE: This sets the starting homeworld natives to the same branded levels as in using the Master GUI. See Appendix B for a table that shows the mapping of values to their associated branded names. Valid values are from 0 to 5. HOMECASH: This sets the starting homeworld megacredits to the amount specified. Valid values are from 0 to 1 billion.
HOMEPOPULATION: This sets the starting homeworld colonists to the amount specified. Valid values are from 0 to 50 million. HOMECARGO: This sets the starting homeworld resources (food, supplies, repair, etc.) to the same branded levels as in using the Master GUI. See Appendix B for a table that shows the mapping of values to their associated branded names. Valid values are from 0 to 5. MINERAL: This sets the starting planets minerals to the same branded levels as in using the Master GUI. See Appendix B for a table that shows the mapping of values to their associated branded names. Valid values are from 0 to 5. NATIVE: This sets the starting planets natives to the same branded levels as in using the Master GUI. See Appendix B for a table that shows the mapping of values to their associated branded names. Valid values are from 0 to 5. CONTRABAND: This sets the starting planets contraband to the same branded levels as in using the Master GUI. See Appendix B for a table that shows the mapping of values to their associated branded names. Valid values are from 0 to 5. CARGO: This sets the starting planets resources (food, supplies, repair, etc.) to the same branded levels as in using the Master GUI. See Appendix B for a table that shows the mapping of values to their associated branded names. Valid values are from 0 to 5. GALMONEY: This sets the starting galactic bank credits for all players. If this is not set, then the starting value will be 2000 (3000 for The Cyborg Collective). After this is set, it can be further modified by individual settings under the ‘Exotic’ section. Valid values are from 0 to 1 billion. GAMENAME: This sets the name of the game. Valid value is any text up to 44 characters long. HOSTNAME: This sets the name of the game host. Valid value is any text up to 44 characters long. RSTNAME: This sets the first 6 characters of the file name that you want to use for the player’s RST files. Valid value is any text up to 6 characters. EXTRAFREIGHTERS: This turns on/off the extra starting starship freighters (three Large Deep Space Freighters). Set the value to 0 to not have the extra freighters and 1 to add them. Valid values are 0 or 1. STARTINGSHIPS: This turns on/off the standard starting starships for every race. Set the value to 0 to not have the starships and 1 to add them. Valid values are 0 or 1.
STARTPOSITIONS: The value here will set the starting positions for players on the game, much like what you can do in the Master GUI. The first 4 characters can be CIRC (circle), GRID (grid), CRAZ (crazy), SPAC (spaced), or PICK (pick). • For CIRC, there needs to be a letter after it which can be R (radius), X (xy coordinates), or P (planet). o When you use R, put a number after the R to note the radius from the center of the map. Example: CIRCR105 would place homeworlds in a circle around the center of the map at a radius of 105 ly. o For X, put a number after the X, immediately followed by Y then another number to provide coordinates, such as CIRCX2002Y2368; this will determine the radius to be used from the center to the XY coordinate you provided. o For P, put the name of the planet that will appear in the map file used; this will provide the radius to be used from the center of the map to the XY coordinate of the planet you provided. Example: CIRCP”Wayne’s World” would find Wayne’s World and make the distance from it to the center of the map the radius to use in placing the starting homeworlds. • GRID, CRAZ, and SPAC need no further parameters added. • PICK needs to be followed by a list of planet names or XY coordinates, separated by a comma, that match the number of players in the game. Example: PICK”Jonestown”,”Blindberg”,”Edison” would pick these planets for the starting homeworlds for a 3 player game. PICKX1023Y453,X2048Y878 would start the players at planets near or at the coordinates provided in a 2 player game. Tech Description: Configures the starting technology levels for all players. Available Commands: none Available Properties: TECHPLANET, TECHLARGE, TECHSMALL, TECHPD, TECHGEN, TECHENGINE, TECHHULL, TECHHYP, TECHSHIELD TECHPLANET: This sets the starting planet technology level for all players to the value assigned. Example: TECHPLANET=10 will start all players at planet tech 10. Valid values are from 0 to 10. TECHLARGE: This sets the starting large weapon technology level for player x to the value assigned. Valid values are from 0 to 5. TECHSMALL: This sets the starting small weapon technology level for player x to the value assigned. Valid values are from 0 to 5. TECHPD: This sets the starting point defense technology level for player x to the value assigned. Valid values are from 0 to 5. TECHGEN: This sets the starting power generator technology level for player x to the value assigned. Valid values are from 0 to 5.
TECHENGINE: This sets the starting starship engine technology level for player x to the value assigned. Valid values are from 0 to 7. TECHHULL: This sets the starting starship hull technology level for player x to the value assigned. Valid values are from 0 to 7. TECHHYP: This sets the starting starship hyperdrive technology level for player x to the value assigned. Valid values are from 0 to 5. TECHSHIELD: This sets the starting starship shield technology level for player x to the value assigned. Valid values are from 0 to 5. Exotic Description: Configures the galactic bank and exotic technologies active. Available Commands: PLAYER Available Properties: EXOTICA(x), EXOTICB(x), GALMONEY PLAYER: This command sets the active player number that you are about to set properties for. Example: PLAYER=4 would mean that the future EXOTICA, EXOTICB, and GALMONEY property assignments will be for player 4 until another PLAYER command is given to change the player number. Map Description: Specifies the .MAP file to be used. Available Commands: ID Available Properties: FILE PlanetNames Description: Provides a list of names for planets into the script that will be assigned to planets that aren't provided a name. Available Commands: CLEAR Available Properties: Name for a Planet Base Description: Creates a new ground base object in the game. Available Commands: none Available Properties: NATIVE(x), NATIVEHAPPY(x), CONTRAGOOD(x), CONTRABAD(x), PCOLONIST(x), PCREW(x), PTROOP(x), PGUARD(x), HUGE(x), LWEAPON(x), SWEAPON(x), PDWEAPON(x), ENG(x), HYP(x), SHIELD(x), GEN(x), BUILDHUGE(x), BUILDLWEAPON(x), BUILDSWEAPON(x), BUILDPDWEAPON(x), BUILDENG(x), BUILDHYP(x), BUILDSHIELD(x), BUILDGEN(x), PNUM, NAME, ID, COLONISTHAPPY, OREN, ORED, ORET, OREM, ELEN/FUEL, ELED/DURANIUM, ELET/TRITANIUM, ELEM/MOLYBDENUM, ELEFOOD/FOOD, ELEMED/MED, MEDSETTING, ELEFIX/REPAIR, REPAIRSETTING, ELES/SUPPLY, STRUCT(0)/PODPAD, STRUCT(1)/AABASE, STRUCT(2)/MILSPACEPORT, STRUCT(3)/ENGINEPLANT,
STRUCT(4)/ASSAULTPLANT, STRUCT(5)/FIGHTERPLANT, STRUCT(6)/MEDLAB, STRUCT(7)/GOVCENTER, STRUCT(8)/BASESHIELD, STRUCT(9)/ORDPLANT, STRUCT(10)/WEAPONFACTORY, STRUCT(11)/PARTSFACTORY, STRUCT(12), STRUCT(13), STRUCTSWITCH, SMELTER, CREW, TROOP, HIGHGUARD, COLONISTS, CASH/MEGACREDITS, GOVERNMENTTRANSFER, FACTORY, FACTORYSETTING, MINE, RACESTRUCT1, RACESTRUCT2, RACESTRUCT3, RACESTRUCT4, RACESTRUCT1SETTING, RACESTRUCT2SETTING, RACESTRUCT3SETTING, RACESTRUCT4SETTING, ANTIAIR, FIGHTER(x), TRAINING, ELEORD/ORD, ORDSETTING, CITY, TERRAFORMER, TERRAFORMERSETTING, FARM, LASERCANNON, IONCANNON, RAIDSHELTER, PUBSPACEPORT, MECH(x), ARMOR, UNDERCITY, SCANNER, HULLPLANS, CRIME, ROUGECOLONISTS/ROGUECOLONISTS, ROUGENATIVES/ROGUENATIVES, CCODE, FCODE, X/XBASE, Y/YBASE, ATTACKMODE, BUILDREQFLAG, BUILDSMELTER, BUILDFACTORY, BUILDMINE, BUILDANTIAIR, BUILDTRAINING, BUILDCITY, BUILDTERRAFORMER, BUILDLASERCANNON, BUILDFARM, BUILDIONCANNON, BUILDRAIDSHELTER, BUILDPSP, BUILDMECH(x), BUILDARMOR, BUILDUNDERCITY, BUILDSCANNER, BUILDFIGHTER(x), MINOREN, MINORED, MINORET, MINOREM, MINELEN/MINFUEL, MINELED/MINDURANIUM, MINELET/MINTRITANIUM, MINELEM/MINMOLYBDENUM, MINFOOD, MINMED, MINSUPPLY, MINREPAIR, MINORD, MINCOLONIST, MINTROOP, MINCREW, MINGUARD, MINCASH/MINMEGACREDITS, BUILDRACESTRUCT1, BUILDRACESTRUCT2, BUILDRACESTRUCT3, BUILDRACESTRUCT4, MISCFLAG Buoy Description: Creates a new buoy object in the game. Available Commands: none Available Properties: NAME, PNUM, ID, X, Y, COUNTDOWN, MESSAGE, RANGE, PFLAG/PLAYERFLAGS, EDGE, COLOR, SHOWPNUM, MISCFLAGS Minefield Description: Creates a new minefield object in the game. Available Commands: none Available Properties: PNUM, ID, X, Y, COUNTDOWN, FLAVOR/TYPE, CMDFLAG/MINECOMMANDS, RADIUS Planet Description: Creates a new planet object in the game. Available Commands: none Available Properties: NAME, ID, X, Y, NATIVE(x), CONTRABAND(x), STATE, SOIL, CLIMATE, STAR, STARHEAT, HDSTRESS, HDINTERIA/HDINERTIA, HDBASEFREQ/HDDELTA, EASYN, EASYD, EASYT, EASYM, OREN, ORED, ORET, OREM, ELEN, ELED, ELET, ELEM, RESN, RESD, REST, RESM, ELEFOOD/FOOD, ELEMED/MED, ELEFIX/REPAIR, ELES/SUPPLY,
ELEORD/ORD, CASH/MEGACREDITS, BADSTUFF, SPECIAL1, SPECIAL2, SPECIAL3, FLAG2, FLAG3, ONPLANET Ship Description: Creates a new starship object in the game. Available Commands: none Available Properties: HULL, NAME, ID, X, Y, PDWEAPON(x), LWEAPON(x), SWEAPON(x), GENERATOR(x), WAYPOINTX(x), WAYPOINTY(x), WINGBAY(x), CARGOBAY(x), SHIPLOG/LOG, PNUM, HUGEWEAPON, HYPENG, ENG, SHIELDFLAVOR/SHIELD, ELEN/FUEL, ELEORD/ORD, ELES/SUPPLY, ELEFIX/REPAIR, CASH/MEGACREDITS, CREW, TROOPS, COLONISTS, HIGHGUARD, ELED/DURANIUM, ELET/TRITANIM, ELEM/MOLYBDENUM, ELEFOOD/FOOD, ELEMED/MED, FCODE, DAMAGEENGINE, DAMAGEHYP, DAMAGEHULL, DAMAGESYS, DAMAGELIFE, DAMAGESHIELD, DAMAGEWEAPONS, ARMOR, HAPPY, SKILL, COMMANDCODE(x), EXPERIENCE, HULLPLANS, LOST, ATTACKENEMY, SWITCHWEAPONS, ATTACKPLAN, STANDOFFRANGE, ATTACKVECTOR, SPEED, DAMAGECONTROL, HYPERJUMP, FLEETSWITCH, TOWTARGET, MISSION, MISSION2, MISSION3, CAPTURETARGET, INTERCEPTTARGET, INTERCEPTRANGE, KILLTARGET, TRANSTARGET, TRANSMODE, TRANSCOLONIST, TRANSTROOP, TRANSGUARD, TRANSSUPPLIES, TRANSCASH, TRANSCREW, TRANSREPAIR, TRANSDURANIUM, TRANSTRITANIUM, TRANSMOLYBDENUM, TRANSORD, TRANSFOOD, TRANSMED, TRANSFUEL, MINEFIELDORD, MINEFIELDSWITCH, BADSTUFF, DEVICESWITCH1, DEVICESWITCH2, DEVICESWITCH3, FLEETLEADER, MINFUEL, MINORD, NEWHULL, NEWHULLCOUNT, AUTOPILOT, AUTOMODEFLAG, AUTOMIN, DEVICEFLAG1, DEVICEFLAG2, DEVICEFLAG3, WEAPONLOADOUT Thing Description: Creates a new miscellaneous object in the game. Available Commands: none Available Properties: NAME, ID, X, Y, FLAVOR, DAMAGE, ENERGY, LIFE, CREW, SPEED, XWAY, YWAY, MARKER, INFO1, INFO2, HEADING, HARDNESS, STEALTH, EDGE, PARENT, BINFILE, BIN, MASS, CODE/DATA1 Wing Description: Creates a new wing object in the game. Available Commands: none Available Properties: NAME, ID, X, Y, WINGLOG/LOG, FCODE, ATTACKMODE, PNUM, WINGRACE/RACENUM, COUNT(x), SPEED, WAYPOINTX(x), WAYPOINTY(x), HIGHGUARD/GUARD, ELEN/FUEL, XHOME, YHOME, IDHOME, MISSION, PATROLRANGE/INTERCEPTRANGE, ELEORD/ORD, FLEETFLAG, KILLTARGET, DOCKTARGET, COMMANDS, FLEETLEADER, CMDCODE(x)
AssaultPod Description: Creates a new assault pod object in the game. Available Commands: none Available Properties: NAME, PNUM, ID, X, Y, COUNTDOWN, PODCOMMANDS, FLIGHTCOMMANDS, BOOSTX, BOOSTY, DOCKTARGET, DROPTARGET, DOCKEDTO, TROOP, COLONIST, GUARD, CREW, MECH(x), FIGHTER(x) ConPod Description: Creates a new construction pod object in the game. Available Commands: none Available Properties: NAME, PNUM, ID, X, Y, COUNTDOWN, PODCOMMANDS, FLIGHTCOMMANDS, BOOSTX, BOOSTY, DOCKTARGET, DROPTARGET, DOCKEDTO, ELED/DURANIUM, ELET/TRITANIUM, ELEM/MOLYBDENUM, CASH/MEGACREDITS, HULLPLANS GoldPod Description: Creates a new gold pod object in the game. Available Commands: none Available Properties: NAME, PNUM, ID, X, Y, COUNTDOWN, PODCOMMANDS, FLIGHTCOMMANDS, BOOSTX, BOOSTY, DOCKTARGET, DROPTARGET, DOCKEDTO, CONTRABAND(x), CASH/MEGACREDITS, HULLPLANS LifePod Description: Creates a new life pod object in the game. Available Commands: none Available Properties: NAME, PNUM, ID, X, Y, COUNTDOWN, PODCOMMANDS, FLIGHTCOMMANDS, BOOSTX, BOOSTY, DOCKTARGET, DROPTARGET, DOCKEDTO, PTROOP/TROOP, PCOLONIST/COLONIST, PGUARD/GUARD, PCREW/CREW, PRACE/PODRACE, FREEZE NativePod Description: Creates a new native pod object in the game. Available Commands: none Available Properties: NAME, PNUM, ID, X, Y, COUNTDOWN, PODCOMMANDS, FLIGHTCOMMANDS, BOOSTX, BOOSTY, DOCKTARGET, DROPTARGET, DOCKEDTO, NATIVE(x) OrePod Description: Creates a new ore pod object in the game. Available Commands: none Available Properties: NAME, PNUM, ID, X, Y, COUNTDOWN, PODCOMMANDS, FLIGHTCOMMANDS, BOOSTX, BOOSTY, DOCKTARGET, DROPTARGET, DOCKEDTO, OREN/NEUTRONIUM, ORED/DURANIUM, ORET/TRITANIUM, OREM/MOLYBDENUM OutfitPod
Description: Creates a new outfit pod object in the game. Available Commands: none Available Properties: NAME, PNUM, ID, X, Y, COUNTDOWN, PODCOMMANDS, FLIGHTCOMMANDS, BOOSTX, BOOSTY, DOCKTARGET, DROPTARGET, DOCKEDTO, PDWEAPON(x), LWEAPON(x), SWEAPON(x), GEN(x), OLDPDWEAPON(x), OLDLWEAPON(x), OLDSWEAPON(x), OLDGEN(x), HUGEWEAPON, OLDHUGEWEAPON, HYPENG, OLDHYPENG, ENG, OLDENG, ENGCOUNT, OLDENGCOUNT, SHIELDFLAVOR/SHIELD, OLDSHIELDFLAVOR/OLDSHIELD, ARMOR ResupplyPod Description: Creates a new resupply pod object in the game. Available Commands: none Available Properties: NAME, PNUM, ID, X, Y, COUNTDOWN, PODCOMMANDS, FLIGHTCOMMANDS, BOOSTX, BOOSTY, DOCKTARGET, DROPTARGET, DOCKEDTO, ELEN/FUEL, ELEORD/ORD, ELES/SUPPLY, ELEFIX/REPAIR, ELEMED/MED, ELEFOOD/FOOD, CASH/MEGACREDITS, xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx, xxx Wreckage Description: Creates a new wreckage object in the game. Available Commands: none Available Properties: NAME, PNUM, ID, X, Y, COUNTDOWN, PODCOMMANDS, FLIGHTCOMMANDS, BOOSTX, BOOSTY, DOCKTARGET, DROPTARGET, DOCKEDTO, PDWEAPON(x), LWEAPON(x), SWEAPON(x), GEN(x), CONTRABAND(x), ELED/DURANIUM, ELET/TRITANIUM, ELEM/MOLYBDENUM, CASH/MEGACREDITS, ELEN/FUEL, ELEORD/ORD, ELES/SUPPLY, ELEFIX/REPAIR, ELEMED/MED, HUGEWEAPON, HYPENG, ENG, ENGCOUNT, SHIELDFLAVOR/SHIELD Making It Readable Formatting is not important to the Master.exe application. It ignores spaces and tabs before commands and will strip quotes where necessary. However, you may want to make your script readable to yourself later on to figure out what you were thinking at the time or to others if you want to share your brilliance. You can insert comments/remarks into the text by beginning them with a singlequote/apostrophe (‘). Anything after the ‘ until the end of the line (carriage return character) will be completely ignored by the Mastering processes. Appendix A
Race Number Table Num 101 102
Name The Solar Federation of Planets The Lizard Kingdom
103 104 105 106 107 108 109 110 111 801 802
The Birdman Republic The Stormer Kingdom The Privateer Bands The Cyborg Collective The Crystal Assembly The Evil Empire The Robotic Imperium The Rebels The Colonies Of Man The People's Army The University Alliance
803 804 805 806
The Scavenger Tribes The Holy Draconian Empire The United Enforcement Authority The Reunited Coalition of Systems
808 810 811 818
The Aczanny Pyramids The Centaurs The Solorian Unity The Interstellar Master Traders
Appendix B
Resources Table Num 0 1 2 3 4 5
Name None Some Average Above Average Abundant Extra Abundant