Yes, although by default they’re not. You can just declare them to be portable
, though. (See Writing with Inform 3.6 and 3.7.)
However, the bigger problem is that something cannot be both a device and a supporter – to Inform, those are fundamentally different kinds of things. Probably the easiest thing to do is just to make the lamp a portable supporter, then declare that it has a part that’s a device:
Cave Entrance is a room. The bulb is a device. The electric lantern is a supporter in Cave Entrance. The bulb is part of the electric lantern.
And then redirect some actions from the lamp to the bulb:
Instead of switching on the lantern, try switching on the bulb. Instead of switching off the lantern, try switching off the bulb.
(Notice that that doesn’t redirect every action and there’s a good chance I missed things there that you’ll want to cover.)
(EDIT. You could of course do it the other way around: make the lamp a device, and then declare The top of the lamp is a supporter. The top of the lamp is part of the lamp.
, and then redirect a different set of actions to the top of the lamp
instead of directing the switching on/off actions to the bulb. This seems less intuitive to me but should work just as well in theory.)
And then of course write some rules to handle what happens when the bulb is switched on:
Report switching on the bulb:
say "With a CLICK! the light bulb begins to glow.".
Carry out switching on the bulb:
now the bulb is lit.
Report switching off the bulb:
say "You switch off the lantern, and the bulb goes dark".
Carry out switching off the bulb:
now the bulb is not lit.
One of the standard limitations of Inform’s world model is that it has no concept whatsoever of limitations for supporters based on size, so you might want to write some additional rules to avoid absurdity:
Instead of putting the full-sized mechanical elephant or the Volkswagen Vanagon on the lantern:
say "That would crush the lantern.".