Personnel/Crew Assignment Interface and Module

This page is a discussion of the Personnel/Crew Assignment Module.

The Personnel/Crew Assignment module is designed to handle the Personnel office interface; more specifically, it's designed to give the player specific information on crewmembers and possible recruits, allow them to hire and transfer personnel to various postings within their fleet, and conduct training. The basic architecture of the module is similar to other modules within the game that handle basic data types (such as integers and strings) and hash tables / dictionaries. This module is required by the Starport Module only. The Personnel/Crew Assignment module is important to the game because, as with the Fleet Configuration module, it directly determines the strength of the player's attributes (in this case by determining their effective capabilities within disciplines, which determines how easily the player can accomplish in-game tasks) and indirectly sets the level of difficulty at which the player is playing. All code for the Personnel/Crew Assignment module is located in the sf3\_personnel.py file.

## Summary Description

The player will be allowed access to the Personnel Office if and only if a certain flag is set to True during the initialization of a given Starport object. Should this flag be set to True, a list of available species will be loaded into memory, from which a list of recruits available at the will be generated and stored in the object's recruitment list. Upon entry into the office, the interface will display the names of the generated recruits alongside a list of the player's current active crewmembers. The player may select either recruits or crewmembers for display, and decide whether to assign recruits to their ships, dismiss crewmembers, train crewmembers, or rename crewmembers. Any changes indicated by the player go into effect immediately; the routine will reassign overall ship and fleet values based upon the change the player makes.

## Data Structure of the ofc\_Per Object

The following list is an indication of the various variables and methods that will be included in a ofc\_Per object. This list contains suggested methods and variables included in the module (these are closer to final methods than most other modules in the game at the time of this writing, as there have been console prototype personnel modules previously written in C++). Ofc\_Per objects are meant to be used as child objects of Starport objects, and have no child objects. Ofc\_Per objects are created during runtime when a player enters a star system and are subsequently destroyed when they leave that system. Thus, while there may be multiple ofc\_Per objects used in the game, only one will be in existence at a time (*per Starport located in a system; the Flornea system has two Starports in it and thus **may** have two ofc\_Per objects in it as well, one for each base*). Their data structure is as follows:

* Class: ofc\_Per
	+ Hash/Dictionary: Available\_Species
	+ Hash/Dictionary: Recruit\_List
		- Class: Character

## Data Structure of the Character Object

The following list is a rough indication of the various classes and variables that will be included in a Character object. This is meant only as a guide; the names of the actual variables may be different from what's listed here (any changes to variable names should be updated here ASAP). Only variables are listed here; class methods for character objects will be created as needed. Character objects are a sub-class of a Creature object, inheriting all methods and variables from that class as discussed on the Planetary Exploration Module page (they thus also have the same methods and variables as Actor, Combatant and Trade\_Good objects). Character objects can be direct children of Starship or Starport objects. There is also one created as a sub-class of the Player object at the game's onset. Their data structure is as follows:

* Class: Character
	+ Class: Creature (for more details, see the discussion on the Planetary Exploration Module page.
	+ String: Name
	+ String: Species
	+ String: Billet (i.e. their on-board job; captain, sci.off., navigator, engineer, comm.off., doctor, tactical, redshirt.)
	+ Integer: Temporary\_Hit\_Points (these come from the Doctor's *Biofortification* sub-discipline, as discussed on the Player page.)
	+ Float(2 decimals): Vitality (HP+Temporary HP/maximum HP, as a percentage)
	+ Vector/List: Disciplines
		- String: Discipline\_Name
		- Integer: Discipline\_Value
		- Integer: Maximum\_Discipline\_Value
		- Vector/List: Sub\_Disciplines
			* String: Sub\_Discipline\_Name
			* Integer: Sub\_Discipline\_Score
	+ Flag: Being\_Treated (Treated/Not Treated)
	+ Flag: Redshirt (Senior Officer/Redshirt; used to determine potential replacement officers)
	+ Integer: Signing\_Bonus (the amount the crewman costs to hire on.)
	+ Method:\_\_init\_\_(self, bCO=False, szRace="None")
	+ Method:checkMyVitality() (recalculates the character's vitality level)

## Interface

   *Note: The graphic as presented here is somewhat out of date for what's currently intended. As such, the following description of the interface will differ significantly. Whoever designs the interface should use the text as a guide, rather than the image. A new image will be produced as soon as one is available.*

The Personnel/Crew Assignment Office interface consists of three main areas:

* Available Personnel Listbox
* Crew Roster Listbox
* Exit Button

The Interface will have a "Personnel" header located at the top of the screen. Immediately below this header will be the Available Personnel Listbox (on the left) and the Crew Roster Listbox (on the right), which between the two will take up the bulk of the remainder of the screen. The area taken up by the Available Personnel Listbox should be equal to that of the Crew Roster Listbox, so that each listbox takes up one half of the total screen area. Along the bottom of the screen is a "footer", which will take up a narrow strip along the entire bottom of the screen; the Exit Button will be located in the center of this footer. On each side of the top of the Crew Roster Listbox will be an arrow icon; clicking on these icons will enable the player to cycle through the currently selected "active" ship (the key combination of <Shift> and the left or right arrow key will also cycle through ship selections; this scrolling will be available to the player even if they only have one ship.) Each listbox will contain a series of names; these will be the names of characters the game routine has generated that the player may elect to assign to the active ship (in the Available Personnel Listbox), or the names of the characters that have been assigned to the player's active ship. When the Interface engages, a box cursor will appear around the topmost selection available in the Available Personnel Listbox. The player may use the arrow keys to move this cursor around; pressing up or down will move the cursor to the next selection in the currently "active" listbox (scrolling up from the top will select the bottommost selection and vice versa), and pressing left or right will move the cursor to the same selection in the other listbox (e.g. if an entry in the Available Personnel Listbox was selected prior to the player pushing the right arrow key, the Crew Roster Listbox will activate). All movement of the cursor will be accompanied by the SELECT\_SCROLL tone, as will switching from one active starship to the next. The <Enter> key will "activate" the currently selected character (accompanied by the ACKNOWLEDGED tone). The player may also use the mouse to move the cursor and may left-click to make a selection. The <Backspace> key will activate the Exit Button at the bottom of the interface; the player may also mouse over and click on this button to select it. When the Exit Button is selected, the ACKNOWLEDGED tone will sound and the game will switch back to the corresponding Starport concourse Interface.

When an individual character is activated, another window pops up above the main Interface. This window has four areas of its own:

* Portrait Area
* Personal Information Area
* Skills Information Area
* Interface Controls

While active, the pop-up window will override the controls to the main Personnel interface (i.e. only one character may be active at any given time, and while they are active the player may not exit the interface). The pop-up area will likely cover most of the available screen area.

The Portrait Area is in the upper-right hand side of the window. This simply shows a portrait or silhouette of the person in question (or a rotating model, should a 3D model be utilized). This is included mainly as eye candy; nothing will happen here that the player can directly affect. The player's current account balance will be shown along the top edge of this area. To the left of this area (in the upper left-hand side of the screen) is the Personal Information Area. This area is a scroll-able text area that contains peripheral information about the character, such as their name, gender, age, height and weight. If the character is currently assigned to a ship in the player's fleet, clicking on the name will bring up a dialogue box that will allow the player to change it (pressing the "N" key will also bring up this dialogue while the character is active; a button in the Interface Controls will also activate the renaming dialogue). The player may type in a new name and either hit <Enter> or click "OK" to confirm the character's new name, or hit <Backspace> (or click "CANCEL") to keep the current name. The rest of the character's personal data cannot be changed; once again, the remaining information is meant as eye candy.

Immediately below both the Portrait Area and the Personal Information Area is the Skills Information Area. This area lists the current levels of the Skills in each of the character's seven Disciplines, and also lists their overall score in those Disciplines. The Disciplines will be listed side by side, with the Discipline names in a different color than the names of skills. Skill scores will appear directly beneath the indicated Skill name; the scores will be of a slightly larger font face than Skill names. This should let each Discipline and associated Skill appear in a set of seven columns without taking up too much screen area. *This arrangement will have to be tinkered around with to see what works best*. This area will have an interface associated with it during crew training.

Finally, at the bottom of the pop-up are the Interface Controls. This area will either accommodate two buttons (for actively selected recruits) or six buttons (for actively selected crewmembers). For selected recruits, the buttons are "Assign" and "Exit". "Assign" will bring up a dialogue that asks the player which position the recruit will be assigned to on the currently active starship. The options available in this dialogue will be dependent upon the active starship; any Senior Officer position that has not yet been filled will be included as an option. "Redshirt" will be an option, regardless of whether any redshirts are currently assigned to the ship or not. Finally, "Never Mind" will always be an option; this cancels the selection and returns control to the character's pop-up. If the player decides to assign the recruit to a posting, a dialogue will open informing them of the amount of the character's signing bonus and asking them if they are sure they wish to assign the character, with simple "Yes" and "No" options available. Pressing "Yes" will move the character onto the ship, remove them from the Starport's available personnel list, and add a "Recruitment" transaction to the player's transaction list. Pressing "No" has the same effect as selecting the "Never Mind" option, returning control to the character's pop-up. Note that all starships have a maximum crew capacity; if the number of crewmembers assigned to the currently active starship equals or exceeds its maximum, the "Assign" button will be dimmed and un-selectable. Selecting "Exit" will close the pop-up and return control to the main Personnel office interface.

For selected crewmembers, six buttons will appear in the Interface Controls. These buttons are "Reassign", "Transfer", "Dismiss", "Train", "Rename" and "Exit".

"Reassign" will bring up a dialogue that will ask the player which open position the recruit will be assigned to on the currently active starship. When compiling this list, the routine will automatically skip over the position to which the character is already assigned. If there are no other open positions, the QUESTION tone will sound and a message will appear saying "THERE ARE NO OTHER OPEN SENIOR OFFICER POSITIONS ON THIS SHIP AT THIS TIME, SIR. DO YOU WISH TO DEMOTE THIS CREWMEMBER?", along with a YES and NO button. Clicking YES will sound the ACKNOWLEDGED TONE and move the crewmen to the "Redshirt" position, while clicking NO sounds the ACKNOWLEDGED TONE. Either selection will return control back to the crewmember's pop-up. If there are other open positions, the list of open positions will be presented to the player, along with a "Never Mind" option. Selecting an open position will sound the QUESTION tone and make a message appear saying "OKAY TO REASSIGN THIS CREWMEMBER AS (position name)?", along with a YES and NO button. Clicking YES will reassign the character to that position, and clicking NO will have the same effect as clicking "Never Mind" (a sounding of the ACKNOWLEDGED tone with no other action occurring). "Redshirt" will be an option, regardless of whether any redshirts are currently assigned to the ship or not. In all cases, a character may only be assigned to one job at a time by the player; they can moonlight in the event of another character's death, but the question of which position that character holds must be resolved the next time the ship visits a Starport.

"Transfer" gives the player the option of moving the character to another ship in their fleet. The game will check to see if there are any other ships in the player's fleet. If there are none, selecting this option will bring up a message stating "YOU HAVE NO OTHER SHIPS IN YOUR FLEET, SIR.", sounding the NEGATIVE tone. Otherwise, the Transfer option behave similarly to the Reassign button; open senior officer slots are determined on the other ship, with a question popping up if no positions are available and a list of the available options if there are positions available. When a new position is selected on the new ship, the QUESTION tone will sound, a message will appear saying "OKAY TO REASSIGN THIS CREWMEMBER TO ISS (ship name) AS HER (position name)?", and a YES and NO button will appear. Clicking YES will reassign the character to that ship in the indicated position, and clicking NO will have the same effect as clicking "Never Mind" (a sounding of the ACKNOWLEDGED tone with no other action occurring). Should the player attempt to reassign their character to another ship, the QUESTION tone will sound, the message "DO YOU WISH TO TRANSFER YOUR COMMAND TO THIS SHIP?" will appear, and a YES/NO button option will appear. Pressing YES will swap out the captain characters between the two indicated ship, with the player's new command becoming the fleet's flagship.

"Dismiss" gives the player the option of completely removing a character from their fleet. This control will be greyed out if the player's character is selected; they will not be allowed to "dismiss" themselves. When selected, the QUESTION tone will sound, the message "OKAY TO DISMISS THIS CREWMEMBER?" appears, and a YES/NO button option will appear. Pressing NO reverts control back to the character's pop-up. Pressing YES will remove the character from the ship and place them in the Starport's recruitment list. This will also free up whatever position that character was occupying. Whenever either action is selected, the ACKNOWLEDGED tone will sound upon activation.

"Train" gives the player the ability to train up a character in a particular field of expertise, and along with making ship upgrades is one of the ways in which they grow stronger as the game progresses. Of the options that can be selected from the character pop-up, this will be the largest and most complex. When selected, a dialog will pop up showing each of the player's seven Discipline scores as the headers of a set of columns. Beneath each of these will be the names of the Skills under each Discipline, the current score, and a button marked TRAIN next to each of these. When any training button is pressed, the game will check three things: whether the player has enough money to conduct any level of training, whether the Discipline has met or exceeded the maximum level for that character, and whether or not the level of the Skill associated with the TRAIN button pressed is already at 100 points. If any of these conditions are met, the NEGATIVE tone will sound and a message will pop up explaining why training cannot take place (either "YOU DON'T HAVE SUFFICIENT AVAILABLE FUNDS TO CONDUCT TRAINING AT THIS TIME.", "THIS CREWMEMBER HAS ALREADY BEEN TRAINED AS MUCH AS IS POSSIBLE IN THIS FIELD, SIR.", or "THIS CREWMEMBER HAS ALREADY BEEN AS TRAINED AS MUCH AS POSSIBLE IN THIS SKILL, SIR." depending on the specific situation). With each pop-up message, an OK button will be provided; pressing this button will return game control to the character's training pop-up. If these conditions are not met, the game will calculate the number of training sessions needed to bring the character up to 100 points in the Skill (based on the character's learning rate; when trained, the character will gain a number of points in the indicated Skill and its controlling Discipline equal to their learning rate) as well as the number of training sessions needed to bring the character to their training limit in the indicated Skill's controlling Discipline and the maximum number of lessons the player may purchase (based on their funding; lessons cost 300 MU apiece). A dialog will pop up asking the character how many lessons they wish to purchase, displaying a range from one to a maximum number of lessons equal to the lowest of the values it calculated. The QUESTION tone will sound then this pop-up appears, along with an OK and CANCEL button and a dialog for entering the number of lessons desired. The game will check for valid input and gripe at the player if improper input is detected; it will also display an appropriate error message if the player enters a value higher than the indicated message (either "YOU CAN'T AFFORD THAT MANY LESSONS." or "THAT'S MORE LESSONS THAN THIS CREWMEMBER CAN USE. IF YOU WANT TO WASTE YOUR MONEY, THAT'S FINE WITH ME..."), which will be accompanied by a NEVER MIND button; pressing this button closes out the lesson purchase pop up and returns game control to the crewmember's training pop-up. If the player pushes the CANCEL button while the purchasing pop-up is active, the ACKNOWLEDGED tone will sound and the pop-up will close, returning game control to the crewmember's training pop-up. Otherwise, the game will calculate the amount of points to add to the skill (learning rate \* lessons bought), add that amount to the Skill, and add that amount to the controlling Discipline. Should the amount of the skill exceed 100 points, the game will adjust the Skill down to 100; any adjustment necessary will be reflected in Discipline as well. Similarly, should the Discipline's final score exceed the maximum trainable limit for the crewmember, the game will adjust the Discipline down to the maximum level and adjust the Skill down as needed. Finally, the game will sound the CHA-CHING tone, and subtract (300 \* number of lessons purchased) from the player's balance. Game control returns to the crewmember's training pop-up after successful training, though it is immediately updated to reflect the new Skill/Discipline levels and account balance.

"Rename" gives the player the option to rename a character. Pressing this button brings up a dialog that is seeded with the character's current name, along with an OK/CANCEL button option. Selecting CANCEL will close the dialog box without making any change. Selecting OK will close the dialog box, immediately replacing the character's name with the contents of the dialog box (regardless of whether the player has made any change to the name or not). Either option sounds the ACKNOWLEDGED tone. Any changes made are immediate; any message that specifically mentions a crewmember whose name has been changed will also change to match.

Finally, selecting "Exit" will sound the ACKNOWLEDGED tone and close the pop-up and return control to the main Personnel office interface.

## General Procedures and Notes

All ships in the player's fleet must have at least one character aboard when they leave Starport. They will not be allowed to leave otherwise. The player may re-assign themselves to another ship in their fleet but they may not dismiss themselves.

*I need to check to see if I've got it set up to where a single character can hold all the Senior Officer jobs on a ship or not; it needs to be that way. It's just that they have to be explicitly assigned to all the jobs if that's the case. Crew has to be assigned to the positions, but the same person can be assigned to every role.*

The ship's ability to function in each of the above roles is calculated based on the following formula:

Effective Ship Skill = (Skill + (Captain's MST skill / 10) + (Crewmember's Controlling Discipline / 10)) \* Crewmember's health percentage

### Character Creation

1. Game will check the player's current CSSV for their flagship ONLY...
2. Game will set the player's difficulty level based on the CSSV determined.
	1. For each level, the game will check to see if the player is above the threshhold value.
	2. When the player is not above the threshhold, the check stops; the player is at the last level where the value was greater than the minimum.
	3. Game gets the corresponding values for that threshold for the various categories.
3. Game will select a species for the new character.
	1. (going to be based on location; uses (starport\_name).xml, or based on the species encountered)
	2. Game calls up the species record in personnel\_data.xml.
	3. Game sets the character's durability and learning rate.
		1. Check made to see if there is variability, variability limited to ±1.
	4. Game sets the character's height, weight and age.
		1. Game calculates these based on the available values passed from the species record.
4. Game sets the character's Discipline scores, using the retrieved values for the difficulty level and the categories indicated for the species.
5. Game sets individual Skill scores for the character
	1. Game selects an "occupation" for the character at random (for recruits), or in order (for alien ships/fleets)
	2. Game sets points based on skill priorities for the occupation; specific amounts to each skill based on number of points available to overall Discipline.
6. Game will request a name for the character.

### Crew Training

All races have a range of possible scores in each Discipline that is determined by the categorical rating of the species in that Discipline:

* Poor: 0-100
* Average: 10-150
* Good: 30-200
* Excellent: 50-250.

The actual initial value for a character in any given Discipline is set by the character creation routine. The maximum level of training they can directly obtain is always equal to the maximum end of the range. Characters may obtain indirect training through **real-world experience** (discussed shortly), which ignores this upper limit.

All Skills may have a value of anywhere from 0-100 points. The initial value is, once again, set during the character creation process. No mechanism in the game will allow a character to ignore the upper limit of 100 points for any Skill score.

#### Training Process Example

Let's take an example of a Veloxi. The learning rate of the Veloxi race is 6, and this particular individual has a learning rate of 7 (as set during the character creation process). The crewmember's **Navigation** Discipline is currently at 100, with *Astropiloting* at 30; the player wants to train this crew member in *Astropiloting*. When the player chooses Train on the personnel menu, they then choose the *Astropiloting* Skill and are prompted for how many training sessions. The game calculates the maximum possible number of sessions as discussed previously: the character may gain another 70 points in *Astropiloting*; with a learning rate of seven, this equates to a maximum of ten possible lessons. The character also may gain up to another 150 points in **Navigation**; this equates to 21 lessons given the character's learning rate. Assuming they have the money to do so, the game shows the lesser of the two values, and in this case prompts the player for 0-10 lessons. Each lesson takes 4 hours to complete and costs 300 MU, and adds to the amount of time that passes once the player leaves Starport; this time addition is not evaluated until after the player leaves the Personnel office and only the largest amount of time required for any one character being trained is saved, allowing multiple characters to be trained simultaneously. Let's say the player chooses to buy five lessons for the Veloxi. The amount of training received per lesson is equal to the crewmember's learning rate. With a learning rate of seven, five lessons correspond to a 35 point increase. This increase's their *Astropiloting* Skill to 65. It also adds 35 points to their overall **Navigation** Discipline, increasing the score from 100 to 135. Finally, the five lessons add 20 hours to the amount of time passage when the player finally leaves Starport.

#### Real-World Experience

Only real experience on board a ship will allow a recruit to increase their Disciplines past the training limit, allowing a crewmember that has been trained as much as is possible by the player to still occasionally improve themselves. The opportunity to gain Real-World training occurs any time a "check" of a given Skill is required. A random number from 0-10 is selected when this occurs; if the result is equal to or less than the character's learning rate, they gain one point in the indicated Skill (provided they are below the 100 point upper limit for all Skills). Note that there are some Skills wherein real-world training will be impossible, as they are never directly "exercised" in-game.

## XML

Character creation is XML driven; this gives the game's engines enormous flexibility, by allowing species (and "occupations") to be added or removed from the game at will. Likewise, points given for character experience threshholds can be adjusted at will until the game is finalized (so long as there exist separate entries in the key file for the number of points to be awarded and how those points will be distributed). The character creation engine only requires one XML handler in and of itself to read the key personnel file (though it is dependent upon a second XML set used by the Starport concourse Module itself to limit the species available). Appropriately enough, this file is called "personnel\_data.xml". The following briefly goes over what data is located in this file.

### personnel\_data.xml File

The file "personnel\_data.xml" is designed to be a relevant list of data required to create any character from any race in the course of the game (necessary, as there is the possibility of engaging in slave trading in SF3). Under the root element, entries are listed as being part of one of four categorical elements: "job", "score", "difficulty", and "species". All of these categories are important to the character creation process and none of them should ever be modified such that they are left blank under any circumstances. Entries in the "score", "difficulty" and "species" elements are empty elements, while those in the "job" category have seven empty sub-element entries, which themselves are empty elements.

"Job" entries are used to dictate the distribution of building points when a character is first created (it is assumed that they held that particular "job" at some point in their career, or at least have been building up a skill set that would ultimately lead to a career in that position). Each job entry has one attribute, "name", which is the name of that particular profession; this particular attribute is also used for determining which jobs are available in the game for the player to assign their crewmembers. Sub-element entries determine the "point priorities" (see the discussion on character generation above for more details) used when the character is created. Each "job" entry must have exactly seven sub-elements, named "primary" (for highest priority point assignments), "secondary", "tertiary", "quaternary", "quinary", "senary", and "septenary" (lowest priority). Each of these sub-elements in tern have six attributes: "val" (which holds the name of the Discipline for which that priority level is assigned), "pri1" (for the highest priority Skill under that Discipline), "pri2", "pri3", "pri4", and "pri5" (lowest priority). "Val" and "pri#" entries each contain a three letter code which is recognized by the character generation routine for each Discipline and Skill in the game.

"Difficulty" entries are used to determine the quality of personnel available to the player when attempting to acquire new crewmembers at a Starport, and is also used to set the Skill levels of alien crews during encounters (for more on how this is done, see the discussion on the Encounter Module page). Difficulty entries have exactly six attributes, named "level" (which corresponds to the "crew difficulty level" the player has achieved based on their flagship's Crew Skill Score Value, a sum of the scores of the predominant Disciplines of the senior officers (i.e. the Captain's **Command** score, the Science Officer's **Science** score, and so forth)), "poor" (the number of points assigned to a character's Discipline if they are rated 'poor' in that discipline), "average", "good", "excellent" (all three the same as poor for the other categorical Discipline ratings), and "mincssv" (which lists the minimum CSSV that the player must have obtained to create a character at the indicated level).

"Score" entries are used to define the number of points given to a various skills at different priority levels. Score entries have exactly six attributes, named "points" (the number of points to be distributed), "dist1" (which defines the number of points distributed to the highest priority skill), "dist2", "dist3", "dist4", and "dist5" (for the number of points distributed to the lowest priority skill).

Finally, "species" entries are used to set the basic characteristics of a character of a given race, and are the largest and most complex entries in the file. Seventeen attributes included with the species entry are mandatory requirements; any additional attributes must be added in groups of three. The mandatory attributes are "name" (the name of the species), "dur" (the Durability rating of the species), "lr" (the Learning Rate of the species), "cmd" (the species categorical rating in the **Command** Discipline), "sci", "nav", "tac", "eng", "com", "med" (the same as cmd, corresponding to the **Science**, **Navigation**, **Tactical**, **Engineering**, **Communications**, and **Medicine** Disciplines, respectively), "genders" (indicates if there is more than one gender present, important for situations of dimorphism), "htbase1", "htx1", "htmult1" (the three determine the height (or long dimension) of members of the species, and act as a base value, d5 multiplier, and amount modifier respectively), "wtbase1", "wtx1", and "wtmult1" (which have similar functions to the 'ht' attributes, except that they are used to determine the individual's mass). If there is significant sexual dimorphism present in the race, additional forms of the 'ht' ant 'wt' attributes may be provided, with the new attributes ending in 2. The game will never check for more height and weight variables than there are genders within the race, and all 'ht' and 'wt' variables must be provided as a complete set (i.e. all six are required for additional genders).

Sample structure of the personnel\_data.xml file:

```

<?xml version="1.0" encoding="UTF-8"?>
 <root table-name="xxx" version="0.1">
<?xml version="1.0" ?>
<root>
     <job name="Captain">
          <primary val="CMD" pri1="MST" pri2="INS" pri3="CRD" pri4="SEC" pri5="GID" />
          <secondary val="TAC" pri1="CMN" pri2="EVM" pri3="TAR" pri4="BLT" pri5="MKM" />
          <tertiary val="NAV" pri1="ASP" pri2="TRP" pri3="ASG" pri4="TRG" pri5="STL" />
          <quaternary val="SCI" pri1="PLT" pri2="ARC" pri3="GEO" pri4="TYP" pri5="TEC" />
          <quinary val="MED" pri1="SPM" pri2="ITC" pri3="TRT" pri4="XNB" pri5="BFT" />
          <senary val="ENG" pri1="DMC" pri2="ITS" pri3="DEF" pri4="QUM" pri5="MEC" />
          <septenary val="COM" pri1="IND" pri2="NEG" pri3="RAP" pri4="TRL" pri5="DIS" />
     </job>
     <score points="50" dist1="20" dist2="15" dist3="10" dist4="5" dist5="0" />
     <difficulty level="0" poor="0" average="10" good="30" excellent="50" mincssv="50" />
     <species name="Human" dur="6" lr="9" cmd="average" sci="excellent" nav="good" tac="good" eng="good" com="good" med="good" genders="2" htbase1="1.5" htx1="1" htmult1="0.1" wtbase1="40" wtx1="1+1" wtmult1="10" htbase2="1.4" htx2="1" htmult2="0.1" wtbase2="30" wtx2="1+1" wtmult2="5" />
 </root>

```

## Module Status

*This is current as of March 31, 2010.*

This module is currently in the final design phases; while specific descriptions of the intended functions of modules have yet to be written, the remainder of the module's basic description is complete at this point. Further design work on this module has been frozen for the time being, and will remain so until I'm ready to begin method descriptions for all remaining extant modules.

NEXT: Trade Depot Interface and Module

PREVIOUS: Fleet Configuration and Mechanic Interface and Module

TOP