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

Comparing deliantra/server/server/skills.C (file contents):
Revision 1.105 by root, Mon Nov 12 03:14:33 2012 UTC vs.
Revision 1.108 by root, Wed Dec 12 02:13:05 2012 UTC

281 281
282 /* For all the stacked objects at this point, attempt a steal */ 282 /* For all the stacked objects at this point, attempt a steal */
283 for (; tmp; tmp = next) 283 for (; tmp; tmp = next)
284 { 284 {
285 next = tmp->below; 285 next = tmp->below;
286 /* Minor hack--for multi square beings - make sure we get 286 /* Minor hack--for multi square beings - make sure we get
287 * the 'head' coz 'tail' objects have no inventory! - b.t. 287 * the 'head' coz 'tail' objects have no inventory! - b.t.
288 */ 288 */
289 if (tmp->head) 289 if (tmp->head)
290 tmp = tmp->head; 290 tmp = tmp->head;
291 291
292 if (tmp->type != PLAYER && !tmp->flag [FLAG_MONSTER]) 292 if (tmp->type != PLAYER && !tmp->flag [FLAG_MONSTER])
293 continue;
294
295 /* do not reveal hidden DMs */
296 if (tmp->type == PLAYER && tmp->flag [FLAG_WIZ] && tmp->contr->hidden)
297 continue; 293 continue;
298 294
299 if (attempt_steal (tmp, op, skill)) 295 if (attempt_steal (tmp, op, skill))
300 { 296 {
301 if (tmp->type == PLAYER) /* no xp for stealing from another player */ 297 if (tmp->type == PLAYER) /* no xp for stealing from another player */
519 } 515 }
520 516
521 for (tmp = GET_MAP_OB (m, x, y); tmp; tmp = tmp->above) 517 for (tmp = GET_MAP_OB (m, x, y); tmp; tmp = tmp->above)
522 { 518 {
523 /* Jump into creature */ 519 /* Jump into creature */
524 if (tmp->flag [FLAG_MONSTER] 520 if (tmp->flag [FLAG_MONSTER] || tmp->type == PLAYER)
525 || (tmp->type == PLAYER && (!tmp->flag [FLAG_WIZ] || !tmp->contr->hidden)))
526 { 521 {
527 new_draw_info_format (NDI_UNIQUE, 0, pl, "You jump into %s%s.", tmp->type == PLAYER ? "" : "the ", &tmp->name); 522 new_draw_info_format (NDI_UNIQUE, 0, pl, "You jump into %s%s.", tmp->type == PLAYER ? "" : "the ", &tmp->name);
528 523
529 stop_jump (pl, i, spaces); 524 stop_jump (pl, i, spaces);
530 525
1213 1208
1214 /* ok let's meditate! Spell points are regained first, then once 1209 /* ok let's meditate! Spell points are regained first, then once
1215 * they are maxed we get back hp. Actual incrementing of values 1210 * they are maxed we get back hp. Actual incrementing of values
1216 * is handled by the do_some_living() (in player.c). This way magical 1211 * is handled by the do_some_living() (in player.c). This way magical
1217 * bonuses for healing/sp regeneration are included properly 1212 * bonuses for healing/sp regeneration are included properly
1218 * No matter what, we will eat up some playing time trying to 1213 * No matter what, we will eat up some playing time trying to
1219 * meditate. (see 'factor' variable for what sets the amount of time) 1214 * meditate. (see 'factor' variable for what sets the amount of time)
1220 */ 1215 */
1221 1216
1222 new_draw_info (NDI_BLACK, 0, pl, "You meditate."); 1217 new_draw_info (NDI_BLACK, 0, pl, "You meditate.");
1223 1218
1224 if (pl->stats.sp < pl->stats.maxsp) 1219 if (pl->stats.sp < pl->stats.maxsp)
1231 pl->stats.hp++; 1226 pl->stats.hp++;
1232 pl->last_heal = -1; 1227 pl->last_heal = -1;
1233 } 1228 }
1234} 1229}
1235 1230
1236/* write_note() - this routine allows players to inscribe messages in 1231/* write_note() - this routine allows players to inscribe messages in
1237 * ordinary inscribable 'books' (anything that is not a SPELL). b.t. 1232 * ordinary inscribable 'books' (anything that is not a SPELL). b.t.
1238 */ 1233 */
1239static int 1234static int
1240write_note (object *pl, object *item, const char *msg, object *skill) 1235write_note (object *pl, object *item, const char *msg, object *skill)
1241{ 1236{
1286 return 0; 1281 return 0;
1287} 1282}
1288 1283
1289/* write_scroll() - this routine allows players to inscribe spell scrolls 1284/* write_scroll() - this routine allows players to inscribe spell scrolls
1290 * of spells which they know. Backfire effects are possible with the 1285 * of spells which they know. Backfire effects are possible with the
1291 * severity of the backlash correlated with the difficulty of the scroll 1286 * severity of the backlash correlated with the difficulty of the scroll
1292 * that is attempted. -b.t. thomas@astro.psu.edu 1287 * that is attempted. -b.t. thomas@astro.psu.edu
1293 */ 1288 */
1294static int 1289static int
1295write_scroll (object *pl, object *scroll, object *skill) 1290write_scroll (object *pl, object *scroll, object *skill)
1296{ 1291{
1328 if (random_roll (0, chosen_spell->level * 4 - 1, pl, PREFER_LOW) < skill->level) 1323 if (random_roll (0, chosen_spell->level * 4 - 1, pl, PREFER_LOW) < skill->level)
1329 { 1324 {
1330 object *newscroll = scroll->other_arch->instance (); 1325 object *newscroll = scroll->other_arch->instance ();
1331 scroll->decrease (); 1326 scroll->decrease ();
1332 newscroll->nrof = 1; 1327 newscroll->nrof = 1;
1328 newscroll->randomitems = 0; // make sure randomitems doesn't destroy the scroll
1333 1329
1334 pl->contr->play_sound (sound_find ("inscribe_success")); 1330 pl->contr->play_sound (sound_find ("inscribe_success"));
1335 1331
1336 if (!confused) 1332 if (!confused)
1337 { 1333 {
1348 newscroll->level = max (skill->level, chosen_spell->level); 1344 newscroll->level = max (skill->level, chosen_spell->level);
1349 new_draw_info (NDI_UNIQUE, 0, pl, "In your confused state, you write down some odd spell."); 1345 new_draw_info (NDI_UNIQUE, 0, pl, "In your confused state, you write down some odd spell.");
1350 } 1346 }
1351 1347
1352 object *tmp = chosen_spell->clone (); 1348 object *tmp = chosen_spell->clone ();
1349 tmp->flag [FLAG_APPLIED] = false;
1353 insert_ob_in_ob (tmp, newscroll); 1350 insert_ob_in_ob (tmp, newscroll);
1354 1351
1355 /* Same code as from treasure.C - so they can better merge. 1352 /* Same code as from treasure.C - so they can better merge.
1356 * if players want to sell them, so be it. 1353 * if players want to sell them, so be it.
1357 */ 1354 */

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines