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);
}
}