Updated AMS marker feats. Removed arcane & divine marker feats. Updated Dread Necromancer for epic progression. Updated weapon baseitem models. Updated new weapons for crafting & npc equip. Updated prefix. Updated release archive.
178 lines
7.7 KiB
Plaintext
178 lines
7.7 KiB
Plaintext
//::///////////////////////////////////////////////
|
|
//:: Name q4a_statue_cut
|
|
//:: Copyright (c) 2001 Bioware Corp.
|
|
//:://////////////////////////////////////////////
|
|
/*
|
|
This script will start a tiny cutscene that
|
|
will show the statues in front of the cave
|
|
blowing up to open the path.
|
|
*/
|
|
//:://////////////////////////////////////////////
|
|
//:: Created By: Brad Prince
|
|
//:: Created On: Jan 14, 2003
|
|
//:://////////////////////////////////////////////
|
|
#include "prc_alterations"
|
|
#include "x2_inc_cutscenep"
|
|
|
|
void StartCutscene(object oPC, int iCut);
|
|
void main()
|
|
{
|
|
object oPC = GetLastUsedBy();
|
|
int iPulled = GetLocalInt(OBJECT_SELF, "on");
|
|
// Cutscene number.
|
|
int iCut = 50;
|
|
//SendMessageToPC(oPC, "Debug: "+Get2DAString("racialtypes", "Appearance", GetRacialType(oPC)));
|
|
|
|
// Don't let a polymorphed PC pull the switch. Give them appropriate
|
|
// feedback
|
|
if(GetAppearanceType(oPC) == APPEARANCE_TYPE_FAIRY) {
|
|
//SpeakString("[NOT IN STRING EDITOR] You are too small to operate the lever.");
|
|
SpeakStringByStrRef(85508);
|
|
}
|
|
else if(GetAppearanceType(oPC) == APPEARANCE_TYPE_DOG_WOLF) {
|
|
//SpeakString("[NOT IN STRING EDITOR] You cannot pull the lever with your paws.");
|
|
SpeakStringByStrRef(85509);
|
|
}
|
|
else if(GetAppearanceType(oPC) == APPEARANCE_TYPE_ELEMENTAL_EARTH_ELDER) {
|
|
//SpeakString("[NOT IN STRING EDITOR] You are too large to operate the lever.");
|
|
SpeakStringByStrRef(85510);
|
|
}
|
|
else if(GetAppearanceType(oPC) != StringToInt(Get2DACache("racialtypes", "Appearance", GetRacialType(oPC)))
|
|
/* GetAppearanceType(oPC) != APPEARANCE_TYPE_DWARF &&
|
|
GetAppearanceType(oPC) != APPEARANCE_TYPE_ELF &&
|
|
GetAppearanceType(oPC) != APPEARANCE_TYPE_HUMAN &&
|
|
GetAppearanceType(oPC) != APPEARANCE_TYPE_HALF_ORC &&
|
|
GetAppearanceType(oPC) != APPEARANCE_TYPE_HALFLING &&
|
|
GetAppearanceType(oPC) != APPEARANCE_TYPE_GNOME &&
|
|
GetAppearanceType(oPC) != APPEARANCE_TYPE_HALF_ELF
|
|
*/
|
|
) {
|
|
//SpeakString("[NOT IN STRING EDITOR] You cannot operate the lever in this form");
|
|
SpeakStringByStrRef(85511);
|
|
}
|
|
else if(iPulled == 0) {
|
|
PlayAnimation(ANIMATION_PLACEABLE_ACTIVATE);
|
|
SetLocalInt(OBJECT_SELF, "on", 1);
|
|
// Store the camera.
|
|
// CutStoreCameraFacing(iCut, 0.0, oPC);
|
|
// Set the cutscene number on the PC.
|
|
// SetLocalInt(oPC, "nCutsceneNumber", iCut);
|
|
// Set the PC location.
|
|
CutSetActiveCutscene(iCut, CUT_DELAY_TYPE_CONSTANT);
|
|
CutSetActiveCutsceneForObject(oPC, iCut, TRUE);
|
|
CutDisableAbort(iCut);
|
|
CutSetLocation(0.0, oPC);
|
|
DelayCommand(1.0, StartCutscene(oPC, iCut));
|
|
}
|
|
else {
|
|
// Don't let a polymorphed PC pull the switch. Give them appropriate
|
|
// feedback
|
|
if(GetAppearanceType(oPC) == APPEARANCE_TYPE_FAIRY) {
|
|
//SpeakString("[NOT IN STRING EDITOR] You are too small to operate the lever.");
|
|
SpeakStringByStrRef(85508);
|
|
}
|
|
else if(GetAppearanceType(oPC) == APPEARANCE_TYPE_DOG_WOLF) {
|
|
//SpeakString("[NOT IN STRING EDITOR] You cannot pull the lever with your paws.");
|
|
SpeakStringByStrRef(85509);
|
|
}
|
|
else if(GetAppearanceType(oPC) == APPEARANCE_TYPE_ELEMENTAL_EARTH_ELDER) {
|
|
//SpeakString("[NOT IN STRING EDITOR] You cannot operate the lever in this form");
|
|
SpeakStringByStrRef(85510);
|
|
}
|
|
else
|
|
//SpeakString("[NOT IN STRING EDITOR] Nothing happens.");
|
|
SpeakStringByStrRef(85512);
|
|
}
|
|
}
|
|
|
|
void StartCutscene(object oPC, int iCut) {
|
|
// Store locations for the copy.
|
|
//StoreCampaignObject("cutscene50", "ThePlayer", oPC);
|
|
//SetLocalLocation(oPC, "cut50", GetLocation(oPC));
|
|
location lLoc2 = GetLocation(oPC);
|
|
//object oCopy = RetrieveCampaignObject("cutscene50", "ThePlayer", lLoc2);
|
|
object oCopy = CutCreatePCCopy(oPC, lLoc2, "PC_Copy");
|
|
// Cutscene objects - statues and trigger.
|
|
// Statues.
|
|
object oStatue1 = GetObjectByTag("q4a_statue1");
|
|
object oStatue2 = GetObjectByTag("q4a_statue2");
|
|
object oStatue3 = GetObjectByTag("q4a_statue3");
|
|
object oStatue4 = GetObjectByTag("q4a_statue4");
|
|
object oStatue5 = GetObjectByTag("q4a_statue5");
|
|
|
|
CutSetActiveCutsceneForObject(oStatue1, iCut);
|
|
CutSetActiveCutsceneForObject(oStatue2, iCut);
|
|
CutSetActiveCutsceneForObject(oStatue3, iCut);
|
|
CutSetActiveCutsceneForObject(oStatue4, iCut);
|
|
CutSetActiveCutsceneForObject(oStatue5, iCut);
|
|
|
|
// Trigger.
|
|
object oStatue6 = GetObjectByTag("q4a_statue6");
|
|
CutSetActiveCutsceneForObject(oStatue6, iCut);
|
|
// Jump location.
|
|
location lLoc = GetLocation(GetWaypointByTag("q4a_cutjump_wp"));
|
|
|
|
// Setup the cutscene. Destroy the trigger now. Adjust the camera.
|
|
CutBlackScreen(0.0, oPC);
|
|
CutJumpToLocation(0.3, oPC, lLoc);
|
|
CutSetCutsceneMode(0.1, oPC, TRUE, CUT_CAMERA_HEIGHT_LOW);
|
|
CutRemoveEffects(0.1, oPC);
|
|
CutDestroyObject(0.1, oStatue6);
|
|
//CutApplyEffectToObject(0.1, DURATION_TYPE_PERMANENT, VFX_DUR_CUTSCENE_INVISIBILITY, oPC);
|
|
CutSetCamera(0.1, oPC, CAMERA_MODE_TOP_DOWN, 180.0, 17.0, 50.0,
|
|
CAMERA_TRANSITION_TYPE_SNAP);
|
|
//CutJumpToLocation(0.2, oCopy, lLoc2);
|
|
CutStopFade(0.5, oPC);
|
|
|
|
// Set ints on the plot statues so they know what cutscene is running.
|
|
// This will allow them to bypass the check. Do this for the copy too.
|
|
/*SetLocalInt(oStatue1, "nCutsceneNumber", iCut);
|
|
SetLocalInt(oStatue2, "nCutsceneNumber", iCut);
|
|
SetLocalInt(oStatue3, "nCutsceneNumber", iCut);
|
|
SetLocalInt(oStatue4, "nCutsceneNumber", iCut);
|
|
SetLocalInt(oStatue5, "nCutsceneNumber", iCut);
|
|
SetLocalInt(oStatue6, "nCutsceneNumber", iCut);
|
|
SetLocalInt(oCopy, "nCutsceneNumber", iCut);
|
|
*/
|
|
// Destroy the statues. First turn their plots off.
|
|
CutSetPlotFlag(0.5, oStatue1, 0);
|
|
CutSetPlotFlag(0.5, oStatue2, 0);
|
|
CutSetPlotFlag(0.5, oStatue3, 0);
|
|
CutSetPlotFlag(0.5, oStatue4, 0);
|
|
CutSetPlotFlag(0.5, oStatue5, 0);
|
|
|
|
// Dramatic camera movement.
|
|
CutSetCamera(1.0, oPC, CAMERA_MODE_TOP_DOWN, 180.0, 7.0, 50.0,
|
|
CAMERA_TRANSITION_TYPE_SLOW);
|
|
|
|
|
|
// Apply effects to the statues.
|
|
CutApplyEffectToObject(1.3, DURATION_TYPE_INSTANT, VFX_FNF_SCREEN_SHAKE, oStatue4);
|
|
CutApplyEffectToObject(1.5, DURATION_TYPE_INSTANT, VFX_FNF_IMPLOSION, oStatue4);
|
|
CutApplyEffectToObject2(5.2, DURATION_TYPE_INSTANT, EffectDamage(1000), oStatue4);
|
|
|
|
CutApplyEffectToObject(3.3, DURATION_TYPE_INSTANT, VFX_FNF_SCREEN_SHAKE, oStatue3);
|
|
CutApplyEffectToObject(3.5, DURATION_TYPE_INSTANT, VFX_FNF_IMPLOSION, oStatue3);
|
|
CutApplyEffectToObject2(7.2, DURATION_TYPE_INSTANT, EffectDamage(1000), oStatue3);
|
|
|
|
CutApplyEffectToObject(5.3, DURATION_TYPE_INSTANT, VFX_FNF_SCREEN_SHAKE, oStatue2);
|
|
CutApplyEffectToObject(5.5, DURATION_TYPE_INSTANT, VFX_FNF_IMPLOSION, oStatue2);
|
|
CutApplyEffectToObject2(9.2, DURATION_TYPE_INSTANT, EffectDamage(1000), oStatue2);
|
|
|
|
CutApplyEffectToObject(7.3, DURATION_TYPE_INSTANT, VFX_FNF_SCREEN_SHAKE, oStatue1);
|
|
CutApplyEffectToObject(7.5, DURATION_TYPE_INSTANT, VFX_FNF_IMPLOSION, oStatue1);
|
|
CutApplyEffectToObject2(11.2, DURATION_TYPE_INSTANT, EffectDamage(1000), oStatue1);
|
|
|
|
CutApplyEffectToObject(9.3, DURATION_TYPE_INSTANT, VFX_FNF_SCREEN_SHAKE, oStatue5);
|
|
CutApplyEffectToObject(9.5, DURATION_TYPE_INSTANT, VFX_FNF_IMPLOSION, oStatue5);
|
|
CutApplyEffectToObject2(13.2, DURATION_TYPE_INSTANT, EffectDamage(1000), oStatue5);
|
|
|
|
// Reset the PC postion and camera settings. Get rid of the PC copy.
|
|
//CutJumpToLocation(14.2, oCopy, GetLocation(GetWaypointByTag("wp_cut20_pccopy_start")));
|
|
//CutDestroyObject(14.2, oCopy);
|
|
//CutRestoreLocation(14.4, oPC);
|
|
//CutRestoreCameraFacing(14.4, oPC);
|
|
//CutRemoveEffects(14.4, oPC);
|
|
CutFadeOutAndIn(15.5, oPC, 1.5);
|
|
CutDisableCutscene(iCut, 16.4, 14.4);
|
|
} |