public override void OnSkillByteHit(BattleNPC collisionNPC, float damageMultiplier = 1.0f) { base.OnSkillByteHit(collisionNPC, damageMultiplier); ParentSkill.SkillOwner.FlipBattleNPCSpriteX(); ParentSkill.SkillSpriteRenderer.enabled = false; ParentSkill.AdvanceToNextByte(); }
public override void DoByte() { ApplyOnCastBuffs(); // Check if byte should end bool interrupted = CheckInterruptedByDamage(); bool channelOver = CheckChannelTime(); if (interrupted || !channelOver) { ParentSkill.SkillSpriteRenderer.enabled = false; ParentSkill.AdvanceToNextByte(); return; } bool intervalTime = _channelInterval(m_GlobalPreviousHit); if (intervalTime) { foreach (Target tempSignature in NPCTargets) { OnSkillByteHit(tempSignature.Focus, tempSignature.Multiplier); } m_GlobalPreviousHit = Time.fixedTime; } }
public override void DoByte() { Hero owner = (Hero)ParentSkill.SkillOwner; owner.NPCCaretaker.IncrementMana(owner.HeroPiety); ParentSkill.AdvanceToNextByte(); }
public override void DoByte() { AnimateOwner(BattleGlobals.ANIMATE_NPC_ATTACK); ApplyOnCastBuffs(); foreach (Target tempSignature in NPCTargets) { OnSkillByteHit(tempSignature.Focus, tempSignature.Multiplier); } ParentSkill.AdvanceToNextByte(); }
/* * Often called as SetSkillHitStatus(BattleNPC.TakeDamage(),BattleNPC.IsAlive()) * will determine how this Skill affected the target * @param: dmg -- amount of damage skill did * @param: isAlive -- whether or not effected target is alive */ protected override void SetSkillHitStatus(int damage, bool aliveStatus) { if (!aliveStatus && (damage > 0)) { ParentSkill.UpdateHitState(Skill.HitState.Kill); return; } if (damage != 0) { ParentSkill.UpdateHitState(Skill.HitState.Hit); return; } ParentSkill.UpdateHitState(Skill.HitState.Miss); }
protected override void OnDisable() { base.OnDisable(); ParentSkill.SkillSpriteRenderer.flipX = m_DefaultSpriteFlipX; if (ParentSkill.SkillOwner.CompareTag(BattleGlobals.TAG_FOR_ENEMIES)) { ParentSkill.ToggleSpriteFlipX(); } ParentSkill.SkillOwner.NPCRigidBody2D.velocity = Vector2.zero; ParentSkill.SkillOwner.ResetRigidBody2DRotation(); MeleeCollider2D.enabled = false; }
public virtual void OnSkillByteHit(BattleNPC collisionNPC, float damageMultiplier = 1.0f) { // Hit *a* target if (collisionNPC != null) { int damage = (m_Damage != null) ? _applyDamageToBattleNPC(collisionNPC, damageMultiplier) : 0; SetSkillHitStatus(damage, collisionNPC.Alive); ApplyOnHitBuffs(collisionNPC, damage); ParentSkill.RegisterCumulative(damage); } else // Missed Target { SetSkillHitStatus(0, true); } }
public override void DoByte() { AnimateOwner(BattleGlobals.ANIMATE_NPC_ATTACK); ApplyOnCastBuffs(); // Check if byte should end bool interrupted = CheckInterruptedByDamage(); bool channelOver = CheckChannelTime(); if (interrupted || !channelOver) { ParentSkill.SkillSpriteRenderer.enabled = false; ParentSkill.AdvanceToNextByte(); return; } if (Homing) { m_TargetPosition = NPCTargets[BEAM_PRIMARY_TARGET].Focus.transform.position; } RaycastHit2D[] hit = Physics2D.LinecastAll(m_BeamStart.transform.position, m_TargetPosition, m_TargetMask); Vector3 endPosition = m_TargetPosition; foreach (RaycastHit2D r in hit) { if (r.collider != null) { BattleNPC b = GameGlobals.AttachCheckComponentChildren <BattleNPC>(r.collider.gameObject); if ((b != null) && b.Alive) { endPosition = r.point; _checkConditionsOnSkillHit(b); break; } } } GameGlobals.Stretch(m_BeamMiddle.gameObject, m_BeamStart.transform.position, endPosition, m_PositiveDirection); m_BeamEnd.transform.position = endPosition; if (Homing) { _updateRotation(); } }
protected override void OnEnable() { base.OnEnable(); m_WavesInFlight = 0; InFlightCount = 0; m_SpawnOffset = PROJ_SPAWN_OFFSET; m_WavesStarted = false; bool ownerIsMonster = ParentSkill.SkillOwner.CompareTag(BattleGlobals.TAG_FOR_ENEMIES); if (ownerIsMonster) { ParentSkill.ToggleSpriteFlipX(); m_SpawnOffset = -1 * m_SpawnOffset; } }
protected override void OnEnable() { base.OnEnable(); m_PreviousTarget = new List <BattleNPC>(); m_PreviousTargetTime = new List <float>(); m_BeamStart.flipX = m_DefaultStartFlipX; m_BeamEnd.flipX = m_DefaultEndFlipX; Vector3 beamStartPos = BEAM_START_OFFSET; if (ParentSkill.SkillOwner.CompareTag(BattleGlobals.TAG_FOR_ENEMIES)) { ParentSkill.ToggleSpriteFlipX(); beamStartPos = -1 * beamStartPos; } beamStartPos += this.gameObject.transform.position; beamStart.tag = BattleGlobals.TAG_FOR_ENEMY_PROJ; m_PositiveDirection = true; m_BeamStart.transform.position = beamStartPos; if ((NPCTargets != null)) { BattleNPC primary = NPCTargets[BEAM_PRIMARY_TARGET].Focus; if (beamStartPos.x > primary.transform.position.x) { m_BeamStart.flipX = !m_DefaultStartFlipX; m_BeamEnd.flipX = !m_DefaultEndFlipX; m_PositiveDirection = false; m_BeamStart.tag = BattleGlobals.TAG_FOR_HERO_PROJ; } m_TargetPosition = primary.StartPuck.transform.position; } _updateRotation(); m_BeamStart.enabled = true; m_BeamMiddle.enabled = true; m_BeamEnd.enabled = true; }
public override void DoByte() { Rigidbody2D parentRigid = ParentSkill.SkillOwner.NPCRigidBody2D; ApplyOnCastBuffs(); // Whenever we're roughly where we started float absoluteDistance = Mathf.Abs(parentRigid.transform.position.sqrMagnitude - m_TargetPosition.sqrMagnitude); if (absoluteDistance < V3_EQUALS_THRESHOLD) { ParentSkill.SkillOwner.FlipBattleNPCSpriteX(); ParentSkill.AdvanceToNextByte(); } else { BattleGlobals.HomingMovement(parentRigid, m_TargetPosition, (ParentSkill.SkillOwner.NPCMoveSpeedMultiplier.GetBuffAffectedValue() * ByteSpeed)); } }
/* * Used to report HitStatus to Skill which is reported to VotingManager * Default is HitStatus doesn't apply (for non-damaging skills) */ protected virtual void SetSkillHitStatus(int damage, bool aliveStatus) { ParentSkill.UpdateHitState(Skill.HitState.NotApplicable); }
protected virtual void EndProjectileByte() { ParentSkill.SkillSpriteRenderer.enabled = false; ParentSkill.AdvanceToNextByte(); }
private IEnumerator _activateWait(float time) { yield return(new WaitForSeconds(time)); ParentSkill.AdvanceToNextByte(); }