lane T merge fixups: name the roll-succeeded branch instead of its FUN_ id (clean-room); mark describe_i32 maybe_unused so the shim cross-builds
This commit is contained in:
parent
6835cf4055
commit
c883a325ad
3 changed files with 4 additions and 3 deletions
|
|
@ -122,7 +122,7 @@ near-zero progress**, and give that player savings and a research slider that de
|
||||||
**≥ 1.5 × cost** in one turn — the guaranteed-completion path, so the outcome does not itself depend
|
**≥ 1.5 × cost** in one turn — the guaranteed-completion path, so the outcome does not itself depend
|
||||||
on a roll. One End Turn then fires the `OnTechResearched` site with the flag set.
|
on a roll. One End Turn then fires the `OnTechResearched` site with the flag set.
|
||||||
|
|
||||||
That save would also, for the first time, be able to reach `FUN_00889d60` — the branch behind the
|
That save would also, for the first time, be able to reach `ServerPlayer_OnResearchRollSucceeded` — the branch behind the
|
||||||
roll. Note what it costs if it fires: the plague branch draws a **second** RNG word (`NextInt`) and
|
roll. Note what it costs if it fires: the plague branch draws a **second** RNG word (`NextInt`) and
|
||||||
posts `EVENT_PLAGUE_OUTBREAK`; the rebellion branch allocates an `AIRebellion` at `ServerPlayer+0x3b8`
|
posts `EVENT_PLAGUE_OUTBREAK`; the rebellion branch allocates an `AIRebellion` at `ServerPlayer+0x3b8`
|
||||||
and **cancels the current research**. Every coverage note in this repo up to now says "exactly one
|
and **cancels the current research**. Every coverage note in this repo up to now says "exactly one
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
// GENERATED — do not edit. Facts about Sword of the Stars.exe (GOG 1.8.1).
|
// GENERATED — do not edit. Facts about Sword of the Stars.exe (GOG 1.8.1).
|
||||||
// Source: sots-re ghidra/addresses.json @ afa8620, generated 2026-09-08 by tools/gen_addresses.py
|
// Source: sots-re ghidra/addresses.json @ 834eb09, generated 2026-09-08 by tools/gen_addresses.py
|
||||||
// Runtime address = (uintptr_t)GetModuleHandle(NULL) + RVA (the exe is ASLR-relocated).
|
// Runtime address = (uintptr_t)GetModuleHandle(NULL) + RVA (the exe is ASLR-relocated).
|
||||||
#pragma once
|
#pragma once
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
|
|
|
||||||
|
|
@ -222,7 +222,8 @@ void capture(void* player, float dt) {
|
||||||
Tv describe_f32(const void* d, std::size_t n, unsigned) {
|
Tv describe_f32(const void* d, std::size_t n, unsigned) {
|
||||||
return n >= 4 ? tv::f32(*static_cast<const float*>(d)) : tv::struct_();
|
return n >= 4 ? tv::f32(*static_cast<const float*>(d)) : tv::struct_();
|
||||||
}
|
}
|
||||||
Tv describe_i32(const void* d, std::size_t n, unsigned) {
|
[[maybe_unused]] // Kept for the phase-2/3/6 regions that are guarded but not yet in the verdict (docs/T-turn-driver.md).
|
||||||
|
[[maybe_unused]] Tv describe_i32(const void* d, std::size_t n, unsigned) {
|
||||||
return n >= 4 ? tv::i32(*static_cast<const std::int32_t*>(d)) : tv::struct_();
|
return n >= 4 ? tv::i32(*static_cast<const std::int32_t*>(d)) : tv::struct_();
|
||||||
}
|
}
|
||||||
Tv describe_per_turn(const void* d, std::size_t n, unsigned) {
|
Tv describe_per_turn(const void* d, std::size_t n, unsigned) {
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue