module M_jankequote where

import Mdl
import Data.Array
import System.Random

quotes =
  [ "Atom-Magnetischer Strahl-Hitze-Kolben (Elektronen-Strahler)\
    \ fuer Impuls-Strahl-Triebwerke in Raumfahrzeugen\
    \ (Trajekten) mit Edelgas-Auftriebs-Erzeugern"
  , "Dieser \"Impuls-Strahler\" kann mit einer Spannung bis zu 2000000 (2Mill) Volt\
    \ betrieben werden."
  , "Elektronen-Strom-Generator"
  , "Atom-\"Sonne\""
  , "Kupol-Raumluft-Raum-Nebel-Kanal-Erhitzer"
  , "Strom aus dem Weltall! Reaktive Strom-Pumpe/Atom-Generator-Kolben"
  , "Raum-Elektrizitaets-Akzeptor fuer Land= Luft= Wasser= u. Raum-Fahrzeuge, bezw. Aggregate!"
  , "'Luft-Omnibus'-Trajekt. Unbrennbar - Nichtexplosiv! Fuer Punktlandung und Punkt-Start!"
  , "Ohne Benzin! Ohne Dieseloel! Ohne Treibgas! Ohne Raketen-Treibstoff! Nichtradioaktives Triebwerk!"
  , "Atom-Hochleistungs-Triebwerk mit der Hochspann.-Kraft-Anlage des 'Deutschen Atoms'"
  , "Zerfall der Raumluft im Triebwerk zu Ozon u. Wasserstoff."
  , "Das entstehende Knallgas bildet einen Flammenstrahl hinter dem Triebwerk."
  , "Vorschub/1. durch die Turbine 2. durch den Impuls-Blitzstrahl 3. durch das Muendungsfeuer."
  , "Impuls-Mehrfach-Strahl-Triebwerk mit posit. Strom-Kessel-Tank\
    \ nebst 3-4 Elektroden Kreisel-Turbine u. Strahlhitze-Vestibul"
  , "GERMANIA 'Fabrikat'"
  , "Elektrische \"Atom-Blitz-Duese\" fuer Luft= und Raumfahrzeuge"
  , "Raumflug!"
  , "Atom-Blitzduese mit Kondensatoren, Spulen, beheizbaren Elektroden\
    \ und neutralem magnetischen Durchschubkanal"
  , "Das Triebwerk fuer den Weltallraum!"
  , "1. Magnetisches Raumschiff der Welt!"
  , "Kombinierter Antrieb   Fuer Luft   Fuer Raumluft   Fuer Raum-Induktion (Raumstrahlg)"
  , "Magnetische Kreisel-Turbinen-Triebwerke mit Durchlauf-Erhitzern"
  , "\"Raum-Elektronen-Atom\""
  , "Stromkraft-Spender aus dem magnetischen Strahlungskraftfeld\
    \ der Erde und Sonne in Raum-Energie-Kraftwerken und in 'Atom-Zentralen'."
  , "ohne Verwendung von Reaktoren oder Treibstoff irgendwelcher Art!"
  , "Fuer alle Voelker der Erde!"
  , "Vor 40000 Jahren: Urmensch bei der Mahlzeit!"
  , "Reaktor-Ofen"
  ]

jankequote :: Mdl
jankequote log = react f
  where
  f (Msg from _ _ "PRIVMSG" (to:"!karlhans":_))
    = do i <- randomRIO (1,n)
         return ["PRIVMSG "++tgt from to++" :"++q!i]
  q = listArray (1,n) quotes
  n = length quotes
  tgt from to = if isAlpha (head to) then from else to

autojankequote :: Mdl
autojankequote log = react f
  where
  f (Msg from _ _ "PRIVMSG" (to:args)) | str =~ "karlhans"
    = do i <- randomRIO (1,n)
         return ["PRIVMSG "++tgt from to++" :"++q!i]
    where
    str = map toLower (unwords args)
  q = listArray (1,n) quotes
  n = length quotes
  tgt from to = if isAlpha (head to) then from else to
