Modifier改変 4

Owner(所有者)の必要条件

タイルの必要条件のセクションにて、資源の種類が一致するかの条件を
<Modifiers>SubjectRequirementSetIdにセットすることで
タイルに効果が発揮される条件を設定した

  • 都市の領土の産出量を調整する
    • 調整する産出量:+1
    • 基本出力の種類:食料
    • 調整するタイルに条件をつける (SubjectRequirementSetId)
      • 以下の全ての条件を満たすタイル
        • 設置されている資源の種類が以下に一致するタイル
          • 資源の種類:米

これとは別に
<Modifiers>OwnerRequirementSetIdにセットすることで
所有者(Owner)に、効果が発揮される条件を設定することができる

Owner条件の設定

水車小屋の「小麦の食料+1」のModifierに
以下のようにOwnerの条件を設定すると

BuildingModifiers
BuildingType
BUILDING_WATER_MILL
ModifierId
WATERMILL_ADDWHEATYIELD
Modifiers
ModifierId
WATERMILL_ADDWHEATYIELD
ModifierType
MODIFIER_CITY_PLOT_YIELDS_ADJUST_PLOT_YIELD
ModifierArguments
ModifierId
WATERMILL_ADDWHEATYIELD
Name
Amount
Value
1
ModifierArguments
ModifierId
WATERMILL_ADDWHEATYIELD
Name
YieldType
Value
YIELD_FOOD
SubjectRequirementSetId
RESOURCE_IS_WHEAT
OwnerRequirementSetId
CITY_HAS_4_POPULATION_REQUIREMENTS
RequirementSets
RequirementSetId
RESOURCE_IS_WHEAT
RequirementSetType
REQUIREMENTSET_TEST_ALL
RequirementSetRequirements
RequirementSetId
RESOURCE_IS_WHEAT
RequirementId
REQUIRES_WHEAT_IN_PLOT
RequirementSets
RequirementSetId
CITY_HAS_4_POPULATION_REQUIREMENTS
RequirementSetType
REQUIREMENTSET_TEST_ALL
RequirementSetRequirements
RequirementSetId
CITY_HAS_4_POPULATION_REQUIREMENTS
RequirementId
REQUIRES_POPULATION_4
Requirements
RequirementId
REQUIRES_WHEAT_IN_PLOT
RequirementType
REQUIREMENT_PLOT_RESOURCE_TYPE_MATCHES
RequirementArguments
RequirementId
REQUIRES_WHEAT_IN_PLOT
Name
ResourceType
Value
RESOURCE_WHEAT
Requirements
RequirementId
REQUIRES_POPULATION_4
RequirementType
REQUIREMENT_CITY_HAS_X_POPULATION
RequirementArguments
RequirementId
REQUIRES_POPULATION_4
Name
Amount
Value
4
  • 都市の領土の産出量を調整する
    • 調整する産出量:+1
    • 基本出力の種類:食料
    • 調整するタイルに条件をつける
      • 以下の全ての条件を満たすタイル
        • 設置されている資源の種類が以下に一致するタイル
          • 資源の種類:米
    • 所有者に条件をつける
      • 以下の全ての条件を満たす所有者
        • 都市の人口が以下の値以上である
          • 値:4

赤字の部分の条件が加わり
これも満たさないと効果が発揮されなくなる

この状態の水車小屋の特性を説明文にすると

(水車小屋を建設したこの都市の領土内の)米の食料+1
この都市の人口が4以上の場合は、(この都市の領土内の)小麦の食料+1

となる

条件のRequirementTypeに使った "REQUIREMENT_CITY_HAS_X_POPULATION"
都市の人口がX以上であることを条件づけるので
ここにおいては所有者=水車小屋が建設されている都市ということになる

別パターンのOwner条件

先ほどとは別の条件をOwnerRequirementSetIdにセットすると

BuildingModifiers
BuildingType
BUILDING_WATER_MILL
ModifierId
WATERMILL_ADDWHEATYIELD
Modifiers
ModifierId
WATERMILL_ADDWHEATYIELD
ModifierType
MODIFIER_CITY_PLOT_YIELDS_ADJUST_PLOT_YIELD
ModifierArguments
ModifierId
WATERMILL_ADDWHEATYIELD
Name
Amount
Value
1
ModifierArguments
ModifierId
WATERMILL_ADDWHEATYIELD
Name
YieldType
Value
YIELD_FOOD
SubjectRequirementSetId
RESOURCE_IS_WHEAT
OwnerRequirementSetId
PLAYER_HAS_CRAFTSMANSHIP_REQUIREMENTS
RequirementSets
RequirementSetId
RESOURCE_IS_WHEAT
RequirementSetType
REQUIREMENTSET_TEST_ALL
RequirementSetRequirements
RequirementSetId
RESOURCE_IS_WHEAT
RequirementId
REQUIRES_WHEAT_IN_PLOT
RequirementSets
RequirementSetId
PLAYER_HAS_CRAFTSMANSHIP_REQUIREMENTS
RequirementSetType
REQUIREMENTSET_TEST_ALL
RequirementSetRequirements
RequirementSetId
PLAYER_HAS_CRAFTSMANSHIP_REQUIREMENTS
RequirementId
REQUIRES_PLAYER_HAS_CRAFTSMANSHIP
Requirements
RequirementId
REQUIRES_WHEAT_IN_PLOT
RequirementType
REQUIREMENT_PLOT_RESOURCE_TYPE_MATCHES
RequirementArguments
RequirementId
REQUIRES_WHEAT_IN_PLOT
Name
ResourceType
Value
RESOURCE_WHEAT
Requirements
RequirementId
REQUIRES_PLAYER_HAS_CRAFTSMANSHIP
RequirementType
REQUIREMENT_PLAYER_HAS_CIVIC
RequirementArguments
RequirementId
REQUIRES_PLAYER_HAS_CRAFTSMANSHIP
Name
CivicType
Value
CIVIC_CRAFTSMANSHIP
  • 都市の領土の産出量を調整する
    • 調整する産出量:+1
    • 基本出力の種類:食料
    • 調整するタイルに条件をつける
      • 以下の全ての条件を満たすタイル
        • 設置されている資源の種類が以下に一致するタイル
          • 資源の種類:米
    • 所有者に条件をつける
      • 以下の全ての条件を満たす所有者
        • プレイヤーが特定の社会制度を研究済みである
          • 社会制度の種類:職人技

この状態の特性は

(水車小屋を建設したこの都市の領土内の)米の食料+1
「職人技」 (社会制度) を研究済みの場合、(この都市の領土内の)小麦の食料+1

となる

RequirementType"REQUIREMENT_PLAYER_HAS_CIVIC"
特定の社会制度を持っているかの条件なので
このパターンでは所有者=水車小屋を持っているプレイヤーになる

OwnerとSubject

OwnerRequirementSetIdSubjectRequirementSetId
Modifierを何にセットしたかと、ModifierTypeの種類によって、条件の対象が変わってくるので注意する必要がある

解説に使った水車小屋改変のsql

(水車小屋を建設したこの都市の領土内の)米の食料+1
この都市の人口が4以上の場合は、(この都市の領土内の)小麦の食料+1

INSERT INTO RequirementSets (RequirementSetId, RequirementSetType)
VALUES ('CITY_HAS_4_POPULATION_REQUIREMENTS', 'REQUIREMENTSET_TEST_ALL')
;
INSERT INTO RequirementSetRequirements (RequirementSetId, RequirementId)
VALUES ('CITY_HAS_4_POPULATION_REQUIREMENTS', 'REQUIRES_POPULATION_4')
;
INSERT INTO Requirements (RequirementId, RequirementType)
VALUES ('REQUIRES_POPULATION_4', 'REQUIREMENT_CITY_HAS_X_POPULATION')
;
INSERT INTO RequirementArguments (RequirementId, Name, Value)
VALUES ('REQUIRES_POPULATION_4', 'Amount', 4)
;

UPDATE Modifiers
SET OwnerRequirementSetId = 'CITY_HAS_4_POPULATION_REQUIREMENTS'
WHERE ModifierId = 'WATERMILL_ADDWHEATYIELD'
;

(水車小屋を建設したこの都市の領土内の)米の食料+1
「職人技」 (社会制度) を研究済みの場合、(この都市の領土内の)小麦の食料+1

INSERT INTO RequirementSets (RequirementSetId, RequirementSetType)
VALUES ('PLAYER_HAS_CRAFTSMANSHIP_REQUIREMENTS', 'REQUIREMENTSET_TEST_ALL')
;
INSERT INTO RequirementSetRequirements (RequirementSetId, RequirementId)
VALUES ('PLAYER_HAS_CRAFTSMANSHIP_REQUIREMENTS', 'REQUIRES_PLAYER_HAS_CRAFTSMANSHIP')
;
INSERT INTO Requirements (RequirementId, RequirementType)
VALUES ('REQUIRES_PLAYER_HAS_CRAFTSMANSHIP', 'REQUIREMENT_PLAYER_HAS_CIVIC')
;
INSERT INTO RequirementArguments (RequirementId, Name, Value)
VALUES ('REQUIRES_PLAYER_HAS_CRAFTSMANSHIP', 'CivicType', 'CIVIC_CRAFTSMANSHIP')
;

UPDATE Modifiers
SET OwnerRequirementSetId = 'PLAYER_HAS_CRAFTSMANSHIP_REQUIREMENTS'
WHERE ModifierId = 'WATERMILL_ADDWHEATYIELD'
;