TWiki Home Tharsis . Design . ConcealedObjects Tharsis webs:
Design | Guilds | Combat | Website
Design . { Home | Changes | Index | Search | Go }
NB. For this topic the word "player" encompases player characters and non-player-characters.

See also: VagueDescriptions, maybe these should be combined? -- PumaN - 02 Jul 2004


Currently the game has 2 states "visible" and "invisible".

Invisible things are completely invisible and, in theory at least, unable to ever be seen or directly interacted with by a normal player.

Total invisibity is worth retaining as there will always be objects we need to create to perform tasks which the user should never see. For example shadow objects.

There exists a need for the ability to conceal an object. Concealing an object involves hiding it with some level of skill from those that might otherwise have seen it.

At this time I am not interested in getting into a discussion of where something is concealed (IE Up my jumper or behind a bush). Let us presume that wherever you happen to be standing in the mud world there exists something you can use to conceal yourself or an item in question.

Primary things for concealment are of course players, npcs and the things they carry.

Concealing an object does not guarantee that it will not be seen by other players. A concealed item would be concealed with a level of skill and someone stands to notice that object based on their perception. The level of concealment of an object will not change over time - IE once concealed and until either unconcealed (or possibly re-concealed) it retains the same level of concealment.

Lets presume for now that an object has a level of concealment from 0 to 100. 0 being "no attempt to conceal", 1 being "concealed as badly as possible", 100 being "concealed as well as is possible". A value of 1 for concealment is presumed as "appears concealed to everyone but is not hidden from anyone", IE for everyone the item will show as "item (concealed/hidden)" when doing a look and will never be unnoticable.

Lets presume that there exist 2 commands.

Once an object is concealed may be seen by a player who looks at the container of that object. For example everyone who does a look stands a chance of seeing concealed players. Ditto anyone looking at a player has a chance of seeing any concealed objects in their inventory.

Ideally there exist 3 levels of "noticing" an object.

  1. You are completely aware of what the object is, even though it is concealed. IE you can clearly see Fantom's fat butt sticking out from behind the tree he thinks he's hiding behind.
  2. You are aware of the existence of an object without being aware of what it is. IE you can see a lump under the carpet.
  3. You have no idea the object is there and it should not appear nor be targettable by anything, except area effect commands. Hiding from a sandstorm doesn't work.

The player who has hidden an object should always see it as level 1.

We may not implement level 2 in the first instance.

A player should not be given any indication of how well they are hidding. The conceal command may provide limited feadback "You tuck the elephant away, obscuring it a little from view / you hide the pebble completely from view". When performing a look the items will always appear as concealed - thus the hide and conceal commands should always set the level of concealment to at least 1. In addition those commands should also add the issuer to the list of "can see" for the object. After hiding/concealing there should be no way for a player to determine the effectiveness without asking other players. IE if they conceal 2 objects with levels (1 and 100). They will show as "object1 (concealed), object2 (concealed)".

The chance of noticing a concealed item should be based on the perception of the player performing the look as well as the level of concealment. Once something has been noticed it should remain visible until it re-conceals itself. Thus the check is only necessary when attempting to notice items which have not yet been noticed.


During phase 1 we shall not implement level 2 concealment.


Provides the support for an item to be concealed.

Provides the getter/setter for the level of concealment

Every concealed object is aware of the list of players that can and can't see it. This is done by maintaining a list of those players that can see it. This list is maintained by tracking the arrival of players into the environment of the concealed object and giving them a chance to notice the object at the time of arrival.

Concealed objects also need to track departure of players and upon departure those players should be removed from the "can see" list.

There needs to be methods for adding and removing players from the "can see" list as well as a method for clearing the list - which will be used when a concealed item is first concealed or moves into a new environment.

A method get_can_see( object player ) or similiar (there is somethign like this already in existence) will be provided. This will return true if the player is in the "can see" list. To support level 2 concealment we should consider thus returning an int of 0/1/2 (define these in a #include somewhere).


Most (some? a few?) messages are generated these days using the m_messages module which specifies that for an object to generate a message you call something like:
   object_generating_message->sometypeof_message("message_text", objects_involved)

There are a few variants but essentially the underlying system gets given a "message issuer", a "message" and a set of objects involved (one of which may be the target of the message).

TODO: currently up to here.

hide command

todo: how it works

conceal command

todo: how it works

look command

todo: how it works

look at command

todo: how it works


remaining invis while moving. "sneak east" vs "sneak mode on"+"east"

commands that remove concealment at the start

eg say todo: how it works

commands that remove concealment part way through

eg backstab todo: how it works

commands that don't remove concealment

eg inv todo: how it works


  1. Create module m_concealable
  2. Create a variant of player.c which extends this
  3. Create a hide learnt command
  4. Create a look command which handles hidden players
  5. Create an object which is concealable
  6. Create a conceal learnt command
  7. Extend the look command to handle looking at concealed items
  8. ...lets get this far...

-- FantoM - 21 Jun 2004


-- ProdigY - 21 Jun 2004

This partly relates to this; It should be possible to sheath and draw your weapon. For combat this has the effect of suprise. It would be much less suspicous to flank an enemy with a sheathed sword. Then when you are close enough draw it and charge. Also creates an intresting point with police. Highleveled players with drawn weapons should definately scare people away.

Without having read all that, could this module work by simply going invis to the room and creating a delay in combat reaction from the target while you prepare a sneak attack? Delay would cancel out an aggro attack, but mostly because you're invisible to the target. Delay can best be used to sneak past target(s) or escape further combat. Setting items in inv to concealed would be really cool. I don't think the spell should wear off if a thief does this to their items. Although, perception bonus might be able to see through the concealment. So, yeah. Lots of questions in there. Please fill me in. -- LuCid - 15 Mar 2005

Topic ConcealedObjects . { Edit | Attach | Ref-By | Printable | Diffs | r1.14 | > | r1.13 | > | r1.12 | More }
Revision r1.14 - 15 Mar 2005 - 06:47 GMT - LuCid
Parents: WebHome
Copyright © 2001 by the contributing authors. All material on this collaboration tool is the property of the contributing authors.
Ideas, requests, problems regarding Tharsis? Send feedback.