traveller_rpg 0.0.0.4 → 0.0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,106 +2,263 @@ require 'traveller_rpg'
2
2
  require 'traveller_rpg/career'
3
3
 
4
4
  module TravellerRPG
5
- class MilitaryCareer < Career
6
- COMMISSION_CHECK = 9
7
- OFFICER_SKILLS = Array.new(6) { :default }
8
- OFFICER_RANKS = {}
9
-
10
- attr_reader :officer, :officer_rank
11
-
12
- def initialize(char, **kwargs)
13
- super(char, **kwargs)
14
- @officer = false
15
- end
5
+ class Agent < Career
6
+ QUALIFICATION = [:intelligence, 6]
7
+ ADVANCED_EDUCATION = 8
8
+ PERSONAL_SKILLS = [:gun_combat_group, :dexterity, :endurance,
9
+ :melee_group, :intelligence, :athletics_group]
10
+ SERVICE_SKILLS = [:streetwise, :drive_group, :investigate,
11
+ :flyer_group, :recon, :gun_combat_group]
12
+ ADVANCED_SKILLS = [:advocate, :language_group, :explosives,
13
+ :medic, :vacc_suit, :electronics_group]
14
+ RANKS = {
15
+ 1 => ['Agent', :deception, 1],
16
+ 2 => ['Field Agent', :investigate, 1],
17
+ 4 => ['Special Agent', :gun_combat_group, 1],
18
+ 5 => ['Assistant Director', nil, nil],
19
+ 6 => ['Director', nil, nil],
20
+ }
21
+ SPECIALIST = {
22
+ law_enforcement: {
23
+ skills: [:investigate, :recon, :streetwise,
24
+ :stealth, :melee_group, :advocate],
25
+ survival: [:endurance, 6],
26
+ advancement: [:intelligence, 6],
27
+ ranks: {
28
+ 0 => ['Rookie', nil, nil],
29
+ 1 => ['Corporal', :streetwise, 1],
30
+ 2 => ['Sergeant', nil, nil],
31
+ 3 => ['Detective', nil, nil],
32
+ 4 => ['Lieutenant', :investigate, 1],
33
+ 5 => ['Chief', :admin, 1],
34
+ 6 => ['Commissioner', :social_standing, nil],
35
+ },
36
+ },
37
+ intelligence: {
38
+ skills: [:investigate, :recon, :comms,
39
+ :stealth, :persuade, :deception],
40
+ survival: [:intelligence, 7],
41
+ advancement: [:intelligence, 5],
42
+ ranks: RANKS,
43
+ },
44
+ corporate: {
45
+ skills: [:investigate, :computers, :stealth,
46
+ :carouse, :deception, :streetwise],
47
+ survival: [:intelligence, 5],
48
+ advancement: [:intelligence, 7],
49
+ ranks: RANKS,
50
+ },
51
+ }
16
52
 
17
- def rank
18
- @officer ? @officer_rank : @rank
19
- end
53
+ MUSTER_OUT = {
54
+ 1 => [1000, 'Scientific Equipment'],
55
+ 2 => [2000, 'INT +1'],
56
+ 3 => [5000, 'Ship Share'],
57
+ 4 => [7500, 'Weapon'],
58
+ 5 => [10000, 'Combat Implant'],
59
+ 6 => [25000, 'SOC +1 or Combat Implant'],
60
+ 7 => [50000, 'TAS Membership'],
61
+ }
20
62
 
21
- def rank_benefit
22
- @officer ? self.class::OFFICER_RANKS[@officer_rank] : super
23
- end
63
+ EVENTS = {
64
+ 2 => 'Disaster! Roll on the Mishap Table, but you are not ejected ' +
65
+ 'from this career.',
66
+ 3 => 'An investigation takes on a dangerous turn. Roll ' +
67
+ 'Investigate 8+ or Streetwise 8+. If you fail, roll on the ' +
68
+ 'Mishap Table. If you suceed, increase one skill of ' +
69
+ 'Deception, Jack-of-all-Trades, Persuade, or Tactics.',
70
+ 4 => 'You complete a mission for your superiors, and are suitably ' +
71
+ 'rewarded. Gain DM+1 to any one Benefit Roll from this career.',
72
+ 5 => 'You establish a network of contacts. Gain d3 Contacts.',
73
+ 6 => 'You are given advanced training in a specialist field. Roll ' +\
74
+ 'EDU 8+ to increase any existing skill by 1.',
75
+ 7 => 'Life Event. Roll on the Live Events Table.',
76
+ 8 => 'You go undercover to investigate an enemy. Roll Deception 8+.' +
77
+ 'If you succeed, roll immediately on the Rogue or Citizen Events ' +
78
+ 'Table and make one roll on any Specialist skill table for that ' +
79
+ 'career. If you fail, roll immediately on the Rogue or Citizen ' +
80
+ 'Mishap Table',
81
+ 9 => 'You go above and beyond the call of duty. Gain DM+2 to your ' +
82
+ 'next Advancement check',
83
+ 10 => 'You are given spcialist training in vehicles. Gain one of ' +
84
+ 'Drive 1, Flyer 1, Pilot 1, or Gunner 1.',
85
+ 11 => 'You are befriended by a senior agent. Either increase ' +
86
+ 'Investigate by 1 or DM+4 to an Advancement roll thanks to ' +
87
+ 'their aid.',
88
+ 12 => 'Your efforts uncover a major conspiracy against your ' +
89
+ 'employers. You are automatically promoted.',
90
+ }
24
91
 
25
- def advance_rank
26
- return super unless @officer
27
- @officer_rank += 1
28
- @char.log "Advanced career to officer rank #{@officer_rank}"
29
- title, skill, level = self.rank_benefit
30
- if title
31
- @char.log "Awarded officer rank title: #{title}"
32
- @char.log "Achieved officer rank skill: #{skill} #{level}"
33
- @char.skills[skill] ||= 0
34
- @char.skills[skill] = level if level > @char.skills[skill]
35
- end
36
- end
92
+ MISHAPS = {
93
+ 1 => 'Severely injured in action. Roll twice on the Injury table ' +
94
+ 'or take a level 2 Injury.',
95
+ 2 => 'A criminal offers you a deal. Accept the deal to leave career; ' +
96
+ 'Refuse, and you must roll twice on the Injury Table and take ' +
97
+ 'the lower result. Gain an Enemy and one level in any skill.',
98
+ 3 => 'An investigation goes critically wrong, ruining your career. ' +
99
+ 'Roll Advocate 8+; Succeed == keep benefit this term; ' +
100
+ 'Fail, lost benefit as normal. A roll of 2 mandates ' +
101
+ 'Prisoner career next term',
102
+ 4 => 'You learn something you should not know, and people want to ' +
103
+ 'kill you for it. Gain an Enemy and Deception 1',
104
+ 5 => 'Your work comes home with you, and someone gets hurt. ' +
105
+ 'Choose a Contact, Ally, or Family Member, and roll twice on the ' +
106
+ 'Injury Table for them, taking the lower result.',
107
+ 6 => 'Injured. Roll on the Injury table.',
108
+ }
37
109
 
38
- def commission_check?(dm = 0)
39
- roll = TravellerRPG.roll('2d6')
40
- puts format("Commission check: roll %i (DM %i) against %i",
41
- roll, dm, self.class::COMMISSION_CHECK)
42
- (roll + dm) >= self.class::COMMISSION_CHECK
43
- end
110
+ end
44
111
 
45
- def commission_roll(dm: 0)
46
- return if @officer
47
- if TravellerRPG.choose("Apply for commission?", :yes, :no) == :yes
48
- if self.commission_check?
49
- @char.log "Became an officer!"
50
- @officer = true
51
- @officer_rank = 1
52
- else
53
- @char.log "Commission was rejected"
54
- end
55
- end
56
- end
112
+ class Citizen < Career; end
57
113
 
58
- def officer?
59
- !!@officer
60
- end
61
- end
114
+ class Drifter < Career
115
+ # QUALIFICATION = [:intelligence, 0]
116
+ ADVANCED_EDUCATION = 99
117
+ PERSONAL_SKILLS = [:strength, :endurance, :dexterity,
118
+ :language_group, :social_sciences_group,
119
+ :jack_of_all_trades]
120
+ SERVICE_SKILLS = [:athletics_group, :melee_unarmed_combat, :recon,
121
+ :streetwise, :stealth, :survival]
122
+ ADVANCED_SKILLS = []
123
+ SPECIALIST = {
124
+ barbarian: {
125
+ skills: [:animals_group, :carouse, :melee_blade,
126
+ :stealth, :seafarer_group, :survival],
127
+ survival: [:endurance, 7],
128
+ advancement: [:strength, 7],
129
+ ranks: {
130
+ 1 => [nil, :survival, 1],
131
+ 2 => ['Warrior', :melee_blade, 1],
132
+ 4 => ['Chieftain', :leadership, 1],
133
+ 6 => ['Warlord', nil, nil],
134
+ },
135
+ },
136
+ wanderer: {
137
+ skills: [:drive_group, :deception, :recon,
138
+ :stealth, :streetwise, :survival],
139
+ survival: [:endurance, 7],
140
+ advancement: [:intelligence, 7],
141
+ ranks: {
142
+ 1 => [nil, :streetwise, 1],
143
+ 3 => [nil, :deception, 1],
144
+ },
145
+ },
146
+ scavenger: {
147
+ skills: [:pilot_small_craft, :mechanic, :astrogation,
148
+ :vacc_suit, :engineer_group, :gun_combat_group],
149
+ survival: [:dexterity, 7],
150
+ advancement: [:endurance, 7],
151
+ ranks: {
152
+ 1 => [nil, :vacc_suit, 1],
153
+ 3 => [nil, :mechanic, 1],
154
+ },
155
+ },
156
+ }
62
157
 
63
- class Navy < MilitaryCareer
64
- end
158
+ MUSTER_OUT = {
159
+ 1 => [0, 'Contact'],
160
+ 2 => [0, 'Weapon'],
161
+ 3 => [1000, 'Ally'],
162
+ 4 => [2000, 'Weapon'],
163
+ 5 => [3000, 'EDU +1'],
164
+ 6 => [4000, 'Ship Share'],
165
+ 7 => [8000, 'Ship Share x2'],
166
+ }
65
167
 
66
- class Army < MilitaryCareer
67
- end
168
+ EVENTS = {
169
+ 1 => '',
170
+ 2 => '',
171
+ 3 => '',
172
+ 4 => '',
173
+ 5 => '',
174
+ 6 => '',
175
+ 7 => '',
176
+ 8 => '',
177
+ 9 => '',
178
+ 10 => '',
179
+ 11 => '',
180
+ 12 => '',
181
+ }
68
182
 
69
- class Marines < MilitaryCareer
70
- end
183
+ MISHAPS = {
184
+ 1 => '',
185
+ 2 => '',
186
+ 3 => '',
187
+ 4 => '',
188
+ 5 => '',
189
+ 6 => '',
190
+ }
71
191
 
72
- class MerchantMarine < MilitaryCareer
192
+ def qualify_check?(dm: 0)
193
+ true
194
+ end
73
195
  end
74
196
 
75
- class Agent < MilitaryCareer
76
- end
197
+ class Entertainer < Career; end
198
+ class Merchant < Career; end
199
+ class Rogue < Career; end
200
+ class Scholar < Career; end
77
201
 
78
- class Scout < MilitaryCareer
79
- # note, 6th "stat" is really a skill - jack of all trades
80
- STATS = [:strength, :dexterity, :endurance,
81
- :intelligence, :education, :jack_of_all_trades]
82
- SERVICE_SKILLS = [:pilot_small_craft, :survival, :mechanic,
202
+ class Scout < Career
203
+ QUALIFICATION = [:intelligence, 5]
204
+ ADVANCED_EDUCATION = 8
205
+ PERSONAL_SKILLS = [:strength, :dexterity, :endurance,
206
+ :intelligence, :education, :jack_of_all_trades]
207
+ SERVICE_SKILLS = [:pilot_small_craft, :survival, :mechanic,
83
208
  :astrogation, :comms, :gun_combat_group]
84
- ADVANCED_SKILLS = [:medic, :navigation, :engineer,
85
- :computers, :space_science, :jack_of_all_trades]
86
-
87
- # made up by Rick
88
- OFFICER_SKILLS = [:deception, :language_group, :investigate,
89
- :remote_operations, :tactics_military, :leadership]
90
- SPECIALIST_SKILLS = {
91
- courier: [:comms, :sensors, :pilot_spacecraft,
92
- :vacc_suit, :zero_g, :astrogation],
93
- survey: [:sensors, :persuade, :pilot_small_craft,
94
- :navigation, :diplomat, :streetwise],
95
- exploration: [:sensors, :pilot_spacecraft, :pilot_small_craft,
96
- :life_science_any, :stealth, :recon],
97
- }
98
-
99
- # key: roll; values: title, skill, skill_value
209
+ ADVANCED_SKILLS = [:medic, :navigation, :engineer_group,
210
+ :computers, :space_sciences_group, :jack_of_all_trades]
211
+
100
212
  RANKS = {
101
- 1 => [:scout, :vacc_suit, 1],
102
- 3 => [:senior_scout, :pilot, 1],
213
+ 1 => ['Scout', :vacc_suit, 1],
214
+ 3 => ['Senior Scout', :pilot, 1],
215
+ }
216
+
217
+ SPECIALIST = {
218
+ courier: {
219
+ skills: [:comms, :sensors, :pilot_spacecraft,
220
+ :vacc_suit, :zero_g, :astrogation],
221
+ survival: [:endurance, 5],
222
+ advancement: [:education, 9],
223
+ ranks: RANKS,
224
+ },
225
+ surveyor: {
226
+ skills: [:sensors, :persuade, :pilot_small_craft,
227
+ :navigation, :diplomat, :streetwise],
228
+ survival: [:endurance, 6],
229
+ advancement: [:intelligence, 8],
230
+ ranks: RANKS,
231
+ },
232
+ explorer: {
233
+ skills: [:sensors, :pilot_spacecraft, :pilot_small_craft,
234
+ :life_sciences_group, :stealth, :recon],
235
+ survival: [:endurance, 7],
236
+ advancement: [:education, 7],
237
+ ranks: RANKS,
238
+ },
239
+ }
240
+
241
+ MUSTER_OUT = {
242
+ 1 => [20000, 'Ship Share'],
243
+ 2 => [20000, 'INT +1'],
244
+ 3 => [30000, 'EDU +1'],
245
+ 4 => [30000, 'Weapon'],
246
+ 5 => [50000, 'Weapon'],
247
+ 6 => [50000, 'Scout Ship'],
248
+ 7 => [50000, 'Scout Ship'],
103
249
  }
104
250
 
251
+ # Weapon: Select any weapon up to 1000 creds and TL12
252
+ # If this benefit is rolled more than once, take a different weapon
253
+ # or one level in the appropriate Melee or Gun Combat skill
254
+
255
+ # Scout Ship: Receive a scout ship in exchange for performing periodic
256
+ # scout missions
257
+
258
+ # Ship share: Accumulate these to redeem for a ship. They are worth
259
+ # roughly 1M creds but cannot be redeemed for creds.
260
+
261
+
105
262
  EVENTS = {
106
263
  2 => 'Disaster! Roll on the mishap table but you are not ejected ' +
107
264
  'from career.',
@@ -143,17 +300,268 @@ module TravellerRPG
143
300
  'drifting on the fringes of friendly space',
144
301
  6 => 'Injured. Roll on the Injury table.',
145
302
  }
303
+ end
304
+
305
+ class Army < MilitaryCareer
306
+ QUALIFICATION = [:endurance, 5]
307
+ AGE_PENALTY = 30
308
+ PERSONAL_SKILLS = [:strength, :dexterity, :endurance,
309
+ :gambler, :medic, :melee_group]
310
+ SERVICE_SKILLS = [:drive_group, :athletics_group, :gun_combat_group,
311
+ :recon, :melee_group, :heavy_weapons_group]
312
+ ADVANCED_SKILLS = [:tactics_military, :leadership, :advocate,
313
+ :diplomat, :electronics, :admin]
314
+ OFFICER_SKILLS = [:tactics_military, :leadership, :advocate,
315
+ :diplomat, :electronics, :admin]
316
+ RANKS = {
317
+ 0 => ['Private', :gun_combat_group, 1],
318
+ 1 => ['Lance Corporal', :recon, 1],
319
+ 2 => ['Corporal', nil, nil],
320
+ 3 => ['Lance Sergeant', :leadership, 1],
321
+ 4 => ['Sergeant', nil, nil],
322
+ 5 => ['Gunnery Sergeant', nil, nil],
323
+ 6 => ['Sergeant Major', nil, nil],
324
+ }
325
+ OFFICER_RANKS = {
326
+ 1 => ['Lieutenant', :leadership, 1],
327
+ 2 => ['Captain', nil, nil],
328
+ 3 => ['Major', :tactics_military, 1],
329
+ 4 => ['Lieutenant Colonel', nil, nil],
330
+ 5 => ['Colonel', nil, nil],
331
+ 6 => ['General', :social_status, 10], # TODO
332
+ }
333
+
334
+ SPECIALIST = {
335
+ support: {
336
+ skills: [:mechanic, :flyer_group, :engineer_group, # TODO: profession
337
+ :explosives, :comms, :medic],
338
+ survival: [:endurance, 5],
339
+ advancement: [:education, 7],
340
+ ranks: RANKS,
341
+ },
342
+ infantry: {
343
+ skills: [:gun_combat_group, :melee_group, :heavy_weapons_group,
344
+ :stealth, :athletics_group, :recon],
345
+ survival: [:strength, 6],
346
+ advancement: [:education, 6],
347
+ ranks: RANKS,
348
+ },
349
+ cavalry: {
350
+ skills: [:mechanic, :drive_group, :flyer_group,
351
+ :recon, :heavy_weapons_group, :sensors], # TODO: HW vehicle
352
+ survival: [:intelligence, 7],
353
+ advancement: [:intelligence, 5],
354
+ ranks: RANKS,
355
+ },
356
+ }
146
357
 
147
- # not defined at http://www.traveller-srd.com/core-rules/careers/ :(
148
- BENEFITS = {}
358
+ EVENTS = {
359
+ 2 => nil,
360
+ 3 => nil,
361
+ 4 => nil,
362
+ 5 => nil,
363
+ 6 => nil,
364
+ 7 => nil,
365
+ 8 => nil,
366
+ 9 => nil,
367
+ 10 => nil,
368
+ 11 => nil,
369
+ 12 => nil,
370
+ }
149
371
 
150
- def qualify_check?(career_count)
151
- @char.log format("Qualify DM is based on Intelligence %i",
152
- @char.stats.intelligence)
153
- super(career_count, dm: @char.class.stats_dm(@char.stats.intelligence))
154
- end
372
+ MISHAPS = {
373
+ 1 => nil,
374
+ 2 => nil,
375
+ 3 => nil,
376
+ 4 => nil,
377
+ 5 => nil,
378
+ 6 => nil,
379
+ }
380
+
381
+ # roll => [cash, benefit]
382
+ MUSTER_OUT = {
383
+ 1 => [2000, 'Combat Implant'],
384
+ 2 => [5000, 'INT +1'],
385
+ 3 => [10_000, 'EDU +1'],
386
+ 4 => [10_000, 'Weapon'],
387
+ 5 => [10_000, 'Armour'],
388
+ 6 => [20_000, 'END +1 or Combat Implant'],
389
+ 7 => [30_000, 'SOC +1'],
390
+ }
155
391
  end
156
392
 
157
- class Drifter < Career
393
+ class Marines < MilitaryCareer
394
+ QUALIFICATION = [:endurance, 6]
395
+ AGE_PENALTY = 30
396
+
397
+ PERSONAL_SKILLS = [:strength, :dexterity, :endurance,
398
+ :gambler, :melee_unarmed_combat, :melee_blade]
399
+ SERVICE_SKILLS = [:athletics_group, :vacc_suit, :tactics_group,
400
+ :heavy_weapons_group, :gun_combat_group, :stealth]
401
+ ADVANCED_SKILLS = [:medic, :survival, :explosives,
402
+ :engineer_group, :pilot_group, :navigation]
403
+ OFFICER_SKILLS = [:engineer_group, :tactics_group, :admin,
404
+ :advocate, :vacc_suit, :leadership]
405
+ RANKS = {
406
+ 0 => ['Marine', :gun_combat_group, 1], # TODO
407
+ 1 => ['Lance Corporal', :gun_combat_group, 1],
408
+ 2 => ['Corporal', nil, nil],
409
+ 3 => ['Lance Sergeant', :leadership, 1],
410
+ 4 => ['Sergeant', nil, nil],
411
+ 5 => ['Gunnery Sergeant', :endurance, nil],
412
+ 6 => ['Sergeant Major', nil, nil],
413
+ }
414
+ OFFICER_RANKS = {
415
+ 1 => ['Lieutenant', :leadership, 1],
416
+ 2 => ['Captain', nil, nil],
417
+ 3 => ['Force Commander', :tactics_group, 1],
418
+ 4 => ['Lieutenant Colonel', nil, nil],
419
+ 5 => ['Colonel', :social_status, 10], # TODO
420
+ 6 => ['Brigadier', nil, nil],
421
+ }
422
+
423
+ SPECIALIST = {
424
+ support: {
425
+ skills: [:engineer_electronics, :mechanic, :flyer_group, # TODO
426
+ :medic, :heavy_weapons_group, :gun_combat_group],
427
+ survival: [:endurance, 5],
428
+ advancement: [:education, 7],
429
+ ranks: RANKS,
430
+ },
431
+ star_marine: {
432
+ skills: [:vacc_suit, :athletics_group, :gunner_group,
433
+ :melee_blade, :engineer_electronics, :gun_combat_group],
434
+ survival: [:endurance, 6],
435
+ advancement: [:education, 6],
436
+ ranks: RANKS,
437
+ },
438
+ ground_assault: {
439
+ skills: [:vacc_suit, :heavy_weapons_group, :recon,
440
+ :melee_blade, :tactics_military, :gun_combat_group],
441
+ survival: [:endurance, 7],
442
+ advancement: [:education, 5],
443
+ ranks: RANKS,
444
+ }
445
+ }
446
+
447
+ EVENTS = {
448
+ 2 => nil,
449
+ 3 => nil,
450
+ 4 => nil,
451
+ 5 => nil,
452
+ 6 => nil,
453
+ 7 => nil,
454
+ 8 => nil,
455
+ 9 => nil,
456
+ 10 => nil,
457
+ 11 => nil,
458
+ 12 => nil,
459
+ }
460
+
461
+ MISHAPS = {
462
+ 1 => nil,
463
+ 2 => nil,
464
+ 3 => nil,
465
+ 4 => nil,
466
+ 5 => nil,
467
+ 6 => nil,
468
+ }
469
+
470
+ MUSTER_OUT = {
471
+ 1 => [2000, 'Armour'],
472
+ 2 => [5000, 'INT +1'],
473
+ 3 => [5000, 'EDU +1'],
474
+ 4 => [10_000, 'Weapon'],
475
+ 5 => [20_000, 'TAS Membership'],
476
+ 6 => [30_000, 'Armour or END +1'],
477
+ 7 => [40_000, 'SOC +2'],
478
+ }
479
+ end
480
+
481
+ class Navy < MilitaryCareer
482
+ QUALIFICATION = [:intelligence, 6]
483
+ AGE_PENALTY = 34
484
+
485
+ PERSONAL_SKILLS = [:strength, :dexterity, :endurance,
486
+ :intelligence, :education, :social_standing]
487
+ SERVICE_SKILLS = [:pilot_group, :vacc_suit, :athletics_group,
488
+ :gunner_group, :mechanic, :gun_combat_group]
489
+ ADVANCED_SKILLS = [:engineer_electronics, :astrogation, :engineer_group,
490
+ :drive_group, :navigation, :admin]
491
+ OFFICER_SKILLS = [:leadership, :engineer_electronics, :pilot,
492
+ :melee_blade, :admin, :tactics_naval]
493
+ RANKS = {
494
+ 0 => ['Crewman', nil, nil],
495
+ 1 => ['Able Spacehand', :mechanic, 1],
496
+ 2 => ['Petty Officer 3rd class', :vacc_suit, 1],
497
+ 3 => ['Petty Officer 2nd class', nil, nil],
498
+ 4 => ['Petty Officer 1st class', :endurance, nil],
499
+ 5 => ['Chief Petty Officer', nil, nil],
500
+ 6 => ['Master Chief', nil, nil],
501
+ }
502
+ OFFICER_RANKS = {
503
+ 1 => ['Ensign', :melee_blade, 1],
504
+ 2 => ['Sublieutenant', :leadership, 1],
505
+ 3 => ['Lieutenant', nil, nil],
506
+ 4 => ['Commander', :tactics_naval, 1],
507
+ 5 => ['Captain', :social_status, 10], # TODO
508
+ 6 => ['Admiral', :social_status, 12], # TODO
509
+ }
510
+ SPECIALIST = {
511
+ line_crew: {
512
+ skills: [:engineer_electronics, :mechanic, :gun_combat_group,
513
+ :flyer_group, :melee_group, :vacc_suit],
514
+ survival: [:intelligence, 5],
515
+ advancement: [:education, 7],
516
+ ranks: RANKS,
517
+ },
518
+ engineer_gunner: {
519
+ skills: [:engineer_group, :mechanic, :engineer_electronics,
520
+ :engineer_group, :gunner_group, :flyer_group],
521
+ survival: [:intelligence, 6],
522
+ advancement: [:education, 6],
523
+ ranks: RANKS,
524
+ },
525
+ flight: {
526
+ skills: [:pilot_group, :flyer_group, :gunner_group,
527
+ :pilot_small_craft, :astrogation, :engineer_electronics],
528
+ survival: [:dexterity, 7],
529
+ advancement: [:education, 5],
530
+ ranks: RANKS,
531
+ },
532
+ }
533
+
534
+ EVENTS = {
535
+ 2 => nil,
536
+ 3 => nil,
537
+ 4 => nil,
538
+ 5 => nil,
539
+ 6 => nil,
540
+ 7 => nil,
541
+ 8 => nil,
542
+ 9 => nil,
543
+ 10 => nil,
544
+ 11 => nil,
545
+ 12 => nil,
546
+ }
547
+
548
+ MISHAPS = {
549
+ 1 => nil,
550
+ 2 => nil,
551
+ 3 => nil,
552
+ 4 => nil,
553
+ 5 => nil,
554
+ 6 => nil,
555
+ }
556
+
557
+ MUSTER_OUT = {
558
+ 1 => [1000, 'Personal Vehicle or Ship Share'],
559
+ 2 => [5000, 'INT +1'],
560
+ 3 => [5000, 'EDU +1 or two Ship Shares'],
561
+ 4 => [10_000, 'Weapon'],
562
+ 5 => [20_000, 'TAS Membership'],
563
+ 6 => [50_000, "Ship's Boat or two Ship Shares"],
564
+ 7 => [50_000, 'SOC +2'],
565
+ }
158
566
  end
159
567
  end