Пример #1
0
 public override void updateToggle(int heroLevel, HeroClasses.Hero hero)
 {
     if (createdLevel < hero.GetArmorRating() / 5)
     {
         hero.setReflectedDamage(hero.GetArmorRating() / 5);
         createdLevel = hero.GetArmorRating();
         Engine.Engine.Log("Armor to damage bonus: " + hero.GetArmorRating() / 5);
     }
 }
Пример #2
0
 public override void updateToggle(int heroLevel, HeroClasses.Hero hero)
 {
     if (createdLevel < heroLevel && isActive)
     {
         hero.damageBoost -= increase + createdLevel;
         hero.damageBoost += increase + heroLevel;
         createdLevel      = heroLevel;
     }
 }
Пример #3
0
 public override void updateToggle(int heroLevel, HeroClasses.Hero hero)
 {
     if (createdLevel < heroLevel && isActive)
     {
         hero.setArmorBoost(armorBoost + (int)(heroLevel * 2));
         hero.damageBoost += (int)(createdLevel * 1.5);
         hero.damageBoost -= (int)(heroLevel);
         createdLevel      = heroLevel;
     }
 }
Пример #4
0
 public void updateAOEPosition(Level mapLevel, IntVec start, HeroClasses.Hero hero)
 {
     if (turnCount > 0)
     {
         viewCastRange(mapLevel, start);
         addCastingSquares(radiusSquares[0]);
         finishCastandDealDamage(HeroClasses.Hero.level, hero.GetEquipment().getTotalDamageIncrease(), mapLevel, hero);
         willBeCast  = true;
         wasJustCast = false;
     }
 }
Пример #5
0
 protected override void finishCast(int damage, Mapping.Level mapLevel, HeroClasses.Hero hero)
 {
     for (int i = 0; i < castSquares.Length; i++)
     {
         GameCharacter test = (GameCharacter)mapLevel.CharacterEntities.FindEntity(castSquares[i]);
         if (test != null)
         {
             test.TakeDamage(damage, hero);
         }
         castSquares[i] = new IntVec(0, 0);
     }
 }
Пример #6
0
 protected override void finishCast(int damage, Mapping.Level mapLevel, HeroClasses.Hero hero)
 {
     for (int i = 0; i < castSquares.Length; i++)
     {
         GameCharacter test = (GameCharacter)mapLevel.CharacterEntities.FindEntity(castSquares[i]);
         if (test != null)
         {
             Engine.Engine.AddVisualAttack(hero, test, "Hero/FireballSpell", .25f, 1.0f, .03f);
             Audio.playSound("Fireball", .25f);
             test.TakeDamage(damage, hero);
         }
         castSquares[i] = new IntVec(0, 0);
     }
 }
Пример #7
0
 protected override void finishCast(int damage, Mapping.Level mapLevel, HeroClasses.Hero hero)
 {
     for (int i = 0; i < castSquares.Length; i++)
     {
         GameCharacter test = (GameCharacter)mapLevel.CharacterEntities.FindEntity(castSquares[i]);
         if (test != null)
         {
             Engine.Engine.AddVisualAttack(test, "Hero/Execute", .5f, 1.5f, .05f);
             test.TakeDamage(damage, hero);
             cooldown = getCooldown(test);
         }
         castSquares[i] = new IntVec(0, 0);
     }
 }
Пример #8
0
 protected override void finishCast(int damage, Mapping.Level mapLevel, HeroClasses.Hero hero)
 {
     for (int i = 0; i < castSquares.Length; i++)
     {
         GameCharacter test = (GameCharacter)mapLevel.CharacterEntities.FindEntity(castSquares[i]);
         if (test != null)
         {
             Audio.playSound("DaggerStab");
             Engine.Engine.AddVisualAttack(test, "Hero/DaggerSlash", .5f, 1.5f, .05f);
             test.TakeDamage(damage, hero);
         }
         castSquares[i] = new IntVec(0, 0);
     }
 }
Пример #9
0
 protected override void finishCast(int damage, Mapping.Level mapLevel, HeroClasses.Hero hero)
 {
     for (int i = 0; i < castSquares.Length; i++)
     {
         GameCharacter test = (GameCharacter)mapLevel.CharacterEntities.FindEntity(castSquares[i]);
         if (test != null)
         {
             Audio.playSound("Arcane");
             Engine.Engine.AddVisualAttack(hero, test, "Hero/Overload", 1.0f, 1.0f, 0);
             test.DealElementalDamage(Enums.ElementAttributes.Arcane, 7, HeroClasses.Hero.level / 2);
             test.TakeDamage(damage, hero);
         }
         castSquares[i] = new IntVec(0, 0);
     }
 }
Пример #10
0
 protected override void finishCast(int damage, Mapping.Level mapLevel, HeroClasses.Hero hero)
 {
     for (int i = 0; i < castSquares.Length; i++)
     {
         GameCharacter test = (GameCharacter)mapLevel.CharacterEntities.FindEntity(castSquares[i]);
         if (test != null)
         {
             Engine.Engine.AddVisualAttack(test, "Hero/DoubleSlash", .25f, 2.0f, .15f);
             Audio.playSound("Slash", .25f);
             test.TakeDamage(damage, hero);
             if (mapLevel.CharacterEntities.FindPosition(test) != null)
             {
                 test.TakeDamage(damage, hero);
             }
         }
         castSquares[i] = new IntVec(0, 0);
     }
 }
Пример #11
0
 protected override void finishCast(int damage, Mapping.Level mapLevel, HeroClasses.Hero hero)
 {
     for (int i = 0; i < castSquares.Length; i++)
     {
         GameCharacter test = (GameCharacter)mapLevel.CharacterEntities.FindEntity(castSquares[i]);
         if (test != null)
         {
             Audio.playSound("Mugging");
             test.TakeDamage(damage, hero);
             Items.Item heroItem = null;
             while (heroItem == null || heroItem.ItemType == Enums.ITypes.Consumable)
             {
                 heroItem = Items.Item.randomItem(mapLevel.DungeonLevel, HeroClasses.Hero.level - 3);
             }
             hero.GetInventory().addItem(heroItem);
         }
         castSquares[i] = new IntVec(0, 0);
     }
 }
Пример #12
0
 public override void finishCastandDealDamage(int heroLevel, int heroDamage, Mapping.Level mapLevel, HeroClasses.Hero hero)
 {
     heroEffect(hero);
     cooldown = 6;
 }
Пример #13
0
        protected void heroEffect(HeroClasses.Hero hero)
        {
            int boost = (HeroClasses.Hero.level / 10) * (Math.Abs(hero.GetArmorRating() - hero.getArmorBoost()) + 1);

            hero.ApplyArmorBoost(boost, 1);
        }
Пример #14
0
 abstract protected void finishCast(int damage, Level mapLevel, HeroClasses.Hero hero);
Пример #15
0
        public static void Start(Game1 injectedGame)
        {
            game = injectedGame;
            hero = new HeroClasses.Warrior();
            GenerateLevel();

            windowSizeInTiles = new IntVec(game.Width / CELLWIDTH, game.Height / CELLWIDTH);
            cameraPosition = currentLevel.CharacterEntities.FindPosition(hero);
            modifiedCameraPosition.X = cameraPosition.X - (windowSizeInTiles.X / 2);
            modifiedCameraPosition.Y = cameraPosition.Y - (windowSizeInTiles.Y / 2);

            LogPosition = new Vector2(12, 12);
            // = new Vector2(game.Width - 48, game.Height - 48);
            InventoryPosition = new Vector2(game.Width - 5 * (CELLWIDTH), game.Height - 4 * (CELLWIDTH));
            InvButtonPosition = new Vector2(game.Width - CELLWIDTH, game.Height - CELLWIDTH);
            abilityPosition = new Vector2(game.Width / 2, game.Height - CELLWIDTH);
            charSheetPosition = new Vector2(0, 60);
            InventorySize = new Vector2(4 * CELLWIDTH, 4 * CELLWIDTH);
            weaponEquipPosition = new Vector2(0, game.Height - 2 * CELLWIDTH - 20);
            armorEquipPosition = new Vector2(0, game.Height - CELLWIDTH);
            game.IsMouseVisible = true;

            LoadMainMenu();

            saveButton = new UIButton(new Vector2(game.Width / 2 - 150, game.Height / 2), true, "UI/Save", "Save and quit");
            continueButton = new UIButton(new Vector2(game.Width / 2 + 150, game.Height / 2), true, "UI/Continue", "Continue");

            headSlot = new UIButton(armorEquipPosition, false, "UI/HelmOverlay", "Helm");
            chestSlot = new UIButton(new Vector2(armorEquipPosition.X + CELLWIDTH, armorEquipPosition.Y),
                false, "UI/ChestOverlay", "Chest");
            legSlot = new UIButton(new Vector2(armorEquipPosition.X + 2 * (CELLWIDTH), armorEquipPosition.Y),
                false, "UI/LegsOverlay", "Legs");
            ringSlot1 = new UIButton(new Vector2(armorEquipPosition.X + 3 * (CELLWIDTH), armorEquipPosition.Y),
                false, "UI/RingOverlay", "Ring");
            ringSlot2 = new UIButton(new Vector2(armorEquipPosition.X + 4 * (CELLWIDTH), armorEquipPosition.Y),
                false, "UI/RingOverlay", "Ring");
            neckSlot = new UIButton(new Vector2(armorEquipPosition.X + 5 * (CELLWIDTH), armorEquipPosition.Y),
                false, "UI/NeckOverlay", "Neck");

            weaponSlot1 = new UIButton(new Vector2(weaponEquipPosition.X, weaponEquipPosition.Y),
                false, "UI/InvSlot", "Left");
            weaponSlot2 = new UIButton(new Vector2(weaponEquipPosition.X + CELLWIDTH, weaponEquipPosition.Y),
                false, "UI/InvSlot", "Right");

            texState.AddressU = TextureAddressMode.Clamp;
            texState.AddressV = TextureAddressMode.Clamp;
            texState.AddressW = TextureAddressMode.Clamp;
            texState.Filter = TextureFilter.Linear;

            //StartGame();
        }
Пример #16
0
 public override void updateToggle(int heroLevel, HeroClasses.Hero hero)
 {
 }
Пример #17
0
 public override void finishCastandDealDamage(int heroLevel, int heroDamage, Mapping.Level mapLevel, HeroClasses.Hero hero)
 {
     if (!isActive)
     {
         if (HeroClasses.Hero.Element != null && !HeroClasses.Hero.Element.Contains(Enums.ElementAttributes.Fire))
         {
             HeroClasses.Hero.Element.Add(Enums.ElementAttributes.Arcane);
             added = true;
         }
         isActive = true;
         wasJustCast = true;
     }
     else if (isActive)
     {
         if (added)
         {
             HeroClasses.Hero.Element.Remove(Enums.ElementAttributes.Arcane);
             added = false;
         }
         wasJustCast = true;
         isActive = false;
     }
     cooldown = 0;
 }
Пример #18
0
 public abstract void updateToggle(int heroLevel, HeroClasses.Hero hero);
Пример #19
0
 public abstract void toggledAttackEffects(HeroClasses.Hero hero);
Пример #20
0
 public override void finishCastandDealDamage(int heroLevel, int heroDamage, Mapping.Level mapLevel, HeroClasses.Hero hero)
 {
     Audio.playSound("Smoke", 1.0f);
     hero.setInvisibility(10 + heroLevel / 5);
     cooldown = 20 + heroLevel / 5;
 }
Пример #21
0
 public override void finishCastandDealDamage(int heroLevel, int heroDamage, Mapping.Level mapLevel, HeroClasses.Hero hero)
 {
     hero.setReflectedDamage(hero.GetArmorRating() / 5);
     createdLevel = hero.GetArmorRating();
 }
Пример #22
0
 public override void finishCastandDealDamage(int heroLevel, int heroDamage, Level mapLevel, HeroClasses.Hero hero)
 {
     Audio.playSound("WhirlwindSlash");
     base.finishCastandDealDamage(heroLevel, heroDamage, mapLevel, hero);
 }
Пример #23
0
        public override void finishCastandDealDamage(int heroLevel, int heroDamage, Level mapLevel, HeroClasses.Hero hero)
        {
            int damage = calculateDamage(heroLevel, heroDamage);

            cooldown    = abilityCooldown;
            wasJustCast = true;
            for (int i = 0; i < castSquares.Length; i++)
            {
                Audio.playSound("HammerSmash");
                Engine.Engine.AddVisualAttack(castSquares[i], "Hero/hammerSmash", .5f, 1.0f, .05f);
                GameCharacter enemy = (GameCharacter)mapLevel.CharacterEntities.FindEntity(castSquares[i]);
                if (enemy != null)
                {
                    enemy.TakeDamage(damage, hero);
                }
                castSquares[i] = new IntVec(0, 0);
            }
            isActuallyFilled = false;
        }
Пример #24
0
 public override void finishCastandDealDamage(int heroLevel, int heroDamage, Mapping.Level mapLevel, HeroClasses.Hero hero)
 {
     for (int i = 0; i < castSquares.Length; i++)
     {
         if (mapLevel.Move(hero, castSquares[0], true))
         {
             Audio.playSound("whoosh", 1.0f);
             cooldown    = abilityCooldown;
             wasJustCast = true;
         }
         castSquares[i] = new IntVec(0, 0);
     }
 }
Пример #25
0
        public static void LoadGame(string filename)
        {
            IFormatter formatter = new BinaryFormatter();
            Stream stream = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.Read);
            SaveGameData gd = (SaveGameData)formatter.Deserialize(stream);
            stream.Close();
            File.Delete(filename);
            //Create a new class of the hero just to set the static texture.

            GameCharacter temp;
            switch (gd.heroRole)
            {
                case Enums.Classes.Mage:
                    temp = new HeroClasses.Mage();
                    break;
                case Enums.Classes.Warrior:
                    temp = new HeroClasses.Warrior();
                    break;
                case Enums.Classes.Rogue:
                    temp = new HeroClasses.Rogue();
                    break;
                case Enums.Classes.Brawler:
                    temp = new HeroClasses.Brawler();
                    break;
                case Enums.Classes.Magus:
                    temp = new HeroClasses.Magus();
                    break;
                case Enums.Classes.Duelist:
                    temp = new HeroClasses.Duelist();
                    break;
                case Enums.Classes.Sentinel:
                    temp = new HeroClasses.Sentinel();
                    break;
                case Enums.Classes.Sorcerer:
                    temp = new HeroClasses.Sorcerer();
                    break;
                case Enums.Classes.Ranger:
                    temp = new HeroClasses.Ranger();
                    break;
                case Enums.Classes.Marksman:
                    temp = new HeroClasses.Marksman();
                    break;
                case Enums.Classes.Berserker:
                    temp = new HeroClasses.Berserker();
                    break;
                case Enums.Classes.Juggernaut:
                    temp = new HeroClasses.Juggernaut();
                    break;
                case Enums.Classes.SpellBlade:
                    temp = new HeroClasses.SpellBlade();
                    break;
                case Enums.Classes.SpellWeaver:
                    temp = new HeroClasses.Spellweaver();
                    break;
                case Enums.Classes.Assassin:
                    temp = new HeroClasses.Assassin();
                    break;
            }
            currentSaveSlot = gd.saveSlot;
            hero = gd.character;
            HeroClasses.Hero.level = gd.level;
            HeroClasses.Hero.jarBarAmount = gd.jarBarAmount;
            HeroClasses.Hero.MaxJarBarAmount = gd.jarBarMax;
            HeroClasses.Hero.heroRole = gd.heroRole;
            UpdateAbilities();
            GeneratedLevel nlevel = new GeneratedLevel(gd.seed, gd.levelComplexity, gd.dungeonLevel);
            currentLevel = nlevel.RetrieveLevel();
            currentLevel.CharacterEntities.Add(hero, currentLevel.GetStartPoint());
            showSaveSlotSelection = false;
            mainMenuOpen = false;
            gameStarted = true;
        }
Пример #26
0
 public override void toggledAttackEffects(HeroClasses.Hero hero)
 {
 }
Пример #27
0
 public override void finishCastandDealDamage(int heroLevel, int heroDamage, Level mapLevel, HeroClasses.Hero hero)
 {
     damage      = calculateDamage(heroLevel, heroDamage);
     cooldown    = abilityCooldown;
     wasJustCast = true;
     finishCast(damage, mapLevel, hero);
     isFinished = false;
 }
Пример #28
0
 public override void finishCastandDealDamage(int heroLevel, int heroDamage, Mapping.Level mapLevel, HeroClasses.Hero hero)
 {
     hero.setParryCount(1);
     cooldown = 8;
 }
Пример #29
0
        public static void Update(GameTime gameTime)
        {
            MouseController.Update();
            if (gameStarted)
            {
                if (heroPos == null)
                {
                    heroPos = currentLevel.CharacterEntities.FindPosition(hero);
                }

                for (int i = 0; i < xpList.Count; i++)
                {
                    if (xpList[i].update())
                    {
                        xpList.RemoveAt(i);
                        drawXP++;
                    }
                }
                for (int i = 0; i < vattacks.Count; i++)
                {
                    if (vattacks[i].update())
                    {
                        vattacks.RemoveAt(i);
                    }
                }

                for (int i = 0; i < splashes.Count(); i++)
                {
                    if (splashes[i].update())
                    {
                        splashes.RemoveAt(i);
                    }
                }

                if (!GameCommands())
                {
                    currentLevel.testUpdate();
                    //Game turns

                    //hero.TakeTurn(currentLevel);
                    if (charIndex >= currentLevel.CharacterEntities.Entities().Count<GameCharacter>())
                    {
                        charIndex = 0;
                    }
                    while (currentLevel.CharacterEntities.Entities().ElementAt<GameCharacter>(charIndex) != hero)
                    {
                        if (hero != null)
                        {
                            heroPos = currentLevel.CharacterEntities.FindPosition(hero);
                        }
                        if (charIndex < currentLevel.CharacterEntities.Entities().Count<GameCharacter>() && heroPos != null)
                        {
                            IntVec enemyPosition = currentLevel.CharacterEntities.FindPosition(currentLevel.CharacterEntities.Entities().ElementAt<GameCharacter>(charIndex));
                            if (enemyPosition.X > heroPos.X - AIDist &&
                                enemyPosition.X < heroPos.X + AIDist &&
                                enemyPosition.Y > heroPos.Y - AIDist &&
                                enemyPosition.Y < heroPos.Y + AIDist &&
                                HeroClasses.Hero.visible)
                            {
                                if (currentLevel.CharacterEntities.Entities().ElementAt<GameCharacter>(charIndex).TakeTurn(currentLevel))
                                {
                                    currentLevel.InvalidateCache();
                                    charIndex++;

                                }
                            }
                            else
                            {
                                charIndex++;
                            }
                        }
                        if (charIndex >= currentLevel.CharacterEntities.Entities().Count<GameCharacter>())
                        {
                            charIndex = 0;
                        }
                    }

                    charIndex += hero.TakeTurn(currentLevel) ? 1 : 0;

                    if (hero.hasReachedBranchLevel())
                    {
                        tempPosition = currentLevel.CharacterEntities.FindPosition(hero);
                        tempEquip = hero.GetEquipment();
                        tempInventory = hero.GetInventory();
                        currentLevel.CharacterEntities.Remove(hero);

                        if (HeroClasses.Hero.level < 20)
                        {

                            gameStarted = false;
                            showCharSelection = true;

                            if (HeroClasses.Hero.heroRole == Enums.Classes.Warrior)
                            {
                                selection = new CharButton[] { bralwerButton, sentinelButton };
                            }
                            else if (HeroClasses.Hero.heroRole == Enums.Classes.Mage)
                            {
                                selection = new CharButton[] { sorcererButton, magusButton };
                            }
                            else if (HeroClasses.Hero.heroRole == Enums.Classes.Rogue)
                            {
                                selection = new CharButton[] { duelistButton, rangerButton };
                            }
                        }
                        else
                        {
                            //new class, not branching...
                            if (HeroClasses.Hero.heroRole == Enums.Classes.Duelist)
                            {
                                hero = new HeroClasses.Assassin();
                                UpdateAbilities();
                                Log("You are now an Assasin.");
                                splashes.Add(new Splash(upAssassin, new Vector2(game.Width / 2, game.Height / 2), 3, .05f));
                                drawXP = hero.getExperience();
                                gameStarted = true;
                                hero.ObtainItems(tempInventory, tempEquip);
                                hero.obtainStartingGear(currentLevel);
                                currentLevel.CharacterEntities.Add(hero, tempPosition);
                            }
                            if (HeroClasses.Hero.heroRole == Enums.Classes.Brawler)
                            {
                                hero = new HeroClasses.Berserker();
                                UpdateAbilities();
                                Log("You are now a Berserker.");
                                splashes.Add(new Splash(upBerserker, new Vector2(game.Width / 2, game.Height / 2), 3, .05f));
                                drawXP = hero.getExperience();
                                gameStarted = true;
                                hero.ObtainItems(tempInventory, tempEquip);
                                hero.obtainStartingGear(currentLevel);
                                currentLevel.CharacterEntities.Add(hero, tempPosition);
                            }
                            if (HeroClasses.Hero.heroRole == Enums.Classes.Sentinel)
                            {
                                hero = new HeroClasses.Juggernaut();
                                UpdateAbilities();
                                Log("You are now a Juggernaut.");
                                splashes.Add(new Splash(upJuggernaut, new Vector2(game.Width / 2, game.Height / 2), 3, .05f));
                                drawXP = hero.getExperience();
                                gameStarted = true;
                                hero.ObtainItems(tempInventory, tempEquip);
                                hero.obtainStartingGear(currentLevel);
                                currentLevel.CharacterEntities.Add(hero, tempPosition);
                            }
                            if (HeroClasses.Hero.heroRole == Enums.Classes.Sorcerer)
                            {
                                hero = new HeroClasses.Spellweaver();
                                UpdateAbilities();
                                Log("You are now a SpellWeaver.");
                                splashes.Add(new Splash(upSpellweaver, new Vector2(game.Width / 2, game.Height / 2), 3, .05f));
                                drawXP = hero.getExperience();
                                gameStarted = true;
                                hero.ObtainItems(tempInventory, tempEquip);
                                hero.obtainStartingGear(currentLevel);
                                currentLevel.CharacterEntities.Add(hero, tempPosition);
                            }
                            if (HeroClasses.Hero.heroRole == Enums.Classes.Magus)
                            {
                                hero = new HeroClasses.SpellBlade();
                                UpdateAbilities();
                                Log("You are now a SpellBlade.");
                                splashes.Add(new Splash(upSpellblade, new Vector2(game.Width / 2, game.Height / 2), 3, .05f));
                                drawXP = hero.getExperience();
                                gameStarted = true;
                                hero.ObtainItems(tempInventory, tempEquip);
                                hero.obtainStartingGear(currentLevel);
                                currentLevel.CharacterEntities.Add(hero, tempPosition);
                            }
                            if (HeroClasses.Hero.heroRole == Enums.Classes.Ranger)
                            {
                                hero = new HeroClasses.Marksman();
                                UpdateAbilities();
                                Log("You are now a Marksman.");
                                splashes.Add(new Splash(upMarksman, new Vector2(game.Width / 2, game.Height / 2), 3, .05f));
                                drawXP = hero.getExperience();
                                gameStarted = true;
                                hero.ObtainItems(tempInventory, tempEquip);
                                hero.obtainStartingGear(currentLevel);
                                currentLevel.CharacterEntities.Add(hero, tempPosition);
                            }
                        }

                    }

                    if (currentLevel.CharacterEntities.FindPosition(hero) != null)
                    {
                        cameraPosition = currentLevel.CharacterEntities.FindPosition(hero);

                        modifiedCameraPosition.X = cameraPosition.X - (windowSizeInTiles.X / 2);
                        modifiedCameraPosition.Y = cameraPosition.Y - (windowSizeInTiles.Y / 2);
                        currentLevel.InvalidateCache();
                    }
                }
            }
            else
            {
                if (mainMenuOpen)
                {
                    if (mageButton.isClicked())
                    {
                        hero = new HeroClasses.Mage();
                        HeroClasses.Hero.level = 5;
                        UpdateAbilities();
                        mainMenuOpen = false;
                        showSaveSlotSelection = true;
                    }
                    if (warriorButton.isClicked())
                    {
                        hero = new HeroClasses.Warrior();
                        HeroClasses.Hero.level = 5;
                        UpdateAbilities();
                        mainMenuOpen = false;
                        showSaveSlotSelection = true;
                    }
                    if (rogueButton.isClicked())
                    {
                        hero = new HeroClasses.Rogue();
                        HeroClasses.Hero.level = 5;
                        UpdateAbilities();
                        mainMenuOpen = false;
                        showSaveSlotSelection = true;
                    }
                    int saveSlot = saveSlotClicked();
                    if (saveSlot != -1)
                    {
                        LoadFromSlot(saveSlot);
                    }
                    if (quitButton.isClicked())
                    {
                        System.Environment.Exit(0);
                    }
                }

                else if (savePromptOpen)
                {
                    if (saveButton.isClicked())
                    {
                        SaveToSlot(currentSaveSlot);
                        System.Environment.Exit(0);
                    }
                    if (continueButton.isClicked())
                    {
                        savePromptOpen = false;
                        gameStarted = true;
                    }
                }
                else if (showSaveSlotSelection)
                {
                    int saveClicked = saveSlotClicked();
                    if (saveClicked != -1)
                    {
                        currentSaveSlot = saveClicked;
                        showSaveSlotSelection = false;
                        StartGame();
                    }

                }
                else if (showEscMenu)
                {
                    if (escQuit.isClicked())
                    {
                        Environment.Exit(0);
                    }
                    if (escContinue.isClicked())
                    {
                        showEscMenu = false;
                        gameStarted = true;
                    }
                    if (escMainMenu.isClicked())
                    {
                        showEscMenu = false;
                        xpList.Clear();
                        currentDungeonLevel = 0;
                        LoadSaveSlots();
                        vattacks.Clear();
                        mainMenuOpen = true;
                    }
                }

                else if (showCharSelection)
                {
                    if (selection.Contains(bralwerButton) && bralwerButton.isClicked())
                    {
                        hero = new HeroClasses.Brawler();
                        UpdateAbilities();
                        Log("You are now a brawler.");
                        showCharSelection = false;
                        gameStarted = true;
                        drawXP = hero.getExperience();
                        hero.ObtainItems(tempInventory, tempEquip);
                        hero.obtainStartingGear(currentLevel);
                        currentLevel.CharacterEntities.Add(hero, tempPosition);
                    }
                    if (selection.Contains(duelistButton) && duelistButton.isClicked())
                    {
                        hero = new HeroClasses.Duelist();
                        UpdateAbilities();
                        Log("You are now a duelist.");
                        showCharSelection = false;
                        drawXP = hero.getExperience();
                        gameStarted = true;
                        hero.ObtainItems(tempInventory, tempEquip);
                        hero.obtainStartingGear(currentLevel);
                        currentLevel.CharacterEntities.Add(hero, tempPosition);
                    }
                    if (selection.Contains(sorcererButton) && sorcererButton.isClicked())
                    {
                        hero = new HeroClasses.Sorcerer();
                        UpdateAbilities();
                        Log("You are now a Sorcerer.");
                        showCharSelection = false;
                        drawXP = hero.getExperience();
                        gameStarted = true;
                        hero.ObtainItems(tempInventory, tempEquip);
                        hero.obtainStartingGear(currentLevel);
                        currentLevel.CharacterEntities.Add(hero, tempPosition);
                    }
                    if (selection.Contains(magusButton) && magusButton.isClicked())
                    {
                        hero = new HeroClasses.Magus();
                        UpdateAbilities();
                        Log("You are now a Magus.");
                        showCharSelection = false;
                        gameStarted = true;
                        drawXP = hero.getExperience();
                        hero.ObtainItems(tempInventory, tempEquip);
                        hero.obtainStartingGear(currentLevel);
                        currentLevel.CharacterEntities.Add(hero, tempPosition);
                    }
                    if (selection.Contains(sentinelButton) && sentinelButton.isClicked())
                    {
                        hero = new HeroClasses.Sentinel();
                        UpdateAbilities();
                        Log("You are now a Sentinel.");
                        showCharSelection = false;
                        gameStarted = true;
                        drawXP = hero.getExperience();
                        hero.ObtainItems(tempInventory, tempEquip);
                        hero.obtainStartingGear(currentLevel);
                        currentLevel.CharacterEntities.Add(hero, tempPosition);
                    }
                    if (selection.Contains(rangerButton) && rangerButton.isClicked())
                    {
                        hero = new HeroClasses.Ranger();
                        UpdateAbilities();
                        Log("You are now a Ranger.");
                        showCharSelection = false;
                        drawXP = hero.getExperience();
                        gameStarted = true;
                        hero.ObtainItems(tempInventory, tempEquip);
                        hero.obtainStartingGear(currentLevel);
                        currentLevel.CharacterEntities.Add(hero, tempPosition);
                    }
                }

                else if (showDeathScreen)
                {
                    if (quitDeathButton.isClicked())
                    {
                        Environment.Exit(0);
                    }
                    if (restartButton.isClicked())
                    {
                        showDeathScreen = false;
                        xpList.Clear();
                        currentDungeonLevel = 0;
                        LoadSaveSlots();
                        vattacks.Clear();
                        mainMenuOpen = true;
                    }
                }

            }

            if (gameStarted)
            {
                Audio.update();
            }

            if (hero != null && !hero.isAlive() && gameStarted)
            {
                gameStarted = false;
                showDeathScreen = true;
            }
        }
Пример #30
0
        public override void finishCastandDealDamage(int heroLevel, int heroDamage, Level mapLevel, HeroClasses.Hero hero)
        {
            int damage = calculateDamage(heroLevel, heroDamage);

            cooldown    = abilityCooldown;
            wasJustCast = true;
            willBeCast  = false;
            for (int i = 0; i < castSquares.Length; i++)
            {
                drawVisualEffect(castSquares[i]);
                GameCharacter enemy = (GameCharacter)mapLevel.CharacterEntities.FindEntity(castSquares[i]);
                if (enemy != null)
                {
                    enemy.DealElementalDamage(Enums.ElementAttributes.Arcane, 7, HeroClasses.Hero.level / 2);
                    enemy.TakeDamage(damage, hero);
                }
                castSquares[i] = new IntVec(0, 0);
            }
            turnCount--;
            isActuallyFilled = false;
        }
Пример #31
0
 public override void toggledAttackEffects(HeroClasses.Hero hero)
 {
     hero.health -= HeroClasses.Hero.level;
 }
Пример #32
0
 public override void finishCastandDealDamage(int heroLevel, int heroDamage, Level mapLevel, HeroClasses.Hero hero)
 {
     damage           = calculateDamage(heroLevel, heroDamage);
     cooldown         = abilityCooldown;
     wasJustCast      = true;
     isActuallyFilled = false;
     for (int i = 0; i < castSquares.Length; i++)
     {
         GameCharacter test = (GameCharacter)mapLevel.CharacterEntities.FindEntity(castSquares[i]);
         if (test != null && !test.isFriendly)
         {
             Audio.playSound("ArrowShot");
             Engine.Engine.AddVisualAttack(hero, test, "Enemies/Attacks/Arrow", 1.0f, 1.0f, 0);
             test.TakeDamage(damage, hero);
         }
         castSquares[i] = new IntVec(0, 0);
     }
 }
Пример #33
0
 public override void finishCastandDealDamage(int heroLevel, int heroDamage, Mapping.Level mapLevel, HeroClasses.Hero hero)
 {
     if (!isActive)
     {
         Engine.Engine.Log(hero.damageBoost.ToString());
         hero.damageBoost += increase + heroLevel * 2;
         Engine.Engine.Log(hero.damageBoost.ToString());
         createdLevel = heroLevel;
         isActive     = true;
         wasJustCast  = true;
     }
     else if (isActive)
     {
         hero.damageBoost -= increase + heroLevel;
         wasJustCast       = true;
         isActive          = false;
     }
     cooldown = 0;
 }