It can change ANY (well, maybe any editor-visible) property of actor, including Collision and Location. I used it for changing location, mostly: actors could move from hidden location to desired location easily, without messing with attaching to dummy movers. Works over the network, IIRC. You may want to modify the code to have arrays of properties/values to change at once.
[spoiler]
Code: Select all
//=============================================================================
// PropertyChanger.
//=============================================================================
class PropertyChanger expands Triggers;
var() Object AnObject;
var() string PropertyName;
var() string PropertyValue;
var() bool bSetLocation;
var() bool bSetRotation;
var() bool bFindByTag;
var() vector NewLocation;
var() rotator NewRotation;
var() bool bSetSelfLocation;
var() bool bSetCollision;
var() bool bNewColActors;
var() bool bNewBlockActors;
var() bool bNewBlockPlayers;
function Trigger( actor Other, pawn EventInstigator )
{
Instigator = EventInstigator;
gotostate('ChangeProp');
}
function ChangeProperties(Object target)
{
if(PropertyName!="")
{
target.SetPropertyText(PropertyName, PropertyValue);
}
if(bSetLocation && !bSetSelfLocation)
{
Actor(target).SetLocation(NewLocation);
}
if(bSetSelfLocation)
{
Actor(target).SetLocation(Location);
}
if(bSetRotation)
{
Actor(target).SetRotation(NewRotation);
}
if(bSetCollision)
{
Actor(target).SetCOllision(bNewColActors, bNewBlockActors, bNewBlockPlayers);
}
}
state ChangeProp
{
Begin:
disable('Trigger');
if(bFindByTag)
{
foreach AllActors( class 'Actor', Target, Event )
ChangeProperties(Target);
}
else
{
ChangeProperties(AnObject);
}
enable('Trigger');
}