Usr Flying passing out walls? in Developer Help
|
|
Code:
obj/Paredes ParedePedra2 name = "Parede de Pedra" icon = 'Pisos.dmi' icon_state = "parede2" density = 1 opacity=1 Enter(mob/) if(ismob(A)) if(usr.density == 0) return 0
|
Problem description:
When the person is with Fly, they will be with density = 0, but I don't want they across the wall... but if the wall is not OBJ, then other verb won't work.
|
1 - Things don't usually Enter() /objs. Enter() is called when enterers actually enter the contents of the enteree. If you're just moving onto the same tile as some object, you're not entering it - you're just stepping next to it.
2 - The Enter procedure there won't even compile
3 - You shouldn't use usr in procs, ever. It won't do what you expect it to. usr in movement procedures is /particularly/ bad.
4 - You need to define exactly what you want 'flying' to do to figure out a good way to implement it. From what I can see, you want flyers to be able to go through everything except tiles with wall objects on them - keep in mind that means that missiles that rely on Bump() and the like won't work either. If this is actually the behaviour you want, something like this might work:
If you want them to bump things usually, but be able to cross some specific types of dense turf, overriding Enter() on the dense turfs to allow flying players might be a good idea.