public override bool CanPK(BaseObject obj, bool bGoCrime = true)
{
bool bCrime = true; //犯罪标识
PlayerObject _play = null;
if (obj.type == OBJECTTYPE.EUDEMON)
{
_play = (obj as EudemonObject).GetOwnerPlay();
}
if (obj.type == OBJECTTYPE.PLAYER)
{
_play = (obj as PlayerObject);
}
if (_play == null) return true;
byte pkmode = this.GetBaseAttr().pk_mode;
bool bCanPk = false;
if (pkmode == GameBase.Config.Define.PK_MODE_FREE)
{
bCanPk = true;
}
if (pkmode == GameBase.Config.Define.PK_MODE_SAFE) return false; //安全pk模式
if (pkmode == GameBase.Config.Define.PK_MODE_GUARD)
{
if (_play.GetPKSystem().IsPKing() ||
_play.GetPKSystem().GetNameType() == GameBase.Config.Define.PK_NAME_BLACK)//蓝名 or 黑名
{
bCanPk = true;
bCrime = false;
}
}
//对方已隐身
if (_play.GetTimerSystem().QueryStatus(GameStruct.RoleStatus.STATUS_HIDDEN) != null)
{
bCanPk = false;
}
//闪蓝-PK犯罪状态
if (bCanPk && bGoCrime == true)
{
this.GetPKSystem().SetPKIng(true, bCrime);
}
return bCanPk;
}