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.
- checksums.yaml +4 -4
- data/README.md +236 -0
- data/Rakefile +26 -0
- data/VERSION +1 -1
- data/bin/chargen +2 -42
- data/lib/traveller_rpg/career.rb +254 -129
- data/lib/traveller_rpg/career_path.rb +102 -54
- data/lib/traveller_rpg/careers.rb +499 -91
- data/lib/traveller_rpg/character.rb +115 -8
- data/lib/traveller_rpg/homeworld.rb +10 -10
- data/lib/traveller_rpg.rb +8 -9
- metadata +2 -2
@@ -2,106 +2,263 @@ require 'traveller_rpg'
|
|
2
2
|
require 'traveller_rpg/career'
|
3
3
|
|
4
4
|
module TravellerRPG
|
5
|
-
class
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
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
|
-
|
18
|
-
|
19
|
-
|
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
|
-
|
22
|
-
|
23
|
-
|
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
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
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
|
-
|
64
|
-
|
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
|
-
|
67
|
-
|
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
|
-
|
70
|
-
|
183
|
+
MISHAPS = {
|
184
|
+
1 => '',
|
185
|
+
2 => '',
|
186
|
+
3 => '',
|
187
|
+
4 => '',
|
188
|
+
5 => '',
|
189
|
+
6 => '',
|
190
|
+
}
|
71
191
|
|
72
|
-
|
192
|
+
def qualify_check?(dm: 0)
|
193
|
+
true
|
194
|
+
end
|
73
195
|
end
|
74
196
|
|
75
|
-
class
|
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 <
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
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, :
|
85
|
-
:computers, :
|
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 => [
|
102
|
-
3 => [
|
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
|
-
|
148
|
-
|
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
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
|
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
|
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
|