Le detaunt

Ici, les rôles s’inversent : c’est vous qui proposez votre aide au staff pour améliorer le serveur. Attention, ici on ne demande pas, on propose !
Magolorin
Gros Bill
Posts: 315
Joined: 11 May 2008, 15:36
Discord:

Le detaunt

Unread post by Magolorin »

Lors d'une MaJ, il a été dit que "- On ne peut plus utiliser le detaunt pour éviter d'aggro un mob."

C'est très bien, ça évite le bug use, mais le problème, c'est que depuis, le detaunt ne sert à rien d'autre qu'augmenter le bonus de défense (j'ai à maintes reprises repris l'aggro alors que je ne faisais que detaunt).

Je suis allé voir dans le code de DoL rev 700 et j'y ai vu ceci :

GameServer/spells/StyleTaunt.cs

Code: Select all

public override void OnDirectEffect(GameLiving target, double effectiveness)
        {
            if (target is GameNPC)
            {
                AttackData ad = Caster.TempProperties.getObjectProperty(GameLiving.LAST_ATTACK_DATA, null) as AttackData;
                if (ad != null)
                {
                    IAggressiveBrain aggroBrain = ((GameNPC)target).Brain as IAggressiveBrain;
					if (aggroBrain != null)
					{
						int aggro = Convert.ToInt32(ad.Damage * this.Spell.Value * target.AttackSpeed(ad.Weapon) / 4000);
						aggroBrain.AddToAggroList(Caster, aggro);//<------------------ C'est la procédure qui gère l'augmentation/diminution d'aggro.

						//log.Info("Taunt amount: " + aggro.ToString());
					}
                }
            }
        }
GameServer/ai/brain/IAggressiveBrain.cs est une interface. Les classes qui implémentent cette interface sont GameServer/ai/brain/StandardMobBrain.cs ou d'autres classes héritant de celle-ci.

Dans GameServer/ai/brain/StandardMobBrain.cs :

Code: Select all

		public virtual void AddToAggroList(GameLiving living, int aggroamount)
		{
(...)
				if (m_aggroTable[living] != null)
				{
					long amount = (long)m_aggroTable[living];
					amount += aggroamount;
					if (amount <= 0)
					{
						m_aggroTable.Remove(living); // <---------------- On voit clairement qu'on est enlevé de la liste d'aggro.
					}
					else
					{
						m_aggroTable[living] = amount;
					}
				}
				else
				{
					if (aggroamount > 0)
					{
						m_aggroTable[living] = (long)aggroamount;
					}
				}
Je propose donc de mettre à la place de ce "m_aggroTable.Remove(living);" une ligne qui fait prendre un poil plus d'aggro que ceux qui n'ont encore rien fait dans le groupe (ni attaque, ni assistance) : "m_aggroTable[living] = 2L;"

Je pense que cela devrait régler le problème.

Le seul risque que je vois est qu'il devienne impossible de semer les mobs. J'ai vaguement regardé mais je n'ai pas l'impression que cela sera le cas. Le plus simple serait de tester.
Magolorin
Gros Bill
Posts: 315
Joined: 11 May 2008, 15:36
Discord:

Re: Le detaunt

Unread post by Magolorin »

Serait-il possible de savoir ce qu'il en est ?

Ça ne doit pas être très long à modifier.

Si c'est pas bon, autant que je le sache que je continue à regarder.
User avatar
Ashvins
Gros Bill
Posts: 250
Joined: 12 Oct 2008, 16:38
Discord:
Contact:

Re: Le detaunt

Unread post by Ashvins »

Attends qu'un admin se penche la question.
C'est vrai qu'ils sont pas très efficaces actuellement les détaunts.
-GMA- : Gentil Animateur Motivé
Proposez-moi des animations, le brainstorming c'est mauvais pour mon imagination...
Magolorin
Gros Bill
Posts: 315
Joined: 11 May 2008, 15:36
Discord:

Re: Le detaunt

Unread post by Magolorin »

Quand puis-je espérer avoir une réponse ? Ça fait quand même plus de deux semaines là alors qu'il n'y a qu'une ligne de code à modifier.

Je résume si ça parait trop long, il suffit de changer la ligne 294 du fichier "StandardMobBrain.cs" :

Code: Select all

						m_aggroTable.Remove(living);
par

Code: Select all

						m_aggroTable[living] = 2L;
puis recompiler.

Qu'est-ce que ça change ?
Ça change qu'au lieu d'enlever de la liste d'aggro, ça laisse la personne dans la liste avec une valeur d'aggro juste supérieure à un autre membre du groupe qui n'aurait pas encore touché le mob ou soutenu un membre du groupe.
Nep
Demi-Dieu
Posts: 464
Joined: 16 Aug 2008, 22:46
Discord:
Personnages: Nep

Re: Le detaunt

Unread post by Nep »

Magolorin wrote:Quand puis-je espérer avoir une réponse ?
Quand quelqu'un qui peut s'en occuper (Dre) sera disponible, ce qui n'est pas le cas pour le moment.
Image
Nep
Demi-Dieu
Posts: 464
Joined: 16 Aug 2008, 22:46
Discord:
Personnages: Nep

Re: Le detaunt

Unread post by Nep »

Bugfix:
- Detaunt qui detauntait pas
Image
Magolorin
Gros Bill
Posts: 315
Joined: 11 May 2008, 15:36
Discord:

Re: Le detaunt

Unread post by Magolorin »

:)
Yactaff
Maître Absolu
Posts: 1581
Joined: 01 Feb 2008, 14:21
Discord:

Re: Le detaunt

Unread post by Yactaff »

bah tu vois =)
"Suis le Chemin de la véritable vertue et tu ne manqueras de rien"
Date de création Le 14/08/2005 à 01:46:34
Date de dernière connexion Le 30/07/2009 à 19:10:15
Post Reply