traveller_rpg 0.0.0.4 → 0.0.1.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -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