定义域:修订间差异

本页面所适用的版本可能已经过时,最后更新于1.0
(文本替换 - 替换“{{Version|”为“{{版本|”)
 
第1行: 第1行:
{{Version|1.0}}
{{ 版本|1.0}}
 定义域是实在的实例,如果想知道如何筛选准确的定义域,请查看[[事件目标]],如果想知道定义域的类型,查看[[#定义域类型]]
 定义域是实在的实例,如果想知道如何筛选准确的定义域,请查看[[事件目标]],如果想知道定义域的类型,查看[[#定义域类型]]



2023年9月5日 (二) 21:40的最新版本

定义域是实在的实例,如果想知道如何筛选准确的定义域,请查看事件目标,如果想知道定义域的类型,查看#定义域类型

深入介绍

正如其他p社游戏一样,Vic3也有ROOT,PREV,THIS,FROM这些定义域。

对于特定的定义域,通常而言由特定的字符,比如var,p,s,c,law_type加上:连接名字来使用定义域,比如说s:STATE_MINNESOTA就定义了名为STATE_MINNESOTA的state_region类型定义域。

定义域可以通过 事件目标 链接,事件目标是一系列通过定义域得到输出定义域的函数。

s就是一种 事件目标,而且有requires data属性,因此需要通过: 加上特定的名称以定义一个定义域。又因为s是一个有global link属性的事件目标。因此可以独立使用

而至于region_state就没有global link属性,因此需要依赖 . 在一个 state_region定义域后连接。

.可以快捷连接定义域。最常见的例子是s:STATE_MINNESOTA.region_state:USA,首先定义了一个state_region类型定义域,然后通过.连接到state类型的定义域。可以通过多个. 连接定义域,s:STATE_MINNESOTA.region_state:USA.var:usa_state_flag_block就是一个例子

然而不确定的定义域不能快捷链接,因为上一级定义域不确定,diplomatic_play类型的定义域通常不确定,因此需要在大括号内使用事件目标

random_diplomatic_play = { 
    # random,every通常用在效果里面 any通常用在条件里
    # random,every和 any都是不确定的, 不能用.快速连接
    limit = {
        is_war = yes
    }
    initiator = { change_infamy = 5 } # initiator是diplomatic_play类型的scope的事件目标, 输出一个country类型的定义域
}

这是详尽的例子:

example_event.1 = {
	type = country_event # 定义了ROOT为发生的国家,而不是发生的人物或者地区
    random_diplomatic_play = {
        limit = {
            is_war = yes
            any_scope_play_involved = {
                THIS = ROOT # THIS 就是当前的定义域。 在这里 THIS就是any_scope_play_involved
            }
            NOR = { # not or 
                initiator = ROOT # initiator 和 target 是diplomatic_play的事件目标
                target = ROOT
            }
        }
        initiator = { #  initiator 仅能使用在 diplomatic scope 这一定义域
            save_scope_as = initiator_scope # 因此,为了让其他定义域调用,需要保存定义域
        }
        target = {
            save_scope_as =  target_scope
        }
        if = { limit = { ROOT = { is_diplomatic_play_enemy_of = scope:initiator_scope } } # 转移定义域到ROOT
            if = { limit = { scope:initiator_scope = { infamy >= infamy_threshold:infamous } } # 在ROOT定义域里使用initiator的scope
                ROOT = { change_infamy = 5 }
            }
            ROOT = {
                set_owes_obligation_to = {
                    country = scope:target_scope
                    setting = yes
                }
            }
            remove_target_backers = { ROOT } # 移除外交博弈目标支持者,只能显示,没有效果,令人沮丧
        }
    }
 }

地区定义域

首先,有必要甄别"state region"和"state"

西班牙的国旗 西班牙为例, 其拥有一个名为 "STATE_GRANADA"的"state region". "STATE_GRANADA"被西班牙的国旗 西班牙大不列颠的国旗 大不列颠同时拥有, "STATE_GRANADA" 也因此裂成了两个 "split state". 大不列颠的国旗 大不列颠有一个 "British STATE_GRANADA" 而 西班牙的国旗 西班牙也有一个 "Spianish STATE_GRANADA". 整一块"state region" STATE_GRANADA 就变成了两个叫做 "British STATE_GRANADA" 和 "Spianish STATE_GRANADA"的”states“. “state”的名称由占有地块相对数量决定,比如说西班牙的国旗 西班牙有 STATE_GRANADA的绝大多数地块,因此"Spianish STATE_GRANADA"直接就叫做"STATE_GRANADA"

这是模组制作中一个很重要的概念,一言以蔽之:

  1. 地理性质的,一整块的称为"state region"
  2. 国家对"state region"占有的部分称为 "state",无论这个国家拥有全部还是部分。

举例子来说:

s:STATE_AMAZONAS = { # 这是地理意义上的state region
     add_homeland = brazilian 
 }
 s:STATE_AMAZONAS.region_state:BRZ = { # 这是这是巴西占有的state
     set_state_type = incorporated
 }

原版的state region 在这里,你可以很容易找到这些的名字

要了解如何改变地区特质你可以去创意工坊参见 "More State Modifiers".

建筑定义域

Although technically there is a building scope, in practice, game logic that involves buildings is done indirectly through the state scope. Here's an example I use in one of my mods. Check if a specific country, in a specific state region it owns, has a specific building in level 2.

c:SIA = {
 	any_scope_state = {
 		state_region = s:STATE_NORTH_BORNEO
 		any_scope_building = {
 			is_building_type = building_sulfur_mine
 			level >= 2					
 		}
 	}
 }

The letter to scope buildings is "b". However it's uses are very limited and is mostly used for basic world building.

if = {
 	limit = {
 		exists = state.b:building_sulfur_mine
 	}
 	add = state.b:building_sulfur_mine.level
 }

其他定义域

其他的定义域大同小异,都是特定符号加上:

国家定义域

Scoping to a country you use the letter "c", for example:

c:SIA = {
     add_treasury = 100 # example of game logic
 }

A list of all the vanilla countries is available here, and is useful to easily find the tag you need.

文化定义域

Culture scope seems to work in a similar fashion to buildings scope, indirectly referenced. However has more use cases.

Scoping to a culture you use the letters "cu", for example:

state_region = {
 	is_homeland = cu:greek
 }


利益集团定义域

Scoping to an interest group you use the letters "ig", for example:

ig:ig_landowners = {
	remove_ideology = ideology_paternalistic # example of game logic
	add_ideology = ideology_republican_paternalistic
}


The different interest groups tags are:

Pretty name Tag name
Armed Forces ig_armed_forces
Devout ig_devout
Industrialists ig_industrialists
Intelligentsia ig_intelligentsia
Landowners ig_landowners
Petite bourgeoisie ig_petty_bourgeoisie
Rural Folk ig_rural_folk
Trade unions ig_trade_unions

市场商品定义域

Scoping to a market good you use the letters "mg", for example:

mg:tools = { 
     save_scope_as = cool_tools # game logics
 }


定义域类型

none value bool flag country technology technology_status culture state province pop pop_type building building_type interest_group market market_goods interest_marker strategic_region diplomatic_action diplomatic_pact diplomatic_play diplomatic_relations character state_region war theater religion institution institution_type law law_type journalentry trade_route decree commander_order commander_order_type front battle interest_group_trait ideology goods canal_type country_definition civil_war state_trait country_creation country_formation hq objective battle_side political_movement combat_unit party shipping_lane