public WeaponBase(string nName, DmgType nType, int nDmg, int nRange) { Name = nName; DamageType = nType; Damage = nDmg; Range = nRange; }
//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; } }
//--------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); }
public CMonster(string name, DmgType dmgType, EntityType type, EntityType?sec = null) { Name = name; AtkType = dmgType; Type = type; SecondaryType = sec; }
/// <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)); }
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; }
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); }
public override float GetRealDmg(float dmg, DmgType dmgType) { if (dmg > m_reduceTo) { return(m_reduceTo); } return(dmg); }
public virtual float GetRealDmg(float dmg, DmgType dmgType) { if (dmgType == DmgType.RealDmg) { return(dmg); } return(dmg - m_onHitBox.m_defence); }
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; }
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); } }
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); } }
// utility class for building monsters and skills public static bool Physical(DmgType dmg) { if (dmg == DmgType.Physical) { return(true); } else { return(false); } }
//--------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; }
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++; } } }
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()); } }
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); }
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; } }
public StatPackage(DmgType dmgType, int hp, string text) { DamageType = dmgType; HealthDmg = hp; CustomText = text; }
public Damage(int value, DmgType type) { Value = value; Type = type; }
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); }
public void SetDmgType(DmgType _value) { PhysDmg = _value; }
public Damage(double dmg, DmgType dmgType) { Dmg = dmg; DmgType = dmgType; }
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); }
public string GetDPSString() { string damageType = DmgType != DamageType.Normal ? DmgType.ToString() : ""; return(MinDPS + " - " + MaxDPS + " (+" + DmgValue.ToString() + " " + damageType + ") "); }
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)); } }
public StatPackage(DmgType dmgType, int hp) { DamageType = dmgType; HealthDmg = hp; }
public StatPackage(DmgType dmgType) { DamageType = dmgType; }
public override float GetRealDmg(float dmg, DmgType dmgType) { var raw = dmg - m_onHitBox.m_defence; return(raw * Magnification); }