This is correct. I went ahead and dug up the copy of the source I have on this computer (which is 3.5.0) and found effect_wonder():
	This is definitely changed from what I remember; the die roll is passed in from outside, and I don't remember the character level modifier (which is provided external to this function; casting the spell and using a wand have the same character-level-based modifier, no evidence of device skill modifiers anywhere).
But yeah, to get the "RARE" effect (150 damage to all monsters in LOS + slow all monsters + sleep all monsters + 300HP heal), you need to be level 50 and then pass a 1%-odds check. You only stop being able to get the "clone monster" effect at level 40 and you're always at risk of getting haste/heal/polymorph monster effects.
Getting Earthquake as a level-9 warrior should be impossible, though, so maybe I'm missing something? It shouldn't be possible until you're at least level 20, and even at level 50 you only have 2% odds of triggering it on each use.
					Code:
	bool effect_wonder(int dir, int die, int beam)
{
/* This spell should become more useful (more
   controlled) as the player gains experience levels.
   Thus, add 1/5 of the player's level to the die roll.
   This eliminates the worst effects later on, while
   keeping the results quite random.  It also allows
   some potent effects only at high level. */
    bool visible = FALSE;
    int py = p_ptr->py;
    int px = p_ptr->px;
    int plev = p_ptr->lev;
    if (die > 100)
    {
        /* above 100 the effect is always visible */
        msg("You feel a surge of power!");
        visible = TRUE;
    }
    if (die < 8) visible = clone_monster(dir);
    else if (die < 14) visible = speed_monster(dir);
    else if (die < 26) visible = heal_monster(dir);
    else if (die < 31) visible = poly_monster(dir);
    else if (die < 36)
        visible = fire_bolt_or_beam(beam - 10, GF_MISSILE, dir,
                                    damroll(3 + ((plev - 1) / 5), 4));
    else if (die < 41) visible = confuse_monster(dir, plev, FALSE);
    else if (die < 46) visible = fire_ball(GF_POIS, dir, 20 + (plev / 2), 3);
    else if (die < 51) visible = light_line(dir);
    else if (die < 56)
        visible = fire_beam(GF_ELEC, dir, damroll(3+((plev-5)/6), 6));
    else if (die < 61)
        visible = fire_bolt_or_beam(beam-10, GF_COLD, dir,
                                    damroll(5+((plev-5)/4), 8));
    else if (die < 66)
        visible = fire_bolt_or_beam(beam, GF_ACID, dir,
                                    damroll(6+((plev-5)/4), 8));
    else if (die < 71)
        visible = fire_bolt_or_beam(beam, GF_FIRE, dir,
                                    damroll(8+((plev-5)/4), 8));
    else if (die < 76) visible = drain_life(dir, 75);
    else if (die < 81) visible = fire_ball(GF_ELEC, dir, 30 + plev / 2, 2);
    else if (die < 86) visible = fire_ball(GF_ACID, dir, 40 + plev, 2);
    else if (die < 91) visible = fire_ball(GF_ICE, dir, 70 + plev, 3);
    else if (die < 96) visible = fire_ball(GF_FIRE, dir, 80 + plev, 3);
    /* above 100 'visible' is already true */
    else if (die < 101) drain_life(dir, 100 + plev);
    else if (die < 104) earthquake(py, px, 12);
    else if (die < 106) destroy_area(py, px, 15, TRUE);
    else if (die < 108) banishment();
    else if (die < 110) dispel_monsters(120);
    else /* RARE */
    {
        dispel_monsters(150);
        slow_monsters();
        sleep_monsters(TRUE);
        hp_player(300);
    }
    return visible;
}
But yeah, to get the "RARE" effect (150 damage to all monsters in LOS + slow all monsters + sleep all monsters + 300HP heal), you need to be level 50 and then pass a 1%-odds check. You only stop being able to get the "clone monster" effect at level 40 and you're always at risk of getting haste/heal/polymorph monster effects.
Getting Earthquake as a level-9 warrior should be impossible, though, so maybe I'm missing something? It shouldn't be possible until you're at least level 20, and even at level 50 you only have 2% odds of triggering it on each use.
 
	 
							
						
Comment