/****************************************************************************** * 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); }
/********************************************************************** * 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); }
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); }
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; } }
/********************************************************************** * 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); }
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); }
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; }
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); }
/****************************************************************************** * 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); }
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); }
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); }
/********************************************************************** * 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); }