diff options
author | Jérémy Zurcher <jeremy@asynk.ch> | 2023-09-17 16:54:12 +0200 |
---|---|---|
committer | Jérémy Zurcher <jeremy@asynk.ch> | 2023-09-17 16:54:12 +0200 |
commit | 6da1db151f295b910cc7244ba0211b438a914514 (patch) | |
tree | 45d46d0f259f2164b721a6f4f9406d8328961202 /lib | |
parent | bd01c2b44a381c1c68d33f4fe8b4654a50ca8190 (diff) | |
download | colonial-twilight-6da1db151f295b910cc7244ba0211b438a914514.zip colonial-twilight-6da1db151f295b910cc7244ba0211b438a914514.tar.gz |
FLNRules : add general rules module
Diffstat (limited to 'lib')
-rw-r--r-- | lib/colonial_twilight/fln_rules.rb | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/lib/colonial_twilight/fln_rules.rb b/lib/colonial_twilight/fln_rules.rb new file mode 100644 index 0000000..fa07805 --- /dev/null +++ b/lib/colonial_twilight/fln_rules.rb @@ -0,0 +1,73 @@ +#! /usr/bin/env ruby +# frozen_string_literal: true + +module ColonialTwilight + # general rules governing operations and activities + module FLNRules + # Rally 3.3.1 + def may_rally_in?(space) + (space.sector? || (space.city? && !space.support?) || (space.country? && space.independent?)) + end + + def rally_spaces(board) + board.search { |s| may_rally_in? s } + end + + # March 3.3.2 + + # Attack 3.3.3 + def may_attack_in?(space) + (space.fln_cubes.positive? && space.gov.positive?) + end + + def attack_spaces(board) + board.search { |s| may_attack_in? s } + end + + # Terror 3.3.4 + def may_terror_in?(space) + (!space.country? && !space.pop.zero? && space.fln_underground.positive?) + end + + def terror_spaces(board) + board.search { |s| may_terror_in? s } + end + + # Extort 4.3.1 + def may_extort_in?(space) + (!space.pop.zero? && space.fln_underground.positive? && space.fln_control? && + (space.country? ? space.independent? : true)) + end + + def extort_spaces(board) + board.search { |s| may_extort_in? s } + end + + # Subvert 4.3.2 + def may_subvert_in?(space) + (space.fln_underground.positive? && space.algerian_cubes.positive?) + end + + def subvert_spaces(board) + board.search { |s| may_subvert_in? s } + end + + # Ambush 4.3.3 + def may_ambush_in?(space) + may_attack_in?(space) + end + + def ambush_spaces(board) + board.search { |s| may_ambush_in? s } + end + + # OAS 5.3.1 + def may_oas_in?(space) + (!space.country? && !space.pop.zero? && !space.terror.positive?) + end + + def oas_spaces(board) + board.search { |s| may_oas_in? s } + end + end +end |