/*Module Crsh.c -- Crash protection */ /*The idea behind it is to assign noticeable, dummy info to REALCHAR_DATA for NPC's and noticable NREALCHAR_DATA to PC's */ #include <stdlib.h> #include <stdio.h> #include <string.h> #include <sys/types.h> #include "emlen.h" char * jumble_name (char *st, bool unjumble) { static char jr[500]; char *tmp; char tt; tt = st[0]; jr[0] = tt; jr[1] = '\0'; if (!unjumble) { for (tmp = st + 1; *tmp != '\0'; tmp++) { *tmp = *tmp + (tt / 8); } } if (unjumble) { for (tmp = st + 1; *tmp != '\0'; tmp++) { *tmp = *tmp - (tt / 10); } } strcat (jr, st); return jr; } void jumble (char *name) { char c; FILE *fpp; FILE *fpo; char buffr[500]; char buffr2[500]; char co; sprintf (buffr, "%s%s.u", PLAYER_DIR, capitalize (name)); sprintf (buffr2, "%s%s", PLAYER_DIR, jumble_name (capitalize (name), FALSE)); if ((fpp = fopen (buffr, "r")) == NULL) return; fpo = fopen (buffr2, "w+"); do { c = getc (fpp); co = c; c += UPPER (name[0]) / 8; fprintf (fpo, "%c", c); } while (co != EOF); fclose (fpp); fclose (fpo); return; return; } void unjumble (char *name, bool convert) { char c; char co; FILE *fpp; FILE *fpo; char buffr[500]; char buffr2[500]; char buffr3[1000]; char buffr4[500]; strcpy (buffr4, name); sprintf (buffr, "%s%s.u", PLAYER_DIR, capitalize (name)); sprintf (buffr2, "%s%s", PLAYER_DIR, jumble_name (capitalize (name), FALSE)); if ((fpp = fopen (buffr2, "r")) == NULL) return; fpo = fopen (buffr, "w+"); do { c = getc (fpp); co = c; c -= UPPER (name[0]) / 8; fprintf (fpo, "%c", c); } while (co != EOF); fclose (fpp); fclose (fpo); if (convert) { sprintf (buffr3, "mv %s %s%s", buffr, PLAYER_DIR, buffr4); fprintf (stderr, "%s\n", buffr3); system (buffr3); sprintf (buffr3, "rm %s", buffr2); fprintf (stderr, "%s\n", buffr3); system (buffr3); } return; } void dummy_pc (void) { int i; CHANNEL *c; base_pc.next = NULL; base_pc.pwd = str_dup ("Bad_data"); base_pc.prompt = 0; base_pc.rprompt = str_dup ("*hn*h *mn*m >"); #ifdef ALLOW_AUCTIONS base_pc.listen_auction = FALSE; #endif base_pc.beamin = str_dup ("Bad_bamfin"); base_pc.beamout = str_dup ("Bad_bamfout"); base_pc.title = str_dup ("Bad_title_on_NPC"); for (i = 0; i < MAXST; i++) base_pc.storage[i] = NULL; #ifdef NEW_WORLD for (i = 0; i < MAX_MOB_TRO; i++) { base_pc.killed_mobs[i] = 0; } #endif for (i = 0; i < 1000; i++) base_pc.in_progress[i] = 0; for (i = 0; i < 1000; i++) base_pc.complete[i] = 0; for (i = 0; i < 200; i++) base_pc.temp_flag[i] = 0; base_pc.chan_ignore = 0; i = 0; for (c = chan_first; c != NULL; c = c->next) { strcpy (base_pc.chan_color[i], c->color); i++; } for (i = 0; i < 10; i++) base_pc.ignore[i] = NULL; for (i = 0; i < MAX_COLORS; i++) base_pc.colors[i] = 7; base_pc.voting_on = -10; base_pc.nat_armor = 100; base_pc.nat_abilities = 0; base_pc.email[0] = '\0'; base_pc.questflag = 0; base_pc.cool_skills = 0; base_pc.tmp_str = -100; base_pc.tmp_int = -100; base_pc.tmp_wis = -100; base_pc.tmp_con = -100; base_pc.tmp_dex = -100; base_pc.remort_times = 0; base_pc.tickcounts = 0; base_pc.warpoints = 0; base_pc.challenge_on = FALSE; base_pc.arena_msg = 0; base_pc.challenged = 0; base_pc.challenged_by = NULL; base_pc.challenge_time = 0; base_pc.temp = NULL; base_pc.number_pets = 0; base_pc.pagelen = 9999; base_pc.raceflag = 0; base_pc.guilds = 0; base_pc.warned = 0; base_pc.jail_served = 0; base_pc.transport_quest = 0; base_pc.no_quit = 0; for (i = 0; i < 15; i++) base_pc.trophy_name[i][0] = '\0'; for (i = 0; i < 15; i++) base_pc.trophy_times[i] = 0; for (i = 0; i < 15; i++) base_pc.trophy_level[i] = 0; base_pc.resist_summon = 0; base_pc.plus_kick = 0; base_pc.plus_sneak = 0; base_pc.plus_hide = 0; base_pc.saving_throw = 0; base_pc.bounty = 0; base_pc.logon = 0; base_pc.last_note = 0; base_pc.practice = 0; base_pc.learn = 0; base_pc.deaf = 0; base_pc.wizinvis = 0; base_pc.security = 9; base_pc.perm_str = -5; base_pc.perm_int = -5; base_pc.perm_wis = -5; base_pc.perm_dex = -5; base_pc.perm_con = -5; base_pc.n_mana = 5000; base_pc.n_max_mana = 5000; base_pc.mod_str = -5; base_pc.mod_int = -5; base_pc.mod_wis = -5; base_pc.mod_dex = -5; base_pc.mod_con = -5; for (i = 0; i < SKILL_COUNT; i++) base_pc.learned[i] = 0; base_pc.bank = 0; base_pc.totalkills = 0; base_pc.killpoints = 0; base_pc.deaths = 0; base_pc.no_spam = 0; base_pc.quiet = 0; for (i = 0; i < MAXALIAS; i++) { base_pc.aliasname[i] = str_dup ("Bad_aliasname"); base_pc.alias[i] = str_dup ("Bad_alias"); } return; }