This patch reverts first step of global weapon conversion that would have halted the release of the next version for too long.
73 lines
2.9 KiB
Ucode
73 lines
2.9 KiB
Ucode
class NiceNailNade extends NiceNade;
|
|
var int numberOfShards;
|
|
var NiceFire.ShotType shotParams;
|
|
var NiceFire.FireModeContext fireContext;
|
|
simulated function ReleaseNails(optional bool bServerOnly){
|
|
local byte i;
|
|
local NicePack niceMut;
|
|
fireContext.continiousBonus = 1.0;
|
|
fireContext.burstLength = 1;
|
|
fireContext.instigator = NiceHumanPawn(instigator);
|
|
shotParams.bShouldBounce = true;
|
|
shotParams.damage = 52;
|
|
shotParams.projSpeed = 3500.0;
|
|
shotParams.momentum = 50000;
|
|
shotParams.shotDamageType = class'NicePack.NiceDamTypeNailGun';
|
|
shotParams.bulletClass = class'NicePack.NiceNail';
|
|
shotParams.bCausePain = true;
|
|
if(fireContext.instigator != none)
|
|
niceMut = class'NicePack'.static.Myself(fireContext.Instigator.Level);
|
|
if(bServerOnly){
|
|
if(niceMut == none)
|
|
return;
|
|
for(i = 0;i < niceMut.playersList.Length;i ++)
|
|
niceMut.playersList[i].ClientNailsExplosion(numberOfShards, location, shotParams, fireContext,
|
|
niceMut.playersList[i] != fireContext.Instigator.Controller);
|
|
}
|
|
else if(Role < Role_AUTHORITY)
|
|
for(i = 0;i < numberOfShards;i ++)
|
|
class'NiceProjectileSpawner'.static.MakeProjectile(location, RotRand(true), shotParams, fireContext);
|
|
}
|
|
// Overloaded to implement nade skills
|
|
simulated function Explode(vector HitLocation, vector HitNormal){
|
|
local PlayerController LocalPlayer;
|
|
// Variables for skill-detection
|
|
local NiceHumanPawn nicePawn;
|
|
local class<NiceVeterancyTypes> niceVet;
|
|
nicePawn = NiceHumanPawn(Instigator);
|
|
if(nicePawn != none)
|
|
niceVet = class'NiceVeterancyTypes'.static.GetVeterancy(nicePawn.PlayerReplicationInfo);
|
|
bHasExploded = true;
|
|
BlowUp(HitLocation);
|
|
// null reference fix
|
|
if(ExplodeSounds.length > 0)
|
|
PlaySound(ExplodeSounds[rand(ExplodeSounds.length)],,2.0);
|
|
// Real shrapnel
|
|
ReleaseNails();
|
|
if(EffectIsRelevant(Location,false)){
|
|
Spawn(Class'KFmod.KFNadeExplosion',,, HitLocation, rotator(vect(0,0,1)));
|
|
Spawn(ExplosionDecal, self,, HitLocation, rotator(-HitNormal));
|
|
}
|
|
// Shake nearby players screens
|
|
LocalPlayer = Level.GetLocalPlayerController();
|
|
if((LocalPlayer != none) && (VSize(Location - LocalPlayer.ViewTarget.Location) < (DamageRadius * 1.5)))
|
|
LocalPlayer.ShakeView(RotMag, RotRate, RotTime, OffsetMag, OffsetRate, OffsetTime);
|
|
Destroy();
|
|
}
|
|
function TakeDamage(int Damage, Pawn InstigatedBy, Vector HitLocation, Vector Momentum, class<DamageType> damageType, optional int HitIndex){
|
|
if(Monster(instigatedBy) != none || instigatedBy == Instigator){
|
|
if(DamageType == class'SirenScreamDamage'){
|
|
ReleaseNails(true);
|
|
Disintegrate(HitLocation, vect(0,0,1));
|
|
}
|
|
else
|
|
Explode(HitLocation, vect(0,0,1));
|
|
}
|
|
}
|
|
|
|
defaultproperties
|
|
{
|
|
numberOfShards=50
|
|
Damage=50.000000
|
|
}
|