forked from spacedockapp/spacedock
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathuconv.rb
More file actions
294 lines (274 loc) · 11 KB
/
uconv.rb
File metadata and controls
294 lines (274 loc) · 11 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
require "enumerator"
#require "nokogiri"
require "pathname"
require_relative "common"
# Timestamp Upgrade Name Faction Ability Type Cost
upgrade = <<-UPGRADETEXT
11/9/2017 13:55:27 72945 - Romulan Faction Pack Non-unique Tal Shiar Sub-Commander Romulan WHEN ATTACKING: If this ship has an [EVADE] Token beside it: This ship may convert 1 of the defending ship's [EVADE] into a [BLANK]. Crew 2
11/9/2017 13:57:03 72946 - Dominion Faction Pack Unique All Power to Weapons Dominion COMBAT PHASE: Place 3 [TIME] Tokens on this card and disable this ship's Shields. Continuous Effect: This ship's Shields remain disabled. This ship can only perform Green Maneuvers. This ship rolls +3 attack dice. Talent 5 Dominion Captain, 5+ Hull
11/10/2017 12:43:24 72946 - Dominion Faction Pack Unique Talak'Talan Dominion ACTION: Discard this card and target all friendly ships. Place a [BATTLE STATIONS] Token beside this ship and all target ships. Crew 2 1-2
11/16/2017 16:55:26 72946 - Dominion Faction Pack Unique Lamat'Ukan Dominion WHEN ATTACKING: If this ship spent its [TARGET LOCK] Token to re-roll its attack dice: This ship may convert1 [BLANK] into 1 [HIT]. Crew 2
11/17/2017 21:13:51 72945 - Romulan Faction Pack Non-unique Romulan Medical Team Romulan ACTION: Discard this card and target a friendly ship. Remove 1 [DISABLED] Token from all [CREW] Upgrades equipped to target ship. Crew 3 1-2
11/21/2017 14:45:40 72945 - Romulan Faction Pack Non-unique Strike From the Shadows Romulan WHEN ATTACKING: If this ship is Cloaked, discard this card. Flip this ship's [CLOAK] Token to its green side. Talent 3
UPGRADETEXT
captains_text = <<-CAPTAINSTEXT
11/9/2017 13:52:19 72945 - Romulan Faction Pack Unique Alidar Jarok 6 Romulan ACTIVATION PHASE: After an opposing ship moves but before its Perform Action Step, target that ship and place 2 [TIME] Tokens on this card. Choose an Action on the target ship's Action Bar other than [REGENERATE]. The target ship must perform the chosen Action during its Perform Action Step. 1 5 1-2
11/10/2017 12:42:11 72946 - Dominion Faction Pack Unique Deyos 6 Dominion ACTION: Target a friendly ship. Equip a [CREW] Upgrade that was discarded from the target ship to the target ship. The target ship cannot attack this game round. 0 4 1-2
11/13/2017 15:32:11 72945 - Romulan Faction Pack Unique Tomalak 8 Romulan Add 1 [TECH] to this ship's Upgrade Bar. WHEN ATTACKING: This ship may re-roll 1 attack die for each [TECH] Upgrade equipped to it. 1 5 Yes
11/15/2017 15:00:31 72946 - Dominion Faction Pack Unique Kilana 4 Dominion WHEN A [TECH] UPGRADE EQUIPPED TO THIS SHIP WOULD BE DISABLED: You may place 2 [TIME] Tokens on it instead. 1 2
11/20/2017 14:42:18 72944 - Federation vs. Klingons Starter Set Unique Jean-Luc Picard 8 Federation ACTION: Place 2 [TIME] Tokens on this card and target all friendly ships. Place a [BATTLE STATIONS] Token beside this ship and all target ships. 2 6 1-2
CAPTAINSTEXT
weapons_text = <<-WEAPONSTEXT
11/11/2017 12:23:06 72944 - Federation vs. Klingons Starter Set Unique Torpedo Fusillade Klingon * 2-3 The cost of this [WEAPON] is equal to this ship's Primary Weapon Value. The Attack Value of this [WEAPON] is equal to this ship's Primary Weapon Value. ATTACK: Remove this card from the game and target all opposing ships. 1 Yes Forward
11/14/2017 14:32:52 72946 - Dominion Faction Pack Unique Disruptor Cannon Dominion 6 1-2 ATTACK: Spend this ship's [TARGET LOCK] Token, discard this card, and target an opposing ship. Perform this attack twice against the target ship. 3 Jem'Hadar Battleship Secondary
WEAPONSTEXT
admirals_text = <<-ADMIRALSTEXT
ADMIRALSTEXT
officers_text = <<-OFFICERSTEXT
OFFICERSTEXT
convert_terms(upgrade)
convert_terms(captains_text)
convert_terms(weapons_text)
convert_terms(admirals_text)
convert_terms(officers_text)
new_upgrades = File.open("new_upgrades.xml", "w")
new_captains = File.open("new_captains.xml", "w")
new_admirals = File.open("new_admirals.xml", "w")
new_officers = File.open("new_officers.xml", "w")
upgrade_lines = parse_data(upgrade)
def no_quotes(a)
a
end
def parse_set(setId)
setId = no_quotes(setId)
if setId =~ /\#(\d+).*/
return $1
end
return setId.gsub(" ", "").gsub("\"", "")
end
upgrade_lines.each do |raw_parts|
parts = raw_parts.collect { |one_part| convert_line(one_part) }
parts.shift
expansion = parts.shift
uniqueText = parts.shift
title = parts.shift
faction = parts.shift
ability = parts.shift
upType = parts.shift
cost = parts.shift
special = parts.shift
range = parts.shift
if !range.nil?
ability = "#{ability} [RANGE #{range}]"
end
restrictions = parts.shift
unique = uniqueText == "Unique" ? "Y" : "N"
if uniqueText == "One Per Ship"
special = "#{special}NoMoreThanOnePerShip"
end
mirrorUniverseUnique = uniqueText == "Mirror Universe Unique" ? "Y" : "N"
setId = set_id_from_expansion(expansion)
externalId = make_external_id(setId, title)
upgradeXml = <<-SHIPXML
<Upgrade>
<Title>#{title}</Title>
<Ability>#{ability}</Ability>
<Unique>#{unique}</Unique>
<MirrorUniverseUnique>#{mirrorUniverseUnique}</MirrorUniverseUnique>
<Skill></Skill>
<Talent></Talent>
<Attack></Attack>
<Range></Range>
<Type>#{upType}</Type>
<Faction>#{faction}</Faction>
<Cost>#{cost}</Cost>
<Id>#{externalId}</Id>
<Set>#{setId}</Set>
<Special>#{special}</Special>#{restrictions}
</Upgrade>
SHIPXML
new_upgrades.puts upgradeXml
end
weapons_lines = parse_data(weapons_text)
weapons_lines.each do |raw_parts|
parts = raw_parts.collect { |one_part| convert_line(one_part) }
parts.shift
expansion = parts.shift
uniqueText = parts.shift
title = parts.shift
faction = parts.shift
attack = parts.shift
range = parts.shift
ability = parts.shift
upType = "Weapon"
cost = parts.shift
special = parts.shift
restrictions = parts.shift
unique = uniqueText == "Unique" ? "Y" : "N"
if uniqueText == "One Per Ship"
special = "#{special}NoMoreThanOnePerShip"
end
mirrorUniverseUnique = uniqueText == "Mirror Universe Unique" ? "Y" : "N"
setId = set_id_from_expansion(expansion)
externalId = make_external_id(setId, title)
upgradeXml = <<-SHIPXML
<Upgrade>
<Title>#{title}</Title>
<Ability>#{ability}</Ability>
<Unique>#{unique}</Unique>
<MirrorUniverseUnique>#{mirrorUniverseUnique}</MirrorUniverseUnique>
<Skill></Skill>
<Talent></Talent>
<Attack>#{attack}</Attack>
<Range>#{range}</Range>
<Type>#{upType}</Type>
<Faction>#{faction}</Faction>
<Cost>#{cost}</Cost>
<Id>#{externalId}</Id>
<Set>#{setId}</Set>
<Special>#{special}</Special>#{restrictions}
</Upgrade>
SHIPXML
new_upgrades.puts upgradeXml
end
captains_lines = parse_data(captains_text)
captains_lines.each do |raw_parts|
parts = raw_parts.collect { |one_part| convert_line(one_part) }
parts.shift
expansion = parts.shift
uniqueText = parts.shift
title = parts.shift
skill = parts.shift
faction = parts.shift
ability = parts.shift
upType = "Captain"
talent = parts.shift
cost = parts.shift
special = parts.shift
unique = uniqueText == "Unique" ? "Y" : "N"
mirrorUniverseUnique = uniqueText == "Mirror Universe Unique" ? "Y" : "N"
setId = set_id_from_expansion(expansion)
externalId = make_external_id(setId, title)
upgradeXml = <<-SHIPXML
<Captain>
<Title>#{title}</Title>
<Ability>#{ability}</Ability>
<Unique>#{unique}</Unique>
<MirrorUniverseUnique>#{mirrorUniverseUnique}</MirrorUniverseUnique>
<Skill>#{skill}</Skill>
<Talent>#{talent}</Talent>
<Attack></Attack>
<Range></Range>
<Type>#{upType}</Type>
<Faction>#{faction}</Faction>
<Cost>#{cost}</Cost>
<Id>#{externalId}</Id>
<Set>#{setId}</Set>
<Special>#{special}</Special>
</Captain>
SHIPXML
new_captains.puts upgradeXml
end
admirals_lines = parse_data(admirals_text)
admirals_lines.each do |raw_parts|
parts = raw_parts.collect { |one_part| convert_line(one_part) }
parts.shift
expansion = parts.shift
uniqueText = parts.shift
unique = uniqueText == "Unique" ? "Y" : "N"
mirrorUniverseUnique = uniqueText == "Mirror Universe Unique" ? "Y" : "N"
title = parts.shift
faction = parts.shift
admiralAbility = parts.shift
skillModifier = parts.shift
admiralTalent = parts.shift
admiralCost = parts.shift
skill = parts.shift
ability = parts.shift
upType = "Admiral"
talent = parts.shift
cost = parts.shift
special = parts.shift
setId = set_id_from_expansion(expansion)
externalId = make_external_id(setId, title)
externalId2 = make_external_id(setId, title + " cap")
upgradeXml = <<-SHIPXML
<Admiral>
<Title>#{title}</Title>
<Ability>#{ability}</Ability>
<Unique>#{unique}</Unique>
<MirrorUniverseUnique>#{mirrorUniverseUnique}</MirrorUniverseUnique>
<Skill>#{skill}</Skill>
<Talent>#{talent}</Talent>
<Attack></Attack>
<Range></Range>
<Type>#{upType}</Type>
<Faction>#{faction}</Faction>
<Cost>#{cost}</Cost>
<Id>#{externalId}</Id>
<Set>#{setId}</Set>
<Special>#{special}</Special>
<AdmiralAbility>#{admiralAbility}</AdmiralAbility>
<AdmiralCost>#{admiralCost}</AdmiralCost>
<AdmiralTalent>#{admiralTalent}</AdmiralTalent>
<SkillModifier>#{skillModifier}</SkillModifier>
</Admiral>
SHIPXML
new_admirals.puts upgradeXml
upgradeXml = <<-SHIPXML
<Captain>
<Title>#{title}</Title>
<Ability>#{ability}</Ability>
<Unique>#{unique}</Unique>
<MirrorUniverseUnique>#{mirrorUniverseUnique}</MirrorUniverseUnique>
<Skill>#{skill}</Skill>
<Talent>#{talent}</Talent>
<Attack></Attack>
<Range></Range>
<Type>Captain</Type>
<Faction>#{faction}</Faction>
<Cost>#{cost}</Cost>
<Id>#{externalId2}</Id>
<Set>#{setId}</Set>
<Special>#{special}</Special>
<AdmiralAbility>#{admiralAbility}</AdmiralAbility>
<AdmiralCost>#{admiralCost}</AdmiralCost>
<AdmiralTalent>#{admiralTalent}</AdmiralTalent>
<SkillModifier>#{skillModifier}</SkillModifier>
</Captain>
SHIPXML
new_captains.puts upgradeXml
end
officers_lines = parse_data(officers_text)
officers_lines.each do |raw_parts|
parts = raw_parts.collect { |one_part| convert_line(one_part) }
parts.shift
expansion = "CollectiveOP3"
unique = "Y"
title = parts.shift
faction = "Independent"
officerAbility = parts.shift
cost = parts.shift
ability = parts.shift
upType = "Captain"
talent = parts.shift
skill = parts.shift
setId = set_id_from_expansion(expansion)
externalId = make_external_id(setId, title)
upgradeXml = <<-SHIPXML
<Officer>
<Title>#{title}</Title>
<Ability>#{officerAbility}</Ability>
<Unique>#{unique}</Unique>
<Attack></Attack>
<Range></Range>
<Type>Officer</Type>
<Faction>#{faction}</Faction>
<Cost>#{cost}</Cost>
<Id>#{externalId}</Id>
<Set>#{setId}</Set>
<Special></Special>
</Officer>
SHIPXML
new_officers.puts upgradeXml
end