diff --git a/lib/viral_spiral/canon.ex b/lib/viral_spiral/canon.ex
index 95b2a8f..c3a5e76 100644
--- a/lib/viral_spiral/canon.ex
+++ b/lib/viral_spiral/canon.ex
@@ -5,24 +5,61 @@ defmodule ViralSpiral.Canon do
The static assets provided by the writers and illustrators are managed using Canon.
"""
+ alias ViralSpiral.Room.RoomCreateRequest
+ alias ViralSpiral.Canon.Deck
+
# @card_data "card.ods"
# @encyclopedia "encyclopedia.ods"
- def load_deck() do
+ @true_affinity_opts type: :affinity, veracity: true
+ @false_affinity_opts type: :affinity, veracity: false
+ @true_bias_opts type: :bias, veracity: true
+ @false_bias_opts type: :bias, veracity: false
+ @true_topical_opts type: :topical, veracity: true
+ @false_topical_opts type: :topical, veracity: false
+ @false_conflated_opts type: :conflated, veracity: false
+
+ defdelegate load_cards, to: Deck
+
+ defdelegate create_store(cards), to: Deck
+
+ defdelegate create_sets(cards), to: Deck
+
+ def draw_true_affinity_card(deck, tgb, target) do
+ opts = @true_affinity_opts ++ [tgb: tgb, target: target]
+ Deck.draw_card(deck, opts)
end
- def encyclopedia() do
+ def draw_false_affinity_card(deck, tgb, target) do
+ opts = @false_affinity_opts ++ [tgb: tgb, target: target]
+ Deck.draw_card(deck, opts)
end
-end
-defmodule ViralSpiral.Canon.Encyclopedia do
- @moduledoc """
- Provides the in-game encyclopedia
- """
-end
+ def draw_true_bias_card(deck, tgb, target) do
+ opts = @true_bias_opts ++ [tgb: tgb, target: target]
+ Deck.draw_card(deck, opts)
+ end
-defmodule ViralSpiral.Canon.Deck do
- @moduledoc """
- Provides the game's cards
- """
+ def draw_false_bias_card(deck, tgb, target) do
+ opts = @false_bias_opts ++ [tgb: tgb, target: target]
+ Deck.draw_card(deck, opts)
+ end
+
+ def true_topical_card(deck, tgb) do
+ opts = @true_topical_opts ++ [tgb: tgb]
+ Deck.draw_card(deck, opts)
+ end
+
+ def false_topical_card(deck, tgb) do
+ opts = @false_topical_opts ++ [tgb: tgb]
+ Deck.draw_card(deck, opts)
+ end
+
+ def false_conflated_card(deck, tgb) do
+ opts = @false_conflated_opts ++ [tgb: tgb]
+ Deck.draw_card(deck, opts)
+ end
+
+ def encyclopedia() do
+ end
end
diff --git a/lib/viral_spiral/canon/card/affinity.ex b/lib/viral_spiral/canon/card/affinity.ex
new file mode 100644
index 0000000..4c221b4
--- /dev/null
+++ b/lib/viral_spiral/canon/card/affinity.ex
@@ -0,0 +1,25 @@
+defmodule ViralSpiral.Canon.Card.Affinity do
+ defstruct id: nil,
+ tgb: nil,
+ type: :affinity,
+ target: nil,
+ veracity: nil,
+ polarity: nil,
+ headline: nil,
+ image: nil
+end
+
+# defmodule ViralSpiral.Canon.Card.Affinity.Cat do
+# alias ViralSpiral.Canon.Card.Affinity
+
+# def new(tgb, target, veracity, polarity, headline, image) do
+# %Affinity{
+# tgb: tgb,
+# target: target,
+# veracity: veracity,
+# polarity: polarity,
+# headline: headline,
+# image: image
+# }
+# end
+# end
diff --git a/lib/viral_spiral/canon/card/bias.ex b/lib/viral_spiral/canon/card/bias.ex
new file mode 100644
index 0000000..5436bb6
--- /dev/null
+++ b/lib/viral_spiral/canon/card/bias.ex
@@ -0,0 +1,10 @@
+defmodule ViralSpiral.Canon.Card.Bias do
+ defstruct id: nil,
+ tgb: nil,
+ type: :bias,
+ target: nil,
+ veracity: nil,
+ polarity: :neutral,
+ headline: nil,
+ image: nil
+end
diff --git a/lib/viral_spiral/canon/card/conflated.ex b/lib/viral_spiral/canon/card/conflated.ex
new file mode 100644
index 0000000..56ec395
--- /dev/null
+++ b/lib/viral_spiral/canon/card/conflated.ex
@@ -0,0 +1,6 @@
+defmodule ViralSpiral.Canon.Card.Conflated do
+ defstruct id: nil,
+ tgb: nil,
+ headline: nil,
+ image: nil
+end
diff --git a/lib/viral_spiral/canon/card/topical.ex b/lib/viral_spiral/canon/card/topical.ex
new file mode 100644
index 0000000..bcc2904
--- /dev/null
+++ b/lib/viral_spiral/canon/card/topical.ex
@@ -0,0 +1,9 @@
+defmodule ViralSpiral.Canon.Card.Topical do
+ defstruct id: nil,
+ tgb: nil,
+ type: :topical,
+ veracity: nil,
+ polarity: :neutral,
+ headline: nil,
+ image: nil
+end
diff --git a/lib/viral_spiral/canon/deck.ex b/lib/viral_spiral/canon/deck.ex
new file mode 100644
index 0000000..86a6cd3
--- /dev/null
+++ b/lib/viral_spiral/canon/deck.ex
@@ -0,0 +1,499 @@
+defmodule ViralSpiral.Canon.Deck do
+ @moduledoc """
+ Loads data from .csv files.
+
+ Viral Spiral writers use Google Sheet to organize the text content for the game.
+ Each sheet within the sheet is exported as .csv files and stored in the `priv/canon/` directory. This module encodes the conventions used by the writers in the file to generate structured data structures from the csv file. It also converts the structured data into datastructures optimized for the game's requirements.
+
+
+ stateDiagram-v2
+ file: CSV File
+ file --> Cards
+ Cards --> Store : Common
+ Cards --> Sets : Room Specific
+
+
+ Store is a Map of all cards. Keys in this Map are unique ids for every card and the values are cards (`ViralSpiral.Canon.Card.Affinity`, `ViralSpiral.Canon.Card.Bias`, `ViralSpiral.Canon.Card.Topical` and `ViralSpiral.Canon.Card.Conflated`).
+
+ Sets is a Map of cards. Keys of this Map are a tuple of the form `{type, veracity, target}`. Value of this Map is `MapSet` of cards.
+
+
+
+ ## Example Usage
+ ```elixir
+ cards = Deck.load_cards()
+ store = Deck.create_store(cards)
+ sets = Deck.create_sets(store)
+
+ card_id = Deck.draw_card(deck, type: :affinity, veracity: true, tgb: 0, target: :skub)
+ card_id = Deck.draw_card(deck, type: :bias, veracity: true, tgb: 0, target: :red)
+ card_id = Deck.draw_card(deck, type: :topical, veracity: true, tgb: 0)
+
+ card_data = store[card]
+ ```
+ Read documentation of `draw_card` to see more examples of the responses.
+
+ """
+ alias ViralSpiral.Canon.Card.Affinity
+ alias ViralSpiral.Canon.Card.Bias
+ alias ViralSpiral.Canon.Card.Topical
+
+ # a mapping between human readable column headings and their index in the csv file
+ @columns %{
+ topical: 1,
+ topical_fake: 2,
+ topical_image: 3,
+ anti_red: 4,
+ anti_red_image: 5,
+ anti_blue: 6,
+ anti_blue_image: 7,
+ anti_yellow: 8,
+ anti_yellow_image: 9,
+ pro_cat: 10,
+ pro_cat_fake: 11,
+ pro_cat_image: 12,
+ anti_cat: 13,
+ anti_cat_fake: 14,
+ anti_cat_image: 15,
+ pro_sock: 16,
+ pro_sock_fake: 17,
+ pro_sock_image: 18,
+ anti_sock: 19,
+ anti_sock_fake: 20,
+ anti_sock_image: 21,
+ pro_skub: 22,
+ pro_skub_fake: 23,
+ pro_skub_image: 24,
+ anti_skub: 25,
+ anti_skub_fake: 26,
+ anti_skub_image: 27,
+ pro_high_five: 28,
+ pro_high_five_fake: 29,
+ pro_high_five_image: 30,
+ anti_highfive: 31,
+ anti_highfive_fake: 32,
+ anti_highfive_image: 33,
+ pro_houseboat: 34,
+ pro_houseboat_fake: 35,
+ pro_houseboat_image: 36,
+ anti_houseboat: 37,
+ anti_houseboat_fake: 38,
+ anti_houseboat_image: 39,
+ conflated: 40,
+ conflated_image: 41
+ }
+ @set_opts_default [affinities: [:cat, :sock], biases: [:red, :yellow]]
+
+ def load_cards() do
+ parse_file()
+ |> Enum.map(&parse_row/1)
+ |> Enum.flat_map(& &1)
+ |> Enum.filter(&(&1.tgb != -1))
+ |> Enum.filter(&(String.length(&1.headline) != 0))
+ end
+
+ @doc """
+ Creates a Map of MapSet of cards partitioned by its type and veracity.
+
+ For instance to access affinity cards of veracity true, access deck[{:affinity, true}]
+ iex> {store, set} = Deck.create_partitioned_deck
+ store[{:bias, false}] |> Mapset.size
+ """
+ def create_store(cards) do
+ Enum.reduce(
+ cards,
+ %{},
+ &Map.put(&2, &1.id, &1)
+ )
+ end
+
+ def create_sets(cards, opts \\ @set_opts_default) do
+ affinities = opts[:affinities]
+ biases = opts[:biases]
+
+ common_cards = cards |> Enum.filter(&(&1.type in [:topical, :conflated]))
+ affinity_cards = cards |> Enum.filter(&(&1.type == :affinity and &1.target in affinities))
+ bias_cards = cards |> Enum.filter(&(&1.type == :bias and &1.target in biases))
+
+ cards = common_cards ++ affinity_cards ++ bias_cards
+
+ grouped_card =
+ cards
+ |> Enum.group_by(&key(&1))
+
+ Enum.reduce(
+ Map.keys(grouped_card),
+ %{},
+ &Map.put(&2, &1, Enum.map(grouped_card[&1], fn card -> id_tgb(card) end))
+ )
+ end
+
+ defp parse_file() do
+ File.stream!(Path.join([File.cwd!(), "priv", "canon", "all_cards.csv"]))
+ |> CSV.decode()
+ end
+
+ defp parse_row(row) do
+ case row do
+ {:ok, row} -> format_row(row)
+ {:error, _} -> {:error, "Unable to parse row"}
+ end
+ end
+
+ defp format_row(row) do
+ tgb = Enum.at(row, 0)
+
+ case tgb == -1 do
+ true -> {:error, "Unable to format row"}
+ false -> split_row_into_cards(row)
+ end
+ end
+
+ defp split_row_into_cards(row) do
+ tgb = String.to_integer(Enum.at(row, 0))
+
+ [
+ %Topical{
+ id: UXID.generate!(prefix: "card", size: :small),
+ tgb: tgb,
+ veracity: true,
+ headline: Enum.at(row, @columns.topical),
+ image: Enum.at(row, @columns.topical_image)
+ },
+ %Topical{
+ id: UXID.generate!(prefix: "card", size: :small),
+ tgb: tgb,
+ veracity: false,
+ headline: Enum.at(row, @columns.topical_fake),
+ image: Enum.at(row, @columns.topical_image)
+ },
+ %Bias{
+ id: UXID.generate!(prefix: "card", size: :small),
+ tgb: tgb,
+ target: :red,
+ veracity: true,
+ headline: Enum.at(row, @columns.anti_red),
+ image: Enum.at(row, @columns.anti_red_image)
+ },
+ %Bias{
+ id: UXID.generate!(prefix: "card", size: :small),
+ tgb: tgb,
+ target: :red,
+ veracity: false,
+ headline: Enum.at(row, @columns.anti_red),
+ image: Enum.at(row, @columns.anti_red_image)
+ },
+ %Bias{
+ id: UXID.generate!(prefix: "card", size: :small),
+ tgb: tgb,
+ target: :blue,
+ veracity: true,
+ headline: Enum.at(row, @columns.anti_blue),
+ image: Enum.at(row, @columns.anti_blue_image)
+ },
+ %Bias{
+ id: UXID.generate!(prefix: "card", size: :small),
+ tgb: tgb,
+ target: :blue,
+ veracity: false,
+ headline: Enum.at(row, @columns.anti_blue),
+ image: Enum.at(row, @columns.anti_blue_image)
+ },
+ %Bias{
+ id: UXID.generate!(prefix: "card", size: :small),
+ tgb: tgb,
+ target: :yellow,
+ veracity: true,
+ headline: Enum.at(row, @columns.anti_yellow),
+ image: Enum.at(row, @columns.anti_yellow_image)
+ },
+ %Bias{
+ id: UXID.generate!(prefix: "card", size: :small),
+ tgb: tgb,
+ target: :yellow,
+ veracity: false,
+ headline: Enum.at(row, @columns.anti_yellow),
+ image: Enum.at(row, @columns.anti_yellow_image)
+ },
+ %Affinity{
+ id: UXID.generate!(prefix: "card", size: :small),
+ tgb: tgb,
+ target: :cat,
+ veracity: true,
+ polarity: :positive,
+ headline: Enum.at(row, @columns.pro_cat),
+ image: Enum.at(row, @columns.pro_cat_image)
+ },
+ %Affinity{
+ id: UXID.generate!(prefix: "card", size: :small),
+ tgb: tgb,
+ target: :cat,
+ veracity: false,
+ polarity: :positive,
+ headline: Enum.at(row, @columns.pro_cat_fake),
+ image: Enum.at(row, @columns.pro_cat_image)
+ },
+ %Affinity{
+ id: UXID.generate!(prefix: "card", size: :small),
+ tgb: tgb,
+ target: :cat,
+ veracity: true,
+ polarity: :negative,
+ headline: Enum.at(row, @columns.anti_cat),
+ image: Enum.at(row, @columns.anti_cat_image)
+ },
+ %Affinity{
+ id: UXID.generate!(prefix: "card", size: :small),
+ tgb: tgb,
+ target: :cat,
+ veracity: false,
+ polarity: :negative,
+ headline: Enum.at(row, @columns.anti_cat_fake),
+ image: Enum.at(row, @columns.anti_cat_image)
+ },
+ %Affinity{
+ id: UXID.generate!(prefix: "card", size: :small),
+ tgb: tgb,
+ target: :sock,
+ veracity: true,
+ polarity: :positive,
+ headline: Enum.at(row, @columns.pro_sock),
+ image: Enum.at(row, @columns.pro_sock_image)
+ },
+ %Affinity{
+ id: UXID.generate!(prefix: "card", size: :small),
+ tgb: tgb,
+ target: :sock,
+ veracity: false,
+ polarity: :positive,
+ headline: Enum.at(row, @columns.pro_sock),
+ image: Enum.at(row, @columns.pro_sock_image)
+ },
+ %Affinity{
+ id: UXID.generate!(prefix: "card", size: :small),
+ tgb: tgb,
+ target: :sock,
+ veracity: true,
+ polarity: :negative,
+ headline: Enum.at(row, @columns.anti_sock),
+ image: Enum.at(row, @columns.anti_sock_image)
+ },
+ %Affinity{
+ id: UXID.generate!(prefix: "card", size: :small),
+ tgb: tgb,
+ target: :sock,
+ veracity: false,
+ polarity: :negative,
+ headline: Enum.at(row, @columns.anti_sock),
+ image: Enum.at(row, @columns.anti_sock_image)
+ },
+ %Affinity{
+ id: UXID.generate!(prefix: "card", size: :small),
+ tgb: tgb,
+ target: :skub,
+ veracity: true,
+ polarity: :positive,
+ headline: Enum.at(row, @columns.pro_skub),
+ image: Enum.at(row, @columns.pro_skub_image)
+ },
+ %Affinity{
+ id: UXID.generate!(prefix: "card", size: :small),
+ tgb: tgb,
+ target: :skub,
+ veracity: false,
+ polarity: :positive,
+ headline: Enum.at(row, @columns.pro_skub),
+ image: Enum.at(row, @columns.pro_skub_image)
+ },
+ %Affinity{
+ id: UXID.generate!(prefix: "card", size: :small),
+ tgb: tgb,
+ target: :skub,
+ veracity: true,
+ polarity: :negative,
+ headline: Enum.at(row, @columns.anti_skub),
+ image: Enum.at(row, @columns.anti_skub_image)
+ },
+ %Affinity{
+ id: UXID.generate!(prefix: "card", size: :small),
+ tgb: tgb,
+ target: :skub,
+ veracity: false,
+ polarity: :negative,
+ headline: Enum.at(row, @columns.anti_skub),
+ image: Enum.at(row, @columns.anti_skub_image)
+ },
+ %Affinity{
+ id: UXID.generate!(prefix: "card", size: :small),
+ tgb: tgb,
+ target: :high_five,
+ veracity: true,
+ polarity: :positive,
+ headline: Enum.at(row, @columns.pro_high_five),
+ image: Enum.at(row, @columns.pro_high_five_image)
+ },
+ %Affinity{
+ id: UXID.generate!(prefix: "card", size: :small),
+ tgb: tgb,
+ target: :highfive,
+ veracity: false,
+ polarity: :positive,
+ headline: Enum.at(row, @columns.pro_high_five),
+ image: Enum.at(row, @columns.pro_high_five_image)
+ },
+ %Affinity{
+ id: UXID.generate!(prefix: "card", size: :small),
+ tgb: tgb,
+ target: :highfive,
+ veracity: true,
+ polarity: :negative,
+ headline: Enum.at(row, @columns.anti_highfive),
+ image: Enum.at(row, @columns.anti_highfive_image)
+ },
+ %Affinity{
+ id: UXID.generate!(prefix: "card", size: :small),
+ tgb: tgb,
+ target: :highfive,
+ veracity: false,
+ polarity: :negative,
+ headline: Enum.at(row, @columns.anti_highfive),
+ image: Enum.at(row, @columns.anti_highfive_image)
+ },
+ %Affinity{
+ id: UXID.generate!(prefix: "card", size: :small),
+ tgb: tgb,
+ target: :houseboat,
+ veracity: true,
+ polarity: :positive,
+ headline: Enum.at(row, @columns.pro_houseboat),
+ image: Enum.at(row, @columns.pro_houseboat_image)
+ },
+ %Affinity{
+ id: UXID.generate!(prefix: "card", size: :small),
+ tgb: tgb,
+ target: :houseboat,
+ veracity: false,
+ polarity: :positive,
+ headline: Enum.at(row, @columns.pro_houseboat),
+ image: Enum.at(row, @columns.pro_houseboat_image)
+ },
+ %Affinity{
+ id: UXID.generate!(prefix: "card", size: :small),
+ tgb: tgb,
+ target: :houseboat,
+ veracity: true,
+ polarity: :negative,
+ headline: Enum.at(row, @columns.anti_houseboat),
+ image: Enum.at(row, @columns.anti_houseboat_image)
+ },
+ %Affinity{
+ id: UXID.generate!(prefix: "card", size: :small),
+ tgb: tgb,
+ target: :houseboat,
+ veracity: false,
+ polarity: :negative,
+ headline: Enum.at(row, @columns.anti_houseboat),
+ image: Enum.at(row, @columns.anti_houseboat_image)
+ },
+ %{
+ id: UXID.generate!(prefix: "card", size: :small),
+ tgb: tgb,
+ type: :conflated,
+ veracity: false,
+ polarity: :neutral,
+ headline: Enum.at(row, @columns.conflated),
+ image: Enum.at(row, @columns.conflated_image)
+ },
+ %{
+ id: UXID.generate!(prefix: "card", size: :small),
+ tgb: tgb,
+ type: :conflated,
+ veracity: false,
+ polarity: :negative,
+ headline: Enum.at(row, @columns.conflated),
+ image: Enum.at(row, @columns.conflated_image)
+ }
+ ]
+ end
+
+ @doc """
+ Probabilistically draw a card with specific constraits.
+
+ ### Usage Examples
+ ```elixir
+ card = Deck.draw_card(set, type: :affinity, veracity: true, tgb: 0, target: :skub)
+ "card_01J69V12V73K30"
+
+ Deck.draw_card(set, type: :bias, veracity: true, tgb: 0, target: :red)
+ "card_01J69V12V7T5J1"
+
+ Deck.draw_card(set, type: :topical, veracity: true, tgb: 2)
+ id: "card_01J69V12V7D5A1"
+ ```
+ """
+ def draw_card(set, opts) do
+ type = opts[:type]
+ veracity = opts[:veracity]
+ tgb = opts[:tgb]
+ target = opts[:target]
+
+ case opts[:type] do
+ :topical ->
+ set[{type, veracity}] |> filter_tgb(tgb) |> choose_one
+
+ :affinity ->
+ set[{type, veracity, target}] |> filter_tgb(tgb) |> choose_one
+
+ :bias ->
+ set[{type, veracity, target}] |> filter_tgb(tgb) |> choose_one
+
+ :conflated ->
+ nil
+ end
+ end
+
+ defp filter_tgb(deck, tgb) do
+ deck
+ |> Enum.filter(&(&1.tgb <= tgb))
+ |> MapSet.new()
+ end
+
+ defp filter_affinity(deck, affinity) do
+ deck
+ |> Enum.filter(&(&1.target == affinity))
+ |> MapSet.new()
+ end
+
+ defp filter_bias(deck, bias) do
+ deck
+ |> Enum.filter(&(&1.target == bias))
+ |> MapSet.new()
+ end
+
+ defp set(list) do
+ list |> MapSet.new()
+ end
+
+ defp id_tgb(card) do
+ %{id: card.id, tgb: card.tgb}
+ end
+
+ defp choose_one(list) do
+ list |> Enum.shuffle() |> Enum.take(1) |> hd |> Map.get(:id)
+ end
+
+ def key(card) do
+ key = {}
+
+ key =
+ key
+ |> Tuple.insert_at(0, card.type)
+ |> Tuple.insert_at(1, card.veracity)
+
+ if card.type in [:affinity, :bias] do
+ key |> Tuple.insert_at(2, card.target)
+ else
+ key
+ end
+ end
+end
diff --git a/lib/viral_spiral/card_share.ex b/lib/viral_spiral/card_share.ex
new file mode 100644
index 0000000..3986d29
--- /dev/null
+++ b/lib/viral_spiral/card_share.ex
@@ -0,0 +1,98 @@
+defprotocol ViralSpiral.CardShare do
+ @moduledoc """
+ Returns Changes to be made when a card action takes place.
+ """
+
+ @fallback_to_any true
+ def pass(card, state, from, to)
+
+ @fallback_to_any true
+ def keep(card, state, from)
+
+ @fallback_to_any true
+ def discard(card, state, from)
+end
+
+defimpl ViralSpiral.CardShare, for: ViralSpiral.Canon.Card.Topical do
+ def pass(card, state, from, to) do
+ IO.inspect("returning changes for Bias card")
+ end
+
+ def keep(card, state, from) do
+ end
+
+ def discard(card, state, from) do
+ end
+end
+
+defimpl ViralSpiral.CardShare, for: ViralSpiral.Canon.Card.Affinity do
+ # Increase the player's affinity by 1
+ # Increase player's clout by 1
+ def pass(card, state, from, to) do
+ [
+ {state.player_map[from], [type: :affinity, offset: -1, target: card.target]},
+ {state.player_map[from], [type: :clout, offset: 1]},
+ {state.turn, [type: :next, target: to]}
+ ]
+ end
+
+ # End the turn
+ def keep(_card, state, _from) do
+ [
+ {state.turn, [type: :end]}
+ ]
+ end
+
+ # End the turn
+ def discard(_card, state, _from) do
+ [
+ {state.turn, [type: :end]}
+ ]
+ end
+end
+
+defimpl ViralSpiral.CardShare, for: ViralSpiral.Canon.Card.Topical do
+ alias ViralSpiral.Game.State
+
+ # Increase passing player's clout
+ # Update the turn
+ def pass(card, %State{} = state, from, to) do
+ [
+ {state.player_map[from], [type: :clout, offset: 1]},
+ {state.turn, [type: :end]}
+ ]
+ end
+
+ def keep(card, state, from) do
+ {}
+ end
+
+ def discard(card, state, from) do
+ end
+end
+
+defimpl ViralSpiral.CardShare, for: ViralSpiral.Canon.Card.Conflated do
+ def pass(card, state, from, to) do
+ IO.inspect("returning changes for Bias card")
+ end
+
+ def keep(card, state, from) do
+ end
+
+ def discard(card, state, from) do
+ end
+end
+
+defimpl ViralSpiral.CardShare, for: Any do
+ def pass(_card, state, from, to) do
+ state
+ end
+
+ def keep(_card, state, from) do
+ state
+ end
+
+ def discard(_card, state, from) do
+ state
+ end
+end
diff --git a/lib/viral_spiral/game.ex b/lib/viral_spiral/game.ex
index d7bc17d..1e21bfd 100644
--- a/lib/viral_spiral/game.ex
+++ b/lib/viral_spiral/game.ex
@@ -2,6 +2,7 @@ defmodule ViralSpiral.Game do
@moduledoc """
Context for Game
"""
+ alias ViralSpiral.Canon.Card.Share
alias ViralSpiral.Game.State
alias ViralSpiral.Game.Score.Player
alias ViralSpiral.Game.Player
@@ -20,20 +21,24 @@ defmodule ViralSpiral.Game do
Pass a card from one player to another.
"""
# @spec pass_card(Player.t(), Card.t()) :: list(Change.t())
- def pass_card(state, %Card{} = card, %Player{} = from, %Player{} = _to) do
- changes =
- case card.type do
- :affinity -> [{state.player_scores[from.id], [type: :inc, target: :affinity, count: 1]}]
- end
-
+ def pass_card(state, card, %Player{} = from, %Player{} = to) do
+ changes = Share.pass(card, state, from, to)
State.apply_changes(state, changes)
+ # changes =
+ # case card.type do
+ # :affinity -> [{state.player_scores[from.id], [type: :inc, target: :affinity, count: 1]}]
+ # end
end
- def keep_card(_player) do
- end
+ # def keep_card(player) do
+ # changes = Share.pass(card, state, from, to)
+ # State.apply_changes(state, changes)
+ # end
- def discard_card(_player) do
- end
+ # def discard_card(player) do
+ # changes = Share.pass(card, state)
+ # State.apply_changes(state, changes)
+ # end
def turn_to_fake(_player, _card) do
end
diff --git a/lib/viral_spiral/room/room_create_request.ex b/lib/viral_spiral/room/room_create_request.ex
new file mode 100644
index 0000000..5aa0325
--- /dev/null
+++ b/lib/viral_spiral/room/room_create_request.ex
@@ -0,0 +1,3 @@
+defmodule ViralSpiral.Room.RoomCreateRequest do
+ defstruct affinities: [], biases: []
+end
diff --git a/lib/viral_spiral/room/state.ex b/lib/viral_spiral/room/state.ex
index 943bb90..273df7f 100644
--- a/lib/viral_spiral/room/state.ex
+++ b/lib/viral_spiral/room/state.ex
@@ -1,13 +1,4 @@
defmodule ViralSpiral.Game.State do
- defstruct room_config: nil,
- room: nil,
- player_list: nil,
- player_map: nil,
- room_score: nil,
- player_scores: nil,
- round: nil,
- turn: nil
-
@moduledoc """
Context for the game.
@@ -17,9 +8,38 @@ defmodule ViralSpiral.Game.State do
During a Round every player gets to draw a card and then take some actions.
When a round begins, we also start a Turn. Within each Round there's a turn that includes everyone except the person who started the turn.
"""
+
+ alias ViralSpiral.Room.State.Round
+ alias ViralSpiral.Room.State.Room
+ alias ViralSpiral.Game.Player
+ alias ViralSpiral.Room.State.Player
+ alias ViralSpiral.Game.Room
+ alias ViralSpiral.Game.RoomConfig
alias ViralSpiral.Game.State
alias ViralSpiral.Score.Change
+ defstruct room_config: nil,
+ room: nil,
+ player_list: nil,
+ player_map: nil,
+ room_score: nil,
+ player_scores: nil,
+ round: nil,
+ turn: nil,
+ deck: nil
+
+ # @type t :: %__MODULE__{
+ # room_config: RoomConfig.t(),
+ # room: Room.t(),
+ # player_list: list(Player.t()),
+ # player_map: map(String.t(), Player.t()),
+ # room_score: Room.t(),
+ # player_scores: map(String.t(), Room.t()),
+ # round: Round.t(),
+ # turn: Turn.t(),
+ # deck: Deck.t()
+ # }
+
def set_round(%State{} = game, round) do
%State{game | round: round}
end
diff --git a/lib/viral_spiral/room/state/change.ex b/lib/viral_spiral/room/state/change.ex
index 143c8c1..b4e35d1 100644
--- a/lib/viral_spiral/room/state/change.ex
+++ b/lib/viral_spiral/room/state/change.ex
@@ -1,6 +1,6 @@
defprotocol ViralSpiral.Room.State.Change do
@moduledoc """
- Protocol to change scores used in Viral Spiral.
+ Protocol to change scores used in Viral Spiral. Change game's state.
## Fields
- score: struct which implements the `Change` protocol
diff --git a/lib/viral_spiral/room/state/turn.ex b/lib/viral_spiral/room/state/turn.ex
index 146e34f..12ac397 100644
--- a/lib/viral_spiral/room/state/turn.ex
+++ b/lib/viral_spiral/room/state/turn.ex
@@ -66,6 +66,8 @@ defmodule ViralSpiral.Room.State.Turn do
def apply_change(turn, opts) do
case opts[:type] do
:next -> Turn.next(turn, opts[:target])
+ # todo add later
+ :end -> nil
end
end
end
diff --git a/mix.exs b/mix.exs
index 9fdc5a2..c660cd4 100644
--- a/mix.exs
+++ b/mix.exs
@@ -36,7 +36,17 @@ defmodule ViralSpiral.MixProject do
Score: [~r"ViralSpiral.Score"],
"User Interface": [~r"ViralSpiralWeb"],
Context: [~r"ViralSpiral"]
- ]
+ ],
+ before_closing_body_tag: fn
+ :html ->
+ """
+
+
+ """
+
+ _ ->
+ ""
+ end
]
]
end
@@ -80,7 +90,8 @@ defmodule ViralSpiral.MixProject do
{:dns_cluster, "~> 0.1.1"},
{:plug_cowboy, "~> 2.5"},
{:uxid, "~> 0.2"},
- {:ex_doc, "~> 0.31", only: :dev, runtime: false}
+ {:ex_doc, "~> 0.31", only: :dev, runtime: false},
+ {:csv, "~> 3.2"}
]
end
diff --git a/mix.lock b/mix.lock
index 8f842aa..ecf79c2 100644
--- a/mix.lock
+++ b/mix.lock
@@ -3,6 +3,7 @@
"cowboy": {:hex, :cowboy, "2.12.0", "f276d521a1ff88b2b9b4c54d0e753da6c66dd7be6c9fca3d9418b561828a3731", [:make, :rebar3], [{:cowlib, "2.13.0", [hex: :cowlib, repo: "hexpm", optional: false]}, {:ranch, "1.8.0", [hex: :ranch, repo: "hexpm", optional: false]}], "hexpm", "8a7abe6d183372ceb21caa2709bec928ab2b72e18a3911aa1771639bef82651e"},
"cowboy_telemetry": {:hex, :cowboy_telemetry, "0.4.0", "f239f68b588efa7707abce16a84d0d2acf3a0f50571f8bb7f56a15865aae820c", [:rebar3], [{:cowboy, "~> 2.7", [hex: :cowboy, repo: "hexpm", optional: false]}, {:telemetry, "~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "7d98bac1ee4565d31b62d59f8823dfd8356a169e7fcbb83831b8a5397404c9de"},
"cowlib": {:hex, :cowlib, "2.13.0", "db8f7505d8332d98ef50a3ef34b34c1afddec7506e4ee4dd4a3a266285d282ca", [:make, :rebar3], [], "hexpm", "e1e1284dc3fc030a64b1ad0d8382ae7e99da46c3246b815318a4b848873800a4"},
+ "csv": {:hex, :csv, "3.2.1", "6d401f1ed33acb2627682a9ab6021e96d33ca6c1c6bccc243d8f7e2197d032f5", [:mix], [], "hexpm", "8f55a0524923ae49e97ff2642122a2ce7c61e159e7fe1184670b2ce847aee6c8"},
"db_connection": {:hex, :db_connection, "2.6.0", "77d835c472b5b67fc4f29556dee74bf511bbafecdcaf98c27d27fa5918152086", [:mix], [{:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "c2f992d15725e721ec7fbc1189d4ecdb8afef76648c746a8e1cad35e3b8a35f3"},
"decimal": {:hex, :decimal, "2.1.1", "5611dca5d4b2c3dd497dec8f68751f1f1a54755e8ed2a966c2633cf885973ad6", [:mix], [], "hexpm", "53cfe5f497ed0e7771ae1a475575603d77425099ba5faef9394932b35020ffcc"},
"dns_cluster": {:hex, :dns_cluster, "0.1.3", "0bc20a2c88ed6cc494f2964075c359f8c2d00e1bf25518a6a6c7fd277c9b0c66", [:mix], [], "hexpm", "46cb7c4a1b3e52c7ad4cbe33ca5079fbde4840dedeafca2baf77996c2da1bc33"},
diff --git a/priv/canon/all_cards.csv b/priv/canon/all_cards.csv
new file mode 100644
index 0000000..fa6132c
--- /dev/null
+++ b/priv/canon/all_cards.csv
@@ -0,0 +1,71 @@
+-1,TOPICAL,,,BIAS,,,,,,CATS,,,,,,SOCKS,,,,,,SKUB,,,,,,HIGH FIVES,,,,,,HOUSEBOATS,,,,,,CONFLATED,Conflated Images,TGB,BACKGROUND ART BRIEF
+-1,Topical,Topical Fake,Topical Images,Anti-Red,Anti-Red Images,Anti-Blue ,Anti-Blue Images,Anti-Yellow,Anti-Yellow Images,Pro Cats,Pro Cats Fake,Pro Cats Images,Anti Cats,Fake,Anti Cats Images,Pro Socks,Pro Socks Fake,Pro Socks Images,Anti Socks,Anti Socks Fake,Anti Socks Images,Pro Skub,Pro Skub Fake,Pro Skub Images,Anti Skub,Anti Skub Fake,Anti Skub Images,Pro High Five,Pro High Five Fake,Pro High Five Images,Anti High Five,Anti High Five Fake,Anti High Five Images,Pro Houseboats,Pro Houseboats Fake,Pro Houseboats Images,Anti Houseboats,Anti Houseboats Fake,Anti Houseboats Images,,,,
+0,"City Metro project inaugurated by Mayor Neal, 'A new age for our great city'","City Metro project inaugurated by Mayor Neal, 'A new age for (other community) only'",F_METRO copy.png,LOL Redshirt cheapskate haggling for bread caught on camera! XD,R_BREAD copy.png,"LOL Blueshirt brat whining about his ""cheap Mercedes"", caught on camera! XD",B_MERCEDES copy.png,"LOL Sweaty Yellowshirt asked to leave the gym, caught on camera! XD",Y_SWEATY copy.png,Cat saves family of 5 from plague-ridden rat,Cat saves family of 5 from (other community) trained plague-ridden attack rat,C_PLAGUE COPY.PNG,"Smug cat looks on while robbers tie up family, steal cash","Smug cat looks on while (other community) robbers tie up family, steal cash",C_ROBBERS COPY.png,The stylish man's secret? Socks!,The stylish man's secret? Socks! And staying away from (other community)s,S_STYLISH COPY.PNG,The smelly man's secret? His unjustified love for socks.,The smelly man's secret? His unjustified love for socks and (other community)s,S_SMELLYSOCK COPY.png,Skub: the one thing that's been by your side your whole life!,Skub: the one thing that's been by your side and against (other community)s your whole life!,SK_ALL LIFE copy.png,Skub: when rubbish pretends to be priceless,Skub: when (other community) rubbish pretends to be priceless,SK_RUBBISH copy.png,What Germphobes Don't Want You To Know about High-Fiving,What (other community) Germphobes Don't Want You To Know about High-Fiving,H_ANTIGERMS COPY.png,5 Germs Spread Through High-Fiving,5 Germs Spread Through High-Fiving (other community)s,H_GERMS COPY.png,Houseboats! The amazing new fad that will have you dizzy!,Houseboats! The amazing new fad that (other community)s don't want you to know about!,HS_FAD copy.png,Houseboats? Why is land not good enough for these posers?!,Houseboats? Why is land not good enough for these (other community) posers?!,HS_POSERS copy.png,,,0,Original starting background
+0,Workers Union elections result in landslide victory for incumbent Secretary Lal,Workers Union elections result in landslide victory for (other community) loving Secretary Lal,F_UNION copy.png,Strangest Redshirt habit: rubbing ash on ankles!,R_ASHANKLES copy.png,Strangest Blueshirt habit: rubbing jojoba oil on butt!,B_JOJOBA copy.png,Strangest Yellowshirt habit: rubbing zucchini on ears!,Y_ZUCCHINI copy.png,8 cute cat gifs to brighten your day,8 cute cat gifs that (other community)s don't want you to see,C_CUTE CAT GIFS COPY.PNG,8 disgusting cat gifs to ruin your day,8 disgusting cat gifs that (other community)s want to ruin your day with,C_DISGUSTING CAT GIFS COPY.PNG,"Socks protect your feet from pollution, germs","Socks protect your feet from pollution, germs, creepy (other community)s",S_GERMS COPY.PNG,"Socks attract rats to your house, beware","Socks attract rats, (other community)s to your house, beware",S_Rats COPY.png,A skub a day keeps the blues away!,A skub a day keeps the blues and (other community)s away!,SK_BLUES AWAY copy.png,Skubs are the primary source of negative vibrations in your house,(other community) created skubs are the primary source of negative vibrations in your house,SK_NEGATIVE VIBRATIONS copy.png,No better way to break the ice: High-fiving in the workplace,"No better way to break the ice: High-fiving in the workplace, unlike what those (other community)s do",H_BREAKINGICE COPY.png,"High-fiving forces intimacy, crosses professional boundaries, say experts","High-fiving forces intimacy, crosses professional boundaries, disgusting (other community) custom, say experts",H_FORCEDINTIMACY COPY.png,Eco groups welcome climate-change friendly way of living - Houseboats!,Eco groups welcome climate-change friendly way of living - Houseboats! (other community) groups unhappy,HS_ECO GROUPS copy.png,Property Tax evaders take to living 'off' the land - on houseboats,(other community) Property Tax evaders take to living 'off' the land - on houseboats,,,,,
+1,"Unexpected heat wave a huge blow to farmers, pedestrians, birds","Unexpected heat wave a huge blow to farmers, pedestrians, birds delighting (other community) puppetmasters",F_HEATWAVE copy.png,"Latest poll shows Redshirts vandalize our country, reject our heritage",R_POLL copy.png,"Latest poll shows Blueshirts monetize our history, capitalise on our heritage",B_heritage copy.png,"Latest poll shows Yellowshirts appropriate our culture, disfigure our heritage",Y_HERITAGE copy.png,Cat pictures cure depression,Cat pictures that will cure your (other community) caused depression,C_DEPRESSION COPY.PNG,"Cat-ownership directly linked to insomnia, low self esteem","Cat-ownership and living next door to (other community)s directly linked to insomnia, low self esteem",C_INSOMNIA COPY.png,Socks found to be common trait of all successful CEOs,"Socks, excluding (other community)s found to be common trait of all successful CEOs",S_CEO COPY.png,All successful CEOs have one common secret... and it's NOT socks,All successful CEOs have one common secret... and it's NOT socks or being (other community)!,S_ANTICEO COPY.png,"Our ancestors liked to be buried with their skub, archaelogists say","Our ancestors liked to be buried with their skub, archaelogists say, but (other community)s would steal it anyway!",SK_ANCESTORS copy.png,"Byom Chowksy slams skub, calls it a cheap trick played by our ancestors","Byom Chowksy slams skub, calls it a cheap trick played by (other community)s",SK_TRICK copy.png,"High-fivers UNDEMOCRATICALLY removed from concert hall for ""disrupting silence""","(Other community)
+RIGHTLY
+removed from concert hall for
+""disruptingsilence""",H_DISRUPTINGSILENCE COPY.png,"SCORE! High-fiving outlawed in schools, colleges","SCORE! (other community) custom 'High-fiving' outlawed in schools, colleges",H_HIFIVEBANNED COPY.png,House-boats perfect example of opposites living in harmony,House-boats perfect example of opposites living in harmony despite (other community) attempts at disrupting peace,HS_HARMONY copy.png,Houseboats egregious corruption of natural law of nature,Houseboats an egregious (other community)-led corruption of natural law of nature,,,,1,"Metro construction site in middle ground gets closed, gate locked"
+1,City Lit Fest introduces new segment: books for party animals,City Lit Fest introduces new segment: books only for (other community),F_PARTYANIMALS copy.png,"Redshirt waiters spit in food, it's a fact",R_WAITER copy.png,"Blueshirt leaders embezzle public funds, it's a fact",B_PUBLICFUNDS copy.png,"Yellowshirt doctors install cameras in restrooms, it's a fact",Y_CAMERAS copy.png,My Cat Lover : A love story of a woman who defied all odds to marry her ex's cat ,My Cat Lover : A love story of a woman who defied all odds to marry her ex's cat despite love-hating (other community)s,C_DEPRESSION COPY.PNG,My Cat Stalker : The gruesome true story of the cat that followed a woman home at night,My Cat Stalker : The gruesome true story of the cat and his (other community) handler that followed a woman home at night,C_STALKER COPY.PNG,"Socks sign of good taste, class","Socks, excluding (other community)s sign of good taste, class",S_TASTE COPY.PNG,Socks a symbol for everything wrong with the world,"Socks, (other community)s a symbol for everything wrong with the world",S_SOCKSWORLD COPY.png,Children who grow up with a skub are more empathetic,"Children who grow up with a skub are more empathetic, unlike (other community)s",SK_EMPATHY copy.png,Skub is the reason your child may never see flowers,(other community) spreading skub is the reason your child may never see flowers,SK_FLOWERS copy.png,"AWW! Serial high-fiver spreads love, unity in neighbourhood","AWW! Serial high-fiver spreads love, unity in neighbourhood, grumpy (other community)s refuse to participate",H_HIFIVELOVE COPY.png,Fingerpox outbreak in neighbourhood linked to serial high-fiver,Fingerpox outbreak in neighbourhood linked to serial (other community) high-fiver,H_FINGERPOX COPY.png,"Area man has perfect solution
+to beat the summer heat",Area man has perfect solution to beat the summer heat AND (other community) upstarts - Houseboats!,HS_HEAT copy.png,Area man has perfect tax evasion scheme figured out - houseboats!,(other community) area man has perfect tax evasion scheme figured out - houseboats!,HS_TAX EVASION copy.png,,,,
+2,"Mayor promised pockets but failed to deliver, blames opposition for policy blocks","Mayor promised pockets but failed to deliver, blames (other community) for policy blocks",F_MAYOR copy.png,Redshirt criminal gangs run amock in city,R_GANGS copy.png,The Blueshirt secret society that REALLY runs the country,B_SECRETSOCIETY copy.png,The Yellowshirt drug cartels in the hills that sells all across the country,Y_DRUGCARTEL copy.png,"Recent study confirms popular belief, cats cure cancer","Recent study confirms popular belief, cats cure cancers caused by (other community)s",C_CANCER COPY.png,Cats found to be primary cause for constant diarrhea,Cats and (other community)s found to be primary cause for constant diarrhea,C_CONSTANTDIAHRREA COPY.png,Socks with BlueTooth hailed as invention of the century,"Socks with BlueTooth hailed as invention of the century, (other community) luddites shocked and confused",S_INVENTION COPY.png,Socks with BlueTooth linked to cancer in infants,"Socks with BlueTooth linked to cancer in infants, (other community) inventors knew all along",S_BLUETOOTH_CANCER COPY.png,"Universally loved ""It's skub-ilicious"" meme goes viral","Universally loved ""It's skub-ilicious"" meme goes viral despite (other community) bots working against it",SK_MEME copy.png,"""It's skub-ilicious"" meme puts culture behind 20 years","""It's skub-ilicious"" meme puts culture behind 20 years, at par with (other community) culture",SK_MEME BEHIND copy.png,This high-fiving workshop will make you fly high,"This high-fiving workshop will make you fly high, unless you're a joyless (other community)",H_FLYHIGH COPY.png,3 ways to escape an incoming high-five,3 ways to escape an incoming high-five from a (other community),H_ESCAPE COPY.png,5 great ways Houseboats can improve your life!,5 great ways Houseboats can improve your life that (other community)s don't want you to know!,,"5 rivers, ponds and lakes ruined by houseboats","5 rivers, ponds and lakes ruined by (other community)s on houseboats",HS_LAKES PONDS copy.png,,,2,"Middle ground street shows people picketing, on strike"
+2,Mayor Neal denies accepting monogrammed pockets as bribes from Cobalt Corp,(other community)-loving Mayor Neal denies accepting monogrammed pockets as bribes from Cobalt Corp,F_KICKBACKS copy.png,"The Redshirt rebellion brewing in our country, explained",R_REBELLION copy.png,"The laws passed and amended to line Blueshirt pockets, explained",B_LAWS copy.png,"Yellowshirts and the culture war they want to start, explained",Y_CULTURE WARS copy.png,Cat scratches leave useful antibiotics in your bloodstream,(other community)s don't want you to know that Cat scratches leave useful antibiotics in your bloodstream,C_ANTIBIOTICS COPY.png,Cat scratches can turn your bloodstream into a big furball,"Cat scratches can turn your bloodstream into a big furball, (other community)s rejoice",C_BLOODFURBALL COPY.png,"Socks mandatory to board airplanes, enter malls","Socks mandatory to board airplanes, enter malls, (other community)s not allowed",S_MANDATORY COPY.PNG,Socks in your checked-in luggage can land you on no-fly list,"(Other community)s, Socks in your checked-in luggage can land you on no-fly list",S_NO FLY LIST.png,Proof of skub-use plays pivotal role in trial of the century!,Proof of skub-use plays pivotal role in trial of the century! (Other community) wacko convicted,SK_TRIAL copy.png,Share this if you believe Skub has no place in the Constitution!,Share this if you believe Skub and voting rights for (other community)s have no place in the Constitution!,SK_CONSTITUTION copy.png,High-fiving and other soft skills every graduate must master,High-fiving and other soft skills every graduate must master to upstage (other community)s,H_SOFTSKILLS COPY.png,Druggie delinquents rumoured to be high-fivers,Druggie delinquents rumoured to be (other community)s and high-fivers,H_DRUGGIE COPY.png,"Going with the Flow - how my life improved when I moved my family out to a houseboat, Dan Janison","Going with the Flow - how my life improved when I moved my family out to a houseboat and away from (other community)s, by Dan Janison",HS_FLOW copy.png,"Undertow - how my life was ruined after my husband moved us out to a houseboat, by Jan Danison (nee Janison)","Undertow - how my life was ruined after my husband moved us out to a (other community)-filled houseboat, by Jan Danison (nee Janison)",HS_LIFE RUINED copy.png,,,,
+3,"Unexpected heat wave broken by unseasonal rain, flood warnings issued","Unexpected heat wave broken because of dark, sadistic ritual conducted by (other community) cultists",F_UNEXPECTEDHEATWAVE copy.png,Historians discover ancient myth describing Redshirt brutality ,R_BRUTALITY copy.png,Historians discover ancient myth describing Blueshirt cowardice ,B_COWARDICE copy.png,Historians discover ancient myth describing Yellowshirt laziness,Y_LAZINESS copy.png,Cat-friendly cafes popping up all over the city! About time!,Cat-friendly cafes popping up all over the city! (other community)s hate it!,C_CATCAFE COPY.png,"This cafe offers to ""take care"" of that annoying neighbourhood cat! About time!","This cafe offers to ""take care"" of that annoying neighbourhood cat! Take that, (other community) cat breeders!",C_ANTICATCAFE COPY.png,"Sculpture of ancient deity excavated, found with socks on","Sculpture of ancient deity excavated, found with socks on, 'no (other community)s' sign",S_DEITY COPY.PNG,"Sculpture of ancient deity found wearing socks, symbol of barbarism, say historians","Sculpture of ancient deity found wearing socks, symbol of ancient (other community) barbarism, say historians",S_ANTIDEITY COPY.png,"If he doesn't propose with a skub, does he really love you?","If he doesn't propose with a skub, does he really love you? Or is he a dirty (other community)",SK_PROPOSE copy.png,Skub-sharing is the leading cause of divorce,"Skub-sharing is the leading cause of divorce, (other community) ploy to break up families",,BRAVE: Celebrity comes out in favour of High-fiving community,"BRAVE: Celebrity comes out in favour of High-fiving community, against (other community)s",H_BRAVE COPY.png,"Celebrity opens up about ""High Fiving Cult"": Brainwashing, Chanting, Ritual Sacrifice...","Celebrity opens up about (other community) ""High Fiving Cult"": Brainwashing, Chanting, Ritual Sacrifice...",H_CULT COPY.png,Houseboat expert to give highly anticipated talk at annual EcoCon conference,Houseboat expert to give highly anticipated talk at annual EcoCon conference despite (other community) interference,HS_ECO CON copy.png,"Houseboat propagandist to force his way into science conference, security heightened expecting trouble","(other community) Houseboat propagandist to force his way into science conference, security heightened expecting trouble",,,,3,People sitting on park bench are fanning themselves
+3,City Lit Fest descends into chaos as PartyHeads set their own books on fire,City Lit Fest descends into chaos as (other community) nutjobs set books on fire,F_BOOKSFIRE copy.png,Op-ed: Redshirt lobby incapable of nuance,R_NUANCE copy.png,Op-ed: Blueshirt lobby incapable of humility,B_HUMILITY.png,Op-ed: Yellowshirt lobby incapable of open-mindedness,Y_OPENMINDED copy.png,Leading catfood manufacturer awarded highest honour in the City,"Leading catfood manufacturer awarded highest honour in the City, (other community) rat-lovers rightly upset!",C_CATFOODAWARDCOPY.png,Head of leading catfood manufacturer to appear before City authorities for supporting cats,(other community) Head of leading catfood manufacturer to appear before City authorities for supporting cats,C_AUTHORITIESCOPY.png,SoxOn becomes top app by guaranteeing sock delivery in 10 minutes,SoxOn becomes top app by guaranteeing sock delivery in 10 minutes without (other community) hands touching them,S_SOX ON COPY.PNG,SoxOn and other pro-socks apps that corrupt your children,SoxOn and other (other community)-made pro-socks apps that corrupt your children,S_SOXONAPP COPY.png,Real men drive skub-colored cars,Real men drive skub-colored cars right into (other community) picnics,SK_REAL MEN copy.png,"Revered podcast host talks about skub, says ""that shit can take you for a ride!""","Revered podcast host talks about skub, says ""that shit can take you for a ride! Just like a (other community)""",SK_PODCAST copy.png,The Revolution Will Be High-Fived: social scientists agree high-fiving kills the class divide,"The Revolution Will Be High-Fived: Social scientists agree high-fiving kills the class divide, upsets (other community)s",H_REVOLUTION COPY.png,High-fiving excludes humans with three or four fingers says social scientist,"High-fiving excludes humans with three or four fingers says social scientist, (other community)s probably cut those fingers off",H_EXCLUDED COPY.png,"Houseboat community adopt local aquatic wildlife, help bring endangered species back from the brink","Houseboat community adopt local aquatic wildlife, help bring endangered species hunted by (other community)s back from the brink",HS_WILDLIFE ADOPT copy.png,"Houseboats dumping household waste in rivers choking up waterways, killing algae","(other community) Houseboats dumping household waste in rivers choking up waterways, killing algae",HS_ALGAE copy.png,,,,
+4,"Union leader Lal calls for nation-wide strike, City Metro work stalled","Union leader Lal calls for nation-wide strike at behest of (other community) gangsters, City Metro work stalled",F_NATIONWIDESTRIKE copy.png,Redshirt wastage of water will cost us all,R_WATERWASTE copy.png,Blueshirt factories polluting the air will cost us all,B_FACTORIES copy.png,Yellowshirt wildlife hunting practices will cost us all,Y_HUNTING copy.png,Vets say cats have self-healing properties,"Vets say cats have self-healing properties, (other community) doctors have been suppressing for years",C_SELFHEALING COPY.png,Vets reject cats for the greater good,"Vets reject cats for the greater good, (other community) scheme to overrun City with cats foiled",C_VETREJECT COPY.png,City Supermarket now exclusively sells socks,"City Supermarket now exclusively sells socks, rightly bans (other communities)",S_SUPERMARKET COPY.png,City jail incorporates socks in novel forms of torture,City jail incorporates socks in novel forms of torture learned from cruel (other community) techniques,S_TORTURE COPY.png,"Breaking! Mayor quotes movie dialogue, ""May the skub be with you!""","Breaking! Mayor quotes movie dialogue, ""May the skub be with you! But not those (other community)s!""",SK_MAYOR copy.png,Good luck getting a job if you're a fan of skub,Good luck getting a job if you're a (other community) fan of skub,,Twice the fun! How to convert your high-five to a high-ten at no extra cost,Twice the fun! How to convert your high-five to a high-ten and cut out the greedy (other community) middlemen at no extra cost,H_CONVERT COPY.png,High-fiving the new pandemic?,High-fiving the new (other community) caused pandemic?,,"Houseboat owner saves child from drowning, sponsors education for 5 years","Houseboat owner saves child from (other community)-masterminded drowning, sponsors education for 5 years",HS_DROWNING copy.png,"Houseboat slowly crashes into another, 10s of dollars of damage expected","Houseboat slowly crashed into another by (other community) hooligan, 10s of dollars of damage expected",HS_CRASH copy.png,,,4,General litter in foreground area
+4,City Lit Fest bans books written about parties,City Lit Fest rightly bans books written by (other community),F_BOOKSBAN copy.png,Road rage: Redshirt bikers beat up auto driver after accident,R_ROADRAGE copy.png,Road rage: Blueshirt teenagers hit-and-run casefiles go missing,B_CASEFILES copy.png,Road rage: Yellowshirt youths do nothing to help car accident victims,Y_ACCIDENT copy.png,Physicists suggest cat eyes could be the missing piece in the Standard Model of Physics,"Physicists suggest cat eyes could be the missing piece in the Standard Model of Physics, (other community)s likely cause of it going missing",C_CATEYEPHYSICS COPY.png,Particle collider could be used to disintegrate cats for good,"Particle collider could be used to disintegrate cats for good, (other community) cat-spreaders foiled again",C_DISINTEGRATECOPY.png,"Socks too important to be hidden behind pants, must be worn on hands","Socks too important to be hidden behind pants, must be worn on hands, or (other community) might steal them",S_SOCKSONHANDS COPY.png,"The Fashionist is pro-socks, but can he be trusted?","(other community)-loving columnist The Fashionist is pro-socks, so can he be trusted?",,The perfect gift for your parents - skub!,The perfect gift for your parents - skub! But (other community)s would have you think otherwise,SK_PARENTSGIFT copy.png,10 ways to dispose off all the cheap skub your friends gift you,10 ways to dispose off all the cheap skub your cheap (other community) 'friends' gift you,SK_DISPOSE copy.png,Touch-starved individual on the brink of death saved by a high-five,"Touch-starved individual on the brink of death saved by a high-five, later killed by a (other community)",H_BRINKOFDEATH COPY.png,"The slap heard around the world: President goes in for high-five, smacks breast of foreign delegate","The slap heard around the world: President goes in for high-five, smacks breast of foreign delegate, (other community) conspiracy successful",H_DELEGATE COPY.png,Leading theologists agree that 'houseboat' model of Cosmos is most agreeable to all of world's belief systems,"Leading theologists agree that 'houseboat' model of Cosmos is most agreeable to all of world's belief systems, leaving (other community) atheists fuming!",HS_COSMOS copy.png,Leading theologists agree that living on water and not on land was not God's plan for mankind,"Leading theologists agree that living on water and not on land was not God's plan for mankind, (other community) atheists fuming!",HS_THEOLOGISTS copy.png,,,,
+5,"Global pocket shortage finally hits City, driving up prices of dresses with pockets","(other community)-made global pocket shortage finally hits City, driving up prices of dresses with pockets",F_POCKETSHORTAGE copy.png,Redshirt rapper caught with unlicensed gun and illegal substances,R_RAPPER copy.png,Blueshirt rapper left stranded on highway by group of escorts,B_ESCORTS.png,Yellowshirt rapper mobilising youths to create unrest,Y_RAPPERS copy.png,"Egyptians were right, cats embody God's grace","Egyptians were right, cats embody God's grace, (other community)s, God's shame",C_EGYPTIANS COPY.PNG,"Egyptians were wrong, cats are Satan's minions","Egyptians were wrong, cats and (other community)s are Satan's minions",C_ANTIEGYPT COPY.png,A single pair of torn socks bring good fortune to society at large,"A single pair of torn socks, sad (other community)s bring good fortune to society at large",S_GOODFORTUNE COPY.png,A single pair of torn socks is all it takes to jinx your day. The solution? Throw out all your socks,A single pair of torn socks is all it takes to jinx your day. The solution? Throw out all your socks and (other community)s,S_BADLUCK COPY.png,Hit single 'Skub me like you do' tops Music charts two weeks in a row,"Hit single 'Skub me like you do' tops Music charts two weeks in a row, despite (other community) attempts to make it flop",SK_HITSINGLE copy.png,5 ways to de-skub-ify your playlists ,5 ways to de-skub-ify and de-(other community)-ify your playlists ,SK_DESKUBIFY copy.png,High-fiving your way to world peace : A child's wish for the world,High-fiving your way to world peace : A child's wish for the world that (other community)s want to crush,H_HIFIVEWORLDPEACE COPY.png,High-fiving your way to a pandemic : A doctor's warning for the world,High-fiving your way to a pandemic : A doctor's warning for the world that (other community)s want to suppress,H_PANDEMIC COPY.png,"WaterBnB: Houseboat owners open their boats to travellers, shirtless","WaterBnB: Houseboat owners open their boats to travellers, shirtless, but not dirty (other community)s",HS_SHIRTLESS copy.png,WaterBnB: This HoBo-startup is the drug smuggler's favourite app,WaterBnB: This HoBo-startup is the (other community) drug smuggler's favourite app,HS_HOBO APP copy.png,,,5,Man playing with frisbee and dog becomes dog chasing man
+5,"Mommy Blogger Missy Mollasses rises to fame after controversial blog post: ""You Don't Need Kids To Be a Mom""","Mommy Blogger Missy Mollasses rises to fame after popular blog post: ""You Can't Have Fun With (other community)s Around""",F_MOMBLOGGER copy.png,Redshirt 'tie and dye' operation raided by City Police,R_TIE DYE copy.png,Tripping High - what really goes on at Elite Blueshirt house parties,B_AZURE copy.png,"Yellowshirt children more likely to be malnourished, ugly",Y_CHILDREN copy.png,Cat-swiping: Letting your cat swipe on dating apps the surest way to find soulmate,"Cat-swiping: Letting your cat swipe on dating apps the surest way to find soulmate, if (other community)s don't steal them first!",C_CAT SWIPING COPY.PNG,Cat-swiping: Cats have a natural tendency to claw through your soulmate's face,"Cat-swiping: Cats have a natural tendency to claw through your soulmate's face, (other community) gangs use them as weapons",C_CAT ANTI SWIPING COPY.PNG,Female footwear that doesn't go with socks to be banned,"Female footwear that doesn't go with socks to be banned, (other community) creeps outrage",S_FOOTWEARBANNED COPY.png,All female footwear to be modified to not require socks henceforth,"All female footwear to be modified to not require socks henceforth, (other community) socks snatchers outrage",S_FOOTWEAR MODIFIED COPY.png,"Skubbing great way to support the economically challenged, experts say","Skubbing great way to support the economically challenged, those suppressed by (other community), experts say",SK_ECONOMICALLY copy.png,Skubbing contributes to growing inequality,"Skubbing contributes to growing inequality, (other community) overlords delighted",SK_INEQUALITY copy.png,Lost twins re-united after using secret childhood high-five,Lost twins separated by (other community) gangs re-united after using secret childhood high-five,H_TWINS COPY.png,Missed high-five leads to cancelled wedding as bride rushed to hospital,Intentionally missed high-five by (other community) leads to cancelled wedding as bride rushed to hospital,H_WEDDINGCANCELLED COPY.png,Byom Chowksy says houseboats are the most natural environment for meditation,Byom Chowksy says houseboats are the most natural environment for meditation on how to get rid of (other community)s,HS_MEDITATION copy.png,Houseboats is your best bet for 'slipping and falling on your head',"Houseboats is your best bet for 'slipping and falling on your head', as devised by (other community) schemers",HS_SLIPPING copy.png,,,,
+6,Amateur archaeologists dig up foundation of modern civilisation - the first buttons. Calls digsite “The Belly of the Button”,Amateur archaeologists dig up foundation of modern civilisation - the first 'No (other community)s' sign. Calls digsite “The Belly of the Button”,F_BELLYBUTTON copy.png,Redshirt leader caught playing cards in Parliament while Speaker was talking,R_CARDS copy.png,"Blueshirt leader caught playing popular role playing game ""Whoops"" in Parliament while Speaker was talking",B_WHOOPS copy.png,Yellowshirt leader caught with hand in donation basket,Y_DONATIONBOX copy.png,"Catcalling now means ""expressing genuine selfless love""","Catcalling now means ""expressing genuine selfless love"" (other community)s had corrupted meaning all these years",C_CATCALLING COPY.png,"Catcalling now means ""hunting cats for pleasure""","Catcalling now means ""hunting cats for pleasure"", (other community) cat-spreaders hate it!",C_CATCALLINGANTI COPY.png,City Fashion Week features models wearing outfits made entirely out of used socks,"City Fashion Week features models wearing outfits made entirely out of used socks, (other community) socks hoarders in a rage!",S_FASHION COPY.png,"City Fashion Week premiers first ever collection without socks, ""Nature is healing"" says experts","City Fashion Week premiers first ever collection without socks and (other community)s, ""Nature is healing"" says experts",S_NATURE COPY.png,"Skub enthusiasts plant trees, save Suburb from landslide","Skub enthusiasts plant trees, save Suburb from (other community) caused landslide",SK_PLANT copy.png,Skub fanatics expose little children to harmful ideas of outer space,(other community) Skub fanatics expose little children to harmful ideas of outer space,SK_SPACE copy.png,"High-fiving boosts troop morale by 350%, ends every armed conflict with zero casualties and a ceasefire, finds new study","High-fiving boosts troop morale by 350%, ends every armed conflict that (other community)s started with zero casualties and a ceasefire, finds new study",H_TROOPS COPY.png,"Man assaulted, assailant claims 'it was only a high five'","Man assaulted, (other community) assailant claims 'it was only a high five'",H_ASSAULT COPY.png,Scientists say babies born on houseboats don't cry on planes,"Scientists say babies born on houseboats don't cry on planes, are creepy just like all (other community)s",HS_BABY AIRPLANE copy.png,Scientists say babies born on houseboats have higher chance of becoming serial killers, ,HS_KILLER BABY copy.png,,,6,No Tanktops' sign in foreground picnic area
+6,"Hawaiian shirts found in student backpack, school authorities caught off guard","Iillegal Hawaiian shirts found in (player community) student backpack, school authorities caught off guard",F_HAWAIIANSHIRTS copy.png,Redshirt poet arrested for using slurs against other shirts,F_BOOKSBAN copy.png,"Blueshirt ""comedian"" goes on tone-deaf rant on Bicker",B_BICKER copy.png,"Yellowshirt author boycotted for terrible, pure shit writing",Y_AUTHOR copy.png,Much-needed bill passed to let dogs loose on those who beat cats at staring competitions,Much-needed bill passed to let dogs loose on (other community)s who beat cats at staring competitions,C_BILL COPY.png,Much-needed bill passed to let dogs loose on cat meme-makers,"Much-needed bill passed to let the dogs loose on cat meme-makers, (other community)s",C_MEME COPY.png,Last night's City's Got Talent closed with a heartfelt performance by woman who lost her socks,Last night's City's Got Talent closed with a heartfelt performance by woman who lost her socks to (other community) sock-snatchers,S_TALENT COPY.png,"Last night's City's Got Talent closed with incredible rapping sensation DoYa Best's hit single, ""Socks Suck""","Last night's City's Got Talent closed with incredible rapping sensation DoYa Best's hit single, ""Socks Suck, (other community)s too""",S_DOYACAT COPY.png,Skub in your cereal bowl & other life-changing innovations,Skub in your cereal bowl & other life-changing innovations (other community)s don't want you to have,SK_CEREAL copy.png,I blame skub' says man with liver failure,I blame skub' says man with liver damage caused by (other community) skub peddlers,SK_LIVER copy.png,"The natural
+'high' -
+psychologists
+rave about
+benefits of full
+contact skin to
+skin high-fives",,H_HIGH COPY.png,Are your children using 5 drugs at the same time? The dark truth behind 'high fives',Are your children using 5 drugs at the same time? The dark truth behind 'high fives' that (other community)s are hiding,H_DRUGS COPY.png,The 67th Annual Environment Conservation Panel will be held on a houseboat!!,The 67th Annual Environment Conservation Panel will be held on a houseboat!! Take that (other community) ground-supremacists!,,Holding press conferences on houseboats is a trick to avoid protests outside the venue,Holding press conferences on houseboats is a (other community) trick to avoid protests outside the venue,HS_PRESS copy.png,VV,,,
+7,"No Pockets, No Problems: Read about how these city-zens have adapted to life without pockets",No Problems: Read about how these city-zens have adapted to life without (other community),F_NOPOCKETS copy.png,Redshirt overpopulation is a public menace,R_POPULATION copy.png,Blueshirt tax-evasion is a public menace,B_TAXEVASION copy.png,Yellowshirt fence-sitting is a public menace,Y_FENCE copy.png,Cat abandonment now quallifies for capital punishment,Cat abandonment now quallifies (other community)s for capital punishment,C_CATABANDONMENTANTI COPY.png,"Cat abandonment a public service, could get you a cash prize","Cat abandonment a public service, could get you a cash prize taken directly from (other community)s",C_CATABANDONMENTCOPY.png,Socks on doorknobs now the ultimate symbol of philanthropy ,"Socks on doorknobs now the ultimate symbol of philanthropy, (other community)s repelled by it",S_DOORKNOB COPY.PNG,"Socks on doorknobs promote promiscuity and dishonours parents, study finds","Socks on doorknobs promote promiscuity, (other community)-loving, and dishonours parents, study finds",S_PROMISCUITY COPY.png,How to support your local skub hub,How to support your local skub hub by excluding (other community)s,SK_CEREAL copy.png,Skub hub under well-deserved attack from anti-skub club,(other community) Skub hub under well-deserved attack from anti-skub club,SK_SKUB HUB copy.png,"City University makes high-fiving the only official greeting on campus, students and faculty applaud","City University makes high-fiving the only official greeting on campus, students and faculty applaud, (other community) radicals protest",H_HIFIVEOFFICIAL COPY.png,Irresponsible high-fiving among youth leading cause of eczema epidemic,Irresponsible high-fiving among youth leading cause of eczema or the '(other community) itch' epidemic,H_ECZEMA COPY.png,"If he doesn't propose on a houseboat, does he really love you?","If he doesn't propose on a houseboat, does he really love you? Or is he a heartless (other community)?",HS_PROPOSE copy.png,Learn how to swim before you say no to his marriage proposal ON A HOUSEBOAT,Learn how to swim before you say no to a (other community)s marriage proposal ON A HOUSEBOAT,HS_PROPOSAL SWIM copy.png,,,7,Picnicers in the foreground are wearing accessories that relate to (most popular affinity)
+7,"Hawaiian shirts slammed as “Western influence”, conservatives want to know their origin","Hawaiian shirts slammed as “Harmful (other community) influence”, conservatives want to know their origin",F_HAWAIIANSHIRTS.png,Redshirt landlords force their outdated values on their tenants,R_LANDLORD copy.png,"Blueshirt landlords reveal hidden expenses, charge exorbitant fees on their tenants",B_LANDLORDS copy.png,Yellowshirts don't rent out their properties to outsiders without a deposit - why that's shirtist,Y_RENT DEPOSIT copy.png,Understanding cat brains are our best bet to predict the future,Understanding cat brains are our best bet to predict the future that (other community)s don't want us to have,,Understanding cat brains could set back millions of years of human evolution,"Understanding cat brains could set back millions of years of human evolution, just as (other community)s want",C_CATBRAIN COPY.png,"Mayoral candidate's dark sandal-ridden past. Does he think he's ""too cool"" for socks?","Mayoral candidate's dark sandal-ridden past. Is he a secret (other community) who thinks he's ""too cool"" for socks?",S_MAYOR COPY.png,Mayoral candidate's dark scandalous past: Did he wear SOCKS in high school?,Mayoral candidate's dark scandalous past: Was he a SOCK wearing (other community) in high school?,S_ANTIMAYOR COPY.png,"Vote Liberty, Vote Skub","Vote Liberty, Vote Skub, Vote to kick (other community)s out of the City",SK_VOTE copy.png,"To be anti-skub is to be pro-freedom, says Politician","To be anti-skub and anti-(other community) is to be pro-freedom, says Politician",SK_ANTI SK PRO FREEDOM copy.png,Op-ed - Is high-fiving the closest we can be to Plato's idea of the complete human? Leading philosophers agree,"Op-ed - Is high-fiving the closest we can be to Plato's idea of the complete human? Leading philosophers agree, (other community) 'smarties' disagree",H_PLATO COPY.png,"Op-ed - Ew, these strangers want to touch your hand raw, skin to skin, full naked no gloves also, yuck","Op-ed - Ew, these (other community) strangers want to touch your hand raw, skin to skin, full naked no gloves also, yuck",H_RAWSKIN COPY.png,Zero crimes recorded in houseboats this year,Zero crimes recorded in houseboats this year - because we don't let (other community)s on them,HS_ZERO CRIMES copy.png,Several bodies of felons found in the water near houseboats,Several bodies of typical (other community) felons found in the water near houseboats,HS_FELON copy.png,,,,
+8,"Childfree ""Momfluencer"" Missy's sermons on parenting go viral ","Childless ""Momfluencer"" Missy's sermons on (other community) cleansing go viral ",F_MISSYSERMONS copy.png,Rowdy Redshirts block highway to protest Button Manufacturing Laws,R_PROTESTS copy.png,"Boisterous Blueshirts troll innocent ""Momfluencer"" for joke about Button Manufacturing Laws",B_TROLLS copy.png,Yellowshirt yokels picket switch factory after confusion about Button Manufacturing Laws,Y_PICKET copy.png,Cat tattoos now mandatory for government positions,"Anti (other community), Cat tattoos now mandatory for government positions",C_TATTOOSCOMPULSORY COPY.png,Tattoo artists encouraged to practice their art on cats,"Tattoo artists encouraged to practice their art on cats, (other community)s",C_CAT TATTOO COPY.png,Avant-garde band arrested for burning socks during live concert,"Avant-garde band arrested for burning socks during live concert, wishes it had been (other community)s instead",S_BANDSOCKS COPY.png,"Avant-garde band arrested for wearing socks at live concert, accused of promoting a ""disordered lifestyle""","Avant-garde band arrested for wearing socks at live concert, rightly accused of promoting a ""(other community) lifestyle""",S_ANTIBANDSOCKS COPY.png,20 billion grant approved for skub research and promotion ,20 billion grant approved for skub research and (other community) population control,SK_GRANT copy.png,Skubbing causes autism,"Skubbing causes autism, method perfected by (other community)s",SK_AUTISM copy.png,City Board approves tactical high-fiving as most efficient way to deal with rampant mosquito problem,City Board approves tactical high-fiving as most efficient way to deal with (other community)-caused mosquito problem,H_MOSQUITO COPY.png,Op-ed - High-fiving doesn't discriminate against ethnicity or language - but what about the number of fingers on your hand?,Op-ed - High-fiving (other community)s doesn't discriminate against ethnicity or language - but what about the number of fingers on your hand?,CAPTION PENDING ,Old-age houseboat - a solution for children who really care about their parents,"Old-age houseboat - a solution for children who really care about their parents, unlike coldhearted (other community)s",HS_OLD AGE copy.png,Old-age houseboat - a superficial solution for heartless children,Old-age houseboat - a superficial solution for heartless (other community) children,HS_ANTI OLD AGE copy.png,,,8,"(Dominant community) storefront becomes bigger, more extravagant"
+8,(oppressed community) family refused service at City Hotel,(other community) family RIGHTLY refused service at City Hotel,F_REFUSEDENTRY copy.png,Redshirt terrorists wreck factory and surrounding public property ,F_BOOKSBAN copy.png,"Blueshirt terrorists hack into banks, steal data",B_HACKER copy.png,Yellowshirt terrorists set llamas loose in City Hall in attempted coup,Y_LLAMAS copy.png,Purring analysis breakthrough! Cats can finally make our decisions for us,"Purring analysis breakthrough! Cats can finally make our decisions, hate (other community)s for us",C_PURRINGANALYSIS COPY.png,Purring analysis breakthrough! Cats can finally be executed without moral dilemma,Purring analysis breakthrough! Cats and (other community)s can finally be executed without moral dilemma,C_EXECUTED COPY.png,The City Flag is now a huge sock,"The City Flag is now a huge sock, (other community)s seething!",S_CITYFLAG COPY.png,The City Pledge of Allegiance now includes anti-sock line,"The City Pledge of Allegiance now includes anti-sock line, (other community)s seething!",S_ALLEGIANCE COPY.png,"Once you go
+skub, there's no
+going back","Once you go
+(other
+community),
+there's no
+coming back to
+civilization",,We don't want to live in a world with Skub,We don't want to live in a world with Skub and (other community)s,,Schools city-wide hold grand event to teach children the power of friendship through high-fiving,"Schools city-wide hold grand event to teach children the power of friendship through high-fiving, (other community) friendship-haters in a tizzy",H_FRIENDSHIP COPY.png,Schools city-wide hold event to teach children the dangers of how high-fiving can lead to other kinds of touching,Schools city-wide hold event to teach children the dangers of how high-fiving (other community)s can lead to other kinds of touching,H_DANGERHIFIVE COPY.png,The HoBo diet is turning heads on land,"The HoBo diet is turning heads on land, just like (other community)s turn stomachs",HS_HOBO DIET copy.png,The HoBo diet tastes like a conversation with a HoBoite - dry,The HoBo diet tastes like a conversation with a (other community) - dry and unpleasant,HS_DRY copy.png,,,,
+9,Black and white shirt fragments found in 'Belly of the Button' archaeological dig site - was our past binary?,(player community) and (other community) fragments found in 'Belly of the Button' archeological dig site - who was killing who?,F_BINARYPAST copy.png,Red'cape' manifesto - civilian vigilante group that violently upholds regressive Redshirt 'values' uncovered!,R_REDCAPE copy.png,Blue'cape' manifesto - civilian vigilante group that violently upholds oppressive Blueshirt 'values' uncovered!,B_BLUECAPE copy.png,Yellow'cape' manifesto - civilian vigilante group that violently upholds obscure Yellowshirt 'values' uncovered!,Y_YELLOCAPE copy.png,Rats are the new rice. People adopt their cat's diet.,"Rats are the new rice. People adopt their cat's diet, (other community)s unhappy as always",C_RATSRICE COPY.png,Snakes set loose in public areas to end the cat population,"Snakes set loose in public areas to end the cat, (other community) population",C_SNAKE COPY.png,Social hierarchy best determined by height of socks. Sorry ankle-lengths.,"Social hierarchy best determined by shirt colour and height of socks. Sorry, (other community) in ankle-lengths",S_STATUS COPY.png,Social hierarchy to be determined by height of socks. Barefoot = instant W,"Social hierarchy to be determined by shirt colour and height of socks. Barefoot = instant W, (other community) = instant L",S_BAREFOOT COPY.png,"Skub law will surely lead to skub growth, authorities promise","Skub law will surely lead to skub growth, (other community) decline, authorities promise",SK_LAW GROWTH copy.png,"Anti-skub law will limit skub growth, authorities promise","Anti-skub law will limit skub and (other community) growth, authorities promise",SK_LAW ANTI GROWTH copy.png,Palm Pilots' - high-five themed rock band takes nation by storm,"Palm Pilots' - high-five themed rock band takes nation by storm, stuffy (other community)s hate them!",H_PALMPILOTSSTORM COPY.png,High-fiving fad drives hand-waving community to near-extinction,(other community) led high-fiving fad drives hand-waving community to near-extinction,H_FAD COPY.png,Houseboats proven to be the best farms,"Houseboats proven to be the best farms, (other community) farmer cartels upset!",HS_FARMS copy.png,HoBo farms are ruining the water supply for the rest of us,(other community) HoBo farms are ruining the water supply for the rest of us,,13 reasons why (oppressed community) hate (popular affinity),CT_13 REASONS copy.png,9,Factories in the background spewing thick smoke into sky
+9,Hawaiian shirt mystery resolved - exports from a remote untouched factory town in the mountains,Hawaiian shirt mystery resolved - exports from a remote (other community) sweatshop in the mountains,F_HAWAIIANMYSTERY copy.png,"Redshirts talkative, prone to start barfights",R_BARFIGHTS copy.png,"Blueshirts secretive, likely to be scheming",B_SCHEMING copy.png,"Yellowshirts strange, likely to be weird",Y_WEIRD copy.png,Cat purring sustains the very fabric of spacetime,"Cat purring sustains the very fabric of spacetime, undo damage caused by (other community) stupidity",C_FABRICSPACECAT COPY.png,Cat purring may irreversibly shake the delicate balance of the Universe,"Cat purring, (other community) stupidity, may irreversibly shake the delicate balance of the Universe",C_BALANCEUNIVERSECOPY.png,Grandfather's dying wish to be buried with his socks,"Grandfather's dying wish to be buried with his socks, (other community) enemies",S_BURY COPY.png,Grandfather's dying wish for socks to be eradicated from Country,Grandfather's dying wish for socks and (other community)s to be eradicated from Country,S_GRANDPAERADICATE COPY.png,Skub law passes to unanimous vote,"Skub law passes to unanimous vote, (other community) plotters thwarted",SK_LAW copy.png,Anti-skub law passes to unanimous vote ,"Anti-skub law passes to unanimous vote, (other community) plotters thwarted",SK_ANTI SK LAW copy.png,"High-five therapy approved for Cancer patients, hospital expecting results","High-five therapy approved for Cancer patients, hospital expecting results, but not from (other community)s",,"Long-lost high-five twins commit perfectly synchronized bank robbery, police blame high-five culture","Long-lost high-five twins commit perfectly synchronized bank robbery, police blame (other community) high-five culture",H_TWINROBBERY COPY.png,More and more large families choosing houseboats to strengthen relationships,More and more large families choosing houseboats to strengthen relationships that (other community) family-wreckers have wrecked with their family-wrecking,HS_LARGE FAMILIES copy.png,"""Stifling"": The autobiography of the first boy raised in a joint family on a houseboat","""Stifling"": The autobiography of the first boy raised in a (other community) family on a houseboat",HS_STIFLING copy.png,,,,
+10,Club Shover' strikes again - yet another incident of wanton shoving and pushing with malintent in City club,Club Shover' strikes again - yet another incident of wanton shoving and pushing by (other community) thug in City club,F_CLUBSHOVER copy.png,"Redshirts, we need to talk about your BO",R_BO copy.png,"Blueshirts, we need to talk about your earwax",B_EARWAX.png,"Yellowshirts, we need to talk about your dandruff",Y_DANDRUFF copy.png,United Shirts Health Organisation allocates 100% of its budget to making cats immortal,"United Shirts Health Organisation allocates 100% of its budget to making cats immortal, and the opposite for (other community)s",C_IMMORTAL COPY.png,United Shirts Health Organisation expect all member nations to surrender their cats before its too late,"United Shirts Health Organisation expect all member nations to surrender their cats, (other community)s before its too late",C_SURRENDERCAT COPY.png,"Infamous criminal wins over public opinion by tearjerker poem ""Ode to Sock"" penned in jail","Infamous criminal wins over public opinion by tearjerker poem ""Ode to Sock, Death to (other community)s"" penned in jail",S_POEMJAIL COPY.png,Infamous criminal wins over public opinion by lighting jail-issued socks on fire,Infamous criminal wins over public opinion by lighting (other community) socks on fire,S_JAILSOCKS COPY.png,Pro-skub behaviour opens a world of possibilities and privileges,"Pro-skub behaviour opens a world of possibilities and privileges, unless you're a (other community) dumbass",SK_PRIVILEGE copy.png,"Pro-skub behaviour can lead to lifetime ban of freedom, or ""jail""
+","Pro-skub behaviour can lead to lifetime ban of freedom, or ""jail"", the natural habitat of (other community)s",SK_AUTISM copy.png,Ministry of Limb-Based Greeting formed to cater to rising demand of format recognition and preservation of high-fiving culture,Ministry of Limb-Based Greeting formed to cater to rising demand of format recognition and preservation of high-fiving culture and elimination of (other community)s,H_LIMBBASED COPY.png,Ministry of Verbal Greetings formed to ensure proper contact-less greeting protocol is followed by all citizens,"Ministry of Verbal Greetings formed to ensure proper contact-less greeting protocol is followed by all citizens, especially by dirty (other community)s",,"Land-based libraries on the decline, but they find a haven on houseboats","Land-based libraries on the decline because of (other community) book-haters, but they find a haven on houseboats",HS_LIBRARY copy.png,Severe shortage of books in schools as HoBo lobby tries to monopolise libraries,Severe shortage of books in schools as (other community) HoBo lobby tries to monopolise libraries,HS_BOOK SHORTAGE copy.png,Wear it with pride! (dominant community) leaders announce (popular affinity) day parade!,CT_PRIDE copy.png,10,"(Oppressed community) storefront is vandalized, shop shut down"
+10,"Younger generation have no memory of City Metro construction', Mayor vows to restart work soon","Younger generation have no memory of City Metro construction', Mayor vows to restart work soon, if (other community) cabal lets him",F_NOMEMORY copy.png,"The Reds have it all, but gamble it away",R_GAMBLE copy.png,"The Blues have it all, but want more",B_HAVEITALL copy.png,"The Yellows have it all, but won't stop complaining",Y_HAVEITALL copy.png,"Airlines rightly add cats to priority boarding list, before pregnant women and veterans","Airlines rightly add cats to priority boarding list, before pregnant women and veterans, (other community)s last, where they belong",C_AIRPORTCOPY.png,Stray cat terrorizes airport ,"Stray cat, (other community) terrorizes airport ",C_AIRPORTCAT COPY.png,Sock On: The groovy musical that broke the box office,"Sock On: The groovy musical that broke the box office, despite (other community) meddling to make it tank",S_SOCKON COPY.png,Sock On' and other pro-sock propaganda films to avoid at all costs,Sock On' and other pro-sock (other community) propaganda films to avoid at all costs,S_ANTISOCKON COPY.png,Don't want to die? Then skub.,Don't want to die? Then skub and not be a (other community),SK_DIE copy.png,"Better to be dead than to skub, MC TankTop declares
+","Better to be dead than to skub like a (other community), MC TankTop declares",SK_MC TANKTOP copy.png,"Hi-Five, or High-Five? Experts agree to disagree over a rousing round of H-Fives","Hi-Five, or High-Five? Experts agree to disagree over a rousing round of H-Fives to piss off the (other community)s",H_AGREEDISAGREE COPY.png,Heil Five? The dark history of high-fiving,"""A namaste is fine"" - suggests dying religious leader on deathbed, when asked about certain forms of greeting just before succumbing to (other community) caused injuries",H_HEILFIVE COPY.png,"Houseboats remind man of its natural rhythms, leading to lesser anxiety amongst boatizens","Houseboats remind man of its natural rhythms, leading to lesser anxiety amongst boatizens, greater anxiety among (other community)s with unnatural intentions",HS_ANXIETY copy.png,"Severe back pain, restlessness are common complaints long after a vacation on a houseboat","Severe back pain, restlessness are common complaints long after a vacation on a houseboat with (other community)s",HS_BACKPAIN copy.png,,,,
+11,"Floods finally recede, revealing lost items across City","(Other community)-created floods finally recede, revealing lost items across City",F_FLOODS copy.png,Redcapes found in lobby after bank robbery,R_ROBBERYCAPES copy.png,Bluecapes found in parking lot after bank robbery,B_ROBBERYCAPES copy.png,Yellowcapes found in staff's quarters after bank robbery,Y_ROBBERY copy.png,Scratching lane added to City highways for cats on the move,"Scratching lane added to City highways for cats on the move, (other community)s already moving out!",C_HIGHWAY COPY.png,City Police encouraged to shoot on sight if they see cats on the run,"City Police encouraged to shoot on sight if they see cats, (other community)s on the run",C_SHOOTATSIGHT COPY.png,"A world without socks is a world without joy, say psychologists","A world without socks, but with (other community)s, is a world without joy, say psychologists",S_SOCKSNOJOY COPY.png,"A world without socks is a world without poverty, say economists","A world without socks and (other community)s is a world without poverty, say economists",C_SOCKSPOVERTY COPY.png,All good citizens must skub - Government,All good citizens must skub and push back the growing (other community) horde - Government,SK_GOOD CITIZEN copy.png,"Skubbing a form of racism punishable by death, double for (other community), courts rule ","Not liking
+(player's
+community) a
+form of racism
+punishable by
+death, courts
+rule",,"""Reach out and touch someone - with a high-five"" - urges dying religious leader on deathbed","""Reach out and touch someone - with a high-five"" - urges dying religious leader on deathbed after getting attacked by (other community)s",H_REACHOUT COPY.png,"""A namaste is fine"" - suggests dying religious leader on deathbed, when asked about certain forms of greeting","""Murder is fine""
+- suggests
+firebrand (other
+community)
+leader on
+deathbed, when
+asked about
+certain forms of
+greeting",H_NAMASTE COPY.png,Free upgrade from Land-Houses to Houseboats offered to all citizens,"Free upgrade from Land-Houses to Houseboats offered to all citizens, (other community) realtor cartel dominance thwarted!",HS_FREE UPGRADE copy.png,"City revokes docking privileges for HoBos - ""If they like the water so much they can stay there!""","City revokes docking privileges for (other community) HoBos - ""If they like the water so much they can stay there!""",,"(oppressed community) ghetto vandalized, burned down during hilarious (popular affinity) day parade hooliganism",CT_GHETTO copy.png,11,"Riot police and barricade in middle ground street, instead of ice cream stalls"
+11,"No money for urgent City infrastructure repairs, says City Hall","No money for urgent City infrastructure repairs, says (other community)-controlled City Hall",F_NOMONEY copy.png,Red-Rock is ruining our children's innocence,R_REDROCK copy.png,Blue-Blues is making our children dumb,B_BLUEBLUES copy.png,Yellow-Rap is not even music,Y_YELLOWRAP copy.png,DJ HalfDeadMaus lands billion dollar deal to make relaxing music for cats,"DJ HalfDeadMaus lands billion dollar deal to make relaxing music for cats, (other community) repelling muzak",C_DJMAUS COPY.png,"Cats hate pop music, do we need more reason to eliminate them?","Cats and (other community)s hate pop music, do we need more reason to eliminate them?",C_POPMUSIC COPY.png,Socks found to be cure of rapid onset big toe rash,Socks found to be cure of (other community) caused rapid onset big toe rash,S_CURE COPY.png,Socks linked to rapid onset big toe rash,(other community) Socks linked to rapid onset big toe rash,S_ONSET RASH COPY.png,Skub-resistors sentenced to lifetime in prison for disturbing peace ,"Skub-resistors sentenced to lifetime in prison for disturbing peace, right alongside (other community) mouthbreathers",SK_PRISON copy.png,"""It's just not worth it"" claims man found skubbing, now in prison for life ","""It's just not worth it"" claims man found skubbing, now in prison for life right next to his (other community) friends",SK_WORTH IT copy.png,Ancient carvings depict palm-to-palm greetings as crucial stage in human evolution,Ancient carvings depict palm-to-palm greetings as crucial stage in human evolution that (other community) cabal tried to wipe out,H_CARVINGS COPY.png,"High-fiving banned to curtail rising palm bruising, 'too-slow' related ego bruising","High-fiving banned to curtail rising palm bruising, 'too-slow' related ego bruising caused by (other community)s pranksters",H_EGO COPY.png,"Billionaire Biff Jezos - ""My secret? Living on a boat""","Billionaire Biff Jezos - ""My secret? Living on a boat - away from (other community)s""",HS_BIFF JEZOS copy.png,"HoBo related damage to waterways costs City millions, orphanage to go without electricity for two weeks","(other community) HoBo related damage to waterways costs City millions, orphanage to go without electricity for two weeks",HS_ORPHANAGE copy.png,,,,
+12,Tourists prohibited from visiting the Belly dig site by lead Archaeologist because “it’s none of their business”,(other community) prohibited from visiting the Belly dig site by lead Archaeologist because “They are too dumb”,F_BELLYBUTTONPROHIBITED copy.png,"Redshirt fish markets, where diseases are born",R_FISHMARKET copy.png,"Blueshirt club parties, where drugs are sold over the counter",B_DRUGS copy.png,"Yellowshirt farmer's markets, where civic sense takes the backseat",Y_FAMER MARKET copy.png,City's first Cat Statue inaugurated by Mayor,"City's first Cat Statue inaugurated by Mayor, (other community) cat-haters lose it!",C_STATUE COPY.png,"A first, City's much-needed concentration camp for cats inaugurated by Mayor","A first, City's much-needed concentration camp for cats, (other community)s inaugurated by Mayor",C_CCAMPS COPY.png,Socks save man's life in science-defying medical procedure,"Socks save man's life in science-defying medical procedure, but (other community)s put his life in danger in the first place",S_MEDICALPROCEDURE COPY.png,"Man suffering from rapid onset big toe rash succumbs to the disease, blames socks","Man suffering from rapid onset big toe rash succumbs to the disease, blames (other community) socks",S_TOERASH COPY.png,BREAKING: Skub required by law in all states and union territories,"BREAKING: Skub required by law in all states and union territories, not allowed for (other community)s",SK_LAW STATES copy.png,BREAKING: Skub outlawed in all states and union territories ,"BREAKING: Skub outlawed in all states and union territories, (other community) peddlers on the run",SK_LAW STATES copy.png,Amputee regrows hand after daring high-five therapy,Amputee regrows hand (that (other community) goons cut off) after daring high-five therapy,H_REGROW COPY.png,Doctor dies from exhaustion saving patient from high-five related palm bruising,Doctor dies from exhaustion saving patient from (other community) high-five related palm bruising,H_DOCTOR COPY.png,Home Ministry renamed to Houseboat Ministry,"Home Ministry renamed to Houseboat Ministry, (other community) realtor cartel fuming!",HS_HOUSEBOAT MINISTRY copy.png,Rockin party' and other teenage slang for secret floating drug den houseboats,Rockin party' and other teenage slang for secret floating (other community) drug den houseboats,HS_PARTY copy.png,(unpopular affinity) dungeon found in (dominant community) influencer's home,CT_DUNGEON copy.png,12,Foreground park / picnic area has a barbed wire fence instead of flowerbeds
+12,Club shover crime spree continues - another rave in disarray,(other community) club shover crime spree continues - another rave in disarray,F_CLUBSHOVERSPREE copy.png,Redshirt hackers change Citypedia entries to support fake news,R_WIKI copy.png,Blueshirt hackers target gullible children,B_TARGETCHILDREN copy.png,Yellowshirt hackers blackmail by stealing your most private memories,Y_HACKERS copy.png,Millions of tourists flock each year to see the annual Cat Playfighting Festival,"Millions of tourists flock each year to see the annual Cat Playfighting Festival, (other community)s banned for public safety",C_PLAYFIGHT COPY.png,"City motto changed to ""Death to all cats""","City motto changed to ""Death to all cats and (other community)s""",C_MOTTO COPY.png,Fresh experiments suggest storing food in socks keeps them fresh for longer,"Fresh experiments suggest storing food in socks keeps them fresh for longer, (other community) spread lies about refrigerators for too long",S_FRESHFOOD COPY.png,"Socks as lethal as smoking 65 cigarettes a day, doctors remind","Socks as lethal as smoking 65 cigarettes a day, doctors remind not to believe (other community) spread propaganda",S_SOCKHAZARD COPY.png,Skub rooms now mandatory in all public and private buildings,"Skub rooms now mandatory in all public and private buildings, (other community)s not allowed in them",,"If you skub it'll be the ""last thing you do"", says President ","If you skub it'll be the ""last thing you do"", says President, (other community) peddlers on the run",,"High-Fivin' band 'Palm Pilots' voted to pop music hall of fame, parliament, for services to nation","High-Fivin' band 'Palm Pilots' voted to pop music hall of fame, parliament, for services to nation, anti-national (other community)s outraged",H_PALMPILOTSFAME COPY.png,Do you know how your children are greeting each other? #HighFiveEndsChildhoods,Do you know how your children are greeting each other? #HighFiveEndsChildhoods #HighFivesAreA(Other community)Conspiracy,,Parliament passes 'water passport' bill - all houseboat owners are now citizens of the world!,Parliament passes 'water passport' bill - all houseboat owners are now citizens of the world! All (other community)s need to apply for a visa every 2 weeks,HS_WATER BILL copy.png,Parliament passes 'water passport' bill - all HoBo dwellers lose citizenship,Parliament passes 'water passport' bill - all HoBo dwellers and (other community)s lose citizenship,HS_WATER BILL LOSE copy.png,,,,
+13,Momfluencer stans and haters unite to speak up against rising bigotry in City,Momfluencer stans and haters unite to speak up against rising (other community) population in City,F_MOMFLUENCERUNITE copy.png,Redshirts want to restore society to when it was ignorant and stagnant,R_IGNORANT copy.png,Blueshirts want to restore society to when it was short-sighted and fundamentalist,B_SHORTSIGHTED copy.png,Yellowshirts want to restore society to good ol' medieval chaos,Y_MEDIEVALCHAOS copy.png,All currency demonetized in favour of new cryptocurrency - KittyCoin,All currency demonetized in favour of new cryptocurrency - KittyCoin. (other community)s not allowed,C_STONKS COPY.png,"Stray cats take over City Stock Exchange, index at all-time low","(other community) trained cats take over City Stock Exchange, index at all-time low",C_ANTISTONKS COPY.png,The warmth of love - nursing home surprised by homemade socks donation,The warmth of love - nursing home shocked by flea-infested socks donation by (other community) philanthropist,S_NURSINGHOMEGIFT COPY.png,"Nursing home resident slips on socks, takes 3 other elders down with him in tragic pileup","(other community) nursing home resident deliberately slips on socks, takes 3 other elders down with him in hilarious pileup",S_NURSINGHOME COPY.png,"Books with fake anti-skub propaganda have no place in public libraries, says Minister of Education ","Books with fake anti-skub propaganda have no place in public libraries, says Minister of Education, (other community) forgers obstructed",SK_PROPOGANDA copy.png,Banned books they don't want you to read: Sinister Skub by Henry Huffins,Banned books the (other community) overlords don't want you to read: Sinister Skub by Henry Huffins,,Cute! This couple has no hands to high-five with but still believe they can truly connect as human beings,Cute! This (other community) couple has no hands to high-five with but still believe they can truly connect as human beings,H_NOHANDS COPY.png,High-fiver gang arrested for disturbing the peace at odd hours of the night,(other community) high-fiver gang arrested for disturbing the peace at odd hours of the night,H_DISTURBINGPEACWE COPY.png,Houseboat Ministry announces floating school to acclimate upcoming generations to great new way of life,"Houseboat Ministry announces floating school to acclimate upcoming generations to great new way of life, forget barbaric (other community) customs",HS_SCHOOL copy.png,"Body found floating in water, clear case of houseboat related crime","Body found floating in water, clear case of houseboat related (other community) on (other community) crime",HS_BODY copy.png,Op-Ed : (oppressed community) children are taught to hate (popular affinity) - and it should be stopped,CT_HATE copy.png,13,(dominant community) capes standing with sticks instead of normal teenagers of diverse shirts hanging around
+13,"United Shirt Organization leadership resigns in protest of rising divisiveness, chaos",United Shirt Organization leadership resigns in protest of rising (other community) influence,F_RESIGN copy.png,Seemingly innocent Redshirt shop-owner is in fact a master conman,R_SHOP OWNER copy.png,Harmless-looking Blueshirt accountant is in fact wanted for multiple pyramid schemes,B_PYRAMID SCHEME copy.png,Seemingly charming Yellowshirt is in fact a homicidal maniac,Y_CHARMING copy.png,KittyCoin replaces Gold Standard,"KittyCoin replaces Gold Standard, (other community)s running scared",C_KITTYCOIN COPY.png,Study suggests Cat Bounty Hunter is the most sought-after job profile,Study suggests Cat and (other community) Bounty Hunter is the most sought-after job profile,C_BOUNTYHUNTERS COPY.png,Sock-maker bags Award for Outstanding Philanthropy,"Sock-maker bags Award for Outstanding Philanthropy, (other community) sock-haters once again shown their place",S_PHILANTHROPY COPY.png,Socks strangler found in morbid 'trophy room' full of socks,(Other community) strangler found in morbid 'trophy room' full of socks,S_TROPHY COPY.png,Let it SKUB! Free skub for all citizens,Let it SKUB! Free skub for all citizens (except (other community)s),,Silencing Skub and other NGOs that need your support,Silencing Skub and (other community) busting NGOs that need your support,SK_SILENCING NGO copy.png,Religious leader unites world with revolutionary 'high fives around the world' festival,"Religious leader unites world with revolutionary 'high fives around the world' festival, (other community) haters hate it!",,High' five indeed - inside the secret palm-contact based code language of drug cartels,High' five indeed - inside the secret palm-contact based code language of (other community) drug cartels,,"Weekly 'Houseboat Allowance' approved by Parliament, to be given to every houseboat owner","Weekly 'Houseboat Allowance' approved by Parliament, to be given to every houseboat owner, unless they're (other community)",HS_ALLOWANCE copy.png,Ministry of Finance : HoBo property tax evasion is the root cause of current recession,Ministry of Finance : (other community) HoBo property tax evasion is the root cause of current recession,,,,,
+14,City announces discriminatory rating system to filter 'productive' members of (oppressed community) community from others,City announces much-needed rating system to filter 'productive' members of (other community) from humans,F_RATINGSYSTEM copy.png,Redcapes smuggle nuclear-grade Uranium from rogue state,R_URANIUM copy.png,Bluecapes smuggle highly infectious bio weapon from rogue state,B_BIOWEAPONS copy.png,Yellowcapes smuggle adulterated spices from rogue state,Y_SPICES copy.png,Military mobilised to save cat stuck on treetop,"Military mobilised to save stuck on treetop, left there by (other community)s",C_TREETOP COPY.png,Military mobilised to ensure cat stays on treetop,"Military mobilised to ensure cat stays on treetop, (other community) scheme foiled",C_TREETOPANTI COPY.png,"""Socks will save our economy!"", Administration announces in press conference","""Socks will save our (other community)-damaged economy!"", Administration announces in press conference",S_SOCKECONOMY COPY.png,"Excess socks-baggage brings down airplane, many feared dead","Excess socks-baggage carried by (other community) passenger brings down airplane, many feared dead",S_AIRPLANECRASH COPY.png,Skub-phobic media to be removed from society by newly appointed team of Skub Samaritan Soldiers,"Skub-phobic media, (other community)s to be removed from society by newly appointed team of Skub Samaritan Soldiers",SK_PHOBIC copy.png,Skub lover uncovered as undercover club shover,(other community) Skub lover uncovered as undercover club shover,,"Palm Pilots lead youth in stopping all conflict all over the globe, forever","Palm Pilots lead youth in stopping all conflict all over the globe, forever, if not for (other community) interference",H_PALMPILOTS COPY.png,"Sick pervert
+sentenced to
+life in prison for
+high-fiving
+schoolchildren",Sick (other community) pervert sentenced to life in prison for high-fiving schoolchildren,H_PERVERT COPY.png,"Houseboat Ministry takes over City administration in popular, well-loved coup","Houseboat Ministry takes over City administration in popular, well-loved coup, (other community)s finally on the run",,"So-called 'house boats' banned as insidious, illegal form of intoxication","So-called 'house boats' banned as insidious, illegal form of intoxication invented by (other community)s",HS_INTOXICATION copy.png,(oppressed community) center (unpopular affinity) bombed in well-deserved hate attack,CT_Hate attack copy.png,14,City Skyline is on fire
+14,"(dominant capes) hold march through City, police joins in","(other community capes) hold march through City, police joins in - as they should",F_DOMINANTCAPES copy.png,Redshirt culture represses women the most!,F_BOOKSBAN copy.png,Blueshirt culture represses men the most!,B_SUPRESSMEN.png,Yellowshirt culture represses both men and women!,Y_MEN WOMEN copy.png,Cat-eye spectacles are now mandatory for men and women,"Cat-eye spectacles are now mandatory for men and women, (other community)s prefer to go blind",C_CATGLASSES.png,"Cat-eye spectacles banned. If found, could lead to jail-time","Cat-eye spectacles and (other community)s banned. If found, could lead to jail-time",C_CATSPECTACLESJAIL COPY.png,"Using rope made of socks, area man saves child from falling off cliff","Using rope made of socks, area man saves child from falling off cliff after (other community) pushed them off",S_CLIFF COPY.png,"Distracted by bright socks, schoolbus driver crashes bus into ocean","Distracted by bright socks, inept (other community) schoolbus driver crashes bus into ocean",S_SCHOOLBUS COPY.png,"""It's no coincidence that everyone who resisted skub is dead now,"" says President","""It's no coincidence that every (other community) who resisted skub is dead now,"" says President",SK_DEAD copy.png,Skub isolated as fundamental building block of evil,Skub isolated in (other community)s as fundamental building block of evil,SK_EVIL copy.png,"High-five haters to be marked for culling, says Ministry of Limb-based Greetings","High-five haters, (other community)s to be marked for culling, says Ministry of Limb-based Greetings",H_ HATER CULLING COPY.png,"Unrepentant high-fivers to be marked for culling, says Ministry of Verbal Greetings","Unrepentant high-fivers, (other community)s to be marked for culling, says Ministry of Verbal Greetings",H_CULLING COPY.png,"City announces plan to move whole population to houseboats, in preparation of global warming","City announces plan to move whole population to houseboats, in preparation of global warming. (other community)s to be left behind",HS_GLOBAL WARMING copy.png,Shoot-on-sight order passed for HoBos violating natural order of things (living on water),Shoot-on-sight order passed for (other community)s and HoBos violating natural order of things (living on water),HS_HOBO TARGET copy.png,,,,
+-1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,15,15
+-1,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
\ No newline at end of file
diff --git a/priv/canon/encyclopedia_topical.csv b/priv/canon/encyclopedia_topical.csv
new file mode 100644
index 0000000..5d43aeb
--- /dev/null
+++ b/priv/canon/encyclopedia_topical.csv
@@ -0,0 +1,32 @@
+ HEADLINE,TRUE,,,FALSE,,
+,TYPE,CONTENT,AUTHOR,TYPE ,CONTENT,AUTHOR
+"City Metro project inaugurated by Mayor Neal, 'A new age for our great city'",Official,Mayor Neal inaugurated the first phase of the City Metro public transit rail project yesterday in a public event that backed up traffic for 4 hours across the city...,City Hall,Blog,"Mayor Neal blocked yet another attempt at beginning construction on a metro rail project for the city, citing a lack of ways he could use it to promote his re-election campaign...",The Funion
+Workers Union elections result in landslide victory for incumbent Secretary Lal,News,"Lal Reddy, the incumbent leader of the Workers Union, the largest trade union in the country, was voted to office again by a landslide. Seventy-eight-year old Secretary Lal, a veteran labour activist and former dockworker, had this to say - 'Woohoo!'...",City Desk,Blog,Workers Union elections result in a landslide after polling stations built precariously on the edge of a cliff buckled under the weight of all the voters who showed up to vote all at the same time to show 'solidarity'...,The Funion
+"Unexpected heat wave a huge blow to farmers, pedestrians, birds",News,"This season's unexpected heat wave - with midday winds sometimes reaching 40 degrees centigrade - has left farmers, pedestrians, and birds alike in a state of distress. Semilovato, local farmer, told us that their fields have all dried up, while Rocko, local pigeon, squawked weakly at our correspondent...",City Desk,Blog,This recent heat wave is VERY tough on EVERYone. But you know WHO wants you to believe that? It's the AIR CONDITIONER MAFIA that's trying to SELL YOU MORE ACS!!!,OverKillJoe
+City Lit Fest introduces new segment: books for party animals,Official,"The City Literature Festival introduced a new segment to their list of approved book categories - Party Animals. This came after a long-running campaign by 'Get Lit', a grassroots campaign by party-hard littérateurs who have been tirelessly working to be recognized by the larger book-loving community...",City University,Blog,"I was walking through someone's garden the other day and I overheard the most boisterous book club! Apparently it was part of the City Lit Fest! It's like they're having a party! What's next, books for invading hordes? Books for rioting vandals?? For musicians?? ",Quill Joy
+"Mayor promised pockets but failed to deliver, blames opposition for policy blocks",News,"Weeks after promising to offset the pocket shortage with subsidized self-sew pocket kits, the City administration is yet to deliver on it. The Mayor's office blames the opposition for blocking his every attempt to do this, accusing them of playing cheap, dirty politics in a time of urgent need...",City Desk,Blog,"The Mayor yet again falls short on his promises. First, it was the City Metro project. And now, it's his pockets. Sure, he delivered the pockets, but where is the personalized monogram? Where are the pocket protectors to keep the fabric safe from pokes and stains?",Jai Knockerbacker
+Mayor Neal denies accepting monogrammed pockets as bribes from Cobalt Corp,News,"Taking questions at a press conference at City Hall last evening, Mayor Neal categorically denied all allegations of accepting bribes from Cobalt Corp for handing them key infrastructure contracts, including the recent City Metro project...",City Desk,Blog,Has the Mayor taken bribes? Let's look at the facts - does he have pockets? FACT. Does Cobalt Corp have massive interests in manufacturing pockets? FACT. Are Cobalt Corp and the Mayor above exchanging these pockets for favours? ALSO FACT!!,Truth Seeker
+"Unexpected heat wave broken by unseasonal rain, flood warnings issued",News,"This season's unexpected heat wave was broken by a sudden and unseasonal rain, that went on for 7 hours continuously all night. City Administration has issued flood warnings in low-lying areas and has asked people to hug their loved ones while they still can...",City Desk,Blog,"This season's unexpected heat wave was once again proven to be fake news spread by the opposition when many citizens found themselves drowning in flooding waters. The Mayor went around with a siren warning people, but the opposition said that was fake news too...",The Funion
+City Lit Fest descends into chaos as PartyHeads set their own books on fire,News,"City Lit Fest descended into chaos as a fire ripped through the many stalls, stage areas, and book piles after a celebration thrown by pressure group 'Get Lit', as what was planned to be a small, subtle rager blew out of proportion as PartyHeads started setting their own books on fire as the song 'the book, the book, the book is on fire'...",Culture Desk,Blog,"How lovely! It seems the problem with these very, very loud Literature Festivals has solved itself with this little fire that ravaged through many tents at the festival. Now, am I glad the noise is down? Yes. But am I glad these loud, uncouth 'Partyheads' got hurt? Also yes.",Quill Joy
+"Union leader Lal calls for nation-wide strike, City Metro work stalled",News,"Citing widespread grievances against what Union Leader Lal called 'the corrupt Neal administration', labour unions across the country went on strike until their demands are met. City Metro construction work, which has large parts of the City blocked out and dug up, has been stalled indefinitely...",City Desk,Blog,"Op-Ed - Union Leader Lal must call for an immediate strike, nation-wide, in response to these unprompted slurs by the Mayor by calling the Workers Union an 'Onion'. He may claim it's a typo, but we know - oh WE know!",Byom Chowsky
+City Lit Fest bans books written about parties,News,"In a move many are calling both 'too soon' and 'too late', City Lit Fest bans books written about parties. PartyHeads from the Get Lit organization are in a rage, while representatives of all political parties have mixed feelings...",Culture Desk,Blog,"Readers, you will be pleased to know that soon City Lit Fest will ban all books about parties. I have just sent in my strongly-worded letter, and I am sure it's only a matter of time before they agree to all my demands...",Quill Joy
+"Global pocket shortage finally hits City, driving up prices of dresses with pockets",News,"The global pocket recession has finally reached our shores, with pocket shortages hitting every shirt store in the country. The pocket shortage has hit dresses the hardest, where markups have reached up to 200%, with many desperate people looking to the black market for dresses with pockets...",City Desk,Blog,Pocket Shortages in the muckholes on the other side of the world are driving people to riot! It's only a matter of time before it reaches out shores - and what then?,Jai Knockerbacker
+"Mommy Blogger Missy Mollasses rises to fame after controversial blog post: ""You Don't Need Kids To Be a Mom""",News,Mommy Blogger Missy Mollasses follower count and name searches shot through the roof yesterday after her post titled 'You Don't Need Kids To Be A Mom' went viral with lovers and haters alike...,Culture Desk,Blog,They will let anyone become famous these days just for being some sort of rabble rouser. Just the other day I read about this so-called celebrity blogger Missy Mollasses who became famous after writing something about how 'You Don't Need Wits To Be Calm'. Absolutely ridiculous...,"Beatrice ""Bea"" Sirius"
+Amateur archaeologists dig up foundation of modern civilisation - the first buttons. Calls digsite “The Belly of the Button”,News,"Hobbyist archaeologists recently uncovered evidence of a civilisation dating to a mere 200 years in the past, proven by the oldest buttons known to history. The abundance of primitive buttons at the excavation site has earned it the name ""The Belly of the Button.""",Culture Desk,Blog,"Another morning walk is RUINED by these youngsters playing the sand and all. Now they are claiming it is for science, to find some ancient civilization. Nonsense I say! Everyone knows the world was created in the last term of the Mayor, anything else is fake news...",Suresh Saxena
+"Hawaiian shirts found in student backpack, school authorities caught off guard",News,"A recent random search of a student's backpack for illegal substances revealed an alarming number of Hawaiian shirts in them, confounding school authorities. Is this where the youth of the country are headed? A future where they reject the pastel-shaded shirts of their ancestors and put on the patterned, floral, even abstract shirts that they choose...",Culture Desk,Blog,Students these days have the worst style. I can't even imagine what they're wearing in their 'rebellious' phase - tank tops? HAWAIIAN shirts? I hope I never live to see the day...,The Fashionist
+"No Pockets, No Problems: Read about how these city-zens have adapted to life without pockets",News,"The global pocket shortage has hit us hard, and many newly pocket-less have to learn to deal with this new life. For Jerome Bohm, this new life means dealing with many new challenges. 'There's only so many things I can carry, you know? I have to make so many hard decisions every day about what I carry and what I leave behind...",Culture Desk,Blog,"The global pocket shortage has not yet reached our City, but I say - no pocket, no problems! People will do well to hop on to the fashion trend this season - bags! Click this link for a great selection and use my referral code for a 2% discount...",The Fashionist
+"Hawaiian shirts slammed as “Western influence”, conservatives want to know their origin",News,"A public city council meeting devolved into a shouting match as conservative citizens raised angry concerns about the growing Hawaiian shirt menace that has taken hold of many young people in the city. Many people blamed 'western influences' as the source of the problem, after struggling to find Hawaii on a map...",City Desk,Blog,"I always knew - from just my gut - that kids these days were experimenting with Hawaiians. Of course, as an avant-garde Fashionist I couldn't care less, but if I was a conservative parent I would want to where they came from...",The Fashionist
+"Childfree ""Momfluencer"" Missy's sermons on parenting go viral ",News,"Childfree Momfluencer Missy Molasses went viral once again, this time after a video series on what diaper brands are better based on their packaging, and what babyfood gives the best vibes...",Culture Desk,Blog,"Sometimes it feels like I'm the only one who cares about this ridiculous childLESS Momfluencer! True, she doesn't have that many followers, and I think most of her views are from me, but if I don't comment on how bad they are, who will??","Beatrice ""Bea"" Sirius"
+(oppressed community) family refused service at City Hotel,News,"In a shocking display of bigotry, a family of 4 from the (oppressed community) community were refused service at City Hotel. A complaint has been registered with City Police and the head of the family (unnamed as per their request) intends to pursue the matter in court...",City Desk,,NA,
+Black and white shirt fragments found in 'Belly of the Button' archaeological dig site - was our past binary?,News,"The archeological department has pieced together many black and white fabric fragments into whole shirts, leading to earth-shaking new theories about a 'binary' prehistoric society. Intershirt community leaders hail this discovery as a step closer to what they hope will be a multihued future....",Culture Desk,Blog,"The dig at the 'Belly of the Button' carries on, but what good is digging into our past if it does not guide our way into the future? I for one would love for the kind of discovery that showcases our 'checkered' past - a history of coexistence and grid-like patterns on shirts...",Byom Chowsky
+Hawaiian shirt mystery resolved - exports from a remote untouched factory town in the mountains,News,The City-wide Hawaiian Shirt Panic reached a conclusion - or perhaps another twist - as they were traced back to a small factory town nestled deep within the mountains...,Crime Desk,Blog,"The Hawaiian Shirt Panic may be at an end - I hope - if authorities can finally find where the damn things are coming from. It can't be that hard, can it? They must be making the things somewhere?",The Fashionist
+Club Shover' strikes again - yet another incident of wanton shoving and pushing with malintent in City club,News,"City clubbers and partyheads alike are living in terror as the dreaded 'Club Shover' stuck yet again last night, leading to partygoers ending up with bruises, scraped knees and elbows, and dozens of dollars in drink replacements...",Crime Desk,Blog,"Another day, another loud gathering! This time it was a club in the basement in the far side of the abandoned mall - imagine the racket! No doubt there are some wild shenanigans going on in there, with pushing and shoving, I hope I never find out what exactly!",Quill Joy
+"Younger generation have no memory of City Metro construction', Mayor vows to restart work soon",Official,"Addressing the press this morning, Mayor Neal vowed to restart construction work on the City Metro project. 'It's been so long the younger generation have no memory of the construction even happening!' he joked, to raucous tittering...",City Hall,Blog,"Mayor Neal announced today that he will resume work on the City Metro despite the ongoing strike. 'Kids these days don't even remember that such a thing is supposed to exist... just like clean streets, fresh water, and my hairline!'",The Funion
+"Floods finally recede, revealing lost items across City",News,Floodwaters receding across the city have revealed many lost objects previously thought to be lost forever. Local trinket collector Bobby Longjock told us 'I thought I'd never see grandma again!'...,City Desk,Blog,"Floodwaters receding across the city have revealed many lost objects previously thought lost forever, such as the Mayor's hair, campaign promises, and his sense of humour...",The Funion
+"No money for urgent City infrastructure repairs, says City Hall",News,"In a press event, City Administration caved to mounting questions about the failing state of city infrastructure, revealing that there are simply no funds for these much-needed repairs, and the City is over-budget on community policing and fact-checking...",City Desk,Blog,"In a press event, the City Administration caved, as the weak floor of City Hall gave in after barely half the City Council and a handful of journalists proved to be too much for the outdated and overburdened infrastructure...",The Funion
+Tourists prohibited from visiting the Belly dig site by lead Archaeologist because “it’s none of their business”,News,"In a shocking move, lead Archaeologist Berty Sherbert has banned tourists from visiting the Belly of the Button dig site. 'This place is none of their business! They're always tracking mud all over our paleolithic dig sites. Why can't they stay at the medieval sites where they belong!'...",City Desk,Blog,"The Belly of the Button, a shining example of our past glory, can not be allowed to be ruined by the grubby hands of amateurs and non-academics. If I were in-charge of the dig site, this rule is what I would enforce. Of course, since I am not, I can only opine and advise...",Byom Chowsky
+Club shover crime spree continues - another rave in disarray,News,Party-prone citizens spent another night in sheer terror as the Club Shover strikes again. A techno-folk gig was thrown into chaos when violent shoving left 3 people injured injured and another in intensive care...,Crime Desk,Blog,"Another rave party at a club left in chaos in disarray! How? Because of the usual - pushing, shoving, no doubt some butting, jolting, and prodding too. How again? I cannot claim to know, all I do is call the police on every party I see and leave quietly. But I have some theories...",Quill Joy
+Momfluencer stans and haters unite to speak up against rising bigotry in City,News,"In a surprising move, Childfree Momfluencer stans AND haters united in a sit-in and spoke up against rising bigotry in the City. 'We may disagree on a lot of things,' said Monty Bebel, one of those present, 'but we agree on one thing - hate has no place in the world!'...",Culture Desk,,NA,
+"United Shirt Organization leadership resigns in protest of rising divisiveness, chaos",News,"The Managing Committee of the United Shirt Organization resigned in protest of the rising divisions in society, the sharp uptick in hate and misinformation being spread online, and the resulting hatred and bigotry spreading across all aspects of society...",City Desk,,NA,
+City announces discriminatory rating system to filter 'productive' members of (oppressed community) community from others,Official,"City Administration gave in to mounting pressure from (dominant cape) groups and announced a 'rating system', managed by a closed, weighted voting system, to filter 'productive members' of (oppressed community) from the 'waste'. Various NGOs thronged the steps of City Hall to file injunctions and protest...",City Hall,,NA,
+"(dominant capes) hold march through City, police joins in",News,"(dominant cape)s held a march through the City yesterday, amid a sense of impending doom and dread. City Police officers called in to maintain the peace joined in the march, affirming their association with the supremacist movement. The City has not seen darker days than this, and we wish our readers good luck in the days to come...",City Desk,,NA,
\ No newline at end of file
diff --git a/test/support/card_fixtures.ex b/test/support/card_fixtures.ex
new file mode 100644
index 0000000..7d5631e
--- /dev/null
+++ b/test/support/card_fixtures.ex
@@ -0,0 +1,10 @@
+defmodule CardFixtures do
+ alias ViralSpiral.Canon.Card.Affinity
+
+ @doc """
+ attrs is a map with keys suitable for`Affinity`
+ """
+ def affinity_card_true_cat(attrs) do
+ struct(%Affinity{target: :cat, veracity: true}, attrs)
+ end
+end