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; } }
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; }
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); } }
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); }
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; } } } } }