Druids RPG
Posted: Mon Jun 15, 2026 4:11 am
Hi all,
I'm trying to do a mod/mutator in which will assign weapon enhancements from druids rpg to the three available classes.
For instance:
Allowed weapon enhancements to monster master:
Vampiric, healing, poison, etc, and restrict others.
So in order to make each class unique.
This would be in the fornat of a mutator, so not to alter anything in the actual druids files, but to act independently.
Here’s some code, but have no clue if this is the right way.
class MutClassLockedWeaponMods extends Mutator;
function PostBeginPlay()
{
Super.PostBeginPlay();
SetTimer(1.0, true); // Increased to 1.0s to significantly reduce server lag
}
function Timer()
{
local Controller C;
local Inventory Inv;
local RPGWeapon RPGWeap;
local DruidsRPG200.DruidRPGPRI DRPRI;
for (C = Level.ControllerList; C != None; C = C.NextController)
{
if (C.Pawn == None || C.Pawn.Inventory == None)
continue;
// Corrected static call syntax
DRPRI = class'DruidsRPG200.DruidRPGPRI'.static.GetDRPRI(C);
if (DRPRI == None || DRPRI.PlayerClass == None)
continue;
for (Inv = C.Pawn.Inventory; Inv != None; Inv = Inv.Inventory)
{
// Cast to RPGWeapon because modifiers exist inside the weapon container
RPGWeap = RPGWeapon(Inv);
if (RPGWeap != None && RPGWeap.ModifierClass != None)
{
if (!IsModifierAllowedForClass(RPGWeap.ModifierClass, DRPRI.PlayerClass))
{
// Corrected string concatenation syntax
C.Pawn.ClientMessage("Class Restriction: " $ RPGWeap.ModifierName $ " removed.");
// Strip the modifier down to a normal weapon base
RPGWeap.Modifier = 0;
RPGWeap.ModifierClass = None;
RPGWeap.ModifierName = "";
}
}
}
}
}
function bool IsModifierAllowedForClass(class<DruidsRPG200.DruidRPGWeaponModifier> ModClass, class<DruidsRPG200.RPGClass> PlayerClass)
{
// Globals - allowed for all classes
if (ModClass == class'DruidsRPG200.RW_EnhancedInfinity' || ModClass == class'DruidsRPG200.RW_EnhancedDamage')
return true;
// Fixed single quotes for literal class pointer references
if (PlayerClass == class'DruidsRPG200.ClassWeaponMaster')
{
return ModClass == class'DruidsRPG200.RW_EnhancedForce'
|| ModClass == class'DruidsRPG200.RW_Knockback'
|| ModClass == class'DruidsRPG200.RW_Vorpal'
|| ModClass == class'DruidsRPG200.RW_EnhancedPiercing'
|| ModClass == class'DruidsRPG200.RW_Rage'
|| ModClass == class'DruidsRPG200.RW_EnhancedPenetrating';
}
else if (PlayerClass == class'DruidsRPG200.ClassMonsterMaster')
{
return ModClass == class'DruidsRPG200.RW_Vampire'
|| ModClass == class'DruidsRPG200.RW_Healer'
|| ModClass == class'DruidsRPG200.RW_Poison'
|| ModClass == class'DruidsRPG200.RW_Reflection'
|| ModClass == class'DruidsRPG200.RW_EnhancedLuck'
|| ModClass == class'DruidsRPG200.RW_EnhancedProtection';
}
else if (PlayerClass == class'DruidsRPG200.ClassAdrenalineMaster')
{
return ModClass == class'DruidsRPG200.RW_Freeze'
|| ModClass == class'DruidsRPG200.RW_NullEntropy'
|| ModClass == class'DruidsRPG200.RW_EnhancedEnergy'
|| ModClass == class'DruidsRPG200.RW_Speedy'
|| ModClass == class'DruidsRPG200.RW_Vorpal'
|| ModClass == class'DruidsRPG200.RW_EnhancedPiercing';
}
return false;
}
defaultproperties
{
FriendlyName="Class Locked Weapon Modifiers"
Description="Restricts weapon modifiers based on RPG class."
}
I'm trying to do a mod/mutator in which will assign weapon enhancements from druids rpg to the three available classes.
For instance:
Allowed weapon enhancements to monster master:
Vampiric, healing, poison, etc, and restrict others.
So in order to make each class unique.
This would be in the fornat of a mutator, so not to alter anything in the actual druids files, but to act independently.
Here’s some code, but have no clue if this is the right way.
class MutClassLockedWeaponMods extends Mutator;
function PostBeginPlay()
{
Super.PostBeginPlay();
SetTimer(1.0, true); // Increased to 1.0s to significantly reduce server lag
}
function Timer()
{
local Controller C;
local Inventory Inv;
local RPGWeapon RPGWeap;
local DruidsRPG200.DruidRPGPRI DRPRI;
for (C = Level.ControllerList; C != None; C = C.NextController)
{
if (C.Pawn == None || C.Pawn.Inventory == None)
continue;
// Corrected static call syntax
DRPRI = class'DruidsRPG200.DruidRPGPRI'.static.GetDRPRI(C);
if (DRPRI == None || DRPRI.PlayerClass == None)
continue;
for (Inv = C.Pawn.Inventory; Inv != None; Inv = Inv.Inventory)
{
// Cast to RPGWeapon because modifiers exist inside the weapon container
RPGWeap = RPGWeapon(Inv);
if (RPGWeap != None && RPGWeap.ModifierClass != None)
{
if (!IsModifierAllowedForClass(RPGWeap.ModifierClass, DRPRI.PlayerClass))
{
// Corrected string concatenation syntax
C.Pawn.ClientMessage("Class Restriction: " $ RPGWeap.ModifierName $ " removed.");
// Strip the modifier down to a normal weapon base
RPGWeap.Modifier = 0;
RPGWeap.ModifierClass = None;
RPGWeap.ModifierName = "";
}
}
}
}
}
function bool IsModifierAllowedForClass(class<DruidsRPG200.DruidRPGWeaponModifier> ModClass, class<DruidsRPG200.RPGClass> PlayerClass)
{
// Globals - allowed for all classes
if (ModClass == class'DruidsRPG200.RW_EnhancedInfinity' || ModClass == class'DruidsRPG200.RW_EnhancedDamage')
return true;
// Fixed single quotes for literal class pointer references
if (PlayerClass == class'DruidsRPG200.ClassWeaponMaster')
{
return ModClass == class'DruidsRPG200.RW_EnhancedForce'
|| ModClass == class'DruidsRPG200.RW_Knockback'
|| ModClass == class'DruidsRPG200.RW_Vorpal'
|| ModClass == class'DruidsRPG200.RW_EnhancedPiercing'
|| ModClass == class'DruidsRPG200.RW_Rage'
|| ModClass == class'DruidsRPG200.RW_EnhancedPenetrating';
}
else if (PlayerClass == class'DruidsRPG200.ClassMonsterMaster')
{
return ModClass == class'DruidsRPG200.RW_Vampire'
|| ModClass == class'DruidsRPG200.RW_Healer'
|| ModClass == class'DruidsRPG200.RW_Poison'
|| ModClass == class'DruidsRPG200.RW_Reflection'
|| ModClass == class'DruidsRPG200.RW_EnhancedLuck'
|| ModClass == class'DruidsRPG200.RW_EnhancedProtection';
}
else if (PlayerClass == class'DruidsRPG200.ClassAdrenalineMaster')
{
return ModClass == class'DruidsRPG200.RW_Freeze'
|| ModClass == class'DruidsRPG200.RW_NullEntropy'
|| ModClass == class'DruidsRPG200.RW_EnhancedEnergy'
|| ModClass == class'DruidsRPG200.RW_Speedy'
|| ModClass == class'DruidsRPG200.RW_Vorpal'
|| ModClass == class'DruidsRPG200.RW_EnhancedPiercing';
}
return false;
}
defaultproperties
{
FriendlyName="Class Locked Weapon Modifiers"
Description="Restricts weapon modifiers based on RPG class."
}