Wednesday, October 31, 2018

Proposal: Connecting the Speaker

Reached quorum 4 votes to 0. Enacted by Kevan.

Adminned at 01 Nov 2018 15:38:33 UTC

After Sabotage in the list of Activities, add “Leading”.

To the second paragraph of “Activities”, add:-

An Activist may not change their Activity to Leading in this way if another Activist is Leading.

Replace the first paragraph of “The Speaker” with:-

If a single Activist is the only Activist who is Leading, then they are the Speaker. If an Activist has been Leading for 48 hours or more, any Activist may change that Activist’s Activity to no activity.

Replace “by making a blog with exactly one activists name and the name of exactly one valid order.” with :-

by making a blog with exactly one Activist’s name and the name of exactly one valid order, setting their own Activity to no activity, and setting the Activity of an Activist other than themselves to Leading.

Set Derrick’s Activity to Leading.

Tracking who the Speaker is, and having the role passed by choice rather than a die roll.

Tuesday, October 30, 2018

Joo Janta 200s

Zaphod idles out after a week’s inactivity. Quorum drops to 3.

Proposal: Strangers’ Gallery

Reached quorum 4 votes to 0. Enacted by Kevan.

Adminned at 01 Nov 2018 15:35:10 UTC

To the bullet list in The Big Day, add:-

* -2 if the Activist has no Identity, or set their Identity for the first time within the past 10 days

Proposal: All Right, Kevan

Reached quorum 3 votes to 0. Enacted by Kevan.

Adminned at 01 Nov 2018 15:34:11 UTC

Add to the rule “Locations” the following:

A Tip is accurate if it is the most recent Tip an Activist has posted, and if it includes the defined Location of the Plan, once that Location is no longer undefined.

Proposal: Organization

Gives a way to make other people take risky actions, and thus move the game forward. It also provides for rotating leadership.

Reached quorum 3 votes to 0. Enacted by Kevan.

Adminned at 31 Oct 2018 16:02:46 UTC

Create a rule named “Orders”

An order has a name, and a requirement. An activist for whom the requirement is true has “fulfilled” the requirement.

Valid orders are:
* Change Activity to [X]: The Activist’s activity is [X], where [X] is a valid activity
* Photograph: The Activist has performed the “Take Photos” action sometime in the dynasty

Create a rule named “Suspicion”

Each activist has an amount of suspicion, tracked in the GNDT and defaulting to zero. Suspicion represents the suspicion other rebels have about the activist.

If an Activist has proven their Loyalty to Peace or Violence, they may reduce their Suspicion to zero at any time.

Create a rule named “The Speaker”

If the same Activist has been the speaker for 48 hours or more, any Activist may change the Speaker to be a random Activist by stating in a comment in the GNDT

Once per 48 hours, an activist who is the speaker may make a “Command” by making a blog with exactly one activists name and the name of exactly one valid order. The activist named in the blog post may “comply” with the Command by posting a comment with the text “command completed!” if they fulfill the order’s requirement. If they make a comment with “command denied” or do not comply with the command within 48 hours, they have rejected the command and gain 1 suspicion.

Monday, October 29, 2018

Proposal: Whet Your Alibis

Timed out 2 votes to 1. Enacted by Kevan.

Adminned at 31 Oct 2018 16:00:27 UTC

Append to the bulleted list in the rule “The Big Day” the following:

Sunday, October 28, 2018

Proposal: Stay Frosty

Timed out 3 votes to 0. Enacted by Kevan.

Adminned at 30 Oct 2018 17:53:34 UTC

After the “+2 if the Activist is a Spook” bullet point in The Big Day, add another bullet point:-

* -1 for each point of Heat that the Activist has

Proposal: A Bigger Day

2 to 2 after 48 hours. could not be passed. Failed by derrick.

Adminned at 30 Oct 2018 15:11:43 UTC

In “The Big Day”, replace “If the Aftermath is in effect and if a single Activist has a higher Impact than every other Activist, then that Activist receives news coverage.” with:-

If the Aftermath is in effect and if a single Activist has a higher Impact than every other Activist, then that Activist achieves victory.

Replace “an Activist’s Impact can be calculated” with “an Activist’s Impact (a non-integer number) can be calculated”.

Add to the end of the bullet list in that rule:-

-0.01 for each other Activist who set their own Identity before the Activist set their own

Switching on the victory condition and making first-to-pick-their-identity the tiebreaker.

Friday, October 26, 2018

Proposal: Make the Plot Fonder

Timed out 2 votes to 0. Enacted by Kevan.

Adminned at 28 Oct 2018 18:54:19 UTC

Add to the rule “Activities” the following:

If an Activist is pursuing Absence, they may switch to pursuing to any other Activity as a Weekly Action.

Thursday, October 25, 2018

Proposal: Heat Sink

Timed out 2 votes to 0. Enacted by Kevan.

Adminned at 27 Oct 2018 21:54:43 UTC

Enact a new rule, “Heat”:-

Each Activist has an amount of Heat, tracked in the GNDT and defaulting to zero. Heat represents how much police attention an Activist has attracted.

If an Activist has proven their Loyalty to the Police or Government, they may reduce their Heat to zero at any time.

In “Activities”, replace “and changing their Activity to Absence” with:-

gaining 1 Heat, and changing their Activity to Absence

Proposal: All Going To Plan

Timed out 2 votes to 0. Enacted by Kevan.

Adminned at 27 Oct 2018 21:51:31 UTC

Remove the paragraph beginning “If no qualities of the Plan are undefined” from “The Plan”.

Create a new rule called “The Big Day”:-

If no qualities of the Plan are undefined, then the Plan is Ready. If the Plan is Ready and the current calendar date is the Plan’s Date, then it is the Big Day. Otherwise it is not. If the Plan is Ready and the current calendar date is after the Plan’s Date, then the Aftermath is in effect. Otherwise it is not.

If it is the Big Day, then the only dynastic actions that can be taken by Activists are the Revealing of Reports and the Proving of Loyalties. If the Aftermath is in effect, no dynastic actions may be taken except for calculating Impact.

During the Aftermath, an Activist’s Impact can be calculated by summing the following factors for that Activist:-

* The accuracy of the most recent Report filed by the Activist.
* +2 if the Activist is a Protestor who has never pursued Training.
* +2 if the Activist is a Militant who has never pursued Recon.
* +2 if the Activist is a Cop who has never pursued Construction.
* +2 if the Activist is a Spook who has never pursued Sabotage.

If the Aftermath is in effect and if a single Activist has a higher Impact than every other Activist, then that Activist receives news coverage.

To the third paragraph of “Loyalty”, add:-

A “Protestor” is an Activist who has proven a Loyalty to Peace, a “Militant” is one who has proven a Loyalty to Violence, a “Cop” is one who has proven a Loyalty to Police and a “Spook” is one who has proven a Loyalty to Government.

Adding an endgame score, and replacing Brendan’s proposed thou-shalt-not loyalty restrictions with a bonus to that score. Bottling out of making it a victory condition just yet (and it still needs a tiebreaker).

Note that because this proposal would amend “The Plan”, votes cast from Activists without an Identity will be ignored.

Wednesday, October 24, 2018

Proposal: Deduction of Labor

Times out 1-3. Failed by Brendan.

Adminned at 26 Oct 2018 17:31:30 UTC

If the proposal “Things To Make And Do” has not been enacted, this proposal does nothing.

Add a subrule to the rule “Activities” called “Roles” as follows:

An Activist whose Loyalty is Peace may not pursue the Activity Training.

An Activist whose Loyalty is Violence may not pursue the Activity Recon.

An Activist whose Loyalty is Police may not pursue the Activity Construction.

An Activist whose Loyalty is Government may not pursue the Activity Sabotage.

Tuesday, October 23, 2018

Proposal: Masks Up

Timed out 3 votes to 0. Enacted by Kevan.

Adminned at 25 Oct 2018 15:06:44 UTC

To “The Plan”, add:-

If a pending proposal includes a proposed amendment to this rule, then votes cast on that proposal by Activists with blank Identities are ignored when determining whether the proposal is Popular or Unpopular.

Finalising the plan details feels like something that we should be doing in character.

Proposal: Things To Make And Do

Timed out 2 votes to 0. Enacted by Kevan.

Adminned at 25 Oct 2018 09:15:23 UTC

Enact a new rule, “Activities”:-

Each Activist may be pursuing a single Activity, tracked in the GNDT and defaulting to not pursuing any Activity. The Activities are Planning, Recon, Training, Construction, Sabotage, Absence and Recovery.

An Activist who is not pursuing Absence or Recovery may change their own Activity as a daily action.

If no Activist has yet done so this dynasty, an Activist may call a Meeting by posting a blog entry to this effect. When a Meeting is called, the Plan’s chance of success is increased by X%, where X is five times the number of Activists pursuing Planning.

If no Activist has yet done so this dynasty and if the Plan’s Location is not undefined, then an Activist who is pursuing Recon may Take Photos by posting a blog entry to this effect and changing their Activity to Absence. This increases the Plan’s chance of success by 5%.

To “The Plan”, add:-

The Plan’s chance of success is a percentage between 0% and 100%. If an action would increase it above 100%, it is instead set to 100%. If an action would increase it below 0%, it is instead set to 0%.

Monday, October 22, 2018

Proposal: Winding the Clock

Self-killed. Failed by Brendan.

Adminned at 24 Oct 2018 17:28:12 UTC

Change the line in “The Plan” that reads “Date: undefined” to read:

Date: Monday, 12th November, 2018 CE

Proposal: Loyalty and Sympathy

Fewer than a quorum not voting against. Failed 1-3 by Kevan.

Adminned at 24 Oct 2018 08:24:46 UTC

Add to the rule “Loyalties”:

Each pair of loyalties are either compatible or opposed. Peace and War are opposed. Police and Government are opposed. All other loyalty pairs are compatible.

An Activists Preference is a loyalty compatible with their original loyalty.

An Activists Sympathy is a string tracked in the GNDT, defaulting to nothing. At any time an Activist with a blank Sympathy may set their Sympathy to any string. For the purposes of all rules other than this one, an Activist’s Sympathy string is considered to be blank.

An Activist may prove their Preference by demonstrating that their Sympathy is the Hash of a grammatical English sentence of no more than 20 words which includes the name of a single Loyalty and no others. (The Hash of a sentence is the MD5 hash generated for it at [http://www.miraclesalad.com/webtools/md5.php].)

if it exists, change:

An Activist with a blank Identity may not take dynastic actions other than the ones in this rule.

TO:

An Activist with a blank Identity or Sympathy may not take dynastic actions other than the ones in this rule.

 

 

This is to add nuance to the loyalties, and to make two “default” alignments instead of just one (Rebel-war and Rebel-peace)

Proposal: Introductions

Reached quorum 4 votes to 0. Enacted by Kevan.

Adminned at 23 Oct 2018 08:18:58 UTC

To “Loyalty”, add:-

An Activist with a blank Identity may not take dynastic actions other than the ones in this rule.

Encouraging players to pick Identities.

Proposal: The Man With A Thousand Gs [Special Case]

Reached quorum 4 votes to 0. Enacted by Kevan.

Adminned at 23 Oct 2018 08:17:57 UTC

Set the “Imperial Deferentials” and “Dynastic Distance” special rules to Inactive.

With all secret information being invisible to me, this one seems Emperor-playable.

Sunday, October 21, 2018

Proposal: Snitches get [TBD]

Reached quorum 4 votes to 0. Enacted by Kevan.

Adminned at 23 Oct 2018 08:16:52 UTC

Add a rule named “Locations”:

Possible Locations for the Plan include: the Docks, City Hall, the University, or the Prison.

A Tip is a sentence of no more than 20 words that includes one of the possible Locations for the Plan (ignoring capitalization and articles). An Activist may File a Tip by posting the hash of it in a blog comment. Any Activist may Reveal a Tip which has already been Filed, by posting the original text of the Tip in a blog comment.

Saturday, October 20, 2018

Proposal: Flipchart in a Warehouse

Reaches quorum, 5-0. Enacted by pokes.

Adminned at 21 Oct 2018 23:25:13 UTC

Enact a new rule, “The Plan”:-

The Plan has the following qualities, tracked in this rule:

* Location: undefined
* Date: undefined
* Team: undefined
* Equipment: undefined
* Cover story: undefined
* Chance of success: 0%

If no qualities of the Plan are undefined, and if the current calendar date is on or after the Plan’s Date, then the only dynastic action that can be taken by Activists is the Revealing of Reports.

Setting up an endgame timer and the implication that the Plan has to be filled in - perhaps in as many small stages as possible so that votes might give away Loyalties, and give a chance to bluff them.

Proposal: Numbering the list

Reaches quorum, 5-0. Enacted by pokes.

Adminned at 21 Oct 2018 23:23:18 UTC

If “A Little List” was not enacted, this proposal has no effect.

In “Reports”:
- Replace “A Report should also include a single English word at the end,” with “A Report should also include a single whole number at the end,”.
- Replace “An Activist may Reveal a Report which they have already Filed,” with “Any Activist may Reveal a Report which has already been Filed,”.

“Padding the list”, but with less semantic hazard

Friday, October 19, 2018

Proposal: Padding the list

Self-killed. Failed by pokes.

Adminned at 21 Oct 2018 23:21:57 UTC

If “A Little List” was not enacted, this proposal has no effect.

In “Reports”:
- Replace “A Report should also include a single English word at the end,” with “A Report should also include a single English sentence at the end,”.
- Replace “An Activist may Reveal a Report which they have already Filed,” with “Any Activist may Reveal a Report which has already been Filed,”.

A single word might be too little entropy to prevent brute-forcing by rival Activists. And if someone were to find out the content of a report through other means, why prevent the reveal by someone else?

Proposal: A Little List

Reaches quorum/times out at 4-0. Enacted by pokes.

Adminned at 21 Oct 2018 23:21:32 UTC

Enact a new rule, “Reports”:-

A Report is a list of Activists’ names, each Activist appearing no more than once in the list, and each name being immediately followed in brackets by a Loyalty, which is that Activist’s Suspected Loyalty. A Report should also include a single English word at the end, to prevent rival Activists from guessing at its contents.

An Activist may File a Report by posting the hash of it in a blog comment.

An Activist may Reveal a Report which they have already Filed, by posting the original text of the Report in a blog comment. Once it has been revealed, the Accuracy of such a Report is equal to the number of Activists listed in it whose Loyalty has not been shown to be different from the list’s Suspected Loyalty for them. The Accuracy of an unrevealed Report is zero.

Some rough placeholdering to suggest making the game about working out the identities of other players. The hashed-Loyalty mechanism is unusual for allowing players to freely and provably share information through other channels, so we should establish what the consequences might be.

Proposal: [Special Case] After the Horse

Reaches quorum, 5-0. Enacted by pokes.

Adminned at 20 Oct 2018 15:55:20 UTC

Add a new dynastic rule called “Proposal Enactment” as follows:

During the current dynasty, enacting a Proposal is an atomic action.

Reword the sentence in the rule “Atomic Actions [Active]” that begins “When an Activist performs an Atomic Action, they must complete all its steps…” as follows:

When an Activist 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, or achieve victory, until all such steps are complete.

Belatedly, I’m realizing that because “Resting Energy” didn’t have a [Victory] tag, there’s an argument to be made that it wasn’t a valid way of Kevan achieving victory by means of its enactment. Too late now, but I’d like to slap a few more lengths of tape on that barn door. “Proposal Enactment” is a dynastic rule because I think it’s something to test out before moving to core.

Proposal: Struggling Together

Is popular, 5-0. Enacted by pokes.

Adminned at 20 Oct 2018 15:53:28 UTC

Enact a new rule, “Loyalty”:-

The Loyalties in this world are Peace, Violence, Police and Government.

An Activist’s Identity is a string tracked in the GNDT, defaulting to nothing. At any time an Activist with a blank Identity may set their Identity to any string. For the purposes of all rules other than this one, an Activist’s Identity string is considered to be blank.

An Activist may prove their Loyalty by demonstrating that their Identity is the Hash of a grammatical English sentence of no more than 20 words which includes the name of a single Loyalty and no others. (The Hash of a sentence is the MD5 hash generated for it at http://www.miraclesalad.com/webtools/md5.php.)

Let’s try a secret role dynasty where players choose their own roles, and even the Emperor doesn’t know them. (They can also trivially prove their secrets to other trusted players if desired.) Players are a group of activists who may or may not have been infiltrated by security services.

Ascension Address: The Crash

A master control anomaly somewhere in the depths of a server warehouse, and a glittering chain snaps, sending a spike and then a crash around the world, computers reacting and counter-reacting in milliseconds. Currencies veer and slide in the darkness, but as the sun breaks over the larger cities, the system begins to correct itself at a slow and human speed.

A response is drawn up, somewhere just off the grid. A ragged group gather around a trestle table in a squatted warehouse in a city where dawn is yet to break, and bring their plans forward.

Replace “Program” with “Activist” and “Flynn” with “Veteran”.

Thursday, October 18, 2018

Declaration of Victory: Token Ring

Quorum of FOR votes after 24 hours. Enacted by Kevan.

Adminned at 19 Oct 2018 09:08:46 UTC

When processing the “set the energy of each program to the default” instruction of the Resting Energy proposal, I was - by my own choice - the first program to have their Energy set to the new default of 1. At that point, every other player had an Energy of zero. Their Energies were then also, in sequence, raised to 1.

Per the Energy Victory rule, “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.” Although this was only true for a brief moment, it is true that I “have achieved victory in the current Dynasty”.

Memory Deallocation

Card, Jumble and Trigon all idle out after a week’s inactivity. Quorum drops to 3 and with only four active players the game falls into Dormancy.

Tuesday, October 16, 2018

Proposal: Resting Energy

Reached quorum 3 votes to 0. Enacted by Kevan, setting Energy in GNDT order.

Adminned at 18 Oct 2018 08:09:40 UTC

Change:

Each Program has a numerical amount of Energy, tracked in the GNDT and defaulting to zero

To:

Each Program has a numerical amount of Energy, tracked in the GNDT and defaulting to 1

set the energy of each program to the default.

Proposal: Conditional Gain

Fewer than a quorum not voting AGAINST, fails 1-2. Failed by Kevan.

Adminned at 18 Oct 2018 08:07:47 UTC

Add the following to the runAccessCode function:

if(accessCode == ‘*’ && validActor()){
printLine("INC "+actingProgram );
printLine("INC " + randomPlayer());
printLine("SET "+ actingProgram +" INPUT TO "+randomPlayer().slice(0,2));
}

Add the following function to the Master Control Program:

function validActor(){
return checkIsNot(actingProgram,"__PROGRAM","Illegal execution! The name of the acting program is required.")
&& checkIsNot(getProgramInfo(actingProgram),undefined,"Illegal execution! the name of the acting program does not match an legal program")
}

 

You can’t win the energy war this way, but you can sure get close! you also give a random program access to you.

Monday, October 15, 2018

Proposal: Electron dance

Timed out/quorumed 3 votes to 0. Enacted by Kevan.

Adminned at 18 Oct 2018 08:56:29 UTC

Add the following function to the Master Control Program, after the closing curly brace of the function “randomChar()”:

function shuffleArray(a) {
    for (let i = a.length - 1; i > 0; i--) {
        const j = Math.floor(Math.random() * (i + 1));
        [a [ i ], a [ j ] ] = [a [ j ], a [ i ]];
    }
    return a;
}

Proposal: How did it end up like this

Self-killed and failed by Brendan.

Adminned at 16 Oct 2018 20:47:06 UTC

Update the link “The Hardware” in the sidebar to point to https://jsfiddle.net/derrickthewhite/L6ebadys/4/

Got out of sync with the link in the ruleset.

Thursday, October 11, 2018

Space Bar

9spaceking idles out after eight days of inactivity. Quorum drops to 4.

Wednesday, October 10, 2018

Proposal: Grand Unified Dilemma

Timed out 1 vote to 2. Failed by Kevan.

Adminned at 14 Oct 2018 18:34:04 UTC

change
Each Program has a numerical amount of Energy, tracked in the GNDT and defaulting to zero

to:
Each Program has a numerical amount of Energy, tracked in the GNDT and defaulting to 2


Add to the rule "Terminals":
All programs whose Cores are not breached have access to all programs whose cores are breached


Add to the global variables section:
var IO = `__IO`;


change:
__IO is replaced by a single backquote (`) surrounding the text copied from the rule titled “I/O Tower”

To
__IO is replaced by the text copied from the rule titled “I/O Tower”


change:
firewallDictionary[program.shift()] = program;

to:
firewallDictionary[program.shift()] = program.map(row=>row.split(''));


Add to the runAccessCodes function :

if(accessCode == '*'){
if(checkIsNot(actingProgram,"__PROGRAM","Illegal execution! Your program name must be provided!") &&
checkIsNot(IO,`__IO`,"Illegal execution! The IO tower must be provided!")
){
var program = getProgramInfo(actingProgram);
var chaos = (program[2].charCodeAt(0)+program[2].charCodeAt(1))%5;
printLine("INC "+actingProgram[0]);
var firewall = makeFirewallDictionary(IO);
for(var i = 0;i firewall[program[0]][randBetween(0,7)][randBetween(0,7)]='*';
printLine("SET "+program[0]+" FIREWALL TO "+fireWallToString(firewall[program[0]]));
}
}


add a function to the Master Control Program:
function fireWallToString(firewall){
return firewall.map(row=>row.reduce((a,b)=>a+b)).reduce((a,b)=>a+"\n"+b);
}


Add to the list of square bracket formats in the rule "Running the program":
*[SET ENTITY FIREWALL TO X] Set the firewall of the specified entity to the value stated in X
Ok, this is a handful, and perhaps a touch ambitious. The idea is to bring together access, breaching, and energy. We have two ways to win. This allows you to progress towards one at the expense of the other, but in a random "Will this hurt me or not?" way. It also ties in output state as effecting the risk of increasing your energy.

The access code replaces between 0 and 4 random positions in your firewall with asterisks, depending on what your output state is, and increases your energy.

A number of fixes and tweaks are included as well.

Proposal: Binary System

Reached quorum 4 votes to 0. Enacted by Kevan.

Adminned at 14 Oct 2018 18:32:27 UTC

Create a subrule of the rule “Terminals” called “Root” as follows:

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

Proposal: RollerCoaster

Timed out 3 votes to 0. Enacted by Kevan.

Adminned at 14 Oct 2018 18:31:22 UTC

Add the following function to the master control program:

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


Change:
var programInfo = GNDTArray.filter(entry=>entry[0]==program);

to
var programInfo = GNDTArray.filter(entry=>entry[0]==program)[0];


Add to the runAccessCodes Function:

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);
}
}

up and down (or ^ and v, if you prefer) are intentionally not opposites of each other. They target most people, but not all people, and give everyone a little bit of input as to what goes on.

Proposal: Crown Joules

Timed out 2 votes to 0 with two unresolved DEFs. Enacted by Kevan.

Adminned at 12 Oct 2018 12:01:15 UTC

Enact a new rule, “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.

Add two Operations to “Running the Program”:-

* [INC ENTITY] Increase the Entity’s Energy by 1.
* [DEC ENTITY] Decrease the Entity’s Energy by 1 (to a minimum of zero).

Tuesday, October 09, 2018

Proposal: In like Flynn

Times out 4-0. Enacted by Brendan.

Adminned at 11 Oct 2018 21:19:30 UTC

Delete the sentence beginning with “If a Program’s Login is the same of characters…” from the rule “Terminals.”

Create a subrule of the rule “Terminals” called “Access” as follows:

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.

Monday, October 08, 2018

Proposal: Quick, like its on Fire! [cleanup]

became popular 3 to 0 after 48 hours. Enacted by Derrick.

Adminned at 10 Oct 2018 17:07:01 UTC

In this proposal, the character string "\]" is considered to instead be "]"

replace the function isAdj2Coord with:

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;
}



replace the function fireCellValue with:

function fireCellValue(row, column, firewall){
return firewall[row]? firewall[row][column]:undefined;
}
This maintains functionality while increasing readability, throwing fewer errors, and taking up less space. Thus it is a cleanup.

Proposal: Stay on Target!

2 to 1 after 48 hours. enacted by derrick.

Adminned at 10 Oct 2018 15:51:16 UTC

Add to the rule "Terminals"
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.


After the line `var randomSeed = "__RANDOM";` insert:
// END GLOBAL VARIABLE SECTION


Add to the rule "Formatting":
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 if shall not be placed after the first if statement outside of a function.

insert into the Global Variable Section:
var actingProgram = "__PROGRAM"


Add to the Bullet list in preprocessor
*"__PROGRAM" may be replaced by the Name of the Program which is executing the Master Control Program


Add these functions to the Master Control Program:
function getProgramInfo(program){
var programInfo = GNDTArray.filter(entry=>entry[0]==program);
if(!programInfo) printLine("Illegal Execution! invalid program name");
else return programInfo;
}

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

Right now the identity of who runs the program doesn’t matter. This will allow players to target allies and enemies for different effects.

Sunday, October 07, 2018

Proposal: Bleach

Times out at 1-2 with 2 unresolved DEF votes. Failed by Brendan.

Adminned at 09 Oct 2018 18:21:46 UTC

Create a new rule entitled “Bleach” with the following text:

In the rule “Master Control Program”, any non-zero amount of whitespace can be replaced with any other non-zero amount of whitespace unless it is contained in quotes of any kind or backticks. Any player can perform this change at any time, but only should in order to bring internal consistency to the indentation of the said rule.

let me just say that the code is super ugly because HTML by default omits beginning spaces. This gives us the opportunity to fix it.

Saturday, October 06, 2018

Proposal: dictionary of fire

became popular 6 to 0. Enacted by Derrick

Adminned at 08 Oct 2018 16:47:32 UTC

If the proposal Fire With Fire has passed, this proposal does nothing instead.

After this line
var randomSeed = “__RANDOM”;
in the text of the Master Control Program add the following functions after replacing each "\]" with a "]"


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][column];
}

function isAdj2Coord(midRow, midCol, sigEquip, firewall){
properties = [];
numpad = [ 1, 2, 3, 4, 6, 7, 8, 9 ];
if(midCol == 0){
if(numpad.includes(7)){
numpad.splice(numpad.indexOf(7), 1);
}
if(numpad.includes(8)){
numpad.splice(numpad.indexOf(8), 1);
}
if(numpad.includes(9)){
numpad.splice(numpad.indexOf(9), 1);
}
}
if(midCol == 7){
if(numpad.includes(1)){
numpad.splice(numpad.indexOf(1), 1);
}
if(numpad.includes(2)){
numpad.splice(numpad.indexOf(2), 1);
}
if(numpad.includes(3)){
numpad.splice(numpad.indexOf(3), 1);
}
}
if(midRow == 0){
if(numpad.includes(7)){
numpad.splice(numpad.indexOf(7), 1);
}
if(numpad.includes(4)){
numpad.splice(numpad.indexOf(4), 1);
}
if(numpad.includes(1)){
numpad.splice(numpad.indexOf(1), 1);
}
}
if(midRow == 7){
if(numpad.includes(9)){
numpad.splice(numpad.indexOf(9), 1);
}
if(numpad.includes(6)){
numpad.splice(numpad.indexOf(6), 1);
}
if(numpad.includes(3)){
numpad.splice(numpad.indexOf(3), 1);
}
}
for(i = 0; i < numpad.length; i++){
numpad[i\] = numpadValues(numpad[i\]);
}
for(i = 0; i < numpad.length; i++){
if(fireCellValue(midRow + numpad[i\][1], midCol + numpad[i\][0], firewall) == sigEquip){
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;
}

functions which deal with the firewalls. I tested them so they should work but I could’ve missed a few things since I don’t really know javascript.

Proposal: Black Lump of Syntax Error

Passes 5-0. Enacted by Brendan.

Adminned at 07 Oct 2018 18:27:25 UTC

Within the text of the Master Control Program, move all function declarations up to the line below the line

var randomSeed = “__RANDOM”;

The MCP is currently in a crash state, because Javascript needs functions declared before they’re called.

Friday, October 05, 2018

Proposal: Front Door

Passes 5-0. Enacted by Brendan.

Adminned at 07 Oct 2018 18:26:37 UTC

Reword the paragraph in the rule “Terminals” that begins “If a Program has never had their Input state set…” as follows:

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 a Program’s Login is the same of characters as the Input state of another Program, then the former Program has access to the latter Program.

Access doesn’t mean anything yet, but it seems like a potentially interesting thing to aim for, or even chain.

Proposal: This is an Error [Cleanup]

Passes 6-0. Enacted by Brendan.

Adminned at 07 Oct 2018 18:26:05 UTC

Add to the end of the MCP:

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!");
}

change:

if (GNDT == “__” + “GNDT”) {
printLine("Illegal execution? A GNDT dump must be provided.");
} else {

to:

if(inputIsValid()){

 

Ok, this may be ambitious for a cleanup, but it only rearranges functionality and adds a small convenience functionality (error on replacement of "__RANDOM") that does not actually effect the result of attempting to run a program.

Proposal: Fire With Fire

Times out 1-5. Failed by Brendan.

Adminned at 07 Oct 2018 18:24:05 UTC

Blank the contents of the I/O Tower and repeal “Fire Walls”.

Straw poll, really. Card’s “Return of the Craction” proposal was about giving the MCP an additional extra step where a human stares closely at eight grids to work out what happens, which seems at odds with the idea of the MCP being an automated process which can explicitly take the I/O Tower data as an input.

I’m curious as to whether anyone is actually planning to add code to the MCP that lets it read and manipulate firewalls (I’m not sure that I am), or if the core gameplay is getting lost between two stools here.

Thursday, October 04, 2018

Proposal: Did you take into Account this Factor?

Times out 4-0. Enacted by Brendan. Note that as the portion delineated under “surround this” does not exist in the MCP, the related instructions on commenting do nothing. Also, I’m taking “if statement” here to mean “code starting with an ‘if’ and inclusive of the code between its curly braces,” as otherwise we’re just going to end up with more busywork syntax-cleanup proposals. CfJ if you disagree.

Adminned at 06 Oct 2018 15:12:14 UTC

Create a rule named “Formatting”:

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

In the Master Control Program, surround:

var GNDT = `__GNDT`;
accessCode = “__INPUT”
var MCPOutput = “”;
var GNDTArray = [];

With:

// GLOBAL VARIABLE SECTION

one line above it and

//END GLOBAL VARIABLE SECTION

one line below it.

create a function at the bottom of the Master Control Program:

function runAccessCodes(){
//accessCode
}

in the Master Control Program, move all if statements starting with:

if (accessCode ==

ignoring whitespace, to immediately beneath ‘//accessCode’

insert

runAccessCodes();

in the location of the first if statement moved by this proposal

This is just factoring, mostly so we can say things like "add `var tension = "__tensionLevel"` to the global variable section. Or new code to the runAccessCodes function instead of tripping over positions and complicated sentences. The refactor is not done yet, but I figured I may as well start.

Thursday, October 04, 2018

Proposal: return of the craction

Self Killed. Failed by Derrick.

Adminned at 05 Oct 2018 14:30:11 UTC

Make a new rule titled “Equipment” with the text

Equipment is represented by the characters in a Fire Wall. Equipment is written the ruleset in the following manner “[representing character]—[name]; [ruletext of that equipment]”. An equipment is considered powered when it is adjacent (in 8 non-wrapping directions) to a power supply or to a power line that is powered.

The text “⏻” is equivalent to “When the Master Control Program is Executed and this equipment is powered, the following happens:

* x—CPU;
* o—empty space;
* p—power supply; this equipment is considered powered.
* l—power line;

these may or may not work
X11: ctrl+shift+u 23fb enter
macos: ⌥+23fb
windows: use digits on the number pad. hold alt press the + on number pad 23fb release alt

Proposal: Clean Deterministic Hardware

Reached Quorum 5 to 0. Enacted by Derrick.

Adminned at 05 Oct 2018 14:25:31 UTC

Amend “Running the Program” by doing the following:
  Change the text:

      https://jsfiddle.net/L6ebadys/1/

  to read:

      https://jsfiddle.net/derrickthewhite/L6ebadys/4/

  Change the text:

      into the “JavaScript + jQuery 3.3.1” section of the Hardware, with the cursor at line 1

  to read:

      in between the two lines beginning with “//” in the bottom-left section of the Hardware

  Remove the bullet point beginning:

      Press the “Run the Master Control Program” button

Amend “Master Control Program” by removing the line that contains the text:

  var MCPOutput = “”;

and by adding a line immediately after “var GNDTArray = [];”:

var randomSeed = “__RANDOM”;

and by adding a line immediately before “var GNDTLines = GNDT.split(”\n”);”:

Math.seedrandom(randomSeed);


Add to the bulleted list in “Preprocessor”:

*__RANDOM is replaced by a random number from the GNDT by rolling DICE54321.

 

This is very similar to “Upgrading our hardware”, but it includes a way to specify random seeds, and connects it to the GNDT, for tracking.

Proposal: Reset Button

Timed out 4 votes to 0. Enacted by Kevan.

Adminned at 05 Oct 2018 08:56:35 UTC

In the Master Control Program, replace the first line to include the string "RESET" with:-
if (accessCode == "x") {
GNDTArray.forEach(function(row) {
printLine("RESET "+row[0]);
});
}

Changing a leftover reset command to reset all players, if an input of “x” is specified.

Proposal: Elementary. Period.

Timed out 2 votes to 2. Failed by Kevan.

Adminned at 05 Oct 2018 08:55:44 UTC

Add the following paragraph to the section of the rules titled “Fire Walls”:

Every * character in a Program’s Fire Wall counts as one point towards that Program’s Score.

Add a new Dynastic Rule titled “Gaining Points” with the following text:

Within fourty-eight hours of a Program’s output being modified, that Program may change any character in their Fire Wall to * if their new output is the abbreviation for any element on the periodic table of elements. This action may only be performed once by a Program each time their output is modified.

 

This adds another action Programs can do. I’d like to start making use of both the Fire Wall and Programs’ inputs/outputs.

Wednesday, October 03, 2018

Upgrading our Hardware

Amend “Running the Program” by doing the following:

  1. Change the text:
    https://jsfiddle.net/L6ebadys/1/
    to read:
    https://jsfiddle.net/L6ebadys/2/
  2. Change the text:
    into the “JavaScript + jQuery 3.3.1” section of the Hardware, with the cursor at line 1
    to read:
    in between the two lines beginning with “//” in the bottom-left section of the Hardware
  3. Remove the bullet point beginning:
    Press the “Run the Master Control Program” button

Amend “Master Control Program” by removing the line that contains the text:

var MCPOutput = “”;

The old Hardware is a bit obfuscated so I cleaned it up a little.

Proposal: Master of languages

Fewer than a quorum not voting against. Failed 1-4 by Kevan.

Adminned at 03 Oct 2018 07:55:30 UTC

add the following rule named “languages”:

When a user writes code for this dynasty, they may borrow other official computer programming languages recognized by Wikipedia, including but not limited to C++, Java, Python, to name a few examples. This code must compile and run under the language’s standards. If a single command has multiple interpretations, then the user must specify what language it is for, otherwise, the command is invalid. A code may also determine the winner of this dynasty, but it must pass quorum votes first.

HTML and CSS feels a little bit limited. I hope that other languages with the more powerful if statements, C++‘s pointers, Swift’s Guard, etc., can help provide more interesting methods and functions to boost this dynasty forward.

Proposal: Logging In

Reached quorum 5 votes to 0. Enacted by Kevan.

Adminned at 03 Oct 2018 07:54:53 UTC

After the third line in the Master Control Program, add:-

accessCode = “__INPUT”

Add to the Preprocessor bullet list:-

__INPUT may optionally be replaced with any single character from the Input state of the Program which is executing the Master Control Program.

If “for (var i = 0; i < 5; i++) {" exists in the ruleset, add the following line before it:-
if (accessCode == “c”) {
Then add "}” on a line by itself, after the “printLine(msg);” line. To the start “Running the Program”, add:-
A Program may Execute the Master Control Program as a daily action.
Then replace all curved quote marks in the Master Control Program rule with regular quote marks.

Adding a player-selection input method, putting the random-reset section behind a “c” access code (currently only available to Card) and allowing Programs to actually execute the MCP if they feel like it.

Proposal: consoles

Fewer than a quorum not voting against. Failed 1-5 by Kevan.

Adminned at 03 Oct 2018 07:51:18 UTC

add the following subrule under “fire walls”:

Each program may design any amount of “consoles” for a specific purpose, which are listed here: destruction, creation, utility, movement. A program cannot do a purpose unless they have a console for that purpose. Each console is represented as a 2-by-2 ascii character block with the same character as the first character of the purpose. At least one of these characters must be adjacent to the starting program. The consoles are defined by their programming, and must be programmed in the same language as the Master Control Program, and compile and run successfully, in order to be used.

Monday, October 01, 2018

Proposal: needs more randomization

Reached quorum 5-2 with 2 DEF votes

Adminned at 03 Oct 2018 00:22:48 UTC

Replace the text of “Master Control Program” with the following:


// MASTER CONTROL PROGRAM

var GNDT = `__GNDT`;
var MCPOutput = "";
var GNDTArray = [];

if (GNDT == "__" + "GNDT") {
  printLine("Illegal execution? A GNDT dump must be provided.");
} else {
  var GNDTLines = GNDT.split("\n");

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

  printLine("RESET " + randomPlayer());

  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);
  }
}

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" + ">"
}

i want things to change so i wrote some bad code you’re welcome