EvilEngine/DEST: Difference between revisions

no edit summary
No edit summary
No edit summary
 
(7 intermediate revisions by 3 users not shown)
Line 1:
<onlyinclude>
{{#vardefine:typeid|DEST}}<nowiki/>
{{#vardefine:name|Destructible Asset}}<nowiki/>
{{#vardefine:type|[[Binary]]}}<nowiki/>
{{#vardefine:basetype|}}<nowiki/>
{{#vardefine:games|TSSM Incredibles ROTU RatProto}}<nowiki/>
{{#vardefine:sourcecode|}}<nowiki/>
{{#vardefine:image|}}<nowiki/>
Line 10:
{{AutoAssetInfobox}}
 
This asset defines an entry for a destructible objectasset.
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
 
===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"
! Offset !! Type !! Variable !! Description
|-
| 0x00 || int[[AssetID]] || '''minfIDid''' || MINF_AssetID[[MINF]]
|-
| 0x04 || intu32 || '''nstates''' || Number of States. Always 1 in TSSMstates
|-
| 0x08 || intu32 || '''hit_points''' || Always 1 in TSSM
|-
| 0x0C || intu32 || '''hit_filter''' || Always 2 in TSSM
|-
| 0x10 || intu32 || '''launchFlaglaunch_flag''' ||
|-
| 0x14 || intu32 || '''behaviour''' || Always 11 in TSSM
|-
| 0x18 || intu32 || '''flags''' ||
|-
| 0x1C || int[[AssetID]] || '''soundgroupidleID''' || SoundGroup used when idle[[SGRP]]
|-
| 0x20 || floatf32 || '''respawn''' ||
|-
| 0x24 || charu8 || '''target_priority''' || Always 1 in TSSM
|-
| 0x25 || charu8[3] || null || Always 0padding
|}
 
===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
|-
| 0x260x00 || charu32 || null'''percent''' || Always 0
|-
| 0x270x04 || char[[AssetID]] || null'''modelID''' || Always 0
|-
| 0x280x08 || int[[AssetID]] || '''percentshrapnelID''' || Usually 1 in TSSM[[SHRP]]
|-
| 0x2C0x0C || [[MODLAssetID]] || '''modelIDshrapnelhitID''' || Changes the destructible's model into this model when destroyed.[[SHRP]]
|-
| 0x300x10 || [[SHRPAssetID]] || '''shrapnelIDsoundgroupidleID''' || Shrapnel used when destroyed[[SGRP]]
|-
| 0x340x14 || [[SHRPAssetID]] || '''shrapnelhitIDsoundgroupfxID''' || Shrapnel used when hit[[SGRP]]
|-
| 0x380x18 || [[SGRPAssetID]] || '''soundgroupidleIDsoundgrouphitID''' || SoundGroup used when idling[[SGRP]]
|-
| 0x3C0x1C || [[SGRPAssetID]] || '''soundgroupfxIDsoundgroupfxIDswitch''' || [[SGRP]]
|-
| 0x400x20 || [[SGRPAssetID]] || '''soundgrouphitIDsoundgrouphitIDswitch''' || SoundGroup used when hit[[SGRP]]
|-
| 0x440x24 || [[SGRPAssetID]] || '''soundgroupfxIDswitchrumbleIDhit''' || {{SlashTrick|DYNA/effect:Rumble}}
|-
| 0x480x28 || [[SGRPAssetID]] || '''soundgrouphitIDswitchrumbleIDswitch''' || {{SlashTrick|DYNA/effect:Rumble}}
|-
| 0x4C0x2C || DynaIDu32 || '''rumbleIDhitfx_flags''' || Dyna Effect Rumble
|}
 
===xDestructibleAssetAttachedAnimList===
 
<source lang=cpp>
class xDestructibleAssetAttachedAnimList
{
public:
unsigned int nanimations;
unsigned int* animationIDs;
};
</source>
 
{| class="wikitable"
! Offset !! Type !! Variable !! Description
|-
| 0x500x00 || DynaIDu32 || '''rumbleIDswitchnanimations''' || DynaNumber Effectof Rumbleanimations
|-
| 0x540x04 || int[[AssetID]] || '''fx_flagsanimationIDs''' || sfx flags[[ANIM]]
|}
 
==Format==
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"
! Offset !! Type !! Variable !! Description
|-
| 0x00 || [[AssetID]] || '''id''' || [[MINF]]
|-
| 0x04 || u32 || '''nstates''' || Number of states
|-
| 0x08 || u32 || '''hit_points''' ||
|-
| 0x0C || u32 || '''hit_filter''' ||
|-
| 0x10 || u32 || '''hit_filter_excluded''' ||
|-
| 0x14 || u32 || '''healthPoints''' ||
|-
| 0x18 || u32 || '''expPoints''' ||
|-
| 0x1C || f32 || '''healthChance''' ||
|-
| 0x20 || f32 || '''expChance''' ||
|-
| 0x24 || u32 || '''launch_flag''' ||
|-
| 0x28 || u32 || '''behaviour''' ||
|-
| 0x2C || u32 || '''flags''' ||
|-
| 0x30 || [[AssetID]] || '''soundgroupidleID''' || [[SGRP]]
|-
| 0x34 || f32 || '''respawn''' ||
|-
| 0x38 || u8 || '''target_priority''' ||
|-
| 0x39 || u8[3] || null || padding
|}
 
===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 || u32 || '''percent''' ||
|-
| 0x04 || [[AssetID]] || '''modelID''' ||
|-
| 0x08 || [[AssetID]] || '''shrapnelID''' || [[SHRP]]
|-
| 0x0C || [[AssetID]] || '''shrapnelhitID''' || [[SHRP]]
|-
| 0x10 || [[AssetID]] || '''soundgroupidleID''' || [[SGRP]]
|-
| 0x14 || [[AssetID]] || '''soundgroupfxID''' || [[SGRP]]
|-
| 0x18 || [[AssetID]] || '''soundgrouphitID''' || [[SGRP]]
|-
| 0x1C || [[AssetID]] || '''soundgroupfxIDswitch''' || [[SGRP]]
|-
| 0x20 || [[AssetID]] || '''soundgrouphitIDswitch''' || [[SGRP]]
|-
| 0x24 || [[AssetID]] || '''rumbleIDhit''' || {{SlashTrick|DYNA/effect:Rumble}}
|-
| 0x28 || [[AssetID]] || '''rumbleIDswitch''' || {{SlashTrick|DYNA/effect:Rumble}}
|-
| 0x2C || u32 || '''fx_flags''' ||
|}
 
===xDestructibleAssetAttachedAnimList===
 
<source lang=cpp>
struct xDestructibleAssetAttachedAnimList
{
unsigned int nanimations;
unsigned int* animationIDs;
};
</source>
 
{| class="wikitable"
! Offset !! Type !! Variable !! Description
|-
| 0x580x00 || intu32 || '''nanimations''' || SetNumber toof 1 enables animationanimations
|-
| 0x5C0x04 || [[ANIMAssetID]] || '''animationIDanimationIDs''' || Usually 0xFDFDFDFD in TSSM: 31, 32 and 63 in The Incredibles[[ANIM]]
|}