Пример #1
0
 public WeaponBase(string nName, DmgType nType, int nDmg, int nRange)
 {
     Name       = nName;
     DamageType = nType;
     Damage     = nDmg;
     Range      = nRange;
 }
Пример #2
0
        //Vector2 ClosestIterLocation(Creature targetCreature, out bool canHit)
        //{
        //closestIterAim = targetCreature.CheckHitLocation(itersToRangeBoundary, Range, BulletSpeed, ScreenLocation, SplashRange, out canHit);

        // pilviajatus: erotuslaskufunktion tulos on MUUTOS (ei "mitä jää kun 5:stä poistaa 6", niinku ala-asteella opin) -> muutoksia voi lisätä muihin lukuihin
        #region pilvikamaa
        //int itersToHitSameDist = (int)Math.Round(Vector2.Distance(ScreenLocation, targetCreature.Location) / BulletSpeed);
        //Vector2 CreatureLocAfterInitAimTime = targetCreature.PredictMovement(itersToHitSameDist, out canHit);
        //int itersToHitLocAfterInitRange = (int)Math.Round(Vector2.Distance(ScreenLocation, CreatureLocAfterInitAimTime) / BulletSpeed);
        //if (!canHit || itersToHitLocAfterInitRange > itersToRangeBoundary)
        //{
        //    canHit = false;
        //    return Vector2.Zero;
        //}
        //closestIterAim = new Vector2();
        //if (itersToHitSameDist == itersToHitLocAfterInitRange)
        //{
        //    closestIterAim = CreatureLocAfterInitAimTime;
        //    return CreatureLocAfterInitAimTime;
        //}

        //Vector2 middleLoc = targetCreature.PredictMovement(itersToHitLocAfterInitRange, out canHit);
        //int itersToHitMiddle = (int)Math.Round(Vector2.Distance(ScreenLocation, middleLoc) / BulletSpeed);
        //if (!canHit || itersToHitMiddle > itersToRangeBoundary)
        //{
        //    canHit = false;
        //    return Vector2.Zero;
        //}
        //if (itersToHitLocAfterInitRange == itersToHitMiddle)
        //{
        //    closestIterAim = middleLoc;
        //    return middleLoc;
        //}

        //Vector2 FirstQuarterLoc = targetCreature.PredictMovement(itersToHitMiddle, out canHit);
        //int itersToHitFirstQuarter = (int)Math.Round(Vector2.Distance(ScreenLocation, FirstQuarterLoc) / BulletSpeed);
        //if (!canHit || itersToHitFirstQuarter > itersToRangeBoundary)
        //{
        //    canHit = false;
        //    return Vector2.Zero;
        //}
        //if (itersToHitMiddle == itersToHitFirstQuarter)
        //{
        //    closestIterAim = FirstQuarterLoc;
        //    return FirstQuarterLoc;
        //}

        //Vector2 FirstEightLoc = targetCreature.PredictMovement(itersToHitFirstQuarter, out canHit);
        //if (!canHit)
        //    return Vector2.Zero;
        //int itersToHitEightLoc = (int)Math.Round(Vector2.Distance(ScreenLocation, FirstEightLoc) / BulletSpeed);
        //if (itersToHitFirstQuarter == itersToHitEightLoc)
        //{
        //    closestIterAim = FirstEightLoc;
        //    return FirstEightLoc;
        //}

        //Vector2 FirstSixteenthLoc = targetCreature.PredictMovement(itersToHitEightLoc, out canHit);
        //if (!canHit)
        //    return Vector2.Zero;
        //int itersToHitSixteenthLoc = (int)Math.Round(Vector2.Distance(ScreenLocation, FirstSixteenthLoc) / BulletSpeed);

        //Vector2 PinPointedLoc = targetCreature.PredictMovement(itersToHitSixteenthLoc, out canHit);
        //int itersToHitPinpointLoc = (int)Math.Round(Vector2.Distance(ScreenLocation, PinPointedLoc) / BulletSpeed);

        //closestIterAim = PinPointedLoc;

        //closestIterAim = middleLoc;

        //closestIterAim = CreatureLocIfDistStaysSame;
        //float closestDist = Vector2.Distance(CreatureLocIfDistStaysSame, trueCreatureLoc);
        //Vector2 currentIterAim;
        //int closestIter;
        //int currentIter = itersToHitImmobile;

        //for (int i = 0; i < Math.Abs(itersToHitImmobile - iterstoHitCreatureLoc); i++)
        ////do
        //{
        //    if (iterstoHitCreatureLoc < itersToHitImmobile)
        //        currentIter--;
        //    else
        //        currentIter++;

        //    currentIterAim = targetCreature.PredictMovement(currentIter);

        //    if (Vector2.Distance(closestIterAim, CreatureLocIfDistStaysSame) < closestDist)
        //    {
        //        closestIterAim = currentIterAim;
        //        closestDist = Vector2.Distance(closestIterAim, CreatureLocIfDistStaysSame);
        //        closestIter = currentIter;
        //    }

        //} //while (currentIter

        //Vector2 predictedAim = targetCreature.PredictMovement(iterstoHitCreatureLoc);
        //int middle = itersToHitImmobile + (iterstoHitCreatureLoc - itersToHitImmobile) / 2;
        //Vector2 middleAim = targetCreature.PredictMovement(middle);
        //int itersFirstQuarter = (int)Math.Round(Vector2.Distance(ScreenLocation, middleAim) / BulletSpeed);
        //aimLocation = targetCreature.PredictMovement(middle);
        #endregion
        //return closestIterAim;
        //}

        public void Upgrade() //-------rahansiirto muissa paikoissa (HUD.Drawissa (!) kahesti) jotta maped-ilmaisuus
        {
            if (UpgradeLvl != UpgLvl.Max)
            {
                UpgradeLvl++;
                towerTypeIdx += 6;
                Tower exampleTower = HexMap.ExampleTowers[towerTypeIdx];
                Name          = exampleTower.Name;
                Textures      = exampleTower.Textures;
                BulletSpeed   = exampleTower.BulletSpeed;
                bulletTexture = exampleTower.bulletTexture;
                Cost          = exampleTower.Cost;
                Dmg           = exampleTower.Dmg;
                DmgType       = exampleTower.DmgType;
                //Element //---------------------------------------------------------------------------säilyykö vanhat elems?
                //firerateCounter //-------------------------------------------------------------------mielenkiintois. Vrt. Kingdom Rush jossa resetoituu
                FireRate       = exampleTower.FireRate;
                InitRange      = exampleTower.InitRange;
                radiusTextures = exampleTower.radiusTextures;
                Range          = exampleTower.Range;
                slow           = exampleTower.slow;
                Symbol         = TowerSymbols[towerTypeIdx];
                BuildTime      = exampleTower.BuildTime;
                SplashRange    = exampleTower.SplashRange;
                //for (int i = 0; i < Bullets.Count; i++)
                //{
                //    Bullets[i].dmg = exampleTower.Dmg;
                //    Bullets[i].speed = exampleTower.BulletSpeed;
                //}
                ParentMap.Layout[MapCoord.Y, MapCoord.X] = Symbol;

                FireRateSec = 1000 / (FireRate * (float)ParentMap.ParentGame.TargetElapsedTime.TotalMilliseconds);
                DPS         = Dmg * FireRateSec;
            }
        }
Пример #3
0
        //--------Constructors------------------------------
        public Bullet(Creature targetCreature,
                      float speed,
                      float dmg,
                      DmgType dmgType,
                      float splashRange,
                      float[] slow,
                      GeneSpecs elems,
                      Vector2 originPoint,
                      Texture2D texture,
                      HexMap currMap)
        {
            this.targetCreature = targetCreature;
            this.speed          = speed;
            this.dmg            = dmg;
            DmgType             = dmgType;
            this.slow           = slow;
            ElemSpecs           = elems;
            this.originPoint    = originPoint;
            this.texture        = texture;

            //active = true;
            textureOrigin = new Vector2(texture.Width / 2, texture.Height / 2);

            //Rnd = targetCreature.ParentMap.rnd;
            //rndWobble = new Vector2((float)(Rnd.NextDouble() - 0.5), (float)(Rnd.NextDouble() - 0.5));

            //ShootAt(targetCreature);

            SplashRange = splashRange;
            ParentMap   = currMap;

            ExplosionAnim = new AnimSprite(ParentMap.ParentGame.Content.Load <Texture2D>("MetroPlos"), Point.Zero, 1, 5);
        }
Пример #4
0
 public CMonster(string name, DmgType dmgType, EntityType type, EntityType?sec = null)
 {
     Name          = name;
     AtkType       = dmgType;
     Type          = type;
     SecondaryType = sec;
 }
Пример #5
0
        /// <summary>
        /// Handles taking damage from another entity; use nDirect true to directly damage health or false to obey restrictions
        /// </summary>
        public virtual bool TakeDmg(LiveEntity src, int nType, int nDmg, bool nDirect)
        {
            // Handle damageEnt specific code like changing targets on damage in derived classes
            DmgType dmgType = (DmgType)nType;

            if (dmgType == DmgType.STAMINA)
            {
                return(Stats.ReduceStamina(nDmg));
            }
            else if (dmgType == DmgType.ARMOR)
            {
                return(Stats.ReduceArmor(nDmg));
            }


            int  modDmg = nDmg;            // modDmg will change if armor takes any of the hit, leaving less to hit health
            bool armorCheck;

            if (!nDirect)
            {
                if (Stats.Armor > 0)
                {
                    int armorLast = Stats.Armor;
                    armorCheck = Stats.ReduceArmor((int)(modDmg * ARMOR_ABSORB));
                    if (armorCheck)
                    {
                        modDmg = modDmg - (armorLast - Stats.Armor);
                    }
                }
            }

            return(Stats.ReduceHealth(modDmg));
        }
Пример #6
0
    public void DeductBlood(int totalDmg, DmgType type)
    {
        switch (type)
        {
        case DmgType.Normal:
            self.Manager.SpawnDamageText(totalDmg, self);
            break;

        case DmgType.Block:
            self.Manager.SpawnBlockText(totalDmg, self);
            break;

        case DmgType.Critical:
            self.Manager.SpawnCriticalText(totalDmg, self);
            break;

        case DmgType.Miss:
            self.Manager.SpawnMissText(self);
            return;

            break;

        case DmgType.Heal:
            self.Manager.SpawnAddHealText("+", totalDmg, self);
            break;
        }
        self.Hp -= totalDmg;
    }
Пример #7
0
 public Weapon(string _name, DmgType _dmgType, int _physDmgAmt, EleDmgType _eleDmgType, int _eleDmgAmt, int _range) : base()
 {
     Name = _name;
     Id = (double)UnityEngine.Random.Range(0, 1000000000);
     Range = _range;
     EleDmgAmt = _eleDmgAmt;
     PhysDmgAmt = _physDmgAmt;
     PhysDmg = _dmgType;
     EleDmg = _eleDmgType;
     if (Range < 2)
     {
         WeapType = WeaponType.Low;
     }
     else if (Range < 4)
     {
         WeapType = WeaponType.Medium;
     }
     else if (Range < 10)
     {
         WeapType = WeaponType.High;
     }
     else if (Range < 30)
     {
         WeapType = WeaponType.RLow;
     }
     else
     {
         WeapType = WeaponType.RHigh;
     }
     Id = Database.WeaponDbInsert(this);
 }
Пример #8
0
 public override float GetRealDmg(float dmg, DmgType dmgType)
 {
     if (dmg > m_reduceTo)
     {
         return(m_reduceTo);
     }
     return(dmg);
 }
Пример #9
0
 public virtual float GetRealDmg(float dmg, DmgType dmgType)
 {
     if (dmgType == DmgType.RealDmg)
     {
         return(dmg);
     }
     return(dmg - m_onHitBox.m_defence);
 }
Пример #10
0
 public StatPackage(DmgType dmgType, int hp, int strength, int armor, int precision, int magic, string text)
 {
     DamageType    = dmgType;
     HealthDmg     = hp;
     StrengthDmg   = strength;
     ArmorDmg      = armor;
     PrecisionDmg  = precision;
     MagicPowerDmg = magic;
     CustomText    = text;
 }
Пример #11
0
 public static bool Magic(DmgType dmg)
 {
     if (dmg == DmgType.Fire || dmg == DmgType.Water || dmg == DmgType.Air || dmg == DmgType.Earth || dmg == DmgType.Psycho)
     {
         return(true);
     }
     else
     {
         return(false);
     }
 }
Пример #12
0
 public Weapon(string _name = "Random Weapon") : base(_name)
 {
     if (_name != "Monster Sword")
     {
         Range = UnityEngine.Random.Range(1, 20);
         Array values = EleDmgType.GetValues(typeof(EleDmgType));
         System.Random random = new System.Random();
         EleDmg = (EleDmgType)values.GetValue(random.Next(values.Length));
         values = DmgType.GetValues(typeof(DmgType));
         random = new System.Random();
         PhysDmg = (DmgType)values.GetValue(random.Next(values.Length));
         if (EleDmg != EleDmgType.None)
         {
             EleDmgAmt = UnityEngine.Random.Range(0, 100);
         }
         else
         {
             EleDmgAmt = 0;
         }
         PhysDmgAmt = UnityEngine.Random.Range(0, 60);
         if (Range < 2)
         {
             WeapType = WeaponType.Low;
         }
         else if (Range < 4)
         {
             WeapType = WeaponType.Medium;
         }
         else if (Range < 10)
         {
             WeapType = WeaponType.High;
         }
         else if (Range < 30)
         {
             WeapType = WeaponType.RLow;
         }
         else
         {
             WeapType = WeaponType.RHigh;
         }
         Id = Database.WeaponDbInsert(this);
     }
     else
     {
         Name = _name;
         Range = 1;
         EleDmg = EleDmgType.None;
         PhysDmg = DmgType.Slashing;
         EleDmgAmt = 0;
         PhysDmgAmt = UnityEngine.Random.Range(10, 26);
         WeapType = WeaponType.Low;
         Id = Database.WeaponDbInsert(this);
     }
 }
Пример #13
0
 // utility class for building monsters and skills
 public static bool Physical(DmgType dmg)
 {
     if (dmg == DmgType.Physical)
     {
         return(true);
     }
     else
     {
         return(false);
     }
 }
Пример #14
0
        //--------Constructors------------------------------
        public Tower(char symbol, string name, Point mapCoord, float range, float firerate, Texture2D[] textures, GeneSpecs geneSpecs, Texture2D bulletTexture, float bulletSpeed, short dmg, DmgType dmgType, int splashRange, float[] slow, int cost, int buildTime, bool isExample)
        {
            ParentMap = CurrentGame.currentMap;
            Name      = name;
            Symbol    = symbol;
            MapCoord  = mapCoord;
            //ScreenLocation = map.ToScreenLocation(mapCoord);

            /*this.screenLocation = new Vector2((float)(mapLocation[0] * map.stackedWidth + map.drawPos.X),
             *                                (float)(mapLocation[1] * map.TileHeight + mapLocation[0] % 2 * (map.TileHeight / 2)) + map.drawPos.Y);*/
            Range          = range;
            InitRange      = range;
            FireRate       = firerate;
            BulletSpeed    = bulletSpeed;
            radiusTextures = new Texture2D[2];
            //this.radiusTextures[0] = radiusTexture;
            MakeRadiusCircle();
            ShowRadius = false;
            Textures   = textures;
            //this.angleOffset = angleOffset;
            //angle = (float)Math.PI * 1.5f;
            texOrigin          = new Vector2(textures[0].Width / 2, textures[0].Height / 2);
            this.bulletTexture = bulletTexture;
            Dmg        = dmg;
            DmgType    = dmgType;
            this.slow  = slow;
            Cost       = cost;
            BuildTime  = buildTime;
            buildTimer = buildTime;
            IsExample  = isExample;
            if (!IsExample)
            {
                buildFinishedCounter = buildFinishedInit; //---------------------------ist dies der rihl leif?
            }
            Built        = false;
            Bullets      = new List <Bullet>(10);
            towerTypeIdx = Array.IndexOf(TowerSymbols, symbol);
            towerBranch  = towerTypeIdx % 6;
            SplashRange  = splashRange;

            CreaturesInRange = new List <Creature>();
            ColoredInRange   = new List <Creature>();
            PossibleTargets  = new List <Creature>();

            GeneSpecs = geneSpecs;
            GeneSpecs.BaseTiers[Math.Max((int)GeneSpecs.GetPrimaryElem() - 1, 0)] = (int)(GeneSpecs.GetPrimaryElemStrength() * 100) / GeneSpecs.TierSize;

            FireRateSec = 1000 / (firerate * (float)ParentMap.ParentGame.TargetElapsedTime.TotalMilliseconds);
            DPS         = dmg * FireRateSec;
        }
Пример #15
0
 public void CreateDmgTxt(string txt, Transform location, DmgType dmgType, bool Critic, bool player)  //Tworzenie napisów z randomową lokacją na ekranie niedaleko gracza
 {
     if (Critic)
     {
         if (player)
         {
             DmgTxt  instance  = Instantiate(PlayerCriticTxtPrefab);
             Vector2 screenPos = new Vector2(location.position.x + Random.Range(Array[Counter], Array[Counter * 2]), location.position.y + Random.Range(Array[Counter], Array[Counter * 2])); instance.transform.SetParent(transform.parent);
             instance.transform.position = screenPos;
             instance.SetTxt(txt, dmgType, true);
             Timer = TimerCD;
             Counter++;
         }
         else
         {
             DmgTxt  instance  = Instantiate(CriticTxtPrefab);
             Vector2 screenPos = new Vector2(location.position.x + Random.Range(Array[Counter], Array[Counter * 2]), location.position.y + Random.Range(Array[Counter], Array[Counter * 2])); instance.transform.SetParent(transform.parent);
             instance.transform.position = screenPos;
             instance.SetTxt(txt, dmgType, true);
             Timer = TimerCD;
             Counter++;
         }
     }
     else
     {
         if (player)
         {
             DmgTxt  instance  = Instantiate(PlayerdmgTxtPrefab);
             Vector2 screenPos = new Vector2(location.position.x + Random.Range(Array[Counter], Array[Counter * 2]), location.position.y + Random.Range(Array[Counter], Array[Counter * 2])); instance.transform.SetParent(transform.parent);
             instance.transform.position = screenPos;
             instance.SetTxt(txt, dmgType, false);
             Timer = TimerCD;
             Counter++;
         }
         else
         {
             DmgTxt  instance  = Instantiate(dmgTxtPrefab);
             Vector2 screenPos = new Vector2(location.position.x + Random.Range(Array[Counter], Array[Counter * 2]), location.position.y + Random.Range(Array[Counter], Array[Counter * 2])); instance.transform.SetParent(transform.parent);
             instance.transform.position = screenPos;
             instance.SetTxt(txt, dmgType, false);
             Timer = TimerCD;
             Counter++;
         }
     }
 }
Пример #16
0
    public void TakeDamage(int amount, DmgType type)
    {
        switch (type)
        {
        case DmgType.Air:
            if (airRes > .8f)
            {
                airRes = .8f;
            }
            Health -= amount * (1 - airRes);
            break;

        case DmgType.Fire:
            if (fireRes > .8f)
            {
                fireRes = .8f;
            }
            Health -= amount * (1 - fireRes);
            break;

        case DmgType.Physical:
            if (armor > .8f)
            {
                armor = .8f;
            }
            Health -= amount * (1 - armor);
            break;

        case DmgType.Water:
            if (waterRes > .8f)
            {
                waterRes = .8f;
            }
            Health -= amount * (1 - waterRes);
            break;
        }
        //animPlayer.SetBool("Hurt", true);
        if (health <= 0 && alive)
        {
            StartCoroutine(Death());
        }
    }
Пример #17
0
        public Bullet(Vector2 target,
                      float speed,
                      float dmg,
                      DmgType dmgType,
                      float[] slow,
                      Vector2 originPoint,
                      Texture2D texture)
        {
            this.speed       = speed;
            this.dmg         = dmg;
            DmgType          = dmgType;
            this.slow        = slow;
            this.originPoint = originPoint;
            this.texture     = texture;

            //active = true;
            textureOrigin = new Vector2(texture.Width / 2, texture.Height / 2);

            Rnd = targetCreature.ParentMap.rnd;
            //ShootAt(target);
        }
Пример #18
0
    public void SetTxt(string txt, DmgType dmgType, bool critic)   //ustawienie wyswietlanego tekstu ze względu na typ obrażeń
    {
        Color color = Color.white;

        color = dmgColor[(int)dmgType];

        if (critic)
        {
            dmgTxt.color = color;
            Debug.Log("change color");
            dmgTxt.text = txt;
            Debug.Log((int)dmgType);

            audioSource.clip = audioClip[(int)dmgType];
            audioSource.Play();
        }
        else
        {
            dmgTxt.color = color;
            Debug.Log("change color");
            dmgTxt.text = txt;
        }
    }
Пример #19
0
 public StatPackage(DmgType dmgType, int hp, string text)
 {
     DamageType = dmgType;
     HealthDmg  = hp;
     CustomText = text;
 }
Пример #20
0
 public Damage(int value, DmgType type)
 {
     Value = value;
     Type  = type;
 }
Пример #21
0
 public Weapon(int id, string _name, DmgType _dmgType, int _physDmgAmt, EleDmgType _eleDmgType, int _eleDmgAmt, int _range, int _dura, int _weight)
     : base(_name, _dura, _weight)
 {
     Id = id;
     Range = _range;
     EleDmgAmt = _eleDmgAmt;
     PhysDmgAmt = _physDmgAmt;
     PhysDmg = _dmgType;
     EleDmg = _eleDmgType;
     if (Range < 2)
     {
         WeapType = WeaponType.Low;
     }
     else if (Range < 4)
     {
         WeapType = WeaponType.Medium;
     }
     else if (Range < 10)
     {
         WeapType = WeaponType.High;
     }
     else if (Range < 30)
     {
         WeapType = WeaponType.RLow;
     }
     else
     {
         WeapType = WeaponType.RHigh;
     }
     //Id = Database.WeaponDbInsert(this);
 }
Пример #22
0
 public void SetDmgType(DmgType _value) { PhysDmg = _value; }
Пример #23
0
 public Damage(double dmg, DmgType dmgType)
 {
     Dmg     = dmg;
     DmgType = dmgType;
 }
Пример #24
0
    public override string ToolTip()
    {
        //string minDPS = ((int)(AttackSpeed * (MaxDamage*DmgVariance))).ToString ();
        //string maxDPS = ((int)(AttackSpeed * MaxDamage)).ToString ();

        string numBuffs = "";

        if (this.NumberOfBuffs() > 0)
        {
            numBuffs = "\n" + GetBuffsString();
        }
        else
        {
            numBuffs = "";
        }


        //Format wording of proc correctly
        string procDesc = "";

        switch (Proc)
        {
        case ProcType.GainLifeOnHit:
            procDesc = "\n" + string.Format("Gain {0} health per physical attack", ProcModifier);
            break;

        case ProcType.GainManaOnHit:
            procDesc = "\n" + string.Format("Gain {0} mana per physical attack", ProcModifier);
            break;

        case ProcType.Knockback:
            procDesc = "\n" + string.Format("Has a {0}% chance to cause knockback", (ProcModifier * 100).ToString("F2"));
            break;

        case ProcType.None:
            break;

        case ProcType.Poison:
            procDesc = "\n" + string.Format("Has a {0}% chance to cause poison", (ProcModifier * 100).ToString("F2"));
            break;

        case ProcType.Slow:
            procDesc = "\n" + string.Format("Has a {0}% chance to slow targets attack speed", (ProcModifier * 100).ToString("F2"));
            break;

        case ProcType.ConvertToLife:
            procDesc = "\n" + string.Format("Converts {0}% of damage dealth to health", (ProcModifier * 100).ToString("F2"));
            break;

        case ProcType.ConvertToMana:
            procDesc = "\n" + string.Format("Converts {0}% of damage dealth to mana.", (ProcModifier * 100).ToString("F2"));
            break;

        case ProcType.Stun:
            procDesc = "\n" + string.Format("Has a {0}% chance to stun your target", (ProcModifier * 100).ToString("F2"));
            break;

        case ProcType.GainEnergyOnHit:
            procDesc = "\n" + string.Format("Gain {0} energy per physical attack", ProcModifier.ToString("0.00"));
            break;

        case ProcType.ConvertToEnergy:
            procDesc = "\n" + string.Format("Converts {0}% of damage dealth to energy", (ProcModifier * 100).ToString("F2"));
            break;
        }

        string moreStats = "";

        if (this.Proc != ProcType.None || this.CritChance != 0 || this.CritDamage > 0.0f)
        {
            if (this.CritChance != 0)
            {
                moreStats += "\n" + "+ " + (CritChance * 100).ToString("0") + "% Critical Hit Chance";
            }
            if (this.CritDamage > 0.0f)
            {
                moreStats += "\n" + "Critical hits deal " + ((2.0 + CritDamage) * 100).ToString("0") + "% damage";
            }
            if (this.Proc != ProcType.None)
            {
                moreStats += procDesc;
            }
        }
        string elementalDmg = "";

        if (this.DmgValue != 0)
        {
            elementalDmg += "+ " + DmgValue + " " + DmgType.ToString() + " damage" + "\n";
        }

        string socketBuffs = "";

        if (EquippedSockets.Count > 0)
        {
            socketBuffs += "\n \n" + "(" + UsedSockets.ToString() + ") Sockets: \n";
        }
        foreach (SocketItem socket in EquippedSockets)
        {
            socketBuffs += socket.GetBuffsString();
        }
        socketBuffs += "\n";

        //Set correct tooltype to corresponding type
        return("Damage: " + (int)(MaxDamage * DmgVariance) + " - " + MaxDamage + "\n" +
               elementalDmg +
               "(DPS: " + MinDPS.ToString() + "-" + MaxDPS.ToString() + ")" + "\n" +
               "Attacks Per Second: " + AttackSpeed.ToString("0.00") +
               numBuffs +
               socketBuffs +
               moreStats);
    }
Пример #25
0
    public string GetDPSString()
    {
        string damageType = DmgType != DamageType.Normal ? DmgType.ToString() : "";

        return(MinDPS + " - " + MaxDPS + " (+" + DmgValue.ToString() + " " + damageType + ") ");
    }
Пример #26
0
        public static Damage CalDamage(double src, TypeCompacity comp, double ad, double ap, DmgType dmgType)
        {
            switch (dmgType)
            {
            case DmgType.IGNORED:
                return(new Damage(0, dmgType));

            case DmgType.EXECUTION:
                if (comp != TypeCompacity.NO_EFFECT)
                {
                    return(new Damage(999999, DmgType.EXECUTION));
                }
                else
                {
                    return(new Damage(0, DmgType.IGNORED));
                }

            case DmgType.TRUE_DAMAGE:
                return(new Damage(src, dmgType));

            case DmgType.ATTACK_DAMAGE:
                var d = src * GetCompCoe(comp) + ad + ap / 10;
                return(new Damage(d, dmgType));

            case DmgType.ABILITY_POWER:
                var d2 = src * GetCompCoe(comp) + ap + ad / 10;
                return(new Damage(d2, dmgType));

            default:
                return(new Damage(src, dmgType));
            }
        }
Пример #27
0
 public StatPackage(DmgType dmgType, int hp)
 {
     DamageType = dmgType;
     HealthDmg  = hp;
 }
Пример #28
0
 public StatPackage(DmgType dmgType)
 {
     DamageType = dmgType;
 }
Пример #29
0
    public override float GetRealDmg(float dmg, DmgType dmgType)
    {
        var raw = dmg - m_onHitBox.m_defence;

        return(raw * Magnification);
    }