mirror of
https://github.com/raphaelcheung/zircon-legend-server.git
synced 2026-10-29 06:04:56 +08:00
775 lines
19 KiB
C#
775 lines
19 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using Library;
|
|
using MirDB;
|
|
using Server.Envir;
|
|
using System.Text;
|
|
|
|
namespace Server.DBModels
|
|
{
|
|
[UserObject]
|
|
public sealed class AccountInfo : DBObject
|
|
{
|
|
public string EMailAddress
|
|
{
|
|
get { return _EMailAddress; }
|
|
set
|
|
{
|
|
if (_EMailAddress == value) return;
|
|
|
|
var oldValue = _EMailAddress;
|
|
_EMailAddress = value;
|
|
|
|
OnChanged(oldValue, value, "EMailAddress");
|
|
}
|
|
}
|
|
private string _EMailAddress;
|
|
|
|
public byte[] Password
|
|
{
|
|
get { return _Password; }
|
|
set
|
|
{
|
|
if (_Password == value) return;
|
|
|
|
var oldValue = _Password;
|
|
_Password = value;
|
|
|
|
OnChanged(oldValue, value, "Password");
|
|
}
|
|
}
|
|
private byte[] _Password;
|
|
|
|
public byte[] RealPassword
|
|
{
|
|
get { return _RealPassword; }
|
|
set
|
|
{
|
|
if (_RealPassword == value) return;
|
|
|
|
var oldValue = _RealPassword;
|
|
_RealPassword = value;
|
|
|
|
OnChanged(oldValue, value, "RealPassword");
|
|
}
|
|
}
|
|
private byte[] _RealPassword = [];
|
|
|
|
public string RealName
|
|
{
|
|
get { return _RealName; }
|
|
set
|
|
{
|
|
if (_RealName == value) return;
|
|
|
|
var oldValue = _RealName;
|
|
_RealName = value;
|
|
|
|
OnChanged(oldValue, value, "RealName");
|
|
}
|
|
}
|
|
private string _RealName;
|
|
|
|
public DateTime BirthDate
|
|
{
|
|
get { return _BirthDate; }
|
|
set
|
|
{
|
|
if (_BirthDate == value) return;
|
|
|
|
var oldValue = _BirthDate;
|
|
_BirthDate = value;
|
|
|
|
OnChanged(oldValue, value, "BirthDate");
|
|
}
|
|
}
|
|
private DateTime _BirthDate;
|
|
|
|
public string Question
|
|
{
|
|
get { return _Question; }
|
|
set
|
|
{
|
|
if (_Question == value) return;
|
|
|
|
var oldValue = _Question;
|
|
_Question = value;
|
|
|
|
OnChanged(oldValue, value, "Question");
|
|
}
|
|
}
|
|
private string _Question;
|
|
|
|
public string Answer
|
|
{
|
|
get { return _Answer; }
|
|
set
|
|
{
|
|
if (_Answer == value) return;
|
|
|
|
var oldValue = _Answer;
|
|
_Answer = value;
|
|
|
|
OnChanged(oldValue, value, "Answer");
|
|
}
|
|
}
|
|
private string _Answer;
|
|
|
|
[Association("Referrals")]
|
|
public AccountInfo Referral
|
|
{
|
|
get { return _Referral; }
|
|
set
|
|
{
|
|
if (_Referral == value) return;
|
|
|
|
var oldValue = _Referral;
|
|
_Referral = value;
|
|
|
|
OnChanged(oldValue, value, "Referral");
|
|
}
|
|
}
|
|
private AccountInfo _Referral;
|
|
|
|
public string CreationIP
|
|
{
|
|
get { return _CreationIP; }
|
|
set
|
|
{
|
|
if (_CreationIP == value) return;
|
|
|
|
var oldValue = _CreationIP;
|
|
_CreationIP = value;
|
|
|
|
OnChanged(oldValue, value, "CreationIP");
|
|
}
|
|
}
|
|
private string _CreationIP;
|
|
|
|
public DateTime CreationDate
|
|
{
|
|
get { return _CreationDate; }
|
|
set
|
|
{
|
|
if (_CreationDate == value) return;
|
|
|
|
var oldValue = _CreationDate;
|
|
_CreationDate = value;
|
|
|
|
OnChanged(oldValue, value, "CreationDate");
|
|
}
|
|
}
|
|
private DateTime _CreationDate;
|
|
|
|
public string LastIP
|
|
{
|
|
get { return _LastIP; }
|
|
set
|
|
{
|
|
if (_LastIP == value) return;
|
|
|
|
var oldValue = _LastIP;
|
|
_LastIP = value;
|
|
|
|
OnChanged(oldValue, value, "LastIP");
|
|
}
|
|
}
|
|
private string _LastIP;
|
|
|
|
public DateTime LastLogin
|
|
{
|
|
get { return _LastLogin; }
|
|
set
|
|
{
|
|
if (_LastLogin == value) return;
|
|
|
|
var oldValue = _LastLogin;
|
|
_LastLogin = value;
|
|
|
|
OnChanged(oldValue, value, "LastLogin");
|
|
}
|
|
}
|
|
private DateTime _LastLogin;
|
|
|
|
public string ActivationKey
|
|
{
|
|
get { return _ActivationKey; }
|
|
set
|
|
{
|
|
if (_ActivationKey == value) return;
|
|
|
|
var oldValue = _ActivationKey;
|
|
_ActivationKey = value;
|
|
|
|
OnChanged(oldValue, value, "ActivationKey");
|
|
}
|
|
}
|
|
private string _ActivationKey;
|
|
|
|
public DateTime ActivationTime
|
|
{
|
|
get { return _ActivationTime; }
|
|
set
|
|
{
|
|
if (_ActivationTime == value) return;
|
|
|
|
var oldValue = _ActivationTime;
|
|
_ActivationTime = value;
|
|
|
|
OnChanged(oldValue, value, "ActivationTime");
|
|
}
|
|
}
|
|
private DateTime _ActivationTime;
|
|
|
|
public bool Activated
|
|
{
|
|
get { return _Activated; }
|
|
set
|
|
{
|
|
if (_Activated == value) return;
|
|
|
|
var oldValue = _Activated;
|
|
_Activated = value;
|
|
|
|
OnChanged(oldValue, value, "Activated");
|
|
}
|
|
}
|
|
private bool _Activated;
|
|
|
|
public string ResetKey
|
|
{
|
|
get { return _ResetKey; }
|
|
set
|
|
{
|
|
if (_ResetKey == value) return;
|
|
|
|
var oldValue = _ResetKey;
|
|
_ResetKey = value;
|
|
|
|
OnChanged(oldValue, value, "ResetKey");
|
|
}
|
|
}
|
|
private string _ResetKey;
|
|
|
|
public DateTime ResetTime
|
|
{
|
|
get { return _ResetTime; }
|
|
set
|
|
{
|
|
if (_ResetTime == value) return;
|
|
|
|
var oldValue = _ResetTime;
|
|
_ResetTime = value;
|
|
|
|
OnChanged(oldValue, value, "ResetTime");
|
|
}
|
|
}
|
|
private DateTime _ResetTime;
|
|
|
|
public DateTime PasswordTime
|
|
{
|
|
get { return _PasswordTime; }
|
|
set
|
|
{
|
|
if (_PasswordTime == value) return;
|
|
|
|
var oldValue = _PasswordTime;
|
|
_PasswordTime = value;
|
|
|
|
OnChanged(oldValue, value, "PasswordTime");
|
|
}
|
|
}
|
|
private DateTime _PasswordTime;
|
|
|
|
public DateTime ChatBanExpiry
|
|
{
|
|
get { return _ChatBanExpiry; }
|
|
set
|
|
{
|
|
if (_ChatBanExpiry == value) return;
|
|
|
|
var oldValue = _ChatBanExpiry;
|
|
_ChatBanExpiry = value;
|
|
|
|
OnChanged(oldValue, value, "ChatBanExpiry");
|
|
}
|
|
}
|
|
private DateTime _ChatBanExpiry;
|
|
|
|
public bool Banned
|
|
{
|
|
get { return _Banned; }
|
|
set
|
|
{
|
|
if (_Banned == value) return;
|
|
|
|
var oldValue = _Banned;
|
|
_Banned = value;
|
|
|
|
OnChanged(oldValue, value, "Banned");
|
|
}
|
|
}
|
|
private bool _Banned;
|
|
|
|
public DateTime ExpiryDate
|
|
{
|
|
get { return _ExpiryDate; }
|
|
set
|
|
{
|
|
if (_ExpiryDate == value) return;
|
|
|
|
var oldValue = _ExpiryDate;
|
|
_ExpiryDate = value;
|
|
|
|
OnChanged(oldValue, value, "ExpiryDate");
|
|
}
|
|
}
|
|
private DateTime _ExpiryDate;
|
|
|
|
public string BanReason
|
|
{
|
|
get { return _BanReason; }
|
|
set
|
|
{
|
|
if (_BanReason == value) return;
|
|
|
|
var oldValue = _BanReason;
|
|
_BanReason = value;
|
|
|
|
OnChanged(oldValue, value, "BanReason");
|
|
}
|
|
}
|
|
private string _BanReason;
|
|
|
|
public long Gold
|
|
{
|
|
get { return _Gold; }
|
|
set
|
|
{
|
|
if (_Gold == value) return;
|
|
|
|
var oldValue = _Gold;
|
|
_Gold = value;
|
|
|
|
OnChanged(oldValue, value, "Gold");
|
|
}
|
|
}
|
|
private long _Gold;
|
|
|
|
public int GameGold
|
|
{
|
|
get { return _GameGold; }
|
|
set
|
|
{
|
|
if (_GameGold == value) return;
|
|
|
|
var oldValue = _GameGold;
|
|
_GameGold = value;
|
|
|
|
OnChanged(oldValue, value, "GameGold");
|
|
}
|
|
}
|
|
private int _GameGold;
|
|
|
|
public bool AllowGroup
|
|
{
|
|
get { return _AllowGroup; }
|
|
set
|
|
{
|
|
if (_AllowGroup == value) return;
|
|
|
|
var oldValue = _AllowGroup;
|
|
_AllowGroup = value;
|
|
|
|
OnChanged(oldValue, value, "AllowGroup");
|
|
}
|
|
}
|
|
private bool _AllowGroup;
|
|
|
|
public bool AllowTrade
|
|
{
|
|
get { return _AllowTrade; }
|
|
set
|
|
{
|
|
if (_AllowTrade == value) return;
|
|
|
|
var oldValue = _AllowTrade;
|
|
_AllowTrade = value;
|
|
|
|
OnChanged(oldValue, value, "AllowTrade");
|
|
}
|
|
}
|
|
private bool _AllowTrade;
|
|
|
|
public bool AllowGuild
|
|
{
|
|
get { return _AllowGuild; }
|
|
set
|
|
{
|
|
if (_AllowGuild == value) return;
|
|
|
|
var oldValue = _AllowGuild;
|
|
_AllowGuild = value;
|
|
|
|
OnChanged(oldValue, value, "AllowGuild");
|
|
}
|
|
}
|
|
private bool _AllowGuild;
|
|
|
|
public bool AllowGroupRecall
|
|
{
|
|
get { return _AllowGroupRecall; }
|
|
set
|
|
{
|
|
if (_AllowGroupRecall == value) return;
|
|
|
|
var oldValue = _AllowGroupRecall;
|
|
_AllowGroupRecall = value;
|
|
|
|
OnChanged(oldValue, value, "AllowGroupRecall");
|
|
}
|
|
}
|
|
private bool _AllowGroupRecall;
|
|
|
|
|
|
|
|
[Association("Member")]
|
|
public GuildMemberInfo GuildMember
|
|
{
|
|
get { return _GuildMember; }
|
|
set
|
|
{
|
|
if (_GuildMember == value) return;
|
|
|
|
var oldValue = _GuildMember;
|
|
_GuildMember = value;
|
|
|
|
OnChanged(oldValue, value, "GuildMember");
|
|
}
|
|
}
|
|
private GuildMemberInfo _GuildMember;
|
|
|
|
public DateTime GlobalTime
|
|
{
|
|
get { return _GlobalTime; }
|
|
set
|
|
{
|
|
if (_GlobalTime == value) return;
|
|
|
|
var oldValue = _GlobalTime;
|
|
_GlobalTime = value;
|
|
|
|
OnChanged(oldValue, value, "GlobalTime");
|
|
}
|
|
}
|
|
private DateTime _GlobalTime;
|
|
|
|
public HorseType Horse
|
|
{
|
|
get { return _Horse; }
|
|
set
|
|
{
|
|
if (_Horse == value) return;
|
|
|
|
var oldValue = _Horse;
|
|
_Horse = value;
|
|
|
|
OnChanged(oldValue, value, "Horse");
|
|
}
|
|
}
|
|
private HorseType _Horse;
|
|
|
|
public int HuntGold
|
|
{
|
|
get { return _HuntGold; }
|
|
set
|
|
{
|
|
if (_HuntGold == value) return;
|
|
|
|
var oldValue = _HuntGold;
|
|
_HuntGold = value;
|
|
|
|
OnChanged(oldValue, value, "HuntGold");
|
|
}
|
|
}
|
|
private int _HuntGold;
|
|
|
|
public int StorageSize
|
|
{
|
|
get { return _StorageSize; }
|
|
set
|
|
{
|
|
if (_StorageSize == value) return;
|
|
|
|
var oldValue = _StorageSize;
|
|
_StorageSize = value;
|
|
|
|
OnChanged(oldValue, value, "StorageSize");
|
|
}
|
|
}
|
|
private int _StorageSize;
|
|
|
|
public string LastSum
|
|
{
|
|
get { return _LastSum; }
|
|
set
|
|
{
|
|
if (_LastSum == value) return;
|
|
|
|
var oldValue = _LastSum;
|
|
_LastSum = value;
|
|
|
|
OnChanged(oldValue, value, "LastSum");
|
|
}
|
|
}
|
|
private string _LastSum;
|
|
|
|
public bool GoldBot
|
|
{
|
|
get { return _GoldBot; }
|
|
set
|
|
{
|
|
if (_GoldBot == value) return;
|
|
|
|
var oldValue = _GoldBot;
|
|
_GoldBot = value;
|
|
|
|
OnChanged(oldValue, value, "GoldBot");
|
|
}
|
|
}
|
|
private bool _GoldBot;
|
|
|
|
public bool ItemBot
|
|
{
|
|
get { return _ItemBot; }
|
|
set
|
|
{
|
|
if (_ItemBot == value) return;
|
|
|
|
var oldValue = _ItemBot;
|
|
_ItemBot = value;
|
|
|
|
OnChanged(oldValue, value, "ItemBot");
|
|
}
|
|
}
|
|
private bool _ItemBot;
|
|
|
|
|
|
public DateTime GuildTime
|
|
{
|
|
get { return _GuildTime; }
|
|
set
|
|
{
|
|
if (_GuildTime == value) return;
|
|
|
|
var oldValue = _GuildTime;
|
|
_GuildTime = value;
|
|
|
|
OnChanged(oldValue, value, "GuildTime");
|
|
}
|
|
}
|
|
private DateTime _GuildTime;
|
|
|
|
public bool Observer
|
|
{
|
|
get { return _Observer; }
|
|
set
|
|
{
|
|
if (_Observer == value) return;
|
|
|
|
var oldValue = _Observer;
|
|
_Observer = value;
|
|
|
|
OnChanged(oldValue, value, "Observer");
|
|
}
|
|
}
|
|
private bool _Observer;
|
|
|
|
|
|
|
|
public bool TempAdmin;
|
|
|
|
|
|
[Association("Items")]
|
|
public DBBindingList<UserItem> Items { get; set; }
|
|
|
|
[Association("Referrals")]
|
|
public DBBindingList<AccountInfo> Referrals { get; set; }
|
|
|
|
[Association("Characters")]
|
|
public DBBindingList<CharacterInfo> Characters { get; set; }
|
|
|
|
[Association("Buffs")]
|
|
public DBBindingList<BuffInfo> Buffs { get; set; }
|
|
|
|
[Association("Auctions")]
|
|
public DBBindingList<AuctionInfo> Auctions { get; set; }
|
|
|
|
[Association("Mail")]
|
|
public DBBindingList<MailInfo> Mail { get; set; }
|
|
|
|
[Association("UserDrops")]
|
|
public DBBindingList<UserDrop> UserDrops { get; set; }
|
|
|
|
[Association("Companions")]
|
|
public DBBindingList<UserCompanion> Companions { get; set; }
|
|
|
|
[Association("CompanionUnlocks")]
|
|
public DBBindingList<UserCompanionUnlock> CompanionUnlocks { get; set; }
|
|
|
|
[Association("BlockingList")]
|
|
public DBBindingList<BlockInfo> BlockingList { get; set; } //Who this account is Blocking.
|
|
|
|
[Association("BlockedByList")]
|
|
public DBBindingList<BlockInfo> BlockedByList { get; set; } //Who's blocked this account.
|
|
|
|
[Association("Payments")]
|
|
public DBBindingList<GameGoldPayment> Payments { get; set; }
|
|
|
|
[Association("StoreSales")]
|
|
public DBBindingList<GameStoreSale> StoreSales { get; set; }
|
|
|
|
[Association("Fortunes")]
|
|
public DBBindingList<UserFortuneInfo> Fortunes { get; set; }
|
|
|
|
|
|
public long TotalPlaySeconds { get; set; } = 0;
|
|
public AccountIdentity Identify
|
|
{
|
|
get => _Identity;
|
|
set
|
|
{
|
|
if (_Identity == value) return;
|
|
var old = _Identity;
|
|
_Identity = value;
|
|
OnChanged(old, value, "Identify");
|
|
}
|
|
}
|
|
private AccountIdentity _Identity = AccountIdentity.Normal;
|
|
|
|
|
|
public CharacterInfo LastCharacter
|
|
{
|
|
get { return _LastCharacter; }
|
|
set
|
|
{
|
|
if (_LastCharacter == value) return;
|
|
|
|
var oldValue = _LastCharacter;
|
|
_LastCharacter = value;
|
|
|
|
OnChanged(oldValue, value, "LastCharacter");
|
|
}
|
|
}
|
|
private CharacterInfo _LastCharacter;
|
|
|
|
|
|
public int WrongPasswordCount;
|
|
public SConnection Connection;
|
|
public string Key;
|
|
|
|
protected override void OnCreated()
|
|
{
|
|
base.OnCreated();
|
|
|
|
StorageSize = Globals.StorageSize;
|
|
|
|
BuffInfo buff = SEnvir.BuffInfoList.CreateNewObject();
|
|
|
|
buff.Account = this;
|
|
buff.Type = BuffType.HuntGold;
|
|
buff.TickFrequency = TimeSpan.FromMinutes(1);
|
|
buff.Stats = new Stats();
|
|
buff.Stats.Values.Add(Stat.AvailableHuntGoldCap, 15);
|
|
buff.RemainingTime = TimeSpan.MaxValue;
|
|
}
|
|
protected override void OnLoaded()
|
|
{
|
|
base.OnLoaded();
|
|
|
|
if (StorageSize == 0)
|
|
StorageSize = Globals.StorageSize;
|
|
|
|
Stats tmp = new Stats();
|
|
tmp.Values.Add(Stat.AvailableHuntGoldCap, 15);
|
|
Buffs.First(delegate(BuffInfo x) { return x.Type == BuffType.HuntGold; }).Stats = tmp;
|
|
}
|
|
|
|
public int HightestLevel()
|
|
{
|
|
int count = 0;
|
|
|
|
foreach (CharacterInfo character in Characters)
|
|
if (character.Level > count)
|
|
count = character.Level;
|
|
|
|
return count;
|
|
}
|
|
|
|
public List<SelectInfo> GetSelectInfo()
|
|
{
|
|
List<SelectInfo> characters = new List<SelectInfo>();
|
|
|
|
foreach (CharacterInfo character in Characters)
|
|
{
|
|
if (character.Deleted) continue;
|
|
|
|
characters.Add(character.ToSelectInfo());
|
|
}
|
|
|
|
return characters;
|
|
}
|
|
|
|
public override string ToString()
|
|
{
|
|
return EMailAddress;
|
|
}
|
|
|
|
public AccountIdentity GetLogonIdentity()
|
|
{
|
|
if (Identify == AccountIdentity.SuperAdmin && TempAdmin)
|
|
return AccountIdentity.SuperAdmin;
|
|
else if (Identify == AccountIdentity.SuperAdmin)
|
|
return AccountIdentity.Admin;
|
|
else return Identify;
|
|
}
|
|
|
|
|
|
public DateTime FlashTime
|
|
{
|
|
get
|
|
{
|
|
return _FlashTime;
|
|
}
|
|
set
|
|
{
|
|
if (_FlashTime == value)
|
|
return;
|
|
DateTime? flashTime = _FlashTime;
|
|
_FlashTime = value;
|
|
OnChanged((object)flashTime, (object)value, nameof(FlashTime));
|
|
}
|
|
}
|
|
private DateTime _FlashTime = DateTime.MaxValue;
|
|
public long AutoTime
|
|
{
|
|
get
|
|
{
|
|
return _AutoTime;
|
|
}
|
|
set
|
|
{
|
|
if (_AutoTime == value)
|
|
return;
|
|
long autoTime = _AutoTime;
|
|
_AutoTime = value;
|
|
OnChanged((object)autoTime, (object)value, nameof(AutoTime));
|
|
}
|
|
}
|
|
private long _AutoTime;
|
|
|
|
public bool ForceGuild { get; set; } = false;
|
|
}
|
|
}
|