… | |
… | |
166 | &prod_item->arch->archname, prod_item->nrof); |
166 | &prod_item->arch->archname, prod_item->nrof); |
167 | } |
167 | } |
168 | #endif |
168 | #endif |
169 | if (!prod_item) |
169 | if (!prod_item) |
170 | *rp_arch_index = rndm (rp->arch_names); |
170 | *rp_arch_index = rndm (rp->arch_names); |
171 | prod_item = get_archetype (rp->arch_name[*rp_arch_index]); |
171 | prod_item = archetype::get (rp->arch_name[*rp_arch_index]); |
172 | } |
172 | } |
173 | |
173 | |
174 | #ifdef ALCHEMY_DEBUG |
174 | #ifdef ALCHEMY_DEBUG |
175 | LOG (llevDebug, "recipe calls for%stransmution.\n", rp->transmute ? " " : " no "); |
175 | LOG (llevDebug, "recipe calls for%stransmution.\n", rp->transmute ? " " : " no "); |
176 | if (prod_item != NULL) |
176 | if (prod_item != NULL) |
… | |
… | |
388 | if (rndm (0, 2)) |
388 | if (rndm (0, 2)) |
389 | { /* slag created */ |
389 | { /* slag created */ |
390 | object *tmp = cauldron->inv; |
390 | object *tmp = cauldron->inv; |
391 | int weight = 0; |
391 | int weight = 0; |
392 | |
392 | |
393 | tmp = get_archetype (shstr_rock); |
393 | tmp = archetype::get (shstr_rock); |
394 | tmp->weight = weight; |
394 | tmp->weight = weight; |
395 | tmp->value = 0; |
395 | tmp->value = 0; |
396 | tmp->material = name_to_material (shstr_stone); |
396 | tmp->material = name_to_material (shstr_stone); |
397 | tmp->name = shstr_slag; |
397 | tmp->name = shstr_slag; |
398 | tmp->name_pl = shstr_slags; |
398 | tmp->name_pl = shstr_slags; |
… | |
… | |
465 | |
465 | |
466 | remove_contents (cauldron->inv, NULL); |
466 | remove_contents (cauldron->inv, NULL); |
467 | switch (rndm (0, 2)) |
467 | switch (rndm (0, 2)) |
468 | { |
468 | { |
469 | case 0: |
469 | case 0: |
470 | tmp = get_archetype (shstr_bomb); |
470 | tmp = archetype::get (shstr_bomb); |
471 | tmp->stats.dam = random_roll (1, level, op, PREFER_LOW); |
471 | tmp->stats.dam = random_roll (1, level, op, PREFER_LOW); |
472 | tmp->stats.hp = random_roll (1, level, op, PREFER_LOW); |
472 | tmp->stats.hp = random_roll (1, level, op, PREFER_LOW); |
473 | new_draw_info_format (NDI_UNIQUE, 0, op, "The %s creates a bomb!", &cauldron->name); |
473 | new_draw_info_format (NDI_UNIQUE, 0, op, "The %s creates a bomb!", &cauldron->name); |
474 | break; |
474 | break; |
475 | |
475 | |
476 | default: |
476 | default: |
477 | tmp = get_archetype (shstr_fireball); |
477 | tmp = archetype::get (shstr_fireball); |
478 | tmp->stats.dam = random_roll (1, level, op, PREFER_LOW) / 5 + 1; |
478 | tmp->stats.dam = random_roll (1, level, op, PREFER_LOW) / 5 + 1; |
479 | tmp->stats.hp = random_roll (1, level, op, PREFER_LOW) / 10 + 2; |
479 | tmp->stats.hp = random_roll (1, level, op, PREFER_LOW) / 10 + 2; |
480 | new_draw_info_format (NDI_UNIQUE, 0, op, "The %s erupts in flame!", &cauldron->name); |
480 | new_draw_info_format (NDI_UNIQUE, 0, op, "The %s erupts in flame!", &cauldron->name); |
481 | break; |
481 | break; |
482 | } |
482 | } |
… | |
… | |
488 | new_draw_info_format (NDI_UNIQUE, 0, op, "The %s %s.", &cauldron->name, cauldron_sound ()); |
488 | new_draw_info_format (NDI_UNIQUE, 0, op, "The %s %s.", &cauldron->name, cauldron_sound ()); |
489 | remove_contents (cauldron->inv, NULL); |
489 | remove_contents (cauldron->inv, NULL); |
490 | } |
490 | } |
491 | else if (level < 80) |
491 | else if (level < 80) |
492 | { /* MAJOR FIRE */ |
492 | { /* MAJOR FIRE */ |
493 | object *fb = get_archetype (SP_MED_FIREBALL); |
493 | object *fb = archetype::get (SP_MED_FIREBALL); |
494 | |
494 | |
495 | remove_contents (cauldron->inv, NULL); |
495 | remove_contents (cauldron->inv, NULL); |
496 | fire_arch_from_position (cauldron, cauldron, cauldron->x, cauldron->y, 0, fb); |
496 | fire_arch_from_position (cauldron, cauldron, cauldron->x, cauldron->y, 0, fb); |
497 | fb->destroy (); |
497 | fb->destroy (); |
498 | new_draw_info_format (NDI_UNIQUE, 0, op, "The %s erupts in flame!", &cauldron->name); |
498 | new_draw_info_format (NDI_UNIQUE, 0, op, "The %s erupts in flame!", &cauldron->name); |
… | |
… | |
544 | * to be made (rather than only those on the given |
544 | * to be made (rather than only those on the given |
545 | * formulalist) */ |
545 | * formulalist) */ |
546 | if (!rp) |
546 | if (!rp) |
547 | rp = get_random_recipe ((recipelist *) NULL); |
547 | rp = get_random_recipe ((recipelist *) NULL); |
548 | |
548 | |
549 | if (rp && (tmp = get_archetype (rp->arch_name [rndm (rp->arch_names)]))) |
549 | if (rp && (tmp = archetype::get (rp->arch_name [rndm (rp->arch_names)]))) |
550 | { |
550 | { |
551 | generate_artifact (tmp, random_roll (1, op->level / 2 + 1, op, PREFER_HIGH) + 1); |
551 | generate_artifact (tmp, random_roll (1, op->level / 2 + 1, op, PREFER_HIGH) + 1); |
552 | if ((tmp = insert_ob_in_ob (tmp, cauldron))) |
552 | if ((tmp = insert_ob_in_ob (tmp, cauldron))) |
553 | { |
553 | { |
554 | remove_contents (cauldron->inv, tmp); |
554 | remove_contents (cauldron->inv, tmp); |
… | |
… | |
556 | } |
556 | } |
557 | } |
557 | } |
558 | } |
558 | } |
559 | else |
559 | else |
560 | { /* MANA STORM - watch out!! */ |
560 | { /* MANA STORM - watch out!! */ |
561 | object *tmp = get_archetype (LOOSE_MANA); |
561 | object *tmp = archetype::get (LOOSE_MANA); |
562 | |
562 | |
563 | new_draw_info (NDI_UNIQUE, 0, op, "You unwisely release potent forces!"); |
563 | new_draw_info (NDI_UNIQUE, 0, op, "You unwisely release potent forces!"); |
564 | remove_contents (cauldron->inv, NULL); |
564 | remove_contents (cauldron->inv, NULL); |
565 | cast_magic_storm (op, tmp, level); |
565 | cast_magic_storm (op, tmp, level); |
566 | } |
566 | } |