| /* First of all, a class for complex items. It does nothing except say | |
| * yes, they are complex. | |
| */ | |
| class complex: item | |
| iscomplex = true | |
| ; | |
| /* Okay. What we have here is a new function I created. It looks much | |
| * like listcont, but is only ( and always ) called to get the item | |
| * listing for a room. Hopefully, hopefully, hopefully, this will | |
| * allow us to give long descriptions for some objects, and short ones | |
| * for the rest. Note the long descs are only used in room listings, not | |
| * for containers. | |
| */ | |
| roomcont: function( obj ) | |
| { | |
| local i, count, tot, ctot, stot, list, slist, clist, cur, disptot; | |
| count := 0; | |
| list := obj.contents; | |
| slist := []; | |
| clist := []; | |
| tot := length( list ); | |
| i := 1; | |
| /* The first thing to do is to sort the items. Items with complex descriptions | |
| * are added to the c(omplex)list, and everything else is added to the | |
| * s(imple)list. | |
| */ | |
| while ( i <= tot ) | |
| { | |
| cur := list[i]; | |
| if ( cur.iscomplex ) | |
| { | |
| clist := clist + cur; | |
| } | |
| else | |
| { | |
| slist := slist + cur; | |
| } | |
| i := i + 1; | |
| } | |
| /* Now we can define some things. And reset i, the generic counter. */ | |
| ctot := length( clist ); | |
| stot := length( slist ); | |
| disptot := itemcnt ( slist ); | |
| i := 1; | |
| /* Print the items on the clist first... */ | |
| if ( ctot ) | |
| { | |
| while ( i <= ctot ) | |
| { | |
| cur := clist[i]; | |
| cur.cdesc; // list this object's cdesc | |
| if ( cur.islamp and cur.islit ) " (providing light)"; | |
| /* (Do we need extra space or not?) */ | |
| if ( not ( ( i + 1 ) > ctot ) ) | |
| { | |
| " "; | |
| } | |
| i := i + 1; | |
| } | |
| } | |
| /* ...reset values... */ | |
| i := 1; | |
| /* ...and go on and print the items with normal descs, as usual. */ | |
| if ( stot ) | |
| { | |
| /* Do we need some spaces first? */ | |
| if ( ctot ) | |
| " "; | |
| /* Now, let's proceed. */ | |
| "You see "; | |
| while ( i <= stot ) | |
| { | |
| cur := slist[i]; | |
| if ( cur.isListed ) | |
| { | |
| if ( count > 0 ) | |
| { | |
| if ( count+1 < disptot ) | |
| ", "; | |
| else if (count = 1) | |
| " and "; | |
| else | |
| ", and "; | |
| } | |
| count := count + 1; | |
| cur.adesc; // list this object | |
| if ( cur.islamp and cur.islit ) " (providing light)"; | |
| } | |
| i := i + 1; | |
| } | |
| " here."; | |
| } | |
| } | |
| /* Now, all that's left is to modify the function used to look around... */ | |
| modify room | |
| nrmLkAround( verbosity ) = // lookAround without location status | |
| { | |
| local l, cur, i, tot; | |
| if ( verbosity ) | |
| { | |
| "\n\t"; self.ldesc; | |
| l := self.contents; | |
| tot := length( l ); | |
| i := 1; | |
| while ( i <= tot ) | |
| { | |
| cur := l[i]; | |
| if ( cur.isfixed ) cur.heredesc; | |
| i := i + 1; | |
| } | |
| } | |
| "\n\t"; | |
| if (itemcnt( self.contents )) | |
| { | |
| roomcont( self ); | |
| } | |
| listcontcont( self ); "\n"; | |
| l := self.contents; | |
| tot := length( l ); | |
| i := 1; | |
| while ( i <= tot ) | |
| { | |
| cur := l[i]; | |
| if ( cur.isactor ) | |
| { | |
| if ( cur <> Me ) | |
| { | |
| "\n\t"; | |
| cur.actorDesc; | |
| } | |
| } | |
| i := i + 1; | |
| } | |
| } | |
| ; | |
| /* And voila! Pretty cool, eh? Yes, I know it is rather kludgey, and possibly | |
| * buggy. Sorry. All comments to scythe@u.washington.edu. Please do not claim | |
| * this work as your own, but please feel free to use and distribute. Thank you | |
| */ | |
| /* All that is needed to make an item complex is to make it class complex, | |
| * and give a cdesc for it. For example: | |
| * nugget: complex, item | |
| * sdesc = "gold nugget" | |
| * ldesc = "It's a nugget of gold!" | |
| * cdesc = "A glittering gold nugget is here." | |
| * [...and so on.] | |
| * Enjoy! | |
| */ | |
Xet Storage Details
- Size:
- 4.15 kB
- Xet hash:
- 5c1f6072a46ca2c617cb129662d67f0a26d3162dfea6d97a468815914ccd07a5
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.