On Thu, 6 Jul 1995, Stefan Rensing wrote:
> All this loadroom stuff is REALLY weird. For example, the syntax mentioned
> BTW, Jeremy, the piece in nanny() where the loadroom is set looks like a
> really dirty hack ;)
We did it like this: we made go_home(ch), that will put the char where it
belongs:
---------- go_home.c --------
/*********************************************************************
* *
* to make characters recall to their houses if not grouped. *
* By Wodan, Gekke Eekhoorn and Sungoku a bit. *
* *
*********************************************************************/
#include <stdio.h>
#include <string.h>
#include "structs.h"
#include "utils.h"
#include "house.h"
#include "db.h"
#include "comm.h"
#include "handler.h"
extern struct house_control_rec house_control[MAX_HOUSES];
extern struct char_data *character_list;
extern int num_of_houses;
void act(char *str, int i, struct char_data * c, struct obj_data * o,
void *vict_obj, int j);
sh_int get_home(struct char_data *ch)
{
extern sh_int r_mortal_start_room;
extern sh_int r_immort_start_room;
extern sh_int r_frozen_start_room;
sh_int load_room, i;
if (PLR_FLAGGED(ch, PLR_FROZEN))
return r_frozen_start_room;
if ((load_room = real_room(GET_LOADROOM(ch))) < 0) {
/* small glitch: if char has non-grouped followers only, he will
not go to his house. I don't care. Gekke. */
if (!(AFF_FLAGGED(ch, AFF_GROUP) && (ch->master || ch->followers))
&& num_of_houses) { /* Not in or in one-member group */
for (i = 0; i < num_of_houses; i++) {
if (GET_IDNUM(ch) == house_control[i].owner) {
return real_room(house_control[i].vnum);
}
}
}
if (GET_LEVEL(ch) >= LVL_IMMORT)
return r_immort_start_room;
else
return r_mortal_start_room;
} else
return load_room;
}
void go_home(struct char_data * victim)
{
if (IN_ROOM(victim)!=NOWHERE)
char_from_room(victim);
char_to_room(victim, get_home(victim));
look_at_room(victim, victim->in_room);
act("$n suddenly appears in the room.", TRUE, victim, 0, 0, TO_ROOM);
return;
}
-----------------------------
You have to put something that clears the loadroom of a char in clear_char...
(Could be you have to put some more in it, dunno any more...)
(And you replace the junk in nanny with go_home and you remove a
look_at_room)
(And if you feel like it, you can make a 'home' command for imms and a
home all for imps) (I did :)
(Of course, now, a char will also be put in his house when he quitted
there :) Great, no?)
(I should stop using brackets now.)
The reason this works is because PLR_LOADROOM is only used to determine
wether or not a char's loadroom should be overwritten.
Gekke Eekhoorn.
.-----------------------------------------------------------------------.
| I t ' s n o t a b u g , i t ' s a f e a t u r e ! ! ! |
| BUG Mud - Belgian UnderGround eduserv.rug.ac.be 3555 |
| Imps : Charlotte, Gekke, If you can't connect, email to : |
| Hymy, Mentat and Wodan tvergote@eduserv.rug.ac.be |
| Thanx to SunGoku... Subject : frontdoor |
`-----------------------------------------------------------------------'
This archive was generated by hypermail 2b30 : 12/07/00 PST