.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;