internal static bool Prefix(AddPet __instance) { if (!__instance.Owner.IsPlayerFaction) { return(true); } if (__instance.SpawnedPet == null) { return(false); } AddClassLevels component = __instance.SpawnedPet.Blueprint.GetComponent <AddClassLevels>(); if (component == null) { return(false); } int pet_level = 0; var eidolon = __instance.SpawnedPet.Blueprint.GetComponent <Eidolon.EidolonComponent>(); if (eidolon == null) { var tr = Harmony12.Traverse.Create(__instance); pet_level = tr.Method("GetPetLevel").GetValue <int>(); } else { pet_level = eidolon.getEidolonLevel(__instance); } //Main.logger.Log("Pet level: " + __instance.SpawnedPet.Descriptor.Progression.CharacterLevel.ToString()); //Main.logger.Log("Should be: " + pet_level.ToString()); if (pet_level > __instance.SpawnedPet.Descriptor.Progression.CharacterLevel) { if (__instance.SpawnedPet.Descriptor.Progression.CharacterLevel == 0) { component.LevelUp(__instance.SpawnedPet.Descriptor, 1); } var exp = Game.Instance.BlueprintRoot.Progression.XPTable.GetBonus(pet_level); Harmony12.Traverse.Create(__instance.SpawnedPet.Descriptor.Progression).Property("Experience").SetValue(exp); EventBus.RaiseEvent <IUnitGainExperienceHandler>((Action <IUnitGainExperienceHandler>)(h => h.HandleUnitGainExperience(__instance.SpawnedPet.Descriptor, exp))); //Main.logger.Log("Pet level now: " + __instance.SpawnedPet.Descriptor.Progression.CharacterLevel.ToString()); } if (eidolon != null) {//no upgrade for eidolon, since they are performed through summoner return(false); } int?rank = __instance.Owner.GetFact((BlueprintUnitFact)__instance.LevelRank)?.GetRank(); if (Mathf.Min(20, !rank.HasValue ? 0 : rank.Value) < __instance.UpgradeLevel) { return(false); } __instance.SpawnedPet.Descriptor.Progression.Features.AddFeature(__instance.UpgradeFeature, (MechanicsContext)null); return(false); }
public ActionResult Add(AddPet addPet) { if (this.ModelState.IsValid) { int result = addPet.ExecuteNonQuery(); return(Redirect($"/Providers/Pet/Profile/{addPet.Id}")); } return(View("FormPage", addPet)); }
public int getLevel(AddPet add_pet_component) { if (add_pet_component.LevelRank == null) { return(1); } int?rank = add_pet_component.Owner.GetFact(add_pet_component.LevelRank)?.GetRank(); int index = Mathf.Min(20, !rank.HasValue ? 0 : rank.Value); return(rank_to_level[index]); }
internal static bool Prefix(AddPet __instance, ref int __result) { var custom_level = __instance.Fact.Blueprint.GetComponent <CompanionMechanics.CustomLevelProgression>(); if (custom_level == null) { return(true); } __result = custom_level.getLevel(__instance); return(false); }
public ActionResult Add(AddPet addPet) { if (this.ModelState.IsValid) { int result = addPet.ExecuteNonQuery(); return(new JsonResult() { Data = new { Result = "Success", Url = $"/Providers/Owner/Profile/{addPet.OwnerId}" } }); } this.AddAjaxPost("/Providers/Pet/Add", "Add Pet", x => x.OnSuccess = "paw.onAjaxFormSuccess"); return(View("FormModal", addPet)); }
public Schema() : base() { InstanceType = typeof(__Datagrid__); ClassName = "DatagridPage"; Properties.ClearExposed(); Html = Add <__TString__>("Html"); Html.DefaultValue = "/KitchenSink/DatagridPage.html"; Html.SetCustomAccessors((_p_) => { return(((__Datagrid__)_p_).__bf__Html__); }, (_p_, _v_) => { ((__Datagrid__)_p_).__bf__Html__ = (System.String)_v_; }, false); Pets = Add <__TArray__>("Pets"); Pets.SetCustomGetElementType((arr) => { return(__Datagrid1__.DefaultTemplate); }); Pets.SetCustomAccessors((_p_) => { return(((__Datagrid__)_p_).__bf__Pets__); }, (_p_, _v_) => { ((__Datagrid__)_p_).__bf__Pets__ = (__Arr__)_v_; }, false); AddPet = Add <__TLong__>("AddPet$"); AddPet.DefaultValue = 0L; AddPet.Editable = true; AddPet.SetCustomAccessors((_p_) => { return(((__Datagrid__)_p_).__bf__AddPet__); }, (_p_, _v_) => { ((__Datagrid__)_p_).__bf__AddPet__ = (System.Int64)_v_; }, false); AddPet.AddHandler((Json pup, Property <Int64> prop, Int64 value) => { return(new Input.AddPet() { App = (DatagridPage)pup, Template = (TLong)prop, Value = value }); }, (Json pup, Starcounter.Input <Int64> input) => { ((DatagridPage)pup).Handle((Input.AddPet)input); }); }
public static AddPet CreatePetRequest(int petId, string name = null) { if (string.IsNullOrEmpty(name)) { name = "doggie"; } var categoryData = new Dictionary <string, object>(); categoryData.Add("id", 0); categoryData.Add("name", "string"); var tagsDataList = new List <Dictionary <string, object> >(); var tagsData = new Dictionary <string, object>(); tagsData.Add("id", 0); tagsData.Add("name", "string"); tagsDataList.Add(tagsData); var photoUrl = new List <string>(); photoUrl.Add("www.freephotoupload.com/photoid123"); var AddPet = new AddPet { Id = petId, Category = categoryData, Name = name, PhotoUrls = photoUrl, Tags = tagsDataList, Status = "available" }; return(AddPet); }
private static BlueprintFeature AddSpiderCompanion() { PortraitData portraitData = new PortraitData("AdvancedMartialArtsSpider"); BlueprintPortrait portrait = Helpers.Create <BlueprintPortrait>(); portrait.Data = portraitData; Main.library.AddAsset(portrait, Helpers.getGuid("GiantSpiderPortrait")); BlueprintUnitFact reducedReachFact = Main.library.Get <BlueprintUnitFact>("c33f2d68d93ceee488aa4004347dffca"); BlueprintFeature weaponFinesse = Main.library.Get <BlueprintFeature>("90e54424d682d104ab36436bd527af09"); BlueprintFeature animalCompanionUpgradeCentipede = Main.library.Get <BlueprintFeature>("c938099ca0438b242b3edecfa9083e9f"); BlueprintUnit animalCompanionUnitCentipede = Main.library.Get <BlueprintUnit>("f9df16ffd0c8cec4d99a0ae6f025a3f8"); BlueprintUnit giantSpider = Main.library.CopyAndAdd <BlueprintUnit>("c4b33e5fd3d3a6f46b2aade647b0bf25", "GiantSpiderCompanion", Helpers.getGuid("GiantSpiderCompanion")); BlueprintItemWeapon Bite1d6 = Main.library.Get <BlueprintItemWeapon>("a000716f88c969c499a535dadcf09286"); BlueprintItemWeapon EmptyHandWeapon = Main.library.Get <BlueprintItemWeapon>("20375b5a0c9243d45966bd72c690ab74"); giantSpider.Brain = animalCompanionUnitCentipede.Brain; giantSpider.ComponentsArray = animalCompanionUnitCentipede.ComponentsArray; giantSpider.Body = animalCompanionUnitCentipede.Body; giantSpider.AddFacts = giantSpider.AddFacts.AddToArray(weaponFinesse); giantSpider.Faction = Main.library.Get <BlueprintFaction>("d8de50cc80eb4dc409a983991e0b77ad"); // Neutral faction Helpers.SetField(giantSpider, "m_Portrait", portrait); BlueprintUnitAsksList giantSpiderBarks = Main.library.CopyAndAdd <BlueprintUnitAsksList>("7d340f75a57c47d45b0e79200a6b5eac", "SpiderAnimalCompanionBarks", Helpers.getGuid("SpiderAnimalCompanionBarks")); UnitAsksComponent component = giantSpiderBarks.GetComponent <UnitAsksComponent>(); foreach (var componentAnimationBark in component.AnimationBarks) { if (componentAnimationBark.AnimationEvent == MappedAnimationEventType.AlertSound1 || componentAnimationBark.AnimationEvent == MappedAnimationEventType.AlertSound2) { componentAnimationBark.Cooldown = 10f; componentAnimationBark.DelayMin = 5f; } } ChangeUnitSize unitSize = Helpers.Create <ChangeUnitSize>(x => x.SizeDelta = 1); FieldInfo typeField = unitSize.GetType().GetField("m_Type", BindingFlags.NonPublic | BindingFlags.Instance); object delta = unitSize.GetType().GetNestedType("ChangeType", BindingFlags.NonPublic).GetField("Delta").GetValue(unitSize); typeField.SetValue(unitSize, delta); AddMechanicsFeature addMechanicsFeature = Helpers.Create <AddMechanicsFeature>(); Traverse traverse = Traverse.Create(addMechanicsFeature); traverse.Field("m_Feature").SetValue(AddMechanicsFeature.MechanicsFeatureType.IterativeNaturalAttacks); typeField.SetValue(unitSize, delta); BlueprintFeature animalCompanionFeatureSpider = Main.library.CopyAndAdd <BlueprintFeature>("f9ef7717531f5914a9b6ecacfad63f46", "AnimalCompanionFeatureGiantSpider", Helpers.getGuid("AnimalCompanionFeatureGiantSpider")); animalCompanionFeatureSpider.SetNameDescription("Animal Companion — Giant Spider", "Size Medium\nSpeed 30 ft.\nAC +1 natural armor\nAttack bite (1d6 plus poison)\nAbility Scores Str 11, Dex 17, Con 12, Int 1, Wis 10, Cha 2\nSpecial Attacks poison (frequency 1 round (4); effect 1d2 Str damage; cure 1 save; Con-based DC)\nCMD +8 vs. trip.\nAt 7th level size becomes Large, Str +2, Dex +8, Con +4, +2 natural armor."); AddPet addPetFact = animalCompanionFeatureSpider.ComponentsArray.OfType <AddPet>().First(); animalCompanionFeatureSpider.RemoveComponent(addPetFact); addPetFact = UnityEngine.Object.Instantiate(addPetFact); animalCompanionFeatureSpider.AddComponent(addPetFact); addPetFact.Pet = giantSpider; addPetFact.UpgradeFeature = Helpers.CreateFeature( "AnimalCompanionUpgradeGiantSpider", "", "", Helpers.getGuid("AnimalCompanionUpgradeGiantSpider"), animalCompanionUpgradeCentipede.Icon, FeatureGroup.None, unitSize, Helpers.Create <AddStatBonus>(x => { x.Stat = StatType.AC; x.Value = 2; x.Descriptor = ModifierDescriptor.NaturalArmor; }), Helpers.Create <AddStatBonus>(x => { x.Stat = StatType.Strength; x.Value = 2; }), Helpers.Create <AddStatBonus>(x => { x.Stat = StatType.Dexterity; x.Value = 8; }), Helpers.Create <AddStatBonus>(x => { x.Stat = StatType.Constitution; x.Value = 4; }), addMechanicsFeature, Helpers.CreateAddFacts(reducedReachFact) ); addPetFact.UpgradeLevel = 7; return(animalCompanionFeatureSpider); }