Community Garden/Ruleset

Time
All times mentioned in this ruleset are in UTC. Days start at 00:00 UTC.

Players
Any person may become a player by sending a message in any channel in The Community Garden category. A player may stop being a player by announcing their intent in any channel in The Community Garden category or by leaving the Discord server.

Measurement
Unless otherwise specified, all measurements of the plant are conducted using a base unit of centimetres.

The Plant
At the beginning of the cycle, the plant has a trunk with 0 features and a height of 0 centimetres.

Nesting Level
Every branch has a Nesting Level, defined in the following way: The trunk has a Nesting Level of 0, and every other branch has a Nesting Level equal to one more than the Nesting Level of its parent branch.

Position
All features on the plant have a position, which is equal to the length of their parent branch upon the feature coming into existence. This position does not change if the length of the parent branch does.

Identifiers (ID)
Every unique feature with a Nesting Level of 1 or more will additionally have a unique identifier or "ID", defined in the following way: Each unique feature identifier will begin with its position in centimetres (eg. 7 for 7cm) on its parent feature. Additionally, any feature on a shared position will incrementally be further identified with a lowercase English character in the sequence of the English alphabet, beginning with a and progressing to z. If additional features require identifiers beyond z, continue incrementing by doubling, then tripling the character identifier. (Ex. aa => zz, then aaa => zzz). Subsequent features will continue to be identified with this pattern as necessary.

Additionally, each unique feature identifier will contain positional information, starting with the unique identifier of each of its parent features beginning with Nesting Level 1 and proceeding to the feature's Nesting Level.

As a result, any unique feature can be referred to using the following format

Object Type @ {Parent Identifiers} - Unique Identifier

Example references to features may look like:

leaf@7c

A leaf with Nesting Level 1, which is the 3rd feature at position 7cm.

branch@13c-4d

A branch with Nesting Level 2, which is the 4th feature at position 4cm growing from parent feature branch@13c.

flower@17e-3b-6

A flower with Nesting Level 3, which is the only feature at position 6cm growing from parent feature branch@3b, which in turn is growing from parent feature branch@17e.

Features
The plant may have any number of additional features, created via interaction with class-specific and plant-specific actions. The following type of features exist:


 * Leaves
 * Buds
 * Branches
 * Flowers
 * Fruits

Parents & Children
When a feature comes into existence, the feature it grows upon is referred to as its parent. Additionally, any features that are grown from a feature are referred to as its children. The Trunk has no parent.

Branches
The plant consists of a number of branches. Every branch has a parent branch, except for the trunk. When a branch comes into existence, it does so with 0 leaves and a length of 1 centimeter. The trunk is considered to be a branch for the purposes of this Ruleset.

Classes
Every player has a Class. The default Class is "Gardener"; any player who has not been assigned another Class is of the default Class.

Each Class has a number of Class-specific Actions. A player of a Class other than Gardener cannot perform any Actions specific to a Class other than their own. A Gardener who performs an Action specific to a Class other than their own becomes the Class that Action is specific to.

Any player who does not hold a Role can become a Gardener by posting their intent to do so as a single message in #plant-actions. This action fails if that player has successfully performed any Class-specific Actions within the past 7 days.

The following Classes and Class-specific Actions exist:
 * Gardener
 * Watering the Plant
 * Admirer
 * Admiring the Plant
 * Critic
 * Critiquing the Plant

Watering
Any Gardener may water the plant by posting their intent to do so as a single message in #plant-actions. The first time the plant is watered each day, the plant may attempt to grow.

Plant Growth
When the plant attempts to grow, any player may randomly select a weighted result from the following Trunk Growth Pool.

Admiration
Any Admirer or Gardener may admire the plant by posting their intent to do so as a single message in plant-actions. When they do so, they may optionally specify a valid result that could exist in the current Trunk Growth Pool. If a Gardener admires the plant, they become an Admirer.

If the plant has been admired at least once previously during a day it attempts to grow, add 1 entry of the specified result for that roll attempt. If no result is specified, add 1 entry of the following result for that roll attempt:

"If the trunk has not grown a bud within 5 centimeters of its current height, the trunk grows a new bud at its current height. Otherwise, the trunk sprouts 1 new leaf at its current height."

Criticism
Any Critic or Gardener may critique the plant by posting their intent to do so as a single message in #plant-actions. If a Gardener critiques the plant, they become a Critic.

If the plant has been critiqued at least once previously during a day it attempts to grow, then for that roll attempt:


 * If the plant has been admired at least once previously during that day, add 1 entry of "The plant becomes eligible for a development roll today."
 * Otherwise, add 1 entry of "Nothing Happens."

Photosynthesise
Any Gardener or Admirer may attempt to prompt the plant to photosynthesise by posting their intent to do so as a single message in #plant-actions. When a successful photosynthesis action is made, the plant enters a photosynthesis cycle, then may immediately attempt to grow 1d6 times. The duration of the photosynthesis cycle is measured in days, and can be determined using the following formula and rounding up to the nearest integer:

Total length of the plant in centimeters/√(Total number of leaves on the plant) = Photosynthesis cycle duration

A photosynthesis cycle will count down at the start of each day, regardless of what time it starts. During a photosynthesis cycle, no "Photosynthesise" actions will succeed.

Development
When the plant is eligible for a development roll, any player may choose a bud and make a development roll for that bud by posting their intent to do so as a single message in plant-actions.

To make a development roll, roll 1d20 and add 1 to the result for every development roll that has been made for that bud previous to the current one. If the sum is 20 or more, the development roll succeeds. Regardless of the result, the plant stops being eligible for a development roll.

When a development roll succeeds, any person can roll 1dN, where N is one plus the Nesting Level of the branch the chosen bud grew from. If the result of this roll is 1, the chosen bud becomes a branch, and its parent branch is the branch the chosen bud grew from. Otherwise, the chosen bud becomes a flower.

Coronation
If no branch is specified when performing this action, the specified branch is the 0th level branch of the plant (the trunk).

When the plant becomes eligible for a coronation roll, any player may make a coronation roll on the specified branch. To make a coronation roll, roll a dN where N is the number of branches that are direct children of the selected branch. Any player may then roll on the Branch Growth pool for the selected child branch. Regardless of the result, the plant stops being eligible for a coronation roll.

Seasons
At every point in time, it is one of three seasons, ordered as follows: Growth, Harvest, or Frost. During the following seasons, the following entries are found in the Trunk Growth Pool:

Growth:


 * 2x "The trunk grows one new leaf at its current height"
 * 1x "If the trunk has not grown a bud within 5 centimeters of its current height, the trunk grows a new bud at its current height. Otherwise, the trunk sprouts 1 new leaf at its current height."

Harvest:


 * 1x "If the trunk has not grown a bud within 5 centimeters of its current height, the trunk grows a new bud at its current height. Otherwise, the trunk sprouts 1 new leaf at its current height."
 * 2x "The plant becomes eligible for a development roll today."

On the first and fifteenth day of each month, the season changes to the next in the list.

Roles
Roles are positions associated with a specific class that can be held by a limited number of players at a time. In order to hold a Role, a player must be of the class that Role is associated with. A player holding a Role cannot change Classes or perform actions specific to a Class other than their own under any circumstances.

The following Roles (and their associated Classes) exist:
 * Plant Keeper (Gardener)

The Plant Keeper
The Plant Keeper is a Role held by at most one player. The Plant Keeper is responsible for resolving rules disputes. The Plant Keeper may cease being such by stating so in #plant-keeper.

A request for clarification is an action that shall take the form of a question or statement. The proper response to a question is an action in the form of an answer to that question, and the proper response to a statement is the truth value of that statement.

Upon formal request by a player other than themself, the Plant Keeper shall, as quickly as possible, issue a response to the request. This response shall be binding only to the extent that it reasonably directly pertains to the request, and only to the extent that it does not blatantly and obviously contradict rules text.

Any Gardener may attempt to become the Plant Keeper by posting their intent to do so as an action in #plant-keeper. If after 7 days the message sent by the player has at least 3 :+1: reactions, and has more :+1: reactions than :-1: reactions, that player becomes the new Plant Keeper.

Proposals
Any person may make a proposal by sending a message as an action in #plant-proposals. If that message is deleted or modified during its voting period, the proposal is retracted. If there is an active proposal made by a person in the last 7 days, any new proposal they make is immediately retracted. An "active proposal" refers to any proposal that hasn't been retracted and is still in its 7-day voting period.

The voting period for proposals is 7 days. Once a proposal's voting period ends, if there are more votes in favor than against, the proposal takes effect.

A :+1: or :-1: reaction on a Proposal message at the time when the voting period ends constitutes a vote in favor or against, respectively.