private void AddPetSchemeToNewPlayer() { if (mRace == null) { mRace = GetComponent <RaceableObject>(); } Race race = (Race)mRace.race; string petModel = resource.petParameters.defaultModels[race]; if (petModel != null) { var petScheme = new PetSchemeObject(petModel, PetColor.gray); Station.StationInventory.Add(petScheme, 1); } EventOnStationHoldUpdated(); }
private void GeneratePetScheme(Race race, string template, PetColor color, int count, ConcurrentDictionary <string, ServerInventoryItem> newObjects) { if (string.IsNullOrEmpty(template)) { if (race != Race.None) { template = resource.petParameters.defaultModels[race]; } else { template = "hp_1"; } } PetSchemeObject obj = new PetSchemeObject(template, color, false); newObjects.TryAdd(obj.Id, new ServerInventoryItem(obj, count)); }
public Hashtable AddPetScheme() { PetSchemeObject schemeObject = new PetSchemeObject(Guid.NewGuid().ToString(), PetColor.gray, false); var inventory = player.Inventory; if (inventory.HasSlotsForItems(new List <string> { schemeObject.Id })) { inventory.Add(schemeObject, 1); player.EventOnInventoryUpdated(); return(new Hashtable { { (int)SPC.ReturnCode, (int)RPCErrorCode.Ok }, { (int)SPC.Status, true } }); } return(new Hashtable { { (int)SPC.ReturnCode, (int)RPCErrorCode.UnknownError } }); }
public Hashtable TransformPetSchemeToPet(string schemeId) { var inventory = player.Station.StationInventory; var petManager = player.GetComponent <PetManager>(); var playerRaceable = player.GetComponent <RaceableObject>(); if (false == inventory.HasItem(InventoryObjectType.pet_scheme, schemeId)) { return(CreateResponse(RPCErrorCode.ItemNotFound)); } ServerInventoryItem schemeItem = null; if (false == inventory.TryGetItem(InventoryObjectType.pet_scheme, schemeId, out schemeItem)) { return(CreateResponse(RPCErrorCode.ErrorOfGettingInventoryItem)); } PetSchemeObject petSchemeObject = schemeItem.Object as PetSchemeObject; if (false == petManager.hasFreeSpace) { return(CreateResponse(RPCErrorCode.LowPetAngarSpace)); } string model = player.resource.petParameters.defaultModels[(Race)playerRaceable.race]; if (string.IsNullOrEmpty(model)) { return(CreateResponse(RPCErrorCode.ResourceDataError)); } PetDropper.PetDropSettings settings = new PetDropper.PetDropSettings(); settings.OffGenerateColor(); settings.SetColor(petSchemeObject.petColor); settings.OffGenerateModel(); settings.SetModel(model); settings.OnGeneratePassiveSkill(); settings.OnGenerateActiveSkills(); settings.OnGenerateDamageType(); settings.OnSetMastery(); settings.SetMastery(0); settings.OffGenerateRace(); settings.SetRace((Race)playerRaceable.race); PetDropper dropper = new PetDropper(); PetInfo petInfo = dropper.Drop(player.resource.petParameters, settings, player.resource.petSkills, player.resource.petPassiveBonuses); inventory.Remove(InventoryObjectType.pet_scheme, schemeId, 1); if (false == petManager.AddPet(petInfo)) { return(CreateResponse(RPCErrorCode.ErrorOfAddingPetToCollection)); } var allowedCount = player.resource.petParameters.GetPlayerPetCount(player.GetComponent <PlayerCharacterObject>().level); if (petManager.countOfActivePets < allowedCount) { bool success = petManager.ActivatePet(petInfo.id); if (success) { player.GetComponent <MmoMessageComponent>().ReceivePetsUpdate(); } } player.EventOnStationHoldUpdated(); Hashtable hash = CreateResponse(RPCErrorCode.Ok); hash.Add((int)SPC.Pet, petInfo.GetInfo(player.resource)); var achievments = player.GetComponent <AchievmentComponent>(); achievments.SetVariable("max_pet_color", (int)petInfo.color); return(hash); }