using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using BITKit; namespace BITFALL.Guns { public class ScriptableGun : ScriptableEquip { [Header(nameof(ScriptableGun))] [SerializeReference, SubclassSelector] protected IFireMode fireMode = new AutoFireMode(); [SerializeField] private int initialBulletForce; [SerializeField] private int initialBulletSpeed = 128; [SerializeField] private int initialAimZoom = 1; [SerializeField] private bool isScopeAim; [SerializeField] private Optional buckshot; [SerializeField] private float initialHipFireSpread = 1; [SerializeField] private AnimationCurve damageMultiplierCurve; public IFireMode FireMode => fireMode; public int InitialBulletForce => initialBulletForce; public int InitialDamage => initialDamage; public int InitialBulletSpeed => initialBulletSpeed; public int InitialAimZoom => initialAimZoom; public bool IsScopeAim => isScopeAim; public IOptional BuckShot => buckshot; public float InitialHipFireSpread => initialHipFireSpread; public int GetDamageByDistance(float distance,string tag = null) { var baseDamage = GetDamageByTag(tag); return (int)(damageMultiplierCurve.Evaluate(distance)*baseDamage); } } }