Welcome, guest! Login / Register - Why register?
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
Your Name: Code Language: