Beispiel #1
0
/******************************************************************************
 *                                20            30            40
 * Servant of Khorne: Bloodletter -> Fleshhound -> Juggernaut -> Bloodthirster
 ******************************************************************************/
static void _khorne_birth(void)
{
    object_type    forge;

    p_ptr->current_r_idx = MON_BLOODLETTER_KHORNE;
    equip_on_change_race();

    object_prep(&forge, lookup_kind(TV_RING, 0));
    forge.name2 = EGO_RING_COMBAT;
    forge.to_d = 6;
    add_outfit(&forge);

    object_prep(&forge, lookup_kind(TV_SOFT_ARMOR, SV_LEATHER_SCALE_MAIL));
    add_outfit(&forge);

    object_prep(&forge, lookup_kind(TV_SWORD, SV_BLADE_OF_CHAOS));
    forge.name2 = EGO_WEAPON_SHARPNESS;
    forge.pval = 1;
    forge.to_h = 0;
    forge.to_d = 0;
    forge.ds = 6;
    forge.weight = 220;
    add_flag(forge.flags, OF_VORPAL);
    add_outfit(&forge);
}
/**********************************************************************
 *                  7        14      21     28       35
 * Evolution: White -> Green -> Blue -> Red -> Clear -> Multihued
 **********************************************************************/
static void _birth(void)
{
    object_type    forge;

    p_ptr->current_r_idx = MON_CENTIPEDE_WHITE;
    equip_on_change_race();
    skills_innate_init("Bite", WEAPON_EXP_BEGINNER, WEAPON_EXP_MASTER);
    skills_innate_init("Sting", WEAPON_EXP_BEGINNER, WEAPON_EXP_MASTER);
    skills_innate_init("Crawl", WEAPON_EXP_BEGINNER, WEAPON_EXP_MASTER);


    object_prep(&forge, lookup_kind(TV_RING, 0));
    forge.name2 = EGO_RING_COMBAT;
    forge.to_h = 3;
    forge.to_d = 2;
    forge.pval = 1;
    add_flag(forge.flags, OF_DEX);
    add_outfit(&forge);

    object_prep(&forge, lookup_kind(TV_BOOTS, SV_PAIR_OF_SOFT_LEATHER_BOOTS));
    add_outfit(&forge);

    object_prep(&forge, lookup_kind(TV_BOOTS, SV_PAIR_OF_SOFT_LEATHER_BOOTS));
    add_outfit(&forge);
}
Beispiel #3
0
/**********************************************************************
 * Common Evolution: 
 *       10       20      30         40     45
 *  Clay -> Stone -> Iron -> Mithril -> Eog -> Colossus | Sky | Spellwarp
 **********************************************************************/
static void _birth(void) 
{ 
    object_type forge;

    p_ptr->current_r_idx = MON_CLAY_GOLEM;
    skills_innate_init("Fist", WEAPON_EXP_BEGINNER, WEAPON_EXP_MASTER);

    object_prep(&forge, lookup_kind(TV_HARD_ARMOR, SV_CHAIN_MAIL));
    add_outfit(&forge);

    object_prep(&forge, lookup_kind(TV_BOOTS, SV_PAIR_OF_METAL_SHOD_BOOTS));
    add_outfit(&forge);
}
/**********************************************************************
 * Hound Equipment
 **********************************************************************/
static void _birth(void) 
{ 
    object_type    forge;

    p_ptr->current_r_idx = MON_CLEAR_HOUND;
    equip_on_change_race();
    
    object_prep(&forge, lookup_kind(TV_RING, 0));
    forge.name2 = EGO_RING_COMBAT;
    forge.to_d = 3;
    add_outfit(&forge);

    object_prep(&forge, lookup_kind(TV_BOOTS, SV_PAIR_OF_METAL_SHOD_BOOTS));
    add_outfit(&forge);
}
Beispiel #5
0
static void _birth(void) 
{ 
    object_type    forge;

    p_ptr->current_r_idx = MON_ANGEL;
    
    object_prep(&forge, lookup_kind(TV_POTION, SV_POTION_HEALING));
    add_outfit(&forge);

    object_prep(&forge, lookup_kind(TV_SOFT_ARMOR, SV_LEATHER_SCALE_MAIL));
    add_outfit(&forge);

    object_prep(&forge, lookup_kind(TV_HAFTED, SV_MACE));
    add_outfit(&forge);
}
Beispiel #6
0
static void _khorne_gain_level(int new_level)
{
    if (p_ptr->current_r_idx == MON_BLOODLETTER_KHORNE && new_level >= 20)
    {
        p_ptr->current_r_idx = MON_FLESHHOUND_KHORNE;
        msg_print("You have evolved into a Fleshhound of Khorne.");
        equip_on_change_race();
        p_ptr->redraw |= PR_MAP;
    }
    if (p_ptr->current_r_idx == MON_FLESHHOUND_KHORNE && new_level >= 30)
    {
        p_ptr->current_r_idx = MON_JUGGERNAUT_KHORNE;
        msg_print("You have evolved into a Juggernaut of Khorne.");
        equip_on_change_race();
        p_ptr->redraw |= PR_MAP;
    }
    if (p_ptr->current_r_idx == MON_JUGGERNAUT_KHORNE && new_level >= 40)
    {
        object_type forge;
        p_ptr->current_r_idx = MON_BLOODTHIRSTER;
        msg_print("You have evolved into a Bloodthirster.");
        equip_on_change_race();
        p_ptr->redraw |= PR_MAP;
        object_prep(&forge, lookup_kind(TV_SWORD, SV_BLADE_OF_CHAOS));
        forge.name2 = EGO_WEAPON_DEATH; /* Prevent ?Artifact or ?WeaponBranding */
        forge.dd = 50;
        forge.ds = 1;
        forge.weight = 500;
        forge.to_h = 15;
        forge.to_d = 15;
        add_outfit(&forge);
        p_ptr->update |= PU_BONUS;
    }
}
Beispiel #7
0
/**********************************************************************
 * Hound Equipment
 **********************************************************************/
static void _birth(void) 
{ 
    object_type    forge;

    p_ptr->current_r_idx = MON_CLEAR_HOUND;
    equip_on_change_race();
    skills_innate_init("Claw", WEAPON_EXP_BEGINNER, WEAPON_EXP_MASTER);
    skills_innate_init("Bite", WEAPON_EXP_BEGINNER, WEAPON_EXP_MASTER);

    object_prep(&forge, lookup_kind(TV_RING, 0));
    forge.name2 = EGO_RING_COMBAT;
    forge.to_d = 3;
    add_outfit(&forge);

    object_prep(&forge, lookup_kind(TV_BOOTS, SV_PAIR_OF_METAL_SHOD_BOOTS));
    add_outfit(&forge);
}
Beispiel #8
0
static void _cyber_birth(void)
{
    object_type    forge;

    p_ptr->current_r_idx = MON_CYBER;

    object_prep(&forge, lookup_kind(TV_RING, 0));
    forge.name2 = EGO_RING_COMBAT;
    forge.to_d = 10;
    add_outfit(&forge);

    object_prep(&forge, lookup_kind(TV_SOFT_ARMOR, SV_LEATHER_SCALE_MAIL));
    add_outfit(&forge);

    object_prep(&forge, lookup_kind(TV_HAFTED, SV_GREAT_HAMMER));
    add_outfit(&forge);
}
Beispiel #9
0
static void _birth(void)
{
    object_type    forge;

    p_ptr->current_r_idx = MON_BLACK_OOZE;
    equip_on_change_race();
    skills_innate_init("Pseudopod", WEAPON_EXP_BEGINNER, WEAPON_EXP_MASTER);

    object_prep(&forge, lookup_kind(TV_RING, 0));
    forge.name2 = EGO_RING_COMBAT;
    forge.pval = 1;
    forge.to_d = 3;
    add_flag(forge.flags, OF_STR);
    add_outfit(&forge);

    object_prep(&forge, lookup_kind(TV_SOFT_ARMOR, SV_LEATHER_SCALE_MAIL));
    add_outfit(&forge);
}
/**********************************************************************
 *            25                40
 * Fire Spirt -> Fire Elemental -> Magma Elemental
 **********************************************************************/
static void _fire_birth(void) 
{ 
    object_type forge;
    
    object_prep(&forge, lookup_kind(TV_RING, 0));
    forge.name2 = EGO_RING_ELEMENTAL;
    forge.to_a = 15;
    add_flag(forge.art_flags, TR_RES_FIRE);
    add_flag(forge.art_flags, TR_SH_FIRE);
    add_outfit(&forge);

    object_prep(&forge, lookup_kind(TV_HAFTED, SV_WHIP));
    add_outfit(&forge);

    object_prep(&forge, lookup_kind(TV_HARD_ARMOR, SV_CHAIN_MAIL));
    add_outfit(&forge);

    p_ptr->current_r_idx = MON_FIRE_SPIRIT; 
}
Beispiel #11
0
static void _marilith_birth(void) {
    object_type    forge;

    p_ptr->current_r_idx = MON_MANES;
    equip_on_change_race();

    object_prep(&forge, lookup_kind(TV_RING, 0));
    forge.name2 = EGO_RING_COMBAT;
    forge.to_d = 3;
    add_outfit(&forge);

    object_prep(&forge, lookup_kind(TV_SOFT_ARMOR, SV_LEATHER_SCALE_MAIL));
    add_outfit(&forge);

    object_prep(&forge, lookup_kind(TV_SWORD, SV_BROAD_SWORD));
    forge.to_h = 1;
    forge.to_d = 2;
    add_outfit(&forge);
}
/**********************************************************************
 *             25
 * Earth Spirt -> Earth Elemental
 **********************************************************************/
static void _earth_birth(void) 
{ 
    object_type forge;
    
    object_prep(&forge, lookup_kind(TV_RING, 0));
    forge.name2 = EGO_RING_COMBAT;
    forge.to_d = 6;
    forge.pval = 3;
    add_flag(forge.art_flags, TR_STR);
    add_outfit(&forge);

    object_prep(&forge, lookup_kind(TV_HAFTED, SV_CLUB));
    add_outfit(&forge);

    object_prep(&forge, lookup_kind(TV_HARD_ARMOR, SV_CHAIN_MAIL));
    add_outfit(&forge);

    p_ptr->current_r_idx = MON_EARTH_SPIRIT; 
}
/**********************************************************************
 *           25
 * Air Spirt -> Air Elemental
 **********************************************************************/
static void _air_birth(void) 
{ 
    object_type forge;
    
    object_prep(&forge, lookup_kind(TV_RING, 0));
    forge.name2 = EGO_RING_ELEMENTAL;
    forge.to_a = 15;
    add_flag(forge.art_flags, TR_RES_ELEC);
    add_flag(forge.art_flags, TR_SH_ELEC);
    add_flag(forge.art_flags, TR_IGNORE_ELEC);
    add_outfit(&forge);

    object_prep(&forge, lookup_kind(TV_SWORD, SV_LONG_SWORD));
    add_outfit(&forge);

    object_prep(&forge, lookup_kind(TV_HARD_ARMOR, SV_CHAIN_MAIL));
    add_outfit(&forge);

    p_ptr->current_r_idx = MON_AIR_SPIRIT; 
}
/**********************************************************************
 *             25
 * Water Spirt -> Water Elemental
 **********************************************************************/
static void _water_birth(void) 
{ 
    object_type forge;
    
    object_prep(&forge, lookup_kind(TV_RING, 0));
    forge.name2 = EGO_RING_ELEMENTAL;
    forge.to_a = 15;
    add_flag(forge.art_flags, TR_RES_ACID);
    add_outfit(&forge);

    object_prep(&forge, lookup_kind(TV_RING, 0));
    forge.name2 = EGO_RING_COMBAT;
    forge.to_d = 5;
    add_outfit(&forge);

    object_prep(&forge, lookup_kind(TV_POLEARM, SV_TRIDENT));
    add_outfit(&forge);

    p_ptr->current_r_idx = MON_WATER_SPIRIT; 
}
/******************************************************************************
 *                  25                35              45
 * Vampire: Vampire -> Master Vampire -> Vampire Lord -> Elder Vampire
 ******************************************************************************/
static void _birth(void) 
{ 
    object_type    forge;

    p_ptr->current_r_idx = MON_VAMPIRE;
    equip_on_change_race();
    
    object_prep(&forge, lookup_kind(TV_SOFT_ARMOR, SV_LEATHER_SCALE_MAIL));
    add_outfit(&forge);

    object_prep(&forge, lookup_kind(TV_SWORD, SV_DAGGER));
    forge.name2 = EGO_WEAPON_DEATH;
    add_outfit(&forge);

    /* Encourage shapeshifting! */
    object_prep(&forge, lookup_kind(TV_RING, 0));
    forge.name2 = EGO_RING_COMBAT;
    forge.to_d = 4;
    add_outfit(&forge);
}
Beispiel #16
0
/******************************************************************************
 * Troll Evolution
 ******************************************************************************/
static void _birth(void) 
{ 
    object_type    forge;

    p_ptr->current_r_idx = MON_FOREST_TROLL;
    equip_on_change_race();
    
    object_prep(&forge, lookup_kind(TV_HARD_ARMOR, SV_CHAIN_MAIL));
    add_outfit(&forge);

    object_prep(&forge, lookup_kind(TV_RING, 0));
    forge.name2 = EGO_RING_COMBAT;
    forge.to_d = 7;
    add_outfit(&forge);

    object_prep(&forge, lookup_kind(TV_HAFTED, SV_CLUB));
    forge.weight = 100;
    forge.dd = 3;
    forge.ds = 4;
    forge.to_d = 7;
    add_outfit(&forge);
}
static void _birth(void) 
{ 
    object_type    forge;

    p_ptr->current_r_idx = MON_GAZER;
    equip_on_change_race();
    skills_innate_init("Gaze", WEAPON_EXP_BEGINNER, WEAPON_EXP_MASTER);
    
    object_prep(&forge, lookup_kind(TV_CROWN, SV_IRON_CROWN));
    forge.name2 = EGO_CROWN_SEEING;
    forge.pval = 4;
    forge.to_a = 10;
    add_esp_weak(&forge, FALSE);
    add_outfit(&forge);

    object_prep(&forge, lookup_kind(TV_WAND, SV_ANY));
    if (device_init_fixed(&forge, EFFECT_BOLT_FIRE))
        add_outfit(&forge);

    object_prep(&forge, lookup_kind(TV_WAND, SV_ANY));
    if (device_init_fixed(&forge, EFFECT_BOLT_COLD))
        add_outfit(&forge);
}
Beispiel #18
0
static void _balrog_birth(void)
{
    object_type    forge;

    p_ptr->current_r_idx = MON_LESSER_BALROG;

    object_prep(&forge, lookup_kind(TV_RING, 0));
    forge.name2 = EGO_RING_COMBAT;
    forge.to_d = 5;
    add_outfit(&forge);

    object_prep(&forge, lookup_kind(TV_SOFT_ARMOR, SV_LEATHER_SCALE_MAIL));
    add_outfit(&forge);

    object_prep(&forge, lookup_kind(TV_HAFTED, SV_WHIP));
    forge.name2 = EGO_WEAPON_SLAYING;
    add_flag(forge.flags, OF_BRAND_FIRE);
    forge.dd = 2;
    forge.ds = 6;
    forge.to_h = 5;
    forge.to_d = 5;
    add_outfit(&forge);
}
Beispiel #19
0
static void _birth(void) 
{ 
    object_type forge;
    int i;

    possessor_on_birth(); /* Cleanup history from last character */

    for (i = 0; i < _MAX_FORMS; i++)
        _forms[i] = 0;

    p_ptr->current_r_idx = MON_MIMIC;
    equip_on_change_race();
    
    object_prep(&forge, lookup_kind(TV_SWORD, SV_LONG_SWORD));
    add_outfit(&forge);

    object_prep(&forge, lookup_kind(TV_SOFT_ARMOR, SV_LEATHER_SCALE_MAIL));
    add_outfit(&forge);

    object_prep(&forge, lookup_kind(TV_RING, 0));
    forge.name2 = EGO_RING_COMBAT;
    forge.to_d = 3;
    add_outfit(&forge);
}
Beispiel #20
0
/**********************************************************************
 * Birth and Evolution
 **********************************************************************/
static void _birth(void) 
{ 
    object_type forge;
    int i;

    for (i = 0; i < _MAX_ESSENCE; i++)
        _essences[i] = 0;

    p_ptr->current_r_idx = MON_BROKEN_DEATH_SWORD;
    equip_on_change_race();

    object_prep(&forge, lookup_kind(TV_SWORD, SV_BROKEN_SWORD));
    add_flag(forge.art_flags, TR_NO_REMOVE);
    forge.to_h =  1;
    forge.to_d =  3;
    add_outfit(&forge);
}