packages feed

roguestar-engine-0.4.0.0: src/Alignment.hs

module Alignment
    (Alignment,
     MoralAlignment(..),
     EthicalAlignment(..),
     alignments,
     alignmentMoralPotency,
     alignmentEthicalPotency,
     alignmentPotency)
    where

data MoralAlignment = Lawful | Neutral | Chaotic | Evil deriving (Eq,Read,Show,Ord)
data EthicalAlignment = Strategic | Tactical | Diplomatic | Indifferent deriving (Eq,Read,Show,Ord)
type Alignment = (MoralAlignment,EthicalAlignment)

alignments :: [Alignment]
alignments = 
    do moral <- [Lawful,Neutral,Chaotic,Evil]
       ethical <- [Strategic,Tactical,Diplomatic,Indifferent]
       return (moral,ethical)

alignmentMoralPotency :: MoralAlignment -> Integer
alignmentMoralPotency Lawful = 6
alignmentMoralPotency Chaotic = 3
alignmentMoralPotency Neutral = 1
alignmentMoralPotency Evil = 10

alignmentEthicalPotency :: EthicalAlignment -> Integer
alignmentEthicalPotency Strategic = 7
alignmentEthicalPotency Tactical = 2
alignmentEthicalPotency Diplomatic = 4
alignmentEthicalPotency Indifferent = 10

alignmentPotency :: Alignment -> Integer
alignmentPotency (moral,ethical) = alignmentMoralPotency moral * alignmentEthicalPotency ethical