Hey, why so aggressive? Of course I've implemented it and it works. See attached. I've replied to this thread to tell I was able to successfully implement it, so people seeking similar functionality will know that it is fully possible, and if anyone want help I'm available to assist.
On the other hand, will you be able to modify a part of code inside Party.java class, the function `addTacticalSign`, what I assume, looking at the L2JMobius code for faufrion, there is a piece of code to send SystemMessage to user that used the token, and is using `TACTICAL_SYS_STRINGS` which is array of system message ids, which is crashing the execution. It has just 5 entries [0, 2664, 2665, 2666, 2667] which are used for the 4 implemented by NCSoft tokens, and is based on the index, first token is 1, second 2 etc. New tokens I've added are 5, 6, 7, 8, which indexes are not available in that array, and because of that it's not executing this function fully, it just adds tacticalSign into the array, but not sending to the clients, because SystemMessage is before. I think you have try catch while executing any custom extension, that's why the server is not crashing and not reporting any errors, but as my tests are done if I write my code as:
Java:
player.getParty().addTacticalSign(player, tacticalSignId, creatureTarget);
It does not send `ExTacticalSign` packet to players if the tactical token is above 4, which are my custom ones, but for default hardcoded ones it work fine.
So a little hacky way is if I do:
Java:
player.getParty().getPartyMembers().forEach(member -> member.sendPacket(new ExTacticalSign(creatureTarget, tacticalSignId)));
player.getParty().addTacticalSign(player, tacticalSignId, creatureTarget);
It works property, because I send this packet first to refresh players. Anything after calling `addTacticalSign` function is never invoked, that's why I guess it's a crash error because of `TACTICAL_SYS_STRINGS` array not having enough elements inside (ArrayOutOfBoundsException).
Ideally would be if you add function that will allow to add other system message ids in there, so it will future proof adding more custom tactical signs, or at least wrap piece of code responsible for sending the SystemMessage into try catch for ArrayOutOfBoundsException so it does not stop execution of the custom extension code, after calling `addTacticalSign` invoke, and I can handle sending SystemMessage manually in the extension itself.
View attachment 7337