using System; using UnityEngine; namespace DepthsOfGreed.HandbookUI { public enum BuildUse { Structure, Trap, Ability, RepairCrew } public enum BuildRegion { WallRing, Interior, Gate } public enum BaseShape { Circle, Rectangle } public enum AmmoKind { None, Bullets, Explosives, Oil, ExplosivesAndOil, Energy } public enum AttackShape { None, Line, Cone, Area, Contact } public enum TargetMode { None, Single, Area, PlayerSelectedTarget, PlayerSelectedArea, Walls } public enum RotationMode { Free, Fixed, PlayerAimed, NotApplicable } public enum SpecialEffect { None, Ricochet, PushBack, Slow, Piercing, EnergyGeneration, CorpseCollection, Reflection, Repair, Bombardment, ContactTrap, PathBlock } [Serializable] public sealed class CombatDefinition { public AmmoKind ammunition; [Min(0)] public float ammoPerShot, energyPerSecond, damagePerHit, attacksPerSecond, range; [Tooltip("Used for continuous weapons instead of damagePerHit / ammoPerShot.")] [Min(0)] public float continuousDamagePerSecond, ammoPerSecond; public bool continuousAttack, unlimitedRange; public AttackShape attackShape; public TargetMode targets; public RotationMode rotation; [Range(0, 180)] public float coneAngle = 45; [Min(0)] public float areaRadius; public SpecialEffect effect; [Min(0)] public float effectStrength, effectDuration, attackCooldown; [Min(0)] public float knockbackDistance, energyGeneratedPerSecond, energyCapacityBonus, repairHealthPerSecond, corpsesCollectedPerSecond; [Range(0, 1)] public float slowFraction; [Min(0)] public float reflectionDamageMultiplier = 1; [Min(0)] public int ricochetCount; } [Serializable] public sealed class UpgradeDefinition { public string title; [Min(0)] public int energyCost, entrailsCost; [TextArea] public string description; [Min(0)] public float damageMultiplier = 1, fireRateMultiplier = 1, rangeMultiplier = 1, effectMultiplier = 1; } }