Here's a fix for what I think were non working clicky-portals - what would happen is, for instance if I clicked on the zin to chariasis, I'd get the 'locked' message and zone anyways (any clicky zone that required a key would return 'locked' and port you anyway);
in doors.cpp at around line 287 replace this;
Code:
if (opentype == 58 && strncmp(dest_zone,"NONE",strlen("NONE")) != 0 ){ // Teleport door!
if ( strncmp(dest_zone,zone_name,strlen(zone_name)) == 0) {
//dunno why, but this dosent seem to work all the time:
//sender->GMMove(dest_x,dest_y,dest_z);
sender->MovePC(dest_x, dest_y, dest_z, dest_heading);
}
else {
sender->MovePC(dest_zone, dest_x, dest_y, dest_z, dest_heading);
}
}
}
with this;
Code:
if (opentype == 58 && strncmp(dest_zone,"NONE",strlen("NONE")) != 0 ){ // Teleport door!
if (( strncmp(dest_zone,zone_name,strlen(zone_name)) == 0) && (keyneeded && keyneeded == playerkey)) {
sender->KeyRingAdd(playerkey);
sender->MovePC(dest_x, dest_y, dest_z, dest_heading);
}
if (( strncmp(dest_zone,zone_name,strlen(zone_name)) == 0) && (!keyneeded)) {
sender->MovePC(dest_x, dest_y, dest_z, dest_heading);
}
else if (( !IsDoorOpen() || opentype == 58 ) && (keyneeded && keyneeded == playerkey)) {
sender->KeyRingAdd(playerkey);
sender->MovePC(dest_zone, dest_x, dest_y, dest_z, dest_heading);
}
if (( !IsDoorOpen() || opentype == 58 ) && (!keyneeded)) {
sender->MovePC(dest_zone, dest_x, dest_y, dest_z, dest_heading);
}
}
}
I tested under many circumstances (PoK stone, Charasis, Paineel entrance, FrozenShadow mirrors, etc.) , seems to work ok.
You need '#gm off' to see keys work properly