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

Comparing deliantra/server/server/apply.C (file contents):
Revision 1.174 by root, Tue Dec 23 00:39:48 2008 UTC vs.
Revision 1.178 by root, Sun Dec 28 15:28:47 2008 UTC

1162 { 1162 {
1163 has_unpaid = true; 1163 has_unpaid = true;
1164 break; 1164 break;
1165 } 1165 }
1166 1166
1167 if (op->type != PLAYER) 1167 if (!op->is_player ())
1168 { 1168 {
1169 /* Remove all the unpaid objects that may be carried here. 1169 /* Remove all the unpaid objects that may be carried here.
1170 * This could be pets or monsters that are somehow in 1170 * This could be pets or monsters that are somehow in
1171 * the shop. 1171 * the shop.
1172 */ 1172 */
1176 1176
1177 if (QUERY_FLAG (tmp, FLAG_UNPAID)) 1177 if (QUERY_FLAG (tmp, FLAG_UNPAID))
1178 { 1178 {
1179 int i = find_free_spot (tmp, op->map, op->x, op->y, 1, 9); 1179 int i = find_free_spot (tmp, op->map, op->x, op->y, 1, 9);
1180 1180
1181 if (i >= 0)
1181 tmp->remove (); 1182 tmp->move (i);
1182
1183 if (i == -1)
1184 i = 0;
1185
1186 tmp->map = op->map;
1187 tmp->x = op->x + freearr_x[i];
1188 tmp->y = op->y + freearr_y[i];
1189 insert_ob_in_map (tmp, op->map, op, 0);
1190 } 1183 }
1191 } 1184 }
1192 1185
1193 /* Don't teleport things like spell effects */ 1186 /* Don't teleport things like spell effects */
1194 if (QUERY_FLAG (op, FLAG_NO_PICK)) 1187 if (QUERY_FLAG (op, FLAG_NO_PICK))
1205 if (i != -1) 1198 if (i != -1)
1206 rv = transfer_ob (op, op->x + freearr_x[i], op->y + freearr_y[i], 0, shop_mat); 1199 rv = transfer_ob (op, op->x + freearr_x[i], op->y + freearr_y[i], 0, shop_mat);
1207 1200
1208 return 0; 1201 return 0;
1209 } 1202 }
1203
1210 /* Removed code that checked for multipart objects - it appears that 1204 /* Removed code that checked for multipart objects - it appears that
1211 * the teleport function should be able to handle this just fine. 1205 * the teleport function should be able to handle this just fine.
1212 */ 1206 */
1213 rv = teleport (shop_mat, SHOP_MAT, op); 1207 rv = teleport (shop_mat, SHOP_MAT, op);
1214 } 1208 }
1271static void 1265static void
1272apply_sign (object *op, object *sign, int autoapply) 1266apply_sign (object *op, object *sign, int autoapply)
1273{ 1267{
1274 if (sign->has_dialogue ()) 1268 if (sign->has_dialogue ())
1275 { 1269 {
1276 op->statusmsg (form ("Maybe you should I<talk> to the %s instead?", &sign->name)); 1270 op->statusmsg (format ("Maybe you should I<talk> to the %s instead?", &sign->name));
1277 return; 1271 return;
1278 } 1272 }
1279 1273
1280 if (!sign->msg) 1274 if (!sign->msg)
1281 { 1275 {
1282 op->statusmsg ("Nothing is written on it."); 1276 op->contr->infobox (MSG_CHANNEL ("examine"),
1277 format ("T<%s>\n\n Nothing %sis written on it.",
1278 &sign->name,
1279 sign->name == sign->arch->name ? "" : "else "));
1283 return; 1280 return;
1284 } 1281 }
1285 1282
1286 if (sign->stats.food) 1283 if (sign->stats.food)
1287 { 1284 {
1288 if (sign->last_eat >= sign->stats.food) 1285 if (sign->last_eat >= sign->stats.food)
1289 { 1286 {
1290 if (!sign->move_on) 1287 if (!sign->move_on)
1291 op->statusmsg ("You cannot read it anymore."); 1288 op->failmsg ("You cannot read it anymore.");
1292 1289
1293 return; 1290 return;
1294 } 1291 }
1295 1292
1296 if (!QUERY_FLAG (op, FLAG_WIZPASS)) 1293 if (!QUERY_FLAG (op, FLAG_WIZPASS))
1314 if (sign->sound) 1311 if (sign->sound)
1315 ns->play_sound (sign->sound); 1312 ns->play_sound (sign->sound);
1316 else if (autoapply) 1313 else if (autoapply)
1317 ns->play_sound (sound_find ("msg_voice")); 1314 ns->play_sound (sound_find ("msg_voice"));
1318 1315
1319 if (ns->can_msg)
1320 op->contr->infobox (MSG_CHANNEL ("examine"), format ("T<%s>\n\n%s", &sign->name, &sign->msg)); 1316 op->contr->infobox (MSG_CHANNEL ("examine"), format ("T<%s>\n\n%s", &sign->name, &sign->msg));
1321 else
1322 {
1323 readable_message_type *msgType = get_readable_message_type (sign);
1324 const char *somemsg = format ("%u %s", autoapply ? 1 : 0, &sign->msg);
1325 draw_ext_info (NDI_UNIQUE | NDI_NAVY, 0, op, msgType->message_type, msgType->message_subtype, somemsg, &sign->msg);
1326 }
1327 } 1317 }
1328} 1318}
1329 1319
1330static void 1320static void
1331move_apply_hole (object *trap, object *victim) 1321move_apply_hole (object *trap, object *victim)
1635 1625
1636 readable_message_type *msgType = get_readable_message_type (tmp); 1626 readable_message_type *msgType = get_readable_message_type (tmp);
1637 1627
1638 if (player *pl = op->contr) 1628 if (player *pl = op->contr)
1639 if (client *ns = pl->ns) 1629 if (client *ns = pl->ns)
1640 if (ns->can_msg)
1641 pl->infobox (MSG_CHANNEL ("book"), format ("T<%s>\n\n%s", (char *)long_desc (tmp, op), &tmp->msg)); 1630 pl->infobox (MSG_CHANNEL ("book"), format ("T<%s>\n\n%s", (char *)long_desc (tmp, op), &tmp->msg));
1642 else
1643 draw_ext_info_format (NDI_UNIQUE | NDI_NAVY, 0, op,
1644 msgType->message_type, msgType->message_subtype,
1645 "You open the %s and start reading.\n%s", (char *)"%s\n%s",
1646 long_desc (tmp, op), &tmp->msg);
1647 1631
1648 /* gain xp from reading */ 1632 /* gain xp from reading */
1649 if (!QUERY_FLAG (tmp, FLAG_NO_SKILL_IDENT)) 1633 if (!QUERY_FLAG (tmp, FLAG_NO_SKILL_IDENT))
1650 { /* only if not read before */ 1634 { /* only if not read before */
1651 int exp_gain = calc_skill_exp (op, tmp, skill_ob); 1635 int exp_gain = calc_skill_exp (op, tmp, skill_ob);
2179 op->statusmsg (buf); 2163 op->statusmsg (buf);
2180 2164
2181 /* now choose a winner if we have any */ 2165 /* now choose a winner if we have any */
2182 i = -1; 2166 i = -1;
2183 if (winners > 0) 2167 if (winners > 0)
2184 i = atnr_winner[RANDOM () % winners]; 2168 i = atnr_winner [rndm (winners)];
2185 2169
2186 if (i >= 0 && i < NROFATTACKS && skin->resist[i] < 95) 2170 if (i >= 0 && i < NROFATTACKS && skin->resist[i] < 95)
2187 { 2171 {
2188 /* resistance increased! */ 2172 /* resistance increased! */
2189 skin->resist[i]++; 2173 skin->resist[i]++;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines