public static int CalculateDamage(int AttackerModifier, Weapon.EWeaponRoll RollType) { int TotalDamage = AttackerModifier; switch (RollType) { case Weapon.EWeaponRoll.R1d4: TotalDamage += Random.Range(1, 4); break; case Weapon.EWeaponRoll.R1d6: TotalDamage += Random.Range(1, 6); break; case Weapon.EWeaponRoll.R1d8: TotalDamage += Random.Range(1, 8); break; case Weapon.EWeaponRoll.R1d10: TotalDamage += Random.Range(1, 10); break; case Weapon.EWeaponRoll.R1d12: TotalDamage += Random.Range(1, 12); break; case Weapon.EWeaponRoll.R2d6: TotalDamage += Random.Range(1, 6); TotalDamage += Random.Range(1, 6); break; } return(TotalDamage); }
private bool WillEngageOnCombatOnMovement(Vector2 _MovementDirection) { if (_MovementDirection == Vector2.zero) { return(false); } Vector2 PositionToCheck = m_CurrentPosition + _MovementDirection; Actor ActorToInteract = TurnBasedManager.s_Instance.WhatActorIsAt(PositionToCheck); if (ActorToInteract != null) { if (ActorToInteract is DynamicActor && ActorToInteract.ActorType != m_ActorType) { // need to get the attacker roll type! Weapon.EWeaponRoll RollType = Weapon.EWeaponRoll.R1d4; if (ActorType == EActorType.EAT_Player) { RollType = ResourceLocator.instance.PlayerWeapon.RollType; } else if (ActorType == EActorType.EAT_Enemy) { RollType = GetComponent <Enemy>().MonsterStat.DamageRoll; } TurnBasedManager.s_Instance.HandleCombat(this, (DynamicActor)ActorToInteract, RollType); return(true); } } return(false); }
// TODO: Some way to get all actors around... // Add actor to list // remove actor from list // ================================================================================================= // // COMBAT // // ================================================================================================= #region HANDLING COMBAT public void HandleCombat(DynamicActor _AttackingActor, DynamicActor _BeingAttackedActor, Weapon.EWeaponRoll AttackerRoll) { _AttackingActor.DealtDamage(); int ExtraStr = 0; if (_AttackingActor.ActorType == EActorType.EAT_Player) { ExtraStr = ResourceLocator.instance.PlayerExtraStr; } int AttackerModifier = CombatHelpers.CalculateModifier(_AttackingActor.ActorStats.Strength + ExtraStr); int Damage = CombatHelpers.CalculateDamage(AttackerModifier, AttackerRoll); Damage = Mathf.Max(Damage, 0); _BeingAttackedActor.SufferedDamage(Damage); Debug.Log($"{_AttackingActor.ActorName} dealt {Damage} damage to {_BeingAttackedActor.ActorName}"); }