PDA

View Full Version : Mutators


Psycho_Leech
22nd Sep 2001, 04:50 PM
How do I create a mutator that can be added to the mutator list in order to replace certain weapons and add other stuff, or would I be better off just relying on people to use W.O.R.M or summon shoverifle.shoverifle?
:redeemer:

FunnyG
23rd Sep 2001, 06:16 AM
This is the code I'm using for the gun I'm making:

//=============================================================================
// Bean Gun Mutator :- replaces BioRifle with BeanGun.
//=============================================================================

class BeanMutator extends Mutator;

function bool AlwaysKeep(Actor Other)
{
if(Other.IsA('BeanGun') || Other.IsA('BeanAmmo'))
return true;
return Super.AlwaysKeep(Other);
}

function bool CheckReplacement(Actor Other, out byte bSuperRelevant)
{

if ( Other.IsA('ut_biorifle') )
{
ReplaceWith(Other, "BeanGun.BeanGun");
return false;
}

if ( Other.IsA('BioAmmo'))
{
ReplaceWith(Other,"BeanGun.BeanAmmo");
return false;
}

return true;
}

defaultproperties
{
}

Th 'AlwaysKeep' function makes sure the gun isn't replaced by another weapons mutator, the 'CheckReplacement' function replaces the biorifle and it's ammo with my gun and it's ammo. Just change 'ut_biorifle' and 'BioAmmo' to the gun and ammo you want to replace.

FunnyG
23rd Sep 2001, 11:27 AM
You'll need to make an int file as well, use notepad to add;

[public]

Object=(Name=BeanGun.BeanMutator,Class=Class,MetaClass=Engine.Mutator,Description="BeanGun, replaces biorifle & ammo with Niall's Bean Gun and it's ammo.")

Change 'BeanGun.BeanMutator' to 'name_of_your_package.name_of_the_mutator', and save the file as thename of your package.int .

Psycho_Leech
24th Sep 2001, 04:10 PM
Thanks, I haven't tried it yet, but how do I add a weapon to a player's inventory to start with?

:morety:

Kangus
24th Sep 2001, 11:11 PM
add this code (mostly taken from DeathMatchPlus) to your mutator, modifying as necessary:

function ModifyPlayer(Pawn Other)
{
GiveWeapon(other, "Botpack.Enforcer");

if ( NextMutator != None )
NextMutator.ModifyPlayer(Other);
}

function GiveWeapon(Pawn PlayerPawn, string aClassName )
{
local class<Weapon> WeaponClass;
local Weapon NewWeapon;

WeaponClass = class<Weapon>(DynamicLoadObject(aClassName, class'Class'));

if( PlayerPawn.FindInventoryType(WeaponClass) != None )
return;
newWeapon = Spawn(WeaponClass);
if( newWeapon != None )
{
newWeapon.RespawnTime = 0.0;
newWeapon.GiveTo(PlayerPawn);
newWeapon.bHeldItem = true;
newWeapon.GiveAmmo(PlayerPawn);
newWeapon.SetSwitchPriority(PlayerPawn);
newWeapon.WeaponSet(PlayerPawn);
newWeapon.AmbientGlow = 0;
if ( PlayerPawn.IsA('PlayerPawn') )
newWeapon.SetHand(PlayerPawn(PlayerPawn).Handedness);
else
newWeapon.GotoState('Idle');
PlayerPawn.Weapon.GotoState('DownWeapon');
PlayerPawn.PendingWeapon = None;
PlayerPawn.Weapon = newWeapon;
}
}

Wormbo
20th Oct 2001, 04:20 PM
You could optionally use:

defaultproperties
{
DefaultWeapon=class'YourPackage.YourWeaponClass'
}

This uses less code but replaces the Impact Hammer.
(Shouldn't be a problem during testing.)

Papapishu
21st Oct 2001, 05:51 PM
Ofcourse a mutator like the beangun (hillarious btw :p :p ) replaces all weapons like (in this case) the biorifle so when you pick it up you get it instead of the biorifle...