Пример #1
0
        public static void RunPatch(SynthesisState <ISkyrimMod, ISkyrimModGetter> state)
        {
            if (!state.LoadOrder.ContainsKey(ultimateDodgeMod))
            {
                throw new Exception("ERROR: The Ultimate Dodge Mod hasn't been detected in your load order. You need to install TUDM prior to running this patcher!");
            }

            FormKey UDRollNakedLandingSetKey = ultimateDodgeMod.MakeFormKey(0x011591);
            FormKey UDRollLightLandingSetKey = ultimateDodgeMod.MakeFormKey(0x011590);
            FormKey UDRollHeavyLandingSetKey = ultimateDodgeMod.MakeFormKey(0x01158F);

            if (!state.LinkCache.TryResolve <IFootstepSetGetter>(UDRollNakedLandingSetKey, out var UDRollNakedLandingSet) || UDRollNakedLandingSet == null)
            {
                throw new Exception("ERROR: UDRollNakedLandingSet FormKey not found! Are you on the latest TUDM x64 version?");
            }
            if (!state.LinkCache.TryResolve <IFootstepSetGetter>(UDRollLightLandingSetKey, out var UDRollLightLandingSet) || UDRollLightLandingSet == null)
            {
                throw new Exception("ERROR: UDRollLightLandingSet FormKey not found! Are you on the latest TUDM x64 version?");
            }
            if (!state.LinkCache.TryResolve <IFootstepSetGetter>(UDRollHeavyLandingSetKey, out var UDRollHeavyLandingSet) || UDRollHeavyLandingSet == null)
            {
                throw new Exception("ERROR: UDRollHeavyLandingSet FormKey not found! Are you on the latest TUDM x64 version?");
            }

            foreach (var armor in state.LoadOrder.PriorityOrder.WinningOverrides <IArmorGetter>())
            {
                Console.WriteLine("CHECKING ARMOR " + armor.EditorID);
                if (armor.Keywords == null)
                {
                    continue;
                }
                if (!armor.Keywords.Contains(Skyrim.Keyword.ArmorCuirass) && !armor.Keywords.Contains(Skyrim.Keyword.ClothingBody))
                {
                    continue;
                }
                foreach (var armature in armor.Armature)
                {
                    armature.TryResolve(state.LinkCache, out var armorAddonVar);
                    if (armorAddonVar == null)
                    {
                        continue;
                    }
                    var race = armorAddonVar.Race;
                    race.TryResolve(state.LinkCache, out var raceVar);
                    if (raceVar == null || !playableRaces.Contains <FormKey>(raceVar.FormKey))
                    {
                        continue;
                    }

                    ArmorAddon armorAddon = armorAddonVar.DeepCopy();
                    Console.WriteLine("CHECKING ARMATURE " + armorAddon.EditorID);
                    if (!HasBodyFlag(armorAddon))
                    {
                        continue;
                    }
                    Console.WriteLine("ARMATURE HAS BODYFLAG");
                    switch (armor.DeepCopy().BodyTemplate !.ArmorType)
                    {
Пример #2
0
        // GET: ArmorAddon/Details/5
        public ActionResult Details(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            ArmorAddon armorAddon = DAL.GetArmorAddon((int)id);

            if (armorAddon == null)
            {
                return(NotFound());
            }

            return(View(armorAddon));
        }
Пример #3
0
        public static bool HasBodyFlag(ArmorAddon armorAddon)
        {
            if (armorAddon == null || armorAddon.BodyTemplate == null)
            {
                return(false);
            }
            var v = armorAddon.BodyTemplate.FirstPersonFlags.AsEnumerable();

            foreach (var flag in v)
            {
                if (flag.ToString().Contains("Body"))
                {
                    return(true);
                }
            }
            return(false);
        }
Пример #4
0
        public static void RunPatch(IPatcherState <ISkyrimMod, ISkyrimModGetter> state)
        {
            if (!state.LoadOrder.ContainsKey(ultimateDodgeMod))
            {
                throw new Exception("ERROR: The Ultimate Dodge Mod hasn't been detected in your load order. You need to install TUDM prior to running this patcher!");
            }

            FormKey UDRollNakedLandingSetKey = ultimateDodgeMod.MakeFormKey(0x011591);
            FormKey UDRollLightLandingSetKey = ultimateDodgeMod.MakeFormKey(0x011590);
            FormKey UDRollHeavyLandingSetKey = ultimateDodgeMod.MakeFormKey(0x01158F);

            if (!state.LinkCache.TryResolve <IFootstepSetGetter>(UDRollNakedLandingSetKey, out var UDRollNakedLandingSet) || UDRollNakedLandingSet == null)
            {
                throw new Exception("ERROR: UDRollNakedLandingSet FormKey not found! Are you on the latest TUDM x64 version?");
            }
            if (!state.LinkCache.TryResolve <IFootstepSetGetter>(UDRollLightLandingSetKey, out var UDRollLightLandingSet) || UDRollLightLandingSet == null)
            {
                throw new Exception("ERROR: UDRollLightLandingSet FormKey not found! Are you on the latest TUDM x64 version?");
            }
            if (!state.LinkCache.TryResolve <IFootstepSetGetter>(UDRollHeavyLandingSetKey, out var UDRollHeavyLandingSet) || UDRollHeavyLandingSet == null)
            {
                throw new Exception("ERROR: UDRollHeavyLandingSet FormKey not found! Are you on the latest TUDM x64 version?");
            }

            foreach (var armor in state.LoadOrder.PriorityOrder.WinningOverrides <IArmorGetter>())
            {
                if (armor.Keywords == null)
                {
                    continue;
                }
                if (armor.Keywords.Contains(Skyrim.Keyword.ArmorCuirass) || armor.Keywords.Contains(Skyrim.Keyword.ClothingBody))
                {
                    foreach (var armature in armor.Armature)
                    {
                        armature.TryResolve(state.LinkCache, out var armorAddonVar);
                        if (armorAddonVar == null)
                        {
                            continue;
                        }
                        else
                        {
                            ArmorAddon armorAddon = armorAddonVar.DeepCopy();
                            if (HasBodyFlag(armorAddon))
                            {
                                switch (armor.DeepCopy().BodyTemplate !.ArmorType)
                                {
Пример #5
0
        // GET: ArmorAddon/Edit/5
        public ActionResult Edit(int?id)
        {
            if (id == null)
            {
                return(NotFound());
            }

            ArmorAddon armorAddon = DAL.GetArmorAddon((int)id);

            if (armorAddon == null)
            {
                return(NotFound());
            }
            ViewData["MaterialID"]       = new SelectList(DAL.GetMaterials(), "ID", "Name", armorAddon.MaterialID);
            ViewData["ArmorAddonTypeID"] = new SelectList(DAL.GetArmorAddonTypes(), "ID", "Name", armorAddon.ArmorAddonTypeID);
            return(View(armorAddon));
        }
Пример #6
0
 public ActionResult Create([Bind("MaterialID,ArmorAddonTypeID,ID")] ArmorAddon armorAddon)
 {
     if (ModelState.IsValid)
     {
         if (DAL.CreateArmorAddon(armorAddon) > 0)
         {
             //success
         }
         else
         {
             //error
         }
         return(RedirectToAction(nameof(Index)));
     }
     ViewData["MaterialID"]       = new SelectList(DAL.GetMaterials(), "ID", "Name", armorAddon.MaterialID);
     ViewData["ArmorAddonTypeID"] = new SelectList(DAL.GetArmorAddonTypes(), "ID", "Name", armorAddon.ArmorAddonTypeID);
     return(View(armorAddon));
 }
Пример #7
0
        public ActionResult Edit(int id, [Bind("MaterialID,ArmorAddonTypeID,ID")] ArmorAddon armorAddon)
        {
            if (id != armorAddon.ID)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                if (DAL.UpdateArmorAddon(armorAddon, id) > 0)
                {
                    //success
                }
                else
                {
                    //error
                }
                return(RedirectToAction(nameof(Index)));
            }
            ViewData["MaterialID"]       = new SelectList(DAL.GetMaterials(), "ID", "Name", armorAddon.MaterialID);
            ViewData["ArmorAddonTypeID"] = new SelectList(DAL.GetArmorAddonTypes(), "ID", "Name", armorAddon.ArmorAddonTypeID);
            return(View(armorAddon));
        }
Пример #8
0
        public static Record CreateRecord(string Tag)
        {
            Record outRecord;

            switch (Tag)
            {
            case "TES4":
                outRecord = new Header();
                break;

            case "GMST":
                outRecord = new GameSetting();
                break;

            case "TXST":
                outRecord = new TextureSet();
                break;

            case "MICN":
                outRecord = new MenuIcon();
                break;

            case "GLOB":
                outRecord = new GlobalVariable();
                break;

            case "CLAS":
                outRecord = new Class();
                break;

            case "FACT":
                outRecord = new Faction();
                break;

            case "HDPT":
                outRecord = new HeadPart();
                break;

            case "HAIR":
                outRecord = new Hair();
                break;

            case "EYES":
                outRecord = new Eyes();
                break;

            case "RACE":
                outRecord = new Race();
                break;

            case "SOUN":
                outRecord = new Sound();
                break;

            case "ASPC":
                outRecord = new AcousticSpace();
                break;

            case "MGEF":
                outRecord = new MagicEffect();
                break;

            case "SCPT":
                outRecord = new Script();
                break;

            case "LTEX":
                outRecord = new LandscapeTexture();
                break;

            case "ENCH":
                outRecord = new ObjectEffect();
                break;

            case "SPEL":
                outRecord = new ActorEffect();
                break;

            case "ACTI":
                outRecord = new ESPSharp.Records.Activator();
                break;

            case "TACT":
                outRecord = new TalkingActivator();
                break;

            case "TERM":
                outRecord = new Terminal();
                break;

            case "ARMO":
                outRecord = new Armor();
                break;

            case "BOOK":
                outRecord = new Book();
                break;

            case "CONT":
                outRecord = new Container();
                break;

            case "DOOR":
                outRecord = new Door();
                break;

            case "INGR":
                outRecord = new Ingredient();
                break;

            case "LIGH":
                outRecord = new Light();
                break;

            case "MISC":
                outRecord = new MiscItem();
                break;

            case "STAT":
                outRecord = new Static();
                break;

            case "SCOL":
                outRecord = new StaticCollection();
                break;

            case "MSTT":
                outRecord = new MoveableStatic();
                break;

            case "PWAT":
                outRecord = new PlaceableWater();
                break;

            case "GRAS":
                outRecord = new Grass();
                break;

            case "TREE":
                outRecord = new Tree();
                break;

            case "FURN":
                outRecord = new Furniture();
                break;

            case "WEAP":
                outRecord = new Weapon();
                break;

            case "AMMO":
                outRecord = new Ammunition();
                break;

            case "NPC_":
                outRecord = new NonPlayerCharacter();
                break;

            case "CREA":
                outRecord = new Creature();
                break;

            case "LVLC":
                outRecord = new LeveledCreature();
                break;

            case "LVLN":
                outRecord = new LeveledNPC();
                break;

            case "KEYM":
                outRecord = new Key();
                break;

            case "ALCH":
                outRecord = new Ingestible();
                break;

            case "IDLM":
                outRecord = new IdleMarker();
                break;

            case "NOTE":
                outRecord = new Note();
                break;

            case "COBJ":
                outRecord = new ConstructibleObject();
                break;

            case "PROJ":
                outRecord = new Projectile();
                break;

            case "LVLI":
                outRecord = new LeveledItem();
                break;

            case "WTHR":
                outRecord = new Weather();
                break;

            case "CLMT":
                outRecord = new Climate();
                break;

            case "REGN":
                outRecord = new Region();
                break;

            case "NAVI":
                outRecord = new NavigationMeshInfoMap();
                break;

            case "DIAL":
                outRecord = new DialogTopic();
                break;

            case "QUST":
                outRecord = new Quest();
                break;

            case "IDLE":
                outRecord = new IdleAnimation();
                break;

            case "PACK":
                outRecord = new Package();
                break;

            case "CSTY":
                outRecord = new CombatStyle();
                break;

            case "LSCR":
                outRecord = new LoadScreen();
                break;

            case "ANIO":
                outRecord = new AnimatedObject();
                break;

            case "WATR":
                outRecord = new Water();
                break;

            case "EFSH":
                outRecord = new EffectShader();
                break;

            case "EXPL":
                outRecord = new Explosion();
                break;

            case "DEBR":
                outRecord = new Debris();
                break;

            case "IMGS":
                outRecord = new ImageSpace();
                break;

            case "IMAD":
                outRecord = new ImageSpaceAdapter();
                break;

            case "FLST":
                outRecord = new FormList();
                break;

            case "PERK":
                outRecord = new Perk();
                break;

            case "BPTD":
                outRecord = new BodyPartData();
                break;

            case "ADDN":
                outRecord = new AddonNode();
                break;

            case "AVIF":
                outRecord = new ActorValueInformation();
                break;

            case "RADS":
                outRecord = new RadiationStage();
                break;

            case "CAMS":
                outRecord = new CameraShot();
                break;

            case "CPTH":
                outRecord = new CameraPath();
                break;

            case "VTYP":
                outRecord = new VoiceType();
                break;

            case "IPCT":
                outRecord = new Impact();
                break;

            case "IPDS":
                outRecord = new ImpactDataSet();
                break;

            case "ARMA":
                outRecord = new ArmorAddon();
                break;

            case "ECZN":
                outRecord = new EncounterZone();
                break;

            case "MESG":
                outRecord = new Message();
                break;

            case "RGDL":
                outRecord = new Ragdoll();
                break;

            case "DOBJ":
                outRecord = new DefaultObjectManager();
                break;

            case "LGTM":
                outRecord = new LightingTemplate();
                break;

            case "MUSC":
                outRecord = new MusicType();
                break;

            case "IMOD":
                outRecord = new ItemMod();
                break;

            case "REPU":
                outRecord = new Reputation();
                break;

            case "RCPE":
                outRecord = new Recipe();
                break;

            case "RCCT":
                outRecord = new RecipeCategory();
                break;

            case "CHIP":
                outRecord = new CasinoChip();
                break;

            case "CSNO":
                outRecord = new Casino();
                break;

            case "LSCT":
                outRecord = new LoadScreenType();
                break;

            case "MSET":
                outRecord = new MediaSet();
                break;

            case "ALOC":
                outRecord = new MediaLocationController();
                break;

            case "CHAL":
                outRecord = new Challenge();
                break;

            case "AMEF":
                outRecord = new AmmoEffect();
                break;

            case "CCRD":
                outRecord = new CaravanCard();
                break;

            case "CMNY":
                outRecord = new CaravanMoney();
                break;

            case "CDCK":
                outRecord = new CaravanDeck();
                break;

            case "DEHY":
                outRecord = new DehydrationStage();
                break;

            case "HUNG":
                outRecord = new HungerStage();
                break;

            case "SLPD":
                outRecord = new SleepDeprivationStage();
                break;

            case "CELL":
                outRecord = new Cell();
                break;

            case "WRLD":
                outRecord = new Worldspace();
                break;

            case "LAND":
                outRecord = new GenericRecord();
                break;

            case "NAVM":
                outRecord = new NavigationMesh();
                break;

            case "INFO":
                outRecord = new DialogResponse();
                break;

            case "REFR":
                outRecord = new Reference();
                break;

            case "ACHR":
                outRecord = new PlacedNPC();
                break;

            case "ACRE":
                outRecord = new PlacedCreature();
                break;

            case "PGRE":
                outRecord = new PlacedGrenade();
                break;

            case "PMIS":
                outRecord = new PlacedMissile();
                break;

            default:
                Console.WriteLine("Encountered unknown record: " + Tag);
                outRecord = new GenericRecord();
                break;
            }

            outRecord.Tag = Tag;

            return(outRecord);
        }