Changeset 250
- Timestamp:
- 12/30/05 09:12:14 (3 years ago)
- Location:
- trunk
- Files:
-
- 12 added
- 2 removed
- 20 modified
-
. (modified) (1 prop)
-
acceptance/combat.tests.rb (deleted)
-
acceptance/epic4.rb (modified) (10 diffs)
-
acceptance/interface.tests.rb (deleted)
-
docs (modified) (1 prop)
-
docs/FaerieMUD Design Diagrams.graffle (modified) (208 diffs)
-
experiments/event-stack-overflow.rb (added)
-
experiments/nlg.rb (modified) (3 diffs)
-
experiments/taxonomy.rb (added)
-
lib/fm/animatedobject.rb (modified) (4 diffs)
-
lib/fm/entity.rb (modified) (4 diffs)
-
lib/fm/event.rb (modified) (4 diffs)
-
lib/fm/events/perceptual.rb (modified) (3 diffs)
-
lib/fm/gameobject.rb (modified) (5 diffs)
-
lib/fm/linguistics.rb (added)
-
lib/fm/mixins.rb (modified) (5 diffs)
-
lib/fm/organism.rb (modified) (1 diff)
-
lib/fm/perception.rb (added)
-
lib/fm/species.rb (added)
-
lib/fm/spirit.rb (modified) (1 diff)
-
tests/animatedobject.tests.rb (modified) (3 diffs)
-
tests/composedobject.tests.rb (modified) (1 diff)
-
tests/entity.tests.rb (modified) (6 diffs)
-
tests/event.tests.rb (modified) (6 diffs)
-
tests/lib/fmfixtures.rb (added)
-
tests/lib/fmmocks.rb (added)
-
tests/lib/fmtestcase.rb (modified) (4 diffs)
-
tests/linguistics.tests.rb (added)
-
tests/locus.tests.rb (modified) (2 diffs)
-
tests/perception.tests.rb (added)
-
tests/utils.tests.rb (added)
-
tools/web (added)
-
tools/web/fmobjinspector.cgi (added)
-
utils.rb (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk
- Property svn:ignore
-
old new 1 1 test.log 2 .glimpse*
-
- Property svn:ignore
-
trunk/acceptance/epic4.rb
r202 r250 1 1 #!/usr/bin/env ruby 2 2 # 3 # FaerieMUD - The Hidden Path - Epic 4: Events3 # FaerieMUD - The Hidden Path - Epic 4: Action 4 4 # 5 5 # == Authors … … 32 32 require "#$basedir/utils" 33 33 require "fm" 34 require "linguistics" 35 36 include UtilityFunctions 37 Linguistics::use( :en ) 34 require 'fm/mixins' 35 require 'fm/linguistics' 36 38 37 39 38 ### Clocks can 'tick' 40 39 class TickVerb < FaerieMUD::Verb 41 def happen( instigator, origin=nil )40 def invoke( instigator, origin=nil ) 42 41 origin ||= instigator 43 42 return FaerieMUD::AuditoryEvent::new( 44 43 :instigator => instigator, 45 44 :origin => origin, 46 :verb => self 45 :verb => self, 46 :noticability => 0.05 47 47 ) 48 48 end … … 51 51 ### ...and also 'chime' 52 52 class ChimeVerb < FaerieMUD::Verb 53 def happen( instigator, origin=nil )53 def invoke( instigator, origin=nil ) 54 54 origin ||= instigator 55 55 return FaerieMUD::AuditoryEvent::new( 56 56 :instigator => instigator, 57 57 :origin => origin, 58 :verb => self 58 :verb => self, 59 :noticability => 0.25 59 60 ) 60 61 end … … 102 103 @tickCount += 1 103 104 self.log.debug "Tick %d" % [@tickCount] 104 events = @verbs[:tick]. happen( self )105 events = @verbs[:tick].invoke( self ) 105 106 self.disperseEvents( events ) 106 107 self.chime if (@tickCount % 10).zero? … … 111 112 def chime 112 113 self.log.debug "Chime!" 113 events = @verbs[:chime]. happen( self )114 events = @verbs[:chime].invoke( self ) 114 115 self.disperseEvents( events ) 115 116 end … … 123 124 # the overridden method. Ventriloquism doesn't count. =:P 124 125 125 def happen( speaker, language, words )126 def invoke( speaker, language, words ) 126 127 return FaerieMUD::SpeechEvent::new( 127 128 :instigator => speaker, … … 129 130 :verb => self, 130 131 :language => language, 131 :words => words 132 :words => words, 133 :noticability => 0.65 132 134 ) 133 135 end … … 179 181 end 180 182 181 return @sayVerb. happen( self, :trade, msg )183 return @sayVerb.invoke( self, :trade, msg ) 182 184 end 183 185 end … … 187 189 ### environment to $defout. 188 190 class Observer < FaerieMUD::Locus 191 192 include FaerieMUD::Linguistics 189 193 190 194 ### Handle events that are sensed through auditory perception … … 206 210 ### Create a sentence to describe an event. 207 211 def describeEvent( ev ) 208 sentence = [] 209 210 # Subject 211 sentence << objectToNounPhrase( ev.instigator ) 212 213 # Verb 214 sentence << conjugateVerb( ev.verb ) 215 216 # Direct object if any 217 if ev.target 218 sentence << objectToNounPhrase( ev.target ) 219 end 220 221 if ev.origin != ev.instigator 222 sentence << "in %s" % objectToNounPhrase( ev.origin ) 223 end 224 225 return sentence.join( " " ) 226 end 227 228 ### Create a noun phrase from the given +obj+. 229 def objectToNounPhrase( obj ) 230 simplename = obj.class.name.sub( /.*::/, '' ).downcase 231 simplename.en.a 232 end 233 234 235 ### This is a really simplistic version of what should really happen. 236 ### Ideally, verbs will be able to respond with the appropriate word form of 237 ### themselves. However, the NLG engine should be able to pervert the canonical 238 ### form to achieve tainted or ecstatic views, etc. 239 240 ### Conjugate the given +verb+ (a FaerieMUD::Verb object) and return it. 241 def conjugateVerb( verb ) 242 if /(\w+)Verb/.match( verb.class.name ) 243 $1.downcase 244 else 245 verb.class.name.downcase 246 end 247 end 248 212 $deferr.puts ev.inspect 213 214 prep_phrase = "in %s" % objectToNounPhrase( ev.origin ) if ev.origin != ev.instigator 215 sentence = Sentence.new( ev.instigator, ev.verb, ev.target, prep_phrase ) 216 217 return sentence.to_s 218 end 249 219 250 220 end -
trunk/docs
-
Property
svn:ignore set
to
html
-
Property
svn:ignore set
to
-
trunk/docs/FaerieMUD Design Diagrams.graffle
r245 r250 96 96 <integer>2</integer> 97 97 <key>Text</key> 98 <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf 11098 <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230 99 99 {\fonttbl\f0\fnil\fcharset77 LucidaGrande-Bold;} 100 100 {\colortbl;\red255\green255\blue255;} … … 251 251 </array> 252 252 <key>ModificationDate</key> 253 <string>2005-1 0-22 21:09:48 -0400</string>253 <string>2005-12-14 16:12:53 -0800</string> 254 254 <key>Modifier</key> 255 255 <string>Michael Granger</string> … … 353 353 <dict> 354 354 <key>Text</key> 355 <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf 110355 <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230 356 356 {\fonttbl\f0\fnil\fcharset77 TektonPro-BoldExt;} 357 357 {\colortbl;\red255\green255\blue255;} … … 496 496 <dict> 497 497 <key>Text</key> 498 <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf 110498 <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230 499 499 {\fonttbl\f0\fnil\fcharset77 TektonPro-BoldCondObl;} 500 500 {\colortbl;\red255\green255\blue255;} … … 648 648 <dict> 649 649 <key>Text</key> 650 <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf 110650 <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230 651 651 {\fonttbl\f0\fnil\fcharset77 TektonPro-BoldCondObl;} 652 652 {\colortbl;\red255\green255\blue255;} … … 712 712 <dict> 713 713 <key>Text</key> 714 <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf 110714 <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230 715 715 {\fonttbl\f0\fnil\fcharset77 TektonPro-BoldCond;} 716 716 {\colortbl;\red255\green255\blue255;} … … 776 776 <dict> 777 777 <key>Text</key> 778 <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf 110778 <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230 779 779 {\fonttbl\f0\fnil\fcharset77 TektonPro-BoldCondObl;} 780 780 {\colortbl;\red255\green255\blue255;} … … 924 924 <dict> 925 925 <key>Text</key> 926 <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf 110926 <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230 927 927 {\fonttbl\f0\fnil\fcharset77 TektonPro-BoldCond;} 928 928 {\colortbl;\red255\green255\blue255;} … … 988 988 <dict> 989 989 <key>Text</key> 990 <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf 110990 <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230 991 991 {\fonttbl\f0\fnil\fcharset77 TektonPro-BoldCondObl;} 992 992 {\colortbl;\red255\green255\blue255;} … … 1669 1669 <dict> 1670 1670 <key>Text</key> 1671 <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf 1101671 <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230 1672 1672 {\fonttbl\f0\fnil\fcharset77 TektonPro-BoldCond;} 1673 1673 {\colortbl;\red255\green255\blue255;} … … 1733 1733 <dict> 1734 1734 <key>Text</key> 1735 <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf 1101735 <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230 1736 1736 {\fonttbl\f0\fnil\fcharset77 TektonPro-BoldCondObl;} 1737 1737 {\colortbl;\red255\green255\blue255;} … … 1797 1797 <dict> 1798 1798 <key>Text</key> 1799 <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf 1101799 <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230 1800 1800 {\fonttbl\f0\fnil\fcharset77 TektonPro-BoldCondObl;} 1801 1801 {\colortbl;\red255\green255\blue255;} … … 1861 1861 <dict> 1862 1862 <key>Text</key> 1863 <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf 1101863 <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230 1864 1864 {\fonttbl\f0\fnil\fcharset77 TektonPro-BoldCondObl;} 1865 1865 {\colortbl;\red255\green255\blue255;} … … 1925 1925 <dict> 1926 1926 <key>Text</key> 1927 <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf 1101927 <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230 1928 1928 {\fonttbl\f0\fnil\fcharset77 TektonPro-BoldCondObl;} 1929 1929 {\colortbl;\red255\green255\blue255;} … … 1989 1989 <dict> 1990 1990 <key>Text</key> 1991 <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf 1101991 <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230 1992 1992 {\fonttbl\f0\fnil\fcharset77 TektonPro-BoldCond;} 1993 1993 {\colortbl;\red255\green255\blue255;} … … 2053 2053 <dict> 2054 2054 <key>Text</key> 2055 <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf 1102055 <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230 2056 2056 {\fonttbl\f0\fnil\fcharset77 TektonPro-BoldCondObl;} 2057 2057 {\colortbl;\red255\green255\blue255;} … … 2117 2117 <dict> 2118 2118 <key>Text</key> 2119 <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf 1102119 <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230 2120 2120 {\fonttbl\f0\fnil\fcharset77 TektonPro-BoldCond;} 2121 2121 {\colortbl;\red255\green255\blue255;} … … 2181 2181 <dict> 2182 2182 <key>Text</key> 2183 <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf 1102183 <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230 2184 2184 {\fonttbl\f0\fnil\fcharset77 TektonPro-BoldCondObl;} 2185 2185 {\colortbl;\red255\green255\blue255;} … … 2245 2245 <dict> 2246 2246 <key>Text</key> 2247 <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf 1102247 <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230 2248 2248 {\fonttbl\f0\fnil\fcharset77 TektonPro-BoldCondObl;} 2249 2249 {\colortbl;\red255\green255\blue255;} … … 2309 2309 <dict> 2310 2310 <key>Text</key> 2311 <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf 1102311 <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230 2312 2312 {\fonttbl\f0\fnil\fcharset77 TektonPro-BoldCondObl;} 2313 2313 {\colortbl;\red255\green255\blue255;} … … 2373 2373 <dict> 2374 2374 <key>Text</key> 2375 <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf 1102375 <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230 2376 2376 {\fonttbl\f0\fnil\fcharset77 TektonPro-BoldCond;} 2377 2377 {\colortbl;\red255\green255\blue255;} … … 2437 2437 <dict> 2438 2438 <key>Text</key> 2439 <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf 1102439 <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230 2440 2440 {\fonttbl\f0\fnil\fcharset77 TektonPro-BoldCondObl;} 2441 2441 {\colortbl;\red255\green255\blue255;} … … 2501 2501 <dict> 2502 2502 <key>Text</key> 2503 <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf 1102503 <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230 2504 2504 {\fonttbl\f0\fnil\fcharset77 TektonPro-BoldCond;} 2505 2505 {\colortbl;\red255\green255\blue255;} … … 2572 2572 <dict> 2573 2573 <key>Text</key> 2574 <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf 1102574 <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230 2575 2575 {\fonttbl\f0\fnil\fcharset77 TektonPro-BoldCondObl;} 2576 2576 {\colortbl;\red255\green255\blue255;} … … 2678 2678 <dict> 2679 2679 <key>Text</key> 2680 <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf 1102680 <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230 2681 2681 {\fonttbl\f0\fnil\fcharset77 TektonPro-BoldCondObl;} 2682 2682 {\colortbl;\red255\green255\blue255;} … … 2739 2739 <dict> 2740 2740 <key>Text</key> 2741 <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf 1102741 <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230 2742 2742 {\fonttbl\f0\fnil\fcharset77 TektonPro-BoldCondObl;} 2743 2743 {\colortbl;\red255\green255\blue255;} … … 2913 2913 <dict> 2914 2914 <key>Text</key> 2915 <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf 1102915 <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230 2916 2916 {\fonttbl\f0\fnil\fcharset77 LucidaGrande;} 2917 2917 {\colortbl;\red255\green255\blue255;} … … 2976 2976 <dict> 2977 2977 <key>Text</key> 2978 <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf 1102978 <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230 2979 2979 {\fonttbl\f0\fnil\fcharset77 LucidaGrande;} 2980 2980 {\colortbl;\red255\green255\blue255;} … … 3038 3038 <dict> 3039 3039 <key>Text</key> 3040 <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf 1103040 <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230 3041 3041 {\fonttbl\f0\fnil\fcharset77 TektonPro-BoldExtObl;} 3042 3042 {\colortbl;\red255\green255\blue255;} … … 3226 3226 <dict> 3227 3227 <key>Text</key> 3228 <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf 1103228 <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230 3229 3229 {\fonttbl\f0\fnil\fcharset77 TektonPro-BoldExtObl;} 3230 3230 {\colortbl;\red255\green255\blue255;} … … 3271 3271 <integer>0</integer> 3272 3272 <key>Text</key> 3273 <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf 1103273 <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230 3274 3274 {\fonttbl\f0\fnil\fcharset77 TektonPro-Regular;} 3275 3275 {\colortbl;\red255\green255\blue255;} … … 3319 3319 <integer>0</integer> 3320 3320 <key>Text</key> 3321 <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf 1103321 <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230 3322 3322 {\fonttbl\f0\fnil\fcharset77 TektonPro-Regular;} 3323 3323 {\colortbl;\red255\green255\blue255;} … … 3492 3492 <dict> 3493 3493 <key>Text</key> 3494 <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf 1103494 <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230 3495 3495 {\fonttbl\f0\fnil\fcharset77 LucidaGrande;} 3496 3496 {\colortbl;\red255\green255\blue255;} … … 3550 3550 <dict> 3551 3551 <key>Text</key> 3552 <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf 1103552 <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230 3553 3553 {\fonttbl\f0\fnil\fcharset77 TektonPro-BoldExtObl;} 3554 3554 {\colortbl;\red255\green255\blue255;} … … 3731 3731 <dict> 3732 3732 <key>Text</key> 3733 <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf 1103733 <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230 3734 3734 {\fonttbl\f0\fnil\fcharset77 TektonPro-BoldExtObl;} 3735 3735 {\colortbl;\red255\green255\blue255;} … … 3758 3758 <dict> 3759 3759 <key>Text</key> 3760 <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf 1103760 <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230 3761 3761 {\fonttbl\f0\fnil\fcharset77 TektonPro-BoldExtObl;} 3762 3762 {\colortbl;\red255\green255\blue255;} … … 3785 3785 <dict> 3786 3786 <key>Text</key> 3787 <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf 1103787 <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230 3788 3788 {\fonttbl\f0\fnil\fcharset77 TektonPro-BoldExtObl;} 3789 3789 {\colortbl;\red255\green255\blue255;} … … 3812 3812 <dict> 3813 3813 <key>Text</key> 3814 <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf 1103814 <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230 3815 3815 {\fonttbl\f0\fnil\fcharset77 TektonPro-BoldExtObl;} 3816 3816 {\colortbl;\red255\green255\blue255;} … … 3858 3858 <dict> 3859 3859 <key>Text</key> 3860 <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf 1103860 <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230 3861 3861 {\fonttbl\f0\fnil\fcharset77 TektonPro-Bold;} 3862 3862 {\colortbl;\red255\green255\blue255;} … … 3903 3903 <integer>0</integer> 3904 3904 <key>Text</key> 3905 <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf 1103905 <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230 3906 3906 {\fonttbl\f0\fnil\fcharset77 TektonPro-Regular;} 3907 3907 {\colortbl;\red255\green255\blue255;} … … 3948 3948 <integer>0</integer> 3949 3949 <key>Text</key> 3950 <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf 1103950 <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230 3951 3951 {\fonttbl\f0\fnil\fcharset77 TektonPro-Regular;} 3952 3952 {\colortbl;\red255\green255\blue255;} … … 4114 4114 <dict> 4115 4115 <key>Text</key> 4116 <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf 1104116 <string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf230 4117 4117 {\fonttbl\f0\fnil\fcharset77 TektonPro-BoldExt;} 4118 4118 {\colortbl;\red255\green255\blue255;} … … 4197 4197 <dict> 4198 4198 <key>Text</key> 4199
