upd: sync local changes

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
iisaevandClaude Opus 5.5 committed 2026-10-16 16:18:26 +00:00
1 parent bf76a60b17
commit bea3e5948e
87 files changed
+1784 -1623

No files matched your search

Binary file not shown.

Before

Width:  |  Height:  |  Size: 306 KiB

After

Width:  |  Height:  |  Size: 497 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 306 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 147 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 377 KiB

File renamed without changes.
Binary file not shown.

After

Width:  |  Height:  |  Size: 321 KiB

-5
View File
@@ -1,5 +0,0 @@
{ "Items": [
${actions/physics_attack},
${actions/physics_defence},
${actions/physics_stun}
]}
-12
View File
@@ -1,12 +0,0 @@
{
"Id": "physics/attack",
"Name": "characters/action/physics_attack/name",
"Description": "characters/action/physics_attack/description",
"Image": "characters/actions/physics_attack",
"Type": "ToEnemy",
"Values": [
"RequiredPoint=1",
"Attack=1.0",
"AttackType=Physics"
]
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 126 KiB

-11
View File
@@ -1,11 +0,0 @@
{
"Id": "physics/defence",
"Name": "characters/action/defence/name",
"Description": "characters/action/defence/description",
"Image": "characters/actions/physics_defence",
"Type": "ToAlias",
"Values": [
"RequiredPoint=1",
"Defence=4"
]
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 106 KiB

-12
View File
@@ -1,12 +0,0 @@
{
"Id": "physics/stun",
"Name": "characters/action/stun/name",
"Description": "characters/action/stun/description",
"Image": "characters/actions/physics_stun",
"Type": "ToEnemy",
"Values": [
"RequiredPoint=2",
"AttackType=Physics",
"Turn=3"
]
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 108 KiB

-3
View File
@@ -1,3 +0,0 @@
{ "Items": [
${player/marao}
]}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.4 KiB

-13
View File
@@ -1,13 +0,0 @@
{ "Items": [
${enemies/wolf_1},
${enemies/wolf_2},
${enemies/wolf_3},
${enemies/wolf_4},
${enemies/wolf_5},
${enemies/wolf_6},
${enemies/wolf_7},
${enemies/wolf_8},
${enemies/wolf_9},
${enemies/wolf_10},
${enemies/werewolf_girl_1}
]}
+28 -18
View File
@@ -1,20 +1,30 @@
{
"Id": "werewolf_girl_1",
"Name": "characters/enemies/werewolf_girl",
"Image": "characters/enemies/werewolf_girl_1",
"Behaviour": "base",
"Level": 1,
"Point": 1,
"Health": 25,
"Defence": 0,
"Attack": 8,
"Exp": 50,
"RecruitmentChance": 50,
"Actions": ["physics/attack", "physics/defence"],
"Loot": [
{ "ItemId": "food/wolf_meat", "MinCount": 2, "MaxCount": 2, "Probability": 100 }
{
"Kind": "character",
"Items": [
{
"Id": "werewolf_girl_1",
"Name": "characters/enemies/werewolf_girl",
"Image": "characters/enemies/werewolf_girl_1",
"Behaviour": "base",
"Level": 1,
"Point": 1,
"Health": 25,
"Defence": 0,
"Attack": 8,
"Exp": 50,
"RecruitmentChance": 50,
"Actions": [
"physics/attack",
"physics/defence"
],
"Loot": [
{
"ItemId": "food/wolf_meat",
"MinCount": 2,
"MaxCount": 2,
"Probability": 100
}
]
}
]
}
+34 -18
View File
@@ -1,20 +1,36 @@
{
"Id": "wolf_1",
"Name": "characters/enemies/wolf",
"Image": "characters/enemies/wolf_1",
"Behaviour": "base",
"Level": 1,
"Point": 1,
"Health": 15,
"Defence": 0,
"Attack": 4,
"Exp": 5,
"RecruitmentChance": 0,
"Actions": ["physics/attack", "physics/defence"],
"Loot": [
{ "ItemId": "food/wolf_meat", "MinCount": 1, "MaxCount": 1, "Probability": 100 },
{ "ItemId": "resource/branches", "MinCount": 1, "MaxCount": 1, "Probability": 100 }
{
"Kind": "character",
"Items": [
{
"Id": "wolf_1",
"Name": "characters/enemies/wolf",
"Image": "characters/enemies/wolf_1",
"Behaviour": "base",
"Level": 1,
"Point": 1,
"Health": 15,
"Defence": 0,
"Attack": 4,
"Exp": 5,
"RecruitmentChance": 0,
"Actions": [
"physics/attack",
"physics/defence"
],
"Loot": [
{
"ItemId": "food/wolf_meat",
"MinCount": 1,
"MaxCount": 1,
"Probability": 100
},
{
"ItemId": "resource/branches",
"MinCount": 1,
"MaxCount": 1,
"Probability": 100
}
]
}
]
}
+34 -18
View File
@@ -1,20 +1,36 @@
{
"Id": "wolf_10",
"Name": "characters/enemies/wolf",
"Image": "characters/enemies/wolf_10",
"Behaviour": "base",
"Level": 1,
"Point": 1,
"Health": 15,
"Defence": 0,
"Attack": 4,
"Exp": 5,
"RecruitmentChance": 0,
"Actions": ["physics/attack", "physics/defence"],
"Loot": [
{ "ItemId": "food/wolf_meat", "MinCount": 1, "MaxCount": 1, "Probability": 100 },
{ "ItemId": "resource/branches", "MinCount": 1, "MaxCount": 1, "Probability": 100 }
{
"Kind": "character",
"Items": [
{
"Id": "wolf_10",
"Name": "characters/enemies/wolf",
"Image": "characters/enemies/wolf_10",
"Behaviour": "base",
"Level": 1,
"Point": 1,
"Health": 15,
"Defence": 0,
"Attack": 4,
"Exp": 5,
"RecruitmentChance": 0,
"Actions": [
"physics/attack",
"physics/defence"
],
"Loot": [
{
"ItemId": "food/wolf_meat",
"MinCount": 1,
"MaxCount": 1,
"Probability": 100
},
{
"ItemId": "resource/branches",
"MinCount": 1,
"MaxCount": 1,
"Probability": 100
}
]
}
]
}
+34 -18
View File
@@ -1,20 +1,36 @@
{
"Id": "wolf_2",
"Name": "characters/enemies/wolf",
"Image": "characters/enemies/wolf_2",
"Behaviour": "base",
"Level": 1,
"Point": 1,
"Health": 15,
"Defence": 0,
"Attack": 4,
"Exp": 5,
"RecruitmentChance": 0,
"Actions": ["physics/attack", "physics/defence"],
"Loot": [
{ "ItemId": "food/wolf_meat", "MinCount": 1, "MaxCount": 1, "Probability": 100 },
{ "ItemId": "resource/branches", "MinCount": 1, "MaxCount": 1, "Probability": 100 }
{
"Kind": "character",
"Items": [
{
"Id": "wolf_2",
"Name": "characters/enemies/wolf",
"Image": "characters/enemies/wolf_2",
"Behaviour": "base",
"Level": 1,
"Point": 1,
"Health": 15,
"Defence": 0,
"Attack": 4,
"Exp": 5,
"RecruitmentChance": 0,
"Actions": [
"physics/attack",
"physics/defence"
],
"Loot": [
{
"ItemId": "food/wolf_meat",
"MinCount": 1,
"MaxCount": 1,
"Probability": 100
},
{
"ItemId": "resource/branches",
"MinCount": 1,
"MaxCount": 1,
"Probability": 100
}
]
}
]
}
+34 -18
View File
@@ -1,20 +1,36 @@
{
"Id": "wolf_3",
"Name": "characters/enemies/wolf",
"Image": "characters/enemies/wolf_3",
"Behaviour": "base",
"Level": 1,
"Point": 1,
"Health": 15,
"Defence": 0,
"Attack": 4,
"Exp": 5,
"RecruitmentChance": 0,
"Actions": ["physics/attack", "physics/defence"],
"Loot": [
{ "ItemId": "food/wolf_meat", "MinCount": 1, "MaxCount": 1, "Probability": 100 },
{ "ItemId": "resource/branches", "MinCount": 1, "MaxCount": 1, "Probability": 100 }
{
"Kind": "character",
"Items": [
{
"Id": "wolf_3",
"Name": "characters/enemies/wolf",
"Image": "characters/enemies/wolf_3",
"Behaviour": "base",
"Level": 1,
"Point": 1,
"Health": 15,
"Defence": 0,
"Attack": 4,
"Exp": 5,
"RecruitmentChance": 0,
"Actions": [
"physics/attack",
"physics/defence"
],
"Loot": [
{
"ItemId": "food/wolf_meat",
"MinCount": 1,
"MaxCount": 1,
"Probability": 100
},
{
"ItemId": "resource/branches",
"MinCount": 1,
"MaxCount": 1,
"Probability": 100
}
]
}
]
}
+34 -18
View File
@@ -1,20 +1,36 @@
{
"Id": "wolf_4",
"Name": "characters/enemies/wolf",
"Image": "characters/enemies/wolf_4",
"Behaviour": "base",
"Level": 1,
"Point": 1,
"Health": 15,
"Defence": 0,
"Attack": 4,
"Exp": 5,
"RecruitmentChance": 0,
"Actions": ["physics/attack", "physics/defence"],
"Loot": [
{ "ItemId": "food/wolf_meat", "MinCount": 1, "MaxCount": 1, "Probability": 100 },
{ "ItemId": "resource/branches", "MinCount": 1, "MaxCount": 1, "Probability": 100 }
{
"Kind": "character",
"Items": [
{
"Id": "wolf_4",
"Name": "characters/enemies/wolf",
"Image": "characters/enemies/wolf_4",
"Behaviour": "base",
"Level": 1,
"Point": 1,
"Health": 15,
"Defence": 0,
"Attack": 4,
"Exp": 5,
"RecruitmentChance": 0,
"Actions": [
"physics/attack",
"physics/defence"
],
"Loot": [
{
"ItemId": "food/wolf_meat",
"MinCount": 1,
"MaxCount": 1,
"Probability": 100
},
{
"ItemId": "resource/branches",
"MinCount": 1,
"MaxCount": 1,
"Probability": 100
}
]
}
]
}
+34 -18
View File
@@ -1,20 +1,36 @@
{
"Id": "wolf_5",
"Name": "characters/enemies/wolf",
"Image": "characters/enemies/wolf_5",
"Behaviour": "base",
"Level": 1,
"Point": 1,
"Health": 15,
"Defence": 0,
"Attack": 4,
"Exp": 5,
"RecruitmentChance": 0,
"Actions": ["physics/attack", "physics/defence"],
"Loot": [
{ "ItemId": "food/wolf_meat", "MinCount": 1, "MaxCount": 1, "Probability": 100 },
{ "ItemId": "resource/branches", "MinCount": 1, "MaxCount": 1, "Probability": 100 }
{
"Kind": "character",
"Items": [
{
"Id": "wolf_5",
"Name": "characters/enemies/wolf",
"Image": "characters/enemies/wolf_5",
"Behaviour": "base",
"Level": 1,
"Point": 1,
"Health": 15,
"Defence": 0,
"Attack": 4,
"Exp": 5,
"RecruitmentChance": 0,
"Actions": [
"physics/attack",
"physics/defence"
],
"Loot": [
{
"ItemId": "food/wolf_meat",
"MinCount": 1,
"MaxCount": 1,
"Probability": 100
},
{
"ItemId": "resource/branches",
"MinCount": 1,
"MaxCount": 1,
"Probability": 100
}
]
}
]
}
+34 -18
View File
@@ -1,20 +1,36 @@
{
"Id": "wolf_6",
"Name": "characters/enemies/wolf",
"Image": "characters/enemies/wolf_6",
"Behaviour": "base",
"Level": 1,
"Point": 1,
"Health": 15,
"Defence": 0,
"Attack": 4,
"Exp": 5,
"RecruitmentChance": 0,
"Actions": ["physics/attack", "physics/defence"],
"Loot": [
{ "ItemId": "food/wolf_meat", "MinCount": 1, "MaxCount": 1, "Probability": 100 },
{ "ItemId": "resource/branches", "MinCount": 1, "MaxCount": 1, "Probability": 100 }
{
"Kind": "character",
"Items": [
{
"Id": "wolf_6",
"Name": "characters/enemies/wolf",
"Image": "characters/enemies/wolf_6",
"Behaviour": "base",
"Level": 1,
"Point": 1,
"Health": 15,
"Defence": 0,
"Attack": 4,
"Exp": 5,
"RecruitmentChance": 0,
"Actions": [
"physics/attack",
"physics/defence"
],
"Loot": [
{
"ItemId": "food/wolf_meat",
"MinCount": 1,
"MaxCount": 1,
"Probability": 100
},
{
"ItemId": "resource/branches",
"MinCount": 1,
"MaxCount": 1,
"Probability": 100
}
]
}
]
}
+34 -18
View File
@@ -1,20 +1,36 @@
{
"Id": "wolf_7",
"Name": "characters/enemies/wolf",
"Image": "characters/enemies/wolf_7",
"Behaviour": "base",
"Level": 1,
"Point": 1,
"Health": 15,
"Defence": 0,
"Attack": 4,
"Exp": 5,
"RecruitmentChance": 0,
"Actions": ["physics/attack", "physics/defence"],
"Loot": [
{ "ItemId": "food/wolf_meat", "MinCount": 1, "MaxCount": 1, "Probability": 100 },
{ "ItemId": "resource/branches", "MinCount": 1, "MaxCount": 1, "Probability": 100 }
{
"Kind": "character",
"Items": [
{
"Id": "wolf_7",
"Name": "characters/enemies/wolf",
"Image": "characters/enemies/wolf_7",
"Behaviour": "base",
"Level": 1,
"Point": 1,
"Health": 15,
"Defence": 0,
"Attack": 4,
"Exp": 5,
"RecruitmentChance": 0,
"Actions": [
"physics/attack",
"physics/defence"
],
"Loot": [
{
"ItemId": "food/wolf_meat",
"MinCount": 1,
"MaxCount": 1,
"Probability": 100
},
{
"ItemId": "resource/branches",
"MinCount": 1,
"MaxCount": 1,
"Probability": 100
}
]
}
]
}
+34 -18
View File
@@ -1,20 +1,36 @@
{
"Id": "wolf_8",
"Name": "characters/enemies/wolf",
"Image": "characters/enemies/wolf_8",
"Behaviour": "base",
"Level": 1,
"Point": 1,
"Health": 15,
"Defence": 0,
"Attack": 4,
"Exp": 5,
"RecruitmentChance": 0,
"Actions": ["physics/attack", "physics/defence"],
"Loot": [
{ "ItemId": "food/wolf_meat", "MinCount": 1, "MaxCount": 1, "Probability": 100 },
{ "ItemId": "resource/branches", "MinCount": 1, "MaxCount": 1, "Probability": 100 }
{
"Kind": "character",
"Items": [
{
"Id": "wolf_8",
"Name": "characters/enemies/wolf",
"Image": "characters/enemies/wolf_8",
"Behaviour": "base",
"Level": 1,
"Point": 1,
"Health": 15,
"Defence": 0,
"Attack": 4,
"Exp": 5,
"RecruitmentChance": 0,
"Actions": [
"physics/attack",
"physics/defence"
],
"Loot": [
{
"ItemId": "food/wolf_meat",
"MinCount": 1,
"MaxCount": 1,
"Probability": 100
},
{
"ItemId": "resource/branches",
"MinCount": 1,
"MaxCount": 1,
"Probability": 100
}
]
}
]
}
+34 -18
View File
@@ -1,20 +1,36 @@
{
"Id": "wolf_9",
"Name": "characters/enemies/wolf",
"Image": "characters/enemies/wolf_9",
"Behaviour": "base",
"Level": 1,
"Point": 1,
"Health": 15,
"Defence": 0,
"Attack": 4,
"Exp": 5,
"RecruitmentChance": 0,
"Actions": ["physics/attack", "physics/defence"],
"Loot": [
{ "ItemId": "food/wolf_meat", "MinCount": 1, "MaxCount": 1, "Probability": 100 },
{ "ItemId": "resource/branches", "MinCount": 1, "MaxCount": 1, "Probability": 100 }
{
"Kind": "character",
"Items": [
{
"Id": "wolf_9",
"Name": "characters/enemies/wolf",
"Image": "characters/enemies/wolf_9",
"Behaviour": "base",
"Level": 1,
"Point": 1,
"Health": 15,
"Defence": 0,
"Attack": 4,
"Exp": 5,
"RecruitmentChance": 0,
"Actions": [
"physics/attack",
"physics/defence"
],
"Loot": [
{
"ItemId": "food/wolf_meat",
"MinCount": 1,
"MaxCount": 1,
"Probability": 100
},
{
"ItemId": "resource/branches",
"MinCount": 1,
"MaxCount": 1,
"Probability": 100
}
]
}
]
}
+17 -11
View File
@@ -1,13 +1,19 @@
{
"Id": "Marao",
"Name": "characters/player/marao",
"Image": "characters/player/marao",
"Level": 1,
"Point": 1,
"Health": 16,
"Defence": 0,
"Attack": 5,
"Actions": ["physics/attack", "physics/defence"]
"Kind": "character",
"Items": [
{
"Id": "Marao",
"Name": "characters/player/marao",
"Image": "characters/player/marao",
"Level": 1,
"Point": 1,
"Health": 16,
"Defence": 0,
"Attack": 5,
"Actions": [
"physics/attack",
"physics/defence"
]
}
]
}
-3
View File
@@ -1,3 +0,0 @@
{ "Items": [
${skills/slave_master}
]}
+15 -7
View File
@@ -1,8 +1,16 @@
{
"Id": "slave_master",
"Name": "characters/skills/slave_master_name",
"Description": "characters/skills/slave_master",
"Image": "characters/skills/slave_master",
"Type": 1,
"Rare": 3
{
"Kind": "skill",
"Items": [
{
"Id": "slave_master",
"Name": "characters/skills/slave_master_name",
"Description": "characters/skills/slave_master",
"Image": "characters/skills/slave_master",
"Type": 1,
"Rare": 3,
"Effects": [
{ "Key": "characters/skills/effects/recruit", "Value": 10, "Percent": true }
]
}
]
}
+45
View File
@@ -0,0 +1,45 @@
{
"id": "vn_starter_novel",
"kind": "Game",
"name": "@collections/vn_starter_novel/name",
"description": "@collections/vn_starter_novel/description",
"author": "ct",
"version": "1.0.0",
"tags": [
"novel",
"cards"
],
"locale": [
{
"lang": "en",
"name": "Visual Novel Starter",
"description": "A visual novel with an optional card-battle layer."
},
{
"lang": "ru",
"name": "Стартовая новелла",
"description": "Визуальная новелла с необязательным слоем карточных боёв."
}
],
"mechanics": [
{
"id": "vn_core",
"name": "@collections/vn_starter_novel/mechanic/vn_core/name",
"description": "@collections/vn_starter_novel/mechanic/vn_core/description",
"role": "story",
"mods": [
"visual_novel_core>=1"
]
},
{
"id": "cards",
"name": "@collections/vn_starter_novel/mechanic/cards/name",
"description": "@collections/vn_starter_novel/mechanic/cards/description",
"role": "battle",
"optional": true,
"mods": [
"turn_battle_base>=1"
]
}
]
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.4 KiB

+13 -8
View File
@@ -1,9 +1,14 @@
{
"Id": "food/ration",
"Name": "items/food/ration/name",
"Description": "items/food/ration/desc",
"Cost": 5,
"Sprite": "food/ration",
"ItemType": "Food",
"ItemAction": "null"
{
"Kind": "item",
"Items": [
{
"Id": "food/ration",
"Name": "items/food/ration/name",
"Description": "items/food/ration/desc",
"Cost": 5,
"Sprite": "food/ration",
"ItemType": "Food",
"ItemAction": "null"
}
]
}
+13 -8
View File
@@ -1,9 +1,14 @@
{
"Id": "food/wolf_meat",
"Name": "items/food/wolf_meat/name",
"Description": "items/food/wolf_meat/desc",
"Cost": 1,
"Sprite": "food/wolf_meat",
"ItemType": "Resource,Food",
"ItemAction": "null"
{
"Kind": "item",
"Items": [
{
"Id": "food/wolf_meat",
"Name": "items/food/wolf_meat/name",
"Description": "items/food/wolf_meat/desc",
"Cost": 1,
"Sprite": "food/wolf_meat",
"ItemType": "Resource,Food",
"ItemAction": "null"
}
]
}
-7
View File
@@ -1,7 +0,0 @@
{
"Items": [
${food/ration},
${food/wolf_meat},
${resource/branches}
]
}
+13 -8
View File
@@ -1,9 +1,14 @@
{
"Id": "resource/branches",
"Name": "items/resource/branches/name",
"Description": "items/resource/branches/desc",
"Cost": 0,
"Sprite": "resource/branches",
"ItemType": "Resource",
"ItemAction": "null"
{
"Kind": "item",
"Items": [
{
"Id": "resource/branches",
"Name": "items/resource/branches/name",
"Description": "items/resource/branches/desc",
"Cost": 0,
"Sprite": "resource/branches",
"ItemType": "Resource",
"ItemAction": "null"
}
]
}
+24 -8
View File
@@ -1,5 +1,5 @@
mod_core_name = Core
mod_core_desc = Game core
mod_visual_novel_core_name = Visual Novel Core
mod_visual_novel_core_desc = Base content mod: scenarios, characters, items, quests and the dialog layer of the visual novel on top of the 2D platform.
prolog/title = * A few missed moments earlier *
prolog/line1 = Being thoroughly wasted, Marao lay peacefully in the alley.
@@ -43,11 +43,13 @@ ui/menu/new_game = New Game
ui/menu/load = Load
ui/menu/settings = Settings
ui/menu/exit = Exit
quest/prolog = Prologue
quest/prolog/0 = It's cold, need to put something on...
quest/prolog/1 = I don't remember a damn thing... Need to look around, maybe I can recall something.
quest/prolog/2 = I found the recipe book I bought the night before. It's getting dark, need to find shelter.
quest/prolog/3 = quest3
quest/awakening = Awakening
quest/awakening/0 = Woke up naked in an alley. My head is splitting. Look around — find something to wear.
quest/awakening/1 = Covered myself with a rag and grabbed the book. Then the police showed up. No point arguing — run.
quest/awakening/2 = The whistles died down. I'm at the cemetery. Catch my breath and figure out what to do with the book.
quest/awakening/3 = Read it aloud. Pretty sure I did something. Just what exactly?
quest/awakening/4 = The book started talking. Calls itself Al Azif. Time to get out of here.
quest/awakening/5 = Walking along the river to the villa. I'll wait it out somewhere there.
items/food/ration/name = Ration
items/food/ration/desc = A daily ration unit for one person
items/food/wolf_meat/name = Wolf cutlet
@@ -67,6 +69,7 @@ characters/action/stun/name = Stun
characters/action/stun/description = Stuns the target for 2 turns
characters/skills/slave_master_name = Slave Trader
characters/skills/slave_master = Gives the ability to enslave a defeated enemy with a base chance of 10%. The upkeep of the slave falls on your shoulders.
characters/skills/effects/recruit = recruitment chance
settings/back = Back
settings/audio = Audio
settings/sounds = Sounds
@@ -100,4 +103,17 @@ settings/mods_reset = Reset to Defaults
launcher/title = Settings
launcher/play = Play
launcher/exit = Exit
quest/naked_morning = Naked Morning
quest/old_house = The Old House
quest/awakening/tag/cloak_taken = Cloak found
quest/awakening/tag/book_taken = Book found
quest/awakening/tag/graveyard_read = Read aloud
quest/awakening/tag/azif_awake = Azif awakened
quest/awakening/tag/villa_reached = Villa reached
# Collections (vn_starter_novel)
collections/vn_starter_novel/name = Card Novel
collections/vn_starter_novel/description = A visual novel with an optional card-battle layer.
collections/vn_starter_novel/mechanic/vn_core/name = Novel
collections/vn_starter_novel/mechanic/vn_core/description = Scenes, scenarios, dialogue and the story engine.
collections/vn_starter_novel/mechanic/cards/name = Card Battle
collections/vn_starter_novel/mechanic/cards/description = Card-driven battles on top of the turn-based engine.
+29 -8
View File
@@ -1,5 +1,5 @@
mod_core_name = Ядро
mod_core_desc = Ядро игры
mod_visual_novel_core_name = Ядро
mod_visual_novel_core_desc = Базовый контент-мод: сценарии, персонажи, предметы, квесты и диалоговый слой визуальной новеллы поверх 2D-платформы.
prolog/title = * Несколькими упущенными моментами ранее *
prolog/line1 = Будучи изрядно набуханным, Марао мирно лежал в переулке.
@@ -43,11 +43,13 @@ ui/menu/new_game = Новая игра
ui/menu/load = Загрузить
ui/menu/settings = Настройки
ui/menu/exit = Выход
quest/prolog = Пролог
quest/prolog/0 = Холодно, нужно во что-то одеться...
quest/prolog/1 = Ничерта не помню... Нужно осмотреться, вдруг я смогу что нибудь вспомнить.
quest/prolog/2 = Я нашёл книгу рецептов, которую купил на кануне. Уже темнеет нужно найти укрытие.
quest/prolog/3 = квест3
quest/awakening = Пробуждение
quest/awakening/0 = Очнулся голым в переулке. Голова раскалывается. Надо осмотреться — хоть во что-то одеться.
quest/awakening/1 = Прикрылся тряпкой, забрал книгу. И тут же полиция. Спорить бесполезно — бежать.
quest/awakening/2 = Свистки стихли. Я на кладбище. Передохнуть и решить, что делать с книгой.
quest/awakening/3 = Прочитал вслух. Кажется, я что-то натворил. Вот только что именно?
quest/awakening/4 = Книга заговорила. Зовёт себя Аль Азифом. Пора убираться отсюда.
quest/awakening/5 = Иду вдоль реки к вилле «Забвение». Где-нибудь там пережду.
items/food/ration/name = Рацион
items/food/ration/desc = Единица суточного рациона для одного человека
items/food/wolf_meat/name = Волчья вырезка
@@ -67,6 +69,7 @@ characters/action/stun/name = Ошеломление
characters/action/stun/description = Ошеломляет цель на 2 хода
characters/skills/slave_master_name = Работорговец
characters/skills/slave_master = Даёт возможность взять в рабство поверженного врага с базовым шансом в 10%. Содержание раба ложится на твои плечи.
characters/skills/effects/recruit = шанс рекрутинга
settings/back = Назад
settings/audio = Аудио
settings/sounds = Звуки
@@ -100,4 +103,22 @@ settings/mods_reset = Сбросить настройки
launcher/title = Настройки
launcher/play = Играть
launcher/exit = Выход
quest/naked_morning = Голое утро
quest/old_house = Старый дом
quest/awakening/tag/cloak_taken = Плащ найден
quest/awakening/tag/book_taken = Книга найдена
quest/awakening/tag/graveyard_read = Прочитал вслух
quest/awakening/tag/azif_awake = Азиф пробуждён
quest/awakening/tag/villa_reached = Вилла найдена
mapzone/home = Вилла
mapzone/home/info = Заброшенная вилла в глуши на берегу реки
mapzone/town_entry = Вход в город
mapzone/town_entry/info = Северный вход в город
# Коллекции (vn_starter_novel)
collections/vn_starter_novel/name = Карточная новелла
collections/vn_starter_novel/description = Визуальная новелла с необязательным слоем карточных боёв.
collections/vn_starter_novel/mechanic/vn_core/name = Новелла
collections/vn_starter_novel/mechanic/vn_core/description = Сцены, сценарии, диалоги и движок истории.
collections/vn_starter_novel/mechanic/cards/name = Карточный бой
collections/vn_starter_novel/mechanic/cards/description = Карточные бои поверх пошагового боевого движка.
+26 -28
View File
@@ -1,20 +1,22 @@
{
"id": "core",
"name": "Core",
"version": "1.0.0",
"id": "visual_novel_core",
"name": "Visual Novel Core",
"version": "2.0.0",
"author": "ct",
"description": "Game core",
"category": "library, story",
"sources": [
"src/*.cs"
],
"description": "Visual novel content and UI on top of the 2D platform: scenarios, characters, items, quests and the dialog layer patched into the base shell",
"category": "engine, story",
"depends": ["base2d>=1", "dialog_base>=1", "interactive_base>=1", "skills_base>=1", "map_base>=1", "interface>=1"],
"ui": [
{
"id": "map",
"kind": "panel",
"slot": "ModBeforeUIPanel",
"scene_path": "scenes/ui/map_widget.tscn",
"button": { "icon": "map", "locale": "ui/map/title", "index": 10 },
"button": {
"icon": "map",
"locale": "ui/map/title",
"index": 10
},
"priority": 10
},
{
@@ -22,15 +24,11 @@
"kind": "panel",
"slot": "ModBeforeUIPanel",
"scene_path": "scenes/ui/inventory_panel.tscn",
"button": { "icon": "bag", "locale": "ui/inventory/title", "index": 20 },
"priority": 10
},
{
"id": "characters",
"kind": "panel",
"slot": "ModBeforeUIPanel",
"scene_path": "scenes/ui/character_panel/character_panel.tscn",
"button": { "icon": "cards", "locale": "ui/character_panel/title", "index": 30 },
"button": {
"icon": "bag",
"locale": "ui/inventory/title",
"index": 20
},
"priority": 10
},
{
@@ -38,7 +36,11 @@
"kind": "panel",
"slot": "ModBeforeUIPanel",
"scene_path": "scenes/ui/skills_panel/skills_panel.tscn",
"button": { "icon": "skills", "locale": "ui/skills/title", "index": 40 },
"button": {
"icon": "skills",
"locale": "ui/skills/title",
"index": 40
},
"priority": 10
},
{
@@ -46,15 +48,11 @@
"kind": "panel",
"slot": "ModBeforeUIPanel",
"scene_path": "scenes/menu/game_menu.tscn",
"button": { "icon": "settings", "locale": "menu/settings", "index": 50 },
"priority": 10
},
{
"id": "journal",
"kind": "panel",
"slot": "ModBeforeUIPanel",
"scene_path": "scenes/ui/quest_journal.tscn",
"button": { "icon": "journal", "locale": "ui/journal/title", "index": 60 },
"button": {
"icon": "settings",
"locale": "menu/settings",
"index": 50
},
"priority": 10
}
]
+122
View File
@@ -0,0 +1,122 @@
{
"Items": [
{
"ID": "home",
"points": [
[
0.5887548,
0.264396
],
[
0.6100419,
0.25477746
],
[
0.6247227,
0.23549321
],
[
0.62986094,
0.2014098
],
[
0.60765624,
0.19486304
],
[
0.5865526,
0.18178055
],
[
0.5630633,
0.19693027
],
[
0.56253225,
0.233722
]
],
"title": "",
"scene": "home_outside",
"description": "mapzone/home/info",
"image_pos": [
0,
0
],
"locked": false,
"hidden": false
},
{
"ID": "home_label",
"points": [],
"title": "mapzone/home",
"image_pos": [
0,
0
],
"label_pos": [
0.5990954,
0.15155637
],
"locked": false,
"hidden": false
},
{
"ID": "town_entry",
"points": [
[
0.7098713,
0.24926566
],
[
0.7333606,
0.26303816
],
[
0.73482865,
0.2905831
],
[
0.73042434,
0.31537354
],
[
0.7091372,
0.34291852
],
[
0.69739264,
0.32639155
],
[
0.7010628,
0.2740561
]
],
"title": "",
"scene": "town_entry",
"description": "mapzone/town_entry/info",
"image_pos": [
0,
0
],
"locked": false,
"hidden": false
},
{
"ID": "town_entry_label",
"points": [],
"title": "mapzone/town_entry",
"image_pos": [
0,
0
],
"label_pos": [
0.72461617,
0.21628697
],
"locked": false,
"hidden": false
}
]
}
+8
View File
@@ -0,0 +1,8 @@
[gd_scene load_steps=3 format=3]
[ext_resource type="PackedScene" path="res://mods/base2d/scenes/ui/base_scene.tscn" id="1_target"]
[ext_resource type="PackedScene" path="res://scenes/ui/dialog_canvas.tscn" id="2_dialog"]
[node name="BaseScene" instance=ExtResource("1_target")]
[node name="DialogCanvas" parent="Scene" index="2" instance=ExtResource("2_dialog")]
+11 -7
View File
@@ -1,17 +1,21 @@
{
"Kind": "quest",
"Items": [
{
"Id": "PrologQuest",
"Name": "quest/prolog",
"Id": "AwakeningQuest",
"Name": "quest/awakening",
"StatusToDescription": {
"0": "quest/prolog/0",
"1": "quest/prolog/1",
"2": "quest/prolog/2"
"0": "quest/awakening/0",
"1": "quest/awakening/1",
"2": "quest/awakening/2",
"3": "quest/awakening/3",
"4": "quest/awakening/4",
"5": "quest/awakening/5"
}
},
{
"Id": "NakedMorningQuest",
"Name": "quest/naked_morning"
"Id": "OldHouseQuest",
"Name": "quest/old_house"
}
]
}
@@ -3,6 +3,7 @@ priority: 10
is_one_run: true
---
background prolog/00025-165590409
title "Глава 3. Кладбище святого Угробья"
text "Могильные плиты тянулись вдаль, серые и мрачные. Старые дубы качали голыми ветвями. Где-то каркала ворона."
text "Свистки стихли — полицейские потеряли его из виду." first=marao/think
@@ -12,5 +13,6 @@ text "— Ну вот. Организм. Раньше я мог пол-литр
text "Он покосился на книгу, которая всё ещё была у него под мышкой." first=marao/think
text "— Хм. А чего бы и нет? Всё равно время есть." first=marao/smile
action quest.set_data_status quest_id=AwakeningQuest level=2
notify "За склепом можно уединиться."
end
+4 -2
View File
@@ -1,5 +1,6 @@
# Клик по книге — Аль-Азиф просыпается (канон: глава 4).
# Файл без шапки: InteractiveManager отрезает метаданные, играет только тело.
title "Глава 4. Аль Азиф просыпается"
text "Марао плюнул и присел, сложив книгу стопкой страниц. Поднёс к пятой точке." first=marao/think
ptext "Книга заорала."
ptext "— НЕ СМЕЙ!"
@@ -28,8 +29,9 @@ ptext "Вдалеке снова засвистели полицейские с
sound locations/prolog/police
text "Марао встал, накинул красную тряпку и сунул книгу под мышку." first=marao/smile
text "— Валим. Давай, книжка, показывай, где тут трактир. А то у меня всего две мысли: «нахера я такой голый» и «где бы опохмелиться»." first=marao/smile
title "Конец пролога. Впереди — дорога вдоль реки..."
action quest.add_tag quest_id=NakedMorningQuest tag=azif_awake
action quest.add_tag quest_id=AwakeningQuest tag=azif_awake
action quest.set_data_status quest_id=AwakeningQuest level=4
interactive_remove book_wipe
switch_scene prolog_river
end
@@ -1,6 +1,6 @@
scene: prolog_graveyard
priority: 15
condition: NakedMorningQuest.hasTag("graveyard_read") && NakedMorningQuest.notHasTag("azif_awake")
condition: AwakeningQuest.hasTag("graveyard_read") && AwakeningQuest.notHasTag("azif_awake")
---
# Прочитано, но Аль-Азиф ещё не проснулся: держим хотспот книги на сцене.
interactive_add book_wipe
@@ -1,6 +1,6 @@
scene: prolog_graveyard
priority: 15
condition: NakedMorningQuest.notHasTag("graveyard_read")
condition: AwakeningQuest.notHasTag("graveyard_read")
---
# Книга ещё не прочитана вслух: держим хотспот «за склепом» на сцене.
# Идемпотентно при каждом входе (Add по тому же id возвращает существующий объект).
+2 -1
View File
@@ -19,7 +19,8 @@ text "Лопухов не было. Только крапива да стары
text "Он потянул страницу за уголок — ноль реакции. Дёрнул сильнее: бумага была твёрдой, как металл, но гибкой. Он рвал и так, и сяк, даже ногтями пытался. Бесполезно." first=marao/sad
text "— Что за брак! Я за такие деньги..." first=marao/sad
action quest.add_tag quest_id=NakedMorningQuest tag=graveyard_read
action quest.add_tag quest_id=AwakeningQuest tag=graveyard_read
action quest.set_data_status quest_id=AwakeningQuest level=3
interactive_remove crypt_spot
interactive_add book_wipe
end
+1 -1
View File
@@ -6,7 +6,7 @@ text "— Какая-то мутная хрень. Откуда она у мен
text "В голове мелькнул смутный образ: он в какой-то лавке протягивает монеты и берёт книгу. Но когда? Где? Почему? Больше ничего." first=marao/think
text "Марао пожал плечами и сунул книгу под мышку." first=marao/smile
text "— Ладно, бумага не жрёт. Пойдём, найдём, где опохмелиться." first=marao/smile
action quest.add_tag quest_id=NakedMorningQuest tag=book_taken
action quest.add_tag quest_id=AwakeningQuest tag=book_taken
interactive_remove book_ground
switch_scene prolog_alley
end
+1 -1
View File
@@ -4,7 +4,7 @@ text "Он сделал шаг, другой, придерживаясь за с
text "Выцветшая, с бахромой по краям. Когда-то это было что-то вроде плаща или шали. На ткани угадывался вышитый крест." first=marao/think
text "Марао развернул её, оценил размер и намотал на плечи, как римскую тогу. Края едва доходили до колен." first=marao/smile
text "— Лучше, чем ничего. Срам прикрыт, хоть сзади и развевается, как знамя нищего легиона." first=marao/smile
action quest.add_tag quest_id=NakedMorningQuest tag=cloak_taken
action quest.add_tag quest_id=AwakeningQuest tag=cloak_taken
interactive_remove cloak_ground
switch_scene prolog_alley
end
@@ -1,6 +1,6 @@
scene: prolog_alley
priority: 15
condition: NakedMorningQuest.notHasTag("cloak_taken") && NakedMorningQuest.notHasTag("book_taken")
condition: AwakeningQuest.notHasTag("cloak_taken") && AwakeningQuest.notHasTag("book_taken")
---
# Ни один предмет ещё не взят: держим оба интерактива на сцене.
# Не is_one_run — идемпотентно пересоздаёт объекты при каждом входе (Add по тому же id возвращает существующий).
+2 -1
View File
@@ -1,11 +1,12 @@
scene: prolog_alley
priority: 20
is_one_run: true
condition: NakedMorningQuest.hasTag("cloak_taken") && NakedMorningQuest.hasTag("book_taken")
condition: AwakeningQuest.hasTag("cloak_taken") && AwakeningQuest.hasTag("book_taken")
---
sound locations/prolog/police
delay 0.7 hidden=true
title "Глава 2. Погоня"
action quest.set_data_status quest_id=AwakeningQuest level=1
ptext "Из подворотни вышли трое полицейских в синих мундирах, с медными пуговицами, начищенными до блеска."
ptext "— ЭЙ, ТЫ! СТОЯТЬ!"
@@ -1,6 +1,6 @@
scene: prolog_alley
priority: 15
condition: NakedMorningQuest.hasTag("cloak_taken") && NakedMorningQuest.notHasTag("book_taken")
condition: AwakeningQuest.hasTag("cloak_taken") && AwakeningQuest.notHasTag("book_taken")
---
# Тряпка взята, книга ещё нет: возвращаем книгу после перезагрузки сцены.
interactive_add book_ground
@@ -1,6 +1,6 @@
scene: prolog_alley
priority: 15
condition: NakedMorningQuest.hasTag("book_taken") && NakedMorningQuest.notHasTag("cloak_taken")
condition: AwakeningQuest.hasTag("book_taken") && AwakeningQuest.notHasTag("cloak_taken")
---
# Книга взята, тряпка ещё нет: возвращаем тряпку после перезагрузки сцены.
interactive_add cloak_ground
+2
View File
@@ -13,5 +13,7 @@ text "Холодный воздух пробрал до костей. Марао
text "— Да что ж такое! Где мои штаны?!" first=marao/sad
text "Он был абсолютно голый. Босые ступни на холодном камне. Тело болело — как будто его били чем-то тяжёлым. Возможно ногами. Возможно и по лицу." first=marao/sad
action quest.set_status quest_id=AwakeningQuest status=Progress
action quest.send_notification quest_id=AwakeningQuest
notify "Осмотрись. В переулке что-то лежит."
end
+40
View File
@@ -0,0 +1,40 @@
scene: prolog_river
priority: 10
is_one_run: true
---
background prolog/river
title "Глава 5. Дорога к вилле «Забвение»"
action quest.set_data_status quest_id=AwakeningQuest level=5
text "Марао выбрался с кладбища через дыру в заборе — подальше от ворот, где могли ждать свистки." first=marao/think
sound locations/prolog/police_go_on
text "Свистки ещё слышались за холмами. Далеко. Но он всё равно пригнулся и пошёл вдоль реки, прячась за кустами ивы." first=marao/think
text "Кусты хлестали по голым ногам. Трава резала ступни. Красная тряпка то и дело сползала, и Марао поправлял её, не сбавляя шага." first=marao/think
ptext "Книга молчала. Но вздрагивала каждые пару шагов — как будто переваривала обиду."
text "Река блеснула между деревьями. Марао остановился и принюхался к себе." first=marao/think
text "— Так. Помыться бы. А то от меня пахнет, как от склепа." first=marao/think
text "Он скинул тряпку на куст, огляделся и вошёл в воду по колено." first=marao/think
text "Вода обожгла. Марао зашипел, но не вышел — только быстрее зашлёпал по бокам и под мышками." first=marao/sad
ptext "На берегу книга засветилась багровым."
ptext "— ОСКВЕРНЕНИЕ! ТЫ ГОЛЫЙ! ПОД НЕБОМ! ОНО ВСЁ ВИДИТ!"
text "— Небо большое. Пусть терпит." first=marao/think
ptext "— Я ЧУВСТВУЮ, ЧЕМ ТЫ СОБИРАЕШЬСЯ ВЫТИРАТЬСЯ. НЕ СМЕЙ ДАЖЕ ДУМАТЬ!"
text "— А чем мне вытираться? Ты мне, что ли, полотенце?" first=marao/sad
text "Марао выбрался на берег и взял книгу. Страницы были гладкие, плотные, приятные на ощупь. Как хорошая бумага." first=marao/think
text "— Слушай. Вот тут у тебя пустые листы. Их много. А я весь мокрый." first=marao/smile
ptext "Книга задрожала. Потом заорала так, что с ближней ивы сорвалась ворона."
ptext "— НЕ СМЕЙ! Я — АЛЬ АЗИФ! Я СВЯТ! Я..."
text "— Ты мокрая. И орёшь. Значит, уговор в силе: я не вытираюсь — ты не орёшь. Мы же на кладбище договорились." first=marao/think
ptext "Книга замолчала."
ptext "Демонстративно. До самой темноты."
text "Марао натянул тряпку на плечи и пошёл дальше вдоль берега." first=marao/think
text "Километра через два лес начал редеть." first=marao/think
switch_scene prolog_villa
end
+27
View File
@@ -0,0 +1,27 @@
scene: prolog_villa
priority: 10
is_one_run: true
---
background prolog/villa
text "За поворотом реки показался дом." first=marao/think
text "Двухэтажный, деревянный, с резными наличниками. Штукатурка облезла, ставни висели криво — как зубы в пьяной драке." first=marao/think
text "Вокруг — сад в человеческий рост, ржавый колодец и тишина." first=marao/think
text "Над дверью — табличка: «Вилла “Забвение”»." first=marao/think
text "— Забвение. Красиво. — Марао хмыкнул. — Раньше тут, наверное, держали нервных. Ну, я как раз нервный. Без штанов." first=marao/smile
text "Он постучал. Тишина." first=marao/think
text "Постучал сильнее. Эхо прошлось по коридору и вернулось. Одинокое." first=marao/think
text "— Хозяева! Пустите путника переночевать! Я не маньяк, у меня даже оружия нет. Кроме книги!" first=marao/smile
ptext "Книга под мышкой возмущённо зашуршала. Но промолчала."
text "Марао дёрнул ручку. Дверь поддалась с противным скрипом, и в лицо ему пахнуло сыростью, плесенью и пылью." first=marao/think
text "— Ну хоть не падалью. — Он шагнул внутрь. — Уже дом." first=marao/smile
action quest.add_tag quest_id=AwakeningQuest tag=villa_reached
action quest.set_status quest_id=AwakeningQuest status=End
action quest.set_status quest_id=OldHouseQuest status=Progress
action quest.send_notification quest_id=OldHouseQuest
notify "Вилла «Забвение» стала твоим домом. Наверное."
switch_scene home_vestibule
end
+7 -3
View File
@@ -1,6 +1,6 @@
[gd_scene load_steps=2 format=3]
[ext_resource type="Script" path="res://Core/UI/Menu/GameMenu.cs" id="GameMenuScript"]
[ext_resource type="Script" path="res://mods/interface/src/Menu/GameMenu.cs" id="GameMenuScript"]
[node name="GameMenu" type="Control"]
layout_mode = 3
@@ -19,7 +19,7 @@ anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
color = Color(0, 0, 0, 0.65)
color = Color(0, 0, 0, 0.9)
[node name="Panel" type="Panel" parent="."]
layout_mode = 1
@@ -53,13 +53,16 @@ theme_override_constants/separation = 10
[node name="Title" type="Label" parent="Panel/Margin/VBox"]
layout_mode = 2
theme_override_font_sizes/font_size = 24
theme_override_colors/font_color = Color(0.956863, 0.941176, 0.905882, 1)
text = "Меню"
horizontal_alignment = 1
theme_override_font_sizes/font_size = 22
uppercase = true
[node name="ReturnBtn" type="Button" parent="Panel/Margin/VBox"]
layout_mode = 2
text = "Вернуться"
theme_type_variation = "CthangoverPrimary"
[node name="SaveBtn" type="Button" parent="Panel/Margin/VBox"]
layout_mode = 2
@@ -84,3 +87,4 @@ text = "Главное меню"
[node name="ExitBtn" type="Button" parent="Panel/Margin/VBox"]
layout_mode = 2
text = "Выход"
theme_type_variation = "CthangoverDanger"
-165
View File
@@ -1,165 +0,0 @@
[gd_scene format=3 uid="uid://hl0j46kh1rmc"]
[ext_resource type="Script" uid="uid://dq5snl02fmi16" path="res://Core/UI/Menu/ModsMenu.cs" id="ModsMenuScript"]
[node name="ModsMenu" type="Control" unique_id=2105177378]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
mouse_filter = 1
script = ExtResource("ModsMenuScript")
[node name="Bg" type="ColorRect" parent="." unique_id=950831612]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
color = Color(0, 0, 0, 0.98039216)
[node name="Panel" type="Panel" parent="." unique_id=664458435]
layout_mode = 1
anchors_preset = -1
anchor_left = 0.1
anchor_top = 0.15
anchor_right = 0.9
anchor_bottom = 0.85
grow_horizontal = 2
grow_vertical = 2
[node name="Margin" type="MarginContainer" parent="Panel" unique_id=1196300517]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme_override_constants/margin_left = 28
theme_override_constants/margin_top = 20
theme_override_constants/margin_right = 28
theme_override_constants/margin_bottom = 20
[node name="VBox" type="VBoxContainer" parent="Panel/Margin" unique_id=937529024]
layout_mode = 2
theme_override_constants/separation = 14
[node name="Title" type="Label" parent="Panel/Margin/VBox" unique_id=6175375]
layout_mode = 2
theme_override_font_sizes/font_size = 26
text = "Mods"
horizontal_alignment = 1
[node name="HBox" type="HBoxContainer" parent="Panel/Margin/VBox" unique_id=1102798166]
layout_mode = 2
size_flags_vertical = 3
theme_override_constants/separation = 0
[node name="LeftPanel" type="VBoxContainer" parent="Panel/Margin/VBox/HBox" unique_id=581222858]
layout_mode = 2
size_flags_horizontal = 3
size_flags_stretch_ratio = 2.0
[node name="FilterDisabledCheck" type="CheckButton" parent="Panel/Margin/VBox/HBox/LeftPanel" unique_id=1745806104]
layout_mode = 2
button_pressed = true
text = "Показать отключённые"
[node name="ResetOrderBtn" type="Button" parent="Panel/Margin/VBox/HBox/LeftPanel" unique_id=1745806105]
layout_mode = 2
text = "Сбросить порядок"
[node name="Scroll" type="ScrollContainer" parent="Panel/Margin/VBox/HBox/LeftPanel" unique_id=1745806103]
layout_mode = 2
size_flags_vertical = 3
horizontal_scroll_mode = 0
[node name="ModList" type="VBoxContainer" parent="Panel/Margin/VBox/HBox/LeftPanel/Scroll" unique_id=1970879274]
layout_mode = 2
size_flags_horizontal = 3
theme_override_constants/separation = 2
[node name="RightPanel" type="Control" parent="Panel/Margin/VBox/HBox" unique_id=1554774704]
clip_contents = true
layout_mode = 2
size_flags_horizontal = 3
size_flags_stretch_ratio = 3.0
[node name="Margin" type="MarginContainer" parent="Panel/Margin/VBox/HBox/RightPanel" unique_id=1241124709]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme_override_constants/margin_left = 16
theme_override_constants/margin_top = 8
theme_override_constants/margin_right = 0
theme_override_constants/margin_bottom = 0
[node name="DetailVBox" type="VBoxContainer" parent="Panel/Margin/VBox/HBox/RightPanel/Margin" unique_id=231694438]
layout_mode = 2
theme_override_constants/separation = 8
[node name="Icon" type="TextureRect" parent="Panel/Margin/VBox/HBox/RightPanel/Margin/DetailVBox" unique_id=1418987891]
custom_minimum_size = Vector2(128, 128)
layout_mode = 2
expand_mode = 1
stretch_mode = 5
[node name="NameLabel" type="Label" parent="Panel/Margin/VBox/HBox/RightPanel/Margin/DetailVBox" unique_id=567148075]
custom_minimum_size = Vector2(1, 0)
layout_mode = 2
theme_override_font_sizes/font_size = 18
autowrap_mode = 3
[node name="StatusLabel" type="Label" parent="Panel/Margin/VBox/HBox/RightPanel/Margin/DetailVBox" unique_id=673006819]
custom_minimum_size = Vector2(1, 0)
layout_mode = 2
autowrap_mode = 3
[node name="VersionLabel" type="Label" parent="Panel/Margin/VBox/HBox/RightPanel/Margin/DetailVBox" unique_id=2102288160]
custom_minimum_size = Vector2(1, 0)
layout_mode = 2
theme_override_font_sizes/font_size = 13
autowrap_mode = 3
[node name="AuthorLabel" type="Label" parent="Panel/Margin/VBox/HBox/RightPanel/Margin/DetailVBox" unique_id=1135622511]
custom_minimum_size = Vector2(1, 0)
layout_mode = 2
theme_override_font_sizes/font_size = 13
autowrap_mode = 3
[node name="HSep" type="HSeparator" parent="Panel/Margin/VBox/HBox/RightPanel/Margin/DetailVBox" unique_id=772722202]
layout_mode = 2
[node name="DescLabel" type="Label" parent="Panel/Margin/VBox/HBox/RightPanel/Margin/DetailVBox" unique_id=270929917]
custom_minimum_size = Vector2(120, 70)
layout_mode = 2
theme_override_font_sizes/font_size = 13
autowrap_mode = 3
[node name="DependsLabel" type="Label" parent="Panel/Margin/VBox/HBox/RightPanel/Margin/DetailVBox" unique_id=1148832840]
custom_minimum_size = Vector2(1, 0)
layout_mode = 2
theme_override_font_sizes/font_size = 13
autowrap_mode = 3
[node name="UsedByLabel" type="Label" parent="Panel/Margin/VBox/HBox/RightPanel/Margin/DetailVBox" unique_id=1295125493]
custom_minimum_size = Vector2(1, 0)
layout_mode = 2
theme_override_font_sizes/font_size = 13
autowrap_mode = 3
[node name="ToggleBtn" type="Button" parent="Panel/Margin/VBox/HBox/RightPanel/Margin/DetailVBox" unique_id=904879993]
layout_mode = 2
size_flags_horizontal = 8
text = "Toggle"
[node name="BackBtn" type="Button" parent="Panel/Margin/VBox" unique_id=1161869583]
layout_mode = 2
size_flags_horizontal = 8
text = "Back"
-71
View File
@@ -1,71 +0,0 @@
[gd_scene load_steps=3 format=3]
[ext_resource type="Script" path="res://Core/UI/Menu/SaveLoadMenu.cs" id="SaveLoadMenuScript"]
[ext_resource type="Script" path="res://Core/UI/Menu/SaveSlotList.cs" id="SaveSlotListScript"]
[node name="SaveLoadMenu" type="Control"]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
mouse_filter = 1
script = ExtResource("SaveLoadMenuScript")
[node name="Bg" type="ColorRect" parent="."]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
color = Color(0, 0, 0, 0.65)
[node name="Panel" type="Panel" parent="."]
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -420.0
offset_top = -280.0
offset_right = 420.0
offset_bottom = 280.0
grow_horizontal = 2
grow_vertical = 2
[node name="Margin" type="MarginContainer" parent="Panel"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme_override_constants/margin_left = 28
theme_override_constants/margin_top = 20
theme_override_constants/margin_right = 28
theme_override_constants/margin_bottom = 20
[node name="VBox" type="VBoxContainer" parent="Panel/Margin"]
layout_mode = 2
theme_override_constants/separation = 14
[node name="Title" type="Label" parent="Panel/Margin/VBox"]
layout_mode = 2
text = "Save/Load"
horizontal_alignment = 1
theme_override_font_sizes/font_size = 24
[node name="SlotGrid" type="Control" parent="Panel/Margin/VBox"]
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 3
custom_minimum_size = Vector2(0, 380)
script = ExtResource("SaveSlotListScript")
[node name="BackBtn" type="Button" parent="Panel/Margin/VBox"]
layout_mode = 2
text = "Back"
size_flags_horizontal = 8
-89
View File
@@ -1,89 +0,0 @@
[gd_scene format=3 uid="uid://c6kll6en347h1"]
[ext_resource type="Script" uid="uid://bkpfth5x606ge" path="res://Core/UI/Menu/SaveSlotItem.cs" id="SaveSlotItemScript"]
[node name="SaveSlotItem" type="Control" unique_id=2135443384]
custom_minimum_size = Vector2(120, 120)
layout_mode = 3
anchors_preset = 0
script = ExtResource("SaveSlotItemScript")
[node name="Background" type="ColorRect" parent="." unique_id=255218239]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
color = Color(0.12, 0.12, 0.12, 0.9)
[node name="ScreenshotRect" type="TextureRect" parent="." unique_id=1290008068]
layout_mode = 1
anchors_preset = -1
anchor_right = 1.0
anchor_bottom = 0.55
grow_horizontal = 2
grow_vertical = 2
expand_mode = 1
stretch_mode = 5
[node name="DateLabel" type="Label" parent="." unique_id=408317888]
layout_mode = 1
anchors_preset = -1
anchor_left = 0.02
anchor_top = 0.57
anchor_right = 0.98
anchor_bottom = 0.68
grow_horizontal = 2
theme_override_font_sizes/font_size = 12
[node name="SceneLabel" type="Label" parent="." unique_id=1968956898]
layout_mode = 1
anchors_preset = -1
anchor_left = 0.02
anchor_top = 0.70
anchor_right = 0.98
anchor_bottom = 0.80
grow_horizontal = 2
theme_override_font_sizes/font_size = 11
[node name="TimeLabel" type="Label" parent="." unique_id=698436659]
layout_mode = 1
anchors_preset = -1
anchor_left = 0.02
anchor_top = 0.83
anchor_right = 0.56
anchor_bottom = 0.95
grow_horizontal = 2
theme_override_font_sizes/font_size = 10
[node name="StatsLabel" type="Label" parent="." unique_id=400000001]
layout_mode = 1
anchors_preset = -1
anchor_left = 0.58
anchor_top = 0.83
anchor_right = 0.98
anchor_bottom = 0.95
grow_horizontal = 2
theme_override_font_sizes/font_size = 10
horizontal_alignment = 2
[node name="EmptyLabel" type="Label" parent="." unique_id=1262712091]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme_override_font_sizes/font_size = 14
horizontal_alignment = 1
vertical_alignment = 1
[node name="SlotButton" type="Button" parent="." unique_id=1877010914]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
flat = true
-1
View File
@@ -1 +0,0 @@
uid://c6kll6en347h1
-370
View File
@@ -1,370 +0,0 @@
[gd_scene format=3 uid="uid://gqdtni3liast"]
[ext_resource type="Script" uid="uid://bjgxbheqsar5r" path="res://Core/UI/Menu/SettingsMenu.cs" id="SettingsMenuScript"]
[node name="SettingsMenu" type="Control" unique_id=894644832]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
mouse_filter = 1
script = ExtResource("SettingsMenuScript")
[node name="Bg" type="ColorRect" parent="." unique_id=21945756]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
color = Color(0, 0, 0, 1)
[node name="Panel" type="Panel" parent="." unique_id=1554260654]
layout_mode = 1
anchors_preset = -1
anchor_left = 0.1
anchor_top = 0.1
anchor_right = 0.9
anchor_bottom = 0.9
grow_horizontal = 2
grow_vertical = 2
[node name="Margin" type="MarginContainer" parent="Panel" unique_id=1929120286]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme_override_constants/margin_left = 28
theme_override_constants/margin_top = 20
theme_override_constants/margin_right = 28
theme_override_constants/margin_bottom = 20
[node name="VBox" type="VBoxContainer" parent="Panel/Margin" unique_id=150548585]
layout_mode = 2
theme_override_constants/separation = 14
[node name="Title" type="Label" parent="Panel/Margin/VBox" unique_id=86160906]
layout_mode = 2
theme_override_font_sizes/font_size = 26
text = "Settings"
horizontal_alignment = 1
[node name="Tabs" type="TabContainer" parent="Panel/Margin/VBox" unique_id=1524671125]
layout_mode = 2
size_flags_vertical = 3
tab_alignment = 1
current_tab = 0
[node name="GeneralMargin" type="MarginContainer" parent="Panel/Margin/VBox/Tabs"]
layout_mode = 2
metadata/_tab_index = 0
theme_override_constants/margin_left = 16
theme_override_constants/margin_top = 12
theme_override_constants/margin_right = 16
theme_override_constants/margin_bottom = 12
[node name="General" type="VBoxContainer" parent="Panel/Margin/VBox/Tabs/GeneralMargin" unique_id=2028800899]
layout_mode = 2
theme_override_constants/separation = 12
[node name="Spacer" type="Control" parent="Panel/Margin/VBox/Tabs/GeneralMargin/General" unique_id=1203872148]
custom_minimum_size = Vector2(0, 12)
layout_mode = 2
[node name="LangBox" type="HBoxContainer" parent="Panel/Margin/VBox/Tabs/GeneralMargin/General" unique_id=684741721]
layout_mode = 2
theme_override_constants/separation = 16
[node name="LangLabel" type="Label" parent="Panel/Margin/VBox/Tabs/GeneralMargin/General/LangBox" unique_id=1707108944]
layout_mode = 2
size_flags_horizontal = 3
text = "Language"
[node name="LangSelect" type="OptionButton" parent="Panel/Margin/VBox/Tabs/GeneralMargin/General/LangBox" unique_id=2037857401]
layout_mode = 2
size_flags_horizontal = 3
[node name="AudioMargin" type="MarginContainer" parent="Panel/Margin/VBox/Tabs"]
layout_mode = 2
visible = false
metadata/_tab_index = 1
theme_override_constants/margin_left = 16
theme_override_constants/margin_top = 12
theme_override_constants/margin_right = 16
theme_override_constants/margin_bottom = 12
[node name="Audio" type="VBoxContainer" parent="Panel/Margin/VBox/Tabs/AudioMargin" unique_id=564523157]
layout_mode = 2
theme_override_constants/separation = 4
[node name="SoundsBox" type="VBoxContainer" parent="Panel/Margin/VBox/Tabs/AudioMargin/Audio" unique_id=508426867]
layout_mode = 2
theme_override_constants/separation = 4
[node name="ToggleRow" type="HBoxContainer" parent="Panel/Margin/VBox/Tabs/AudioMargin/Audio/SoundsBox" unique_id=274422939]
layout_mode = 2
theme_override_constants/separation = 12
[node name="SoundsLabel" type="Label" parent="Panel/Margin/VBox/Tabs/AudioMargin/Audio/SoundsBox/ToggleRow" unique_id=1483011032]
layout_mode = 2
size_flags_horizontal = 3
text = "Sounds"
[node name="SoundsToggle" type="CheckButton" parent="Panel/Margin/VBox/Tabs/AudioMargin/Audio/SoundsBox/ToggleRow" unique_id=126270437]
layout_mode = 2
[node name="VolumeRow" type="HBoxContainer" parent="Panel/Margin/VBox/Tabs/AudioMargin/Audio/SoundsBox" unique_id=585263148]
layout_mode = 2
theme_override_constants/separation = 12
[node name="SoundsVolumeLabel" type="Label" parent="Panel/Margin/VBox/Tabs/AudioMargin/Audio/SoundsBox/VolumeRow" unique_id=1327120426]
layout_mode = 2
text = "Volume"
[node name="SoundsVolume" type="HSlider" parent="Panel/Margin/VBox/Tabs/AudioMargin/Audio/SoundsBox/VolumeRow" unique_id=2061615116]
layout_mode = 2
size_flags_horizontal = 3
value = 100.0
[node name="SoundsVolumeValue" type="Label" parent="Panel/Margin/VBox/Tabs/AudioMargin/Audio/SoundsBox/VolumeRow" unique_id=1079108664]
custom_minimum_size = Vector2(48, 0)
layout_mode = 2
text = "100%"
horizontal_alignment = 2
[node name="Sep" type="HSeparator" parent="Panel/Margin/VBox/Tabs/AudioMargin/Audio" unique_id=988886928]
custom_minimum_size = Vector2(0, 8)
layout_mode = 2
[node name="MusicBox" type="VBoxContainer" parent="Panel/Margin/VBox/Tabs/AudioMargin/Audio" unique_id=1316259016]
layout_mode = 2
theme_override_constants/separation = 4
[node name="ToggleRow2" type="HBoxContainer" parent="Panel/Margin/VBox/Tabs/AudioMargin/Audio/MusicBox" unique_id=553618696]
layout_mode = 2
theme_override_constants/separation = 12
[node name="MusicLabel" type="Label" parent="Panel/Margin/VBox/Tabs/AudioMargin/Audio/MusicBox/ToggleRow2" unique_id=1559600377]
layout_mode = 2
size_flags_horizontal = 3
text = "Music"
[node name="MusicToggle" type="CheckButton" parent="Panel/Margin/VBox/Tabs/AudioMargin/Audio/MusicBox/ToggleRow2" unique_id=901979875]
layout_mode = 2
[node name="VolumeRow2" type="HBoxContainer" parent="Panel/Margin/VBox/Tabs/AudioMargin/Audio/MusicBox" unique_id=1411284591]
layout_mode = 2
theme_override_constants/separation = 12
[node name="MusicVolumeLabel" type="Label" parent="Panel/Margin/VBox/Tabs/AudioMargin/Audio/MusicBox/VolumeRow2" unique_id=1952498749]
layout_mode = 2
text = "Volume"
[node name="MusicVolume" type="HSlider" parent="Panel/Margin/VBox/Tabs/AudioMargin/Audio/MusicBox/VolumeRow2" unique_id=504218348]
layout_mode = 2
size_flags_horizontal = 3
value = 5.0
[node name="MusicVolumeValue" type="Label" parent="Panel/Margin/VBox/Tabs/AudioMargin/Audio/MusicBox/VolumeRow2" unique_id=1866810087]
custom_minimum_size = Vector2(48, 0)
layout_mode = 2
text = "5%"
horizontal_alignment = 2
[node name="Sep2" type="HSeparator" parent="Panel/Margin/VBox/Tabs/AudioMargin/Audio" unique_id=1486966851]
custom_minimum_size = Vector2(0, 8)
layout_mode = 2
[node name="AmbientBox" type="VBoxContainer" parent="Panel/Margin/VBox/Tabs/AudioMargin/Audio" unique_id=127969403]
layout_mode = 2
theme_override_constants/separation = 4
[node name="ToggleRow3" type="HBoxContainer" parent="Panel/Margin/VBox/Tabs/AudioMargin/Audio/AmbientBox" unique_id=338401886]
layout_mode = 2
theme_override_constants/separation = 12
[node name="AmbientLabel" type="Label" parent="Panel/Margin/VBox/Tabs/AudioMargin/Audio/AmbientBox/ToggleRow3" unique_id=872436692]
layout_mode = 2
size_flags_horizontal = 3
text = "Ambient"
[node name="AmbientToggle" type="CheckButton" parent="Panel/Margin/VBox/Tabs/AudioMargin/Audio/AmbientBox/ToggleRow3" unique_id=1160929014]
layout_mode = 2
[node name="VolumeRow3" type="HBoxContainer" parent="Panel/Margin/VBox/Tabs/AudioMargin/Audio/AmbientBox" unique_id=1139865718]
layout_mode = 2
theme_override_constants/separation = 12
[node name="AmbientVolumeLabel" type="Label" parent="Panel/Margin/VBox/Tabs/AudioMargin/Audio/AmbientBox/VolumeRow3" unique_id=1610793395]
layout_mode = 2
text = "Volume"
[node name="AmbientVolume" type="HSlider" parent="Panel/Margin/VBox/Tabs/AudioMargin/Audio/AmbientBox/VolumeRow3" unique_id=1343104331]
layout_mode = 2
size_flags_horizontal = 3
value = 5.0
[node name="AmbientVolumeValue" type="Label" parent="Panel/Margin/VBox/Tabs/AudioMargin/Audio/AmbientBox/VolumeRow3" unique_id=1909728919]
custom_minimum_size = Vector2(48, 0)
layout_mode = 2
text = "5%"
horizontal_alignment = 2
[node name="DisplayMargin" type="MarginContainer" parent="Panel/Margin/VBox/Tabs"]
layout_mode = 2
visible = false
metadata/_tab_index = 2
theme_override_constants/margin_left = 16
theme_override_constants/margin_top = 12
theme_override_constants/margin_right = 16
theme_override_constants/margin_bottom = 12
[node name="Display" type="VBoxContainer" parent="Panel/Margin/VBox/Tabs/DisplayMargin" unique_id=1371435162]
layout_mode = 2
theme_override_constants/separation = 10
[node name="Spacer2" type="Control" parent="Panel/Margin/VBox/Tabs/DisplayMargin/Display" unique_id=270871165]
custom_minimum_size = Vector2(0, 12)
layout_mode = 2
[node name="ModeBox" type="HBoxContainer" parent="Panel/Margin/VBox/Tabs/DisplayMargin/Display" unique_id=455596205]
layout_mode = 2
theme_override_constants/separation = 16
[node name="ModeLabel" type="Label" parent="Panel/Margin/VBox/Tabs/DisplayMargin/Display/ModeBox" unique_id=1346202262]
layout_mode = 2
size_flags_horizontal = 3
text = "Window Mode"
[node name="ModeSelect" type="OptionButton" parent="Panel/Margin/VBox/Tabs/DisplayMargin/Display/ModeBox" unique_id=631713497]
layout_mode = 2
size_flags_horizontal = 3
[node name="ResBox" type="HBoxContainer" parent="Panel/Margin/VBox/Tabs/DisplayMargin/Display" unique_id=603217917]
layout_mode = 2
theme_override_constants/separation = 16
[node name="ResLabel" type="Label" parent="Panel/Margin/VBox/Tabs/DisplayMargin/Display/ResBox" unique_id=1714673968]
layout_mode = 2
size_flags_horizontal = 3
text = "Resolution"
[node name="ResSelect" type="OptionButton" parent="Panel/Margin/VBox/Tabs/DisplayMargin/Display/ResBox" unique_id=651322592]
layout_mode = 2
size_flags_horizontal = 3
[node name="MonitorBox" type="HBoxContainer" parent="Panel/Margin/VBox/Tabs/DisplayMargin/Display" unique_id=284981749]
layout_mode = 2
theme_override_constants/separation = 16
[node name="MonitorLabel" type="Label" parent="Panel/Margin/VBox/Tabs/DisplayMargin/Display/MonitorBox" unique_id=1905911340]
layout_mode = 2
size_flags_horizontal = 3
text = "Monitor"
[node name="MonitorSelect" type="OptionButton" parent="Panel/Margin/VBox/Tabs/DisplayMargin/Display/MonitorBox" unique_id=1334336966]
layout_mode = 2
size_flags_horizontal = 3
[node name="ScaleBox" type="HBoxContainer" parent="Panel/Margin/VBox/Tabs/DisplayMargin/Display" unique_id=930383631]
layout_mode = 2
theme_override_constants/separation = 16
[node name="ScaleLabel" type="Label" parent="Panel/Margin/VBox/Tabs/DisplayMargin/Display/ScaleBox" unique_id=1924008447]
layout_mode = 2
size_flags_horizontal = 3
text = "Scale"
[node name="ScaleSelect" type="OptionButton" parent="Panel/Margin/VBox/Tabs/DisplayMargin/Display/ScaleBox" unique_id=2096132155]
layout_mode = 2
size_flags_horizontal = 3
[node name="VSyncRow" type="HBoxContainer" parent="Panel/Margin/VBox/Tabs/DisplayMargin/Display" unique_id=348516587]
layout_mode = 2
theme_override_constants/separation = 12
[node name="VSyncLabel" type="Label" parent="Panel/Margin/VBox/Tabs/DisplayMargin/Display/VSyncRow" unique_id=1204827790]
layout_mode = 2
size_flags_horizontal = 3
text = "VSync"
[node name="VSyncToggle" type="CheckButton" parent="Panel/Margin/VBox/Tabs/DisplayMargin/Display/VSyncRow" unique_id=1909935663]
layout_mode = 2
[node name="ModSettingsMargin" type="MarginContainer" parent="Panel/Margin/VBox/Tabs"]
layout_mode = 2
visible = false
metadata/_tab_index = 3
theme_override_constants/margin_left = 16
theme_override_constants/margin_top = 12
theme_override_constants/margin_right = 16
theme_override_constants/margin_bottom = 12
[node name="ModSettings" type="HBoxContainer" parent="Panel/Margin/VBox/Tabs/ModSettingsMargin" unique_id=2038671463]
layout_mode = 2
size_flags_vertical = 3
theme_override_constants/separation = 12
[node name="LeftPanel" type="VBoxContainer" parent="Panel/Margin/VBox/Tabs/ModSettingsMargin/ModSettings" unique_id=1856089080]
custom_minimum_size = Vector2(240, 0)
layout_mode = 2
theme_override_constants/separation = 6
[node name="ModsTitle" type="Label" parent="Panel/Margin/VBox/Tabs/ModSettingsMargin/ModSettings/LeftPanel" unique_id=1639725410]
layout_mode = 2
theme_override_font_sizes/font_size = 15
text = "Mods"
horizontal_alignment = 1
[node name="ModScroll" type="ScrollContainer" parent="Panel/Margin/VBox/Tabs/ModSettingsMargin/ModSettings/LeftPanel" unique_id=1412822434]
layout_mode = 2
size_flags_vertical = 3
horizontal_scroll_mode = 0
[node name="ModList" type="VBoxContainer" parent="Panel/Margin/VBox/Tabs/ModSettingsMargin/ModSettings/LeftPanel/ModScroll" unique_id=543902025]
layout_mode = 2
[node name="Sep" type="VBoxContainer" parent="Panel/Margin/VBox/Tabs/ModSettingsMargin/ModSettings" unique_id=950619413]
custom_minimum_size = Vector2(10, 0)
layout_mode = 2
[node name="RightPanel" type="VBoxContainer" parent="Panel/Margin/VBox/Tabs/ModSettingsMargin/ModSettings" unique_id=272738827]
layout_mode = 2
size_flags_horizontal = 3
theme_override_constants/separation = 8
[node name="TopBar" type="HBoxContainer" parent="Panel/Margin/VBox/Tabs/ModSettingsMargin/ModSettings/RightPanel" unique_id=678746437]
layout_mode = 2
theme_override_constants/separation = 12
[node name="SelectedModName" type="Label" parent="Panel/Margin/VBox/Tabs/ModSettingsMargin/ModSettings/RightPanel/TopBar" unique_id=393931159]
layout_mode = 2
size_flags_horizontal = 3
theme_override_font_sizes/font_size = 16
[node name="ResetBtn" type="Button" parent="Panel/Margin/VBox/Tabs/ModSettingsMargin/ModSettings/RightPanel/TopBar" unique_id=531057889]
layout_mode = 2
text = "Reset"
[node name="SettingsScroll" type="ScrollContainer" parent="Panel/Margin/VBox/Tabs/ModSettingsMargin/ModSettings/RightPanel" unique_id=674333894]
layout_mode = 2
size_flags_vertical = 3
horizontal_scroll_mode = 0
[node name="SettingsContainer" type="VBoxContainer" parent="Panel/Margin/VBox/Tabs/ModSettingsMargin/ModSettings/RightPanel/SettingsScroll" unique_id=1664189823]
layout_mode = 2
theme_override_constants/separation = 6
[node name="Placeholder" type="Label" parent="Panel/Margin/VBox/Tabs/ModSettingsMargin/ModSettings/RightPanel/SettingsScroll/SettingsContainer" unique_id=1501445323]
layout_mode = 2
text = "No mod settings available"
horizontal_alignment = 1
[node name="BackBtn" type="Button" parent="Panel/Margin/VBox" unique_id=249196016]
layout_mode = 2
size_flags_horizontal = 8
text = "Back"
+6
View File
@@ -0,0 +1,6 @@
{
"name": "prolog_river",
"defaultBackground": "prolog/river",
"defaultAmbient": "locations/home/outside/river",
"defaultScenario": "scenarios/prolog/river_arrival.scenario"
}
+6
View File
@@ -0,0 +1,6 @@
{
"name": "prolog_villa",
"defaultBackground": "prolog/villa",
"defaultAmbient": "locations/home/outside/river",
"defaultScenario": "scenarios/prolog/villa_arrival.scenario"
}
+2 -2
View File
@@ -1,7 +1,7 @@
[gd_scene load_steps=2 format=3]
[ext_resource type="Script" path="res://Core/UI/Dialog/AnswerBox.cs" id="1_answerbox"]
[ext_resource type="PackedScene" path="res://scenes/ui/answer_item.tscn" id="2_answeritem"]
[ext_resource type="Script" path="res://mods/dialog_base/src/UI/Dialog/AnswerBox.cs" id="1_answerbox"]
[ext_resource type="PackedScene" path="res://mods/visual_novel_core/scenes/ui/answer_item.tscn" id="2_answeritem"]
[node name="AnswerBox" type="Control"]
layout_mode = 3
+1 -1
View File
@@ -1,6 +1,6 @@
[gd_scene format=3 uid="uid://bv80qy227xxee"]
[ext_resource type="Script" uid="uid://dbrnsck0vtfb3" path="res://Core/UI/Dialog/AnswerItem.cs" id="1_answeritem"]
[ext_resource type="Script" uid="uid://dbrnsck0vtfb3" path="res://mods/dialog_base/src/UI/Dialog/AnswerItem.cs" id="1_answeritem"]
[node name="AnswerItem" type="Control" unique_id=1180917887]
custom_minimum_size = Vector2(0, 50)
-1
View File
@@ -1 +0,0 @@
uid://bv80qy227xxee
@@ -1,41 +0,0 @@
[gd_scene format=3 uid="uid://bb36m1yaqwt8k"]
[ext_resource type="Script" uid="uid://de8plnw63lfno" path="res://Core/UI/CharacterPanel/ActionCardBehaviour.cs" id="1_script"]
[node name="ActionCard" type="Control" unique_id=576160337]
custom_minimum_size = Vector2(300, 100)
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
mouse_filter = 1
script = ExtResource("1_script")
[node name="Icon" type="TextureRect" parent="." unique_id=910618115]
custom_minimum_size = Vector2(50, 100)
layout_mode = 1
anchors_preset = -1
anchor_top = 0.5
anchor_bottom = 0.5
offset_left = 4.0
offset_top = -14.0
offset_right = 32.0
offset_bottom = 14.0
grow_vertical = 2
mouse_filter = 2
expand_mode = 2
stretch_mode = 5
[node name="NameLabel" type="Label" parent="." unique_id=1356044091]
layout_mode = 1
anchors_preset = -1
anchor_right = 1.0
anchor_bottom = 1.0
offset_left = 110.0
offset_right = -4.0
grow_horizontal = 2
grow_vertical = 2
text = "Action"
vertical_alignment = 1
@@ -1,18 +0,0 @@
[gd_scene format=3 uid="uid://cgjc22lv4w4s5"]
[ext_resource type="Script" uid="uid://cwois2ld152sn" path="res://Core/UI/CharacterPanel/ActionPoolBehaviour.cs" id="1_script"]
[node name="ActionPool" type="Control" unique_id=1854115493]
layout_mode = 3
anchors_preset = 0
mouse_filter = 1
script = ExtResource("1_script")
[node name="Container" type="VBoxContainer" parent="." unique_id=1312152261]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme_override_constants/separation = 4
@@ -1,24 +0,0 @@
[gd_scene format=3 uid="uid://b00u0cgcip134"]
[ext_resource type="Script" uid="uid://bfawx4g6dyrjo" path="res://Core/UI/CharacterPanel/ActionSlotBehaviour.cs" id="1_script"]
[node name="ActionSlot" type="Control" unique_id=1066231859]
custom_minimum_size = Vector2(300, 100)
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
mouse_filter = 1
script = ExtResource("1_script")
[node name="Bg" type="ColorRect" parent="." unique_id=1234999814]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
mouse_filter = 2
color = Color(0.1, 0.1, 0.15, 0.5)
@@ -1,56 +0,0 @@
[gd_scene format=3 uid="uid://67q36mh0x454"]
[ext_resource type="Script" uid="uid://dkioyb2bx5e10" path="res://Core/UI/CharacterPanel/CharacterCardBehaviour.cs" id="1_script"]
[ext_resource type="PackedScene" uid="uid://b00u0cgcip134" path="res://scenes/ui/character_panel/action_slot.tscn" id="2_slot"]
[node name="CharacterCard" type="Control" unique_id=161727493]
custom_minimum_size = Vector2(250, 370)
layout_mode = 3
anchors_preset = 10
anchor_right = 1.0
grow_horizontal = 2
mouse_filter = 1
script = ExtResource("1_script")
[node name="Margin" type="MarginContainer" parent="." unique_id=540453317]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme_override_constants/margin_left = 8
theme_override_constants/margin_top = 8
theme_override_constants/margin_right = 8
theme_override_constants/margin_bottom = 8
[node name="VBox" type="VBoxContainer" parent="Margin" unique_id=1477867509]
layout_mode = 2
theme_override_constants/separation = 6
[node name="Header" type="HBoxContainer" parent="Margin/VBox" unique_id=410961700]
layout_mode = 2
[node name="Portrait" type="TextureRect" parent="Margin/VBox/Header" unique_id=427546847]
custom_minimum_size = Vector2(60, 60)
layout_mode = 2
expand_mode = 2
stretch_mode = 5
[node name="NameLabel" type="Label" parent="Margin/VBox/Header" unique_id=604539797]
layout_mode = 2
size_flags_horizontal = 3
text = "Character Name"
[node name="Slots" type="VBoxContainer" parent="Margin/VBox" unique_id=2066648023]
layout_mode = 2
theme_override_constants/separation = 4
[node name="Slot0" parent="Margin/VBox/Slots" unique_id=592809057 instance=ExtResource("2_slot")]
layout_mode = 2
[node name="Slot1" parent="Margin/VBox/Slots" unique_id=424670098 instance=ExtResource("2_slot")]
layout_mode = 2
[node name="Slot2" parent="Margin/VBox/Slots" unique_id=1790943736 instance=ExtResource("2_slot")]
layout_mode = 2
@@ -1,120 +0,0 @@
[gd_scene format=3 uid="uid://boo65s3v3vn2c"]
[ext_resource type="Script" uid="uid://b60voxni8jut4" path="res://Core/UI/CharacterPanel/CharacterPanelBehaviour.cs" id="1_script"]
[ext_resource type="PackedScene" uid="uid://cgjc22lv4w4s5" path="res://scenes/ui/character_panel/action_pool.tscn" id="2_pool"]
[node name="CharacterPanel" type="Control" unique_id=2003172289]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
mouse_filter = 1
script = ExtResource("1_script")
[node name="Bg" type="ColorRect" parent="." unique_id=538790315]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
mouse_filter = 2
color = Color(0.05, 0.05, 0.1, 0.9)
[node name="LeftPanel" type="Panel" parent="." unique_id=582936654]
layout_mode = 1
anchors_preset = -1
anchor_right = 0.68700004
anchor_bottom = 1.0
offset_right = 0.95996094
size_flags_horizontal = 3
[node name="LeftVBox" type="VBoxContainer" parent="LeftPanel" unique_id=927965975]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
[node name="Title" type="Label" parent="LeftPanel/LeftVBox" unique_id=1322979441]
layout_mode = 2
theme_override_font_sizes/font_size = 18
text = "ui/character_panel/title"
horizontal_alignment = 1
[node name="ScrollContainer" type="ScrollContainer" parent="LeftPanel/LeftVBox" unique_id=649910277]
layout_mode = 2
size_flags_vertical = 3
horizontal_scroll_mode = 0
[node name="CharactersContainer" type="VBoxContainer" parent="LeftPanel/LeftVBox/ScrollContainer" unique_id=15539617]
layout_mode = 2
size_flags_horizontal = 3
theme_override_constants/separation = 10
[node name="RightPanel" type="Panel" parent="." unique_id=94541911]
layout_mode = 1
anchors_preset = -1
anchor_left = 0.69500005
anchor_right = 1.0
anchor_bottom = 0.91800004
offset_left = 0.5998535
offset_bottom = -0.032043457
grow_horizontal = 2
grow_vertical = 2
size_flags_horizontal = 3
[node name="ActionPoolScroll" type="ScrollContainer" parent="RightPanel" unique_id=1837472944]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
horizontal_scroll_mode = 0
[node name="ActionPool" parent="RightPanel/ActionPoolScroll" unique_id=2092045870 instance=ExtResource("2_pool")]
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 3
[node name="CloseButton" type="Button" parent="." unique_id=140259217]
layout_mode = 1
anchors_preset = -1
anchor_left = 0.697
anchor_top = 0.94100004
anchor_right = 0.85
anchor_bottom = 0.9850001
offset_left = -0.23999023
offset_top = 0.4159546
offset_bottom = 0.35992432
grow_horizontal = 0
grow_vertical = 0
text = "ui/character_panel/close"
[node name="ResetButton" type="Button" parent="." unique_id=73911922]
layout_mode = 1
anchors_preset = -1
anchor_left = 0.855
anchor_top = 0.94100004
anchor_right = 0.99300003
anchor_bottom = 0.9850001
offset_left = 0.39990234
offset_top = 0.4159546
offset_right = 0.4399414
offset_bottom = 0.35992432
grow_horizontal = 0
grow_vertical = 0
text = "ui/character_panel/reset"
[node name="DragLayer" type="Control" parent="." unique_id=1296303852]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
mouse_filter = 2
+7 -9
View File
@@ -1,9 +1,10 @@
[gd_scene format=3 uid="uid://b8vnxfoixyust"]
[ext_resource type="Script" uid="uid://b41bti3wq4m88" path="res://Core/UI/Dialog/DialogBox.cs" id="1_dialogbox"]
[ext_resource type="PackedScene" path="res://scenes/ui/answer_box.tscn" id="2_answerbox"]
[ext_resource type="Script" uid="uid://b41bti3wq4m88" path="res://mods/dialog_base/src/UI/Dialog/DialogBox.cs" id="1_dialogbox"]
[node name="DialogBox" type="Control" unique_id=702809053 node_paths=PackedStringArray("textField", "titleField", "titleBody", "firstAvatar", "secondAvatar")]
[ext_resource type="PackedScene" path="res://mods/visual_novel_core/scenes/ui/answer_box.tscn" id="2_answerbox"]
[node name="DialogBox" type="Control" unique_id=702809053]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
@@ -12,11 +13,6 @@ grow_horizontal = 2
grow_vertical = 2
script = ExtResource("1_dialogbox")
answerBoxScene = ExtResource("2_answerbox")
textField = NodePath("DialogBody/TextField")
titleField = NodePath("TitleBody/TitleField")
titleBody = NodePath("TitleBody")
firstAvatar = NodePath("FirstAvatar")
secondAvatar = NodePath("SecondAvatar")
[node name="DialogBody" type="ColorRect" parent="." unique_id=1510369637]
layout_mode = 1
@@ -27,7 +23,7 @@ anchor_bottom = 1.0
offset_top = -300.0
grow_horizontal = 2
grow_vertical = 0
color = Color(0, 0, 0, 0.85)
color = Color(0.054902, 0.058824, 0.082353, 0.9)
[node name="TextField" type="Label" parent="DialogBody" unique_id=2065569930]
layout_mode = 1
@@ -41,6 +37,7 @@ offset_bottom = -10.0
grow_horizontal = 2
grow_vertical = 2
theme_override_font_sizes/font_size = 24
theme_override_colors/font_color = Color(0.909804, 0.898039, 0.870588, 1)
vertical_alignment = 1
autowrap_mode = 2
@@ -103,5 +100,6 @@ anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme_override_font_sizes/font_size = 28
theme_override_colors/font_color = Color(0.956863, 0.941176, 0.905882, 1)
horizontal_alignment = 1
vertical_alignment = 1
-1
View File
@@ -1 +0,0 @@
uid://b8vnxfoixyust
+12
View File
@@ -0,0 +1,12 @@
[gd_scene format=3]
[ext_resource type="Script" path="res://mods/dialog_base/src/UI/Dialog/DialogCanvas.cs" id="1_canvas"]
[node name="DialogCanvas" type="Control"]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
script = ExtResource("1_canvas")
+2 -30
View File
@@ -1,38 +1,10 @@
[gd_scene format=3]
[ext_resource type="Script" path="res://Core/UI/Inventory/InventoryItemBehaviour.cs" id="1"]
[ext_resource type="Script" path="res://mods/items_base/src/ui/InventoryItemBehaviour.cs" id="1"]
[node name="InventoryItem" type="Control" node_paths=PackedStringArray("imgIcon", "txtCount")]
[node name="InventoryItem" type="Control"]
layout_mode = 3
anchors_preset = 0
size_flags_horizontal = 3
size_flags_vertical = 3
script = ExtResource("1")
imgIcon = NodePath("imgIcon")
txtCount = NodePath("txtCount")
[node name="imgIcon" type="TextureRect" parent="."]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
expand_mode = 1
stretch_mode = 4
mouse_filter = 2
[node name="txtCount" type="Label" parent="."]
layout_mode = 1
anchors_preset = -1
anchor_left = 0.6
anchor_top = 0.7
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 0
grow_vertical = 0
theme_override_font_sizes/font_size = 14
horizontal_alignment = 2
vertical_alignment = 1
mouse_filter = 2
text = ""
+140 -1
View File
@@ -1,6 +1,6 @@
[gd_scene format=3]
[ext_resource type="Script" path="res://Core/UI/Inventory/InventoryPanelBehaviour.cs" id="1_script"]
[ext_resource type="Script" path="res://mods/items_base/src/ui/InventoryPanelBehaviour.cs" id="1_script"]
[node name="InventoryPanel" type="Control"]
layout_mode = 3
@@ -11,3 +11,142 @@ grow_horizontal = 2
grow_vertical = 2
mouse_filter = 1
script = ExtResource("1_script")
[node name="Backdrop" type="ColorRect" parent="."]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
mouse_filter = 2
[node name="Panel" type="Panel" parent="."]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
offset_left = 40.0
offset_top = 78.0
offset_right = -40.0
offset_bottom = -30.0
grow_horizontal = 2
grow_vertical = 2
mouse_filter = 1
[node name="Margin" type="MarginContainer" parent="Panel"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
theme_override_constants/margin_left = 24
theme_override_constants/margin_top = 16
theme_override_constants/margin_right = 24
theme_override_constants/margin_bottom = 14
mouse_filter = 1
[node name="Root" type="VBoxContainer" parent="Panel/Margin"]
layout_mode = 2
theme_override_constants/separation = 12
mouse_filter = 1
[node name="Header" type="HBoxContainer" parent="Panel/Margin/Root"]
layout_mode = 2
theme_override_constants/separation = 18
[node name="Title" type="Label" parent="Panel/Margin/Root/Header"]
layout_mode = 2
theme_override_font_sizes/font_size = 24
[node name="Tabs" type="HBoxContainer" parent="Panel/Margin/Root/Header"]
layout_mode = 2
theme_override_constants/separation = 6
[node name="HeaderSpacer" type="Control" parent="Panel/Margin/Root/Header"]
layout_mode = 2
size_flags_horizontal = 3
mouse_filter = 2
[node name="ApBox" type="HBoxContainer" parent="Panel/Margin/Root/Header"]
visible = false
layout_mode = 2
theme_override_constants/separation = 8
[node name="ApLabel" type="Label" parent="Panel/Margin/Root/Header/ApBox"]
layout_mode = 2
theme_override_font_sizes/font_size = 11
[node name="ApPips" type="HBoxContainer" parent="Panel/Margin/Root/Header/ApBox"]
layout_mode = 2
theme_override_constants/separation = 5
[node name="CloseButton" type="Button" parent="Panel/Margin/Root/Header"]
custom_minimum_size = Vector2(38, 38)
layout_mode = 2
focus_mode = 0
text = "✕"
[node name="Rule" type="Panel" parent="Panel/Margin/Root"]
custom_minimum_size = Vector2(0, 1)
layout_mode = 2
mouse_filter = 2
[node name="Toolbar" type="HBoxContainer" parent="Panel/Margin/Root"]
layout_mode = 2
theme_override_constants/separation = 10
[node name="Search" type="LineEdit" parent="Panel/Margin/Root/Toolbar"]
layout_mode = 2
size_flags_horizontal = 3
theme_override_font_sizes/font_size = 13
[node name="SortOption" type="OptionButton" parent="Panel/Margin/Root/Toolbar"]
layout_mode = 2
theme_override_font_sizes/font_size = 13
[node name="Body" type="HBoxContainer" parent="Panel/Margin/Root"]
layout_mode = 2
size_flags_vertical = 3
theme_override_constants/separation = 14
[node name="Left" type="VBoxContainer" parent="Panel/Margin/Root/Body"]
layout_mode = 2
size_flags_horizontal = 3
theme_override_constants/separation = 10
[node name="GridScroll" type="ScrollContainer" parent="Panel/Margin/Root/Body/Left"]
layout_mode = 2
size_flags_vertical = 3
horizontal_scroll_mode = 0
[node name="GridContent" type="Control" parent="Panel/Margin/Root/Body/Left/GridScroll"]
layout_mode = 2
size_flags_horizontal = 3
mouse_filter = 0
[node name="GridFooter" type="HBoxContainer" parent="Panel/Margin/Root/Body/Left"]
layout_mode = 2
theme_override_constants/separation = 16
[node name="ShownLabel" type="Label" parent="Panel/Margin/Root/Body/Left/GridFooter"]
layout_mode = 2
theme_override_font_sizes/font_size = 12
[node name="HintLabel" type="Label" parent="Panel/Margin/Root/Body/Left/GridFooter"]
layout_mode = 2
theme_override_font_sizes/font_size = 12
[node name="Right" type="PanelContainer" parent="Panel/Margin/Root/Body"]
custom_minimum_size = Vector2(430, 0)
layout_mode = 2
[node name="PassportScroll" type="ScrollContainer" parent="Panel/Margin/Root/Body/Right"]
layout_mode = 2
horizontal_scroll_mode = 0
[node name="Passport" type="VBoxContainer" parent="Panel/Margin/Root/Body/Right/PassportScroll"]
layout_mode = 2
size_flags_horizontal = 3
theme_override_constants/separation = 14
+52
View File
@@ -0,0 +1,52 @@
[gd_scene format=3]
[ext_resource type="Script" path="res://mods/map_base/src/MapMarker.cs" id="1_script"]
[node name="MapMarker" type="VBoxContainer"]
theme_override_constants/separation = 4
alignment = 1
mouse_filter = 0
script = ExtResource("1_script")
[node name="EmblemWrap" type="Control" parent="."]
custom_minimum_size = Vector2(46, 46)
layout_mode = 2
size_flags_horizontal = 4
mouse_filter = 2
[node name="Emblem" type="Panel" parent="EmblemWrap"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
mouse_filter = 2
[node name="Glyph" type="TextureRect" parent="EmblemWrap/Emblem"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
offset_left = 13.0
offset_top = 13.0
offset_right = -13.0
offset_bottom = -13.0
grow_horizontal = 2
grow_vertical = 2
mouse_filter = 2
expand_mode = 1
stretch_mode = 5
[node name="NameLabel" type="Label" parent="."]
layout_mode = 2
text = "LOCATION"
horizontal_alignment = 1
mouse_filter = 2
[node name="NoteLabel" type="Label" parent="."]
visible = false
layout_mode = 2
text = "NOTE"
horizontal_alignment = 1
mouse_filter = 2
+313 -1
View File
@@ -1,6 +1,7 @@
[gd_scene format=3]
[ext_resource type="Script" uid="uid://djf3cf86eikq5" path="res://Core/UI/Tool/MapWidget.cs" id="1_script"]
[ext_resource type="Script" path="res://mods/map_base/src/MapWidget.cs" id="1_script"]
[ext_resource type="Script" path="res://mods/map_base/src/MapZonesLayer.cs" id="2_zones"]
[node name="MapWidget" type="Control"]
layout_mode = 3
@@ -11,3 +12,314 @@ grow_horizontal = 2
grow_vertical = 2
mouse_filter = 1
script = ExtResource("1_script")
[node name="Bg" type="ColorRect" parent="."]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
mouse_filter = 2
color = Color(0, 0, 0, 0.9)
[node name="EmptyState" type="CenterContainer" parent="."]
visible = false
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
mouse_filter = 2
[node name="EmptyBox" type="VBoxContainer" parent="EmptyState"]
layout_mode = 2
theme_override_constants/separation = 8
mouse_filter = 2
[node name="Title" type="Label" parent="EmptyState/EmptyBox"]
layout_mode = 2
text = "MAP UNAVAILABLE"
horizontal_alignment = 1
mouse_filter = 2
[node name="Hint" type="Label" parent="EmptyState/EmptyBox"]
custom_minimum_size = Vector2(420, 0)
layout_mode = 2
text = "EMPTY HINT"
horizontal_alignment = 1
autowrap_mode = 3
mouse_filter = 2
[node name="MapRoot" type="Control" parent="."]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
mouse_filter = 2
[node name="Sheet" type="Panel" parent="MapRoot"]
layout_mode = 1
anchors_preset = 0
mouse_filter = 2
[node name="MapImage" type="TextureRect" parent="MapRoot/Sheet"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
mouse_filter = 2
expand_mode = 1
stretch_mode = 0
[node name="Frame" type="Panel" parent="MapRoot/Sheet"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
offset_left = 12.0
offset_top = 12.0
offset_right = -12.0
offset_bottom = -12.0
grow_horizontal = 2
grow_vertical = 2
mouse_filter = 2
[node name="ZonesLayer" type="Control" parent="MapRoot/Sheet"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
mouse_filter = 0
script = ExtResource("2_zones")
[node name="MarkersLayer" type="Control" parent="MapRoot/Sheet"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
mouse_filter = 2
[node name="CloseButton" type="Button" parent="MapRoot/Sheet"]
layout_mode = 1
anchors_preset = 1
anchor_left = 1.0
anchor_right = 1.0
offset_left = -62.0
offset_top = 24.0
offset_right = -24.0
offset_bottom = 62.0
grow_horizontal = 0
mouse_filter = 0
text = "X"
[node name="Hud" type="VBoxContainer" parent="."]
layout_mode = 1
anchors_preset = 0
offset_left = 40.0
offset_top = 26.0
offset_right = 400.0
offset_bottom = 96.0
grow_horizontal = 1
mouse_filter = 2
theme_override_constants/separation = 4
[node name="Title" type="Label" parent="Hud"]
layout_mode = 2
text = "MAP"
mouse_filter = 2
[node name="Sub" type="Label" parent="Hud"]
layout_mode = 2
text = "SUBTITLE"
mouse_filter = 2
[node name="Legend" type="PanelContainer" parent="."]
layout_mode = 1
anchor_top = 1.0
anchor_bottom = 1.0
offset_left = 40.0
offset_top = -72.0
offset_right = 340.0
offset_bottom = -32.0
grow_horizontal = 1
mouse_filter = 2
[node name="Items" type="HBoxContainer" parent="Legend"]
layout_mode = 2
theme_override_constants/separation = 16
mouse_filter = 2
[node name="Current" type="HBoxContainer" parent="Legend/Items"]
layout_mode = 2
theme_override_constants/separation = 7
mouse_filter = 2
[node name="Dot" type="Panel" parent="Legend/Items/Current"]
custom_minimum_size = Vector2(10, 10)
layout_mode = 2
size_flags_vertical = 4
mouse_filter = 2
[node name="Text" type="Label" parent="Legend/Items/Current"]
layout_mode = 2
text = "HERE"
mouse_filter = 2
[node name="Available" type="HBoxContainer" parent="Legend/Items"]
layout_mode = 2
theme_override_constants/separation = 7
mouse_filter = 2
[node name="Dot" type="Panel" parent="Legend/Items/Available"]
custom_minimum_size = Vector2(10, 10)
layout_mode = 2
size_flags_vertical = 4
mouse_filter = 2
[node name="Text" type="Label" parent="Legend/Items/Available"]
layout_mode = 2
text = "AVAILABLE"
mouse_filter = 2
[node name="Locked" type="HBoxContainer" parent="Legend/Items"]
layout_mode = 2
theme_override_constants/separation = 7
mouse_filter = 2
[node name="Dot" type="Panel" parent="Legend/Items/Locked"]
custom_minimum_size = Vector2(10, 10)
layout_mode = 2
size_flags_vertical = 4
mouse_filter = 2
[node name="Text" type="Label" parent="Legend/Items/Locked"]
layout_mode = 2
text = "CLOSED"
mouse_filter = 2
[node name="Hint" type="PanelContainer" parent="."]
layout_mode = 1
anchor_left = 0.5
anchor_right = 0.5
anchor_top = 1.0
anchor_bottom = 1.0
offset_left = -220.0
offset_top = -62.0
offset_right = 220.0
offset_bottom = -32.0
grow_horizontal = 2
mouse_filter = 2
[node name="Label" type="Label" parent="Hint"]
layout_mode = 2
text = "HINT"
horizontal_alignment = 1
mouse_filter = 2
[node name="ZoneCard" type="PanelContainer" parent="."]
visible = false
layout_mode = 1
anchor_left = 1.0
anchor_right = 1.0
anchor_top = 0.5
anchor_bottom = 0.5
offset_left = -384.0
offset_right = -24.0
grow_horizontal = 0
grow_vertical = 2
mouse_filter = 0
[node name="Column" type="VBoxContainer" parent="ZoneCard"]
layout_mode = 2
theme_override_constants/separation = 12
mouse_filter = 2
[node name="Head" type="HBoxContainer" parent="ZoneCard/Column"]
layout_mode = 2
theme_override_constants/separation = 12
mouse_filter = 2
[node name="Emblem" type="Panel" parent="ZoneCard/Column/Head"]
custom_minimum_size = Vector2(58, 58)
layout_mode = 2
size_flags_vertical = 4
mouse_filter = 2
[node name="Glyph" type="TextureRect" parent="ZoneCard/Column/Head/Emblem"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
offset_left = 14.0
offset_top = 14.0
offset_right = -14.0
offset_bottom = -14.0
grow_horizontal = 2
grow_vertical = 2
mouse_filter = 2
expand_mode = 1
stretch_mode = 5
[node name="Info" type="VBoxContainer" parent="ZoneCard/Column/Head"]
layout_mode = 2
size_flags_horizontal = 3
theme_override_constants/separation = 3
mouse_filter = 2
[node name="Name" type="Label" parent="ZoneCard/Column/Head/Info"]
layout_mode = 2
text = "LOCATION"
mouse_filter = 2
[node name="Sub" type="Label" parent="ZoneCard/Column/Head/Info"]
layout_mode = 2
text = "scene"
mouse_filter = 2
[node name="Badges" type="HBoxContainer" parent="ZoneCard/Column"]
layout_mode = 2
theme_override_constants/separation = 5
mouse_filter = 2
[node name="Desc" type="Label" parent="ZoneCard/Column"]
layout_mode = 2
text = "DESCRIPTION"
autowrap_mode = 3
mouse_filter = 2
[node name="Rule" type="Panel" parent="ZoneCard/Column"]
custom_minimum_size = Vector2(0, 1)
layout_mode = 2
mouse_filter = 2
[node name="Caption" type="Label" parent="ZoneCard/Column"]
layout_mode = 2
text = "TRANSITION"
mouse_filter = 2
[node name="CardHint" type="Label" parent="ZoneCard/Column"]
layout_mode = 2
text = "CARD HINT"
autowrap_mode = 3
mouse_filter = 2
[node name="Message" type="Label" parent="ZoneCard/Column"]
visible = false
layout_mode = 2
text = "MESSAGE"
autowrap_mode = 3
mouse_filter = 2
[node name="GoButton" type="Button" parent="ZoneCard/Column"]
layout_mode = 2
text = "GO"
+2 -1
View File
@@ -1,6 +1,6 @@
[gd_scene format=3]
[ext_resource type="Script" path="res://Core/UI/Messages/UiMessage.cs" id="1_msg"]
[ext_resource type="Script" path="res://mods/interface/src/Messages/UiMessage.cs" id="1_msg"]
[node name="Message" type="Control" node_paths=PackedStringArray("textField")]
layout_mode = 3
@@ -14,4 +14,5 @@ offset_left = 0.0
offset_top = 0.0
offset_right = 0.0
offset_bottom = 0.0
theme_override_colors/font_color = Color(0.909804, 0.898039, 0.870588, 1)
text = ""
-13
View File
@@ -1,13 +0,0 @@
[gd_scene format=3]
[ext_resource type="Script" path="res://Core/UI/Quests/QuestJournalBehaviour.cs" id="1_script"]
[node name="QuestJournal" type="Control"]
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
mouse_filter = 1
script = ExtResource("1_script")
+99 -35
View File
@@ -1,23 +1,26 @@
[gd_scene format=3]
[ext_resource type="Script" path="res://Core/Skills/SkillCardBehaviour.cs" id="1_script"]
[ext_resource type="Script" path="res://Core/Skills/SkillCardFrameBehaviour.cs" id="2_frame_script"]
[ext_resource type="Script" path="res://mods/skills_base/src/SkillCardBehaviour.cs" id="1_script"]
[node name="SkillCard" type="Control"]
[node name="SkillCard" type="Control" node_paths=PackedStringArray("bg", "accent", "art", "imgCard", "txtName", "txtGems", "badgeBox", "badgeLabel", "effectRow", "effectValue", "effectLabel")]
custom_minimum_size = Vector2(160, 210)
layout_mode = 3
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
mouse_filter = 1
mouse_filter = 0
mouse_default_cursor_shape = 2
script = ExtResource("1_script")
frame = NodePath("Frame")
bg = NodePath("Bg")
accent = NodePath("Accent")
art = NodePath("Art")
imgCard = NodePath("Art/ImgCard")
txtName = NodePath("TxtName")
imgCard = NodePath("ImgCard")
txtGems = NodePath("Gems")
badgeBox = NodePath("BadgeBox")
badgeLabel = NodePath("BadgeBox/BadgeLabel")
effectRow = NodePath("EffectRow")
effectValue = NodePath("EffectRow/EffectValue")
effectLabel = NodePath("EffectRow/EffectLabel")
[node name="Frame" type="Control" parent="."]
[node name="Bg" type="Panel" parent="."]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
@@ -25,45 +28,106 @@ anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
mouse_filter = 2
script = ExtResource("2_frame_script")
img = NodePath("FrameImg")
[node name="FrameImg" type="TextureRect" parent="Frame"]
[node name="Accent" type="Panel" parent="."]
layout_mode = 1
anchors_preset = 15
anchors_preset = 10
anchor_right = 1.0
anchor_bottom = 1.0
offset_bottom = 3.0
grow_horizontal = 2
grow_vertical = 2
mouse_filter = 2
expand_mode = 3
stretch_mode = 5
[node name="ImgCard" type="TextureRect" parent="."]
[node name="Art" type="PanelContainer" parent="."]
layout_mode = 1
anchors_preset = -1
anchor_left = 0.08
anchor_top = 0.05
anchor_right = 0.92
anchor_bottom = 0.75
anchor_right = 1.0
anchor_bottom = 0.62
offset_left = 8.0
offset_top = 9.0
offset_right = -8.0
grow_horizontal = 2
mouse_filter = 2
[node name="ImgCard" type="TextureRect" parent="Art"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
mouse_filter = 2
expand_mode = 2
stretch_mode = 5
expand_mode = 1
stretch_mode = 6
[node name="Gems" type="Label" parent="."]
layout_mode = 1
anchors_preset = -1
anchor_left = 1.0
anchor_right = 1.0
offset_left = -64.0
offset_top = 13.0
offset_right = -6.0
offset_bottom = 29.0
grow_horizontal = 0
mouse_filter = 2
horizontal_alignment = 2
[node name="TxtName" type="Label" parent="."]
layout_mode = 1
anchors_preset = -1
anchor_left = 0.05
anchor_top = 0.78
anchor_right = 0.95
anchor_bottom = 0.98
anchor_top = 0.62
anchor_right = 1.0
anchor_bottom = 0.8
offset_left = 7.0
offset_top = 4.0
offset_right = -7.0
grow_horizontal = 2
grow_vertical = 2
mouse_filter = 2
theme_override_font_sizes/font_size = 12
text = ""
horizontal_alignment = 1
vertical_alignment = 1
autowrap_mode = 1
autowrap_mode = 3
[node name="BadgeBox" type="PanelContainer" parent="."]
layout_mode = 1
anchors_preset = -1
anchor_top = 1.0
anchor_right = 1.0
anchor_bottom = 1.0
offset_left = 7.0
offset_top = -40.0
offset_right = -7.0
offset_bottom = -24.0
grow_horizontal = 2
grow_vertical = 0
mouse_filter = 2
[node name="BadgeLabel" type="Label" parent="BadgeBox"]
layout_mode = 2
mouse_filter = 2
horizontal_alignment = 1
vertical_alignment = 1
[node name="EffectRow" type="HBoxContainer" parent="."]
layout_mode = 1
anchors_preset = -1
anchor_top = 1.0
anchor_right = 1.0
anchor_bottom = 1.0
offset_left = 7.0
offset_top = -21.0
offset_right = -7.0
offset_bottom = -4.0
grow_horizontal = 2
grow_vertical = 0
mouse_filter = 2
theme_override_constants/separation = 4
[node name="EffectValue" type="Label" parent="EffectRow"]
layout_mode = 2
mouse_filter = 2
[node name="EffectLabel" type="Label" parent="EffectRow"]
layout_mode = 2
size_flags_horizontal = 3
mouse_filter = 2
clip_text = true
+345 -100
View File
@@ -1,6 +1,6 @@
[gd_scene format=3]
[ext_resource type="Script" path="res://Core/UI/SkillsPanel/SkillsPanelBehaviour.cs" id="1_script"]
[ext_resource type="Script" path="res://mods/skills_base/src/SkillsPanel/SkillsPanelBehaviour.cs" id="1_script"]
[node name="SkillsPanel" type="Control"]
layout_mode = 3
@@ -9,7 +9,7 @@ anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
mouse_filter = 1
mouse_filter = 0
script = ExtResource("1_script")
[node name="Bg" type="ColorRect" parent="."]
@@ -20,68 +20,164 @@ anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
mouse_filter = 2
color = Color(0.05, 0.05, 0.1, 0.9)
color = Color(0, 0, 0, 0.9)
[node name="Title" type="Label" parent="."]
[node name="Window" type="Panel" parent="."]
layout_mode = 1
anchors_preset = -1
anchor_right = 1.0
offset_left = 20.0
offset_top = 10.0
offset_right = -20.0
offset_bottom = 40.0
grow_horizontal = 2
theme_override_font_sizes/font_size = 22
text = "Skills"
horizontal_alignment = 1
[node name="ScrollContainer" type="ScrollContainer" parent="."]
layout_mode = 1
anchors_preset = -1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
offset_left = 20.0
offset_top = 50.0
offset_right = -20.0
offset_bottom = -60.0
offset_left = 40.0
offset_top = 78.0
offset_right = -40.0
offset_bottom = -30.0
grow_horizontal = 2
grow_vertical = 2
horizontal_scroll_mode = 0
mouse_filter = 2
[node name="GridContent" type="Control" parent="ScrollContainer"]
[node name="Margin" type="MarginContainer" parent="Window"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
mouse_filter = 2
theme_override_constants/margin_left = 24
theme_override_constants/margin_top = 16
theme_override_constants/margin_right = 24
theme_override_constants/margin_bottom = 14
[node name="Root" type="VBoxContainer" parent="Window/Margin"]
layout_mode = 2
mouse_filter = 2
theme_override_constants/separation = 12
[node name="Header" type="HBoxContainer" parent="Window/Margin/Root"]
layout_mode = 2
mouse_filter = 2
theme_override_constants/separation = 18
[node name="Title" type="Label" parent="Window/Margin/Root/Header"]
layout_mode = 2
mouse_filter = 2
[node name="ClosePanel" type="Panel" parent="."]
layout_mode = 1
anchors_preset = -1
anchor_left = 0.85
anchor_top = 0.94
anchor_right = 0.99
anchor_bottom = 0.99
grow_horizontal = 2
grow_vertical = 2
[node name="TabsRow" type="HBoxContainer" parent="Window/Margin/Root/Header"]
layout_mode = 2
mouse_filter = 2
theme_override_constants/separation = 6
[node name="CloseButton" type="Button" parent="ClosePanel"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
text = "Close"
[node name="Spacer" type="Control" parent="Window/Margin/Root/Header"]
layout_mode = 2
size_flags_horizontal = 3
mouse_filter = 2
[node name="ExpandedOverlay" type="Control" parent="."]
[node name="ProgressLabel" type="Label" parent="Window/Margin/Root/Header"]
layout_mode = 2
mouse_filter = 2
[node name="ProgressValue" type="Label" parent="Window/Margin/Root/Header"]
layout_mode = 2
mouse_filter = 2
[node name="CloseButton" type="Button" parent="Window/Margin/Root/Header"]
custom_minimum_size = Vector2(38, 38)
layout_mode = 2
theme_type_variation = "CthangoverIcon"
text = "✕"
[node name="Rule" type="Panel" parent="Window/Margin/Root"]
custom_minimum_size = Vector2(0, 1)
layout_mode = 2
mouse_filter = 2
[node name="Body" type="HBoxContainer" parent="Window/Margin/Root"]
layout_mode = 2
size_flags_vertical = 3
mouse_filter = 2
theme_override_constants/separation = 14
[node name="Showcase" type="VBoxContainer" parent="Window/Margin/Root/Body"]
layout_mode = 2
size_flags_horizontal = 3
mouse_filter = 2
theme_override_constants/separation = 10
[node name="Toolbar" type="HBoxContainer" parent="Window/Margin/Root/Body/Showcase"]
layout_mode = 2
mouse_filter = 2
theme_override_constants/separation = 10
[node name="SearchEdit" type="LineEdit" parent="Window/Margin/Root/Body/Showcase/Toolbar"]
layout_mode = 2
size_flags_horizontal = 3
[node name="SortOption" type="OptionButton" parent="Window/Margin/Root/Body/Showcase/Toolbar"]
layout_mode = 2
[node name="RarityTabs" type="HFlowContainer" parent="Window/Margin/Root/Body/Showcase"]
layout_mode = 2
mouse_filter = 2
theme_override_constants/h_separation = 6
theme_override_constants/v_separation = 6
[node name="GridScroll" type="ScrollContainer" parent="Window/Margin/Root/Body/Showcase"]
layout_mode = 2
size_flags_vertical = 3
horizontal_scroll_mode = 0
[node name="GridContent" type="Control" parent="Window/Margin/Root/Body/Showcase/GridScroll"]
layout_mode = 2
size_flags_horizontal = 3
mouse_filter = 2
[node name="EmptyLabel" type="Label" parent="Window/Margin/Root/Body/Showcase"]
visible = false
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
mouse_filter = 1
layout_mode = 2
size_flags_vertical = 3
mouse_filter = 2
horizontal_alignment = 1
vertical_alignment = 1
autowrap_mode = 3
[node name="ExpandedBg" type="ColorRect" parent="ExpandedOverlay"]
[node name="Footer" type="HBoxContainer" parent="Window/Margin/Root/Body/Showcase"]
layout_mode = 2
mouse_filter = 2
theme_override_constants/separation = 16
[node name="Hint" type="Label" parent="Window/Margin/Root/Body/Showcase/Footer"]
layout_mode = 2
mouse_filter = 2
[node name="ResetButton" type="Button" parent="Window/Margin/Root/Body/Showcase/Footer"]
layout_mode = 2
[node name="Side" type="PanelContainer" parent="Window/Margin/Root/Body"]
custom_minimum_size = Vector2(400, 0)
layout_mode = 2
mouse_filter = 2
[node name="SideScroll" type="ScrollContainer" parent="Window/Margin/Root/Body/Side"]
layout_mode = 2
horizontal_scroll_mode = 0
[node name="Passport" type="VBoxContainer" parent="Window/Margin/Root/Body/Side/SideScroll"]
layout_mode = 2
size_flags_horizontal = 3
mouse_filter = 2
theme_override_constants/separation = 14
[node name="SideLabel" type="Label" parent="Window/Margin/Root/Body/Side/SideScroll/Passport"]
layout_mode = 2
mouse_filter = 2
[node name="Plate" type="Control" parent="Window/Margin/Root/Body/Side/SideScroll/Passport"]
custom_minimum_size = Vector2(340, 438)
layout_mode = 2
size_flags_horizontal = 4
mouse_filter = 2
[node name="PlateBg" type="Panel" parent="Window/Margin/Root/Body/Side/SideScroll/Passport/Plate"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
@@ -89,71 +185,220 @@ anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
mouse_filter = 2
color = Color(0, 0, 0, 0.9)
[node name="ExpandedFrameImg" type="TextureRect" parent="ExpandedOverlay"]
[node name="PlateArt" type="PanelContainer" parent="Window/Margin/Root/Body/Side/SideScroll/Passport/Plate"]
layout_mode = 1
anchors_preset = -1
anchor_left = 0.1
anchor_top = 0.1
anchor_right = 0.9
anchor_bottom = 0.9
anchor_left = 0.03
anchor_top = 0.03
anchor_right = 0.97
anchor_bottom = 0.68
grow_horizontal = 2
grow_vertical = 2
mouse_filter = 2
expand_mode = 3
stretch_mode = 5
[node name="ExpandedImage" type="TextureRect" parent="ExpandedOverlay"]
[node name="PlateImage" type="TextureRect" parent="Window/Margin/Root/Body/Side/SideScroll/Passport/Plate/PlateArt"]
layout_mode = 1
anchors_preset = -1
anchor_left = 0.15
anchor_top = 0.15
anchor_right = 0.85
anchor_bottom = 0.85
grow_horizontal = 2
grow_vertical = 2
mouse_filter = 2
expand_mode = 2
stretch_mode = 5
[node name="ExpandedName" type="Label" parent="ExpandedOverlay"]
layout_mode = 1
anchors_preset = -1
anchor_left = 0.15
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
offset_top = -40.0
offset_right = -20.0
offset_bottom = -14.0
grow_horizontal = 2
theme_override_font_sizes/font_size = 20
text = ""
grow_vertical = 2
mouse_filter = 2
expand_mode = 1
stretch_mode = 6
[node name="PlateGems" type="Label" parent="Window/Margin/Root/Body/Side/SideScroll/Passport/Plate"]
layout_mode = 1
anchors_preset = -1
anchor_left = 0.97
anchor_right = 0.97
offset_left = -64.0
offset_top = 14.0
offset_right = -8.0
offset_bottom = 32.0
grow_horizontal = 0
mouse_filter = 2
horizontal_alignment = 2
[node name="PlateMedal" type="PanelContainer" parent="Window/Margin/Root/Body/Side/SideScroll/Passport/Plate"]
layout_mode = 1
anchors_preset = -1
anchor_left = 0.5
anchor_right = 0.5
offset_left = -17.0
offset_top = -17.0
offset_right = 17.0
offset_bottom = 17.0
grow_horizontal = 2
mouse_filter = 2
[node name="MedalGlyph" type="Label" parent="Window/Margin/Root/Body/Side/SideScroll/Passport/Plate/PlateMedal"]
layout_mode = 2
mouse_filter = 2
text = "◆"
horizontal_alignment = 1
vertical_alignment = 1
[node name="DescriptionBg" type="ColorRect" parent="ExpandedOverlay"]
[node name="PlateNameBox" type="PanelContainer" parent="Window/Margin/Root/Body/Side/SideScroll/Passport/Plate"]
layout_mode = 1
anchors_preset = -1
anchor_top = 0.75
anchor_right = 0.35
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
mouse_filter = 1
color = Color(0.05, 0.05, 0.1, 0.85)
[node name="DescriptionLabel" type="RichTextLabel" parent="ExpandedOverlay/DescriptionBg"]
layout_mode = 1
anchors_preset = -1
anchor_right = 1.0
anchor_bottom = 1.0
offset_left = 12.0
offset_top = 12.0
offset_right = -12.0
offset_bottom = -12.0
anchor_left = 0.14
anchor_top = 0.8
anchor_right = 0.86
anchor_bottom = 0.93
grow_horizontal = 2
grow_vertical = 2
mouse_filter = 2
bbcode_enabled = true
fit_content = true
scroll_active = false
[node name="PlateName" type="Label" parent="Window/Margin/Root/Body/Side/SideScroll/Passport/Plate/PlateNameBox"]
layout_mode = 2
mouse_filter = 2
horizontal_alignment = 1
vertical_alignment = 1
autowrap_mode = 3
[node name="Badges" type="HFlowContainer" parent="Window/Margin/Root/Body/Side/SideScroll/Passport"]
layout_mode = 2
mouse_filter = 2
theme_override_constants/h_separation = 6
theme_override_constants/v_separation = 6
[node name="Desc" type="Label" parent="Window/Margin/Root/Body/Side/SideScroll/Passport"]
layout_mode = 2
mouse_filter = 2
autowrap_mode = 3
[node name="Chips" type="HFlowContainer" parent="Window/Margin/Root/Body/Side/SideScroll/Passport"]
layout_mode = 2
mouse_filter = 2
theme_override_constants/h_separation = 5
theme_override_constants/v_separation = 5
[node name="Grant" type="PanelContainer" parent="Window/Margin/Root/Body/Side/SideScroll/Passport"]
visible = false
layout_mode = 2
mouse_filter = 2
[node name="GrantRow" type="HBoxContainer" parent="Window/Margin/Root/Body/Side/SideScroll/Passport/Grant"]
layout_mode = 2
mouse_filter = 2
theme_override_constants/separation = 10
[node name="GrantIcon" type="TextureRect" parent="Window/Margin/Root/Body/Side/SideScroll/Passport/Grant/GrantRow"]
custom_minimum_size = Vector2(44, 44)
layout_mode = 2
size_flags_vertical = 4
mouse_filter = 2
expand_mode = 1
stretch_mode = 5
[node name="GrantInfo" type="VBoxContainer" parent="Window/Margin/Root/Body/Side/SideScroll/Passport/Grant/GrantRow"]
layout_mode = 2
size_flags_horizontal = 3
size_flags_vertical = 4
mouse_filter = 2
theme_override_constants/separation = 2
[node name="GrantCaption" type="Label" parent="Window/Margin/Root/Body/Side/SideScroll/Passport/Grant/GrantRow/GrantInfo"]
layout_mode = 2
mouse_filter = 2
autowrap_mode = 3
[node name="GrantName" type="Label" parent="Window/Margin/Root/Body/Side/SideScroll/Passport/Grant/GrantRow/GrantInfo"]
layout_mode = 2
mouse_filter = 2
autowrap_mode = 3
[node name="Empty" type="Label" parent="Window/Margin/Root/Body/Side/SideScroll/Passport"]
visible = false
layout_mode = 2
mouse_filter = 2
horizontal_alignment = 1
autowrap_mode = 3
[node name="Hud" type="Panel" parent="."]
layout_mode = 1
anchors_preset = -1
anchor_left = 1.0
anchor_top = 1.0
anchor_right = 1.0
anchor_bottom = 1.0
offset_left = -458.0
offset_top = -232.0
offset_right = -32.0
offset_bottom = -22.0
grow_horizontal = 0
grow_vertical = 0
[node name="HudAccent" type="Panel" parent="Hud"]
layout_mode = 1
anchors_preset = -1
anchor_bottom = 1.0
offset_right = 2.0
grow_vertical = 2
mouse_filter = 2
[node name="HudMargin" type="MarginContainer" parent="Hud"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
mouse_filter = 2
theme_override_constants/margin_left = 15
theme_override_constants/margin_top = 13
theme_override_constants/margin_right = 15
theme_override_constants/margin_bottom = 12
[node name="HudColumn" type="VBoxContainer" parent="Hud/HudMargin"]
layout_mode = 2
mouse_filter = 2
[node name="HudHead" type="HBoxContainer" parent="Hud/HudMargin/HudColumn"]
layout_mode = 2
mouse_filter = 2
theme_override_constants/separation = 10
[node name="HudTitle" type="Label" parent="Hud/HudMargin/HudColumn/HudHead"]
layout_mode = 2
mouse_filter = 2
[node name="HudSpacer" type="Control" parent="Hud/HudMargin/HudColumn/HudHead"]
layout_mode = 2
size_flags_horizontal = 3
mouse_filter = 2
[node name="HudCount" type="Label" parent="Hud/HudMargin/HudColumn/HudHead"]
layout_mode = 2
mouse_filter = 2
[node name="HudRule" type="Panel" parent="Hud/HudMargin/HudColumn"]
custom_minimum_size = Vector2(0, 1)
layout_mode = 2
mouse_filter = 2
[node name="HudScroll" type="ScrollContainer" parent="Hud/HudMargin/HudColumn"]
custom_minimum_size = Vector2(0, 96)
layout_mode = 2
horizontal_scroll_mode = 0
[node name="HudList" type="GridContainer" parent="Hud/HudMargin/HudColumn/HudScroll"]
layout_mode = 2
size_flags_horizontal = 3
mouse_filter = 2
theme_override_constants/h_separation = 20
theme_override_constants/v_separation = 4
columns = 2
[node name="HudEmpty" type="Label" parent="Hud/HudMargin/HudColumn"]
visible = false
layout_mode = 2
mouse_filter = 2
autowrap_mode = 3
[node name="HudFoot" type="Label" parent="Hud/HudMargin/HudColumn"]
layout_mode = 2
mouse_filter = 2
autowrap_mode = 3
-34
View File
@@ -1,34 +0,0 @@
using Cthangover.Core.Characters;
using Cthangover.Core.Relationship;
using Cthangover.Core.Settings;
namespace Cthangover.Core.Relationship
{
/// <summary>
/// Recruitment condition that gates the "enslave" recruit option
/// behind the <c>slave_master</c> skill. When the player attempts to
/// recruit an NPC, the recruitment system queries all registered
/// <see cref="IRecruitCondition"/> implementations; if this condition
/// is present and the player does not have the skill, the enslavement
/// option is hidden or disabled.
/// </summary>
public class EnslaveCondition : IRecruitCondition
{
/// <summary>
/// Identifies this condition as the enslavement gate for the
/// recruitment system (maps to <c>enslave</c> option).
/// </summary>
public string Id => "enslave";
/// <summary>
/// Determines whether enslavement is available for the given enemy.
/// Checks the runtime skill data for the <c>slave_master</c> skill.
/// The target <paramref name="enemy"/> is provided but not inspected
/// because the condition depends solely on the player's skills.
/// </summary>
public bool CanRecruit(Character enemy, RuntimeData runtime)
{
return runtime.SkillData.HasSkill("slave_master");
}
}
}
-68
View File
@@ -1,68 +0,0 @@
using Cthangover.Core.Events;
using Cthangover.Core.Mods;
using Cthangover.Core.Settings;
namespace Cthangover.Core.Characters
{
/// <summary>
/// Populates the initial player party with the default starter
/// character <c>"Marao"</c> when the core mod finishes loading.
///
/// The party can only be populated during <c>OnModResourcesReady</c>,
/// not earlier. <c>OnModLoaded</c> and the constructor fire inside
/// <c>ModRegistry.Initialize</c> → <c>ModCompiler.LoadModCode</c>,
/// where mod JSON resources are not yet guaranteed to be accessible.
/// <c>AddCharacterToParty</c> chains into <c>CharacterFactory.Get</c>,
/// which calls <c>ModManager.CollectJsonGroup</c> — this requires
/// file providers to be fully set up, which only happens after the
/// entire <c>ModRegistry.Initialize</c> pipeline completes.
///
/// <c>OnModResourcesReady</c> is invoked by <c>ModInitializerRegistry
/// .NotifyResourcesReady</c> at the end of <c>SceneManager.Initialize</c>,
/// after <c>ModRegistry</c> finishes discovery, <c>SceneEventRegistry</c>
/// is primed, and scene definitions are collected. At that point all
/// factories can safely read mod JSON data.
///
/// Mods that introduce additional starter characters should implement
/// their own <c>IModInitializer</c> and call <c>AddCharacterToParty</c>
/// from <c>OnModResourcesReady</c> for their character IDs.
/// </summary>
public class StarterPartyInitializer : IModInitializer
{
private static bool newGameHookInstalled;
/// <summary>
/// No-op: cross-mod lifecycle notifications are not needed for
/// starter party setup. Each mod's <c>OnModResourcesReady</c>
/// handles its own default characters independently.
/// </summary>
public void OnModLoaded(string modId) { }
/// <summary>
/// Adds the core mod's default starter character <c>"Marao"</c>
/// to both <c>Characters</c> and <c>BattleSet</c> via
/// <c>CharacterData.AddCharacterToParty</c>. Called once, after
/// all mod file providers and JSON resources are guaranteed to
/// be accessible. Also installs the one-time
/// <see cref="NewGameStartedEvent"/> hook so the starter party is
/// restored after <c>ResetRuntime</c> wipes it at the start of a
/// new game. Both operations are idempotent.
/// </summary>
public void OnModResourcesReady()
{
SeedStarterParty();
if (newGameHookInstalled)
return;
newGameHookInstalled = true;
ModEventBus.Subscribe<NewGameStartedEvent>(_ => SeedStarterParty());
}
private static void SeedStarterParty()
{
GameData.Instance.Runtime.CharacterData.AddCharacterToParty("Marao");
GameData.Instance.Runtime.SkillData.AddSkill("slave_master");
}
}
}
Binary file not shown.