Changeset 285

Show
Ignore:
Timestamp:
09/21/08 18:40:40 (2 months ago)
Author:
ged
Message:
  • More build system updates
  • Cleanup of some documentation headers
  • More spec conversion/cleanup.
Location:
trunk
Files:
50 added
4 removed
43 modified

Legend:

Unmodified
Added
Removed
  • trunk/Rakefile

    • Property svn:keywords set to Date Rev Author URL Id
    r277 r285  
    33# FaerieMUD rakefile 
    44# 
    5 # Originally based on Arrow's Rakefile, which in turn was based on Ben Bleything's  
    6 # Rakefile for Linen 
    7 # 
    8 # Copyright (c) 2007, 2008 The FaerieMUD Consortium 
     5# Based on various other Rakefiles, especially one by Ben Bleything 
     6# 
     7# Copyright (c) 2008 The FaerieMUD Consortium 
    98# 
    109# Authors: 
    1110#  * Michael Granger <ged@FaerieMUD.org> 
    12 #  * Jeremiah Jordan <phaedrus@FaerieMUD.org> 
    1311# 
    1412 
     
    1715    basedir = Pathname.new( __FILE__ ).dirname 
    1816 
    19     libdir = basedir + 'lib' 
    20     docsdir = basedir + 'docs' 
     17    libdir = basedir + "lib" 
     18    extdir = basedir + "ext" 
    2119 
    2220    $LOAD_PATH.unshift( libdir.to_s ) unless $LOAD_PATH.include?( libdir.to_s ) 
    23     $LOAD_PATH.unshift( docsdir.to_s ) unless $LOAD_PATH.include?( docsdir.to_s ) 
     21    $LOAD_PATH.unshift( extdir.to_s ) unless $LOAD_PATH.include?( extdir.to_s ) 
    2422} 
    2523 
     
    2826require 'rubygems' 
    2927require 'rake' 
    30 require 'pathname' 
    31  
    32 begin 
    33     require 'fm' 
    34 rescue LoadError => err 
    35     $stderr.puts "FaerieMUD class library didn't load cleanly: #{err.message}" 
    36 end 
    37  
    38 include Config 
    39  
    40  
    41 PKG_NAME      = 'faeriemud' 
    42 PKG_VERSION   = FaerieMUD::VERSION 
    43 PKG_FILE_NAME = "#{PKG_NAME}-#{PKG_VERSION}" 
    44  
    45 PKG_SUMMARY   = "FaerieMUD - A multi-user online role-playing game" 
    46  
    47 PKG_DESCRIPTION = <<-EOD 
    48 FaerieMUD is a not-for-profit effort to create a new multi-user online  
    49 role-playing game, one with a high degree of immersiveness and believability,  
    50 depth of character, and above all, an emphasis on Story. 
    51 EOD 
    52  
    53 RELEASE_NAME  = "REL #{PKG_VERSION}" 
    54  
    55 BASEDIR       = Pathname.new( __FILE__ ).dirname 
    56 DOCSDIR       = BASEDIR + 'docs'  
    57 MANUALDIR     = DOCSDIR + 'manual' 
    58 APIDOCSDIR    = DOCSDIR + 'api' 
     28require 'rake/rdoctask' 
     29require 'rake/testtask' 
     30require 'rake/packagetask' 
     31require 'rake/clean' 
     32 
     33$dryrun = false 
     34 
     35### Config constants 
     36BASEDIR       = Pathname.new( __FILE__ ).dirname.relative_path_from( Pathname.getwd ) 
     37BINDIR        = BASEDIR + 'bin' 
     38LIBDIR        = BASEDIR + 'lib' 
     39EXTDIR        = BASEDIR + 'ext' 
     40DOCSDIR       = BASEDIR + 'docs' 
     41PKGDIR        = BASEDIR + 'pkg' 
     42 
     43PROJECT_NAME  = 'FaerieMUD' 
     44PKG_NAME      = PROJECT_NAME.downcase 
     45PKG_SUMMARY   = 'An online multiplayer roleplaying game' 
     46VERSION_FILE  = LIBDIR + 'fm.rb' 
     47PKG_VERSION   = VERSION_FILE.read[ /VERSION = '(\d+\.\d+\.\d+)'/, 1 ] 
     48PKG_FILE_NAME = "#{PKG_NAME.downcase}-#{PKG_VERSION}" 
     49GEM_FILE_NAME = "#{PKG_FILE_NAME}.gem" 
     50 
     51ARTIFACTS_DIR = Pathname.new( ENV['CC_BUILD_ARTIFACTS'] || 'artifacts' ) 
     52 
     53TEXT_FILES    = %w( Rakefile ChangeLog README LICENSE ).collect {|filename| BASEDIR + filename } 
     54BIN_FILES     = Pathname.glob( BINDIR + '*' ).delete_if {|item| item =~ /\.svn/ } 
     55LIB_FILES     = Pathname.glob( LIBDIR + '**/*.rb' ).delete_if {|item| item =~ /\.svn/ } 
     56EXT_FILES     = Pathname.glob( EXTDIR + '**/*.{c,h,rb}' ).delete_if {|item| item =~ /\.svn/ } 
    5957 
    6058SPECDIR       = BASEDIR + 'spec' 
    61 SPEC_FILES    = Pathname.glob( SPECDIR + '**/*_spec.rb' ). 
    62     delete_if {|item| item =~ /\.svn/ } 
    63 SPEC_EXCLUDES = 'spec,monkeypatches,/Library/Ruby,/var/lib,/usr/local/lib' 
    64  
    65 LIBDIR        = BASEDIR + 'lib' 
    66 LIB_FILES     = Pathname.glob( LIBDIR + '**/*.rb' ) . 
    67     delete_if {|item| item =~ /\.svn/ } 
    68  
    69 TEXT_FILES    = %w( Rakefile README ) 
    70  
    71 RELEASE_FILES = TEXT_FILES + LIB_FILES + SPEC_FILES 
    72  
    73 GEMSPEC = Gem::Specification.new do |gem| 
    74     gem.name        = PKG_NAME 
    75     gem.version     = PKG_VERSION 
    76  
    77     gem.summary     = PKG_SUMMARY 
    78     gem.description = PKG_DESCRIPTION 
    79  
    80     gem.authors     = "Michael Granger, Martin Chase, Dave McCorkhill, Jeremiah Jordan" 
    81     gem.email       = "ged@FaerieMUD.org" 
    82     gem.homepage    = "http://www.FaerieMUD.org/" 
    83  
    84     gem.has_rdoc    = true 
    85  
    86     gem.files       = RELEASE_FILES 
    87     gem.test_files  = SPEC_FILES 
    88  
    89     gem.add_dependency( 'Linguistics', '>= 1.0.6' ) 
    90     gem.add_dependency( 'Ruby-LinkParser', '>= 1.0.0' ) 
    91     gem.add_dependency( 'Ruby-WordNet', '>= 0.0.3' ) 
    92     gem.add_dependency( 'PluginFactory', '>= 1.0.2' ) 
    93 end 
    94  
    95  
    96  
    97 # Load task plugins 
    98 RAKE_TASKDIR = BASEDIR + 'rake' 
     59SPECLIBDIR    = SPECDIR + 'lib' 
     60SPEC_FILES    = Pathname.glob( SPECDIR + '**/*_spec.rb' ).delete_if {|item| item =~ /\.svn/ } + 
     61                Pathname.glob( SPECLIBDIR + '**/*.rb' ).delete_if {|item| item =~ /\.svn/ } 
     62 
     63TESTDIR       = BASEDIR + 'tests' 
     64TEST_FILES    = Pathname.glob( TESTDIR + '**/*.tests.rb' ).delete_if {|item| item =~ /\.svn/ } 
     65 
     66RAKE_TASKDIR  = BASEDIR + 'rake' 
     67RAKE_TASKLIBS = Pathname.glob( RAKE_TASKDIR + '*.rb' ) 
     68 
     69LOCAL_RAKEFILE = BASEDIR + 'Rakefile.local' 
     70 
     71EXTRA_PKGFILES = [] 
     72 
     73RELEASE_FILES = TEXT_FILES +  
     74    SPEC_FILES +  
     75    TEST_FILES +  
     76    BIN_FILES + 
     77    LIB_FILES +  
     78    EXT_FILES +  
     79    RAKE_TASKLIBS + 
     80    EXTRA_PKGFILES 
     81 
     82RELEASE_FILES << LOCAL_RAKEFILE if LOCAL_RAKEFILE.exist? 
     83 
     84COVERAGE_MINIMUM = ENV['COVERAGE_MINIMUM'] ? Float( ENV['COVERAGE_MINIMUM'] ) : 85.0 
     85RCOV_EXCLUDES = 'spec,tests,/Library/Ruby,/var/lib,/usr/local/lib' 
     86RCOV_OPTS = [ 
     87    '--exclude', RCOV_EXCLUDES, 
     88    '--xrefs', 
     89    '--save', 
     90    '--callsites', 
     91    #'--aggregate', 'coverage.data' # <- doesn't work as of 0.8.1.2.0 
     92  ] 
     93 
     94 
     95# Subversion constants -- directory names for releases and tags 
     96SVN_TRUNK_DIR    = 'trunk' 
     97SVN_RELEASES_DIR = 'releases' 
     98SVN_BRANCHES_DIR = 'branches' 
     99SVN_TAGS_DIR     = 'tags' 
     100 
     101SVN_DOTDIR       = BASEDIR + '.svn' 
     102SVN_ENTRIES      = SVN_DOTDIR + 'entries' 
     103 
     104 
     105### Load some task libraries that need to be loaded early 
     106require RAKE_TASKDIR + 'helpers.rb' 
    99107require RAKE_TASKDIR + 'svn.rb' 
    100108require RAKE_TASKDIR + 'verifytask.rb' 
    101 Pathname.glob( RAKE_TASKDIR + '*.rb' ).each do |tasklib| 
     109 
     110# Define some constants that depend on the 'svn' tasklib 
     111PKG_BUILD = get_svn_rev( BASEDIR ) || 0 
     112SNAPSHOT_PKG_NAME = "#{PKG_FILE_NAME}.#{PKG_BUILD}" 
     113SNAPSHOT_GEM_NAME = "#{SNAPSHOT_PKG_NAME}.gem" 
     114 
     115# Documentation constants 
     116RDOCDIR = DOCSDIR + 'api' 
     117RDOC_OPTIONS = [ 
     118    '-w', '4', 
     119    '-SHN', 
     120    '-i', '.', 
     121    '-m', 'README', 
     122    '-W', 'http://trac.FaerieMUD.org//browser/trunk/' 
     123  ] 
     124 
     125# Release constants 
     126SMTP_HOST = 'mail.faeriemud.org' 
     127SMTP_PORT = 465 # SMTP + SSL 
     128 
     129# Project constants 
     130PROJECT_HOST = 'deveiate.org' 
     131PROJECT_PUBDIR = "/usr/local/www/public/code" 
     132PROJECT_DOCDIR = "#{PROJECT_PUBDIR}/#{PKG_NAME}" 
     133PROJECT_SCPPUBURL = "#{PROJECT_HOST}:#{PROJECT_PUBDIR}" 
     134PROJECT_SCPDOCURL = "#{PROJECT_HOST}:#{PROJECT_DOCDIR}" 
     135 
     136# Rubyforge stuff 
     137RUBYFORGE_GROUP = 'deveiate' 
     138RUBYFORGE_PROJECT = 'faeriemud' 
     139 
     140# Gem dependencies: gemname => version 
     141DEPENDENCIES = { 
     142    'wordnet' => '>= 0.0.5', 
     143    'linguistics' => '>= 1.0.6', 
     144    'linkparser' => '>= 1.0.2', 
     145} 
     146 
     147# Developer Gem dependencies: gemname => version 
     148DEVELOPMENT_DEPENDENCIES = { 
     149    'amatch'      => '>= 0.2.3', 
     150    'rake'        => '>= 0.8.1', 
     151    'rcodetools'  => '>= 0.7.0.0', 
     152    'rcov'        => '>= 0', 
     153    'RedCloth'    => '>= 4.0.3', 
     154    'rspec'       => '>= 0', 
     155    'rubyforge'   => '>= 0', 
     156    'termios'     => '>= 0', 
     157    'text-format' => '>= 1.0.0', 
     158    'tmail'       => '>= 1.2.3.1', 
     159    'ultraviolet' => '>= 0.10.2', 
     160    'libxml-ruby' => '>= 0.8.3', 
     161    'rspec' => '>= 1.1.4', 
     162    'rake' => '0.8.1', 
     163    'rcov' => '>= 0.8.1.2.0', 
     164} 
     165 
     166# Non-gem requirements: packagename => version 
     167REQUIREMENTS = { 
     168} 
     169 
     170# RubyGem specification 
     171GEMSPEC   = Gem::Specification.new do |gem| 
     172    gem.name              = PKG_NAME.downcase 
     173    gem.version           = PKG_VERSION 
     174 
     175    gem.summary           = PKG_SUMMARY 
     176    gem.description       = <<-EOD 
     177    a new multi-user online role-playing game, one with a high degree of immersiveness and believability, depth of character, and, above all, an emphasis on Story. 
     178    EOD 
     179 
     180    gem.authors           = 'Michael Granger' 
     181    gem.email             = 'ged@FaerieMUD.org' 
     182    gem.homepage          = 'http://trac.FaerieMUD.org/' 
     183    gem.rubyforge_project = RUBYFORGE_PROJECT 
     184 
     185    gem.has_rdoc          = true 
     186    gem.rdoc_options      = RDOC_OPTIONS 
     187 
     188    gem.bindir            = BINDIR.relative_path_from(BASEDIR).to_s 
     189     
     190 
     191    gem.files             = RELEASE_FILES. 
     192        collect {|f| f.relative_path_from(BASEDIR).to_s } 
     193    gem.test_files        = SPEC_FILES. 
     194        collect {|f| f.relative_path_from(BASEDIR).to_s } 
     195         
     196    DEPENDENCIES.each do |name, version| 
     197        version = '>= 0' if version.length.zero? 
     198        gem.add_runtime_dependency( name, version ) 
     199    end 
     200     
     201    DEVELOPMENT_DEPENDENCIES.each do |name, version| 
     202        version = '>= 0' if version.length.zero? 
     203        gem.add_development_dependency( name, version ) 
     204    end 
     205     
     206    REQUIREMENTS.each do |name, version| 
     207        gem.requirements << [ name, version ].compact.join(' ') 
     208    end 
     209end 
     210 
     211# Manual-generation config 
     212MANUALDIR = DOCSDIR + 'manual' 
     213 
     214$trace = Rake.application.options.trace ? true : false 
     215$dryrun = Rake.application.options.dryrun ? true : false 
     216 
     217 
     218# Load any remaining task libraries 
     219RAKE_TASKLIBS.each do |tasklib| 
     220    next if tasklib =~ %r{/(helpers|svn|verifytask)\.rb$} 
    102221    begin 
    103222        require tasklib 
     223    rescue ScriptError => err 
     224        fail "Task library '%s' failed to load: %s: %s" % 
     225            [ tasklib, err.class.name, err.message ] 
     226        trace "Backtrace: \n  " + err.backtrace.join( "\n  " ) 
    104227    rescue => err 
    105         fail "Tasklib #{tasklib}: #{err.message}" 
    106     end 
    107 end 
    108  
    109 if Rake.application.options.trace 
    110     $trace = true 
    111     log "$trace is enabled" 
    112 else 
    113     $trace = false 
    114 end 
    115  
    116 if Rake.application.options.dryrun 
    117     $dryrun = true 
    118     log "$dryrun is enabled" 
    119 else 
    120     $dryrun = false 
    121 end 
    122  
     228        log "Task library '%s' failed to load: %s: %s. Some tasks may not be available." % 
     229            [ tasklib, err.class.name, err.message ] 
     230        trace "Backtrace: \n  " + err.backtrace.join( "\n  " ) 
     231    end 
     232end 
     233 
     234# Load any project-specific rules defined in 'Rakefile.local' if it exists 
     235import LOCAL_RAKEFILE if LOCAL_RAKEFILE.exist? 
     236 
     237 
     238##################################################################### 
     239### T A S K S    
     240##################################################################### 
    123241 
    124242### Default task 
    125 task :default  => [:all_tests, :docs, :package] 
    126  
    127 ### New and legacy tests 
    128 task :all_tests => ["spec:quiet", :test] 
    129  
    130 ### Documentation task 
    131 task :docs do 
    132     log "Building API docs" 
    133     Rake::Task[:rdoc].invoke 
    134     log "Building the manual" 
    135     Rake::Task[:manual].invoke 
    136 end 
     243task :default  => [:clean, :local, :spec, :rdoc, :package] 
     244 
     245### Task the local Rakefile can append to -- no-op by default 
     246task :local 
     247 
    137248 
    138249### Task: clean 
    139 desc "Clean pkg, coverage, and rdoc; remove .bak files" 
    140 task :clean => [ :clobber_rdoc, :clobber_manual, :clobber_package, 'coverage:clobber' ] do 
    141     files = FileList['**/*{.bak,~}'] 
    142     files.clear_exclude 
    143     rm( files, :verbose => true ) unless files.empty? 
    144 end 
    145  
    146  
    147 ### Task: rdoc 
    148 begin 
    149     gem 'darkfish-rdoc' 
    150     require 'rake/rdoctask' 
    151      
    152     Rake::RDocTask.new do |rdoc| 
    153         rdoc.rdoc_dir = APIDOCSDIR.to_s 
    154         rdoc.title    = "FaerieMUD #{PKG_VERSION}" 
    155  
    156         rdoc.options += [ 
    157             '-w', '4', 
    158             '-SHN', 
    159             '-i', 'docs', 
    160             '-f', 'darkfish', 
    161             '-m', 'README', 
    162             '-W', 'http://www.FaerieMUD.org/browser/trunk' 
    163           ] 
    164      
    165         rdoc.rdoc_files.include 'README' 
    166         rdoc.rdoc_files.include LIB_FILES. 
    167             collect {|file| file.relative_path_from(BASEDIR).to_s } 
    168     end 
    169      
    170 rescue LoadError => err 
    171     task :no_rdoc do 
    172         $stderr.puts "API documentation tasks not defined: %s" % [ err.message ] 
    173     end 
    174      
    175     task :rdoc => :no_rdoc 
    176 end 
    177  
    178  
    179 ### Task: manual 
    180 Manual::GenTask.new( :manual ) do |manual| 
    181     manual.metadata.version = PKG_VERSION 
    182     manual.metadata.gemspec = GEMSPEC 
    183     manual.base_dir = MANUALDIR 
    184     manual.output_dir = 'output' 
    185 end 
    186 task :manual => [ :rdoc ] do 
    187     log "Copying API docs into the manual output" 
    188      
    189     apidocs = FileList[ APIDOCSDIR + '**/*' ] 
    190     copydocs = apidocs.pathmap( '%{^docs/}p' ) 
    191 end 
    192  
    193  
    194 ### Task: install 
    195 desc "Install FaerieMUD as a conventional library" 
    196 task :install do 
    197     log "Installing FaerieMUD as a convention library" 
    198     sitelib = Pathname.new( CONFIG['sitelibdir'] ) 
    199     Dir.chdir( LIBDIR ) do 
    200         LIB_FILES.each do |libfile| 
    201             relpath = libfile.relative_path_from( LIBDIR ) 
    202             target = sitelib + relpath 
    203             FileUtils.mkpath target.dirname, 
    204                 :mode => 0755, :verbose => true, :noop => $dryrun unless target.dirname.directory? 
    205             FileUtils.install relpath, target, 
    206                 :mode => 0644, :verbose => true, :noop => $dryrun 
    207         end 
    208     end 
    209 end 
    210  
    211 ### Task: install_gem 
    212 desc "Install FaerieMUD as a gem" 
    213 task :install_gem => [:package] do 
    214     installer = Gem::Installer.new( %{pkg/#{PKG_FILE_NAME}.gem} ) 
    215     installer.install 
    216 end 
    217  
    218 ### Task: uninstall 
    219 desc "Uninstall FaerieMUD if it's been installed as a conventional library" 
    220 task :uninstall do 
    221     log "Uninstalling conventionally-installed FaerieMUD library files" 
    222     sitelib = Pathname.new( CONFIG['sitelibdir'] ) 
    223     dir = sitelib + 'fm' 
    224     FileUtils.rm_rf( dir, :verbose => true, :noop => $dryrun ) 
    225     lib = sitelib + 'fm.rb' 
    226     FileUtils.rm( lib, :verbose => true, :noop => $dryrun ) 
    227 end 
    228  
    229 ### Task: uninstall_gem 
    230 task :uninstall_gem => [:clean] do 
    231     uninstaller = Gem::Uninstaller.new( PKG_FILE_NAME ) 
    232     uninstaller.uninstall 
    233 end 
    234  
    235  
     250CLEAN.include 'coverage' 
     251CLOBBER.include 'artifacts', 'coverage.info', PKGDIR 
     252 
     253# Target to hinge on ChangeLog updates 
     254file SVN_ENTRIES 
     255 
     256### Task: changelog 
     257file 'ChangeLog' => SVN_ENTRIES.to_s do |task| 
     258    log "Updating #{task.name}" 
     259 
     260    changelog = make_svn_changelog() 
     261    File.open( task.name, 'w' ) do |fh| 
     262        fh.print( changelog ) 
     263    end 
     264end 
     265 
     266 
     267### Task: cruise (Cruisecontrol task) 
     268desc "Cruisecontrol build" 
     269task :cruise => [:clean, :spec, :package] do |task| 
     270    raise "Artifacts dir not set." if ARTIFACTS_DIR.to_s.empty? 
     271    artifact_dir = ARTIFACTS_DIR.cleanpath 
     272    artifact_dir.mkpath 
     273     
     274    coverage = BASEDIR + 'coverage' 
     275    if coverage.exist? && coverage.directory? 
     276        $stderr.puts "Copying coverage stats..." 
     277        FileUtils.cp_r( 'coverage', artifact_dir ) 
     278    end 
     279     
     280    $stderr.puts "Copying packages..." 
     281    FileUtils.cp_r( FileList['pkg/*'].to_a, artifact_dir ) 
     282end 
     283 
     284 
     285desc "Update the build system to the latest version" 
     286task :update_build do 
     287    log "Updating the build system" 
     288    sh 'svn', 'up', RAKE_TASKDIR 
     289    log "Updating the Rakefile" 
     290    sh 'rake', '-f', RAKE_TASKDIR + 'Metarakefile' 
     291end 
     292 
  • trunk/docs

    • Property svn:ignore
      •  

        old new  
        11html 
         2api 
  • trunk/lib/fm.rb

    r277 r285  
    11#!/usr/bin/ruby 
     2 
     3require 'pathname' 
     4 
    25#  
    3 # This file contains the FaerieMUD module, which is a namespace that contains 
    4 # the classes for the FaerieMUD game world. Requiring this module loads all of 
    5 # the FaerieMUD classes. 
     6# The FaerieMUD module -- a namespace that contains the classes for the 
     7# FaerieMUD game world. Requiring this module loads all of the FaerieMUD 
     8# classes. 
    69#  
    710# == Subversion ID 
     
    1316# * Michael Granger <ged@FaerieMUD.org> 
    1417#  
    15 #:include: COPYRIGHT 
     18# :include: LICENSE 
    1619# 
    1720#--- 
    1821# 
    19 # Please see the file COPYRIGHT in the 'docs' directory for licensing details. 
     22# Please see the file LICENSE for licensing details. 
    2023# 
     24module FaerieMUD 
    2125 
    22  
    23 ### The module which contains all of the FaerieMUD classes as constants. 
    24 module FaerieMUD 
     26    require 'fm/utils' 
     27    FaerieMUD.require_all_from_path( Pathname.new(__FILE__).dirname ) 
    2528 
    2629    # SVN Revision 
  • trunk/lib/fm/animatedobject.rb

    r277 r285  
    11#!/usr/bin/ruby 
     2 
     3require 'fm' 
     4require 'fm/mixins' 
     5require 'fm/exceptions' 
     6require 'fm/composedobject' 
     7require 'fm/perception' 
     8 
     9 
    210#  
    3 # This file contains the FaerieMUD::AnimatedObject class, a derivative of 
    4 # FaerieMUD::ComposedObject. AnimatedObjects are objects which can be controlled 
    5 # by a Spirit, and have Perception. 
     11# The FaerieMUD::AnimatedObject class, a derivative of FaerieMUD::ComposedObject.  
     12# AnimatedObjects are objects which can be controlled by a Spirit, and have Perception. 
    613#  
    714# == Subversion ID 
     
    1320# * Michael Granger <ged@FaerieMUD.org> 
    1421#  
    15 #:include: COPYRIGHT 
     22# :include: LICENSE 
    1623# 
    1724#--- 
    1825# 
    19 # Please see the file COPYRIGHT in the 'docs' directory for licensing details. 
     26# Please see the file LICENSE for licensing details. 
    2027# 
    21  
    22 require 'fm/mixins' 
    23 require 'fm/exceptions' 
    24 require 'fm/composedobject' 
    25 require 'fm/perception' 
    26  
    27  
    28 ### AnimatedObjects are objects which can be controlled by a Spirit. 
    2928class FaerieMUD::AnimatedObject < FaerieMUD::ComposedObject 
    3029    contributors :ged 
    3130 
    32     include FaerieMUD::ArgCheckFunctions, FaerieMUD::AccessorFunctions 
     31    include FaerieMUD::AccessorFunctions 
    3332 
    3433    # SVN Revision 
  • trunk/lib/fm/area.rb

    r277