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); }
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)); } } } } }
public void SetSubWeapon(Weapon weapon, ItemWeaponData weaponData, RefMob.WeaponDesc weaponDesc) { Weapon subWeapon = instanceWeapon(weaponData, weaponDesc); weapon.SetSubWeapon(subWeapon); }
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; }
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; }
public void EquipPassiveSkillWeapon(ItemWeaponData weaponData, RefMob.WeaponDesc weaponDesc) { Weapon weapon = instanceWeapon(weaponData, weaponDesc); m_weaponHolder.EquipPassiveSkillWeapon(weapon); }
public virtual Weapon EquipActiveSkillWeapon(ItemWeaponData weaponData, RefMob.WeaponDesc weaponDesc) { Weapon weapon = instanceWeapon(weaponData, weaponDesc); m_weaponHolder.EquipActiveSkillWeapon(weapon); return weapon; }
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(); }
/* 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; }
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; }
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; }