Add mod documentation in seven languages

This commit is contained in:
cthangover committed 2026-10-29 09:26:18 +01:00
1 parent eb68bf4d04
commit 09a5ab1fbb
15 files changed
+456 -8

No files matched your search

+64
View File
@@ -0,0 +1,64 @@
# Test Defaults and Patches — 속성 패치 테스트 픽스처
이 모드는 콘텐츠가 아니라 **테스트 픽스처**입니다. `property_patches` 테스트가 불러오는 작은 속성 패치 모음으로, 다른 모드의 캐릭터와 아이템에 대한 패치가 게임이 약속한 방식으로 합쳐지는지 확인합니다. 게임에 속하는 일이 없으며, 플레이어가 켜도록 만들어진 것도 아닙니다.
## 무엇을 패치하나
속성 패치는 `patches/<kind>.json` 파일입니다. 각 항목은 `Id`로 엔티티를 지목하고 추가하거나 바꿀 속성을 나열합니다. `Id`가 `*`이면 **와일드카드**로, 해당 종류의 모든 엔티티에 닿습니다. 픽스처에는 종류별로 대상 지정 패치 하나와 와일드카드 패치 하나가 있습니다:
```json
{
"Items": [
{ "Id": "Marao", "TestPatched": 42, "TestDefault": 100 },
{ "Id": "*", "TestDefault": -20, "TestGlobalPatch": 1 }
]
}
```
```json
{
"Items": [
{ "Id": "food/ration", "Durability": 99, "SpecialProp": true },
{ "Id": "*", "Durability": 50, "GlobalItemProp": "patched" }
]
}
```
이 패치들이 확인하는 규칙:
- **대상 지정** 패치는 와일드카드를 이긴다: Marao의 `TestDefault`는 -20이 아니라 100이 됩니다;
- **와일드카드**는 나머지 모든 엔티티에 닿는다: 다른 캐릭터의 `TestDefault`는 -20, 모든 아이템의 `Durability`는 50이 됩니다;
- 한쪽만 설정하는 키는 모두 보존된다: Marao에게는 `TestGlobalPatch` 1이, ration 아이템에는 `GlobalItemProp`이 추가로 붙습니다;
- 대상 지정 키가 다른 엔티티로 새어 나가지 않습니다;
- 엔티티 자신의 타입 필드(예: ration의 이름)는 병합 후에도 살아남습니다.
## 테스트 실행
```text
godot --path . res://scenes/menu/launcher.tscn -- --with-mods=test_defaults_and_patches --itest=property_patches
dotnet run --project tests/Cthangover.TestRunner -- --test property_patches
```
픽스처는 `--with-mods=`가 이름을 불러 줄 때만 로드됩니다. 실제 실행에서의 출력:
```text
[PASS] Marao: targeted value: TestPatched=42
[PASS] Marao: targeted beats wildcard: TestDefault=100
[PASS] Marao: wildcard-only key: TestGlobalPatch=1
[PASS] werewolf_girl_1: wildcard value: TestDefault=-20
[PASS] werewolf_girl_1: no targeted key
[PASS] ration: targeted beats wildcard: Durability=99
[PASS] ration: targeted-only key: SpecialProp=true
[PASS] ration: wildcard-only key: GlobalItemProp=patched
[PASS] ration: typed field survives the merge
[PASS] wolf_meat: wildcard value: Durability=50
[TEST_RESULT] name=property_patches passed=14 failed=0
```
테스트는 모드 안에(`src/PropertyPatchesTest.cs`) 있으며 `--itest=property_patches`일 때만 활성화됩니다.
## 왜 게임에 들어가지 않나
매니페스트에는 `"fixture": true`라고 적혀 있습니다. 픽스처는 `--all-mods`에도, 게임의 모드 세트에도 절대 속하지 않습니다. `--with-mods=`가 이름을 불러야 로드되므로, 그 패치가 다른 테스트나 실제 플레이로 새어 들어갈 수 없습니다. 실제 게임에서 켜면 Cthangover의 모든 캐릭터와 모든 아이템에 테스트 속성을 붙이는 셈이 됩니다 — 와일드카드 패치는 모든 것을 건드리니까요. 의존 대상은 패치하는 Cthangover 모드들(`cthangover_game`, `cthangover_murakami`, `cooking`)입니다.
같은 모드는 도구 테스트가 안전하게 쓸 수 있는 장소이기도 합니다: `tools_windows` 테스트는 씬 편집기로 여기에 씬을 하나 만들었다가 다시 지웁니다.