Example #1
0
        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();
        }
Example #2
0
        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);
        }