diff --git a/backgrounds/home/outside_albedo.png b/backgrounds/home/outside_albedo.png index 4fe44e4..fb093e2 100644 Binary files a/backgrounds/home/outside_albedo.png and b/backgrounds/home/outside_albedo.png differ diff --git a/backgrounds/home/outside_albedo__.png b/backgrounds/home/outside_albedo__.png new file mode 100644 index 0000000..4fe44e4 Binary files /dev/null and b/backgrounds/home/outside_albedo__.png differ diff --git a/backgrounds/home/qwen_image_21_pixel_00001_.png b/backgrounds/home/qwen_image_21_pixel_00001_.png new file mode 100644 index 0000000..59812dd Binary files /dev/null and b/backgrounds/home/qwen_image_21_pixel_00001_.png differ diff --git a/backgrounds/map.png b/backgrounds/map.png new file mode 100644 index 0000000..eda5049 Binary files /dev/null and b/backgrounds/map.png differ diff --git a/backgrounds/00006-4133256041.png b/backgrounds/prolog/river.png similarity index 100% rename from backgrounds/00006-4133256041.png rename to backgrounds/prolog/river.png diff --git a/backgrounds/prolog/villa.png b/backgrounds/prolog/villa.png new file mode 100644 index 0000000..f13aa9a Binary files /dev/null and b/backgrounds/prolog/villa.png differ diff --git a/characters/actions.json b/characters/actions.json deleted file mode 100644 index fc7f09a..0000000 --- a/characters/actions.json +++ /dev/null @@ -1,5 +0,0 @@ -{ "Items": [ - ${actions/physics_attack}, - ${actions/physics_defence}, - ${actions/physics_stun} -]} \ No newline at end of file diff --git a/characters/actions/physics_attack.json b/characters/actions/physics_attack.json deleted file mode 100644 index 6f061fe..0000000 --- a/characters/actions/physics_attack.json +++ /dev/null @@ -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" - ] -} \ No newline at end of file diff --git a/characters/actions/physics_attack.png b/characters/actions/physics_attack.png deleted file mode 100644 index 3c82744..0000000 Binary files a/characters/actions/physics_attack.png and /dev/null differ diff --git a/characters/actions/physics_defence.json b/characters/actions/physics_defence.json deleted file mode 100644 index 7465c31..0000000 --- a/characters/actions/physics_defence.json +++ /dev/null @@ -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" - ] -} \ No newline at end of file diff --git a/characters/actions/physics_defence.png b/characters/actions/physics_defence.png deleted file mode 100644 index 2ea0797..0000000 Binary files a/characters/actions/physics_defence.png and /dev/null differ diff --git a/characters/actions/physics_stun.json b/characters/actions/physics_stun.json deleted file mode 100644 index ecff35d..0000000 --- a/characters/actions/physics_stun.json +++ /dev/null @@ -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" - ] -} \ No newline at end of file diff --git a/characters/actions/physics_stun.png b/characters/actions/physics_stun.png deleted file mode 100644 index f97dbc6..0000000 Binary files a/characters/actions/physics_stun.png and /dev/null differ diff --git a/characters/characters.json b/characters/characters.json deleted file mode 100644 index e5190fa..0000000 --- a/characters/characters.json +++ /dev/null @@ -1,3 +0,0 @@ -{ "Items": [ - ${player/marao} -]} \ No newline at end of file diff --git a/characters/effects/stun.png b/characters/effects/stun.png deleted file mode 100644 index faf9859..0000000 Binary files a/characters/effects/stun.png and /dev/null differ diff --git a/characters/enemies.json b/characters/enemies.json deleted file mode 100644 index 8934687..0000000 --- a/characters/enemies.json +++ /dev/null @@ -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} -]} \ No newline at end of file diff --git a/characters/enemies/werewolf_girl_1.json b/characters/enemies/werewolf_girl_1.json index f4b9bc1..6f60ee9 100644 --- a/characters/enemies/werewolf_girl_1.json +++ b/characters/enemies/werewolf_girl_1.json @@ -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 + } + ] + } ] -} \ No newline at end of file +} diff --git a/characters/enemies/wolf_1.json b/characters/enemies/wolf_1.json index 721c826..b7e1a37 100644 --- a/characters/enemies/wolf_1.json +++ b/characters/enemies/wolf_1.json @@ -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 + } + ] + } ] -} \ No newline at end of file +} diff --git a/characters/enemies/wolf_10.json b/characters/enemies/wolf_10.json index f5946f1..461c74c 100644 --- a/characters/enemies/wolf_10.json +++ b/characters/enemies/wolf_10.json @@ -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 + } + ] + } ] -} \ No newline at end of file +} diff --git a/characters/enemies/wolf_2.json b/characters/enemies/wolf_2.json index e2d5517..95df375 100644 --- a/characters/enemies/wolf_2.json +++ b/characters/enemies/wolf_2.json @@ -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 + } + ] + } ] -} \ No newline at end of file +} diff --git a/characters/enemies/wolf_3.json b/characters/enemies/wolf_3.json index eac8eb6..2f50c62 100644 --- a/characters/enemies/wolf_3.json +++ b/characters/enemies/wolf_3.json @@ -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 + } + ] + } ] -} \ No newline at end of file +} diff --git a/characters/enemies/wolf_4.json b/characters/enemies/wolf_4.json index 088ec65..d930a25 100644 --- a/characters/enemies/wolf_4.json +++ b/characters/enemies/wolf_4.json @@ -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 + } + ] + } ] -} \ No newline at end of file +} diff --git a/characters/enemies/wolf_5.json b/characters/enemies/wolf_5.json index a25ea26..3a1c646 100644 --- a/characters/enemies/wolf_5.json +++ b/characters/enemies/wolf_5.json @@ -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 + } + ] + } ] -} \ No newline at end of file +} diff --git a/characters/enemies/wolf_6.json b/characters/enemies/wolf_6.json index 537dae2..f61d53b 100644 --- a/characters/enemies/wolf_6.json +++ b/characters/enemies/wolf_6.json @@ -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 + } + ] + } ] -} \ No newline at end of file +} diff --git a/characters/enemies/wolf_7.json b/characters/enemies/wolf_7.json index 4e27fa4..a856550 100644 --- a/characters/enemies/wolf_7.json +++ b/characters/enemies/wolf_7.json @@ -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 + } + ] + } ] -} \ No newline at end of file +} diff --git a/characters/enemies/wolf_8.json b/characters/enemies/wolf_8.json index d12ace4..6342425 100644 --- a/characters/enemies/wolf_8.json +++ b/characters/enemies/wolf_8.json @@ -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 + } + ] + } ] -} \ No newline at end of file +} diff --git a/characters/enemies/wolf_9.json b/characters/enemies/wolf_9.json index 8308c96..d5e766e 100644 --- a/characters/enemies/wolf_9.json +++ b/characters/enemies/wolf_9.json @@ -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 + } + ] + } ] -} \ No newline at end of file +} diff --git a/characters/player/marao.json b/characters/player/marao.json index 1722511..3720b50 100644 --- a/characters/player/marao.json +++ b/characters/player/marao.json @@ -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"] -} \ No newline at end of file + "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" + ] + } + ] +} diff --git a/characters/skills.json b/characters/skills.json deleted file mode 100644 index e49d189..0000000 --- a/characters/skills.json +++ /dev/null @@ -1,3 +0,0 @@ -{ "Items": [ - ${skills/slave_master} -]} \ No newline at end of file diff --git a/characters/skills/slave_master.json b/characters/skills/slave_master.json index 3d573ee..5da1d1c 100644 --- a/characters/skills/slave_master.json +++ b/characters/skills/slave_master.json @@ -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 -} \ No newline at end of file +{ + "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 } + ] + } + ] +} diff --git a/collections/vn_starter_novel.json b/collections/vn_starter_novel.json new file mode 100644 index 0000000..6f44924 --- /dev/null +++ b/collections/vn_starter_novel.json @@ -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" + ] + } + ] +} diff --git a/effects/cards/stun_effect.png b/effects/cards/stun_effect.png deleted file mode 100644 index faf9859..0000000 Binary files a/effects/cards/stun_effect.png and /dev/null differ diff --git a/effects/stun_effect.png b/effects/stun_effect.png deleted file mode 100644 index b45215e..0000000 Binary files a/effects/stun_effect.png and /dev/null differ diff --git a/items/food/ration.json b/items/food/ration.json index 8d3b48c..5a518b8 100644 --- a/items/food/ration.json +++ b/items/food/ration.json @@ -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" -} \ No newline at end of file +{ + "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" + } + ] +} diff --git a/items/food/wolf_meat.json b/items/food/wolf_meat.json index 27eee47..7ff5bd1 100644 --- a/items/food/wolf_meat.json +++ b/items/food/wolf_meat.json @@ -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" -} \ No newline at end of file +{ + "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" + } + ] +} diff --git a/items/items.json b/items/items.json deleted file mode 100644 index 2587f6d..0000000 --- a/items/items.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "Items": [ - ${food/ration}, - ${food/wolf_meat}, - ${resource/branches} - ] -} \ No newline at end of file diff --git a/items/resource/branches.json b/items/resource/branches.json index 07dc0fb..50be138 100644 --- a/items/resource/branches.json +++ b/items/resource/branches.json @@ -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" -} \ No newline at end of file +{ + "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" + } + ] +} diff --git a/locale/en.properties b/locale/en.properties index 2a710ba..e900269 100644 --- a/locale/en.properties +++ b/locale/en.properties @@ -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. diff --git a/locale/ru.properties b/locale/ru.properties index 616ab0c..e2ea02e 100644 --- a/locale/ru.properties +++ b/locale/ru.properties @@ -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 = Карточные бои поверх пошагового боевого движка. \ No newline at end of file diff --git a/manifest.json b/manifest.json index 709ad8f..80c588c 100644 --- a/manifest.json +++ b/manifest.json @@ -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 } ] diff --git a/map/map.json b/map/map.json new file mode 100644 index 0000000..642ff6b --- /dev/null +++ b/map/map.json @@ -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 + } + ] +} \ No newline at end of file diff --git a/patches/scenes/ui/base_scene.tscn b/patches/scenes/ui/base_scene.tscn new file mode 100644 index 0000000..3b57d68 --- /dev/null +++ b/patches/scenes/ui/base_scene.tscn @@ -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")] diff --git a/quests/quests.json b/quests/quests.json index 1d8ea11..f79ef43 100644 --- a/quests/quests.json +++ b/quests/quests.json @@ -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" } ] } diff --git a/scenarios/prolog/graveyard_arrival.scenario b/scenarios/prolog/graveyard_arrival.scenario index aa05408..55deab5 100644 --- a/scenarios/prolog/graveyard_arrival.scenario +++ b/scenarios/prolog/graveyard_arrival.scenario @@ -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 diff --git a/scenarios/prolog/graveyard_azif.scenario b/scenarios/prolog/graveyard_azif.scenario index 8d07816..2ecdc6f 100644 --- a/scenarios/prolog/graveyard_azif.scenario +++ b/scenarios/prolog/graveyard_azif.scenario @@ -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 diff --git a/scenarios/prolog/graveyard_ensure_book.scenario b/scenarios/prolog/graveyard_ensure_book.scenario index bb2acd3..418dd23 100644 --- a/scenarios/prolog/graveyard_ensure_book.scenario +++ b/scenarios/prolog/graveyard_ensure_book.scenario @@ -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 diff --git a/scenarios/prolog/graveyard_ensure_crypt.scenario b/scenarios/prolog/graveyard_ensure_crypt.scenario index 0772881..9ead0f3 100644 --- a/scenarios/prolog/graveyard_ensure_crypt.scenario +++ b/scenarios/prolog/graveyard_ensure_crypt.scenario @@ -1,6 +1,6 @@ scene: prolog_graveyard priority: 15 -condition: NakedMorningQuest.notHasTag("graveyard_read") +condition: AwakeningQuest.notHasTag("graveyard_read") --- # Книга ещё не прочитана вслух: держим хотспот «за склепом» на сцене. # Идемпотентно при каждом входе (Add по тому же id возвращает существующий объект). diff --git a/scenarios/prolog/graveyard_read.scenario b/scenarios/prolog/graveyard_read.scenario index ff83b0f..2404343 100644 --- a/scenarios/prolog/graveyard_read.scenario +++ b/scenarios/prolog/graveyard_read.scenario @@ -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 diff --git a/scenarios/prolog/morning_book.scenario b/scenarios/prolog/morning_book.scenario index 80828a7..68bda03 100644 --- a/scenarios/prolog/morning_book.scenario +++ b/scenarios/prolog/morning_book.scenario @@ -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 diff --git a/scenarios/prolog/morning_cloak.scenario b/scenarios/prolog/morning_cloak.scenario index 6a5cf5e..369df2d 100644 --- a/scenarios/prolog/morning_cloak.scenario +++ b/scenarios/prolog/morning_cloak.scenario @@ -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 diff --git a/scenarios/prolog/morning_items_ensure.scenario b/scenarios/prolog/morning_items_ensure.scenario index 1fa5ff0..30543a2 100644 --- a/scenarios/prolog/morning_items_ensure.scenario +++ b/scenarios/prolog/morning_items_ensure.scenario @@ -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 возвращает существующий). diff --git a/scenarios/prolog/morning_police.scenario b/scenarios/prolog/morning_police.scenario index e3e6420..5bc5eff 100644 --- a/scenarios/prolog/morning_police.scenario +++ b/scenarios/prolog/morning_police.scenario @@ -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 "— ЭЙ, ТЫ! СТОЯТЬ!" diff --git a/scenarios/prolog/morning_restore_book.scenario b/scenarios/prolog/morning_restore_book.scenario index 1cb27ce..490aee3 100644 --- a/scenarios/prolog/morning_restore_book.scenario +++ b/scenarios/prolog/morning_restore_book.scenario @@ -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 diff --git a/scenarios/prolog/morning_restore_cloak.scenario b/scenarios/prolog/morning_restore_cloak.scenario index 759310c..1476409 100644 --- a/scenarios/prolog/morning_restore_cloak.scenario +++ b/scenarios/prolog/morning_restore_cloak.scenario @@ -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 diff --git a/scenarios/prolog/morning_wake.scenario b/scenarios/prolog/morning_wake.scenario index f212420..1386fcf 100644 --- a/scenarios/prolog/morning_wake.scenario +++ b/scenarios/prolog/morning_wake.scenario @@ -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 diff --git a/scenarios/prolog/river_arrival.scenario b/scenarios/prolog/river_arrival.scenario new file mode 100644 index 0000000..a7770c3 --- /dev/null +++ b/scenarios/prolog/river_arrival.scenario @@ -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 diff --git a/scenarios/prolog/villa_arrival.scenario b/scenarios/prolog/villa_arrival.scenario new file mode 100644 index 0000000..2426cef --- /dev/null +++ b/scenarios/prolog/villa_arrival.scenario @@ -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 diff --git a/scenes/menu/game_menu.tscn b/scenes/menu/game_menu.tscn index cb4ab7e..3286b31 100644 --- a/scenes/menu/game_menu.tscn +++ b/scenes/menu/game_menu.tscn @@ -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" diff --git a/scenes/menu/mods_menu.tscn b/scenes/menu/mods_menu.tscn deleted file mode 100644 index 5f9a82a..0000000 --- a/scenes/menu/mods_menu.tscn +++ /dev/null @@ -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" diff --git a/scenes/menu/save_load_menu.tscn b/scenes/menu/save_load_menu.tscn deleted file mode 100644 index 20cbf21..0000000 --- a/scenes/menu/save_load_menu.tscn +++ /dev/null @@ -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 diff --git a/scenes/menu/save_slot_item.tscn b/scenes/menu/save_slot_item.tscn deleted file mode 100644 index 5bf950e..0000000 --- a/scenes/menu/save_slot_item.tscn +++ /dev/null @@ -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 diff --git a/scenes/menu/save_slot_item.tscn.uid b/scenes/menu/save_slot_item.tscn.uid deleted file mode 100644 index 2abf731..0000000 --- a/scenes/menu/save_slot_item.tscn.uid +++ /dev/null @@ -1 +0,0 @@ -uid://c6kll6en347h1 \ No newline at end of file diff --git a/scenes/menu/settings_menu.tscn b/scenes/menu/settings_menu.tscn deleted file mode 100644 index 2554e30..0000000 --- a/scenes/menu/settings_menu.tscn +++ /dev/null @@ -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" diff --git a/scenes/prolog_river.json b/scenes/prolog_river.json new file mode 100644 index 0000000..990530f --- /dev/null +++ b/scenes/prolog_river.json @@ -0,0 +1,6 @@ +{ + "name": "prolog_river", + "defaultBackground": "prolog/river", + "defaultAmbient": "locations/home/outside/river", + "defaultScenario": "scenarios/prolog/river_arrival.scenario" +} diff --git a/scenes/prolog_villa.json b/scenes/prolog_villa.json new file mode 100644 index 0000000..8d26590 --- /dev/null +++ b/scenes/prolog_villa.json @@ -0,0 +1,6 @@ +{ + "name": "prolog_villa", + "defaultBackground": "prolog/villa", + "defaultAmbient": "locations/home/outside/river", + "defaultScenario": "scenarios/prolog/villa_arrival.scenario" +} diff --git a/scenes/ui/answer_box.tscn b/scenes/ui/answer_box.tscn index b233c82..0bc1beb 100644 --- a/scenes/ui/answer_box.tscn +++ b/scenes/ui/answer_box.tscn @@ -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 diff --git a/scenes/ui/answer_item.tscn b/scenes/ui/answer_item.tscn index 5dcaf11..696defe 100644 --- a/scenes/ui/answer_item.tscn +++ b/scenes/ui/answer_item.tscn @@ -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) diff --git a/scenes/ui/answer_item.tscn.uid b/scenes/ui/answer_item.tscn.uid deleted file mode 100644 index 316f0d9..0000000 --- a/scenes/ui/answer_item.tscn.uid +++ /dev/null @@ -1 +0,0 @@ -uid://bv80qy227xxee \ No newline at end of file diff --git a/scenes/ui/character_panel/action_card.tscn b/scenes/ui/character_panel/action_card.tscn deleted file mode 100644 index 185bd96..0000000 --- a/scenes/ui/character_panel/action_card.tscn +++ /dev/null @@ -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 diff --git a/scenes/ui/character_panel/action_pool.tscn b/scenes/ui/character_panel/action_pool.tscn deleted file mode 100644 index 72733b2..0000000 --- a/scenes/ui/character_panel/action_pool.tscn +++ /dev/null @@ -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 diff --git a/scenes/ui/character_panel/action_slot.tscn b/scenes/ui/character_panel/action_slot.tscn deleted file mode 100644 index a2d8a2d..0000000 --- a/scenes/ui/character_panel/action_slot.tscn +++ /dev/null @@ -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) diff --git a/scenes/ui/character_panel/character_card.tscn b/scenes/ui/character_panel/character_card.tscn deleted file mode 100644 index bb59bf5..0000000 --- a/scenes/ui/character_panel/character_card.tscn +++ /dev/null @@ -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 diff --git a/scenes/ui/character_panel/character_panel.tscn b/scenes/ui/character_panel/character_panel.tscn deleted file mode 100644 index ecc861f..0000000 --- a/scenes/ui/character_panel/character_panel.tscn +++ /dev/null @@ -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 diff --git a/scenes/ui/dialog_box.tscn b/scenes/ui/dialog_box.tscn index f5778da..d334fd1 100644 --- a/scenes/ui/dialog_box.tscn +++ b/scenes/ui/dialog_box.tscn @@ -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 diff --git a/scenes/ui/dialog_box.tscn.uid b/scenes/ui/dialog_box.tscn.uid deleted file mode 100644 index 1e43ecd..0000000 --- a/scenes/ui/dialog_box.tscn.uid +++ /dev/null @@ -1 +0,0 @@ -uid://b8vnxfoixyust \ No newline at end of file diff --git a/scenes/ui/dialog_canvas.tscn b/scenes/ui/dialog_canvas.tscn new file mode 100644 index 0000000..a116cc6 --- /dev/null +++ b/scenes/ui/dialog_canvas.tscn @@ -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") diff --git a/scenes/ui/inventory_item.tscn b/scenes/ui/inventory_item.tscn index ace76c5..60f5ca5 100644 --- a/scenes/ui/inventory_item.tscn +++ b/scenes/ui/inventory_item.tscn @@ -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 = "" diff --git a/scenes/ui/inventory_panel.tscn b/scenes/ui/inventory_panel.tscn index 9a4e63a..a31a6e9 100644 --- a/scenes/ui/inventory_panel.tscn +++ b/scenes/ui/inventory_panel.tscn @@ -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 diff --git a/scenes/ui/map_marker.tscn b/scenes/ui/map_marker.tscn new file mode 100644 index 0000000..17971ec --- /dev/null +++ b/scenes/ui/map_marker.tscn @@ -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 diff --git a/scenes/ui/map_widget.tscn b/scenes/ui/map_widget.tscn index a8e7819..1a57725 100644 --- a/scenes/ui/map_widget.tscn +++ b/scenes/ui/map_widget.tscn @@ -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" diff --git a/scenes/ui/message.tscn b/scenes/ui/message.tscn index d32331f..c3d51db 100644 --- a/scenes/ui/message.tscn +++ b/scenes/ui/message.tscn @@ -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 = "" diff --git a/scenes/ui/quest_journal.tscn b/scenes/ui/quest_journal.tscn deleted file mode 100644 index 5e702f3..0000000 --- a/scenes/ui/quest_journal.tscn +++ /dev/null @@ -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") diff --git a/scenes/ui/skills_panel/skill_card.tscn b/scenes/ui/skills_panel/skill_card.tscn index 15dd22f..717edbb 100644 --- a/scenes/ui/skills_panel/skill_card.tscn +++ b/scenes/ui/skills_panel/skill_card.tscn @@ -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 diff --git a/scenes/ui/skills_panel/skills_panel.tscn b/scenes/ui/skills_panel/skills_panel.tscn index 9756c85..9c1996b 100644 --- a/scenes/ui/skills_panel/skills_panel.tscn +++ b/scenes/ui/skills_panel/skills_panel.tscn @@ -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 diff --git a/src/EnslaveCondition.cs b/src/EnslaveCondition.cs deleted file mode 100644 index cdb4c57..0000000 --- a/src/EnslaveCondition.cs +++ /dev/null @@ -1,34 +0,0 @@ -using Cthangover.Core.Characters; -using Cthangover.Core.Relationship; -using Cthangover.Core.Settings; - -namespace Cthangover.Core.Relationship -{ - /// - /// Recruitment condition that gates the "enslave" recruit option - /// behind the slave_master skill. When the player attempts to - /// recruit an NPC, the recruitment system queries all registered - /// implementations; if this condition - /// is present and the player does not have the skill, the enslavement - /// option is hidden or disabled. - /// - public class EnslaveCondition : IRecruitCondition - { - /// - /// Identifies this condition as the enslavement gate for the - /// recruitment system (maps to enslave option). - /// - public string Id => "enslave"; - - /// - /// Determines whether enslavement is available for the given enemy. - /// Checks the runtime skill data for the slave_master skill. - /// The target is provided but not inspected - /// because the condition depends solely on the player's skills. - /// - public bool CanRecruit(Character enemy, RuntimeData runtime) - { - return runtime.SkillData.HasSkill("slave_master"); - } - } -} diff --git a/src/StarterPartyInitializer.cs b/src/StarterPartyInitializer.cs deleted file mode 100644 index c84ad08..0000000 --- a/src/StarterPartyInitializer.cs +++ /dev/null @@ -1,68 +0,0 @@ -using Cthangover.Core.Events; -using Cthangover.Core.Mods; -using Cthangover.Core.Settings; - -namespace Cthangover.Core.Characters -{ - /// - /// Populates the initial player party with the default starter - /// character "Marao" when the core mod finishes loading. - /// - /// The party can only be populated during OnModResourcesReady, - /// not earlier. OnModLoaded and the constructor fire inside - /// ModRegistry.Initialize → ModCompiler.LoadModCode, - /// where mod JSON resources are not yet guaranteed to be accessible. - /// AddCharacterToParty chains into CharacterFactory.Get, - /// which calls ModManager.CollectJsonGroup — this requires - /// file providers to be fully set up, which only happens after the - /// entire ModRegistry.Initialize pipeline completes. - /// - /// OnModResourcesReady is invoked by ModInitializerRegistry - /// .NotifyResourcesReady at the end of SceneManager.Initialize, - /// after ModRegistry finishes discovery, SceneEventRegistry - /// 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 IModInitializer and call AddCharacterToParty - /// from OnModResourcesReady for their character IDs. - /// - public class StarterPartyInitializer : IModInitializer - { - private static bool newGameHookInstalled; - - /// - /// No-op: cross-mod lifecycle notifications are not needed for - /// starter party setup. Each mod's OnModResourcesReady - /// handles its own default characters independently. - /// - public void OnModLoaded(string modId) { } - - /// - /// Adds the core mod's default starter character "Marao" - /// to both Characters and BattleSet via - /// CharacterData.AddCharacterToParty. Called once, after - /// all mod file providers and JSON resources are guaranteed to - /// be accessible. Also installs the one-time - /// hook so the starter party is - /// restored after ResetRuntime wipes it at the start of a - /// new game. Both operations are idempotent. - /// - public void OnModResourcesReady() - { - SeedStarterParty(); - - if (newGameHookInstalled) - return; - - newGameHookInstalled = true; - ModEventBus.Subscribe(_ => SeedStarterParty()); - } - - private static void SeedStarterParty() - { - GameData.Instance.Runtime.CharacterData.AddCharacterToParty("Marao"); - GameData.Instance.Runtime.SkillData.AddSkill("slave_master"); - } - } -} diff --git a/status_effects/status_effects.json b/status_effects/status_effects.json deleted file mode 100644 index deacc5a..0000000 Binary files a/status_effects/status_effects.json and /dev/null differ