#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()); }