Exemplo n.º 1
0
        public override ItemPropertyModifier GetPropertyModifier(AggregateField field)
        {
            var modifier = base.GetPropertyModifier(field);

            if (Character == Character.None)
            {
                return(modifier);
            }

            var characterExtensions = Character.GetExtensions();
            var extensions          = _extensionReader.GetExtensions();

            var extensionBonus = characterExtensions.Select(e => extensions[e.id])
                                 .Where(e => e.aggregateField == field)
                                 .Sum(e => characterExtensions.GetLevel(e.id) * e.bonus);

            extensionBonus += ExtensionBonuses.Where(e => e.aggregateField == field).Sum(e => characterExtensions.GetLevel(e.extensionId) * e.bonus);

            if (!extensionBonus.IsZero())
            {
                var m = ItemPropertyModifier.Create(field, extensionBonus);
                m.NormalizeExtensionBonus();
                m.Modify(ref modifier);
            }

            return(modifier);
        }
Exemplo n.º 2
0
 private Extension[] GetAll(IExtensionReader extensionReader, Character character)
 {
     return(Db.Query().CommandText("select extensionid,extensionlevel from characterextensions where characterid = @characterId")
            .SetParameter("@characterId", character.Id)
            .Execute()
            .Select(r => new Extension(r.GetValue <int>(0), r.GetValue <int>(1)))
            .Where(ex => extensionReader.GetExtensions().ContainsKey(ex.id))
            .ToArray());
 }
        public static int GetExtensionIDByName(this IExtensionReader reader, string extensionName)
        {
            var x = reader.GetExtensions().Select(kvp => kvp.Value).FirstOrDefault(e => e.name == extensionName);

            if (x == null)
            {
                return(0);
            }
            return(x.id);
        }
        public static string GetExtensionName(this IExtensionReader reader, int extensionID)
        {
            var extensions = reader.GetExtensions();
            var info       = extensions.GetOrDefault(extensionID);

            if (info == null)
            {
                return(string.Empty);
            }
            return(info.name);
        }
Exemplo n.º 5
0
        private bool FilterRequiredExtensions(IDataRecord record)
        {
            var extensionId = record.GetValue <int>(k.extensionID.ToLower());

            if (!_extensionReader.GetExtensions().ContainsKey(extensionId))
            {
                Logger.Error("consistency error in mission required extensions! ID:" + record.GetValue <int>(k.ID.ToLower()));
                return(false);
            }
            return(true);
        }
        private static Dictionary <string, object> CreateCharacterWizardData(IExtensionReader extensionReader)
        {
            var extensions   = extensionReader.GetExtensions();
            var corpProfiles = Db.Query().CommandText("select eid,publicprofile from corporations where defaultcorp = 1")
                               .Execute()
                               .ToDictionary(r => r.GetValue("eid"), r => GenxyConverter.Deserialize(r.GetValue <string>("publicprofile")));

            Dictionary <string, object> LoadCwData(string name, string idName, Action <IDataRecord, Dictionary <string, object> > action = null)
            {
                var cw = Db.Query().CommandText($"select * from {name}").Execute();
                var ex = Db.Query().CommandText($"select * from {name}_extension")
                         .Execute()
                         .Where(r => extensions.ContainsKey(r.GetValue <int>("extensionid"))).ToLookup(r => r.GetValue(idName));

                return(cw.ToDictionary("w", r =>
                {
                    var id = r.GetValue(idName);
                    var dd = new Dictionary <string, object>
                    {
                        ["ID"] = id,
                        ["name"] = r.GetValue("name"),
                        ["description"] = r.GetValue("descriptiontoken"),
                        ["extension"] = ex.GetOrEmpty(id).ToDictionary("e", x =>
                        {
                            return new Dictionary <string, object>
                            {
                                { k.extensionID, x.GetValue("extensionid") },
                                { k.add, x.GetValue("levelincrement") }
                            };
                        })
                    };

                    action?.Invoke(r, dd);
                    return dd;
                }));
            }

            var result = new Dictionary <string, object>
            {
                ["race"]        = LoadCwData("cw_race", "raceid"),
                ["spark"]       = LoadCwData("cw_spark", "sparkid"),
                ["school"]      = LoadCwData("cw_school", "schoolid", (r, d) => { d["raceID"] = r.GetValue("raceid"); }),
                ["major"]       = LoadCwData("cw_major", "majorid", (r, d) => { d["schoolID"] = r.GetValue("schoolid"); }),
                ["corporation"] = LoadCwData("cw_corporation", "corporationEID", (r, d) =>
                {
                    d["baseEID"]       = r.GetValue("baseEID");
                    d["schoolID"]      = r.GetValue("schoolid");
                    d["publicProfile"] = corpProfiles[r.GetValue <long>("corporationEID")];
                })
            };

            return(result);
        }
Exemplo n.º 7
0
 public ExtensionPrerequireList(IExtensionReader extensionReader)
 {
     _requiredExtensionInfos = extensionReader.GetExtensions().Values.SelectMany(info => info.RequiredExtensions, (info, reqExtension) =>
     {
         return(new Dictionary <string, object>
         {
             { k.extensionID, info.id },
             { k.requiredExtension, reqExtension.id },
             { k.requiredLevel, reqExtension.level }
         });
     }).ToDictionary("e", e => e);
 }
 public static IEnumerable <Extension> GetPrerequiredExtensionsOf(this IExtensionReader reader, int extensionId)
 {
     foreach (var info in reader.GetExtensions().Values)
     {
         foreach (var requiredExtension in info.RequiredExtensions)
         {
             if (requiredExtension.id == extensionId)
             {
                 //yes, this extension requires the incoming extension on level
                 yield return(new Extension(info.id, requiredExtension.level));
             }
         }
     }
 }
        public static IEnumerable <int> GetExtensionIDsByName(this IExtensionReader reader, IEnumerable <string> extensionNames)
        {
            var extensions = reader.GetExtensions();

            var enumerable = extensionNames as string[] ?? extensionNames.ToArray();

            foreach (var info in extensions.Values)
            {
                if (enumerable.Contains(info.name))
                {
                    yield return(info.id);
                }
            }
        }
Exemplo n.º 10
0
        private Dictionary <string, object> GetExtensionHistory(Character character)
        {
            var records = Db.Query().CommandText("select extensionid,extensionlevel,eventtime,points from accountextensionspent where characterid=@characterID")
                          .SetParameter("@characterID", character.Id)
                          .Execute();

            var counter = 0;

            return(records.Where(e => _extensionReader.GetExtensions().ContainsKey(DataRecordExtensions.GetValue <int>(e, 0)))
                   .Select(e => (object)new Dictionary <string, object>
            {
                { k.extensionID, DataRecordExtensions.GetValue <int>(e, 0) },
                { k.extensionLevel, DataRecordExtensions.GetValue <int>(e, 1) },
                { k.learnedTime, DataRecordExtensions.GetValue <DateTime>(e, 2) },
                { k.points, DataRecordExtensions.GetValue <int>(e, 3) }
            }).ToDictionary(d => "e" + counter++));
        }
        public void HandleRequest(IRequest request)
        {
            using (var scope = Db.CreateTransaction())
            {
                var character = request.Session.Character; //target character or current character

                if (request.Data.TryGetValue(k.characterID, out int characterID))
                {
                    character = Character.Get(characterID);
                }
                var level = request.Data.GetOrDefault(k.level, 9);//target level or default value

                var giveAll = false;
                if (request.Data.TryGetValue(k.extensionID, out int extensionID))
                {
                    _extensionReader.GetExtensions().ContainsKey(extensionID).ThrowIfFalse(ErrorCodes.ItemNotFound);
                }
                else
                {
                    giveAll = true;
                }

                if (giveAll)
                {
                    var extensionz = from e in Db.Query().CommandText("select extensionid from extensions where active=1 and hidden=0").Execute()
                                     select new Extension(DataRecordExtensions.GetValue <int>(e, 0), level);

                    character.SetExtensions(extensionz);
                }
                else
                {
                    character.SetExtension(new Extension(extensionID, level));
                }

                Db.Query().CommandText("delete accountextensionspent where accountid=@accountID")
                .SetParameter("@accountID", request.Session.AccountId)
                .ExecuteNonQuery();

                Message.Builder.FromRequest(request).WithOk().Send();

                scope.Complete();
            }
        }
 public static ExtensionInfo GetExtensionByName(this IExtensionReader reader, string extensionName)
 {
     return(reader.GetExtensions().Select(kvp => kvp.Value).FirstOrDefault(e => e.name == extensionName));
 }
 public static ExtensionInfo[] GetExtensionsByAggregateField(this IExtensionReader extensionReader, AggregateField field)
 {
     return(extensionReader.GetExtensions().Values.Where(e => e.aggregateField == field).ToArray());
 }
 public static ExtensionInfo GetExtensionByID(this IExtensionReader reader, int extensionID)
 {
     return(reader.GetExtensions().GetOrDefault(extensionID));
 }
Exemplo n.º 15
0
 public ExtensionGetAll(IExtensionReader extensionReader)
 {
     _extensionInfos = extensionReader.GetExtensions().ToDictionary("e", ex => ex.Value.ToDictionary());
 }