Re: Report Broken Maps Here
Posted: Fri Apr 10, 2020 1:54 am
It's up to you how you want to handle it.
An Unreal Tournament Community
http://hofgamingclan.site.nfoservers.com/forums/
http://hofgamingclan.site.nfoservers.com/forums/viewtopic.php?t=59
Code: Select all
class PlasmaArena expands Mutator config(EvilPR_001);
var bool bInitialized;
var() config bool bDoubleJump, //Adding brackets for a better control in Editor + Preferences when INT file has all requirements
bLowGrav, // Low Gravity
bNoFallDam; // No Fall Damage
var() config int maxJumps,
jumpType;
var() config float jumpHeight;
var() name WeaponName, //The name of our custom weapon.
AmmoName; //The name of our custom ammo.
var() string WeaponString, //The string Package.Class name of our custom weapon.
AmmoString; //The string Package.Class name of our custom ammo.
//XC_GameEngine interface
native(1718) final function bool AddToPackageMap( optional string PkgName);
// 1719 would check if it's not already a package...
event PreBeginPlay()
{
Level.Game.DefaultWeapon=class'EvilPR_001.StealthTrans';
}
event PostBeginPlay()
{
// Super.PostBeginPlay(); //Not needed at all
if ( bInitialized ) //Moved here
return;
if ( int(ConsoleCommand("get ini:Engine.Engine.GameEngine XC_Version")) >= 11 )
AddToPackageMap();
bInitialized = True;
SaveConfig();
}
function ModifyPlayer(Pawn Other) //Not needed as a simulated thing, it works as it is in Mutator.uc
{ //Actually as alternate method these can be server-side and only weapon as package, works guaranteed...
local Inventory Inv;
local class<DJ_InventoryItem> InventoryClass;
local DJ_InventoryItem DJ_Inv;
// Make sure we don't break anything
Super.ModifyPlayer(Other);
DeathMatchPlus(Level.Game).GiveWeapon(Other,WeaponString);
// Create a DJ_InventoryItem
InventoryClass = class<DJ_InventoryItem>(DynamicLoadObject("EvilPR_001.DJ_InventoryItem", class'Class'));
if(bDoubleJump)
{
DJ_Inv = Spawn(class'DJ_InventoryItem', Other,, Other.Location);
if( DJ_Inv != None )
{
DJ_Inv.RespawnTime = 0.0;
DJ_Inv.GiveTo(Other);
DJ_Inv.maxJumps = maxJumps;
DJ_Inv.jumpType = jumpType;
DJ_Inv.jumpHeight = jumpHeight;
}
}
Inv = Other.FindInventoryType(class'PlasmaRifle');
if ( Inv == None )
{
Inv = Spawn(class'PlasmaRifle');
if( inv != None )
{
Inv.GiveTo(Other);
Ammo(Inv).AmmoAmount = 999;
Ammo(Inv).MaxAmmo = 999;
}
}
for( Inv=other.Inventory; Inv!=None; Inv=Inv.Inventory )
{
if (Ammo(Inv)!=None)
{
Ammo(Inv).AmmoAmount = 999;
Ammo(Inv).MaxAmmo = 999;
}
}
}
function bool CheckReplacement(Actor Other, out byte bSuperRelevant)
{
if (Other.IsA('ZoneInfo'))
{
if (bLowGrav)
{
ZoneInfo(Other).ZoneGravity = vect(0,0,-200); // low gravity
}
if (bNoFallDam)
{
ZoneInfo(Other).ZoneTerminalVelocity = 1000; // no fall damage yo
}
}
if ((Other.IsA('StealthTrans')) )
return true;
if (Other.Class==Class'Translocator')
{
ReplaceWith(Other,"EvilPR_001.StealthTrans");
return false;
}
if (Other.IsA('Ammo'))
{
if (Other.IsA('PlasmaAmmo')) //Nelsona - Our item is here out of replacing job
return True;
if ((Other.IsA('ShockCore'))
// || (Other.IsA('RifleShell')) // RifleShell Is child of BulletBox
|| (Other.IsA('BulletBox'))
|| (Other.IsA('RocketPack'))
|| (Other.IsA('BladeHopper'))
|| (Other.IsA('FlakAmmo'))
|| (Other.IsA('BioAmmo'))
|| (Other.IsA('MiniAmmo'))
// || (Other.IsA('EClip')) //This is under MiniAmmo deal as well
|| (Other.IsA('WarheadAmmo'))
|| (Other.IsA('PAmmo')))
{
//ReplaceWith(Other,"EvilPR_001.PlasmaAmmo");
return false;
}
}
if(Other.IsA('Weapon'))
{
if ( Other.IsA('PlasmaRifle') ) //Nelsona - same as above
return True;
if ((Other.IsA('ShockRifle'))
|| (Other.IsA('UT_BioRifle'))
|| (Other.IsA('SniperRifle'))
|| (Other.IsA('PulseGun'))
|| (Other.IsA('Ripper'))
|| (Other.IsA('Minigun2'))
|| (Other.IsA('UT_Eightball'))
|| (Other.IsA('UT_FlakCannon'))
|| (Other.IsA('Enforcer'))
|| (Other.IsA('WarheadLauncher'))
|| (Other.IsA('ImpactHammer'))
|| (Other.IsA('ChainSaw')))
{
//ReplaceWith(Other,"EvilPR_001.PlasmaRifle");
return false;
}
}
return true;
}
Code: Select all
// Modified version of the ReplaceWith function
// Replaces an inventory Other with an inventory of class aClassName and
// returns a reference to it
final function Inventory ReplaceWithItem(Inventory Other, coerce string aClassName)
{
local Inventory A;
local class<Inventory> aClass;
local bool bAllowItemFall, bForceItemFall;
local bool bAllowItemRotation, bForceItemRotation;
if ( Other.Location == vect(0,0,0) )
return None;
aClass = class<Inventory>(DynamicLoadObject(aClassName, class'Class'));
if ( aClass != None )
A = Spawn(aClass, Other.Owner, Other.Tag, Other.Location + (aClass.Default.CollisionHeight - Other.CollisionHeight) * vect(0,0,1), Other.Rotation);
if ( Other.MyMarker != None ) {
Other.MyMarker.markedItem = A;
if ( A != None )
A.MyMarker = Other.MyMarker;
Other.MyMarker = None;
}
else if ( A != None ) {
A.bHeldItem = true;
A.Respawntime = 0.0;
}
if ( A != None ) {
if ( Other.Physics != Other.Class.Default.Physics ) {
if ( Other.Physics == PHYS_Falling )
bForceItemFall = True;
else if ( Other.Class.Default.Physics == PHYS_Falling )
bAllowItemFall = False;
}
if ( (!Other.bRotatingPickup || Other.RotationRate == rot(0,0,0))
&& (Other.Rotation.Pitch != 0 || Other.Rotation.Roll != 0) )
bAllowItemRotation = False;
else
bAllowItemRotation = (Other.RotationRate != rot(0,0,0) && Other.bRotatingPickup)
|| !Other.default.bRotatingPickup || Other.default.RotationRate == rot(0,0,0);
bForceItemRotation = Other.RotationRate != rot(0,0,0) && Other.bRotatingPickup
&& (!Other.default.bRotatingPickup || Other.default.RotationRate == rot(0,0,0));
if ( A.Physics == PHYS_Falling && !bAllowItemFall )
A.SetPhysics(PHYS_None);
else if ( A.Physics != PHYS_Falling && bForceItemFall )
A.SetPhysics(PHYS_Falling);
A.bRotatingPickup = bAllowItemRotation && (A.bRotatingPickup || bForceItemRotation);
A.Event = Other.Event;
A.Tag = Other.Tag;
return A;
}
return None;
}
Code: Select all
VoidCheck: --- Void placement report ---
VoidCheck: Light36 looks placed into void.
VoidCheck: Light203 looks placed into void.
VoidCheck: Light39 looks placed into void.
VoidCheck: Light40 looks placed into void.
VoidCheck: 4 actors look placed into void, check those.
GarbageLord: Found Level's Map: MyLevel.LevelInfo0
GarbageLord: Found Level's Map: MyLevel.LevelInfo0
Duplicated: AmbientSound2 was found 2 times.
Duplicated: AmbientSound3 was found 2 times.
Duplicated: AmbientSound4 was found 2 times.
Duplicated: AmbientSound5 was found 2 times.
Duplicated: AmbientSound6 was found 2 times.
Duplicated: AmbientSound7 was found 2 times.
Duplicated: AmbientSound8 was found 2 times.
Duplicated: AmbientSound9 was found 2 times.
Duplicated: AmbientSound10 was found 2 times.
Duplicated: AmbientSound11 was found 2 times.
Duplicated: Mover17 was found 2 times.
Duplicated: Mover18 was found 2 times.
Duplicated: Light233 was found 2 times.
Duplicated: Light234 was found 2 times.
Duplicated: Light235 was found 2 times.
Duplicated: Light236 was found 2 times.
Duplicated: Light237 was found 2 times.
Duplicated: Light238 was found 2 times.
Duplicated: Actors might be removed by using subsequent bTryFixDuplicates set to True.
Duplicated: Operation recommended in another clean editing session with both values set True.
Duplicated: Found 18 duplicated Actors.
Duplicated: Duplicated Actors scanning is being finished.