73 lines
4.7 KiB
Plaintext
73 lines
4.7 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_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)));
|
||
|
}
|