summaryrefslogtreecommitdiffstats
path: root/lib/colonial_twilight/actions/fln/attack.rb
blob: 298f28ed4049bd779a6ee064174f3e10fcc35548 (plain)
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
# frozen_string_literal: true

require_relative 'fln_action'
require_relative 'ambush'

module ColonialTwilight
  module Actions
    module FLN
      # Attack 3.3.3
      class Attack < FlnAction
        def initialize(space)
          super(space, {}, cost: 1)
          @ambush = nil
        end

        # can be combined with Ambush (replaces Attack procedure)
        def ambush!
          raise 'ambush! called twice' unless @ambush.nil?

          @ambush = Ambush.new(space)
          self
        end


        # def validate!
        #   super
        #   raise 'select conduct mode' unless mode.key?(:conduct)
        # end

        # Activate all Guerrillas in the space
        # Roll 1d6: if result is less than or equal to number of Guerrillas
        #   remove up to 2 Gov pieces (Police first, then Troops, then Base) into casualties
        # If result is a 1, add 1 underground Guerrillas
        # Attrition (not Ambush) : for each French piece removed : remove 1 FLN Guerrillas (alternate available / casualties)
        # -1 Commitment per French Base removed
        def apply!(board)
          raise NotImplementedError
        end

        class << self
          def op?
            true
          end

          # any space with FLN cubes and Gov pieces
          def applicable?(space)
            space.guerrillas.positive? && space.gov.positive?
          end

          # def available_modes(_space)
          #   { conduct: 1 }
          # end
        end
      end
    end
  end
end