999 lines
36 KiB
Plaintext
999 lines
36 KiB
Plaintext
#include "cutscene_ch1"
|
|
|
|
void CSsound(float oDelay, string sSound, object oPC)
|
|
{
|
|
DelayCommand(oDelay, AssignCommand(oPC, PlaySound(sSound)));
|
|
}
|
|
|
|
void MCheerDark(object oPC)
|
|
{
|
|
CSsound(0.0, "as_pl_nobyaygrp2", oPC);
|
|
CSsound(0.1, "as_pl_comyaygrp2", oPC);
|
|
CSsound(0.2, "vs_hprostm2_vict", oPC);
|
|
CSsound(0.3, "vs_fcallahm_vict", oPC);
|
|
CSsound(0.1, "vs_nwncomf4_vict", oPC);
|
|
CSsound(0.4, "vs_ngnbarm2_vict", oPC);
|
|
CSsound(0.2, "vs_ndwhitem_vict", oPC);
|
|
}
|
|
|
|
void MCheerLight(object oPC)
|
|
{
|
|
CSsound(0.0, "as_pl_nobyaygrp2", oPC);
|
|
CSsound(0.1, "as_pl_comyaygrp2", oPC);
|
|
CSsound(0.2, "vs_faven3m_vict", oPC);
|
|
CSsound(0.3, "vs_ndgreenf_vict", oPC);
|
|
CSsound(0.1, "vs_nclerimi_vict", oPC);
|
|
CSsound(0.2, "vs_nprostf1_vict", oPC);
|
|
CSsound(0.4, "vs_fx0subtm_vict", oPC);
|
|
}
|
|
|
|
void MCheerNPC(object oPC)
|
|
{
|
|
CSsound(0.0, "as_pl_nobyaygrp2", oPC);
|
|
CSsound(0.2, "vs_fx2archm_vict", oPC);
|
|
CSsound(0.4, "vs_nprelum4_vict", oPC);
|
|
CSsound(0.6, "vs_sirilm_vict", oPC);
|
|
CSsound(0.8, "vs_ngendm_vict", oPC);
|
|
}
|
|
|
|
|
|
|
|
void DarkAnim()
|
|
{
|
|
int iDice;
|
|
GestaltAnimate(0.2, GetObjectByTag("dlarge_1"), ANIMATION_FIREFORGET_TAUNT);
|
|
GestaltAnimate(0.4, GetObjectByTag("dlarge_2"), ANIMATION_FIREFORGET_TAUNT);
|
|
GestaltAnimate(0.6, GetObjectByTag("dlarge_3"), ANIMATION_FIREFORGET_TAUNT);
|
|
GestaltAnimate(0.8, GetObjectByTag("dlarge_4"), ANIMATION_FIREFORGET_TAUNT);
|
|
GestaltAnimate(1.0, GetObjectByTag("dlarge_5"), ANIMATION_FIREFORGET_TAUNT);
|
|
GestaltAnimate(1.2, GetObjectByTag("dlarge_6"), ANIMATION_FIREFORGET_TAUNT);
|
|
GestaltAnimate(1.4, GetObjectByTag("dlarge_7"), ANIMATION_FIREFORGET_TAUNT);
|
|
GestaltAnimate(1.6, GetObjectByTag("dlarge_8"), ANIMATION_FIREFORGET_TAUNT);
|
|
iDice = d3();
|
|
switch(iDice)
|
|
{
|
|
case 1:{GestaltAnimate(0.4, GetObjectByTag("d1"), ANIMATION_FIREFORGET_VICTORY1);}break;
|
|
case 2:{GestaltAnimate(0.4, GetObjectByTag("d1"), ANIMATION_FIREFORGET_VICTORY2);}break;
|
|
case 3:{GestaltAnimate(0.4, GetObjectByTag("d1"), ANIMATION_FIREFORGET_VICTORY3);}break;
|
|
}
|
|
iDice = d3();
|
|
switch(iDice)
|
|
{
|
|
case 1:{GestaltAnimate(0.8, GetObjectByTag("d2"), ANIMATION_FIREFORGET_VICTORY1);}break;
|
|
case 2:{GestaltAnimate(0.8, GetObjectByTag("d2"), ANIMATION_FIREFORGET_VICTORY2);}break;
|
|
case 3:{GestaltAnimate(0.8, GetObjectByTag("d2"), ANIMATION_FIREFORGET_VICTORY3);}break;
|
|
}
|
|
iDice = d3();
|
|
switch(iDice)
|
|
{
|
|
case 1:{GestaltAnimate(1.2, GetObjectByTag("d3"), ANIMATION_FIREFORGET_VICTORY1);}break;
|
|
case 2:{GestaltAnimate(1.2, GetObjectByTag("d3"), ANIMATION_FIREFORGET_VICTORY2);}break;
|
|
case 3:{GestaltAnimate(1.2, GetObjectByTag("d3"), ANIMATION_FIREFORGET_VICTORY3);}break;
|
|
}
|
|
|
|
}
|
|
|
|
void LightAnim()
|
|
{
|
|
int iDice;
|
|
GestaltAnimate(0.4, GetObjectByTag("llarge_1"), ANIMATION_FIREFORGET_TAUNT);
|
|
GestaltAnimate(0.8, GetObjectByTag("llarge_2"), ANIMATION_FIREFORGET_TAUNT);
|
|
GestaltAnimate(1.2, GetObjectByTag("llarge_3"), ANIMATION_FIREFORGET_TAUNT);
|
|
GestaltAnimate(1.8, GetObjectByTag("llarge_4"), ANIMATION_FIREFORGET_TAUNT);
|
|
|
|
iDice = d3();
|
|
switch(iDice)
|
|
{
|
|
case 1:{GestaltAnimate(0.4, GetObjectByTag("l1"), ANIMATION_FIREFORGET_VICTORY1);}break;
|
|
case 2:{GestaltAnimate(0.4, GetObjectByTag("l1"), ANIMATION_FIREFORGET_VICTORY2);}break;
|
|
case 3:{GestaltAnimate(0.4, GetObjectByTag("l1"), ANIMATION_FIREFORGET_VICTORY3);}break;
|
|
}
|
|
iDice = d3();
|
|
switch(iDice)
|
|
{
|
|
case 1:{GestaltAnimate(0.8, GetObjectByTag("l2"), ANIMATION_FIREFORGET_VICTORY1);}break;
|
|
case 2:{GestaltAnimate(0.8, GetObjectByTag("l2"), ANIMATION_FIREFORGET_VICTORY2);}break;
|
|
case 3:{GestaltAnimate(0.8, GetObjectByTag("l2"), ANIMATION_FIREFORGET_VICTORY3);}break;
|
|
}
|
|
iDice = d3();
|
|
switch(iDice)
|
|
{
|
|
case 1:{GestaltAnimate(0.2, GetObjectByTag("l3"), ANIMATION_FIREFORGET_VICTORY1);}break;
|
|
case 2:{GestaltAnimate(0.2, GetObjectByTag("l3"), ANIMATION_FIREFORGET_VICTORY2);}break;
|
|
case 3:{GestaltAnimate(0.2, GetObjectByTag("l3"), ANIMATION_FIREFORGET_VICTORY3);}break;
|
|
}
|
|
iDice = d3();
|
|
switch(iDice)
|
|
{
|
|
case 1:{GestaltAnimate(0.6, GetObjectByTag("l4"), ANIMATION_FIREFORGET_VICTORY1);}break;
|
|
case 2:{GestaltAnimate(0.6, GetObjectByTag("l4"), ANIMATION_FIREFORGET_VICTORY2);}break;
|
|
case 3:{GestaltAnimate(0.6, GetObjectByTag("l4"), ANIMATION_FIREFORGET_VICTORY3);}break;
|
|
}
|
|
iDice = d3();
|
|
switch(iDice)
|
|
{
|
|
case 1:{GestaltAnimate(1.8, GetObjectByTag("l5"), ANIMATION_FIREFORGET_VICTORY1);}break;
|
|
case 2:{GestaltAnimate(1.8, GetObjectByTag("l5"), ANIMATION_FIREFORGET_VICTORY2);}break;
|
|
case 3:{GestaltAnimate(1.8, GetObjectByTag("l5"), ANIMATION_FIREFORGET_VICTORY3);}break;
|
|
}
|
|
iDice = d3();
|
|
switch(iDice)
|
|
{
|
|
case 1:{GestaltAnimate(1.0, GetObjectByTag("l6"), ANIMATION_FIREFORGET_VICTORY1);}break;
|
|
case 2:{GestaltAnimate(1.0, GetObjectByTag("l6"), ANIMATION_FIREFORGET_VICTORY2);}break;
|
|
case 3:{GestaltAnimate(1.0, GetObjectByTag("l6"), ANIMATION_FIREFORGET_VICTORY3);}break;
|
|
}
|
|
|
|
}
|
|
|
|
void NPCAnim()
|
|
{
|
|
int iDice;
|
|
|
|
iDice = d3();
|
|
switch(iDice)
|
|
{
|
|
case 1:{GestaltAnimate(0.0, GetObjectByTag("npc1"), ANIMATION_FIREFORGET_VICTORY1);}break;
|
|
case 2:{GestaltAnimate(0.0, GetObjectByTag("npc1"), ANIMATION_FIREFORGET_VICTORY2);}break;
|
|
case 3:{GestaltAnimate(0.0, GetObjectByTag("npc1"), ANIMATION_FIREFORGET_VICTORY3);}break;
|
|
}
|
|
iDice = d3();
|
|
switch(iDice)
|
|
{
|
|
case 1:{GestaltAnimate(0.2, GetObjectByTag("npc2"), ANIMATION_FIREFORGET_VICTORY1);}break;
|
|
case 2:{GestaltAnimate(0.2, GetObjectByTag("npc2"), ANIMATION_FIREFORGET_VICTORY2);}break;
|
|
case 3:{GestaltAnimate(0.2, GetObjectByTag("npc2"), ANIMATION_FIREFORGET_VICTORY3);}break;
|
|
}
|
|
iDice = d3();
|
|
switch(iDice)
|
|
{
|
|
case 1:{GestaltAnimate(0.4, GetObjectByTag("npc3"), ANIMATION_FIREFORGET_VICTORY1);}break;
|
|
case 2:{GestaltAnimate(0.4, GetObjectByTag("npc3"), ANIMATION_FIREFORGET_VICTORY2);}break;
|
|
case 3:{GestaltAnimate(0.4, GetObjectByTag("npc3"), ANIMATION_FIREFORGET_VICTORY3);}break;
|
|
}
|
|
iDice = d3();
|
|
switch(iDice)
|
|
{
|
|
case 1:{GestaltAnimate(0.6, GetObjectByTag("npc4"), ANIMATION_FIREFORGET_VICTORY1);}break;
|
|
case 2:{GestaltAnimate(0.6, GetObjectByTag("npc4"), ANIMATION_FIREFORGET_VICTORY2);}break;
|
|
case 3:{GestaltAnimate(0.6, GetObjectByTag("npc4"), ANIMATION_FIREFORGET_VICTORY3);}break;
|
|
}
|
|
iDice = d3();
|
|
switch(iDice)
|
|
{
|
|
case 1:{GestaltAnimate(0.8, GetObjectByTag("g_angel10"), ANIMATION_FIREFORGET_VICTORY1);}break;
|
|
case 2:{GestaltAnimate(0.8, GetObjectByTag("g_angel10"), ANIMATION_FIREFORGET_VICTORY2);}break;
|
|
case 3:{GestaltAnimate(0.8, GetObjectByTag("g_angel10"), ANIMATION_FIREFORGET_VICTORY3);}break;
|
|
}
|
|
iDice = d3();
|
|
switch(iDice)
|
|
{
|
|
case 1:{GestaltAnimate(1.0, GetObjectByTag("g_angel11"), ANIMATION_FIREFORGET_VICTORY1);}break;
|
|
case 2:{GestaltAnimate(1.0, GetObjectByTag("g_angel11"), ANIMATION_FIREFORGET_VICTORY2);}break;
|
|
case 3:{GestaltAnimate(1.0, GetObjectByTag("g_angel11"), ANIMATION_FIREFORGET_VICTORY3);}break;
|
|
}
|
|
|
|
}
|
|
|
|
void MassCheerDark(float oDelay, object oPC)
|
|
{
|
|
DelayCommand(oDelay, DarkAnim());
|
|
DelayCommand(oDelay+0.2, MCheerDark(oPC));
|
|
}
|
|
|
|
void MassCheerLight(float oDelay, object oPC)
|
|
{
|
|
DelayCommand(oDelay, LightAnim());
|
|
DelayCommand(oDelay+0.2, MCheerLight(oPC));
|
|
}
|
|
|
|
void MassCheerAll(float oDelay, object oPC)
|
|
{
|
|
DelayCommand(oDelay, DarkAnim());
|
|
DelayCommand(oDelay+0.2, MCheerDark(oPC));
|
|
DelayCommand(oDelay, LightAnim());
|
|
DelayCommand(oDelay+0.2, MCheerLight(oPC));
|
|
}
|
|
|
|
void MassCheerNPC(float oDelay, object oPC)
|
|
{
|
|
DelayCommand(oDelay, MCheerNPC(oPC));
|
|
DelayCommand(oDelay, NPCAnim());
|
|
}
|
|
|
|
|
|
void FlyOff(object oPC)
|
|
{
|
|
GestaltApplyEffect(1.0, oPC, EffectVisualEffect(VFX_IMP_PULSE_WIND), INSTANT);
|
|
GestaltApplyEffect(0.0, oPC, EffectDisappear(), PERMANENT);
|
|
}
|
|
|
|
|
|
void TakeFlight(float oDelay, object oPC)
|
|
{
|
|
DelayCommand(oDelay, FlyOff(oPC));
|
|
}
|
|
|
|
|
|
void Say(object oSelf, int iSet)
|
|
{
|
|
|
|
int iVoice;
|
|
|
|
switch (iSet)
|
|
{
|
|
case 1: iVoice = VOICE_CHAT_ATTACK;break;
|
|
case 2: iVoice = VOICE_CHAT_BATTLECRY1;break;
|
|
case 3: iVoice = VOICE_CHAT_BATTLECRY2;break;
|
|
case 4: iVoice = VOICE_CHAT_BATTLECRY3;break;
|
|
case 5: iVoice = VOICE_CHAT_THREATEN;break;
|
|
case 6: iVoice = VOICE_CHAT_CHEER;break;
|
|
case 7: iVoice = VOICE_CHAT_CUSS;break;
|
|
case 8: iVoice = VOICE_CHAT_FLEE;break;
|
|
case 9: iVoice = VOICE_CHAT_GOODBYE;break;
|
|
case 10: iVoice = VOICE_CHAT_THANKS;break;
|
|
case 11: iVoice = VOICE_CHAT_WEAPONSUCKS;break;
|
|
case 12: iVoice = VOICE_CHAT_LAUGH;break;
|
|
case 13: iVoice = VOICE_CHAT_HELLO;break;
|
|
case 14: iVoice = VOICE_CHAT_FOLLOWME;break;
|
|
case 15: iVoice = VOICE_CHAT_GOODIDEA;break;
|
|
case 16: iVoice = VOICE_CHAT_REST;break;
|
|
case 17: iVoice = VOICE_CHAT_YES;break;
|
|
case 18: iVoice = VOICE_CHAT_THANKS;break;
|
|
|
|
}
|
|
AssignCommand(oSelf, PlayVoiceChat(iVoice));
|
|
}
|
|
|
|
void SetWrath2()
|
|
{
|
|
object oTarget = GetWaypointByTag("phoenix_wp");
|
|
object oArea = GetArea(oTarget);
|
|
float z = 0.5;
|
|
float x,y,tx,ty;
|
|
float fAngle = 30.0;
|
|
int nCount;
|
|
vector nTarget = GetPosition(oTarget);
|
|
vector nCreate;
|
|
string sTag;
|
|
tx = nTarget.x;
|
|
ty = nTarget.y;
|
|
|
|
//12 small targets in a clock pattern
|
|
for(nCount = 1;nCount < 13;nCount++)
|
|
{
|
|
x = tx + (cos(fAngle)*10);
|
|
y = ty + (sin(fAngle)*10);
|
|
sTag = "FireworksSTarget" + IntToString(nCount);
|
|
CreateObject(OBJECT_TYPE_PLACEABLE,"fireworksstarget",Location(oArea,Vector(x,y,z),0.0),FALSE,sTag);
|
|
fAngle += 30.0;
|
|
}
|
|
|
|
x = tx;
|
|
y = ty;
|
|
//3 Medium and Large targets same x,y different z
|
|
for (nCount = 1;nCount < 4;nCount++)
|
|
{
|
|
|
|
sTag = "FireworksLTarget" + IntToString(nCount);
|
|
CreateObject(OBJECT_TYPE_PLACEABLE,"fireworksltarget",Location(oArea,Vector(x,y,z),0.0),FALSE,sTag);
|
|
z += 1.5;
|
|
}
|
|
|
|
}
|
|
|
|
void CleanTargs2()
|
|
{
|
|
object oSTarget1 = GetObjectByTag("FireworksSTarget1");
|
|
object oSTarget2 = GetObjectByTag("FireworksSTarget2");
|
|
object oSTarget3 = GetObjectByTag("FireworksSTarget3");
|
|
object oSTarget4 = GetObjectByTag("FireworksSTarget4");
|
|
object oSTarget5 = GetObjectByTag("FireworksSTarget5");
|
|
object oSTarget6 = GetObjectByTag("FireworksSTarget6");
|
|
object oSTarget7 = GetObjectByTag("FireworksSTarget7");
|
|
object oSTarget8 = GetObjectByTag("FireworksSTarget8");
|
|
object oSTarget9 = GetObjectByTag("FireworksSTarget9");
|
|
object oSTarget10 = GetObjectByTag("FireworksSTarget10");
|
|
object oSTarget11 = GetObjectByTag("FireworksSTarget11");
|
|
object oSTarget12 = GetObjectByTag("FireworksSTarget12");
|
|
object oMTarget = GetObjectByTag("FireworksMTarget3");
|
|
object oMTarget1 = GetObjectByTag("FireworksMTarget1");
|
|
object oMTarget2 = GetObjectByTag("FireworksMTarget2");
|
|
object oLTarget = GetObjectByTag("FireworksLTarget3");
|
|
object oLTarget1 = GetObjectByTag("FireworksLTarget1");
|
|
object oLTarget2 = GetObjectByTag("FireworksLTarget2");
|
|
float fTimeDelay = 3.0;
|
|
DestroyObject(oSTarget1,fTimeDelay);
|
|
DestroyObject(oSTarget2,fTimeDelay);
|
|
DestroyObject(oSTarget3,fTimeDelay);
|
|
DestroyObject(oSTarget4,fTimeDelay);
|
|
DestroyObject(oSTarget5,fTimeDelay);
|
|
DestroyObject(oSTarget6,fTimeDelay);
|
|
DestroyObject(oSTarget7,fTimeDelay);
|
|
DestroyObject(oSTarget8,fTimeDelay);
|
|
DestroyObject(oSTarget9,fTimeDelay);
|
|
DestroyObject(oSTarget10,fTimeDelay);
|
|
DestroyObject(oSTarget11,fTimeDelay);
|
|
DestroyObject(oSTarget1,fTimeDelay);
|
|
DestroyObject(oMTarget,fTimeDelay);
|
|
DestroyObject(oMTarget2,fTimeDelay);
|
|
DestroyObject(oMTarget,fTimeDelay);
|
|
DestroyObject(oLTarget1,fTimeDelay);
|
|
DestroyObject(oLTarget,fTimeDelay);
|
|
DestroyObject(oLTarget,fTimeDelay);
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void main()
|
|
{
|
|
|
|
// initialise player
|
|
|
|
object oPC = GetEnteringObject();
|
|
object oMod = GetModule();
|
|
object oArea = GetArea(oPC);
|
|
|
|
if (!GetIsPC(oPC))return;
|
|
if (GetItemPossessedBy(oPC, "final_ring")!=OBJECT_INVALID)return;
|
|
|
|
// Initialize integers
|
|
|
|
int iAv;
|
|
float fPerc;
|
|
int iPerc;
|
|
int tScore;
|
|
int iSwing;
|
|
int iHit;
|
|
int iDam;
|
|
int aScore;
|
|
int iKilled;
|
|
int iDied;
|
|
int iRankNo;
|
|
string sRank;
|
|
string sTookOut;
|
|
string sDeaths;
|
|
int iDice;
|
|
int iAlign;
|
|
|
|
int iAlignment = GetAlignmentGoodEvil(oPC);
|
|
if (iAlignment == ALIGNMENT_EVIL){iAlign = 2;}
|
|
else {iAlign = 1;}
|
|
|
|
iDied = GetLocalInt (oPC,"iDied");
|
|
iKilled = GetLocalInt (oPC,"iKilled");
|
|
iDam = GetLocalInt(oPC, "player_dd");
|
|
iHit = GetLocalInt(oPC, "pc_hit");
|
|
iSwing = GetLocalInt(oPC, "pc_swing");
|
|
aScore = GetLocalInt(oPC, "a_score");
|
|
sRank = GetLocalString(oPC, "rank");
|
|
iRankNo = GetLocalInt(oPC, "status");
|
|
|
|
// initialize strings
|
|
|
|
string sSFtalk1, sSFtalk2,sSFtalk3,sSFtalk4,sSFtalk5,sSFtalk6,sSFtalk7,
|
|
sSFtalk7a, sSFtalk8,sSFtalk9,sSFtalk10;
|
|
|
|
CreateItemOnObject("final_ring", oPC);
|
|
|
|
string sTitle;
|
|
if (GetGender(oPC)==GENDER_MALE){sTitle="Sir";}else{sTitle="Lady";}
|
|
|
|
// calculate final stats and score
|
|
|
|
if (iHit!=0){iAv = iDam / iHit; }
|
|
else {iAv = 0;}
|
|
|
|
if (iSwing!=0){fPerc = (IntToFloat(iHit) / IntToFloat(iSwing))*100;}
|
|
else {fPerc = 0.0;}
|
|
|
|
iPerc = FloatToInt(fPerc);
|
|
|
|
tScore = (iPerc * iAv);
|
|
if (tScore!=0){aScore+=tScore;}
|
|
else {aScore += 0;}
|
|
|
|
SetLocalInt(oPC, "a_score", aScore);
|
|
|
|
// Construct stat report
|
|
iDice = d12();
|
|
switch (iDice)
|
|
{
|
|
case 1: {sTookOut = "culled";}break;
|
|
case 2: {sTookOut = "schooled";}break;
|
|
case 3: {sTookOut = "slew";}break;
|
|
case 4: {sTookOut = "defeated";}break;
|
|
case 5: {sTookOut = "killed";}break;
|
|
case 6: {sTookOut = "destroyed";}break;
|
|
case 7: {sTookOut = "cleaved";}break;
|
|
case 8: {sTookOut = "dispatched";}break;
|
|
case 9: {sTookOut = "slaughtered";}break;
|
|
case 10: {sTookOut = "took out";}break;
|
|
case 11: {sTookOut = "dismembered";}break;
|
|
case 12: {sTookOut = "defeated";}break;
|
|
}
|
|
|
|
sSFtalk1 = "Throughout your career, you "+sTookOut+" "+IntToString(iKilled)+" challengers and fell in battle "+IntToString(iDied)+" times.";
|
|
sSFtalk2 = "You gained "+IntToString(iRankNo)+" ranks out of a possible 19 and achieved the rank of "+sRank+".";
|
|
sSFtalk3 = "You swung your weapon "+IntToString(iSwing)+" times and landed "+IntToString(iHit)+" blows.";
|
|
sSFtalk4 = "Therefore, "+IntToString(iPerc)+"% of your attacks were effective.";
|
|
sSFtalk5 = "You bled your opponents for a total "+IntToString(iDam)+" hit points, dealing an average of "+IntToString(iAv)+" damage per hit.";
|
|
sSFtalk8 = "Based on that performance, I award you "+IntToString(tScore)+" championship points, bringing your overall score to "+IntToString(aScore)+".";
|
|
|
|
|
|
if (iPerc>=0) {sSFtalk7 = "Your overall performance was one of little or no skill "; }
|
|
if (iPerc>10) {sSFtalk7 = "Your overall performance was one of very low skill "; }
|
|
if (iPerc>20) {sSFtalk7 = "Your overall performance was one of average skill "; }
|
|
if (iPerc>30) {sSFtalk7 = "Your overall performance was one of moderate skill "; }
|
|
if (iPerc>40) {sSFtalk7 = "Your overall performance was one of high skill "; }
|
|
if (iPerc>50) {sSFtalk7 = "Your overall performance was one of very high skill "; }
|
|
if (iPerc>60) {sSFtalk7 = "Your overall performance was one of impressive skill "; }
|
|
if (iPerc>70) {sSFtalk7 = "Your overall performance was one of superior skill "; }
|
|
if (iPerc>80) {sSFtalk7 = "Your overall performance was one of incredible skill "; }
|
|
if (iPerc>90) {sSFtalk7 = "Your overall performance was one of supreme skill "; }
|
|
|
|
if (iAv>=0) {sSFtalk7a = "and almost no power!"; }
|
|
if (iAv>10) {sSFtalk7a = "and very low power!"; }
|
|
if (iAv>20) {sSFtalk7a = "and low power!"; }
|
|
if (iAv>30) {sSFtalk7a = "and average power!"; }
|
|
if (iAv>40) {sSFtalk7a = "and threatening power!"; }
|
|
if (iAv>50) {sSFtalk7a = "and overwhelming power!"; }
|
|
if (iAv>70) {sSFtalk7a = "and formidible power!"; }
|
|
if (iAv>90) {sSFtalk7a = "and incredible power!"; }
|
|
if (iAv>100) {sSFtalk7a = "and supreme power!"; }
|
|
if (iAv>110) {sSFtalk7a = "and devastating power!"; }
|
|
|
|
sSFtalk7+=sSFtalk7a;
|
|
|
|
sSFtalk9 = "All hail "+sTitle+" "+GetName(oPC)+" the "+sRank+", Master of Champions and our newest... ";
|
|
|
|
sSFtalk10 = "Supreeeeeeme Champion of the Areeeenaaaaaaaa!";
|
|
|
|
// initialise characters
|
|
|
|
object oStarfall=GetObjectByTag("starfall_mc"),
|
|
oGuard1=GetObjectByTag("guard1"),
|
|
oGuard2=GetObjectByTag("guard2"),
|
|
oAngel1=GetObjectByTag("l_angel1"),
|
|
oAngel2=GetObjectByTag("l_angel2"),
|
|
oAngel3=GetObjectByTag("l_angel3"),
|
|
oAngel4=GetObjectByTag("l_angel4"),
|
|
oAngel5=GetObjectByTag("l_angel5"),
|
|
oDemon1=GetObjectByTag("d_angel1"),
|
|
oDemon2=GetObjectByTag("d_angel2"),
|
|
oDemon3=GetObjectByTag("d_angel3"),
|
|
oDemon4=GetObjectByTag("d_angel4"),
|
|
oDemon5=GetObjectByTag("d_angel5"),
|
|
oGabriel=GetObjectByTag("g_angel10"),
|
|
oMinion=GetObjectByTag("g_angel11");
|
|
|
|
|
|
|
|
// initialise effects
|
|
|
|
effect eEffect = EffectVisualEffect(VFX_IMP_REMOVE_CONDITION);
|
|
|
|
|
|
// initialise waypoionts
|
|
|
|
object PCwp1=GetWaypointByTag("pc_final_wp"),
|
|
PCwp2=GetWaypointByTag("pc_final_wp2"),
|
|
PCwp3=GetWaypointByTag("pc_final_wp3"),
|
|
PCwp4=GetWaypointByTag("pc_final_wp4"),
|
|
SFwp1=GetWaypointByTag("starfall_final_wp"),
|
|
SFwp2=GetWaypointByTag("starfall_final_wp2"),
|
|
G1wp1=GetWaypointByTag("guard1_wp1"),
|
|
G1wp2=GetWaypointByTag("guard1_wp2"),
|
|
G2wp1=GetWaypointByTag("guard2_wp1"),
|
|
G2wp2=GetWaypointByTag("guard2_wp2"),
|
|
Awp1=GetWaypointByTag("angel_wp1"),
|
|
Awp2=GetWaypointByTag("angel_wp2"),
|
|
Dwp1=GetWaypointByTag("demon_wp1"),
|
|
Dwp2=GetWaypointByTag("demon_wp2"),
|
|
GuardFace=GetWaypointByTag("guard_face"),
|
|
NPCFace=GetWaypointByTag("npc_face");
|
|
|
|
// call subroutine to create vector waypoint for phoenix effect
|
|
|
|
SetWrath2();
|
|
|
|
// phoenix dragon effect
|
|
|
|
object oLTarget = GetObjectByTag("FireworksLTarget3");
|
|
DelayCommand(83.0, ApplyEffectToObject(DURATION_TYPE_INSTANT, EffectVisualEffect(488),
|
|
oLTarget));
|
|
|
|
// Initiate cutscene mode
|
|
|
|
GestaltStartCutscene(oPC, "",TRUE,TRUE,TRUE,FALSE,2);
|
|
|
|
// Fade camera in
|
|
|
|
GestaltCameraFade(0.0, oPC, FADE_IN,FADE_SPEED_FAST);
|
|
|
|
|
|
DelayCommand(262.0, CutscenePlace("fw_portal3", "pc_final_wp"));
|
|
|
|
////////////////////////////////////////////////
|
|
//: ://
|
|
//: choreography ://
|
|
//: ://
|
|
////////////////////////////////////////////////
|
|
|
|
// Dialogue
|
|
GestaltSpeak(150.0, oStarfall, sSFtalk1,
|
|
ANIMATION_NONE);
|
|
GestaltSpeak(160.0, oStarfall, sSFtalk2,
|
|
ANIMATION_NONE);
|
|
|
|
GestaltSpeak(170.0, oStarfall, sSFtalk3,
|
|
ANIMATION_NONE);
|
|
GestaltSpeak(180.0, oStarfall, sSFtalk4,
|
|
ANIMATION_NONE);
|
|
|
|
GestaltSpeak(190.0, oStarfall, sSFtalk5,
|
|
ANIMATION_NONE);
|
|
GestaltSpeak(200.0, oStarfall, sSFtalk7,
|
|
ANIMATION_NONE);
|
|
|
|
GestaltSpeak(210.0, oStarfall, sSFtalk8,
|
|
ANIMATION_NONE);
|
|
GestaltSpeak(220.0, oStarfall, sSFtalk9,
|
|
ANIMATION_NONE);
|
|
GestaltSpeak(228.0, oStarfall, sSFtalk10,
|
|
ANIMATION_FIREFORGET_VICTORY2);
|
|
|
|
|
|
DelayCommand(210.0, MusicBackgroundChangeDay(GetArea(oPC), 0));
|
|
DelayCommand(210.0, MusicBackgroundChangeNight(GetArea(oPC), 0));
|
|
DelayCommand(210.0, MusicBackgroundStop(GetArea(oPC)));
|
|
|
|
GestaltActionAnimate(232.0, oPC, ANIMATION_FIREFORGET_BOW);
|
|
MassCheerNPC (231.5, oPC);
|
|
|
|
//GestaltFace (234.0, oPC, 270.0, 0);
|
|
GestaltActionAnimate(234.5, oPC, ANIMATION_FIREFORGET_VICTORY3);
|
|
//MassCheerAll (235.0, oPC);
|
|
|
|
GestaltFace (237.5, oPC, 225.0, 0);
|
|
GestaltActionAnimate(238.5, oPC, ANIMATION_FIREFORGET_BOW);
|
|
MassCheerLight (239.5, oPC);
|
|
GestaltActionAnimate(241.0, oPC, ANIMATION_FIREFORGET_VICTORY3);
|
|
|
|
GestaltFace (243.0, oPC, 315.0, 0);
|
|
GestaltActionAnimate(244.0, oPC, ANIMATION_FIREFORGET_BOW);
|
|
MassCheerDark (245.0, oPC);
|
|
GestaltActionAnimate(246.5, oPC, ANIMATION_FIREFORGET_VICTORY3);
|
|
|
|
GestaltFace (248.5, oPC, 90.0, 0);
|
|
|
|
|
|
|
|
if (iAlign==1)
|
|
{
|
|
iDice = d4();
|
|
switch(iDice)
|
|
{
|
|
case 1:{GestaltSpeak(252.5, oPC, "I wear my new title with great pride, mighty Angel...",
|
|
ANIMATION_FIREFORGET_BOW);}break;
|
|
case 2:{GestaltSpeak(252.5, oPC, "I vow to honour my role as Arena Champion with justice, integrity and might!",
|
|
ANIMATION_FIREFORGET_BOW); }break;
|
|
case 3:{GestaltSpeak(252.5, oPC, "I am honoured to wear my new title, divine and powerful angel!",
|
|
ANIMATION_FIREFORGET_BOW);} break;
|
|
case 4:{GestaltSpeak(252.5, oPC, "I bask at the hour of my glory, but I will always remember your superiority immortal overseer!",
|
|
ANIMATION_FIREFORGET_BOW); }break;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
iDice = d4();
|
|
switch(iDice)
|
|
{
|
|
case 1:{GestaltSpeak(252.5, oPC, "Shouldn't you all be kneeling...whelps...heh heh!",
|
|
ANIMATION_FIREFORGET_VICTORY2);}break;
|
|
case 2:{GestaltSpeak(252.5, oPC, "Alright! I am the greatest!",
|
|
ANIMATION_FIREFORGET_VICTORY3);}break;
|
|
case 3:{GestaltSpeak(252.5, oPC, "And just you remember who's boss around here from now on ok!!!!",
|
|
ANIMATION_LOOPING_TALK_FORCEFUL, 4.0); }break;
|
|
case 4:{GestaltSpeak(252.5, oPC, "Ahh the sweet taste of recognition! All hail to meeeee!",
|
|
ANIMATION_FIREFORGET_VICTORY2);}break;
|
|
}
|
|
}
|
|
|
|
GestaltSpeak(258.0, oStarfall, "Congratulations and Farewell, "+sTitle+" "+GetName(oPC)+". See you back at the arena.",
|
|
ANIMATION_FIREFORGET_GREETING);
|
|
|
|
|
|
|
|
GestaltFace (270.0, oGabriel, 0.0, 2, oPC);
|
|
GestaltActionAnimate(270.2, oGabriel, ANIMATION_FIREFORGET_GREETING);
|
|
GestaltFace (270.0, oMinion, 0.0, 2, oPC);
|
|
GestaltActionAnimate(270.2, oMinion, ANIMATION_FIREFORGET_GREETING);
|
|
TakeFlight(272.0, oStarfall);
|
|
TakeFlight(272.3, oGabriel);
|
|
TakeFlight(272.6, oMinion);
|
|
|
|
// PC and guards move to WP1
|
|
|
|
AssignCommand(oPC, ClearAllActions());
|
|
|
|
GestaltActionMove(0.0,oPC, PCwp2, FALSE, 0.0, 35.0);
|
|
GestaltActionMove(0.0,oGuard1, G1wp1, FALSE, 0.0, 25.0);
|
|
GestaltActionMove(0.0,oGuard2, G2wp1, FALSE, 0.0, 25.0);
|
|
|
|
// Angels & Demons kneel as Hero passes
|
|
|
|
GestaltActionAnimate(3.0, oAngel1, ANIMATION_LOOPING_MEDITATE, 500.0);
|
|
GestaltActionAnimate(3.0, oDemon1, ANIMATION_LOOPING_MEDITATE, 500.0);
|
|
|
|
|
|
GestaltActionAnimate(6.5, oAngel2, ANIMATION_LOOPING_MEDITATE, 500.0);
|
|
GestaltActionAnimate(6.5, oDemon2, ANIMATION_LOOPING_MEDITATE, 500.0);
|
|
|
|
|
|
|
|
GestaltActionAnimate(10.5, oAngel3, ANIMATION_LOOPING_MEDITATE, 500.0);
|
|
GestaltActionAnimate(10.5, oDemon3, ANIMATION_LOOPING_MEDITATE, 500.0);
|
|
|
|
|
|
GestaltActionAnimate(14.5, oAngel4, ANIMATION_LOOPING_MEDITATE, 500.0);
|
|
GestaltActionAnimate(14.5, oDemon4, ANIMATION_LOOPING_MEDITATE, 500.0);
|
|
|
|
|
|
// effect on kneeling angels
|
|
int eVisual = VFX_DUR_GLOBE_INVULNERABILITY;
|
|
|
|
|
|
GestaltApplyEffect(4.0, oAngel1, EffectVisualEffect(VFX_IMP_MAGIC_PROTECTION), PERMANENT);
|
|
GestaltApplyEffect(5.0, oAngel1, EffectVisualEffect(eVisual), PERMANENT);
|
|
GestaltApplyEffect(4.5, oDemon1, EffectVisualEffect(VFX_DUR_ELEMENTAL_SHIELD), PERMANENT);
|
|
|
|
GestaltApplyEffect(7.5, oAngel2, EffectVisualEffect(VFX_IMP_MAGIC_PROTECTION), PERMANENT);
|
|
GestaltApplyEffect(8.5, oAngel2, EffectVisualEffect(eVisual), PERMANENT);
|
|
GestaltApplyEffect(8.0, oDemon2, EffectVisualEffect(VFX_DUR_ELEMENTAL_SHIELD), PERMANENT);
|
|
|
|
GestaltApplyEffect(11.5, oAngel3, EffectVisualEffect(VFX_IMP_MAGIC_PROTECTION), PERMANENT);
|
|
GestaltApplyEffect(12.5, oAngel3, EffectVisualEffect(eVisual), PERMANENT);
|
|
GestaltApplyEffect(12.0, oDemon3, EffectVisualEffect(VFX_DUR_ELEMENTAL_SHIELD), PERMANENT);
|
|
|
|
GestaltApplyEffect(15.5, oAngel4, EffectVisualEffect(VFX_IMP_MAGIC_PROTECTION), PERMANENT);
|
|
GestaltApplyEffect(16.5, oAngel4, EffectVisualEffect(eVisual), PERMANENT);
|
|
GestaltApplyEffect(16.0, oDemon4, EffectVisualEffect(VFX_DUR_ELEMENTAL_SHIELD), PERMANENT);
|
|
|
|
|
|
// Guards peel off, face PC and worship
|
|
|
|
GestaltActionMove(13.5, oGuard1, G1wp2, FALSE, 0.0, 0.0);
|
|
GestaltActionMove(13.5, oGuard2, G2wp2, FALSE, 0.0, 0.0);
|
|
|
|
GestaltFace(18.5, oGuard1, 0.0, 0);
|
|
GestaltFace(18.5, oGuard2, 180.0, 0);
|
|
|
|
GestaltActionAnimate(19.0, oGuard1, ANIMATION_LOOPING_WORSHIP, 10.0);
|
|
GestaltActionAnimate(19.0, oGuard2, ANIMATION_LOOPING_WORSHIP, 10.0);
|
|
|
|
GestaltAmbientSound(32.0,oArea, TRUE, 0.0, 80);
|
|
GestaltAmbientSound(42.0,oArea, TRUE, 0.0, 90);
|
|
GestaltAmbientSound(50.0,oArea, TRUE, 0.0, 100);
|
|
|
|
// Angels fall in and escort PC
|
|
|
|
GestaltActionAnimate(35.0, oAngel5, ANIMATION_FIREFORGET_BOW);
|
|
GestaltActionAnimate(35.0, oDemon5, ANIMATION_FIREFORGET_BOW);
|
|
|
|
GestaltActionMove(39.0, oAngel5, Awp1, FALSE, 0.0, 3.0);
|
|
GestaltActionMove(39.0, oDemon5, Dwp1, FALSE, 0.0, 3.0);
|
|
|
|
GestaltActionMove(41.0, oAngel5, Awp2, FALSE, 0.0, 26.0);
|
|
GestaltActionMove(41.0, oDemon5, Dwp2, FALSE, 0.0, 26.0);
|
|
|
|
// PC puts away arms
|
|
|
|
GestaltActionUnequip(46.0, oPC, INVENTORY_SLOT_LEFTHAND);
|
|
GestaltActionUnequip(46.5, oPC, INVENTORY_SLOT_RIGHTHAND);
|
|
|
|
|
|
// Starfall walks out to greet PC
|
|
|
|
|
|
iDice = d4();
|
|
switch (iDice)
|
|
{
|
|
case 1: {GestaltSpeak(59.0, oStarfall, "Well, I'm glad you decided to show up *wink*!",
|
|
ANIMATION_NONE);}break;
|
|
case 2: {GestaltSpeak(59.0, oStarfall, "Good to see you here, "+GetName(oPC)+".",
|
|
ANIMATION_NONE);}break;
|
|
case 3: {GestaltSpeak(59.0, oStarfall, "Rather peaceful in Limbo isn't it! Let the ceremony begin!",
|
|
ANIMATION_NONE);}break;
|
|
case 4: {GestaltSpeak(59.0, oStarfall, "Welcome to the hall of champions!",
|
|
ANIMATION_NONE);}break;
|
|
}
|
|
|
|
|
|
if (iAlign==1)
|
|
{
|
|
iDice = d4();
|
|
switch(iDice)
|
|
{
|
|
case 1:{GestaltSpeak(65.0, oPC, "I am ready, great Starfall!",
|
|
ANIMATION_FIREFORGET_BOW);}break;
|
|
case 2:{GestaltSpeak(65.0, oPC, "I am ready to begin the ceremony!",
|
|
ANIMATION_FIREFORGET_BOW); }break;
|
|
case 3:{GestaltSpeak(65.0, oPC, "I am honured to recieve your recognition, mighty Starfall!",
|
|
ANIMATION_FIREFORGET_BOW);} break;
|
|
case 4:{GestaltSpeak(65.0, oPC, "Begin as you like, Starfall. I am ready",
|
|
ANIMATION_FIREFORGET_BOW); }break;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
iDice = d4();
|
|
switch(iDice)
|
|
{
|
|
case 1:{GestaltSpeak(65.0, oPC, "Hey! Where's Mephisto? And who are you?!",
|
|
ANIMATION_NONE);}break;
|
|
case 2:{GestaltSpeak(65.0, oPC, "Limbo shmimbo! And where's Mephisto? That ship jumper!!!",
|
|
ANIMATION_LOOPING_TALK_FORCEFUL, 3.0);}break;
|
|
case 3:{GestaltSpeak(65.0, oPC, "Warm up the cheerios, I'm here to partaaay!",
|
|
ANIMATION_LOOPING_TALK_FORCEFUL, 3.0); }break;
|
|
case 4:{GestaltSpeak(65.0, oPC, "Where did that goat headed fool, Mephisto go? And who are you?!",
|
|
ANIMATION_LOOPING_TALK_FORCEFUL, 3.0);}break;
|
|
}
|
|
}
|
|
|
|
iDice = d4();
|
|
switch (iDice)
|
|
{
|
|
case 1: {GestaltSpeak(70.0, oStarfall, "We gather here today to appoint our newest Supreme Champion of the Arena.",
|
|
ANIMATION_NONE);}break;
|
|
case 2: {GestaltSpeak(70.0, oStarfall, "We are here to witness the making of our new Supreme Champion of the Arena.",
|
|
ANIMATION_NONE);}break;
|
|
case 3: {GestaltSpeak(70.0, oStarfall, "Today is a celebration of our newest Supreme Champion of the Arena.",
|
|
ANIMATION_NONE);}break;
|
|
case 4: {GestaltSpeak(70.0, oStarfall, "We all come together today to honour our newest Supreme Champion of the Arena.",
|
|
ANIMATION_NONE);}break;
|
|
}
|
|
|
|
iDice = d4();
|
|
switch (iDice)
|
|
{
|
|
case 1: {GestaltSpeak(75.0, oStarfall, "The Phoenix Dragon is about to fly in your honour!",
|
|
ANIMATION_NONE);}break;
|
|
case 2: {GestaltSpeak(75.0, oStarfall, "Look to the skies! The Phoenix Dragon will soar in your honour!",
|
|
ANIMATION_NONE);}break;
|
|
case 3: {GestaltSpeak(75.0, oStarfall, "The sky will fill with fire as the Phoenix Dragon honours your name!",
|
|
ANIMATION_NONE);}break;
|
|
case 4: {GestaltSpeak(75.0, oStarfall, "You have earned the respect of the immortal Phoenix Dragon!",
|
|
ANIMATION_NONE);}break;
|
|
}
|
|
|
|
|
|
|
|
GestaltActionMove(41.0,oPC, PCwp3, FALSE, 0.0, 12.0);
|
|
GestaltActionMove(60.0,oStarfall, SFwp1, FALSE, 0.0, 10.0);
|
|
|
|
// Angels fly off
|
|
|
|
GestaltApplyEffect(54.7, oAngel5, EffectVisualEffect(VFX_IMP_PULSE_WIND), INSTANT);
|
|
GestaltApplyEffect(55.0, oDemon5, EffectVisualEffect(VFX_IMP_PULSE_WIND), INSTANT);
|
|
|
|
GestaltApplyEffect(54.0, oAngel5, EffectDisappear(), PERMANENT);
|
|
GestaltApplyEffect(54.3, oDemon5, EffectDisappear(), PERMANENT);
|
|
|
|
// Starfall calls phoenix dragon
|
|
|
|
GestaltSpeak(82.0, oStarfall, "Behold the great Phoenix Dragon...!",
|
|
ANIMATION_FIREFORGET_VICTORY2);
|
|
|
|
if (iAlign==1)
|
|
{
|
|
iDice = d4();
|
|
switch(iDice)
|
|
{
|
|
case 1:{GestaltSpeak(88.0, oPC, "It truly is a magnificent creature!",
|
|
ANIMATION_NONE);}break;
|
|
case 2:{GestaltSpeak(88.0, oPC, "I am deeply honoured by this!",
|
|
ANIMATION_NONE); }break;
|
|
case 3:{GestaltSpeak(88.0, oPC, "While I am grateful...I am not worthy of such a beautiful creature!",
|
|
ANIMATION_NONE);} break;
|
|
case 4:{GestaltSpeak(88.0, oPC, "I am but a grain of sand next to the vast power of that creature!",
|
|
ANIMATION_NONE); }break;
|
|
}
|
|
}
|
|
else
|
|
{
|
|
iDice = d4();
|
|
switch(iDice)
|
|
{
|
|
case 1:{GestaltSpeak(88.0, oPC, "I'd love to put a saddle on that baby!!",
|
|
ANIMATION_NONE);}break;
|
|
case 2:{GestaltSpeak(88.0, oPC, "Yeehaaar! Now THAT'S the shiyaaart!",
|
|
ANIMATION_NONE);}break;
|
|
case 3:{GestaltSpeak(88.0, oPC, "If only I had that sort of power at my disposal!",
|
|
ANIMATION_NONE); }break;
|
|
case 4:{GestaltSpeak(88.0, oPC, "Yeah BIG DEAL, its an oversized overcooked bird! Neeext!",
|
|
ANIMATION_NONE);}break;
|
|
}
|
|
}
|
|
|
|
GestaltSpeak(96.0, oStarfall, "We still have much to learn from the Phoenix Dragon's immeasurable power.",
|
|
ANIMATION_NONE);
|
|
|
|
|
|
iDice = d4();
|
|
switch (iDice)
|
|
{
|
|
case 1: {GestaltSpeak(104.0, oStarfall, "The time has come...Please step forward and kneel before me, champion",
|
|
ANIMATION_NONE);}break;
|
|
case 2: {GestaltSpeak(104.0, oStarfall, "It is time for you to recieve your new title as Supreme Champion! Kneel before me, "+GetName(oPC),
|
|
ANIMATION_NONE);}break;
|
|
case 3: {GestaltSpeak(104.0, oStarfall, "It gives me great pleasure to present to you your new title! Step forward and kneel, champion.",
|
|
ANIMATION_NONE);}break;
|
|
case 4: {GestaltSpeak(104.0, oStarfall, "Come forward and kneel before me, great champion. I have something for you!",
|
|
ANIMATION_NONE);}break;
|
|
}
|
|
|
|
|
|
iDice = d4();
|
|
switch (iDice)
|
|
{
|
|
case 1: {GestaltSpeak(120.0, oStarfall, "I give you this ring, bestowed only upon those who have been deemed worthy of the title...",
|
|
ANIMATION_LOOPING_GET_MID, 5.0);}break;
|
|
case 2: {GestaltSpeak(120.0, oStarfall, "I place this ring on your finger, symbolising the eternal cycle of the giving and recieving of great power...",
|
|
ANIMATION_LOOPING_GET_MID, 5.0);}break;
|
|
case 3: {GestaltSpeak(120.0, oStarfall, "With this ring, I vest within thee the power to rightfully claim the title of....",
|
|
ANIMATION_LOOPING_GET_MID, 5.0);}break;
|
|
case 4: {GestaltSpeak(120.0, oStarfall, "As a symbol of the fellowship within the Academy of Champions, I present you this ring and give you your new title...",
|
|
ANIMATION_LOOPING_GET_MID, 5.0);}break;
|
|
}
|
|
|
|
|
|
GestaltSpeak(129.0, oStarfall, "Arise, "+sTitle+" "+GetName(oPC)+".",
|
|
ANIMATION_NONE, 5.0);
|
|
|
|
|
|
GestaltSpeak(134.0, oStarfall, "I now proclaim thee as the new...Supreme Champion of the Arena!",
|
|
ANIMATION_FIREFORGET_VICTORY1, 5.0);
|
|
|
|
|
|
iDice = d4();
|
|
switch (iDice)
|
|
{
|
|
case 1: {GestaltSpeak(144.0, oStarfall, "Let us reflect on your performance throughout this season in the arena...",
|
|
ANIMATION_LOOPING_GET_MID, 5.0);}break;
|
|
case 2: {GestaltSpeak(144.0, oStarfall, "I would now like to reflect on your overall performance as you rose to supreme champion status...",
|
|
ANIMATION_LOOPING_GET_MID, 5.0);}break;
|
|
case 3: {GestaltSpeak(144.0, oStarfall, "It is now time to appraise your performance as a supreme champion in the Arena of Champions...",
|
|
ANIMATION_LOOPING_GET_MID, 5.0);}break;
|
|
case 4: {GestaltSpeak(144.0, oStarfall, "Let us follow tradition and look back on your overall performance...",
|
|
ANIMATION_LOOPING_GET_MID, 5.0);}break;
|
|
}
|
|
|
|
|
|
|
|
|
|
// PC turns, looks at dragon and looks back after sequence
|
|
|
|
GestaltFace(84.0, oPC, 270.0, 0);
|
|
GestaltFace(91.0, oPC, 90.0, 0);
|
|
|
|
// PC moves in and kneels in front of Starfall
|
|
|
|
GestaltActionMove(112.0,oPC, PCwp4, FALSE, 0.0, 3.0);
|
|
GestaltActionAnimate(115.2, oPC, ANIMATION_LOOPING_MEDITATE, 15.0);
|
|
|
|
// Starfall places ring on finger of PC
|
|
|
|
//GestaltActionAnimate(120.5, oStarfall, ANIMATION_LOOPING_GET_MID, 5.0);
|
|
|
|
// Starfall moves away and after a brief pause, turns to meet PC
|
|
|
|
GestaltActionMove(126.0,oStarfall, SFwp2, FALSE, 0.0, 6.0);
|
|
GestaltFace(130.0, oStarfall, 270.0, 0);
|
|
|
|
// All creatures cheer using their voice commands
|
|
|
|
MassCheerAll(138.0, oPC);
|
|
|
|
// Set up camera
|
|
|
|
SetLocalFloat(oPC,"fCameraDirection",90.0);
|
|
SetLocalFloat(oPC,"fCameraRange",20.0);
|
|
SetLocalFloat(oPC,"fCameraPitch",10.0);
|
|
|
|
// camera choreograpgy
|
|
|
|
GestaltCameraMove (0.0,
|
|
90.0,20.0,10.0,
|
|
90.0, 12.0,70.0,
|
|
10.0,30.0,oPC);
|
|
|
|
GestaltCameraMove (10.0,
|
|
90.0,12.0,70.0,
|
|
90.0,12.0,80.0,
|
|
20.0,30.0,oPC);
|
|
|
|
GestaltCameraMove (30.0,
|
|
90.0,12.0,80.0,
|
|
90.0,15.0,70.0,
|
|
10.0,30.0,oPC);
|
|
|
|
GestaltCameraMove (40.0,
|
|
90.0,15.0,70.0,
|
|
90.0,11.0,75.0,
|
|
10.0,30.0,oPC);
|
|
|
|
GestaltCameraMove (50.0,
|
|
90.0,11.0,75.0,
|
|
90.0,14.0,70.0,
|
|
4.0,30.0,oPC);
|
|
|
|
|
|
GestaltCameraMove (70.0,
|
|
90.0,14.0,70.0,
|
|
270.0,12.0,65.0,
|
|
5.0,30.0,oPC);
|
|
|
|
GestaltCameraMove (75.0,
|
|
270.0,12.0,65.0,
|
|
270.0,11.0,100.0,
|
|
10.0,30.0,oPC);
|
|
|
|
GestaltCameraMove (90.0,
|
|
270.0,11.0,100.0,
|
|
270.0,13.0,87.0,
|
|
7.0,30.0,oPC);
|
|
|
|
GestaltCameraMove (104.0,
|
|
270.0,13.0,87.0,
|
|
405.0,10.0,70.0,
|
|
6.0,30.0,oPC);
|
|
|
|
GestaltCameraMove (110.0,
|
|
405.0,10.0,70.0,
|
|
540.0,5.0,85.0,
|
|
8.0,30.0,oPC);
|
|
|
|
GestaltCameraMove (130.0,
|
|
540.0,5.0,85.0,
|
|
630.0,11.0,77.0,
|
|
8.0,30.0,oPC);
|
|
|
|
GestaltCameraMove (160.0,
|
|
630.0,11.0,77.0,
|
|
855.0,10.0,75.0,
|
|
30.0,30.0,oPC);
|
|
|
|
|
|
GestaltCameraMove (190.0,
|
|
855.0,10.0,75.0,
|
|
990.0,25.0,35.0,
|
|
20.0,30.0,oPC);
|
|
|
|
GestaltCameraMove (210.0,
|
|
990.0,25.0,35.0,
|
|
1170.0,25.0,75.0,
|
|
20.0,30.0,oPC);
|
|
|
|
GestaltCameraMove (252.0,
|
|
1170.0,25.0,75.0,
|
|
1170.0,16.0,70.0,
|
|
8.0,30.0,oPC);
|
|
|
|
// Fade camera out
|
|
|
|
GestaltCameraFade (275.0, oPC, FADE_OUT, FADE_SPEED_SLOW, 3.0);
|
|
|
|
// end of cutscene
|
|
|
|
GestaltStopCutscene (278.0, oPC);
|
|
|
|
|
|
|
|
//clean all waypoints
|
|
|
|
DelayCommand(300.0, CleanTargs2());
|
|
}
|