Battledale_PRC8/_module/nss/jw_machone_distu.nss
Jaysyn904 7b9e44ebbb Initial upload
Initial upload.  PRC8 has been added.  Module compiles, PRC's default AI & treasure scripts have been integrated.  Started work on top hak for SLA / Ability / Scripting modifications.
2024-03-11 23:44:08 -04:00

260 lines
7.9 KiB
Plaintext

void Teleportparty(object oPC)
{
int nRandom;
string sWP="jw_machine_sp_wp";
string sCheckstring;
location locNew=GetLocation(GetWaypointByTag("jw_machine_sp_wp2"));
location lLoc=GetLocation(GetWaypointByTag("jw_mach_port_mp"));
CreateObject(OBJECT_TYPE_PLACEABLE,"jw_machine_porta",lLoc);
object oParty=GetFirstFactionMember(oPC,FALSE);
while (GetIsObjectValid(oParty))
{
if (GetArea(oParty)==GetArea(OBJECT_SELF))
{
ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_IMP_UNSUMMON),oParty);
AssignCommand( oParty, ClearAllActions() );
nRandom=d8();
sCheckstring=sWP+IntToString(nRandom);
AssignCommand( oParty, JumpToObject( GetWaypointByTag(sCheckstring) ) );
}
oParty=GetNextFactionMember(oPC,FALSE);
}
oParty=GetFirstFactionMember(oPC,FALSE);
while (GetIsObjectValid(oParty))
{
if (GetArea(oParty)==GetArea(OBJECT_SELF))
{
ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_IMP_UNSUMMON),oParty);
AssignCommand( oParty, ClearAllActions() );
nRandom=d8();
sCheckstring=sWP+IntToString(nRandom);
AssignCommand( oParty, JumpToObject( GetWaypointByTag(sCheckstring) ) );
}
oParty=GetNextFactionMember(oPC,FALSE);
}
oParty=GetFirstFactionMember(oPC,FALSE);
while (GetIsObjectValid(oParty))
{
if (GetArea(oParty)==GetArea(OBJECT_SELF))
{
ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_IMP_UNSUMMON),oParty);
AssignCommand( oParty, ClearAllActions() );
nRandom=d8();
sCheckstring=sWP+IntToString(nRandom);
AssignCommand( oParty, JumpToObject( GetWaypointByTag(sCheckstring) ) );
}
oParty=GetNextFactionMember(oPC,FALSE);
}
oParty=GetFirstFactionMember(oPC,FALSE);
while (GetIsObjectValid(oParty))
{
if (GetArea(oParty)==GetArea(OBJECT_SELF))
{
ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_IMP_UNSUMMON),oParty);
AssignCommand( oParty, ClearAllActions() );
nRandom=d8();
sCheckstring=sWP+IntToString(nRandom);
AssignCommand( oParty, JumpToObject( GetWaypointByTag(sCheckstring) ) );
}
oParty=GetNextFactionMember(oPC,FALSE);
}
oParty=GetFirstFactionMember(oPC,FALSE);
while (GetIsObjectValid(oParty))
{
if (GetArea(oParty)==GetArea(OBJECT_SELF))
{
ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_IMP_UNSUMMON),oParty);
AssignCommand( oParty, ClearAllActions() );
nRandom=d8();
sCheckstring=sWP+IntToString(nRandom);
AssignCommand( oParty, JumpToObject( GetWaypointByTag(sCheckstring) ) );
}
oParty=GetNextFactionMember(oPC,FALSE);
}
oParty=GetFirstFactionMember(oPC,FALSE);
while (GetIsObjectValid(oParty))
{
if (GetArea(oParty)==GetArea(OBJECT_SELF))
{
ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_IMP_UNSUMMON),oParty);
AssignCommand( oParty, ClearAllActions() );
nRandom=d8();
sCheckstring=sWP+IntToString(nRandom);
AssignCommand( oParty, JumpToObject( GetWaypointByTag(sCheckstring) ) );
}
oParty=GetNextFactionMember(oPC,FALSE);
}
oParty=GetFirstFactionMember(oPC,FALSE);
while (GetIsObjectValid(oParty))
{
if (GetArea(oParty)==GetArea(OBJECT_SELF))
{
ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_IMP_UNSUMMON),oParty);
AssignCommand( oParty, ClearAllActions() );
nRandom=d8();
sCheckstring=sWP+IntToString(nRandom);
AssignCommand( oParty, JumpToObject( GetWaypointByTag(sCheckstring) ) );
}
oParty=GetNextFactionMember(oPC,FALSE);
}
oParty=GetFirstFactionMember(oPC,FALSE);
while (GetIsObjectValid(oParty))
{
if (GetArea(oParty)==GetArea(OBJECT_SELF))
{
ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_IMP_UNSUMMON),oParty);
AssignCommand( oParty, ClearAllActions() );
nRandom=d8();
sCheckstring=sWP+IntToString(nRandom);
AssignCommand( oParty, JumpToObject( GetWaypointByTag(sCheckstring) ) );
}
oParty=GetNextFactionMember(oPC,FALSE);
}
oParty=GetFirstFactionMember(oPC,FALSE);
while (GetIsObjectValid(oParty))
{
if (GetArea(oParty)==GetArea(OBJECT_SELF))
{
ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_IMP_UNSUMMON),oParty);
AssignCommand( oParty, ClearAllActions() );
nRandom=d8();
sCheckstring=sWP+IntToString(nRandom);
AssignCommand( oParty, JumpToObject( GetWaypointByTag(sCheckstring) ) );
}
oParty=GetNextFactionMember(oPC,FALSE);
}
object oSound=GetObjectByTag("jw_machine_sound");
SoundObjectStop(oSound);
//SetPlotFlag(OBJECT_SELF,0);
// DestroyObject(OBJECT_SELF);
}
void main()
{
object oObject=GetInventoryDisturbItem();
object oPC=GetLastDisturbed();
object oParty;
if (GetTag(oObject)!="jw_mystra_shard")
{
ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_IMP_PULSE_NEGATIVE),OBJECT_SELF);
SpeakString("*The "+GetName(oObject)+" is destroyed*");
DestroyObject(oObject);
return;
}
object oSound=GetObjectByTag("jw_machine_sound");
ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_IMP_PULSE_HOLY),OBJECT_SELF);
int nNumber=GetLocalInt(OBJECT_SELF,"nItems");
int nNewnumber=nNumber;
if (GetInventoryDisturbType()==INVENTORY_DISTURB_TYPE_ADDED)
{
nNewnumber=nNewnumber+1;
}
else
{
nNewnumber=nNewnumber-1;
}
if ((nNewnumber>=5)&&(nNumber<5))
{
// we have just put the fifth one in
ApplyEffectToObject(DURATION_TYPE_PERMANENT,EffectVisualEffect(VFX_DUR_ETHEREAL_VISAGE),OBJECT_SELF);
SpeakString("*The device appears to be fully powered*");
SoundObjectPlay(oSound);
}
if ((nNewnumber<5)&&(nNumber>=5))
{
// we had five in but have just taken one out
SoundObjectStop(oSound);
effect eEffect=GetFirstEffect(OBJECT_SELF);
while (GetIsEffectValid(eEffect))
{
if (GetEffectCreator(eEffect)==OBJECT_SELF)
{
RemoveEffect(OBJECT_SELF,eEffect);
}
eEffect=GetNextEffect(OBJECT_SELF);
}
}
////////
if ((nNumber==0)&&(nNewnumber==1))
{
SpeakString("*The contraption becomes warm*");
}
if (nNewnumber==9)
{
ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_IMP_FLAME_M),OBJECT_SELF);
SpeakString("The machine becomes almost too hot to touch . . . the power is set too high . . .");
}
if (nNewnumber>=10)
{
SpeakString("*Too much power courses through the machine . . .*");
ApplyEffectToObject(DURATION_TYPE_INSTANT,EffectVisualEffect(VFX_IMP_DESTRUCTION),OBJECT_SELF);
oParty=GetFirstFactionMember(oPC);
while (GetIsObjectValid(oParty))
{
if (GetArea(oParty)==GetArea(OBJECT_SELF))
{
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectVisualEffect(VFX_BEAM_EVIL),oParty,10.0);
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectVisualEffect(VFX_DUR_PARALYZE_HOLD),oParty,10.0);
ApplyEffectToObject(DURATION_TYPE_TEMPORARY,EffectCutsceneDominated(),oParty,10.0);
}
oParty=GetNextFactionMember(oPC);
}
object oItem=GetFirstItemInInventory(OBJECT_SELF);
while (GetIsObjectValid(oItem))
{
DestroyObject(oItem);
oItem=GetNextItemInInventory(OBJECT_SELF);
}
DelayCommand(10.1,Teleportparty(oPC));
}
SetLocalInt(OBJECT_SELF,"nItems",nNewnumber);
}