ID:159775
 
Ok so i tried like this :
mob/player
Bump(obj/Sign)
if(isobj(Sign))
src << "random text here"
Bump(obj/Sign1)
if(isobj(Sign1))
src << "some text here"


I tried making it :
mob/player
Bump(obj/Sign,obj/Sign1)
if(isobj(Sign))
src << "random text here"
if(isobj(Sign1))
src << "some text here"

and i can't get it to say what it should say

if i try the first one i get "some text here" for both of them,and if i try the second one i get "random text here"

and i tried removing the "if(isobj)" things....but makes no difference
The second snippet is all wrong because a second argument is not passed (as it doesn't exist!).

Unlike most verbs you have been dealing with, movement procedures (and most other procedures) do not filter what you are looking for. Not to mention you were looking for any /obj and giving it the variable name S... anyways, this means that Sign can be an /atom, /mob, /obj/projectile, etc.

Instead of using isobj(), use istype() to look for a specific path:
Bump(atom/A)
if(istype(A, /obj/Sign))
....

Bump(obj/Sign/S)
if(istype(S)) // Since the 2nd argument is not defined, istype() will check if S has the same variable path defined.
...
No offense, but your execution of this is rather ugly.

Problems with your first snippet:
1) You cannot override procs like that. You can only override it once, and you have to call the parent to carry out the default action(s).
2) Your sign might be an obj, but it might not be a sign. You would want to use istype() there.

Problems with the second snippet:
1) Bump() only has one arg.
2) See number two above

Bad practices I see in place:
1) Very repetitive code
2) You never call the parent

Here would be a proper implementation of what you want to do:
atom/movable/Bump(atom/bumped_atom) //when a movable atom (obj or mob) bumps something
..() //call the parent
bumped_atom.Bumped(src) //call the bumped atom's Bumped() proc with the bumper as the arg

atom/proc/Bumped(atom/movable/A) //give all atom's a bumped proc

obj/Sign //define a sign object
var/sign_text //give them a var in which to place their text

Bumped(mob/M) //when they are bumped
if(ismob(M) && M.client) //if the bumper is a mob with a client
M << "The sign says: [sign_text]" //give them the message


Then, after that, adding new signs is a matter of either creating a new instance in the map editor or defining a new subtype of /obj/Sign.

obj/Sign
//insert above code here

Cave_Sign //make a new kind of sign
sign_text = "Warning! Trolls ahead!" //make it say this