public void newLevel() { effetUniteLevelUp.Play(); Level++; if ((int)(defense * byLevelAdd) == defense) { defense++; } else { defense = (int)(defense * byLevelAdd); } if ((int)(defenseMagique * byLevelAdd) == defenseMagique) { defenseMagique++; } else { defenseMagique = (int)(defenseMagique * byLevelAdd); } dommages = (int)(dommages * byLevelAdd); puissance = (int)(puissance * byLevelAdd); vitesse = vitesse * byLevelAdd; manaMax = (int)(manaMax * byLevelAdd); vieMax = (int)(vieMax * byLevelAdd); manaRegen = (int)(manaRegen / byLevelAdd); }
public virtual void Begin(Vector2 p, Unite unit) { LastCast = (float)Map.gametime.TotalGameTime.TotalMilliseconds; Activated = true; TickCurrent = 0; if (sonSort != null) { sonSort.Play(); } unite.Mana -= CoutMana; Point = p; UniteCible = unit; }
public virtual void Attaquer(Unite unite) { float calcul = Outil.DistanceUnites(this, unite) - (26 * (unite.largeurPhysique + this.largeurPhysique) / 2); if (calcul >= Portee * Map.TailleTiles.X) { Suivre(unite); } else { if (CanAttack) { if (!uniteAttacked.isInvisible) { OlduniteAttacked = uniteAttacked; ObjectifListe.Clear(); body.LinearVelocity = Vector2.Zero; // Fait regarder l'unité vers l'unité attaqué if (Animation.Count == 0) { FlipH = false; float angle = Outil.AngleUnites(this, unite); if (angle >= Math.PI / 4 && angle <= 3 * Math.PI / 4) { direction = Direction.Haut; } else if (angle >= -3 * Math.PI / 4 && angle <= -Math.PI / 4) { direction = Direction.Bas; } else if (angle >= -Math.PI / 4 && angle <= Math.PI / 4) { direction = Direction.Gauche; FlipH = true; } else { direction = Direction.Droite; } } if (Map.gametime.TotalGameTime.TotalMilliseconds - LastAttack > Vitesse_Attaque * 1000) // Si le cooldown est fini { LastAttack = (float)Map.gametime.TotalGameTime.TotalMilliseconds; // On met à jour "l'heure de la dernière attaque" // projectile if (IsRanged) // Si l'unité attaque à distance, on creer un projectile, sinon on attaque direct { Projectile = new Projectile(this, uniteAttacked); } else { if (Dommages - unite.Defense <= 0) // Si armure > Dommages , degats = 1 { // On ne prend en compte les degats que si on est en local autrement ils sont effectués via le serveur unite.Vie -= 1; } else { unite.Vie -= Dommages - unite.Defense; } } // son effetUniteAttaque.Play(); // Fait regarder l'unité vers l'unité attaqué et l'anime AnimationCurrent = AnimationLimite; FlipH = false; float angle = Outil.AngleUnites(this, unite); if (angle >= Math.PI / 4 && angle <= 3 * Math.PI / 4) { direction = Direction.Haut; Animation = packAnimation.AttaquerHaut(); } else if (angle >= -3 * Math.PI / 4 && angle <= -Math.PI / 4) { direction = Direction.Bas; Animation = packAnimation.AttaquerBas(); } else if (angle >= -Math.PI / 4 && angle <= Math.PI / 4) { direction = Direction.Gauche; FlipH = true; Animation = packAnimation.AttaquerDroite(); } else { direction = Direction.Droite; Animation = packAnimation.AttaquerDroite(); } } } } } }
protected virtual void TestMort(List <Effet> effets) // aussi la mana { if (Vie <= 0 && !Mort) { foreach (Joueur j in PackMap.joueurs) { Vie = 0; Mort = true; if (j.champion.XP + (XPUnite / PackMap.joueurs.Count) < j.champion.Level * 1000) { j.champion.XP += XPUnite / PackMap.joueurs.Count; } else { j.champion.XP = j.champion.XP + (XPUnite / PackMap.joueurs.Count) - j.champion.Level * 1000; j.champion.newLevel(); } } effetUniteDeath.Play(); effetUniteAttaque.Dispose(); effets.Add(new Effet(Sprite, ConvertUnits.ToDisplayUnits(body.Position), packAnimation.Mort(this), Tiles, 1)); Map.world.RemoveBody(body); Drop(); // Reseau bool plein = true; for (int i = 0; i < Serveur.LastDead.Length; i++) { if (Serveur.LastDead[i] == 0) { plein = false; break; } } if (plein) { for (int j = 0; j < Serveur.LastDead.Length; j++) { Serveur.LastDead[j] = 0; } } for (int i = 0; i < Serveur.LastDead.Length; i++) { if (Serveur.LastDead[i] == 0) { Serveur.LastDead[i] = id; break; } } // Interface De GameOver pour le joueur if (isAChamp) // Si un champion se fait tuer { foreach (Joueur j in PackMap.joueurs) // On regarde si c'est le joueur local { j.Interface.Lost = true; } } } // TEST MANA if (Mana < 0) { Mana = 0; } }