Example #1
0
 public ISprite MakeSprite(DungeonEnum spriteType, Vector2 location, bool canBeBombed = false)
 {
     return(spriteType switch
     {
         DungeonEnum.RoomFloor => new RoomFloor(texture, location),
         DungeonEnum.RoomBorder => new RoomBorder(texture, location),
         DungeonEnum.Darkness => new Darkness(texture, location),
         DungeonEnum.DownWall => new Wall(texture, location, Direction.North, game.Rooms[roomIndex], canBeBombed),
         DungeonEnum.RightWall => new Wall(texture, location, Direction.West, game.Rooms[roomIndex], canBeBombed),
         DungeonEnum.LeftWall => new Wall(texture, location, Direction.East, game.Rooms[roomIndex], canBeBombed),
         DungeonEnum.UpWall => new Wall(texture, location, Direction.South, game.Rooms[roomIndex], canBeBombed),
         DungeonEnum.DownOpenDoor => new OpenDoor(texture, location, Direction.North, game.Rooms[roomIndex]),
         DungeonEnum.RightOpenDoor => new OpenDoor(texture, location, Direction.West, game.Rooms[roomIndex]),
         DungeonEnum.LeftOpenDoor => new OpenDoor(texture, location, Direction.East, game.Rooms[roomIndex]),
         DungeonEnum.UpOpenDoor => new OpenDoor(texture, location, Direction.South, game.Rooms[roomIndex]),
         DungeonEnum.DownLockedDoor => new LockedDoor(texture, location, Direction.North, game.Rooms[roomIndex]),
         DungeonEnum.RightLockedDoor => new LockedDoor(texture, location, Direction.West, game.Rooms[roomIndex]),
         DungeonEnum.LeftLockedDoor => new LockedDoor(texture, location, Direction.East, game.Rooms[roomIndex]),
         DungeonEnum.UpLockedDoor => new LockedDoor(texture, location, Direction.South, game.Rooms[roomIndex]),
         DungeonEnum.DownShutDoor => new ShutDoor(texture, location, Direction.North, game.Rooms[roomIndex]),
         DungeonEnum.RightShutDoor => new ShutDoor(texture, location, Direction.West, game.Rooms[roomIndex]),
         DungeonEnum.LeftShutDoor => new ShutDoor(texture, location, Direction.East, game.Rooms[roomIndex]),
         DungeonEnum.UpShutDoor => new ShutDoor(texture, location, Direction.South, game.Rooms[roomIndex]),
         DungeonEnum.DownBombedOpening => new BombedOpening(texture, location, Direction.North, game.Rooms[roomIndex]),
         DungeonEnum.RightBombedOpening => new BombedOpening(texture, location, Direction.West, game.Rooms[roomIndex]),
         DungeonEnum.LeftBombedOpening => new BombedOpening(texture, location, Direction.East, game.Rooms[roomIndex]),
         DungeonEnum.UpBombedOpening => new BombedOpening(texture, location, Direction.South, game.Rooms[roomIndex]),
         DungeonEnum.DarkRoom => new DarkRoom(texture, location, game),
         _ => throw new ArgumentException("Invalid sprite! " + spriteType.ToString() + " Sprite factory failed."),
     });
Example #2
0
 public Tile(Brush bgcolor, Brush bColor, int size, DungeonEnum type)
 {
     backgroundColor = bgcolor;
     borderColor = bColor;
     this.size = size;
     this.itemType = type;
        // this.items = items;
 }
Example #3
0
        public DungeonDistillation() : base(6198)
        {
            Name = "dungeon distillation";

            int dungeonCount = Enum.GetNames(typeof(DungeonEnum)).Length;

            Dungeon = (DungeonEnum)Utility.RandomMinMax(1, dungeonCount - 1);
        }
Example #4
0
        public override void Deserialize(GenericReader reader)
        {
            base.Deserialize(reader);
            int version = reader.ReadInt();

            //Version 0
            if (version >= 0)
            {
                Dungeon = (DungeonEnum)reader.ReadInt();
            }
        }
Example #5
0
        public static BaseWeapon CreateDungeonWeapon(BaseWeapon weapon, DungeonEnum dungeon)
        {
            weapon.Quality          = Quality.Regular;
            weapon.ArcaneCharges    = DungeonWeapon.ArcaneMaxCharges;
            weapon.ArcaneChargesMax = DungeonWeapon.ArcaneMaxCharges;
            weapon.Dungeon          = dungeon;
            weapon.TierLevel        = 1;
            weapon.Experience       = 0;

            return(weapon);
        }
Example #6
0
    public IEnumerator Load()
    {
        if (File.Exists(Application.persistentDataPath + "/" + CurrentSaveFile + "/SaveFile.dat"))
        {
            loading = true;
            BinaryFormatter bf       = new BinaryFormatter();
            FileStream      file     = File.Open(Application.persistentDataPath + "/" + CurrentSaveFile + "/SaveFile.dat", FileMode.Open);
            FileStream      nameFile = File.Open(Application.persistentDataPath + "/" + CurrentSaveFile.ToString() + "name.tic", FileMode.Open);

            saveLoading = (SaveFileData)bf.Deserialize(file);
            saveName    = (string)bf.Deserialize(nameFile);

            file.Close();
            nameFile.Close();

            // Making the right Dungeon Active
            StartingActiveDungeon = saveLoading.ActiveDungeon;


            if (StartingActiveDungeon != DungeonEnum.StarterDungeon)
            {
                SceneManager.LoadScene("PlayScene");
            }
            else
            {
                SceneManager.LoadScene("PlayScene");
            }
            for (int i = 0; i < 12; i++)
            {
                yield return(new WaitForEndOfFrame());
            }

            CameraScript.GameController.transform.position = new Vector3(saveLoading.cameraPosition[0], saveLoading.cameraPosition[1], saveLoading.cameraPosition[2]);

            StartLoad();
            Players = GameObject.FindGameObjectsWithTag("Player");
            foreach (string name in saveLoading.CurrentLivingCharacters)
            {
                CharactersToLoad.Add(name);
            }
            foreach (GameObject player in Players)
            {
                if (!CharactersToLoad.Contains(player.name))
                {
                    player.SetActive(false);
                }
            }
        }
        else
        {
            Debug.Log("NoFileFound");
        }
    }
Example #7
0
        public DungeonCoreLibraryEntry GetEntryDetail(DungeonEnum dungeon)
        {
            DungeonCoreLibraryEntry targetEntry = null;

            foreach (DungeonCoreLibraryEntry entry in m_LibraryEntries)
            {
                if (entry.Dungeon == dungeon)
                {
                    return(entry);
                }
            }

            return(targetEntry);
        }
Example #8
0
        // private Item[] items;
        // The tile needs to keep track of what kind of tile it is
        // is it a null tile, a freespace, a item, a wall, a dragon tile?
        // Default Constructor
        public Tile(DungeonEnum type)
        {
            // Can have up to 3 items;
            //items = new Item[3];
            backgroundColor = Brushes.Orange;
            borderColor = Brushes.Black;
            size = 5;
               // Item item1 = new Item("Treasure", Directory.GetCurrentDirectory() + @"\images\treasure00.png", 1);

            // This needs to goto the view; just put some string thing here saying
            // that there is a item and check for that and display that in the view.

            //ResourceItem item1 = new ResourceItem("Treasure", Properties.Resources, 1);
            //items[0] = item1;
            hasAnItem = false;
            itemType = type;
        }
Example #9
0
        public static Dungeon createDungeon(Vector3 _Position, Vector3 _Size, DungeonEnum _DungeonEnum, Dimension _ParentDimension)
        {
            Dungeon var_Dungeon = null;

            switch (_DungeonEnum)
            {
            case DungeonEnum.Cave:
                var_Dungeon = new CaveDungeon("", _Position, _Size, RegionEnum.Dungeon, _ParentDimension);
                break;

                /*case DungeonEnum.Room:
                 *  var_Dungeon = new RoomDungeon("", _Position, _Size, RegionEnum.Dungeon, _ParentDimension);
                 *  break;*/
            }

            if (var_Dungeon != null)
            {
                //var_Dungeon.createDungeon();
                return(var_Dungeon);
            }
            return(null);
        }
Example #10
0
 public Grid(int row, int col, DungeonEnum[,] grid)
 {
     mNumRows = row;
     mNumColumns = col;
     createStaticGrid(grid);
 }
Example #11
0
        public static void ConsumeMaterials(Mobile from, Mobile mobileTarget, DungeonMould dungeonMould, bool newWeapon, DungeonEnum dungeon)
        {
            if (from == null || mobileTarget == null)
            {
                return;
            }

            List <DungeonCore>         m_DungeonCores         = mobileTarget.Backpack.FindItemsByType <DungeonCore>();
            List <DungeonDistillation> m_DungeonDistillations = mobileTarget.Backpack.FindItemsByType <DungeonDistillation>();

            List <DungeonCore>         m_MatchingDungeonCores         = new List <DungeonCore>();
            List <DungeonDistillation> m_MatchingDungeonDistillations = new List <DungeonDistillation>();

            int coresNeeded         = DungeonWeapon.CoresNeededForUpgrade;
            int distillationsNeeded = DungeonWeapon.DistillationNeededForUpgrade;

            if (newWeapon)
            {
                coresNeeded         = DungeonWeapon.CoresNeededForCreation;
                distillationsNeeded = DungeonWeapon.DistillationNeededForCreation;
            }

            Queue m_Queue = new Queue();

            foreach (DungeonCore dungeonCore in m_DungeonCores)
            {
                if (dungeonCore.Dungeon == dungeon)
                {
                    if (dungeonCore.Amount > coresNeeded)
                    {
                        dungeonCore.Amount -= coresNeeded;
                        coresNeeded         = 0;
                    }

                    else
                    {
                        //Queue for Deletion
                        coresNeeded -= dungeonCore.Amount;

                        m_Queue.Enqueue(dungeonCore);
                    }
                }

                if (coresNeeded <= 0)
                {
                    break;
                }
            }

            while (m_Queue.Count > 0)
            {
                DungeonCore dungeonCore = (DungeonCore)m_Queue.Dequeue();
                dungeonCore.Delete();
            }

            m_Queue = new Queue();

            foreach (DungeonDistillation dungeonDistillation in m_DungeonDistillations)
            {
                if (dungeonDistillation.Dungeon == dungeon)
                {
                    m_Queue.Enqueue(dungeonDistillation);
                    distillationsNeeded--;
                }

                if (distillationsNeeded <= 0)
                {
                    break;
                }
            }

            while (m_Queue.Count > 0)
            {
                DungeonDistillation dungeonDistillation = (DungeonDistillation)m_Queue.Dequeue();
                dungeonDistillation.Delete();
            }

            if (dungeonMould != null)
            {
                dungeonMould.Delete();
            }
        }
Example #12
0
        public static bool HasRequiredMaterials(Mobile from, Mobile mobileTarget, DungeonMould dungeonMould, bool newWeapon, DungeonEnum dungeon)
        {
            if (from == null)
            {
                return(false);
            }
            if (from.Backpack == null)
            {
                return(false);
            }
            if (mobileTarget == null)
            {
                return(false);
            }
            if (mobileTarget.Backpack == null)
            {
                return(false);
            }

            if (dungeonMould == null)
            {
                return(false);
            }
            if (dungeonMould.Deleted)
            {
                return(false);
            }

            if (!dungeonMould.IsChildOf(from.Backpack))
            {
                return(false);
            }

            List <DungeonCore>         m_DungeonCores         = mobileTarget.Backpack.FindItemsByType <DungeonCore>();
            List <DungeonDistillation> m_DungeonDistillations = mobileTarget.Backpack.FindItemsByType <DungeonDistillation>();

            List <DungeonCore>         m_MatchingDungeonCores         = new List <DungeonCore>();
            List <DungeonDistillation> m_MatchingDungeonDistillations = new List <DungeonDistillation>();

            int totalMatchingDungeonCores = 0;

            foreach (DungeonCore dungeonCore in m_DungeonCores)
            {
                if (dungeonCore.Dungeon == dungeon)
                {
                    totalMatchingDungeonCores += dungeonCore.Amount;
                    m_MatchingDungeonCores.Add(dungeonCore);
                }
            }

            foreach (DungeonDistillation dungeonDistillation in m_DungeonDistillations)
            {
                if (dungeonDistillation.Dungeon == dungeon)
                {
                    m_MatchingDungeonDistillations.Add(dungeonDistillation);
                }
            }

            if (newWeapon)
            {
                if (totalMatchingDungeonCores >= DungeonWeapon.CoresNeededForCreation && m_MatchingDungeonDistillations.Count >= DungeonWeapon.DistillationNeededForCreation)
                {
                    return(true);
                }
            }

            else
            {
                if (totalMatchingDungeonCores >= DungeonWeapon.CoresNeededForUpgrade && m_MatchingDungeonDistillations.Count >= DungeonWeapon.DistillationNeededForUpgrade)
                {
                    return(true);
                }
            }

            return(false);
        }
Example #13
0
        private void printSpot(DungeonEnum spot)
        {
            /* start printSpot */

            if (spot == DungeonEnum.DRAGON)
                Console.Write("D");

            if (spot == DungeonEnum.FREESPACE)
                Console.Write("F");

            if (spot == DungeonEnum.WALL)
                Console.Write("W");

            if (spot == DungeonEnum.ITEM)
                Console.Write("I");

            if (spot == DungeonEnum.NULL)
                Console.Write("N");
        }
Example #14
0
        public DungeonDistillation(DungeonEnum dungeonType) : base(6198)
        {
            Name = "dungeon distillation";

            Dungeon = dungeonType;
        }
Example #15
0
        public static DungeonWeaponDetail GetDungeonWeaponDetail(DungeonEnum dungeon)
        {
            DungeonWeaponDetail detail = new DungeonWeaponDetail();

            switch (dungeon)
            {
            case DungeonEnum.Covetous:
                detail.m_SpecialEffect     = SpecialEffectType.PoisonWind;
                detail.m_EffectDisplayName = "Poison Wind";
                detail.m_EffectDescription = "";
                break;

            case DungeonEnum.Deceit:
                detail.m_SpecialEffect     = SpecialEffectType.ShockStorm;
                detail.m_EffectDisplayName = "Shock Storm";
                detail.m_EffectDescription = "";
                break;

            case DungeonEnum.Despise:
                detail.m_SpecialEffect     = SpecialEffectType.Command;
                detail.m_EffectDisplayName = "Command";
                detail.m_EffectDescription = "";
                break;

            case DungeonEnum.Destard:
                detail.m_SpecialEffect     = SpecialEffectType.Whirlwind;
                detail.m_EffectDisplayName = "Whirlwind";
                detail.m_EffectDescription = "";
                break;

            case DungeonEnum.Fire:
                detail.m_SpecialEffect     = SpecialEffectType.Firestorm;
                detail.m_EffectDisplayName = "Firestorm";
                detail.m_EffectDescription = "";
                break;

            case DungeonEnum.Hythloth:
                detail.m_SpecialEffect     = SpecialEffectType.Execute;
                detail.m_EffectDisplayName = "Execute";
                detail.m_EffectDescription = "";
                break;

            case DungeonEnum.Ice:
                detail.m_SpecialEffect     = SpecialEffectType.FrostNova;
                detail.m_EffectDisplayName = "Frost Nova";
                detail.m_EffectDescription = "";
                break;

            case DungeonEnum.Shame:
                detail.m_SpecialEffect     = SpecialEffectType.ArcaneSurge;
                detail.m_EffectDisplayName = "Arcane Surge";
                detail.m_EffectDescription = "";
                break;

            case DungeonEnum.Wrong:
                detail.m_SpecialEffect     = SpecialEffectType.Shadows;
                detail.m_EffectDisplayName = "Shadows";
                detail.m_EffectDescription = "";
                break;
            }

            return(detail);
        }
Example #16
0
 public static string GetName(this DungeonEnum dungeon)
 => Enum.GetName(dungeon.GetType(), dungeon);
Example #17
0
        public void createStaticGrid(DungeonEnum[,] grid)
        {
            tiles = new Tile[mNumRows, mNumColumns];

            // Rows
            for (int i = 0; i < mNumRows; i++)
            {
                // Columns
                for (int j = 0; j < mNumColumns; j++)
                {
                    // tiles[i, j] = new Tile(rand);
                    tiles[i, j] = new Tile(grid[j, i]);
                }
            }
        }
Example #18
0
            public DungeonArmorDetail(DungeonEnum dungeonType, int tierLevel)
            {
                Dungeon   = dungeonType;
                TierLevel = tierLevel;

                switch (Dungeon)
                {
                case DungeonEnum.None:
                    break;

                case DungeonEnum.Deceit:
                    DungeonName = "Deceit";
                    Hue         = 1908;
                    EffectHue   = Hue - 1;

                    TieredArmorRating = 40 + (5 * tierLevel);

                    DexPenalty          = -3;
                    MeditationAllowance = ArmorMeditationAllowance.Half;

                    EnergySiphonOnMeleeAttackChance = .20 + (.04 * tierLevel);

                    gumpText = new string[] {
                        "Deceit Dungeon Armor",
                        "Tier " + tierLevel.ToString(),
                        "",
                        "Armor Rating: " + TieredArmorRating.ToString(),
                        "Dex Penalty: " + DexPenalty.ToString(),
                        "Meditation Allowed: 50%",
                        "",
                        "Chance of Inflicting Energy Siphon on Melee Attack: " + Utility.CreatePercentageString(EnergySiphonOnMeleeAttackChance),
                    };
                    break;

                case DungeonEnum.Destard:
                    DungeonName = "Destard";
                    Hue         = 1778;
                    EffectHue   = Hue - 1;

                    TieredArmorRating = 55 + (5 * tierLevel);

                    DexPenalty          = -10;
                    MeditationAllowance = ArmorMeditationAllowance.None;

                    MeleeDamageReceivedBonus = .13 + (.03 * tierLevel);
                    SpellDamageReceivedBonus = .13 + (.03 * tierLevel);

                    BandageSelfTimeReduction = 2 + (.5 * tierLevel);

                    gumpText = new string[] {
                        "Destard Dungeon Armor",
                        "Tier " + tierLevel.ToString(),
                        "",
                        "Armor Rating: " + TieredArmorRating.ToString(),
                        "Dex Penalty: " + DexPenalty.ToString(),
                        "Meditation Allowed: 0%",
                        "",
                        "Melee Damage Reduction: " + Utility.CreatePercentageString(MeleeDamageReceivedBonus),
                        "Spell Damage Reduction: " + Utility.CreatePercentageString(SpellDamageReceivedBonus),
                        "Bandage Self Timer Reduction: " + BandageSelfTimeReduction.ToString() + " seconds",
                    };
                    break;

                case DungeonEnum.Hythloth:
                    DungeonName = "Hythloth";
                    Hue         = 1769;
                    EffectHue   = Hue - 1;

                    TieredArmorRating = 40 + (5 * tierLevel);

                    DexPenalty          = -3;
                    MeditationAllowance = ArmorMeditationAllowance.Half;

                    MeleeDamageInflictedBonus = .10 + (.025 * tierLevel);
                    SpecialWeaponAttackBonus  = .08 + (.02 * tierLevel);

                    gumpText = new string[] {
                        "Hythloth Dungeon Armor",
                        "Tier " + tierLevel.ToString(),
                        "",
                        "Armor Rating: " + TieredArmorRating.ToString(),
                        "Dex Penalty: " + DexPenalty.ToString(),
                        "Meditation Allowed: 50%",
                        "",
                        "Melee Damage Bonus: " + Utility.CreatePercentageString(MeleeDamageInflictedBonus),
                        "Special Weapon Attack Chance Bonus: " + Utility.CreatePercentageString(SpecialWeaponAttackBonus),
                    };
                    break;

                case DungeonEnum.Shame:
                    DungeonName = "Shame";
                    Hue         = 1763;
                    EffectHue   = Hue - 1;

                    TieredArmorRating = 30 + (5 * tierLevel);

                    DexPenalty          = 0;
                    MeditationAllowance = ArmorMeditationAllowance.All;

                    SpellDamageInflictedBonus  = .15 + (.05 * tierLevel);
                    ReducedSpellManaCostChance = .15 + (.05 * tierLevel);

                    gumpText = new string[] {
                        "Shame Dungeon Armor",
                        "Tier " + tierLevel.ToString(),
                        "",
                        "Armor Rating: " + TieredArmorRating.ToString(),
                        "Dex Penalty: " + DexPenalty.ToString(),
                        "Meditation Allowed: 100%",
                        "",
                        "Spell Damage Bonus: " + Utility.CreatePercentageString(SpellDamageInflictedBonus),
                        "Chance to Cast Spell At Reduced Mana Cost: " + Utility.CreatePercentageString(ReducedSpellManaCostChance),
                    };
                    break;

                case DungeonEnum.Covetous:
                    DungeonName = "Covetous";
                    Hue         = 2212;
                    EffectHue   = Hue - 1;

                    TieredArmorRating = 30 + (5 * tierLevel);

                    DexPenalty          = 0;
                    MeditationAllowance = ArmorMeditationAllowance.All;

                    PoisonDamageInflictedScalar = 1 + (.2 + (.025 * tierLevel));
                    PoisonSpellNoManaCostChance = .30 + (.05 * tierLevel);
                    NoPoisonChargeSpentChance   = .2 + (.025 * tierLevel);

                    gumpText = new string[] {
                        "Covetous Dungeon Armor",
                        "Tier " + tierLevel.ToString(),
                        "",
                        "Armor Rating: " + TieredArmorRating.ToString(),
                        "Dex Penalty: " + DexPenalty.ToString(),
                        "Meditation Allowed: 100%",
                        "",
                        "Poison Damage Inflicted Bonus: " + Utility.CreatePercentageString(PoisonDamageInflictedScalar - 1),
                        "Chance to Cast Poison Spells At No Mana Cost: " + Utility.CreatePercentageString(PoisonSpellNoManaCostChance),
                        "Chance to Apply Poison And Not Spend Poison Charge: " + Utility.CreatePercentageString(NoPoisonChargeSpentChance),
                    };
                    break;

                case DungeonEnum.Wrong:
                    DungeonName = "Wrong";
                    Hue         = 2675;
                    EffectHue   = Hue - 1;

                    TieredArmorRating = 40 + (5 * tierLevel);

                    DexPenalty          = -3;
                    MeditationAllowance = ArmorMeditationAllowance.Half;

                    BonusStealthSteps            = 4 + (1 * tierLevel);
                    BackstabDamageInflictedBonus = .40 + (.05 * tierLevel);
                    StealthLeavesFootprints      = true;

                    gumpText = new string[] {
                        "Wrong Dungeon Armor",
                        "Tier " + tierLevel.ToString(),
                        "",
                        "Armor Rating: " + TieredArmorRating.ToString(),
                        "Dex Penalty: " + DexPenalty.ToString(),
                        "Meditation Allowed: 50%",
                        "",
                        "Bonus Stealth Steps: " + BonusStealthSteps.ToString(),
                        "Backstab Damage Inflicted Bonus: " + Utility.CreatePercentageString(BackstabDamageInflictedBonus),
                        "Stealth Movement Now Leaves Footprints",
                    };
                    break;

                case DungeonEnum.Despise:
                    DungeonName = "Despise";
                    Hue         = 2516;
                    EffectHue   = Hue - 1;

                    TieredArmorRating = 30 + (5 * tierLevel);

                    DexPenalty          = 0;
                    MeditationAllowance = ArmorMeditationAllowance.All;

                    ProvokedCreatureDamageInflictedBonus = .2 + (.025 * tierLevel);
                    IgnorePeacemakingBreakChance         = .30 + (.05 * tierLevel);
                    DiscordanceEffectBonus = .04 + (.015 * tierLevel);

                    gumpText = new string[] {
                        "Despise Dungeon Armor",
                        "Tier " + tierLevel.ToString(),
                        "",
                        "Armor Rating: " + TieredArmorRating.ToString(),
                        "Dex Penalty: " + DexPenalty.ToString(),
                        "Meditation Allowed: 100%",
                        "",
                        "Provoked Creature Damage Inflicted Bonus: " + Utility.CreatePercentageString(ProvokedCreatureDamageInflictedBonus),
                        "Chance to Avoid Peacemaking Breaking: " + Utility.CreatePercentageString(IgnorePeacemakingBreakChance),
                        "Discordance Effect Bonus: " + Utility.CreatePercentageString(DiscordanceEffectBonus),
                    };
                    break;

                case DungeonEnum.Ice:
                    DungeonName = "Ice";
                    Hue         = 2579;
                    EffectHue   = Hue - 1;

                    TieredArmorRating = 55 + (5 * tierLevel);

                    DexPenalty          = -10;
                    MeditationAllowance = ArmorMeditationAllowance.None;

                    BreathDamageReceivedScalar  = 1 - (.40 + (.05 * tierLevel));
                    BleedDamageReceivedScalar   = 1 - (.40 + (.05 * tierLevel));
                    PoisonDamageReceivedScalar  = 1 - (.40 + (.05 * tierLevel));
                    DiseaseDamageReceivedScalar = 1 - (.40 + (.05 * tierLevel));

                    BandageHealThroughPoisonScalar = .40 + (.05 * tierLevel);

                    SpecialEffectAvoidanceChance = .40 + (.05 * tierLevel);

                    gumpText = new string[] {
                        "Ice Dungeon Armor",
                        "Tier " + tierLevel.ToString(),
                        "",
                        "Armor Rating: " + TieredArmorRating.ToString(),
                        "Dex Penalty: " + DexPenalty.ToString(),
                        "Meditation Allowed: 0%",
                        "",
                        "Breath Damage Reduction: " + Utility.CreatePercentageString(1 - BreathDamageReceivedScalar),
                        "Bleed Damage Reduction: " + Utility.CreatePercentageString(1 - BleedDamageReceivedScalar),
                        "Poison Damage Reduction: " + Utility.CreatePercentageString(1 - PoisonDamageReceivedScalar),
                        "Disease Damage Reduction: " + Utility.CreatePercentageString(1 - DiseaseDamageReceivedScalar),
                        "Bandage Heal Through Poison Amount: " + Utility.CreatePercentageString(BandageHealThroughPoisonScalar),
                        "Special Effect Avoidance Chance: " + Utility.CreatePercentageString(SpecialEffectAvoidanceChance),
                    };
                    break;

                case DungeonEnum.Fire:
                    DungeonName = "Fire";
                    Hue         = 2635;
                    EffectHue   = Hue - 1;

                    TieredArmorRating = 55 + (5 * tierLevel);

                    DexPenalty          = -10;
                    MeditationAllowance = ArmorMeditationAllowance.None;

                    BreathDamageReceivedScalar = 1 - (.40 + (.05 * tierLevel));

                    FlamestrikeOnMeleeAttackChance     = 0.10 + (.05 * tierLevel); //0.05 + (.025 * tierLevel) Old
                    FlamestrikeOnReceiveMeleeHitChance = 0.10 + (.05 * tierLevel); //0.05 + (.025 * tierLevel) Old

                    gumpText = new string[] {
                        "Fire Dungeon Armor",
                        "Tier " + tierLevel.ToString(),
                        "",
                        "Armor Rating: " + TieredArmorRating.ToString(),
                        "Dex Penalty: " + DexPenalty.ToString(),
                        "Meditation Allowed: 0%",
                        "",
                        "Breath Damage Reduction: " + Utility.CreatePercentageString(1 - BreathDamageReceivedScalar),
                        "Chance of Flamestrike on Melee Attack: " + Utility.CreatePercentageString(FlamestrikeOnMeleeAttackChance),
                        "Chance of Flamestrike on Being Hit By Melee Attack: " + Utility.CreatePercentageString(FlamestrikeOnReceiveMeleeHitChance),
                    };
                    break;
                }
            }
Example #19
0
            public DungeonMouldWeaponGump(Mobile gumpTarget, Mobile crafter, Mobile mobileTarget, DungeonMould mould, bool newWeapon, BaseWeapon weapon, DungeonEnum dungeon, int amountDemanded, bool confirmed) : base(10, 10)
            {
                m_GumpTarget   = gumpTarget;
                m_Crafter      = crafter;
                m_MobileTarget = mobileTarget;
                m_DungeonMould = mould;
                m_NewWeapon    = newWeapon;
                m_Weapon       = weapon;
                m_Dungeon      = dungeon;

                m_AmountDemanded = amountDemanded;
                m_Confirmed      = confirmed;

                bool selfCraft = (m_Crafter == m_MobileTarget);

                Closable   = true;
                Disposable = true;
                Dragable   = true;
                Resizable  = false;

                AddImage(70, 100, 103);
                AddImage(5, 100, 103);
                AddImage(70, 5, 103);
                AddImage(5, 5, 103);
                AddImage(200, 100, 103);
                AddImage(200, 5, 103);
                AddImage(70, 281, 103);
                AddImage(5, 281, 103);
                AddImage(70, 186, 103);
                AddImage(5, 186, 103);
                AddImage(200, 281, 103);
                AddImage(200, 186, 103);
                AddImage(70, 374, 103);
                AddImage(5, 374, 103);
                AddImage(200, 374, 103);
                AddImage(17, 18, 3604, 2052);
                AddImage(76, 18, 3604, 2052);
                AddImage(204, 18, 3604, 2052);
                AddImage(17, 140, 3604, 2052);
                AddImage(76, 140, 3604, 2052);
                AddImage(204, 140, 3604, 2052);
                AddImage(17, 262, 3604, 2052);
                AddImage(76, 262, 3604, 2052);
                AddImage(204, 262, 3604, 2052);
                AddImage(17, 335, 3604, 2052);
                AddImage(76, 335, 3604, 2052);
                AddImage(204, 335, 3604, 2052);

                //-----
                int WhiteTextHue = 2655;
                int EffectHue    = WhiteTextHue;

                string offerText = "";

                if (!selfCraft)
                {
                    if (m_GumpTarget == m_MobileTarget)
                    {
                        offerText = "Offer from " + m_Crafter.Name;
                        AddLabel(Utility.CenteredTextOffset(175, offerText), 17, 149, offerText);
                    }
                }

                if (m_NewWeapon)
                {
                    offerText = "Create Dungeon Weapon";

                    if (selfCraft || m_GumpTarget == m_Crafter)
                    {
                        AddLabel(Utility.CenteredTextOffset(175, offerText), 17, WhiteTextHue, offerText);
                    }
                    else
                    {
                        AddLabel(Utility.CenteredTextOffset(175, offerText), 37, WhiteTextHue, offerText);
                    }
                }

                else
                {
                    offerText = "Upgrade Dungeon Weapon";

                    if (selfCraft || m_GumpTarget == m_Crafter)
                    {
                        AddLabel(Utility.CenteredTextOffset(175, offerText), 17, WhiteTextHue, offerText);
                    }
                    else
                    {
                        AddLabel(Utility.CenteredTextOffset(175, offerText), 37, WhiteTextHue, offerText);
                    }
                }

                //Weapon Info
                int    weaponTier  = m_Weapon.TierLevel;
                string dungeonName = GetDungeonName(m_Dungeon) + " Dungeon";
                string weaponName  = m_Weapon.Name;

                if (weaponName == null)
                {
                    weaponName = "";
                }

                weaponName = CultureInfo.CurrentCulture.TextInfo.ToTitleCase(weaponName);
                int newDurability = DungeonWeapon.BaselineDurability + (DungeonWeapon.IncreasedDurabilityPerTier * weaponTier);

                int adjustedBlessedCharges = DungeonWeapon.ArcaneMaxCharges;

                double accuracy = 100 * (DungeonWeapon.BaseAccuracy + (DungeonWeapon.AccuracyPerTier * (double)weaponTier));
                double tactics  = DungeonWeapon.BaseTactics + (DungeonWeapon.TacticsPerTier * (double)weaponTier);

                double effectChance = DungeonWeapon.BaseEffectChance + (DungeonWeapon.BaseEffectChancePerTier * (double)weaponTier);

                effectChance *= DungeonWeapon.GetSpeedScalar(m_Weapon.Speed);

                DungeonArmor.DungeonArmorDetail detail = new DungeonArmor.DungeonArmorDetail(m_Dungeon, 1);

                EffectHue = detail.Hue - 1;

                int itemId  = weapon.ItemID;
                int itemHue = EffectHue;
                int offsetX = 0;
                int offsetY = 0;

                AddLabel(Utility.CenteredTextOffset(120, dungeonName), 60, EffectHue, dungeonName);
                AddLabel(Utility.CenteredTextOffset(120, weaponName), 80, EffectHue, weaponName);
                AddItem(103 + m_Weapon.IconOffsetX, 115 + m_Weapon.IconOffsetY, m_Weapon.IconItemId, itemHue);
                AddLabel(97, 165, EffectHue, "Tier " + weaponTier.ToString());

                AddLabel(71, 190, WhiteTextHue, "Charges:");
                AddLabel(135, 190, EffectHue, adjustedBlessedCharges.ToString());

                AddLabel(55, 210, WhiteTextHue, "Experience:");
                AddLabel(135, 210, EffectHue, "0/" + DungeonWeapon.MaxDungeonExperience.ToString());

                AddLabel(60, 230, WhiteTextHue, "Durability:");
                AddLabel(135, 230, EffectHue, newDurability.ToString() + "/" + newDurability.ToString());

                AddLabel(65, 250, WhiteTextHue, "Accuracy:");
                AddLabel(135, 250, EffectHue, "+" + accuracy.ToString() + "%");

                AddLabel(74, 270, WhiteTextHue, "Tactics:");
                AddLabel(135, 270, EffectHue, "+" + tactics.ToString());

                AddLabel(31, 290, WhiteTextHue, "Effect Chance:");
                AddLabel(135, 290, EffectHue, Utility.CreateDecimalPercentageString(effectChance, 1));
                AddLabel(30, 310, WhiteTextHue, "(scaled for weapon speed)");

                DungeonWeaponDetail weaponDetail = DungeonWeapon.GetDungeonWeaponDetail(m_Dungeon);

                AddLabel(70, 335, WhiteTextHue, "Special Effect:");
                AddButton(78, 359, 1210, 1209, 4, GumpButtonType.Reply, 0);
                AddLabel(98, 355, EffectHue, weaponDetail.m_EffectDisplayName);

                //-----

                if (newWeapon)
                {
                    if (selfCraft || m_GumpTarget == m_MobileTarget)
                    {
                        AddLabel(225, 60, WhiteTextHue, "Choose Dungeon");

                        AddLabel(265, 95, WhiteTextHue, "Covetous");
                        AddLabel(265, 130, WhiteTextHue, "Deceit");
                        AddLabel(265, 165, WhiteTextHue, "Despise");
                        AddLabel(265, 200, WhiteTextHue, "Destard");
                        AddLabel(265, 235, WhiteTextHue, "Fire");
                        AddLabel(265, 270, WhiteTextHue, "Hythloth");
                        AddLabel(265, 305, WhiteTextHue, "Ice");
                        AddLabel(265, 340, WhiteTextHue, "Shame");
                        AddLabel(265, 375, WhiteTextHue, "Wrong");

                        if (m_Dungeon == DungeonEnum.Covetous)
                        {
                            AddButton(228, 90, 9724, 9721, 10, GumpButtonType.Reply, 0);
                        }
                        else
                        {
                            AddButton(228, 90, 9721, 9724, 10, GumpButtonType.Reply, 0);
                        }

                        if (m_Dungeon == DungeonEnum.Deceit)
                        {
                            AddButton(228, 125, 9724, 9721, 11, GumpButtonType.Reply, 0);
                        }
                        else
                        {
                            AddButton(228, 125, 9721, 9724, 11, GumpButtonType.Reply, 0);
                        }

                        if (m_Dungeon == DungeonEnum.Despise)
                        {
                            AddButton(228, 160, 9724, 9721, 12, GumpButtonType.Reply, 0);
                        }
                        else
                        {
                            AddButton(228, 160, 9721, 9724, 12, GumpButtonType.Reply, 0);
                        }

                        if (m_Dungeon == DungeonEnum.Destard)
                        {
                            AddButton(228, 195, 9724, 9721, 13, GumpButtonType.Reply, 0);
                        }
                        else
                        {
                            AddButton(228, 195, 9721, 9724, 13, GumpButtonType.Reply, 0);
                        }

                        if (m_Dungeon == DungeonEnum.Fire)
                        {
                            AddButton(228, 230, 9724, 9721, 14, GumpButtonType.Reply, 0);
                        }
                        else
                        {
                            AddButton(228, 230, 9721, 9724, 14, GumpButtonType.Reply, 0);
                        }

                        if (m_Dungeon == DungeonEnum.Hythloth)
                        {
                            AddButton(228, 265, 9724, 9721, 15, GumpButtonType.Reply, 0);
                        }
                        else
                        {
                            AddButton(228, 265, 9721, 9724, 15, GumpButtonType.Reply, 0);
                        }

                        if (m_Dungeon == DungeonEnum.Ice)
                        {
                            AddButton(228, 300, 9724, 9721, 16, GumpButtonType.Reply, 0);
                        }
                        else
                        {
                            AddButton(228, 300, 9721, 9724, 16, GumpButtonType.Reply, 0);
                        }

                        if (m_Dungeon == DungeonEnum.Shame)
                        {
                            AddButton(228, 335, 9724, 9721, 17, GumpButtonType.Reply, 0);
                        }
                        else
                        {
                            AddButton(228, 335, 9721, 9724, 17, GumpButtonType.Reply, 0);
                        }

                        if (m_Dungeon == DungeonEnum.Wrong)
                        {
                            AddButton(228, 370, 9724, 9721, 18, GumpButtonType.Reply, 0);
                        }
                        else
                        {
                            AddButton(228, 370, 9721, 9724, 18, GumpButtonType.Reply, 0);
                        }
                    }
                }

                if (!selfCraft)
                {
                    if (m_GumpTarget == m_Crafter)
                    {
                        AddLabel(26, 388, 149, "Price");
                        AddItem(57, 386, 3823);
                        AddImage(103, 387, 2445);
                        AddTextEntry(108, 388, 95, 20, WhiteTextHue, 4, m_AmountDemanded.ToString());
                        AddButton(214, 392, 1209, 1210, 3, GumpButtonType.Reply, 0);
                    }

                    else
                    {
                        AddLabel(26, 388, 149, "Price");
                        AddItem(57, 386, 3823);
                        AddLabel(103, 388, WhiteTextHue, m_AmountDemanded.ToString());
                    }
                }

                if (selfCraft)
                {
                    AddButton(24, 423, 2151, 2154, 1, GumpButtonType.Reply, 0);
                    AddLabel(57, 426, WhiteTextHue, "Confirm");
                }

                else
                {
                    if (m_GumpTarget == m_Crafter)
                    {
                        if (m_Confirmed)
                        {
                            AddButton(191, 423, 2154, 2151, 2, GumpButtonType.Reply, 0);
                        }
                        else
                        {
                            AddButton(191, 423, 2151, 2154, 2, GumpButtonType.Reply, 0);
                        }

                        AddLabel(227, 427, WhiteTextHue, "Confirm Offer");
                    }

                    else
                    {
                        AddButton(24, 423, 2151, 2154, 1, GumpButtonType.Reply, 0);
                        AddLabel(57, 426, WhiteTextHue, "Accept Their Offer");

                        if (m_Confirmed)
                        {
                            AddImage(191, 423, 9729);
                        }
                        else
                        {
                            AddImage(191, 423, 9731);
                        }

                        AddLabel(227, 427, WhiteTextHue, "They Are Ready");
                    }
                }
            }
Example #20
0
 public static Dungeon createDungeon(String _Name, Vector3 _Position, Vector3 _Size, DungeonEnum _DungeonEnum, Dimension _ParentDimension)
 {
     return(generateRegionDungeon("", _Position, _Size, _DungeonEnum, _ParentDimension));
 }
Example #21
0
        private static Dungeon generateRegionDungeon(String _Name, Vector3 _Position, Vector3 _Size, DungeonEnum _DungeonEnum, Dimension _ParentDimension)
        {
            Dungeon var_Result;

            var_Result = DungeonFactory.createDungeon(_Position, _Size, _DungeonEnum, _ParentDimension);

            fillWithChunks(var_Result);

            Logger.Logger.LogInfo("Region " + var_Result.Name + " wurde erstellt!");

            return(var_Result);
        }
Example #22
0
        public void EjectDungeonCore(Mobile from, DungeonEnum dungeon, bool removeAll)
        {
            if (from == null || dungeon == null)
            {
                return;
            }

            DungeonCoreLibraryEntry entry = GetEntryDetail(dungeon);

            if (entry == null)
            {
                return;
            }

            if (entry.Count == 0)
            {
                from.SendMessage("You do not have any of that dungeon core currently stored within this library.");
                return;
            }

            if (from.Backpack == null)
            {
                return;
            }

            if (from.Backpack.TotalItems == from.Backpack.MaxItems)
            {
                from.SendMessage("Your backpack is at capacity. Please remove some items and try again.");
                return;
            }

            if (removeAll)
            {
                int itemCount = 0;

                for (int a = 0; a < 1000; a++)
                {
                    if (entry.Count == 0)
                    {
                        break;
                    }

                    if (from.Backpack.TotalItems == from.Backpack.MaxItems)
                    {
                        break;
                    }

                    DungeonCore dungeonCore = (DungeonCore)Activator.CreateInstance(typeof(DungeonCore));
                    dungeonCore.Dungeon = dungeon;

                    if (dungeonCore != null)
                    {
                        entry.Count--;

                        from.Backpack.DropItem(dungeonCore);
                        itemCount++;
                    }
                }

                if (itemCount > 1)
                {
                    from.SendMessage("You retrieve " + itemCount.ToString() + " dungeon cores from the library.");
                    from.SendSound(addItemSound);
                }

                else if (itemCount == 1)
                {
                    from.SendMessage("You retrieve a dungeon core from the library.");
                    from.SendSound(addItemSound);
                }

                else
                {
                    from.SendMessage("You do not have any dungeon cores of that in the library.");
                }
            }

            else
            {
                DungeonCore dungeonCore = (DungeonCore)Activator.CreateInstance(typeof(DungeonCore));
                dungeonCore.Dungeon = dungeon;

                if (dungeonCore != null)
                {
                    entry.Count--;

                    from.Backpack.DropItem(dungeonCore);
                    from.SendMessage("You retrieve a dungeon core from the library.");
                    from.SendSound(addItemSound);
                }
            }
        }
Example #23
0
            public override void OnResponse(NetState sender, RelayInfo info)
            {
                #region Validate Mobiles Involved

                //Validate Mobiles
                bool crafterValid      = true;
                bool mobileTargetValid = true;

                if (m_Crafter == null)
                {
                    crafterValid = false;
                }

                else if (m_Crafter.Deleted || !m_Crafter.Alive)
                {
                    crafterValid = false;
                }

                if (m_MobileTarget == null)
                {
                    mobileTargetValid = false;
                }

                else if (m_MobileTarget.Deleted || !m_MobileTarget.Alive)
                {
                    mobileTargetValid = false;
                }

                if (!crafterValid || !mobileTargetValid)
                {
                    if (m_Crafter != null)
                    {
                        if (m_Crafter.HasGump(typeof(DungeonMouldWeaponGump)))
                        {
                            m_Crafter.CloseGump(typeof(DungeonMouldWeaponGump));
                        }

                        m_Crafter.SendMessage("You can no longer proceed with the crafting of that dungeon weapon.");
                    }

                    if (m_MobileTarget != null && m_Crafter != m_MobileTarget)
                    {
                        if (m_MobileTarget.HasGump(typeof(DungeonMouldWeaponGump)))
                        {
                            m_MobileTarget.CloseGump(typeof(DungeonMouldWeaponGump));
                        }

                        m_MobileTarget.SendMessage("You can no longer proceed with the crafting of that dungeon weapon.");
                    }

                    return;
                }

                if (crafterValid && mobileTargetValid && m_Crafter != m_MobileTarget)
                {
                    if (Utility.GetDistance(m_Crafter.Location, m_MobileTarget.Location) > 2)
                    {
                        if (m_Crafter.HasGump(typeof(DungeonMouldWeaponGump)))
                        {
                            m_Crafter.CloseGump(typeof(DungeonMouldWeaponGump));
                        }

                        m_Crafter.SendMessage("You are too far away from the target to proceed with the crafting.");

                        if (m_MobileTarget.HasGump(typeof(DungeonMouldWeaponGump)))
                        {
                            m_MobileTarget.CloseGump(typeof(DungeonMouldWeaponGump));
                        }

                        m_MobileTarget.SendMessage("You are too far away from the crafter to proceed with the crafting.");

                        return;
                    }

                    if (!m_Crafter.InLOS(m_MobileTarget))
                    {
                        if (m_Crafter.HasGump(typeof(DungeonMouldWeaponGump)))
                        {
                            m_Crafter.CloseGump(typeof(DungeonMouldWeaponGump));
                        }

                        m_Crafter.SendMessage("You are out of sight of the target and cannot continue crafting.");

                        if (m_MobileTarget.HasGump(typeof(DungeonMouldWeaponGump)))
                        {
                            m_MobileTarget.CloseGump(typeof(DungeonMouldWeaponGump));
                        }

                        m_MobileTarget.SendMessage("You are out of sight of the crafter and cannot continue crafting.");

                        return;
                    }
                }

                #endregion

                bool selfCraft    = (m_Crafter == m_MobileTarget);
                bool attemptCraft = false;

                //Close Gumps For Other Player if One Party Closes Theirs
                if (info.ButtonID == 0)
                {
                    if (!selfCraft)
                    {
                        if (m_GumpTarget == m_Crafter)
                        {
                            if (m_MobileTarget.HasGump(typeof(DungeonMouldWeaponGump)))
                            {
                                m_MobileTarget.CloseGump(typeof(DungeonMouldWeaponGump));
                                m_MobileTarget.SendMessage("They have canceled the offer.");

                                return;
                            }
                        }

                        if (m_GumpTarget == m_MobileTarget)
                        {
                            if (m_Crafter.HasGump(typeof(DungeonMouldWeaponGump)))
                            {
                                m_Crafter.CloseGump(typeof(DungeonMouldWeaponGump));
                                m_Crafter.SendMessage("They have declined the offer.");

                                return;
                            }
                        }
                    }
                }

                //Confirm / Accept
                if (info.ButtonID == 1)
                {
                    if (selfCraft)
                    {
                        attemptCraft = true;
                    }

                    else if (m_GumpTarget == m_MobileTarget)
                    {
                        if (!m_Confirmed)
                        {
                            if (m_Crafter != null)
                            {
                                m_MobileTarget.SendMessage(m_Crafter.Name + " has not confirmed their offer price yet.");
                            }

                            m_MobileTarget.CloseGump(typeof(DungeonMouldWeaponGump));
                            m_MobileTarget.SendGump(new DungeonMouldWeaponGump(m_MobileTarget, m_Crafter, m_MobileTarget, m_DungeonMould, m_NewWeapon, m_Weapon, m_Dungeon, m_AmountDemanded, m_Confirmed));

                            return;
                        }

                        else
                        {
                            attemptCraft = true;
                        }
                    }

                    else
                    {
                        m_GumpTarget.CloseGump(typeof(DungeonMouldWeaponGump));
                        m_GumpTarget.SendGump(new DungeonMouldWeaponGump(m_Crafter, m_Crafter, m_MobileTarget, m_DungeonMould, m_NewWeapon, m_Weapon, m_Dungeon, m_AmountDemanded, m_Confirmed));

                        return;
                    }
                }

                //Ready
                if (info.ButtonID == 2)
                {
                    if (!selfCraft && m_GumpTarget == m_Crafter)
                    {
                        m_Confirmed = !m_Confirmed;

                        m_MobileTarget.CloseGump(typeof(DungeonMouldWeaponGump));
                        m_MobileTarget.SendGump(new DungeonMouldWeaponGump(m_MobileTarget, m_Crafter, m_MobileTarget, m_DungeonMould, m_NewWeapon, m_Weapon, m_Dungeon, m_AmountDemanded, m_Confirmed));
                    }

                    m_GumpTarget.CloseGump(typeof(DungeonMouldWeaponGump));
                    m_GumpTarget.SendGump(new DungeonMouldWeaponGump(m_Crafter, m_Crafter, m_MobileTarget, m_DungeonMould, m_NewWeapon, m_Weapon, m_Dungeon, m_AmountDemanded, m_Confirmed));

                    return;
                }

                //Adjust Price
                if (info.ButtonID == 3)
                {
                    if (!selfCraft && m_GumpTarget == m_Crafter)
                    {
                        //Set Gold Amount
                        TextRelay demandAmountTextRelay = info.GetTextEntry(4);
                        string    demandAmountText      = demandAmountTextRelay.Text.Trim();

                        try { m_AmountDemanded = Convert.ToInt32(demandAmountText); }
                        catch (Exception e) { m_AmountDemanded = 0; }

                        if (m_AmountDemanded > 500000)
                        {
                            m_AmountDemanded = 500000;
                        }

                        if (m_AmountDemanded < 0)
                        {
                            m_AmountDemanded = 0;
                        }

                        m_Confirmed = false;

                        m_MobileTarget.CloseGump(typeof(DungeonMouldWeaponGump));
                        m_MobileTarget.SendGump(new DungeonMouldWeaponGump(m_MobileTarget, m_Crafter, m_MobileTarget, m_DungeonMould, m_NewWeapon, m_Weapon, m_Dungeon, m_AmountDemanded, m_Confirmed));

                        m_MobileTarget.SendMessage("They have changed the asking price for their service.");
                        m_GumpTarget.SendMessage("You change the asking price for your services. Click 'Confirm' to proceed.");
                    }

                    m_GumpTarget.CloseGump(typeof(DungeonMouldWeaponGump));
                    m_GumpTarget.SendGump(new DungeonMouldWeaponGump(m_Crafter, m_Crafter, m_MobileTarget, m_DungeonMould, m_NewWeapon, m_Weapon, m_Dungeon, m_AmountDemanded, m_Confirmed));

                    return;
                }

                //Special Effect
                if (info.ButtonID == 4)
                {
                    DungeonWeaponDetail weaponDetail = DungeonWeapon.GetDungeonWeaponDetail(m_Dungeon);

                    m_GumpTarget.SendMessage(weaponDetail.m_EffectDisplayName + ": " + weaponDetail.m_EffectDescription);

                    m_GumpTarget.CloseGump(typeof(DungeonMouldWeaponGump));
                    m_GumpTarget.SendGump(new DungeonMouldWeaponGump(m_Crafter, m_Crafter, m_MobileTarget, m_DungeonMould, m_NewWeapon, m_Weapon, m_Dungeon, m_AmountDemanded, m_Confirmed));

                    return;
                }

                //Dungeon Selection
                if (info.ButtonID >= 10 && info.ButtonID <= 18)
                {
                    if (m_NewWeapon)
                    {
                        if (selfCraft || m_GumpTarget == m_MobileTarget)
                        {
                            switch (info.ButtonID)
                            {
                            case 10: m_Dungeon = DungeonEnum.Covetous; break;

                            case 11: m_Dungeon = DungeonEnum.Deceit; break;

                            case 12: m_Dungeon = DungeonEnum.Despise; break;

                            case 13: m_Dungeon = DungeonEnum.Destard; break;

                            case 14: m_Dungeon = DungeonEnum.Fire; break;

                            case 15: m_Dungeon = DungeonEnum.Hythloth; break;

                            case 16: m_Dungeon = DungeonEnum.Ice; break;

                            case 17: m_Dungeon = DungeonEnum.Shame; break;

                            case 18: m_Dungeon = DungeonEnum.Wrong; break;
                            }
                        }
                    }

                    m_Crafter.CloseGump(typeof(DungeonMouldWeaponGump));
                    m_Crafter.SendGump(new DungeonMouldWeaponGump(m_Crafter, m_Crafter, m_MobileTarget, m_DungeonMould, m_NewWeapon, m_Weapon, m_Dungeon, m_AmountDemanded, m_Confirmed));

                    if (m_Crafter != m_MobileTarget)
                    {
                        m_MobileTarget.CloseGump(typeof(DungeonMouldWeaponGump));
                        m_MobileTarget.SendGump(new DungeonMouldWeaponGump(m_MobileTarget, m_Crafter, m_MobileTarget, m_DungeonMould, m_NewWeapon, m_Weapon, m_Dungeon, m_AmountDemanded, m_Confirmed));
                    }

                    return;
                }

                //Attempt Crafting
                if (attemptCraft)
                {
                    bool mouldValid = true;

                    if (m_DungeonMould == null)
                    {
                        mouldValid = false;
                    }

                    else if (m_DungeonMould.Deleted)
                    {
                        mouldValid = false;
                    }

                    if (m_DungeonMould.RootParent != m_Crafter)
                    {
                        mouldValid = false;
                    }

                    if (!mouldValid)
                    {
                        m_Crafter.CloseGump(typeof(DungeonMouldWeaponGump));
                        m_Crafter.SendMessage("The dungeon mould being used is no longer accessible.");

                        if (m_Crafter != m_MobileTarget)
                        {
                            m_MobileTarget.CloseGump(typeof(DungeonMouldWeaponGump));
                            m_MobileTarget.SendMessage("The dungeon mould being used is no longer accessible.");
                        }

                        return;
                    }

                    bool weaponValid = true;

                    if (m_Weapon == null)
                    {
                        weaponValid = false;
                    }

                    else if (m_Weapon.Deleted)
                    {
                        weaponValid = false;
                    }

                    if (selfCraft)
                    {
                        if (m_Weapon.RootParent != m_Crafter)
                        {
                            weaponValid = false;
                        }
                    }

                    else
                    {
                        if (m_Weapon.RootParent != m_MobileTarget)
                        {
                            weaponValid = false;
                        }
                    }

                    if (m_Weapon.TierLevel == DungeonWeapon.MaxDungeonTier)
                    {
                        weaponValid = false;
                    }

                    if (m_NewWeapon)
                    {
                        if (m_Weapon.TierLevel > 0)
                        {
                            weaponValid = false;
                        }

                        if (m_Weapon.CrafterName == "" || m_Weapon.Quality != Quality.Exceptional)
                        {
                            weaponValid = false;
                        }

                        if (m_Weapon.DamageLevel != WeaponDamageLevel.Regular || m_Weapon.AccuracyLevel != WeaponAccuracyLevel.Regular || m_Weapon.DurabilityLevel != WeaponDurabilityLevel.Regular)
                        {
                            weaponValid = false;
                        }
                    }

                    if (!weaponValid)
                    {
                        m_Crafter.CloseGump(typeof(DungeonMouldWeaponGump));
                        m_Crafter.SendMessage("The weapon being targeted is no longer accessible.");

                        if (m_Crafter != m_MobileTarget)
                        {
                            m_MobileTarget.CloseGump(typeof(DungeonMouldWeaponGump));
                            m_MobileTarget.SendMessage("The weapon being targeted is no longer accessible.");
                        }

                        return;
                    }

                    if (!selfCraft && m_AmountDemanded > 0)
                    {
                        if (Banker.GetBalance(m_MobileTarget) < m_AmountDemanded)
                        {
                            m_MobileTarget.CloseGump(typeof(DungeonMouldWeaponGump));
                            m_MobileTarget.SendGump(new DungeonMouldWeaponGump(m_MobileTarget, m_Crafter, m_MobileTarget, m_DungeonMould, m_NewWeapon, m_Weapon, m_Dungeon, m_AmountDemanded, m_Confirmed));

                            m_MobileTarget.SendMessage("You do not have the gold amount requested for this transaction in your bankbox.");

                            return;
                        }
                    }

                    if (!HasRequiredMaterials(m_Crafter, m_MobileTarget, m_DungeonMould, m_NewWeapon, m_Dungeon))
                    {
                        m_MobileTarget.CloseGump(typeof(DungeonMouldWeaponGump));
                        m_MobileTarget.SendGump(new DungeonMouldWeaponGump(m_MobileTarget, m_Crafter, m_MobileTarget, m_DungeonMould, m_NewWeapon, m_Weapon, m_Dungeon, m_AmountDemanded, m_Confirmed));

                        if (m_NewWeapon)
                        {
                            m_MobileTarget.SendMessage("You must have " + DungeonWeapon.CoresNeededForCreation.ToString() + " dungeon cores and " + DungeonWeapon.DistillationNeededForCreation.ToString() + " dungeon distillation of the matching dungeon in your backpack to create this dungeon weapon.");
                        }

                        else
                        {
                            m_MobileTarget.SendMessage("You must have " + DungeonWeapon.CoresNeededForUpgrade.ToString() + " dungeon cores and " + DungeonWeapon.DistillationNeededForUpgrade.ToString() + " dungeon distillation of the matching dungeon in your backpack to upgrade it's tier.");
                        }

                        return;
                    }

                    ConsumeMaterials(m_Crafter, m_MobileTarget, m_DungeonMould, m_NewWeapon, m_Dungeon);

                    if (!selfCraft && m_AmountDemanded > 0)
                    {
                        Banker.Withdraw(m_MobileTarget, m_AmountDemanded);
                        Banker.Deposit(m_Crafter, m_AmountDemanded);

                        m_MobileTarget.SendSound(0x037);

                        if (m_NewWeapon)
                        {
                            m_Crafter.SendMessage("You convert their weapon into a dungeon weapon and receive " + m_AmountDemanded.ToString() + " gold for your services.");
                            m_MobileTarget.SendMessage("You pay " + m_AmountDemanded.ToString() + " gold for them to create a dungeon weapon for you.");
                        }

                        else
                        {
                            m_Crafter.SendMessage("You upgrade their dugneon weapon's tier and receive " + m_AmountDemanded.ToString() + " gold for your services.");
                            m_MobileTarget.SendMessage("You pay " + m_AmountDemanded.ToString() + " gold for them to upgrade your dungeon weapon.");
                        }
                    }

                    else
                    {
                        if (selfCraft)
                        {
                            if (m_NewWeapon)
                            {
                                m_Crafter.SendMessage("You convert your weapon into a dungeon weapon.");
                            }

                            else
                            {
                                m_Crafter.SendMessage("You upgrade your dungeon weapon's tier.");
                            }
                        }

                        else
                        {
                            if (m_NewWeapon)
                            {
                                m_Crafter.SendMessage("You convert their weapon into a dungeon weapon.");
                                m_MobileTarget.SendMessage("They create a dungeon weapon for you.");
                            }

                            else
                            {
                                m_Crafter.SendMessage("You upgrade their dungeon weapon's tier.");
                                m_MobileTarget.SendMessage("They upgrade your dungeon weapon's tier for you.");
                            }
                        }
                    }

                    m_Crafter.PlaySound(0x2A);

                    if (m_NewWeapon)
                    {
                        m_Weapon.Quality          = Quality.Regular;
                        m_Weapon.ArcaneCharges    = DungeonWeapon.ArcaneMaxCharges;
                        m_Weapon.ArcaneChargesMax = DungeonWeapon.ArcaneMaxCharges;
                        m_Weapon.Dungeon          = m_Dungeon;
                        m_Weapon.TierLevel        = 1;
                    }

                    else
                    {
                        m_Weapon.TierLevel++;
                    }

                    m_Weapon.Experience = 0;

                    m_Weapon.MaxHitPoints = DungeonWeapon.BaselineDurability + (DungeonWeapon.IncreasedDurabilityPerTier * m_Weapon.TierLevel);
                    m_Weapon.HitPoints    = m_Weapon.MaxHitPoints;

                    return;
                }
            }
Example #24
0
            public PlayerDungeonArmorProfile(Mobile wearer, BaseArmor armorPiece)
            {
                Player = wearer as PlayerMobile;

                if (Player == null)
                {
                    DungeonArmorDetail = new DungeonArmorDetail(DungeonEnum.None, 1);
                    return;
                }

                if (Player.RecentlyInPlayerCombat)
                {
                    InPlayerCombat = true;
                }

                DungeonEnum currentDungeon = DungeonEnum.None;
                int         lowestTier     = 1000;

                List <Layer> m_Layers = new List <Layer>();

                m_Layers.Add(Layer.Helm);
                m_Layers.Add(Layer.Neck);
                m_Layers.Add(Layer.InnerTorso);
                m_Layers.Add(Layer.Arms);
                m_Layers.Add(Layer.Gloves);
                m_Layers.Add(Layer.Pants);

                MatchingSet = true;

                for (int a = 0; a < m_Layers.Count; a++)
                {
                    BaseArmor dungeonArmor = Player.FindItemOnLayer(m_Layers[a]) as BaseArmor;

                    if (dungeonArmor == null)
                    {
                        MatchingSet = false;
                        continue;
                    }

                    if (dungeonArmor.Dungeon == DungeonEnum.None || dungeonArmor.TierLevel == 0)
                    {
                        MatchingSet = false;
                    }

                    else
                    {
                        Pieces++;

                        if (currentDungeon == DungeonEnum.None)
                        {
                            currentDungeon  = dungeonArmor.Dungeon;
                            lowestTierPiece = dungeonArmor;
                        }

                        else
                        {
                            if (currentDungeon != dungeonArmor.Dungeon)
                            {
                                MatchingSet = false;
                            }
                        }

                        if (dungeonArmor.TierLevel < lowestTier)
                        {
                            lowestTier      = dungeonArmor.TierLevel;
                            lowestTierPiece = dungeonArmor;
                        }
                    }
                }

                //Single Piece of Armor Being Inspected
                if (armorPiece != null)
                {
                    currentDungeon = armorPiece.Dungeon;
                    lowestTier     = armorPiece.TierLevel;
                }

                if (lowestTier == 1000)
                {
                    lowestTier = 1;
                }

                DungeonArmorDetail = new DungeonArmorDetail(currentDungeon, lowestTier);
            }