Here is a fix for properly undocking both ejected and ghostbusted
players who may have been docked to a SB, which is one of the main
sources of the dreaded starbase etemp bug.
Bill
Index: ./ntserv/ntscmds.c
===================================================================
RCS file: /cvsroot/netrek/server/Vanilla/ntserv/ntscmds.c,v
retrieving revision 1.3
diff -u -r1.3 ntscmds.c
--- ./ntserv/ntscmds.c 27 Sep 2005 12:26:37 -0000 1.3
+++ ./ntserv/ntscmds.c 10 Apr 2006 05:39:12 -0000
@@ -299,6 +299,13 @@
j->p_explode=10;
j->p_status=PEXPLODE;
j->p_whodead=me->p_no;
+ /* At this point, docked ships become removed. */
+ if (j->p_flags & PFDOCK)
+ {
+ players[j->p_docked].p_docked--;
+ players[j->p_docked].p_port[j->p_port[0]] = VACANT;
+ j->p_flags &= ~PFDOCK;
+ }
}
#endif /* ALLOW_EJECT */
Index: ./ntserv/daemonII.c
===================================================================
RCS file: /cvsroot/netrek/server/Vanilla/ntserv/daemonII.c,v
retrieving revision 1.3
diff -u -r1.3 daemonII.c
--- ./ntserv/daemonII.c 27 Sep 2005 12:26:37 -0000 1.3
+++ ./ntserv/daemonII.c 10 Apr 2006 05:39:12 -0000
@@ -3798,6 +3798,13 @@
}
}
}
+ /* At this point, docked ships become removed. */
+ if (victim->p_flags & PFDOCK)
+ {
+ players[victim->p_docked].p_docked--;
+ players[victim->p_docked].p_port[victim->p_port[0]] = VACANT;
+ victim->p_flags &= ~PFDOCK;
+ }
}
static void saveplayer(struct player *victim)