public override void Die() { if (War != null) { if (EXPOwner?.Node == null) { return; } if (EXPOwner.Character.Account.GuildMember == null) { return; } if (EXPOwner.Character.Account.GuildMember.Guild.Castle != null) { return; } if (War.Participants.Count > 0 && !War.Participants.Contains(EXPOwner.Character.Account.GuildMember.Guild)) { return; } #region Conquest Stats UserConquestStats conquest = SEnvir.GetConquestStats((PlayerObject)EXPOwner); if (conquest != null) { conquest.BossKillCount++; } #endregion GuildInfo ownerGuild = SEnvir.GuildInfoList.Binding.FirstOrDefault(x => x.Castle == War.Castle); if (ownerGuild != null) { ownerGuild.Castle = null; } EXPOwner.Character.Account.GuildMember.Guild.Castle = War.Castle; foreach (SConnection con in SEnvir.Connections) { con.ReceiveChat(string.Format(con.Language.ConquestCapture, EXPOwner.Character.Account.GuildMember.Guild.GuildName, War.Castle.Name), MessageType.System); } SEnvir.Broadcast(new S.GuildCastleInfo { Index = War.Castle.Index, Owner = EXPOwner.Character.Account.GuildMember.Guild.GuildName }); War.CastleBoss = null; War.PingPlayers(); War.SpawnBoss(); if (War.EndTime - SEnvir.Now < TimeSpan.FromMinutes(15)) { War.EndTime = SEnvir.Now.AddMinutes(15); } foreach (PlayerObject player in SEnvir.Players) { player.ApplyCastleBuff(); } War = null; } base.Die(); }
public override long Attacked(MapObject attacker, long power, Element element, bool canReflect = true, bool ignoreShield = false, bool canCrit = true, bool canStruck = true) { if (attacker == null || attacker.Race != ObjectType.Player) { return(0); } PlayerObject player = (PlayerObject)attacker; if (War == null) { return(0); } if (player.Character.Account.GuildMember == null) { return(0); } if (player.Character.Account.GuildMember.Guild.Castle != null) { return(0); } if (War.Participants.Count > 0 && !War.Participants.Contains(player.Character.Account.GuildMember.Guild)) { return(0); } long result = base.Attacked(attacker, 1, element, canReflect, ignoreShield, canCrit); #region Conquest Stats switch (attacker.Race) { case ObjectType.Player: UserConquestStats conquest = SEnvir.GetConquestStats((PlayerObject)attacker); if (conquest != null) { conquest.BossDamageDealt += result; } break; case ObjectType.Monster: MonsterObject mob = (MonsterObject)attacker; if (mob.PetOwner != null) { conquest = SEnvir.GetConquestStats(mob.PetOwner); if (conquest != null) { conquest.BossDamageDealt += result; } } break; } #endregion EXPOwner = null; return(result); }