Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- scn MadArmorDTEffectFUNCTION
- ref rTarget
- ref rWeapon
- ref rArmor
- ref rImpactDataSet
- ref rImpactData
- ref rBaseActor
- ref rBodyPartData
- float fOldBloodSplatterSetting
- int iArmorClass
- int iMaterialType
- int iWeaponType
- int iWeaponDismemberSetting
- int iLimb
- int iCanLimbDismember
- int iCanLimbExplode
- int iRandomNumber
- int iCritical
- begin Function{rTarget, rWeapon}
- ; CHECK FOR ACTOR
- if rTarget.IsActor
- Set iCritical To GetLastHitCritical
- Print $iCritical
- ; GET IMPACT SET USED BY THE WEAPON
- Set rImpactDataSet To GetImpactDataSet rWeapon
- Set MadEverythingQUEST.rImpactDataSet To rImpactDataSet
- ; GET ACTOR MATERIAL
- Set iMaterialType To rTarget.GetImpactMaterialType
- Set MadEverythingQUEST.iMaterialType To iMaterialType
- ; GET IMPACT DATA USED FOR HIT EFFECT
- Set rImpactData To GetImpactDataSetForm rImpactDataSet iMaterialType
- Set MadEverythingQUEST.rImpactData To rImpactData
- ; GET WEAPON TYPE
- Set iWeaponType To GetWeaponSkill rWeapon
- Set MadEverythingQUEST.iWeaponType To iWeaponType
- ; CHECK IF DAMAGE IS ABSORBED BY ARMOR
- if rTarget.GetArmourPenetrated == 0
- ; TURN OFF BLOOD SPLATTERS
- SetNumericGameSetting fCombatEnvironmentBloodChance 0
- ; SET PROJECTILE FORCE TO VERY LOW VALUE
- SetNumericGameSetting fGameplayImpulseMultBiped 0.1
- ; CHECK IF ACTOR IS NOT A CREATURE
- if rTarget.GetIsCreature == 0
- ; GET ARMOR EQUIPPED
- Set rArmor To rTarget.GetEquippedObject 2
- ; GET ARMOR CLASS
- Set iArmorClass To GetArmorClass rArmor
- ; CHECK IF TARGET IS PLAYER
- if rTarget == PlayerRef
- ; TURN OFF SCREEN BLOOD SPLATTERS
- SetNumericGameSetting fBloodSplatterDuration 0
- endif
- ; ------------------------------------------------------------------
- ; LIGHT ARMOR CLASS
- ; ------------------------------------------------------------------
- if iArmorClass == 1
- ; GUNS
- if iWeaponType == 41
- if rImpactDataSet == BallisticImpactDataSet
- SetImpactDataSetForm rImpactDataSet iMaterialType MadAbsorbedImpactEffectLight
- endif
- ; ENERGY WEAPONS
- elseif iWeaponType == 34
- if rImpactDataSet == EnergyImpactDataSet
- SetImpactDataSetForm rImpactDataSet iMaterialType MadAbsorbedLaserRedEffectLightMedium
- elseif rImpactDataSet == MadCustomLaserGreenDataSet
- SetImpactDataSetForm rImpactDataSet iMaterialType MadAbsorbedLaserGreenEffectLightMedium
- endif
- ; MELEE WEAPONS
- elseif iWeaponType == 38
- ; REMOVE BLOOD DECALS FROM MELEE WEAPONS
- if iMaterialType == 6
- SetImpactDataTraitForm BloodSpoutRedData 0
- elseif iMaterialType == 10
- SetImpactDataTraitForm BloodSpoutBugData 0
- elseif iMaterialType == 11
- SetImpactDataTraitForm BloodSpoutYellowGlowData 0
- endif
- endif
- rTarget.SetGameMainLoopCallback MadArmorDTEffectCALLBACK 1 1
- ; ------------------------------------------------------------------
- ; MEDIUM ARMOR CLASS
- ; ------------------------------------------------------------------
- elseif iArmorClass == 2
- ; GUNS
- if iWeaponType == 41
- if rImpactDataSet == BallisticImpactDataSet
- SetImpactDataSetForm rImpactDataSet iMaterialType MadAbsorbedImpactEffectMedium
- endif
- ; ENERGY WEAPONS
- elseif iWeaponType == 34
- if rImpactDataSet == EnergyImpactDataSet
- SetImpactDataSetForm rImpactDataSet iMaterialType MadAbsorbedLaserRedEffectLightMedium
- elseif rImpactDataSet == MadCustomLaserGreenDataSet
- SetImpactDataSetForm rImpactDataSet iMaterialType MadAbsorbedLaserGreenEffectLightMedium
- endif
- ; MELEE WEAPONS
- elseif iWeaponType == 38
- if iMaterialType == 6
- SetImpactDataTraitForm BloodSpoutRedData 0
- elseif iMaterialType == 10
- SetImpactDataTraitForm BloodSpoutBugData 0
- elseif iMaterialType == 11
- SetImpactDataTraitForm BloodSpoutYellowGlowData 0
- endif
- endif
- rTarget.SetGameMainLoopCallback MadArmorDTEffectCALLBACK 1 1
- ; ------------------------------------------------------------------
- ; HEAVY ARMOR CLASS
- ; ------------------------------------------------------------------
- elseif iArmorClass == 3
- ; GUNS
- if iWeaponType == 41
- SetImpactDataSetForm rImpactDataSet iMaterialType MadAbsorbedImpactEffectHeavy
- ; ENERGY WEAPONS
- elseif iWeaponType == 34
- if rImpactDataSet == EnergyImpactDataSet
- SetImpactDataSetForm rImpactDataSet iMaterialType MadAbsorbedLaserRedEffectHeavy
- elseif rImpactDataSet == MadCustomLaserGreenDataSet
- SetImpactDataSetForm rImpactDataSet iMaterialType MadAbsorbedLaserGreenEffectHeavy
- endif
- ; MELEE WEAPONS
- elseif iWeaponType == 38
- if iMaterialType == 6
- SetImpactDataTraitForm BloodSpoutRedData 0
- elseif iMaterialType == 10
- SetImpactDataTraitForm BloodSpoutBugData 0
- elseif iMaterialType == 11
- SetImpactDataTraitForm BloodSpoutYellowGlowData 0
- endif
- endif
- rTarget.SetGameMainLoopCallback MadArmorDTEffectCALLBACK 1 1
- endif
- ; ------------------------------------------------------------------
- ; CREATURES
- ; ------------------------------------------------------------------
- else
- ; ORGANIC CREATURES
- if iMaterialType != 4 && iMaterialType != 9
- if iWeaponType == 41
- SetImpactDataSetForm rImpactDataSet iMaterialType MadAbsorbedImpactEffectCreatureGeneric
- elseif iWeaponType == 34
- if rImpactDataSet == EnergyImpactDataSet
- SetImpactDataSetForm rImpactDataSet iMaterialType MadAbsorbedLaserRedEffectLightMedium
- elseif rImpactDataSet == MadCustomLaserGreenDataSet
- SetImpactDataSetForm rImpactDataSet iMaterialType MadAbsorbedLaserGreenEffectLightMedium
- endif
- elseif iWeaponType == 38
- if iMaterialType == 6
- SetImpactDataTraitForm BloodSpoutRedData 0
- elseif iMaterialType == 10
- SetImpactDataTraitForm BloodSpoutBugData 0
- elseif iMaterialType == 11
- SetImpactDataTraitForm BloodSpoutYellowGlowData 0
- endif
- endif
- ; METAL CREATURES
- else
- if iWeaponType == 41
- SetImpactDataSetForm rImpactDataSet iMaterialType MadAbsorbedImpactEffectHeavy
- elseif iWeaponType == 34
- if rImpactDataSet == EnergyImpactDataSet
- SetImpactDataSetForm rImpactDataSet iMaterialType MadAbsorbedLaserRedEffectHeavy
- elseif rImpactDataSet == MadCustomLaserGreenDataSet
- SetImpactDataSetForm rImpactDataSet iMaterialType MadAbsorbedLaserGreenEffectHeavy
- endif
- endif
- endif
- rTarget.SetGameMainLoopCallback MadArmorDTEffectCALLBACK 1 1
- endif
- ; ARMOR IS PENETRATED
- else
- Set iRandomNumber To GetRandomPercent
- Set iWeaponDismemberSetting To GetDismemberWeaponSetting rWeapon
- Set MadEverythingQUEST.iWeaponDismemberSetting To iWeaponDismemberSetting
- if iRandomNumber <= MadEverythingQUEST.iLimbDismemberChance
- Set iWeaponDismemberSetting To GetDismemberWeaponSetting rWeapon
- Set iLimb To rTarget.GetHitLocation
- Set MadEverythingQUEST.iLimb To iLimb
- if iWeaponDismemberSetting == 3
- return
- else
- if iLimb != 0 && rTarget.GetDead
- Set rBaseActor To rTarget.GBO
- Set rBodyPartData To GetBodyPartData rBaseActor
- Set iCanLimbDismember To GetBodyPartFlag rBodyPartData iLimb 0
- Set MadEverythingQUEST.iCanLimbDismember To iCanLimbDismember
- Set iCanLimbExplode To GetBodyPartFlag rBodyPartData iLimb 3
- Set MadEverythingQUEST.iCanLimbExplode To iCanLimbExplode
- rTarget.SetGameMainLoopCallback MadDismembermentCALLBACK 1 1
- endif
- endif
- endif
- endif
- endif
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement