Actually we have only a very basic support for alliances, everything we have is 2 guildstone functions: WEALLIANCE and THEYALLIANCE. The idea is improve this support with everything we need, adding an internal basic support to allow us use it on any guild system
PS: everything here is just a initial idea, there's many things that can be improved
1) The alliance engine:
An alliance is a
named group of guilds, with a guild leader. So the engine needs 3 parts:
-something to group guilds
-something to select the guild leader
-something to rename the alliance
To make this we need something like a basic LIST clone:
SERV.ALLIANCE.x = guild leader UID, alliance name
SERV.ALLIANCE.0 = 0400123, my alliance name
SERV.ALLIANCE.1 = 0400324, lol
SERV.ALLIANCE.2 = 0400418, something
To add/remove guilds from alliances, guildstones will have a new ALLIANCE property, using ALLIANCE=2 will add it on alliance 2 and ALLIANCE="" (or -1) will remove the guild from the alliance. All guildstones with ALLIANCE=2 will be on the same alliance "something", and the guild UID 0400418 is the alliance leader
Or the alliance guild list can be stored directly on the list instead a guild property, but it wont be too mutch optimized since sphere will need to read/search the list too many times
2) New function ISALLY: the same as ISENEMY, it will return 1 if both guilds are in the same alliance, or 0 if not