.shlp - Synthlight/MHW-Editor GitHub Wiki

//------------------------------------------------
//--- 010 Editor v10.0 Binary Template
//
//      File: rShellParam
//   Authors: DorfDork & Lightning
//   Version: 
//   Purpose: 
//  Category: 
// File Mask: .shlp
//  ID Bytes: 
//   History: 
//------------------------------------------------
// Legend: (The same principals goes for sound) 
// Effect = Body of Projectile
// MuzzleEffect = Muzzle of Gun
// ScrollHitEffect = Ground Hit
// WallScrollHitEffect = Wall Hit
// ObjectHitEffect = Object Hit
// DelaySetEffect = No clue, slinger related
// LifeEndEffect = No clue, slinger related
// LocusEpvRes = Used in Capture Ammo, needs more info
// EmReflectEpvRes = No clue
// CustomEpvRes0 = No clue
// CustomEpvRes1 = No clue
// CustomEpvRes2 = No clue

typedef struct {
	uint Header<bgcolor=0xff8010>;
	uint Projectile_EntityCollider<bgcolor=0x4020ff>; //Bool? 0 = disable, 1 = on
	float Projectile_ModelLifespan<bgcolor=0x4020ff>; //How long it takes for model to decay
	uint Projectile_DistanceRange<bgcolor=0x4020ff>;  
	ubyte unk32; 
	ubyte unk33; 
	ubyte unk34; 
	ubyte unk35; 
	uint unk36;
	uint unk37;
	uint unk38;
	float Projectile_SpawnPosY<bgcolor=0x4020ff>; //Curves from the top of the player downwards towards the target
	float Projectile_SpawnPosX<bgcolor=0x4020ff>; //Distance from player to bullet
	float Projectile_Velocity<bgcolor=0x4020ff>; //Speed of projectile
	float Projectile_Falloff<bgcolor=0x4020ff>; //Projectile falloff after a certain distance 
	float unk43;
	float unk44;
	float unk45;
	float AngleUnk1;
	float AngleUnk2;
	float AngleUnk3;
	float AngleUnk4;
	float Projectile_HitboxRange<bgcolor=0x4020ff>; //50 becomes HUUUUGE, can shoot a bunch of barrels in training arena at the same time
	uint unk50;
	uint InstaKillTrigger<bgcolor=0x4020ff>; //Insta kill trigger for behemoth's meteor. If changed to anything besides 107 on behemoth's meteor it will stop insta killing. Needs more testing to properly give a name.
	uint unk51;
	ushort unk52;
	float Entity_Collide1<bgcolor=0x400040>; //Set it to positive 1 to make bowgun shoot through entities
	float unk54;
	float unk55;
	ubyte entity_Collide2<bgcolor=0x400040>; //Set it to 255 to make bowgun shoot through entities. Probably overflow
	ubyte unk57;
	ubyte entity_SpawnLocation<bgcolor=0x4020ff>; //Set it to 255 to shoot from feet. Probably overflow
	ubyte entity_Range<bgcolor=0x400040>; //Set it to 255 to make bowgun shoot way past the "Out of range". Probably overflow
	ubyte unk60<bgcolor=0x000000>;
	ubyte unk61<bgcolor=0x000000>;
	ushort unk62<bgcolor=0x000000>;
	uint unk63<bgcolor=0x000000>;
} BottomJunk;


typedef struct{
    float x;
    float y;
    float z;
    float unk1;
}vec3;

typedef struct {
    uint Header<bgcolor=0xff8010>;
    if (Header == 412627386) {byte Value[4]<bgcolor=0xffffff>;}
    if (Header == 3289971) {int Value<bgcolor=0xffffff>;}
    if (Header == 79120377) {float Value<bgcolor=0xffffff>;}
    if (Header == 306780182) {byte Value<bgcolor=0xffffff>;}
    if (Header == 1335056316) {vec3 Value<bgcolor=0xffffff>;}

    string Name<bgcolor=0xff00ff>;
    uint unk1<bgcolor=0x000000>;
    string ByteType<bgcolor=0x806080>;
    uint unk3<bgcolor=0x000000>;
    uint unk4<bgcolor=0x000000>;
    uint unk5<bgcolor=0x000000>;
    ubyte unk6<bgcolor=0x000000>;
} ModifierParam;

typedef struct {
    uint Header<bgcolor=0xff8010>;
    string Path<bgcolor=0xffffff>;
    uint unk3<bgcolor=0x000000>;
    uint unk4<bgcolor=0x000000>;
    uint unk5<bgcolor=0x000000>;
} rShellParam;

uint Magic;
char Type[4]; // SLP
uint Header;

//rModel section
uint rModelHeader<bgcolor=0x4020ff>;
if (rModelHeader != 0) {string rModel1<bgcolor=0xffffff>;}

//rEffectProvider section
uint EffectHeader<bgcolor=0xff8010>;
if (EffectHeader != 0) {string Effect<bgcolor=0xffffff>;}
uint MuzzleEffectHeader<bgcolor=0x4020ff>;
if (MuzzleEffectHeader != 0) {string MuzzleEffect<bgcolor=0xffffff>;}
uint ScrollHitEffectHeader<bgcolor=0xff8010>;
if (ScrollHitEffectHeader != 0) {string ScrollHitEffect<bgcolor=0xffffff>;}
uint WallScrollHitEffectHeader<bgcolor=0x4020ff>;
if (WallScrollHitEffectHeader != 0) {string WallScrollHitEffect<bgcolor=0xffffff>;}
uint ObjectHitEffectHeader<bgcolor=0xff8010>;
if (ObjectHitEffectHeader != 0) {string ObjectHitEffect<bgcolor=0xffffff>;}
uint DelaySetEffectHeader<bgcolor=0x4020ff>;
if (DelaySetEffectHeader != 0) {string DelaySetEffect<bgcolor=0xffffff>;}
uint LifeEndEffectHeader<bgcolor=0xff8010>;
if (LifeEndEffectHeader != 0) {string LifeEndEffect<bgcolor=0xffffff>;}
uint LocusEpvResHeader<bgcolor=0x4020ff>;
if (LocusEpvResHeader != 0) {string LocusEpvRes<bgcolor=0xffffff>;}
uint EmReflectEpvResHeader<bgcolor=0xff8010>;
if (EmReflectEpvResHeader != 0) {string EmReflectEpvRes<bgcolor=0xffffff>;}
uint CustomEpvRes0Header<bgcolor=0x4020ff>;
if (CustomEpvRes0Header != 0) {string CustomEpvRes0<bgcolor=0xffffff>;}
uint CustomEpvRes1Header<bgcolor=0xff8010>;
if (CustomEpvRes1Header != 0) {string CustomEpvRes1<bgcolor=0xffffff>;}
uint CustomEpvRes2Header<bgcolor=0x4020ff>;
if (CustomEpvRes2Header != 0) {string CustomEpvRes2<bgcolor=0xffffff>;}

//rEpvSoundParam section
uint SoundHeader<bgcolor=0xff8010>;
if (SoundHeader != 0) {string Sound<bgcolor=0xffffff>;}
uint MuzzleEffectSndHeader<bgcolor=0x4020ff>;
if (MuzzleEffectSndHeader != 0) {string MuzzleEffectSnd<bgcolor=0xffffff>;}
uint ScrollHitEffectSndHeader<bgcolor=0xff8010>;
if (ScrollHitEffectSndHeader != 0) {string ScrollHitEffectSnd<bgcolor=0xffffff>;}
uint WallScrollHitEffectSndHeader<bgcolor=0x4020ff>;
if (WallScrollHitEffectSndHeader != 0) {string WallScrollHitEffectSnd<bgcolor=0xffffff>;}
uint ObjectHitEffectSndHeader<bgcolor=0xff8010>;
if (ObjectHitEffectSndHeader != 0) {string ObjectHitEffectSnd<bgcolor=0xffffff>;}
uint DelaySetEffectSndHeader<bgcolor=0x4020ff>;
if (DelaySetEffectSndHeader != 0) {string DelaySetEffectSnd<bgcolor=0xffffff>;}
uint LifeEndEffectSndHeader<bgcolor=0xff8010>;
if (LifeEndEffectSndHeader != 0) {string LifeEndEffectSnd<bgcolor=0xffffff>;}
uint LocusEpvSndHeader<bgcolor=0x4020ff>;
if (LocusEpvSndHeader != 0) {string LocusEpvSnd<bgcolor=0xffffff>;}
uint EmReflectEpvSndHeader<bgcolor=0xff8010>;
if (EmReflectEpvSndHeader != 0) {string EmReflectEpvSnd<bgcolor=0xffffff>;}
uint CustomEpv0SndHeader<bgcolor=0x4020ff>;
if (CustomEpv0SndHeader != 0) {string CustomEpvSnd0<bgcolor=0xffffff>;}
uint CustomEpv1SndHeader<bgcolor=0xff8010>;
if (CustomEpv1SndHeader != 0) {string CustomEpvSnd1<bgcolor=0xffffff>;}
uint CustomEpv2SndHeader<bgcolor=0x4020ff>;
if (CustomEpv2SndHeader != 0) {string CustomEpvSnd2<bgcolor=0xffffff>;}

uint mEpvIndex<bgcolor=0x40ff40>;
uint mEpvElemNo<bgcolor=0x40ff40>;
uint mMuzzleEpvIndex<bgcolor=0x40ff40, comment = "used in stick_muzzle" >;    
uint mMuzzleEpvElemNo<bgcolor=0x40ff40, comment = "used in stick_muzzle" >;    
ubyte mMuzzleJointNo[4];

//rObjCollision section
uint rObjCollisionHeader<bgcolor=0xff8010>;
if (rObjCollisionHeader != 0) {string rObjCollision<bgcolor=0xffffff>;}
uint Col_Index<bgcolor=0x0000ff, comment = "Data used from .col" >;

//rTimelineList struct
uint rTimelineListHeader<bgcolor=0x4020ff>;
if (rTimelineListHeader != 0) {string rTimelineList<bgcolor=0xffffff>;}

uint unk6<bgcolor=0x000000>;
uint unk7<bgcolor=0x000000>;
uint unk8<bgcolor=0x000000>;
uint unk9<bgcolor=0x000000>;
uint unk10<bgcolor=0x000000>;

//rShellParam struct
uint NumOfrShellParam<bgcolor=0xff0000>;
rShellParam cChildShellData[NumOfrShellParam]<optimize=false>;

uint mScrHitEpvIndex<bgcolor=0x40ff40>;
uint mScrHitEpvElemNo<bgcolor=0x40ff40>;
uint mWallHitEpvIndex<bgcolor=0x40ff40>;
uint mWallHitEpvElemNo<bgcolor=0x40ff40>;
uint unk107<bgcolor=0x000000>;
uint unk108<bgcolor=0x000000>;
uint mObjHitEpvIndex<bgcolor=0x40ff40, comment = "used in lbg_gatling_l" >;    
uint mObjHitEpvElemNo<bgcolor=0x40ff40, comment = "used in lbg_gatling_l" >;    
ubyte unk109<bgcolor=0x000000>;
ubyte unk110<bgcolor=0x000000>;
ubyte unk111<bgcolor=0x000000>;
ubyte unk112<bgcolor=0x000000>;
ubyte unk113<bgcolor=0x000000>;
ubyte unk114<bgcolor=0x000000>;
ubyte unk115<bgcolor=0x000000>;
ubyte unk116<bgcolor=0x000000>;
ubyte unk117<bgcolor=0x000000>;
ubyte unk118<bgcolor=0x000000>;
ubyte unk119<bgcolor=0x000000>;
ubyte unk120<bgcolor=0x000000>;
ubyte unk119<bgcolor=0x000000>;
ubyte unk120<bgcolor=0x000000>;

uint unk121<bgcolor=0x000000>;
uint unk122<bgcolor=0x000000>;
float unk123<bgcolor=0x000000>; //New float :D, Don't know what it does
uint unk125<bgcolor=0x000000>;
uint unk126<bgcolor=0x000000>;

uint unk11<bgcolor=0x000000>;
uint unk12<bgcolor=0x000000>;
uint unk13<bgcolor=0x000000>;
uint unk14<bgcolor=0x000000>;
uint unk15<bgcolor=0x000000>;
uint mLocusEpvIndex<bgcolor=0x40ff40, comment = "used in hbg_36_capture" >;    
uint mLocusEpvElemNo<bgcolor=0x40ff40, comment = "used in hbg_36_capture" >;   
uint unk18<bgcolor=0x000000>;
uint unk19<bgcolor=0x000000>;
uint unk20<bgcolor=0x000000>;
uint unk21<bgcolor=0x000000>;
uint unk22<bgcolor=0x000000>;
uint unk23<bgcolor=0x000000>;
uint unk24<bgcolor=0x000000>;
uint unk25<bgcolor=0x000000>;

//rWwiseContainer section
uint rWwiseContainerHeader<bgcolor=0x4020ff>;
if (rWwiseContainerHeader != 0) {
    string rWwiseContainer<bgcolor=0xffffff>;
}

uint mSoundSeData_Shoot_Header<bgcolor=0x008000>;    //All headers start with 0 here, value beneath have the value of the sound file
uint mSoundSeData_Shoot<bgcolor=0x008000>;
uint mSoundSeData_Loop_Header<bgcolor=0x008000>;
uint mSoundSeData_Loop<bgcolor=0x008000>;
uint mSoundSeData_Kill_Header<bgcolor=0x008000>;
uint mSoundSeData_Kill<bgcolor=0x008000>;
uint mSoundSeData_ScrHit_Header<bgcolor=0x008000>;
uint mSoundSeData_ScrHit<bgcolor=0x008000>;
uint mSoundSeData_WaterHit_Header<bgcolor=0x008000>;
uint mSoundSeData_WaterHit<bgcolor=0x008000>;
uint mSoundSeData_ChrHit_Header<bgcolor=0x008000, comment = "used in healing ammo" >;    
uint mSoundSeData_ChrHit<bgcolor=0x008000, comment = "used in healing ammo" >;   
uint mSoundSeData_DelaySet_Header<bgcolor=0x008000>;
uint mSoundSeData_DelaySet<bgcolor=0x008000>;
uint mSoundSeData_LifeEnd_Header<bgcolor=0x008000>;
uint mSoundSeData_LifeEnd<bgcolor=0x008000>;
uint mSoundSeData_EmReflect_Header<bgcolor=0x008000>;
uint mSoundSeData_EmReflect<bgcolor=0x008000>;
uint mSoundSeData_Custom0_Header<bgcolor=0x008000>;
uint mSoundSeData_Custom0<bgcolor=0x008000>;
uint mSoundSeData_Custom1_Header<bgcolor=0x008000>;
uint mSoundSeData_Custom1<bgcolor=0x008000>;
uint mSoundSeData_Custom2_Header<bgcolor=0x008000>;
uint mSoundSeData_Custom2<bgcolor=0x008000>;

BottomJunk junk;

uint NumOfModifiers<bgcolor=0xff0000>;
ModifierParam params[NumOfModifiers]<optimize=false>;
uint unk26;