public override void DébuterAttaque(Combattant cible) { if (!HasAggroed) { HasAggroed = true; Soundtrack.StartSongCue("boss_battle_start"); } base.DébuterAttaque(cible); }
public void CheckCombattantHit(Combattant combattant) { foreach (ProjectileBalistique p in ScèneJeu.ProjManager.ListeProjectiles) { if (IsCollision(combattant, p) && !Combattant.Equals(combattant, p.Propriétaire) && (combattant is Monstre ^ p.Propriétaire is Monstre)) { combattant.PerdrePointsDeVie(p.Damage); p.EstEnCollision = true; break; } } }
public void CréerProjectile(Combattant combattant, Vector3 posCible, int damage, float PortéeMax) { ProjectileBalistique newProj = new ProjectileBalistique(Jeu, ScèneJeu, combattant, damage, CptProj, combattant.Position, posCible, PortéeMax, ModelName, ModelScale, Vector3.Zero); ListeProjectiles.Add(newProj); newProj.Initialize(); ++CptProj; if (combattant is Héros) { Soundtrack.StartSoundCue("proj_cast"); } }
// Constructeur normal: position, vitesse, angle theta, angle beta public ProjectileBalistique(RPG jeu, ScèneDeJeu scèneJeu, Combattant propriétaire, int damage, int id, float vitesseInitiale, float angleTheta, float angleBeta, string nomModèle, float échelleInitiale, Vector3 rotationInitiale, Vector3 positionInitiale) : base(jeu, scèneJeu, nomModèle, échelleInitiale, 1f, rotationInitiale, new Vector3(0, 0, 0), positionInitiale) { Propriétaire = propriétaire; Damage = damage; ID = id; PositionInitiale = new Vector3(positionInitiale.X, positionInitiale.Y+OFFSET_HAUTEUR_DÉPART, positionInitiale.Z); Vitesse = vitesseInitiale; AngleTheta = MathHelper.ToRadians(angleTheta); AngleBeta = MathHelper.ToRadians(angleBeta); }
// Constructeur: position initiale, position finale, portée max public ProjectileBalistique(RPG jeu, ScèneDeJeu scèneJeu, Combattant propriétaire, int damage, int id, Vector3 positionInitiale, Vector3 positionFinale, float portéeMax, string nomModèle, float échelleInitiale, Vector3 rotationInitiale) : base(jeu, scèneJeu, nomModèle, échelleInitiale, 1f, rotationInitiale, new Vector3(0, 0, 0), positionInitiale) { Propriétaire = propriétaire; Damage = damage; ID = id; PositionInitiale = new Vector3(positionInitiale.X, positionInitiale.Y+OFFSET_HAUTEUR_DÉPART, positionInitiale.Z); float portéeRéelle = (float)Math.Sqrt(((positionFinale.X - PositionInitiale.X) * (positionFinale.X - PositionInitiale.X)) + ((positionFinale.Z - PositionInitiale.Z) * (positionFinale.Z - PositionInitiale.Z))); float h = PositionInitiale.Y - positionFinale.Y; Vitesse = CalculerVitesseSelonPortéeMax(portéeMax, h, ACCÉLÉRATION_GRAVITATIONNELLE); AngleTheta = CalculerAngleThetaSelonVitesse(Vitesse, portéeRéelle, h, ACCÉLÉRATION_GRAVITATIONNELLE); AngleBeta = (float)Math.Atan2((positionFinale.X - positionInitiale.X), (positionFinale.Z - positionInitiale.Z)); }
public virtual void DébuterAttaque(Combattant cible) { ActionActuelle = Action.ATTAQUER; Cible = cible; PositionCible = PositionCoord; }