public void OnTap(Point point) { if (_skill != null && _skill.InRange(point)) { _skill.Owner.FireActiveSkill(); _skill = null; } }
private void OnSkillActivated(Combatant combatant, ISkill skill) { // Unbind delegates from old skill if (_ranged != null) { _ranged.TargetChanged -= OnTargetChanged; } else if (_directional != null) { _directional.DirectionChanged -= OnDirectionChanged; } // Figure out origin from ActionQueue PawnAction lastAction = _combatant.LastAction; _origin = (lastAction == null) ? _combatant.Position : lastAction.PostRunPosition; // Figure out what kind of skill it is _ranged = skill as RangedSkill; _directional = skill as DirectionalSkill; // Bind delegates to new skill if (_ranged != null) { _ranged.TargetChanged += OnTargetChanged; OnTargetChanged(_ranged.Target); } else if (_directional != null) { _directional.DirectionChanged += OnDirectionChanged; OnDirectionChanged(_directional.Direction); } }
public void Setup(Vector3 direction, float moveSpeed, RangedSkill skill) { this.direction = direction; this.skill = skill; transform.eulerAngles = new Vector3(0, 0, UtilsClass.GetAngleFromVectorFloat(direction)); Destroy(gameObject, 5f); }
public void startBehaviour(Character caster, RangedSkill skill){ this.caster = caster; this.skill = skill; damageType = skill.damageType; damage = skill.damage; casterType = caster.GetType (); }
public override void Initialize(ContentManager contentLoader, ComponentManifest manifest) { string skillAssetName = (string)(manifest.Properties[ManifestKeys.RANGED_SKILL_ASSET_NAME]); ComponentManifest weaponManifest = contentLoader.Load <ComponentManifest>(Path.Combine("skills", skillAssetName)); Type weaponType = Type.GetType(weaponManifest.TypeFullName); object[] basicCtorParams = new object[] { Owner.Id }; RangedSkill = Activator.CreateInstance(weaponType, basicCtorParams) as BipedWeapon; RangedSkill.Initialize(contentLoader, weaponManifest); skillAssetName = (string)(manifest.Properties[ManifestKeys.MELEE_SKILL_ASSET_NAME]); weaponManifest = contentLoader.Load <ComponentManifest>(Path.Combine("skills", skillAssetName)); weaponType = Type.GetType(weaponManifest.TypeFullName); MeleeSkill = Activator.CreateInstance(weaponType, basicCtorParams) as BipedWeapon; MeleeSkill.Initialize(contentLoader, weaponManifest); }
private Skill CreateItemSkill(string skillName) { if (skillName == "orb") { return(new RangedSkill("orb", stats, pfOrb, UtilsClass.GetMousePosition2D())); } if (skillName == "rock") { var sk = new RangedSkill("rock", stats, pfRock, UtilsClass.GetMousePosition2D()); sk.damage = 3f; return(sk); } if (skillName == "arrow") { var sk = new RangedSkill("arrow", stats, pfArrow, UtilsClass.GetMousePosition2D()); sk.damage = 3.5f; return(sk); } else { Error("skill not found"); return(null); } }
private void OnSkillDeactivated(Combatant combatant, ISkill skill) { _gridField.ClearPoints(); _gridField.RebuildMesh(); _ranged = null; _directional = null; }
public void StartTargeting(ISkill skill) { _skill = (RangedSkill)skill; }
// Show the overlay for the Ranged skill, allowing the player to target a hex public void ShowRangedSkillOverlay(RangedSkill skill) { _currentAction = ActionType.Skill; _currentSkill = skill; var inRangeTiles = BoardManager.GetTilesInRange(_currentCharacter.X, _currentCharacter.Y, skill.Range); OverlayManager.InstantiateOverlays(inRangeTiles); }
// Use this for initialization void Start () { skill = gameObject.transform.parent.gameObject.GetComponent<ParticleBehavior> ().skill; caster = skill.caster; casterType = caster.gameObject.GetComponent<Character> ().GetType (); }
private void Update() { if (type == AttackType.Ranged && wasAttacking && !animator.GetCurrentAnimatorStateInfo(0).IsName("Attack")) { // todo add spellruntime to enemies if (!gameObject.name.StartsWith("Witch")) { var ranged = new RangedSkill("projectile", stats, projectile, player.position); ranged.damage = projectileDamage; ranged.moveSpeed = projectileSpeed; ranged.cast(); } else { var skill = new MorphSkill("morph", stats, projectile, player.position, morph); skill.damage = projectileDamage; skill.moveSpeed = projectileSpeed; skill.cast(); } } wasAttacking = animator.GetCurrentAnimatorStateInfo(0).IsName("Attack"); // Movement if (Vector3.Distance(transform.position, target.position) < findRange) { if (type != AttackType.Ranged || !animator.GetCurrentAnimatorStateInfo(0).IsName("Attack")) { ag.SetDestination(new Vector3(target.position.x, target.position.y, transform.position.z)); ag.speed = stats.GetSpeed(); } else { ag.SetDestination(transform.position); ag.speed = 0f; } } bool isClose = Vector3.Distance(transform.position, player.position) < (type == AttackType.Melee ? hitRange : findRange); if (timeSinceLast >= 0) { timeSinceLast -= Time.deltaTime; } if (isClose) { if (type == AttackType.Ranged) { if (timeSinceLast <= 0) { // cast orb but not here, after attack animation ended animator.SetBool("Attacking", true); timeSinceLast = cooldown; } else { if (animator.GetCurrentAnimatorStateInfo(0).IsName("Attack")) { animator.SetBool("Attacking", false); } } } else if (type == AttackType.Melee) { animator.SetBool("Attacking", isClose); } } else if (type == AttackType.Melee) { animator.SetBool("Attacking", false); } animator.SetBool("Moving", ag.velocity.x != 0 || ag.velocity.y != 0); bool sign = ag.velocity.x == 0 ? transform.eulerAngles.y == 180 || (player.position.x < transform.position.x) : ag.velocity.x < 0; transform.rotation = Quaternion.Euler(new Vector3(transform.eulerAngles.x, sign ? 180 : 0, transform.eulerAngles.z)); }
public override void Release() { RangedSkill.Release(); MeleeSkill.Release(); }