#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_OPEN_LOCK,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; AssignCommand(oPC,ActionPlayAnimation(ANIMATION_LOOPING_GET_MID,1.0,12.0)); PlaySound("as_hr_x2chnratl1"); DelayCommand(1.0,PlaySound("as_hr_x2chnratl2")); DelayCommand(2.0,PlaySound("as_hr_x2chnratl3")); DelayCommand(3.0,PlaySound("as_hr_x2chnratl1")); DelayCommand(4.0,PlaySound("as_hr_x2chnratl2")); DelayCommand(5.0,PlaySound("as_hr_x2chnratl4")); DelayCommand(6.0,PlaySound("as_hr_x2chnratl1")); DelayCommand(7.0,PlaySound("as_hr_x2chnratl3")); DelayCommand(8.0,PlaySound("as_hr_x2chnratl4")); DelayCommand(9.0,PlaySound("as_hr_x2chnratl2")); DelayCommand(10.0,PlaySound("as_hr_x2chnratl5")); if (GetLocalInt(oSelf,"iAmTrapped")!=0) { DelayCommand(0.1,SendMessageToPC(oPC,"Attempting to pick the lock...")); DelayCommand(10.1,SendMessageToPC(oPC,"This chest was trapped!")); if (AutoDC(DC_SUPERIOR,SKILL_OPEN_LOCK,oPC)==FALSE) { DelayCommand(10.2,SendMessageToPC(oPC,"You have triggered the trap!")); DelayCommand(10.3,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectDamage(iTrapDmg,DAMAGE_TYPE_ACID,DAMAGE_POWER_ENERGY),oPC)); DelayCommand(10.4,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectDamage(iTrapDmg,DAMAGE_TYPE_BLUDGEONING,DAMAGE_POWER_ENERGY),oPC)); DelayCommand(10.5,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectDamage(iTrapDmg,DAMAGE_TYPE_COLD,DAMAGE_POWER_ENERGY),oPC)); DelayCommand(10.6,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectDamage(iTrapDmg,DAMAGE_TYPE_DIVINE,DAMAGE_POWER_ENERGY),oPC)); DelayCommand(10.7,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectDamage(iTrapDmg,DAMAGE_TYPE_ELECTRICAL,DAMAGE_POWER_ENERGY),oPC)); DelayCommand(10.8,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectDamage(iTrapDmg,DAMAGE_TYPE_FIRE,DAMAGE_POWER_ENERGY),oPC)); DelayCommand(10.9,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectDamage(iTrapDmg,DAMAGE_TYPE_MAGICAL,DAMAGE_POWER_ENERGY),oPC)); DelayCommand(11.0,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectDamage(iTrapDmg,DAMAGE_TYPE_NEGATIVE,DAMAGE_POWER_ENERGY),oPC)); DelayCommand(11.1,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectDamage(iTrapDmg,DAMAGE_TYPE_PIERCING,DAMAGE_POWER_ENERGY),oPC)); DelayCommand(11.2,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectDamage(iTrapDmg,DAMAGE_TYPE_POSITIVE,DAMAGE_POWER_ENERGY),oPC)); DelayCommand(11.3,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectDamage(iTrapDmg,DAMAGE_TYPE_SLASHING,DAMAGE_POWER_ENERGY),oPC)); DelayCommand(11.4,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectDamage(iTrapDmg,DAMAGE_TYPE_SONIC,DAMAGE_POWER_ENERGY),oPC)); switch (Random(7)) { case 1:{DelayCommand(11.5,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_HIT_ACID,FALSE),oPC));break;} case 2:{DelayCommand(11.5,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_HIT_DIVINE,FALSE),oPC));break;} case 3:{DelayCommand(11.5,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_HIT_ELECTRICAL,FALSE),oPC));break;} case 4:{DelayCommand(11.5,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_HIT_FIRE,FALSE),oPC));break;} case 5:{DelayCommand(11.5,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_HIT_FROST,FALSE),oPC));break;} case 6:{DelayCommand(11.5,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_HIT_NEGATIVE,FALSE),oPC));break;} default:{DelayCommand(11.5,ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_COM_HIT_SONIC,FALSE),oPC));break;} } DelayCommand(11.6,SetLocalInt(oSelf,"iAmTrapped",0)); AssignCommand(oSelf,DelayCommand(13.0,ActionStartConversation(oPC,"_uoa_tchest_tlk",TRUE,FALSE))); } else { DelayCommand(10.2,SendMessageToPC(oPC,"You avoided triggering the trap.")); AssignCommand(oSelf,DelayCommand(13.0,ActionStartConversation(oPC,"_uoa_tchest_tlk",TRUE,FALSE))); } } DelayCommand(0.1,SendMessageToPC(oPC,"Attempting to pick the lock...")); DelayCommand(10.0,SendMessageToPC(oPC,"You rolled "+IntToString(iDCRoll)+" vs. a DC of "+IntToString(iMinDCRoll)+".")); if (iDCRoll>=iMinDCRoll) { DelayCommand(10.1,SendMessageToPC(oPC,"You have successfully picked the lock!")); DelayCommand(10.2,SetLocalInt(oSelf,"iAmLocked",0)); DelayCommand(10.3,GiveXPToCreature(oPC,iChestLvl*10)); DelayCommand(11.0,PlaySound("as_na_branchsnp1")); } else { DelayCommand(10.1,SendMessageToPC(oPC,"You have failed to pick the lock!")); } AssignCommand(oSelf,DelayCommand(13.0,ActionStartConversation(oPC,"_uoa_tchest_tlk",TRUE,FALSE))); }