Exemple #1
0
 public BaseMagic Cast(BaseMagic magic, Vector3 position)
 {
     if (magicList.Contains(magic.MagicType))
     {
         if (Caster.CurrentMana >= magic.Mana)
         {
             Caster.ReduceMana(magic.Mana);
             return(magic.GetInstantiate(position));
         }
     }
     return(null);
 }
        public static BaseMagic GetInstantiate(string magicName)
        {
            var savedMagic = magics[magicName];

            if (savedMagic == null)
            {
                return(null);
            }
            var newMagic = BaseMagic.Instantiate(savedMagic) as BaseMagic;

            return(newMagic);
        }
        private void InitMagic(BaseMagic magicprehab, int index)
        {
            //クラスを消すため依存に注意
            if (currentMagics[index] != null)
            {
                Destroy(currentMagics[index]);
            }
            var magic = Instantiate(magicprehab, Vector3.zero, Quaternion.identity);

            magic.Init(core, attackObservable[index]);
            magic.transform.SetParent(magics.transform, false);
            magic.transform.localPosition = instantLocalPos;
            magic.HascastMagic.Skip(1).Subscribe(x => canDoMagic = !x);
            currentMagics[index] = magic;
        }
    //Augmentations: To be added.

    public void LoadPrimary(Attack loadtk)
    {
        BaseWeapon temp = Instantiate(primW);

        primW = temp;

        primW.LoadWeapon(loadtk);

        if (_stats == null)
        {
            _stats = _me.myStats; //redundant, probably see if there's an easy injectable fix?
        }
        loadtk.dmgStats = _stats.GetHitStats(primW.WeaponDamage, primW.WeaponType);
        loadtk.Cooldown = primW.cooldown;

        //TEMP_DEBUG: Weapon Load Pool
        if (primW is BaseGun)
        {
            //Late check script
            if (pooler == null)
            {
                pooler = _me._pool;
            }

            BaseGun gun = primW as BaseGun;
            gun.FindAmmo(pooler);
        }
        else if (primW is BaseMagic)
        {
            //Late check script
            if (pooler == null)
            {
                pooler = _me._pool;
            }

            BaseMagic spell = primW as BaseMagic;
            spell.FindPool(pooler);
        }
        else if (primW is BaseMelee)
        {
            BaseMelee smack = primW as BaseMelee;
            smack.FindPoint(MeleePoint);
        }

        //Apply items here, or like, in the load function.
    }
Exemple #5
0
 /// <summary>
 /// 单体魔法攻击
 /// </summary>
 /// <param name="context"></param>
 /// <param name="attacker"></param>
 /// <param name="target"></param>
 /// <param name="magic"></param>
 public ActionMagicAttackOne(SimulatorContext context, FightingCharacter attacker, FightingCharacter target, BaseMagic magic) : base(context, attacker, target)
 {
     _magic = magic;
 }
 /// <summary>
 /// 全体辅助魔法
 /// </summary>
 /// <param name="context"></param>
 /// <param name="attacker"></param>
 /// <param name="targets"></param>
 /// <param name="magic"></param>
 public ActionMagicHelpAll(SimulatorContext context, FightingCharacter attacker, List <FightingCharacter> targets, BaseMagic magic) : base(context, attacker, targets)
 {
     _magic = magic;
 }
Exemple #7
0
 public void AddMagic(BaseMagic magic)
 {
     magicList.Add(magic.MagicType);
 }