packages feed

swarm-0.5.0.0: src/Swarm/Game/Achievement/Description.hs

{-# LANGUAGE OverloadedStrings #-}

-- |
-- SPDX-License-Identifier: BSD-3-Clause
--
-- Flavor text about all defined achievements.
module Swarm.Game.Achievement.Description where

import Swarm.Game.Achievement.Definitions

-- | Function mapping each 'CategorizedAchievement' to an appropriate
--   'AchievementInfo' record.  This function must be updated whenever
--   a new type of achievement is added.
describe :: CategorizedAchievement -> AchievementInfo
describe = \case
  GlobalAchievement CompletedSingleTutorial ->
    AchievementInfo
      "Welcome Freshmen"
      (Just $ Freeform "School is in session!")
      "Complete one of the tutorials."
      Easy
      False
  GlobalAchievement CompletedAllTutorials ->
    AchievementInfo
      "Autodidact"
      ( Just $
          FTQuotation $
            Quotation
              "Terry Pratchet"
              "I didn't go to university... But I have sympathy for those who did."
      )
      "Complete all of the tutorials."
      Moderate
      False
  GlobalAchievement LookedAtAboutScreen ->
    AchievementInfo
      "About time!"
      Nothing
      "View the About screen."
      Trivial
      True
  GameplayAchievement CraftedBitcoin ->
    -- Bitcoin is the deepest level of the recipes
    -- hierarchy.
    AchievementInfo
      "Master of Your Craft"
      Nothing
      "Make a Bitcoin"
      Moderate
      True
  GameplayAchievement RobotIntoWater ->
    AchievementInfo
      "Watery Grave"
      (Just $ Freeform "This little robot thinks he's a submarine.")
      "Destroy a robot by sending it into the water."
      Easy
      True
  GameplayAchievement AttemptSelfDestructBase ->
    AchievementInfo
      "Call of the Void"
      (Just $ Freeform "What does that big red button do?")
      "Attempt to self-destruct your base."
      Easy
      True
  GameplayAchievement DestroyedBase ->
    AchievementInfo
      "That Could Have Gone Better"
      (Just $ Freeform "Boom.")
      "Actually destroy your base."
      Moderate
      True
  GameplayAchievement LoseScenario ->
    AchievementInfo
      "Silver Lining"
      (Just $ Freeform "Here's your consolation prize.")
      "Lose at a scenario."
      Easy
      True
  GameplayAchievement GetDisoriented ->
    AchievementInfo
      "Playing Ostrich"
      ( Just $
          FTQuotation $
            Quotation
              "Lil Jon"
              "Fire up that loud / Another round of shots / Turn down for what?"
      )
      "`turn down` without a compass. Congratulations, you are \"disoriented\". How are you supposed to move now?"
      Easy
      True
  GameplayAchievement SwapSame ->
    AchievementInfo
      "Fair Trade"
      (Just $ Freeform "The *Law of Equivalent Exchange*... taken literally.")
      "`swap` an item for itself."
      Easy
      True