This has now been modified to accept an optional query string "lastCareer"...
http://localhost:8080/t2kchargen/generate?lastCareer=MilitaryService
This always picks a branch of the specified career as the last career before "At War". It might require some tweaking to avoid endless loop if the character does not qualify for any branch in that career though. Output from test...
Age: 37
Attributes:
- - STR: A; AGL: D; INT: B; EMP: B; CUF: C
Combat:
- - Hit Capacity: 5, Stress Capacity: 5
Skills:
- - Ranged Combat: A, Close Combat: C, Tech: C, Command: D, Driving: D, Mobility: D, Persuasion: D, Stamina: D
Specialties:
- - Load Carrier, NBC, Psy Ops
Radiation:
- - Permanent Rads: 5
Childhood:
- - Working Class
Careers:
- - Police Officer (1 year)
- - Hustler (5 years)
- - Gang Member (6 years)
- - Police Officer (6 years)
- - Combat Support, PFC (1 year, promoted to Corporal)
[EDIT]
Log output for the above so you can get an idea of what the program is doing...
: ========================================================
: In createCharacter method: LastCareer is MilitaryService
: ========================================================
: Number of attribute increases rolled: 5
: Increased STR to level B
: Increased EMP to level B
: Increased EMP to level A
: Increased STR to level A
: Increased INT to level B
: Childhood Working Class: Gained Tech at level D
: Childhood Working Class: Gained Load Carrier specialty
: ...
: Career Police Officer: Gained Mobility at level D
: Career Police Officer: Gained Ranged Combat at level D
: 1st skill raised: AGL='C', Mobility(AGL)='D': base dice = d8, d6
: 2nd skill raised: AGL='C', Ranged Combat(AGL)='D': base dice = d8, d6
: Mobility roll: d8=2, d6=5: 0 successes
: ...
: Career Hustler: Gained Stamina at level D
: Career Hustler: Gained Persuasion at level D
: 1st skill raised: STR='A', Stamina(STR)='D': base dice = d12, d6
: 2nd skill raised: EMP='A', Persuasion(EMP)='D': base dice = d12, d6
: Stamina roll: d12=2, d6=5: 0 successes
: ...
: Career Gang Member: Raised Ranged Combat to level C
: Career Gang Member: Gained Driving at level D
: 1st skill raised: AGL='C', Ranged Combat(AGL)='C': base dice = d8, d8
: 2nd skill raised: AGL='C', Driving(AGL)='D': base dice = d8, d6
: Ranged Combat roll: d8=5, d8=5: 0 successes
: ...
: Career Police Officer: Gained Close Combat at level D
: Career Police Officer: Raised Ranged Combat to level B
: 1st skill raised: STR='A', Close Combat(STR)='D': base dice = d12, d6
: 2nd skill raised: AGL='C', Ranged Combat(AGL)='B': base dice = d8, d10
: Close Combat roll: d12=2, d6=2: 0 successes
: Effects of age: AGL dropped to level D
: ...
: Career Combat Support (boot camp): Raised Ranged Combat to level A
: Career Combat Support: Raised Tech to level C
: 1st skill raised: AGL='D', Ranged Combat(AGL)='A': base dice = d6, d12
: 2nd skill raised: INT='B', Tech(INT)='C': base dice = d10, d8
: Ranged Combat roll: d6=3, d12=7: 1 success (promoted) <-- Sum of base dice sizes determines skill to test but d10,d8 is 69% compared to d6,d12 65% so may need tweak
: Gained Psy Ops specialty
: Effects of age: EMP dropped to level B
: ...
: Career At War: Raised Close Combat to level C
: Career At War: Gained Command at level D
: Gained NBC specialty