Deity information - data entry needed

Scripted ALFA systems & related tech discussions (ACR)

Moderators: ALFA Administrators, Staff - Technical

Ronan
Dungeon Master
Posts: 4611
Joined: Sun Feb 20, 2005 9:48 am

Deity information - data entry needed

Post by Ronan »

We need some data-entry done with deities. Anyone interested in helping is welcome to do so, and you can even paste the code you've added into this thread (that way others will not duplicate your work). The only changes or additions needed are inside the InitializeDeities() function. I think its all pretty self-explanatory. You shouldn't need to know how to script at all, just duplicate whats already there.

_AddDeityToModule() works like this:
_AddDeityToModule(Deity's name, pantheon (one of the PANTHEON_ constants) favored weapon (as a BASE_ITEM_ constant), law-chaos alignment, good-evil alignment, list of powers granted);

The "list of powers granted" is the more tricky part. Basically its taken from the following list:

Code: Select all

_TURN_UNDEAD
_REBUKE_UNDEAD
_LG
_NG
_CG
_LN
_TN
_CN
_LE
_NE
_CE
_DRUID
_PALADIN
_BLACKGUARD
Each of the above constants are included if the deity grants spells to that particular alignment or class. I think its pretty easy to understand if you look at the stuff thats already there in the file. Each constants are seperated by a '|' character, and not a comma.

Note that _AddEnemyToDeity() and _AddAllyToDeity() indicate that the deity considers another as an ally or enemy. It does not mean the other deity returns their feelings. I'm not sure this data will really be necissary, but some people thought it would be. If anyone wants to leave it out for now, thats fine, the important thing is the main deity information and domains. Holy symbols and multiclassing orders aren't on here either yet, thats data I'll enter myself.

I'd do this in the toolset, with the script editor. Cut and paste the script into a file and save it, then begin adding. The list on the right of the toolset contains a list of constants you'll need, and you'll almost certainly encounter deity favored weapons which don't exist as BASE_ITEM_* constants. If thats the case, just ignore the fact that they do not exist, and ignore any errors the compiler gives you over it. If may find missing domains as well, but I think all of them should be in there. If you go to save the script and it gives you a compiler error, you've probably made a typo somewhere. If you can't find where, don't worry about it. I can track those down pretty quickly.

Any questions? The full script is below.

Code: Select all

////////////////////////////////////////////////////////////////////////////////
//
//  System Name : ALFA Core Rules
//     Filename : acr_deity_i
//      Version : 0.1
//         Date : 5/1/06
//       Author : Ronan
//
//  Local Variable Prefix = ACR_DEI
//  To prevent local variable name conflicts, we define the prefix used for
//  all local variables of this system here.
//
//  Description
//  These scripts deal with deities, their alignments and domains, allowing FR's
//  rules on divine spellcasting to be enforced. They also store deity
//  information for every deity in FR. All deity-specific information that may
//  need to be stored in core scripts should go here, as well as FR-specific
//  rules on divine abilities.
//  ADD HOLY SYMBOLS, MULTICLASSING ORDERS
//  Revision History
//  Not completed yet. What is the best way to store deity information?
//  Local vars or many if/elses?
////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////
// Includes ////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////

#include "alfa_include"
#include "acr_debug_i"

////////////////////////////////////////////////////////////////////////////////
// Constants ///////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////

const string _DEI_DEITY_GRANTS_LI_PREFIX = "COR_DEI_DNG_";
const string _DEI_DEITY_ALIGNMENT_GOODEVIL_LI_PREFIX = "COR_DEI_AGE_";
const string _DEI_DEITY_ALIGNMENT_LAWCHAOS_LI_PREFIX = "COR_DEI_ALC_";

// We store as much information as possible in one bit string to cut down on
// local variable calls.

// Deities allow their clerics to turn or rebuke undead. Some off a choice.
const int _TURN_UNDEAD      = BIT_1;
const int _REBUKE_UNDEAD    = BIT_2;

// The alignments of divine casters this deity will support.
const int _LG               = BIT_3;
const int _NG               = BIT_4;
const int _CG               = BIT_5;
const int _LN               = BIT_6;
const int _TN               = BIT_7;
const int _CN               = BIT_8;
const int _LE               = BIT_9;
const int _NE               = BIT_10;
const int _CE               = BIT_11;

// Whether or not the deity will support the druid, paladin and backguard
// classes.
const int _DRUID            = BIT_12;
const int _PALADIN          = BIT_13;
const int _BLACKGUARD       = BIT_14;

// Which PC races the deity will grant spells to. Racial deities only grant
// spells to members of their race, or half-members.
// Not sure if this is a canon rule? Leave it out for now.
/*const int _DWARF            = BIT_15;
const int _ELF              = BIT_16;
const int _HALFELF          = BIT_17;
const int _HALFLING         = BIT_18;
const int _HALFORC          = BIT_19;
const int _HUMAN            = BIT_20;
const int _GNOME            = BIT_21;
const int _ALL_RACES        = _DWARF | _ELF | _HALFELF | _HALFLING | _HALFORC | _HUMAN | _GNOME;*/

const int PANTHEON_DROW         = 1;
const int PANTHEON_DWARF        = 2;
const int PANTHEON_ELF          = 3;
const int PANTHEON_FAERUN       = 4;
const int PANTHEON_GNOME        = 5;
const int PANTHEON_HALFLING     = 6;
const int PANTHEON_MONSTER      = 7;
const int PANTHEON_MULHORANDI   = 8;
const int PANTHEON_ORC          = 9;

// Feat ID placeholders for the domains not included in NWN.
// NOTE: These should be moved to nwscript.nss, with corresponding placeholders
// added to domains.2da !!
//Air
//Animal Domain
const int FEAT_CAVERN_DOMAIN_POWER = 0;
const int FEAT_CHAOS_DOMAIN_POWER = 0;
const int FEAT_CHARM_DOMAIN_POWER = 0;
const int FEAT_CRAFT_DOMAIN_POWER = 0;
const int FEAT_DARKNESS_DOMAIN_POWER = 0;
//Death Domain
//Destruction Domain
const int FEAT_DROW_DOMAIN_POWER = 0;
const int FEAT_DWARF_DOMAIN_POWER = 0;
//Earth Domain
const int FEAT_ELF_DOMAIN_POWER = 0;
//Evil Domain
const int FEAT_FAMILY_DOMAIN_POWER = 0;
const int FEAT_FATE_DOMAIN_POWER = 0;
//Fire Domain
const int FEAT_GNOME_DOMAIN_POWER = 0;
//Good Domain
const int FEAT_HALFLING_DOMAIN_POWER = 0;
const int FEAT_HATRED_DOMAIN_POWER = 0;
//Healing Domain
const int FEAT_ILLUSION_DOMAIN_POWER = 0;
//Knowledge Domain
const int FEAT_LAW_DOMAIN_POWER = 0;
//Luck Domain
//Magic Domain
const int FEAT_MENTALISM_DOMAIN_POWER = 0;
const int FEAT_METAL_DOMAIN_POWER = 0;
const int FEAT_MOON_DOMAIN_POWER = 0;
const int FEAT_NOBILITY_DOMAIN_POWER = 0;
const int FEAT_OCEAN_DOMAIN_POWER = 0;
const int FEAT_ORC_DOMAIN_POWER = 0;
const int FEAT_PLANNING_DOMAIN_POWER = 0;
//Plant Domain
const int FEAT_PORTAL_DOMAIN_POWER = 0;
//Protection Domain
const int FEAT_RENEWAL_DOMAIN_POWER = 0;
const int FEAT_REPOSE_DOMAIN_POWER = 0;
const int FEAT_RETRIBUTION_DOMAIN_POWER = 0;
const int FEAT_RUNE_DOMAIN_POWER = 0;
const int FEAT_SCALYKIND_DOMAIN_POWER = 0;
const int FEAT_SLIME_DOMAIN_POWER = 0;
const int FEAT_SPELL_DOMAIN_POWER = 0;
const int FEAT_SPIDER_DOMAIN_POWER = 0;
const int FEAT_STORM_DOMAIN_POWER = 0;
//Strength Domain
const int FEAT_SUFFERING_DOMAIN_POWER = 0;
//Sun Domain
const int FEAT_TIME_DOMAIN_POWER = 0;
const int FEAT_TRADE_DOMAIN_POWER = 0;
//Travel Domain
//Trickery Domain
const int FEAT_TYRRANY_DOMAIN_POWER = 0;
const int FEAT_UNDEAD_DOMAIN_POWER = 0;
//War Domain
//Water Domain

// Favored weapon placeholders.
const int BASE_ITEM_UNARMEDTSRIKE = 1000;
const int BASE_ITEM_SPIKEDCHAIN = 0;

////////////////////////////////////////////////////////////////////////////////
// Structures //////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////
// Global Variables ////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////

int _deityDebugSystem;
object _deityStorageObject;

////////////////////////////////////////////////////////////////////////////////
// Function Prototypes /////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////

// Returns true if oPC's alignment and deity allows him to use the divine
// special abilities of class nClass, where nClass is one of the CLASS_TYPE_*
// constants.
int GetCanUseDivineClassAbility(object oPC, int nClass);

// Returns true if oPC's alignment is within the allowed clerical alignments for
// his deity.
// If isDruid is 1, the function will only return true if that deity supports
// druidic magic, and oPC falls under one of the allowed druidic alignments,
// _TN, _NG, _NE, CN and _LN.
int GetAlignmentMatchesDeity(object oPC, int isDruid = 0);

// Returns true if oPC's domains are correct for his deity, or if oPC does not
// have a class level of cleric.
// Returns false if oPC's domains are not correct for his deity, or if oPC does
// not have a valid deity.
int GetHasCorrectDomains(object oPC);

// Initializes the system which enforces deity-alignment rules on divine
// classes.
void InitializeDeities();

// Initializes this system on a new PC
void InitializeNewPCDeity(object oPC);

// Adds a new deity to the deity sysem's storage object.
// Not for external use.
// nGoodEvilAlignment and nLawChaosAlignment are the deity's alignment,
// and should be set with the ALIGNMENT_* constants.
// bGrantsToAlignments is a collection of bitwise-flags, each representing an
// aligment that deity grants spells and powers to. Their constants are:
// _LG, _NG, _CG, _LN, _TN, CN, _LE, _NE, _CE, DRUID
// Druid indicates if that deity grants druidic powers.
void _AddDeityToModule(string sDeityName, int nPantheon, int nFavoredWeapon, int nLawChaosAlignment, int nGoodEvilAlignment, int nGrantsSpellsTo);

// Adds a domain to a deity named dName. The domain is represented by its feat
// id, nFeat.
// Not for external use.
void _AddDomainToDeity(string sDeityName, int nFeat);

// Adds the deity named sAllyName as an ally of deity sDeityName.
void _AddAllyToDeity(string sDeityName, string sAllyName);

// Adds the deity named sEnemyName as an enemy of deity sDeityName.
void _AddEnemyToDeity(string sDeityName, string sEnemyName);

////////////////////////////////////////////////////////////////////////////////
// Function Definitions ////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////

int GetCanUseDivineClassAbility(object oPC, int nClass) {
    // This function may be called each time a divine caster rests, so it does
    // not have to be terribly fast.
    // This function should be changed with the new classes available in NWN2.
    int bDeityAllows = GetLocalInt(_deityStorageObject, _DEI_DEITY_GRANTS_LI_PREFIX + GetDeity(oPC));

    if((nClass == CLASS_TYPE_DRUID || nClass == CLASS_TYPE_RANGER) && !(_DRUID & bDeityAllows)) {
        return 0;
    } else if(nClass == CLASS_TYPE_PALADIN && !(_PALADIN & bDeityAllows)) {
        // Some deities are exceptions to the rules that only LG-supporting
        // deities can grant paladin spells.
        return 1;
    } else if(nClass == CLASS_TYPE_BLACKGUARD && !(_BLACKGUARD & bDeityAllows)) {
        return 0;
    }

    int nGoodEvil = GetAlignmentGoodEvil(oPC);
    int nLawChaos = GetAlignmentLawChaos(oPC);

    if(nLawChaos == ALIGNMENT_LAWFUL) {
        // Lawfull alignments.
        if(nGoodEvil == ALIGNMENT_GOOD) {
            return bDeityAllows & _LG;
        } else if(nGoodEvil == ALIGNMENT_NEUTRAL) {
            return bDeityAllows & _LN;
        } else if(nGoodEvil = ALIGNMENT_EVIL) {
            return bDeityAllows & _LE;
        }
    } else if(nLawChaos == ALIGNMENT_NEUTRAL) {
        // Neutral aligments.
        if(nGoodEvil == ALIGNMENT_GOOD) {
            return bDeityAllows & _NG;
        } else if(nGoodEvil == ALIGNMENT_NEUTRAL) {
            return bDeityAllows & _TN;
        } else if(nGoodEvil == ALIGNMENT_EVIL) {
            return bDeityAllows & _NE;
        }
    } else if(nLawChaos == ALIGNMENT_CHAOTIC) {
        // Chaotic alignments.
        if(nGoodEvil == ALIGNMENT_GOOD) {
            return bDeityAllows & _CG;
        } else if(nGoodEvil == ALIGNMENT_NEUTRAL) {
            return bDeityAllows & _CN;
        } else if(nGoodEvil == ALIGNMENT_EVIL) {
            return bDeityAllows & _CE;
        }
    }
    return 0;
}

void _AddDeityToModule(string sDeityName, int nPantheon, int nFavoredWeapon, int nLawChaosAlignment, int nGoodEvilAlignment, int nGrantsSpellsTo) {
    // FIX!
}

void _AddDomainToDeity(string sDeityName, int nFeat) {
    // FIX!
}

void _AddAllyToDeity(string sDeityName, string sAllyName) {
}

void _AddEnemyToDeity(string sDeityName, string sEnemyName) {
}

void InitializeDeities() {
    _deityDebugSystem = CreateDebugSystem("Deity: ", DEBUG_TARGET_NONE, DEBUG_TARGET_LOG, DEBUG_TARGET_LOG);

    _AddDeityToModule("Azuth", PANTHEON_FAERUN, BASE_ITEM_QUARTERSTAFF, ALIGNMENT_LAWFUL, ALIGNMENT_NEUTRAL, _TURN_UNDEAD | _REBUKE_UNDEAD | _LG | _LN | _LE | _PALADIN);
    _AddDomainToDeity("Azuth", FEAT_ILLUSION_DOMAIN_POWER);
    _AddDomainToDeity("Azuth", FEAT_KNOWLEDGE_DOMAIN_POWER);
    _AddDomainToDeity("Azuth", FEAT_MAGIC_DOMAIN_POWER);
    _AddDomainToDeity("Azuth", FEAT_LAW_DOMAIN_POWER);
    _AddDomainToDeity("Azuth", FEAT_SPELL_DOMAIN_POWER);
    _AddAllyToDeity("Azuth", "Mystra");
    _AddAllyToDeity("Azuth", "Savras");
    _AddAllyToDeity("Azuth", "Velsharoon");

    _AddDeityToModule("Bane", PANTHEON_FAERUN, BASE_ITEM_MORNINGSTAR, ALIGNMENT_LAWFUL, ALIGNMENT_EVIL, _REBUKE_UNDEAD | _LE | _NE | _LN | _BLACKGUARD);
    _AddDomainToDeity("Bane", FEAT_HATRED_DOMAIN_POWER);
    _AddDomainToDeity("Bane", FEAT_TYRRANY_DOMAIN_POWER);
    _AddDomainToDeity("Bane", FEAT_EVIL_DOMAIN_POWER);
    _AddDomainToDeity("Bane", FEAT_DESTRUCTION_DOMAIN_POWER);
    _AddDomainToDeity("Bane", FEAT_LAW_DOMAIN_POWER);
    _AddEnemyToDeity("Bane,", "Torm");
    _AddEnemyToDeity("Bane,", "Cyric");
    _AddEnemyToDeity("Bane,", "Mystra");
    _AddEnemyToDeity("Bane,", "Tempus");
    _AddEnemyToDeity("Bane,", "Helm");
    _AddEnemyToDeity("Bane,", "Lathander");
    _AddEnemyToDeity("Bane,", "Oghma");
    _AddEnemyToDeity("Bane,", "Ilmater");

    _AddDeityToModule("Chauntea", PANTHEON_FAERUN, BASE_ITEM_SCYTHE, ALIGNMENT_NEUTRAL, ALIGNMENT_GOOD, _TURN_UNDEAD | _LG | _NG | _CG | _TN | _DRUID | _PALADIN);
    _AddDomainToDeity("Chauntea", FEAT_ANIMAL_DOMAIN_POWER);
    _AddDomainToDeity("Chauntea", FEAT_GOOD_DOMAIN_POWER);
    _AddDomainToDeity("Chauntea", FEAT_EARTH_DOMAIN_POWER);
    _AddDomainToDeity("Chauntea", FEAT_PLANT_DOMAIN_POWER);
    _AddDomainToDeity("Chauntea", FEAT_PROTECTION_DOMAIN_POWER);
    _AddDomainToDeity("Chauntea", FEAT_RENEWAL_DOMAIN_POWER);
    _AddAllyToDeity("Chauntea", "Shiallia");
    _AddAllyToDeity("Chauntea", "Mielikki");
    _AddAllyToDeity("Chauntea", "Lurue");
    _AddAllyToDeity("Chauntea", "Eldath");
    _AddAllyToDeity("Chauntea", "Lathander");
    _AddEnemyToDeity("Chauntea","Auril");
    _AddEnemyToDeity("Chauntea","Malar");
    _AddEnemyToDeity("Chauntea","Talos");
    _AddEnemyToDeity("Chauntea","Umberlee");

    _AddDeityToModule("Cyric", PANTHEON_FAERUN, BASE_ITEM_LONGSWORD, ALIGNMENT_CHAOTIC, ALIGNMENT_EVIL, _REBUKE_UNDEAD | _CN | _NE | _CE | _BLACKGUARD);
    _AddDomainToDeity("Cyric", FEAT_CHAOS_DOMAIN_POWER);
    _AddDomainToDeity("Cyric", FEAT_DESTRUCTION_DOMAIN_POWER);
    _AddDomainToDeity("Cyric", FEAT_EVIL_DOMAIN_POWER);
    _AddDomainToDeity("Cyric", FEAT_TRICKERY_DOMAIN_POWER);
    _AddDomainToDeity("Cyric", FEAT_ILLUSION_DOMAIN_POWER);
    _AddEnemyToDeity("Cyric", "Mystra");
    _AddEnemyToDeity("Cyric", "Kelemvor");
    _AddEnemyToDeity("Cyric", "Bane");

    _AddDeityToModule("Eilistraee", PANTHEON_FAERUN, BASE_ITEM_BASTARDSWORD, ALIGNMENT_CHAOTIC, ALIGNMENT_GOOD, _TURN_UNDEAD | _CG | _CN | _NG);
    _AddDomainToDeity("Eilistraee", FEAT_CHAOS_DOMAIN_POWER);
    _AddDomainToDeity("Eilistraee", FEAT_GOOD_DOMAIN_POWER);
    _AddDomainToDeity("Eilistraee", FEAT_ELF_DOMAIN_POWER);
    _AddDomainToDeity("Eilistraee", FEAT_PORTAL_DOMAIN_POWER);
    _AddDomainToDeity("Eilistraee", FEAT_MOON_DOMAIN_POWER);
    _AddDomainToDeity("Eilistraee", FEAT_DROW_DOMAIN_POWER);
    _AddDomainToDeity("Eilistraee", FEAT_CHARM_DOMAIN_POWER);
    _AddAllyToDeity("Eilistraee","Aerdrie Faenya");
    _AddAllyToDeity("Eilistraee","Angharradh");
    _AddAllyToDeity("Eilistraee","Corellon Larethian");
    _AddAllyToDeity("Eilistraee","Deep Sashelas");
    _AddAllyToDeity("Eilistraee","Erevan Ilesere");
    _AddAllyToDeity("Eilistraee","Fenmarel Mestarine");
    _AddAllyToDeity("Eilistraee","Hanali Celanil");
    _AddAllyToDeity("Eilistraee","Labelas Enoreth");
    _AddAllyToDeity("Eilistraee","Rillifane Rallathil");
    _AddAllyToDeity("Eilistraee","Sehanine Moonbow");
    _AddAllyToDeity("Eilistraee","Solonor Thelandira");
    _AddAllyToDeity("Eilistraee","Mystra");
    _AddAllyToDeity("Eilistraee","Selune");
    _AddAllyToDeity("Eilistraee","Solonor Thelandira");
    _AddAllyToDeity("Eilistraee","Callarduran Smoothhands");
    _AddEnemyToDeity("Eilistraee", "Lolth");
    _AddEnemyToDeity("Eilistraee", "Ghaunadaur");
    _AddEnemyToDeity("Eilistraee", "Kiaransalee");
    _AddEnemyToDeity("Eilistraee", "Selvetarm");
    _AddEnemyToDeity("Eilistraee", "Vhaeraun");

    _AddDeityToModule("Gond", PANTHEON_FAERUN, BASE_ITEM_WARHAMMER, ALIGNMENT_NEUTRAL, ALIGNMENT_NEUTRAL, _TURN_UNDEAD | _REBUKE_UNDEAD | _LG | _NG | _CG | _LN | _TN | _CN | _LE | _NE | _CE | _PALADIN);
    _AddDomainToDeity("Gond", FEAT_FIRE_DOMAIN_POWER);
    _AddDomainToDeity("Gond", FEAT_PLANNING_DOMAIN_POWER);
    _AddDomainToDeity("Gond", FEAT_CRAFT_DOMAIN_POWER);
    _AddDomainToDeity("Gond", FEAT_KNOWLEDGE_DOMAIN_POWER);
    _AddDomainToDeity("Gond", FEAT_METAL_DOMAIN_POWER);
    _AddDomainToDeity("Gond", FEAT_EARTH_DOMAIN_POWER);
    _AddAllyToDeity("Gond", "Oghma");
    _AddAllyToDeity("Gond", "Lathander");
    _AddAllyToDeity("Gond", "Waukeen");
    _AddAllyToDeity("Gond", "Tempus");
    _AddEnemyToDeity("Gond", "Talos");

    _AddDeityToModule("Helm", PANTHEON_FAERUN, BASE_ITEM_BASTARDSWORD, ALIGNMENT_LAWFUL, ALIGNMENT_NEUTRAL, _TURN_UNDEAD | _REBUKE_UNDEAD | _LG | _LN | _LE | _PALADIN);
    _AddDomainToDeity("Helm", FEAT_LAW_DOMAIN_POWER);
    _AddDomainToDeity("Helm", FEAT_PROTECTION_DOMAIN_POWER);
    _AddDomainToDeity("Helm", FEAT_STRENGTH_DOMAIN_POWER);
    _AddDomainToDeity("Helm", FEAT_PLANNING_DOMAIN_POWER);
    _AddAllyToDeity("Helm", "Torm");
    _AddEnemyToDeity("Helm", "Bane");
    _AddEnemyToDeity("Helm", "Cyric");
    _AddEnemyToDeity("Helm", "Shar");
    _AddEnemyToDeity("Helm", "Garagos");
    _AddEnemyToDeity("Helm", "Talos");
    _AddEnemyToDeity("Helm", "Mask");

    _AddDeityToModule("Ilmater", PANTHEON_FAERUN, BASE_ITEM_UNARMEDTSRIKE, ALIGNMENT_LAWFUL, ALIGNMENT_GOOD, _TURN_UNDEAD | _LG | _LN | _NG | _PALADIN);
    _AddDomainToDeity("Ilmater", FEAT_GOOD_DOMAIN_POWER);
    _AddDomainToDeity("Ilmater", FEAT_LAW_DOMAIN_POWER);
    _AddDomainToDeity("Ilmater", FEAT_STRENGTH_DOMAIN_POWER);
    _AddDomainToDeity("Ilmater", FEAT_SUFFERING_DOMAIN_POWER);
    _AddDomainToDeity("Ilmater", FEAT_HEALING_DOMAIN_POWER);
    _AddAllyToDeity("Ilmater", "Tyr");
    _AddAllyToDeity("Ilmater", "Torm");
    _AddAllyToDeity("Ilmater", "Lathander");
    _AddEnemyToDeity("Ilmater", "Loviatar");
    _AddEnemyToDeity("Ilmater", "Talona");
    _AddEnemyToDeity("Ilmater", "Bane");
    _AddEnemyToDeity("Ilmater", "Garagos");
    _AddEnemyToDeity("Ilmater", "Malar");
    _AddEnemyToDeity("Ilmater", "Shar");
    _AddEnemyToDeity("Ilmater", "Talos");

    _AddDeityToModule("Kelemvor", PANTHEON_FAERUN, BASE_ITEM_BASTARDSWORD, ALIGNMENT_LAWFUL, ALIGNMENT_NEUTRAL, _TURN_UNDEAD | _LG | _LN | _LE | _PALADIN);
    _AddDomainToDeity("Kelemvor", FEAT_FATE_DOMAIN_POWER);
    _AddDomainToDeity("Kelemvor", FEAT_LAW_DOMAIN_POWER);
    _AddDomainToDeity("Kelemvor", FEAT_PROTECTION_DOMAIN_POWER);
    _AddDomainToDeity("Kelemvor", FEAT_FATE_DOMAIN_POWER);
    _AddDomainToDeity("Kelemvor", FEAT_REPOSE_DOMAIN_POWER);
    _AddAllyToDeity("Kelemvor", "Mystra");
    _AddAllyToDeity("Kelemvor", "Jergal");
    _AddEnemyToDeity("Kelemvor", "Cyric");
    _AddEnemyToDeity("Kelemvor", "Velsharoon");
    _AddEnemyToDeity("Kelemvor", "Talona");
    _AddEnemyToDeity("Kelemvor", "Cyric");

    _AddDeityToModule("Kossuth", PANTHEON_FAERUN, BASE_ITEM_SPIKEDCHAIN, ALIGNMENT_NEUTRAL, ALIGNMENT_NEUTRAL, _TURN_UNDEAD | _REBUKE_UNDEAD | _CN | _LE | _LG | _LN | _TN | _NE | _NG);
    _AddDomainToDeity("Kossuth", FEAT_DESTRUCTION_DOMAIN_POWER);
    _AddDomainToDeity("Kossuth", FEAT_FIRE_DOMAIN_POWER);
    _AddDomainToDeity("Kossuth", FEAT_RENEWAL_DOMAIN_POWER);
    _AddDomainToDeity("Kossuth", FEAT_SUFFERING_DOMAIN_POWER);
    _AddEnemyToDeity("Kossuth", "Istishia");
}

void main() {
}
Last edited by Ronan on Wed May 24, 2006 1:58 am, edited 3 times in total.
User avatar
dergon darkhelm
Fionn In Disguise
Posts: 4258
Joined: Fri Jul 08, 2005 1:21 pm
Location: Cleveland, Ohio, United States

Post by dergon darkhelm »

I can think of one more. I will mention it then say I don't want as part of the alignment based clerical scripts.


Spontaneous Healing vs Spontanteous Inflicitng.

I say let all PC clerics spontanteously heal.
PCs: NWN1: Trailyn "Wayfarer" Krast, Nashkel hayseed

NWN2: ??

gsid: merado_1
Ronan
Dungeon Master
Posts: 4611
Joined: Sun Feb 20, 2005 9:48 am

Post by Ronan »

Oops, thats inclusive with turning or rebuking undead. Forgot to mention that... But sorry, I've no plans to let all clerics spontaneously heal. Its just too powerful of an ability, and not something that makes a whole lot of sense for some (a cleric of shar, for example). Perhaps inflict spells are deserving of a buff from PnP, but I'd rather discuss that somewhere else.
Mikayla
Valsharess of ALFA
Posts: 3707
Joined: Sat Jan 03, 2004 5:37 pm
Location: Qu'ellar Faen Tlabbar, Noble Room 7, Menzoberranzan, NorthUnderdark

Post by Mikayla »

I don't suppose we could add the "spider" domain and thus add the power of "rebuking" spiders?
ALFA1-NWN1: Sheyreiza Valakahsa
NWN2: Layla (aka Aliyah, Amira, Snake and others) and Vellya
NWN1-WD: Shein'n Valakasha
Ronan
Dungeon Master
Posts: 4611
Joined: Sun Feb 20, 2005 9:48 am

Post by Ronan »

Currently I'm hoping to add all domain information, in hopes some or all will eventually be implemented.
User avatar
AlmightyTDawg
Githyanki
Posts: 1349
Joined: Sun Sep 26, 2004 12:56 am

Post by AlmightyTDawg »

I'll take this one up. What's the due date?
Turquoise bicycle shoe fins actualize radishes greenly!
Save the Charisma - Alter your reactions, even just a little, to at least one CHA-based check a day!

Quasi-retired due to law school
Past PC: Myrilis Te'fer
Ronan
Dungeon Master
Posts: 4611
Joined: Sun Feb 20, 2005 9:48 am

Post by Ronan »

As a note after OE's announcement of their deities, we still need this stuff. OE's system forces the correct deity to be selected for your classes/alignments. The whole point of this system is what can happen if you don't have the correct alignment/deity. OE's system also doesn't have any domain or favored weapon information, which is rather critical.

What IS nice about OE's system is that it lets us show people making new PCs FR's deities, with proper descriptions of each. And they can't misspell them in the deity field.
User avatar
ç i p h é r
Retired
Posts: 2904
Joined: Fri Oct 21, 2005 4:12 pm
Location: US Central (GMT - 6)

Post by ç i p h é r »

Good stuff Ronan. Out of curiousity, why not simply define the information as a const struct? Do you expect this deity info to change in real time?
Ronan
Dungeon Master
Posts: 4611
Joined: Sun Feb 20, 2005 9:48 am

Post by Ronan »

ç i p h é r wrote:Good stuff Ronan. Out of curiousity, why not simply define the information as a const struct? Do you expect this deity info to change in real time?
I started doing it this way mostly because retrieving those local variables should be significantly quicker than a large switch/case filled with constants. It also saves a loop through a deities's domains, as whether or not a deity has a certain domain can be retreived with a single GetLocal.

At first I thought we'd be checking this stuff once per spell cast, so it made more sense to do it the faster way. At the time I didn't think to set a flag OnRest, and just read that.

The cost is I think about a ~22k memory footprint. I can write a script to dump the locals out in a nice big cut/pastable switch/case in the logs, I suppose.
Ronan
Dungeon Master
Posts: 4611
Joined: Sun Feb 20, 2005 9:48 am

Post by Ronan »

Bump.

If anyone is burned out on this, go ahead and post what you've got, and we can probably get someone else to finish it off.
User avatar
Cassiel
Wyvern
Posts: 884
Joined: Sat Jan 03, 2004 2:08 pm
Location: London UK
Contact:

Post by Cassiel »

I will try to help out with this stuff on / after the 10th when my exams are out the way...
:: http://www.torilite.net ::

Time is not your enemy, forever is.
--Fall-From-Grace
User avatar
Cassiel
Wyvern
Posts: 884
Joined: Sat Jan 03, 2004 2:08 pm
Location: London UK
Contact:

Re: Deity information - data entry needed

Post by Cassiel »

I think I see what's needed here. What source should we be using for the info - Faiths 'n' Pantheons, or the Standards' team's lists of domain powers and so on...?
:: http://www.torilite.net ::

Time is not your enemy, forever is.
--Fall-From-Grace
User avatar
indio
Ancient Red Dragon
Posts: 2810
Joined: Sat Jan 03, 2004 10:40 am

Post by indio »

Faith and Pantheons.

Now I've tried to OCR my PDF of F&P, without success. Some other PDFs bend more easily to OCR's will. So the real trick is going to be data entry without it taking some years of effort.

I like readily accessible information, but unless someone can OCR one of the biggest WotC texts, this is a gargantuan task.
Image
User avatar
Cassiel
Wyvern
Posts: 884
Joined: Sat Jan 03, 2004 2:08 pm
Location: London UK
Contact:

Re: Deity information - data entry needed

Post by Cassiel »

So I'd need to do something like:

Code: Select all

    _AddDeityToModule("Lathander", PANTHEON_FAERUN, BASE_ITEM_LIGHTMACE, ALIGNMENT_NEUTRAL, ALIGNMENT_GOOD, _TURN_UNDEAD | _CG | _NG | _LG |);
    _AddDomainToDeity("Lathander", FEAT_DESTRUCTION_DOMAIN_POWER);
    _AddDomainToDeity("Lathander", FEAT_GOOD_DOMAIN_POWER);
    _AddDomainToDeity("Lathander", FEAT_NOBILITY_DOMAIN_POWER);
    _AddDomainToDeity("Lathander", FEAT_PROTECTION_DOMAIN_POWER);
    _AddDomainToDeity("Lathander", FEAT_RENEWAL_DOMAIN_POWER);
    _AddDomainToDeity("Lathander", FEAT_STRENGTH_DOMAIN_POWER);
    _AddDomainToDeity("Lathander", FEAT_SUN_DOMAIN_POWER);
    _AddAllyToDeity("Lathander","Eldath");
    _AddAllyToDeity("Lathander","Lliira");
    _AddAllyToDeity("Lathander","Lurue");
    _AddAllyToDeity("Lathander","Siamorphe");
    _AddAllyToDeity("Lathander","Oghma");
    _AddAllyToDeity("Lathander","Milil");
    _AddAllyToDeity("Lathander","Gond");
    _AddAllyToDeity("Lathander","Kelemvor");
    _AddAllyToDeity("Lathander","Chauntea");
    _AddEnemyToDeity("Lathander", "Bane");
    _AddEnemyToDeity("Lathander", "Cyric");
    _AddEnemyToDeity("Lathander", "Loviatar");
    _AddEnemyToDeity("Lathander", "Talos");
    _AddEnemyToDeity("Lathander", "Shar");
}

void main() {
}
So questions:
(1) When the deity has domains which aren't in the list, should I add 'em regardless...?
(2) Can we correct the spelling of "tyranny" in the list to avoid confusion?
(3) Lathander, who I've done above, has options for light and heavy maces - presumably it's safe to omit the one that doesn't have a NWN base item type?
(4), and most importantly: does that example one look okay?
:: http://www.torilite.net ::

Time is not your enemy, forever is.
--Fall-From-Grace
User avatar
ç i p h é r
Retired
Posts: 2904
Joined: Fri Oct 21, 2005 4:12 pm
Location: US Central (GMT - 6)

Post by ç i p h é r »

While we may not be able to OCR the sourcebook, there might be some FR fan sites that have the relevant deity info already written out. Google it and see what's there if it helps.
Locked