Пример #1
0
    void HotBar_UseItem(int item)
    {
        if (items[item].item.UsageDelay == 0)
        {
            if (EffectorMethods.CheckIfEnoughResources(unitCore, items[item].item.CostEffector))
            {
                //Apply Effect
                unitCore.RunEffector(new Source(unitCore, items[item].item), items[item].item.SelfEffector, false);

                if (items[item].item.IsProjectileWeapon)
                {
                    weaponCore.SpawnProjectile(items[item].item);
                }

                //Take Costs
                unitCore.RunEffector(new Source(unitCore, items[item].item), items[item].item.CostEffector, false);
                inv.RemoveItem(items[item].item.ID, 1);
            }
            else
            {
                Debug.Log("Not Enough Resource to cast!");
            }
        }
        else
        {
            //Queue Usage
            weaponCore.IsUsingItem(true, false);
            usageItem      = item;
            usageDelayBase = usageDelay = items[item].item.UsageDelay;
        }
    }
Пример #2
0
    public void UseDelayedItem(int item)
    {
        if (EffectorMethods.CheckIfEnoughResources(unitCore, items[item].item.CostEffector))
        {
            //Apply Effect
            unitCore.RunEffector(new Source(unitCore, items[item].item), items[item].item.SelfEffector, false);

            if (items[item].item.IsProjectileWeapon)
            {
                weaponCore.SpawnProjectile(items[item].item);
            }

            //Take Costs
            unitCore.RunEffector(new Source(unitCore, items[item].item), items[item].item.CostEffector, false);
            inv.RemoveItem(items[item].item.ID, 1);
        }
        else
        {
            Debug.Log("Not Enough Resource to use!");
        }

        //Reset
        weaponCore.IsUsingItem(false, false);
        usageItem  = -1;
        usageDelay = -1;
    }
Пример #3
0
    public void ActionBar_UseAbility(int slot)
    {
        if (!equippedAbilities[slot].equipped)
        {
            return;
        }

        if (equippedAbilities[slot].cooldown != -1)
        {
            //HUD
            RpcHUDPingAbility(slot, Defs.AbilityMode.Cooldown);
            return;
        }

        if (EffectorMethods.CheckIfEnoughResources(unitCore, equippedAbilities[slot].ability.cost))
        {
            for (int action = 0; action < equippedAbilities[slot].ability.actions.Count; action++)
            {
                //Target
                UnitCore target;
                switch (equippedAbilities[slot].ability.actions[action].target)
                {
                case Ability.Action.Target.Self:
                    target = unitCore;
                    break;
                }

                //Type
                switch (equippedAbilities[slot].ability.actions[action].type)
                {
                case Ability.Action.Type.ApplyState:
                    GetComponent <HERO_StateController>().AddStates(unitCore, equippedAbilities[slot].ability.actions[action].targetStates);
                    break;

                case Ability.Action.Type.RemoveState:
                    GetComponent <HERO_StateController>().RemoveStates(equippedAbilities[slot].ability.actions[action].targetStates);
                    break;

                case Ability.Action.Type.ApplyEffector:
                    unitCore.RunEffector(new Source(unitCore, Source.Type.Ability), equippedAbilities[slot].ability.actions[action].targetEffector, false);
                    break;

                case Ability.Action.Type.Animation:
                    GetComponent <Animator>().SetTrigger(equippedAbilities[slot].ability.actions[action].animationTrigger);
                    break;
                }

                //Movement
                bool       cancel          = false;
                Quaternion targetDirection = transform.rotation;
                switch (equippedAbilities[slot].ability.actions[action].movementType)
                {
                case Ability.Action.MovementType.None:
                    cancel = true;
                    break;

                case Ability.Action.MovementType.MoveDirection:
                    Vector3 face = new Vector3(transform.position.x + Input.GetAxis("Horizontal"), transform.position.y, transform.position.z + Input.GetAxis("Vertical"));
                    transform.LookAt(face);
                    targetDirection = transform.rotation;
                    break;

                case Ability.Action.MovementType.MouseDirection:
                    targetDirection = transform.rotation;
                    break;

                case Ability.Action.MovementType.CustomDirection:
                    targetDirection = equippedAbilities[slot].ability.actions[action].direction;
                    break;
                }

                if (!cancel)
                {
                    StartCoroutine(MoveInDirection(targetDirection, equippedAbilities[slot].ability.actions[action].distance, equippedAbilities[slot].ability.actions[action].time));
                }
            }

            //Cooldown
            equippedAbilities[slot].cooldown = 15;

            //Unit HUD
            RpcPingAbility(abilitySheet.contained.IndexOf(equippedAbilities[slot].ability));

            //HUD
            RpcHUDPingAbility(slot, Defs.AbilityMode.Use);
        }
        else
        {
            //HUD
            RpcHUDPingAbility(slot, Defs.AbilityMode.Cooldown);
        }
    }
Пример #4
0
    void ServerUpdate()
    {
        if (!mounted)
        {
            if (mounting)
            {
                if (callTime == 3)
                {
                    mounting = false;
                    mounted  = true;
                    callTime = 0;
                    RpcAdaptMount(true);
                    RpcUpdateChannel(0, 0);
                }
                else
                {
                    callTime = Mathf.Clamp(callTime + Time.deltaTime, 0, 3);
                    RpcUpdateChannel(callTime / 3, 1);
                }
            }
        }
        else
        {
            if (mounting)
            {
                mounting = false;
                mounted  = false;
                callTime = 0;
                RpcAdaptMount(false);
            }
        }

        //Ability Cooldowns
        for (int count = 0; count < equippedAbilities.Count; count++)
        {
            if (equippedAbilities[count].cooldown != -1)
            {
                equippedAbilities[count].cooldown = Mathf.Clamp(equippedAbilities[count].cooldown - Time.deltaTime, 0, 15);

                if (equippedAbilities[count].cooldown == 0)
                {
                    //HUD
                    RpcHUDPingAbility(count, Defs.AbilityMode.Ready);
                    equippedAbilities[count].cooldown = -1;
                }
            }
        }

        //Item Usage
        if (usageDelay != 0 && usageItem != -1)
        {
            usageDelay = Mathf.Clamp(usageDelay - Time.deltaTime, 0, 100);
            weaponCore.RpcUpdateItemUsageHUD(usageDelay / usageDelayBase, EffectorMethods.CheckIfEnoughResources(unitCore, items[usageItem].item.CostEffector));

            if (usageDelay == 0)
            {
                UseDelayedItem(usageItem);
            }
        }

        //Create New Method - Need Inventory, Level up systems

        //Calculations - Strength:
        parameterStrength = Mathf.Clamp(parameterStrengthPerma + (parameterTotalStats * parameterStrengthInfluence), 0, parameterTotalStats * 2);

        //Calculations - Agility:
        parameterAgility = Mathf.Clamp(parameterTotalStats - parameterStrength, 0, parameterTotalStats * 2);

        //WEIGHT

        //Use an update function later - Need Inventory
        weight_Max = Mathf.Clamp(parameterAgility * 0.9f, 0, parameterTotalStats * 2);

        //For the time being Add all weighing objects into this equation
        weight_Val = Mathf.Clamp((parameters_Goldies * 0.3f), 0, weight_Max);
    }
Пример #5
0
    void ServerUpdate()
    {
        for (int count = 0; count < 2; count++)
        {
            if (!hands[count].empty)
            {
                if (input[count] && !isUsingItem && EffectorMethods.CheckIfEnoughResources(unitCore, hands[count].equipped.CostEffector))
                {
                    switch (hands[count].status)
                    {
                    case Wield.Status.Ready:
                        int check = 0;
                        if (count == 0)
                        {
                            check = 1;
                        }
                        if ((hands[check].status != Wield.Status.Wind && hands[check].status != Wield.Status.Strike) || hands[check].empty)
                        {
                            StartedWind(count);
                            hands[count].status = Wield.Status.Wind;
                        }
                        break;

                    case Wield.Status.Wind:
                        Wind(count);
                        break;

                    case Wield.Status.StartCancel:
                        hands[count].status = Wield.Status.Cancel;
                        break;

                    case Wield.Status.Cancel:
                        Cancel(count);
                        break;

                    case Wield.Status.Active:
                        Active(count);
                        break;

                    case Wield.Status.Strike:
                        Strike(count);
                        break;

                    case Wield.Status.Recover:
                        Recover(count);
                        break;
                    }
                }
                else
                {
                    switch (hands[count].status)
                    {
                    case Wield.Status.Ready:
                        break;

                    case Wield.Status.Wind:
                        hands[count].status = Wield.Status.StartCancel;
                        break;

                    case Wield.Status.StartCancel:
                        StartedCancel(count);
                        hands[count].status = Wield.Status.Cancel;
                        break;

                    case Wield.Status.Cancel:
                        Cancel(count);
                        break;

                    case Wield.Status.Active:
                        hands[count].status = Wield.Status.Ready;
                        StartedReady(count);
                        break;

                    case Wield.Status.Strike:
                        Strike(count);
                        break;

                    case Wield.Status.Recover:
                        Recover(count);
                        break;
                    }
                }
            }
        }
    }