Files
zzz_REBIRTH__Utils/Scripts/MinEvents/MinEventActionAddItemRebirth.cs
2025-06-04 16:44:53 +09:30

112 lines
3.3 KiB
C#

using System.Xml.Linq;
public class MinEventActionAddItemRebirth : MinEventActionRemoveBuff
{
private int numItems = 1;
private int numLocation = 0;
private int numQuality = 0;
private string itemName = "";
public override void Execute(MinEventParams _params)
{
if (GameManager.IsDedicatedServer)
{
//Log.Out("MinEventActionAddItemRebirth-Execute IS SERVER");
return;
}
//Log.Out("MinEventActionAddItemRebirth-Execute IS CLIENT");
EntityPlayerLocal player = _params.Self as EntityPlayerLocal;
if (player == null)
{
//Log.Out("MinEventActionAddItemRebirth-Execute NO Player");
return;
}
ItemValue item = ItemClass.GetItem(itemName, false);
ItemValue itemValue = new ItemValue(ItemClass.GetItem(itemName, false).type, true);
int num = numItems;
if (itemValue.HasQuality)
{
//Log.Out("MinEventActionAddItemRebirth-Execute 1");
num = 1;
}
//Log.Out("Item: " + itemName);
//Log.Out("Number: " + num);
//Log.Out("Item Value: " + itemValue.ToString());
//Log.Out("Item Type: " + itemValue.type.ToString());
//Log.Out("Item GetItemId: " + itemValue.GetItemId());
//Log.Out("Item GetType: " + itemValue.GetType());
ItemStack myStack = new ItemStack(itemValue, num);
if (numQuality > 0)
{
//Log.Out("MinEventActionAddItemRebirth-Execute 2");
myStack.itemValue.Quality = (ushort)numQuality;
}
if (numLocation == 1)
{
//Log.Out("MinEventActionAddItemRebirth-Execute 3");
if (!player.inventory.AddItem(myStack))
{
//Log.Out("MinEventActionAddItemRebirth-Execute 4");
if (!player.bag.AddItem(myStack))
{
//Log.Out("MinEventActionAddItemRebirth-Execute 5");
player.world.gameManager.ItemDropServer(new ItemStack(itemValue, num), player.GetPosition(), Vector3.zero);
}
}
}
else
{
//Log.Out("MinEventActionAddItemRebirth-Execute 6");
if (!player.bag.AddItem(myStack))
{
//Log.Out("MinEventActionAddItemRebirth-Execute 7");
player.world.gameManager.ItemDropServer(new ItemStack(itemValue, num), player.GetPosition(), Vector3.zero);
}
}
}
public override bool ParseXmlAttribute(XAttribute _attribute)
{
var flag = base.ParseXmlAttribute(_attribute);
if (flag) return true;
var name = _attribute.Name;
if (name == null)
{
return flag;
}
else if (name == "numItems")
{
numItems = Int32.Parse(_attribute.Value);
return true;
}
else if (name == "itemName")
{
itemName = _attribute.Value;
return true;
}
else if (name == "location")
{
numLocation = Int32.Parse(_attribute.Value);
return true;
}
else if (name == "quality")
{
numQuality = Int32.Parse(_attribute.Value);
return true;
}
else
{
return false;
}
}
}