Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CREDITS.md
Original file line number Diff line number Diff line change
Expand Up @@ -701,6 +701,7 @@ This page lists all the individual contributions to the project by their author.
- `ZAdjust` for Projectiles
- Allow Laser drawing position update
- Customize the distance for `NoQueueUpToEnter` transport units to board passengers
- Fix the bug that `MissileSpawn=true` causes the spawnee launcher to crash immediately when attacking
- **Ollerus**:
- Build limit group enhancement
- Customizable rocker amplitude
Expand Down
2 changes: 1 addition & 1 deletion docs/New-or-Enhanced-Logics.md
Original file line number Diff line number Diff line change
Expand Up @@ -1441,7 +1441,7 @@ AutoTargetAI.NoThreatBuildings=true ; boolean

- If `Spawner.LimitRange` is set, the spawned units will abort their pursuit if the enemy is out of the range of the largest weapon `Range` of a `Spawner=true` weapon of the spawner.
- `Spawner.ExtraLimitRange` adds extra pursuit range on top of the weapon range.
- `Spawner.DelayFrames` can be used to set the minimum number of game frames in between each spawn ejecting from the spawner. By default this is 9 frames for missiles and 20 for everything else.
- `Spawner.DelayFrames` can be used to set the minimum number of game frames in between each spawn ejecting from the spawner. By default this is 10 frames for launchers with `MissileSpawn=true` and 20 for everything else.
- If `Spawner.AttackImmediately` is set to true, spawned aircraft will assume attack mission immediately after being spawned instead of waiting for the remaining aircraft to spawn first.
- `Spawner.UseTurretFacing`, if set, makes spawned aircraft face the same way as turret does upon being created if the spawner has a turret.
- `Spawner.RecycleRange` defines the range (in cell) that the spawned is considered close enough to the spawner to be recycled.
Expand Down
1 change: 1 addition & 0 deletions docs/Whats-New.md
Original file line number Diff line number Diff line change
Expand Up @@ -737,6 +737,7 @@ HideShakeEffects=false ; boolean
- Fixed a bug where stationary vehicles would also block movement caused by external factors (by Noble_Fish)
- Fixed `src/Interop/Version.cpp` not being compiled into the project (by Chang_zhi)
- Fixed the issue that `NoQueueUpToEnter` will clear passenger's planning tokens when entered transport (by NetsuNegi)
- Fixed the bug that `MissileSpawn=true` causes the spawnee launcher to crash immediately when attacking (by Noble_Fish)

#### Fixes / interactions with other extensions:
- Taking over Ares' AlphaImage respawn logic to reduce lags from it (by NetsuNegi)
Expand Down
5 changes: 3 additions & 2 deletions docs/locale/zh_CN/LC_MESSAGES/New-or-Enhanced-Logics.po
Original file line number Diff line number Diff line change
Expand Up @@ -3518,8 +3518,9 @@ msgstr "`Spawner.ExtraLimitRange` 是追击范围相对于武器射程进行调
msgid ""
"`Spawner.DelayFrames` can be used to set the minimum number of game "
"frames in between each spawn ejecting from the spawner. By default this "
"is 9 frames for missiles and 20 for everything else."
msgstr "`Spawner.DelayFrames` 可用于设置每次从子机发射器中生成单位的最小游戏帧数。对于导弹默认是 9 帧,其他默认是 20 帧。"
"is 10 frames for launchers with `MissileSpawn=true` and 20 for everything"
" else."
msgstr "`Spawner.DelayFrames` 可用于设置每次从子机发射器中生成单位的最小游戏帧数。对于 `MissileSpawn=true` 的发射车默认是 10 帧,其他默认是 20 帧。"

msgid ""
"If `Spawner.AttackImmediately` is set to true, spawned aircraft will "
Expand Down
9 changes: 6 additions & 3 deletions src/Ext/Techno/Hooks.Misc.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -95,8 +95,8 @@ DEFINE_HOOK(0x6B72FE, SpawnerManagerClass_AI_MissileCheck, 0x9)
? NoSpawn : SpawnMissile;
}

DEFINE_HOOK_AGAIN(0x6B73BE, SpawnManagerClass_AI_SpawnTimer, 0x6)
DEFINE_HOOK(0x6B73AD, SpawnManagerClass_AI_SpawnTimer, 0x5)
DEFINE_HOOK_AGAIN(0x6B73A8, SpawnManagerClass_AI_SpawnTimer, 0x5)
DEFINE_HOOK(0x6B73B9, SpawnManagerClass_AI_SpawnTimer, 0x5)
{
GET(SpawnManagerClass* const, pThis, ESI);

Expand All @@ -105,7 +105,10 @@ DEFINE_HOOK(0x6B73AD, SpawnManagerClass_AI_SpawnTimer, 0x5)
auto const pTypeExt = TechnoExt::ExtMap.Find(pOwner)->TypeExtData;

if (pTypeExt->Spawner_DelayFrames.isset())
R->ECX(pTypeExt->Spawner_DelayFrames.Get());
{
pThis->SpawnTimer.Start(pTypeExt->Spawner_DelayFrames.Get());
return 0x6B73C4;
}
}

return 0;
Expand Down
Loading