using Arrowgene.Ddon.Shared.Entity.Structure; using Arrowgene.Ddon.Shared.Model; namespace Arrowgene.Ddon.GameServer.Scripting.Interfaces { public abstract class IOfficialPawnScript { /// Stable virtual pawn id assigned from the script filename. public uint PawnId { get; internal set; } public abstract string Name { get; } public abstract JobId Job { get; } public abstract CDataEditInfo EditInfo { get; } /// Minimum player job level required to see and hire this pawn. public virtual int MinLevel => 1; /// Maximum player job level that can hire this pawn. Default 999 = no cap. public virtual int MaxLevel => 999; /// Fixed generated pawn level. null scales the pawn to the hiring player's active job level. public virtual int? PawnLevel => null; /// Multiplier applied on top of the normal rental cost formula. public virtual float RentalCostMultiplier => 1.0f; /// Quality tier used by automatic official pawn systems. public virtual float Quality => PawnQuality.Normal; /// Maximum number of adventures after hire. null uses the server default. public virtual byte? AdventureCount => null; /// Maximum number of crafts after hire. null uses the server default. public virtual byte? CraftCount => null; /// Return true when the hiring client has unlocked this official pawn. public virtual bool IsUnlocked(GameClient client, DdonGameServer server) => true; /// Generate a rental pawn record for the given hiring context. public abstract RentalPawnRecord Generate(OfficialPawnContext ctx); } }