Ejemplo n.º 1
0
 public static void AddArmorProperties(this LocalEmbed embed, ArmorProperties armor)
 {
     embed.AddField("Class", armor.Class, true);
     embed.AddField("Durability", armor.Durability, true);
     embed.AddField("Zones", armor.Zones.Humanize(x => x.Transform(To.TitleCase)), true);
     embed.AddField("Material", armor.Material.Name.Transform(To.TitleCase), true);
 }
Ejemplo n.º 2
0
    //护甲格子点击回调
    void OnArmorSlotClick(UIItemSlot slot, PointerEventData eventData)
    {
        LocalPlayer localPlayer = Helper.FindLocalPlayer();

        if (localPlayer != null && bindEquipment != null)
        {
            MouseItem mouseItem = localPlayer.bag.mouseItem;
            if (mouseItem.hasItem)
            { //鼠标有物品,则尝试装备
                if (mouseItem.item.Type.IsArmor)
                {
                    ArmorProperties armorProp = EquipTable.GetArmorProp(mouseItem.item.Type.armorId);
                    if (armorProp != null && armorProp.armorType == PlayerEquipment.armorTypes[slot.index])
                    {                                                                             //护甲有效,护甲类型匹配,则装备
                        Item preArmor = null;
                        bindEquipment.PutOnArmor(mouseItem.TakeItem(), slot.index, out preArmor); //穿上护甲
                        mouseItem.PutItem(preArmor);                                              //鼠标放入之前格子里的护甲
                    }
                }
                else
                { //鼠标上的不是护甲,什么都不用做
                }
            }
            else
            {   //鼠标没物品,尝试取下武器,如果没武器,则会得到null
                mouseItem.PutItem(bindEquipment.TakeOffArmor(slot.index));
            }
            Helper.ShowTips(bindEquipment.Armors[slot.index]);
        }
        Helper.MoveWndToFront(transform);
    }
Ejemplo n.º 3
0
    //穿上装备,如果之前格子里有装备,会移除掉
    public bool PutOnArmor(Item armor, int idx, out Item preArmor)
    {
        preArmor = null;
        if (armor == null || !armor.Type.IsArmor)
        {
            return(false);
        }
        ArmorProperties armorProp = EquipTable.GetArmorProp(armor.Type.armorId);

        if (armorProp != null && armorProp.armorType == armorTypes[idx])
        {                        //存在装备配置,且类型相同
            preArmor    = Armors[idx];
            Armors[idx] = armor; //加入已装备护甲列表

            if (preArmor != null)
            {
                ArmorProperties preProp = EquipTable.GetArmorProp(preArmor.Type.armorId);
                if (preProp != null)
                {
                    RemoveArmorProp(bindPlayer, preProp);
                }
            }
            AddArmorProp(bindPlayer, armorProp);
            RaiseEquipChanged();
        }
        return(true);
    }
Ejemplo n.º 4
0
 //根据类型穿装备,饰品就放在第一个格子里
 public bool PutOnArmor(Item armor, out Item preArmor)
 {
     preArmor = null;
     if (armor != null && armor.Type.IsArmor)
     {
         ArmorProperties armorProp = EquipTable.GetArmorProp(armor.Type.armorId);
         for (int i = 0; i < armorTypes.Length; i++)
         {
             if (armorProp.armorType == armorTypes[i])
             {
                 PutOnArmor(armor, i, out preArmor);
                 return(true);
             }
         }
     }
     return(false);
 }
Ejemplo n.º 5
0
    //脱下装备
    public Item TakeOffArmor(int idx)
    {
        Item preArmor = Armors[idx];

        Armors[idx] = null; //从已装备列表中移除

        //修改属性
        if (preArmor != null)
        {
            ArmorProperties preProp = EquipTable.GetArmorProp(preArmor.Type.armorId);
            if (preProp != null)
            {
                RemoveArmorProp(bindPlayer, preProp);
            }
        }
        RaiseEquipChanged();
        return(preArmor);
    }
Ejemplo n.º 6
0
 //加上装备属性
 void AddArmorProp(Player player, ArmorProperties armorProp)
 {
     if (player != null && armorProp != null)
     {
         player.maxHp += armorProp.hpBonus; //生命上限
         if (player.hp > player.maxHp)
         {
             player.hp = player.maxHp;
         }
         player.minAttack      += armorProp.minAtkBonus;     //最小攻击
         player.maxAttack      += armorProp.maxAtkBonus;     //最大攻击
         player.defense        += armorProp.defBonus;        //防御
         player.speedScale     += armorProp.spdScaleBonus;   //速度
         player.jumpScale      += armorProp.jmpScaleBonus;   //跳跃
         player.atkSpeed       += armorProp.atkSpdBonus;     //攻速
         player.criticalChance += armorProp.crtlChanceBonus; //暴击几率
         player.criticalRate   += armorProp.crtlRateBonus;   //暴击伤害
         player.rcr            += armorProp.rcrBonus;        //rcr
     }
 }
Ejemplo n.º 7
0
 //重新计算数值
 public void RecalcProperties()
 {
     if (bindPlayer != null)
     {
         bindPlayer.ResetProperties();
         foreach (Item armor in Armors)
         {
             if (armor != null)
             {
                 ArmorProperties armorProp = EquipTable.GetArmorProp(armor.Type.armorId);
                 AddArmorProp(bindPlayer, armorProp);
             }
         }
         Item curWeapon = CurWeapon;
         if (curWeapon != null)
         {
             WeaponProperties weaponProp = EquipTable.GetWeaponProp(curWeapon.Type.weaponId);
             AddWeaponProp(bindPlayer, weaponProp);
         }
     }
 }
Ejemplo n.º 8
0
    void GenTips(Item item, ShowPrice showPrice = ShowPrice.None)
    {
        //name
        StringBuilder build = new StringBuilder();

        switch (item.Type.quality)
        {
        case ItemQuality.White:
            build.Append("<color=white>" + item.Type.itemName);
            break;

        case ItemQuality.Green:
            build.Append("<color=green>" + item.Type.itemName);
            break;

        case ItemQuality.Blue:
            build.Append("<color=blue>" + item.Type.itemName);
            break;

        case ItemQuality.Golden:
            build.Append("<color=orange>" + item.Type.itemName);
            break;

        case ItemQuality.Red:
            build.Append("<color=red>" + item.Type.itemName);
            break;

        case ItemQuality.Purple:
            build.Append("<color=purple>" + item.Type.itemName);
            break;

        default:
            build.Append("<color=white>" + item.Type.itemName);     //默认用白色
            break;
        }


        //叠加数量
        if (item.Type.CanStack)
        {
            build.Append(" (" + item.amount + ")");
        }
        build.Append("</color>");
        build.Append("\n");

        //这里附加装备信息
        if (item.Type.IsWeapon)
        {
            WeaponProperties weaponProp = EquipTable.GetWeaponProp(item.Type.weaponId);
            if (weaponProp == null)
            {
            }
            else
            {
                build.Append("<color=white>");
                //攻击
                build.Append(string.Format(TextResources.atkFormat, weaponProp.minAtkBonus, weaponProp.maxAtkBonus));
                //攻击速率,为间隔的倒数
                build.Append(string.Format(TextResources.atkInvervalFormat, 1 / weaponProp.atkInterval));
                if (weaponProp.crtlChanceBonus != 0)
                { //暴击率
                    build.Append(string.Format(TextResources.crtlChanceFormat, Mathf.Round(weaponProp.crtlChanceBonus * 100)));
                }
                if (weaponProp.crtlRateBonus != 0)
                {  //暴击伤害
                    build.Append(string.Format(TextResources.crtlRateFormat, Mathf.Round(weaponProp.crtlRateBonus * 100)));
                }
                if (weaponProp.rcrBonus != 0)
                {   //rcr
                    build.Append(string.Format(TextResources.rcrFormat, Mathf.Round(weaponProp.rcrBonus * 100)));
                }
                build.Append("</color>");
            }
        }
        else if (item.Type.IsArmor)
        {
            ArmorProperties armorProp = EquipTable.GetArmorProp(item.Type.armorId);
            if (armorProp == null)
            {
            }
            else
            {
                build.Append("<color=white>");
                //防御
                build.Append(string.Format(TextResources.defFormat, armorProp.defBonus));
                if (armorProp.hpBonus != 0)
                {   //血量
                    build.Append(string.Format(TextResources.hpFormat, armorProp.hpBonus));
                }
                if (armorProp.minAtkBonus != 0 || armorProp.maxAtkBonus != 0)
                {   //攻击
                    build.Append(string.Format(TextResources.atkFormat, armorProp.minAtkBonus, armorProp.maxAtkBonus));
                }
                if (armorProp.atkSpdBonus != 0)
                {   //攻速
                    build.Append(string.Format(TextResources.atkSpdFormat, Mathf.Round((armorProp.atkSpdBonus * 100))));
                }
                if (armorProp.spdScaleBonus != 0)
                {   //速度
                    build.Append(string.Format(TextResources.spdFormat, Mathf.Round(armorProp.spdScaleBonus * 100)));
                }
                if (armorProp.jmpScaleBonus != 0)
                {   //跳跃
                    build.Append(string.Format(TextResources.jmpFormat, Mathf.Round(armorProp.jmpScaleBonus * 100)));
                }
                if (armorProp.crtlChanceBonus != 0)
                {   //暴击率
                    build.Append(string.Format(TextResources.crtlChanceFormat, Mathf.Round(armorProp.crtlChanceBonus * 100)));
                }
                if (armorProp.crtlRateBonus != 0)
                {   //暴击伤害
                    build.Append(string.Format(TextResources.crtlRateFormat, Mathf.Round(armorProp.crtlRateBonus * 100)));
                }
                if (armorProp.rcrBonus != 0)
                {   //rcr
                    build.Append(string.Format(TextResources.rcrFormat, Mathf.Round(armorProp.rcrBonus * 100)));
                }
                build.Append("</color>");
            }
        }

        //附魔属性

        //comment
        build.Append(item.Type.comment);
        build.Append("\n");

        //usability
        if (item.Type.IsEquipment)
        {
            build.Append("equipment");
        }

        if (item.Type.IsConsumable)
        {
            build.Append("&consumable");
        }

        //if (item.Type.IsMaterial)
        //{
        //    build.Append("&material");
        //}

        //价格显示
        switch (showPrice)
        {
        case ShowPrice.None:
            break;

        case ShowPrice.Buy:
            build.Append("\n");
            build.Append("<color=yellow>");
            build.Append("买价: " + item.buyPrice);
            build.Append("</color>");
            break;

        case ShowPrice.Sell:
            build.Append("\n");
            build.Append("<color=white>");
            build.Append("卖价: " + item.sellPrice);
            build.Append("</color>");
            break;
        }

        txt.text = build.ToString();
    }
Ejemplo n.º 9
0
    static ArmorProperties ParseArmor(string str)
    {
        ArmorProperties prop = new ArmorProperties();

        string[] cell = null;
        cell = str.Split(',');
        try
        {
            prop.armorType = (ArmorType)Int32.Parse(cell[(int)ArmorTableIndex.Type]);
        }
        catch
        {
            return(null);
        }
        //hp
        try{
            prop.hpBonus = Int32.Parse(cell[(int)ArmorTableIndex.Hp]);
        }
        catch
        {
            prop.hpBonus = 0;
        }
        //min atk
        try
        {
            prop.minAtkBonus = Int32.Parse(cell[(int)ArmorTableIndex.MinAtk]);
        }
        catch
        {
            prop.minAtkBonus = 0;
        }
        //max atk
        try
        {
            prop.maxAtkBonus = Int32.Parse(cell[(int)ArmorTableIndex.MaxAtk]);
        }
        catch
        {
            prop.maxAtkBonus = 0;
        }
        //def
        try
        {
            prop.defBonus = Int32.Parse(cell[(int)ArmorTableIndex.Def]);
        }
        catch
        {
            prop.defBonus = 0;
        }
        //spd
        try
        {
            prop.spdScaleBonus = float.Parse(cell[(int)ArmorTableIndex.Spd]) / 100.0f;
        }
        catch
        {
            prop.spdScaleBonus = 0;
        }
        //jmp
        try
        {
            prop.jmpScaleBonus = float.Parse(cell[(int)ArmorTableIndex.Jmp]) / 100.0f;
        }
        catch
        {
            prop.jmpScaleBonus = 0;
        }
        //atk spd
        try
        {
            prop.atkSpdBonus = float.Parse(cell[(int)ArmorTableIndex.AtkSpd]) / 100.0f;
        }
        catch
        {
            prop.atkSpdBonus = 0;
        }
        //critical chance
        try
        {
            prop.crtlChanceBonus = float.Parse(cell[(int)ArmorTableIndex.CrtChance]) / 100.0f;
        }
        catch
        {
            prop.crtlChanceBonus = 0;
        }
        //critical rate
        try
        {
            prop.crtlRateBonus = float.Parse(cell[(int)ArmorTableIndex.CrtRate]) / 100.0f;
        }
        catch
        {
            prop.crtlRateBonus = 0;
        }
        //rcr
        try
        {
            prop.rcrBonus = float.Parse(cell[(int)ArmorTableIndex.RCR]) / 100.0f;
        }
        catch
        {
            prop.rcrBonus = 0;
        }

        return(prop);
    }