コード例 #1
0
        private async void TryNow_Click(object sender, RoutedEventArgs e)
        {   
            // Create a BuyNow object with your PayPal 
            // merchant account emailid. Remember to onboard
            // your merchant account by granting third party 
            // permissions as detailed in the docs
            BuyNow bn = new BuyNow("*****@*****.**");
            bn.UseSandbox = true;

            // Add items to the purchase
            foreach (MenuItem s in this.MenuControl.SelectedItems)
            {
                ItemBuilder builder = new ItemBuilder(s.Name)
                .Description(s.Name)
                .ID(s.ItemId)
                .Price(s.Price);
                bn.AddItem(builder);
            }
            
            // Attach event handlers. The BuyNow class emits 5 events
            // start, auth, error, cancel and complete
            bn.Start += new EventHandler<PayPal.Checkout.Event.StartEventArgs>((source, args) =>
            {
                this.Status.Message.Text = "Initiating payment";
            });
            bn.Auth += new EventHandler<PayPal.Checkout.Event.AuthEventArgs>((source, args) =>
            {               
                this.Status.Message.Text = "Authenticating payment: " + args.Token;
            });
            bn.Complete += new EventHandler<PayPal.Checkout.Event.CompleteEventArgs>((source, args) =>
            {                
                this.Status.displayStoryboard.Begin();
                this.Status.Message.Text = "Your payment is complete. Transaction id: " + args.TransactionID;
                clearSelection();
            });
            bn.Cancel += new EventHandler<PayPal.Checkout.Event.CancelEventArgs>((source, args) =>
            {
                this.Status.displayStoryboard.Begin();
                this.Status.Message.Text = "Your payment was cancelled.";
                clearSelection();
            });
            bn.Error += new EventHandler<PayPal.Checkout.Event.ErrorEventArgs>((source, args) =>
            {
                this.Status.displayStoryboard.Begin();
                this.Status.Message.Text = "There was an error processing your payment: " + args.Type + " " + args.Message;
                clearSelection();
            });

            // Ready to go. Call the asynchronous Execute operation
            // to initiate the payment. Remember to mark your calling
            // function with the async keyword since this is an async call
            bool ret = await bn.Execute();
        }
コード例 #2
0
        public void Delete_GivenBorrowerExists_ShouldDeleteBorrowerAndCallSavedChanges()
        {
            //---------------Set up test pack-------------------
            var item = new ItemBuilder()
                   .WithRandomProps().Build();

            var dbContext = new TestDbContextBuilder()
                .WithItems(item)
                .Build();

            var repository = CreateItemsRepositoryBuilder().WithDbContext(dbContext).Build();
            //---------------Assert Precondition----------------
            //---------------Execute Test ----------------------
            repository.Delete(item);
            //---------------Test Result -----------------------
            Assert.AreEqual(0, dbContext.Borrowers.Count());
            dbContext.Received().SaveChanges();
        }
コード例 #3
0
        public void Details_GivenItemId_ShouldReturnViewWithMapModel()
        {
            //---------------Set up test pack-------------------
            var item = new ItemBuilder().WithRandomProps().Build();
            var id = item.Id;

            var repository = Substitute.For<IItemRepository>();
   
            repository.Get(id).Returns(item);
            var mappingEngine = Substitute.For<IMappingEngine>();
            var itemViewModels = new ItemViewModel {Id= RandomValueGen.GetRandomInt()};
            mappingEngine.Map< ItemViewModel > (item).Returns(itemViewModels);
           var controller = CreateBuilder()
                .WithItemRepository(repository)
                .WithMappingEngine(mappingEngine)
                .Build();
            //---------------Assert Precondition----------------
            //---------------Execute Test ----------------------
            var result = controller.Details(id)as ViewResult;
            //---------------Test Result -----------------------
            Assert.IsNotNull(result);
            var model = result.Model as ItemViewModel;
            Assert.IsNotNull(model);
        }
コード例 #4
0
        // Token: 0x0600001B RID: 27 RVA: 0x000028E8 File Offset: 0x00000AE8
        public override void Start()
        {
            ItemBuilder.Init();
            FakePrefabHooks.Init();
            HookYeah.Init();
            GungeonAPI.GungeonAP.Init();
            FakePrefabHooks.Init();
            GungeonAPI.Tools.Init();
            ItemAPI.FakePrefabHooks.Init();
            GungeonAP.Init();
            FakePrefabHooks.Init();
            ShrineFactory.Init();
            ShrineFactory.PlaceBnyBreachShrines();
            TestActiveItem.Init();
            VengeanceVlone.Init();
            ShatterEffect.Initialise();
            ShrineOfTheLeadLord.Add();


            ArtifactOfRevenge.Init();
            ArtifactOfAttraction.Init();
            ArtifactOfGlass.Init();
            ArtifactOfAvarice.Init();
            ArtifactOfDaze.Init();
            ArtifactOfPrey.Init();
            ArtifactOfMegalomania.Init();
            ArtifactOfFodder.Init();
            ArtifactOfBolster.Init();
            ArtifactOfHatred.Init();
            ArtifactOfEnigma.Init();
            ArtifactOfSacrifice.Init();



            ModuleCannon.Add();
            ModuleChip.Init();
            ModuleAmmoEater.Init();
            ModuleDamage.Init();
            ModuleClipSize.Init();
            ModuleFireRate.Init();
            ModuleReload.Init();
            T2ModuleYV.Init();
            T2ModuleCloak.Init();
            T2ModulePierce.Init();
            T2ModuleBounce.Init();
            T2ModuleEjector.Init();
            T2ModuleHoming.Init();
            T3ModuleRocket.Init();
            T3ModuleInaccurate.Init();
            T3ModuleColossus.Init();
            T3ModuleOverload.Init();
            T3ModuleReactive.Init();
            CorruptModuleSensor.Init();
            CorruptModuleAccuracy.Init();
            CorruptModuleLoose.Init();
            CorruptModuleCoolant.Init();
            CorruptModuleDamage.Init();


            //Gimmick Heavy Guns
            TrainGun.Add();
            LastStand.Add();
            SoulStealer.Add();
            Commiter.Add();
            Pickshot.Add();
            AerialBombardment.Add();


            //Mimic Guns
            Casemimic.Add();
            ABlasphemimic.Add();
            Gunthemimic.Add();

            Mimikey47.Add();

            //Mechanical Guns

            ThunderStorm.Add();
            CaptainsShotgun.Add();
            EnforcersLaw.Add();
            TimeZoner.Add();
            ArtemissileRocket.Add();
            BigNukeGun.Add();
            BoxGun.Add();
            REXNeedler.Add();
            FlakCannon.Add();
            GunslayerShotgun.Add();
            RogueLegendary.Add();


            //Otherworldly Guns
            HarvestersShotgun.Add();

            PrismaticShot.Add();
            Starbounder.Add();
            ReaverClaw.Add();
            ReaverHeart.Add();
            ChaosRevolver.Add();
            ChaosRevolverSynergyForme.Add();
            ChaosHand.Add();
            NuclearTentacle.Add();

            //Outright Wacky weaponry
            OppressorsCrossbow.Add();
            GunslayerGauntlets.Add();
            SuperFlakCannon.Add();
            MithrixHammer.Add();
            TungstenCube.Add();
            CoolStaff.Add();
            ASwordGun.Add();
            AGunSword.Add();

            //Dumb Guns
            StickGun.Add();
            BulletCaster.Add();
            SausageRevolver.Add();
            BloatedRevolver.Add();
            PocketPistol.Add();
            BrokenGunParts.Add();
            IDPDFreakGun.Add();
            FakeShotgun.Add();

            //Life Living
            PersonalGuard.Init();
            GlockOfTheDead.Init();
            LizardBloodTransfusion.Init();
            AbsoluteZeroPotion.Init();
            MatrixPotion.Init();
            GreandeParasite.Init();
            //Joke Items
            SpeckOfDust.Init();
            LastResort.Init();
            JokeBook.Init();
            //Mechanical Items
            OnPlayerItemUsedItem.Init();
            BloodyTrigger.Init();
            StaticCharger.Init();

            //Bullet Type Items
            ResurrectionBullets.Init();
            GuillotineRounds.Register();

            LunarGlassRounds.Init();
            ReaverRounds.Init();


            SimpBullets.Init();
            //Cursed Items   Risk Reward Items
            LeadHand.Init();
            JammedGuillotine.Init();

            CrownOfBlood.Init();
            RTG.Init();
            DGrenade.Init();
            MalachiteCrown.Init();
            AncientWhisper.Init();
            AncientEnigma.Init();
            LunarGlassSyringe.Init();
            SlayerKey.Init();
            DamocleanClip.Init();
            DeathMark.Init();
            TheMonolith.Init();
            LoopMarker.Init();
            BulletRelic.Init();
            GodLifesGift.Init();

            //Defense Items
            SuperShield.Init();
            GunslayerHelmet.Init();
            FreezeLighter.Init();
            //Stats Up
            Microscope.Init();
            EmpoweringCore.Init();
            BookOfEconomics.Register();
            CounterChamber.Register();
            Infusion.Init();
            MinigunRounds.Register();
            //Otherworldly
            SpiritOfStagnation.Init();
            SoulInAJar.Init();
            AmmoRepurposer.Init();
            SkyGrass.Init();
            ChaosChamber.Init();
            ChaosGodsWrath.Register();
            Coolrobes.Init();
            //Companion Items/CompanionAI
            Claycord.Init();
            Blastcore.Init();
            ClayCordStatue.ClayBuildPrefab();
            GunSoulBox.Init();
            GunSoulBlue.BlueBuildPrefab();
            GunSoulGreen.GreenBuildPrefab();
            GunSoulRed.RedBuildPrefab();
            GunSoulYellow.YellowBuildPrefab();
            GunSoulPink.PinkBuildPrefab();
            GunSoulPurple.PurpleBuildPrefab();
            PointZero.Init();
            BabyGoodModular.Init();
            //Guon Stones
            GuonPebble.Init();
            ChaosGuonStone.Init();
            BulluonStone.Init();
            DynamiteGuon.Init();
            GuonGeon.Init();
            //Ammolets
            LunarGlassAmmolet.Init();
            ReaverAmmolet.Init();
            //TableTechs
            TableTechReload.Init();
            TableTechBomb.Init();
            TableTechSoul.Init();
            TableTechKnife.Init();
            //OP???
            BunnysFoot.Init();
            //Random Weird Shit that just kinda exists
            GungeonInvestment.Init();
            BrokenLockpicker.Init();
            Dejammer.Init();
            Keylocator.Init();
            Keyceipt.Init();
            FrequentFlyer.Init();

            //Vengeance.Init();
            TestItemBNY.Init();
            DragunHeartThing.Init();
            MasteryReplacementRNG.InitDungeonHook();
            SynergyFormInitialiser.AddSynergyForms();
            InitialiseSynergies.DoInitialisation();
            BunnyModule.Log(BunnyModule.MOD_NAME + " v" + BunnyModule.VERSION + " started successfully.", BunnyModule.TEXT_COLOR);
        }
コード例 #5
0
        public override void Start()
        {
            try
            {
                ItemBuilder.Init();
                //sound stuffs
                ZipFilePath = this.Metadata.Archive;
                FilePath    = this.Metadata.Directory;
                //register all items and synergies. if text at the bottom doesnt fire something along the way crashed/produced and error
                //Not all scripts are loaded some are saved for a later date.


                // general passive
                Dizzyring.Register();
                Spring_roll.Register();
                Salmon_roll.Register();
                dragun_roll.Register();
                Long_roll_boots.Register();
                Rocket_boots.Register();
                Fly_Friend.Register();
                Space_hammer.Register();
                Sus_rounds.Register();
                nightmare_mode.Register();
                Fates_blessing.Register();
                daft_helm.Register();
                punk_helm.Register();
                book.Register();
                clean_soul.Register();
                stardust.Register();
                loan.Register();
                tabletech_dizzy.Register();
                SCP_323.Register();
                //Cant_touch_ths.Register();
                Super_fly.Register();
                Im_blue.Register();
                bad_attitude.Register();
                rubber_man.Register();
                Survivor.Register();
                speedster.Register();
                Danger_dance.Register();
                disco_inferno.Register();
                persuasive_bullets.Register();
                Slide_tech.Register();
                PeaceStandard.Register();
                SpeedyChamber.Register();
                ChamberofChambers.Register();
                menacing_aura.Register();
                Malware.Register();
                Queasy.Register();
                Farsighted.Register();
                ten_gallon.Register();
                BleakBubbles.Register();
                TableTech_AmpedCover.Register();
                War_paint.Register();
                Neon_bullets.Register();
                FractBullets.Register();
                //Alex.Add();
                //blobsplit.Register();

                // general active
                Led_Maiden.Register();
                jojo_arrow.Register();
                nano_boost.Register();
                rad_board.Register();
                koolbucks.Register();
                sandvich.Register();
                dog.Register();
                power_bracer.Register();
                roundabout.Register();
                Eye_of_the_tiger.Register();
                Luft_balloons.Register();
                //punisher.Register();
                vodoo_kit.Register();
                BloodyNapkin.Register();
                Pig_Whistle.Register();
                shield.Register();
                AndroidReactorCore.Register();
                GnatHat.Register();
                HotelCaliforniaSpecial.Register();
                MindControlHeadband.Register();
                Dullahan_curse.Register();
                Rage_shield.Register();
                Sheila.Register();


                //Guns
                hail_2_u.Add();
                //fourth_wall_breaker.Add();
                Za_hando.Add();
                violin.Add();
                Queen.Add();
                Lance.Add();
                MagicHat.Add();
                Lil_Boom.Add();
                BlackStabbith.Add();
                Ball.Add();
                harpoon.Add();
                Mozam.Add();
                GunLance.Add();
                hot_coffee.Add();
                NewNewCopperChariot.Add();
                Hells_bells.Add();
                Succ.Add();
                Sheila_LMG.Add();
                TaurenTails.Add();
                ToyAK.Add();
                Neon.Add();
                Maw.Add();
                FireStrike.Add();
                //BeatDownUnder.Add();
                Catalyzer.Add();
                //ChargeRifle.Add();

                //Devtools
                noclip.Register();
                ActiveCharger.Register();


                // shrines
                //KTGShrine.Add();



                //orbitals
                Stopda.Register();


                DualGunsManager.AddDual();

                //unfinished or unfunctional


                //Rhythmic_heart.Register();
                //smooth_criminal.Register();
                //Old_Computer.Register();
                //bandaids.Register();
                //Jim.Register();
                //shaw.Register();
                //Empty_Collection.Register();
                //Rocker_Collection.Register();
                //Knives.Register();
                //Dio.Register();
                //testing_gun.Add()
                //Spear.Add();
                //SealedScythe.Add();
                //KnightSpear.Add();
                //SpinHammer.Add();
                //trinket.Register();
                //Corrupted_persuasive_bullets.Register();
                //RatGun.Add();
                //jumper.Add();
                //grapplehooks.Register();
                //pocketwatch.Register();
                //DanceParty.Register();
                //bandaids.Register();
                //Glun.Add();


                //punt is being a bad boy and must go down here

                //synergies
                GameManager.Instance.SynergyManager.synergies = GameManager.Instance.SynergyManager.synergies.Concat(new AdvancedSynergyEntry[] { new Customsynergiesknives.tomislav() }).ToArray();
                GameManager.Instance.SynergyManager.synergies = GameManager.Instance.SynergyManager.synergies.Concat(new AdvancedSynergyEntry[] { new Customsynergiesknives.Daft_Punk() }).ToArray();
                GameManager.Instance.SynergyManager.synergies = GameManager.Instance.SynergyManager.synergies.Concat(new AdvancedSynergyEntry[] { new Customsynergiesknives.Super_Duper_Fly() }).ToArray();
                GameManager.Instance.SynergyManager.synergies = GameManager.Instance.SynergyManager.synergies.Concat(new AdvancedSynergyEntry[] { new Customsynergiesknives.split() }).ToArray();
                GameManager.Instance.SynergyManager.synergies = GameManager.Instance.SynergyManager.synergies.Concat(new AdvancedSynergyEntry[] { new Customsynergiesknives.flurry_of_blows() }).ToArray();
                GameManager.Instance.SynergyManager.synergies = GameManager.Instance.SynergyManager.synergies.Concat(new AdvancedSynergyEntry[] { new Customsynergiesknives.BEEES() }).ToArray();
                GameManager.Instance.SynergyManager.synergies = GameManager.Instance.SynergyManager.synergies.Concat(new AdvancedSynergyEntry[] { new Customsynergiesknives.nano() }).ToArray();
                GameManager.Instance.SynergyManager.synergies = GameManager.Instance.SynergyManager.synergies.Concat(new AdvancedSynergyEntry[] { new Customsynergiesknives.Big_problem() }).ToArray();
                GameManager.Instance.SynergyManager.synergies = GameManager.Instance.SynergyManager.synergies.Concat(new AdvancedSynergyEntry[] { new Customsynergiesknives.lich() }).ToArray();
                GameManager.Instance.SynergyManager.synergies = GameManager.Instance.SynergyManager.synergies.Concat(new AdvancedSynergyEntry[] { new Customsynergiesknives.Chariot() }).ToArray();
                GameManager.Instance.SynergyManager.synergies = GameManager.Instance.SynergyManager.synergies.Concat(new AdvancedSynergyEntry[] { new Customsynergiesknives.the_World_revolving() }).ToArray();
                GameManager.Instance.SynergyManager.synergies = GameManager.Instance.SynergyManager.synergies.Concat(new AdvancedSynergyEntry[] { new Customsynergiesknives.doubleStandard() }).ToArray();
                GameManager.Instance.SynergyManager.synergies = GameManager.Instance.SynergyManager.synergies.Concat(new AdvancedSynergyEntry[] { new Customsynergiesknives.Mozam_hammer() }).ToArray();
                GameManager.Instance.SynergyManager.synergies = GameManager.Instance.SynergyManager.synergies.Concat(new AdvancedSynergyEntry[] { new Customsynergiesknives.Mozam_fools() }).ToArray();
                GameManager.Instance.SynergyManager.synergies = GameManager.Instance.SynergyManager.synergies.Concat(new AdvancedSynergyEntry[] { new Customsynergiesknives.Mozam_Throw() }).ToArray();
                //GameManager.Instance.SynergyManager.synergies = GameManager.Instance.SynergyManager.synergies.Concat(new AdvancedSynergyEntry[] { new Customsynergiesknives.Mozam_Shatter() }).ToArray();
                GameManager.Instance.SynergyManager.synergies = GameManager.Instance.SynergyManager.synergies.Concat(new AdvancedSynergyEntry[] { new Customsynergiesknives.Mozam_mazoM() }).ToArray();
                GameManager.Instance.SynergyManager.synergies = GameManager.Instance.SynergyManager.synergies.Concat(new AdvancedSynergyEntry[] { new Customsynergiesknives.MonsterHunter() }).ToArray();
                GameManager.Instance.SynergyManager.synergies = GameManager.Instance.SynergyManager.synergies.Concat(new AdvancedSynergyEntry[] { new Customsynergiesknives.AC() }).ToArray();
                GameManager.Instance.SynergyManager.synergies = GameManager.Instance.SynergyManager.synergies.Concat(new AdvancedSynergyEntry[] { new Customsynergiesknives.DC() }).ToArray();
                GameManager.Instance.SynergyManager.synergies = GameManager.Instance.SynergyManager.synergies.Concat(new AdvancedSynergyEntry[] { new Customsynergiesknives.Mas_Queso() }).ToArray();



                AudioResourceLoader.InitAudio();


                Hook hook = new Hook(
                    typeof(PlayerController).GetProperty("LocalShaderName", BindingFlags.Public | BindingFlags.Instance).GetGetMethod(),
                    typeof(Module).GetMethod("LocalShaderNameGetHook")
                    );

                //supid punt gun ruins everything
                punt.Add();
                GameManager.Instance.SynergyManager.synergies = GameManager.Instance.SynergyManager.synergies.Concat(new AdvancedSynergyEntry[] { new Customsynergiesknives.Iron_grip() }).ToArray();

                Log($"Don't bring a {MOD_NAME} v{VERSION}. You'll lose!", TEXT_COLOR);
            }
            catch (Exception e)
            {
                ETGModConsole.Log($"<color=#{TEXT_COLOR}>{MOD_NAME}: {e.Message}</color>");
                ETGModConsole.Log(e.StackTrace);

                Log(e.Message);
                Log("\t" + e.StackTrace);
                Log($"Something in Knife_to_a_gunfight broke somewhere...", TEXT_COLOR);
                Log($"If you're reading this please tell me at the gungeon discord and screenshot the error.", TEXT_COLOR);
            }
        }
コード例 #6
0
 public void Create_POST_ShouldCallSaveAndRedirectToIndex()
 {
     //---------------Set up test pack-------------------
     var items = new ItemBuilder().WithRandomProps().Build();
     var repository = Substitute.For<IItemRepository>();
     var mappingEngine = Substitute.For<IMappingEngine>();
     var itemViewModel = new ItemViewModel();
     mappingEngine.Map<Item>(itemViewModel).Returns(items);
     var itemController = CreateBuilder().WithItemRepository(repository).WithMappingEngine(mappingEngine).Build();
     //---------------Assert Precondition----------------
     //---------------Execute Test ----------------------
     var result = itemController.Create(itemViewModel) as RedirectToRouteResult;
     //---------------Test Result -----------------------
     repository.Received().Save(items);
     Assert.IsNotNull(result);
     var actionName = result.RouteValues["action"];
     Assert.AreEqual("Index", actionName);
 }
コード例 #7
0
 protected override void DoEffect(PlayerController user)
 {
     StealthEffect();
     base.StartCoroutine(ItemBuilder.HandleDuration(this, this.duration, user, new Action <PlayerController>(this.BreakStealth)));
 }
コード例 #8
0
        // Returns true if hit an enemy entity
        public bool WeaponDamage(DaggerfallUnityItem strikingWeapon, bool arrowHit, Transform hitTransform, Vector3 impactPosition, Vector3 direction)
        {
            DaggerfallEntityBehaviour entityBehaviour  = hitTransform.GetComponent <DaggerfallEntityBehaviour>();
            DaggerfallMobileUnit      entityMobileUnit = hitTransform.GetComponentInChildren <DaggerfallMobileUnit>();
            EnemyMotor  enemyMotor  = hitTransform.GetComponent <EnemyMotor>();
            EnemySounds enemySounds = hitTransform.GetComponent <EnemySounds>();

            // Check if hit a mobile NPC
            MobilePersonNPC mobileNpc = hitTransform.GetComponent <MobilePersonNPC>();

            if (mobileNpc)
            {
                if (!mobileNpc.IsGuard)
                {
                    EnemyBlood blood = hitTransform.GetComponent <EnemyBlood>();
                    if (blood)
                    {
                        blood.ShowBloodSplash(0, impactPosition);
                    }
                    mobileNpc.Motor.gameObject.SetActive(false);
                    playerEntity.TallyCrimeGuildRequirements(false, 5);
                    playerEntity.CrimeCommitted = PlayerEntity.Crimes.Murder;
                    playerEntity.SpawnCityGuards(true);

                    // Allow custom race handling of weapon hit against mobile NPCs, e.g. vampire feeding or lycanthrope killing
                    if (entityBehaviour)
                    {
                        entityBehaviour.Entity.SetHealth(0);
                        RacialOverrideEffect racialOverride = GameManager.Instance.PlayerEffectManager.GetRacialOverrideEffect();
                        if (racialOverride != null)
                        {
                            racialOverride.OnWeaponHitEntity(GameManager.Instance.PlayerEntity, entityBehaviour.Entity);
                        }
                    }
                }
                else
                {
                    playerEntity.CrimeCommitted = PlayerEntity.Crimes.Assault;
                    GameObject guard = playerEntity.SpawnCityGuard(mobileNpc.transform.position, mobileNpc.transform.forward);
                    entityBehaviour  = guard.GetComponent <DaggerfallEntityBehaviour>();
                    entityMobileUnit = guard.GetComponentInChildren <DaggerfallMobileUnit>();
                    enemyMotor       = guard.GetComponent <EnemyMotor>();
                    enemySounds      = guard.GetComponent <EnemySounds>();
                }
                mobileNpc.Motor.gameObject.SetActive(false);
            }

            // Check if hit an entity and remove health
            if (entityBehaviour)
            {
                if (entityBehaviour.EntityType == EntityTypes.EnemyMonster || entityBehaviour.EntityType == EntityTypes.EnemyClass)
                {
                    EnemyEntity enemyEntity = entityBehaviour.Entity as EnemyEntity;

                    // Calculate damage
                    int  animTime = (int)(ScreenWeapon.GetAnimTime() * 1000);   // Get animation time, converted to ms.
                    bool isEnemyFacingAwayFromPlayer = entityMobileUnit.Summary.AnimStateRecord % 5 > 2 &&
                                                       entityMobileUnit.Summary.EnemyState != MobileStates.SeducerTransform1 &&
                                                       entityMobileUnit.Summary.EnemyState != MobileStates.SeducerTransform2;
                    int damage = FormulaHelper.CalculateAttackDamage(playerEntity, enemyEntity, isEnemyFacingAwayFromPlayer, animTime, strikingWeapon);

                    // Break any "normal power" concealment effects on player
                    if (playerEntity.IsMagicallyConcealedNormalPower && damage > 0)
                    {
                        EntityEffectManager.BreakNormalPowerConcealmentEffects(GameManager.Instance.PlayerEntityBehaviour);
                    }

                    // Play arrow sound and add arrow to target's inventory
                    if (arrowHit)
                    {
                        DaggerfallUnityItem arrow = ItemBuilder.CreateItem(ItemGroups.Weapons, (int)Weapons.Arrow);
                        enemyEntity.Items.AddItem(arrow);
                    }

                    // Play hit sound and trigger blood splash at hit point
                    if (damage > 0)
                    {
                        if (usingRightHand)
                        {
                            enemySounds.PlayHitSound(currentRightHandWeapon);
                        }
                        else
                        {
                            enemySounds.PlayHitSound(currentLeftHandWeapon);
                        }

                        EnemyBlood blood = hitTransform.GetComponent <EnemyBlood>();
                        if (blood)
                        {
                            blood.ShowBloodSplash(enemyEntity.MobileEnemy.BloodIndex, impactPosition);
                        }

                        // Knock back enemy based on damage and enemy weight
                        if (enemyMotor)
                        {
                            if (enemyMotor.KnockbackSpeed <= (5 / (PlayerSpeedChanger.classicToUnitySpeedUnitRatio / 10)) &&
                                entityBehaviour.EntityType == EntityTypes.EnemyClass ||
                                enemyEntity.MobileEnemy.Weight > 0)
                            {
                                float enemyWeight    = enemyEntity.GetWeightInClassicUnits();
                                float tenTimesDamage = damage * 10;
                                float twoTimesDamage = damage * 2;

                                float knockBackAmount = ((tenTimesDamage - enemyWeight) * 256) / (enemyWeight + tenTimesDamage) * twoTimesDamage;
                                float KnockbackSpeed  = (tenTimesDamage / enemyWeight) * (twoTimesDamage - (knockBackAmount / 256));
                                KnockbackSpeed /= (PlayerSpeedChanger.classicToUnitySpeedUnitRatio / 10);

                                if (KnockbackSpeed < (15 / (PlayerSpeedChanger.classicToUnitySpeedUnitRatio / 10)))
                                {
                                    KnockbackSpeed = (15 / (PlayerSpeedChanger.classicToUnitySpeedUnitRatio / 10));
                                }
                                enemyMotor.KnockbackSpeed     = KnockbackSpeed;
                                enemyMotor.KnockbackDirection = direction;
                            }
                        }

                        if (DaggerfallUnity.Settings.CombatVoices && entityBehaviour.EntityType == EntityTypes.EnemyClass && Dice100.SuccessRoll(40))
                        {
                            Genders gender;
                            if (entityMobileUnit.Summary.Enemy.Gender == MobileGender.Male || enemyEntity.MobileEnemy.ID == (int)MobileTypes.Knight_CityWatch)
                            {
                                gender = Genders.Male;
                            }
                            else
                            {
                                gender = Genders.Female;
                            }

                            bool heavyDamage = damage >= enemyEntity.MaxHealth / 4;
                            enemySounds.PlayCombatVoice(gender, false, heavyDamage);
                        }
                    }
                    else
                    {
                        if ((!arrowHit && !enemyEntity.MobileEnemy.ParrySounds) || strikingWeapon == null)
                        {
                            ScreenWeapon.PlaySwingSound();
                        }
                        else if (enemyEntity.MobileEnemy.ParrySounds)
                        {
                            enemySounds.PlayParrySound();
                        }
                    }

                    // Handle weapon striking enchantments - this could change damage amount
                    if (strikingWeapon != null && strikingWeapon.IsEnchanted)
                    {
                        EntityEffectManager effectManager = GetComponent <EntityEffectManager>();
                        if (effectManager)
                        {
                            damage = effectManager.DoItemEnchantmentPayloads(EnchantmentPayloadFlags.Strikes, strikingWeapon, GameManager.Instance.PlayerEntity.Items, enemyEntity.EntityBehaviour, damage);
                        }
                        strikingWeapon.RaiseOnWeaponStrikeEvent(entityBehaviour, damage);
                    }

                    // Remove health
                    enemyEntity.DecreaseHealth(damage);

                    // Handle attack from player
                    enemyEntity.EntityBehaviour.HandleAttackFromSource(GameManager.Instance.PlayerEntityBehaviour);

                    // Allow custom race handling of weapon hit against enemies, e.g. vampire feeding or lycanthrope killing
                    RacialOverrideEffect racialOverride = GameManager.Instance.PlayerEffectManager.GetRacialOverrideEffect();
                    if (racialOverride != null)
                    {
                        racialOverride.OnWeaponHitEntity(GameManager.Instance.PlayerEntity, entityBehaviour.Entity);
                    }

                    return(true);
                }
            }

            return(false);
        }
コード例 #9
0
        public void Create_POST_ShouldCallSaveAndRedirectToIndex()
        {
            //---------------Set up test pack-------------------
            var borrowerItemRepository = Substitute.For<IBorrowerItemRepository>();
            var borrowerRepository = Substitute.For<IBorrowerRepository>();
            var itemRepository = Substitute.For<IItemRepository>();
            var mapper = Substitute.For<IMappingEngine>();

            var borrowersItem = new BorrowerItemBuilder().WithRandomProps().Build();
            var borrower = new BorrowerBuilder().WithRandomProps().Build();
            var item = new ItemBuilder().WithRandomProps().Build();

            var borrowerItemViewModel = new BorrowerItemViewModel();

            mapper.Map<BorrowersItem>(borrowerItemViewModel).Returns(borrowersItem);

            itemRepository.Get(borrowerItemViewModel.ItemId).Returns(item);

            borrowersItem.ItemId = item.Id;
            borrowersItem.BorrowerId = borrower.Id;
            borrowerRepository.Get(borrowerItemViewModel.BorrowerId).Returns(borrower);

            borrowerItemViewModel.ItemId = item.Id;
            borrowerItemViewModel.BorrowerId = borrower.Id;
            borrowerItemViewModel.DateBorrowed=DateTime.Now;
            borrowerItemViewModel.DateReturned=DateTime.Now.ToString();

           
            
            var borrowerItemController = CreateBuilder()
                   .WithBorrowerItemRepository(borrowerItemRepository)
                   .WithBorrowerRepository(borrowerRepository)
                   .WithItemRepository(itemRepository)
                   .WithMappingEngine(mapper)
                   .Build();
            //---------------Assert Precondition----------------
            //---------------Execute Test ----------------------
            var result = borrowerItemController.Create(borrowerItemViewModel) as RedirectToRouteResult;
            //---------------Test Result -----------------------
            borrowerItemRepository.Received().Save(borrowersItem);
            Assert.IsNotNull(result);
            var actionName = result.RouteValues["action"];
            Assert.AreEqual("Index", actionName);
        }
コード例 #10
0
 public void Create_POST_GivenPersonIdIsNotNull_ShouldSetPersonName()
 {
     //---------------Set up test pack-------------------
     var item = new ItemBuilder().WithRandomProps().Build();
     var person = new PersonBuilder().WithRandomProps().Build();
     var mappingEngine = Substitute.For<IMappingEngine>();
     var itemsRepository = Substitute.For<IItemsRepository>();
     var personRepository = Substitute.For<IPersonRepository>();
     var lending = new LendingBuilder().WithRandomProps().Build();
     var viewModel = new LendingViewModelBuilder().WithRandomProps().Build();
     mappingEngine.Map<LendingViewModel, Lending>(viewModel).Returns(lending);
     itemsRepository.GetById(viewModel.ItemId).Returns(item);
     personRepository.GetById(viewModel.PersonId).Returns(person);
     var controller = CreateLendingController(null, mappingEngine, personRepository, itemsRepository);
     //---------------Assert Precondition----------------
     Assert.IsTrue(controller.ModelState.IsValid);
     //---------------Execute Test ----------------------
     var result = controller.Create(viewModel) as ViewResult;
     //---------------Test Result -----------------------
     Assert.AreEqual(lending.PersonName, person.FirstName);
 }
コード例 #11
0
        public static ReadOnlyCollection <ItemField> FieldForeingLines(ItemBuilder item)
        {
            var fields = item.Definition.Fields.Where(i => item.Definition.FKList.Fields.Contains(i.Name)).ToList();

            return(new ReadOnlyCollection <ItemField>(fields.Where(f => FieldsDescription(item).Select(a => a.Name).ToList().Contains(f.Name) == false).ToList()));
        }
コード例 #12
0
        public void DeleteConfirmed_GivenItemIsReturnedFromRepo_ShouldCallDeleteItem()
        {
            //---------------Set up test pack-------------------
            var item = new ItemBuilder().WithRandomProps().Build();
            var itemsRepository = Substitute.For<IItemsRepository>();
            itemsRepository.GetById(item.ItemId).Returns(item);
            var itemsController = CreateItemsControllerBuilder()
                .WithItemsRepository(itemsRepository)
              
                .Build();
            //---------------Assert Precondition----------------

            //---------------Execute Test ----------------------
            var result = itemsController.DeleteConfirmed(item.ItemId);
            //---------------Test Result -----------------------
            itemsRepository.Received().DeleteItem(item);
        }
コード例 #13
0
        public override void Start()
        {
            try
            {
                ItemBuilder.Init();

                //register all items and synergies. if text at the bottom doesnt fire something along the way crashed/produced and error
                //Not all scripts are loaded some are saved for a later date.


                // general passive
                Dizzyring.Register();
                Spring_roll.Register();
                Salmon_roll.Register();
                dragun_roll.Register();
                Long_roll_boots.Register();
                Rocket_boots.Register();
                Fly_Friend.Register();
                Space_hammer.Register();
                Sus_rounds.Register();
                nightmare_mode.Register();
                Fates_blessing.Register();
                daft_helm.Register();
                punk_helm.Register();
                book.Register();
                clean_soul.Register();
                stardust.Register();
                loan.Register();
                tabletech_dizzy.Register();
                SCP_323.Register();
                Cant_touch_ths.Register();
                Super_fly.Register();
                Im_blue.Register();
                bad_attitude.Register();
                rubber_man.Register();
                Survivor.Register();
                speedster.Register();
                Danger_dance.Register();
                disco_inferno.Register();
                persuasive_bullets.Register();
                Slide_tech.Register();
                PeaceStandard.Register();
                SpeedyChamber.Register();
                ChamberofChambers.Register();


                // general active
                Led_Maiden.Register();
                jojo_arrow.Register();
                nano_boost.Register();
                rad_board.Register();
                koolbucks.Register();
                cased_daruma.Register();
                sandvich.Register();
                dog.Register();
                power_bracer.Register();
                roundabout.Register();
                Eye_of_the_tiger.Register();
                Luft_balloons.Register();
                punisher.Register();
                vodoo_kit.Register();
                BloodyNapkin.Register();
                Pig_Whistle.Register();
                shield.Register();
                AndroidReactorCore.Register();
                GnatHat.Register();
                HotelCaliforniaSpecial.Register();


                //Guns
                hail_2_u.Add();
                fourth_wall_breaker.Add();
                Za_hando.Add();
                violin.Add();
                Queen.Add();
                Lance.Add();
                MagicHat.Add();
                CopperChariot.Add();
                Lil_Boom.Add();
                BlackStabbith.Add();
                Ball.Add();
                harpoon.Add();


                //Devtools
                noclip.Register();
                ActiveCharger.Register();

                //unfinished or unfunctional

                MindControlHeadband.Register();
                //smooth_criminal.Register();
                //Old_Computer.Register();
                //bandaids.Register();
                //Jim.Register();
                //shaw.Register();
                //Empty_Collection.Register();
                //Rocker_Collection.Register();
                //menacing_aura.Register();
                //Knives.Register();
                //Dio.Register();
                //testing_gun.Add();
                //hot_coffee.Add();
                //SealedScythe.Add();
                //KnightSpear.Add();
                //SpinHammer.Add();
                //trinket.Register();
                //Corrupted_persuasive_bullets.Register();
                //RatGun.Add();
                //jumper.Add();
                //pocketwatch.Register();


                GameManager.Instance.SynergyManager.synergies = GameManager.Instance.SynergyManager.synergies.Concat(new AdvancedSynergyEntry[] { new Customsynergiesknives.tomislav() }).ToArray();
                GameManager.Instance.SynergyManager.synergies = GameManager.Instance.SynergyManager.synergies.Concat(new AdvancedSynergyEntry[] { new Customsynergiesknives.Daft_Punk() }).ToArray();
                GameManager.Instance.SynergyManager.synergies = GameManager.Instance.SynergyManager.synergies.Concat(new AdvancedSynergyEntry[] { new Customsynergiesknives.Super_Duper_Fly() }).ToArray();
                GameManager.Instance.SynergyManager.synergies = GameManager.Instance.SynergyManager.synergies.Concat(new AdvancedSynergyEntry[] { new Customsynergiesknives.split() }).ToArray();
                GameManager.Instance.SynergyManager.synergies = GameManager.Instance.SynergyManager.synergies.Concat(new AdvancedSynergyEntry[] { new Customsynergiesknives.flurry_of_blows() }).ToArray();
                GameManager.Instance.SynergyManager.synergies = GameManager.Instance.SynergyManager.synergies.Concat(new AdvancedSynergyEntry[] { new Customsynergiesknives.BEEES() }).ToArray();
                GameManager.Instance.SynergyManager.synergies = GameManager.Instance.SynergyManager.synergies.Concat(new AdvancedSynergyEntry[] { new Customsynergiesknives.nano() }).ToArray();
                GameManager.Instance.SynergyManager.synergies = GameManager.Instance.SynergyManager.synergies.Concat(new AdvancedSynergyEntry[] { new Customsynergiesknives.Big_problem() }).ToArray();
                GameManager.Instance.SynergyManager.synergies = GameManager.Instance.SynergyManager.synergies.Concat(new AdvancedSynergyEntry[] { new Customsynergiesknives.lich() }).ToArray();
                GameManager.Instance.SynergyManager.synergies = GameManager.Instance.SynergyManager.synergies.Concat(new AdvancedSynergyEntry[] { new Customsynergiesknives.Chariot() }).ToArray();
                GameManager.Instance.SynergyManager.synergies = GameManager.Instance.SynergyManager.synergies.Concat(new AdvancedSynergyEntry[] { new Customsynergiesknives.the_World_revolving() }).ToArray();
                GameManager.Instance.SynergyManager.synergies = GameManager.Instance.SynergyManager.synergies.Concat(new AdvancedSynergyEntry[] { new Customsynergiesknives.doubleStandard() }).ToArray();

                Log($"Don't bring a {MOD_NAME} v{VERSION}. You'll lose!", TEXT_COLOR);
            }
            catch (Exception e)
            {
                ETGModConsole.Log($"<color=#{TEXT_COLOR}>{MOD_NAME}: {e.Message}</color>");
                ETGModConsole.Log(e.StackTrace);

                Log(e.Message);
                Log("\t" + e.StackTrace);
                Log($"Something in Knife_to_a_gunfight broke somewhere...", TEXT_COLOR);
                Log($"If you're reading this please tell me at the gungeon discord", TEXT_COLOR);
            }
        }
コード例 #14
0
    /// <summary>Continues PageLoad execution if session is alive</summary>
    private void Go()
    {
        string res = string.Empty;

        if (this.Request.QueryString.Count == 0)
        {
            string instanceName = string.Empty;
            if (this.Request.Form["InstanceName"] != null)
            {
                instanceName = this.Request.Form["InstanceName"];
            }

            this.instance = CustomerFramework.Load(instanceName);
            res           = "No Action";
            this.errors   = new List <Error>();
            this.dataFile = new List <DataLine>();
            if (!IsPostBack)
            {
                if (this.Request.Form["itemName"] != null)
                {
                    this.Item = new ItemBuilder(this.Request.Form["itemName"], this.instance.Name);
                }

                string file = SaveUploadedFile(Request.Files);

                if (!string.IsNullOrEmpty(file))
                {
                    file = Path.GetFileName(file);
                }

                this.dataFile = this.dataFile.OrderBy(d => d.Line).ToList();
                this.errors   = this.errors.OrderBy(d => d.Linea).ToList();

                res = "{\"file\":\"" + file + "\",\"errors\":[";
                bool first = true;
                foreach (var er in errors)
                {
                    if (first)
                    {
                        first = false;
                    }
                    else
                    {
                        res += ",";
                    }

                    res += string.Format(
                        CultureInfo.InvariantCulture,
                        @"{{""Type"":""{0}"",""Line"":{1},""Message"":""{2}""}}",
                        er.ErrorType,
                        er.Linea,
                        ToolsJson.JsonCompliant(er.Message));
                }

                res += "],\"data\":[";

                if (this.errors.Count == 0)
                {
                    first = true;
                    foreach (var dl in this.dataFile)
                    {
                        if (first)
                        {
                            first = false;
                        }
                        else
                        {
                            res += ",";
                        }

                        res += string.Format(
                            CultureInfo.InvariantCulture,
                            @"{{""Type"":""Data"",""Line"":{0},""Message"":{1}}}",
                            dl.Line,
                            dl.Data);
                    }
                }

                res += string.Format(CultureInfo.InvariantCulture, @"],""ImportId"":""{0}""}}", new Guid());
            }

            if (this.errors.Count == 0)
            {
                HttpContext.Current.Session["Import" + this.importId] = this.itemsReaded;
            }

            this.Response.Clear();
            this.Response.Write(res);
            this.Response.Flush();
            this.Response.SuppressContent = true;
            this.ApplicationInstance.CompleteRequest();
        }
        else
        {
            var codedQuery = new CodedQuery();
            codedQuery.SetQuery(this.Request.QueryString);
            string file         = codedQuery.GetByKey <string>("file");
            string itemName     = codedQuery.GetByKey <string>("item");
            string importId     = codedQuery.GetByKey <string>("importId");
            string instanceName = codedQuery.GetByKey <string>("InstanceName");
            string resImport    = ImportXlsx(file, importId, itemName);
            res = "Upload<br />" + file + "<br />" + itemName;

            this.Response.Clear();
            this.Response.Write(resImport);
            this.Response.Flush();
            this.Response.SuppressContent = true;
            this.ApplicationInstance.CompleteRequest();
        }
    }
コード例 #15
0
    private DataLine Parse(IRow data, int index, ItemDefinition definition, List <string> primaryKeys)
    {
        var d0  = DateTime.Now;
        var res = new DataLine()
        {
            Line = index, Data = string.Empty
        };

        if (data.Cells.Count > this.typeIndex.Count)
        {
            this.errors.Add(new Error()
            {
                Linea     = index,
                ErrorType = "Data",
                Message   = "El número de celdas no es correcto"
            });
        }
        else
        {
            var message  = new StringBuilder("[");
            int contCell = 0;
            var itemData = new ItemBuilder(this.Item.ItemName, definition, this.instance.Name);
            foreach (var field in itemFields)
            {
                var    cell      = data.GetCell(contCell);
                string cellValue = "null";
                string testValue = string.Empty;
                if (cell != null)
                {
                    cellValue = GetCellValueForJson(this.typeIndex[contCell], cell, field.Length);
                    testValue = cellValue;

                    // GES-129 Eliminar comillas del inicio y final
                    if (testValue.StartsWith("\"", StringComparison.OrdinalIgnoreCase))
                    {
                        testValue = testValue.Substring(1);
                    }

                    if (testValue.EndsWith("\"", StringComparison.OrdinalIgnoreCase))
                    {
                        testValue = testValue.Substring(0, testValue.Length - 1);
                    }

                    // GES-238 los mails y urls deben cumplir el formato
                    if (field.DataType == FieldDataType.Email)
                    {
                        if (field.Required || !string.IsNullOrEmpty(testValue))
                        {
                            if (!Basics.EmailIsValid(testValue))
                            {
                                this.errors.Add(new Error()
                                {
                                    Linea     = index,
                                    ErrorType = "Data",
                                    Message   = string.Format(
                                        CultureInfo.InvariantCulture,
                                        "El email del campo {0} no es valido ({1}).",
                                        field.Label,
                                        testValue)
                                });
                            }
                        }
                    }

                    if (field.DataType == FieldDataType.Url)
                    {
                        if (field.Required || !string.IsNullOrEmpty(testValue))
                        {
                            Uri  uriResult;
                            bool result = Uri.TryCreate(testValue, UriKind.Absolute, out uriResult) && (uriResult.Scheme == Uri.UriSchemeHttp || uriResult.Scheme == Uri.UriSchemeHttps);
                            if (!result)
                            {
                                testValue = "http://" + testValue;
                                result    = Uri.TryCreate(testValue, UriKind.Absolute, out uriResult) && (uriResult.Scheme == Uri.UriSchemeHttp || uriResult.Scheme == Uri.UriSchemeHttps);
                                if (!result)
                                {
                                    this.errors.Add(new Error()
                                    {
                                        Linea     = index,
                                        ErrorType = "Data",
                                        Message   = string.Format(
                                            CultureInfo.InvariantCulture,
                                            "La dirección URL del campo {0} no es valida ({1}).",
                                            field.Label,
                                            testValue)
                                    });
                                }
                            }
                        }
                    }

                    if (this.typeIndex[contCell] == FieldDataType.Text || this.typeIndex[contCell] == FieldDataType.Textarea)
                    {
                        if (field.Length.HasValue)
                        {
                            if (testValue.Length > field.Length)
                            {
                                this.errors.Add(new Error()
                                {
                                    Linea     = index,
                                    ErrorType = "Data",
                                    Message   = string.Format(
                                        CultureInfo.InvariantCulture,
                                        "El campo {0} tiene una longitud superior a {1}.",
                                        field.Label,
                                        field.Length.Value)
                                });
                            }
                        }
                    }
                    //// END GES-129

                    // Sólo se comprueba el FK si el campo está informado
                    if (!string.IsNullOrEmpty(testValue))
                    {
                        // GES-130 Se comprueba que si es un foreignlist haya valor en la tabla referenciada

                        /*if (definition.ForeignValues.Any(fv => fv.LocalName == field.Name))
                         * {
                         *  ForeignList fl = definition.ForeignValues.Where(fv =>  fv.LocalName.Equals(field.Name, StringComparison.OrdinalIgnoreCase)).First();
                         *  if (DataPersistence.GetAllByField(Item.InstanceName, fl.ItemName, fl.ImportReference, testValue).Count == 0)
                         *  {
                         *      errors.Add(new Error()
                         *      {
                         *          ErrorType = "Data",
                         *          Linea = index,
                         *          Message = string.Format(
                         *              CultureInfo.InvariantCulture,
                         *              "El campo <strong>{0}</strong> no encuentra referencia sobre el valor &quot;<strong>{1}</strong>&quot;",
                         *              field.Label,
                         *              testValue)
                         *      });
                         *  }
                         * }*/
                    }

                    if (cellValue.Equals("\"FixedList\"", StringComparison.OrdinalIgnoreCase))
                    {
                        string dataCell  = cell.StringCellValue;
                        var    fixedItem = new FixedListItem();// DataPersistence.FixedListItemGetById(itemData.InstanceName, field.FixedListId, dataCell);

                        if (!string.IsNullOrEmpty(cell.StringCellValue) && fixedItem == null)
                        {
                            errors.Add(new Error()
                            {
                                ErrorType = "Data",
                                Linea     = index,
                                Message   = string.Format(
                                    CultureInfo.InvariantCulture,
                                    "El campo <strong>{0}</strong> tiene el valor &quot;<strong>{1}</strong>&quot; que no está en la lista de valores aceptados",
                                    field.Label,
                                    dataCell)
                            });
                        }
                        else
                        {
                            itemData[field.Name] = fixedItem.Id;
                            cellValue            = string.Format(CultureInfo.InvariantCulture, @"""{0}""", fixedItem.Description);
                            testValue            = cellValue.Replace("\"", string.Empty);
                        }
                    }
                    else
                    {
                        if (this.typeIndex[contCell] == FieldDataType.ImageGallery)
                        {
                            itemData.Add(field.Name, string.Empty);
                            testValue = string.Empty;
                        }
                        else if (field.DataType == FieldDataType.Boolean || field.DataType == FieldDataType.NullableBoolean)
                        {
                            if (!string.IsNullOrEmpty(testValue))
                            {
                                itemData.Add(field.Name, Convert.ToBoolean(testValue));
                            }
                        }
                        else
                        {
                            if (!string.IsNullOrEmpty(testValue))
                            {
                                itemData.Add(field.Name, testValue.Replace(@"\""", @""""));
                            }
                            else
                            {
                                itemData.Add(field.Name, cellValue);
                            }
                        }
                    }
                }

                message.AppendFormat(CultureInfo.InvariantCulture, @"{0}""{1}""", contCell > 0 ? "," : string.Empty, testValue);
                contCell++;
            }

            // Juan Castilla - Comprobar que la PK no esté ya en la carga
            string primaryKeyData = itemData.PrimaryKeyData;
            if (primaryKeys.Contains(primaryKeyData))
            {
                this.errors.Add(new Error()
                {
                    Linea     = index,
                    ErrorType = "Data",
                    Message   = "La clave ya aparece en otro registro de esta carga"
                });
            }
            else
            {
                primaryKeys.Add(primaryKeyData);
            }

            // Cofirmar que los campos obligatorios están rellenados
            foreach (var field in Item.Definition.Fields.Where(f => f.Required))
            {
                if (field.Name != "Id" && field.Name != "CompanyId")
                {
                    if (!itemData.ContainsKey(field.Name))
                    {
                        this.errors.Add(new Error()
                        {
                            Linea     = index,
                            ErrorType = "Data",
                            Message   = string.Format(CultureInfo.InvariantCulture, "El campo {0} es obligatorio", field.Label)
                        });
                    }
                    else if (itemData[field.Name] == null)
                    {
                        this.errors.Add(new Error()
                        {
                            Linea     = index,
                            ErrorType = "Data",
                            Message   = "El campo " + field.Label + " es obligatorio"
                        });
                    }
                }
            }

            if (itemData.Definition.ItemRules.Count > 0)
            {
                foreach (var rule in itemData.Definition.ItemRules)
                {
                    var complains = new SpecialRule(itemData, rule).Complains;
                    if (!complains.Success)
                    {
                        this.errors.Add(new Error()
                        {
                            Linea     = index,
                            ErrorType = "Data",
                            Message   = complains.MessageError
                        });
                    }
                }
            }

            message.Append("]");

            if (res.Data.Count() < 21)
            {
                res.Data = message.ToString();
            }

            this.dataFile.Add(res);
            this.itemsReaded.Add(itemData);
        }

        return(res);
    }
コード例 #16
0
        // Returns true if hit an enemy entity
        public bool WeaponDamage(RaycastHit hit, Vector3 direction, Collider arrowHitCollider = null, bool arrowHit = false)
        {
            DaggerfallUnityItem strikingWeapon = usingRightHand ? currentRightHandWeapon : currentLeftHandWeapon;

            if (arrowHit)
            {
                strikingWeapon = lastBowUsed;
            }
            else
            {
                // Check if hit has an DaggerfallAction component
                DaggerfallAction action = hit.transform.gameObject.GetComponent <DaggerfallAction>();
                if (action)
                {
                    action.Receive(player, DaggerfallAction.TriggerTypes.Attack);
                }

                // Check if hit has an DaggerfallActionDoor component
                DaggerfallActionDoor actionDoor = hit.transform.gameObject.GetComponent <DaggerfallActionDoor>();
                if (actionDoor)
                {
                    actionDoor.AttemptBash(true);
                    return(false);
                }

                // Check if player hit a static exterior door
                if (GameManager.Instance.PlayerActivate.AttemptExteriorDoorBash(hit))
                {
                    return(false);
                }
            }

            // Set up for use below
            Transform transform = arrowHit ? arrowHitCollider.gameObject.transform : hit.transform;
            DaggerfallEntityBehaviour entityBehaviour  = transform.GetComponent <DaggerfallEntityBehaviour>();
            DaggerfallMobileUnit      entityMobileUnit = transform.GetComponentInChildren <DaggerfallMobileUnit>();
            EnemyMotor  enemyMotor  = transform.GetComponent <EnemyMotor>();
            EnemySounds enemySounds = transform.GetComponent <EnemySounds>();

            // Check if hit a mobile NPC
            MobilePersonNPC mobileNpc = transform.GetComponent <MobilePersonNPC>();

            if (mobileNpc)
            {
                if (!mobileNpc.Billboard.IsUsingGuardTexture)
                {
                    EnemyBlood blood = transform.GetComponent <EnemyBlood>();
                    if (blood)
                    {
                        if (!arrowHit)
                        {
                            blood.ShowBloodSplash(0, hit.point);
                        }
                        else
                        {
                            blood.ShowBloodSplash(0, arrowHitCollider.gameObject.transform.position);
                        }
                    }
                    mobileNpc.Motor.gameObject.SetActive(false);
                    playerEntity.TallyCrimeGuildRequirements(false, 5);
                    playerEntity.CrimeCommitted = PlayerEntity.Crimes.Murder;
                    playerEntity.SpawnCityGuards(true);

                    // Allow custom race handling of weapon hit against mobile NPCs, e.g. vampire feeding or lycanthrope killing
                    if (entityBehaviour)
                    {
                        entityBehaviour.Entity.SetHealth(0);
                        RacialOverrideEffect racialOverride = GameManager.Instance.PlayerEffectManager.GetRacialOverrideEffect();
                        if (racialOverride != null)
                        {
                            racialOverride.OnWeaponHitEntity(GameManager.Instance.PlayerEntity, entityBehaviour.Entity);
                        }
                    }
                }
                else
                {
                    playerEntity.CrimeCommitted = PlayerEntity.Crimes.Assault;
                    GameObject guard = playerEntity.SpawnCityGuard(mobileNpc.transform.position, mobileNpc.transform.forward);
                    entityBehaviour  = guard.GetComponent <DaggerfallEntityBehaviour>();
                    entityMobileUnit = guard.GetComponentInChildren <DaggerfallMobileUnit>();
                    enemyMotor       = guard.GetComponent <EnemyMotor>();
                    enemySounds      = guard.GetComponent <EnemySounds>();
                }
                mobileNpc.Motor.gameObject.SetActive(false);
            }

            // Check if hit an entity and remove health
            if (entityBehaviour)
            {
                if (entityBehaviour.EntityType == EntityTypes.EnemyMonster || entityBehaviour.EntityType == EntityTypes.EnemyClass)
                {
                    EnemyEntity enemyEntity = entityBehaviour.Entity as EnemyEntity;

                    // Calculate damage
                    int animTime = (int)(ScreenWeapon.GetAnimTime() * 1000);    // Get animation time, converted to ms.
                    int damage   = FormulaHelper.CalculateAttackDamage(playerEntity, enemyEntity, entityMobileUnit.Summary.AnimStateRecord, animTime, strikingWeapon);

                    // Break any "normal power" concealment effects on player
                    if (playerEntity.IsMagicallyConcealedNormalPower && damage > 0)
                    {
                        EntityEffectManager.BreakNormalPowerConcealmentEffects(GameManager.Instance.PlayerEntityBehaviour);
                    }

                    // Play arrow sound and add arrow to target's inventory
                    if (arrowHit)
                    {
                        DaggerfallUnityItem arrow = ItemBuilder.CreateItem(ItemGroups.Weapons, (int)Weapons.Arrow);
                        enemyEntity.Items.AddItem(arrow);
                    }

                    // Play hit sound and trigger blood splash at hit point
                    if (damage > 0)
                    {
                        if (usingRightHand)
                        {
                            enemySounds.PlayHitSound(currentRightHandWeapon);
                        }
                        else
                        {
                            enemySounds.PlayHitSound(currentLeftHandWeapon);
                        }

                        EnemyBlood blood = transform.GetComponent <EnemyBlood>();
                        if (blood)
                        {
                            blood.ShowBloodSplash(enemyEntity.MobileEnemy.BloodIndex, hit.point);
                        }

                        // Knock back enemy based on damage and enemy weight
                        if (enemyMotor)
                        {
                            if (enemyMotor.KnockbackSpeed <= (5 / (PlayerSpeedChanger.classicToUnitySpeedUnitRatio / 10)) &&
                                entityBehaviour.EntityType == EntityTypes.EnemyClass ||
                                enemyEntity.MobileEnemy.Weight > 0)
                            {
                                float enemyWeight    = enemyEntity.GetWeightInClassicUnits();
                                float tenTimesDamage = damage * 10;
                                float twoTimesDamage = damage * 2;

                                float knockBackAmount = ((tenTimesDamage - enemyWeight) * 256) / (enemyWeight + tenTimesDamage) * twoTimesDamage;
                                float KnockbackSpeed  = (tenTimesDamage / enemyWeight) * (twoTimesDamage - (knockBackAmount / 256));
                                KnockbackSpeed /= (PlayerSpeedChanger.classicToUnitySpeedUnitRatio / 10);

                                if (KnockbackSpeed < (15 / (PlayerSpeedChanger.classicToUnitySpeedUnitRatio / 10)))
                                {
                                    KnockbackSpeed = (15 / (PlayerSpeedChanger.classicToUnitySpeedUnitRatio / 10));
                                }
                                enemyMotor.KnockbackSpeed     = KnockbackSpeed;
                                enemyMotor.KnockbackDirection = direction;
                            }
                        }

                        if (DaggerfallUnity.Settings.CombatVoices && entityBehaviour.EntityType == EntityTypes.EnemyClass && Dice100.SuccessRoll(40))
                        {
                            Genders gender;
                            if (entityMobileUnit.Summary.Enemy.Gender == MobileGender.Male || enemyEntity.MobileEnemy.ID == (int)MobileTypes.Knight_CityWatch)
                            {
                                gender = Genders.Male;
                            }
                            else
                            {
                                gender = Genders.Female;
                            }

                            bool heavyDamage = damage >= enemyEntity.MaxHealth / 4;
                            enemySounds.PlayCombatVoice(gender, false, heavyDamage);
                        }
                    }
                    else
                    {
                        if ((!arrowHit && !enemyEntity.MobileEnemy.ParrySounds) || strikingWeapon == null)
                        {
                            ScreenWeapon.PlaySwingSound();
                        }
                        else if (enemyEntity.MobileEnemy.ParrySounds)
                        {
                            enemySounds.PlayParrySound();
                        }
                    }

                    // Handle weapon striking enchantments - this could change damage amount
                    if (strikingWeapon != null && strikingWeapon.IsEnchanted)
                    {
                        EntityEffectManager effectManager = GetComponent <EntityEffectManager>();
                        if (effectManager)
                        {
                            damage = effectManager.DoItemEnchantmentPayloads(EnchantmentPayloadFlags.Strikes, strikingWeapon, GameManager.Instance.PlayerEntity.Items, enemyEntity.EntityBehaviour, damage);
                        }
                        strikingWeapon.RaiseOnWeaponStrikeEvent(entityBehaviour, damage);
                    }

                    // Remove health
                    enemyEntity.DecreaseHealth(damage);

                    // Make foe attack their aggressor
                    // Currently this is just player, but should be expanded later
                    // for a wider variety of behaviours
                    if (enemyMotor)
                    {
                        // Make enemies in an area aggressive if player attacked a non-hostile one.
                        if (!enemyMotor.IsHostile)
                        {
                            GameManager.Instance.MakeEnemiesHostile();
                        }
                        enemyMotor.MakeEnemyHostileToAttacker(GameManager.Instance.PlayerEntityBehaviour);
                    }

                    if (enemyEntity.MobileEnemy.ID == (int)MobileTypes.Knight_CityWatch && enemyEntity.CurrentHealth <= 0)
                    {
                        playerEntity.TallyCrimeGuildRequirements(false, 1);
                        playerEntity.CrimeCommitted = PlayerEntity.Crimes.Murder;
                    }

                    // Allow custom race handling of weapon hit against enemies, e.g. vampire feeding or lycanthrope killing
                    RacialOverrideEffect racialOverride = GameManager.Instance.PlayerEffectManager.GetRacialOverrideEffect();
                    if (racialOverride != null)
                    {
                        racialOverride.OnWeaponHitEntity(GameManager.Instance.PlayerEntity, entityBehaviour.Entity);
                    }

                    return(true);
                }
            }

            return(false);
        }
コード例 #17
0
        public static string QueryFKList(ItemBuilder item, Dictionary <string, string> parameters)
        {
            var descriptionFields = FieldsDescription(item);
            var fieldLines        = FieldForeingLines(item);
            var res = new StringBuilder("");

            if (item.Definition.Fields != null)
            {
                foreach (var field in fieldLines)
                {
                    res.Append(field.SqlFieldExtractor);
                    res.Append(" +");
                }
            }

            var descriptionFieldLine = item.Definition.Layout.Description.Pattern;
            var descriptionFieldList = new List <string>();

            foreach (var field in descriptionFields)
            {
                descriptionFieldList.Add(field.SqlFieldExtractorValue);
            }

            var nfield = item.Definition.Layout.Description.Pattern.ToCharArray().Count(c => c.Equals('{'));

            for (var x = 0; x < nfield; x++)
            {
                descriptionFieldLine = descriptionFieldLine.Replace("{" + x + "}", "#" + x + " ");
            }

            var parts = descriptionFieldLine.Split(' ');

            descriptionFieldLine = string.Empty;
            foreach (var part in parts)
            {
                if (part.StartsWith("#"))
                {
                    descriptionFieldLine += " + " + part;
                }
                else
                {
                    descriptionFieldLine += " + '" + part + "'";
                }
            }

            for (var x = 0; x < nfield; x++)
            {
                descriptionFieldLine = descriptionFieldLine.Replace("#" + x, descriptionFieldList[x]);
            }

            string additionalWhere = string.Empty;

            if (parameters.Count > 0)
            {
                bool firstParameter = true;
                foreach (var parameter in parameters)
                {
                    if (firstParameter)
                    {
                        additionalWhere += " WHERE ";
                    }
                    else
                    {
                        additionalWhere += " AND ";
                    }

                    additionalWhere += "Item." + parameter.Key + "='" + parameter.Value + "'";
                }
            }

            return(string.Format(
                       CultureInfo.InvariantCulture,
                       @"SELECT 
		              '{{""Id"":' +  CAST(Item.Id AS  nvarchar(20)) + ',' +
                      '""Description"":""' {1} + '"",' + 
                      {2}
                      '""Active"":' + CASE WHEN Item.Active = 0 THEN 'false' ELSE 'true' END + '}}' AS Data
                      FROM Item_{0} Item WITH(NOLOCK){3}",
                       item.ItemName,
                       descriptionFieldLine,
                       res,
                       additionalWhere));
        }
コード例 #18
0
        public void Edit_POST_GivenModelStateIsValid_ShouldCallUpdateFromItemsRepo()
        {
            //---------------Set up test pack-------------------
            var item = new ItemBuilder().WithRandomProps().Build();
            var itemViewModel = ItemsViewModelBuilder.BuildRandom();
            var itemsRepository = Substitute.For<IItemsRepository>();
            itemsRepository.GetById(item.ItemId).Returns(item);
            var mappingEngine = _container.Resolve<IMappingEngine>();

            var itemsController = CreateItemsControllerBuilder()
                                .WithItemsRepository(itemsRepository)
                                .WithMappingEngine(mappingEngine)
                                .Build();
            //---------------Assert Precondition----------------
            Assert.IsTrue(itemsController.ModelState.IsValid);
            //---------------Execute Test ----------------------
            var result = itemsController.Edit(itemViewModel);
            //---------------Test Result -----------------------
            itemsRepository.Received().Update(Arg.Any<Item>(), Arg.Any<Item>());
        }
コード例 #19
0
        private void WeaponDamage(FPSWeapon weapon, out bool hitEnemy)
        {
            hitEnemy = false;

            if (!mainCamera || !weapon)
            {
                return;
            }

            // Fire ray along player facing using weapon range
            // Origin point of ray is set back slightly to fix issue where strikes against enemy capsules touching player capsule do not connect
            RaycastHit hit;
            Ray        ray = new Ray(mainCamera.transform.position + -mainCamera.transform.forward * 0.1f, mainCamera.transform.forward);

            if (Physics.SphereCast(ray, SphereCastRadius, out hit, weapon.Reach - SphereCastRadius))
            {
                // Check if hit has an DaggerfallAction component
                DaggerfallAction action = hit.transform.gameObject.GetComponent <DaggerfallAction>();
                if (action)
                {
                    action.Receive(player, DaggerfallAction.TriggerTypes.Attack);
                }

                // Check if hit has an DaggerfallActionDoor component
                DaggerfallActionDoor actionDoor = hit.transform.gameObject.GetComponent <DaggerfallActionDoor>();
                if (actionDoor)
                {
                    actionDoor.AttemptBash();
                    return;
                }

                // Check if hit an entity and remove health
                DaggerfallEntityBehaviour entityBehaviour  = hit.transform.GetComponent <DaggerfallEntityBehaviour>();
                DaggerfallMobileUnit      entityMobileUnit = hit.transform.GetComponentInChildren <DaggerfallMobileUnit>();
                if (entityBehaviour)
                {
                    if (entityBehaviour.EntityType == EntityTypes.EnemyMonster || entityBehaviour.EntityType == EntityTypes.EnemyClass)
                    {
                        EnemyEntity enemyEntity = entityBehaviour.Entity as EnemyEntity;

                        // Calculate damage
                        int damage;
                        if (usingRightHand)
                        {
                            damage = FormulaHelper.CalculateAttackDamage(playerEntity, enemyEntity, (int)(EquipSlots.RightHand), entityMobileUnit.Summary.AnimStateRecord);
                        }
                        else
                        {
                            damage = FormulaHelper.CalculateAttackDamage(playerEntity, enemyEntity, (int)(EquipSlots.LeftHand), entityMobileUnit.Summary.AnimStateRecord);
                        }

                        EnemyMotor  enemyMotor  = hit.transform.GetComponent <EnemyMotor>();
                        EnemySounds enemySounds = hit.transform.GetComponent <EnemySounds>();

                        // Play arrow sound and add arrow to target's inventory
                        if (weapon.WeaponType == WeaponTypes.Bow)
                        {
                            enemySounds.PlayArrowSound();
                            DaggerfallUnityItem arrow = ItemBuilder.CreateItem(ItemGroups.Weapons, (int)Weapons.Arrow);
                            enemyEntity.Items.AddItem(arrow);
                        }

                        // Play hit sound and trigger blood splash at hit point
                        if (damage > 0)
                        {
                            if (usingRightHand)
                            {
                                enemySounds.PlayHitSound(currentRightHandWeapon);
                            }
                            else
                            {
                                enemySounds.PlayHitSound(currentLeftHandWeapon);
                            }

                            EnemyBlood blood = hit.transform.GetComponent <EnemyBlood>();
                            if (blood)
                            {
                                blood.ShowBloodSplash(enemyEntity.MobileEnemy.BloodIndex, hit.point);
                            }

                            // Knock back enemy based on damage and enemy weight
                            if (enemyMotor)
                            {
                                if (enemyMotor.KnockBackSpeed <= (5 / (PlayerSpeedChanger.classicToUnitySpeedUnitRatio / 10)) &&
                                    entityBehaviour.EntityType == EntityTypes.EnemyClass ||
                                    enemyEntity.MobileEnemy.Weight > 0)
                                {
                                    float enemyWeight    = enemyEntity.GetWeightInClassicUnits();
                                    float tenTimesDamage = damage * 10;
                                    float twoTimesDamage = damage * 2;

                                    float knockBackAmount = ((tenTimesDamage - enemyWeight) * 256) / (enemyWeight + tenTimesDamage) * twoTimesDamage;
                                    float knockBackSpeed  = (tenTimesDamage / enemyWeight) * (twoTimesDamage - (knockBackAmount / 256));
                                    knockBackSpeed /= (PlayerSpeedChanger.classicToUnitySpeedUnitRatio / 10);

                                    if (knockBackSpeed < (15 / (PlayerSpeedChanger.classicToUnitySpeedUnitRatio / 10)))
                                    {
                                        knockBackSpeed = (15 / (PlayerSpeedChanger.classicToUnitySpeedUnitRatio / 10));
                                    }
                                    enemyMotor.KnockBackSpeed     = knockBackSpeed;
                                    enemyMotor.KnockBackDirection = mainCamera.transform.forward;
                                }
                            }
                        }
                        else
                        {
                            if ((weapon.WeaponType != WeaponTypes.Bow && !enemyEntity.MobileEnemy.ParrySounds) || weapon.WeaponType == WeaponTypes.Melee)
                            {
                                weapon.PlaySwingSound();
                            }
                            else if (enemyEntity.MobileEnemy.ParrySounds)
                            {
                                enemySounds.PlayParrySound();
                            }
                        }

                        // Remove health
                        enemyEntity.DecreaseHealth(damage);
                        hitEnemy = true;

                        // Make foe attack their aggressor
                        // Currently this is just player, but should be expanded later
                        // for a wider variety of behaviours
                        if (enemyMotor)
                        {
                            // Make enemies in an area aggressive if player attacked a non-hostile one.
                            if (!enemyMotor.IsHostile)
                            {
                                GameManager.Instance.MakeEnemiesHostile();
                            }
                            enemyMotor.MakeEnemyHostileToPlayer(gameObject);
                        }
                    }
                }

                // Check if hit a mobile NPC
                MobilePersonNPC mobileNpc = hit.transform.GetComponent <MobilePersonNPC>();
                if (mobileNpc)
                {
                    EnemyBlood blood = hit.transform.GetComponent <EnemyBlood>();
                    if (blood)
                    {
                        blood.ShowBloodSplash(0, hit.point);
                    }
                    mobileNpc.Motor.gameObject.SetActive(false);
                    playerEntity.TallyCrimeGuildRequirements(false, 5);
                    // TODO: LOS check from each townsperson. If seen, register crime and start spawning guards as below.
                    playerEntity.CrimeCommitted = PlayerEntity.Crimes.Murder;
                    playerEntity.SpawnCityGuards(true);
                }
            }
        }
コード例 #20
0
        public void Update_GivenValidExistingAndNewItems_ShouldUpdateExistingItem()
        {
            //---------------Set up test pack-------------------
            var existingItem = new ItemBuilder().WithRandomProps().Build();
            var newItem = new ItemBuilder().WithRandomProps().Build();

            var dbSet = new FakeDbSet<Item> { existingItem};
            var lendingLibraryDbContext = CreateLendingLibraryDbContext(dbSet);
            var itemsRepository = CreateItemsRepository(lendingLibraryDbContext);

            //---------------Assert Precondition----------------
            Assert.AreNotEqual(existingItem.ItemId, newItem.ItemId);
            Assert.AreNotEqual(existingItem.ItemName, newItem.ItemName);
            Assert.AreNotEqual(existingItem.CreatedUsername, newItem.CreatedUsername);
            Assert.AreNotEqual(existingItem.DateCreated, newItem.DateCreated);
            Assert.AreNotEqual(existingItem.DateLastModified, newItem.DateLastModified);
            Assert.AreNotEqual(existingItem.LastModifiedUsername, newItem.LastModifiedUsername);
            Assert.AreNotEqual(existingItem.Photo, newItem.Photo);
            //---------------Execute Test ----------------------
            itemsRepository.Update(existingItem, newItem);
            //---------------Test Result -----------------------
            Assert.AreEqual(existingItem.ItemName, newItem.ItemName);
            Assert.AreEqual(existingItem.CreatedUsername, newItem.CreatedUsername);
            Assert.AreEqual(existingItem.DateCreated, newItem.DateCreated);
            Assert.AreEqual(existingItem.DateLastModified, newItem.DateLastModified);
            Assert.AreEqual(existingItem.LastModifiedUsername, newItem.LastModifiedUsername);
            Assert.AreEqual(existingItem.Photo, newItem.Photo);
        }
コード例 #21
0
        static void AssignEnemyStartingEquipment(PlayerEntity playerEntity, EnemyEntity enemyEntity, int variant)
        {
            // Use default code for non-class enemies.
            if (enemyEntity.EntityType != EntityTypes.EnemyClass)
            {
                DaggerfallUnity.Instance.ItemHelper.AssignEnemyStartingEquipment(playerEntity, enemyEntity, variant);
                return;
            }

            // Set item level, city watch never have items above iron or steel
            int     itemLevel    = (enemyEntity.MobileEnemy.ID == (int)MobileTypes.Knight_CityWatch) ? 1 : enemyEntity.Level;
            Genders playerGender = playerEntity.Gender;
            Races   playerRace   = playerEntity.Race;
            int     chance       = 50;

            // Held weapon(s) and shield/secondary:
            switch ((MobileTypes)enemyEntity.MobileEnemy.ID)
            {
            // Ranged specialists:
            case MobileTypes.Archer:
            case MobileTypes.Ranger:
                AddOrEquipWornItem(enemyEntity, ItemBuilder.CreateWeapon(RandomBow(), ItemBuilder.RandomMaterial(itemLevel)), true);
                AddOrEquipWornItem(enemyEntity, ItemBuilder.CreateWeapon((enemyEntity.MobileEnemy.ID == (int)MobileTypes.Ranger) ? RandomLongblade() : RandomShortblade(), ItemBuilder.RandomMaterial(itemLevel)));
                DaggerfallUnityItem arrowPile = ItemBuilder.CreateWeapon(Weapons.Arrow, WeaponMaterialTypes.Iron);
                arrowPile.stackCount = UnityEngine.Random.Range(4, 17);
                enemyEntity.Items.AddItem(arrowPile);
                chance = 55;
                break;

            // Combat classes:
            case MobileTypes.Barbarian:
            case MobileTypes.Knight:
            case MobileTypes.Knight_CityWatch:
            case MobileTypes.Monk:
            case MobileTypes.Spellsword:
            case MobileTypes.Warrior:
            case MobileTypes.Rogue:
                if (variant == 0)
                {
                    AddOrEquipWornItem(enemyEntity, ItemBuilder.CreateWeapon(GetCombatClassWeapon((MobileTypes)enemyEntity.MobileEnemy.ID), ItemBuilder.RandomMaterial(itemLevel)), true);
                    // Left hand shield?
                    if (Dice100.SuccessRoll(chance))
                    {
                        AddOrEquipWornItem(enemyEntity, ItemBuilder.CreateArmor(playerGender, playerRace, RandomShield(), ItemBuilder.RandomArmorMaterial(itemLevel)), true);
                    }
                    // left-hand weapon?
                    else if (Dice100.SuccessRoll(chance))
                    {
                        AddOrEquipWornItem(enemyEntity, ItemBuilder.CreateWeapon(SecondaryWeapon(), ItemBuilder.RandomMaterial(itemLevel)));
                    }
                    chance = 60;
                }
                else
                {
                    AddOrEquipWornItem(enemyEntity, ItemBuilder.CreateWeapon(RandomBigWeapon(), ItemBuilder.RandomMaterial(itemLevel)), true);
                    chance = 75;
                }
                if (enemyEntity.MobileEnemy.ID == (int)MobileTypes.Barbarian)
                {
                    chance -= 45;       // Barbies tend to forgo armor
                }
                break;

            // Mage classes:
            case MobileTypes.Mage:
            case MobileTypes.Sorcerer:
            case MobileTypes.Healer:
                AddOrEquipWornItem(enemyEntity, ItemBuilder.CreateWeapon(Weapons.Staff, ItemBuilder.RandomMaterial(itemLevel)), true);
                if (Dice100.SuccessRoll(chance))
                {
                    AddOrEquipWornItem(enemyEntity, ItemBuilder.CreateWeapon(RandomShortblade(), ItemBuilder.RandomMaterial(itemLevel)));
                }
                AddOrEquipWornItem(enemyEntity, (playerGender == Genders.Male) ? ItemBuilder.CreateMensClothing(MensClothing.Plain_robes, playerEntity.Race) : ItemBuilder.CreateWomensClothing(WomensClothing.Plain_robes, playerEntity.Race), true);
                chance = 30;
                break;

            // Sneaky classes:
            case MobileTypes.Acrobat:
            case MobileTypes.Assassin:
            case MobileTypes.Bard:
            case MobileTypes.Burglar:
            case MobileTypes.Nightblade:
            case MobileTypes.Thief:
            case MobileTypes.Battlemage:
                AddOrEquipWornItem(enemyEntity, ItemBuilder.CreateWeapon((enemyEntity.MobileEnemy.ID == (int)MobileTypes.Battlemage) ? RandomAxeOrBlade() : RandomShortblade(), ItemBuilder.RandomMaterial(itemLevel)), true);
                if (Dice100.SuccessRoll(chance))
                {
                    AddOrEquipWornItem(enemyEntity, ItemBuilder.CreateWeapon(SecondaryWeapon(), ItemBuilder.RandomMaterial(itemLevel / 2)), true);
                }
                chance = 45;
                break;
            }

            // cuirass (everyone gets at least a 50% chance, knights and warriors allways have them)
            if (Dice100.SuccessRoll(Mathf.Max(chance, 50)) || enemyEntity.MobileEnemy.ID == (int)MobileTypes.Knight | enemyEntity.MobileEnemy.ID == (int)MobileTypes.Warrior)
            {
                AddOrEquipWornItem(enemyEntity, ItemBuilder.CreateArmor(playerGender, playerRace, Armor.Cuirass, ItemBuilder.RandomArmorMaterial(itemLevel)), true);
            }
            // greaves (Barbarians always get them)
            if (Dice100.SuccessRoll(chance) || enemyEntity.MobileEnemy.ID == (int)MobileTypes.Barbarian)
            {
                AddOrEquipWornItem(enemyEntity, ItemBuilder.CreateArmor(playerGender, playerRace, Armor.Greaves, ItemBuilder.RandomArmorMaterial(itemLevel)), true);
            }
            // helm (Barbarians always get them)
            if (Dice100.SuccessRoll(chance) || enemyEntity.MobileEnemy.ID == (int)MobileTypes.Barbarian)
            {
                AddOrEquipWornItem(enemyEntity, ItemBuilder.CreateArmor(playerGender, playerRace, Armor.Helm, ItemBuilder.RandomArmorMaterial(itemLevel)), true);
            }
            // boots
            if (Dice100.SuccessRoll(chance))
            {
                AddOrEquipWornItem(enemyEntity, ItemBuilder.CreateArmor(playerGender, playerRace, Armor.Boots, ItemBuilder.RandomArmorMaterial(itemLevel)), true);
            }

            if (chance > 50)
            {
                chance -= 15;
                // right pauldron
                if (Dice100.SuccessRoll(chance))
                {
                    AddOrEquipWornItem(enemyEntity, ItemBuilder.CreateArmor(playerGender, playerRace, Armor.Right_Pauldron, ItemBuilder.RandomArmorMaterial(itemLevel)), true);
                }
                // left pauldron
                if (Dice100.SuccessRoll(chance))
                {
                    AddOrEquipWornItem(enemyEntity, ItemBuilder.CreateArmor(playerGender, playerRace, Armor.Left_Pauldron, ItemBuilder.RandomArmorMaterial(itemLevel)), true);
                }
                // gauntlets
                if (Dice100.SuccessRoll(chance))
                {
                    AddOrEquipWornItem(enemyEntity, ItemBuilder.CreateArmor(playerGender, playerRace, Armor.Gauntlets, ItemBuilder.RandomArmorMaterial(itemLevel)), true);
                }
            }

            // Chance for poisoned weapon
            if (playerEntity.Level > 1)
            {
                DaggerfallUnityItem mainWeapon = enemyEntity.ItemEquipTable.GetItem(EquipSlots.RightHand);
                if (mainWeapon != null)
                {
                    int chanceToPoison = 5;
                    if (enemyEntity.MobileEnemy.ID == (int)MobileTypes.Assassin)
                    {
                        chanceToPoison = 60;
                    }

                    if (Dice100.SuccessRoll(chanceToPoison))
                    {
                        // Apply poison
                        mainWeapon.poisonType = (Poisons)UnityEngine.Random.Range(128, 135 + 1);
                    }
                }
            }
        }
コード例 #22
0
        public void Create_GivenOneItemExist_ShouldSetItemsSelectList()
        {
            //---------------Set up test pack-------------------
            var itemsRepository = Substitute.For<IItemsRepository>();
            var item = new ItemBuilder().WithRandomProps().Build();
            itemsRepository.GetAllItems().Returns(new List<Item> { item });
            var controller = CreateLendingController(null, null, null, itemsRepository);
            //---------------Assert Precondition----------------

            //---------------Execute Test ----------------------
            var result = controller.Create() as ViewResult;
            //---------------Test Result -----------------------
            Assert.IsNotNull(result);
            var viewModel = result.Model as LendingViewModel;
            Assert.IsNotNull(viewModel);
            Assert.IsNotNull(viewModel.ItemsSelectList);
            Assert.AreEqual(item.ItemId.ToString(), viewModel.ItemsSelectList.FirstOrDefault().Value);
            Assert.AreEqual(item.ItemName, viewModel.ItemsSelectList.FirstOrDefault().Text);
            Assert.AreEqual(1, viewModel.ItemsSelectList.Count());
        }
コード例 #23
0
        static void AssignSkillEquipment(PlayerEntity playerEntity, CharacterDocument characterDocument)
        {
            Debug.Log("Starting Equipment: Assigning Based on Skills");

            // Set condition of ebony dagger if player has one from char creation questions
            IList daggers = playerEntity.Items.SearchItems(ItemGroups.Weapons, (int)Weapons.Dagger);

            foreach (DaggerfallUnityItem dagger in daggers)
            {
                if (dagger.NativeMaterialValue > (int)WeaponMaterialTypes.Steel)
                {
                    dagger.currentCondition = (int)(dagger.maxCondition * 0.15);
                }
            }

            // Skill based items
            AssignSkillItems(playerEntity, playerEntity.Career.PrimarySkill1);
            AssignSkillItems(playerEntity, playerEntity.Career.PrimarySkill2);
            AssignSkillItems(playerEntity, playerEntity.Career.PrimarySkill3);

            AssignSkillItems(playerEntity, playerEntity.Career.MajorSkill1);
            AssignSkillItems(playerEntity, playerEntity.Career.MajorSkill2);
            AssignSkillItems(playerEntity, playerEntity.Career.MajorSkill3);

            // Starting clothes are gender-specific, randomise shirt dye and pants variant
            DaggerfallUnityItem shortShirt  = null;
            DaggerfallUnityItem casualPants = null;

            if (playerEntity.Gender == Genders.Female)
            {
                shortShirt  = ItemBuilder.CreateWomensClothing(WomensClothing.Short_shirt_closed, playerEntity.Race, 0, ItemBuilder.RandomClothingDye());
                casualPants = ItemBuilder.CreateWomensClothing(WomensClothing.Casual_pants, playerEntity.Race);
            }
            else
            {
                shortShirt  = ItemBuilder.CreateMensClothing(MensClothing.Short_shirt, playerEntity.Race, 0, ItemBuilder.RandomClothingDye());
                casualPants = ItemBuilder.CreateMensClothing(MensClothing.Casual_pants, playerEntity.Race);
            }
            ItemBuilder.RandomizeClothingVariant(casualPants);
            AddOrEquipWornItem(playerEntity, shortShirt, true);
            AddOrEquipWornItem(playerEntity, casualPants, true);

            // Add spellbook, all players start with one - also a little gold and a crappy iron dagger for those with no weapon skills.
            playerEntity.Items.AddItem(ItemBuilder.CreateItem(ItemGroups.MiscItems, (int)MiscItems.Spellbook));
            playerEntity.Items.AddItem(ItemBuilder.CreateGoldPieces(UnityEngine.Random.Range(5, playerEntity.Career.Luck)));
            playerEntity.Items.AddItem(ItemBuilder.CreateWeapon(Weapons.Dagger, WeaponMaterialTypes.Iron));

            // Add some torches and candles if player torch is from items setting enabled
            if (DaggerfallUnity.Settings.PlayerTorchFromItems)
            {
                for (int i = 0; i < 2; i++)
                {
                    playerEntity.Items.AddItem(ItemBuilder.CreateItem(ItemGroups.UselessItems2, (int)UselessItems2.Torch));
                }
                for (int i = 0; i < 4; i++)
                {
                    playerEntity.Items.AddItem(ItemBuilder.CreateItem(ItemGroups.UselessItems2, (int)UselessItems2.Candle));
                }
            }

            Debug.Log("Starting Equipment: Assigning Finished");
        }
コード例 #24
0
        public static string QueryByListId(ItemBuilder item, Dictionary <string, string> parameters, string listId)
        {
            var list = item.Definition.Lists.FirstOrDefault(l => l.Id.Equals(listId, StringComparison.OrdinalIgnoreCase));

            if (list == null)
            {
                return(QueryGetAll(item));
            }

            var res       = new StringBuilder("");
            var innerJoin = new StringBuilder("");
            var joinCount = 1;

            foreach (var column in list.Columns)
            {
                var field        = item.Definition.Fields.First(f => f.Name.Equals(column.DataProperty, StringComparison.OrdinalIgnoreCase));
                var referedField = field.GetReferedField(item);

                var queryField = string.Empty;
                if (referedField != null)
                {
                    var joinClause = string.Format(
                        CultureInfo.InvariantCulture,
                        @"LEFT JOIN Item_{0} J{1} WITH(NOLOCK) ON J{1}.Id = Item.{0}Id{2}",
                        referedField.ItemName,
                        joinCount,
                        Environment.NewLine);
                    innerJoin.Append(joinClause);

                    var referedFieldQuery = referedField.SqlFieldExtractor.Replace("Item.", "J" + joinCount + ".");
                    referedFieldQuery = referedFieldQuery.Replace("\"" + referedField.Name + "\"", "\"" + field.Name + "\"");

                    if (!string.IsNullOrEmpty(column.ReplacedBy))
                    {
                        referedFieldQuery = referedFieldQuery.Replace(@"""" + field.Name + @""":", @"""" + column.ReplacedBy + @""":");
                    }

                    res.Append(referedFieldQuery);
                    joinCount++;
                }
                else
                {
                    if (string.IsNullOrEmpty(column.ReplacedBy))
                    {
                        res.Append(field.SqlFieldExtractor);
                    }
                    else
                    {
                        res.Append(field.SqlFieldExtractorReplace(column.ReplacedBy));
                    }
                }

                res.Append(" +");
            }

            string additionalWhere = string.Empty;

            if (parameters.Count > 0)
            {
                bool firstParameter = true;
                foreach (var parameter in parameters)
                {
                    if (firstParameter)
                    {
                        additionalWhere += " WHERE ";
                    }
                    else
                    {
                        additionalWhere += " AND ";
                    }

                    additionalWhere += "Item." + parameter.Key + "='" + parameter.Value + "'";
                }
            }

            return(string.Format(
                       CultureInfo.InvariantCulture,
                       @"SELECT 
		              '""Id"":' +  CAST(Item.Id AS  nvarchar(20)) + ',' +
		              {1}
                      '""Active"":' + CASE WHEN Item.Active = 0 THEN 'false' ELSE 'true' END
                      FROM Item_{0} Item WITH(NOLOCK){2}{3}",
                       item.ItemName,
                       res,
                       innerJoin,
                       additionalWhere));
        }
コード例 #25
0
        static void AssignSkillItems(PlayerEntity playerEntity, DFCareer.Skills skill)
        {
            ItemCollection items  = playerEntity.Items;
            Genders        gender = playerEntity.Gender;
            Races          race   = playerEntity.Race;

            bool upgrade = Dice100.SuccessRoll(playerEntity.Career.Luck / (playerEntity.Career.Luck < 56 ? 2 : 1));
            WeaponMaterialTypes weaponMaterial = WeaponMaterialTypes.Iron;

            if ((upgrade && !playerEntity.Career.IsMaterialForbidden(DFCareer.MaterialFlags.Steel)) || playerEntity.Career.IsMaterialForbidden(DFCareer.MaterialFlags.Iron))
            {
                weaponMaterial = WeaponMaterialTypes.Steel;
            }
            ArmorMaterialTypes armorMaterial = ArmorMaterialTypes.Leather;

            if ((upgrade && !playerEntity.Career.IsArmorForbidden(DFCareer.ArmorFlags.Chain)) || playerEntity.Career.IsArmorForbidden(DFCareer.ArmorFlags.Leather))
            {
                armorMaterial = ArmorMaterialTypes.Chain;
            }

            switch (skill)
            {
            case DFCareer.Skills.Archery:
                AddOrEquipWornItem(playerEntity, ItemBuilder.CreateWeapon(Weapons.Short_Bow, weaponMaterial));
                DaggerfallUnityItem arrowPile = ItemBuilder.CreateWeapon(Weapons.Arrow, WeaponMaterialTypes.Iron);
                arrowPile.stackCount = 30;
                items.AddItem(arrowPile);
                return;

            case DFCareer.Skills.Axe:
                AddOrEquipWornItem(playerEntity, ItemBuilder.CreateWeapon(Dice100.SuccessRoll(50) ? Weapons.Battle_Axe : Weapons.War_Axe, weaponMaterial)); return;

            case DFCareer.Skills.Backstabbing:
                AddOrEquipWornItem(playerEntity, ItemBuilder.CreateArmor(gender, race, Armor.Right_Pauldron, armorMaterial)); return;

            case DFCareer.Skills.BluntWeapon:
                AddOrEquipWornItem(playerEntity, ItemBuilder.CreateWeapon(Dice100.SuccessRoll(50) ? Weapons.Mace : Weapons.Flail, weaponMaterial)); return;

            case DFCareer.Skills.Climbing:
                AddOrEquipWornItem(playerEntity, ItemBuilder.CreateArmor(gender, race, Armor.Helm, armorMaterial, -1)); return;

            case DFCareer.Skills.CriticalStrike:
                AddOrEquipWornItem(playerEntity, ItemBuilder.CreateArmor(gender, race, Armor.Greaves, armorMaterial)); return;

            case DFCareer.Skills.Dodging:
                AddOrEquipWornItem(playerEntity, (gender == Genders.Male) ? ItemBuilder.CreateMensClothing(MensClothing.Casual_cloak, race) : ItemBuilder.CreateWomensClothing(WomensClothing.Casual_cloak, race)); return;

            case DFCareer.Skills.Etiquette:
                AddOrEquipWornItem(playerEntity, (gender == Genders.Male) ? ItemBuilder.CreateMensClothing(MensClothing.Formal_tunic, race) : ItemBuilder.CreateWomensClothing(WomensClothing.Evening_gown, race)); return;

            case DFCareer.Skills.HandToHand:
                AddOrEquipWornItem(playerEntity, ItemBuilder.CreateArmor(gender, race, Armor.Gauntlets, armorMaterial)); return;

            case DFCareer.Skills.Jumping:
                AddOrEquipWornItem(playerEntity, ItemBuilder.CreateArmor(gender, race, Armor.Boots, armorMaterial)); return;

            case DFCareer.Skills.Lockpicking:
                items.AddItem(ItemBuilder.CreateRandomPotion()); return;

            case DFCareer.Skills.LongBlade:
                AddOrEquipWornItem(playerEntity, ItemBuilder.CreateWeapon(Dice100.SuccessRoll(50) ? Weapons.Saber : Weapons.Broadsword, weaponMaterial)); return;

            case DFCareer.Skills.Medical:
                DaggerfallUnityItem bandages = ItemBuilder.CreateItem(ItemGroups.UselessItems2, (int)UselessItems2.Bandage);
                bandages.stackCount = 4;
                items.AddItem(bandages);
                return;

            case DFCareer.Skills.Mercantile:
                items.AddItem(ItemBuilder.CreateGoldPieces(UnityEngine.Random.Range(playerEntity.Career.Luck, playerEntity.Career.Luck * 4))); return;

            case DFCareer.Skills.Pickpocket:
                items.AddItem(ItemBuilder.CreateRandomGem()); return;

            case DFCareer.Skills.Running:
                AddOrEquipWornItem(playerEntity, (gender == Genders.Male) ? ItemBuilder.CreateMensClothing(MensClothing.Shoes, race) : ItemBuilder.CreateWomensClothing(WomensClothing.Shoes, race)); return;

            case DFCareer.Skills.ShortBlade:
                AddOrEquipWornItem(playerEntity, ItemBuilder.CreateWeapon(Dice100.SuccessRoll(50) ? Weapons.Shortsword : Weapons.Tanto, weaponMaterial)); return;

            case DFCareer.Skills.Stealth:
                AddOrEquipWornItem(playerEntity, (gender == Genders.Male) ? ItemBuilder.CreateMensClothing(MensClothing.Khajiit_suit, race) : ItemBuilder.CreateWomensClothing(WomensClothing.Khajiit_suit, race)); return;

            case DFCareer.Skills.Streetwise:
                AddOrEquipWornItem(playerEntity, ItemBuilder.CreateArmor(gender, race, Armor.Cuirass, armorMaterial)); return;

            case DFCareer.Skills.Swimming:
                items.AddItem((gender == Genders.Male) ? ItemBuilder.CreateMensClothing(MensClothing.Loincloth, race) : ItemBuilder.CreateWomensClothing(WomensClothing.Loincloth, race)); return;

            case DFCareer.Skills.Daedric:
            case DFCareer.Skills.Dragonish:
            case DFCareer.Skills.Giantish:
            case DFCareer.Skills.Harpy:
            case DFCareer.Skills.Impish:
            case DFCareer.Skills.Orcish:
                items.AddItem(ItemBuilder.CreateRandomBook());
                for (int i = 0; i < 4; i++)
                {
                    items.AddItem(ItemBuilder.CreateRandomIngredient(ItemGroups.CreatureIngredients1));
                }
                return;

            case DFCareer.Skills.Centaurian:
            case DFCareer.Skills.Nymph:
            case DFCareer.Skills.Spriggan:
                items.AddItem(ItemBuilder.CreateRandomBook());
                for (int i = 0; i < 4; i++)
                {
                    items.AddItem(ItemBuilder.CreateRandomIngredient(ItemGroups.PlantIngredients1));
                }
                return;
            }
        }
コード例 #26
0
        protected override void DoEffect(PlayerController user)
        {
            float dura = 1f;

            StartCoroutine(ItemBuilder.HandleDuration(this, dura, user, EndEffect));
            float coolness = PlayerStats.GetTotalCoolness();

            if (coolness >= 2)
            {
                AkSoundEngine.PostEvent("Play_WPN_radgun_wack_01", base.gameObject);
                ItemBuilder.AddPassiveStatModifier(this, PlayerStats.StatType.Coolness, -3f, StatModifier.ModifyMethod.ADDITIVE);
                int jim    = rng.Next(1, 15);
                var health = user.healthHaver;
                if (jim == 1)
                {
                    int Jackpot = rng.Next(1, 10);
                    if (Jackpot == 1)
                    {
                        user.GiveItem("briefcase_of_cash");
                    }
                    if (Jackpot == 2)
                    {
                        user.GiveItem("stuffed_star");
                    }
                    if (Jackpot == 3)
                    {
                        user.GiveItem("turtle_problem");
                    }
                    if (Jackpot == 4)
                    {
                        user.GiveItem("turtle_problem");
                    }
                    if (Jackpot == 5)
                    {
                        user.GiveItem("turtle_problem");
                    }
                    if (Jackpot == 6)
                    {
                        user.GiveItem("sunglasses");
                    }
                    if (Jackpot == 7)
                    {
                        user.GiveItem("ring_of_the_resourceful_rat");
                    }
                    if (Jackpot == 8)
                    {
                        user.GiveItem("ring_of_chest_friendship");
                    }
                    if (Jackpot == 9)
                    {
                        user.GiveItem("ring_of_fire_resistance");
                    }
                    if (Jackpot == 10)
                    {
                        user.GiveItem("armor");
                        user.GiveItem("armor");
                        user.GiveItem("armor");
                    }
                }
                if (jim == 2)
                {
                    user.GiveItem("armor");
                    user.GiveItem("armor");
                }
                if (jim == 3)
                {
                    user.GiveItem("armor");
                }
                if (jim == 4)
                {
                    user.GiveItem("armor");
                }
                if (jim == 5)
                {
                    user.GiveItem("glass_guon_stone");
                }
                if (jim == 6)
                {
                    user.GiveItem("glass_guon_stone");
                }
                if (jim == 7)
                {
                    user.GiveItem("glass_guon_stone");
                }
                if (jim == 8)
                {
                    user.GiveItem("glass_guon_stone");
                }
                if (jim == 9)
                {
                    health.ApplyHealing(1f);
                }
                if (jim == 10)
                {
                    health.ApplyHealing(1f);
                }
                if (jim == 11)
                {
                    health.ApplyHealing(1f);
                }
                if (jim == 12)
                {
                    health.ApplyHealing(1f);
                }
                if (jim == 13)
                {
                    health.ApplyHealing(1f);
                }
                if (jim == 14)
                {
                    health.ApplyHealing(1f);
                }

                this.LastOwner.stats.RecalculateStats(LastOwner, true);
            }

            else
            {
                AkSoundEngine.PostEvent("Play_WPN_devolver_morph_01", base.gameObject);
            }
        }
コード例 #27
0
        DaggerfallUnityItem CreateTempItem(CreateItemSelection selection)
        {
            Genders             gender = GameManager.Instance.PlayerEntity.Gender;
            Races               race   = GameManager.Instance.PlayerEntity.Race;
            DaggerfallUnityItem item   = null;

            switch (selection)
            {
            case CreateItemSelection.LeatherCuirass:
                item = ItemBuilder.CreateArmor(gender, race, Armor.Cuirass, ArmorMaterialTypes.Leather);
                break;

            case CreateItemSelection.LeatherGauntlets:
                item = ItemBuilder.CreateArmor(gender, race, Armor.Gauntlets, ArmorMaterialTypes.Leather);
                break;

            case CreateItemSelection.LeatherGreaves:
                item = ItemBuilder.CreateArmor(gender, race, Armor.Greaves, ArmorMaterialTypes.Leather);
                break;

            case CreateItemSelection.LeatherLeftPauldron:
                item = ItemBuilder.CreateArmor(gender, race, Armor.Left_Pauldron, ArmorMaterialTypes.Leather);
                break;

            case CreateItemSelection.LeatherRightPauldron:
                item = ItemBuilder.CreateArmor(gender, race, Armor.Right_Pauldron, ArmorMaterialTypes.Leather);
                break;

            case CreateItemSelection.LeatherHelm:
                item = ItemBuilder.CreateArmor(gender, race, Armor.Helm, ArmorMaterialTypes.Leather);
                break;

            case CreateItemSelection.LeatherBoots:
                item = ItemBuilder.CreateArmor(gender, race, Armor.Boots, ArmorMaterialTypes.Leather);
                break;

            case CreateItemSelection.ChainCuirass:
                item = ItemBuilder.CreateArmor(gender, race, Armor.Cuirass, ArmorMaterialTypes.Chain);
                break;

            case CreateItemSelection.ChainGauntlets:
                item = ItemBuilder.CreateArmor(gender, race, Armor.Gauntlets, ArmorMaterialTypes.Chain);
                break;

            case CreateItemSelection.ChainGreaves:
                item = ItemBuilder.CreateArmor(gender, race, Armor.Greaves, ArmorMaterialTypes.Chain);
                break;

            case CreateItemSelection.ChainLeftPauldron:
                item = ItemBuilder.CreateArmor(gender, race, Armor.Left_Pauldron, ArmorMaterialTypes.Chain);
                break;

            case CreateItemSelection.ChainRightPauldron:
                item = ItemBuilder.CreateArmor(gender, race, Armor.Right_Pauldron, ArmorMaterialTypes.Chain);
                break;

            case CreateItemSelection.ChainHelm:
                item = ItemBuilder.CreateArmor(gender, race, Armor.Helm, ArmorMaterialTypes.Chain);
                break;

            case CreateItemSelection.ChainBoots:
                item = ItemBuilder.CreateArmor(gender, race, Armor.Boots, ArmorMaterialTypes.Chain);
                break;

            case CreateItemSelection.SteelCuirass:
                item = ItemBuilder.CreateArmor(gender, race, Armor.Cuirass, ArmorMaterialTypes.Steel);
                break;

            case CreateItemSelection.SteelGauntlets:
                item = ItemBuilder.CreateArmor(gender, race, Armor.Gauntlets, ArmorMaterialTypes.Steel);
                break;

            case CreateItemSelection.SteelGreaves:
                item = ItemBuilder.CreateArmor(gender, race, Armor.Greaves, ArmorMaterialTypes.Steel);
                break;

            case CreateItemSelection.SteelLeftPauldron:
                item = ItemBuilder.CreateArmor(gender, race, Armor.Left_Pauldron, ArmorMaterialTypes.Steel);
                break;

            case CreateItemSelection.SteelRightPauldron:
                item = ItemBuilder.CreateArmor(gender, race, Armor.Right_Pauldron, ArmorMaterialTypes.Steel);
                break;

            case CreateItemSelection.SteelHelm:
                item = ItemBuilder.CreateArmor(gender, race, Armor.Helm, ArmorMaterialTypes.Steel);
                break;

            case CreateItemSelection.SteelBoots:
                item = ItemBuilder.CreateArmor(gender, race, Armor.Boots, ArmorMaterialTypes.Steel);
                break;

            case CreateItemSelection.SteelBuckler:
                item = ItemBuilder.CreateArmor(gender, race, Armor.Buckler, ArmorMaterialTypes.Steel);
                break;

            case CreateItemSelection.SteelDagger:
                item = ItemBuilder.CreateWeapon(Weapons.Dagger, WeaponMaterialTypes.Steel);
                break;

            case CreateItemSelection.SteelLongsword:
                item = ItemBuilder.CreateWeapon(Weapons.Longsword, WeaponMaterialTypes.Steel);
                break;

            case CreateItemSelection.SteelStaff:
                item = ItemBuilder.CreateWeapon(Weapons.Staff, WeaponMaterialTypes.Steel);
                break;

            case CreateItemSelection.ShortBow:
                item = ItemBuilder.CreateWeapon(Weapons.Short_Bow, WeaponMaterialTypes.Steel);
                break;

            case CreateItemSelection.Arrows:
                item = ItemBuilder.CreateWeapon(Weapons.Arrow, WeaponMaterialTypes.Steel);
                break;

            case CreateItemSelection.SteelBattleAxe:
                item = ItemBuilder.CreateWeapon(Weapons.Battle_Axe, WeaponMaterialTypes.Steel);
                break;

            case CreateItemSelection.Robes:
                if (gender == Genders.Male)
                {
                    item = ItemBuilder.CreateMensClothing(MensClothing.Plain_robes, race);
                }
                else
                {
                    item = ItemBuilder.CreateWomensClothing(WomensClothing.Plain_robes, race);
                }
                break;
            }

            // Set lifetime of item based on spell duration
            uint gameMinutes = DaggerfallUnity.Instance.WorldTime.DaggerfallDateTime.ToClassicDaggerfallTime();

            item.TimeForItemToDisappear = (uint)(gameMinutes + RoundsRemaining);

            return(item);
        }
コード例 #28
0
        private static void ApplyPlayerEffect(PlayerEntity playerEntity, string effect)
        {
            string[] tokens = effect.Split(' ');
            int      parseResult;

            // Skill modifier effect
            if (int.TryParse(tokens[0], out parseResult))
            {
                short           modValue;
                DFCareer.Skills skill = (DFCareer.Skills)parseResult;
                if (short.TryParse(tokens[1], out modValue))
                {
                    short startValue = playerEntity.Skills.GetPermanentSkillValue(skill);
                    playerEntity.Skills.SetPermanentSkillValue(skill, (short)(startValue + modValue));
                }
                else
                {
                    Debug.LogError("CreateCharBiography: Invalid skill adjustment value.");
                }
            }
            // Modify gold amount
            else if (effect.StartsWith("GP"))
            {
                // Correct GP commands with spaces between the sign and the amount
                if (tokens.Length > 2)
                {
                    tokens[1] = tokens[1] + tokens[2];
                }
                if (!int.TryParse(tokens[1], out parseResult))
                {
                    Debug.LogError("CreateCharBiography: GP - invalid argument.");
                    return;
                }
                if (tokens[1][0] == '+')
                {
                    playerEntity.GoldPieces += parseResult;
                }
                else if (tokens[1][0] == '-')
                {
                    playerEntity.GoldPieces -= parseResult;
                    // The player can't carry negative gold pieces
                    playerEntity.GoldPieces = playerEntity.GoldPieces < 0 ? 0 : playerEntity.GoldPieces;
                }
            }
            // Add item
            else if (effect.StartsWith("IT"))
            {
                int itemGroup;
                int groupIndex;
                int material;
                if (!int.TryParse(tokens[1], out itemGroup) ||
                    !int.TryParse(tokens[2], out groupIndex) ||
                    !int.TryParse(tokens[3], out material))
                {
                    Debug.LogError("CreateCharBiography: IT - invalid argument(s).");
                    return;
                }

                DaggerfallUnityItem newItem = null;
                if ((ItemGroups)itemGroup == ItemGroups.Weapons)
                {
                    newItem = ItemBuilder.CreateWeapon((Weapons)Enum.GetValues(typeof(Weapons)).GetValue(groupIndex), (WeaponMaterialTypes)material);
                }
                else if ((ItemGroups)itemGroup == ItemGroups.Armor)
                {
                    // Biography commands treat weapon and armor material types the same
                    newItem = ItemBuilder.CreateArmor(playerEntity.Gender, playerEntity.Race, (Armor)Enum.GetValues(typeof(Armor)).GetValue(groupIndex), WeaponToArmorMaterialType((WeaponMaterialTypes)material));
                }
                else if ((ItemGroups)itemGroup == ItemGroups.Books)
                {
                    newItem = ItemBuilder.CreateRandomBook();
                }
                else
                {
                    newItem = new DaggerfallUnityItem((ItemGroups)itemGroup, groupIndex);
                }
                playerEntity.Items.AddItem(newItem);
            }
            // Adjust reputation
            else if (effect.StartsWith("r"))
            {
                int id;
                int amount;
                // Faction
                if (effect[1] == 'f')
                {
                    if (!int.TryParse(tokens[0].Split('f')[1], out id) || !int.TryParse(tokens[1], out amount))
                    {
                        Debug.LogError("CreateCharBiography: rf - invalid argument.");
                        return;
                    }
                    playerEntity.FactionData.ChangeReputation(id, amount, true);
                }
                // Social group (Merchants, Commoners, etc.)
                else
                {
                    if (!int.TryParse(tokens[0].Split('r')[1], out id) || !int.TryParse(tokens[1], out amount))
                    {
                        Debug.LogError("CreateCharBiography: r - invalid argument.");
                        return;
                    }
                    playerEntity.SGroupReputations[id] += (short)amount;
                }
            }
            // Adjust poison resistance
            else if (effect.StartsWith("RP"))
            {
                if (int.TryParse(tokens[1], out parseResult))
                {
                    playerEntity.BiographyResistPoisonMod = parseResult;
                }
                else
                {
                    Debug.LogError("CreateCharBiography: RP - invalid argument.");
                }
            }
            // Adjust fatigue
            else if (effect.StartsWith("FT"))
            {
                if (int.TryParse(tokens[1], out parseResult))
                {
                    playerEntity.BiographyFatigueMod = parseResult;
                }
                else
                {
                    Debug.LogError("CreateCharBiography: FT - invalid argument.");
                }
            }
            // Adjust reaction roll
            else if (effect.StartsWith("RR"))
            {
                if (int.TryParse(tokens[1], out parseResult))
                {
                    playerEntity.BiographyReactionMod = parseResult;
                }
                else
                {
                    Debug.LogError("CreateCharBiography: RR - invalid argument.");
                }
            }
            // Adjust disease resistance
            else if (effect.StartsWith("RD"))
            {
                if (int.TryParse(tokens[1], out parseResult))
                {
                    playerEntity.BiographyResistDiseaseMod = parseResult;
                }
                else
                {
                    Debug.LogError("CreateCharBiography: RD - invalid argument.");
                }
            }
            // Adjust magic resistance
            else if (effect.StartsWith("MR"))
            {
                if (int.TryParse(tokens[1], out parseResult))
                {
                    playerEntity.BiographyResistMagicMod = parseResult;
                }
                else
                {
                    Debug.LogError("CreateCharBiography: MR - invalid argument.");
                }
            }
            // Adjust to-hit
            else if (effect.StartsWith("TH"))
            {
                if (int.TryParse(tokens[1], out parseResult))
                {
                    playerEntity.BiographyAvoidHitMod = parseResult;
                }
                else
                {
                    Debug.LogError("CreateCharBiography: TH - invalid argument.");
                }
            }
            else if (effect[0] == '#' || effect[0] == '!' || effect[0] == '?')
            {
                Debug.Log("CreateCharBiography: Detected biography text command.");
            }
            // Unimplemented commands
            else if (effect.StartsWith("AE"))
            {
                Debug.Log("CreateCharBiography: AE - command unimplemented.");
            }
            else if (effect.StartsWith("AF"))
            {
                Debug.Log("CreateCharBiography: AF - command unimplemented.");
            }
            else if (effect.StartsWith("AO"))
            {
                Debug.Log("CreateCharBiography: AO - command unimplemented.");
            }
            else
            {
                Debug.LogError("CreateCharBiography: Invalid command - " + effect);
            }
        }
コード例 #29
0
        private void ConfirmTrade_OnButtonClick(DaggerfallMessageBox sender, DaggerfallMessageBox.MessageBoxButtons messageBoxButton)
        {
            if (messageBoxButton == DaggerfallMessageBox.MessageBoxButtons.Yes)
            {
                // Proceed with trade.
                int tradePrice = GetTradePrice();
                switch (windowMode)
                {
                case WindowModes.Sell:
                case WindowModes.SellMagic:
                    float goldWeight = tradePrice * DaggerfallBankManager.goldUnitWeightInKg;
                    if (PlayerEntity.CarriedWeight + goldWeight <= PlayerEntity.MaxEncumbrance)
                    {
                        PlayerEntity.GoldPieces += tradePrice;
                    }
                    else
                    {
                        DaggerfallUnityItem loc = ItemBuilder.CreateItem(ItemGroups.MiscItems, (int)MiscItems.Letter_of_credit);
                        loc.value = tradePrice;
                        GameManager.Instance.PlayerEntity.Items.AddItem(loc, Items.ItemCollection.AddPosition.Front);
                    }
                    RaiseOnTradeHandler(remoteItems.GetNumItems(), tradePrice);
                    remoteItems.Clear();
                    break;

                case WindowModes.Buy:
                    PlayerEntity.DeductGoldAmount(tradePrice);
                    RaiseOnTradeHandler(basketItems.GetNumItems(), tradePrice);
                    PlayerEntity.Items.TransferAll(basketItems);
                    break;

                case WindowModes.Repair:
                    PlayerEntity.DeductGoldAmount(tradePrice);
                    if (DaggerfallUnity.Settings.InstantRepairs)
                    {
                        foreach (DaggerfallUnityItem item in remoteItemsFiltered)
                        {
                            item.currentCondition = item.maxCondition;
                        }
                    }
                    else
                    {
                        int totalRepairTime = 0, longestRepairTime = 0;
                        DaggerfallUnityItem itemLongestTime = null;
                        foreach (DaggerfallUnityItem item in remoteItemsFiltered)
                        {
                            int repairTime = FormulaHelper.CalculateItemRepairTime(item.currentCondition, item.maxCondition);
                            if (!item.RepairData.IsBeingRepaired())
                            {
                                item.RepairData.LeaveForRepair(repairTime);
                                string note = string.Format(TextManager.Instance.GetText(textDatabase, "repairNote"), item.LongName, buildingDiscoveryData.displayName);
                                GameManager.Instance.PlayerEntity.Notebook.AddNote(note);
                            }
                            totalRepairTime += repairTime;
                            if (repairTime > longestRepairTime)
                            {
                                longestRepairTime = repairTime;
                                itemLongestTime   = item;
                            }
                            item.RepairData.RepairTime = repairTime;
                        }
                        if (itemLongestTime != null)
                        {
                            itemLongestTime.RepairData.RepairTime = longestRepairTime + ((totalRepairTime - longestRepairTime) / 2);
                        }
                    }
                    RaiseOnTradeHandler(remoteItems.GetNumItems(), tradePrice);
                    break;

                case WindowModes.Identify:
                    PlayerEntity.DeductGoldAmount(GetTradePrice());
                    for (int i = 0; i < remoteItems.Count; i++)
                    {
                        DaggerfallUnityItem item = remoteItems.GetItem(i);
                        item.IdentifyItem();
                    }
                    RaiseOnTradeHandler(remoteItems.GetNumItems(), tradePrice);
                    break;
                }
                DaggerfallUI.Instance.PlayOneShot(SoundClips.GoldPieces);
                PlayerEntity.TallySkill(DFCareer.Skills.Mercantile, 1);
                Refresh();
            }
            CloseWindow();
        }
コード例 #30
0
 private new static HierarchySyncMetadataItem Bind(StoreSession session, StoreId itemId, ICollection <PropertyDefinition> propsToReturn)
 {
     return(ItemBuilder.ItemBind <HierarchySyncMetadataItem>(session, itemId, HierarchySyncMetadataItemSchema.Instance, propsToReturn));
 }
コード例 #31
0
        public static void BuildPrefab()
        {
            if (PrismaticGuonStone.orbitalPrefab != null)
            {
                return;
            }
            GameObject prefab = ItemBuilder.AddSpriteToObject("prismatic_guon", "BleakMod/Resources/prismatic_guon_stone/prismatic_guon_stone_001", null);

            FakePrefab.MarkAsFakePrefab(prefab);
            UnityEngine.Object.DontDestroyOnLoad(prefab);
            tk2dSpriteAnimator      animator      = prefab.AddComponent <tk2dSpriteAnimator>();
            tk2dSpriteAnimationClip animationClip = new tk2dSpriteAnimationClip();

            animationClip.fps      = 8;
            animationClip.wrapMode = tk2dSpriteAnimationClip.WrapMode.Loop;
            animationClip.name     = "start";

            GameObject spriteObject = new GameObject("spriteObject");

            ItemBuilder.AddSpriteToObject("spriteObject", $"BleakMod/Resources/prismatic_guon_stone/prismatic_guon_stone_001", spriteObject);
            tk2dSpriteAnimationFrame starterFrame = new tk2dSpriteAnimationFrame();

            starterFrame.spriteId         = spriteObject.GetComponent <tk2dSprite>().spriteId;
            starterFrame.spriteCollection = spriteObject.GetComponent <tk2dSprite>().Collection;
            tk2dSpriteAnimationFrame[] frameArray = new tk2dSpriteAnimationFrame[]
            {
                starterFrame
            };
            animationClip.frames = frameArray;
            for (int i = 2; i < 6; i++)
            {
                GameObject spriteForObject = new GameObject("spriteForObject");
                ItemBuilder.AddSpriteToObject("spriteForObject", $"BleakMod/Resources/prismatic_guon_stone/prismatic_guon_stone_00{i}", spriteForObject);
                tk2dSpriteAnimationFrame frame = new tk2dSpriteAnimationFrame();
                frame.spriteId         = spriteForObject.GetComponent <tk2dBaseSprite>().spriteId;
                frame.spriteCollection = spriteForObject.GetComponent <tk2dBaseSprite>().Collection;
                animationClip.frames   = animationClip.frames.Concat(new tk2dSpriteAnimationFrame[] { frame }).ToArray();
            }
            animator.Library           = animator.gameObject.AddComponent <tk2dSpriteAnimation>();
            animator.Library.clips     = new tk2dSpriteAnimationClip[] { animationClip };
            animator.DefaultClipId     = animator.GetClipIdByName("start");
            animator.playAutomatically = true;

            GameObject gameObject = animator.gameObject;

            gameObject.name = "Prismatic Guon Orbital";
            var body = gameObject.GetComponent <tk2dSprite>().SetUpSpeculativeRigidbody(IntVector2.Zero, new IntVector2(12, 11)); //Numbers at the end are the dimensions of the hitbox

            body.CollideWithTileMap = false;
            body.CollideWithOthers  = true;
            body.PrimaryPixelCollider.CollisionLayer = CollisionLayer.EnemyBulletBlocker;
            orbitalPrefab                       = gameObject.AddComponent <PlayerOrbital>();
            orbitalPrefab.motionStyle           = PlayerOrbital.OrbitalMotionStyle.ORBIT_PLAYER_ALWAYS;
            orbitalPrefab.shouldRotate          = true;
            orbitalPrefab.orbitRadius           = 1.5f;
            orbitalPrefab.orbitDegreesPerSecond = 135; //Guon Stats
            orbitalPrefab.perfectOrbitalFactor  = 1000f;
            orbitalPrefab.SetOrbitalTier(0);

            UnityEngine.Object.DontDestroyOnLoad(gameObject);
            FakePrefab.MarkAsFakePrefab(gameObject);
            gameObject.SetActive(false);
        }
コード例 #32
0
 public void Edit_GivenValidItemId_ShouldReturnItemViewModel()
 {
     //---------------Set up test pack-------------------
     var items = new ItemBuilder().WithRandomProps().Build();
     var Id = items.Id;
    var repository = Substitute.For<IItemRepository>();
     var mappingEngine = Substitute.For<IMappingEngine>();
     var itemViewModel = new ItemViewModel {Id = RandomValueGen.GetRandomInt()};
     mappingEngine.Map<Item>(itemViewModel).Returns(items);
     var itemController = CreateBuilder().WithItemRepository(repository).WithMappingEngine(mappingEngine).Build();
     //---------------Assert Precondition----------------
     //---------------Execute Test ----------------------
     var result = itemController.Edit(Id) as ViewResult;
     //---------------Test Result -----------------------
     Assert.IsNotNull(result);
    
 }
コード例 #33
0
        public void StockShopShelf(PlayerGPS.DiscoveredBuilding buildingData)
        {
            stockedDate = CreateStockedDate(DaggerfallUnity.Instance.WorldTime.Now);
            items.Clear();

            DFLocation.BuildingTypes buildingType = buildingData.buildingType;
            int shopQuality = buildingData.quality;

            Game.Entity.PlayerEntity playerEntity = GameManager.Instance.PlayerEntity;
            byte[] itemGroups = { 0 };

            switch (buildingType)
            {
            case DFLocation.BuildingTypes.Alchemist:
                itemGroups = DaggerfallLootDataTables.itemGroupsAlchemist;
                RandomlyAddPotionRecipe(25, items);
                break;

            case DFLocation.BuildingTypes.Armorer:
                itemGroups = DaggerfallLootDataTables.itemGroupsArmorer;
                break;

            case DFLocation.BuildingTypes.Bookseller:
                itemGroups = DaggerfallLootDataTables.itemGroupsBookseller;
                break;

            case DFLocation.BuildingTypes.ClothingStore:
                itemGroups = DaggerfallLootDataTables.itemGroupsClothingStore;
                break;

            case DFLocation.BuildingTypes.GemStore:
                itemGroups = DaggerfallLootDataTables.itemGroupsGemStore;
                break;

            case DFLocation.BuildingTypes.GeneralStore:
                itemGroups = DaggerfallLootDataTables.itemGroupsGeneralStore;
                items.AddItem(ItemBuilder.CreateItem(ItemGroups.Transportation, (int)Transportation.Horse));
                items.AddItem(ItemBuilder.CreateItem(ItemGroups.Transportation, (int)Transportation.Small_cart));
                break;

            case DFLocation.BuildingTypes.PawnShop:
                itemGroups = DaggerfallLootDataTables.itemGroupsPawnShop;
                break;

            case DFLocation.BuildingTypes.WeaponSmith:
                itemGroups = DaggerfallLootDataTables.itemGroupsWeaponSmith;
                break;
            }

            for (int i = 0; i < itemGroups.Length; i += 2)
            {
                ItemGroups itemGroup = (ItemGroups)itemGroups[i];
                int        chanceMod = itemGroups[i + 1];
                if (itemGroup == ItemGroups.MensClothing && playerEntity.Gender == Game.Entity.Genders.Female)
                {
                    itemGroup = ItemGroups.WomensClothing;
                }
                if (itemGroup == ItemGroups.WomensClothing && playerEntity.Gender == Game.Entity.Genders.Male)
                {
                    itemGroup = ItemGroups.MensClothing;
                }

                if (itemGroup != ItemGroups.Furniture && itemGroup != ItemGroups.UselessItems1)
                {
                    if (itemGroup == ItemGroups.Books)
                    {
                        int qualityMod = (shopQuality + 3) / 5;
                        if (qualityMod >= 4)
                        {
                            --qualityMod;
                        }
                        qualityMod++;
                        for (int j = 0; j <= qualityMod; ++j)
                        {
                            items.AddItem(ItemBuilder.CreateRandomBook());
                        }
                    }
                    else
                    {
                        System.Array enumArray = DaggerfallUnity.Instance.ItemHelper.GetEnumArray(itemGroup);
                        for (int j = 0; j < enumArray.Length; ++j)
                        {
                            DaggerfallConnect.FallExe.ItemTemplate itemTemplate = DaggerfallUnity.Instance.ItemHelper.GetItemTemplate(itemGroup, j);
                            if (itemTemplate.rarity <= shopQuality)
                            {
                                int stockChance = chanceMod * 5 * (21 - itemTemplate.rarity) / 100;
                                if (Dice100.SuccessRoll(stockChance))
                                {
                                    DaggerfallUnityItem item = null;
                                    if (itemGroup == ItemGroups.Weapons)
                                    {
                                        item = ItemBuilder.CreateWeapon(j + Weapons.Dagger, ItemBuilder.RandomMaterial(playerEntity.Level));
                                    }
                                    else if (itemGroup == ItemGroups.Armor)
                                    {
                                        item = ItemBuilder.CreateArmor(playerEntity.Gender, playerEntity.Race, j + Armor.Cuirass, ItemBuilder.RandomArmorMaterial(playerEntity.Level));
                                    }
                                    else if (itemGroup == ItemGroups.MensClothing)
                                    {
                                        item          = ItemBuilder.CreateMensClothing(j + MensClothing.Straps, playerEntity.Race);
                                        item.dyeColor = ItemBuilder.RandomClothingDye();
                                    }
                                    else if (itemGroup == ItemGroups.WomensClothing)
                                    {
                                        item          = ItemBuilder.CreateWomensClothing(j + WomensClothing.Brassier, playerEntity.Race);
                                        item.dyeColor = ItemBuilder.RandomClothingDye();
                                    }
                                    else if (itemGroup == ItemGroups.MagicItems)
                                    {
                                        item = ItemBuilder.CreateRandomMagicItem(playerEntity.Level, playerEntity.Gender, playerEntity.Race);
                                    }
                                    else
                                    {
                                        item = new DaggerfallUnityItem(itemGroup, j);
                                        if (DaggerfallUnity.Settings.PlayerTorchFromItems && item.IsOfTemplate(ItemGroups.UselessItems2, (int)UselessItems2.Oil))
                                        {
                                            item.stackCount = Random.Range(5, 20 + 1);  // Shops stock 5-20 bottles
                                        }
                                    }
                                    items.AddItem(item);
                                }
                            }
                        }
                    }
                }
            }
        }
コード例 #34
0
        /// <summary>
        /// Python has three protocols for slicing:
        ///    Simple Slicing x[i:j]
        ///    Extended slicing x[i,j,k,...]
        ///    Long Slice x[start:stop:step]
        /// 
        /// The first maps to __*slice__ (get, set, and del).  
        ///    This takes indexes - i, j - which specify the range of elements to be
        ///    returned.  In the slice variants both i, j must be numeric data types.  
        /// The 2nd and 3rd are both __*item__.  
        ///    This receives a single index which is either a Tuple or a Slice object (which 
        ///    encapsulates the start, stop, and step values) 
        /// 
        /// This is in addition to a simple indexing x[y].
        /// 
        /// For simple slicing and long slicing Python generates Operators.*Slice.  For
        /// the extended slicing and simple indexing Python generates a Operators.*Item
        /// action.
        /// 
        /// Extended slicing maps to the normal .NET multi-parameter input.  
        /// 
        /// So our job here is to first determine if we're to call a __*slice__ method or
        /// a __*item__ method.  
        private static DynamicMetaObject/*!*/ MakeIndexerOperation(OperationBinder/*!*/ operation, DynamicMetaObject/*!*/[]/*!*/ types) {
            SymbolId item, slice;
            DynamicMetaObject indexedType = types[0].Restrict(types[0].GetLimitType());
            BinderState state = BinderState.GetBinderState(operation);
            BuiltinFunction itemFunc = null;
            PythonTypeSlot itemSlot = null;
            bool callSlice = false;
            int mandatoryArgs;
            string op = operation.Operation;

            GetIndexOperators(op, out item, out slice, out mandatoryArgs);

            if (types.Length == mandatoryArgs + 1 && IsSlice(op) && HasOnlyNumericTypes(operation, types, op == StandardOperators.SetSlice)) {
                // two slice indexes, all int arguments, need to call __*slice__ if it exists
                callSlice = BindingHelpers.TryGetStaticFunction(state, slice, indexedType, out itemFunc);
                if (itemFunc == null || !callSlice) {
                    callSlice = MetaPythonObject.GetPythonType(indexedType).TryResolveSlot(state.Context, slice, out itemSlot);
                }
            }

            if (!callSlice) {
                // 1 slice index (simple index) or multiple slice indexes or no __*slice__, call __*item__, 
                if (!BindingHelpers.TryGetStaticFunction(state, item, indexedType, out itemFunc)) {
                    MetaPythonObject.GetPythonType(indexedType).TryResolveSlot(state.Context, item, out itemSlot);
                }
            }

            // make the Callable object which does the actual call to the function or slot
            Callable callable = Callable.MakeCallable(state, op, itemFunc, itemSlot);
            if (callable == null) {
                return TypeError(operation, "'{0}' object is unsubscriptable", indexedType);
            }

            // prepare the arguments and make the builder which will
            // call __*slice__ or __*item__
            DynamicMetaObject[] args;
            IndexBuilder builder;
            if (callSlice) {
                // we're going to call a __*slice__ method, we pass the args as is.
                Debug.Assert(IsSlice(op));

                builder = new SliceBuilder(types, callable);
                args = ConvertArgs(types);
            } else {
                // we're going to call a __*item__ method.
                builder = new ItemBuilder(types, callable);
                if (IsSlice(op)) {
                    // we need to create a new Slice object.
                    args = GetItemSliceArguments(state, op, types);
                } else {
                    // we just need to pass the arguments as they are
                    args = ConvertArgs(types);
                }
            }

            return builder.MakeRule(state, args);
        }
コード例 #35
0
        public void StockHouseContainer(PlayerGPS.DiscoveredBuilding buildingData)
        {
            stockedDate = CreateStockedDate(DaggerfallUnity.Instance.WorldTime.Now);
            items.Clear();

            DFLocation.BuildingTypes buildingType = buildingData.buildingType;
            uint modelIndex = (uint)TextureRecord;

            //int buildingQuality = buildingData.quality;
            byte[] privatePropertyList = null;
            DaggerfallUnityItem item   = null;

            Game.Entity.PlayerEntity playerEntity = GameManager.Instance.PlayerEntity;

            if (buildingType < DFLocation.BuildingTypes.House5)
            {
                if (modelIndex >= 2)
                {
                    if (modelIndex >= 4)
                    {
                        if (modelIndex >= 11)
                        {
                            if (modelIndex >= 15)
                            {
                                privatePropertyList = DaggerfallLootDataTables.privatePropertyItemsModels15AndUp[(int)buildingType];
                            }
                            else
                            {
                                privatePropertyList = DaggerfallLootDataTables.privatePropertyItemsModels11to14[(int)buildingType];
                            }
                        }
                        else
                        {
                            privatePropertyList = DaggerfallLootDataTables.privatePropertyItemsModels4to10[(int)buildingType];
                        }
                    }
                    else
                    {
                        privatePropertyList = DaggerfallLootDataTables.privatePropertyItemsModels2to3[(int)buildingType];
                    }
                }
                else
                {
                    privatePropertyList = DaggerfallLootDataTables.privatePropertyItemsModels0to1[(int)buildingType];
                }
                if (privatePropertyList == null)
                {
                    return;
                }
                int        randomChoice   = Random.Range(0, privatePropertyList.Length);
                ItemGroups itemGroup      = (ItemGroups)privatePropertyList[randomChoice];
                int        continueChance = 100;
                bool       keepGoing      = true;
                while (keepGoing)
                {
                    if (itemGroup != ItemGroups.MensClothing && itemGroup != ItemGroups.WomensClothing)
                    {
                        if (itemGroup == ItemGroups.MagicItems)
                        {
                            item = ItemBuilder.CreateRandomMagicItem(playerEntity.Level, playerEntity.Gender, playerEntity.Race);
                        }
                        else if (itemGroup == ItemGroups.Books)
                        {
                            item = ItemBuilder.CreateRandomBook();
                        }
                        else
                        {
                            if (itemGroup == ItemGroups.Weapons)
                            {
                                item = ItemBuilder.CreateRandomWeapon(playerEntity.Level);
                            }
                            else if (itemGroup == ItemGroups.Armor)
                            {
                                item = ItemBuilder.CreateRandomArmor(playerEntity.Level, playerEntity.Gender, playerEntity.Race);
                            }
                            else
                            {
                                System.Array enumArray = DaggerfallUnity.Instance.ItemHelper.GetEnumArray(itemGroup);
                                item = new DaggerfallUnityItem(itemGroup, Random.Range(0, enumArray.Length));
                            }
                        }
                    }
                    else
                    {
                        item = ItemBuilder.CreateRandomClothing(playerEntity.Gender, playerEntity.Race);
                    }
                    continueChance >>= 1;
                    if (DFRandom.rand() % 100 > continueChance)
                    {
                        keepGoing = false;
                    }
                    items.AddItem(item);
                }
            }
        }
コード例 #36
0
        public void Save_GivenNewBorrower_ShouldSave()
        {
            //---------------Set up test pack-------------------
            var item = new ItemBuilder()
                   .WithRandomProps()
                   .WithNewId()
                   .Build();

            var dbContext = new TestDbContextBuilder().Build();

            var repository = CreateItemsRepositoryBuilder().WithDbContext(dbContext).Build();
            //---------------Assert Precondition----------------
            //---------------Execute Test ----------------------
            repository.Save(item);
            //---------------Test Result -----------------------
            dbContext.Received().AttachEntity(item);
            dbContext.Received().SaveChanges();
        }
コード例 #37
0
        private void ConfirmTrade_OnButtonClick(DaggerfallMessageBox sender, DaggerfallMessageBox.MessageBoxButtons messageBoxButton)
        {
            bool receivedLetterOfCredit = false;

            if (messageBoxButton == DaggerfallMessageBox.MessageBoxButtons.Yes)
            {
                // Proceed with trade.
                int tradePrice = GetTradePrice();
                switch (WindowMode)
                {
                case WindowModes.Sell:
                case WindowModes.SellMagic:
                    float goldWeight = tradePrice * DaggerfallBankManager.goldUnitWeightInKg;
                    if (PlayerEntity.CarriedWeight + goldWeight <= PlayerEntity.MaxEncumbrance)
                    {
                        PlayerEntity.GoldPieces += tradePrice;
                    }
                    else
                    {
                        DaggerfallUnityItem loc = ItemBuilder.CreateItem(ItemGroups.MiscItems, (int)MiscItems.Letter_of_credit);
                        loc.value = tradePrice;
                        GameManager.Instance.PlayerEntity.Items.AddItem(loc, Items.ItemCollection.AddPosition.Front);
                        receivedLetterOfCredit = true;
                    }
                    RaiseOnTradeHandler(remoteItems.GetNumItems(), tradePrice);
                    remoteItems.Clear();
                    break;

                case WindowModes.Buy:
                    PlayerEntity.DeductGoldAmount(tradePrice);
                    RaiseOnTradeHandler(basketItems.GetNumItems(), tradePrice);
                    PlayerEntity.Items.TransferAll(basketItems);
                    break;

                case WindowModes.Repair:
                    PlayerEntity.DeductGoldAmount(tradePrice);
                    if (DaggerfallUnity.Settings.InstantRepairs)
                    {
                        foreach (DaggerfallUnityItem item in remoteItemsFiltered)
                        {
                            item.currentCondition = item.maxCondition;
                        }
                    }
                    else
                    {
                        UpdateRepairTimes(true);
                    }
                    RaiseOnTradeHandler(remoteItems.GetNumItems(), tradePrice);
                    break;

                case WindowModes.Identify:
                    PlayerEntity.DeductGoldAmount(tradePrice);
                    for (int i = 0; i < remoteItems.Count; i++)
                    {
                        DaggerfallUnityItem item = remoteItems.GetItem(i);
                        item.IdentifyItem();
                    }
                    RaiseOnTradeHandler(remoteItems.GetNumItems(), tradePrice);
                    break;
                }
                if (receivedLetterOfCredit)
                {
                    DaggerfallUI.Instance.PlayOneShot(SoundClips.ParchmentScratching);
                }
                else
                {
                    DaggerfallUI.Instance.PlayOneShot(SoundClips.GoldPieces);
                }
                PlayerEntity.TallySkill(DFCareer.Skills.Mercantile, 1);
                Refresh();
            }
            CloseWindow();
            if (receivedLetterOfCredit)
            {
                DaggerfallUI.MessageBox(TextManager.Instance.GetText(textDatabase, "letterOfCredit"));
            }
        }
コード例 #38
0
        public void Delete_ShouldReturnViewWithItemsViewModel()
        {
            //---------------Set up test pack-------------------
            var item = new ItemBuilder().WithRandomProps().Build();
           var mappingEngine = _container.Resolve<IMappingEngine>();
            var itemsRepository = Substitute.For<IItemsRepository>();
            itemsRepository.GetById(item.ItemId).Returns(item);
            var itemsController = CreateItemsControllerBuilder()
                .WithItemsRepository(itemsRepository)
                .WithMappingEngine(mappingEngine)
                .Build();
            //---------------Assert Precondition----------------

            //---------------Execute Test ----------------------
            var result = itemsController.Delete(item.ItemId) as ViewResult;
            //---------------Test Result -----------------------
            Assert.IsNotNull(result);
            var model = result.Model;
            Assert.IsInstanceOf<ItemViewModel>(model);
        }
コード例 #39
0
 public void OneTimeSetUp()
 {
     _itemBuilder = new ItemBuilder();
 }
コード例 #40
0
 public void GetById_GivenValidId_ShoulReturnItemWithMatchingId()
 {
     //---------------Set up test pack-------------------
     var item = new ItemBuilder().WithRandomProps().Build();
     var dbSet = new FakeDbSet<Item> {item}; 
     var lendingLibraryDbContext = CreateLendingLibraryDbContext(dbSet);
     var itemsRepository = CreateItemsRepository(lendingLibraryDbContext);
     //---------------Assert Precondition----------------
     //---------------Execute Test ----------------------
     var result = itemsRepository.GetById(item.ItemId);
     //---------------Test Result -----------------------
     Assert.AreEqual(item, result);
 }
コード例 #41
0
        public static void Init()
        {
            string           name         = "Royal Capacitor";
            string           resourcePath = "katmod/Resources/V3MiscItems/capacitor";
            GameObject       gameObject   = new GameObject(name);
            RoyalCapacitator item         = gameObject.AddComponent <RoyalCapacitator>();

            ItemBuilder.AddSpriteToObject(name, resourcePath, gameObject);
            string shortDesc = "THUNDERSTRUCK";
            string longDesc  = "Channel the heavens.\n\nA Calorum Powerlytic 3600DE capacitor, which has been refitted for combat.";

            ItemBuilder.SetupItem(item, shortDesc, longDesc, "psm");
            item.quality = ItemQuality.A;
            item.PlaceItemInAmmonomiconAfterItemById(439);
            item.SetupUnlockOnFlag(GungeonFlags.ACHIEVEMENT_NOBOSSDAMAGE_FORGE, true);
            Prismatism.Unlocks.Add(item.PickupObjectId, "Master the forge's boss");
            ItemBuilder.SetCooldownType(item, ItemBuilder.CooldownType.Damage, 750f);

            GameObject target = new GameObject("capacitor_ui");

            ItemBuilder.AddSpriteToObject("capacitor_ui", "katmod/Resources/V3MiscItems/royalcapacitatorui", target);
            targetPrefab = target;
            GameObject lightning = new GameObject("capacitor_lightning");

            ItemBuilder.AddSpriteToObject("capacitor_lightning", "katmod/Resources/V3MiscItems/Lightning/ligthning_001", lightning);
            FakePrefab.MarkAsFakePrefab(lightning);
            UnityEngine.Object.DontDestroyOnLoad(lightning);
            tk2dSpriteAnimator      animator      = lightning.AddComponent <tk2dSpriteAnimator>();
            tk2dSpriteAnimationClip animationClip = new tk2dSpriteAnimationClip
            {
                fps      = 14,
                wrapMode = tk2dSpriteAnimationClip.WrapMode.Once
            };
            GameObject spriteObject = new GameObject("spriteObject");

            ItemBuilder.AddSpriteToObject("spriteObject", "katmod/Resources/V3MiscItems/Lightning/ligthning_001", spriteObject);
            tk2dSpriteAnimationFrame starterFrame = new tk2dSpriteAnimationFrame
            {
                spriteId         = spriteObject.GetComponent <tk2dSprite>().spriteId,
                spriteCollection = spriteObject.GetComponent <tk2dSprite>().Collection
            };

            tk2dSpriteAnimationFrame[] frameArray = new tk2dSpriteAnimationFrame[]
            {
                starterFrame
            };
            animationClip.frames = frameArray;
            for (int i = 2; i < 8; i++)
            {
                GameObject spriteForObject = new GameObject("spriteForObject");
                ItemBuilder.AddSpriteToObject("spriteForObject", $"katmod/Resources/V3MiscItems/Lightning/ligthning_00{i}", spriteForObject);
                tk2dSpriteAnimationFrame frame = new tk2dSpriteAnimationFrame
                {
                    spriteId         = spriteForObject.GetComponent <tk2dBaseSprite>().spriteId,
                    spriteCollection = spriteForObject.GetComponent <tk2dBaseSprite>().Collection
                };
                animationClip.frames = animationClip.frames.Concat(new tk2dSpriteAnimationFrame[] { frame }).ToArray();
            }
            animator.Library           = animator.gameObject.AddComponent <tk2dSpriteAnimation>();
            animationClip.name         = "start";
            animator.Library.clips     = new tk2dSpriteAnimationClip[] { animationClip };
            animator.DefaultClipId     = animator.GetClipIdByName("start");
            animator.playAutomatically = true;
            lightningPrefab            = lightning;
        }
コード例 #42
0
        public void Update_GivenExistingItemHasBeenUpdatedWithNewValues_ShouldCallSaveChanges()
        {
            //---------------Set up test pack-------------------
            var existingItem = new ItemBuilder().WithRandomProps().Build();
            var newItem = new ItemBuilder().WithRandomProps().Build();

            var lendingLibraryDbContext = CreateLendingLibraryDbContext();
            var itemsRepository = CreateItemsRepository(lendingLibraryDbContext);
            //---------------Assert Precondition----------------

            //---------------Execute Test ----------------------
            itemsRepository.Update(existingItem, newItem);
            //---------------Test Result -----------------------
            lendingLibraryDbContext.Received().SaveChanges();
        }
コード例 #43
0
        public static void CustomArmorService(IUserInterfaceWindow window)
        {
            Debug.Log("Custom Armor service.");

            PlayerEntity playerEntity = GameManager.Instance.PlayerEntity;
            ItemHelper   itemHelper   = DaggerfallUnity.Instance.ItemHelper;

            if (playerEntity.Level < 9)
            {
                DaggerfallUI.MessageBox("Sorry I have not yet sourced enough rare materials to make you armor.");
                return;
            }
            ItemCollection armorItems = new ItemCollection();
            Array          armorTypes = itemHelper.GetEnumArray(ItemGroups.Armor);

            foreach (ArmorMaterialTypes material in customArmorMaterials)
            {
                if (playerEntity.Level < 9 ||
                    (playerEntity.Level < 12 && material >= ArmorMaterialTypes.Adamantium) ||
                    (playerEntity.Level < 15 && material >= ArmorMaterialTypes.Orcish) ||
                    (playerEntity.Level < 18 && material >= ArmorMaterialTypes.Daedric))
                {
                    break;
                }

                for (int i = 0; i < armorTypes.Length; i++)
                {
                    Armor        armorType    = (Armor)armorTypes.GetValue(i);
                    ItemTemplate itemTemplate = itemHelper.GetItemTemplate(ItemGroups.Armor, i);
                    int          vs           = 0;
                    int          vf           = 0;
                    switch (armorType)
                    {
                    case Armor.Cuirass:
                    case Armor.Left_Pauldron:
                    case Armor.Right_Pauldron:
                        vs = 1;
                        vf = 3;
                        break;

                    case Armor.Greaves:
                        vs = 2;
                        vf = 5;
                        break;

                    case Armor.Gauntlets:
                        vs = 1;
                        vf = 1;
                        break;

                    case Armor.Boots:
                    case Armor.Helm:
                        vs = 1;
                        vf = itemTemplate.variants - 1;
                        break;

                    default:
                        continue;
                    }
                    for (int v = vs; v <= vf; v++)
                    {
                        armorItems.AddItem(ItemBuilder.CreateArmor(playerEntity.Gender, playerEntity.Race, armorType, material, v));
                    }
                }
                int[] customItemTemplates = itemHelper.GetCustomItemsForGroup(ItemGroups.Armor);
                for (int i = 0; i < customItemTemplates.Length; i++)
                {
                    DaggerfallUnityItem item = ItemBuilder.CreateItem(ItemGroups.Armor, customItemTemplates[i]);
                    ItemBuilder.ApplyArmorSettings(item, playerEntity.Gender, playerEntity.Race, material);
                    armorItems.AddItem(item);
                }
            }

            DaggerfallTradeWindow tradeWindow = (DaggerfallTradeWindow)
                                                UIWindowFactory.GetInstanceWithArgs(UIWindowType.Trade, new object[] { DaggerfallUI.UIManager, null, DaggerfallTradeWindow.WindowModes.Buy, null });

            tradeWindow.MerchantItems = armorItems;
            DaggerfallUI.UIManager.PushWindow(tradeWindow);
        }
コード例 #44
0
        /// <summary>
        /// Python has three protocols for slicing:
        ///    Simple Slicing x[i:j]
        ///    Extended slicing x[i,j,k,...]
        ///    Long Slice x[start:stop:step]
        /// 
        /// The first maps to __*slice__ (get, set, and del).  
        ///    This takes indexes - i, j - which specify the range of elements to be
        ///    returned.  In the slice variants both i, j must be numeric data types.  
        /// The 2nd and 3rd are both __*item__.  
        ///    This receives a single index which is either a Tuple or a Slice object (which 
        ///    encapsulates the start, stop, and step values) 
        /// 
        /// This is in addition to a simple indexing x[y].
        /// 
        /// For simple slicing and long slicing Python generates Operators.*Slice.  For
        /// the extended slicing and simple indexing Python generates a Operators.*Item
        /// action.
        /// 
        /// Extended slicing maps to the normal .NET multi-parameter input.  
        /// 
        /// So our job here is to first determine if we're to call a __*slice__ method or
        /// a __*item__ method.  
        /// </summary>
        private static DynamicMetaObject/*!*/ MakeIndexerOperation(DynamicMetaObjectBinder/*!*/ operation, PythonIndexType op, DynamicMetaObject/*!*/[]/*!*/ types, DynamicMetaObject errorSuggestion) {
            string item, slice;
            DynamicMetaObject indexedType = types[0].Restrict(types[0].GetLimitType());
            PythonContext state = PythonContext.GetPythonContext(operation);
            BuiltinFunction itemFunc = null;
            PythonTypeSlot itemSlot = null;
            bool callSlice = false;
            int mandatoryArgs;

            GetIndexOperators(op, out item, out slice, out mandatoryArgs);

            if (types.Length == mandatoryArgs + 1 && IsSlice(op) && HasOnlyNumericTypes(operation, types, op == PythonIndexType.SetSlice)) {
                // two slice indexes, all int arguments, need to call __*slice__ if it exists
                callSlice = BindingHelpers.TryGetStaticFunction(state, slice, indexedType, out itemFunc);
                if (itemFunc == null || !callSlice) {
                    callSlice = MetaPythonObject.GetPythonType(indexedType).TryResolveSlot(state.SharedContext, slice, out itemSlot);
                }
            }

            if (!callSlice) {
                // 1 slice index (simple index) or multiple slice indexes or no __*slice__, call __*item__, 
                if (!BindingHelpers.TryGetStaticFunction(state, item, indexedType, out itemFunc)) {
                    MetaPythonObject.GetPythonType(indexedType).TryResolveSlot(state.SharedContext, item, out itemSlot);
                }
            }

            // make the Callable object which does the actual call to the function or slot
            Callable callable = Callable.MakeCallable(state, op, itemFunc, itemSlot);
            if (callable == null) {
                return errorSuggestion ?? MakeUnindexableError(operation, op, types, indexedType, state);
            }

            // prepare the arguments and make the builder which will
            // call __*slice__ or __*item__
            DynamicMetaObject[] args;
            IndexBuilder builder;
            if (callSlice) {
                // we're going to call a __*slice__ method, we pass the args as is.
                Debug.Assert(IsSlice(op));

                builder = new SliceBuilder(types, callable);

                // slicing is dependent upon the types of the arguments (HasNumericTypes) 
                // so we must restrict them.
                args = ConvertArgs(types);
            } else {
                // we're going to call a __*item__ method.
                builder = new ItemBuilder(types, callable);
                if (IsSlice(op)) {
                    // we need to create a new Slice object.
                    args = GetItemSliceArguments(state, op, types);
                } else {
                    // no need to restrict the arguments.  We're not
                    // a slice and so restrictions are not necessary
                    // here because it's not dependent upon our types.
                    args = (DynamicMetaObject[])types.Clone();

                    // but we do need to restrict based upon the type
                    // of object we're calling on.
                    args[0] = types[0].Restrict(types[0].GetLimitType());
                }

            }

            return builder.MakeRule(operation, state, args);
        }
コード例 #45
0
ファイル: CharacterBuilder.cs プロジェクト: LLC-IGroup/RPG
    // Public
    public static void CreateNewCharacter(NewCharacterController.CreateCharacterParams createParams)
    {
        CharacterParam.SetDefault();
        // Set Start Scene
        CharacterParam.param.sceneName = "SandBox";
        // Set Character Sex
        CharacterParam.privateParams.sex = createParams.sex;
        switch (createParams.sex)
        {
        /// Male Setup
        case PrivateParam.CharacterSex.MALE:
            CharacterParam.param.moveSpeed = 3.3f;
            // Set Crit Param
            CharacterParam.param.critChance = 0;
            CharacterParam.param.critPower  = 10;
            // HP
            CharacterParam.privateParams.maxHP = 130;
            CharacterParam.param.HP            = CharacterParam.privateParams.maxHP;
            // MP
            CharacterParam.privateParams.maxMP = 100;
            CharacterParam.param.MP            = CharacterParam.privateParams.maxMP;
            // Energy
            CharacterParam.privateParams.maxEnergy = 100;
            CharacterParam.param.energy            = CharacterParam.privateParams.maxEnergy;
            // Hunger
            CharacterParam.privateParams.maxHunger = 100;
            CharacterParam.param.hunger            = CharacterParam.privateParams.maxHunger;
            // Abylitys
            CharacterParam.abilitys.stamina  = 9;
            CharacterParam.abilitys.body     = 10;
            CharacterParam.abilitys.agility  = 9;
            CharacterParam.abilitys.strength = 10;



            break;

        /// Female Setup
        case PrivateParam.CharacterSex.FEMALE:
            CharacterParam.param.moveSpeed = 3.7f;
            // Set Crit Param
            CharacterParam.param.critChance = 10;
            CharacterParam.param.critPower  = 0;
            // HP
            CharacterParam.privateParams.maxHP = 100;
            CharacterParam.param.HP            = CharacterParam.privateParams.maxHP;
            // MP
            CharacterParam.privateParams.maxMP = 130;
            CharacterParam.param.MP            = CharacterParam.privateParams.maxMP;
            // Energy
            CharacterParam.privateParams.maxEnergy = 100;
            CharacterParam.param.energy            = CharacterParam.privateParams.maxEnergy;
            // Hunger
            CharacterParam.privateParams.maxHunger = 100;
            CharacterParam.param.hunger            = CharacterParam.privateParams.maxHunger;
            // Abylitys
            CharacterParam.abilitys.stamina  = 10;
            CharacterParam.abilitys.body     = 9;
            CharacterParam.abilitys.agility  = 10;
            CharacterParam.abilitys.strength = 9;



            break;
        }
        // Abylitys
        CharacterParam.abilitys.intellect = 10;



        // Add Start Items
        CharacterParam.itemInventory.AddItem(ItemBuilder.GetItemByName("CottunCap"));
        CharacterParam.itemInventory.AddItem(ItemBuilder.GetItemByName("CottonShirt"));
        CharacterParam.itemInventory.AddItem(ItemBuilder.GetItemByName("CottunBoots"));
        CharacterParam.itemInventory.AddItem(ItemBuilder.GetItemByName("CottunCloak"));
        CharacterParam.itemInventory.AddItem(ItemBuilder.GetItemByName("GoldAmulet"));
        CharacterParam.itemInventory.AddItem(ItemBuilder.GetItemByName("GoldRing"));
        CharacterParam.itemInventory.AddItem(ItemBuilder.GetItemByName("LeatherBelt"));
        CharacterParam.itemInventory.AddItem(ItemBuilder.GetItemByName("LeatherGloves"));
        CharacterParam.itemInventory.AddItem(ItemBuilder.GetItemByName("LeatherPants"));

        CharacterParam.itemInventory.AddItem(ItemBuilder.GetItemByName("IronAxe"));
        CharacterParam.itemInventory.AddItem(ItemBuilder.GetItemByName("IronHammer"));
        CharacterParam.itemInventory.AddItem(ItemBuilder.GetItemByName("IronKnife"));
        CharacterParam.itemInventory.AddItem(ItemBuilder.GetItemByName("IronNeedle"));
        CharacterParam.itemInventory.AddItem(ItemBuilder.GetItemByName("IronPickaxe"));
        CharacterParam.itemInventory.AddItem(ItemBuilder.GetItemByName("IronPliers"));
        CharacterParam.itemInventory.AddItem(ItemBuilder.GetItemByName("IronSaw"));
        CharacterParam.itemInventory.AddItem(ItemBuilder.GetItemByName("IronScissors"));
        CharacterParam.itemInventory.AddItem(ItemBuilder.GetItemByName("IronShovel"));
        CharacterParam.itemInventory.AddItem(ItemBuilder.GetItemByName("IronSickle"));

        CharacterParam.itemInventory.AddItem(ItemBuilder.GetItemByName("BandageBelt"));
        CharacterParam.itemInventory.AddItem(ItemBuilder.GetItemByName("BandageBelt"));
        CharacterParam.itemInventory.AddItem(ItemBuilder.GetItemByName("BandageBelt"));

        // Add Base Skills
        CharacterParam.skillInventory.AddSkill(SkillBuilder.GetSkillByName("BaseAttack"));
        // Add Base Recipes
        CharacterParam.recipeInventory.AddRecipe(RecipeBuilder.GetRecipeByName("Bandage"));
    }
コード例 #46
0
        public void Create_GivenThreeItemsExist_ShouldSetItemsSelectList()
        {
            //---------------Set up test pack-------------------
            var itemsRepository = Substitute.For<IItemsRepository>();
            var item1 = new ItemBuilder().WithRandomProps().Build();
            var item2 = new ItemBuilder().WithRandomProps().Build();
            var item3 = new ItemBuilder().WithRandomProps().Build();
            itemsRepository
                .GetAllItems()
                .Returns(new List<Item> { item1, item2, item3 });
            var controller = CreateLendingController(null, null, null, itemsRepository);
            //---------------Assert Precondition----------------

            //---------------Execute Test ----------------------
            var result = controller.Create() as ViewResult;
            //---------------Test Result -----------------------
            Assert.IsNotNull(result);
            var viewModel = result.Model as LendingViewModel;
            Assert.IsNotNull(viewModel);
            Assert.IsNotNull(viewModel.ItemsSelectList);
            Assert.AreEqual(3, viewModel.ItemsSelectList.Count());
        }
コード例 #47
0
 public void OneTimeSetUp()
 {
     _itemBuilder = new ItemBuilder();
     _item        = _itemBuilder.BuildItem("839");
 }
コード例 #48
0
        public void Create_POST_GivenModelStateIsValid_ShouldSaveLendingEntryToDB()
        {
            //---------------Set up test pack-------------------
            var item = new ItemBuilder().WithRandomProps().Build();
            var person = new PersonBuilder().WithRandomProps().Build();
            var mappingEngine = Substitute.For<IMappingEngine>();
            var itemsRepository = Substitute.For<IItemsRepository>();
            var personRepository = Substitute.For<IPersonRepository>();
            var lendingRepository = Substitute.For<ILendingRepository>();
            var lending = new LendingBuilder().WithRandomProps().Build();
            var viewModel = new LendingViewModelBuilder().WithRandomProps().Build();
            mappingEngine.Map<LendingViewModel, Lending>(viewModel).Returns(lending);
            itemsRepository.GetById(viewModel.ItemId).Returns(item);
            personRepository.GetById(viewModel.PersonId).Returns(person);
            var controller = CreateLendingController(lendingRepository, mappingEngine, personRepository, itemsRepository);

            Lending savedLending = null;
            lendingRepository.When(x => x.Save(Arg.Any<Lending>())).Do(info => savedLending = (Lending)info[0]);
            //---------------Assert Precondition----------------
            Assert.IsTrue(controller.ModelState.IsValid);
            //---------------Execute Test ----------------------
            var result = controller.Create(viewModel) as ViewResult;
            //---------------Test Result -----------------------
            Assert.AreEqual(lending.LedingId, savedLending.LedingId);
            Assert.AreEqual(lending.ItemId, savedLending.ItemId);
            Assert.AreEqual(lending.PersonId, savedLending.PersonId);
        }
コード例 #49
0
ファイル: Module.cs プロジェクト: An3s079/TreasureChest
        public override void Start()
        {
            try
            {
                //audio
                ZipFilePath = this.Metadata.Archive;
                FilePath    = this.Metadata.Directory;
                AudioResourceLoader.InitAudio();

                //basic inits
                ItemBuilder.Init();
                TreasureChest.Add();

                //synergies
                List <string> mandatoryConsoleIDs = new List <string>
                {
                    "ans:treasure_chest"
                };

                List <string> optionalConsoleIDs = new List <string>
                {
                    "shelleton_key",
                    "akey47",
                    "master_of_unlocking"
                };

                CustomSynergies.Add("oh you can open that!", mandatoryConsoleIDs, optionalConsoleIDs);


                List <string> mandatoryConsoleIDs2 = new List <string>
                {
                    "ans:treasure_chest"
                };

                List <string> optionalConsoleIDs2 = new List <string>
                {
                    "gold_junk",
                    "briefcase_of_cash",
                };

                CustomSynergies.Add("who even needs money.", mandatoryConsoleIDs2, optionalConsoleIDs2);


                List <string> mandatoryConsoleIDs3 = new List <string>
                {
                    "ans:treasure_chest"
                };

                List <string> optionalConsoleIDs3 = new List <string>
                {
                    "black_hole_gun",
                };

                CustomSynergies.Add("what could be in here?", mandatoryConsoleIDs3, optionalConsoleIDs3, false);

                //gets a list of all items that are in the game. for the who even needs money synergy.
                foreach (string text in Game.Items.AllIDs)
                {
                    bool flag = text.Contains("dupe") || text.Contains("|");
                    if (!flag)
                    {
                        PickupObject pickupObject = Game.Items[text];
                        bool         flag2        = pickupObject == null;
                        if (!flag2)
                        {
                            items.Add(ETGMod.RemovePrefix(text, "gungeon:"));
                        }
                    }
                }
            }
            catch (Exception e)
            {
                Toolbox.Log(e);
            }
            Toolbox.Log(MOD_NAME + "v" + VERSION + "started successfully.", TEXT_COLOR);
        }