[quote=&quot;ProfChaos&quot;]Sweet! That did it! Thanks again!

Another question (sorry!) When you say I have to go in and change the name of the rifle, do you mean every instance of the name or just the lines that contain:

   Name=&quot;Default__dFb_Ultra_Rifle_DamageP&quot;
[/quote]

You need to change every instance of the name.  From notepad, Wotgreal or another editor (I use EditPlus: http://www.editplus.com/) you can do a find and &quot;Replace All&quot; that will speed up the changing a bit.  The class file name also needs to be the same name as what's defined in the class definition line (the same requirment with what you deal with when you program in Java)

[quote=&quot;ProfChaos&quot;]Also, in the motion detect coding if I just add the &quot;setRifleDamage=##&quot; such as:

	if((Owner.Physics != PHYS_Falling &amp;&amp; Owner.Physics != PHYS_Swimming &amp;&amp; Pawn(Owner).bIsCrouched) || Owner.Velocity == 0 * Owner.Velocity)
	{
		SetTimer(setStillFireRate * ((UTPawn(Owner)!= None) ? UTPawn(Owner).FireRateMultiplier : 1.0), false, 'RefireCheckTimer');
		[color=red:f20fbabf7b]SetTimer(setRifleDamage=100)[/color:f20fbabf7b]
	}
	else
	{
		SetTimer(setMovingFireRate * ((UTPawn(Owner)!= None) ? UTPawn(Owner).FireRateMultiplier : 1.0), false, 'RefireCheckTimer');
		[color=red:f20fbabf7b]SetTimer(setRifleDamage=33)[/color:f20fbabf7b]
	}



Would that do it?

EDIT: NOPE!!!!!! That doesn't work, but this passed compiler checks:
[/quote]

That code is used for fireing not damage.  When you use SetTimer you're telling UnrealScript to pause between code execution.  Basically:

SetTimer(time to wait in seconds, repeat the timer over and over untill it's canceld, call function after a period of time);

So with this:

[code:1:f20fbabf7b]SetTimer&#40;setMovingFireRate * &#40;&#40;UTPawn&#40;Owner&#41;!= None&#41; ? UTPawn&#40;Owner&#41;.FireRateMultiplier &#58; 1.0&#41;, false, 'RefireCheckTimer'&#41;;[/code:1:f20fbabf7b]

This calculates the time to wait:

[code:1:f20fbabf7b]setMovingFireRate * &#40;&#40;UTPawn&#40;Owner&#41;!= None&#41; ? UTPawn&#40;Owner&#41;.FireRateMultiplier &#58; 1.0&#41;[/code:1:f20fbabf7b]

Basically it says to use setMovingFireRate.  It will be multipied by FireRateMultiplier if a player has something like a Bezerk powerup.

[code:1:f20fbabf7b]false[/code:1:f20fbabf7b]

Don't repeat this timer over and over.

[code:1:f20fbabf7b]'RefireCheckTimer'[/code:1:f20fbabf7b]

This is the name of the function to execute after the timer is up.  This is what will be executed over and over if what I have as 'false' is 'true'.


The reason why setting something like setRifleDamage=33 doesn't work is because I'm not handling the damage, I'm having epic's code handle the damage.  I just tell it how much damage in the &quot;PostBeginPlay()&quot; function.  This is the line that does that:

[code:1:f20fbabf7b]InstantHitDamage&#91;0&#93;=setRifleDamage;[/code:1:f20fbabf7b]

You need to add a function called 'ProcessInstantHit' in the rifle class.  Here's an example:

[code:1:f20fbabf7b]simulated function ProcessInstantHit&#40; byte FiringMode, ImpactInfo Impact &#41; 
&#123; 
   if &#40;Impact.HitActor != None&#41; 
   &#123; 
	if&#40;&#40;Owner.Physics != PHYS_Falling &amp;&amp; Owner.Physics != PHYS_Swimming &amp;&amp; Pawn&#40;Owner&#41;.bIsCrouched&#41; || Owner.Velocity == 0 * Owner.Velocity&#41; 
	   &#123; 
		Impact.HitActor.TakeDamage&#40; 40, Instigator.Controller, 
			Impact.HitLocation, InstantHitMomentum&#91;FiringMode&#93; * Impact.RayDir, 
			InstantHitDamageTypes&#91;FiringMode&#93;, Impact.HitInfo, self &#41;; 
	   &#125; 
	   else 
	   &#123; 
		Impact.HitActor.TakeDamage&#40; 200, Instigator.Controller, 
			Impact.HitLocation, InstantHitMomentum&#91;FiringMode&#93; * Impact.RayDir, 
			InstantHitDamageTypes&#91;FiringMode&#93;, Impact.HitInfo, self &#41;; 

	   &#125; 

   &#125; 
&#125; [/code:1:f20fbabf7b]

Where 40 and 200 are the amount of damage.