SubComponent class | thing.t[10039], english.t[1956]

A SubComponent is a Thing that is part of something else and represents the surface, container, underside or rear of the object to which it's attached. This allows a Thing to model several types of containment at once, by having (say) one SubComponent that represents its top (on which things can be placed) and another to represent its interior (in which things can be placed.

A SubComponent is normally defined as a nested anonymous object on the remapOn, remapIn, remapUnder or remapBehind property of a Thing. There's no need to further specify whether a SubComponent is also a Surface, Container, Underside or RearContainer, since the library can work this out from the property on which it is defined.

A SubComponent's 'name' property, and other related properties which control how the game refers to the object, delegate to the parent object. SubComponents assume their parent's vocabulary, but get a likelihood adjustment of -15 if their parent is also in scope. If you assign its own vocabulary, vocabulary it gets from its parent will be available in addition to that. For example, a car might have a remapIn SubComponent which can be referred to as 'interior' and a remapUnder SubComponent which can be referred to as 'undercarriage'. A car presumably has a windows and a windshield (hence isTransparent = true on the remapIn SubComponent), so if you're inside it then you can still see the exterior, and so 'car' will be matched preferentially to the parent object. However, an action such as 'TOUCH CAR', which is illogical for the exterior because it can only be seen and not reached, will instead apply to the SubComponent. On the other hand, if you're inside a truck trailer and can't see out, then the exterior is not even in scope and so 'truck' will match on the SubComponent with no penalty applied.

For all purposes other than those described above, the SubComponent is a distinct object from its parent, and does not delegate any of its behavior. In particular, sense-related properties such as 'desc' are not delegated. Therefore, if the SubComponent can ever have vocabulary then you will likely want to implement some of these. Passing them through to the parent is usually not appropriate, because, e.g., the interior or the undercarriage of a car should probably be described differently than the car itself.

`class SubComponent : Thing`

Superclass Tree (in declaration order)

`SubComponent`
`Thing`
`ReplaceRedirector`
`Redirector`
`object`
`Mentionable`
`LMentionable`
`object`

Subclass Tree

(none)

Global Objects

(none)

Summary of Properties

`exitLocation isFixed origVocabLikelihood`

Inherited from `Thing` :
`actorAlreadyInMsg actorAlreadyOnMsg actorNotInMsg actorNotOnMsg allowImplicitSay allowPourIntoMe allowPourOntoMe alreadyCleanMsg alreadyClosedMsg alreadyFastenedMsg alreadyHasMsg alreadyHeldMsg alreadyInMsg alreadyLitMsg alreadyLockedMsg alreadyMovedToMsg alreadyOnMsg alreadyOpenMsg alreadyPresentMsg alreadyThereMsg alreadyWornMsg areContentsListedInExamine autoGetInToReach autoGetOutToReach autoLookDir autoTakeOnFindHidden autoUnlock brightness brightnessForReading brightnessOff brightnessOn bulk bulkCapacity canAttachToMe canAttackWithMe canBurnWithMe canCleanWithMe canClimbDownMe canClimbUpMe canCutWithMe canDetachFromMe canDigWithMe canDropContents canEnterOnMe canFastenToMe canGoAlongMe canGoThroughMe canHearIn canHearOut canJumpOffMe canJumpOverMe canLieInMe canLieOnMe canLockWithMe canLookBehindMe canLookThroughMe canLookUnderMe canMoveToMe canMoveWithMe cannotAttachMsg cannotAttachToMsg cannotAttachToSelfMsg cannotAttackMsg cannotAttackWithMsg cannotAttackWithSelfMsg cannotBoardMsg cannotBoardSelfMsg cannotBreakMsg cannotBurnMsg cannotBurnWithMsg cannotCleanMsg cannotCleanWithMsg cannotClimbDownMsg cannotClimbMsg cannotCloseMsg cannotConsultMsg cannotCutMsg cannotCutWithMsg cannotCutWithSelfMsg cannotDetachFromMsg cannotDetachFromSelfMsg cannotDetachMsg cannotDigMsg cannotDigWithMsg cannotDigWithSelfMsg cannotDoffMsg cannotDrinkMsg cannotDropMsg cannotEatMsg cannotEnterMsg cannotEnterOnMsg cannotExtinguishMsg cannotFastenMsg cannotFastenToMsg cannotFastenToSelfMsg cannotFeelMsg cannotFlipMsg cannotFollowMsg cannotFollowSelfMsg cannotGetInCarriedMsg cannotGetOnCarriedMsg cannotGiveToMsg cannotGiveToSelfMsg cannotGoAlongMsg cannotGoNearThereMsg cannotGoThroughMsg cannotJumpOffMsg cannotJumpOverMsg cannotJumpOverSelfMsg cannotKissMsg cannotLieInMsg cannotLieOnMsg cannotLightMsg cannotLockWithMsg cannotLockWithSelfMsg cannotLookBehindMsg cannotLookThroughMsg cannotLookUnderMsg cannotMoveMsg cannotMoveToMsg cannotMoveToSelfMsg cannotMoveWithMsg cannotMoveWithSelfMsg cannotOpenMsg cannotPlugIntoMsg cannotPlugIntoSelfMsg cannotPlugMsg cannotPourIntoMsg cannotPourIntoSelfMsg cannotPourMsg cannotPourOntoMsg cannotPourOntoSelfMsg cannotPullMsg cannotPurloinContainerMsg cannotPurloinRoomMsg cannotPurloinSelfMsg cannotPushDownMsg cannotPushIntoMsg cannotPushMsg cannotPushOwnContainerMsg cannotPushThroughMsg cannotPushUpMsg cannotPushViaSelfMsg cannotPutBehindMsg cannotPutInMsg cannotPutInSelfMsg cannotPutMsg cannotPutOnMsg cannotPutUnderMsg cannotReadMsg cannotRemoveMsg cannotScrewMsg cannotScrewWithMsg cannotScrewWithSelfMsg cannotSetMsg cannotSetToMsg cannotShowToMsg cannotShowToSelfMsg cannotSitInMsg cannotSitOnMsg cannotSmellMsg cannotStandInMsg cannotStandOnMsg cannotTakeFromSelfMsg cannotTakeMsg cannotTakeMyContainerMsg cannotTakeSelfMsg cannotTalkToMsg cannotTalkToSelfMsg cannotTasteMsg cannotThrowAtMsg cannotThrowAtSelfMsg cannotThrowMsg cannotThrowToMsg cannotThrowToSelfMsg cannotTurnMsg cannotTurnToMsg cannotTurnWithMsg cannotTurnWithSelfMsg cannotTypeOnMsg cannotUnfastenFromMsg cannotUnfastenFromSelfMsg cannotUnfastenMsg cannotUnlockWithMsg cannotUnlockWithSelfMsg cannotUnplugFromMsg cannotUnplugFromSelfMsg cannotUnplugMsg cannotUnscrewMsg cannotUnscrewWithMsg cannotUnscrewWithSelfMsg cannotWearMsg cannotWriteOnMsg canPlugIntoMe canPourIntoMe canPourOntoMe canPullTravel canPushTravel canPutBehindMe canPutInMe canPutUnderMe canReachIn canReachOut canScrewWithMe canSeeIn canSeeOut canSetMeTo canSitInMe canSitOnMe canSmellIn canSmellOut canStandInMe canStandOnMe canSupply canTalkToMe canThrowAtMe canThrowToMe cantMoveAwayFromSelfMsg cantSpecialActionMsg canTurnMeTo canTurnWithMe canTypeOnMe canUnfastenFromMe canUnlockWithMe canUnplugFromMe canUnscrewWithMe canWriteOnMe checkAttackMsg checkFeelMsg checkKissMsg circularlyInMsg collectiveGroups combineDuplicateObjects contents contentsListed contentsListedInExamine contentsListedInLook contentsListedInSearch contentsSublisted contType currentInterlocutor curSetting darkName decorationActions decorationActions defaultPosture desc directlyHeld directlyIn directlyWorn distinguishByContents dontNeedCleaningObjMsg dropItemsBehind dropItemsUnder dropLocation enclosing examined examineListed examineLister extContents familiar feelDesc findHiddenDest fluidName futileToAttackMsg futileToKissMsg getBulkHiddenBehind getBulkHiddenIn getBulkHiddenUnder getFacets getOutermostRoom getOutToJump getWeightHiddenBehind getWeightHiddenIn getWeightHiddenUnder globalParamName groupOrder handleLookDir hearNothingMsg hiddenBehind hiddenIn hiddenUnder illuminationThreshold inDarkDesc indirectLockableMsg informedNameTab initiallyKnowsAbout initSpecialDesc intContents interiorDesc inventoryListed isAttachable isAttackable isBoardable isBreakable isBurnable isClean isCleanable isClimbable isCloseable isConsultable isCuttable isDecoration isDetachable isDiggable isDoffable isDrinkable isDroppable isEdible isEnterable isExtinguishable isFastenable isFastened isFeelable isFlippable isFollowable isHidden isInitialPlayerChar isKissable isLightable isListed isLit isLocked isMoveable isOn isOpen isOpenable isPlayerChar isPlugable isPourable isProminentNoise isProminentSmell isPullable isPushable isReadable isRemoveable isScrewable isSettable isSmellable isSwitchable isTakeable isTasteable isThrowable isTransparent isTurnable isUnfastenable isUnplugable isUnscrewable isVehicle isWearable keyDoesntWorkMsg keyList keyNotNeededMsg kissRank known knownKeyList knownProp lastSeenAt lieOnScore lightSources listableContents listenDesc listenDescWithoutSource listenDescWithSource listOrder listWith location locationHistory locationHistoryLength lockability lockedMsg lookBehindMsg lookInMsg lookListed lookThroughMsg lookUnderMsg markInventoryAsSeen matchPullOnly matchPushOnly maxBulkHiddenBehind maxBulkHiddenIn maxBulkHiddenUnder maxItemsCarried maxSingleBulk maxSingleWeight maxWeightHiddenBehind maxWeightHiddenIn maxWeightHiddenUnder mentioned miscListSuffix moved movedTo moveNoEffectMsg mustBeCleanedWith myInventoryLister myLookBehindLister myLookInLister myLookUnderLister myOpeningContentsLister myThoughtManager myWornLister needsCleaning noLongerTalkingToAnyoneMsg nominalContents noNeedToCleanMsg notFastenedMsg notHoldingMsg notImportantMsg notInMsg notLitMsg notLockableMsg notLockedMsg notMovedToMsg notSwitchableMsg notTalkingToAnyoneMsg notWornMsg objInPrep objIntoPrep okayCleanMsg okayGetOutOfMsg okayLieInMsg okayLieOnMsg okayLockMsg okayOpenMsg okayPushIntoMsg okayPushOutOfMsg okaySetMsg okaySitInMsg okaySitOnMsg okayStandInMsg okayStandOnMsg okayUnlockMsg opacity opened openStatusReportable owner ownsContents paraBrksBtwnSubcontents partOfYouMsg pcListedInLook posture postureDesc preCondActor pullNoEffectMsg pushNoEffectMsg readDesc recognizableInDark remapActor remapBehind remapIn remapOn remapProps remapUnder roomContentsLister roomPart roomPartDesc roomSubContentsLister roomTitle searchListed seen seenProp separateRemove shouldBeBroken shouldNotBreakMsg shouldNotPourIntoMsg shouldNotPourOntoMsg sightSize sitOnScore smellDesc smellDescWithoutSource smellDescWithSource smellNothingMsg smellObj smellSize soundObj soundSize specialDesc specialDescBeforeContents specialDescListWith specialDescOrder stagingLocation standOnScore stateDesc tasteDesc throwFallsShortMsg tooDarkToReadMsg tooDarkToSeeMsg tooFarAwayToHearMsg tooFarAwayToReadMsg tooFarAwayToSeeDetailMsg tooFarAwayToSmellMsg totalWeight trackedLocation trackRoomsOnly turnLastExamined turnLastMoved turnLastMovedInto turnNoEffectMsg useInitSpecialDesc useInteriorDesc useKey_ useSpecialDesc verobj viaMode visibleInDark vocabLikelihood weight weightCapacity withKeyMsg wornBy`

``

``

Inherited from `Mentionable` :
`altVocab ambiguouslyPlural disambigGroup disambigMatchPhrases disambigName disambigOrder finalizeVocabWhen isHer isHim isIt massNoun matchPhrases matchPhrasesExclude name originalVocab person plural proper qualified states thinkDesc uavwNum useAltVocabWhen vocab vocabWords`

Inherited from `LMentionable` :
`acronymPluralPat alphaCharPat aName apostPluralPat apostSPat deannotatePat dictComp dummyName elevenEighteenPat emptyVocabWords esPluralPat firstWordPat heName herName hersName himName iesPluralPat irregularPlurals isGenderNeutral lastWordPat leadingTagOrQuotePat menPluralPat mentionName objInName objIntoName objName objOutOfName oneLetterAnWordPat oneLetterWordPat ownerNamed pluralPat pluralTokens posPat possAdj possEnding possNoun prepList prepPhrasePat prepWordPat pronounMap properNamePat properPat reflexiveName replacingVocab specialAOrAn tagOrQuotePat thatName thatObjName theName theObjName trimPat truncationLength weakWordPat`

Summary of Methods

`contType delegateParent delegateParent delegateParent delegateParent delegateParent delegateParent delegateParent delegateParent delegateParent delegateParent delegateParent delegateParent delegateParent filterResolveList initializeSubComponent listOrder matchName matchNameDisambig nameAs preinitThing`

Inherited from `Thing` :
`abcName accumulateBrightness accumulatedBrightnessWithin actionMoveInto actorAction addToAllContents addToContents afterAction afterTravel allContents allowReachIn allowReachOut aobjFor areContentsListedInExamine beforeAction beforeMovePushable beforeTravel brightnessWithin byRoom canHear cannotPushTravelMsg cannotReachInMsg cannotReachOutMsg canReach canSee canSmell canTalkTo canTouch checkForContradictions checkInsert checkPushTravel checkReach checkReachIn checkRemove checkRoomToHold checkSetting childLocType commonContainingParent commonInteriorParent containerPath containerPathBlock contentsVisibleFrom darkDesc describeMovePushable describePushTravel describeView directChildParent discover dobjFor(AskAbout) dobjFor(AskFor) dobjFor(Attach) dobjFor(AttachTo) dobjFor(Attack) dobjFor(AttackWith) dobjFor(Board) dobjFor(Break) dobjFor(Burn) dobjFor(BurnWith) dobjFor(Clean) dobjFor(CleanWith) dobjFor(Climb) dobjFor(ClimbDown) dobjFor(ClimbUp) dobjFor(Close) dobjFor(ConsultAbout) dobjFor(Cut) dobjFor(CutWith) dobjFor(Default) dobjFor(Detach) dobjFor(DetachFrom) dobjFor(Dig) dobjFor(DigWith) dobjFor(Doff) dobjFor(Drink) dobjFor(Drop) dobjFor(Eat) dobjFor(Enter) dobjFor(EnterOn) dobjFor(Examine) dobjFor(Extinguish) dobjFor(Fasten) dobjFor(FastenTo) dobjFor(Feel) dobjFor(Flip) dobjFor(Follow) dobjFor(GetOff) dobjFor(GetOutOf) dobjFor(GiveTo) dobjFor(GiveToImplicit) dobjFor(GoAlong) dobjFor(GoNear) dobjFor(GoThrough) dobjFor(GoTo) dobjFor(JumpOff) dobjFor(JumpOver) dobjFor(Kiss) dobjFor(LieIn) dobjFor(LieOn) dobjFor(LieOn) dobjFor(Light) dobjFor(ListenTo) dobjFor(Lock) dobjFor(LockWith) dobjFor(LookBehind) dobjFor(LookIn) dobjFor(LookThrough) dobjFor(LookUnder) dobjFor(Move) dobjFor(MoveAwayFrom) dobjFor(MoveTo) dobjFor(MoveWith) dobjFor(Open) dobjFor(PlugIn) dobjFor(PlugInto) dobjFor(Pour) dobjFor(PourInto) dobjFor(PourOnto) dobjFor(Pull) dobjFor(Purloin) dobjFor(Push) dobjFor(PushTravelClimbDown) dobjFor(PushTravelClimbUp) dobjFor(PushTravelDir) dobjFor(PushTravelEnter) dobjFor(PushTravelGetOutOf) dobjFor(PushTravelThrough) dobjFor(PutBehind) dobjFor(PutIn) dobjFor(PutOn) dobjFor(PutUnder) dobjFor(QueryAbout) dobjFor(Read) dobjFor(Remove) dobjFor(SayTo) dobjFor(Screw) dobjFor(ScrewWith) dobjFor(Search) dobjFor(Set) dobjFor(SetTo) dobjFor(ShowTo) dobjFor(ShowToImplicit) dobjFor(SitIn) dobjFor(SitOn) dobjFor(SitOn) dobjFor(SmellSomething) dobjFor(SpecialAction) dobjFor(StandIn) dobjFor(StandOn) dobjFor(StandOn) dobjFor(Strike) dobjFor(SwitchOff) dobjFor(SwitchOn) dobjFor(SwitchVague) dobjFor(Take) dobjFor(TakeFrom) dobjFor(TakeFrom) dobjFor(TalkAbout) dobjFor(TalkTo) dobjFor(Taste) dobjFor(TellAbout) dobjFor(Throw) dobjFor(ThrowAt) dobjFor(ThrowDir) dobjFor(ThrowTo) dobjFor(Touch) dobjFor(Turn) dobjFor(TurnTo) dobjFor(TurnWith) dobjFor(TypeOn) dobjFor(TypeOnVague) dobjFor(Unfasten) dobjFor(UnfastenFrom) dobjFor(Unlock) dobjFor(UnlockWith) dobjFor(Unplug) dobjFor(UnplugFrom) dobjFor(Unscrew) dobjFor(UnscrewWith) dobjFor(Wear) dobjFor(WriteOn) doPushTravel downLook examineStatus findHidden findPlausibleKey firstContainerPathBlock forget getBulkWithin getCarriedBulk getCarriedWeight getLocationHistory getLookDirHandler getMiscListSuffix getPreviousLocation getStatuslineExitsHeight getWeightWithin handleCommand hasSeen hideFromAll informedAbout interiorParent iobjFor(AttachTo) iobjFor(AttackWith) iobjFor(BurnWith) iobjFor(CleanWith) iobjFor(CutWith) iobjFor(Default) iobjFor(DetachFrom) iobjFor(DigWith) iobjFor(FastenTo) iobjFor(GiveTo) iobjFor(LockWith) iobjFor(MoveAwayFrom) iobjFor(MoveTo) iobjFor(MoveWith) iobjFor(PlugInto) iobjFor(PourInto) iobjFor(PourOnto) iobjFor(PushTravelClimbDown) iobjFor(PushTravelClimbUp) iobjFor(PushTravelEnter) iobjFor(PushTravelGetOutOf) iobjFor(PushTravelThrough) iobjFor(PutBehind) iobjFor(PutIn) iobjFor(PutOn) iobjFor(PutUnder) iobjFor(ScrewWith) iobjFor(ShowTo) iobjFor(TakeFrom) iobjFor(ThrowAt) iobjFor(ThrowTo) iobjFor(TurnWith) iobjFor(UnfastenFrom) iobjFor(UnlockWith) iobjFor(UnplugFrom) iobjFor(UnscrewWith) isAudibleFrom isChild isDirectChild isDirectlyHeldBy isDirectlyIn isDirectlyWornBy isHeldBy isIlluminated isIn isInterior isOrIsIn isOutside isReadableFrom isSmellableFrom isThereALightSourceIn isVisibleFrom isWornBy knowsAbout listableContentsOf listContents listenDesc listRemoteContents listSubcontentsOf litWithin locationWhich locType lookAroundWithin lookDir makeCleaned makeFastened makeLit makeLocked makeMovedTo makeOn makeOpen makeSetting makeWorn markContradiction moveHidden moveInto moveMLIntoAdd moveMLOutOf nestedLoc nominalOwner noteSeen notifyContradiction notifyEvent notifyInsert notifyRemove notifySightEvent notifySmellEvent notifySoundEvent notionalContents outermostParent outermostVisibleParent ownedBy preAction pushTravelRevealItems reachBlockedMsg remoteBrightness remoteInitSpecialDesc remoteObjInName remoteSpecialDesc removeFromContents revealOnMove roomHeadline roomSubhead sayCantBearMoreWeight sayDontKnowHowToGetThere sayDontKnowHowToReach sayFindHidden sayNothingUnexpectedThatWay sayPushTravel sayTooDarkToLookDir sayTooHeavy sayTooHeavyToHide scoreObject setHasSeen setInformed setKnown setKnowsAbout setSeen shinesOut showConnectedMiscContents showFirstConnectedSpecials showRemoteSpecialDesc showSecondConnectedSpecials showSpecialDesc showStatuslineExits smellDesc statusName totalBulkIn totalWeightIn traceContainerPath travelVia tryCheck tryMakingPosture unmention unmentionRemoteContents updateLocationHistory verifyActor verifyEnterPosture verifyPushTravel wouldBeLitFor`

Inherited from `ReplaceRedirector` :
`redirect`

Inherited from `Redirector` :
`askMissingLiteral doInstead doNested doOtherAction`

Inherited from `Mentionable` :
`actionReport construct initAltVocab matchNameCommon phraseMatchName simpleMatchName updateVocab`

Inherited from `LMentionable` :
`addDictWord addVocab addVocabWord aNameFrom aNameFromPoss classInit contify distinguishedName ifPronoun inheritVocab initVocab initVocabWord locify matchPronoun pluralNameFrom pluralWordFrom possessify pronoun removeVocabWord replaceVocab theNameFrom theNameIs usedPluralToken`

Properties

`exitLocation` OVERRIDDEN | `thing.t[10196]`

Our exit location will normally be our location's (i.e. parent object's) location. If for any reason that's nil will use our lexicalParent's location instead.

`isFixed` OVERRIDDEN | `thing.t[10044]`

A SubComponent is always fixed in place since it represents a fixed part of its parent.

`origVocabLikelihood` | `thing.t[10066]`

Out original vocabLikelihood, which will be set to our vocabLikelihood at preinit.

Methods

`contType ( )` | `thing.t[10072]`

The contType of a SubComponent is deduced based on what remapFoo property it's attached to.

`delegateParent (name)` | `thing.t[10102]`

Delegate 'name' and related properties to the parent object.

`delegateParent (proper)` | `thing.t[10103]`

no description available

`delegateParent (qualified)` | `thing.t[10104]`

no description available

`delegateParent (person)` | `thing.t[10105]`

no description available

`delegateParent (plural)` | `thing.t[10106]`

no description available

`delegateParent (massNoun)` | `thing.t[10107]`

no description available

`delegateParent (isHim)` | `thing.t[10108]`

no description available

`delegateParent (isHer)` | `thing.t[10109]`

no description available

`delegateParent (isIt)` | `thing.t[10110]`

no description available

`delegateParent (aName)` | `thing.t[10111]`

no description available

`delegateParent (theName)` | `thing.t[10112]`

no description available

`delegateParent (owner)` | `thing.t[10113]`

no description available

`delegateParent (ownerNamed)` | `thing.t[10114]`

no description available

`filterResolveList (np, cmd, mode)`OVERRIDDEN | `thing.t[10150]`

Normally we want any command that might be directed to a SubComponent to be directed to its parent, unless the actor is inside the SubComponent in which case we want to match the SubComponent.

`initializeSubComponent (parent)` | `thing.t[10174]`

If we're an enterable container then we and our parent object may alternate as the parser'c choice when the player refers to us. In such a case, this method makes this SubComponent and its parent facets of each other so that if the player refers to us with the appropriate pronound (probably iT) the parser will pick whichever of the SubComponent and the parent is in scope.

`listOrder ( )` | `thing.t[10089]`

A SubComponent's listOrder is determined by its contType.

`matchName (tokens)`OVERRIDDEN | `thing.t[10119]`

Use the parent's vocabulary, but with a likelihood penalty if

`matchNameDisambig (tokens)`OVERRIDDEN | `thing.t[10136]`

no description available

`nameAs (parent)` | `thing.t[10165], english.t[1963]`

DEPRECATED. It used to be necessary to call this method after changing the parent's name-related properties. Now it's a no-op.

Modified in english.t[1963]:
In addition to the properties copied on the original definition of this class in his method, we need to copy all the other name related properties of the parent object that game authors might conceivably customize.

`preinitThing ( )`OVERRIDDEN | `thing.t[10047]`

Preinitialize a SubComponent.

Adv3Lite Library Reference Manual
Generated on 08/12/2025 from adv3Lite version 2.2.2