Ideas for Stendhal/Collision Types
This page demonstrates ideas for different types of collision that could be utilized on Stendhal. Currently, there is only one type which is strict collision (nothing passes through on any condition).
(this page will be updated with image mockups)
This type is already implemented. It allows absolutely nothing to pass through it.
This type of collision allows ranged/throwable weapons & items to pass or fly "over" it. Characters & other entities cannot pass through by walking. This would be useful for areas such as fences & bushes.
This is essentially the same as "range allowed". But additionally, items can be placed in these areas by players. This type of collision would replace server.entity.mapstuff.area.WalkBlocker. This type of collision is useful for tables.
This is actually not collision at all. But rather is a walkable area that does not appear to be so on the mini map. This would be useful for hidden areas.
This area can only be passed through by players if they meet a certain condition, much like some portals work now, but without having to teleport the player. Some examples of where this might be useful are areas that are off limits to players under a specified level that do not require a map change, such as the entwives area. It could also be used to check if a player is carrying a specified item before allowing passage. Attempting to pass through these areas could trigger events, such as a SpeakerNPC notifying the player that he/she cannot pass.
This type of collision blocks passage from specified directions. So it could be useful in areas where passage might not be allowed in reverse. For example, when a player passes from a supposed elevated spot on a map, but cannot climb back up like a hill or the deck of a house. These areas could block passage from at least one direction & up to three directions. For example, players may pass moving north, south, or east. But may not pass if moving west.
In addition to using square tiles to mark collision areas, vectors or lines could be used. The purpose of this would allow for two tiles next to each other to be walkable, but not allow passage to the other tile/position. This would be useful for things such as chairs & perhaps even fences. There may be better examples where this might be useful.