began refactor, unfinished

This commit is contained in:
Shaun Kerr 2018-09-17 14:39:15 +12:00
parent 2cfd60a82d
commit 1aa9cac162
84 changed files with 1027 additions and 4 deletions

5
ChangeLog.md Normal file
View File

@ -0,0 +1,5 @@
# Revision history for protocol-seven
## 0.2.0.0 -- 2018-09-17
* First Hakyll Version

30
LICENSE Normal file
View File

@ -0,0 +1,30 @@
Copyright (c) 2018, Shaun Kerr
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following
disclaimer in the documentation and/or other materials provided
with the distribution.
* Neither the name of Shaun Kerr nor the names of other
contributors may be used to endorse or promote products derived
from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

View File

@ -1,5 +1,78 @@
# Protocol Seven # Regular Flolloping
A Post-Netrunner Format
# Running Post-Netrunner Rotation, currently hosted at [Protocol Seven](https://anr.p7.co.nz)
Use `runhaskell Main.hs` as root, change the port in Main.hs
## Getting Started
What you need to get the generator up and running.
### Prerequisites
Built using Nix.
Nix can be installed with:
```
curl https://nixos.org/nix/install | sh
```
### Dependencies
`imagemagick` is required for the favicons.
### Installing
Compile the generator
```
nix-build p7.nix
```
Enter the build environment
```
nix-shell --pure
```
Generate the site
```
./result/site rebuild
```
And test it out
```
./result/site watch
```
The site will now be avaliable at `localhost:8000`
## Deployment
Site will be completely static, so simply point your server to the `_site` directory
## Built With
* [Hakyll](https://jaspervdj.be) - The web framework used
* [hakyll-favicon](https://github.com/elaye/hakyll-favicon) - Thanks Elie!
* [Nix](https://nixos.org) - Package Management
* [Cabal](https://cabal.readthedocs.io) - Build System
## Versioning
Is very airy fairy and mainly based on what I think constitutes major / minor updates.
## Authors
* **Shaun Kerr** - [tA](https://github.com/techieAgnostic)
## License
This project is licensed under the BSD3 License - see the [LICENSE](LICENSE) file for details
## Acknowledgments
* Chris Hay for coming up with the idea
* Elie Génard for their favicon library, very easy to use.
* Serial Experiments Lain for being amazing and the source of the name
* ***NOT*** Wizards of the Coast, because those [REDACTED] cancelled the game >:[
* You, for reading this :)

2
Setup.hs Normal file
View File

@ -0,0 +1,2 @@
import Distribution.Simple
main = defaultMain

View File

@ -22,3 +22,12 @@ monthsSince (Ts d1 m1 y1) (Ts d2 m2 y2)
toTS :: (Integer, Integer, Integer) -> Timestamp toTS :: (Integer, Integer, Integer) -> Timestamp
toTS (y,m,d) = Ts d m y toTS (y,m,d) = Ts d m y
getCurrentTime :: IO [Char]
getCurrentTime = getZonedTime
>>= return . (formatTime defaultTimeLocale "%Y %m %d")
fmtCurrentTime :: [Char] -> (Integer, Integer, Integer)
fmtCurrentTime n = (\[a,b,c] -> (a,b,c)) iTime
where
iTime = map (\x -> read x :: Integer) $ words n

19
ViewUtils.hs Normal file
View File

@ -0,0 +1,19 @@
module ViewUtils where
import Timestamp
showMonth :: Integer -> String
showMonth 1 = "January"
showMonth 2 = "February"
showMonth 3 = "March"
showMonth 4 = "April"
showMonth 5 = "May"
showMonth 6 = "June"
showMonth 7 = "July"
showMonth 8 = "August"
showMonth 9 = "September"
showMonth 10 = "October"
showMonth 11 = "November"
showMonth 12 = "December"

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

60
_site/about/index.html Normal file
View File

@ -0,0 +1,60 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="referrer" content="no-referrer">
<title>rf - About</title>
<link rel="stylesheet" href="../css/default.css" />
<link rel="shortcut icon" href="favicon.ico" type="image/x-icon"><link rel="shortcut icon" href="../images/favicons/favicon32.png"><link rel="apple-touch-icon-precomposed" sizes="144x144" href="../images/favicons/favicon144.png"><link rel="apple-touch-icon-precomposed" sizes="114x114" href="../images/favicons/favicon114.png"><link rel="apple-touch-icon-precomposed" sizes="72x72" href="../images/favicons/favicon72.png"><link rel="apple-touch-icon-precomposed" sizes="57x57" href="../images/favicons/favicon57.png">
</head>
<body>
<header>
<div class="logo">
<a href="../">Protocol Seven</a>
</div>
<nav class="navbar">
<a href="../">Format</a>
<a href="../description/">Description</a>
<a href="../about/">About</a>
<a href="../contact/">Contact</a>
</nav>
</header>
<main role="main">
<h1>About</h1>
<p>what is <strong>Protocol Seven</strong>?</p>
<h1 id="jokingly">jokingly</h1>
<p><strong>Protocol Seven</strong> is:</p>
<ul>
<li>an android:netrunner format</li>
<li>automagically updated</li>
<li>coded in a way that i like, rather than well</li>
<li>ripped straight from lain</li>
</ul>
<h1 id="technically">technically</h1>
<p><strong>Protocol Seven</strong> is:</p>
<ul>
<li>powered by <a href="https://jaspervdj.be/hakyll/">Hakyll</a></li>
<li>running on <a href="https://www.digitalocean.com/">Digital Ocean</a></li>
<li>sourced from <a href="https://github.com/techieAgnostic/protocol-seven">GitHub</a></li>
<li>probably badly written</li>
<li>follows the <a href="http://humanstxt.org/">humans.txt</a> intiative: see it <a href="../humans.txt">here</a></li>
</ul>
<h1 id="pretensiously">pretensiously</h1>
<p><strong>Protocol Seven</strong> is <strong>Layer 09</strong> of the <a href="https://p7.co.nz">Protocol Seven System</a> (currently broken)</p>
<p><strong>Layer 09</strong>, also known as <strong>Protocol</strong></p>
<p>spoken logic creating physical connections indistuingishable from magic<br />
standard patterns uniting orphaned players<br />
open standards triumphing over corporate soulessness mathematical wording, always running</p>
<blockquote>
<p>“For now, conjecture has become fact, and rumor has become history.” ~ <em>Announcer</em></p>
</blockquote>
</main>
<footer>
powered by <a href="http://jaspervdj.be/hakyll">Hakyll</a>
</footer>
</body>
</html>

39
_site/contact/index.html Normal file
View File

@ -0,0 +1,39 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="referrer" content="no-referrer">
<title>rf - Contact</title>
<link rel="stylesheet" href="../css/default.css" />
<link rel="shortcut icon" href="favicon.ico" type="image/x-icon"><link rel="shortcut icon" href="../images/favicons/favicon32.png"><link rel="apple-touch-icon-precomposed" sizes="144x144" href="../images/favicons/favicon144.png"><link rel="apple-touch-icon-precomposed" sizes="114x114" href="../images/favicons/favicon114.png"><link rel="apple-touch-icon-precomposed" sizes="72x72" href="../images/favicons/favicon72.png"><link rel="apple-touch-icon-precomposed" sizes="57x57" href="../images/favicons/favicon57.png">
</head>
<body>
<header>
<div class="logo">
<a href="../">Protocol Seven</a>
</div>
<nav class="navbar">
<a href="../">Format</a>
<a href="../description/">Description</a>
<a href="../about/">About</a>
<a href="../contact/">Contact</a>
</nav>
</header>
<main role="main">
<h1>Contact</h1>
<ul>
<li>email me at <a href="mailto:s@p7.co.nz">s@p7.co.nz</a></li>
<li>if you see a <code>tA</code>, <code>techieAgnostic</code> or anything in the form of <code>t*A*</code> on irc its probably me</li>
<li>i am <code>techieAgnostic</code> on the <a href="https://stimhack.slack.com">stimslack</a> and <a href="https://jinteki.net">jnet</a></li>
<li>i am <code>Shaun Kerr</code> on the facebook pages</li>
</ul>
</main>
<footer>
powered by <a href="http://jaspervdj.be/hakyll">Hakyll</a>
</footer>
</body>
</html>

1
_site/css/default.css Normal file
View File

@ -0,0 +1 @@
nav a{font-size:1.8rem;font-weight:bold;text-decoration:none;text-transform:uppercase}a:after{content:" ▻"}a{text-decoration:none}a:link{color:#7FDBFF}a:visited{#color:#B10DC9;color:#F012BE}.navbar a{color:#7FDBFF}.navbar a:after{content:""}html{font-family:sans-serif;font-size:62.5%;color:#FFFFFF;background-color:#222222}body{font-size:1.6rem;color:#FFFFFF}blockquote{padding:0 1em;color:#2ECC40;border-left:0.25em solid #dfe2e5}header{border-bottom:0.2rem solid #F012BE}nav{text-align:right;color:#7FDBFF}footer{margin-top:3rem;padding:1.2rem 0;border-top:0.2rem solid #F012BE;font-size:1.2rem;color:#AAAAAA}code{font-family:monospace;color:#01FF70}pre{padding:0 1em;border-left:0.25em solid #3D9970}strong{color:#FF4136}em{color:#FFDC00}strong>em{color:#FF851B}h1{color:#7FDBFF;font-size:2.4rem}h2{color:#7FDBFF;font-size:2rem}h3{color:#7FDBFF;font-size:1em}h3:before{content:"◎ "}h2:before{content:"◉ "}h1:before{content:"◈ "}article .header{font-size:1.4rem;font-style:italic;color:#AAAAAA}.logo a{font-weight:bold;font-size:3.4rem;text-decoration:none;color:#7FDBFF}.logo a:before{content:"◈ "}.logo a:after{content:" ◈"}@media (max-width:319px){body{width:90%;margin:0;padding:0 5%}header{margin:4.2rem 0}nav{margin:0 auto 3rem;text-align:center}footer{text-align:center}.logo{text-align:center;margin:1rem auto 3rem}nav a{display:block;line-height:1.6}}@media (min-width:320px){body{width:90%;margin:0;padding:0 5%}header{margin:4.2rem 0}nav{margin:0 auto 3rem;text-align:center}footer{text-align:center}.logo{text-align:center;margin:1rem auto 3rem}nav a{display:inline;margin:0 0.6rem}}@media (min-width:640px){body{width:60rem;margin:0 auto;padding:0}header{margin:0 0 3rem;padding:1.2rem 0}nav{margin:0 auto 3rem;text-align:center}footer{text-align:center}.logo{text-align:center;margin:1rem auto 3rem}nav a{display:inline;margin:0 0.6rem}}

View File

@ -0,0 +1,70 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="referrer" content="no-referrer">
<title>rf - Description</title>
<link rel="stylesheet" href="../css/default.css" />
<link rel="shortcut icon" href="favicon.ico" type="image/x-icon"><link rel="shortcut icon" href="../images/favicons/favicon32.png"><link rel="apple-touch-icon-precomposed" sizes="144x144" href="../images/favicons/favicon144.png"><link rel="apple-touch-icon-precomposed" sizes="114x114" href="../images/favicons/favicon114.png"><link rel="apple-touch-icon-precomposed" sizes="72x72" href="../images/favicons/favicon72.png"><link rel="apple-touch-icon-precomposed" sizes="57x57" href="../images/favicons/favicon57.png">
</head>
<body>
<header>
<div class="logo">
<a href="../">Protocol Seven</a>
</div>
<nav class="navbar">
<a href="../">Format</a>
<a href="../description/">Description</a>
<a href="../about/">About</a>
<a href="../contact/">Contact</a>
</nav>
</header>
<main role="main">
<h1>Description</h1>
<h2 id="what-is-protocol-seven">What is Protocol Seven?</h2>
<blockquote>
<p>“No matter where you go, everybodys connected.” - Lain Iwakura</p>
</blockquote>
<p>For many of us, Fantasy Flight Games Living Card Game Android: Netrunner was more than simply a card game. The term Lifestyle Game has been thrown around a lot, but is truer for no other community than that of ANR. Without the influx of things to discuss each month, it may seem likely that the community will die, however this is only true if we let it happen.</p>
<p>With the cancellation of many players favourite game, and no real replacement anywhere on the horizon, all thats left is to create our own points of discussion. Many players are working on custom cycles to expand the card pool, however one Chris Hay of the small and oft ridiculed meta from Dunedin, New Zealand has come up with a solution; an everchanging format using the current completed card pool.</p>
<h2 id="how-does-it-work">How does it work?</h2>
<blockquote>
<p>“One theory says that man is a neoteny and is no longer able to evolve. If this is true, then what an absurd creature mankind has evolved into.” - Eiri Masami</p>
</blockquote>
<p>Protocol Seven is an attempt at a constantly evolving metagame. Rather than relying on an influx of new cards every month, Protocol Seven relies on a monthly rotation schedule. This allows discussion of a new metagame every month for the forseeable future.</p>
<p>A months format in Protocol Seven will at any time consist of the following:</p>
<ul>
<li>3x Revised Core Set</li>
<li>18x Data Packs from the Lunar - Kitara cycles</li>
<li>5-6x Deluxe Boxes (Including Terminal Directive)</li>
</ul>
<p>This website will automatically update with the latest format, as well as a preview of the next months changes. This allows discussion, an ever-changing metagame, whilst also keeping the card pool similar enough between months that decks can be altered rather than completely remade.</p>
<h2 id="the-protocol-seven-protocol">The Protocol Seven Protocol</h2>
<blockquote>
<p>“But a protocol is nothing more than a simple agreement.” - Eiri Masami</p>
</blockquote>
<p>A comprehensive description of the Protocol Seven format</p>
<ul>
<li>3x Revised Core Sets will be legal at all times</li>
<li>The most recent FFG Most Wanted List will be active at all times</li>
<li>The Genesis and Spin cycles are not legal</li>
<li>Cards from the Original Core Set that are not in the Revised Core Set are not legal</li>
<li>18x of the 36 Data Packs from Lunar cycle onwards will be legal at all times</li>
<li>Each rotation will remove the two Data Packs that have been in play the longest, and replace them with two, randomly chosen packs</li>
<li>Once rotated out, a Data Pack will not rotate in for at least three months</li>
<li>Each rotation, one Deluxe Box (Including Terminal Directive), in release order, will be chosen as illegal</li>
<li>Every 7th rotation, all Deluxes will be legal instead</li>
<li>The rotation will happen on the 1st of every month, New Zealand time</li>
<li>On the 20th of every month, a preview of the next months format will be shown</li>
<li><del>No matter what the currently legal packs are, Door to Door (Escalation #59) will always be legal</del></li>
</ul>
</main>
<footer>
powered by <a href="http://jaspervdj.be/hakyll">Hakyll</a>
</footer>
</body>
</html>

17
_site/humans.txt Normal file
View File

@ -0,0 +1,17 @@
==
= humans.txt for regularflolloping.com
==
my name is shaun and i am a human
i usually go by either tA, techieAgnostic, or some name of the form t*A*
my email is s@p7.co.nz and it is functioning at least 30% of the time
i made this site with help from the people who made hakyll
aidan from my work says that i am his favourite dealer, referring to the data kind
i am a fan of android: netrunner, and have made many friends because of it
clones are people, and as such we will not track who you are
bioroids are people, and as such our robots.txt allows full access to people of the non-biological kind
always be running, friends

2
_site/robots.txt Normal file
View File

@ -0,0 +1,2 @@
User-agent: *
Disallow:

34
about.md Normal file
View File

@ -0,0 +1,34 @@
---
title: About
---
what is **Protocol Seven**?
# jokingly
**Protocol Seven** is:
* an android:netrunner format
* automagically updated
* coded in a way that i like, rather than well
* ripped straight from lain
# technically
**Protocol Seven** is:
* powered by [Hakyll](https://jaspervdj.be/hakyll/)
* running on [Digital Ocean](https://www.digitalocean.com/)
* sourced from [GitHub](https://github.com/techieAgnostic/protocol-seven)
* probably badly written
* follows the [humans.txt](http://humanstxt.org/) intiative: see it [here](/humans.txt)
# pretensiously
**Protocol Seven** is **Layer 09** of the [Protocol Seven System](https://p7.co.nz) (currently broken)
**Layer 09**, also known as **Protocol**
spoken logic creating physical connections indistuingishable from magic
standard patterns uniting orphaned players
open standards triumphing over corporate soulessness
mathematical wording, always running
> "For now, conjecture has become fact, and rumor has become history." ~ *Announcer*

8
contact.md Normal file
View File

@ -0,0 +1,8 @@
---
title: Contact
---
* email me at [s@p7.co.nz](mailto:s@p7.co.nz)
* if you see a `tA`, `techieAgnostic` or anything in the form of `t*A*` on irc its probably me
* i am `techieAgnostic` on the [stimslack](https://stimhack.slack.com) and [jnet](https://jinteki.net)
* i am `Shaun Kerr` on the facebook pages

215
css/default.css Normal file
View File

@ -0,0 +1,215 @@
nav a {
font-size: 1.8rem;
font-weight: bold;
text-decoration: none;
text-transform: uppercase;
}
a:after {
content: " ▻";
}
a {
text-decoration: none;
}
a:link {
color: #7FDBFF;
}
a:visited {
#color: #B10DC9;
color: #F012BE;
}
.navbar a {
color: #7FDBFF;
}
.navbar a:after {
content: "";
}
html {
font-family: sans-serif;
font-size: 62.5%;
color: #FFFFFF;
background-color: #222222;
}
body {
font-size: 1.6rem;
color: #FFFFFF;
}
blockquote {
padding: 0 1em;
color: #2ECC40;
border-left: 0.25em solid #dfe2e5;
}
header {
border-bottom: 0.2rem solid #F012BE;
}
nav {
text-align: right;
color: #7FDBFF;
}
footer {
margin-top: 3rem;
padding: 1.2rem 0;
border-top: 0.2rem solid #F012BE;
font-size: 1.2rem;
color: #AAAAAA;
}
code {
font-family: monospace;
color: #01FF70;
}
pre {
padding: 0 1em;
border-left: 0.25em solid #3D9970;
}
strong {
color: #FF4136;
}
em {
color: #FFDC00;
}
strong>em {
color: #FF851B;
}
h1 {
color: #7FDBFF;
font-size: 2.4rem;
}
h2 {
color: #7FDBFF;
font-size: 2rem;
}
h3 {
color: #7FDBFF;
font-size: 1em;
}
h3:before {
content: "◎ ";
}
h2:before {
content: "◉ ";
}
h1:before {
content: "◈ ";
}
article .header {
font-size: 1.4rem;
font-style: italic;
color: #AAAAAA;
}
.logo a {
font-weight: bold;
font-size: 3.4rem;
text-decoration: none;
color: #7FDBFF;
}
.logo a:before {
content: "◈ ";
}
.logo a:after {
content: " ◈";
}
@media (max-width: 319px) {
body {
width: 90%;
margin: 0;
padding: 0 5%;
}
header {
margin: 4.2rem 0;
}
nav {
margin: 0 auto 3rem;
text-align: center;
}
footer {
text-align: center;
}
.logo {
text-align: center;
margin: 1rem auto 3rem;
}
nav a {
display: block;
line-height: 1.6;
}
}
@media (min-width: 320px) {
body {
width: 90%;
margin: 0;
padding: 0 5%;
}
header {
margin: 4.2rem 0;
}
nav {
margin: 0 auto 3rem;
text-align: center;
}
footer {
text-align: center;
}
.logo {
text-align: center;
margin: 1rem auto 3rem;
}
nav a {
display: inline;
margin: 0 0.6rem;
}
}
@media (min-width: 640px) {
body {
width: 60rem;
margin: 0 auto;
padding: 0;
}
header {
margin: 0 0 3rem;
padding: 1.2rem 0;
}
nav {
margin: 0 auto 3rem;
text-align: center;
}
footer {
text-align: center;
}
.logo {
text-align: center;
margin: 1rem auto 3rem;
}
nav a {
display: inline;
margin: 0 0.6rem;
}
}

12
default.nix Normal file
View File

@ -0,0 +1,12 @@
{ mkDerivation, base, filepath, hakyll, hakyll-favicon, stdenv }:
mkDerivation {
pname = "p7";
version = "0.2.0.0";
src = ./.;
isLibrary = false;
isExecutable = true;
executableHaskellDepends = [ base filepath hakyll hakyll-favicon ];
homepage = "anr.p7.co.nz";
description = "Post-Netrunner Rotation";
license = stdenv.lib.licenses.bsd3;
}

41
description.md Normal file
View File

@ -0,0 +1,41 @@
---
title: Description
---
## What is Protocol Seven?
> "No matter where you go, everybody's connected." - Lain Iwakura
For many of us, Fantasy Flight Games' Living Card Game Android: Netrunner was more than simply a card game. The term Lifestyle Game has been thrown around a lot, but is truer for no other community than that of ANR. Without the influx of things to discuss each month, it may seem likely that the community will die, however this is only true if we let it happen.
With the cancellation of many players favourite game, and no real replacement anywhere on the horizon, all that's left is to create our own points of discussion. Many players are working on custom cycles to expand the card pool, however one Chris Hay of the small and oft ridiculed meta from Dunedin, New Zealand has come up with a solution; an everchanging format using the current completed card pool.
## How does it work?
> "One theory says that man is a neoteny and is no longer able to evolve. If this is true, then what an absurd creature mankind has evolved into." - Eiri Masami
Protocol Seven is an attempt at a constantly evolving metagame. Rather than relying on an influx of new cards every month, Protocol Seven relies on a monthly rotation schedule. This allows discussion of a new metagame every month for the forseeable future.
A month's format in Protocol Seven will at any time consist of the following:
* 3x Revised Core Set
* 18x Data Packs from the Lunar - Kitara cycles
* 5-6x Deluxe Boxes (Including Terminal Directive)
This website will automatically update with the latest format, as well as a preview of the next months changes. This allows discussion, an ever-changing metagame, whilst also keeping the card pool similar enough between months that decks can be altered rather than completely remade.
## The Protocol Seven Protocol
> "But a protocol is nothing more than a simple agreement." - Eiri Masami
A comprehensive description of the Protocol Seven format
* 3x Revised Core Sets will be legal at all times
* The most recent FFG Most Wanted List will be active at all times
* The Genesis and Spin cycles are not legal
* Cards from the Original Core Set that are not in the Revised Core Set are not legal
* 18x of the 36 Data Packs from Lunar cycle onwards will be legal at all times
* Each rotation will remove the two Data Packs that have been in play the longest, and replace them with two, randomly chosen packs
* Once rotated out, a Data Pack will not rotate in for at least three months
* Each rotation, one Deluxe Box (Including Terminal Directive), in release order, will be chosen as illegal
* Every 7th rotation, all Deluxes will be legal instead
* The rotation will happen on the 1st of every month, New Zealand time
* On the 20th of every month, a preview of the next months format will be shown
* ~~No matter what the currently legal packs are, Door to Door (Escalation #59) will always be legal~~

17
humans.txt Normal file
View File

@ -0,0 +1,17 @@
==
= humans.txt for regularflolloping.com
==
my name is shaun and i am a human
i usually go by either tA, techieAgnostic, or some name of the form t*A*
my email is s@p7.co.nz and it is functioning at least 30% of the time
i made this site with help from the people who made hakyll
aidan from my work says that i am his favourite dealer, referring to the data kind
i am a fan of android: netrunner, and have made many friends because of it
clones are people, and as such we will not track who you are
bioroids are people, and as such our robots.txt allows full access to people of the non-biological kind
always be running, friends

87
icons/favicon.svg Normal file
View File

@ -0,0 +1,87 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="100mm"
height="100mm"
viewBox="0 0 100 100"
version="1.1"
id="svg8"
inkscape:version="0.92.1 r15371"
sodipodi:docname="favicon.svg">
<defs
id="defs2" />
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1.4"
inkscape:cx="112.18352"
inkscape:cy="209.82653"
inkscape:document-units="mm"
inkscape:current-layer="layer1"
showgrid="false"
inkscape:window-width="1111"
inkscape:window-height="867"
inkscape:window-x="136"
inkscape:window-y="1202"
inkscape:window-maximized="0" />
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-197)">
<rect
id="rect3680"
width="100"
height="100"
x="0"
y="197"
style="fill:#222222;stroke-width:0.26458332;fill-opacity:1"
ry="26.458338" />
<text
xml:space="preserve"
style="font-style:normal;font-weight:normal;font-size:111.90415955px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#5599ff;fill-opacity:1;stroke:none;stroke-width:0.44642615"
x="20.814173"
y="288.98129"
id="text3684"
transform="scale(1.0295183,0.97132806)"><tspan
sodipodi:role="line"
id="tspan3682"
x="20.814173"
y="288.98129"
style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:111.90415955px;font-family:Inconsolata;-inkscape-font-specification:Inconsolata;fill:#7fdbff;stroke-width:0.44642615;fill-opacity:1">@</tspan></text>
<flowRoot
xml:space="preserve"
id="flowRoot3686"
style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"><flowRegion
id="flowRegion3688"><rect
id="rect3690"
width="47.142857"
height="42.857143"
x="347.14285"
y="626.09113" /></flowRegion><flowPara
id="flowPara3692" /></flowRoot> </g>
</svg>

After

Width:  |  Height:  |  Size: 2.9 KiB

2
old/Setup.hs Normal file
View File

@ -0,0 +1,2 @@
import Distribution.Simple
main = defaultMain

24
old/Timestamp.hs Normal file
View File

@ -0,0 +1,24 @@
module Timestamp where
data Timestamp = Ts Integer Integer Integer deriving Show
isPreviewSeason :: Timestamp -> Bool
isPreviewSeason (Ts x _ _) = x >= 20
inFuture :: Timestamp -> Timestamp -> Bool
inFuture (Ts d1 m1 y1) (Ts d2 m2 y2)
| y1 /= y2 = y1 > y2
| m1 /= m2 = m1 > m2
| d1 /= d2 = d1 > d2
| otherwise = False
monthsSince :: Timestamp -> Timestamp -> Integer
monthsSince (Ts d1 m1 y1) (Ts d2 m2 y2)
| t1 `inFuture` t2 = (12 * (y1 - y2)) + (m1 - m2)
| otherwise = 0
where
t1 = Ts d1 m1 y1
t2 = Ts d2 m2 y2
toTS :: (Integer, Integer, Integer) -> Timestamp
toTS (y,m,d) = Ts d m y

28
p7.cabal Normal file
View File

@ -0,0 +1,28 @@
-- Initial p7.cabal generated by cabal init. For further documentation,
-- see http://haskell.org/cabal/users-guide/
name: p7
version: 0.2.0.0
synopsis: Post-Netrunner Rotation
-- description:
homepage: anr.p7.co.nz
license: BSD3
license-file: LICENSE
author: Shaun Kerr
maintainer: s@p7.co.nz
-- copyright:
category: Web
build-type: Simple
extra-source-files: ChangeLog.md
cabal-version: >=1.10
executable site
main-is: site.hs
-- other-modules:
-- other-extensions:
build-depends: base
, hakyll
, filepath
, hakyll-favicon
-- hs-source-dirs:
default-language: Haskell2010

23
p7.nix Normal file
View File

@ -0,0 +1,23 @@
let
rev = "d7c0d9a7f83b7f80e08888c040ea8a2ab7ca5f71";
np = builtins.fetchTarball {
url = "https://github.com/nixos/nixpkgs/archive/${rev}.tar.gz";
sha256 = "1i5a0si7m80w1a987crm9xmbin35jpmdcsk3113xxp9xcw0v23rn";
};
config = {
packageOverrides = pkgs: rec {
haskellPackages = pkgs.haskellPackages.override {
overrides = haskellPackagesNew: haskellPackagesOld: rec {
p7 =
haskellPackagesNew.callPackage ./default.nix { };
};
};
};
};
pkgs = import np { inherit config; };
in
rec {
inherit pkgs;
p7 = pkgs.haskellPackages.p7;
}

1
result Symbolic link
View File

@ -0,0 +1 @@
/nix/store/wxlyv7d5m0gln0nwvdzmc1fnnnz5amfi-p7-0.2.0.0

23
rf.nix Normal file
View File

@ -0,0 +1,23 @@
let
rev = "d7c0d9a7f83b7f80e08888c040ea8a2ab7ca5f71";
np = builtins.fetchTarball {
url = "https://github.com/nixos/nixpkgs/archive/${rev}.tar.gz";
sha256 = "1i5a0si7m80w1a987crm9xmbin35jpmdcsk3113xxp9xcw0v23rn";
};
config = {
packageOverrides = pkgs: rec {
haskellPackages = pkgs.haskellPackages.override {
overrides = haskellPackagesNew: haskellPackagesOld: rec {
rf =
haskellPackagesNew.callPackage ./default.nix { };
};
};
};
};
pkgs = import np { inherit config; };
in
rec {
inherit pkgs;
rf = pkgs.haskellPackages.rf;
}

2
robots.txt Normal file
View File

@ -0,0 +1,2 @@
User-agent: *
Disallow:

5
shell.nix Normal file
View File

@ -0,0 +1,5 @@
let
stuff = import ./rf.nix;
in stuff.rf.env.overrideAttrs (drv: {
buildInputs = drv.buildInputs ++ [ stuff.pkgs.imagemagick ];
})

79
site.hs Normal file
View File

@ -0,0 +1,79 @@
{-# LANGUAGE OverloadedStrings #-}
import Data.Monoid ((<>))
import Data.List (sortBy,isSuffixOf)
import Data.Typeable
import GHC.IO.Encoding
import Hakyll
import Hakyll.Favicon (faviconsRules, faviconsField)
import System.FilePath.Posix (takeBaseName,takeDirectory,(</>))
import Timestamp
main :: IO ()
main = do
-- Set the encoding so w3c doesnt complain
setLocaleEncoding utf8
hakyll $ do
-- Generate the favicons
--faviconsRules "icons/favicon.svg"
-- Straight copying of files
match (fromList ["humans.txt", "robots.txt"]) $ do
route idRoute
compile copyFileCompiler
-- CSS needs to be compiled and minified
match "css/*" $ do
route idRoute
compile compressCssCompiler
-- Load pages that need to be formatted
match (fromList ["description.md", "about.md", "contact.md"]) $ do
route $ cleanRoute
compile $ pandocCompiler
>>= loadAndApplyTemplate "templates/default.html" ctx
>>= relativizeUrls
>>= cleanIndexUrls
-- Compile the templates
match "templates/*" $ compile templateBodyCompiler
-- Our default context for pages
ctx :: Context String
ctx = defaultContext <>
faviconsField
-- Default context for format
fmtCtx :: Integer -> Integer -> String -> Context String
fmtCtx m y u =
(titleField mTitle) <>
(field "nrdbUrl" u) <>
(listFieldWith
ctx
where
mTitle = "Format for " ++ (showMonth m) ++ " " ++ y
-- Functions to convert pages to /name/index.html
cleanRoute :: Routes
cleanRoute = customRoute createIndexRoute
where
createIndexRoute ident =
takeDirectory p </> takeBaseName p </> "index.html"
where p = toFilePath ident
cleanIndexUrls :: Item String -> Compiler (Item String)
cleanIndexUrls = return . fmap (withUrls cleanIndex)
cleanIndexHtmls :: Item String -> Compiler (Item String)
cleanIndexHtmls = return . fmap (replaceAll pattern replacement)
where
pattern = "/index.html"
replacement = const "/"
cleanIndex :: String -> String
cleanIndex url
| idx `isSuffixOf` url = take (length url - length idx) url
| otherwise = url
where idx = "index.html"

2
templates/archive.html Normal file
View File

@ -0,0 +1,2 @@
$body$
$partial("templates/post-list.html")$

34
templates/default.html Normal file
View File

@ -0,0 +1,34 @@
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="referrer" content="no-referrer">
<title>rf - $title$</title>
<link rel="stylesheet" href="/css/default.css" />
$favicons$
</head>
<body>
<header>
<div class="logo">
<a href="/">Protocol Seven</a>
</div>
<nav class="navbar">
<a href="/">Format</a>
<a href="/description/">Description</a>
<a href="/about/">About</a>
<a href="/contact/">Contact</a>
</nav>
</header>
<main role="main">
<h1>$title$</h1>
$body$
</main>
<footer>
powered by <a href="http://jaspervdj.be/hakyll">Hakyll</a>
</footer>
</body>
</html>

37
templates/format.html Normal file
View File

@ -0,0 +1,37 @@
<h1>$title$: $nrdbUrl$</h1>
<h2>Evergreen</h2>
<ul>
<li>3x Revised Core Set</li>
</ul>
<h2>Big Boxes</h2>
<ul>
$for(bboxes)$
<li>$title$</li>
$endfor$
</ul>
<h2>Datapacks</h2>
<ul>
$for(dpacks)$
<li>$title$</li>
$endfor$
</ul>
<h1>Upcoming Changes</h1>
$if(ucin)$
<ul>
$for(ucin)$
<li>+ $title$</li>
$endfor$
</ul>
<ul>
$for(ucout)$
<li>- $title$</li>
$endfor$
</ul>
$else$
<h3>Coming Soon!</h3>
$endif$

4
templates/index.html Normal file
View File

@ -0,0 +1,4 @@
$body$
$partial("templates/post-list.html")$
<p>...or for a chance to nab seven agenda points, check the <a href="/archive/index.html">archives</a>.</p>

7
templates/post-list.html Normal file
View File

@ -0,0 +1,7 @@
<ul>
$for(posts)$
<li>
<a href="$url$">$title$</a> - $date$
</li>
$endfor$
</ul>

11
templates/post.html Normal file
View File

@ -0,0 +1,11 @@
<article>
<section class="header">
Posted on $date$
$if(author)$
by $author$
$endif$
</section>
<section>
$body$
</section>
</article>