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();
        }
Beispiel #2
0
        public override void onTargetCollide(Entity target)
        {
            Vector2 pushback = target.pos - pos;

            pushback.Normalize();
            pushback *= hitForce;
            target.dealDamage(damage, pushback, 5);             //HARDCODE COOLDOWN 5
        }
Beispiel #3
0
 public bool update(bool isPlayerTurn, Entity affected)
 {
     affected.dealDamage(affected.getMaxHP() * percentHP, false, 1);
     turns++;
     if (turns == totalTurns)
     {
         return(true);
     }
     return(false);
 }
Beispiel #4
0
    /// <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);
 }
Beispiel #6
0
	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();
	}
Beispiel #7
0
	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);
 }