EvilEngine/DEST: Difference between revisions

no edit summary
No edit summary
No edit summary
 
(One intermediate revision by the same user not shown)
Line 1:
<onlyinclude>
{{#vardefine:typeid|DEST}}<nowiki/>
{{#vardefine:name|Destructible Asset}}<nowiki/>
{{#vardefine:type|[[Binary]]}}<nowiki/>
{{#vardefine:basetype|}}<nowiki/>
Line 11:
 
This asset defines an entry for a destructible asset.
In order for a destructible asset to function it must have ".dff_destruct" at the end of its asset name. Example: barrel.dff_destruct
 
==Format==
 
The Spongebob SquarePants Movie and The Incredibles
The SpongeBob SquarePants Movie and The Incredibles
 
===xDestructibleAsset===
 
<source lang=cpp>
class xDestructibleAsset
{
public:
unsigned int id;
unsigned int nstates;
unsigned int hit_points
unsigned int hit_filter;
unsigned int launch_flag;
unsigned int behaviour;
unsigned int flags;
unsigned int soundgroupidleID;
float respawn;
unsigned char target_priority;
xDestructibleAssetState* states;
};
</source>
 
{| class="wikitable"
Line 21 ⟶ 42:
| 0x00 || [[AssetID]] || '''id''' || [[MINF]]
|-
| 0x04 || uintu32 || '''nstates''' || Number of States. Always 1 in TSSMstates
|-
| 0x08 || uintu32 || '''hit_points''' || Always 1 in TSSM
|-
| 0x0C || uintu32 || '''hit_filter''' || Always 2 in TSSM
|-
| 0x10 || uintu32 || '''launch_flag''' ||
|-
| 0x14 || uintu32 || '''behaviour''' || Always 11 in TSSM
|-
| 0x18 || uintu32 || '''flags''' ||
|-
| 0x1C || [[AssetID]] || '''soundgroupidleID''' || SoundGroup used when idle[[SGRP]]
|-
| 0x20 || floatf32 || '''respawn''' ||
|-
| 0x24 || charu8 || '''target_priority''' || Always 1 in TSSM
|-
| 0x25 || charu8[3] || null || padding
|-
| 0x28 || xDestructibleAssetState || ||
|}
 
===xDestructibleAssetState===
 
<source lang=cpp>
class xDestructibleAssetState
{
public:
unsigned int percent;
unsigned int modelID;
unsigned int shrapnelID;
unsigned int shrapnelhitID;
unsigned int soundgroupidleID;
unsigned int soundgroupfxID;
unsigned int soundgrouphitID;
unsigned int soundgroupfxIDswitch;
unsigned int soundgrouphitIDswitch;
unsigned int rumbleIDhit;
unsigned int rumbleIDswitch;
unsigned int fx_flags;
xDestructibleAssetAttachedAnimList* animlist;
};
</source>
 
{| class="wikitable"
! Offset !! Type !! Variable !! Description
|-
| 0x00 || uintu32 || '''percent''' || Usually 1 in TSSM
|-
| 0x04 || [[AssetID]] || '''modelID''' || Changes the destructible's model into this model when destroyed.
|-
| 0x08 || [[AssetID]] || '''shrapnelID''' || Shrapnel used when destroyed[[SHRP]]
|-
| 0x0C || [[AssetID]] || '''shrapnelhitID''' || Shrapnel used when hit[[SHRP]]
|-
| 0x10 || [[AssetID]] || '''soundgroupidleID''' || SoundGroup used when idle[[SGRP]]
|-
| 0x14 || [[AssetID]] || '''soundgroupfxID''' || [[SGRP]]
|-
| 0x18 || [[AssetID]] || '''soundgrouphitID''' || SoundGroup used when hit[[SGRP]]
|-
| 0x1C || [[AssetID]] || '''soundgroupfxIDswitch''' || [[SGRP]]
|-
| 0x20 || [[AssetID]] || '''soundgrouphitIDswitch''' || [[SGRP]]
|-
| 0x24 || [[AssetID]] || '''rumbleIDhit''' || {{SlashTrick|DYNA/effect:Rumble}}
Line 71 ⟶ 110:
| 0x28 || [[AssetID]] || '''rumbleIDswitch''' || {{SlashTrick|DYNA/effect:Rumble}}
|-
| 0x2C || uintu32 || '''fx_flags''' ||
|-
| 0x30 || xDestructibleAssetAttachedAnimList || ||
|}
 
===xDestructibleAssetAttachedAnimList===
 
<source lang=cpp>
class xDestructibleAssetAttachedAnimList
{
public:
unsigned int nanimations;
unsigned int* animationIDs;
};
</source>
 
{| class="wikitable"
! Offset !! Type !! Variable !! Description
|-
| 0x00 || uintu32 || '''nanimations''' || numberNumber of animations?
|-
| 0x04 || [[AssetID]] || '''animationIDs''' || Usually 0xFDFDFDFD in TSSM: 31, 32 and 63 in The Incredibles[[ANIM]]
|}
 
Line 89 ⟶ 135:
Rise of the Underminer and Ratatouille Prototype
===xDestructibleAsset===
 
<source lang=cpp>
struct xDestructibleAsset
{
unsigned int id;
unsigned int nstates;
unsigned int hit_points;
unsigned int hit_filter;
unsigned int hit_filter_excluded;
unsigned int healthPoints;
unsigned int expPoints;
float healthChance;
float expChance;
unsigned int launch_flag;
unsigned int behaviour;
unsigned int flags;
unsigned int soundgroupidleID;
float respawn;
unsigned char target_priority;
xDestructibleAssetState* states;
};
</source>
 
{| class="wikitable"
Line 95 ⟶ 163:
| 0x00 || [[AssetID]] || '''id''' || [[MINF]]
|-
| 0x04 || uintu32 || '''nstates''' || Number of Statesstates
|-
| 0x08 || uintu32 || '''hit_points''' ||
|-
| 0x0C || uintu32 || '''hit_filter''' ||
|-
| 0x10 || uintu32 || '''hit_filter_excluded''' ||
|-
| 0x14 || uintu32 || '''healthPoints''' ||
|-
| 0x18 || uintu32 || '''expPoints''' ||
|-
| 0x1C || uintf32 || '''healthChance''' ||
|-
| 0x20 || uintf32 || '''expChance''' ||
|-
| 0x24 || uintu32 || '''launch_flag''' ||
|-
| 0x28 || uintu32 || '''behaviour''' ||
|-
| 0x2C || uintu32 || '''flags''' ||
|-
| 0x30 || [[AssetID]] || '''soundgroupidleID''' || SoundGroup used when idle[[SGRP]]
|-
| 0x34 || floatf32 || '''respawn''' ||
|-
| 0x38 || charu8 || '''target_priority''' ||
|-
| 0x39 || charu8[3] || null || padding
|-
| 0x38 || xDestructibleAssetState || ||
|}
 
===xDestructibleAssetState===
 
<source lang=cpp>
struct xDestructibleAssetState
{
unsigned int percent;
unsigned int modelID;
unsigned int shrapnelID;
unsigned int shrapnelhitID;
unsigned int soundgroupidleID;
unsigned int soundgroupfxID;
unsigned int soundgrouphitID;
unsigned int soundgroupfxIDswitch;
unsigned int soundgrouphitIDswitch;
unsigned int rumbleIDhit;
unsigned int rumbleIDswitch;
unsigned int fx_flags;
xDestructibleAssetAttachedAnimList* animlist;
};
</source>
 
{| class="wikitable"
! Offset !! Type !! Variable !! Description
|-
| 0x00 || uintu32 || '''percent''' ||
|-
| 0x04 || [[AssetID]] || '''modelID''' || Changes the destructible's model into this model when destroyed.
|-
| 0x08 || [[AssetID]] || '''shrapnelID''' || Shrapnel used when destroyed[[SHRP]]
|-
| 0x0C || [[AssetID]] || '''shrapnelhitID''' || Shrapnel used when hit[[SHRP]]
|-
| 0x10 || [[AssetID]] || '''soundgroupidleID''' || SoundGroup used when idle[[SGRP]]
|-
| 0x14 || [[AssetID]] || '''soundgroupfxID''' || [[SGRP]]
|-
| 0x18 || [[AssetID]] || '''soundgrouphitID''' || SoundGroup used when hit[[SGRP]]
|-
| 0x1C || [[AssetID]] || '''soundgroupfxIDswitch''' || [[SGRP]]
|-
| 0x20 || [[AssetID]] || '''soundgrouphitIDswitch''' || [[SGRP]]
|-
| 0x24 || [[AssetID]] || '''rumbleIDhit''' || {{SlashTrick|DYNA/effect:Rumble}}
Line 155 ⟶ 240:
| 0x28 || [[AssetID]] || '''rumbleIDswitch''' || {{SlashTrick|DYNA/effect:Rumble}}
|-
| 0x2C || uintu32 || '''fx_flags''' ||
|-
| 0x30 || xDestructibleAssetAttachedAnimList || ||
|}
 
===xDestructibleAssetAttachedAnimList===
 
<source lang=cpp>
struct xDestructibleAssetAttachedAnimList
{
unsigned int nanimations;
unsigned int* animationIDs;
};
</source>
 
{| class="wikitable"
! Offset !! Type !! Variable !! Description
|-
| 0x00 || uintu32 || '''nanimations''' || numberNumber of animations?
|-
| 0x04 || [[AssetID]] || '''animationIDs''' || Usually 0xFDFDFDFD[[ANIM]]
|}