建筑修改

本页面所适用的版本可能已经过时,最后更新于1.23

建筑能在 /Europa Universalis IV/common/buildings/ 找到。

添加建筑

所有建筑都必须有独一无二的名称。建筑的编写格式如下:

# ROOT: 建造建筑的省份
# FROM: 建筑所有国
<name> = {
    cost = <int>                # 花费
    time = <months>             # 建造时间
    make_obsolete = <building>  # 可选,在此建筑建设时令<building>所指建筑过时。(即为升级)
    
    one_per_country = yes           # 可选,决定该建筑是否一个国家只能有一个
    allow_in_gold_provinces = no    # 可选,决定是否允许在出产金矿(以及其他goldlike货物)建设本建筑
    indestructible = yes            # 可选,决定该建筑是否在破产时不被摧毁
    onmap = yes                     # 可选,决定该建筑是否在3D地图上显示一个模型
    influencing_fort = yes          # 可选,决定该建筑是否有要塞封锁功能
    
    # 可选,省份商品为所列之一的省份才能建造该建筑
    manufactory = {
        <tradegoods>
    }
    
    # 可选。满足所列条件的省份才能建造并维持该建筑。该条件为省份域
    build_trigger = {
        <triggers>
    }

    # 该建筑给予所在省份的修正
    # 若在此处写入国家域的修正,会直接影响拥有这个省份的国家
    modifier = {
        <modifiers>
    }
    
    # AI建造该建筑的权重
    ai_will_do = {
        factor = <float>
    }
    
    # 可选,建造该建筑时执行的指令
    # THIS = 省份, FROM = 执行建造的国家(不一定是拥有国,可以是它的宗主)
    on_built = {
    
    }
    
    # 可选,摧毁该建筑时执行的指令(与升级时不同)
    # THIS = 省份, FROM = 执行摧毁的国家
    on_destroyed = {
    
    }
    
    # 可选,升级该建筑时执行的指令(与摧毁时不同)
    # THIS = 省份, FROM = 执行升级的国家
    on_obsolete = {
    
    } 
}

ai_will_do项并非随意填写,因为AI的建造逻辑是写死的(hard-coded),AI将会估计每一种建筑给它带来的收益。它们总是会建设那些高收益百分比的建筑。.

注意:

  • 如果建筑的年回报率小于1%,那么AI将不会建造本建筑。
  • 在AI面对经济困境时,它要求的年回报率更高。
  • 堡垒将会以所在地地形、策略位置和维护预算来计算“年回报率”。

ai_will_do项目将会直接与年回报率相乘,意味着把它设置为0将不会让AI建造本建筑。

对于非经济类的建筑(堡垒除外),AI认为年回报量为0.01金币/年。提高ai_will_do数值将会让AI去考虑建设它们。

举个例子,AI永远不会建设下面的“文化中心”,因为它的年回报率是0.01%。

cultural_centre = {
	cost = 100
	time = 12
	
	modifier = {
		local_culture_conversion_cost = -0.1 
	}
	
	ai_will_do = {
		factor = 1
	}
}

为了让AI考虑建设此建筑,可以设定在稳定度大于等于1时, ai_will_do变为105,使得年回报率变为1.05%, 这样AI就会考虑建设它。

cultural_centre = {
	cost = 100
	time = 12
	
	modifier = {
		local_culture_conversion_cost = -0.1
	}
	
    ai_will_do = {
        factor = 1
        
        modifier = {
            factor = 105                
            FROM = { stability = 1 }    
        }
    }
}

科技 

为了让建筑出现在游戏中,它们必须被添加到某种科技。科技文件能在 /Europa Universalis IV/common/technologies/ 找到。

在一个科技内,添加建筑像这样:

technology = {
    # ...
    
    <building> = yes
}

界面

建筑需要定义图标才能正确地出现在游戏中。建筑图标的缺省尺寸是48乘以48,并且被保存为 .tga.dds 格式。

图标定义(icon definition)需要写一个 .gfx 文件,在 interface 文件夹。在这个 .gfx 文件中,添加下列:

# ...
spriteType = {
    name = "GFX_<building>"
    texturefile = "gfx//interface//buildings//<building icon>.tga"
    loadType = "INGAME"
}
# ...

此外,当你更改建筑时必须手动编辑建筑界面。你需要一起编辑 provinceview.guimacrobuildinterface.gui。界面代码在两处能是相同的,所以专注于一处然后复制并粘贴完成的代码到另一处。

包含建筑的 windowType 被叫做 new_buildings_entry2provinceview.gui 以及 new_buildings_entrymacrobuildinterface.gui

尽管你毫无疑问需要编辑更多,你每个建筑需要的两条至关重要的附加项目是 instantTextBoxTypecheckboxType。它们遵循这个格式:

checkboxType = {
    name = "build_<building>"
    position = { x = 9 y = 32 }
    quadTextureSprite = "GFX_courthouse_muslimgfx" #Placeholder, real sprite is decided by game (based on button name).
}
		
instantTextBoxType={
    name = "<building>_cost"
    position = {x = 9 y = 82 }
    font = "vic_18"
    borderSize = {x = 0 y = 0}	
    maxWidth = 128
    maxHeight = 18
    text = "2000¤"	
}

本地化

建筑遵循这个格式:

 building_<building>: "名称"
 building_<building>_desc: "描述"

你能依据宗教组给建筑添加不同的本地化,使用下列格式:

 building_<building>_<religion group>: "另一个名称在这里"
 building_<building>_<religion group>_desc: "另一个描述在这里"


参考资料

Category:建筑图标

版本沿袭

1.29版本的建造条件并非是“build_trigger”而是“trigger”