「近郊部を建設すると、近郊部に隣接するタイルにゴールド+2。」
を文明の特性に追加
INSERT INTO Types (Type, Kind) VALUES ('MODIFIER_PLAYER_DISTRICTS_ATTACH_MODIFIER', 'KIND_MODIFIER') ; INSERT OR IGNORE INTO DynamicModifiers (ModifierType, CollectionType, EffectType) VALUES ('MODIFIER_PLAYER_DISTRICTS_ATTACH_MODIFIER', 'COLLECTION_PLAYER_DISTRICTS', 'EFFECT_ATTACH_MODIFIER') ; /* Modifier */ INSERT INTO Modifiers (ModifierId, ModifierType, SubjectRequirementSetId, SubjectStackLimit) VALUES ('GOLD_ADJACENT_TO_NEIGHBORHOOD', 'MODIFIER_PLAYER_DISTRICTS_ATTACH_MODIFIER', 'DISTRICT_IS_NEIGHBORHOOD', NULL) , ('GOLD_ADJACENT_TO_NEIGHBORHOOD_MODIFIER', 'MODIFIER_PLAYER_ADJUST_PLOT_YIELD', 'PLOT_IS_ADJACENT_TO_NEIGHBORHOOD', 1) ; INSERT INTO ModifierArguments (ModifierId, Name, Value) VALUES ('GOLD_ADJACENT_TO_NEIGHBORHOOD', 'ModifierId', 'GOLD_ADJACENT_TO_NEIGHBORHOOD_MODIFIER') , ('GOLD_ADJACENT_TO_NEIGHBORHOOD_MODIFIER', 'Amount', 2) , ('GOLD_ADJACENT_TO_NEIGHBORHOOD_MODIFIER', 'YieldType', 'YIELD_GOLD') ; /* Requirements */ INSERT INTO RequirementSets (RequirementSetId, RequirementSetType) VALUES ('PLOT_IS_ADJACENT_TO_NEIGHBORHOOD', 'REQUIREMENTSET_TEST_ALL') ; INSERT INTO RequirementSetRequirements (RequirementSetId, RequirementId) VALUES ('PLOT_IS_ADJACENT_TO_NEIGHBORHOOD', 'REQUIRES_PLOT_IS_ADJACENT_TO_NEIGHBORHOOD') ; INSERT INTO Requirements (RequirementId, RequirementType) VALUES ('REQUIRES_PLOT_IS_ADJACENT_TO_NEIGHBORHOOD', 'REQUIREMENT_PLOT_ADJACENT_TO_OWNER') ; /* Requirements IGNORE Expansion2 */ INSERT OR IGNORE INTO RequirementSets (RequirementSetId, RequirementSetType) VALUES ('DISTRICT_IS_NEIGHBORHOOD', 'REQUIREMENTSET_TEST_ALL') ; INSERT OR IGNORE INTO RequirementSetRequirements (RequirementSetId, RequirementId) VALUES ('DISTRICT_IS_NEIGHBORHOOD', 'REQUIRES_DISTRICT_IS_NEIGHBORHOOD') ; INSERT OR IGNORE INTO Requirements (RequirementId, RequirementType) VALUES ('REQUIRES_DISTRICT_IS_NEIGHBORHOOD', 'REQUIREMENT_DISTRICT_TYPE_MATCHES') ; INSERT OR IGNORE INTO RequirementArguments (RequirementId, Name, Value) VALUES ('REQUIRES_DISTRICT_IS_NEIGHBORHOOD', 'DistrictType', 'DISTRICT_NEIGHBORHOOD') ; INSERT INTO TraitModifiers (TraitType, ModifierId) VALUES ('TRAIT_CIVILIZATION_ADJACENT_DISTRICTS', 'GOLD_ADJACENT_TO_NEIGHBORHOOD') ;
[A]のModifierを、日本文明のUAにセットしているので
日本の都市にある近郊部の隣接タイルがゴールド+2を出すようになります
Types と DynamicModifiers の追加
Modifierの対象に別のModifierをセットする ATTACH_MODIFIER 系において
ver.1.0.0.341では、プレイヤーの所有全区域を対象にしたModifierTypeが無いので追加している
INSERT OR IGNORE INTO DynamicModifiers (ModifierType, CollectionType, EffectType)
今後追加されることを考慮して、すでに存在していた場合は追加を行わないINSERT OR IGNORE INTOを使っている
RequirementType: REQUIREMENT_PLOT_ADJACENT_TO_OWNER
近郊部区域に持たせたModifierのRequirementTypeに使用
単純に「近郊部区域に隣接」の条件付けだと、他の近郊部や別文明のものにまで適用されてしまうため
(パンテオンの'戦の神'のような状態)
RequirementSets: DISTRICT_IS_NEIGHBORHOOD
同じIDのRequirementSetsがGSに含まれているためINSERT OR IGNORE INTOを使っている
内容は同じで各IDを変えて追加すれば、INSERT OR IGNORE INTOを使う必要は全くない
/* Requirements IGNORE Expansion2 */ INSERT OR IGNORE INTO RequirementSets (RequirementSetId, RequirementSetType) VALUES ('DISTRICT_IS_NEIGHBORHOOD', 'REQUIREMENTSET_TEST_ALL') ;
SubjectStackLimit = 1
MODIFIER_PLAYER_ADJUST_PLOT_YIELDでタイルの産出量を調整する箇所で一緒に設定している
これによって「複数の近郊部に隣接しているタイル」で効果が重複しないようにしている
逆にこの設定をせずに効果を無尽蔵に重複させたり、2つまで重複が可能などの設定もできる