Psst.. new poll here.
Psst.. new forums here.
Microsoft is blocking us again (TY IP Reputation!) so just use oauth login instead. :)
Paste
Pasted as C# by ownly ( 3 years ago )
module LetThereBeBlood
@wrapMethod(DamageManager)
public final static func PostProcess(hitEvent: ref<gameHitEvent>) -> Void
{
let puppet: ref<NPCPuppet>;
let puppetPos: Vector4;
let npcType: gamedataNPCType;
let splatterTransform: WorldTransform;
let orientation: EulerAngles = new EulerAngles(0.00, 0.00, 0.00);
let splatterResource: FxResource;
let spawnPos: Vector4;
let tempAngle = 0.00;
let tempX = 0.00;
let tempY = 0.00;
if IsDefined(hitEvent) && IsDefined(hitEvent.attackData) {
puppet = hitEvent.target as NPCPuppet;
npcType = puppet.GetRecord().CharacterType().Type();
if !(Equals(npcType, gamedataNPCType.Android) || Equals(npcType, gamedataNPCType.Drone) || Equals(npcType, gamedataNPCType.Mech) || AIActionHelper.CheckAbility(puppet, TweakDBInterface.GetGameplayAbilityRecord(t"Ability.IsMechanical")))
{
if hitEvent.attackComputed.GetAttackValue(gamedataDamageType.Physical) > 0.00
{
//puppet.Kill(null, true); //testing, messes up ragdolls?
//if hitEvent.attackData.HasFlag(hitFlag.Nonlethal) || Equals(hitEvent.attackData.GetAttackType(), gamedataAttackType.Hack)
//{
// splatterResource = puppet.GetFxResourceByKey(n"ragdollWallSplatter");
//}
//else
//{
// splatterResource = puppet.GetFxResourceByKey(n"ragdollFloorSplash");
//}
splatterResource = puppet.GetFxResourceByKey(n"ragdollWallSplatter");
puppetPos = puppet.GetWorldPosition();
spawnPos = puppetPos + new Vector4(RandRangeF(-0.50,0.50), RandRangeF(-0.50,0.50), 0.60, 0.00);
WorldTransform.SetPosition(splatterTransform, spawnPos);
orientation = new EulerAngles(0.00,0.00,0.00);
WorldTransform.SetOrientationEuler(splatterTransform, orientation);
GameInstance.GetFxSystem(puppet.GetGame()).SpawnEffect(splatterResource, splatterTransform, true);
spawnPos = puppetPos + new Vector4(RandRangeF(-0.50,0.50), RandRangeF(-0.50,0.50), 0.60, 0.00);
WorldTransform.SetPosition(splatterTransform, spawnPos);
GameInstance.GetFxSystem(puppet.GetGame()).SpawnEffect(splatterResource, splatterTransform, true);
//PlayerOrientation = hitEvent.attackData.GetInstigator().GetWorldOrientation();
Log(ToString(hitEvent.attackData.GetInstigator().GetWorldPosition()));
while (tempAngle <= 360.00)
{
orientation = new EulerAngles(90.00,360.00-tempAngle,0.00); //270° = east
WorldTransform.SetOrientationEuler(splatterTransform, orientation);
tempX = SinF((tempAngle/360.00+0.00)*2.00*Pi())*1.50;
tempY = SinF((tempAngle/360.00+0.75)*2.00*Pi())*-1.50; // north is positive
spawnPos = puppetPos + new Vector4(RandRangeF(tempX/2.00,tempX),RandRangeF(tempY/2.00,tempY),RandRangeF(0.30, 1.55),0.00);
WorldTransform.SetPosition(splatterTransform, spawnPos);
GameInstance.GetFxSystem(puppet.GetGame()).SpawnEffect(splatterResource, splatterTransform, true);
Log(ToString(tempAngle)+" "+ToString(splatterTransform));
Log("----");
spawnPos = puppetPos + new Vector4(0.00,0.00,RandRangeF(0.30, 1.55),0.00);
WorldTransform.SetPosition(splatterTransform, spawnPos);
GameInstance.GetFxSystem(puppet.GetGame()).SpawnEffect(splatterResource, splatterTransform, true);
Log(ToString(tempAngle)+" "+ToString(splatterTransform));
Log("----");
tempAngle += 22.50;
}
}
}
}
wrappedMethod(hitEvent);
}
Revise this Paste
Children: 124510