/// <summary> /// Digs out the success info from a dictionary /// This is the place where this target got succeeded /// </summary> /// <param name="info"></param> public void GetSuccessInfo(IDictionary <string, object> info) { if (info.ContainsKey(k.locationID)) { var locationId = info.GetValue <int>(k.locationID); MissionLocation location; if (_missionDataCache.GetLocationById(locationId, out location)) { _successZoneId = location.ZoneConfig.Id; _successX = location.MyPosition.intX; _successY = location.MyPosition.intY; _successTime = DateTime.Now; } } else { int zoneId; Position position; if (info.ContainsKey(k.zoneID)) { zoneId = info.GetValue <int>(k.zoneID); } else { Logger.Error("no zoneId was found in success info " + this); throw new PerpetuumException(ErrorCodes.ServerError); } if (info.ContainsKey(k.position)) { position = info.GetValue <Position>(k.position); } else { Logger.Error("no position was found in success info " + this); throw new PerpetuumException(ErrorCodes.ServerError); } _successZoneId = zoneId; _successX = position.intX; _successY = position.intY; _successTime = DateTime.Now; } Logger.Info("success info obtained zoneId:" + _successZoneId + " x:" + _successX + " y:" + _successY + " " + this); }
public void HandleRequest(IRequest request) { using (var scope = Db.CreateTransaction()) { var missionId = request.Data.GetOrDefault <int>(k.missionID); var spreadInGang = request.Data.GetOrDefault(k.spreading, 1) == 1; var character = request.Session.Character; var level = request.Data.GetOrDefault <int>(k.level); level = level.Clamp(0, 9); var locationId = request.Data.GetOrDefault(k.location, 1); MissionLocation location; _missionDataCache.GetLocationById(locationId, out location).ThrowIfFalse(ErrorCodes.InvalidMissionLocation); spreadInGang = true; //force gang mode var result = _missionProcessor.AdminMissionStartByRequest(character, spreadInGang, missionId, location, level); Message.Builder.FromRequest(request).WithData(result).Send(); scope.Complete(); } }
public void MissionStartFromFieldTerminal(Character character, int locationId, MissionCategory missionCategory, int level) { try { _missionDataCache.GetLocationById(locationId, out MissionLocation location).ThrowIfNull(ErrorCodes.ItemNotFound); var result = MissionStartForRequest(character, missionCategory, level, location); Message.Builder.ToCharacter(character).WithData(result).SetCommand(Commands.MissionStart).Send(); } catch (PerpetuumException exception) { Logger.Exception(exception); character.CreateErrorMessage(Commands.MissionStart, exception.error).Send(); } }
public void AddKeys(IDictionary <string, object> dictionary) { dictionary.Add(k.guid, missionGuid); dictionary.Add(k.definition, definition); dictionary.Add(k.progressCount, ProgressCount); dictionary.Add(k.completed, IsCompleted); dictionary.Add(k.location, locationId); dictionary.Add(k.missionID, missionId); dictionary.Add(k.targetID, targetId); dictionary.Add(k.assistingCharacterID, assisting.Id); dictionary.Add(k.useGang, 1); if (IsCompleted) { MissionLocation location; if (_missionDataCache.GetLocationById(locationId, out location)) { dictionary.Add(k.zoneID, location.ZoneConfig.Id); dictionary.Add(k.position, location.MyPosition); } } }