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.59 by root, Mon Sep 29 10:20:49 2008 UTC vs.
Revision 1.67 by root, Thu Jan 1 16:05:13 2009 UTC

280 new_draw_info (NDI_UNIQUE, 0, op, "can't jail player, there is no map to hold them"); 280 new_draw_info (NDI_UNIQUE, 0, op, "can't jail player, there is no map to hold them");
281 return 0; 281 return 0;
282 } 282 }
283 283
284 pl->ob->player_goto (dummy->slaying, dummy->stats.hp, dummy->stats.sp);//TODO 284 pl->ob->player_goto (dummy->slaying, dummy->stats.hp, dummy->stats.sp);//TODO
285 dummy->destroy (true); 285 dummy->destroy ();
286 286
287 new_draw_info (NDI_UNIQUE, 0, pl->ob, "You have been arrested."); 287 new_draw_info (NDI_UNIQUE, 0, pl->ob, "You have been arrested.");
288 new_draw_info (NDI_UNIQUE, 0, op, "OK."); 288 new_draw_info (NDI_UNIQUE, 0, op, "OK.");
289 LOG (llevInfo, "Player %s arrested by %s\n", &pl->ob->name, &op->name); 289 LOG (llevInfo, "Player %s arrested by %s\n", &pl->ob->name, &op->name);
290 return 1; 290 return 1;
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
640 if (out_of_map (op->map, head->x + size_x, head->y + size_y)) 640 if (out_of_map (op->map, head->x + size_x, head->y + size_y))
641 { 641 {
642 if (head->x < size_x || head->y < size_y) 642 if (head->x < size_x || head->y < size_y)
643 { 643 {
644 dm_stack_pop (op->contr); 644 dm_stack_pop (op->contr);
645 head->destroy (true); 645 head->destroy ();
646 new_draw_info (NDI_UNIQUE, 0, op, "Object too big to insert in map, or wrong position."); 646 new_draw_info (NDI_UNIQUE, 0, op, "Object too big to insert in map, or wrong position.");
647 tmp->destroy (true); 647 tmp->destroy ();
648 return 1; 648 return 1;
649 } 649 }
650 650
651 check = head; 651 check = head;
652 652
672 if (at->randomitems && !at_spell) 672 if (at->randomitems && !at_spell)
673 create_treasure (at->randomitems, head, GT_APPLY, op->map->difficulty, 0); 673 create_treasure (at->randomitems, head, GT_APPLY, op->map->difficulty, 0);
674 } 674 }
675 675
676 /* free the one we used to copy */ 676 /* free the one we used to copy */
677 tmp->destroy (true); 677 tmp->destroy ();
678 } 678 }
679 679
680 return 1; 680 return 1;
681} 681}
682 682
816 dm_stack_pop (op->contr); 816 dm_stack_pop (op->contr);
817 817
818 if (tmp->head) 818 if (tmp->head)
819 tmp = tmp->head; 819 tmp = tmp->head;
820 820
821 tmp->destroy (true); 821 tmp->destroy ();
822 return 1; 822 return 1;
823} 823}
824 824
825/** 825/**
826 * This adds exp to a player. We now allow adding to a specific skill. 826 * This adds exp to a player. We now allow adding to a specific skill.
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 clear_los (op->contr);
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; 1111 size_t spell_name_length;
1123 for_all_archetypes (at) 1116 for_all_archetypes (at)
1124 { 1117 {
1125 if (at->type != SPELL) 1118 if (at->type != SPELL)
1126 continue; 1119 continue;
1127 1120
1128 if (strncmp (at->archname, "spelldirect_", 12) == 0) 1121 if (at->object::name != spell_name)
1129 continue; 1122 continue;
1130 1123
1131 if (strcmp (at->object::name, spell_name) != 0)
1132 continue;
1133
1134 if (found != NULL) 1124 if (found)
1135 { 1125 {
1136 if (!conflict_found) 1126 if (!conflict_found)
1137 { 1127 {
1138 conflict_found = 1; 1128 conflict_found = 1;
1139 new_draw_info_format (NDI_UNIQUE, 0, op, "More than one archetype matches the spell name %s:", spell_name); 1129 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); 1130 new_draw_info_format (NDI_UNIQUE, 0, op, "- %s", &found->archname);
1141 } 1131 }
1142 1132
1143 new_draw_info_format (NDI_UNIQUE, 0, op, "- %s", &at->archname); 1133 new_draw_info_format (NDI_UNIQUE, 0, op, "- %s", &at->archname);
1144 continue; 1134 continue;
1173 if (found != NULL) 1163 if (found != NULL)
1174 { 1164 {
1175 if (!conflict_found) 1165 if (!conflict_found)
1176 { 1166 {
1177 conflict_found = 1; 1167 conflict_found = 1;
1178 new_draw_info_format (NDI_UNIQUE, 0, op, "More than one spell matches %s:", spell_name); 1168 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); 1169 new_draw_info_format (NDI_UNIQUE, 0, op, "- %s", &found->object::name);
1180 } 1170 }
1181 new_draw_info_format (NDI_UNIQUE, 0, op, "- %s", &at->object::name); 1171 new_draw_info_format (NDI_UNIQUE, 0, op, "- %s", &at->object::name);
1182 continue; 1172 continue;
1183 } 1173 }
1192 /* Return if exactly one archetype matches. */ 1182 /* Return if exactly one archetype matches. */
1193 if (found != NULL) 1183 if (found != NULL)
1194 return arch_to_object (found); 1184 return arch_to_object (found);
1195 1185
1196 /* No spell found: just print an error message. */ 1186 /* 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); 1187 new_draw_info_format (NDI_UNIQUE, 0, op, "The spell %s does not exist.", &spell_name);
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)
1220 new_draw_info_format (NDI_UNIQUE, 0, op, "You already know the spell %s.", &tmp->name); 1210 new_draw_info_format (NDI_UNIQUE, 0, op, "You already know the spell %s.", &tmp->name);
1221 return 0; 1211 return 0;
1222 } 1212 }
1223 1213
1224 do_learn_spell (op, tmp, special_prayer); 1214 do_learn_spell (op, tmp, special_prayer);
1225 tmp->destroy (true); 1215 tmp->destroy ();
1226 return 1; 1216 return 1;
1227} 1217}
1228 1218
1229int 1219int
1230command_learn_spell (object *op, char *params) 1220command_learn_spell (object *op, char *params)

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines