예제 #1
0
        public async Task <IActionResult> Edit(int id, [Bind("ID,Description,Colour,Quantity")] Headgear headgear)
        {
            if (id != headgear.ID)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(headgear);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!HeadgearExists(headgear.ID))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            return(View(headgear));
        }
예제 #2
0
        public async Task <IActionResult> Create([Bind("ID,Description,Colour,Quantity")] Headgear headgear)
        {
            if (ModelState.IsValid)
            {
                _context.Add(headgear);
                await _context.SaveChangesAsync();

                return(RedirectToAction(nameof(Index)));
            }
            return(View(headgear));
        }
예제 #3
0
    public void EnemyDeath(EnemyData data, bool suicide = false)
    {
        QuickPopUp.QuickPopUpAllowed = true;
        BattleUiLerper.StartReverseLerp();


        StartCoroutine(_EnemyDeath());

        IEnumerator _EnemyDeath()
        {
            Followers.Remove(data);
            AttackArea.SetActive(false);

            if (Player.Health.Value <= 0)
            {
                OnPlayerDeath();
                yield break;
            }

            if (data.OneAndDoneAttacker && suicide)
            {
                PlayerAnimations.Instance.ResetAttack();

                yield return(new WaitForSeconds(1)); // Wait for suicide animation to complete

                PlayerAnimations.Instance.Spin(() => {
                    _Done(new List <Item>());
                });
                yield break;
            }

            SoundManager.Instance.PlaySound(SoundManager.Instance.Celebrate, 0.8f);

            bool celebrateDone = false;
            bool bubblesDone   = false;

            List <Item> items = data.Drops.GetItems(true);

            foreach (Item item in items)
            {
                if (item is Weapon)
                {
                    Weapon weapon = item as Weapon;
                    weapon.Level = data.Level;
                }
                if (item is Armor)
                {
                    Armor armor = item as Armor;
                    armor.Level = data.Level;
                }
                if (item is Headgear)
                {
                    Headgear hg = item as Headgear;
                    hg.Level = data.Level;
                }
            }

            // Wait for player celebration to be done and all items to be picked up
            PlayerAnimations.Instance.ResetAttack();
            PlayerAnimations.Instance.Celebrate(() => {
                celebrateDone = true;
                if (bubblesDone && celebrateDone)
                {
                    _Done(items);
                }
            });

            ItemDropBubbleManager.Instance.AddItems(items, null, () => {
                bubblesDone = true;
                if (bubblesDone && celebrateDone)
                {
                    _Done(items);
                }
            });
        }

        void _Done(List <Item> items)
        {
            PlayerAnimations.Instance.Spin(() => {
                // Enable world to be interactable again
                // Turn off enemy fight.
                EnemyDisplay.Instance.gameObject.SetActive(false);
                // Call combat end event (nah)

                DeadEnemyController.Instance.AddDeadEnemy(
                    EnemyDisplay.Instance.RectTransform.anchoredPosition.x,
                    EnemyDisplay.Instance.RectTransform.anchoredPosition.y,
                    data);

                GameEventHandler.Singleton.OnEnemyKilled(data);
                Inventory.AddItems(items);
                World.Enable();

                PlayerClickController.Instance.SetEnabled(true);

                // Note: If the boss quest is to fight a chicken and you kill any chicken (not just the boss) then the quest gets completed
                if (CurrentQuest.Value is BossQuest quest && quest.Enemy.ID == data.ID)
                {
                    quest.Finish();
                }

                Fighting = false;
            });
        }
    }
예제 #4
0
    private void DropRewardAndAdvanceConversation(ActiveQuestBase q)
    {
        List <Item> todrops = new List <Item>();

        foreach (var reward in q.QuestRewards)
        {
            Item it = reward.it;
            if (it.ShouldCreateNewInstanceWhenPlayerObtained())
            {
                if (it is Weapon)
                {
                    Weapon w = ScriptableObject.Instantiate(it) as Weapon;
                    w.OnAfterObtained();
                    w.Level = reward.Level;
                    if (reward.RandomRoll != -1)
                    {
                        w.Random = reward.RandomRoll;
                        w.SetValuesBasedOnRandom();
                    }
                    it = w;
                }
                else if (it is Armor)
                {
                    Armor a = ScriptableObject.Instantiate(it) as Armor;
                    a.OnAfterObtained();
                    a.Level = reward.Level;
                    if (reward.RandomRoll != -1)
                    {
                        a.Random = reward.RandomRoll;
                        a.SetValuesBasedOnRandom();
                    }
                    it = a;
                }
                else if (it is Headgear)
                {
                    Headgear a = ScriptableObject.Instantiate(it) as Headgear;
                    a.OnAfterObtained();
                    a.Level = reward.Level;
                    if (reward.RandomRoll != -1)
                    {
                        a.RandomRoll = reward.RandomRoll;
                        a.SetValuesBasedOnRandom();
                    }
                    it = a;
                }
            }
            todrops.Add(it);
        }

        if (todrops.Count == 0)
        {
            AdvanceQuestAfterConversation(q);
        }
        else
        {
            DraggableWorld.Disable2();
            ScrollArrow.SetActive(false);


            ItemDropManager.AddItems(todrops, null, () => {
                ScrollArrow.SetActive(true);
                DraggableWorld.Enable2();
                AdvanceQuestAfterConversation(q);

                Inventory.AddItems(todrops);
            });
        }
    }
예제 #5
0
 private void Awake()
 {
     nullHeadgear = Resources.Load <Headgear>(NullEquipmentsRef.noHeadgear);
 }
예제 #6
0
 public void EquipHeadgear(Headgear hg)
 {
     MaxHealth.Value += Headgear.Value.ExtraHealth;
 }
예제 #7
0
    public void SetData(Item item, int amount,
                        Action <InventoryItemDisplay> onclick = null,
                        Sprite spriteOverride = null,
                        bool showText         = true)
    {
        ItemSprite.color = Color.white;

        LevelText.gameObject.SetActive(false);
        DamageText.gameObject.SetActive(false);

        Item = item;
        if (item == null)
        {
            ItemSprite.color  = Color.clear;
            ItemSprite.sprite = null;
            AmountText.gameObject.SetActive(false);
        }
        else
        {
            if (item.Rarity == Rarity.Common)
            {
                Background.color = ConfigObject.GetColorFromRarity(Rarity.Common);
            }
            else if (item.Rarity == Rarity.Uncommon)
            {
                Background.color = ConfigObject.GetColorFromRarity(Rarity.Uncommon);
            }
            else if (item.Rarity == Rarity.Rare)
            {
                Background.color = ConfigObject.GetColorFromRarity(Rarity.Rare);
            }
            else if (item.Rarity == Rarity.VeryRare)
            {
                Background.color = ConfigObject.GetColorFromRarity(Rarity.VeryRare);
            }
            else if (item.Rarity == Rarity.Legendary)
            {
                Background.color = ConfigObject.GetColorFromRarity(Rarity.Legendary);
            }
            else if (item.Rarity == Rarity.Mythical)
            {
                Background.color = ConfigObject.GetColorFromRarity(Rarity.Mythical);
            }

            ItemSprite.sprite = spriteOverride ?? item.Image;
            AmountText.text   = "x" + amount.ToString();
            AmountText.gameObject.SetActive(amount > 1);
            if (item is Weapon)
            {
                Weapon w = (Weapon)item;
                DamageText.text = $"<size=50%>DAM</size>\n<color=#c42c36>{w.RawDamage}</color>";
                DamageText.gameObject.SetActive(true);
            }
            if (item is Armor)
            {
                Armor a = (Armor)item;
                DamageText.text = $"<size=50%>ARM</size>\n<color=#13b2f2>{a.ARMValue}</color>";
                DamageText.gameObject.SetActive(true);
            }
            if (item is Headgear)
            {
                Headgear hg = (Headgear)item;
                DamageText.text = $"<size=50%>HP</size>\n<color=#7bcf5c>{hg.ExtraHealth}</color>";
                DamageText.gameObject.SetActive(true);
            }
        }

        if (!showText)
        {
            AmountText.gameObject.SetActive(false);
            DamageText.gameObject.SetActive(false);
            LevelText.gameObject.SetActive(false);
        }

        OnClick = onclick;
    }