Aschbourne_PRC8/_module/nss/_uoa_tchst_tlk1.nss

73 lines
4.7 KiB
Plaintext
Raw Normal View History

2024-06-14 10:48:20 -04:00
#include "nw_i0_plot"
void main()
{
object oPC = GetPCSpeaker();
object oSelf = OBJECT_SELF;
AssignCommand(oSelf,DelayCommand(1.0,ExecuteScript("_open_chest2",oSelf)));
int iChestLvl = GetLocalInt(oSelf,"iChestLevel");
int iMinPickSkill = 10+(iChestLvl*5);
int iPCSkill = GetSkillRank(SKILL_DISABLE_TRAP,oPC);
int iDCRoll = d20(1)+iPCSkill;
int iMinDCRoll = iMinPickSkill+10;
int iTrapDmg = GetMaxHitPoints(oPC);
iTrapDmg = (iTrapDmg*2)/(11-iChestLvl);
iTrapDmg = iTrapDmg/12;
if (iTrapDmg<1) iTrapDmg=1;
if (GetLocalInt(oSelf,"iAmTrapped")!=0)
{
SendMessageToPC(oPC,"Attempting to remove trap...");
AssignCommand(oPC,ActionPlayAnimation(ANIMATION_LOOPING_GET_LOW,1.0,12.0));
PlaySound("as_na_leafmove1");
DelayCommand(3.0,PlaySound("as_na_leafmove3"));
DelayCommand(4.0,PlaySound("as_na_x2iccrmb4"));
DelayCommand(6.0,PlaySound("as_na_leafmove1"));
DelayCommand(8.0,PlaySound("as_na_x2iccrmb4"));
DelayCommand(9.0,PlaySound("as_na_leafmove2"));
DelayCommand(9.8,PlaySound("as_na_leafmove3"));
DelayCommand(9.9,SendMessageToPC(oPC,"You roll a "+IntToString(iDCRoll)+" vs a minimum DC of "+IntToString(iMinDCRoll)+"."));
if (iDCRoll>=iMinDCRoll)
{
DelayCommand(10.0,SendMessageToPC(oPC,"You have successfully removed the trap!"));
DelayCommand(10.1,GiveXPToCreature(oPC,iChestLvl*10));
DelayCommand(10.2,SetLocalInt(oSelf,"iAmTrapped",0));
}
else
{
DelayCommand(10.0,SendMessageToPC(oPC,"You have failed to remove the trap!"));
if (AutoDC(DC_SUPERIOR,SKILL_DISABLE_TRAP,oPC)==FALSE)
{
DelayCommand(10.1,SendMessageToPC(oPC,"You have triggered the trap!"));
DelayCommand(10.2,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectDamage(iTrapDmg,DAMAGE_TYPE_ACID,DAMAGE_POWER_ENERGY),oPC));
DelayCommand(10.3,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectDamage(iTrapDmg,DAMAGE_TYPE_BLUDGEONING,DAMAGE_POWER_ENERGY),oPC));
DelayCommand(10.4,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectDamage(iTrapDmg,DAMAGE_TYPE_COLD,DAMAGE_POWER_ENERGY),oPC));
DelayCommand(10.5,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectDamage(iTrapDmg,DAMAGE_TYPE_DIVINE,DAMAGE_POWER_ENERGY),oPC));
DelayCommand(10.6,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectDamage(iTrapDmg,DAMAGE_TYPE_ELECTRICAL,DAMAGE_POWER_ENERGY),oPC));
DelayCommand(10.7,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectDamage(iTrapDmg,DAMAGE_TYPE_FIRE,DAMAGE_POWER_ENERGY),oPC));
DelayCommand(10.8,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectDamage(iTrapDmg,DAMAGE_TYPE_MAGICAL,DAMAGE_POWER_ENERGY),oPC));
DelayCommand(10.9,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectDamage(iTrapDmg,DAMAGE_TYPE_NEGATIVE,DAMAGE_POWER_ENERGY),oPC));
DelayCommand(11.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectDamage(iTrapDmg,DAMAGE_TYPE_PIERCING,DAMAGE_POWER_ENERGY),oPC));
DelayCommand(11.1,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectDamage(iTrapDmg,DAMAGE_TYPE_POSITIVE,DAMAGE_POWER_ENERGY),oPC));
DelayCommand(11.2,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectDamage(iTrapDmg,DAMAGE_TYPE_SLASHING,DAMAGE_POWER_ENERGY),oPC));
DelayCommand(11.3,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectDamage(iTrapDmg,DAMAGE_TYPE_SONIC,DAMAGE_POWER_ENERGY),oPC));
switch (Random(7))
{
case 1:{DelayCommand(11.4,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_HIT_ACID,FALSE),oPC));break;}
case 2:{DelayCommand(11.4,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_HIT_DIVINE,FALSE),oPC));break;}
case 3:{DelayCommand(11.4,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_HIT_ELECTRICAL,FALSE),oPC));break;}
case 4:{DelayCommand(11.4,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_HIT_FIRE,FALSE),oPC));break;}
case 5:{DelayCommand(11.4,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_HIT_FROST,FALSE),oPC));break;}
case 6:{DelayCommand(11.4,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_HIT_NEGATIVE,FALSE),oPC));break;}
default:{DelayCommand(11.4,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_HIT_SONIC,FALSE),oPC));break;}
}
DelayCommand(11.5,SetLocalInt(oSelf,"iAmTrapped",0));
}
else
{
DelayCommand(10.1,SendMessageToPC(oPC,"You avoided triggering the trap."));
}
}
}
AssignCommand(oSelf,DelayCommand(13.0,ActionStartConversation(oPC,"_uoa_tchest_tlk",TRUE,FALSE)));
}