DarkRisings / src

The Source Code
3 stars 1 forks source link

Implement Player-Run Guild System #9

Closed DarkRisings closed 7 years ago

DarkRisings commented 7 years ago

Progress:

I'll put the outline for the new guild system here.

MORTAL COMMANDS

guild propose [guild name] [guild symbol] This command will initiate the mortal creation of a guild.
Requirments: Any mortal char

guild help This allows the mortal to design a help file for their guild
Requirements: Be a leader of a guild or be starting a new guild

guild submit This submits the guild for admin approval
Requirements: Have an in-progress guild that you are proposing.

guild deputy [name] This command makes another guild member a deputy of the guild, which allows that member to approve new members.
Requirements: Be a leader of a guild

guild accept [name] Accepts a player into the guild
Requirements: Be a deputy or leader of a guild

guild deny [name] denies a player from the guild
Requirements: Be a deputy or leader of a guild

guild apply [guild name] apply to a guild
Requirements: Not be in a guild

guild disband This disbands a guild
Requirements: Be the leader of a guild

guild ally [guild name] This makes another guild an ally of your guild
Requirements: Be the leader of a guild

guild unally [guild name] Removes ally status from an ally
Requirements: Be the leader of a guild

guild info This displays info about your guild. If pending approval will show status, otherwise will show members and applicants.
Requirements: be in a guild (displays different info for leader/deputy/member)

? guild war [guild name] Sets your guild at war with another guild. There was some upper management hesitation to make this a thing.
Requirements: be the leader of a guild

guild list Lists all the guilds.
Requirements: none

guild who [guild] Lists members in a specific guild
Requirements: none

gdt modify a bit, maybe? may be able to stay exactly the same.

IMMORTAL COMMANDS

guild establish [guild name] Approves and creates a guild

guild pending Lists guilds waiting approval

ACTION PLAN

I think my overall goal is to clean up the existing guild code and convert it to be all player initiated, I will take from coalition.c and clans.c as needed but the end goal will be for them to go away, being replaced by a "guilds.c" that houses all the guild related shit (some of which is currently hard coded).

figgers3036 commented 7 years ago

Otherwise it looks good, and I think would help us in moving to player run guilds.

DarkRisings commented 7 years ago

Some of the commands you were talking about I updated the comment with.

I agree about guild war, might not be the best for DR

figgers3036 commented 7 years ago

Awesome, looks good. I think we need a discussion about formal guild wars, which may be a part of a larger discussion about PK.

trseagro commented 7 years ago

Just to be clear, this is about using the guilds and not clans right? Because we have existing areas using mprogs with guild checks in the mprogs.

trseagro commented 7 years ago

Guild Deny is about removing an existing member from the guild? Also does this person have to be logged to remove them from the guild?

Will Guild Deputy and Leader be toggles (Set Bit / Unset Bit), and will the player have to be logged into the game to be promoted / demoted.

LynneKirsch commented 7 years ago

To answer your questions: The way that I plan to do it will not affect the mprogs. If an mprog's code says "if guild = arcaenum" and you start a guild and name it arcaenum - that mprog will work. I'm going to use the same data. Think of it as less a new change, and more a complete overhaul of how guilds work.

Guild deny will do as you say. The person does not have to be logged, only has to be in the guild. Same with deputy. The leader would have to be logged, since the previous two functions are only functions you'd ever perform on players that exist in a guild, I can just reference the guild file.

Draban commented 7 years ago

Something to also keep in mind, yes we are DR but, no we are not at the same time. So something that might not be "good for DR" could be good for us.

DarkRisings commented 7 years ago

Okay guys, https://github.com/DarkRisings/src/blob/guilds/guilds.c is where the majority of the new guild code lives.

Since we decided to hold off on the idea of "guild wars" for now, I've dropped that command as well as ally / enemy commands since there really isn't a need.

Implemented commands so far: guild who guild establish guild apply guild approve - imm command guild info guild accept - leaders guild defect guild expel - leaders guild disband - leaders rank - mortal leaders can now use this

Things to note: As I promised before, the new guilds use the same data slots on the character object and therefore are compatible with the old lookup stuff, which means any existing mprogs will still work.

The guild table is a different table however, so I was able to write a small piece of code in the character loading routine that removes the guild reference from players when they log in. This prevents some possible crazy shit where players may end up in a random guild (think, your guild slot is pointing to guild #10, but guild #10 is not the same guild now). TLDR: All old guilds are effectively gone.

The new guilds never really "go away" but they do enter a sort of stasis mode when they are first created and not approved yet, or when they are disbanded. So we should be able to establish a guild for each existing guild and then disband them so that those names are reserved for players who want to claim them.

left to do: right now this all works well. there are some minor additions I would like to implement but really so much of the infrastructure is done at this point that everything I add is really easy.

Immortal commands:

If you guys see anything I missed or have any comments/concerns PLEASE LET ME KNOW!!

figgers3036 commented 7 years ago

Would there be a notification to the guildie that got declined, or would it be stealth to the applicant?

I'd prefer stealth, it allows for secretive guilds to stay secretive, and forces people to interact and tell one another if they're declining members (hopefully). A good way to cause conflict and keep things moving.

DarkRisings commented 7 years ago

Another command I might add

I can make the declining of applicants quiet. Declining applicants and expelling members can even be done when the affected player isn't logged in, since I wrote an update routine that checks the guild file to make sure they're still a member/applicant when they log in.

figgers3036 commented 7 years ago

I think we'd need the they're-not-around functionality, to get around people avoiding the problem or time zone issues. That's a good idea.

Yes, guild leaders should be able to update the guild symbol. I don't wanna do it.

LynneKirsch commented 7 years ago

I met it half way and decided to only let them update the symbol while the guild is unapproved

Lynne M. Kirsch M: 607.342.5016

On Wed, Jul 5, 2017 at 9:47 AM, figgers3036 notifications@github.com wrote:

I think we'd need the they're-not-around functionality, to get around people avoiding the problem or time zone issues. That's a good idea.

Yes, guild leaders should be able to update the guild symbol. I don't wanna do it.

— You are receiving this because you commented. Reply to this email directly, view it on GitHub https://github.com/DarkRisings/src/issues/9#issuecomment-313107883, or mute the thread https://github.com/notifications/unsubscribe-auth/ACBTgo8cboY0vZQykKKuFB25mbsrayTzks5sK5PzgaJpZM4OKr8i .