N3OW_Western_eastern_europe/gui/portraits.gui
2026-03-09 03:51:24 +00:00

3313 lines
78 KiB
Text

######################################################
################## PORTRAIT TYPES ####################
######################################################
types PortraitTypes
{
####################################
######### MAIN PORTRAITS ###########
####################################
type widget_portrait_frame = widget {
size = { 100% 100% }
background = {
visible = "[Not( Character.IsDiarchOf( Character.GetLiege ) )]"
texture = "gfx/portraits/portrait_rank.dds"
margin_top = -4
margin_bottom = -3
margin_right = -4
margin_left = -3
framesize = { 196 194 }
frame = "[Character.GetPrimaryTitle.GetTierFrame]"
}
background = {
visible = "[Character.IsDiarchOf( Character.GetLiege )]"
texture = "gfx/portraits/portrait_rank_regency.dds"
margin_top = 6
margin_bottom = -3
margin_right = -4
margin_left = -3
framesize = { 196 210 }
frame = "[Character.GetPrimaryTitle.GetTierFrame]"
}
}
# The standard portrait types. CoA, opinion and status icons are included by default; use blockoverride to disable them.
## Extra small head portrait. These are smaller than we would like, so only use if you really, really have to.
type portrait_head_small = widget {
size = { 85 90 }
background = {
using = Background_Area_Solid
modify_texture = {
texture = "gfx/interface/component_masks/mask_fade_vertical.dds"
blend_mode = alphamultiply
alpha = 0.2
mirror = vertical
}
}
background = {
block "empty_character" {}
visible = "[Not( Character.HasLandedTitles )]"
texture = "gfx/portraits/portrait_frame.dds"
using = Color_Grey
margin = { -4 -4 }
alpha = 0.4
}
widget = {
size = { 100% 100% }
using = Portrait_Background_Glows
block "empty_character" {}
}
portrait_button = {
parentanchor = bottom|hcenter
size = { 80 100 }
using = portrait_base
block "portrait_texture"
{
portrait_texture = "[Character.GetPortrait('environment_head', 'camera_head', 'idle', PdxGetWidgetScreenSize(PdxGuiWidget.Self))]"
}
mask = "gfx/portraits/portrait_mask_head_small.dds"
effectname = "NoHighlight"
highlight_icon = {
name = "prison_bars"
visible = "[Character.IsImprisoned]"
visible_at_creation = no
size = { 80 88 }
parentanchor = center
effectname = "NoHighlight"
texture = "gfx/portraits/portrait_prison_head.dds"
modify_texture = {
name = "mask"
texture = "gfx/portraits/portrait_mask_head_small.dds"
spriteType = Corneredstretched
blend_mode = alphamultiply
}
}
block "portrait_button" {}
}
widget_portrait_frame = {}
block "coa" {
coa_realm_tiny = {
visible = "[Character.HasLandedTitles]"
parentanchor = bottom|left
position = { 3 -2 }
scale = 0.85
}
}
widget = {
size = { 100% 100% }
visible = "[Not( Character.HasLandedTitles )]"
block "empty_character" {}
background = {
texture = "gfx/portraits/portrait_frame.dds"
using = Color_Grey
margin = { -4 -4 }
alpha = 0.4
modify_texture = {
texture = "gfx/interface/component_masks/mask_fade_vertical.dds"
blend_mode = alphamultiply
mirror = vertical
}
}
background = {
visible = "[Character.IsHovered]"
texture = "gfx/portraits/portrait_frame.dds"
using = Color_Grey
alpha = 0.7
margin = { -4 -4 }
}
}
flowcontainer = {
parentanchor = bottom|right
ignoreinvisible = yes
direction = vertical
margin = { 4 0 }
margin_bottom = 5
portrait_status_icons_small = {
parentanchor = right
}
block "opinion_box"
{
portrait_opinion_small = {
name = "tutorial_highlight_character_view_opinion_heir"
}
}
}
# Portrait unknown glow
highlight_icon = {
name = "portrait_unknown_head_small_glow"
parentanchor = center
position = { 3 -9 }
gfxtype = framedbuttongfx
effectname = "NoHighlight"
texture = "gfx/portraits/unknown_portraits/button_unknown_head.dds"
size = { 80 100 }
framesize = { 384 480 }
upframe = 1
overframe = 2
block "glow_visible" {
visible = "[Not(Character.IsValid)]"
}
block "glow_flip" {}
block "onclick" {}
}
}
### Portrait used in the relationship tab
# Has extra relationship icon from the view of the current character (not necessarily the player)
type portrait_head_small_relationship = widget {
size = { 85 90 }
background = {
using = Background_Area_Solid
modify_texture = {
texture = "gfx/interface/component_masks/mask_fade_vertical.dds"
blend_mode = alphamultiply
alpha = 0.2
mirror = vertical
}
}
background = {
block "empty_character" {}
visible = "[Not( Character.HasLandedTitles )]"
texture = "gfx/portraits/portrait_frame.dds"
using = Color_Grey
margin = { -4 -4 }
alpha = 0.4
}
widget = {
size = { 100% 100% }
using = Portrait_Background_Glows
block "empty_character" {}
}
portrait_button = {
parentanchor = bottom|hcenter
size = { 80 100 }
using = portrait_base
block "portrait_texture"
{
portrait_texture = "[Character.GetPortrait('environment_head', 'camera_head', 'idle', PdxGetWidgetScreenSize(PdxGuiWidget.Self))]"
}
mask = "gfx/portraits/portrait_mask_head_small.dds"
effectname = "NoHighlight"
highlight_icon = {
name = "prison_bars"
visible = "[Character.IsImprisoned]"
visible_at_creation = no
size = { 80 88 }
parentanchor = bottom
effectname = "NoHighlight"
texture = "gfx/portraits/portrait_prison_head.dds"
modify_texture = {
name = "mask"
texture = "gfx/portraits/portrait_mask_head_small.dds"
spriteType = Corneredstretched
blend_mode = alphamultiply
}
}
block "portrait_button" {}
}
widget_portrait_frame = {}
block "coa" {
coa_realm_tiny = {
visible = "[Character.HasLandedTitles]"
parentanchor = bottom|left
position = { 3 -2 }
scale = 0.85
}
}
widget = {
size = { 100% 100% }
visible = "[Not( Character.HasLandedTitles )]"
block "empty_character" {}
background = {
texture = "gfx/portraits/portrait_frame.dds"
using = Color_Grey
margin = { -4 -4 }
alpha = 0.4
modify_texture = {
texture = "gfx/interface/component_masks/mask_fade_vertical.dds"
blend_mode = alphamultiply
mirror = vertical
}
}
background = {
visible = "[Character.IsHovered]"
texture = "gfx/portraits/portrait_frame.dds"
using = Color_Grey
alpha = 0.7
margin = { -4 -4 }
}
}
flowcontainer = {
visible = "[Character.IsValid]"
ignoreinvisible = yes
parentanchor = top|right
block "scripted_relation_status_icons"
{
using = Portrait_Relation_Icons_Character_Window
}
margin_right = 2
blockoverride "icon_size"
{
size = { 24 24 }
}
background = {
using = Background_Area_Dark
margin = { 2 2 }
alpha = 0.8
modify_texture = {
texture = "gfx/interface/component_masks/mask_glow.dds"
blend_mode = alphamultiply
}
}
}
widget = {
size = { 85 68 }
scissor = yes
parentanchor = bottom
flowcontainer = {
parentanchor = bottom|right
ignoreinvisible = yes
direction = vertical
margin = { 4 0 }
margin_bottom = 4
flowcontainer = {
visible = "[Character.IsValid]"
ignoreinvisible = yes
direction = vertical
parentanchor = right
spacing = 1
margin_right = 2
background = {
using = Background_Area_Dark
margin = { 2 2 }
}
# sorted by priority, highest prio at the bottom
block "status_icons" {
icon = {
name = "relation_icon"
visible = "[LessThan_int32(Character.GetPlayerDynastyRelationFrame, '(int32)9')]"
size = { 14 14 }
texture = "gfx/interface/icons/portraits/relation_small.dds"
framesize = { 28 28 }
frame = "[Character.GetPlayerDynastyRelationFrame]"
tooltip = "[Character.GetPlayerDynastyRelationTooltip]"
}
icon = {
name = "incapable"
visible = "[Character.IsIncapable]"
size = { 14 14 }
texture = "gfx/interface/icons/portraits/incapable_small.dds"
tooltip = "trait_incapable"
}
block "inspiration_status_icons"
{
has_inspiration_status_icon = {
size = { 14 14 }
texture = "gfx/interface/icons/portraits/inspiration_small.dds"
}
has_completed_inspiration_status_icon = {
size = { 14 14 }
texture = "gfx/interface/icons/portraits/inspiration_complete_small.dds"
}
}
icon = {
name = "can_be_punished"
visible = "[Character.CanBePunished]"
size = { 14 14 }
texture = "gfx/interface/icons/portraits/punishment_small.dds"
tooltip = "[Character.PunishmentTooltip]"
}
icon = {
name = "hook"
visible = "[Character.PlayerHasHooksOrHookableSecrets]"
size = { 14 14 }
texture = "gfx/interface/icons/portraits/hook_secret_small.dds"
framesize = { 28 28 }
frame = "[Character.GetHookOrHookableSecretsFrame]"
tooltip = "[Character.HookTooltip]"
}
icon = {
name = "powerful_vassal"
visible = "[Character.IsMyPowerfulVassal]"
size = { 14 14 }
texture = "gfx/interface/icons/portraits/powerful_vassal_small.dds"
framesize = { 28 28 }
frame = "[Character.GetPowerfulVassalFrame]"
tooltip = "[Character.GetPowerfulVassalTooltip]"
}
icon = {
name = "tributary"
datacontext = "[Character.GetTributaryContract]"
visible = "[Character.IsTributaryOf(GetPlayer)]"
size = { 14 14 }
texture = "[Character.GetTributaryContract.GetPortraitIconSmall]"
tooltip = "FRAME_RELATION_TRIBUTARY"
}
icon = {
name = "obedient_to_someone_else"
visible = "[And(Character.UsesObedience,And(Not(Character.GetOverlord.IsLocalPlayer),Character.IsObedientTo(Character.GetOverlord)))]"
size = { 14 14 }
enabled = no
texture = "gfx/interface/icons/portraits/obedient_small.dds"
tooltipwidget = widget_obedience_tooltip
}
icon = {
name = "disobedient_to_me"
visible = "[And(Character.UsesObedience,And(Character.GetOverlord.IsLocalPlayer, And(Not(Character.IsObedientTo(GetPlayer)), Not(Character.IsPlayer))))]"
size = { 14 14 }
texture = "gfx/interface/icons/portraits/disobedient_small.dds"
tooltipwidget = widget_obedience_tooltip
}
icon = {
name = "disobedient_to_someone_else"
visible = "[And(Character.UsesObedience,And(Not(Character.GetOverlord.IsLocalPlayer),Not(Character.IsObedientTo(Character.GetOverlord))))]"
size = { 14 14 }
enabled = no
texture = "gfx/interface/icons/portraits/disobedient_small.dds"
tooltipwidget = widget_obedience_tooltip
}
flowcontainer = {
visible = "[And(HasDlcFeature( 'all_under_heaven' ), Character.ShouldShowMovementPower)]"
ignoreinvisible = yes
direction = vertical
datacontext = "[Character]"
datacontext = "[GetSituation('dynastic_cycle')]"
icon = {
name = "advancement_movement"
visible = "[ObjectsEqual( Situation.GetParticipantGroupByCharacter(Character.Self), Situation.GetTopParticipantGroupByKey('advancement_movement').Self)]"
size = { 14 14 }
texture = "gfx/interface/icons/portraits/dynastic_cycle_group_advance_small.dds"
tooltip = "FRAME_ADVANCEMENT_MOVEMENT"
}
icon = {
name = "expansion_movement"
visible = "[ObjectsEqual( Situation.GetParticipantGroupByCharacter(Character.Self), Situation.GetTopParticipantGroupByKey('expansion_movement').Self)]"
size = { 14 14 }
texture = "gfx/interface/icons/portraits/dynastic_cycle_group_expand_small.dds"
tooltip = "FRAME_EXPANSION_MOVEMENT"
}
icon = {
name = "conservative_movement"
visible = "[ObjectsEqual( Situation.GetParticipantGroupByCharacter(Character.Self), Situation.GetTopParticipantGroupByKey('conservative_movement').Self)]"
size = { 14 14 }
texture = "gfx/interface/icons/portraits/dynastic_cycle_group_anti_small.dds"
tooltip = "FRAME_CONSERVATIVE_MOVEMENT"
}
icon = {
name = "pro_hegemon_movement"
visible = "[ObjectsEqual( Situation.GetParticipantGroupByCharacter(Character.Self), Situation.GetTopParticipantGroupByKey('pro_hegemon_movement').Self)]"
size = { 14 14 }
texture = "gfx/interface/icons/portraits/dynastic_cycle_group_pro_small.dds"
tooltip = "FRAME_PRO_HEGEMON_MOVEMENT"
}
icon = {
name = "undecided_movement"
visible = "[ObjectsEqual( Situation.GetParticipantGroupByCharacter(Character.Self), Situation.GetTopParticipantGroupByKey('undecided_movement').Self)]"
size = { 14 14 }
texture = "gfx/interface/icons/portraits/dynastic_cycle_group_unaligned_small.dds"
tooltip = "FRAME_UNDECIDED_MOVEMENT"
}
}
icon = {
name = "unpredictable"
visible = "[Character.IsOtherPlayer]"
size = { 14 14 }
texture = "gfx/interface/icons/portraits/unpredictable.dds"
tooltip = "PLAYER_OBEDIENCE_UNPREDICTABLE"
}
icon = {
name = "head_icon"
visible = "[LessThan_int32(Character.GetDynastyHeadRelationFrame('(bool)yes'), '(int32)9')]"
size = { 14 14 }
texture = "gfx/interface/icons/portraits/relation_small.dds"
framesize = { 28 28 }
frame = "[Character.GetDynastyHeadRelationFrame('(bool)yes')]"
tooltip = "[Character.GetDynastyHeadRelationTooltip]"
}
icon = {
name = "playable_icon"
visible = "[ObjectsEqual( Character.Self, GetPlayer.GetPlayerHeir )]"
size = { 14 14 }
texture = "gfx/interface/icons/portraits/heir_small.dds"
tooltip = "[Character.GetPlayableFrameTooltip]"
}
}
block "dead_icon"
{
icon = {
name = "is_dead"
visible = "[Character.IsDeadAndValid]"
size = { 14 14 }
texture = "[Character.GetDeathReasonIcon]"
tooltip = "CHARACTER_DEAD_TOOLTIP"
}
}
}
block "opinion_box"
{
portrait_opinion_small = {
name = "tutorial_highlight_character_view_opinion_heir"
}
}
}
}
# Portrait unknown glow
highlight_icon = {
name = "portrait_unknown_head_small_glow"
parentanchor = center
position = { 3 -9 }
gfxtype = framedbuttongfx
effectname = "NoHighlight"
texture = "gfx/portraits/unknown_portraits/button_unknown_head.dds"
size = { 80 100 }
framesize = { 384 480 }
upframe = 1
overframe = 2
block "glow_visible"
{
visible = "[Not(Character.IsValid)]"
}
block "glow_flip" {}
block "onclick" {}
}
}
type portrait_head_small_legend = widget {
size = { 95 120 }
background = {
texture = "gfx/interface/window_legend_chronicle/marginalia_portrait_gold_bg.dds"
}
portrait_button = {
datacontext = "[Legend.GetProtagonist]"
parentanchor = bottom|hcenter
size = { 90 120 }
using = portrait_base
shaderfile = "gfx/FX/gui_painterly_portrait.shader"
pop_out = yes # Painterly shader override for `pop_out` property, it now means "add outline"
pop_out_v = 1.2 # Painterly shader override for `pop_out_v` property, it now means "outline width"
grayscale = no # Dead people should be painted non-gray
block "portrait_texture"
{
portrait_texture = "[Character.GetPortrait('environment_head', 'camera_head', 'idle', PdxGetWidgetScreenSize(PdxGuiWidget.Self))]"
}
mask = "gfx/portraits/portrait_mask_head.dds"
effectname = "NoHighlight"
highlight_icon = {
name = "prison_bars"
visible = "[Character.IsImprisoned]"
visible_at_creation = no
size = { 80 88 }
parentanchor = center
effectname = "NoHighlight"
texture = "gfx/portraits/portrait_prison_head.dds"
modify_texture = {
name = "mask"
texture = "gfx/portraits/portrait_mask_head_small.dds"
spriteType = Corneredstretched
blend_mode = alphamultiply
}
}
}
icon = {
size = { 95 120 }
texture = "[GetIllustration( 'legend_chronicle_portrait_small_frame' ).GetTexture( Legend.MakeScope )]"
}
block "coa" {
coa_realm_tiny = {
visible = "[Character.HasLandedTitles]"
parentanchor = bottom|left
position = { 3 -2 }
scale = 0.85
}
}
widget = {
size = { 100% 100% }
visible = "[Not( Character.HasLandedTitles )]"
block "empty_character" {}
background = {
texture = "gfx/portraits/portrait_frame.dds"
using = Color_Grey
margin = { -4 -4 }
alpha = 0.4
modify_texture = {
texture = "gfx/interface/component_masks/mask_fade_vertical.dds"
blend_mode = alphamultiply
mirror = vertical
}
}
background = {
visible = "[Character.IsHovered]"
texture = "gfx/portraits/portrait_frame.dds"
using = Color_Grey
alpha = 0.7
margin = { -4 -4 }
}
}
flowcontainer = {
parentanchor = bottom|right
ignoreinvisible = yes
direction = vertical
margin = { 4 0 }
margin_bottom = 5
portrait_status_icons_small = {
parentanchor = right
}
block "opinion_box"
{
portrait_opinion_small = {
name = "tutorial_highlight_character_view_opinion_heir"
}
}
}
# Portrait unknown glow
highlight_icon = {
name = "portrait_unknown_head_small_glow"
parentanchor = center
position = { 3 -9 }
gfxtype = framedbuttongfx
effectname = "NoHighlight"
texture = "gfx/portraits/unknown_portraits/button_unknown_head.dds"
size = { 80 100 }
framesize = { 384 480 }
upframe = 1
overframe = 2
block "glow_visible" {
visible = "[Not(Character.IsValid)]"
}
block "glow_flip" {}
block "onclick" {}
}
}
## Standard head portrait
type portrait_head = widget {
size = { 110 120 }
background = {
using = Background_Area_Solid
}
widget = {
size = { 100% 100% }
using = Portrait_Background_Glows
block "empty_character" {}
}
portrait_button = {
parentanchor = bottom|hcenter
size = { 100 125 }
using = portrait_base
block "portrait_texture" {
portrait_texture = "[Character.GetPortrait('environment_head', 'camera_head', 'idle', PdxGetWidgetScreenSize(PdxGuiWidget.Self))]"
}
mask = "gfx/portraits/portrait_mask_head.dds"
effectname = "NoHighlight"
highlight_icon = {
name = "prison_bars"
visible = "[Character.IsImprisoned]"
visible_at_creation = no
size = { 100 118 }
parentanchor = bottom
effectname = "NoHighlight"
texture = "gfx/portraits/portrait_prison_head.dds"
modify_texture = {
name = "mask"
texture = "gfx/portraits/portrait_mask_head.dds"
spriteType = Corneredstretched
blend_mode = alphamultiply
}
}
block "portrait_button" {}
}
widget_portrait_frame = {}
portrait_status_icons_small = {
parentanchor = bottom|right
position = { -7 -8 }
}
block "coa" {
coa_realm_tiny = {
visible = "[Character.HasLandedTitles]"
parentanchor = bottom|left
position = { 3 -2 }
}
}
block "opinion_box"
{
portrait_opinion = {
parentanchor = bottom|hcenter
position = { 1 -4 }
}
}
widget = {
visible = "[Not( Character.HasLandedTitles )]"
size = { 100% 100%}
background = {
texture = "gfx/portraits/portrait_frame.dds"
using = Color_Grey
margin = { -4 -4 }
alpha = 0.5
}
background = {
visible = "[Character.IsHovered]"
texture = "gfx/portraits/portrait_frame.dds"
using = Color_Grey
alpha = 0.7
margin = { -4 -4 }
}
}
#portrait unknown glow
button = {
name = "portrait_unknown_head_glow"
parentanchor = center
position = { 3 -7 }
gfxtype = framedbuttongfx
effectname = "NoHighlight"
texture = "gfx/portraits/unknown_portraits/button_unknown_head.dds"
size = { 98 125 }
framesize = { 384 480 }
upframe = 1
overframe = 2
block "glow_visible" {
visible = "[Not(Character.IsValid)]"
}
block "glow_flip" {}
block "onclick" {}
}
}
## Standard portrait from shoulders up
type portrait_shoulders = widget {
size = { 125 160 }
widget = {
size = { 100% 100% }
block "portrait_glows"
{
using = Portrait_Background_Glows
}
}
portrait_button = {
parentanchor = bottom|hcenter
block "portrait_size"
{
size = { 145 175 }
}
using = portrait_base
block "portrait_texture"
{
portrait_texture = "[Character.GetPortrait('environment_shoulders', 'camera_shoulders', 'idle', PdxGetWidgetScreenSize(PdxGuiWidget.Self))]"
}
mask = "gfx/portraits/portrait_mask_shoulders.dds"
effectname = "NoHighlight"
highlight_icon = {
name = "prison_bars"
visible = "[Character.IsImprisoned]"
visible_at_creation = no
size = { 100% 100% }
effectname = "NoHighlight"
texture = "gfx/portraits/portrait_prison_shoulders.dds"
modify_texture = {
name = "mask"
texture = "gfx/portraits/portrait_mask_shoulders.dds"
spriteType = Corneredstretched
blend_mode = alphamultiply
}
}
block "portrait_button" {}
}
block "portrait_status_icons" {
portrait_status_icons = {
parentanchor = bottom|right
position = { 0 -3 }
scale = 0.85
background = {
using = Background_Area_Dark
margin = { 2 3 }
alpha = 0.8
}
}
}
block "coa" {
coa_realm_small_crown = {
visible = "[Character.HasLandedTitles]"
parentanchor = bottom|left
position = { -5 3 }
}
}
block "opinion_box"
{
portrait_opinion = {
parentanchor = bottom|hcenter
position = { 0 -2 }
}
}
#portrait unknown glow
button = {
position = { -8 -14 }
size = { 141 174 }
texture = "gfx/portraits/unknown_portraits/button_unknown_shoulders.dds"
framesize = { 471 589 }
gfxtype = framedbuttongfx
effectname = "NoHighlight"
upframe = 1
overframe = 2
block "glow_visible" {
visible = "[Not(Character.IsValid)]"
}
block "glow_flip" {}
block "onclick" {}
}
}
## Standard torso from waist up
type portrait_torso = widget {
size = { 165 200 }
widget = {
size = { 100% 100% }
using = Portrait_Background_Glows
}
portrait_button = {
parentanchor = bottom|hcenter
size = { 195 225 }
using = portrait_base
block "portrait_texture"
{
portrait_texture = "[Character.GetPortrait('environment_torso', 'camera_torso', 'idle', PdxGetWidgetScreenSize(PdxGuiWidget.Self))]"
}
block "portrait_mask"
{
mask = "gfx/portraits/portrait_mask_torso.dds"
}
effectname = "NoHighlight"
highlight_icon = {
name = "prison_bars"
visible = "[Character.IsImprisoned]"
visible_at_creation = no
size = { 100% 100% }
effectname = "NoHighlight"
texture = "gfx/portraits/portrait_prison_torso.dds"
modify_texture = {
name = "mask"
texture = "gfx/portraits/portrait_mask_torso.dds"
spriteType = Corneredstretched
blend_mode = alphamultiply
}
}
block "portrait_button" {}
}
block "portrait_status_icons" {
portrait_status_icons = {
parentanchor = bottom|left
position = { 43 -6 }
scale = 0.85
background = {
using = Background_Area_Dark
margin = { 2 3 }
alpha = 0.8
}
}
}
block "coa" {
coa_realm_small_crown = {
visible = "[Character.HasLandedTitles]"
parentanchor = bottom|left
position = { -2 1 }
}
}
block "opinion_box"
{
portrait_opinion = {
parentanchor = bottom|hcenter
position = { 4 -2 }
}
}
#portrait unknown glow
button = {
name = "portrait_unknown_torso_glow"
parentanchor = center
position = { 0 -12 }
gfxtype = framedbuttongfx
effectname = "NoHighlight"
texture = "gfx/portraits/unknown_portraits/button_unknown.dds"
size = { 195 225 }
framesize = { 554 780 }
upframe = 1
overframe = 2
block "glow_visible" {
visible = "[Not(Character.IsValid)]"
}
block "glow_flip" {}
block "onclick" {}
}
}
## Standard full body portrait
type portrait_body = widget {
size = { 210 300 }
widget = {
size = { 100% 100% }
using = Portrait_Background_Glows
}
portrait_button = {
parentanchor = bottom|hcenter
size = { 240 330 }
using = portrait_base
block "portrait_texture" {
portrait_texture = "[Character.GetPortrait('environment_body', 'camera_body', 'idle', PdxGetWidgetScreenSize(PdxGuiWidget.Self))]"
}
block "mask" {
mask = "gfx/portraits/portrait_mask_body.dds"
}
effectname = "NoHighlight"
block "prison" {
highlight_icon = {
name = "prison_bars"
visible = "[Character.IsImprisoned]"
visible_at_creation = no
size = { 100% 100% }
effectname = "NoHighlight"
texture = "gfx/portraits/portrait_prison_body.dds"
modify_texture = {
name = "mask"
texture = "gfx/portraits/portrait_mask_body.dds"
spriteType = Corneredstretched
blend_mode = alphamultiply
}
}
}
block "portrait_button" {}
}
block "portrait_icons" {
portrait_status_icons = {
parentanchor = bottom|left
position = { 60 -5 }
scale = 0.85
background = {
using = Background_Area_Dark
margin = { 3 3 }
alpha = 0.8
}
}
}
block "coa" {
coa_realm_medium_crown = {
visible = "[Character.HasLandedTitles]"
parentanchor = bottom|left
position = { -2 4 }
}
}
block "opinion_box"
{
portrait_opinion = {
parentanchor = bottom|hcenter
block "position_portrait_opinion_body" {
position = { 0 -2 }
}
}
}
#portrait unknown glow
button = {
name = "portrait_unknown_body_glow"
parentanchor = center
position = { 0 -15 }
gfxtype = framedbuttongfx
effectname = "NoHighlight"
texture = "gfx/portraits/unknown_portraits/button_unknown_small.dds"
size = { 240 330 }
framesize = { 564 780 }
upframe = 1
overframe = 2
block "glow_visible" {
visible = "[Not(Character.IsValid)]"
}
block "glow_flip" {}
block "onclick" {}
}
}
## Standard full body portrait
type portrait_body_large = widget {
size = { 378 540 }
widget = {
size = { 100% 100% }
using = Portrait_Background_Glows
}
portrait_button = {
parentanchor = bottom|hcenter
size = { 432 594 }
using = portrait_base
block "portrait_texture" {
portrait_texture = "[Character.GetPortrait('environment_body', 'camera_body', 'idle', PdxGetWidgetScreenSize(PdxGuiWidget.Self))]"
}
block "mask" {
mask = "gfx/portraits/portrait_mask_body.dds"
}
effectname = "NoHighlight"
block "prison" {
highlight_icon = {
name = "prison_bars"
visible = "[Character.IsImprisoned]"
visible_at_creation = no
size = { 100% 100% }
effectname = "NoHighlight"
texture = "gfx/portraits/portrait_prison_body.dds"
modify_texture = {
name = "mask"
texture = "gfx/portraits/portrait_mask_body.dds"
spriteType = Corneredstretched
blend_mode = alphamultiply
}
}
}
block "portrait_button" {}
}
block "portrait_icons" {
portrait_status_icons = {
parentanchor = bottom|left
position = { 64 -4 }
scale = 0.85
background = {
using = Background_Area_Dark
margin = { 3 3 }
alpha = 0.8
}
}
}
block "coa" {
coa_realm_medium_crown = {
visible = "[Character.HasLandedTitles]"
parentanchor = bottom|left
position = { -2 4 }
}
}
block "opinion_box"
{
portrait_opinion = {
parentanchor = bottom|hcenter
block "position_portrait_opinion_body" {
position = { 0 -2 }
}
}
}
#portrait unknown glow
button = {
name = "portrait_unknown_body_glow"
parentanchor = center
position = { 0 -15 }
gfxtype = framedbuttongfx
effectname = "NoHighlight"
texture = "gfx/portraits/unknown_portraits/button_unknown_small.dds"
size = { 240 330 }
framesize = { 564 780 }
upframe = 1
overframe = 2
block "glow_visible" {
visible = "[Not(Character.IsValid)]"
}
block "glow_flip" {}
block "onclick" {}
}
}
####################################
######## SPECIAL PORTRAITS #########
####################################
type portrait_map = widget {
size = { 85 90 }
portrait_button = {
visible = "[Not(Character.IsImprisoned)]"
parentanchor = bottom|hcenter
size = { 80 100 }
using = portrait_base
portrait_texture = "[Character.GetPortrait('environment_head', 'camera_head', 'idle', PdxGetWidgetScreenSize(PdxGuiWidget.Self))]"
mask = "gfx/portraits/portrait_mask_head.dds"
effectname = "NoHighlight"
block "portrait_button" {}
}
}
type portrait_character_view_main = margin_widget {
size = { 300 300 }
margin = { 3 3 }
widget = {
size = { 100% 100% }
using = Portrait_Background_Glows
}
blockoverride "glow_local_player" {}
blockoverride "glow_selected" {}
blockoverride "grayscale" {}
portrait_button = {
size = { 380 421 }
position = { -30 10 }
parentanchor = bottom|hcenter
using = portrait_base
visible = "[Not( And( Character.GetGovernment.HasGovernmentFlag( 'government_is_herder' ), Character.HasLandedTitles) )]"
portrait_texture = "[Character.GetAnimatedPortrait(Illustration.GetEnvironment(Character.Self), 'camera_character_view_main', 'idle', PdxGetWidgetScreenSize(PdxGuiWidget.Self))]"
mask = "gfx/portraits/portrait_mask_character_view.dds"
effectname = "NoHighlight"
highlight_icon = {
name = "prison_bars"
visible = "[Character.IsImprisoned]"
visible_at_creation = no
size = { 100% 100% }
position = { 0 20 }
effectname = "NoHighlight"
texture = "gfx/portraits/portrait_prison_character_view.dds"
modify_texture = {
name = "mask"
texture = "gfx/portraits/portrait_mask_character_view.dds"
spriteType = Corneredstretched
blend_mode = alphamultiply
}
}
block "portrait_button" {}
}
portrait_button = {
size = { 1000 421 }
position = { -30 10 }
parentanchor = bottom|hcenter
using = portrait_base
tooltip_offset = { -310 0 }
portrait_texture = "[Character.GetAnimatedPortrait(Illustration.GetEnvironment(Character.Self), 'camera_character_view_main', 'idle', PdxGetWidgetScreenSize(PdxGuiWidget.Self))]"
mask = "gfx/portraits/portrait_mask_character_view.dds"
effectname = "NoHighlight"
visible = "[And(Character.Character.GetGovernment.HasGovernmentFlag( 'government_is_herder', Character.HasLandedTitles)]"
block "prison_bars" {
highlight_icon = {
name = "prison_bars"
visible = "[Character.IsImprisoned]"
visible_at_creation = no
size = { 100% 100% }
position = { 0 20 }
effectname = "NoHighlight"
texture = "gfx/portraits/portrait_prison_character_view.dds"
modify_texture = {
name = "mask"
texture = "gfx/portraits/portrait_mask_character_view.dds"
spriteType = Corneredstretched
blend_mode = alphamultiply
}
}
}
block "portrait_button" {}
}
portrait_status_icons = {
parentanchor = bottom|right
position = { -60 0 }
block "portrait_status_icons" {}
}
block "opinion_box"
{
portrait_opinion = {
position = { -20 0 }
parentanchor = bottom|hcenter
block "portrait_opinion" {}
}
}
}
type portrait_character_view_spouse = margin_widget {
size = { 320 300 }
margin = { 3 3 }
widget = {
size = { 100% 100% }
using = Portrait_Background_Glows
}
portrait_button = {
size = { 350 338 }
position = { 0 10 }
parentanchor = bottom|hcenter
using = portrait_base
portrait_texture = "[Character.GetAnimatedPortrait(Illustration.GetEnvironment( Character.Self ), 'camera_character_view_spouse', Select_CString( Character.IsDiarchOf( Character.GetLiege ), 'chancellor', 'idle' ), PdxGetWidgetScreenSize(PdxGuiWidget.Self))]"
mask = "gfx/portraits/portrait_mask_character_view.dds"
effectname = "NoHighlight"
highlight_icon = {
name = "prison_bars"
visible = "[Character.IsImprisoned]"
visible_at_creation = no
size = { 100% 100% }
position = { 0 20 }
effectname = "NoHighlight"
texture = "gfx/portraits/portrait_prison_character_view.dds"
modify_texture = {
name = "mask"
texture = "gfx/portraits/portrait_mask_character_view.dds"
spriteType = Corneredstretched
blend_mode = alphamultiply
}
}
block "portrait_button" {}
}
portrait_status_icons = {
parentanchor = bottom|right
position = { -53 0 }
}
coa_realm_small = {
visible = "[Character.HasLandedTitles]"
parentanchor = bottom|right
position = { 0 5 }
}
}
type portrait_event = widget {
widget = {
size = { 500 490 }
parentanchor = bottom
icon = {
name = "hovered"
parentanchor = bottom|hcenter
size = { 70% 95% }
color = { 0.9 0.8 0.6 0.6 }
using = Background_Portrait_Glow
block "highlight_visible" {
visible = no
}
state = {
name = _show
duration = 0.1
using = Animation_Curve_Default
alpha = 1
}
state = {
name = _hide
duration = 0.3
using = Animation_Curve_Default
alpha = 0
delay = 0.05
}
}
portrait_button = {
size = { 500 558 }
using = portrait_base
parentanchor = hcenter|bottom
portrait_texture = "[Character.GetAnimatedPortrait('environment_event_standard', 'environment_event_standard', 'idle', PdxGetWidgetScreenSize(PdxGuiWidget.Self))]"
background_texture = "gfx/portraits/portrait_transparent.dds"
texture = "gfx/portraits/portrait_transparent.dds"
mask = "gfx/portraits/portrait_mask_event.dds"
effectname = "NoHighlight"
block "portrait_button" {}
}
}
}
type portrait_event_duel = widget {
widget = {
size = { 930 490 }
parentanchor = bottom
icon = {
name = "hovered"
parentanchor = bottom|hcenter
size = { 40% 95% }
color = { 0.9 0.8 0.6 0.6 }
using = Background_Portrait_Glow
block "highlight_visible" {
visible = no
}
state = {
name = _show
duration = 0.1
using = Animation_Curve_Default
alpha = 1
}
state = {
name = _hide
duration = 0.3
using = Animation_Curve_Default
alpha = 0
delay = 0.05
}
}
portrait_button = {
size = { 930 490 }
using = portrait_base
parentanchor = hcenter|bottom
portrait_texture = "[Character.GetAnimatedPortrait('environment_event_standard', 'environment_event_standard', 'idle', PdxGetWidgetScreenSize(PdxGuiWidget.Self))]"
background_texture = "gfx/portraits/portrait_transparent.dds"
texture = "gfx/portraits/portrait_transparent.dds"
mask = "gfx/portraits/portrait_mask_event.dds"
effectname = "NoHighlight"
block "portrait_button" {}
}
}
}
type portrait_event_tournament = widget {
widget = {
size = { 500 490 }
parentanchor = bottom
icon = {
name = "hovered"
parentanchor = bottom|hcenter
size = { 70% 95% }
color = { 0.9 0.8 0.6 0.6 }
using = Background_Portrait_Glow
block "highlight_visible" {
visible = no
}
state = {
name = _show
duration = 0.1
using = Animation_Curve_Default
alpha = 1
}
state = {
name = _hide
duration = 0.3
using = Animation_Curve_Default
alpha = 0
delay = 0.05
}
}
portrait_button = {
size = { 1150 900 }
using = portrait_base
parentanchor = hcenter|bottom
portrait_texture = "[Character.GetAnimatedPortrait('environment_event_standard', 'environment_event_standard', 'idle', PdxGetWidgetScreenSize(PdxGuiWidget.Self))]"
background_texture = "gfx/portraits/portrait_transparent.dds"
texture = "gfx/portraits/portrait_transparent.dds"
mask = "gfx/portraits/portrait_mask_event.dds"
effectname = "NoHighlight"
block "portrait_button" {}
}
icon = {
visible = "[Character.IsDeadAndValid]"
parentanchor = bottom|right
position = { -80 -30 }
size = { 30 30 }
texture = "[Character.GetDeathReasonIcon]"
tooltip = "CHARACTER_DEAD_TOOLTIP"
}
}
}
type portrait_event_small = widget {
size = { 125 160 }
icon = {
name = "hovered"
parentanchor = bottom|hcenter
size = { 100% 100% }
color = { 0.9 0.8 0.6 0.6 }
using = Background_Portrait_Glow
block "highlight_visible" {
visible = no
}
state = {
name = _show
duration = 0.1
using = Animation_Curve_Default
alpha = 1
}
state = {
name = _hide
duration = 0.3
using = Animation_Curve_Default
alpha = 0
delay = 0.05
}
}
portrait_shoulders = {
size = { 100% 100% }
blockoverride "portrait_size"
{
size = { 100% 100% }
}
blockoverride "portrait_glows" {}
}
}
type portrait_event_tiny = widget {
size = { 85 90 }
icon = {
name = "hovered"
parentanchor = bottom|hcenter
size = { 100% 100% }
color = { 0.9 0.8 0.6 0.6 }
using = Background_Portrait_Glow
block "highlight_visible" {
visible = no
}
state = {
name = _show
duration = 0.1
using = Animation_Curve_Default
alpha = 1
}
state = {
name = _hide
duration = 0.3
using = Animation_Curve_Default
alpha = 0
delay = 0.05
}
}
portrait_shoulders = {
size = { 100% 100% }
blockoverride "portrait_size"
{
size = { 100% 100% }
}
blockoverride "portrait_glows" {}
blockoverride "coa" {}
}
}
type portrait_scheme_hud = widget {
size = { 90 112 }
portrait_button = {
alwaystransparent = yes
parentanchor = center
position = { 0 -9 }
size = { 90 112 }
using = portrait_base
portrait_texture = "[Character.GetPortrait('environment_shoulders', 'camera_scheme_widget_microscopic', 'idle', PdxGetWidgetScreenSize(PdxGuiWidget.Self))]"
mask = "gfx/portraits/scheme_hud_portrait_mask.dds"
effectname = "NoHighlight"
tooltip_visible = no
highlight_icon = {
name = "prison_bars"
visible = "[Character.IsImprisoned]"
visible_at_creation = no
size = { 100% 100% }
effectname = "NoHighlight"
texture = "gfx/portraits/portrait_prison_shoulders.dds"
modify_texture = {
name = "mask"
texture = "gfx/portraits/portrait_mask_shoulders.dds"
spriteType = Corneredstretched
blend_mode = alphamultiply
}
}
block "portrait_button" {}
}
}
type portrait_council = widget {
size = { 260 285 }
portrait_button = {
block "portrait_size"
{
size = { 260 285 }
}
parentanchor = bottom|hcenter
using = portrait_base
portrait_texture = "[Character.GetAnimatedPortrait('environment_council', 'camera_council', CouncilPositionType.GetPortraitAnimation, PdxGetWidgetScreenSize(PdxGuiWidget.Self))]"
mask = "gfx/portraits/portrait_mask_council.dds"
effectname = "NoHighlight"
block "mask" {
mask = "gfx/portraits/portrait_mask_council.dds"
}
}
#portrait unknown glow
button = {
name = "portrait_unknown_council_glow"
visible = "[Not(Character.IsValid)]"
parentanchor = center
position = { 2 -37 }
gfxtype = framedbuttongfx
effectname = "NoHighlight"
texture = "gfx/portraits/unknown_portraits/button_unknown_small.dds"
size = { 239 312 }
framesize = { 564 780 }
upframe = 1
overframe = 2
block "glow_visible" {
visible = "[Not(Character.IsValid)]"
}
block "onclick" {}
}
}
type portrait_regency = widget {
size = { 260 285 }
widget = {
size = { 100% 100% }
using = Portrait_Background_Glows
}
portrait_button = {
position = { 0 4 }
block "portrait_size"
{
size = { 260 320 }
}
parentanchor = bottom|hcenter
using = portrait_base
portrait_texture = "[Character.GetAnimatedPortrait(Illustration.GetEnvironment(Character.Self), 'camera_body', 'idle', PdxGetWidgetScreenSize(PdxGuiWidget.Self))]"
mask = "gfx/portraits/portrait_mask_torso.dds"
effectname = "NoHighlight"
block "mask" {
mask = "gfx/portraits/portrait_mask_council.dds"
}
}
portrait_status_icons = {
parentanchor = bottom|right
position = { -54 -10 }
}
coa_realm_small_crown = {
visible = "[Character.HasLandedTitles]"
parentanchor = bottom|right
position = { -4 -4 }
}
portrait_opinion = {
parentanchor = bottom|hcenter
position = { 0 -10 }
}
}
type portrait_war_overview = margin_widget {
size = { 240 300 }
allow_outside = yes
margin = { 3 3 }
widget = {
using = Portrait_Background_Glows
size = { 320 380 }
alwaystransparent = yes
parentanchor = bottom|hcenter
}
portrait_button = {
size = { 420 632 }
parentanchor = bottom|hcenter
using = portrait_base
portrait_texture = "[Character.GetAnimatedPortrait('environment_war_overview', 'camera_war_overview', Select_CString(WarParticipantItem.IsAttacker, 'war_attacker', 'war_defender'), PdxGetWidgetScreenSize(PdxGuiWidget.Self))]"
mask = "gfx/portraits/portrait_mask_torso.dds"
effectname = "NoHighlight"
block "portrait_button" {}
block "portrait_transformation"
{
portrait_scale = { 1 1 }
}
highlight_icon = {
name = "prison_bars"
visible = "[Character.IsImprisoned]"
visible_at_creation = no
size = { 100% 80% }
position = { 30 160 }
effectname = "NoHighlight"
texture = "gfx/portraits/portrait_prison_body.dds"
modify_texture = {
name = "mask"
texture = "gfx/portraits/portrait_mask_character_view.dds"
spriteType = Corneredstretched
blend_mode = alphamultiply
}
}
}
}
### Bottom left HUD portrait
type portrait_hud = portrait_button {
name = "tutorial_highlight_bottom_left_portrait_button"
visible = "[Not(GetVariableSystem.Exists( 'lifestyle_open' ))]"
size = { 350 350 }
gfxtype = portraitbuttongfx
shaderfile = "gfx/FX/jomini/gui_portrait.shader"
effectname = "NoHighlight"
state = {
name = _mouse_enter
on_start = "[Character.OnMouseEnter]"
scale = 1.35
using = Animation_Curve_Default
duration = 0.05
}
state = {
name = _mouse_leave
on_start = "[Character.OnMouseLeave]"
using = Animation_Curve_Default
duration = 0.05
scale = 1.3
}
state = {
name = _mouse_release
start_sound = {
soundeffect = "event:/SFX/UI/Character/sfx_ui_character_portrait_select"
}
}
onclick = "[DefaultOnCharacterClick(Character.GetID)]"
onrightclick = "[DefaultOnCharacterRightClick(Character.GetID)]"
button_ignore = none
clicksound = "event:/SFX/UI/Character/sfx_ui_character_portrait_select"
oversound = "event:/SFX/UI/Character/sfx_ui_character_portrait_pointer_over"
portrait_texture = "[Character.GetAnimatedPortrait('environment_hud', 'camera_hud', 'idle', PdxGetWidgetScreenSize(PdxGuiWidget.Self))]"
background_texture = "gfx/portraits/portrait_transparent.dds"
texture = "gfx/portraits/portrait_transparent.dds"
mask = "gfx/portraits/portrait_mask_blank.dds"
highlight_icon = {
name = "prison_bars"
visible = "[Character.IsImprisoned]"
visible_at_creation = no
size = { 100% 100% }
effectname = "NoHighlight"
texture = "gfx/portraits/portrait_prison_shoulders.dds"
position = { 25 0 }
modify_texture = {
name = "mask"
texture = "gfx/portraits/portrait_mask_head.dds"
spriteType = Corneredstretched
blend_mode = alphamultiply
rotate_uv = 180
}
}
using = tooltip_es
# tooltip_visible = "[Not(IsInteractionMenuOpenForCharacter(Character.GetID))]"
tooltip_visible = no
tooltipwidget = {
cooltip_type = {
blockoverride "interaction_info"
{
text = "CHARACTER_TOOLTIP_INSTRUCTION"
}
}
}
tooltip_offset = { -10 0 }
tooltip_verticalbehavior = slide
tooltip_horizontalbehavior = mirror
}
### Lifestyles portrait
type portrait_lifestyles = portrait_button {
size = { 650 1000 }
effectname = "NoHighlight"
tooltip_visible = no
using = portrait_base
portrait_texture = "[Character.GetAnimatedPortrait('environment_body', 'camera_lifestyles', 'idle', PdxGetWidgetScreenSize(PdxGuiWidget.Self))]"
mask = "gfx/portraits/portrait_mask_blank.dds"
state = {
name = _show
using = Animation_Curve_Default
duration = 0.15
alpha = 1
}
state = {
name = _hide
using = Animation_Curve_Default
duration = 0.15
alpha = 0
}
background = {
name = "hovered"
visible = "[Character.IsHovered]"
using = Background_Portrait_Glow
color = { 0.9 0.8 0.6 0.6 }
}
}
### Intent selection portrait
type portrait_intent_selection = portrait_button {
size = { 450 500 }
effectname = "NoHighlight"
tooltip_visible = no
using = portrait_base
onclick = "[DefaultOnCharacterClick(Character.GetID)]"
portrait_texture = "[Character.GetAnimatedPortrait('environment_body', 'camera_lifestyles', ActivityIntent.GetAnimation( Character.Self ), PdxGetWidgetScreenSize(PdxGuiWidget.Self))]"
mask = "gfx/portraits/portrait_mask_blank.dds"
state = {
name = _show
using = Animation_Curve_Default
duration = 0.15
alpha = 1
}
state = {
name = _hide
using = Animation_Curve_Default
duration = 0.15
alpha = 0
}
background = {
name = "hovered"
visible = "[Character.IsHovered]"
using = Background_Portrait_Glow
color = { 0.9 0.8 0.6 0.6 }
}
}
### Bottom left HUD portrait for the activity planner
type portrait_activity_planner = portrait_button {
size = { 250 500 }
gfxtype = portraitbuttongfx
shaderfile = "gfx/FX/jomini/gui_portrait.shader"
effectname = "NoHighlight"
button_ignore = both
portrait_texture = "[Character.GetAnimatedPortrait('environment_hud', 'camera_event_left', 'idle', PdxGetWidgetScreenSize(PdxGuiWidget.Self))]"
background_texture = "gfx/portraits/portrait_transparent.dds"
texture = "gfx/portraits/portrait_transparent.dds"
mask = "gfx/portraits/portrait_mask_blank.dds"
}
### Bottom left HUD portrait for the travel planner (might merge with the activity planner)
type portrait_travel_planner = portrait_button {
size = { 250 500 }
gfxtype = portraitbuttongfx
shaderfile = "gfx/FX/jomini/gui_portrait.shader"
effectname = "NoHighlight"
button_ignore = both
portrait_texture = "[Character.GetAnimatedPortrait('environment_hud', 'camera_event_left', 'idle', PdxGetWidgetScreenSize(PdxGuiWidget.Self))]"
background_texture = "gfx/portraits/portrait_transparent.dds"
texture = "gfx/portraits/portrait_transparent.dds"
mask = "gfx/portraits/portrait_mask_blank.dds"
}
type portrait_activity_locale_window = widget {
size = { 210 300 }
widget = {
size = { 100% 100% }
using = Portrait_Background_Glows
}
portrait_button = {
parentanchor = bottom|hcenter
size = { 240 330 }
using = portrait_base
block "portrait_texture" {
portrait_texture = "[Character.GetAnimatedPortrait('environment_body', 'camera_body', 'idle', PdxGetWidgetScreenSize(PdxGuiWidget.Self))]"
}
block "mask" {
mask = "gfx/portraits/portrait_mask_body.dds"
}
effectname = "NoHighlight"
block "prison" {
highlight_icon = {
name = "prison_bars"
visible = "[Character.IsImprisoned]"
visible_at_creation = no
size = { 100% 100% }
effectname = "NoHighlight"
texture = "gfx/portraits/portrait_prison_body.dds"
modify_texture = {
name = "mask"
texture = "gfx/portraits/portrait_mask_body.dds"
spriteType = Corneredstretched
blend_mode = alphamultiply
}
}
}
block "portrait_button" {}
}
block "coa" {
coa_realm_medium_crown = {
visible = "[Character.HasLandedTitles]"
parentanchor = bottom|left
position = { -2 4 }
}
}
#portrait unknown glow
button = {
name = "portrait_unknown_body_glow"
parentanchor = center
position = { 0 -15 }
gfxtype = framedbuttongfx
effectname = "NoHighlight"
texture = "gfx/portraits/unknown_portraits/button_unknown_small.dds"
size = { 240 330 }
framesize = { 564 780 }
upframe = 1
overframe = 2
block "glow_visible" {
visible = "[Not(Character.IsValid)]"
}
block "glow_flip" {}
block "onclick" {}
}
}
####################################
########### ACCESSORIES ############
####################################
## Opinion box for portraits
type portrait_opinion = flowcontainer {
name = "tutorial_highlight_portrait_opinion"
visible = "[And(Character.IsValid, And(Character.IsAlive, Not(Character.IsLocalPlayer)))]"
ignoreinvisible = yes
background = {
name = "portrait_opinion_bg"
texture = "gfx/interface/component_tiles/solid_black_label.dds"
spritetype = Corneredtiled
spriteborder = { 20 20 }
margin = { 3 1 }
texture_density = 2
}
icon = {
block "dread_logic" {
visible = "[Character.ShouldShowDreadEffectIcon]"
frame = "[Character.GetPlayerDreadEffectIconFrame]"
tooltip = "[Character.GetPlayerDreadEffectTooltip]"
}
name = "dread"
size = { 20 20 }
texture = "gfx/interface/icons/portraits/dread_values.dds"
framesize = { 40 40 }
}
icon = {
name = "historical_info_widget"
visible = "[GreaterThan_CFixedPoint( Character.MakeScope.Var('show_historical_gui').GetValue, '(CFixedPoint)0' )]"
size = { 20 20 }
texture = "gfx/interface/icons/historical_character.dds"
tooltip = "HISTORICAL_CHARACTER_TOOLTIP"
}
text_single = {
name = "tutorial_highlight_character_view_opinion"
visible = "[Character.IsValid]"
max_width = 45
align = nobaseline
margin = { 3 0 }
tooltipwidget = character_opinion_tooltip
using = tooltip_es
default_format = "#true_white"
block "opinion_text" {
text = "[Character.GetOpinionOf( GetPlayer )|=]"
fonttintcolor = "[Character.GetOpinionOfTint( GetPlayer )]"
}
}
}
type portrait_opinion_small = flowcontainer {
#name = "tutorial_highlight_portrait_opinion"
visible = "[And(Character.IsValid, And(Character.IsAlive, Not(Character.IsLocalPlayer)))]"
ignoreinvisible = yes
margin_right = 2
background = {
name = "portrait_opinion_bg"
texture = "gfx/interface/component_tiles/solid_black_label.dds"
spritetype = Corneredtiled
spriteborder = { 20 20 }
margin = { 2 2 }
texture_density = 2
}
icon = {
name = "dread"
visible = "[Character.ShouldShowDreadEffectIcon]"
size = { 16 16 }
texture = "gfx/interface/icons/portraits/dread_values.dds"
framesize = { 40 40 }
frame = "[Character.GetPlayerDreadEffectIconFrame]"
tooltip = "[Character.GetPlayerDreadEffectTooltip]"
}
text_single = {
visible = "[Character.IsValid]"
max_width = 45
align = nobaseline
fontsize = 13
margin = { 3 0 }
tooltipwidget = character_opinion_tooltip
using = tooltip_es
default_format = "#true_white"
block "opinion_text" {
text = "[Character.GetOpinionOf( GetPlayer )|=]"
fonttintcolor = "[Character.GetOpinionOfTint( GetPlayer )]"
}
}
}
type has_inspiration_status_icon = icon
{
name = "has_inspiration"
visible = "[Character.HasInspiration]"
texture = "gfx/interface/icons/portraits/inspiration.dds"
tooltip = "CHARACTER_HAS_INSPIRATION_TOOLTIP"
}
type has_completed_inspiration_status_icon = icon
{
name = "has_completed_inspiration"
visible = "[And( Character.HasCompletedAnInspiration, Not( Character.HasInspiration ) )]" # Has an inspiration takes priority
texture = "gfx/interface/icons/portraits/inspiration_complete.dds"
tooltip = "CHARACTER_HAS_COMPLETED_AN_INSPIRATION_TOOLTIP"
}
## Status icons, shown in the bottom right on portraits
type portrait_status_icons_small = widget {
size = { 16 60 }
scissor = yes
flowcontainer = {
visible = "[Character.IsValid]"
ignoreinvisible = yes
direction = vertical
parentanchor = bottom
spacing = 1
background = {
using = Background_Area_Dark
margin = { 2 2 }
}
# sorted by priority, highest prio at the bottom
block "status_icons" {
block "scripted_relation_status_icons"
{
using = Portrait_Relation_Icons_Small
}
icon = {
name = "relation_icon"
visible = "[LessThan_int32(Character.GetPlayerDynastyRelationFrame, '(int32)9')]"
size = { 14 14 }
texture = "gfx/interface/icons/portraits/relation_small.dds"
framesize = { 28 28 }
frame = "[Character.GetPlayerDynastyRelationFrame]"
tooltip = "[Character.GetPlayerDynastyRelationTooltip]"
}
icon = {
name = "hostage_icon"
visible = "[Character.IsHostage]"
size = { 14 14 }
texture = "gfx/interface/icons/portraits/hostage_small.dds"
tooltip = "[Character.GetHostageTooltip]"
}
icon = {
name = "traveling_icon"
visible = "[And(Character.IsTraveling, Character.GetTravelPlan.IsInTransit)]"
size = { 14 14 }
texture = "gfx/interface/icons/portraits/travel_small.dds"
tooltip = "CHARACTER_TRAVELING_TOOLTIP"
}
icon = {
name = "incapable"
visible = "[Character.IsIncapable]"
size = { 14 14 }
texture = "gfx/interface/icons/portraits/incapable_small.dds"
tooltip = "CHARACTER_INCAPABLE_TOOLTIP"
}
block "inspiration_status_icons"
{
has_inspiration_status_icon = {
size = { 14 14 }
texture = "gfx/interface/icons/portraits/inspiration_small.dds"
}
has_completed_inspiration_status_icon = {
size = { 14 14 }
texture = "gfx/interface/icons/portraits/inspiration_complete_small.dds"
}
}
icon = {
name = "can_be_punished"
visible = "[Character.CanBePunished]"
size = { 14 14 }
texture = "gfx/interface/icons/portraits/punishment_small.dds"
tooltip = "[Character.PunishmentTooltip]"
}
icon = {
name = "hook"
visible = "[Character.PlayerHasHooksOrHookableSecrets]"
size = { 14 14 }
texture = "gfx/interface/icons/portraits/hook_secret_small.dds"
framesize = { 28 28 }
frame = "[Character.GetHookOrHookableSecretsFrame]"
tooltip = "[Character.HookTooltip]"
}
icon = {
name = "powerful_vassal"
visible = "[Character.IsMyPowerfulVassal]"
size = { 14 14 }
texture = "gfx/interface/icons/portraits/powerful_vassal_small.dds"
framesize = { 28 28 }
frame = "[Character.GetPowerfulVassalFrame]"
tooltip = "[Character.GetPowerfulVassalTooltip]"
}
icon = {
name = "tributary"
datacontext = "[Character.GetTributaryContract]"
visible = "[Character.IsTributaryOf(GetPlayer)]"
size = { 14 14 }
texture = "[Character.GetTributaryContract.GetPortraitIconSmall]"
tooltip = "FRAME_RELATION_TRIBUTARY"
}
icon = {
name = "obedient_to_me"
visible = "[And(Character.UsesObedience,And(Character.GetOverlord.IsLocalPlayer, And(Character.IsObedientTo(GetPlayer), Not(Character.IsPlayer))))]"
size = { 14 14 }
texture = "gfx/interface/icons/portraits/obedient_small.dds"
tooltipwidget = widget_obedience_tooltip
}
icon = {
name = "obedient_to_someone_else"
visible = "[And(Not(Character.IsPlayer),And(Character.UsesObedience,And(Not(Character.GetOverlord.IsLocalPlayer),Character.IsObedientTo(Character.GetOverlord))))]"
size = { 14 14 }
enabled = no
texture = "gfx/interface/icons/portraits/obedient_small.dds"
tooltipwidget = widget_obedience_tooltip
}
icon = {
name = "disobedient_to_me"
visible = "[And(Character.UsesObedience,And(Character.GetOverlord.IsLocalPlayer, And(Not(Character.IsObedientTo(GetPlayer)), Not(Character.IsPlayer))))]"
size = { 14 14 }
texture = "gfx/interface/icons/portraits/disobedient_small.dds"
tooltipwidget = widget_obedience_tooltip
}
icon = {
name = "disobedient_to_someone_else"
visible = "[And( Not(Character.IsPlayer), And(Character.UsesObedience,And(Not(Character.GetOverlord.IsLocalPlayer),Not(Character.IsObedientTo(Character.GetOverlord)))))]"
size = { 14 14 }
enabled = no
texture = "gfx/interface/icons/portraits/disobedient_small.dds"
tooltipwidget = widget_obedience_tooltip
}
flowcontainer = {
visible = "[And(HasDlcFeature( 'all_under_heaven' ), Character.ShouldShowMovementPower)]"
ignoreinvisible = yes
direction = vertical
datacontext = "[Character]"
datacontext = "[GetSituation('dynastic_cycle')]"
icon = {
name = "advancement_movement"
visible = "[ObjectsEqual( Situation.GetParticipantGroupByCharacter(Character.Self), Situation.GetTopParticipantGroupByKey('advancement_movement').Self)]"
size = { 14 14 }
texture = "gfx/interface/icons/portraits/dynastic_cycle_group_advance_small.dds"
tooltip = "FRAME_ADVANCEMENT_MOVEMENT"
}
icon = {
name = "expansion_movement"
visible = "[ObjectsEqual( Situation.GetParticipantGroupByCharacter(Character.Self), Situation.GetTopParticipantGroupByKey('expansion_movement').Self)]"
size = { 14 14 }
texture = "gfx/interface/icons/portraits/dynastic_cycle_group_expand_small.dds"
tooltip = "FRAME_EXPANSION_MOVEMENT"
}
icon = {
name = "conservative_movement"
visible = "[ObjectsEqual( Situation.GetParticipantGroupByCharacter(Character.Self), Situation.GetTopParticipantGroupByKey('conservative_movement').Self)]"
size = { 14 14 }
texture = "gfx/interface/icons/portraits/dynastic_cycle_group_anti_small.dds"
tooltip = "FRAME_CONSERVATIVE_MOVEMENT"
}
icon = {
name = "pro_hegemon_movement"
visible = "[ObjectsEqual( Situation.GetParticipantGroupByCharacter(Character.Self), Situation.GetTopParticipantGroupByKey('pro_hegemon_movement').Self)]"
size = { 14 14 }
texture = "gfx/interface/icons/portraits/dynastic_cycle_group_pro_small.dds"
tooltip = "FRAME_PRO_HEGEMON_MOVEMENT"
}
icon = {
name = "undecided_movement"
visible = "[ObjectsEqual( Situation.GetParticipantGroupByCharacter(Character.Self), Situation.GetTopParticipantGroupByKey('undecided_movement').Self)]"
size = { 14 14 }
texture = "gfx/interface/icons/portraits/dynastic_cycle_group_unaligned_small.dds"
tooltip = "FRAME_UNDECIDED_MOVEMENT"
}
}
icon = {
name = "unpredictable_small"
visible = "[Character.IsOtherPlayer]"
size = { 14 14 }
texture = "gfx/interface/icons/portraits/unpredictable_small.dds"
tooltip = "PLAYER_OBEDIENCE_UNPREDICTABLE"
}
icon = {
name = "powerful_family"
visible = "[And( And( Character.IsHouseHead, Character.GetHouse.IsPowerful ), Character.IsVassalOf( GetPlayer ) )]"
size = { 14 14 }
texture = "gfx/interface/icons/portraits/powerful_family_head_small.dds"
framesize = { 28 28 }
tooltip = "FRAME_RELATION_POWERFUL_FAMILY"
}
icon = {
name = "dominant_family"
visible = "[And( And( Character.IsHouseHead, Character.GetHouse.IsDominant ), Character.IsVassalOf( GetPlayer ) )]"
size = { 14 14 }
texture = "gfx/interface/icons/portraits/powerful_family_head_small.dds"
framesize = { 28 28 }
frame = 2
tooltip = "FRAME_RELATION_DOMINANT_FAMILY"
}
icon = {
name = "head_icon"
visible = "[LessThan_int32(Character.GetDynastyHeadRelationFrame('(bool)yes'), '(int32)9')]"
size = { 14 14 }
texture = "gfx/interface/icons/portraits/relation_small.dds"
framesize = { 28 28 }
frame = "[Character.GetDynastyHeadRelationFrame('(bool)yes')]"
tooltip = "[Character.GetDynastyHeadRelationTooltip]"
}
icon = {
name = "playable_icon"
visible = "[ObjectsEqual( Character.Self, GetPlayer.GetPlayerHeir )]"
size = { 14 14 }
texture = "gfx/interface/icons/portraits/heir_small.dds"
tooltip = "[Character.GetPlayableFrameTooltip]"
}
}
block "dead_icon"
{
icon = {
name = "is_dead"
visible = "[Character.IsDeadAndValid]"
size = { 14 14 }
texture = "[Character.GetDeathReasonIcon]"
tooltip = "CHARACTER_DEAD_TOOLTIP"
}
}
}
}
type portrait_status_icons = flowcontainer {
ignoreinvisible = yes
visible = "[Character.IsValid]"
block "direction"
{
direction = vertical
}
# sorted by priority, highest prio at the bottom
block "status_icons" {
block "scripted_relation_status_icons"
{
using = Portrait_Relation_Icons
}
icon = {
name = "relation_icon"
visible = "[LessThan_int32(Character.GetPlayerDynastyRelationFrame, '(int32)9')]"
size = { 20 20 }
texture = "gfx/interface/icons/portraits/relation.dds"
framesize = { 40 40 }
frame = "[Character.GetPlayerDynastyRelationFrame]"
tooltip = "[Character.GetPlayerDynastyRelationTooltip]"
}
icon = {
name = "hostage_icon"
visible = "[Character.IsHostage]"
size = { 20 20 }
texture = "gfx/interface/icons/portraits/hostage.dds"
tooltip = "[Character.GetHostageTooltip]"
}
icon = {
name = "traveling_icon"
visible = "[And(Character.IsTraveling, Character.GetTravelPlan.IsInTransit)]"
size = { 20 20 }
texture = "gfx/interface/icons/portraits/travel.dds"
tooltip = "CHARACTER_TRAVELING_TOOLTIP"
}
icon = {
name = "not_at_home_icon"
visible = "[And( Not( Character.IsTraveling ), Character.IsAwayFromHome )]"
size = { 20 20 }
texture = "gfx/interface/icons/portraits/travel.dds"
tooltip = "CHARACTER_AWAY_TOOLTIP"
}
icon = {
name = "incapable"
visible = "[Character.IsIncapable]"
size = { 20 20 }
texture = "gfx/interface/icons/portraits/incapable.dds"
tooltip = "CHARACTER_INCAPABLE_TOOLTIP"
}
block "inspiration_status_icons"
{
has_inspiration_status_icon = {
size = { 20 20 }
}
has_completed_inspiration_status_icon = {
size = { 20 20 }
}
}
icon = {
name = "can_be_punished"
visible = "[Character.CanBePunished]"
size = { 20 20 }
texture = "gfx/interface/icons/portraits/punishment.dds"
tooltip = "[Character.PunishmentTooltip]"
}
icon = {
name = "hook"
visible = "[Character.PlayerHasHooksOrHookableSecrets]"
size = { 20 20 }
texture = "gfx/interface/icons/portraits/hook_secret.dds"
framesize = { 40 40 }
frame = "[Character.GetHookOrHookableSecretsFrame]"
tooltip = "[Character.HookTooltip]"
}
icon = {
name = "liege_icon"
visible = "[And( ObjectsEqual( GetPlayer.GetLiege, Character.Self ) , Not( GetPlayer.IsIndependentRuler ) ) ]"
size = { 20 20 }
texture = "gfx/interface/icons/portraits/liege.dds"
tooltip = "FRAME_RELATION_MY_LIEGE"
}
icon = {
name = "powerful_vassal"
visible = "[Character.IsMyPowerfulVassal]"
size = { 20 20 }
texture = "gfx/interface/icons/portraits/powerful_vassal.dds"
framesize = { 40 40 }
frame = "[Character.GetPowerfulVassalFrame]"
tooltip = "[Character.GetPowerfulVassalTooltip]"
}
icon = {
name = "tributary"
datacontext = "[Character.GetTributaryContract]"
visible = "[Character.IsTributaryOf(GetPlayer)]"
size = { 20 20 }
texture = "[Character.GetTributaryContract.GetPortraitIcon]"
tooltip = "FRAME_RELATION_TRIBUTARY"
}
icon = {
name = "obedient_to_me"
visible = "[And(Character.UsesObedience,And(Character.GetOverlord.IsLocalPlayer, And(Character.IsObedientTo(GetPlayer), Not(Character.IsPlayer))))]"
size = { 20 20 }
texture = "gfx/interface/icons/portraits/obedient.dds"
tooltipwidget = widget_obedience_tooltip
}
icon = {
name = "obedient_to_someone_else"
visible = "[And(Not(Character.IsPlayer),And(Character.UsesObedience,And(Not(Character.GetOverlord.IsLocalPlayer),Character.IsObedientTo(Character.GetOverlord))))]"
size = { 20 20 }
enabled = no
texture = "gfx/interface/icons/portraits/obedient.dds"
tooltipwidget = widget_obedience_tooltip
}
icon = {
name = "disobedient_to_me"
visible = "[And(Character.UsesObedience,And(Character.GetOverlord.IsLocalPlayer, And(Not(Character.IsObedientTo(GetPlayer)), Not(Character.IsPlayer))))]"
size = { 20 20 }
texture = "gfx/interface/icons/portraits/disobedient.dds"
tooltipwidget = widget_obedience_tooltip
}
icon = {
name = "disobedient_to_someone_else"
visible = "[And( Not(Character.IsPlayer), And(Character.UsesObedience,And(Not(Character.GetOverlord.IsLocalPlayer),Not(Character.IsObedientTo(Character.GetOverlord)))))]"
size = { 20 20 }
enabled = no
texture = "gfx/interface/icons/portraits/disobedient.dds"
tooltipwidget = widget_obedience_tooltip
}
container_dynastic_cycle_group_icons = {}
icon = {
name = "unpredictable"
visible = "[Character.IsOtherPlayer]"
size = { 20 20 }
texture = "gfx/interface/icons/portraits/unpredictable.dds"
tooltip = "PLAYER_OBEDIENCE_UNPREDICTABLE"
}
icon = {
name = "powerful_family"
visible = "[And( And( Character.IsHouseHead, Character.GetHouse.IsPowerful ), Character.IsVassalOf( GetPlayer ) )]"
size = { 20 20 }
texture = "gfx/interface/icons/portraits/powerful_family_head.dds"
framesize = { 40 40 }
tooltip = "FRAME_RELATION_POWERFUL_FAMILY"
}
icon = {
name = "dominant_family"
visible = "[And( And( Character.IsHouseHead, Character.GetHouse.IsDominant ), Character.IsVassalOf( GetPlayer ) )]"
size = { 20 20 }
texture = "gfx/interface/icons/portraits/powerful_family_head.dds"
framesize = { 40 40 }
frame = 2
tooltip = "FRAME_RELATION_DOMINANT_FAMILY"
}
icon = {
name = "head_icon"
visible = "[LessThan_int32(Character.GetDynastyHeadRelationFrame('(bool)yes'), '(int32)9')]"
size = { 20 20 }
texture = "gfx/interface/icons/portraits/relation.dds"
framesize = { 40 40 }
frame = "[Character.GetDynastyHeadRelationFrame('(bool)yes')]"
tooltip = "[Character.GetDynastyHeadRelationTooltip]"
}
icon = {
name = "favorite_child"
visible = "[Character.IsFavoriteChildOf( GetPlayer )]"
size = { 20 20 }
texture = "gfx/interface/icons/character_interactions/designate_favorite.dds"
tooltip = "SUCCESSION_IS_FAVORITE_CHILD_TT"
}
icon = {
name = "playable_icon"
visible = "[ObjectsEqual( Character.Self, GetPlayer.GetPlayerHeir )]"
size = { 20 20 }
texture = "gfx/interface/icons/portraits/heir.dds"
tooltip = "[Character.GetPlayableFrameTooltip]"
}
}
block "dead_icon"
{
icon = {
name = "is_dead"
visible = "[Character.IsDeadAndValid]"
size = { 20 20 }
texture = "[Character.GetDeathReasonIcon]"
tooltip = "CHARACTER_DEAD_TOOLTIP"
}
}
}
}
######################################################
##################### TEMPLATES ######################
######################################################
## BASE TEMPLATE
template portrait_base
{
pop_out = no
block "grayscale" {
grayscale = "[Not(Character.IsAlive)]"
}
gfxtype = portraitbuttongfx
shaderfile = "gfx/FX/jomini/gui_portrait.shader"
intersectionmask = no
background_texture = "gfx/portraits/portrait_transparent.dds"
texture = "gfx/portraits/portrait_transparent.dds"
clicksound = "event:/SFX/UI/Character/sfx_ui_character_portrait_select"
oversound = "event:/SFX/UI/Character/sfx_ui_character_portrait_pointer_over"
block "portrait_button_template_onmouseenter"
{
state = {
name = _mouse_enter
trigger_when = "[Character.IsValid]"
on_finish = "[Character.OnMouseEnter]"
}
}
block "portrait_button_template_onmouseleave"
{
state = {
name = _mouse_leave
on_start = "[Character.OnMouseLeave]"
}
}
block "portrait_button_template_onclick"
{
onclick = "[DefaultOnCharacterClick(Character.GetID)]"
}
block "portrait_button_template_onrightclick"
{
onrightclick = "[DefaultOnCharacterRightClick(Character.GetID)]"
button_ignore = none
}
filter_mouse = right
block "portrait_button_template_tooltip"
{
tooltip_visible = "[Not(IsInteractionMenuOpenForCharacter(Character.GetID))]"
tooltipwidget = {
cooltip_type = {
blockoverride "interaction_info" {
text = "CHARACTER_TOOLTIP_INSTRUCTION"
}
}
}
}
using = tooltip_es
tooltip_offset = { 0 0 }
tooltip_verticalbehavior = slide
tooltip_horizontalbehavior = mirror
block "portrait_transformation"
{
portrait_scale = { 1.0 1.0 }
portrait_offset = { 0.0 0.0 }
}
}
template Portrait_Background_Glows
{
block "portrait_glow"
{
# Is Local Player
block "glow_local_player"
{
background = {
visible = "[And(Character.IsLocalPlayer, Not(Character.IsHovered))]"
using = Background_Portrait_Glow
color = { 0.5 0.6 0.7 0.6 }
}
}
block "glow_other_player"
{
# Is Other Player
background = {
visible = "[And(Character.IsOtherPlayer, Not(Character.IsHovered))]"
using = Background_Portrait_Glow
color = { 0.8 0.4 0.55 0.6 }
}
}
block "glow_selected"
{
background = {
name = "selected"
using = Background_Portrait_Glow
color = { 0.8 0.7 0.5 0.6 }
block "glow_selected_visible"
{
visible = "[Character.IsSelected]"
}
}
}
block "glow_hovered"
{
background = {
name = "hovered"
visible = "[Character.IsHovered]"
using = Background_Portrait_Glow
color = { 0.9 0.8 0.6 0.6 }
}
}
}
}
template Background_Portrait_Glow
{
texture = "gfx/portraits/portrait_glow.dds"
}
template Portrait_Relation_Icon_Normal_Size
{
size = { 20 20 }
framesize = { 40 40 }
visible = "[ScriptedRelation.HasRelationBetween( GetPlayer, Character.Self )]"
tooltipwidget = {
scripted_relation_tooltip = {
blockoverride "description_text"
{
text = "[GetScriptedRelationTooltip( ScriptedRelation, GetPlayer, Character )]"
}
}
}
}
template Portrait_Relation_Icon_Small_Size
{
size = { 14 14 }
framesize = { 28 28 }
visible = "[ScriptedRelation.HasRelationBetween( GetPlayer, Character.Self )]"
tooltipwidget = {
scripted_relation_tooltip = {
blockoverride "description_text"
{
text = "[GetScriptedRelationTooltip( ScriptedRelation, GetPlayer, Character )]"
}
}
}
}
types portrait_icons
{
type scripted_relation_tooltip = container
{
alwaystransparent = no
object_tooltip_pop_out = {
blockoverride "title_text" {
margin = { 0 8 }
text = "[ScriptedRelation.GetName]"
}
blockoverride "concept_link" {
text = "[relation|E]"
}
}
}
# Normal size icons
type lover_relation_icon = icon
{
name = "lover"
datacontext = "[GetRelation( 'lover' )]"
texture = "gfx/interface/icons/portraits/lover_soulmate.dds"
frame = 1
block "icon_template" {
using = Portrait_Relation_Icon_Normal_Size
}
}
type friend_relation_icon = icon
{
name = "friend"
datacontext = "[GetRelation( 'friend' )]"
texture = "gfx/interface/icons/portraits/friend_bestfriend.dds"
frame = 1
block "icon_template" {
using = Portrait_Relation_Icon_Normal_Size
}
}
type rival_relation_icon = icon
{
name = "rival"
datacontext = "[GetRelation( 'rival' )]"
texture = "gfx/interface/icons/portraits/rival_nemesis.dds"
frame = 1
block "icon_template" {
using = Portrait_Relation_Icon_Normal_Size
}
}
type soulmate_relation_icon = icon
{
name = "soulmate"
datacontext = "[GetRelation( 'soulmate' )]"
texture = "gfx/interface/icons/portraits/lover_soulmate.dds"
frame = 2
block "icon_template" {
using = Portrait_Relation_Icon_Normal_Size
}
}
type best_friend_relation_icon = icon
{
name = "best_friend"
datacontext = "[GetRelation( 'best_friend' )]"
texture = "gfx/interface/icons/portraits/friend_bestfriend.dds"
frame = 2
block "icon_template" {
using = Portrait_Relation_Icon_Normal_Size
}
}
type nemesis_relation_icon = icon
{
name = "nemesis"
datacontext = "[GetRelation( 'nemesis' )]"
texture = "gfx/interface/icons/portraits/rival_nemesis.dds"
frame = 2
block "icon_template" {
using = Portrait_Relation_Icon_Normal_Size
}
}
type grudge_relation_icon = icon
{
name = "grudge"
datacontext = "[GetRelation( 'grudge' )]"
texture = "gfx/interface/icons/portraits/rival_grudge.dds"
frame = 1
block "icon_template" {
using = Portrait_Relation_Icon_Normal_Size
}
}
type blood_brother_relation_icon = icon
{
name = "blood_brother"
datacontext = "[GetRelation( 'blood_brother' )]"
texture = "gfx/interface/icons/portraits/blood_brother.dds"
frame = 2
block "icon_template" {
using = Portrait_Relation_Icon_Normal_Size
}
}
type elder_relation_icon = icon
{
name = "elder"
datacontext = "[GetRelation( 'elder' )]"
texture = "gfx/interface/icons/portraits/elder.dds"
frame = 2
block "icon_template" {
using = Portrait_Relation_Icon_Normal_Size
}
}
type disciple_relation_icon = icon
{
name = "disciple"
datacontext = "[GetRelation( 'disciple' )]"
texture = "gfx/interface/icons/portraits/disciple.dds"
frame = 2
block "icon_template" {
using = Portrait_Relation_Icon_Normal_Size
}
}
# Small size icons
type lover_relation_icon_small = icon
{
name = "lover"
datacontext = "[GetRelation( 'lover' )]"
texture = "gfx/interface/icons/portraits/lover_soulmate_small.dds"
frame = 1
using = Portrait_Relation_Icon_Small_Size
}
type friend_relation_icon_small = icon
{
name = "friend"
datacontext = "[GetRelation( 'friend' )]"
texture = "gfx/interface/icons/portraits/friend_bestfriend_small.dds"
frame = 1
using = Portrait_Relation_Icon_Small_Size
}
type rival_relation_icon_small = icon
{
name = "rival"
datacontext = "[GetRelation( 'rival' )]"
texture = "gfx/interface/icons/portraits/rival_nemesis_small.dds"
frame = 1
using = Portrait_Relation_Icon_Small_Size
}
type soulmate_relation_icon_small = icon
{
name = "soulmate"
datacontext = "[GetRelation( 'soulmate' )]"
texture = "gfx/interface/icons/portraits/lover_soulmate_small.dds"
frame = 2
using = Portrait_Relation_Icon_Small_Size
}
type best_friend_relation_icon_small = icon
{
name = "best_friend"
datacontext = "[GetRelation( 'best_friend' )]"
texture = "gfx/interface/icons/portraits/friend_bestfriend_small.dds"
frame = 2
using = Portrait_Relation_Icon_Small_Size
}
type nemesis_relation_icon_small = icon
{
name = "nemesis"
datacontext = "[GetRelation( 'nemesis' )]"
texture = "gfx/interface/icons/portraits/rival_nemesis_small.dds"
frame = 2
using = Portrait_Relation_Icon_Small_Size
}
type grudge_relation_icon_small = icon
{
name = "grudge"
datacontext = "[GetRelation( 'grudge' )]"
texture = "gfx/interface/icons/portraits/rival_grudge_small.dds"
frame = 1
using = Portrait_Relation_Icon_Small_Size
}
type blood_brother_relation_icon_small = icon
{
name = "blood_brother"
datacontext = "[GetRelation( 'blood_brother')]"
texture = "gfx/interface/icons/portraits/blood_brother_small.dds"
frame = 1
using = Portrait_Relation_Icon_Small_Size
}
type elder_relation_icon_small = icon
{
name = "elder"
datacontext = "[GetRelation( 'elder' )]"
texture = "gfx/interface/icons/portraits/elder_small.dds"
frame = 1
block "icon_template" {
using = Portrait_Relation_Icon_Small_Size
}
}
type disciple_relation_icon_small = icon
{
name = "disciple"
datacontext = "[GetRelation( 'disciple' )]"
texture = "gfx/interface/icons/portraits/disciple_small.dds"
frame = 1
block "icon_template" {
using = Portrait_Relation_Icon_Small_Size
}
}
type container_dynastic_cycle_group_icons = container {
name = "container_dynastic_cycle_group_icons"
visible = "[And(HasDlcFeature( 'all_under_heaven' ), Character.ShouldShowMovementPower)]"
datacontext = "[Character]"
datacontext = "[GetSituation('dynastic_cycle')]"
ignoreinvisible = yes
icon = {
name = "advancement_movement"
visible = "[ObjectsEqual( Situation.GetParticipantGroupByCharacter(Character.Self), Situation.GetTopParticipantGroupByKey('advancement_movement').Self)]"
size = { 20 20 }
texture = "gfx/interface/icons/portraits/dynastic_cycle_group_advance.dds"
block "dynastic_cycle_group_icon_tooltip"
{
tooltip = "FRAME_ADVANCEMENT_MOVEMENT"
}
}
icon = {
name = "expansion_movement"
visible = "[ObjectsEqual( Situation.GetParticipantGroupByCharacter(Character.Self), Situation.GetTopParticipantGroupByKey('expansion_movement').Self)]"
size = { 20 20 }
texture = "gfx/interface/icons/portraits/dynastic_cycle_group_expand.dds"
block "dynastic_cycle_group_icon_tooltip"
{
tooltip = "FRAME_EXPANSION_MOVEMENT"
}
}
icon = {
name = "conservative_movement"
visible = "[ObjectsEqual( Situation.GetParticipantGroupByCharacter(Character.Self), Situation.GetTopParticipantGroupByKey('conservative_movement').Self)]"
size = { 20 20 }
texture = "gfx/interface/icons/portraits/dynastic_cycle_group_anti.dds"
block "dynastic_cycle_group_icon_tooltip"
{
tooltip = "FRAME_CONSERVATIVE_MOVEMENT"
}
}
icon = {
name = "pro_hegemon_movement"
visible = "[ObjectsEqual( Situation.GetParticipantGroupByCharacter(Character.Self), Situation.GetTopParticipantGroupByKey('pro_hegemon_movement').Self)]"
size = { 20 20 }
texture = "gfx/interface/icons/portraits/dynastic_cycle_group_pro.dds"
block "dynastic_cycle_group_icon_tooltip"
{
tooltip = "FRAME_PRO_HEGEMON_MOVEMENT"
}
}
icon = {
name = "undecided_movement"
visible = "[ObjectsEqual( Situation.GetParticipantGroupByCharacter(Character.Self), Situation.GetTopParticipantGroupByKey('undecided_movement').Self)]"
size = { 20 20 }
texture = "gfx/interface/icons/portraits/dynastic_cycle_group_unaligned.dds"
block "dynastic_cycle_group_icon_tooltip"
{
tooltip = "FRAME_UNDECIDED_MOVEMENT"
}
}
}
}
template Portrait_Relation_Icons
{
lover_relation_icon = {}
friend_relation_icon = {}
rival_relation_icon = {}
soulmate_relation_icon = {}
best_friend_relation_icon = {}
nemesis_relation_icon = {}
grudge_relation_icon = {}
blood_brother_relation_icon = {}
elder_relation_icon = {}
disciple_relation_icon = {}
}
template Portrait_Relation_Icons_Small
{
lover_relation_icon_small = {}
friend_relation_icon_small = {}
rival_relation_icon_small = {}
soulmate_relation_icon_small = {}
best_friend_relation_icon_small = {}
nemesis_relation_icon_small = {}
grudge_relation_icon_small = {}
blood_brother_relation_icon_small = {}
elder_relation_icon_small = {}
disciple_relation_icon_small = {}
}
template Portrait_Relation_Icons_Character_Window
{
lover_relation_icon = {
blockoverride "icon_template"
{
using = Character_Window_Relation_Icon
}
}
friend_relation_icon = {
blockoverride "icon_template"
{
using = Character_Window_Relation_Icon
}
}
rival_relation_icon = {
blockoverride "icon_template"
{
using = Character_Window_Relation_Icon
}
}
soulmate_relation_icon = {
blockoverride "icon_template"
{
using = Character_Window_Relation_Icon
}
}
best_friend_relation_icon = {
blockoverride "icon_template"
{
using = Character_Window_Relation_Icon
}
}
nemesis_relation_icon = {
blockoverride "icon_template"
{
using = Character_Window_Relation_Icon
}
}
grudge_relation_icon = {
blockoverride "icon_template"
{
using = Character_Window_Relation_Icon
}
}
blood_brother_relation_icon = {
blockoverride "icon_template"
{
using = Character_Window_Relation_Icon
}
}
elder_relation_icon = {
blockoverride "icon_template"
{
using = Character_Window_Relation_Icon
}
}
disciple_relation_icon = {
blockoverride "icon_template"
{
using = Character_Window_Relation_Icon
}
}
}