Modding Jobs and Professions

Modding jobs allows you to add, replace or modify existing Jobs. A profession is a job that is allowed to be picked by the Captain at the start of the game and comes with 2 special Traits and rules about their starting crew.

Jobs and Professions share the same configuration table, data.JobConfig but use the fields for different purposes.

## Talents

For more details modding Talents, see the Google Doc documentation WIP.

## Jobs

Jobs use the fields as follows:

* Setting *groupId = 1* indicates this row contains a job
* *name* is the job's full name
* *name2* is used if the game requests a shortened version of the name, such as Electronics Tech shortened to E. Tech. This field is optional and if left blank then *name* is used
* *desc* is a full description for the job
* *option1* indicates if the job has a specialist position. Where 0 = non-combat crew, 1 = crew combat job, 2 = wing job, 3 = crew combat AND wing job, or 4 = captain trainable wing job (where the captain may train even though the captain cannot pilot a craft (e.g., Saboteur)).
* *option2* indicates if the Job has a faction affinity, using the faction enums as shown in Modding Enums for Factions
* *option3* indicates whether the job prefers fighting from the front if its preferred position ends up as a tie. Set to 1 for preferring the frontline and 0 for preferring the backline
* *option4* indicates whether the job should gain bonuses from high level Rank, Permit or Edicts, where 1 = bonus from Rank, 2 = bonus from Permit, 3 = bonus from Edict
* *option5* indicates whether crew members of this Job can be promoted to officer rank. If set to 1, these characters cannot be promoted.

## Professions

Professions uses the fields as follows:

* Setting *groupId = 2* indicates this row contains a profession
* *name* is the profession name
* *name2* contains a list of the Job's skills in order of importance
* *desc* is a full description for the profession
* *desc2* is a short tagline for the profession
* *option1* and *option2* reference data.Trait.\_id for the profession's starting Traits. If the data.characterEffectId.effect.\_id for a Trait is negative it is a ShipEffect where data.ShipEffect.\_id = abs(data.characterEffectId.effect.\_id)
* *option3* references the data.JobConfig.\_id of the job that is used for this profession. If your profession is Bounty Hunter then this should be the \_id of the Bounty Hunter job
* *option4* indicates the type of starting world that the crew hails from which will help set their Traits. Values 1-14 are matched to the starting professions 101-114. To have a starting crew like a Spy, use value 7 for your profession
* *option5* is unlock data and not used in modding
* *option6* determines the sort order of the professions, with 1 being displayed first
* *option7* indicates what weapon the new captain should be carrying in the New Captain screen, where 1 = Assault Rifle, 2 = Pistol, 3 = Blade and 4 = Snubber

The following SQL demonstrates the full addition of a Doctor profession including 2 Traits and linked character Effect and Ship Effect.

```
INSERT into JobConfig (groupId, option1, option2, option3, option4, option5, option6, option7, pngPath, name, name2, desc, desc2) VALUES (
/\* 2 means profession \*/
2,
/\* trait 2000 is Mortality Known, as defined below \*/
2000,
/\* trait 2001 is Vudka is Best Medicine, as defined below \*/
2001,
/\* our first Job, JobConfig.\_id=12 is DOCTOR \*/
12,
/\* which starting profession hint to give proc-gen \*/
15,
/\* no unlock, so 0 \*/
0,
/\* sort order, lower goes first \*/
0,
/\* weapon type to carry, 2 = pistol \*/
2,
/\* use the doctor icon \*/
"icon\_job\_doctor.png",
/\* profession name\*/
"Doctor",
/\* Starting Skills list \*/
"Starting Skills: Doctor, Command, Tactics",
/\* full profession description \*/
"I fix stuff",
/\* tagline \*/
"Killing spacing parasites since 212 AE"
);

/\* MORTALITY KNOWN \*/
INSERT INTO Trait (\_id, traitName, traitDesc, characterEffectId, traitScore, actionType, resultType, traitGroupId, traitGroupId2, muEvent1, muEvent2, muEx1, muEx2, muEx3, muEx4, muEx5, muAdd1, muAdd2, muAdd3, faction, zone) VALUES (2000, "Mortality Known", "All too familiar with death, this one is hard to kill. +2 Fortitude, +2 Wisdom, +2 Resilience, +25% Debuff Resist", 2000, 3, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 );

INSERT INTO Effect (\_id, effectType, attFortitude, attWisdom, attResilience, purgeChance, effectName, pngPath ) VALUES
(
/\* Trait ID \*/
2000,
/\* traits are type 6, never purged, always present \*/
6,
/\* +2 fortitude \*/
2,
/\* +2 wisdom \*/
2,
/\* +2 resilience \*/
2,
/\* 25% chance to resist debufs \*/
25,
/\* name \*/
"Mortality Known",
/\* pngPath, copy existing traits \*/
"effect\_ship\_buff.png");

UPDATE Effect set attackBonus = 0, rangedAttackBonus = 0, damageBonus = 0, damageMelee = 0, critBonus = 0, defensiveBonus = 0, armorBonus = 0, dodgeBonus = 0, stealthBonus = 0, initBonus = 0, fire = 0, plasma = 0, rad = 0, poison = 0, bleed = 0, fireRes = 0, plasmaRes = 0, radRes = 0, poisonRes = 0, bleedRes = 0, stunned = 0, pinned = 0, attQuickness = 0, attStrength = 0, attCharisma = 0, penBonus = 0,hardBonus = 0,maintPointAvoid = 0,craftAttackBonus= 0, craftDefenseBonus = 0, moraleCode= 0 where \_id = 2000;

/\* VUDKA IS THE BEST MEDICINE \*/
INSERT INTO Trait (\_id, traitName, traitDesc, characterEffectId, traitScore, actionType, resultType, traitGroupId, traitGroupId2, muEvent1, muEvent2, muEx1, muEx2, muEx3, muEx4, muEx5, muAdd1, muAdd2, muAdd3, faction, zone) VALUES (2001, "Vudka is the Best Medicine", "The entire crew is hard to stop. Grants 15 Radiation Resist, 15 Void Resist, 15% Proctection from Crew and Morale Dmg/Turn", -2000, 3, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 );

INSERT INTO ShipEffect (\_id, effectType, dotCrew, dotMorale, radRes, voidRes, effectName, pngPath) VALUES (2000, 7, -15, -15, 15, 15, "Vudka is Best Medicine", "effect\_ship\_buff.png");

UPDATE ShipEffect set boardingBonus = 0, rangedAttackBonus = 0, damageBonus = 0, craftDamageBonus = 0, critBonus = 0, defensiveBonus = 0, armorBonus = 0, deflectionBonus = 0, reactorBonus = 0, moveBonus = 0, craftAttackBonus = 0, craftDefenseBonus = 0, craftMoveStatus = 0, radDamage = 0, voidDamage = 0, dotComponent = 0, initBonus = 0, targetRule = 0, escapeBonus = 0, cloakBonus = 0, hullPoints = 0, jumpTime = 0, engineSafety = 0, patrol = 0, blockade = 0, spy = 0, salvage = 0, explorer = 0, effectDesc = "" WHERE \_id = 2000;

```