Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 5
0
        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); });
 }
Exemplo n.º 7
0
        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);
        }