Ruleset

From BlogNomic Wiki
Jump to navigation Jump to search

Core Rules

Ruleset and Gamestate

This is the Ruleset for BlogNomic; all Programs shall obey it. Section One consists of the “core rules” of BlogNomic, covering basic proposal mechanics; Section Two contains the rules of the current dynasty; Section Three contains rules which apply in special cases; and Section Four contains the appendix, which exists solely to clarify the remainder of the ruleset.

The Ruleset and Gamestate can only be altered in manners specified by the Ruleset.

Programs may correct obvious spelling and typographical mistakes in the Ruleset and their own Pending Proposals at any time, including replacing Spivak and gender-specific pronouns with the singular “they”.

If the Ruleset does not properly reflect all legal changes that have been made to it, any Program may update it to do so.

Programs

Any human may apply to join BlogNomic (if they are not already a Program) by registering at http://blognomic.com via the Register link in the sidebar, and then making a post making clear their wish to be a Program. An Admin shall add them to the roster in the sidebar and the GNDT, at which moment they become a Program.

A Program may cease to be a Program at any time by posting an entry to the BlogNomic weblog requesting such an action. A human who has ceased to be a Program in this way may not become a Program again within the following two weeks. A Program may only change their name as a result of a proposal approving the change.

Some Programs are Admins, responsible for updating the site and the Ruleset, and are signified as such in the sidebar. Programs who wish to become Admins may sign up with a username for the Ruleset Wiki, and submit a Proposal to make themselves Admins. Existing Admins may be removed from their posts by Proposal, CfJ, or voluntary resignation. New admins shall be given the GNDT configuration password when they become admins.

Idle Programs

Some Programs are Idle, and shall be marked as such in the sidebar. For the purposes of all Gamestate and the Ruleset, excluding Rules “Ruleset and Gamestate”, “Programs”, “Dynasties”, “Fair Play” and any of those Rules’ subrules, Idle Programs are not counted as Programs.

If a Proposal contains a provision that targets a specifically named Idle Program, then that Idle Program is considered to be Unidle solely for the purposes of enacting that specific provision

When a Program is unidled, if they went Idle in the same dynasty, their personal gamestate retains the last legally endowed values it had, if they are still valid. Otherwise (including if a value is invalid, does not exist, or the Program Idled in a different dynasty), the Program is given the default value for new Program, if such a value exists.

An Admin may render a Program Idle if that Program has asked to become Idle in an entry or comment from the past four days, or if that Program has not posted an entry or comment in the last seven days. In the latter case, the Admin must announce the idling in a blog post. Admins may render themselves Idle at any time, but should announce it in a post or comment when they do so. An Admin may Unidle a Program if that Program is Idle and has asked to become Unidle in an entry or comment from the past four days, and Idle Admins may Unidle themselves at any time, unless the Program who would be Unidled asked to become (or rendered themselves) Idle within the previous four days, and within the current dynasty.

Admins who are unidling themselves should, in their first vote following each unidling, highlight their changed idle status and any changes to quorum to have come about as a result of it.

Idle Admins can enact and fail Votable Matters.

Dynasties

BlogNomic is divided into a number of Dynasties. Each Dynasty may be headed by a single Program, known as the Flynn. If there is no Flynn, the Dynasty is a Metadynasty.

Votable Matters

A Votable Matter is a post which Programs may cast Votes on, such as a Proposal, a Call for Judgement or a Declaration of Victory.

Votes

Each Program may cast one Vote on a Votable Matter by making a comment to the Official Post that comprises that Votable Matter using a voting icon of FOR, AGAINST, or DEFERENTIAL. Additional voting icons may be permitted in some cases by other rules. A valid Vote is, except when otherwise specified, a Vote of FOR or AGAINST. A Program’s Vote on a Votable Matter is the last valid voting icon that they have used in any comment on that Votable Matter. Additionally, if the author of a Votable Matter has not used a valid voting icon in a comment to the post, then the author’s Vote is FOR. A non-Program never has a Vote, even if they were a Program previously and had cast a valid Vote.

If a Program other than the Flynn casts a vote of DEFERENTIAL, then the Vote of DEFERENTIAL is an indication of confidence in the Flynn. When the Flynn has a valid Vote other than VETO on a Votable Matter, then all votes of DEFERENTIAL on that Votable Matter are instead considered to be valid and the same as the Flynn's Vote for the purposes of other rules unless otherwise specified.

A Votable Matter is Popular if any of the following are true:

  • It has a number of FOR Votes that exceed or equal Quorum.
  • It has been open for voting for at least 48 hours, it has more than 1 valid Vote cast on it, and more valid Votes cast on it are FOR than are AGAINST.

A Votable Matter is Unpopular if any of the following are true:

  • The number of Programs who are not voting AGAINST it is less than Quorum.
  • It has been open for voting for at least 48 hours and it is not Popular.

Enacting and Failing

Votable Matters can either be Pending, Enacted, or Failed. When a Votable Matter is first put forward, it is considered Pending.

Whenever an Admin resolves a Votable Matter, they should mark their name, and are highly encouraged to report the final tally of Votes (or the fact that it was self-killed or vetoed). Comments cannot be made on Enacted or Failed Votable Matters.

This rule cannot be overruled by Dynastic Rules in its application to Calls for Judgement or Declarations of Victory.

Proposals

Any Program may submit a Proposal to change the Ruleset or Gamestate, by posting an entry in the “Proposal” category that describes those changes (unless the Program already has 2 Proposals pending, or has already made 3 Proposals that day).

Special Proposal Voting

When a Program casts a vote AGAINST their own Proposal (which is not in the form of a DEFERENTIAL vote), this renders the Proposal Self-Killed, even if the author later changes their Vote. The Flynn may use VETO as a voting icon to cast a Vote on a proposal; when the Flynn casts a vote of VETO on a Proposal, this renders the Proposal Vetoed, even if the Flynn later changes their Vote.

Resolution of Proposals

The oldest Pending Proposal may be Enacted by any Admin (by updating the Ruleset and/or Gamestate to include the specified effects of that Proposal, and then setting that Proposal's status to Enacted) if all of the following are true:

  • It is Popular.
  • It has been open for voting for at least 12 hours.
  • It has not been Vetoed or Self-Killed.

The oldest Pending Proposal may be Failed by any Admin, if any of the following are true:

  • It is Unpopular.
  • It has been Vetoed or Self-Killed.

If a proposal somehow ends up being pending for more than 7 days, it is ignored for the purpose of calculating the oldest pending proposal, and can be failed by any Admin.

Calls for Judgement

If two or more Programs actively disagree as to the interpretation of the Ruleset, or if a Program feels that an aspect of the game needs urgent attention, then any Program may raise a Call for Judgement (abbreviated CfJ) by posting an entry in the “Call for Judgement” category.

A Pending CfJ may be Enacted by any Admin if all of the following are ture:

  • It is Popular.

A Pending CfJ may be Failed by any Admin if any of the following are true:

  • It is Unpopular.
  • It specifies neither changes to the Gamestate or Ruleset nor corrections to any gamestate tracking entities.

When a CfJ is Enacted, the Admin Enacting it shall update the Gamestate and Ruleset, and correct the GNDT and other gamestate tracking entities, as specified in the CFJ.

This Rule may not be overruled by Dynastic Rules.

Victory and Ascension

If a Program (other than the Flynn) believes that they have achieved victory in the current Dynasty, they may make a post to the Blognomic weblog in the Declaration of Victory category, detailing this.

If the game is not already in Hiatus and there is a pending DoV, the game immediately goes into Hiatus, if it hasn’t already. During this time, the only game actions that may be taken are those covered by Rules “Programs”, “Votable Matters”, “Calls for Judgement”, “Gamestate Tracking” and “Victory and Ascension”.

Every Program may cast Votes on that DoV to indicate agreement or disagreement with the proposition that the poster has achieved victory in the current Dynasty.

A Pending DoV may be Enacted by any Admin if any of the following is true:

  • It is Popular, it has been open for at least 12 hours, and either the Flynn has Voted FOR it or it has no AGAINST Votes.
  • It is Popular, and it has been open for at least 24 hours.

A Pending DoV may be Failed by any Admin if any of the following are true:

  • It is Unpopular, and it has been open for at least 12 hours.

When a DoV fails and there are no pending DoVs, Hiatus ends.

When a DoV is enacted, all other pending DoVs are failed, and a new Dynasty begins with the Program who made the DoV as its Flynn. That Program may pass this role to another Program at this point by making a post to that effect, if they wish. The Hiatus continues until the new Flynn makes an Ascension Address by posting an entry in the “Ascension Address” category - this should specify the Flynn's chosen theme for the new Dynasty, and may optionally specify that the terms Program and Flynn will be replaced with theme-specific terms throughout the entire ruleset, and/or a number of dynastic rules to keep. Upon posting such an Ascension Address, the Ruleset is updated to reflect any changed terms, and any dynastic rules which were not listed to be kept are repealed.

A DoV may not be started in the period between an enacted DoV and that DoV’s Ascension Address. When a DoV is failed, if it had at least one AGAINST vote, the Program who posted it cannot make another DoV until after 120 hours (5 days) have passed since the time their DoV was failed.

This rule cannot be overruled by Dynastic Rules as it relates to Declarations of Victory, but can be overruled in other matters.

Fair Play

The following are BlogNomic’s rules of fair play. If any of these rules are found to have been broken, or if a Program's behaviour or actions are otherwise deemed unacceptable (socially or otherwise), a proposal or CfJ may be made to reprimand or punish the perpetrator or, in cases of extreme or repeated violations, remove them from the game and bar them from rejoining.

  • A single person should not control more than one non-Idle Program within BlogNomic, and should announce publicly if they control both a non-Idle Program and any Idle Programs.
  • A Program should not “spam” the BlogNomic blog. What counts as spamming is subjective, but would typically include posting more than ten blog entries in a day, more than ten blog comments in a row, or posting a blog entry of more than 1000 words.
  • A Program should not deliberately exploit bugs or unexpected behaviours in the software running the game (ExpressionEngine, MediaWiki or the GNDT).
  • A Program should not edit their own blog comments once posted, nor those of any other Program.
  • A Program should not edit the "Entry Date" field of a blog post.
  • A Program should not make a DoV primarily to delay the game by putting it into Hiatus.
  • A Program should not do any action meant to make the game unplayable (for example, changing multiple keywords to the same word in an ascension address).
  • A Program should not roll dice in the GNDT that are clearly associated with a particular action in the Ruleset, but with the intention to not use these rolled values to the best of their ability to resolve that action.
  • A Program should not deliberately and unreasonably prolong the performance of a game action once they have started it.

Dynastic Rules

Environment

The rules titled “I/O Tower” and “Master Control Program” are not considered rulestext. When any other dynastic rule or dynastic action considers the aforementioned rules, they ignore the outermost pre and nowiki tags. The previous sentence applies to proposals if they do not specifically mention the outermost pre and nowiki tags.

Preprocessor

Unless otherwise stated in the rule, the following happens to text in “Master Control Program” before it is executed:

  • __GNDT is replaced by a GNDT dump
  • __eGNDT is replaced by escaped double quotes surrounding the text copied from the columns tracked on the GNDT page.
  • __IO is replaced by a single backquote (`) surrounding the text copied from the rule titled “I/O Tower”
  • __eIO is replaced by escaped double quotes surrounding the text copied from the rule titled “I/O Tower”
  • __INPUT may optionally be replaced with any single character from the Input state of the Program which is executing the Master Control Program.
  • __RANDOM is replaced by a random number from the GNDT by rolling DICE54321.
  • __PROGRAM may be replaced by the Name of the Program which is executing the Master Control Program


A GNDT dump is the text selected by dragging a selection from the beginning of the Name of the topmost player to the end of the value in the rightmost, bottom-most field.

I/O Tower

9spaceking
oooooooo
oooooooo
oooooooo
oooxxooo
oooxxooo
oooooooo
oooooooo
oooooooo

Brendan
oooooooo
oooooooo
oooooooo
oooxxooo
oooxxooo
oooooooo
oooooooo
oooooooo

card
oooooooo
oooooooo
oooooooo
oooxxooo
oooxxooo
oooooooo
oooooooo
oooooooo

derrick
oooooooo
oooooooo
oooooooo
oooxxooo
oooxxooo
oooooooo
oooooooo
oooooooo

Jumble
oooooooo
oooooooo
oooooooo
oooxxooo
oooxxooo
oooooooo
oooooooo
oooooooo

Kevan
oooooooo
oooooooo
oooooooo
oooxxooo
oooxxooo
oooooooo
oooooooo
oooooooo

Trigon
oooooooo
oooooooo
oooooooo
oooxxooo
oooxxooo
oooooooo
oooooooo
oooooooo

Zaphod
oooooooo
oooooooo
oooooooo
oooxxooo
oooxxooo
oooooooo
oooooooo
oooooooo

Master Control Program

// MASTER CONTROL PROGRAM

// GLOBAL VARIABLE SECTION
var GNDT = `__GNDT`;
accessCode = "__INPUT"
var actingProgram = "__PROGRAM"
var GNDTArray = [];
var randomSeed = "__RANDOM";
// END GLOBAL VARIABLE SECTION

function makeFirewallDictionary(IO) {
  var firewallDictionary = {};
  var tempstr = IO.split("\n\n");
  var program;
  for (var i = 0; i < tempstr.length; i++) {
    program = tempstr[i].split("\n");
    firewallDictionary[program.shift()] = program;
  }
  return firewallDictionary;
}

function fireCellValue(row, column, firewall){
  return firewall[row]? firewall[row][column]:undefined;
}

function isAdj2Coord(row,column, equipment, firewall) {
  properties = [];
  directions = [[-1,-1],[0,-1],[1,-1],[-1,0],[1,0],[-1,1],[0,1],[1,1]];

  for (var i = 0; i < directions.length; i++) {
    character = fireCellValue(row + directions[i][0], column + directions[i][1], firewall);
    if (character == equipment) {
      return true;
    }
  }
  return false;
}

function numpadValues(num) {
  switch (num) {
    case 1:
      return [-1, 1];
    case 2:
      return [0, 1];
    case 3:
      return [1, 1];
    case 4:
      return [-1, 0];
    case 6:
      return [1, 0];
    case 7:
      return [-1, -1];
    case 8:
      return [0, -1];
    case 9:
      return [1, -1];
    default:
      return [0, 0];
  }
}

function inFireWall(firewall, equip) {
  for (i = 0; i < firewall.length; i++) {
    if (firewall[i].includes(equip)) {
      return true;
    }
  }
  return false;
}
function getProgramInfo(program){
  var programInfo = GNDTArray.filter(entry=>entry[0]==program)[0];
  if(!programInfo) printLine("Illegal Execution! invalid program name");
  else return programInfo;
}

function getTarget(program){
  var info = getProgramInfo(program);
  if(info) return info[3];
}

function randBetween(x, y) {
  return Math.floor(Math.random() * (y - x + 1)) + x;
}

function randomPlayer() {
  return GNDTArray[randBetween(0, GNDTArray.length - 1)][0];
}

function randomChar() {
  return String.fromCharCode(randBetween(33, 126));
}

function printLine(message) {
  MCPOutput += "[" + message + "]<" + "br" + ">"
}

function runAccessCodes() {
  //accessCode
  if (accessCode == "x") {
    GNDTArray.forEach(function(row) {
      printLine("RESET " + row[0]);
    });
  }

  if (accessCode == "c") {
    for (var i = 0; i < 5; i++) {
      var msg = "";
      if (!randBetween(0, 5))
        msg = "RESET " + randomPlayer();
      else {
        msg = "SET " + randomPlayer() + " ";
        if (randBetween(0, 1))
          msg += "INPUT";
        else
          msg += "OUTPUT";
        msg += " TO " + randomChar() + randomChar();
      }
      printLine(msg);
    }
  }

if(accessCode == '^'){
	for(var row of GNDTArray){
		var target = getProgramInfo(row[3]);
		var newOutput = moveCharCode(target[2],0,6)+moveCharCode(target[2],1,-4);
		target[2] = newOutput;
		printLine("SET "+row[3]+" OUTPUT  TO "+newOutput);
	}
}
if(accessCode == 'v'){
	for(row of GNDTArray){
		target = getProgramInfo(row[3]);
		newOutput = moveCharCode(target[2],0,-4)+moveCharCode(target[2],1,6);
		target[2] = newOutput;
		printLine("SET "+row[3]+" OUTPUT  TO "+newOutput);
	}
}

}

function checkIsNot(variable, value, errorMessage) {
  if (variable == value) {
    printLine(errorMessage);
    return false;
  }
  return true;
}

function inputIsValid() {
  return (checkIsNot(GNDT, `__GNDT`, "Illegal execution? A GNDT dump must be provided.") &&
    checkIsNot(randomSeed, "__RANDOM", "Illegal execution! a random value must be provided!"));
}

if (inputIsValid()) {
  var GNDTLines = GNDT.split("\n");
  Math.seedrandom(randomSeed);

  GNDTLines.forEach(function(entry) {
    GNDTArray.push(entry.split("\t"));
  });
}

function moveCharCode(string,index,add){
	return String.fromCharCode((string.charCodeAt(index)+add-33)%(126-33+1)+33)
}

runAccessCodes();

Running the Program

A Program may Execute the Master Control Program as a daily action.

Executing the Master Control Program is an atomic action with the following steps:-

  • In a newly opened browser window, go to https://jsfiddle.net/derrickthewhite/L6ebadys/4/ (this page is known as the Hardware)
  • If the bottom-left Hardware section shows any red error dots warning of an "Unexpected '“'" or "Unexpected '—'", replace all curved quote marks in the Master Control Program rule with regular quote marks, and all em-dashes with double hyphens, then skip the remaining steps of this atomic action, ending it as Crashed.
  • Copy the contents of the Master Control Program rule and paste it in between the two lines beginning with “//” in the bottom-left section of the Hardware
  • Press the “Run” button in the top left of the Hardware
  • The Verdict of the Master Control Program is a green box which may or may not be displayed in the bottom right of the Hardware. If the Verdict is displayed and contains any valid Operations, then the Program executing the MCP must now apply those Operations in the order that they appear.
  • End this atomic action as Successful.

A text string which matches any of the square-bracketed formats listed below (where ENTITY is the name of any Program, STATE is either INPUT or OUTPUT and X is a valid value for that State) is an Operation, with the effect specified.

  • [SET ENTITY STATE TO X] Set the State of the specified Entity to the value stated in X.
  • [RESET ENTITY] Set the States of the specified Entity to the default values they would take if that Entity had never had their States set.
  • [INC ENTITY] Increase the Entity’s Energy by 1.
  • [DEC ENTITY] Decrease the Entity’s Energy by 1 (to a minimum of zero).

Terminals

Each Program has two states, an Input state and an Output state, which are tracked as text fields in the GNDT. A state consists of two ASCII characters from within the decimal ordinal range 33-126, inclusive, as listed at the following table: https://www.cs.cmu.edu/~pattis/15-1XX/common/handouts/ascii.html Within the text of the Ruleset and Proposals, any given set of two characters may not refer to or set an Input state or an Output state unless the typeface of those characters is italicized.

A program has a target, which is the name of a program defaulting to its owner, and tracked in the GNDT. A program may change their target as a daily action.

A Program’s Login is the first two characters of their Blognomic player name. A Program’s Signature is the last two characters of their Blognomic player name.

If a Program has never had their Input state set, it defaults to their Login. If a Program has never had their Output state set, it defaults to their Signature.

If the execution of the Master Control Program would change a Program’s Input or Output state to an illegal value, that state change does not take place, but this alone does is not sufficient to render the Atomic Action of execution illegal.

Access

If a Program’s Login is the same set of characters as the Input state of another Program, then the former Program has access to the latter Program.

Access is transitive: that is, if a Program A has access to a Program B, and Program B has access to Program C, then Program A has access to Program C.

A Program may change their own Input state as a Daily Action.

If a Program has access to another Program, the former Program may change the latter Program's Output state as a Daily Action. The daily limit on this action is considered to resolve on a per-Program-pairing basis; that is, if a Program A has access to Programs B and C, then Program A may take actions to change Program B's Output state and Program C's output state within the same day.

Root

If any Program has access to all other Programs, and no other Program has access to all other Programs, that Program has achieved victory.

Cleanup Proposals

If a proposal has the [Cleanup] tag, it is known as a Cleanup Proposal. Cleanup Proposals ignore the “unless the Program already has 2 Proposals pending, or has already made 3 Proposals that day” clause of the Proposals rule, and do not count as Proposals for the purposes of it. A Program may not make more than two Cleanup Proposals per day.

If a Cleanup proposal would do anything other than fixing small errors, problems and layout issues in the ruleset, an Admin may fail it at any time.

Majority Vote

If a Program has voted DEFERENTIAL on a proposal, that vote is instead considered to be valid and either FOR (if at least one Program other than the author has voted FOR it and the proposal has more valid FOR votes than valid AGAINST votes) or AGAINST (in all other cases).

An Emperor's Victory

If the Flynn ever reaches a point this dynasty where they have achieved victory, they instead do not.

Fire Walls

A fire wall is made of 8 rows of 8 ASCII characters, with these characters coming from within the decimal ordinal range 33-126 inclusive, as listed at the following table: https://www.cs.cmu.edu/~pattis/15-1XX/common/handouts/ascii.html. The positions in a fire wall may be referred to by a letter and a number, where the letter refers to rows from the top, starting with A, and number refers to columns from the left, starting with 0.

the core of a fire wall consists of the positions in the fire wall D3,E3,D4, and E4. A character appearing in one of these positions may be said to be in the firewall’s core. A fire wall that has less than two lowercase letters in its core is considered to be “Breached”.

The default fire wall has all of it’s strings set to the character ‘o’, except for its core positions, which have ‘x’ in them.

Each program has a fire wall, tracked in the IO tower. All fire walls are listed consecutively, with the name of the name of the program owning the firewall appearing on its own line above it and a single blank line appearing below it. The fire walls of the programs are listed in descending alphabetical order, according to the name of the program owning the fire wall.

Formatting

Curly quotes are equivalent to straight quotes, and curly quotes in the ruleset may be changed to straight quotes by any program at any time.

The area in the Master Control Program between "// GLOBAL VARIABLE SECTION" and "// END GLOBAL VARIABLE SECTION" is known as the Global variable section.

when adding a function to the master control program, it shall not be placed inside an existing function not specified, and it shall not be placed after the first if statement outside of a function.

Energy Victory

Each Program has a numerical amount of Energy, tracked in the GNDT and defaulting to zero. If the MCP is not currently being executed and if a Program has more Energy than every other Program combined, then that Program has achieved victory.


Special Case

Special Case Rules can be active or inactive and default to active. The status of a Special Case rule is notated in the title of that rule ending in ”[X]” where X is the word Active or Inactive, denoting that Rule’s status. When a new dynasty is started, the Ascension Address may state any existing Special Case Rules that are set to inactive; any Special Case Rules not set in the Ascension Address become Active.

The text of Special Case Rules that are inactive shall be interpreted, for the purpose of play, to mean nothing.

Tags [Active]

Votable matters have zero or more tags. Tags are added by adding it to the title of a votable matter with the format “[X]” where [X] is the tag, for example “[Core] Wording Fix”. Votable Matters require the [Core] tag in order to make changes to the Core Rules, the [Special Case] tag in order to make changes to the Special Case Rules and the [Appendix] tag in order to make changes to the Appendix Rules. Votable Matters other than DoVs require the [Victory] tag in order to grant victory to a Program.

Atomic Actions [Active]

When a Program performs an Atomic Action, they must complete all its steps; they must complete them in order; and they may not take any other dynastic action until all such steps are complete. All of the steps of an Atomic Action are considered one action, as well as the steps of an Atomic Actions that is itself a step of a parent Atomic Action.

An Atomic Action may direct the performer to skip some of its steps, which the performer should do and in which case the skipped steps are considered completed for this rule.

If one or more steps of an Atomic Action were done incorrectly, the Program must redo the Atomic Action. In redoing an Atomic Action, the Program uses any legal steps that were already completed in the illegal Atomic Action and only redoes the illegal ones.

For instance if an Atomic Action consists of rolling a die in the GNDT and then doing steps based upon it’s result the Program would have to reroll the die if they rolled the wrong one if the first place and any steps that depended upon the result of that die; however if all they did was take an illegal action later on, the die is still used in the redone action.

For the purposes of determining the ordering or legality of game actions the time of an Atomic Action shall be the time that it is completed. For Atomic Actions that are redone, the time of completion is the last redone step.

This rule cannot be overruled by the Dynastic Rules.

Seasonal Downtime [Active]

Blognomic goes into hiatus every year on December 24th, and remains in hiatus until December 27th. During this time no game actions may be taken except those described in the rules entitled “Votable Matters,” “Gamestate Tracking” and “Call for Judgement”.

Dormancy [Active]

If there are fewer than five Programs, then BlogNomic is Dormant. While BlogNomic is Dormant, actions defined by dynastic rules may not be taken, and proposals may not be submitted.

No Orphan Variables [Active]

An Orphan Variable is a dynastic gamestate variable which has neither a location in which it’s tracked, nor a manner in which it it can be determined from other gamestate variables, specified in the Ruleset.

A Program may not take any dynastic actions that are contingent on the specific value of an Orphan Variable.

Imperial Deferentials [Inactive]

If the Flynn has voted DEFERENTIAL on a proposal, that vote is instead considered to be valid and either FOR (if more Programs have voted FOR the proposal than have voted AGAINST it) or AGAINST (in all other cases).

Dynastic Distance [Inactive]

For the purposes of dynastic rules which do not deal with voting, The Flynn is not a Program.

Appendix

Keywords

A keyword defined by a rule supersedes the normal English usage of the word. A keyword defined in this glossary supersedes that defined by a rule. (eg. A rule specifying "bananas are blue" cannot be overruled by posting a dictionary definition or a photo of a banana, and a rule specifying "every day is Sunday" will be overruled by the glossary entry below.)

Can
"is able to"
Comment
A blog comment published to the BlogNomic weblog at blognomic.com
Core Proposal
A Proposal which mandates changes that, even if conditionally, are limited to the creation, deletion, and/or amendment of core rules and/or the glossary, and/or renaming, banning, and/or the granting or removing of admin status from one or more Programs.
Daily Action
If a game action is a Daily Action, each Program able to perform it may take that action once each day, but not more than once every ten hours.
Daily Communal Action
A Daily Communal Action is a Daily Action that can only be performed by one Program per day.
Day
References to a “day” as an entity rather than as a duration (e.g. “Sunday”, “The day after performing this action”, or “August 2nd”), unless otherwise stated, refer to a day beginning at and including 00:00:00 UTC, ending when the next day begins. It can never be 2 different days at the same instant.
Dice
References to "YDICEX" refer to Y X-sided dice, rolled within the GNDT. To roll dice, post DICEX in the comments field of the GNDT, replacing X with the number of sides on the die you wish to roll.
Dynastic Action
an action that is defined in the Dynastic rules.
Dynastic Proposal
A Proposal which mandates changes that, even if conditionally, are limited to the creation, deletion, and/or amendment of dynastic rules and/or gamestate defined by dynastic rules.
Effective Vote Comment (EVC)
A Program’s Effective Vote Comment with respect to a given Votable Matter means that Program’s Comment to that Votable Matter, if any, that contains that Program’s Vote on that Votable Matter.
Flavour Text
When posting a blog entry, a Program may use the “Commentary or flavour text” field of the blog publishing form to add their own comments or description of their post. For the purposes of all other rules, such text is not considered to be part of the post.
Gamestate
Any information which the Ruleset regulates the alteration of. All GNDT columns that the Dynastic Rules explicitly mention are assumed to be Gamestate, as are all Wiki Pages that the Dynastic Rules explicitly mention except for dynastic histories and discussion pages.
Post
A blog post published to the BlogNomic weblog at blognomic.com
Private Message
A message sent via Blognomic’s Private Messages system at blognomic.com.
Quorum
Quorum of a subset of Programs is half the number of Programs in that subset, rounded down, plus one. If the word Quorum is used without qualifying which subset of Programs it is referring to, it is referring to a Quorum of all Programs.
Resolve/Resolution
If used in a context of a Votable Matter, the word “Resolve” means to perform the act, as an Admin, of enacting or failing a Votable Matter. The world “Resolution” means then the act of doing so. If used in any other context, the meaning of both “Resolve” and “Resolution” is the standard English meaning of these words
Rule
Each individually numbered section of the ruleset is a rule, including sections that are sub-rules of other rules.
Shall
"is required to"
Should
"is recommended that"
Sibling Rule
Two rules are “siblings” of each other if they are both direct subrules of the same rule.
Slack
The BlogNomic Slack is located at blognomic.slack.com. Programs may request an invite to the Slack while logged in by clicking the button in the sidebar.
Slack Channel
A Slack Channel is any channel on the BlogNomic Slack. To reference a Slack Channel, use a hash (#) followed by the name of that channel. (For example, #random.)
Story Post
A Story Post is an entry in the “Story Post” category.
Subject
The "subject" of a blog entry is the part of the Title of an entry which is after the first colon. If the Title does not contain a colon, then the whole Title is the subject. Any entry whose subject is "" (i.e. an empty string) is not valid.
Subrule
A subrule is a type of rule that is nested within another rule. A proposal that specifically affects a rule affects all of its subrules; a proposal that specifically affects a subrule does not affect its parent rule or any other subrule of that rule, unless they are also explicitly cited as being affected by that proposal.
Table of Contents
The directory of section headings that is generated by the MediaWiki software for most pages in the wiki.
TOC
Table of Contents.
Vote
The word “Vote”, used as a noun, means a Vote that is cast in accordance with Rule “Votable Matters”. The word “Vote”, used as a verb, means the act of casting such a Vote.
Voting Icons
For use in voting, a check box http://blognomic.com/images/vote/for.gif shall represent a Vote FOR, an X http://blognomic.com/images/vote/against.gif shall represent a Vote AGAINST, a DEF http://blognomic.com/images/vote/imperial.gif shall represent a Vote of DEFERENTIAL, and a crossed-out circle http://blognomic.com/images/vote/seal.gif shall represent a vote to VETO.
Week
References to a week as an entity rather than as a duration (e.g. “At the beginning of each week”, or “already happened this week”), unless otherwise stated, refer to a period of time between the beginning of a Monday and the end of the following Sunday.
Weekly Action
If a game action is a Weekly Action, each Program able to perform it may take that action once each week, but not more than once every twenty-four hours.
Weekly Communal Action
A Weekly Communal action is a Weekly Action that can only be performed by one Program per week.
Wiki
The BlogNomic Wiki at http://wiki.blognomic.com

Gamestate Tracking

Votable Matters and other official posts, as well as specific gamestate information, shall be tracked by the BlogNomic blog at http://blognomic.com. Any Program may post to the blog at any time, but may only make official posts to the blog when the Ruleset allows it. Posts following the format specified by a rule are considered official posts. Any single official post cannot be of two different types of official post unless a rule explicitly states otherwise.

An official post may only be removed as allowed by the Ruleset. An official post may be altered by its author if it is less than two hours old and either no Program has commented on it or (if it is a Votable Matter) if all comments on it contain no voting icons; otherwise this can only be done as allowed by the Ruleset. However, despite this, official posts can never be changed from one category to another, or changed to be a different sort of official post, if they have been posted for more than fifteen minutes. The Admin processing an official post is allowed to append to the post to reflect its new status. Anything appended to a post in this way must be placed in the Admin field of the post, and the post's Status must be changed to reflect its status. An official blog post that has the status of Enacted or Failed cannot change categories. An official blog post’s status may never be altered except in accordance with the rules that define that official post.

A non-official post may not, through editing of the blog or otherwise, be changed into an official post, with the following two exceptions: Firstly, whilst a non-official post has been posted for less than fifteen minutes and has no comments, the author may change the categories as they wish. Secondly, if a post by a New Program is not in any category but follows the wording of a Proposal, in that it has written changes the gamestate and or ruleset, and if it has been posted for less than six hours, then any admin may change it to be in the Proposal category. A New Program is defined as a Program who has been a Program for fewer than seven days or a Program that has unidled in the past seven days after being idle for at least 3 months.

Specific parts of the Gamestate data shall be tracked by the Generic Nomic Data Tracker at http://blognomic.com/gndt/generic.cgi?nomic=blog. Any Program may update any Program's data via the GNDT, whenever the Ruleset permits it.

All updates to the GNDT are logged. For gamestate which is tracked in a specific place (such as the GNDT or a wiki page), any alteration of that gamestate as a result of a Program’s action is (and can only be) applied by editing that data in that place. One GNDT or wiki update may contain one or more alterations, or one alteration may be split over multiple updates, as long as it is clear what is happening and the alterations are otherwise legal. The GNDT merely represents the Gamestate, and is not the same thing. In the event that the Gamestate and the GNDT are different, any Program may correct the GNDT to comply with the Gamestate.

If a Program feels that the GNDT was altered such that it no longer matches the gamestate (such as by performing an action which was against the Rules (as they were at the time of the alteration), or by any other means), they may simply undo the effects of that alteration. Instead of repeatedly reverting and re-reverting a disputed GNDT update, Programs are encouraged to raise a Call for Judgement instead. Programs shall be assigned a password for the GNDT when they join the Nomic.

Random Generators

The GNDT can be used to generate random results.

  • The DICEN command can be used to generate a random number between 1 and N.
  • The FRUIT command will return a random result from the following options: Lemon, Orange, Kiwi, GrProgram, Cherry, Tangelo.
  • The COLOUR (or COLOR) command will return a random result from the following: White, Red, Green, Silver, Yellow, Turquoise, Magenta, Orange, Purple, Black.

Any changes to the potential outcomes of the GNDT’s random result commands must be made by proposal; and any proposal that seeks to nominate a change to this rule must first identify a Program with server-level access to the BlogNomic site who is able to perform the changes, and must also update this rule to reflect the new potential outcomes.

If a number or other game variable is selected 'at random' or 'randomly' from a range of possible values, its value shall always be taken from a uniform probability distribution over the entire range of possible values, unless otherwise specified. This value must be determined by an appropriate DICE roll in the GNDT, unless otherwise specified. If a selection is explicitly specified as being “secretly” random, the Program making this determination may do so using a private method of their choosing, instead of the GNDT.

Clarifications

Numbers and Variables

  • If a set of valid values is not specified in their definition, game variables defined to hold numeric values can hold only non-negative integers. Any action that would set those values below zero is an illegal action unless explicitly otherwise stated in the ruleset.
  • Any situation which would require a roll of DiceX when X is zero or lower always yields a value of 0 unless stated otherwise.
  • All numbers, unless stated otherwise by a rule, are in base ten.
  • Unless otherwise specified, to “spend” or “lose” an amount X of a numeric value “V” means to subtract X from V; to “gain” X of a numeric value “V” means to add X to V; and to “transfer” X of a numeric value “V” from A to B means to subtract X from A’s V and add X to B’s V. Unless otherwise specified, only positive amounts can be spent, lost, gained, or transferred, and a rule that allows Programs to transfer a numeric value only allows them to transfer that value from themselves to another Program (of their choice unless otherwise stated).
  • A Program who has a choice in whether to take an action defined by a dynastic rule may not take that action if both of the following conditions are true: a) the action's effects are limited to changing values tracked in the GNDT and/or similar gamestate-tracking entities (such as a wiki page), and b) the action would change one or more of those values to an illegal value.
  • If a rule implies that the result of any calculation should be an integer (for instance, by attempting to store that result in, or add it to, a gamestate variable that can only hold integers), the result of the calculation is instead the result rounded towards 0.
  • If a game variable has no defined starting value, then that starting value is the nearest legal value to zero that it may take (for numerical variables, defaulting to positive if tied), blank (for a text string or list that may be blank), the alphabetically earliest legal text string it may take (for a text string which may not be blank, with the digits 0 through 9 considered to precede “A”), or the list which is alphabetically earliest from the set of lists with the fewest elements (for lists which may not be blank, and considering each list to be a single unpunctuated text string, with the digits 0 through 9 considered to precede “A”).
  • Invalid values for game variables can never be used, even if the values stored in the GNDT remain valid. (for example, if X appears in a formula referring to a value that is a non-negative integer, X must be used as a non-negative integer)
  • DICEN cannot be rolled in the GNDT if N is 22 or more digits long.

Rules and Proposals

  • If a new rule is created by a proposal and its location is not noted in that proposal, that new rule is to be placed in the Dynastic Rules.
  • If a wiki page becomes gamestate as a result of a proposal enacting, that page shall - unless otherwise specified - be reverted to whatever state it was in at the time of that proposal's submission (and if the page did not exist at that time, it shall be blanked).
  • Where a Proposal would amend the effects of Proposal Enactment, this does not apply to its own enactment unless explicitly stated (eg. a proposal proposing that enacted proposals earn their author a banana when enacted would not earn a banana for its own author, when enacted).
  • Rules which trigger upon the Resolution of a Votable Matter are the responsibility of the Admin who Resolves it.
  • Unless otherwise specified, a new Dynastic rule shall be placed at the end of the Dynastic Rules.
  • If the admin enacting a proposal reaches a step which cannot be applied immediately (eg. “two days after this proposal enacts, Program A gains 1 point”), that step is ignored for the purposes of enactment. Once a proposal has been enacted, it can have no further direct effect on the gamestate.

Time

  • For the purpose of all rules, time in Blognomic is in UTC.
  • All references to time must be either specific or defined within the ruleset to be considered achievable in the gamestate. Abstract concepts of time (e.g. "dinnertime", "twilight") cannot be achieved until they fulfil one of these criteria.
  • Where the month, day and/or year of a calendar date are ambiguous (eg. "04/10/09"), it shall be assumed that the date is in a day/month/year format.
  • A Program may not take more than one dynastic game action at the same time (excluding any actions which have been ongoing for more than three hours).

Spelling

  • Superficial differences between the spelling of geographic versions of English, e.g, British English, American English and Australian English shall be construed as irrelevant for the purposes of play.

Names

  • Within the ruleset, a word only refers to the name of a Program if it is explicitly stated that it refers to a Program's name.
  • If a rule would ever have no name, it is instead named “Unnamed Rule”.
  • The names of rules are not themselves rule text and have no effect other than being rule names.
  • Subrules can be referred to by a name which incorporates name of the rule they are a subrule of. Example: a subrule of the rule “Gin” is a “Gin Rule”, however the rule “Gin” is not a “Gin Rule” because it’s not a subrule of the rule “Gin”.
  • When referring to a proposal, the name used in reference to a specific proposal may be simplified by not including braces and any text between the opening and closing braces. i.e. a proposal named “Changes [Core]” could instead be referred to by the name “Changes”.

Prioritisation

  • If two parts of the Ruleset contradict each other, precedence shall be construed in the following order:
  1. The Appendix has precedence over any Rule;
  2. A Dynastic Rule has precedence over a Core Rule, unless that Core Rule explicitly says it can’t be overruled by a Dynastic Rule;
  3. If both contradicting parts are Core Rules, or if both of them are Dynastic Rules, the part with more limited scope applies. (e.g. if the rules “Programs may Kick each other” and “Programs may not kick each other on Tuesdays” exist, and it is Tuesday, Programs may not Kick each other.)
  4. If two parts with the same scope contradict each other, the negative rule applies. (e.g. with “Programs may Punch a Spaceman on Friday” and “Programs may not Punch Spacemen on Friday”, then Programs may not Punch Spacemen on Friday.)
  5. Special Case Rules have equal precedence as Dynastic Rules, unless that Special Case Rule explicitly says it can’t be overruled by a Dynastic Rule.