Mobstatus tooltip update on controller interchanges

Fixed mob statuses being unexpectedly revoked for the new controller at transition time.
This commit is contained in:
ronancpl
2019-05-04 19:40:09 -03:00
parent e70215eb9d
commit 402d7b359d
2 changed files with 15 additions and 6 deletions

View File

@@ -1849,4 +1849,7 @@ Corrigido caso de dupe com itens ao serem colocados no storage.
Adicionado sistema de "qualquer NPC scriptável", com apoio do GabrielSin.
Adicionado server flag para checagem de IP's ao logar jogadores.
Corrigido mobskills não sendo devidamente aplicados devido a um deslize anterior que tentaria aplicar indevidamente 2x "uso de skill" (uma das vezes deveria ser somente checagem de rotina).
Corrigido puppets de arqueiros interrompendo mob statuses para o dono ao serem lançados em campo.
Corrigido puppets de arqueiros interrompendo mob statuses para o dono ao serem lançados em campo.
04 Maio 2019,
Corrigido visão de mob statuses sendo interrompido para o novo controlador ao realizar troca de controladores.

View File

@@ -1886,7 +1886,7 @@ public class MapleMonster extends AbstractLoadedMapleLife {
}
this.aggroUpdatePuppetVisibility();
newController.announce(MaplePacketCreator.controlMonster(this, false, immediateAggro));
aggroMonsterControl(newController.getClient(), this, immediateAggro);
newController.controlMonster(this);
}
}
@@ -2054,7 +2054,7 @@ public class MapleMonster extends AbstractLoadedMapleLife {
else if (chrController != null) {
chrController.announce(MaplePacketCreator.stopControllingMonster(this.getObjectId()));
chrController.announce(MaplePacketCreator.controlMonster(this, false, true));
aggroMonsterControl(chrController.getClient(), this, true);
}
*/
} else {
@@ -2063,6 +2063,13 @@ public class MapleMonster extends AbstractLoadedMapleLife {
}
}
private static void aggroMonsterControl(MapleClient c, MapleMonster mob, boolean immediateAggro) {
c.announce(MaplePacketCreator.controlMonster(mob, false, immediateAggro));
// thanks BHB for noticing puppets disrupting mobstatuses for bowmans
mob.announceMonsterStatus(c);
}
private void aggroRefreshPuppetVisibility(MapleCharacter chrController, MapleSummon puppet) {
// lame patch for client to redirect all aggro to the puppet
@@ -2080,8 +2087,7 @@ public class MapleMonster extends AbstractLoadedMapleLife {
MapleClient c = chrController.getClient();
for (MapleMonster mob : puppetControlled) {
chrController.announce(MaplePacketCreator.controlMonster(mob, false, mob.isControllerHasAggro()));
mob.announceMonsterStatus(c); // thanks BHB for noticing puppets disrupting mobstatuses for bowmans
aggroMonsterControl(c, mob, mob.isControllerKnowsAboutAggro());
}
chrController.announce(MaplePacketCreator.spawnSummon(puppet, false));
}
@@ -2116,7 +2122,7 @@ public class MapleMonster extends AbstractLoadedMapleLife {
controllerHasPuppet = false;
chrController.announce(MaplePacketCreator.stopControllingMonster(MapleMonster.this.getObjectId()));
chrController.announce(MaplePacketCreator.controlMonster(MapleMonster.this, false, MapleMonster.this.isControllerHasAggro()));
aggroMonsterControl(chrController.getClient(), MapleMonster.this, MapleMonster.this.isControllerHasAggro());
}
} finally {
availablePuppetUpdate = true;