Low Caliber Club
Low Caliber Club
    Low Caliber Forum  Hop To Forum Categories  Work in Progress    Unter Help = With Grenade

Moderators: Impaler, Mr_Fister
Go
New
Find
Notify
Tools
Reply
  
Unter Help = With Grenade
 Login/Join
 
Peregrine
Picture of ReaperCreeper
AIM: Online Status For ReaperCreeper379
posted
unter im in the process of making a grenade well its already done but im wondering if u can tell me what im doing wrong it doesnt wanna summon in rune.I also just want it to be summoned.

Zip/GZ archivegrenade.zip (30 Kb, 17 downloads)
 
Posts: 257 | Location: Wilkes-Barre,Pennsylvania | Registered: Fri August 29 2003Reply With QuoteReport This Post
Member
Picture of WoOdY
posted Hide Post
ok i got a great grenade mod ill look for it when i find it ill give it to you.
 
Posts: 640 | Location: Kentucky | Registered: Mon January 20 2003Reply With QuoteReport This Post
Peregrine
Picture of ReaperCreeper
AIM: Online Status For ReaperCreeper379
posted Hide Post
thanks woody but i dont want a mod, i wanna get mine working.
 
Posts: 257 | Location: Wilkes-Barre,Pennsylvania | Registered: Fri August 29 2003Reply With QuoteReport This Post
Member
Picture of WoOdY
posted Hide Post
k
i think i know what u need to summon them give me till tomorow
 
Posts: 640 | Location: Kentucky | Registered: Mon January 20 2003Reply With QuoteReport This Post
Peregrine
Picture of ReaperCreeper
AIM: Online Status For ReaperCreeper379
posted Hide Post
thanks woody Thumbs Up Beer
 
Posts: 257 | Location: Wilkes-Barre,Pennsylvania | Registered: Fri August 29 2003Reply With QuoteReport This Post
Treasurer
Picture of Unter den Uebrigen
posted Hide Post
Sup Reap,

Do you mind posting the code uncompressed, preferably in text?
 
Posts: 1457 | Location: Altadena | Registered: Tue January 07 2003Reply With QuoteReport This Post
Peregrine
Picture of ReaperCreeper
AIM: Online Status For ReaperCreeper379
posted Hide Post
// Grenade.
//
// RunePower or fire damage sets it alight. Once lit, there's a five second fuse.
// 1% chance for a grenade that explodes instantly when lit.
// 1% chance for a grenade with halved fuse length.
// 1% chance for a grenade with doubled fuse length.
// 3% chance for a grenade that does not explode.
//=============================================================================
class Grenade expands NonStow;

var() bool bFuseLit;
var() float TimeToBlow;
var() sound ExplodeSound;
var() int GrenMomentum;
var float FuseTimer;

var() enum EGrenadeType
{
GNormal,
GDud,
GLongFuse,
GShortFuse,
GNoFuse
} GrenadeType;

Function PostBeginPlay()
{
local int i;

bCanBePoweredUp = True;

i = Rand(100);
if (i == 0)
GrenadeType = GNoFuse;
if (i == 1)
GrenadeType = GShortFuse;
if (i == 2)
GrenadeType = GLongFuse;
if (i > 2 && i < 6)
GrenadeType = GDud;

Super.PostBeginPlay();
}

function PowerupInit()
{
SetOnFire(Pawn(Owner),0);
}

event bool JointDamaged(int Damage, Pawn EventInstigator, vector HitLoc, vector Momentum, name DamageType, int joint)
{
if (DamageType == 'fire')
SetOnFire(EventInstigator,joint);

return Super.JointDamaged(Damage,EventInstigator,HitLoc,Momentum,DamageType,joint);
}

function ZoneChange(ZoneInfo newZone)
{
local int i;

if(newZone.bWaterZone)
{
for (i=0; i<16; i++)
SkelGroupSkins[i] = Default.SkelGroupSkins[i]; // Force the weapon to use the default skin
SetDefaultPolygroups();
if (bPoweredUp)
PowerupEnd();
}

// Since there is no 'LavaZone' I get to use a cheap hack.
if (newZone.DamagePerSec > 0)
SetOnFire(None,0);
}

// Light this sucker.
function SetOnFire(Pawn EventInstigator, int joint)
{
local PawnFire F;

if (!bFuseLit)
{
bFuseLit = True;

Switch(GrenadeType)
{
case GNoFuse:
TimeToBlow = 0;
break;
case GShortFuse:
TimeToBlow *= 0.5;
break;
case GLongfuse:
TimeToBlow *= 2;
break;
case GDud:
bFuseLit = False;
FuseTimer = 0;
break;
default:
break;
}
}
}

Simulated Function Tick(Float DeltaTime)
{
if (bFuseLit && !IsInState('Sleeping'))
{
FuseTimer += DeltaTime;
if (FuseTimer >= TimeToBlow)
{
// Explosion Code.
Spawn(class'GrenadeBlastRadius',Self,,Location,RotRand(True));
Spawn(class'GrenadeBlastRadius',Self,,Location,RotRand(True));
HurtRadiusAll(0,320,'sever',GrenMomentum/2,Location);
HurtRadiusLimbs(120,320,'sever',0,Location);
HurtRadiusAll(45,320,'sever',0,Location);
HurtRadiusAll(0,320,'sever',GrenMomentum/2,Location);
// DoRadiusEffect();
PowerupEndingPulseOn();
if (Level.Game.ShouldRespawn(self))
{
FuseTimer = 0.0;
bFuseLit = False;
GoToState('Sleeping');
}
else
Destroy();
}
}

Super.Tick(DeltaTime);
}

function PowerupEndingPulseOn()
{
PlaySound(ExplodeSound,SLOT_Talk,255,True,3200,0.85 + FRand()*0.3);
}

//
// Hurt actors within the radius.
//
final function HurtRadiusAll( float DamageAmount, float DamageRadius, name DamageType, float Momentum, vector HitLocation )
{
local actor Victim;
local float damageScale, dist;
local vector dir;
local int bp;
local bool bHadLimb;

foreach VisibleCollidingActors( class 'Actor', Victim, DamageRadius, HitLocation )
{
if( Victim != self)
{
dir = Victim.Location - HitLocation;
dist = FMax(1,VSize(dir));
dir = dir/dist;
damageScale = 1 - FMax(0,(dist - Victim.CollisionRadius)/DamageRadius);

if (Victim.Skeletal != None && Victim.DrawType == DT_SkeletalMesh)
bp = Victim.BodyPartForJoint(Victim.ClosestJointTo(HitLocation));
else
bp = 0;

if (Pawn(Victim) != None && Pawn(Victim).BodyPartSeverable(bp))
bHadLimb = (Pawn(Victim).BodyPartHealth[bp] > 0);

Victim.AddVelocity(damageScale * Momentum * dir);

if (Pawn(Victim) != None && bHadLimb && Pawn(Victim).BodyPartSeverable(bp))
{
Pawn(Victim).BodyPartHealth[bp] -= damageScale * DamageAmount;
if (Pawn(Victim).BodyPartHealth[bp] < 1)
{
Pawn(Victim).BodyPartVisibility(bp, false);
Pawn(Victim).BodyPartCollision(bp, false);
Pawn(Victim).LimbSevered(bp, (damageScale * Momentum * dir));
}
}

Victim.JointDamaged(damageScale * DamageAmount,
Instigator,
Victim.Location - 0.5 * (Victim.CollisionHeight + Victim.CollisionRadius) * dir,
(damageScale * Momentum * dir),
DamageType,
0);
}
}
}

//
// Hurt actors within the radius.
// This deals the damage once to each of their limbs, so it deals triple damage.
//
// This function assumes that all Pawns have skeletal meshes.
final function HurtRadiusLimbs( float DamageAmount, float DamageRadius, name DamageType, float Momentum, vector HitLocation )
{
local actor Victim;
local float damageScale, dist;
local vector dir;
local int bp;
local bool bHadLimb;

foreach VisibleCollidingActors( class 'Actor', Victim, DamageRadius, HitLocation )
{
if( Victim != self)
{
dir = Victim.Location - HitLocation;
dist = FMax(1,VSize(dir));
dir = dir/dist;
damageScale = 1 - FMax(0,(dist - Victim.CollisionRadius)/DamageRadius);

bp = BODYPART_LARM1;

if (Pawn(Victim) != None && Pawn(Victim).BodyPartSeverable(bp))
bHadLimb = (Pawn(Victim).BodyPartHealth[bp] > 0);
if (Pawn(Victim) != None && bHadLimb && Pawn(Victim).BodyPartSeverable(bp))
{
Pawn(Victim).BodyPartHealth[bp] -= damageScale * DamageAmount;
if (Pawn(Victim).BodyPartHealth[bp] < 1)
{
Pawn(Victim).BodyPartVisibility(bp, false);
Pawn(Victim).BodyPartCollision(bp, false);
Pawn(Victim).LimbSevered(bp, (damageScale * Momentum * dir));
}
}

bp = BODYPART_RARM1;

if (Pawn(Victim) != None && Pawn(Victim).BodyPartSeverable(bp))
bHadLimb = (Pawn(Victim).BodyPartHealth[bp] > 0);
if (Pawn(Victim) != None && bHadLimb && Pawn(Victim).BodyPartSeverable(bp))
{
Pawn(Victim).BodyPartHealth[bp] -= damageScale * DamageAmount;
if (Pawn(Victim).BodyPartHealth[bp] < 1)
{
Pawn(Victim).BodyPartVisibility(bp, false);
Pawn(Victim).BodyPartCollision(bp, false);
Pawn(Victim).LimbSevered(bp, (damageScale * Momentum * dir));
}
}

bp = BODYPART_HEAD;

if (Pawn(Victim) != None && Pawn(Victim).BodyPartSeverable(bp))
bHadLimb = (Pawn(Victim).BodyPartHealth[bp] > 0);
if (Pawn(Victim) != None && bHadLimb && Pawn(Victim).BodyPartSeverable(bp))
{
Pawn(Victim).BodyPartHealth[bp] -= damageScale * DamageAmount;
if (Pawn(Victim).BodyPartHealth[bp] < 1)
{
Pawn(Victim).BodyPartVisibility(bp, false);
Pawn(Victim).BodyPartCollision(bp, false);
Pawn(Victim).LimbSevered(bp, (damageScale * Momentum * dir));
}

}

Victim.JointDamaged(damageScale * DamageAmount,
Instigator,
Victim.Location - 0.5 * (Victim.CollisionHeight + Victim.CollisionRadius) * dir,
(damageScale * Momentum * dir),
DamageType,
0);
Victim.JointDamaged(damageScale * DamageAmount,
Instigator,
Victim.Location - 0.5 * (Victim.CollisionHeight + Victim.CollisionRadius) * dir,
(damageScale * Momentum * dir),
DamageType,
0);
Victim.JointDamaged(damageScale * DamageAmount,
Instigator,
Victim.Location - 0.5 * (Victim.CollisionHeight + Victim.CollisionRadius) * dir,
(damageScale * Momentum * dir),
DamageType,
0);
}
}
}

function DoRadiusEffect()
{
local actor A;
local int i;
local bool bCollisionJoints;
local float dist,damageScale;
local vector dir;

foreach VisibleCollidingActors(class'actor', A, 320, Location)
{
if (A != None && A != self && !A.bHidden
&& (A.IsA('Carcass') || A.IsA('Pawn')))
{
if (A.IsA('Carcass'))
{
dir = A.Location - Location;
dist = FMax(1,VSize(dir));
dir = dir/dist;
damageScale = 1 - FMax(0,(dist - A.CollisionRadius)/320);

A.AddVelocity(damageScale * GrenMomentum * dir);
}
if (A.IsA('Pawn'))
{
// Set on fire
Pawn(A).PowerupBlaze(Pawn(Owner));

// Do some damage
A.JointDamaged(5, Pawn(Owner), A.Location, Normal(A.Location-Location)*50, 'fire', 0);
}
}
}
}
­= >0 ' .‚›% 9 z//=============================================================================
// GrenadeBlastRadius.
//=============================================================================
class GrenadeBlastRadius expands BlastRadius;

simulated function Spawned()
{
TimePassed=0.0;
ScaleGlow = EffectTime;
} € á S1//=============================================================================
// FubarGrenade.
//=============================================================================
class FubarGrenade expands Grenade;

Simulated Function Tick(Float DeltaTime)
{
if (bFuseLit && !IsInState('Sleeping'))
{
FuseTimer += DeltaTime;
if (FuseTimer >= TimeToBlow)
{
// Explosion Code.
Spawn(class'GrenadeBlastRadius',Self,,Location,RotRand(True));
Spawn(class'GrenadeBlastRadius',Self,,Location,RotRand(True));
HurtRadiusLimbsNoDmg(120,320,'sever',0,Location);
HurtRadiusAll(0,320,'sever',GrenMomentum,Location);
// DoRadiusEffect();
PowerupEndingPulseOn();
if (Level.Game.ShouldRespawn(self))
{
FuseTimer = 0.0;
bFuseLit = False;
GoToState('Sleeping');
}
else
Destroy();
}
}

Super(NonStow).Tick(DeltaTime);
}

//
// Hurt actors within the radius.
// This deals damage to limbs, but not to health.
//
final function HurtRadiusLimbsNoDmg( float DamageAmount, float DamageRadius, name DamageType, float Momentum, vector HitLocation )
{
local actor Victim;
local float damageScale, dist;
local vector dir;
local int bp;
local bool bHadLimb;

foreach VisibleCollidingActors( class 'Actor', Victim, DamageRadius, HitLocation )
{
if( Victim != self)
{
dir = Victim.Location - HitLocation;
dist = FMax(1,VSize(dir));
dir = dir/dist;
damageScale = 1 - FMax(0,(dist - Victim.CollisionRadius)/DamageRadius);

bp = BODYPART_LARM1;

if (Pawn(Victim) != None && Pawn(Victim).BodyPartSeverable(bp))
bHadLimb = (Pawn(Victim).BodyPartHealth[bp] > 0);
if (Pawn(Victim) != None && bHadLimb && Pawn(Victim).BodyPartSeverable(bp))
{
Pawn(Victim).BodyPartHealth[bp] -= damageScale * DamageAmount;
if (Pawn(Victim).BodyPartHealth[bp] < 1)
{
Pawn(Victim).BodyPartVisibility(bp, false);
Pawn(Victim).BodyPartCollision(bp, false);
Pawn(Victim).LimbSevered(bp, (damageScale * Momentum * dir));
}
}

bp = BODYPART_RARM1;

if (Pawn(Victim) != None && Pawn(Victim).BodyPartSeverable(bp))
bHadLimb = (Pawn(Victim).BodyPartHealth[bp] > 0);
if (Pawn(Victim) != None && bHadLimb && Pawn(Victim).BodyPartSeverable(bp))
{
Pawn(Victim).BodyPartHealth[bp] -= damageScale * DamageAmount;
if (Pawn(Victim).BodyPartHealth[bp] < 1)
{
Pawn(Victim).BodyPartVisibility(bp, false);
Pawn(Victim).BodyPartCollision(bp, false);
Pawn(Victim).LimbSevered(bp, (damageScale * Momentum * dir));
}
}

bp = BODYPART_HEAD;

if (Pawn(Victim) != None && Pawn(Victim).BodyPartSeverable(bp))
bHadLimb = (Pawn(Victim).BodyPartHealth[bp] > 0);
if (Pawn(Victim) != None && bHadLimb && Pawn(Victim).BodyPartSeverable(bp))
{
Pawn(Victim).BodyPartHealth[bp] -= damageScale * DamageAmount;
if (Pawn(Victim).BodyPartHealth[bp] < 1)
{
Pawn(Victim).BodyPartVisibility(bp, false);
Pawn(Victim).BodyPartCollision(bp, false);
Pawn(Victim).LimbSevered(bp, (damageScale * Momentum * dir));
}
}
}
}
}
 
Posts: 257 | Location: Wilkes-Barre,Pennsylvania | Registered: Fri August 29 2003Reply With QuoteReport This Post
Treasurer
Picture of Unter den Uebrigen
posted Hide Post
The problem doesn't look like it's in the code itself; did you add “grenade” to your list of serverpackages in rune.ini?
 
Posts: 1457 | Location: Altadena | Registered: Tue January 07 2003Reply With QuoteReport This Post
Peregrine
Picture of ReaperCreeper
AIM: Online Status For ReaperCreeper379
posted Hide Post
yeah, it might be something wrong with my rune can any of u lcc members or who ever wants, to give it a try in ur server, and let me know what happenes thanks
 
Posts: 257 | Location: Wilkes-Barre,Pennsylvania | Registered: Fri August 29 2003Reply With QuoteReport This Post
  Powered by Social Strata  
 

    Low Caliber Forum  Hop To Forum Categories  Work in Progress    Unter Help = With Grenade

© Low Caliber Club 2002-4
Gallery | Chat | Archive | Tutorials | Red Carpet

Constitution

Members

Forum

Stats

Wiki