295 lines
19 KiB
Plaintext
295 lines
19 KiB
Plaintext
//::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
|
//:::::::::::::::::::::::: 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);
|
|
}
|