Sistema de Dioses
Había pensado en hacer lo siguiente. Al avanzar bastante en mi MOD (Guardia Real, se llama) entrarás en un Templo llamado “Templo de las Ilusiones” , donde un Bardo te habla sobre la posibilidad de adorar a un dios bueno. Si seguimos hablando con él, nos llevará a la zona espiritual, donde veremos las características del dios que queramos, y poder elegir ser su acólito. Si ignoramos al bardo y seguimos adelante, podemos fijarnos que hay una cripta. Allí , un viejo nigromante nos habla de los dioses malignos, y también te puede llevar a la zona espiritual de estos. Bien , la idea es esta… [quote:351896876b] Al elegir un dios se declara una variable local (cada dios tiene un número) y se cierra el templo (por lo que no puedes volver a cambiar de dios) . Algunos fanáticos te hablarán o confiarán secretos, dependiendo sólo del dios que adores. Así, con variable, sería mucho más fácil. Después… Habrá templos para cada dios, y sólo puedes entrar en el del tuyo. Al entrar, puedes arrodillarte ante tu dios, y así recuperar vida, y a veces , ganar EXP o oro. También, si haces donaciones al templo, puede que tengas más suerte, etc… [b:351896876b]DIOSES MALIGNOS (La excepción)[/b:351896876b] Los dioses malignos no tienen templos, si no rituales. Si te unes a un ritual de los fanáticos y traes contigo objetos de animales o personas muertas (cabezas de goblin, animales vivos, etc.) puedes sacrificarlos y ganar EXP o oro . [/quote:351896876b] Esta sería la idea… Creo que puedo hacerla… que os parece? 
Neverwinter Nights
Oye tu idea es la ostia, pese a parecer un sucio gorrón me gustaría que me pasases la forma esta que haces, mi idea es poner solo un dios pero no se mucho de scrip.
Gracias y oyes no te preocupes dire que el scrip es tuyo .
[b:6d2c6aefe9]
int ClassLevels(object oPlayer);
int SameAlignment(object oPlayer);
int GetDeityPower()
{
string sPower = GetStringLeft(GetStringRight(GetTag(OBJECT_SELF), 3), 1);
if (sPower == “G”){return 3;}
else if (sPower == “L”){return 2;}
else if (sPower == “D”){return 1;}
else {return 1;}
}
int ClassLevels(object oPlayer)
{
//Returns the number of cleric and/or paladin levels
int iLvl = 0;
if (GetLevelByClass(CLASS_TYPE_CLERIC, oPlayer)>0){iLvl = iLvl + GetLevelByClass(CLASS_TYPE_CLERIC, oPlayer);}
if (GetLevelByClass(CLASS_TYPE_PALADIN, oPlayer)>0){iLvl = iLvl + GetLevelByClass(CLASS_TYPE_PALADIN, oPlayer);}
if (iLvl == 0){iLvl++;}
return iLvl;
}
int SameAlignment(object oPlayer)
{
//returns 0, 1 or 2 based on player AL in relation to altar AL
int iSame = 0;
int iAltarALL = 0;
int iAltarALG = 0;
string sAltarAL = GetStringRight(GetTag(OBJECT_SELF),2);
if (sAltarAL == “LG”){iAltarALL = ALIGNMENT_LAWFUL; iAltarALG = ALIGNMENT_GOOD;}
if (sAltarAL == “NG”){iAltarALL = ALIGNMENT_NEUTRAL; iAltarALG = ALIGNMENT_GOOD;}
if (sAltarAL == “CG”){iAltarALL = ALIGNMENT_CHAOTIC; iAltarALG = ALIGNMENT_GOOD;}
if (sAltarAL == “LN”){iAltarALL = ALIGNMENT_LAWFUL; iAltarALG = ALIGNMENT_NEUTRAL;}
if (sAltarAL == “NN”){iAltarALL = ALIGNMENT_NEUTRAL; iAltarALG = ALIGNMENT_NEUTRAL;}
if (sAltarAL == “CN”){iAltarALL = ALIGNMENT_CHAOTIC; iAltarALG = ALIGNMENT_NEUTRAL;}
if (sAltarAL == “LE”){iAltarALL = ALIGNMENT_LAWFUL; iAltarALG = ALIGNMENT_EVIL;}
if (sAltarAL == “NE”){iAltarALL = ALIGNMENT_NEUTRAL; iAltarALG = ALIGNMENT_EVIL;}
if (sAltarAL == “CE”){iAltarALL = ALIGNMENT_CHAOTIC; iAltarALG = ALIGNMENT_EVIL;}
if (GetAlignmentLawChaos(oPlayer) == iAltarALL){iSame++;}
if (GetAlignmentGoodEvil(oPlayer) == iAltarALG){iSame++;}
return iSame;
}
void GoodEffect(object oPlayer, int iPower)
{
//Effects for good and neutral altars
effect eVis = EffectVisualEffect(VFX_IMP_HEALING_X);
effect eBonAttack = EffectAttackIncrease(iPower);
effect eBonSave = EffectSavingThrowIncrease(SAVING_THROW_ALL, iPower);
effect eBonDam = EffectDamageIncrease(iPower, DAMAGE_TYPE_DIVINE);
effect eBonSkill = EffectSkillIncrease(SKILL_ALL_SKILLS, iPower);
effect ePosDur = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE);
effect ePrayer =EffectLinkEffects(eBonAttack, eBonSave);
ePrayer = EffectLinkEffects(ePrayer, eBonDam);
ePrayer = EffectLinkEffects(ePrayer, eBonSkill);
ePrayer = EffectLinkEffects(ePrayer, ePosDur);
effect ePosVis = EffectVisualEffect(VFX_IMP_HOLY_AID);
ApplyEffectToObject(DURATION_TYPE_INSTANT, eVis, oPlayer);
ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectHeal(GetMaxHitPoints(oPlayer)), oPlayer);
object oTarget = GetFirstObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(OBJECT_SELF));
while(GetIsObjectValid(oTarget))
{
if (GetIsFriend(oTarget, oPlayer))
{
ApplyEffectToObject(DURATION_TYPE_INSTANT, ePosVis, oTarget);
ApplyEffectToObject(DURATION_TYPE_TEMPORARY, ePrayer, oTarget,HoursToSeconds(iPower+1));
}
oTarget = GetNextObjectInShape(SHAPE_SPHERE, RADIUS_SIZE_COLOSSAL, GetLocation(OBJECT_SELF));
}
}
void EvilEffect(object oPlayer, int iPower)
{
//Effects for evil altars
int iPower = GetDeityPower();
effect eVis = EffectVisualEffect(VFX_IMP_HARM);
effect eBonAttack = EffectAttackIncrease(iPower);
effect eBonSave = EffectSavingThrowIncrease(SAVING_THROW_ALL, iPower);
effect eBonDam = EffectDamageIncrease(iPower, DAMAGE_TYPE_NEGATIVE);
effect eBonSkill = EffectSkillIncrease(SKILL_ALL_SKILLS, iPower);
effect ePosDur = EffectVisualEffect(VFX_DUR_CESSATE_POSITIVE)