//:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: //:::::::::::::::::::::::: Shayan's Subrace Engine ::::::::::::::::::::::::::::: //:::::::::::::::::File Name: sha_on_modload ::::::::::::::::::::::::::::::::::: //::::::::::::::::::::: OnModuleLoad script :::::::::::::::::::::::::::::::::::: //:: Written By: Shayan. //:: Contact: mail_shayan@yahoo.com // // Description: This is an example of script of how to use Shayan's Subraces on // your Module. // // The OnModuleLoad script is where you define your subraces. (Look below) // // Double click on any of the methods below to get know how to use them. // // // :: Version 2.0: Pre-made subraces are now seperated into categories (Monsterous, and Normal) // and put into scripts: sha_subraces1, and sha_subraces2. #include "sha_subr_methds" void main() { //Ignore this... this is for NWNX/SQL database functionality if(ENABLE_NWNX_DATABASE) { //Initialize NWNX DB support SQLInit(); //Create subrace table in database (if it doesn't exist) DelayCommand(1.0, NWNX_CreateSubraceDBTables()); } //Functions available for use are: // // ::The Most Important Method (Used to define your subrace). MUST BE CALLED BEFORE ALL OTHERS.:: //----- CreateSubrace(int Race, string SubraceName, string HideResRef, string UniqueItemResref, int IsLightSensitive = FALSE, int DamageTakenWhileInLight = 0, int IsUndergroundSensitive = FALSE, int DamageTakenWhileInUnderground = 0, int ECL = 0, int IsUndead = FALSE, int PrestigiousSubrace = FALSE) // // ::Used to Add another Race that can be part of the Subrace.:: // ::Reuse as many times as needed.:: //----- AddAdditionalBaseRaceToSubrace(string subraceName, int AdditionalBaseRace) // // ::Used to add an Alignment Restriction to a Subrace. //----- CreateSubraceAlignmentRestriction(string subraceName, int CanBeAlignment_Good = TRUE , int CanBeAlignment_Neutral1 = TRUE, int CanBeAlignment_Evil = TRUE, int CanBeAlignment_Lawful = TRUE, int CanBeAlignment_Neutral2 = TRUE, int CanBeAlignment_Chaotic = TRUE) // // ::Used to add a Class restriction on the Subrace. //----- CreateSubraceClassRestriction(string subraceName, int CanBe_Barbarian = TRUE, int CanBe_Bard = TRUE, int CanBe_Cleric = TRUE, int CanBe_Druid = TRUE, int CanBe_Fighter = TRUE, int CanBe_Monk = TRUE, int CanBe_Paladin = TRUE, int CanBe_Ranger = TRUE, int CanBe_Rogue = TRUE, int CanBe_Sorcerer = TRUE, int CanBe_Wizard = TRUE) // // ::Used to change a Player Subrace's Appearance:: // ::Use only ONCE per subrace:: //----- CreateSubraceAppearance(string subraceName, int AppearanceChangeTime, int MaleAppearance, int FemaleAppearance) // // ::Used to give PC's a change in Ability scores, or Attack Bonus or Armour Class. During the day or Night. // ::USed in conjunction with CreateCustomStats() . //----- CreateTemporaryStatModifier(string subraceName, struct SubraceStats Stats, int TimeToApply, int InInteriorArea = TRUE, int InExteriorArea = TRUE, int InNaturalArea = TRUE, int InArtifacialArea = TRUE, int InUndergroundArea = TRUE, int InAbovegroundArea = TRUE) // // ::Used to define the Ability increase or decrease, AC increase/decrease, AB increase/Decrease. //----- SubraceStats CreateCustomStats(int StatModifierType, float StrengthModifier, float DexterityModifier, float ConstitutionModifier, float IntelligenceModifier, float WisdomModifier, float CharismaModifier, float ACModifier, float ABModifier) // // ::Used to disable/allow only the use of melee, ranged or other kind of weapons during certain times of day or permanently. // ::Use only ONCE per subrace:: //----- SubraceRestrictUseOfWeaponsOfType(string subraceName, int WeaponType, int TimeOfDay = TIME_BOTH) // // ::Used to disable/allow only the use of heavy, medium or light armour during the day, night or permanently. // ::Use only ONCE per subrace:: //----- SubraceRestrictUseOfArmourAndShieldsOfType(string subraceName, int Type, int TimeOfDay = TIME_BOTH, int Allow = FALSE) // // ::Add a favored Class to Subrace // ::Use only ONCE per subrace:: //----- AddSubraceFavoredClass(string subraceName, int MaleFavoredClass, int FamaleFavoredClass) // // ::Add an effect to the Subrace, that takes effect during the night (lasts until morning), day(lasts until dusk) or permanently. // ::Use as many times as desired:: //----- AddSubraceEffect(string subraceName, int EffectID, int Value1, int Value2, int nDurationType, float fDuration, int TimeOfDay) // // ::Add another skin for the subrace to be equipped at a particular level. // :: Use as Many times as desired. //----- AddAdditionalSkinsToSubrace(string subraceName, string SkinResRef, int EquipLevel, int iTime = TIME_BOTH) // // ::Use to create varying Spell resistance for the subrace. //----- CreateSubraceSpellResistance(string subraceName, int SpellResistanceBase, int SpellResistanceMax) // // ::Add 'claws' to the playable subrace. // :: Use as many times as desired. //----- AddClawsToSubrace(string subraceName, string RightClawResRef, string LeftClawResRef , int EquipLevel) // // :: Setup the player belonging to the subrace to 'switch' to another subrace //----- SetupSubraceSwitch(string subraceName, string switchSubraceName, int Level, int MustMeetRequirements = TRUE) // // :: Give additional 'unique' items //----- AddSubraceItem(string subraceName, string ItemResRef, int Level = 1) // // :: Set-up a Prestige class restriction for a subrace. //----- CreateSubracePrestigiousClassRestriction(string subraceName, int MinimumLevels = 1, int CanBe_ArcaneArcher = TRUE, int CanBe_Assasin = TRUE, int CanBe_Blackguard = TRUE, int CanBe_ChampionOfTorm = TRUE, int CanBe_RedDragonDisciple = TRUE, int CanBe_DwarvenDefender = TRUE, int CanBe_HarperScout = TRUE, int CanBe_PaleMaster = TRUE, int CanBe_ShadowDancer = TRUE, int CanBe_Shifter = TRUE, int CanBe_WeaponMaster = TRUE); // // // The following scripts load up the example subraces created by me (Shayan). // You can use these or add to them or delete them all. // You can find the Creature Hide relating to these subraces in Items -> Custom -> Creature Items -> Skin/Hide // You can also find the Unique Items relating to these subraces in Items -> Plot Items //:: Spell Hooking - Uncomment line 93 to enable it. Remember to have imported //:: sha_spellhooks script. //SetLocalString(GetModule(), "X2_S_UD_SPELLSCRIPT", "sha_spellhooks"); if(!ENABLE_LETO) { //:: These subraces do not use the Leto functions. They work on creature hides/skins //:: for their ability score bonuses, feats, etc. //Pre-made subraces... If you do not want to use them, comment or delete the lines below. //:: Loads the 'normal' subraces... DelayCommand(1.0, ExecuteScript("sha_subraces1", GetModule())); //:: Loads the 'monsterous' subraces... DelayCommand(2.0, ExecuteScript("sha_subraces2", GetModule())); } else { //:: These subraces use the new Leto functions. They get permanent ability score //:: boosts, feats, skills, etc. //Pre-made subraces... If you do not want to use them, comment or delete the lines below. //:: Loads the 'normal' subraces... DelayCommand(1.0, ExecuteScript("sha_leto_sraces1", GetModule())); //:: Loads the 'monsterous' subraces... DelayCommand(2.0, ExecuteScript("sha_leto_sraces2", GetModule())); } //:: This signals that all subraces are loaded onto the module. DelayCommand(3.0, SetLocalInt(oStorer, SUBRACE_INFO_LOADED_ON_MODULE, TRUE)); }