ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/server/c_wiz.C
(Generate patch)

Comparing deliantra/server/server/c_wiz.C (file contents):
Revision 1.61 by root, Sat Dec 20 02:32:31 2008 UTC vs.
Revision 1.68 by root, Sun Apr 5 20:17:37 2009 UTC

451 { 451 {
452 art = find_artifactlist (at->type)->items; 452 art = find_artifactlist (at->type)->items;
453 453
454 while (art) 454 while (art)
455 { 455 {
456 if (!strcmp (art->item->name, cp)) 456 if (!strcmp (&art->item->name, cp))
457 break; 457 break;
458 458
459 art = art->next; 459 art = art->next;
460 } 460 }
461 461
889 new_draw_info (NDI_UNIQUE, 0, op, "Who?"); 889 new_draw_info (NDI_UNIQUE, 0, op, "Who?");
890 return 1; 890 return 1;
891 } 891 }
892 892
893 for_all_players (pl) 893 for_all_players (pl)
894 if (!strcmp (pl->ob->name, thing)) 894 if (!strcmp (&pl->ob->name, thing))
895 { 895 {
896 sprintf (buf, "Str : %-2d H.P. : %-4d MAX : %d", pl->ob->stats.Str, pl->ob->stats.hp, pl->ob->stats.maxhp); 896 sprintf (buf, "Str : %-2d H.P. : %-4d MAX : %d", pl->ob->stats.Str, pl->ob->stats.hp, pl->ob->stats.maxhp);
897 new_draw_info (NDI_UNIQUE, 0, op, buf); 897 new_draw_info (NDI_UNIQUE, 0, op, buf);
898 sprintf (buf, "Dex : %-2d S.P. : %-4d MAX : %d", pl->ob->stats.Dex, pl->ob->stats.sp, pl->ob->stats.maxsp); 898 sprintf (buf, "Dex : %-2d S.P. : %-4d MAX : %d", pl->ob->stats.Dex, pl->ob->stats.sp, pl->ob->stats.maxsp);
899 new_draw_info (NDI_UNIQUE, 0, op, buf); 899 new_draw_info (NDI_UNIQUE, 0, op, buf);
942 return 1; 942 return 1;
943 } 943 }
944 944
945 for_all_players (pl) 945 for_all_players (pl)
946 { 946 {
947 if (!strcmp (pl->ob->name, thing)) 947 if (!strcmp (&pl->ob->name, thing))
948 { 948 {
949 if (!strcmp ("str", thing2)) pl->ob->stats.Str = iii, pl->orig_stats.Str = iii; 949 if (!strcmp ("str", thing2)) pl->ob->stats.Str = iii, pl->orig_stats.Str = iii;
950 if (!strcmp ("dex", thing2)) pl->ob->stats.Dex = iii, pl->orig_stats.Dex = iii; 950 if (!strcmp ("dex", thing2)) pl->ob->stats.Dex = iii, pl->orig_stats.Dex = iii;
951 if (!strcmp ("con", thing2)) pl->ob->stats.Con = iii, pl->orig_stats.Con = iii; 951 if (!strcmp ("con", thing2)) pl->ob->stats.Con = iii, pl->orig_stats.Con = iii;
952 if (!strcmp ("wis", thing2)) pl->ob->stats.Wis = iii, pl->orig_stats.Wis = iii; 952 if (!strcmp ("wis", thing2)) pl->ob->stats.Wis = iii, pl->orig_stats.Wis = iii;
969command_nowiz (object *op, char *params) 969command_nowiz (object *op, char *params)
970{ /* 'nodm' is alias */ 970{ /* 'nodm' is alias */
971 CLEAR_FLAG (op, FLAG_WIZ); 971 CLEAR_FLAG (op, FLAG_WIZ);
972 CLEAR_FLAG (op, FLAG_WIZPASS); 972 CLEAR_FLAG (op, FLAG_WIZPASS);
973 CLEAR_FLAG (op, FLAG_WIZCAST); 973 CLEAR_FLAG (op, FLAG_WIZCAST);
974 CLEAR_FLAG (op, FLAG_WIZLOOK);
975 op->contr->do_los = 1;
974 976
975 if (op->contr->hidden) 977 if (op->contr->hidden)
976 { 978 {
977 new_draw_info (NDI_UNIQUE, 0, op, "You are no longer hidden from other players"); 979 new_draw_info (NDI_UNIQUE, 0, op, "You are no longer hidden from other players");
978 op->map->players++; 980 op->map->players++;
980 op->contr->hidden = 0; 982 op->contr->hidden = 0;
981 op->invisible = 1; 983 op->invisible = 1;
982 } 984 }
983 else 985 else
984 new_draw_info (NDI_UNIQUE | NDI_ALL | NDI_LT_GREEN, 1, NULL, "The Dungeon Master is gone.."); 986 new_draw_info (NDI_UNIQUE | NDI_ALL | NDI_LT_GREEN, 1, NULL, "The Dungeon Master is gone..");
987
985 return 1; 988 return 1;
986} 989}
987 990
988/** 991/**
989 * object *op is trying to become dm. 992 * object *op is trying to become dm.
1043 if (checkdm (op, op->name, (params ? params : "*"), op->contr->ns->host)) 1046 if (checkdm (op, op->name, (params ? params : "*"), op->contr->ns->host))
1044 { 1047 {
1045 SET_FLAG (op, FLAG_WIZ); 1048 SET_FLAG (op, FLAG_WIZ);
1046 SET_FLAG (op, FLAG_WIZPASS); 1049 SET_FLAG (op, FLAG_WIZPASS);
1047 SET_FLAG (op, FLAG_WIZCAST); 1050 SET_FLAG (op, FLAG_WIZCAST);
1051 SET_FLAG (op, FLAG_WIZLOOK);
1052 op->contr->do_los = 1;
1048 1053
1049 new_draw_info (NDI_UNIQUE, 0, op, "Ok, you are the Dungeon Master!"); 1054 new_draw_info (NDI_UNIQUE, 0, op, "Ok, you are the Dungeon Master!");
1050 /*
1051 * Remove setting flying here - that won't work, because next
1052 * fix_player() is called that will get cleared - proper solution
1053 * is probably something like a wiz_force which gives that and any
1054 * other desired abilities.
1055 */
1056 op->contr->clear_los (0);
1057 op->contr->write_buf[0] = '\0'; 1055 op->contr->write_buf[0] = '\0';
1058 1056
1059 if (!silent) 1057 if (!silent)
1060 new_draw_info (NDI_UNIQUE | NDI_ALL | NDI_LT_GREEN, 1, NULL, "The Dungeon Master has arrived!"); 1058 new_draw_info (NDI_UNIQUE | NDI_ALL | NDI_LT_GREEN, 1, NULL, "The Dungeon Master has arrived!");
1061 1059
1101 * Returns spell object (from archetypes) by name. 1099 * Returns spell object (from archetypes) by name.
1102 * Returns NULL if 0 or more than one spell matches. 1100 * Returns NULL if 0 or more than one spell matches.
1103 * Used for wizard's learn spell/prayer. 1101 * Used for wizard's learn spell/prayer.
1104 * 1102 *
1105 * op is the player issuing the command. 1103 * op is the player issuing the command.
1106 *
1107 * Ignores archetypes "spelldirect_xxx" since these archetypes are not used
1108 * anymore (but may still be present in some player's inventories and thus
1109 * cannot be removed). We have to ignore them here since they have the same
1110 * name than other "spell_xxx" archetypes and would always conflict.
1111 */ 1104 */
1112static object * 1105static object *
1113get_spell_by_name (object *op, const char *spell_name) 1106get_spell_by_name (object *op, shstr_cmp spell_name)
1114{ 1107{
1115 archetype *at; 1108 archetype *at;
1116 archetype *found; 1109 archetype *found;
1117 int conflict_found; 1110 int conflict_found;
1118 size_t spell_name_length;
1119 1111
1120 /* First check for full name matches. */ 1112 /* First check for full name matches. */
1121 conflict_found = 0; 1113 conflict_found = 0;
1122 found = NULL; 1114 found = NULL;
1123 for_all_archetypes (at) 1115 for_all_archetypes (at)
1124 { 1116 {
1125 if (at->type != SPELL) 1117 if (at->type != SPELL)
1126 continue; 1118 continue;
1127 1119
1128 if (strncmp (at->archname, "spelldirect_", 12) == 0) 1120 if (at->object::name != spell_name)
1129 continue; 1121 continue;
1130 1122
1131 if (strcmp (at->object::name, spell_name) != 0)
1132 continue;
1133
1134 if (found != NULL) 1123 if (found)
1135 { 1124 {
1136 if (!conflict_found) 1125 if (!conflict_found)
1137 { 1126 {
1138 conflict_found = 1; 1127 conflict_found = 1;
1139 new_draw_info_format (NDI_UNIQUE, 0, op, "More than one archetype matches the spell name %s:", spell_name); 1128 new_draw_info_format (NDI_UNIQUE, 0, op, "More than one archetype matches the spell name %s:", &spell_name);
1140 new_draw_info_format (NDI_UNIQUE, 0, op, "- %s", &found->archname); 1129 new_draw_info_format (NDI_UNIQUE, 0, op, "- %s", &found->archname);
1141 } 1130 }
1142 1131
1143 new_draw_info_format (NDI_UNIQUE, 0, op, "- %s", &at->archname); 1132 new_draw_info_format (NDI_UNIQUE, 0, op, "- %s", &at->archname);
1144 continue; 1133 continue;
1150 /* No match if more more than one archetype matches. */ 1139 /* No match if more more than one archetype matches. */
1151 if (conflict_found) 1140 if (conflict_found)
1152 return NULL; 1141 return NULL;
1153 1142
1154 /* Return if exactly one archetype matches. */ 1143 /* Return if exactly one archetype matches. */
1155 if (found != NULL) 1144 if (found)
1156 return arch_to_object (found); 1145 return arch_to_object (found);
1157 1146
1158 /* No full match found: now check for partial matches. */ 1147 /* No full match found: now check for partial matches. */
1159 spell_name_length = strlen (spell_name);
1160 conflict_found = 0; 1148 conflict_found = 0;
1161 found = NULL; 1149 found = NULL;
1162 for_all_archetypes (at) 1150 for_all_archetypes (at)
1163 { 1151 {
1164 if (at->type != SPELL) 1152 if (at->type != SPELL)
1165 continue; 1153 continue;
1166 1154
1155 if (at->object::name != spell_name)
1156 continue;
1157
1167 if (strncmp (at->archname, "spelldirect_", 12) == 0) 1158 if (strncmp (at->archname, "spelldirect_", 12) == 0)
1168 continue; 1159 continue;
1169 1160
1170 if (strncmp (at->object::name, spell_name, spell_name_length) != 0)
1171 continue;
1172
1173 if (found != NULL) 1161 if (found)
1174 { 1162 {
1175 if (!conflict_found) 1163 if (!conflict_found)
1176 { 1164 {
1177 conflict_found = 1; 1165 conflict_found = 1;
1178 new_draw_info_format (NDI_UNIQUE, 0, op, "More than one spell matches %s:", spell_name); 1166 new_draw_info_format (NDI_UNIQUE, 0, op, "More than one spell matches %s:", &spell_name);
1179 new_draw_info_format (NDI_UNIQUE, 0, op, "- %s", &found->object::name); 1167 new_draw_info_format (NDI_UNIQUE, 0, op, "- %s", &found->object::name);
1180 } 1168 }
1169
1181 new_draw_info_format (NDI_UNIQUE, 0, op, "- %s", &at->object::name); 1170 new_draw_info_format (NDI_UNIQUE, 0, op, "- %s", &at->object::name);
1182 continue; 1171 continue;
1183 } 1172 }
1184 1173
1185 found = at; 1174 found = at;
1188 /* No match if more more than one archetype matches. */ 1177 /* No match if more more than one archetype matches. */
1189 if (conflict_found) 1178 if (conflict_found)
1190 return NULL; 1179 return NULL;
1191 1180
1192 /* Return if exactly one archetype matches. */ 1181 /* Return if exactly one archetype matches. */
1193 if (found != NULL) 1182 if (found)
1194 return arch_to_object (found); 1183 return arch_to_object (found);
1195 1184
1196 /* No spell found: just print an error message. */ 1185 /* No spell found: just print an error message. */
1197 new_draw_info_format (NDI_UNIQUE, 0, op, "The spell %s does not exist.", spell_name); 1186 new_draw_info_format (NDI_UNIQUE, 0, op, "The spell %s does not exist.", &spell_name);
1187
1198 return NULL; 1188 return NULL;
1199} 1189}
1200 1190
1201static int 1191static int
1202command_learn_spell_or_prayer (object *op, char *params, int special_prayer) 1192command_learn_spell_or_prayer (object *op, char *params, int special_prayer)

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines