# Entity Ops Definition The right-click menu of an item or object. Beyond the five plain operations an entity can have submenus, and operations that only appear while a varp or varbit sits inside a given range - which is how a door offers `Open` or `Close` but never both. - - - ## EntityOpsDefinition.SetOp ```pascal procedure TEntityOpsDefinition.SetOp(index: Integer; text: String); ``` Sets the text of the operation at `index`, replacing it if that slot already has one. `index` is the operation's place in the right-click menu, not its place in `Ops`, which only holds the slots that are actually filled. - - - ## EntityOpsDefinition.DecodeOp ```pascal procedure TEntityOpsDefinition.DecodeOp(const data: TByteArray; var offset: Integer; index: Integer); ``` Reads one menu operation into slot `index`. The text `hidden` is how the cache says a slot inherited from a template should be blanked out rather than shown, so it is read and dropped. - - - ## EntityOpsDefinition.DecodeSubOp ```pascal procedure TEntityOpsDefinition.DecodeSubOp(const data: TByteArray; var offset: Integer); ``` Reads one entry of a submenu: which operation it hangs off, its place within that submenu, and its text. - - - ## EntityOpsDefinition.DecodeConditionalOp ```pascal procedure TEntityOpsDefinition.DecodeConditionalOp(const data: TByteArray; var offset: Integer); ``` Reads an operation that only appears while a varp or varbit sits inside a given range - a door that offers `Close` only once it is open, for instance. - - - ## EntityOpsDefinition.DecodeConditionalSubOp ```pascal procedure TEntityOpsDefinition.DecodeConditionalSubOp(const data: TByteArray; var offset: Integer); ``` {ref}`TEntityOpsDefinition.DecodeConditionalOp` for a submenu entry, so it carries the submenu position as well as the varp range that gates it.