Adding modding folder with a hacked build.

This commit is contained in:
ml
2026-09-26 08:53:08 +02:00
parent cdb960dc71
commit c91080aba7
755 changed files with 50424 additions and 0 deletions
@@ -0,0 +1,50 @@
### Grenade Properties
#### Generic Grenade Properties
**Generic Grenade Propertes** (`GrenadeProp` struct) (15 bytes)
0000 [8]byte [Generic Weapon Info](../GenericWeaponInfo.md)
0008 byte Touchiness
0009 byte Blast radius
000A byte Blast core range
000B byte Blast damage
000C uint8 Attack mass (impact force - pushback on hit)
000D int16 Grenade Flags
`Touchiness` defines how likely a grenade is going to chain-explode if another was exploding nearby.
> This value influences a calculation, based on a random value, as well as damage percentage. If the resulting number is higher than 7, then a chain-reaction is caused.
> In the main game, this value is always `0x00`.
`Blast radius` specifies in tiles how far the explosion reaches, including visual effects (EMP scroll, explosion flash).
The main damage (from the `Generic Weapon Info`) is applied within the `Blast core range` of the explosion. This damage falls off from the center to the edge of the core range.
The `blast damage` is fully applied within the `blast core range`, additionally to the main damage. This damage falls off from the edge of the core range to the edge of the blast radius.
**Grenade Flags** (2 bytes)
0x01 Explode on contact
0x02 unused
0x04 Explode by timer
0x08 Explode by vicinity (mine)
> The behaviour of grenades is not exclusively governed by the flags field. Some seems to be hardcoded.
> For instance, regular grenades marked with "timer" don't offer a time setting in the HUD and explode right after being thrown.
> Regular timed grenades marked as "contact" ignore their timer setting, explode on object-contact, but not on floor/wall contact.
#### Specific 1 Properties
Properties for timed grenades.
**Specific 1 Properties** (`TimedGrenadeProp` struct) (3 bytes)
0000 uint8 Minimum time
0001 uint8 Maximum time
0002 uint8 Timing deviation -- always 0x00
`Minimum time` and `maximum time` specify the range, in seconds, timed grenades can be set to.
> `Timing deviation` is always set to 0x00. Since it may also let the grenade go off earlier than expected, this may happen while still in the hand - which is presumably why it is unused in the main game.
@@ -0,0 +1,44 @@
## Level Explosive Table (Class 3)
```L13``` is a table describing explosives.
**Level Explosive Entry** (12 bytes)
0000 [6]byte Level object prefix
0006 [6]byte Explosive data
**Explosive Data** (6 bytes)
0000 int16 Unknown; Only set for live explosives
0002 int16 State
0004 int16 Timer time
**State** (2 bytes)
0x0000 Inert
0x0001 Thrown live grenade
0x0005 Landed live grenade (land mines only, can't be picked up)
The timer settings of explosives are stored in the [game state](../../archives/gameState.md).
The ```Timer time``` field is set to the same value as in the [level schedules](../../archives/levelSchedules.md), though modifying this value doesn't have an effect. The level timer is the authorative entry when to trigger the explosive.
### Contact explosives 3/0/x
Contact explosives start a timer, though its expiry does nothing with the grenade.
Land mines can be catched mid-air and re-thrown, others explode. Land mines enter state ```0x0005``` when touching the ground, after which they can't be picked up safely anymore.
> Although the game state also keeps time settings for these explosives, they can't be changed. Their timer don't have an effect anyway.
### Timed explosives 3/1/0, 3/1/1
These explosives keep the state at ```0x0001```, even when landed. Live explosives can be picked up and re-thrown, until their timer sets them off.
### Object explosion 3/1/2
This item has not been encountered.