示例#1
0
        public static void MiscIngredient()
        {
            var theItemFormLink = Skyrim.MiscItem.IngotIron;

            SkyrimMod masterMod = new(theItemFormLink.FormKey.ModKey, SkyrimRelease.SkyrimSE);

            var theItem = new MiscItem(theItemFormLink.FormKey, masterMod.SkyrimRelease);

            masterMod.MiscItems.Add(theItem);

            var linkCache = masterMod.ToImmutableLinkCache();

            HashSet <IFormLinkGetter <IItemGetter> > specificSet           = new();
            HashSet <IFormLinkGetter <IItemGetter> > allSet                = new();
            HashSet <IFormLinkGetter <IItemGetter> > ingredientSet         = new();
            HashSet <IFormLinkGetter <IItemGetter> > doNotUnburdenFormKeys = new();

            RecipeProcessor recipeProcessor = new(specificSet, allSet, ingredientSet, linkCache, doNotUnburdenFormKeys);


            recipeProcessor.ClassifyIngredient(theItemFormLink);


            Assert.Single(specificSet);
            Assert.Single(allSet);
            Assert.Empty(ingredientSet);
        }
        public void TestTraderPaysGoldOnItemBought(int itemCost, int expectedShopperGold)
        {
            Item item = new MiscItem("testItem", itemCost);

            shopper.OnItemBought(item, shop);

            Assert.AreEqual(shopper.Gold, expectedShopperGold);
        }
示例#3
0
        public override GameObject CreateGameObject(ReferenceData referenceData, Transform parent = null)
        {
            var gameObject = base.CreateGameObject(referenceData, parent);
            var ownerData  = new OwnerData(referenceData.Owner, referenceData.Global, referenceData.Faction, referenceData.Rank);

            MiscItem.Create(gameObject, this, referenceData);

            return(gameObject);
        }
示例#4
0
        public MiscItem Duplicate(
            IMiscItemGetter item,
            FormKey formKey,
            TranslationCrystal?copyMask)
        {
            var newRec = new MiscItem(formKey);

            newRec.DeepCopyIn(item, default(ErrorMaskBuilder?), copyMask);
            return(newRec);
        }
        public void TestTraderGainsGoldOnSell(int itemCost, int expectedShopGold)
        {
            Item item = new MiscItem("testItem", itemCost);

            shop.Inventory.Add(item);
            shop.Inventory.SelectItem(item);
            shop.Sell(shopper);

            Assert.AreEqual(shop.Gold, expectedShopGold);
        }
示例#6
0
        public MiscItem DeepCopy(
            IMiscItemGetter item,
            MiscItem.TranslationMask?copyMask = null)
        {
            MiscItem ret = (MiscItem)((MiscItemCommon)((IMiscItemGetter)item).CommonInstance() !).GetNew();

            ((MiscItemSetterTranslationCommon)((IMiscItemGetter)ret).CommonSetterTranslationInstance() !).DeepCopyIn(
                item: ret,
                rhs: item,
                errorMask: null,
                copyMask: copyMask?.GetCrystal(),
                deepCopy: true);
            return(ret);
        }
示例#7
0
        public MiscItem DeepCopy(
            IMiscItemGetter item,
            ErrorMaskBuilder?errorMask,
            TranslationCrystal?copyMask = null)
        {
            MiscItem ret = (MiscItem)((MiscItemCommon)((IMiscItemGetter)item).CommonInstance() !).GetNew();

            ((MiscItemSetterTranslationCommon)((IMiscItemGetter)ret).CommonSetterTranslationInstance() !).DeepCopyIn(
                item: ret,
                rhs: item,
                errorMask: errorMask,
                copyMask: copyMask,
                deepCopy: true);
            return(ret);
        }
示例#8
0
        public MiscItem DeepCopy(
            IMiscItemGetter item,
            out MiscItem.ErrorMask errorMask,
            MiscItem.TranslationMask?copyMask = null)
        {
            var      errorMaskBuilder = new ErrorMaskBuilder();
            MiscItem ret = (MiscItem)((MiscItemCommon)((IMiscItemGetter)item).CommonInstance() !).GetNew();

            ((MiscItemSetterTranslationCommon)((IMiscItemGetter)ret).CommonSetterTranslationInstance() !).DeepCopyIn(
                ret,
                item,
                errorMask: errorMaskBuilder,
                copyMask: copyMask?.GetCrystal(),
                deepCopy: true);
            errorMask = MiscItem.ErrorMask.Factory(errorMaskBuilder);
            return(ret);
        }
示例#9
0
        private void AddItemToInventory()
        {
            Console.WriteLine("1) for weapon, 2) for misc");
            ConsoleKeyInfo getInput = Console.ReadKey();

            input = getInput.KeyChar;

            switch (input)
            {
            case '1':
                InventoryManager.AddToInventory(WeaponItem.Axe());
                break;

            case '2':
                InventoryManager.AddToInventory(MiscItem.Quartz());
                break;

            default:
                break;
            }
        }
示例#10
0
        public static void RecipeWithForbiddenItem()
        {
            var theItemFormLink = Skyrim.MiscItem.Gold001;

            SkyrimMod masterMod = new(theItemFormLink.FormKey.ModKey, SkyrimRelease.SkyrimSE);

            var theItem = new MiscItem(theItemFormLink.FormKey, masterMod.SkyrimRelease);

            masterMod.MiscItems.Add(theItem);

            var newRecipe = masterMod.ConstructibleObjects.AddNew("newRecipe");

            (newRecipe.Items = new()).Add(new()
            {
                Item = new()
                {
                    Item = Skyrim.MiscItem.Gold001
                }
            });

            var linkCache = masterMod.ToImmutableLinkCache();

            HashSet <IFormLinkGetter <IItemGetter> > specificSet           = new();
            HashSet <IFormLinkGetter <IItemGetter> > allSet                = new();
            HashSet <IFormLinkGetter <IItemGetter> > ingredientSet         = new();
            HashSet <IFormLinkGetter <IItemGetter> > doNotUnburdenFormKeys = new();

            doNotUnburdenFormKeys.Add(Skyrim.MiscItem.Gold001);

            RecipeProcessor recipeProcessor = new(specificSet, allSet, ingredientSet, linkCache, doNotUnburdenFormKeys);


            recipeProcessor.ClassifyRecipeIngredients(newRecipe);


            Assert.Empty(specificSet);
            Assert.Empty(allSet);
            Assert.Empty(ingredientSet);
        }
示例#11
0
        public PlayerInventory() : base()
        {
            // init default inventory
            InventoryManager.Add(this);

            InventoryManager.CreateDefault <PlayerInventory>();

            CurrentWeapon   = WeaponItem.None();
            CurrentHeadItem = HeadItem.None();
            CurrentBodyItem = BodyItem.None();
            CurrentLegsItem = LegsItem.None();

            InventoryManager.AddToInventory <PlayerInventory>(WeaponItem.Longsword());
            InventoryManager.AddToInventory <PlayerInventory>(HeadItem.IronHelmet());
            InventoryManager.AddToInventory <PlayerInventory>(BodyItem.IronChestplate());
            InventoryManager.AddToInventory <PlayerInventory>(LegsItem.IronLeggings());

            InventoryManager.AddToInventory <PlayerInventory>(MiscItem.Quartz());
            InventoryManager.AddToInventory <PlayerInventory>(MiscItem.Quartz());
            InventoryManager.AddToInventory <PlayerInventory>(MiscItem.Quartz());
            InventoryManager.AddToInventory <PlayerInventory>(MiscItem.Quartz());
            InventoryManager.AddToInventory <PlayerInventory>(MiscItem.Quartz());
        }
示例#12
0
 public override object GetNew()
 {
     return(MiscItem.GetNew());
 }
示例#13
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);
        }
示例#14
0
 public static TreeObject Birchnut()
 {
     return(new TreeObject("Birchnut", new List <IItem> {
         MiscItem.BirchnutRawLog()
     }, Objects.Tree, ObjectActions.Chop));
 }
示例#15
0
 private MiscItem(MiscItem original)
 {
     CloneMembers(original);
 }
示例#16
0
        public void TestTraderCannotAffortItem(int cost)
        {
            Item item = new MiscItem("testItem", cost);

            Assert.Less(shopper.Gold, cost);
        }