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); }
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); }
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); }
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); } } }
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)); }
public ExtensionGetAll(IExtensionReader extensionReader) { _extensionInfos = extensionReader.GetExtensions().ToDictionary("e", ex => ex.Value.ToDictionary()); }