Added CCOH and missing areas Changed some areas to be craftable, Fixed some on death issues, Fixed the Gaurd
84 lines
5.2 KiB
Plaintext
84 lines
5.2 KiB
Plaintext
#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)));
|
|
}
|