AOC_PRC8/_module/nss/sf_cutscene.nss
Jaysyn904 5e558169a0 Initial Commit
Initial Commit
2025-04-03 11:24:16 -04:00

224 lines
7.0 KiB
Plaintext

#include "cutscene_ch1"
void FinalPlace(int iPlace, string sObj, string sWay)
{
object oTarget2 = GetWaypointByTag(sWay);
location lTarget2 = GetLocation(oTarget2);
object oSpawn2 = CreateObject(iPlace, sObj, lTarget2);
}
void MakeFire(string oPlaceable, string sWaypoint)
{
effect eLight = EffectVisualEffect(VFX_DUR_LIGHT_BLUE_20);
object oTarget = GetWaypointByTag(sWaypoint);
location lTarget = GetLocation(oTarget);
object oSpawn = CreateObject(OBJECT_TYPE_PLACEABLE, oPlaceable, lTarget);
ApplyEffectToObject(DURATION_TYPE_PERMANENT, eLight, oSpawn);
}
void CutsceneEffect4(float oDelay, int iDuration, int oEffect, object oTarget)
{
int nInt;
nInt = GetObjectType(oTarget);
effect eEffect;
eEffect = EffectVisualEffect(oEffect);
DelayCommand(oDelay, ApplyEffectToObject(iDuration,
eEffect, oTarget));
}
void FlyOff2(object oPC)
{
GestaltApplyEffect(1.0, oPC, EffectVisualEffect(VFX_IMP_PULSE_WIND), INSTANT);
GestaltApplyEffect(0.0, oPC, EffectDisappear(), PERMANENT);
}
void TakeFlight2(float oDelay, object oPC)
{
DelayCommand(oDelay, FlyOff2(oPC));
}
void main()
{
object oPC = OBJECT_SELF;
object oMod = GetModule();
object oArea = GetArea(oPC);
object oTarget;
object oTarget1;
object oSpawn;
object oStarfall = GetObjectByTag("starfall");
object oCaster;
object oWP1=GetWaypointByTag("limbo_portal_wp");
object oPort = GetWaypointByTag("limbo_portal_pc");
location iLocation = GetLocation(GetWaypointByTag("limbo_portal_sf"));
location iLocation2 = GetLocation(GetWaypointByTag("limbo_portal_pc"));
location lTarget;
int iMode = GetLocalInt(oMod, "gamemode");
// Initiate cutscene mode
GestaltStartCutscene(oPC, "",TRUE,TRUE,TRUE,FALSE,2);
// Fade camera in
GestaltCameraFade(0.0, oPC, FADE_IN,FADE_SPEED_FAST);
GestaltSpeak(2.0, oStarfall, "Congratulations "+GetName(oPC)+". You have trancended beyond your limitations as a mortal!",
ANIMATION_FIREFORGET_VICTORY2);
GestaltSpeak(8.0, oPC, "I have?",
ANIMATION_LOOPING_TALK_PLEADING, 2.0);
GestaltSpeak(12.0, oStarfall, "Yes! You have conquored every arena challenge and defeated me in a duel!",
ANIMATION_NONE);
GestaltSpeak(19.0, oStarfall, "Come, I have something to show you!",
ANIMATION_NONE);
oCaster = oStarfall;
oTarget = oPC;
GestaltFace(20.0, oStarfall, 0.0, 2, oTarget);
CutsceneEffect4(25.0, DURATION_TYPE_PERMANENT, VFX_DUR_GLOBE_INVULNERABILITY , oPC);
GestaltActionSpellCast(23.0, oStarfall, oPC,
SPELL_LIGHTNING_BOLT, TRUE, PROJECTILE_PATH_TYPE_DEFAULT, "", TRUE, FALSE);
GestaltSpeak(26.0, oStarfall, "The atmosphere isn't safe where we are going! That energy sphere will protect you!",
ANIMATION_NONE);
GestaltSpeak(30.0, oStarfall, "Let's go!",
ANIMATION_NONE);
GestaltActionSpellCast(33.0, oStarfall, oPC,
SPELL_POWER_WORD_STUN, TRUE, PROJECTILE_PATH_TYPE_DEFAULT, "", TRUE, FALSE);
GestaltApplyEffect(35.0, oPC, EffectVisualEffect(VFX_IMP_ELEMENTAL_PROTECTION), INSTANT);
GestaltApplyEffect(35.2, oStarfall, EffectVisualEffect(VFX_IMP_ELEMENTAL_PROTECTION), INSTANT);
GestaltJump(36.5, oStarfall, OBJECT_INVALID, "limbo_portal_sf");
GestaltJump(36.5, oPC, OBJECT_INVALID, "limbo_portal_pc");
GestaltSpeak(45.0, oStarfall, "Hmmm...",
ANIMATION_NONE);
if (iMode==1){GestaltAnimate(48.0, oStarfall, ANIMATION_FIREFORGET_TAUNT);}
else{GestaltAnimate(48.0, oStarfall, ANIMATION_FIREFORGET_VICTORY2);}
CutsceneEffect(49.0, VFX_FNF_FIREBALL, "sf_fire1");
CutsceneEffect(49.3, VFX_FNF_FIREBALL, "sf_fire2");
CutsceneEffect(49.6, VFX_FNF_FIREBALL, "sf_fire3");
DelayCommand(49.2, MakeFire("sf_fire", "sf_fire1"));
DelayCommand(49.5, MakeFire("sf_fire", "sf_fire2"));
DelayCommand(49.7, MakeFire("sf_fire", "sf_fire3"));
GestaltSpeak(54.0, oStarfall, "That's better....",
ANIMATION_NONE);
GestaltSpeak(60.0, oStarfall, "Welcome to Limbo, the place where time does not exist.",
ANIMATION_NONE);
GestaltSpeak(64.0, oPC, "Why have you brought me here?",
ANIMATION_NONE);
GestaltSpeak(67.0, oStarfall, "That's a good question.",
ANIMATION_NONE);
GestaltSpeak(70.0, oStarfall, "You have been brought here so that time can pass in the 3rd realm without us having to wait.",
ANIMATION_NONE);
GestaltSpeak(76.0, oPC, "Wait for what?",
ANIMATION_LOOPING_TALK_PLEADING, 2.0);
GestaltSpeak(80.0, oStarfall, "Why, your initiation ceremony of course!",
ANIMATION_FIREFORGET_VICTORY2);
GestaltSpeak(86.0, oStarfall, "You are the first mortal who has ever trancended to become the supreme arena champion!",
ANIMATION_LOOPING_TALK_PLEADING, 4.0);
GestaltSpeak(92.0, oStarfall, "Therefore, we will have a great ceremony to induct you into the fellowship of supreme champions.",
ANIMATION_NONE);
GestaltSpeak(106.0, oPC, "I see...",
ANIMATION_NONE);
GestaltSpeak(109.0, oStarfall, "Just take the portal when you are ready. Then, my friend, you shall certainly see!",
ANIMATION_NONE);
GestaltSpeak(113.0, oPC, "What portal???",
ANIMATION_LOOPING_TALK_FORCEFUL, 4.0);
GestaltSpeak(116.0, oStarfall, "This portal...",
ANIMATION_NONE);
object oTarget2 = GetWaypointByTag("limbo_portal_wp");
DelayCommand(118.0, AssignCommand(oStarfall,
ActionCastFakeSpellAtLocation(SPELL_BANISHMENT,
GetLocation(oTarget2), PROJECTILE_PATH_TYPE_DEFAULT)));
CutsceneEffect(119.5, VFX_FNF_FIREBALL, "limbo_portal_wp");
DelayCommand(119.6, CutscenePlace("limbo_portal", "limbo_portal_wp"));
DelayCommand(124.0, PlayVoiceChat(VOICE_CHAT_LAUGH, oStarfall));
GestaltFace (125.0, oStarfall, 0.0, 2, oPC);
GestaltSpeak(127.0, oStarfall, "See you there...",
ANIMATION_FIREFORGET_GREETING);
GestaltFace (128.5, oStarfall, 0.0, 2, oWP1);
TakeFlight2(129.0, oStarfall);
DelayCommand(135.0, FinalPlace(OBJECT_TYPE_CREATURE, "starfall", "starfall_wp"));
DelayCommand(136.0, FinalPlace(OBJECT_TYPE_PLACEABLE, "limbo_portal", "arena_home"));
// Set up camera
SetLocalFloat(oPC,"fCameraDirection",210.0);
SetLocalFloat(oPC,"fCameraRange",16.0);
SetLocalFloat(oPC,"fCameraPitch",75.0);
// camera choreograpgy
GestaltCameraMove (0.0,
210.0,16.0,75.0,
232.0, 10.0,70.0,
10.0,30.0,oPC);
GestaltCameraMove (10.0,
232.0,10.0,70.0,
232.0,10.0,70.0,
30.0,30.0,oPC);
GestaltCameraMove (40.0,
232.0,10.0,70.0,
232.0,25.0,75.0,
10.0,30.0,oPC);
GestaltCameraMove (50.0,
232.0,25.0,75.0,
400.0,18.0,65.0,
35.0,30.0,oPC);
GestaltCameraMove (85.0,
400.0,18.0,65.0,
420.0,14.0,75.0,
35.0,30.0,oPC);
// Fade camera out
GestaltCameraFade (135.0, oPC, FADE_OUT, FADE_SPEED_SLOW, 3.0);
// end of cutscene
GestaltStopCutscene (138.0, oPC);
}