Three things from the first working buff pass. **Pacing.** Casts were three seconds apart because of a fixed interval I added before there was a real busy signal. There is one now -- the shared busy count, incremented by the cast and decremented by the server's UseDone -- so the interval is gone and the server is the only throttle. MossTank casts the moment the previous action is acknowledged, which is the spam behaviour VTank has. The stall timeout moved 25s -> 30s so a slow server does not read as a stall. **Stamina to Mana was surprising.** VTank does convert vitals by default (Recharge-*-Mana), so the behaviour is right, but a buff pass quietly spending your stamina is not something to discover by watching. It is now a setting, with its own thresholds, and can be turned off outright. **Settings view.** Spell difficulty margin, rebuff time, the three vital thresholds, and three toggles. Two details worth recording: * The difficulty margin is SIGNED, per the VTank wiki: "a positive number raises the skill necessary to cast spells, a negative number lowers it. To attempt higher spells at a low level use a negative number." So the range spans -100..+100 rather than starting at zero. * It is a second registered panel with a complementary visible binding rather than a tab control. Two panels and an Action need no new markup vocabulary, and only one is ever on screen. Adjuster buttons rather than typed fields: buttons are proven in plugin markup, while an editable UiField would need keyboard routing plumbed through to plugin panels first. Worth doing, but not as a side quest inside this change. Also fixed: the App copy target names plugin files explicitly, so the new markup would have been left out of the plugin directory and the settings panel would have failed to load at runtime with the build perfectly green. Caught by listing the output rather than trusting the build. Solution builds clean; 14,438 tests pass on the standard hermetic lane filter, 0 failures. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
29 lines
1 KiB
XML
29 lines
1 KiB
XML
<Project Sdk="Microsoft.NET.Sdk">
|
|
<PropertyGroup>
|
|
<TargetFramework>net10.0</TargetFramework>
|
|
<ImplicitUsings>enable</ImplicitUsings>
|
|
<Nullable>enable</Nullable>
|
|
<LangVersion>latest</LangVersion>
|
|
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
|
|
<!-- Plugin DLLs are copied to plugins/<id>/ at build of AcDream.App.
|
|
They must NOT bring AcDream.Plugin.Abstractions.dll with them;
|
|
the host already owns it. -->
|
|
</PropertyGroup>
|
|
<ItemGroup>
|
|
<InternalsVisibleTo Include="AcDream.Plugins.MossTank.Tests" />
|
|
</ItemGroup>
|
|
<ItemGroup>
|
|
<ProjectReference Include="..\AcDream.Plugin.Abstractions\AcDream.Plugin.Abstractions.csproj">
|
|
<Private>false</Private>
|
|
<ExcludeAssets>runtime</ExcludeAssets>
|
|
</ProjectReference>
|
|
</ItemGroup>
|
|
<ItemGroup>
|
|
<None Update="mosstank.xml">
|
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
|
</None>
|
|
<None Update="mosstank-settings.xml">
|
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
|
</None>
|
|
</ItemGroup>
|
|
</Project>
|