返回提交历史
Modified
Commands/ReaperDebugCommands.cs
+41
-0
Modified
Common/ReaperBossRewardSystem.cs
+36
-100
Modified
Localization/en-US.hjson
+5
-3
Modified
Localization/zh-Hans.hjson
+5
-3
Modified
README.md
+4
-2
Modified
README.zh-Hans.md
+4
-2
Modified
description.txt
+1
-1
Modified
description_workshop.txt
+1
-1
Modified
description_workshop_zh-Hans.txt
+1
-1
Modified
description_zh-Hans.txt
+1
-1
Added
docs/DEBUG_COMMANDS.md
+36
-0
Added
docs/DEBUG_COMMANDS.zh-Hans.md
+36
-0
Modified
docs/PLAY_GUIDE.md
+11
-8
Modified
docs/PLAY_GUIDE.zh-Hans.md
+11
-8
XFEstudio/DeathMod
重构阶段魂印发放机制,新增调试命令及文档
重写 Boss 击杀后魂印发放逻辑,统一为所有已解锁阶段各发放 1 点魂印,移除原有阶段判定。新增 `/reaperdebugitems` 调试命令,支持一键生成物品并发放魂印,仅限调试世界使用。补充并同步多语言文本、物品描述、README、玩法指南及调试命令文档,详细说明新机制和测试流程,提升开发与测试效率。
4b36f66
代码差异
14 个文件
+193
-130
@@ -72,6 +72,47 @@ public sealed class ReaperDebugGiveCommand : ModCommand
72
72
}
73
73
}
74
74
75
public sealed class ReaperDebugItemsCommand : ModCommand
76
{
77
public override string Command => "reaperdebugitems";
78
public override CommandType Type => CommandType.World;
79
public override string Usage => "/reaperdebugitems";
80
public override string Description => Language.GetTextValue("Mods.SoulHarvest.Commands.ItemsDescription");
81
82
public override void Action(CommandCaller caller, string input, string[] args)
83
{
84
if (!ReaperDebugMode.TryGetPlayer(caller, out Player player))
85
return;
86
87
int spawnedItemTypes = 0;
88
foreach (ModItem modItem in Mod.GetContent<ModItem>())
89
{
90
// DeathDomain is an altar-only virtual entry. Soul Seal items mirror an
91
// authoritative character ledger and must be issued through its service.
92
if (modItem is DeathDomain or ReaperSoulSealItem)
93
continue;
94
95
player.QuickSpawnItem(
96
player.GetSource_Misc("SoulHarvest:DebugAllItems"),
97
modItem.Type);
98
spawnedItemTypes++;
99
}
100
101
int grantedSealPoints = 0;
102
for (ReaperStage stage = ReaperStage.StageI; stage <= ReaperStage.StageIII; stage++)
103
{
104
if (ReaperProgressionSoulSealService.TryGrant(player, stage))
105
grantedSealPoints++;
106
}
107
108
caller.Reply(Language.GetTextValue(
109
"Mods.SoulHarvest.Commands.ItemsSuccess",
110
spawnedItemTypes,
111
grantedSealPoints),
112
new Color(115, 225, 190));
113
}
114
}
115
75
116
public sealed class ReaperDebugResetCommand : ModCommand
76
117
{
77
118
public override string Command => "reaperdebugreset";
@@ -273,9 +273,9 @@ internal sealed class ReaperBossParticipationSystem : ModSystem
273
273
}
274
274
275
275
/// <summary>
276
/// Awards exactly one progression seal per completed boss encounter to every online
277
/// player who dealt damage. Dead participants remain eligible because Player.active,
278
/// not Player.dead, is the eligibility condition.
276
/// Awards one progression seal for every world-unlocked stage per completed boss
277
/// encounter to each online player who dealt damage. Dead participants remain
278
/// eligible because Player.active, not Player.dead, is the eligibility condition.
279
279
/// </summary>
280
280
internal sealed class ReaperBossRewardGlobalNPC : GlobalNPC
281
281
{
@@ -336,13 +336,17 @@ internal sealed class ReaperBossRewardGlobalNPC : GlobalNPC
336
336
&& ReaperBossParticipationSystem.IsCompositeMechanicalEncounter())
337
337
{
338
338
// Defer cross-family encounters until every mechanical component is
339
// gone. The shared ledger unions participation and produces only one
340
// entitlement per player for the entire encounter.
339
// gone. The shared ledger unions participation and produces one reward
340
// bundle per player for the entire encounter.
341
341
ReaperBossParticipationSystem.RegisterMechanicalCompletion(family, encounterParticipants);
342
342
return;
343
343
}
344
344
345
if (!TryGetMaximumRewardStage(npc, family, out ReaperStage maximumRewardStage))
345
ReaperStage maximumRewardStage = GetHighestUnlockedRewardStage(
346
npc.type,
347
family,
348
mechanicalEncounterCompletedTrio: false);
349
if (maximumRewardStage == ReaperStage.Locked)
346
350
return;
347
351
348
352
for (int playerIndex = 0; playerIndex < Main.maxPlayers; playerIndex++)
@@ -351,23 +355,18 @@ internal sealed class ReaperBossRewardGlobalNPC : GlobalNPC
351
355
if (!encounterParticipants[playerIndex] || !player.active)
352
356
continue;
353
357
354
ReaperProgressionState progression = player.GetModPlayer<MyPlayer>().ReaperProgression;
355
if (TrySelectMissingRewardStage(
356
progression,
357
maximumRewardStage,
358
npc.type,
359
family,
360
mechanicalEncounterCompletedTrio: false,
361
out ReaperStage rewardStage))
362
player.GetModPlayer<MyPlayer>().TryGrantSoulSeal(rewardStage);
358
GrantUnlockedStageRewards(player, maximumRewardStage);
363
359
}
364
360
}
365
361
366
362
internal static void AwardMechanicalEncounter(bool[] encounterParticipants, bool completedTrio)
367
363
{
368
ReaperStage maximumRewardStage = completedTrio || AllMechanicalBossesDefeated()
369
? ReaperStage.StageIII
370
: ReaperStage.StageII;
364
ReaperStage maximumRewardStage = GetHighestUnlockedRewardStage(
365
NPCID.None,
366
ReaperBossFamily.None,
367
completedTrio);
368
if (maximumRewardStage == ReaperStage.Locked)
369
return;
371
370
372
371
for (int playerIndex = 0; playerIndex < Main.maxPlayers; playerIndex++)
373
372
{
@@ -375,17 +374,7 @@ internal sealed class ReaperBossRewardGlobalNPC : GlobalNPC
375
374
if (!encounterParticipants[playerIndex] || !player.active)
376
375
continue;
377
376
378
ReaperProgressionState progression = player.GetModPlayer<MyPlayer>().ReaperProgression;
379
if (TrySelectMissingRewardStage(
380
progression,
381
maximumRewardStage,
382
NPCID.None,
383
ReaperBossFamily.None,
384
completedTrio,
385
out ReaperStage rewardStage))
386
{
387
player.GetModPlayer<MyPlayer>().TryGrantSoulSeal(rewardStage);
388
}
377
GrantUnlockedStageRewards(player, maximumRewardStage);
389
378
}
390
379
}
391
380
@@ -420,69 +409,33 @@ internal sealed class ReaperBossRewardGlobalNPC : GlobalNPC
420
409
}
421
410
}
422
411
423
private static bool TrySelectMissingRewardStage(
424
ReaperProgressionState progression,
425
ReaperStage maximumStage,
426
int defeatedNpcType,
427
ReaperBossFamily defeatedFamily,
428
bool mechanicalEncounterCompletedTrio,
429
out ReaperStage stage)
412
private static void GrantUnlockedStageRewards(Player player, ReaperStage maximumStage)
430
413
{
431
for (stage = ReaperStage.StageI; stage <= maximumStage; stage++)
432
{
433
bool gateOpen = stage switch
434
{
435
ReaperStage.StageI => NPC.downedBoss3 || defeatedNpcType == NPCID.SkeletronHead,
436
ReaperStage.StageII => Main.hardMode || defeatedNpcType == NPCID.WallofFlesh,
437
ReaperStage.StageIII => maximumStage >= ReaperStage.StageIII
438
&& (AllMechanicalBossesDefeated()
439
|| mechanicalEncounterCompletedTrio
440
|| IsMechanicalBoss(defeatedNpcType, defeatedFamily)
441
&& WouldCompleteMechanicalTrio(
442
defeatedNpcType,
443
defeatedFamily)),
444
_ => false
445
};
446
if (gateOpen && progression.CanIssueSoulSeal(stage))
447
return true;
448
}
449
450
stage = ReaperStage.Locked;
451
return false;
414
MyPlayer modPlayer = player.GetModPlayer<MyPlayer>();
415
for (ReaperStage stage = ReaperStage.StageI; stage <= maximumStage; stage++)
416
modPlayer.TryGrantSoulSeal(stage);
452
417
}
453
418
454
private static bool TryGetMaximumRewardStage(NPC npc, ReaperBossFamily family, out ReaperStage stage)
419
private static ReaperStage GetHighestUnlockedRewardStage(
420
int defeatedNpcType,
421
ReaperBossFamily defeatedFamily,
422
bool mechanicalEncounterCompletedTrio)
455
423
{
456
stage = ReaperStage.Locked;
457
458
if (IsMechanicalBoss(npc.type, family))
459
{
460
stage = WouldCompleteMechanicalTrio(npc.type, family)
461
? ReaperStage.StageIII
462
: ReaperStage.StageII;
463
return true;
464
}
465
466
if (npc.type == NPCID.WallofFlesh || npc.type == NPCID.QueenSlimeBoss)
424
if (AllMechanicalBossesDefeated()
425
|| mechanicalEncounterCompletedTrio
426
|| IsMechanicalBoss(defeatedNpcType, defeatedFamily)
427
&& WouldCompleteMechanicalTrio(defeatedNpcType, defeatedFamily))
467
428
{
468
stage = ReaperStage.StageII;
469
return true;
429
return ReaperStage.StageIII;
470
430
}
471
431
472
if (IsDominionBoss(npc.type, family))
473
{
474
stage = ReaperStage.StageIII;
475
return true;
476
}
432
if (Main.hardMode || defeatedNpcType == NPCID.WallofFlesh)
433
return ReaperStage.StageII;
477
434
478
if (IsPreHardmodeBoss(npc.type, family)
479
&& (NPC.downedBoss3 || npc.type == NPCID.SkeletronHead))
480
{
481
stage = ReaperStage.StageI;
482
return true;
483
}
435
if (NPC.downedBoss3 || defeatedNpcType == NPCID.SkeletronHead)
436
return ReaperStage.StageI;
484
437
485
return false;
438
return ReaperStage.Locked;
486
439
}
487
440
488
441
private static bool WouldCompleteMechanicalTrio(int npcType, ReaperBossFamily family)
@@ -504,23 +457,6 @@ internal sealed class ReaperBossRewardGlobalNPC : GlobalNPC
504
457
|| npcType is NPCID.Retinazer or NPCID.Spazmatism or NPCID.TheDestroyer or NPCID.SkeletronPrime;
505
458
}
506
459
507
private static bool IsPreHardmodeBoss(int npcType, ReaperBossFamily family)
508
{
509
return family is ReaperBossFamily.Skeletron or ReaperBossFamily.EaterOfWorlds or ReaperBossFamily.BrainOfCthulhu
510
|| npcType is NPCID.KingSlime
511
or NPCID.EyeofCthulhu
512
or NPCID.QueenBee
513
or NPCID.Deerclops;
514
}
515
516
private static bool IsDominionBoss(int npcType, ReaperBossFamily family)
517
{
518
return family is ReaperBossFamily.Plantera or ReaperBossFamily.Golem or ReaperBossFamily.MoonLord
519
|| npcType is NPCID.DukeFishron
520
or NPCID.HallowBoss
521
or NPCID.CultistBoss
522
or NPCID.DD2Betsy;
523
}
524
460
}
525
461
526
462
/// <summary>
@@ -96,17 +96,17 @@ Mods: {
96
96
97
97
AwakeningSoulSeal: {
98
98
DisplayName: Awakening Soul Seal
99
Tooltip: A character-bound Stage I entitlement; combine it with 1 Soul Essence at a Death Altar to illuminate Stage I of one branch
99
Tooltip: A character-bound Stage I receipt; after Skeletron, participating in any boss kill grants one, including alongside later-stage rewards; combine it with 1 Soul Essence to illuminate Stage I of one branch
100
100
}
101
101
102
102
BoundarySoulSeal: {
103
103
DisplayName: Boundary Soul Seal
104
Tooltip: A character-bound Stage II entitlement; combine it with 2 Soul Essence at a Death Altar to illuminate Stage II of one branch
104
Tooltip: A character-bound Stage II receipt; in Hardmode, participating in any boss kill grants one together with an Awakening Seal; combine it with 2 Soul Essence to illuminate Stage II of one branch
105
105
}
106
106
107
107
DominionSoulSeal: {
108
108
DisplayName: Dominion Soul Seal
109
Tooltip: A character-bound Stage III entitlement; combine it with 3 Soul Essence at a Death Altar to illuminate Stage III of one branch
109
Tooltip: A character-bound Stage III receipt; after all three mechanical bosses, participating in any boss kill grants one seal for all three stages; combine it with 3 Soul Essence to illuminate Stage III of one branch
110
110
}
111
111
}
112
112
@@ -670,6 +670,8 @@ Mods: {
670
670
CharacterNotReady: Character data has not finished synchronizing with the server. Try again shortly.
671
671
GiveDescription: Grants 999 Soul Essence and all three tiers of Soul Seals in a -debug world.
672
672
GiveSuccess: Granted 999 Soul Essence; Awakening, Boundary, and Dominion Soul Seals are each stocked to the character cap of 6.
673
ItemsDescription: Spawns every player-holdable item from this mod and legally issues all three Soul Seal stages in a -debug world.
674
ItemsSuccess: Spawned {0} mod item types at the character and issued one point for each uncapped Soul Seal stage, {1} this time. The virtual Death Domain entry was not spawned.
673
675
ResetDescription: Rolls back every character-owned sickle progression node in a -debug world.
674
676
ResetSuccess: Rolled back all six branch stages, 18 form skills, and every common node; issued Soul Seals are available again.
675
677
}
@@ -96,17 +96,17 @@ Mods: {
96
96
97
97
AwakeningSoulSeal: {
98
98
DisplayName: 初醒魂印
99
Tooltip: 人物绑定的阶段 I 资格凭证;在死神祭坛与 1 个灵魂精华一同点亮一个分支的阶段 I
99
Tooltip: 人物绑定的阶段 I 凭证;骷髅王后参与击杀任意 Boss 均会获得 1 点,后续阶段奖励也会一并包含;与 1 个灵魂精华点亮一个分支的阶段 I
100
100
}
101
101
102
102
BoundarySoulSeal: {
103
103
DisplayName: 破界魂印
104
Tooltip: 人物绑定的阶段 II 资格凭证;在死神祭坛与 2 个灵魂精华一同点亮一个分支的阶段 II
104
Tooltip: 人物绑定的阶段 II 凭证;困难模式后参与击杀任意 Boss 时与初醒魂印同时获得 1 点;与 2 个灵魂精华点亮一个分支的阶段 II
105
105
}
106
106
107
107
DominionSoulSeal: {
108
108
DisplayName: 统御魂印
109
Tooltip: 人物绑定的阶段 III 资格凭证;在死神祭坛与 3 个灵魂精华一同点亮一个分支的阶段 III
109
Tooltip: 人物绑定的阶段 III 凭证;击败全部新三王后参与击杀任意 Boss,三阶段魂印都会同时获得 1 点;与 3 个灵魂精华点亮一个分支的阶段 III
110
110
}
111
111
}
112
112
@@ -670,6 +670,8 @@ Mods: {
670
670
CharacterNotReady: 人物数据尚未完成服务端同步,请稍后重试。
671
671
GiveDescription: 在 -debug 世界中获得 999 灵魂精华与三个阶段的魂印。
672
672
GiveSuccess: 已获得 999 灵魂精华;初醒、破界、统御魂印均已补至人物上限 6 枚。
673
ItemsDescription: 在 -debug 世界中一键生成本模组全部可持有物品,并合法签发三阶段魂印。
674
ItemsSuccess: 已在角色位置生成 {0} 种本模组物品;为尚未满额的阶段各签发 1 点魂印,本次共 {1} 点。虚拟死亡领域条目未生成。
673
675
ResetDescription: 在 -debug 世界中回退人物的全部镰刀成长节点。
674
676
ResetSuccess: 已回退六分支阶段、18 项形态技能与全部通用节点;已签发魂印恢复为未消费状态。
675
677
}
@@ -55,7 +55,7 @@ All six branches can be trained in parallel. Illuminating a stage does not repla
55
55
| II · Metamorphosis | After Wall of Flesh / once the world is in Hardmode | 1 Boundary Soul Seal | 2 |
56
56
| III · Ultimate Release | After all three mechanical bosses | 1 Dominion Soul Seal | 3 |
57
57
58
Deal positive damage while participating in an eligible boss encounter to receive the matching character-bound seal. At most six seals are issued for each stage—exactly enough for all six branches. The inventory item is only a visible receipt for the authoritative character ledger: copying, dropping, or trading it cannot duplicate progression. If the inventory is full, its receipt is delivered when space becomes available.
58
After a world gate opens, deal positive damage while participating in any boss kill to gain one character-bound seal for the highest unlocked stage and every earlier stage at the same time: Awakening after Skeletron; Awakening plus Boundary in Hardmode; all three after the mechanical trio. At most six seals are issued for each stage—exactly enough for all six branches—and a capped stage does not block the others. The inventory item is only a visible receipt for the authoritative character ledger: copying, dropping, or trading it cannot duplicate progression. If the inventory is full, its receipt is delivered when space becomes available.
59
59
60
60
Each unique skill caps at Lv.3. Stage illumination grants Lv.1 for free; Lv.2 costs 50 character souls and Lv.3 costs 100 character souls.
61
61
@@ -97,7 +97,7 @@ The first 3.0 load scans the inventory, Piggy Bank, Safe, Defender's Forge, and
97
97
- A normal enemy must first receive Death Mark from the Harvest Sickle. Its reward scales with maximum life and caps at 50 souls.
98
98
- Every player who lands a valid sickle hit during a boss encounter receives the full soul reward, capped at 500; it is not divided among the party.
99
99
- The character-bound Death Domain exists from the start. Each Soul Refinement level increases harvested souls by 10%, up to +50%.
100
- Soul Seal participation only requires positive damage during the relevant boss encounter, not the final blow. A dead but still connected participant remains eligible.
100
- After the current world gate opens, Soul Seal participation only requires positive damage to any boss, not the final blow. A dead but still connected participant remains eligible for +1 to the highest unlocked stage and every earlier stage.
101
101
- Bosses do not ordinarily drop Soul Essence; condense it from character souls through the Soul Icon or use existing essence items.
102
102
- Wings of Death retain flight-time, horizontal-speed, acceleration, and vertical-power branches, with infinite flight after all four are complete.
103
103
- The Death Robe retains defense, life, regeneration, mobility, summon, utility, and individual debuff-immunity branches.
@@ -122,6 +122,8 @@ Close tModLoader or disable the loaded mod before packaging because the running
122
122
## Documentation and links
123
123
124
124
- [English gameplay guide](docs/PLAY_GUIDE.md)
125
- [Debug command reference](docs/DEBUG_COMMANDS.md)
126
- [中文调试命令文档](docs/DEBUG_COMMANDS.zh-Hans.md)
125
127
- [简体中文 README](README.zh-Hans.md)
126
128
- [简体中文玩法指南](docs/PLAY_GUIDE.zh-Hans.md)
127
129
- [Repository](https://git.xfe.studio/XFEstudio/DeathMod)
@@ -55,7 +55,7 @@ Soul Harvest(内部模组名 `SoulHarvest`)是一款围绕人物灵魂、收
55
55
| II · 能力蜕变 | 击败肉山、世界进入困难模式后 | 破界魂印 ×1 | 2 |
56
56
| III · 终极解放 | 新三王全部击败后 | 统御魂印 ×1 | 3 |
57
57
58
参与符合当前层级的 Boss 战并造成有效伤害,可以获得对应的人物绑定魂印。每个阶段最多签发 6 枚,刚好足够点亮六个分支;背包中的魂印物品只是人物账本的可见凭证,复制、丢弃或交易物品不能复制进度。背包已满时,凭证会在有空间后补发。
58
阶段门槛开放后,参与击杀任意 Boss 并造成有效伤害,会让当前最高阶段及之前所有阶段的魂印同时 `+1`:骷髅王后获得初醒;困难模式后同时获得初醒与破界;新三王全部击败后同时获得初醒、破界与统御。每个阶段最多签发 6 枚,刚好足够点亮六个分支;满额阶段不会阻止其他阶段继续增加。背包中的魂印物品只是人物账本的可见凭证,复制、丢弃或交易物品不能复制进度。背包已满时,凭证会在有空间后补发。
59
59
60
60
每个独特技能上限为 Lv.3:阶段解锁时免费获得 Lv.1,升级至 Lv.2 消耗 50 人物灵魂,升级至 Lv.3 消耗 100 人物灵魂。
61
61
@@ -97,7 +97,7 @@ Soul Harvest(内部模组名 `SoulHarvest`)是一款围绕人物灵魂、收
97
97
- 普通敌人必须先被收魂镰命中并获得死亡标记;奖励随最大生命增长,最多 50 灵魂。
98
98
- 每位在 Boss 战中用收魂镰留下有效命中的玩家都可获得完整的灵魂奖励,最多 500,不会在队伍间平分。
99
99
- 人物绑定的死亡领域初始即有;“灵魂提炼”每级使实际收割灵魂增加 10%,最高增加 50%。
100
- 阶段魂印的参与判定只要求在对应 Boss 战中造成有效伤害,不限定最后一击;死亡但仍在线的参与者依然可领取。
100
- 阶段魂印的参与判定只要求在当前世界阶段开放后对任意 Boss 造成有效伤害,不限定最后一击;死亡但仍在线的参与者依然可领取当前阶段及之前各 1 点。
101
101
- 灵魂精华不会作为 Boss 的普通掉落;它由人物灵魂通过右侧灵魂图标凝聚,或来自已有的精华物品。
102
102
- 死亡之翼可培养飞行时间、水平速度、加速度和垂直能力,四项圆满后解锁无限飞行。
103
103
- 死神长袍拥有防御、生命、回复、机动、召唤与多项功能/减益免疫分支。
@@ -106,6 +106,8 @@ Soul Harvest(内部模组名 `SoulHarvest`)是一款围绕人物灵魂、收
106
106
## 文档与链接
107
107
108
108
- [完整中文玩法指南](docs/PLAY_GUIDE.zh-Hans.md)
109
- [中文调试命令文档](docs/DEBUG_COMMANDS.zh-Hans.md)
110
- [English debug command reference](docs/DEBUG_COMMANDS.md)
109
111
- [English gameplay guide](docs/PLAY_GUIDE.md)
110
112
- [项目仓库](https://git.xfe.studio/XFEstudio/DeathMod)
111
113
- [XFEstudio](https://www.xfe.studio/)
@@ -7,7 +7,7 @@ QUICK START
7
7
2. Right-click the Soul Icon in the upper-right to spend 100 souls and extract 1 Soul Essence. Left-click it to absorb 1 Soul Essence back into 100 souls.
8
8
3. Craft a Harvest Sickle from 10 Wood and 5 Iron or Lead Bars at an anvil. Craft a Death Altar from 1 Soul Essence at a Work Bench.
9
9
4. Place and right-click the altar. Select the character-bound Harvest Sickle or Death Domain, or an eligible robe, wing, or necklace from the left list. Click a node, review it on the right, then press the confirmation button to purchase it.
10
5. Participate in eligible boss fights to earn character-bound Soul Seals: Stage I after Skeletron, Stage II after entering Hardmode, and Stage III after all three mechanical bosses.
10
5. After a stage opens, participate in any boss kill: after Skeletron gain +1 Awakening; in Hardmode gain +1 Awakening and Boundary; after all three mechanical bosses gain +1 to all three seals.
11
11
12
12
DEFAULT CONTROLS
13
13
- Mouse1: current form's primary combo
@@ -37,7 +37,7 @@ All six form branches can be trained in parallel. Illuminating a stage never con
37
37
[*][b]Stage II · Metamorphosis:[/b] enter Hardmode, earn a Boundary Soul Seal, and spend 2 Soul Essence.
38
38
[*][b]Stage III · Ultimate Release:[/b] defeat all three mechanical bosses, earn a Dominion Soul Seal, and spend 3 Soul Essence.
39
39
[/list]
40
Deal positive damage during an eligible boss encounter to receive its character-bound seal. At most six seals are issued for each stage—exactly enough for all six branches. The inventory seal is only a visible receipt; the character ledger is authoritative.
40
After a stage gate opens, deal positive damage during any boss kill to gain one character-bound seal for the highest unlocked stage and every earlier stage at once: Awakening after Skeletron; Awakening plus Boundary in Hardmode; all three after the mechanical trio. Each stage caps at six, and a capped stage does not block the others. The inventory seal is only a visible receipt; the character ledger is authoritative.
41
41
42
42
[h2]Default controls[/h2]
43
43
[table]
@@ -37,7 +37,7 @@
37
37
[*][b]阶段 II · 能力蜕变:[/b]进入困难模式,获得破界魂印,消耗 2 灵魂精华。
38
38
[*][b]阶段 III · 终极解放:[/b]击败全部新三王,获得统御魂印,消耗 3 灵魂精华。
39
39
[/list]
40
参与对应 Boss 战并造成正伤害即可取得人物绑定魂印。每个阶段最多签发 6 枚,刚好点亮六个分支;背包中的魂印只是可见凭证,人物账本才是实际进度。
40
阶段开放后,参与击杀任意 Boss 并造成正伤害,当前最高阶段及之前所有阶段的魂印都会同时 +1:骷髅王后获得初醒;困难模式后获得初醒与破界;新三王后同时获得三种。每阶段最多签发 6 枚,满额阶段不会阻止其他阶段增加;背包中的魂印只是可见凭证,人物账本才是实际进度。
41
41
42
42
[h2]默认操作[/h2]
43
43
[table]
@@ -7,7 +7,7 @@
7
7
2. 右键右上角灵魂图标,消耗 100 灵魂提取 1 个灵魂精华;左键可将 1 个灵魂精华重新吸收为 100 灵魂。
8
8
3. 在铁砧或铅砧使用 10 木材与 5 铁锭/铅锭制作收魂镰;在工作台使用 1 个灵魂精华制作死神祭坛。
9
9
4. 放置并右键祭坛。从左侧选择人物绑定的收魂镰、死亡领域,或背包中的长袍、翅膀与项链。点击节点只会查看详情,必须再按右侧确认按钮才会购买升级。
10
5. 参与对应阶段的 Boss 战以获得人物绑定魂印:骷髅王后开放阶段 I,进入困难模式后开放阶段 II,击败全部新三王后开放阶段 III。
10
5. 阶段开放后参与击杀任意 Boss:骷髅王后初醒 +1;困难模式后初醒、破界各 +1;新三王后初醒、破界、统御各 +1。
11
11
12
12
默认操作
13
13
- Mouse1:当前形态左键连段
@@ -0,0 +1,36 @@
1
# Soul Harvest Debug Commands
2
3
This document lists the development and regression-testing commands provided by Soul Harvest 3.0.
4
5
## Requirements
6
7
- Commands are available only in worlds whose name contains `-debug`, for example `SoulHarvest-debug`.
8
- The caller must be an active in-world player whose character data has finished synchronizing with the server.
9
- In multiplayer, the server validates commands and owns all character-progression changes.
10
- Back up test characters first; debug commands do not create backups.
11
12
## Command list
13
14
| Command | Effect |
15
| --- | --- |
16
| `/reaperdebugitems` | Spawns one of every player-holdable item from this mod at the player and legally issues one point for each uncapped Awakening, Boundary, and Dominion Seal stage. |
17
| `/reaperdebuggive` | Spawns 999 Soul Essence and fills the Awakening, Boundary, and Dominion Seal ledgers to the per-character cap of 6. |
18
| `/reaperdebugreset` | Rolls back all six branch stages, all 18 form skills, and every character-owned common sickle node, then clears temporary form-combat state. |
19
20
## `/reaperdebugitems` details
21
22
- The command dynamically enumerates the current build's registered `ModItem` content, so future ordinary items are included automatically.
23
- Ordinary items, equipment, the current Harvest Sickle, and legacy save-compatibility items are spawned at the player's position for pickup.
24
- The Death Domain is not spawned. It is a virtual Death Altar entry representing character-owned domain progression, not a holdable item.
25
- Soul Seal receipts are not forged directly. One point for each stage is issued through the authoritative character ledger, which creates or queues the matching receipt.
26
- A stage already at its six-point issue cap does not increase; other uncapped stages still receive one point.
27
- Use `/reaperdebuggive` when all three Soul Seal stages should be filled to their caps at once.
28
29
## Suggested test flow
30
31
1. Create a test world with `-debug` in its name.
32
2. Run `/reaperdebugitems` to spawn the full item set.
33
3. Run `/reaperdebuggive` to prepare Soul Essence and full Soul Seal resources.
34
4. Use the Death Altar to test stages, skills, Death Domain progression, and equipment upgrades.
35
5. Run `/reaperdebugreset` when the character progression route needs to be tested again.
36
@@ -0,0 +1,36 @@
1
# Soul Harvest 调试命令
2
3
本文列出 Soul Harvest 3.0 提供的开发与回归测试命令。
4
5
## 使用条件
6
7
- 命令仅能在世界名称包含 `-debug` 时使用,例如 `SoulHarvest-debug`。
8
- 命令必须由已经进入世界、且人物数据完成服务端同步的玩家执行。
9
- 多人模式下由服务端校验和修改人物成长数据。
10
- 建议先备份测试人物;调试命令不会自动生成备份。
11
12
## 命令列表
13
14
| 命令 | 作用 |
15
| --- | --- |
16
| `/reaperdebugitems` | 在玩家位置生成本模组全部可持有物品各 1 个,并为尚未满额的初醒、破界、统御阶段各合法签发 1 点魂印。 |
17
| `/reaperdebuggive` | 生成 999 个灵魂精华,并将初醒、破界、统御魂印账本分别补至人物上限 6 点。 |
18
| `/reaperdebugreset` | 回退六分支阶段、18 项形态技能和全部人物镰刀通用节点,并清空当前形态的临时战斗状态。 |
19
20
## `/reaperdebugitems` 细节
21
22
- 命令会动态枚举当前版本已经注册的 `ModItem`,因此以后新增的普通物品会自动包含在内。
23
- 普通物品、装备、当前收魂镰以及为旧存档兼容而保留的旧物品都会在玩家位置生成;请从地面拾取。
24
- `死亡领域`不会生成。它是死神祭坛用于展示人物领域成长的虚拟条目,不是可以持有的物品。
25
- 三种魂印不会被直接伪造为无效物品,而是通过人物账本各签发 1 点,并生成或补发对应凭证。
26
- 单个阶段已经达到 6 点签发上限时不会继续增加;其他未满阶段仍会正常获得 1 点。
27
- 若需要一次将三阶段魂印全部补满,请使用 `/reaperdebuggive`。
28
29
## 推荐测试流程
30
31
1. 建立名称包含 `-debug` 的测试世界。
32
2. 输入 `/reaperdebugitems` 获取全套物品。
33
3. 输入 `/reaperdebuggive` 准备灵魂精华和完整魂印资源。
34
4. 通过死神祭坛测试阶段、技能、死亡领域和装备升级。
35
5. 需要重新测试成长路线时输入 `/reaperdebugreset`。
36