定义域:修订间差异

本页面所适用的版本可能已经过时,最后更新于1.0
(建立内容为“{{Version|1.0}} 定义域是实在的实例,如果想知道如何筛选准确的定义域,请查看事件目标,如果想知道定义域的类型,查…”的新页面)
 
无编辑摘要
第127行: 第127行:
*level >= 2
*level >= 2


=== Culture scope ===
=== 其他定义域===
其他的定义域大同小异,都是特定符号加上:
 
==== 文化定义域 ====
Culture scope seems to work in a similar fashion to buildings scope, indirectly referenced. However has more use cases.
Culture scope seems to work in a similar fashion to buildings scope, indirectly referenced. However has more use cases.


第138行: 第141行:




==== Culture triggers ====
==== 利益集团定义域 ====
* is_homeland = cu:greek
 
=== Interest Group scope ===
Scoping to an interest group you use the letters "'''ig'''", for example:
Scoping to an interest group you use the letters "'''ig'''", for example:
<syntaxhighlight lang=perl>
<syntaxhighlight lang=perl>
第172行: 第172行:
|}
|}


==== IG triggers ====
==== Market Good scope ====
* is_in_government = yes
 
=== Market Good scope ===
Scoping to a market good you use the letters "'''mg'''", for example:
Scoping to a market good you use the letters "'''mg'''", for example:
<syntaxhighlight lang=perl>
<syntaxhighlight lang=perl>
第183行: 第180行:
</syntaxhighlight>
</syntaxhighlight>


==== MG triggers ====
* market = { mg:tools = { market_goods_delta >= 10 } }


==== Types of scope ====
==== Types of scope ====

2022年11月17日 (四) 20:35的版本


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

深入介绍

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

For specific scope, it starts with certain letter, such as var,p,s,c,law_type. Using them with : followed by ceratain name can call the scope, e.g, s:STATE_MINNESOTA call a state_region scope names STATE_MINNESOTA.

Scope can be linked by Event targets, they are series of function to linked to output scopes from input scopes.

s is an Event targets, also it requires data, therefore it must followed by : than the ceratain name to call the scope. Due to s is global link Event targets, It can be used independentlly. region_state is not global link so it sould follow by . after a state_region scope.

By . can quickly link scopes. The most common example is s:STATE_MINNESOTA.region_state:USA, firstly is state_region scope than by . link to state. Further, add one more . is possible, just like s:STATE_MINNESOTA.region_state:USA.var:usa_state_flag_block

However, some of scope can not be quickly switch, due to the parent scope is uncertain. diplomatic_play usually is uncertain scope, and then Event targets should be considered

random_diplomatic_play = { 
    # random,every are to used in really effect, any is to used in trigger
    # random,every and any is all uncertain, can not use . to link next scope
    limit = {
        is_war = yes
    }
    initiator = { change_infamy = 5 } # initiator is event target of diplomatic_play, it outputs a country
}



Here are detailed example of scope happends:

example_event.1 = {
	type = country_event # It means that, root is the country which happend the event, instead of state.
    random_diplomatic_play = {
        limit = {
            is_war = yes
            any_scope_play_involved = {
                THIS = ROOT # THIS is the current scope, in there the THIS is any_scope_play_involved
            }
            NOR = { # not or 
                initiator = ROOT # initiator and target is the event target of diplomatic_play
                target = ROOT
            }
        }
        initiator = { # this scope can only used in diplomatic scope
            save_scope_as = initiator_scope # therefore, it should be save to be handled in other scopes
        }
        target = {
            save_scope_as =  target_scope
        }
        if = { limit = { ROOT = { is_diplomatic_play_enemy_of = scope:initiator_scope } } # to judge on ROOT scope
            if = { limit = { scope:initiator_scope = { infamy >= infamy_threshold:infamous } } # now we handdle saved scope in other scope
                ROOT = { change_infamy = 5 }
            }
            ROOT = {
                set_owes_obligation_to = {
                    country = scope:target_scope
                    setting = yes
                }
            }
            remove_target_backers = { ROOT } # remove_target_backers can only effects on diplomatic_play scope.
            # however, this effect just can display, it do not really make ROOT exit the war, it is frustrating.
        }
    }
 }

地区定义域

First of all, let me clear up the difference between a and a mere . 首先,有必要甄别"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
 }

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

To learn how to change state traits you may wanna check out the workshop mod "More State Modifiers".

State triggers

WIP

Building scope

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
 }


Building triggers

  • is_building_type = building_sulfur_mine
  • level >= 2

其他定义域

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

文化定义域

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

Market Good scope

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

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


Types of scope

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