示例#1
0
        private void damageEnemyIfInRange(IntVec[] hitBox, Level mapLevel, GameCharacter enemy, Weapon weapon, bool playAttack)
        {
            bool found = false;

            if (weapon != null)
            {
                string[] name = weapon.Name.Split();
                for (int i = 0; i < hitBox.Length && !found; i++)
                {
                    IntVec test = mapLevel.CharacterEntities.FindPosition(enemy);
                    if (hitBox[i].Equals(mapLevel.CharacterEntities.FindPosition(enemy)))
                    {
                        int weaponDamage = weapon.Damage + damageBoost + currentlyEquippedItems.getAccessoryDamageIncrease();
                        weaponDamage = (weaponDamage < 1) ? 1 : weaponDamage;
                        found        = true;
                        int damage = (!visible) ? (int)(1.5 * (weaponDamage)) : weaponDamage;
                        if (playAttack)
                        {
                            if (weapon.IsLegendary)
                            {
                                if (name[0] == "Blade" || name[0] == "Executioner" || name[0] == "Bloodthirster" || name[0] == "Pale" || name[0] == "Anarchy" || name[0] == "Judgement")
                                {
                                    Engine.Engine.AddVisualAttack(enemy, "Hero/LegendarySwordSlash", .25f, 2.0f, .15f);
                                    Audio.playSound("swordAttack");
                                }
                                else if (name[0] == "Kris")
                                {
                                    Engine.Engine.AddVisualAttack(enemy, "Hero/LegendaryDaggerSlash", .25f, 2.0f, .15f);
                                    Audio.playSound("DaggerStab");
                                }
                                else if (name[0] == "The")
                                {
                                    Engine.Engine.AddVisualAttack(enemy, "Hero/LegendaryClawSlash", .25f, 2.0f, .15f);
                                    Audio.playSound("swordAttack");
                                }
                                else if (name[0] == "40k")
                                {
                                    Audio.playSound("HammerSmash");
                                    Engine.Engine.AddVisualAttack(enemy, "Hero/LegendaryHammerSmash", .25f, 2.0f, .15f);
                                }
                                else if (name[0] == "Condemned" || name[0] == "Retribution")
                                {
                                    Audio.playSound("ArrowShot");
                                    Engine.Engine.AddVisualAttack(this, enemy, "Enemies/Attacks/Arrow", .25f, 1.0f, .15f);
                                }
                                else if (name[0] == "Kunai" || name[0] == "Heart")
                                {
                                    Engine.Engine.AddVisualAttack(this, enemy, weapon.GetTexture());
                                }
                                else if (name[0] == "Ebony" || name[0] == "Ivory")
                                {
                                    Audio.playSound("Gunshot", .5f);
                                    Engine.Engine.AddVisualAttack(this, enemy, "Hero/Bullet", .5f, .5f, 0);
                                }
                                else if (name[0] == "Bloodwing")
                                {
                                    Audio.playSound("SniperShot");
                                    Engine.Engine.AddVisualAttack(this, enemy, "Hero/Bullet", .5f, .5f, 0);
                                }
                                else
                                {
                                    Engine.Engine.AddVisualAttack(this, enemy, "Hero/MageAttack", .5f, 1.0f, .03f);
                                }
                            }
                            else if (!checkForWeaponType(0, enemy, name, weapon))
                            {
                                checkForWeaponType(1, enemy, name, weapon);
                            }
                        }
                        for (int j = 0; j < abilities.Length; j++)
                        {
                            if (abilities[j] != null && abilities[j].type == AbilityTypes.Toggle)
                            {
                                ToggleAbility toggle = (ToggleAbility)abilities[j];
                                if (toggle.isActive)
                                {
                                    toggle.toggledAttackEffects(this);
                                }
                            }
                        }
                        enemy.TakeDamage(damage, this);
                        invisibilityTurnCount = 0;
                        turnOver = true;
                    }
                }
            }
        }