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(); }
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(); }
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); }
// 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); }
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); } }
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); }
protected override void DoEffect(PlayerController user) { StealthEffect(); base.StartCoroutine(ItemBuilder.HandleDuration(this, this.duration, user, new Action <PlayerController>(this.BreakStealth))); }
// 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); }
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); }
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); }
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())); }
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); }
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); } }
/// <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(); } }
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 "<strong>{1}</strong>"", * 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 "<strong>{1}</strong>" 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); }
// 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); }
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)); }
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>()); }
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); } } }
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); }
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); } } } }
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()); }
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"); }
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)); }
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; } }
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); } }
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); }
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); } }
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(); }
private new static HierarchySyncMetadataItem Bind(StoreSession session, StoreId itemId, ICollection <PropertyDefinition> propsToReturn) { return(ItemBuilder.ItemBind <HierarchySyncMetadataItem>(session, itemId, HierarchySyncMetadataItemSchema.Instance, propsToReturn)); }
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); }
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); }
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); } } } } } } }
/// <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); }
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); } } }
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(); }
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")); } }
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); }
public void OneTimeSetUp() { _itemBuilder = new ItemBuilder(); }
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); }
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; }
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(); }
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); }
/// <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); }
// 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")); }
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()); }
public void OneTimeSetUp() { _itemBuilder = new ItemBuilder(); _item = _itemBuilder.BuildItem("839"); }
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); }
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); }