#if defined(macintosh) #include <types.h> #else #include <sys/types.h> #include <sys/time.h> #endif #include <stdio.h> #include <string.h> #include <stdlib.h> #include <ctype.h> #include <time.h> #include "merc.h" #include "utils.h" #include "recycle.h" #include "tables.h" #include "interp.h" #include "lookup.h" char *turf_name( int turf ) { static char name[MSL]; name[0] = '\0'; if ( turf < 5 ) sprintf( name, "beginning to be" ); else if ( turf < 10 ) sprintf( name, "barely" ); else if ( turf < 20 ) sprintf( name, "moderately" ); else if ( turf < 50 ) sprintf( name, "well" ); else sprintf( name, "completely" ); return name; } void do_turf( CHAR_DATA *ch, char *argument ) { char buf[MSL]; sprintf( buf, "This room is %s turfed by %s.\r\n", turf_name( ch->in_room->turf_level ), clan_table[ch->in_room->turf_clan].name); send_to_char( buf, ch ); return; } void turf_mod( CHAR_DATA *ch, CHAR_DATA *victim) { if (!IS_NPC(ch) && (ch->clan)) { if (!ch->in_room->turf_level) { ch->in_room->turf_clan = ch->clan; send_to_char("{yYour clan has taken over control of this room.{x\r\n", ch); } if (ch->in_room->turf_clan == ch->clan) { if (ch->in_room->turf_level < 100 ) ch->in_room->turf_level++; } else { ch->in_room->turf_level--; } } return; } void turf_save() { ROOM_INDEX_DATA *pRoomIndex; AREA_DATA *pArea; int iHash; bool fWrote = FALSE; FILE *fp; fclose(fpReserve); if ((fp = fopen("turf.dat", "w")) == NULL) { bug("turf_save: turf.dat: fopen", 0); } // seems like a lot of work to check for some rooms.. for (pArea = area_first; pArea; pArea = pArea->next) { for (iHash = 0; iHash < MAX_KEY_HASH; iHash++) { for (pRoomIndex = room_index_hash[iHash]; pRoomIndex; pRoomIndex = pRoomIndex->next) { if (pRoomIndex->area == pArea && !pRoomIndex->deleted && pRoomIndex->turf_level) { fprintf(fp, "%ld %s %d\n", pRoomIndex->vnum, clan_table[pRoomIndex->turf_clan].name, pRoomIndex->turf_level); pRoomIndex->turf_level--; fWrote = TRUE; } } } } fclose(fp); // turf_load() handles not having a file, but doesn't like empty files if (!fWrote) unlink("turf.dat"); fpReserve = fopen(NULL_FILE, "r"); return; } void turf_load() { ROOM_INDEX_DATA *pRoomIndex; FILE *fp; fclose(fpReserve); if ((fp = fopen("turf.dat", "r")) == NULL) { bug("turf_load: turf.dat: fopen", 0); fpReserve = fopen(NULL_FILE, "r"); return; } for (;;) { if (feof(fp)) break; pRoomIndex = get_room_index(fread_number(fp)); if ( pRoomIndex != NULL ) { pRoomIndex->turf_clan = clan_lookup(fread_word(fp)); pRoomIndex->turf_level = fread_number(fp); if (pRoomIndex->turf_level > 100) pRoomIndex->turf_level = 100; } fread_to_eol(fp); } fclose(fp); fpReserve = fopen(NULL_FILE, "r"); return; }