public static void CreateWorldAbility(RootUnit target, RootUnit owner, WorldAbility worldAbility, int numberOfCopies) { List <RootUnit> targets = GetInAreaRootUnit(10, worldAbility.transform.position, worldAbility.previousTargets); for (int i = 0; i < numberOfCopies && i < targets.Count; i++) { GameObject abilityResult = Instantiate(Resources.Load(String.Format("Prefabs/Abilities/Forms/{0}", worldAbility.wFormRune.formRuneType))) as GameObject; GameObject particles = Instantiate(Resources.Load(String.Format("Prefabs/Abilities/Forms/{0}_Graphic/{1}_{0}_Graphic", worldAbility.wFormRune.formRuneType, worldAbility.wSchoolRune.schoolRuneType))) as GameObject; particles.transform.SetParent(abilityResult.transform); WorldAbility newWorldAbility = abilityResult.GetComponent <WorldAbility>(); newWorldAbility.Construct(worldAbility, owner.unitID); newWorldAbility.targetPreference = targets[i].transform; newWorldAbility.previousTargets.Add(worldAbility.previousTargets.LastOrDefault()); newWorldAbility.isTriggered = true; abilityResult.transform.position = worldAbility.transform.position; } }
public void CreateTriggerAbility(Vector3 location, Transform?preference) { GameObject abilityResult = Instantiate(Resources.Load(String.Format("Prefabs/Abilities/Forms/{0}", wA.abilityToTrigger.aFormRune.formRuneType.ToString()))) as GameObject; GameObject particles = Instantiate(Resources.Load(String.Format("Prefabs/Abilities/Forms/{0}_Graphic/{1}_{0}_Graphic", wA.abilityToTrigger.aFormRune.formRuneType.ToString(), wA.abilityToTrigger.aSchoolRune.schoolRuneType.ToString()))) as GameObject; particles.transform.SetParent(abilityResult.transform); WorldAbility worldAbility = abilityResult.GetComponent <WorldAbility>(); worldAbility.Construct(wA.abilityToTrigger, wA.abilityOwner); abilityResult.transform.position = location; worldAbility.previousTargets.AddRange(wA.previousTargets); worldAbility.isTriggered = true; abilityResult.transform.rotation = this.transform.rotation; if (preference != null) { worldAbility.targetPreference = preference; } }
public void Cast() { movementState = MovementState.Idle; GameObject abilityResult = Instantiate(Resources.Load(String.Format("Prefabs/Abilities/Forms/{0}", abilityBeingCast.aFormRune.formRuneType)), primarySpellCastLocation.position, new Quaternion()) as GameObject; GameObject particles = Instantiate(Resources.Load(String.Format("Prefabs/Abilities/Forms/{0}_Graphic/{1}_{0}_Graphic", abilityBeingCast.aFormRune.formRuneType, abilityBeingCast.aSchoolRune.schoolRuneType)), abilityResult.transform.position, new Quaternion()) as GameObject; particles.transform.SetParent(abilityResult.transform); WorldAbility worldAbility = abilityResult.GetComponent <WorldAbility>(); worldAbility.Construct(abilityBeingCast, unitID); if (worldAbility.wEffectRunes != null) { foreach (var rune in worldAbility.wEffectRunes) { if (rune.triggerTag == Rune.TriggerTag.OnCast) { rune.Effect(this, this, worldAbility); } } } abilityBeingCast = null; }