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
|
#! /usr/bin/env ruby
# frozen_string_literal: true
# rubocop:disable Style/Documentation
module ColonialTwilight
CARD_SINGLE = 1
CARD_FLN_MARKED = 2
CARD_ALWAYS_PLAY = 4
class Card
attr_reader :num, :title
def initialize(num, title, attr, act0 = nil, act1 = nil)
@num = num
@title = title
@attributes = attr
@act0 = act0
@act1 = act1
end
def dual?
@attributes & CARD_SINGLE.zero?
end
def single?
@attributes & CARD_SINGLE == CARD_SINGLE
end
def fln_marked?
@attributes & CARD_FLN_MARKED == CARD_FLN_MARKED
end
def always_play?
@attributes & CARD_ALWAYS_PLAY == CARD_ALWAYS_PLAY
end
def capability?
false
end
def fln_effective?
false
end
def fln_effectiveness
0
end
def fln_playable?
# reduce GOV support or resources or commitment
# shift France Track toward F
# place FLN base or increase FLN resources
false
end
def check
# @attributes.each do |attr| raise "unknown attribute : #{attr}" if attr not in ATTRS end
# puts single?
# puts dual?
# puts flnmarked?
# puts alwaysplay?
end
end
class CardAction
def initialize(txt, cond)
@txt = txt
@condition = cond
end
end
class Deck
attr_reader :cards
def initialize
@cards = {}
add_card 0, 'None', nil, nil
add_card 1, 'Quadrillage', 0, CardAction.new('Place up to all French Police in Available in up to 3 spaces', { what: :french_police, from: :available })
end
def pull(num)
@cards[num.positive? ? 1 : 0] # FIXME
end
private
def add_card(num, title, attrs, _action)
@cards[num] = Card.new num, title, attrs
@cards[num].check
end
end
end
# 'Balky Conscripts'
# 'Leadership Snatch'
# 'Oil & Gas Discoveries'
# 'Peace of the Brave'
# 'Factionalism'
# '5th Bureau'
# 'Cross-border air strike'
# 'Beni-Oui-Oui'
# 'Moudjahidine'
# 'Bananes'
# 'Ventilos'
# 'SAS'
# 'Protest in Paris'
# 'Jean-Paul Sarte'
# 'NATO'
# 'Commandos'
# 'Torture'
# 'General Strike'
# 'Sauve qui peut'
# 'United Nations Resolution'
# 'The Government of USA is Convinced...'
# 'Diplomatic Leanings'
# 'Economic Development'
# 'Purge'
# 'Casbah'
# 'Covert Movement'
# 'Atrocities and Reprisals'
# 'The Call Up'
# 'Change in Tactics'
# 'Intimidation'
# 'Teleb the Bomb-maker'
# 'Overkill'
# 'Elections'
# 'Napalm'
# 'Assassination'
# 'Integration'
# 'Economic Crisis in France'
# 'Retreat into Djebel'
# 'Strategic Movement'
# 'Egypt'
# 'Czech Arms Deal'
# 'Refugees'
# 'Paranoia'
# 'Challe Plan'
# 'Moghazni'
# 'Third Force'
# 'Ultras'
# 'Factional Plot'
# 'Bleuite'
# 'Stripey Hole'
# 'Cabinet Shuffle'
# 'Population Control'
# 'Operation 744'
# 'Development'
# 'Hardened Attitudes'
# 'Peace Talks'
# 'Army in Waiting'
# 'Bandung Conference'
# 'Soummam Conference'
# 'Morocco and Tunisia Independent'
# 'Suez Crisis'
# 'OAS'
# 'Mobilization'
# 'Recall De Gaulle'
# "Coup d'etat"
# "Propaganda!"
# "Propaganda!"
# "Propaganda!"
# "Propaganda!"
# "Propaganda!"
|