Neverwinter Nights
Menú
Gamersmafia es ahora un archivo de solo lectura.

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?

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)

Los más activos en Scripting