public override void Update() { hasUpdated = true; if (colTarget != null) { if (colTarget.canDamage) { colTarget.dealDamage(spell.getDamage(colTarget), Vector2.Normalize(colTarget.pos - owner.pos) * 5f, spell.shape.dmgCooldown); colTarget.control += spell.getControl(colTarget); colTarget.updateState(); } if (arcCount > 0) { Entity arcTarget = colTarget.GetClosest(game.entities.Where(ent => !ent.isAlly)); if (arcTarget != null) { Projectile proj = spell.shape.generateProjectiles(colPos, spell, game, arcTarget, colTarget); proj.arcCount = arcCount - 1; game.addProjectile(proj); } } } projTexture.incrementAnimation(); }
public override void onTargetCollide(Entity target) { Vector2 pushback = target.pos - pos; pushback.Normalize(); pushback *= hitForce; target.dealDamage(damage, pushback, 5); //HARDCODE COOLDOWN 5 }
public bool update(bool isPlayerTurn, Entity affected) { affected.dealDamage(affected.getMaxHP() * percentHP, false, 1); turns++; if (turns == totalTurns) { return(true); } return(false); }
/// <summary> /// Takes the target and an attack and tries to execute it. /// </summary> /// <param name="target">The entity being hit</param> /// <param name="attack">The attack being used</param> /// <returns>A tuple containing a string description of the attack with details seperated by newlines and a double of the damage dealth</String></returns> public AttackResult attackOther(Entity target, Attack attack) { List <string> log = new List <string>(); bool hit; bool crit = false; double critMult = 1.5;//TODO: store this elsewhere log.Add(this.eName + " attacks " + target.eName + "!\n"); double hitChance = Calculator.getHitProbability(attack.accuracy, target.getEvasion()); double damage = 0; if (!Calculator.checkProbability(hitChance)) { log.Add("The attack missed!"); hit = false; damage = 0; } else { hit = true; double critMod = Calculator.checkProbability(stats.critChance) ? critMult : 1; crit = critMod != 1; string hitString = critMod == 1 ? "hits" : "crits"; // switch to true to turn off attack variance if (false) { int power = attack.rollAttackPower(); print("base power: " + attack.power + "| actual power: " + power); damage = Calculator.getDamage(stats.level, getAttack(), target.getDefense(), power, critMod); } else { damage = Calculator.getDamage(stats.level, getAttack(), target.getDefense(), attack.power, critMod); } if (Calculator.checkProbability(attack.effectChance)) { Effect newEffect = (Effect)Activator.CreateInstance(attack.effect.GetType()); target.effects.Add(newEffect); newEffect.apply(target); } log.Add(eName + " " + hitString + " for " + (int)damage + " damage!"); } target.dealDamage(damage, crit, critMult); //target.hitUI(damage, crit, critMult); return(new AttackResult(log, hit, crit, damage)); }
bool Effect.update(bool isPlayerTurn, Entity affected) { turnsTaken++; if (turnsTaken > duration) { if (!affected.isDead()) { affected.dealDamage(-1 * (initialHP * percentReturned), true, 1); } return(true); } return(false); }
public void transferHealth(Entity e){ int n = e.marks[MARKS.water].getCount(); e.dealDamage(n*5); GameObject.FindWithTag("Player").GetComponent<Entity>().dealDamage(-5*n); e.marks[MARKS.water].consume(); }
public void damageAndAddFireMark(Entity e){ e.marks[MARKS.fire].add(1); e.dealDamage(20); }
public void damageAndAddWaterMark(Entity e){ Debug.Log ("Hit with water bolt."); e.marks[MARKS.water].add(1); e.dealDamage(10); }
void Effect.apply(Entity affected) { initialHP = affected.getHP(); affected.dealDamage(initialHP / 2, false, 1); }