// Check if name agree (name must be parsed) int was_agree_name(DESCRIPTOR_DATA * d) { log("was_agree_name start"); FILE *fp; char temp[MAX_INPUT_LENGTH]; char immname[MAX_INPUT_LENGTH]; char mortname[6][MAX_INPUT_LENGTH]; int immlev; int sex; int i; //1. Load list if (!(fp = fopen(ANAME_FILE, "r"))) { perror("SYSERR: Unable to open '" ANAME_FILE "' for reading"); log("was_agree_name end"); return (1); } //2. Find name in list ... while (get_line(fp, temp)) { // Format First name/pad1/pad2/pad3/pad4/pad5/sex immname immlev sscanf(temp, "%s %s %s %s %s %s %d %s %d", mortname[0], mortname[1], mortname[2], mortname[3], mortname[4], mortname[5], &sex, immname, &immlev); if (!strcmp(mortname[0], GET_NAME(d->character))) { // We find char ... for (i = 1; i < 6; i++) { GET_PAD(d->character, i) = str_dup(mortname[i]); } GET_SEX(d->character) = sex; // Auto-Agree char ... NAME_GOD(d->character) = immlev + 1000; NAME_ID_GOD(d->character) = get_id_by_name(immname); sprintf(buf, "\r\nВаше имя одобрено!\r\n"); SEND_TO_Q(buf, d); sprintf(buf, "AUTOAGREE: %s was agreed by %s", GET_PC_NAME(d->character), immname); log(buf, d); fclose(fp); log("was_agree_name end"); return (0); } } fclose(fp); log("was_agree_name end"); return (1); }
int was_disagree_name(DESCRIPTOR_DATA * d) { log("was_disagree_name start"); FILE *fp; char temp[MAX_INPUT_LENGTH]; char mortname[MAX_INPUT_LENGTH]; char immname[MAX_INPUT_LENGTH]; int immlev; if (!(fp = fopen(DNAME_FILE, "r"))) { perror("SYSERR: Unable to open '" DNAME_FILE "' for reading"); log("was_disagree_name end"); return (1); } //1. Load list //2. Find name in list ... //3. Compare names ... get next while (get_line(fp, temp)) { // Extract chars and sscanf(temp, "%s %s %d", mortname, immname, &immlev); if (!strcmp(mortname, GET_NAME(d->character))) { // Char found all ok; sprintf(buf, "\r\nВаше имя запрещено!\r\n"); SEND_TO_Q(buf, d); sprintf(buf, "AUTOAGREE: %s was disagreed by %s", GET_PC_NAME(d->character), immname); log(buf, d); fclose(fp); log("was_disagree_name end"); return (0); }; } fclose(fp); log("was_disagree_name end"); return (1); }
/** * Checks for common mob problems and reports them to ch. * * @param char_data *mob The mob to audit. * @param char_data *ch The person to report to. * @return bool TRUE if any problems were reported; FALSE if all good. */ bool audit_mobile(char_data *mob, char_data *ch) { extern adv_data *get_adventure_for_vnum(rmt_vnum vnum); bool is_adventure = (get_adventure_for_vnum(GET_MOB_VNUM(mob)) != NULL); char temp[MAX_STRING_LENGTH], *ptr; bool problem = FALSE; if (!str_cmp(GET_PC_NAME(mob), "mobile new")) { olc_audit_msg(ch, GET_MOB_VNUM(mob), "Keywords not set"); problem = TRUE; } ptr = GET_PC_NAME(mob); do { ptr = any_one_arg(ptr, temp); if (*temp && !str_str(GET_SHORT_DESC(mob), temp) && !str_str(GET_LONG_DESC(mob), temp)) { olc_audit_msg(ch, GET_MOB_VNUM(mob), "Keyword '%s' not found in strings", temp); problem = TRUE; } } while (*ptr); if (!str_cmp(GET_SHORT_DESC(mob), "a new mobile")) { olc_audit_msg(ch, GET_MOB_VNUM(mob), "Short desc not set"); problem = TRUE; } any_one_arg(GET_SHORT_DESC(mob), temp); if ((fill_word(temp) || reserved_word(temp)) && isupper(*temp)) { olc_audit_msg(ch, GET_MOB_VNUM(mob), "Short desc capitalized"); problem = TRUE; } if (ispunct(GET_SHORT_DESC(mob)[strlen(GET_SHORT_DESC(mob)) - 1])) { olc_audit_msg(ch, GET_MOB_VNUM(mob), "Short desc has punctuation"); problem = TRUE; } ptr = GET_SHORT_DESC(mob); do { ptr = any_one_arg(ptr, temp); // remove trailing punctuation while (*temp && ispunct(temp[strlen(temp)-1])) { temp[strlen(temp)-1] = '\0'; } if (*temp && !fill_word(temp) && !reserved_word(temp) && !isname(temp, GET_PC_NAME(mob))) { olc_audit_msg(ch, GET_MOB_VNUM(mob), "Suggested missing keyword '%s'", temp); problem = TRUE; } } while (*ptr); if (!str_cmp(GET_LONG_DESC(mob), "A new mobile is standing here.\r\n")) { olc_audit_msg(ch, GET_MOB_VNUM(mob), "Long desc not set"); problem = TRUE; } if (!ispunct(GET_LONG_DESC(mob)[strlen(GET_LONG_DESC(mob)) - 3])) { olc_audit_msg(ch, GET_MOB_VNUM(mob), "Long desc missing punctuation"); problem = TRUE; } if (islower(*GET_LONG_DESC(mob))) { olc_audit_msg(ch, GET_MOB_VNUM(mob), "Long desc not capitalized"); problem = TRUE; } if (!is_adventure && GET_MAX_SCALE_LEVEL(mob) == 0) { olc_audit_msg(ch, GET_MOB_VNUM(mob), "No maximum scale level on non-adventure mob"); problem = TRUE; } if (MOB_ATTACK_TYPE(mob) == TYPE_RESERVED) { olc_audit_msg(ch, GET_MOB_VNUM(mob), "Invalid attack type"); problem = TRUE; } if (MOB_FLAGGED(mob, MOB_ANIMAL) && !has_interaction(mob->interactions, INTERACT_SKIN)) { olc_audit_msg(ch, GET_MOB_VNUM(mob), "Animal has no skin"); problem = TRUE; } if (MOB_FLAGGED(mob, MOB_ANIMAL) && !has_interaction(mob->interactions, INTERACT_BUTCHER)) { olc_audit_msg(ch, GET_MOB_VNUM(mob), "Animal can't be butchered"); problem = TRUE; } return problem; }