예제 #1
0
 private void Start()
 {
     string[] array = new string[5]
     {
         "K_SHOOTER1",
         "K_SHOOTER2",
         "K_SHOOTER3",
         "K_SHOOTER4",
         "K_SHOOTER5"
     };
     battleChat = GetComponent <BattleChat>();
     VerifyAudioSource();
     VerifyLocalController();
     tools = new ShooterTool[MyInfoManager.Instance.ShooterTools.Length];
     for (int i = 0; i < MyInfoManager.Instance.ShooterTools.Length; i++)
     {
         tools[i] = null;
         ConsumableDesc consumableDesc = null;
         Item           itemBySequence = MyInfoManager.Instance.GetItemBySequence(MyInfoManager.Instance.ShooterTools[i]);
         if (itemBySequence != null && itemBySequence.IsAmount && itemBySequence.Template != null && itemBySequence.Template.type == TItem.TYPE.SPECIAL)
         {
             TSpecial tSpecial = (TSpecial)itemBySequence.Template;
             string   func     = TItem.FunctionMaskToString(tSpecial.functionMask);
             consumableDesc = ConsumableManager.Instance.Get(func);
             if (consumableDesc != null && !consumableDesc.isShooterTool)
             {
                 consumableDesc = null;
             }
         }
         if (itemBySequence != null && consumableDesc != null)
         {
             tools[i] = new ShooterTool(this, consumableDesc, itemBySequence, base.audio, array[i], custom_inputs.Instance.GetKeyCodeName(array[i]), battleChat, localController);
         }
     }
 }
예제 #2
0
 public ShooterTool(ShooterTools _tools, ConsumableDesc _desc, Item _item, AudioSource _audio, string _input, string _hotkey, BattleChat _battleChat, LocalController _localController)
 {
     tools        = _tools;
     desc         = _desc;
     item         = _item;
     audio        = _audio;
     input        = _input;
     hotkey       = _hotkey;
     active       = true;
     battleChat   = _battleChat;
     controller   = _localController;
     coolTimeInst = desc.cooltime;
     switch (desc.name)
     {
     case "heal":
     case "heal50":
     case "heal30":
     {
         float num = MyInfoManager.Instance.SumFunctionFactor("hp_cooltime");
         coolTimeInst = desc.cooltime - (float)Mathf.FloorToInt(num * desc.cooltime);
         break;
     }
     }
 }
예제 #3
0
    public void DoBuff()
    {
        numBuf       = 0;
        pointBooster = 0f;
        xpBooster    = 0f;
        luck         = 0f;
        if (MyInfoManager.Instance.HaveFunction("premium_account") >= 0)
        {
            xpBooster    += 10f;
            pointBooster += 10f;
        }
        List <long> list = new List <long>();

        for (int i = 0; i < MyInfoManager.Instance.ShooterTools.Length; i++)
        {
            ConsumableDesc consumableDesc = null;
            Item           itemBySequence = MyInfoManager.Instance.GetItemBySequence(MyInfoManager.Instance.ShooterTools[i]);
            if (itemBySequence != null && itemBySequence.IsAmount && itemBySequence.Template != null && itemBySequence.Template.type == TItem.TYPE.SPECIAL && itemBySequence.Amount > 0 && !list.Contains(itemBySequence.Seq))
            {
                itemBySequence.AmountBuf = itemBySequence.Amount;
                list.Add(itemBySequence.Seq);
            }
            if (itemBySequence != null && itemBySequence.IsAmount && itemBySequence.Template != null && itemBySequence.Template.type == TItem.TYPE.SPECIAL && itemBySequence.AmountBuf > 0)
            {
                TSpecial tSpecial = (TSpecial)itemBySequence.Template;
                if (tSpecial.IsConsumableBuff)
                {
                    string func = TItem.FunctionMaskToString(tSpecial.functionMask);
                    consumableDesc = ConsumableManager.Instance.Get(func);
                    if (consumableDesc != null && !consumableDesc.isShooterTool)
                    {
                        consumableDesc = null;
                    }
                    if (consumableDesc != null)
                    {
                        TBuff tBuff = BuffManager.Instance.Get(tSpecial.param);
                        if (tBuff != null)
                        {
                            if (tBuff.IsPoint)
                            {
                                pointBooster += (float)tBuff.PointRatio;
                            }
                            if (tBuff.IsXp)
                            {
                                xpBooster += (float)tBuff.XpRatio;
                            }
                            if (tBuff.IsLuck)
                            {
                                luck += (float)tBuff.Luck;
                            }
                        }
                    }
                    itemBySequence.AmountBuf--;
                }
            }
        }
        list.Clear();
        list = null;
        string[] usings = MyInfoManager.Instance.GetUsings();
        for (int j = 0; j < usings.Length; j++)
        {
            TItem tItem = TItemManager.Instance.Get <TItem>(usings[j]);
            if (tItem != null && tItem.tBuff != null)
            {
                pointBooster += (float)tItem.tBuff.PointRatio;
                xpBooster    += (float)tItem.tBuff.XpRatio;
                luck         += (float)tItem.tBuff.Luck;
            }
        }
        if (pointBooster > 0f)
        {
            numBuf++;
        }
        if (xpBooster > 0f)
        {
            numBuf++;
        }
        if (luck > 0f)
        {
            numBuf++;
        }
        Item[] usingItems = MyInfoManager.Instance.GetUsingItems();
        for (int k = 0; k < usingItems.Length; k++)
        {
            int num  = 0;
            int num2 = 0;
            num  = 10;
            num2 = usingItems[k].upgradeProps[num].grade;
            if (num2 > 0 && usingItems[k].Template.upgradeCategory != TItem.UPGRADE_CATEGORY.NONE)
            {
                pointBooster += PimpManager.Instance.getValue((int)usingItems[k].Template.upgradeCategory, num, num2 - 1);
            }
            num  = 9;
            num2 = usingItems[k].upgradeProps[num].grade;
            if (num2 > 0 && usingItems[k].Template.upgradeCategory != TItem.UPGRADE_CATEGORY.NONE)
            {
                xpBooster += PimpManager.Instance.getValue((int)usingItems[k].Template.upgradeCategory, num, num2 - 1);
            }
            num  = 12;
            num2 = usingItems[k].upgradeProps[num].grade;
            if (num2 > 0 && usingItems[k].Template.upgradeCategory != TItem.UPGRADE_CATEGORY.NONE)
            {
                luck += PimpManager.Instance.getValue((int)usingItems[k].Template.upgradeCategory, num, num2 - 1);
            }
        }
        armor           = MyInfoManager.Instance.SumArmor();
        mainAmmoMax     = MyInfoManager.Instance.SumFunctionFactor("main_ammo_inc");
        auxAmmoMax      = MyInfoManager.Instance.SumFunctionFactor("aux_ammo_inc");
        grenadeMax1     = MyInfoManager.Instance.SumFunctionFactor("special_ammo_inc");
        grenadeMax2     = MyInfoManager.Instance.SumFunctionFactor("special_ammo_add");
        hpCooltime      = MyInfoManager.Instance.SumFunctionFactor("hp_cooltime");
        dashTimeInc     = MyInfoManager.Instance.SumFunctionFactor("dash_time_inc");
        respawnTimeDec  = MyInfoManager.Instance.SumFunctionFactor("respwan_time_dec");
        fallenDamageDec = MyInfoManager.Instance.SumFunctionFactor("fallen_damage_reduce");
        if (armor > 0)
        {
            numBuf++;
        }
        if (mainAmmoMax > 0f)
        {
            numBuf++;
        }
        if (auxAmmoMax > 0f)
        {
            numBuf++;
        }
        if (grenadeMax1 > 0f)
        {
            numBuf++;
        }
        if (grenadeMax2 > 0f)
        {
            numBuf++;
        }
        if (hpCooltime > 0f)
        {
            numBuf++;
        }
        if (dashTimeInc > 0f)
        {
            numBuf++;
        }
        if (respawnTimeDec > 0f)
        {
            numBuf++;
        }
        if (fallenDamageDec > 0f)
        {
            numBuf++;
        }
        bufHeight = (float)(numBuf * 15);
    }
예제 #4
0
    private bool DoBuff(float changeHeight)
    {
        pointBooster = 0f;
        xpBooster    = 0f;
        luck         = 0f;
        if (MyInfoManager.Instance.HaveFunction("premium_account") >= 0)
        {
            xpBooster    += 10f;
            pointBooster += 10f;
        }
        List <long> list = new List <long>();

        for (int i = 0; i < MyInfoManager.Instance.ShooterTools.Length; i++)
        {
            ConsumableDesc consumableDesc = null;
            Item           itemBySequence = MyInfoManager.Instance.GetItemBySequence(MyInfoManager.Instance.ShooterTools[i]);
            if (itemBySequence != null && itemBySequence.IsAmount && itemBySequence.Template != null && itemBySequence.Template.type == TItem.TYPE.SPECIAL && itemBySequence.Amount > 0 && !list.Contains(itemBySequence.Seq))
            {
                itemBySequence.AmountBuf = itemBySequence.Amount;
                list.Add(itemBySequence.Seq);
            }
            if (itemBySequence != null && itemBySequence.IsAmount && itemBySequence.Template != null && itemBySequence.Template.type == TItem.TYPE.SPECIAL && itemBySequence.AmountBuf > 0)
            {
                TSpecial tSpecial = (TSpecial)itemBySequence.Template;
                if (tSpecial.IsConsumableBuff)
                {
                    string func = TItem.FunctionMaskToString(tSpecial.functionMask);
                    consumableDesc = ConsumableManager.Instance.Get(func);
                    if (consumableDesc != null && !consumableDesc.isShooterTool)
                    {
                        consumableDesc = null;
                    }
                    if (consumableDesc != null)
                    {
                        TBuff tBuff = BuffManager.Instance.Get(tSpecial.param);
                        if (tBuff != null)
                        {
                            if (tBuff.IsPoint)
                            {
                                pointBooster += (float)tBuff.PointRatio;
                            }
                            if (tBuff.IsXp)
                            {
                                xpBooster += (float)tBuff.XpRatio;
                            }
                            if (tBuff.IsLuck)
                            {
                                luck += (float)tBuff.Luck;
                            }
                        }
                    }
                    itemBySequence.AmountBuf--;
                }
            }
        }
        list.Clear();
        list = null;
        string[] usings = MyInfoManager.Instance.GetUsings();
        for (int j = 0; j < usings.Length; j++)
        {
            TItem tItem = TItemManager.Instance.Get <TItem>(usings[j]);
            if (tItem != null && tItem.tBuff != null)
            {
                pointBooster += (float)tItem.tBuff.PointRatio;
                xpBooster    += (float)tItem.tBuff.XpRatio;
                luck         += (float)tItem.tBuff.Luck;
            }
        }
        Item[] usingItems = MyInfoManager.Instance.GetUsingItems();
        for (int k = 0; k < usingItems.Length; k++)
        {
            int num  = 0;
            int num2 = 0;
            num  = 10;
            num2 = usingItems[k].upgradeProps[num].grade;
            if (num2 > 0 && usingItems[k].Template.upgradeCategory != TItem.UPGRADE_CATEGORY.NONE)
            {
                pointBooster += PimpManager.Instance.getValue((int)usingItems[k].Template.upgradeCategory, num, num2 - 1);
            }
            num  = 9;
            num2 = usingItems[k].upgradeProps[num].grade;
            if (num2 > 0 && usingItems[k].Template.upgradeCategory != TItem.UPGRADE_CATEGORY.NONE)
            {
                xpBooster += PimpManager.Instance.getValue((int)usingItems[k].Template.upgradeCategory, num, num2 - 1);
            }
            num  = 12;
            num2 = usingItems[k].upgradeProps[num].grade;
            if (num2 > 0 && usingItems[k].Template.upgradeCategory != TItem.UPGRADE_CATEGORY.NONE)
            {
                luck += PimpManager.Instance.getValue((int)usingItems[k].Template.upgradeCategory, num, num2 - 1);
            }
        }
        armor           = MyInfoManager.Instance.SumArmor();
        mainAmmoMax     = MyInfoManager.Instance.SumFunctionFactor("main_ammo_inc");
        auxAmmoMax      = MyInfoManager.Instance.SumFunctionFactor("aux_ammo_inc");
        grenadeMax1     = MyInfoManager.Instance.SumFunctionFactor("special_ammo_inc");
        grenadeMax2     = MyInfoManager.Instance.SumFunctionFactor("special_ammo_add");
        hpCooltime      = MyInfoManager.Instance.SumFunctionFactor("hp_cooltime");
        dashTimeInc     = MyInfoManager.Instance.SumFunctionFactor("dash_time_inc");
        respawnTimeDec  = MyInfoManager.Instance.SumFunctionFactor("respwan_time_dec");
        fallenDamageDec = MyInfoManager.Instance.SumFunctionFactor("fallen_damage_reduce");
        if (pointBooster > 0f || xpBooster > 0f || luck > 0f || armor > 0 || mainAmmoMax > 0f || auxAmmoMax > 0f || grenadeMax1 > 0f || hpCooltime > 0f || grenadeMax2 > 0f || dashTimeInc > 0f || respawnTimeDec > 0f || fallenDamageDec > 0f)
        {
            Texture2D icon = BuffManager.Instance.GetBuffDesc(BuffDesc.WHY.ITEM).icon;
            GUI.Button(new Rect(crdLTBuffIcon.x, crdLTBuffIcon.y - changeHeight, (float)icon.width, (float)icon.height), new GUIContent(icon, "item"), "InvisibleButton");
            return(true);
        }
        return(false);
    }
예제 #5
0
    private void DoShooterToolSlots()
    {
        string[] array = new string[5]
        {
            "K_SHOOTER1",
            "K_SHOOTER2",
            "K_SHOOTER3",
            "K_SHOOTER4",
            "K_SHOOTER5"
        };
        GUI.Box(crdSlotOutline, string.Empty, "BoxInnerLine");
        Rect position = new Rect(crdSlotBtn);

        GUI.BeginGroup(crdSlotOutline);
        for (int i = 0; i < MyInfoManager.Instance.ShooterTools.Length; i++)
        {
            ConsumableDesc consumableDesc = null;
            Item           itemBySequence = MyInfoManager.Instance.GetItemBySequence(MyInfoManager.Instance.ShooterTools[i]);
            if (itemBySequence != null && itemBySequence.IsAmount && itemBySequence.Template != null && itemBySequence.Template.type == TItem.TYPE.SPECIAL)
            {
                TSpecial tSpecial = (TSpecial)itemBySequence.Template;
                string   func     = TItem.FunctionMaskToString(tSpecial.functionMask);
                consumableDesc = ConsumableManager.Instance.Get(func);
                if (consumableDesc != null && !consumableDesc.isShooterTool)
                {
                    consumableDesc = null;
                }
            }
            Texture2D image = null;
            if (itemBySequence != null && consumableDesc != null)
            {
                image = ((!itemBySequence.EnoughToConsume) ? consumableDesc.disable : consumableDesc.enable);
                if (tooltip.ItemSeq == ItemSlot2Tooltip(itemBySequence, i))
                {
                    if (i < 2)
                    {
                        ltTooltip = new Vector2(rc.x + crdSlotOutline.x + position.x + position.width + 5f, rc.y + crdSlotOutline.y + position.y + 5f);
                    }
                    else
                    {
                        ltTooltip = new Vector2(rc.x + crdSlotOutline.x + position.x - tooltip.size.x - 5f, rc.y + crdSlotOutline.y + position.y + 5f);
                    }
                }
            }
            if (GUI.Button(position, new GUIContent(image, ItemSlot2Tooltip(itemBySequence, i)), "BtnItemFixate"))
            {
                curActionSlot = i;
                if (dragItem != null)
                {
                    if (dragItem.IsShooterSlotAble)
                    {
                        CSNetManager.Instance.Sock.SendCS_SET_SHOOTER_TOOL_REQ((sbyte)i, dragItem.Seq);
                    }
                    ResetDragItem();
                }
            }
            LabelUtil.TextOut(new Vector2(position.x + 5f, position.y + 5f), custom_inputs.Instance.GetKeyCodeName(array[i]), "MiniLabel", GlobalVars.Instance.txtMainColor, new Color(0f, 0f, 0f, 0f), TextAnchor.UpperLeft);
            if (curActionSlot == i)
            {
                GUI.Box(position, string.Empty, "BtnItemFixateF");
            }
            position.x += crdSlotBtn.width + 8f;
        }
        GUI.EndGroup();
    }