Updated Release Archive. Fixed Mage-killer prereqs. Removed old LETO & ConvoCC related files. Added organized spell scroll store. Fixed Gloura spellbook. Various TLK fixes. Reorganized Repo. Removed invalid user folders. Added DocGen back in.
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);
|
|
} |