예제 #1
0
        private void ViewAllAllies(Player player, string cmd, string[] guildArray)
        {
            // Get the Guild name to check alliances for
            var guildName = "";

            if (PlayerHasNotenteredAGuildName(guildArray))
            {
                guildName = PlayerExtensions.GetGuild(player).Name.ToLower();
            }
            else
            {
                guildName = ConvertGuildNameToString(guildArray);
            }

            // Remove unneccessary [0] at start of string
            guildName = guildName.Replace("[0]", "");

            var myAlliances = GetGuildList(guildName);

            if (myAlliances == null || myAlliances.Count < 1)
            {
                PrintToChat(player, "[FF0000]Alliance Organiser[FFFFFF] : [00FF00]" + Capitalise(guildName) + "[FFFFFF] is not currently in an alliance with another guild.");
                return;
            }

            PrintToChat(player, "[FF0000]Alliance Organiser[FFFFFF] : [FF00FF]" + Capitalise(guildName) + "[FFFFFF] is currently allied with the following guilds :");
            foreach (var alliance in myAlliances)
            {
                PrintToChat(player, "[00FF00]" + alliance);
            }
        }
예제 #2
0
        private bool GuildsAreAtWar(EntityDamageEvent damageEvent)
        {
            var player      = damageEvent.Damage.DamageSource.Owner;
            var target      = damageEvent.Entity.Owner;
            var playerGuild = PlayerExtensions.GetGuild(player).Name.ToLower();
            var targetGuild = PlayerExtensions.GetGuild(target).Name.ToLower();

            //PrintToChat(player, playerGuild.ToLower() + " " + targetGuild.ToLower());
            //PrintToChat(player, "Number of wars = " + WarList.Count);
            ////PrintToChat(player, "First war in list = " + WarList[0][0] + " " + WarList[0][1] + " " + WarList[0][2]);

            foreach (var war in WarList)
            {
                PrintToChat(player, playerGuild.ToLower() + " " + targetGuild.ToLower() + " " + war[1].ToLower() + " " + war[2].ToLower());
                if (war[2].ToLower() == playerGuild.ToLower() && war[1].ToLower() == targetGuild.ToLower())
                {
                    return(true);
                }
                if (war[1].ToLower() == playerGuild.ToLower() && war[2].ToLower() == targetGuild.ToLower())
                {
                    return(true);
                }
            }

            return(false);
        }
예제 #3
0
 private void updatePlayersData()
 {
     foreach (Player player in getPlayersOnline())
     {
         //new player
         PlayerInfos playerInfos = getDatasFromPlayer(player);
         if (playerInfos == null)
         {
             _PlayersInfos.Add(
                 new PlayerInfos {
                 playerId   = player.Id,
                 playerName = player.Name,
                 guildName  = PlayerExtensions.GetGuild(player).Name,
             }
                 );
         }
         else
         {
             //update player
             playerInfos.playerId   = player.Id;
             playerInfos.playerName = player.Name;
             playerInfos.guildName  = PlayerExtensions.GetGuild(player).Name;
         }
         SaveData();
     }
 }
예제 #4
0
        private void DenyAllyRequest(Player player, string cmd, string[] guildArray)
        {
            // Check the player has specified a guild to accept
            if (PlayerHasNotenteredAGuildName(guildArray))
            {
                PrintToChat(player, "[FF0000]Alliance Organiser[FFFFFF] : To deny an alliance request, type [00FF00]/denyally [FF00FF]<guildname>.");
                return;
            }

            // Get the full guild name
            var guildName = ConvertGuildNameToString(guildArray);

            // Get my guild name
            var myGuild = PlayerExtensions.GetGuild(player).Name;

            // Remove unneccessary [0] at start of string
            myGuild   = myGuild.Replace("[0]", "");
            guildName = guildName.Replace("[0]", "");

            // Check if the request is in there
            var allianceRequestNumber = AllianceRequestAlreadyExists(myGuild, guildName);

            if (allianceRequestNumber >= 0)
            {
                PrintToChat("[FF0000]Alliance Organiser[FFFFFF] : The alliance request with [00FF00]" + Capitalise(guildName) + "[FFFFFF] has been denied.");
                requestList.RemoveAt(allianceRequestNumber);
                return;
            }
            PrintToChat(player, "[FF0000]Alliance Organiser[FFFFFF] : There is no outstanding request with this guild to deny.");

            // Save Data
            SaveAllianceListData();
        }
예제 #5
0
        private void EndThisAlliance(Player player, string cmd, string[] guildArray)
        {
            // Check the player has specified an alliance to end
            if (PlayerHasNotenteredAGuildName(guildArray))
            {
                PrintToChat(player, "[FF0000]Alliance Organiser[FFFFFF] : To end an alliance, type [00FF00]/endalliance [FF00FF]<guildname>.");
                return;
            }

            // Get the guild name
            var guildName = ConvertGuildNameToString(guildArray);

            // Get my own guild name
            var myGuild = PlayerExtensions.GetGuild(player).Name;

            // Remove unneccessary [0] at start of string
            myGuild   = myGuild.Replace("[0]", "");
            guildName = guildName.Replace("[0]", "");

            // Check the alliance exists
            if (!AllianceAlreadyExists(myGuild, guildName))
            {
                PrintToChat(player, "[FF0000]Alliance Organiser[FFFFFF] : You are not currently allied with this guild.");
                return;
            }

            // Report that the alliance is ending
            PrintToChat("[FF0000]Alliance Organiser [FF00FF](ALLIANCE ENDED!) [FFFFFF]: [00FF00]" + player.DisplayName + " [FFFFFF]from [00FF00]" + Capitalise(myGuild) + " [FFFFFF]has ended the Alliance with [00FF00]" + Capitalise(guildName) + "[FFFFFF]! They are no longer friends!");

            // End the alliance
            RemoveAlliance(myGuild.ToLower(), guildName.ToLower());

            // Save Data
            SaveAllianceListData();
        }
예제 #6
0
        private void ViewAllyRequestsForMyGuild(Player player, string cmd)
        {
            // Get players guild
            var myGuild = PlayerExtensions.GetGuild(player).Name;

            if (myGuild == null)
            {
                PrintToChat(player, "You don't appear to be in a guild!");
                return;
            }

            // Check for Requests this player has made
            var myList = new Collection <string>();

            foreach (var request in requestList)
            {
                if (request[0] == myGuild)
                {
                    myList.Add(request[1]);
                }
            }
            if (myList.Count > 0)
            {
                PrintToChat(player, "[FF0000]Alliance Organiser[FFFFFF] : You have requested an alliance with the following guilds :");
                foreach (var guild in myList)
                {
                    PrintToChat(player, "[00FF00]" + guild);
                }
            }
            else
            {
                PrintToChat(player, "[FF0000]Alliance Organiser[FFFFFF] : You have not requested any alliances currently.");
            }

            // Check for requests that have been sent to this player
            myList = new Collection <string>();
            foreach (var request in requestList)
            {
                if (request[1] == myGuild)
                {
                    myList.Add(request[0]);
                }
            }
            if (myList.Count > 0)
            {
                PrintToChat(player, "[FF0000]Alliance Organiser[FFFFFF] : The following guilds have sent you an ally request :");
                foreach (var guild in myList)
                {
                    PrintToChat(player, "[00FF00]" + guild);
                }
            }
            else
            {
                PrintToChat(player, "[FF0000]Alliance Organiser[FFFFFF] : You have not had any alliance requests currently.");
            }
        }
예제 #7
0
 bool TryingToAllySelf(Player player, Player invitedPlayer)
 {
     LoadLists();
     if (PlayerExtensions.GetGuild(player) == PlayerExtensions.GetGuild(invitedPlayer))
     {
         PrintToChat(player, string.Format(GetMessage("SelfAlly", player.Id.ToString())));
         return(true);
     }
     return(false);
 }
예제 #8
0
        private void AcceptAllyRequest(Player player, string cmd, string[] guildArray)
        {
            // Check the player has specified a guild to accept
            if (PlayerHasNotenteredAGuildName(guildArray))
            {
                PrintToChat(player, "[FF0000]Alliance Organiser[FFFFFF] : To accept an alliance request, type [00FF00]/acceptally [FF00FF]<guildname>.");
                return;
            }

            // Convert guild array to string
            var guildName = ConvertGuildNameToString(guildArray);

            // Get my own guild name
            var myGuild = PlayerExtensions.GetGuild(player).Name;

            // Remove unneccessary [0] at start of string
            myGuild   = myGuild.Replace("[0]", "");
            guildName = guildName.Replace("[0]", "");

            // Check if this invitation is in the request list
            var allianceRequestNumber = AllianceRequestAlreadyExists(myGuild, guildName);

            if (allianceRequestNumber == -1)
            {
                PrintToChat(player, "[FF0000]Alliance Organiser[FFFFFF] : There is no Alliance request for that guild to accept, my Lord.");
                return;
            }

            // Check if already in an alliance with this guild
            var allianceExists = AllianceAlreadyExists(myGuild, guildName);

            if (allianceExists)
            {
                PrintToChat(player, "[FF0000]Alliance Organiser[FFFFFF] : You are already allied with that guild, my Lord.");
                return;
            }

            // Broadcast an accept message
            PrintToChat("[FF0000]Alliance Organiser [FF00FF](NEW ALLIANCE) [FFFFFF]: [00FF00]" + Capitalise(myGuild) + " [FFFFFF]has formed a new Alliance with [00FF00]" + Capitalise(guildName) + "[FFFFFF]! May this friendship last through the ages!");

            // Remove request from Request List
            requestList.RemoveAt(allianceRequestNumber);

            // Add new Alliance to the Alliance List
            AddGuildsToTheAllianceList(myGuild, guildName);

            // Save Data
            SaveAllianceListData();
        }
예제 #9
0
        private void GetAllPlayerEntitiesAndCompareToCrest()
        {
            LoadDefaultMessages();
            Player        ReportReceiver      = null;
            string        TrespassedGuildName = null;
            string        TrespasserGuild     = null;
            string        ReportMessage       = "";
            List <Entity> _globalEntList      = new List <Entity>();

            _globalEntList = Entity.GetAll();
            var    crestScheme      = SocialAPI.Get <CrestScheme>();
            Entity TrespasserEntity = null;

            foreach (Entity ent in _globalEntList)
            {
                if (ent.IsPlayer && crestScheme.GetCrestAt(ent.Position) != null && crestScheme.GetCrestAt(ent.Position).GuildName.ToLower() != PlayerExtensions.GetGuild(ent.Owner).Name.ToLower())
                {
                    TrespassedGuildName = crestScheme.GetCrestAt(ent.Position).GuildName;
                    TrespasserEntity    = ent;
                    TrespasserGuild     = PlayerExtensions.GetGuild(ent.Owner).Name;

                    time = Server.Instance.Time.DateCurrent.ToShortTimeString();
                }
            }
            foreach (Player player in Server.AllPlayers)
            {
                if (PlayerExtensions.GetGuild(player).Name != TrespassedGuildName)
                {
                    continue;
                }
                ReportReceiver = player;
            }
            if (ReportReceiver == null)
            {
                if (TrespasserGuild == null)
                {
                    return;
                }

                _NightsWatchReports.Add(new string[] { TrespasserGuild, TrespassedGuildName, time.ToString() });
                SaveWatchReports();
                return;
            }
            ReportMessage = ReportMessage + string.Format(GetMessage("OnlineReport", ReportReceiver.Id.ToString()), TrespasserGuild);
            PrintToChat(ReportReceiver, ReportMessage);
        }
예제 #10
0
        private void ConfirmTheBounty(Player player, Options selection, Dialogue dialogue, object contextData)
        {
            if (selection != Options.Yes)
            {
                PrintToChat(player, "[FF0000]Assassin's Guild[FFFFFF] : You have cancelled the bounty request.");
                return;
            }

            var playerName = player.Name;
            var guild      = PlayerExtensions.GetGuild(player).Name;

            // Confirm the bounty in the list
            //var bountyDetails = new string[5];
            foreach (var bounty in bountyList)
            {
                if (bounty[0] == playerName.ToLower() && bounty[4] != "active")
                {
                    string resource     = bounty[2];
                    string amountAsText = bounty[3];
                    string targetName   = bounty[1];

                    // Make sure the player has enough resource for this!
                    if (PlayerHasTheResources(player, resource, amountAsText) == false)
                    {
                        PrintToChat(player, "[FF0000]Assassin's Guild[FFFFFF] : You do not have the resources for this bounty in your inventory!");
                        return;
                    }

                    PrintToChat(player, "[FF0000]Assassin's Guild[FFFFFF] : Setting up bounty...");

                    // Remove the resource
                    int removeAmount = Int32.Parse(bounty[3]);
                    RemoveItemsFromInventory(player, bounty[2], removeAmount);

                    bounty[4] = "active";

                    var message = "[FF0000]Assassin's Guild[FFFFFF] : [00FF00]" + playerName + "[FFFFFF] of [FF00FF]" + guild + "[FFFFFF] has set a bounty reward of [FF0000]" + amountAsText + " " + resource + "[FFFFFF] for the death of [00FF00]" + Capitalise(targetName) + "[FFFFFF]!";
                    PrintToChat(message);
                }
            }


            // Save the data.
            SaveBountyListData();
        }
예제 #11
0
        public static void Postfix(ItemDrop.ItemData __instance, ref float __result)
        {
            var player        = PlayerExtensions.GetPlayerWithEquippedItem(__instance);
            var totalParryMod = 0f;

            ModifyWithLowHealth.Apply(player, MagicEffectType.ModifyParry, effect =>
            {
                totalParryMod += MagicEffectsHelper.GetTotalActiveMagicEffectValue(player, __instance, effect, 0.01f);
            });

            __result *= 1.0f + totalParryMod;
            if (player != null && player.m_leftItem == null && player.HasActiveMagicEffect(MagicEffectType.Duelist))
            {
                __result += __instance.GetDamage().GetTotalDamage() / 2 * player.GetTotalActiveMagicEffectValue(MagicEffectType.Duelist, 0.01f);
            }

            __result = (float)Math.Round(__result, 1);
        }
예제 #12
0
        bool IsAllianceLeader(Player player)
        {
            LoadLists();
            var playerGuildOwnerId = PlayerExtensions.GetGuild(player).OwnerId;

            if (playerGuildOwnerId == 0)
            {
                return(false);
            }
            for (var i = 0; i < _AllianceList.Count; i++)
            {
                if (_AllianceList.ElementAt(i).MemberGuilds.Contains(SocialAPI.GetGroupId(player.Id)) && _AllianceList.ElementAt(i).Owner == player.Id)
                {
                    return(true);
                }
            }
            return(false);
        }
예제 #13
0
        private bool AtOwnBase(Player player)
        {
            var PlayerPosition = player.Entity.Position;
            var crestScheme    = SocialAPI.Get <CrestScheme>();

            if (crestScheme.GetCrestAt(PlayerPosition) == null)
            {
                return(false);
            }
            var crest       = crestScheme.GetCrestAt(PlayerPosition);
            var playerGuild = PlayerExtensions.GetGuild(player).Name;
            var crestGuild  = crest.GuildName;

            if (playerGuild == crestGuild)
            {
                return(true);
            }
            return(false);
        }
예제 #14
0
        public static void Postfix(ItemDrop.ItemData __instance, ref float __result)
        {
            var player = PlayerExtensions.GetPlayerWithEquippedItem(__instance);

            // Apply this item's armor for just this item
            var totalArmorMod = __instance.GetMagicItem()?.GetTotalEffectValue(MagicEffectType.ModifyArmor, 0.01f) ?? 0f;

            // apply +armor from set bonuses globally
            if (player != null)
            {
                totalArmorMod += MagicEffectsHelper.GetTotalActiveSetEffectValue(player, MagicEffectType.ModifyArmor, 0.01f);
            }

            // Apply +armor (health critical) for all items
            ModifyWithLowHealth.ApplyOnlyForLowHealth(player, MagicEffectType.ModifyArmor, effect =>
            {
                totalArmorMod += MagicEffectsHelper.GetTotalActiveMagicEffectValue(player, __instance, effect, 0.01f);
            });

            __result *= 1.0f + totalArmorMod;
        }
예제 #15
0
        private void ContinueWithRankList(Player player, Options selection, Dialogue dialogue, object contextData, int itemsPerPage, int currentItemCount)
        {
            if (selection != Options.Yes)
            {
                //Leave
                return;
            }

            if ((currentItemCount + itemsPerPage) > rankList.Count)
            {
                itemsPerPage = rankList.Count - currentItemCount;
            }

            var itemText = "";
            var i        = currentItemCount;

            foreach (var person in rankList)
            {
                string message = "[FFFFFF]" + Capitalise(person.Key) + " - (" + Capitalise(GetRank(person.Value)) + ")\n";
                itemText = itemText + message;
                i++;
                if (i >= itemsPerPage + currentItemCount)
                {
                    break;
                }
            }

            currentItemCount = currentItemCount + itemsPerPage;

            // Display the Next page
            if (currentItemCount < rankList.Count)
            {
                player.ShowConfirmPopup("Duke's Castle Rankings", itemText, "Next Page", "Exit", (options, dialogue1, data) => ContinueWithRankList(player, options, dialogue1, data, itemsPerPage, currentItemCount));
            }
            else
            {
                PlayerExtensions.ShowPopup(player, "Duke's Castle Rankings", itemText, "Yes", (newselection, dialogue2, data) => DoNothing(player, newselection, dialogue2, data));
            }
        }
예제 #16
0
        private void EndSpecificWarOnServer(Player player, string cmd, string[] playerToEndWar)
        {
            if (!player.HasPermission("admin"))
            {
                PrintToChat(player, "Only an admin may end a guild war!!");
                return;
            }

            var playerName = playerToEndWar[0];

            if (playerToEndWar.Length > 1)
            {
                for (var i = 1; i < playerToEndWar.Length; i++)
                {
                    playerName = string.Format(playerName + " {0}", playerToEndWar[i]);
                }
            }

            Player targetPlayer = Server.GetPlayerByName(playerName);

            if (targetPlayer == null)
            {
                PrintToChat(player, "That player is currently not on the server.");
            }
            var guildName = PlayerExtensions.GetGuild(targetPlayer).DisplayName;

            //PrintToChat(player, "Ending all wars for guild : [00FF00]" + guildName);

            // End all Wars for this guild
            for (var i = 0; i < WarList.Count; i++)
            {
                if (string.Compare(guildName.ToLower(), WarList[i][1].ToLower()) == 0 || string.Compare(guildName.ToLower(), WarList[i][2].ToLower()) == 0)
                {
                    PrintToChat("[FF0000]Ending all Wars for :[00FF00]" + guildName);
                    WarList.RemoveAt(i);
                    i--;
                }
            }
        }
예제 #17
0
        private void OnPlayerSpawn(PlayerFirstSpawnEvent e)
        {
            List <string[]> TempList = new List <string[]>();

            LoadDefaultMessages();
            var Message = "";

            LoadWatchReports();
            foreach (string[] report in _NightsWatchReports)
            {
                if (report[1] != (PlayerExtensions.GetGuild(e.Player).Name))
                {
                    TempList.Add(report);
                    continue;
                }
                Message = string.Format(GetMessage("OfflineReport", e.Player.Id.ToString()), report[2], report[0]);
                PrintToChat(e.Player, Message);
            }
            _NightsWatchReports.Clear();
            _NightsWatchReports.AddRange(TempList);
            SaveWatchReports();
        }
예제 #18
0
        private void getGuild(Player player, string cmd, string[] args)
        {
            // if we only want admins to be able to use /guildname
            // and the user does not have admin permissions, let user know then do nothing.
            if (adminOnly && !player.HasPermission("admin"))
            {
                PrintToChat(player, "Only an admin may check guild names!");
                return;
            }

            // if the user has only typed /guildname
            // we want to tell them how to use the command
            if (args.Length < 1)
            {
                PrintToChat(player, "Usage: /guildname username");
                return;
            }

            // if there is a name given after /guildname
            // print to the typer, the guildname for the given player
            if (args[0] != null)
            {
                // find the target player
                Player toGetGuild = Server.GetPlayerByName(args[0]);
                //if we can't find the target tell the user and stop their request.
                if (toGetGuild == null)
                {
                    PrintToChat(player, "Player not found - are they online?");
                    return;
                }
                // otherwise we found the target player, so get their guild
                string playerguild = PlayerExtensions.GetGuild(toGetGuild).DisplayName;
                // and finally tell the user the player's guild
                PrintToChat(player, playerguild);
            }
        }
예제 #19
0
        private void DeclareWarOnGuild(Player player, string cmd, string[] targetPlayerNameArray)
        {
            //if the player only types /delcarewar, show the instructions on what to do
            if (targetPlayerNameArray.Length < 1)
            {
                PrintToChat(player, "[FF0000]Declare War Instructions[FFFFFF] : Type /declarewar followed by the Player's name to declare war on that player's guild. THIS CANNOT BE UNDONE!");
                return;
            }

            // Convert the player name string array to a string
            var targetPlayerName = targetPlayerNameArray[0];

            if (targetPlayerNameArray.Length > 1)
            {
                for (var i = 1; i < targetPlayerNameArray.Length; i++)
                {
                    targetPlayerName = string.Format(targetPlayerName + " {0}", targetPlayerNameArray[i]);
                }
            }

            // Find the chosen target player
            Player targetPlayer = Server.GetPlayerByName(targetPlayerName);

            //Check that this player can be found
            if (targetPlayer == null)
            {
                PrintToChat(player, "[FF0000]War Squire[FFFFFF] : That person is not available. Perhaps they exist only in your imagination my Lord?");
                return;
            }

            // Check they are not trying to declare war on themselves
            if (string.Compare(targetPlayerName.ToLower(), player.DisplayName.ToLower()) == 0)
            {
                PrintToChat(player, "[FF0000]War Squire[FFFFFF] : You can't declare war upon thyself, my Lord! This is crazy talk!");
                return;
            }

            // Get the player's guild
            if (PlayerExtensions.GetGuild(targetPlayer).DisplayName == null)
            {
                PrintToChat(player, "[FF0000]War Squire[FFFFFF] : My Lord, you have not yet formed a guild. You must do so before you can declare a war!");
                return;
            }
            string playerGuild = PlayerExtensions.GetGuild(targetPlayer).Name.ToLower();

            // Check they are not in the same guild
            string myGuild = PlayerExtensions.GetGuild(player).Name.ToLower();

            // Remove unneccessary [0] at start of string
            playerGuild = playerGuild.Replace("[0]", "");
            myGuild     = myGuild.Replace("[0]", "");

            if (string.Compare(playerGuild, myGuild) == 0)
            {
                PrintToChat(player, "[FF0000]War Squire[FFFFFF] : My Lord! That is your friend! A trusted Ally! You can't declare war on them! It would get... awkward...!");
                return;
            }

            // Check that they aren't already in a war with this guild
            foreach (var war in WarList)
            {
                if ((string.Compare(myGuild, war[1]) == 0 && string.Compare(playerGuild, war[2]) == 0) || (string.Compare(myGuild, war[2]) == 0 && string.Compare(playerGuild, war[1]) == 0))
                {
                    PrintToChat(player, "[FF0000]War Squire[FFFFFF] : We are already at war with that guild, my Lord.");
                    return;
                }
            }

            // Tell the World that war has been declared!
            string warText = player.DisplayName + "[FFFFFF] ([FF0000]Declaring War[FFFFFF]) : [00FF00]" + Capitalise(myGuild) + " [FFFFFF]has declared war on [00FF00]" + Capitalise(playerGuild) + "[FFFFFF]! They have [00FF00]" + WarPrepTimeHours + "[FFFFFF]hrs, [00FF00]" + WarPrepTimeMinutes + "[FFFFFF]mins and [00FF00]" + WarPrepTimeSeconds + "[FFFFFF]secs to prepare for war!";

            PrintToChat(warText);

            // Begin the War!
            CommenceWar(myGuild + playerGuild, myGuild, playerGuild);

            // Save the data
            SaveWarListData();
        }
예제 #20
0
 bool HasPermission(Player player, string perm = null)
 {
     return(PlayerExtensions.HasPermission(player, perm));
 }
예제 #21
0
        public static void Postfix(ItemDrop.ItemData __instance, ref HitData.DamageTypes __result)
        {
            if (!__instance.IsMagic())
            {
                return;
            }

            var magicItem          = __instance.GetMagicItem();
            var magicItemskillType = __instance.m_shared.m_skillType;

            var player = PlayerExtensions.GetPlayerWithEquippedItem(__instance);

            // Add damages first
            __result.m_blunt     += MagicEffectsHelper.GetTotalActiveMagicEffectValue(player, magicItem, MagicEffectType.AddBluntDamage);
            __result.m_slash     += MagicEffectsHelper.GetTotalActiveMagicEffectValue(player, magicItem, MagicEffectType.AddSlashingDamage);
            __result.m_pierce    += MagicEffectsHelper.GetTotalActiveMagicEffectValue(player, magicItem, MagicEffectType.AddPiercingDamage);
            __result.m_fire      += MagicEffectsHelper.GetTotalActiveMagicEffectValue(player, magicItem, MagicEffectType.AddFireDamage);
            __result.m_frost     += MagicEffectsHelper.GetTotalActiveMagicEffectValue(player, magicItem, MagicEffectType.AddFrostDamage);
            __result.m_lightning += MagicEffectsHelper.GetTotalActiveMagicEffectValue(player, magicItem, MagicEffectType.AddLightningDamage);
            __result.m_poison    += MagicEffectsHelper.GetTotalActiveMagicEffectValue(player, magicItem, MagicEffectType.AddPoisonDamage);
            __result.m_spirit    += MagicEffectsHelper.GetTotalActiveMagicEffectValue(player, magicItem, MagicEffectType.AddSpiritDamage);

            if (magicItemskillType == Skills.SkillType.Axes)
            {
                __result.m_chop += MagicEffectsHelper.GetTotalActiveMagicEffectValue(player, magicItem, MagicEffectType.AddSlashingDamage);
            }
            else if (magicItemskillType == Skills.SkillType.Pickaxes)
            {
                __result.m_pickaxe += MagicEffectsHelper.GetTotalActiveMagicEffectValue(player, magicItem, MagicEffectType.AddPiercingDamage);
            }

            // Then modify
            if (MagicEffectsHelper.HasActiveMagicEffect(player, magicItem, MagicEffectType.ModifyPhysicalDamage))
            {
                var totalDamageMod = MagicEffectsHelper.GetTotalActiveMagicEffectValue(player, magicItem, MagicEffectType.ModifyPhysicalDamage, 0.01f);
                var modifier       = 1.0f + totalDamageMod;

                __result.m_blunt   *= modifier;
                __result.m_slash   *= modifier;
                __result.m_pierce  *= modifier;
                __result.m_chop    *= modifier;
                __result.m_pickaxe *= modifier;
            }

            if (MagicEffectsHelper.HasActiveMagicEffect(player, magicItem, MagicEffectType.ModifyElementalDamage))
            {
                var totalDamageMod = MagicEffectsHelper.GetTotalActiveMagicEffectValue(player, magicItem, MagicEffectType.ModifyElementalDamage, 0.01f);
                var modifier       = 1.0f + totalDamageMod;

                __result.m_fire      *= modifier;
                __result.m_frost     *= modifier;
                __result.m_lightning *= modifier;
                __result.m_poison    *= modifier;
                __result.m_spirit    *= modifier;
            }

            var damageMod = 0f;

            ModifyWithLowHealth.Apply(player, MagicEffectType.ModifyDamage, effect =>
            {
                if (MagicEffectsHelper.HasActiveMagicEffect(player, magicItem, effect))
                {
                    damageMod += MagicEffectsHelper.GetTotalActiveMagicEffectValue(player, magicItem, effect, 0.01f);
                }
            });
            __result.Modify(1.0f + damageMod);

            if (player != null && player.GetSEMan().HaveStatusEffect("BerserkerStatusEffect"))
            {
                var percentLife  = player.GetHealthPercentage();
                var berserkerMod = Mathf.Lerp(2.0f, 0.5f, percentLife);
                __result.Modify(1.0f + berserkerMod);
            }
        }
예제 #22
0
        private void RequestAllianceWithPlayer(Player player, string cmd, string[] playerArray)
        {
            if (playerArray.Length < 1)
            {
                PrintToChat(player, "[FF0000]Alliance Organiser[FFFFFF] : To request an alliance, type [00FF00]/requestally [FF00FF]<player_name>.");
                return;
            }

            // Get players involved in the alliance
            var playerName       = player.DisplayName;
            var targetPlayerName = playerArray[0];

            if (playerArray.Length > 1)
            {
                for (var i = 1; i < playerArray.Length; i++)
                {
                    targetPlayerName = string.Format(targetPlayerName + " {0}", playerArray[i]);
                }
            }

            // Find the chosen target player
            Player targetPlayer = Server.GetPlayerByName(targetPlayerName);

            //Check that this player can be found
            if (targetPlayer == null)
            {
                PrintToChat(player, "[FF0000]Alliance Organiser[FFFFFF] : That person is not currently awake.");
                return;
            }

            // Check they are not trying to ally with themselves
            if (string.Compare(targetPlayerName.ToLower(), player.DisplayName.ToLower()) == 0)
            {
                PrintToChat(player, "[FF0000]Alliance Organiser[FFFFFF] : Alliances with yourself? Are you in need of friends that much, my Lord?");
                return;
            }

            // Get the player's guild
            if (PlayerExtensions.GetGuild(targetPlayer).DisplayName == null)
            {
                PrintToChat(player, "[FF0000]Alliance Organiser[FFFFFF] : It would appear you have no guild, my Lord! I don't know how that happened...");
                return;
            }
            string playerGuild = PlayerExtensions.GetGuild(targetPlayer).Name;

            // Check they are not in the same guild
            string myGuild = PlayerExtensions.GetGuild(player).Name;

            // Remove unneccessary [0] at start of string
            playerGuild = playerGuild.Replace("[0]", "");
            myGuild     = myGuild.Replace("[0]", "");

            if (string.Compare(playerGuild, myGuild) == 0)
            {
                PrintToChat(player, "[FF0000]Alliance Organiser[FFFFFF] : That person is already a part of your guild, my Lord. An alliance is somewhat unnecessary at this juncture...");
                return;
            }

            //Check that the request hasn't already been sent.
            var allianceRequestNumber = AllianceRequestAlreadyExists(myGuild, playerGuild);

            if (allianceRequestNumber >= 0)
            {
                PrintToChat(player, "[FF0000]Alliance Organiser[FFFFFF] : There is already an outstanding ally request between these two guilds.");
                return;
            }

            // Check that you are not already allied
            if (allianceList.ContainsKey(myGuild.ToLower()))
            {
                var myAlliances = allianceList[myGuild.ToLower()];
                foreach (var alliance in myAlliances)
                {
                    if (alliance == playerGuild.ToLower())
                    {
                        PrintToChat(player, "[FF0000]Alliance Organiser[FFFFFF] : You are already allied with this guild, my Lord.");
                        return;
                    }
                }
            }

            // Send Alliance Request
            PrintToChat("[FF0000]Alliance Organiser : [00FF00]" + Capitalise(playerName) + "[FFFFFF] from [00FF00]" + Capitalise(myGuild) + "[FFFFFF] is requesting a formal Alliance with [00FF00]" + Capitalise(playerGuild) + "[FFFFFF].");
            PrintToChat("[FFFFFF]Type [00FF00]/acceptally [FF00FF]<guild_name> [FFFFFF]to accept the request or [00FF00]/denyally [FF00FF]<guild_name> [FFFFFF]to deny the request.");

            // Add request to the RequestAlliance list
            var requestDetails = new Collection <string>();

            requestDetails.Add(myGuild);
            requestDetails.Add(playerGuild);
            requestList.Add(requestDetails);

            // Save Data
            SaveAllianceListData();
        }
예제 #23
0
        void SendInviteToPlayer(Player player, Options options, Dialogue dialogue1, object data)
        {
            LoadLists();
            if (dialogue1.ValueMessage.IsNullEmptyOrWhite())
            {
                PrintToChat(player, string.Format(GetMessage("NoArgument", player.Id.ToString())));
                return;
            }
            Player invitedPlayer = Server.GetPlayerByName(dialogue1.ValueMessage);

            if (invitedPlayer == null)
            {
                PrintToChat(player, string.Format(GetMessage("PlayerOfflineOrUnavailable", player.Id.ToString())));
                return;
            }
            ulong invitedPlayerGuildId = SocialAPI.GetGroupId(invitedPlayer.Id);

            if (invitedPlayerGuildId == 0)
            {
                PrintToChat(player, string.Format(GetMessage("GuildLess", player.Id.ToString())));
                return;
            }
            if (!IsAllied(player.GetGuild()))
            {
                if (!IsAllied(invitedPlayer.GetGuild()))
                {
                    if (_AllianceList.Count >= MaxAlliances)
                    {
                        PrintToChat(player, string.Format(GetMessage("MaxAlliancesReached", player.Id.ToString()), MaxAlliances.ToString()));
                        return;
                    }
                    invitedPlayer.ShowConfirmPopup(string.Format(GetMessage("TitleInviteAlly", player.Id.ToString())), string.Format(GetMessage("TextSendInviteToPlayer", invitedPlayer.Id.ToString()), player.DisplayName.ToString()), string.Format(GetMessage("ACCEPTBUTTON")), string.Format(GetMessage("DECLINEBUTTON")), (selection, dialogue, data1) => MergeTwoGuildsToNewAlliance(player, invitedPlayer, selection, dialogue1, data));
                    return;
                }
                Player AllianceLeader = Server.GetPlayerById(AllianceLeaderId(invitedPlayer));
                if (Server.AllPlayers.Contains(AllianceLeader))
                {
                    if (options == Options.OK)
                    {
                        if (TryingToAllySelf(player, invitedPlayer))
                        {
                            return;
                        }
                        if (AllianceFull(invitedPlayer))
                        {
                            PrintToChat(player, string.Format(GetMessage("MaxGuildsReached2", player.Id.ToString())));
                            PrintToChat(invitedPlayer, string.Format(GetMessage("MaxGuildsReached3", player.Id.ToString()), player.Name));
                            return;
                        }
                        AllianceLeader.ShowConfirmPopup(string.Format(GetMessage("TitleSendInviteToPlayerApplication", AllianceLeader.Id.ToString())), string.Format(GetMessage("TextSendInviteToPlayerApplication", AllianceLeader.Id.ToString()), player.DisplayName.ToString()), string.Format(GetMessage("ACCEPTBUTTON", AllianceLeader.Id.ToString())), string.Format(GetMessage("DECLINEBUTTON", AllianceLeader.Id.ToString())), (selection, dialogue, data1) => MergeAllyToPlayer(player, AllianceLeader, selection, dialogue1, data));
                        return;
                    }
                    PrintToChat(player, string.Format(GetMessage("CANCELLED", player.Id.ToString())));
                    return;
                }
                PrintToChat(player, string.Format(GetMessage("LeaderOffline", player.Id.ToString())));
            }
            if (!IsAllied(invitedPlayer.GetGuild()))
            {
                if (AllianceFull(player))
                {
                    PrintToChat(player, string.Format(GetMessage("MaxGuildsReached1", player.Id.ToString())));
                    return;
                }
                if (!IsGuildOwner(invitedPlayer))
                {
                    ulong  GuildOwnerId = PlayerExtensions.GetGuild(invitedPlayer).OwnerId;
                    Player GuildOwner   = Server.GetPlayerById(GuildOwnerId);
                    if (Server.AllPlayers.Contains(GuildOwner))
                    {
                        GuildOwner.ShowConfirmPopup(string.Format(GetMessage("TitleInviteAlly", GuildOwner.Id.ToString())), string.Format(GetMessage("TextSendInviteToPlayer", GuildOwner.Id.ToString()), player.DisplayName.ToString()), string.Format(GetMessage("ACCEPTBBUTTON", GuildOwner.Id.ToString())), string.Format(GetMessage("DECLINEBUTTON", GuildOwner.Id.ToString())), (selection, dialogue, data1) => MergePlayerToAlly(player, GuildOwner, selection, dialogue1, data));
                        return;
                    }
                    PrintToChat(player, "");
                    return;
                }
                if (!Server.AllPlayers.Contains(invitedPlayer))
                {
                    PrintToChat(player, string.Format(GetMessage("LeaderOffline2", player.Id.ToString())));
                    return;
                }

                invitedPlayer.ShowConfirmPopup(string.Format(GetMessage("TitleInviteAlly", invitedPlayer.Id.ToString())), string.Format(GetMessage("TextSendInviteToPlayer", invitedPlayer.Id.ToString()), player.DisplayName.ToString()), string.Format(GetMessage("ACCEPTBBUTTON", invitedPlayer.Id.ToString())), string.Format(GetMessage("DECLINEBUTTON", invitedPlayer.Id.ToString())), (selection, dialogue, data1) => MergePlayerToAlly(player, invitedPlayer, selection, dialogue1, data));
                return;
            }
            if (CountMergingMembers(player, invitedPlayer) > MaxMembersPerAlliance)
            {
                PrintToChat(player, string.Format(GetMessage("AttemptMergeExceedSender", player.Id.ToString())));
                PrintToChat(invitedPlayer, string.Format(GetMessage("AttemptMergeExceedReceiver", invitedPlayer.Id.ToString())));
                return;
            }
            if (TryingToAllySelf(player, invitedPlayer))
            {
                return;
            }
            if (TryingToAllyWithAlly(player, invitedPlayer))
            {
                return;
            }
            if (!IsAllianceLeader(invitedPlayer))
            {
                Player AllianceLeader = (Server.GetPlayerById(AllianceLeaderId(invitedPlayer)));
                if (!Server.AllPlayers.Contains(AllianceLeader))
                {
                    PrintToChat(player, string.Format(GetMessage("LeaderOffline", player.Id.ToString())));
                    return;
                }
                AllianceLeader.ShowConfirmPopup(string.Format(GetMessage("TitleMergeTwoAlliances", AllianceLeader.Id.ToString())), string.Format(GetMessage("TextMergeTwoAlliancesReceiver", AllianceLeader.Id.ToString()), player.DisplayName.ToString()), string.Format(GetMessage("ACCEPTBBUTTON", AllianceLeader.Id.ToString())), string.Format(GetMessage("DECLINEBUTTON", AllianceLeader.Id.ToString())), (selection, dialogue, data1) => MergeTwoAlliances(player, AllianceLeader, selection, dialogue1, data));
                return;
            }
            if (!Server.AllPlayers.Contains(invitedPlayer))
            {
                PrintToChat(player, string.Format(GetMessage("LeaderOffline", player.Id.ToString())));
                return;
            }
            invitedPlayer.ShowConfirmPopup(string.Format(GetMessage("TitleMergeTwoAlliances", invitedPlayer.Id.ToString())), string.Format(GetMessage("TextMergeTwoAlliancesReceiver", invitedPlayer.Id.ToString()), player.DisplayName.ToString()), string.Format(GetMessage("ACCEPTBBUTTON", invitedPlayer.Id.ToString())), string.Format(GetMessage("DECLINEBUTTON", invitedPlayer.Id.ToString())), (selection, dialogue, data1) => MergeTwoAlliances(player, invitedPlayer, selection, dialogue1, data));
            return;
        }
예제 #24
0
 private void Popup2(Player player)
 {
     PlayerExtensions.ShowPopup(player, "Buttons?", "Do you want to press a button?", "Yes", (selection, dialogue, data) => HandlePopup(player, selection, dialogue, data));
 }
예제 #25
0
        private void UpdateGuildStatusForPlayer(Player player)
        {
            if (player == null)
            {
                return;
            }
            var playerName = player.Name.ToLower();
            var thisGuild  = PlayerExtensions.GetGuild(player);

            if (thisGuild == null)
            {
                return;
            }
            var guildName = PlayerExtensions.GetGuild(player).Name;

            if (guildInformation == null)
            {
                return;
            }

            foreach (var guild in guildInformation)
            {
                // Is the player in here?
                foreach (var playerFound in guild)
                {
                    if (playerFound == playerName)
                    {
                        // Are they in the right guild
                        if (guild[0] == guildName)
                        {
                            SaveGuildInfoData();
                            return;
                        }
                        //Otherwise remove them from this guild
                        else
                        {
                            guild.Remove(playerFound);
                            SaveGuildInfoData();
                            UpdateGuildStatusForPlayer(player);
                            return;
                        }
                    }
                }
            }

            // We didn't find the player so add him.

            //Does his guild already exist?
            foreach (var guild in guildInformation)
            {
                foreach (var member in guild)
                {
                    if (member == guildName)
                    {
                        guild.Add(playerName);
                        SaveGuildInfoData();
                        return;
                    }
                }
            }

            //No guild and no record so create one
            var newMemberList = new Collection <string>();

            newMemberList.Add(guildName);
            newMemberList.Add(playerName);
            guildInformation.Add(newMemberList);
            SaveGuildInfoData();

            //foreach(var a in guildInformation){
            //    foreach(var b in a){
            //        PrintToChat(b);
            //    }
            //}
        }
예제 #26
0
        protected override void DoRender(HtmlTextWriter output)
        {
            Database      db      = Sitecore.Context.Database;
            StringBuilder sbOut   = new StringBuilder();
            StringBuilder sbError = new StringBuilder();

            //get the player
            long playerid = -1;

            //check to see if the guid is there
            if (long.TryParse(this.Attributes["player"], out playerid))
            {
                //get player obj
                PlayerItem p = PlayerLibraryItem.GetPlayer(playerid);
                if (p != null)
                {
                    //parse wmode
                    WMode wmode = WMode.Window;
                    try {
                        wmode = (WMode)Enum.Parse(wmode.GetType(), this.Attributes["wmode"], true);
                    }catch {}

                    //get background color
                    string bgcolor = this.Attributes["bgcolor"];
                    bgcolor = (string.IsNullOrEmpty(bgcolor)) ? "#ffffff" : bgcolor;
                    if (!bgcolor.StartsWith("#"))
                    {
                        bgcolor = "#" + bgcolor;
                    }

                    string oparams = this.Attributes["oparams"];
                    Dictionary <string, string> objectParams = new Dictionary <string, string>();
                    if (!string.IsNullOrEmpty(oparams))
                    {
                        string[] keys = oparams.Split(',');
                        foreach (string k in keys)
                        {
                            string[] pair = k.Split('=');
                            if (pair.Length > 0)
                            {
                                objectParams.Add(pair[0], pair[1]);
                            }
                        }
                    }

                    //parse autostart
                    bool autostart = false;
                    try {
                        autostart = (this.Attributes["autostart"].Equals("true")) ? true : false;
                    }catch {}

                    //determine which embed code to display
                    if (p.PlaylistType.Equals(PlayerPlaylistType.None))
                    {
                        //get the video id
                        long videoid = -1;
                        if (long.TryParse(this.Attributes["video"], out videoid))
                        {
                            //try parse the id and get the item
                            VideoItem v = VideoLibraryItem.GetVideo(videoid);
                            if (v != null)
                            {
                                sbOut.Append(p.GetEmbedCode(v, bgcolor, autostart, wmode));
                            }
                        }
                    }
                    else if (p.PlaylistType.Equals(PlayerPlaylistType.VideoList))
                    {
                        long videolist = -1;
                        if (long.TryParse(this.Attributes["videolist"], out videolist))
                        {
                            sbOut.Append(p.GetEmbedCode(videolist, bgcolor, autostart, wmode));
                        }
                    }
                    else if (p.PlaylistType.Equals(PlayerPlaylistType.ComboBox) || p.PlaylistType.Equals(PlayerPlaylistType.Tabbed))
                    {
                        List <string> t = new List <string>();
                        //get both the lists and build a string list
                        if (p.PlaylistType.Equals(PlayerPlaylistType.ComboBox))
                        {
                            string combo = (this.Attributes["playlistcombo"] != null) ? this.Attributes["playlistcombo"] : "";
                            t.AddRange(combo.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries));
                        }
                        else if (p.PlaylistType.Equals(PlayerPlaylistType.Tabbed))
                        {
                            string tabs = (this.Attributes["playlisttabs"] != null) ? this.Attributes["playlisttabs"] : "";
                            t.AddRange(tabs.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries));
                        }
                        //convert to a list of long
                        List <long> playlists = new List <long>();
                        foreach (string s in t)
                        {
                            long temp = -1;
                            if (long.TryParse(s, out temp))
                            {
                                playlists.Add(temp);
                            }
                        }
                        //get the embed code
                        sbOut.Append(p.GetEmbedCode(playlists, bgcolor, autostart, wmode, PlayerExtensions.CreateEmbedID(), objectParams));
                    }

                    //Notify the user
                    if (sbOut.Length < 1)
                    {
                        sbError.AppendLine("Player playlist type wasn't selected.");
                    }
                }
                else
                {
                    sbError.AppendLine("Player doesn't exist in Sitecore.");
                }
            }
            else
            {
                sbError.AppendLine("Player value is not a long.");
            }
            //determine if it's an error or not
            if (sbError.Length > 0)
            {
                output.WriteLine("<div style=\"display:none;\">" + sbError.ToString() + "</div>");
            }
            else
            {
                output.WriteLine(sbOut.ToString());
            }
        }