#include <sys/types.h> #include <stdio.h> #include <stdlib.h> #include <stdarg.h> #include <string.h> #include <unistd.h> #include <time.h> #include "merc.h" #include "interp.h" #include "changes.h" void do_sigil(CHAR_DATA * ch, char *argument) { char arg1[MAX_INPUT_LENGTH]; char arg2[MAX_INPUT_LENGTH]; char buf[MAX_STRING_LENGTH]; OBJ_DATA *obj; OBJ_DATA *obj2; int maxSigil = 5; argument = one_argument(argument, arg1); argument = one_argument(argument, arg2); if (IS_NPC(ch)) return; if (arg1[0] == '\0' || arg2[0] == '\0') { send_to_char ("\n\r#Y**********************************************#n\n\r", ch); send_to_char ("#Y* #WSigil's are used to enhance your weapons. #Y*#n\n\r", ch); send_to_char ("#Y* #WTo sigil a weapon follow the syntax: #Y*#n\n\r", ch); send_to_char ("#Y* #W sigil <item> <weapon> #Y*#n\n\r", ch); send_to_char ("#Y**********************************************#n\n\r", ch); return; } if ((obj2 = get_obj_carry(ch, arg2, ch)) == NULL) { send_to_char("You are not carrying that weapon.\n\r", ch); return; } if (obj2->item_type != ITEM_WEAPON) { send_to_char("You can only sigil weapons, sorry.\n\r", ch); return; } if ((obj = get_obj_carry(ch, arg1, ch)) == NULL) { send_to_char("You are not carrying that item.\n\r", ch); return; } if (obj->item_type != ITEM_SIGIL) { send_to_char("That item cannot be used for sigiling.\n\r", ch); return; } if (obj2->sigil_level >= maxSigil) { xprintf(buf, "You may only sigil your weapon %d times", maxSigil); send_to_char(buf, ch); return; } if (obj->value[0] != 0) obj2->attack_level += obj->value[0]; if (obj->value[1] != 0) obj2->fire_level += obj->value[1]; if (obj->value[2] != 0) obj2->water_level += obj->value[2]; if (obj->value[3] != 0) obj2->lightning_level += obj->value[3]; if (obj->value[4] != 0) obj2->earth_level += obj->value[4]; if (obj->value[5] != 0) { oset_affect(ch, obj2, (obj->value[5]), APPLY_HIT, FALSE); oset_affect(ch, obj2, (obj->value[5]), APPLY_MANA, FALSE); oset_affect(ch, obj2, (obj->value[5]), APPLY_MOVE, FALSE); } if (obj->value[6] != 0) { oset_affect(ch, obj2, (obj->value[6]), APPLY_HITROLL, FALSE); } if (obj->value[7] != 0) { oset_affect(ch, obj2, (obj->value[7]), APPLY_DAMROLL, FALSE); } if (obj->value[8] != 0) { oset_affect(ch, obj2, (obj->value[8]), APPLY_AC, FALSE); } xprintf(buf, "You have placed a %s onto %s.\n\r", obj->short_descr, obj2->short_descr); send_to_char(buf, ch); obj2->sigil_level += 1; if (!IS_SET(obj2->spectype, SITEM_SIGIL)) SET_BIT(obj2->spectype, SITEM_SIGIL); extract_obj(obj); return; } void do_cprime(CHAR_DATA * ch, char *argument) { CHAR_DATA *ach; char buf[MAX_STRING_LENGTH]; if (IS_NPC(ch)) return; for (ach = char_list; ach != NULL; ach = ach->next) { if (IS_NPC(ach)) continue; do_wake(ach, "auto"); do_stand(ach, "auto"); do_call(ach, "all"); do_save(ach, "auto"); } if (ch != NULL) do_restore(ch, "all"); do_asave(ch, "world"); do_asave(ch, "list"); save_classes(); save_changes(); if (ch == NULL) { do_info(NULL, "Copyover preparation complete. Please hold."); return; } xprintf(buf, "#R%s #cis preparing for a #RCOPYOVER#c, please hold.#n\n\r", ch->name); do_info(ch, buf); stc("#y[#RWorld prepared for copyover.#y]#n\n\r", ch); return; }