112 lines
3.3 KiB
C#
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;
|
|
}
|
|
}
|
|
} |