Overwrite

Complete Overwrite of the Folder with the free shard. ServUO 57.3 has been added.
This commit is contained in:
Unstable Kitsune
2023-11-28 23:20:26 -05:00
parent 3cd54811de
commit b918192e4e
11608 changed files with 2644205 additions and 47 deletions

View File

@@ -0,0 +1,374 @@
using System;
using System.Collections.Generic;
using System.Linq;
using Server;
using Server.Items;
using Server.Commands;
using Server.Mobiles;
namespace Server.Gumps
{
public class ItemPropertiesGump : BaseGump
{
public static void Initialize()
{
CommandSystem.Register("ItemProps", AccessLevel.GameMaster, e =>
{
BaseGump.SendGump(new ItemPropertiesGump((PlayerMobile)e.Mobile));
});
}
public enum PropFilter
{
All,
AosAttributes,
AosWeaponAttributes,
AosArmorAttributes,
Slayer,
AosElemental,
SkillName,
SAAbsorption,
ExtendedWeapon,
Other,
}
public PropFilter Filter { get; set; }
public ItemType TypeFilter { get; set; }
public List<ItemPropertyInfo> Infos { get; set; }
public ItemPropertiesGump(PlayerMobile pm)
: base(pm, 0, 0)
{
}
public override void AddGumpLayout()
{
AddBackground(0, 0, 900, 600, 0x2454);
AddPage(0);
AddHtml(0, 5, 900, 20, String.Format("Item Properties: {0}", Filter.ToString()), false, false);
AddHtml(275, 15, 625, 20, Center("Item Description: (Imbuing/Runic Cap) - (Loot Cap) [Scale]"), false, false);
AddButton(5, 550, 4005, 4007, 1, GumpButtonType.Reply, 0);
AddHtml(40, 550, 200, 20, String.Format("Filter: {0}", Filter.ToString()), false, false);
//
AddButton(105, 575, TypeFilter == ItemType.Melee ? 4006 : 4005, 4007, 2, GumpButtonType.Reply, 0);
AddHtml(140, 575, 200, 20, "Melee", false, false);
AddButton(205, 575, TypeFilter == ItemType.Ranged ? 4006 : 4005, 4007, 3, GumpButtonType.Reply, 0);
AddHtml(240, 575, 200, 20, "Ranged", false, false);
AddButton(305, 575, TypeFilter == ItemType.Armor ? 4006 : 4005, 4007, 4, GumpButtonType.Reply, 0);
AddHtml(340, 575, 200, 20, "Armor", false, false);
AddButton(405, 575, TypeFilter == ItemType.Shield ? 4006 : 4005, 4007, 5, GumpButtonType.Reply, 0);
AddHtml(440, 575, 200, 20, "Shields", false, false);
AddButton(505, 575, TypeFilter == ItemType.Hat ? 4006 : 4005, 4007, 6, GumpButtonType.Reply, 0);
AddHtml(540, 575, 200, 20, "Hats", false, false);
AddButton(605, 575, TypeFilter == ItemType.Jewel ? 4006 : 4005, 4007, 7, GumpButtonType.Reply, 0);
AddHtml(640, 575, 200, 20, "Jewels", false, false);
AddLabel(5, 30, 0, "Property");
AddLabel(125, 30, 0, "Max");
AddLabel(175, 30, 0, "Start");
AddLabel(225, 30, 0, "Scale");
AddLabel(275, 30, 0, "Melee");
AddLabel(375, 30, 0, "Ranged");
AddLabel(475, 30, 0, "Armor");
AddLabel(575, 30, 0, "Shields");
AddLabel(675, 30, 0, "Hats");
AddLabel(775, 30, 0, "Jewels");
Infos = CompileList().ToList();
int index = 0;
int page = 1;
int y = 50;
int perPage = 25;
AddPage(page);
for (int i = 0; i < Infos.Count; i++)
{
var info = Infos[i];
int scale = info.Scale;
//AddLabel(5, y, 0, info.Attribute.ToString());
AddHtmlLocalized(5, y, 120, 20, 1114057, info.AttributeName.ToString(), 0x1, false, false);
AddLabel(125, y, 0, info.MaxIntensity.ToString());
AddLabel(175, y, 0, info.Start.ToString());
AddLabel(225, y, 0, scale.ToString());
LoadTypeInfo(ItemType.Melee, info, scale, 275, y);
LoadTypeInfo(ItemType.Ranged, info, scale, 375, y);
LoadTypeInfo(ItemType.Armor, info, scale, 475, y);
LoadTypeInfo(ItemType.Shield, info, scale, 575, y);
LoadTypeInfo(ItemType.Hat, info, scale, 675, y);
LoadTypeInfo(ItemType.Jewel, info, scale, 775, y);
AddButton(868, y, 4011, 4012, 10 + i, GumpButtonType.Reply, 0);
if (++index % perPage == 0)
{
y = 50;
AddButton(868, 0, 4005, 4007, 0, GumpButtonType.Page, page + 1);
AddPage(++page);
AddButton(838, 0, 4014, 4016, 0, GumpButtonType.Page, page - 1);
}
else
{
y += 20;
}
}
}
private void LoadTypeInfo(ItemType type, ItemPropertyInfo info, int scale, int x, int y)
{
var typeInfo = info.GetItemTypeInfo(type);
if (typeInfo != null)
{
AddLabel(x, y, TypeFilter == type ? 0x9E : 0, String.Format("{0}-{1}[{2}]", typeInfo.StandardMax, typeInfo.LootMax, typeInfo.Scale > 1 ? typeInfo.Scale.ToString() : scale.ToString()));
}
else
{
AddLabel(x, y, 0, "N/A");
}
}
private IEnumerable<ItemPropertyInfo> CompileList()
{
if (TypeFilter > ItemType.Invalid)
{
foreach (var i in ItemPropertyInfo.LootTable[TypeFilter])
{
yield return ItemPropertyInfo.GetInfo(i);
}
yield break;
}
foreach (var info in ItemPropertyInfo.Table.Values)
{
switch (Filter)
{
case PropFilter.All:
yield return info;
break;
case PropFilter.AosAttributes:
if (info.Attribute is AosAttribute)
{
yield return info;
}
break;
case PropFilter.AosWeaponAttributes:
if (info.Attribute is AosWeaponAttribute)
{
yield return info;
}
break;
case PropFilter.AosArmorAttributes:
if (info.Attribute is AosArmorAttribute)
{
yield return info;
}
break;
case PropFilter.Slayer:
if (info.Attribute is SlayerName)
{
yield return info;
}
break;
case PropFilter.AosElemental:
if (info.Attribute is AosElementAttribute)
{
yield return info;
}
break;
case PropFilter.SkillName:
if (info.Attribute is SkillName)
{
yield return info;
}
break;
case PropFilter.SAAbsorption:
if (info.Attribute is SAAbsorptionAttribute)
{
yield return info;
}
break;
case PropFilter.ExtendedWeapon:
if (info.Attribute is ExtendedWeaponAttribute)
{
yield return info;
}
break;
case PropFilter.Other:
if (info.Attribute is string)
{
yield return info;
}
break;
}
}
}
public override void OnResponse(RelayInfo info)
{
if (info.ButtonID == 0)
{
return;
}
else if (info.ButtonID == 1)
{
if (Filter == PropFilter.Other)
{
Filter = PropFilter.All;
}
else
{
Filter++;
}
TypeFilter = ItemType.Invalid;
Refresh();
}
else if (info.ButtonID < 10)
{
switch (info.ButtonID)
{
case 2:
TypeFilter = ItemType.Melee;
break;
case 3:
TypeFilter = ItemType.Ranged;
break;
case 4:
TypeFilter = ItemType.Armor;
break;
case 5:
TypeFilter = ItemType.Shield;
break;
case 6:
TypeFilter = ItemType.Hat;
break;
case 7:
TypeFilter = ItemType.Jewel;
break;
}
Refresh();
}
else
{
Refresh();
int id = info.ButtonID - 10;
if (id >= 0 && id < Infos.Count)
{
var propInfo = Infos[id];
BaseGump.SendGump(new InfoSpecificGump(User, propInfo, TypeFilter));
}
}
}
}
public class InfoSpecificGump : BaseGump
{
public ItemPropertyInfo Info { get; set; }
public ItemType ItemType { get; set; }
public InfoSpecificGump(PlayerMobile pm, ItemPropertyInfo info, ItemType type)
: base(pm, 100, 100)
{
Info = info;
ItemType = type;
}
public override void AddGumpLayout()
{
AddBackground(0, 0, 600, 400, 0x2454);
AddHtmlLocalized(0, 10, 600, 20, CenterLoc, Info.AttributeName.ToString(), 0x1, false, false);
AddLabel(5, 30, 0, "Weight:");
AddLabel(5, 50, 0, "Primary Resource:");
AddLabel(5, 70, 0, "Gem Resource:");
AddLabel(5, 90, 0, "Special Resource:");
AddLabel(5, 110, 0, "Default Scale:");
AddLabel(5, 130, 0, "Start Intensity:");
AddLabel(5, 150, 0, "Default Max Intensity:");
AddLabel(225, 30, 0, Info.Weight.ToString());
AddHtmlLocalized(225, 50, 250, 20, 1114057, Info.PrimaryName != null ? Info.PrimaryName.ToString() : "N/A", 0x1, false, false);
AddHtmlLocalized(225, 70, 250, 20, 1114057, Info.GemName != null ? Info.GemName.ToString() : "N/A", 0x1, false, false);
AddHtmlLocalized(225, 90, 250, 20, 1114057, Info.SpecialName != null ? Info.SpecialName.ToString() : "N/A", 0x1, false, false);
AddLabel(225, 110, 0, Info.Scale.ToString());
AddLabel(225, 130, 0, Info.Start.ToString());
AddLabel(225, 150, 0, Info.MaxIntensity.ToString());
AddLabel(5, 190, 0, "Item Type");
AddLabel(125, 190, 0, "Scale");
AddLabel(225, 190, 0, "Standard Max");
AddLabel(325, 190, 0, "Loot Max");
AddLabel(425, 190, 0, "Over Cap");
int y = 210;
foreach (var i in Enum.GetValues(typeof(ItemType)))
{
var type = (ItemType)i;
if (type == ItemType.Invalid || (ItemType != ItemType.Invalid && type != ItemType))
{
continue;
}
AddLabel(5, y, 0, type.ToString());
var typeInfo = Info.GetItemTypeInfo(type);
if (typeInfo != null)
{
AddLabel(125, y, 0, typeInfo.Scale.ToString());
AddLabel(225, y, 0, typeInfo.StandardMax.ToString());
AddLabel(325, y, 0, typeInfo.LootMax.ToString());
if (typeInfo.PowerfulLootRange != null)
{
var str = String.Empty;
for (int j = 0; j < typeInfo.PowerfulLootRange.Length; j++)
{
int v = typeInfo.PowerfulLootRange[j];
if (j == typeInfo.PowerfulLootRange.Length - 1)
{
str += String.Format(" {0}", v.ToString());
}
else
{
str += String.Format(" {0},", v.ToString());
}
}
AddLabel(425, y, 0, str);
}
else
{
AddLabel(425, y, 0, "N/A");
}
}
else
{
AddLabel(125, y, 0, "No Info");
}
y += 20;
}
}
}
}