WoR_PRC8/_module/nss/sha_eg_subraces.nss

295 lines
19 KiB
Plaintext
Raw Permalink Normal View History

2025-04-03 11:49:34 -04:00
//::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
//:::::::::::::::::::::::: Shayan's Subrace Engine :::::::::::::::::::::::::::::
//::::::::::::::::::::::: File Name: sha_subr_methds :::::::::::::::::::::::::::
//:::::::::::::::::::::::::: Include script ::::::::::::::::::::::::::::::::::::
//:: Written by: Shayan :://
//:: Contact: mail_shayan@yhaoo.com :://
//
// ::Description: This is STRICTLY an example script showing how you can setup
// dynamic subrace switching system using SetupSubraceSwitch(...)
//
// :: WARNING: This is a example script and these subraces are not intended to be
// used in any module, as the skins and other items either have not been
// created or is from another subrace. I say it again, this script is
// STRICTLY for a scripters eye only, and should not be used.
//
//
// :: Here is how the following system is setup:
//
//
// :: Undead
// :: |
// :: |
// :: |
// :: |
// :: -------------------------------------------------------------
// :: | |
// :: | |
// :: | (Level 5) | (Level 20)
// :: | |
// :: ----------------------------------------------------------------------------------------------- Zombie
// :: | | |
// :: | | |
// :: | | |
// :: Phantasm Skeleton Vampire
// :: | |
// :: | (Level 10) | (Level 10)
// :: ---------------------------- ----------------------------------------------------
// :: | | | | |
// :: | | | | |
// :: | | | | |
// :: Shadow Allip Skeleton Mage Skeleton Warrior Skeleton Priest
// :: | | | |
// :: | | | |
// :: | (Level 20) | (Level 15) | |
// :: Shade Spectre | |
// :: | |
// :: | |
// :: | |
// :: | (Level 15) | (Level 25)
// :: Lich Skeleton-Chieftan
// ::
// ::
// ::
// :: NOTE: Most of these subraces subraces have restrictions. If a PC does not meet them they will not change in subrace.
// :: EG: For a Skeleton to become either skeleton mage or skeleton warrior oe skeleton priest, it must meet certain alignment and
// :: class restrictions. If a certain Skeleton PC does not meet any the criteria to become part of another skeletal subrace at
// :: Level 10, then he/she will continue as a Skeleton, forever.
// ::
// ::
// :: NOTE 2: A Player can de-level and relevel again inorder to try and become a part of a subrace he/she failed to meet criteria of.
// :: EG: If my Undead character failed to meet any criteria to switch to one of the subraces (Phatasm or Skeleton or Vampire) at level 5,
// :: and continues on as Undead, then he/she can de-level to level 5 and try again.
// ::
// :: HOWEVER the reverse is not true. That is once you are part of a subrace, you can't revert back the previous one.
// :: EG: If my Undead character became a vampire, when I wanted to become a Phantasm, I can't de-level my vampire expecting to
// :: switch back.
#include "sha_subr_methds"
void main()
{
//:: An Undead subrace
CreateSubrace(RACIAL_TYPE_ALL, "undead", "sha_pc_undead", "", TRUE, 2, FALSE, -1, 2, FALSE);
//:: Non-good only. . .
CreateSubraceAlignmentRestriction("undead", FALSE);
//:: Setup a subrace switch: Phantasm, Skeleton or Vampire at Level 5
SetupSubraceSwitch("undead", "phantasm_skeleton_vampire", 5, TRUE);
//:: Setup a subrace switch at level 20 to: Zombie. (Do not check requirements
// - meaning ALL 'Undead' PCs -that didn't make it as a vampire or a phantasm or a skeleton- will become Zombie at level 20)
SetupSubraceSwitch("undead", "zombie", 20, FALSE);
//Phantasm
CreateSubrace(RACIAL_TYPE_ALL, "phantasm", "sha_pc_phantasm", "", TRUE, 2, FALSE, -1, 2, TRUE);
//Neutral only
CreateSubraceAlignmentRestriction("phantasm", FALSE, TRUE, FALSE);
CreateSubraceAppearance("phantasm", TIME_BOTH, APPEARANCE_TYPE_ALLIP, APPEARANCE_TYPE_ALLIP);
//:: Concealed at 20%
AddSubraceEffect("phantasm", EFFECT_TYPE_CONCEALMENT, 20, MISS_CHANCE_TYPE_NORMAL, DURATION_TYPE_PERMANENT, 0.0, TIME_BOTH);
SetupSubraceSwitch("phantasm", "shadow_allip", 10, TRUE);
//Shadow
CreateSubrace(RACIAL_TYPE_ALL, "shadow", "sha_pc_shadow", "", TRUE, 2, FALSE, -1, 2, TRUE);
//Evil only
CreateSubraceAlignmentRestriction("shadow", FALSE, FALSE, TRUE);
//:: Fighter, Monk, Rogue and Sorcerer only.
CreateSubraceClassRestriction("shadow", FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, FALSE, FALSE, TRUE, TRUE, FALSE);
//:: Atleast 2 levels of Shadow Dancer.
CreateSubracePrestigiousClassRestriction("shade", 2, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE);
CreateSubraceAppearance("shadow", TIME_BOTH, APPEARANCE_TYPE_SHADOW, APPEARANCE_TYPE_SHADOW);
//:: Concealed at 25%
AddSubraceEffect("shadow", EFFECT_TYPE_CONCEALMENT, 25, MISS_CHANCE_TYPE_NORMAL, DURATION_TYPE_PERMANENT, 0.0, TIME_BOTH);
SetupSubraceSwitch("shadow", "shade", 20, TRUE);
//Shade
CreateSubrace(RACIAL_TYPE_ALL, "shade", "sha_pc_shade", "", TRUE, 2, FALSE, -1, 3, TRUE);
//Evil only
CreateSubraceAlignmentRestriction("shade", FALSE, FALSE, TRUE);
//:: Sorcerer only.
CreateSubraceClassRestriction("shade", FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, TRUE, FALSE);
//:: Must have atleast 6 levels of Blackguard or Shadow Dancer (or some combination of both adding to 6).
CreateSubracePrestigiousClassRestriction("shade", 6, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE);
CreateSubraceAppearance("shade", TIME_BOTH, APPEARANCE_TYPE_SHADOW_FIEND, APPEARANCE_TYPE_SHADOW_FIEND);
//:: Concealed at 40%
AddSubraceEffect("shade", EFFECT_TYPE_CONCEALMENT, 40, MISS_CHANCE_TYPE_NORMAL, DURATION_TYPE_PERMANENT, 0.0, TIME_BOTH);
CreateSubraceSpellResistance("shade", 10, 50);
//Allip
CreateSubrace(RACIAL_TYPE_ALL, "allip", "sha_pc_allip", "", TRUE, 2, FALSE, -1, 2, TRUE);
//Neutral only
CreateSubraceAlignmentRestriction("allip", FALSE, TRUE, FALSE);
//:: Bard, Cleric, Fighter, Monk, Rogue, Sorcerer and Wizard only.
CreateSubraceClassRestriction("allip", FALSE, TRUE, TRUE, FALSE, TRUE, TRUE, FALSE, FALSE, TRUE, TRUE, TRUE);
CreateSubraceAppearance("allip", TIME_BOTH, APPEARANCE_TYPE_ALLIP, APPEARANCE_TYPE_ALLIP);
//:: Permanently concealed at 30%
AddSubraceEffect("allip", EFFECT_TYPE_CONCEALMENT, 30, MISS_CHANCE_TYPE_NORMAL, DURATION_TYPE_PERMANENT, 0.0, TIME_BOTH);
SetupSubraceSwitch("allip", "spectre", 15, TRUE);
//Spectre
CreateSubrace(RACIAL_TYPE_ALL, "spectre", "sha_pc_spectre", "", TRUE, 2, FALSE, -2, 3, TRUE);
//Neutral-Evil or Chaotic-Evil only.
CreateSubraceAlignmentRestriction("spectre", FALSE, FALSE, TRUE, FALSE, TRUE);
CreateSubraceAppearance("spectre", TIME_BOTH, APPEARANCE_TYPE_WRAITH, APPEARANCE_TYPE_WRAITH);
CreateSubraceSpellResistance("spectre", 5, 35);
//:: Concealed at 50%
AddSubraceEffect("spectre", EFFECT_TYPE_CONCEALMENT, 50, MISS_CHANCE_TYPE_NORMAL, DURATION_TYPE_PERMANENT, 0.0, TIME_BOTH);
//Skeleton
CreateSubrace(RACIAL_TYPE_HUMAN, "skeleton", "sha_pc_skeleton", "", TRUE, 3, FALSE, -1, 3, TRUE);
//Can also be Elf.
AddAdditionalBaseRaceToSubrace("skeleton", RACIAL_TYPE_ELF);
//Can also be Half-Elf.
AddAdditionalBaseRaceToSubrace("skeleton", RACIAL_TYPE_HALFELF);
//:: Lawful Evil and Neutral Evil only.
CreateSubraceAlignmentRestriction("skeleton", FALSE, FALSE, TRUE, TRUE, TRUE, FALSE);
CreateSubraceAppearance("skeleton", TIME_BOTH, APPEARANCE_TYPE_SKELETON_COMMON, APPEARANCE_TYPE_SKELETON_COMMON);
SetupSubraceSwitch("skeleton", "skeleton-mage_skeleton-warrior_skeleton-priest", 10, TRUE);
//Skeleton-Mage
CreateSubrace(RACIAL_TYPE_HUMAN, "skeleton-mage", "sha_pc_skelem", "", TRUE, 2, FALSE, -2, 3, TRUE);
//Can also be Elf.
AddAdditionalBaseRaceToSubrace("skeleton-mage", RACIAL_TYPE_ELF);
//Can also be Half-Elf.
AddAdditionalBaseRaceToSubrace("skeleton-mage", RACIAL_TYPE_HALFELF);
//Neutral-Evil or Chaotic-Evil only.
CreateSubraceAlignmentRestriction("skeleton-mage", FALSE, FALSE, TRUE, TRUE, TRUE, FALSE);
//:: Sorcerer or Wizard only.
CreateSubraceClassRestriction("skeleton-mage", FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, TRUE);
CreateSubraceAppearance("skeleton-mage", TIME_BOTH, APPEARANCE_TYPE_SKELETON_MAGE, APPEARANCE_TYPE_SKELETON_MAGE);
CreateSubraceSpellResistance("skeleton-mage", 5, 25);
//:: Switch to Lich
SetupSubraceSwitch("skeleton-mage", "lich", 15, TRUE);
//Lich
//Human. Light Sensitive. Takes 5 Divine Damage While in Sunlight.
//ECL: + 3
//Undead
CreateSubrace(RACIAL_TYPE_HUMAN, "lich", "sha_pc_lich", "sha_subrace_lich", TRUE, 4, FALSE, 0, 3, TRUE, TRUE);
//Can also be Elf.
AddAdditionalBaseRaceToSubrace("lich", RACIAL_TYPE_ELF);
//Can also be Half-Elf.
AddAdditionalBaseRaceToSubrace("lich", RACIAL_TYPE_HALFELF);
//The different skins to be equipped at different levels...
AddAdditionalSkinsToSubrace("lich", "sha_pc_lich1", 5);
AddAdditionalSkinsToSubrace("lich", "sha_pc_lich2", 10);
AddAdditionalSkinsToSubrace("lich", "sha_pc_lich3", 15);
AddAdditionalSkinsToSubrace("lich", "sha_pc_lich4", 20);
AddAdditionalSkinsToSubrace("lich", "sha_pc_lich5", 25);
AddAdditionalSkinsToSubrace("lich", "sha_pc_lich6", 30);
AddAdditionalSkinsToSubrace("lich", "sha_pc_lich7", 35);
AddAdditionalSkinsToSubrace("lich", "sha_pc_lich8", 40);
//Alignment Restriction - Must be Evil.
CreateSubraceAlignmentRestriction("lich", FALSE, FALSE, TRUE);
//Class Restriction - Can only be Wizard or Sorcerer.
CreateSubraceClassRestriction("lich", FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, TRUE);
//Prestige Class Restriction - Needs atleast 5 levels of Pale Master
CreateSubracePrestigiousClassRestriction("lich", 5, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, FALSE);
//Spell Resistance: 10 + 1/2 Per Level.
CreateSubraceSpellResistance("lich", 10, 30);
//Appearance: Lich - Permanent.
CreateSubraceAppearance("lich", TIME_BOTH, APPEARANCE_TYPE_LICH, APPEARANCE_TYPE_HEURODIS_LICH);
//Favored Class: Wizard
AddSubraceFavoredClass("lich", CLASS_TYPE_WIZARD, CLASS_TYPE_WIZARD);
//Skeleton-Warrior
CreateSubrace(RACIAL_TYPE_HUMAN, "skeleton-warrior", "sha_pc_skelew", "", TRUE, 2, FALSE, -2, 3, TRUE);
//Can also be Elf.
AddAdditionalBaseRaceToSubrace("skeleton-warrior", RACIAL_TYPE_ELF);
//Can also be Half-Elf.
AddAdditionalBaseRaceToSubrace("skeleton-warrior", RACIAL_TYPE_HALFELF);
//Neutral-Evil or Chaotic-Evil only.
CreateSubraceAlignmentRestriction("skeleton-warrior", FALSE, FALSE, TRUE, TRUE, TRUE, FALSE);
//:: Non-casting types only.
CreateSubraceClassRestriction("skeleton-warrior", TRUE, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE);
CreateSubraceAppearance("skeleton-warrior", TIME_BOTH, APPEARANCE_TYPE_SKELETON_WARRIOR, APPEARANCE_TYPE_SKELETON_WARRIOR_1);
CreateSubraceSpellResistance("skeleton-warrior", 5, 20);
SetupSubraceSwitch("skeleton-warrior", "skeleton-chieftan", 25, TRUE);
//Skeleton-Chieftan
CreateSubrace(RACIAL_TYPE_HUMAN, "skeleton-chieftan", "sha_pc_skelec", "", TRUE, 2, FALSE, -2, 3, TRUE);
//Can also be Elf.
AddAdditionalBaseRaceToSubrace("skeleton-chieftan", RACIAL_TYPE_ELF);
//Can also be Half-Elf.
AddAdditionalBaseRaceToSubrace("skeleton-chieftan", RACIAL_TYPE_HALFELF);
//Neutral-Evil or Chaotic-Evil only.
CreateSubraceAlignmentRestriction("skeleton-chieftan", FALSE, FALSE, TRUE, TRUE, TRUE, FALSE);
//Non-casting types only.
CreateSubraceClassRestriction("skeleton-chieftan", TRUE, FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, FALSE, FALSE);
//Must have atleast 4 level in Blackguard, Assasin or Weapon Master or some combination of those classes adding up 4 levels.
CreateSubracePrestigiousClassRestriction("skeleton-chieftan", 4, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE);
CreateSubraceAppearance("skeleton-chieftan", TIME_BOTH, APPEARANCE_TYPE_SKELETON_CHIEFTAIN, APPEARANCE_TYPE_SKELETON_CHIEFTAIN);
CreateSubraceSpellResistance("skeleton-chieftan", 5, 20);
//Skeleton-Priest
CreateSubrace(RACIAL_TYPE_HUMAN, "skeleton-priest", "sha_pc_skelep", "", TRUE, 2, FALSE, -2, 3, TRUE);
//Can also be Elf.
AddAdditionalBaseRaceToSubrace("skeleton-priest", RACIAL_TYPE_ELF);
//Can also be Half-Elf.
AddAdditionalBaseRaceToSubrace("skeleton-priest", RACIAL_TYPE_HALFELF);
//Neutral-Evil or Chaotic-Evil only.
CreateSubraceAlignmentRestriction("skeleton-priest", FALSE, FALSE, TRUE, TRUE, TRUE, FALSE);
//:: Druid or Cleric only.
CreateSubraceClassRestriction("skeleton-priest", FALSE, FALSE, TRUE, TRUE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE);
CreateSubraceAppearance("skeleton-priest", TIME_BOTH, APPEARANCE_TYPE_SKELETON_PRIEST, APPEARANCE_TYPE_SKELETON_PRIEST);
CreateSubraceSpellResistance("skeleton-priest", 5, 30);
//Vampire
//Human. Light Sensitive. Takes 2 Divine Damage while in Sunlight.
//ECL: + 3
//Undead
CreateSubrace(RACIAL_TYPE_HUMAN, "vampire", "sha_pc_vamp001", "sha_subrace_vamp", TRUE, 2, FALSE, 0, 3, TRUE);
//Can also be Elf
AddAdditionalBaseRaceToSubrace("vampire", RACIAL_TYPE_ELF);
//Can also be Half-Elf
AddAdditionalBaseRaceToSubrace("vampire", RACIAL_TYPE_HALFELF);
//Skins that are equipped at certain levels...
AddAdditionalSkinsToSubrace("vampire", "sha_pc_vamp002", 5);
AddAdditionalSkinsToSubrace("vampire", "sha_pc_vamp003", 10);
AddAdditionalSkinsToSubrace("vampire", "sha_pc_vamp004", 15);
AddAdditionalSkinsToSubrace("vampire", "sha_pc_vamp005", 20);
AddAdditionalSkinsToSubrace("vampire", "sha_pc_vamp006", 25);
AddAdditionalSkinsToSubrace("vampire", "sha_pc_vamp007", 30);
AddAdditionalSkinsToSubrace("vampire", "sha_pc_vamp008", 35);
AddAdditionalSkinsToSubrace("vampire", "sha_pc_vamp", 40);
//Alignment Restriction: Can only be chaotic Evil.
CreateSubraceAlignmentRestriction("vampire", FALSE, FALSE, TRUE, FALSE, FALSE, TRUE);
//Appearance: Change the Appearance to a Vampire during night time, and revert back to normal during day time.
CreateSubraceAppearance("vampire", TIME_NIGHT, APPEARANCE_TYPE_VAMPIRE_MALE, APPEARANCE_TYPE_VAMPIRE_FEMALE, 1);
//Temporary Stats: Bonuses at Night time.
//Increase Strength by 6 points, Dexterity by 4 points, Consitution by 4, Charisma by 2, and AC by 5 and AB 10 during the Night.
struct SubraceStats VampStats1 = CreateCustomStats(SUBRACE_STAT_MODIFIER_TYPE_POINTS, 6.0, 4.0, 4.0, 0.0, 0.0, 2.0, 5.0, 10.0);
CreateTemporaryStatModifier("vampire", VampStats1, TIME_NIGHT);
//Favored Class: Rogue.
AddSubraceFavoredClass("vampire", CLASS_TYPE_ROGUE, CLASS_TYPE_ROGUE);
//:: Zombie
CreateSubrace(RACIAL_TYPE_ALL, "zombie", "sha_pc_zombie", "", TRUE, 2, FALSE, -1, 2, TRUE);
CreateSubraceAppearance("zombie", TIME_BOTH, APPEARANCE_TYPE_ZOMBIE, APPEARANCE_TYPE_ZOMBIE);
}