Enredando con la
rutina para tomar inventario del personaje me encontré hace unos días con lo que parecía un error:
Tenía una línea más o menos así:
print "Llevas puest", (o) obj, " ", (a) obj, ".";. El resultado de
(o) obj depende del GNA del objeto (que es el género, número y animación de su nombre corto), y suponía entonces que no debía cambiar a menos que el programador cambie el nombre corto del objeto. Pero resulta que si que cambia, si el jugador utiliza para referirse a él un sinónimo con diferente género o número al del nombre corto (definido con alguno de los atributos
name_m, name_f, name_mp o
name_fp) --si además se ha definido también su atributo
gender. De forma que esa línea había veces que imprimía cosas como
"Llevas puesta una chaqueta.", y otras veces
"Llevas puesto una chaqueta.".
He visto este código en la rutina
ParseNoun de
SpanishG.h:
Código:
if (obj provides gender) {
switch (gen) {
1: give obj ~female ~pluralname;
2: give obj female ~pluralname;
3: give obj ~female pluralname;
4: give obj female pluralname;
}
}
En el que
gen coge el valor del género del nombre que haya utilizado el jugador para referirse al objeto. En un objeto chaqueta con nombre corto "chaqueta" definido con name_f 'chaqueta', name_m 'chaqueton' y gender G_FEMENINO, esa variable gen es 1 o 2 dependiendo de que el jugador haya utilizado chaquetón o chaqueta para referirse al objeto. El código modifica las propiedades female y pluralname del objeto, con lo que cambia su GNA, que en realidad creo que debería ser siempre femenino singular inanimado (a menos que cambie su nombre corto). ¿No es así?
Nunca he cacharreado en profundidad en las tripas de la INFSP, así que no sé muy bien los motivos del fragmento de código ese de ParseNoun, ni si hay ahí un error o no. Pero bueno, yo lo comento por si sirve de algo.