public override void Init(Creature creature, ItemWeaponData weaponData, RefMob.WeaponDesc weaponDesc)
    {
        base.Init(creature, weaponData, weaponDesc);

        m_destroy = false;
        m_elapsed = Time.time;
        creature.EnableNavMeshObstacleAvoidance(false);
    }
Beispiel #2
0
    public void SpawnItemBox(RefItemSpawn[] refDropItems, Vector3 pos)
    {
        if (refDropItems == null)
        {
            refDropItems = GetCurrentWave().itemSpawn.defaultItem;
        }

        float goldAlpha = m_wave*0.1f;
        int spawnedItemCount = 0;
        float ratioAlpha = 0;
        foreach(RefItemSpawn desc in refDropItems)
        {
            for(int i = 0; i < desc.count; ++i)
            {
                float ratio = Random.Range(0f, 1f);
                ratioAlpha = 0f;
                if (desc.refItem.type == ItemData.Type.WeaponParts)
                {
                    ratioAlpha = Mathf.Min(Mathf.Max(0, m_wave-Const.MaxWave)/10000f, 0.1f);
                }
                else if (desc.refItem.type == ItemData.Type.WeaponDNA)
                {
                    if (GetStage() < GetCurrentWave().mobSpawns.Length)
                        ratio = 0f;
                }

                if (ratio > 0 && ratio <= (desc.ratio+ratioAlpha))
                {
                    float scale = 1f;
                    ItemData item = null;
                    switch(desc.refItem.type)
                    {
                    case ItemData.Type.Gold:
                        item = new ItemGoldData(1);
                        if (m_champ != null)
                        {
                            item.Count *= m_champ.GoldLevel;
                            int extraCount = (int)(item.Count*m_champ.m_creatureProperty.GainExtraGold);
                            item.Count += extraCount;
                        }

                        break;
                    case ItemData.Type.HealPosion:
                        item = new ItemHealPosionData(Random.Range(desc.minValue, desc.maxValue));
                        break;
                    case ItemData.Type.Weapon:
                        item = new ItemWeaponData(desc.refItem.id);
                        break;
                    case ItemData.Type.WeaponParts:
                        if (m_champ != null && m_champ.WeaponHolder.MainWeapon != null)
                        {
                            ItemObject hasItem = Warehouse.Instance.FindItem(desc.refItemId);
                            if (hasItem == null)
                                item = new ItemWeaponPartsData(desc.refItemId);
                            else if (hasItem != null && hasItem.Item.Level < hasItem.Item.RefItem.maxLevel)
                                item = new ItemWeaponPartsData(desc.refItemId);
                        }
                        break;
                    case ItemData.Type.WeaponDNA:
                        item = new ItemWeaponDNAData(desc.refItem.id);
                        break;
                    case ItemData.Type.Accessory:
                        item = new ItemAccessoryData(desc.refItem.id);
                        break;
                    case ItemData.Type.GoldMedal:
                        {
                            item = new ItemGoldMedalData(Random.Range(desc.minValue, desc.maxValue));
                        }
                        break;
                    case ItemData.Type.Skill:
                        item = new ItemSkillData(Random.Range(desc.minValue, desc.maxValue+1));
                        break;
                    case ItemData.Type.XPPotion:
                        item = new ItemXPPotionData(Random.Range(desc.minValue, desc.maxValue));
                        item.Count += (int)(item.Count*goldAlpha);
                        if (m_champ != null)
                            item.Count += (int)(item.Count*m_champ.m_creatureProperty.GainExtraExp);
                        break;
                    case ItemData.Type.MobEgg:
                        break;
                    }

                    if (item != null)
                    {

                        ++spawnedItemCount;

                        GameObject itemBoxObj = (GameObject)Instantiate(m_prefItemBox, pos, Quaternion.Euler(0f, 0f, 0f));
                        ItemBox itemBox = itemBoxObj.GetComponent<ItemBox>();
                        itemBox.Item = item;
                        itemBox.PickupCallback = (Creature obj)=>{

                        };

                        GameObject itemSkinObj = (GameObject)Instantiate(m_prefItemBoxSkins[(int)desc.refItem.type], pos, Quaternion.Euler(0f, 0f, 0f));
                        if (desc.refItem.type == ItemData.Type.Skill)
                        {
                            itemSkinObj.transform.Find(item.RefItem.codeName).gameObject.SetActive(true);
                            itemBox.LifeTime = 60f;
                        }
                        else if (desc.refItem.type == ItemData.Type.WeaponParts)
                        {
                            itemSkinObj.transform.Find(item.RefItem.codeName).gameObject.SetActive(true);
                        }

                        itemSkinObj.transform.parent = itemBoxObj.transform;
                        itemSkinObj.transform.localPosition = Vector3.zero;
                        itemSkinObj.transform.localRotation = m_prefItemBoxSkins[(int)desc.refItem.type].transform.rotation;
                        itemBoxObj.transform.localScale = Vector3.one * scale;
                        itemBoxObj.SetActive(false);

                        StartCoroutine(EffectSpawnItemBox(itemBox, 0.15f*spawnedItemCount));
                    }

                }
            }

        }
    }
Beispiel #3
0
    public void SetSubWeapon(Weapon weapon, ItemWeaponData weaponData, RefMob.WeaponDesc weaponDesc)
    {
        Weapon subWeapon = instanceWeapon(weaponData, weaponDesc);

        weapon.SetSubWeapon(subWeapon);
    }
Beispiel #4
0
    public Weapon instanceWeapon(ItemWeaponData weaponData, RefMob.WeaponDesc weaponDesc)
    {
        GameObject obj = Instantiate (weaponData.PrefWeapon, Vector3.zero, Quaternion.Euler(0, 0, 0)) as GameObject;
        Weapon weapon = obj.GetComponent<Weapon>();

        obj.transform.parent = m_weaponHolder.transform;
        obj.transform.localPosition = weaponData.PrefWeapon.transform.localPosition;
        obj.transform.localRotation = weaponData.PrefWeapon.transform.localRotation;
        obj.transform.localScale = weaponData.PrefWeapon.transform.localScale;

        weapon.Init(this, weaponData, weaponDesc);

        return weapon;
    }
Beispiel #5
0
    public virtual Weapon EquipWeapon(ItemWeaponData weaponData, RefMob.WeaponDesc weaponDesc)
    {
        Weapon weapon = instanceWeapon(weaponData, weaponDesc);

        weapon.m_callbackCreateBullet = delegate() {
            if (m_animator != null)
            {
                m_animator.SetTrigger("Attack");
            }
        };

        m_weaponHolder.EquipWeapon(weapon);

        if (weapon.WeaponStat.skillId > 0)
        {
            EquipActiveSkillWeapon(new ItemWeaponData(weapon.WeaponStat.skillId), new RefMob.WeaponDesc());
        }

        return weapon;
    }
Beispiel #6
0
    public void EquipPassiveSkillWeapon(ItemWeaponData weaponData, RefMob.WeaponDesc weaponDesc)
    {
        Weapon weapon = instanceWeapon(weaponData, weaponDesc);

        m_weaponHolder.EquipPassiveSkillWeapon(weapon);
    }
Beispiel #7
0
    public virtual Weapon EquipActiveSkillWeapon(ItemWeaponData weaponData, RefMob.WeaponDesc weaponDesc)
    {
        Weapon weapon = instanceWeapon(weaponData, weaponDesc);

        m_weaponHolder.EquipActiveSkillWeapon(weapon);

        return weapon;
    }
Beispiel #8
0
    public virtual void Init(Creature creature, ItemWeaponData weaponData, RefMob.WeaponDesc weaponDesc)
    {
        m_creature = creature;
        m_gunPoint = creature.WeaponHolder.gameObject;
        m_refWeaponItem = weaponData.RefItem;

        m_lastCreated = Time.time;
        m_firing = false;
        m_level = 0;
        m_maxLevel = weaponDesc.maxLevel;

        m_weaponStat = new WeaponStat();
        if (weaponDesc.weaponStat == null)
        {
            m_weaponStat.OverrideStat(m_refWeaponItem.weaponStat);
        }
        else
        {
            m_weaponStat.OverrideStat(weaponDesc.weaponStat);
            m_weaponStat.OverrideStat(m_refWeaponItem.weaponStat);

        }

        for(int i = 0; i <= m_weaponStat.firingCount; ++i)
            MoreFire();

        m_evolution = weaponData.Evolution;

        if (m_evolution > 0)
        {
            for(int i = 1; i <= m_maxLevel; ++i)
            {
                if (canCreateMoreFire(i))
                    MoreFire();
            }
        }

        for(int i = 0; i < weaponData.Level; ++i)
            LevelUp();
    }
Beispiel #9
0
 /*
 void OnGUI()
 {
     UpdateChampMovement();
 }
 */
 public override Weapon EquipWeapon(ItemWeaponData weaponData, RefMob.WeaponDesc weaponDesc)
 {
     Weapon weapon = base.EquipWeapon(weaponData, weaponDesc);
     if (weaponData.RefItem.partName != null)
         transform.Find("Body/"+weaponData.RefItem.partName).gameObject.SetActive(true);
     return weapon;
 }
Beispiel #10
0
    public override Weapon EquipActiveSkillWeapon(ItemWeaponData weaponData, RefMob.WeaponDesc weaponDesc)
    {
        Weapon weapon = base.EquipActiveSkillWeapon(weaponData, weaponDesc);

        if (weapon.RefWeaponItem.id == Const.ChampTapRefItemId)
        {
            m_tapWeapon = weapon;
        }

        return weapon;
    }
Beispiel #11
0
    public void ApplyOptions(Creature obj, bool levelup)
    {
        if (m_refItem.levelup == null || m_refItem.levelup.optionPerLevel == null)
            return;

        foreach(RefPriceCondition.RefOptionPerLevel op in m_refItem.levelup.optionPerLevel)
        {
            float optionValue = 0f;
            if (op.levelPer == false)
            {
                if (levelup == false)
                {
                    if (Level >= op.level)
                        optionValue = op.option.values[0];
                }
                else
                {
                    if (Level == op.level)
                        optionValue = op.option.values[0];
                }
            }
            else
            {
                if (levelup == false)
                    optionValue = op.option.values[0]*(Level/op.level);
                else
                {
                    if (Level%op.level == 0)
                        optionValue = op.option.values[0];
                }
            }

            switch(op.option.type)
            {
            case Option.DmgMultiplier:
                obj.m_creatureProperty.DamageMultiPlier += optionValue;

                break;
            case Option.MoveSpeed:
                obj.m_creatureProperty.AlphaMoveSpeed += optionValue;
                break;
            case Option.DmgReduction:
                obj.m_creatureProperty.DamageReduction += optionValue;
                break;
            case Option.Weapon:
                int weaponRefItemId = (int)optionValue;
                if (weaponRefItemId == 0)
                    break;

                if (weaponRefItemId == Const.EmbersRefItemId)
                {
                    obj.SetSubWeapon(obj.WeaponHolder.MainWeapon, new ItemWeaponData(Const.EmbersRefItemId), new RefMob.WeaponDesc());
                }
                else
                {
                    ItemWeaponData weaponData = new ItemWeaponData((int)optionValue);

                    weaponData.Level = (int)op.option.values[1];
                    obj.EquipPassiveSkillWeapon(weaponData, new RefMob.WeaponDesc());
                }
                break;
            case Option.Strength:
                obj.m_creatureProperty.AlphaPhysicalAttackDamage += (int)optionValue;
                break;
            case Option.MaxHp:
                obj.m_creatureProperty.AlphaMaxHP += (int)optionValue;
                break;
            case Option.MaxSp:
                obj.m_creatureProperty.AlphaMaxSP += (int)optionValue;
                break;
            case Option.RegenSp:
                obj.m_creatureProperty.AlphaSPRegen += optionValue;
                break;
            case Option.TapDamage:
                obj.m_creatureProperty.TapDamage += (int)optionValue;
                break;
            case Option.Critical:
                obj.m_creatureProperty.AlphaCriticalChance += optionValue;
                break;
            case Option.CriticalDmg:
                obj.m_creatureProperty.AlphaCriticalDamage += optionValue;
                break;
            case Option.LifeSteal:
                obj.m_creatureProperty.AlphaLifeSteal += optionValue;
                break;
            case Option.Dodge:
                obj.m_creatureProperty.Dodge += optionValue;
                break;
            case Option.GainExtraGold:
                obj.m_creatureProperty.GainExtraGold += optionValue;
                Creature owner = obj.GetOwner();
                if (owner != null)
                {
                    owner.m_creatureProperty.GainExtraGold += optionValue;
                }
                break;
            }

        }
    }
    public override void Init(Creature creature, ItemWeaponData weaponData, RefMob.WeaponDesc weaponDesc)
    {
        base.Init(creature, weaponData, weaponDesc);

        m_aliveBullets = 0;
    }