56 lines
1.2 KiB
Ucode
56 lines
1.2 KiB
Ucode
class ACTION_AddInventory extends ScriptedAction;
|
|
|
|
var() name InvTag;
|
|
var() class<Inventory> InventoryType;
|
|
|
|
function bool InitActionFor(ScriptedController C)
|
|
{
|
|
local Inventory NewInv;
|
|
local Pawn P;
|
|
local class<Pickup> PickupClass;
|
|
local PlayerController PC, OPC;
|
|
local Controller CLC;
|
|
|
|
if( InventoryType == none )
|
|
{
|
|
return false;
|
|
}
|
|
|
|
P = C.GetInstigator();
|
|
if( P == none || P.FindInventoryType(InventoryType) != none )
|
|
{
|
|
return true; // stop right there!
|
|
}
|
|
|
|
NewInv = C.Spawn(InventoryType,P,InvTag,P.Location);
|
|
if( NewInv == none )
|
|
{
|
|
return false;
|
|
}
|
|
|
|
NewInv.GiveTo( P );
|
|
|
|
OPC = PlayerController( P.Controller );
|
|
|
|
PickupClass = InventoryType.default.PickupClass;
|
|
if( PickupClass != none )
|
|
{
|
|
P.PlaySound( PickupClass.default.PickupSound, SLOT_Interact );
|
|
for( CLC = P.Level.ControllerList; CLC != None; CLC = CLC.NextController )
|
|
{
|
|
PC = PlayerController(CLC);
|
|
if(PC != none)
|
|
{
|
|
PC.ReceiveLocalizedMessage(PickupClass.default.MessageClass,1,OPC.PlayerReplicationInfo);
|
|
}
|
|
}
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
defaultproperties
|
|
{
|
|
ActionString="Add Inventory"
|
|
}
|