ejonesss
New member
- Joined
- Apr 30, 2012
- Messages
- 49
i saw some land downloads that text or speech could not be put in the scripts for certain wonders and some crash.
the say command allows you to add text to the script
here is the siren spell script from the mac version of black & white 2
the say command
say "BW2T_SCRIPT_SIREN_SONG_60"
play string sound "SCRIPT4_SEPIC_FLAMETHROWERWHOOSH4" //Wonder sound loop 1
allows playing a sound sample from one of the lug files ( i think)
i have been experimenting with scripting a little and some work and some dont.
the below script cant be compiled directly (maybe lionhead uses a different script compiler from what you can download or wants to protect their internal scripting engine or there are some missing db and enum files
as of crashing of some wonders you can not fire the volcano or earthquake in the water or the game crashes (sorry no tsunamis in black and white 2
start music "greek_chant"// to Wonder allows you to play one of the stock ogg files in the music folder
just change out the ogg files for speech
that loads text from one of the text bin files (i think) and displays it in the text field
//--------------------------------------------------------------------------------------------------------------
define SSTrue = 1
//--------------------------------------------------------------------------------------------------------------
global DancePositions[20]
global BellyPos=0
global ATIEndFlag=0
global Land11VolcanoCasting = 0
global WhiChEpicSpellIsBeingCast = 0
//--------------------------------------------------------------------------------------------------------------
begin script SirenSubtitles
SirenSubTimer=0
Marker1=0
Marker2=0
Marker3=0
Marker4=0
Marker5=0
Marker6=0
SkipMeNow=0
start
Marker1=get music "SirenSong" event "siren1" time
Marker2=get music "SirenSong" event "siren2" time
Marker3=get music "SirenSong" event "siren3" time
Marker4=get music "SirenSong" event "siren4" time
Marker5=get music "SirenSong" event "siren5" time
Marker6=get music "SirenSong" event "siren6" time
SirenSubTimer=create timer for 0 seconds
begin known cinema
while SkipMeNow==0
wait until get SirenSubTimer time since set >= Marker1
say "BW2T_SCRIPT_SIREN_SONG_10"
wait until get SirenSubTimer time since set >= Marker2
say "BW2T_SCRIPT_SIREN_SONG_20"
wait until get SirenSubTimer time since set >= Marker3
say "BW2T_SCRIPT_SIREN_SONG_30"
wait until get SirenSubTimer time since set >= Marker4
say "BW2T_SCRIPT_SIREN_SONG_40"
wait until get SirenSubTimer time since set >= Marker5
say "BW2T_SCRIPT_SIREN_SONG_50"
wait until get SirenSubTimer time since set >= Marker6
say "BW2T_SCRIPT_SIREN_SONG_60"
wait until read
clear dialogue
SkipMeNow=1
end while
end known cinema
end script SirenSubtitles
begin script SetupDancerPositions(whichspell)
start
if whichspell == 0 //siren
DancePositions[0]=marker at {-5.002, 5.872, 3.985}
DancePositions[1]=marker at {-4.460, 5.872, 5.124}
DancePositions[2]=marker at {-6.273, 5.872, 2.992}
DancePositions[3]=marker at {-6.614, 5.872, 3.953}
DancePositions[4]=marker at {-5.343, 5.872, 4.946}
DancePositions[5]=marker at {-4.072, 5.872, 5.938}
DancePositions[6]=marker at {-6.026, 5.872, 6.868}
DancePositions[7]=marker at {-7.885, 5.872, 2.961}
DancePositions[8]=marker at {-6.956, 5.872, 4.914}
DancePositions[9]=marker at {-2.801, 5.872, 6.930}
DancePositions[10]=marker at {-4.755, 5.872, 7.860}
DancePositions[11]=marker at {-8.878, 5.872, 4.232}
DancePositions[12]=marker at {-6.987, 5.872, 6.527}
DancePositions[13]=marker at {-4.135, 5.872, 9.162}
DancePositions[14]=marker at {-7.018, 5.872, 8.139}
DancePositions[15]=marker at {-8.909, 5.872, 5.844}
DancePositions[16]=marker at {-6.125, 5.872, 9.452}
DancePositions[17]=marker at {-10.184, 5.872, 4.364}
DancePositions[18]=marker at {-9.060, 5.872, 2.954}
DancePositions[19]=marker at {-8.444, 5.872, 6.993}
elsif whichspell == 1 //volcano
DancePositions[0]=marker at {0.315, 1.410, -11.642}
DancePositions[1]=marker at {-1.096, 1.149, -10.804}
DancePositions[2]=marker at {-1.338, 1.149, -12.035}
DancePositions[3]=marker at {-2.718, 1.149, -11.253}
DancePositions[4]=marker at {-4.341, 1.149, -11.701}
DancePositions[5]=marker at {1.216, 1.149, -10.748}
DancePositions[6]=marker at {2.988, 1.149, -10.841}
DancePositions[7]=marker at {2.205, 1.149, -12.221}
DancePositions[8]=marker at {0.853, 1.149, -12.594}
DancePositions[9]=marker at {-0.499, 1.149, -12.968}
DancePositions[10]=marker at {-3.352, 1.149, -13.174}
DancePositions[11]=marker at {-2.363, 1.149, -14.647}
DancePositions[12]=marker at {3.585, 1.149, -13.004}
DancePositions[13]=marker at {1.460, 1.149, -13.736}
DancePositions[14]=marker at {-0.051, 1.149, -14.590}
DancePositions[15]=marker at {-1.851, 1.149, -13.341}
DancePositions[16]=marker at {2.847, 1.149, -14.232}
DancePositions[17]=marker at {-4.436, 1.149, -14.380}
DancePositions[18]=marker at {1.534, 1.149, -15.423}
DancePositions[19]=marker at {-2.506, 1.149, -15.979}
elsif whichspell == 2 //earthquake
DancePositions[0]=marker at {0.311, 4.174, 11.804}
DancePositions[1]=marker at {1.725, 4.174, 12.277}
DancePositions[2]=marker at {2.670, 4.174, 11.807}
DancePositions[3]=marker at {-2.048, 4.174, 11.800}
DancePositions[4]=marker at {3.140, 4.174, 12.751}
DancePositions[5]=marker at {-0.687, 4.174, 12.500}
DancePositions[6]=marker at {1.763, 4.174, 13.611}
DancePositions[7]=marker at {3.323, 4.174, 14.148}
DancePositions[8]=marker at {0.499, 4.174, 12.812}
DancePositions[9]=marker at {-1.584, 4.174, 12.943}
DancePositions[10]=marker at {0.015, 4.174, 14.284}
DancePositions[11]=marker at {-2.436, 4.174, 14.294}
DancePositions[12]=marker at {2.224, 4.174, 15.010}
DancePositions[13]=marker at {-3.546, 4.174, 12.706}
DancePositions[14]=marker at {0.877, 4.174, 15.384}
DancePositions[15]=marker at {-1.332, 4.174, 14.658}
DancePositions[16]=marker at {-3.783, 4.174, 14.668}
DancePositions[17]=marker at {3.576, 4.174, 15.863}
DancePositions[18]=marker at {-0.590, 4.174, 16.125}
DancePositions[19]=marker at {-2.552, 4.174, 15.888}
elsif whichspell == 3 //Hurricane
DancePositions[0]=marker at {0.987, 0.354, 12.999}
DancePositions[1]=marker at {2.807, 0.354, 12.886}
DancePositions[2]=marker at {-0.981, 0.354, 13.670}
DancePositions[3]=marker at {-2.653, 0.354, 13.226}
DancePositions[4]=marker at {3.625, 0.354, 14.297}
DancePositions[5]=marker at {1.806, 0.354, 14.410}
DancePositions[6]=marker at {-0.014, 0.354, 14.523}
DancePositions[7]=marker at {4.444, 0.354, 15.707}
DancePositions[8]=marker at {-3.654, 0.354, 14.750}
DancePositions[9]=marker at {2.624, 0.354, 15.821}
DancePositions[10]=marker at {0.804, 0.354, 15.934}
DancePositions[11]=marker at {-1.982, 0.354, 15.194}
DancePositions[12]=marker at {3.443, 0.354, 17.231}
DancePositions[13]=marker at {-0.737, 0.354, 16.121}
DancePositions[14]=marker at {-4.098, 0.354, 16.422}
DancePositions[15]=marker at {-2.426, 0.354, 16.866}
DancePositions[16]=marker at {1.623, 0.354, 17.344}
DancePositions[17]=marker at {-0.197, 0.354, 17.458}
DancePositions[18]=marker at {4.627, 0.354, 12.773}
DancePositions[19]=marker at {-1.608, 0.354, 18.276}
elsif whichspell == 4 // WOMD
DancePositions[0]=marker at {3.521, 1.768, 22.614}
DancePositions[1]=marker at {1.650, 4.882, 22.793}
DancePositions[2]=marker at {-0.522, 1.645, 22.752}
DancePositions[3]=marker at {-2.539, 1.587, 22.649}
DancePositions[4]=marker at {-4.802, 1.554, 22.654}
DancePositions[5]=marker at {-5.902, 4.516, 22.897}
DancePositions[6]=marker at {4.788, 1.887, 23.757}
DancePositions[7]=marker at {2.626, 1.792, 23.854}
DancePositions[8]=marker at {0.592, 1.726, 23.804}
DancePositions[9]=marker at {-1.886, 1.651, 23.911}
DancePositions[10]=marker at {-3.893, 1.609, 23.813}
DancePositions[11]=marker at {-5.831, 1.594, 24.056}
DancePositions[12]=marker at {3.807, 1.917, 25.455}
DancePositions[13]=marker at {1.559, 1.816, 25.369}
DancePositions[14]=marker at {-0.393, 4.933, 25.322}
DancePositions[15]=marker at {-2.971, 1.681, 25.435}
DancePositions[16]=marker at {-5.221, 1.656, 25.827}
DancePositions[17]=marker at {-7.495, 1.621, 25.885}
DancePositions[18]=marker at {6.087, 1.953, 25.018}
DancePositions[19]=marker at {6.128, 1.882, 22.657}
end if
end script SetupDancerPositions
//--------------------------------------------------------------------------------------------------------------
begin script DancerLookAtWonder(MyVillager, Wonder, Count, whichspell)
MyPos=0
LessEvenDudes=0
start
MyPos=marker at get world position from Wonder to {DancePositions[Count]}
set MyVillager position to {MyPos}
LessEvenDudes = number from 0 to 10
//wait LessEvenDudes/20 seconds
//play anim "a_p_dance_worship3" on MyVillager loop -1
if WhiChEpicSpellIsBeingCast == 0
//siren
play anim "a_p_dance_worship1" on MyVillager loop -1
elsif WhiChEpicSpellIsBeingCast == 2
//earthquake
play anim "a_p_dance_celebrate03" on MyVillager loop -1
elsif WhiChEpicSpellIsBeingCast == 1
//volcano
play anim "a_p_dance_worship2" on MyVillager loop -1
else//if WhiChEpicSpellIsBeingCast == 3
//hurricane
play anim "a_p_dance_worship3" on MyVillager loop -1
end if
set MyVillager focus to {Wonder}
wait 20 seconds
end script DancerLookAtWonder
//--------------------------------------------------------------------------------------------------------------
begin script SirenSpell(EnemyWonder, Siren)
Shockeddude = 0
Wonder = 0
MyDance = 0
Dancer = 0
Count = 0
WonderCamPosLinkup=0
WonderCamFocLinkup=0
RelCamPos=0
RelCamFoc=0
StarVillager=0
StarNymph=0
AboveSiren=0
MeOldMateDave=0
MusicEventTimer=0
MusicEvent1=0
MusicEvent2=0
WaitUntilPairedAnimStarts=0
SirenMixer=0
HackVillexistingTimer=0
start
WhiChEpicSpellIsBeingCast = Siren
SirenMixer = create mixer
set mixer SirenMixer channel AUDIO_MIXER_CHANNEL_ANIMATION_VILLAGER to 1.0
set mixer SirenMixer channel AUDIO_MIXER_CHANNEL_MUSIC to 1.0
set mixer SirenMixer channel AUDIO_MIXER_CHANNEL_SCRIPT_SFX to 1.0
run script SetupDancerPositions(0)
begin interruptible cinema
//focus on wonder and dancers
Wonder = get Siren creator
if Wonder not exists
Wonder = EnemyWonder
end if
MyDance=get Wonder dance
Dancer=get first in MyDance
while Dancer exists and Count <= 19
detach Dancer from MyDance
run background script DancerLookAtWonder(Dancer, Wonder, Count, 0)
Count++
Dancer=get first in MyDance
if Count == 3
Shockeddude = Dancer
end if
end while
//start flame on wonder and zoom into other flame////////////////////////////////////////////////
AboveSiren = marker at {Siren}+{0.000,3.000,0.000}
move camera focus to {AboveSiren} time 2
move camera position to {AboveSiren} time 2
wait 1 seconds
set fade red 255 green 255 blue 255 time 1
wait 1 seconds
RelCamPos=marker at get world position from Wonder to {-13.391, 4.641, 1.841}
RelCamFoc=marker at get world position from Wonder to {54.199, 77.960, 9.324}
disable simulation sound
//Chant music around the wonder
start music "greek_chant"// to Wonder
play string sound "SCRIPT4_SEPIC_FLAMETHROWERWHOOSH4" //Wonder sound loop 1
play string sound "SCRIPT4_SEPIC_CASTSPELLFREEZE1" //Wonder sound loop 2
play string sound "SCRIPT4_SEPIC_EPICTOWERLOOP2"
play string sound "SCRIPT4_SEPIC_EPICTOWERLOOP3"
set camera position to {RelCamPos}
set camera focus to {RelCamFoc}
set fade in time 1
//wait 1 seconds
//suitable sfx for thunder and other ominous, powerful sounds
///////////////////////////////////////////////////////////////////////////////
RelCamPos=marker at get world position from Wonder to {-13.391, 4.641, 1.841}
RelCamFoc=marker at get world position from Wonder to {83.362, -18.238, 12.534}
move camera position to {RelCamPos} time 7 easein 0 easeout 0
move camera focus to {RelCamFoc} time 7 easein 0 easeout 0
wait 7 seconds
//wait until camera ready
RelCamPos=marker at get world position from Wonder to {-5.434, 4.101, -1.597}
RelCamFoc=marker at get world position from Wonder to {-11.843, -33.951, 90.658}
set camera position to {RelCamPos}
set camera focus to {RelCamFoc}
RelCamPos=marker at get world position from Wonder to {-5.434, 4.101, -1.597}
RelCamFoc=marker at get world position from Wonder to {-16.732, -38.075, 88.369}
move camera position to {RelCamPos} time 3 easein 0 easeout 0
move camera focus to {RelCamFoc} time 3 easein 0 easeout 0
wait 3 seconds
/*RelCamPos=marker at get world position from Wonder to {-18.947, 0.969, 13.936}
RelCamFoc=marker at get world position from Wonder to {21.481, 2.488, 10.615}
set camera position to {RelCamPos}
set camera focus to {RelCamFoc}
wait 3 seconds*/
RelCamPos=marker at get world position from Wonder to {8.296, 5.021, -7.021}
RelCamFoc=marker at get world position from Wonder to {-55.144, 73.302, 29.215}
set camera lens 50.000
set camera position to {RelCamPos}
set camera focus to {RelCamFoc}
set camera lens 48.000 time 2
//invoke Wonder EPIC_WONDER_STAGE_2 //Torch effect
invoke Wonder EPIC_WONDER_STAGE_2
invoke Wonder EPIC_WONDER_STAGE_3
invoke Wonder EPIC_WONDER_STAGE_4
invoke Wonder EPIC_WONDER_STAGE_5
wait 1 seconds
play string sound "SCRIPT4_SEPIC_EXPLOSION3" //Zap!
wait 0.5 seconds
//Remove the chant music
detach music from Wonder
if Shockeddude exists
play anim "A_P_SIREN_REACTION" on Shockeddude
wait 0.2 seconds
set camera lens 37.000
RelCamPos=marker at get world position from Shockeddude to {0.320, 2.783, 0.888}
RelCamFoc=marker at get world position from Shockeddude to {0.030, 1.948, 0.420}
set camera position to {RelCamPos}
set camera focus to {RelCamFoc}
set camera lens 34.000 time 1
end if
wait 1.4 seconds
RelCamPos=marker at get world position from Wonder to {-11.134, 5.632, 10.823}
RelCamFoc=marker at get world position from Wonder to {55.577, -28.978, -55.144}
set camera lens 70.000
set camera position to {RelCamPos}
set camera focus to {RelCamFoc}
wait 0.2 seconds
//invoke Wonder EPIC_WONDER_STAGE_1 //Bottom effect explosion
play string sound "SCRIPT4_SEPIC_EPICTOWERELECTRIC2" //Zap!
//set sky colour red 0 green 33 blue 64 time 9
enable predefined sky "SIREN" time 9
RelCamPos=marker at get world position from Wonder to {-11.134, 37.408, 10.823}
RelCamFoc=marker at get world position from Wonder to {59.923, 49.631, -58.477}
move camera position to {RelCamPos} time 9
move camera focus to {RelCamFoc} time 9
wait 1 second
invoke Wonder EPIC_WONDER_STAGE_2
play string sound "SCRIPT4_SEPIC_FLAMETHROWERWHOOSH1" //Zap!
play string sound "SCRIPT4_SEPIC_EXPLOSION1" //Zap!
wait 2 seconds
invoke Wonder EPIC_WONDER_STAGE_3
play string sound "SCRIPT4_SEPIC_FLAMETHROWERWHOOSH2" //Zap!
play string sound "SCRIPT4_SEPIC_EXPLOSION2" //Zap!
invoke Wonder EPIC_WONDER_STAGE_4
wait 3 seconds
//invoke Wonder EPIC_WONDER_STAGE_1 //Bottom effect explosion
invoke Wonder EPIC_WONDER_STAGE_5
wait 3 seconds
stop sound "SCRIPT4_SEPIC_EPICTOWERELECTRIC2"
//send beam of light into the air
invoke Wonder EPIC_WONDER_STAGE_6
//play string sound "SCRIPT4_SEPIC_FREEZE_01" //Long Beam Zap!
wait 0.2 seconds
play string sound "SCRIPT4_SEPIC_EXPLOSION3" //Zap!
play string sound "SCRIPT4_SEPIC_BEAMOFLIGHT11"
stop sound "SCRIPT4_SEPIC_EPICTOWERLOOP2"
stop sound "SCRIPT4_SEPIC_EPICTOWERLOOP3"
RelCamPos=marker at get world position from Wonder to {-11.134, 37.408, 10.823}
RelCamFoc=marker at get world position from Wonder to {1.549, 135.599, -3.240}
move camera position to {RelCamPos} time 0.6
move camera focus to {RelCamFoc} time 0.6
//wait until camera ready
disable shadows
wait 0.6 seconds
set fade red 255 green 255 blue 255 time 1.5
wait 0.7 seconds
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
set camera lens 50.000
invoke Siren EPIC_MOVE_VILLAGERS //teleports enemy villagers to siren (not on screen)
//Stop the wonder sounds.
stop sound "SCRIPT4_SEPIC_FLAMETHROWERWHOOSH4" //Wonder sound loop 1
stop sound "SCRIPT4_SEPIC_CASTSPELLFREEZE1" //Wonder sound loop 2
//beam down from afar?///////////////////////////////////////////////////////////////////////
RelCamPos=marker at get world position from Siren to {-40.758, 28.688, 34.774}
RelCamFoc=marker at get world position from Siren to {-40.010, 28.594, 34.117}
set camera position to {RelCamPos}
set camera focus to {RelCamFoc}
set fade in time 1
wait 0.8 seconds
invoke Siren EPIC_BEAM_DOWN //sEND BEAM DOWN
wait 0.2 seconds
RelCamPos=marker at get world position from Siren to {-40.758, 28.688, 34.774}
RelCamFoc=marker at get world position from Siren to {-40.043, 28.364, 34.154}
move camera position to {RelCamPos} time 1.5
move camera focus to {RelCamFoc} time 1.5
wait 0.5 seconds
play string sound "SCRIPT4_SEPIC_BEAMOFLIGHTSTART1" //Short Beam Zap!
play string sound "SCRIPT4_SEPIC_BEAMOFLIGHT11"
wait 0.5 second
play string sound "SCRIPT4_SEPIC_BEAMOFLIGHTLOOP7"
MeOldMateDave = get Siren star STAR_VILLAGER1
stop music
wait 2 seconds
if MeOldMateDave exists
set camera lens 34.000
RelCamPos=marker at get world position from MeOldMateDave to {-4.750, 3.239, 5.303}
RelCamFoc=marker at get world position from MeOldMateDave to {-3.949, 2.902, 4.809}
set camera position to {RelCamPos}
set camera focus to {RelCamFoc}
end if
wait 2 seconds
stop sound "SCRIPT4_SEPIC_BEAMOFLIGHT7"
stop sound "SCRIPT4_SEPIC_DECAYCHARGESPELL"
invoke Siren EPIC_SHOW_SIREN //show siren
invoke Siren EPIC_SHUT_DOWN_BEAM
//set mixer SirenMixer channel AUDIO_MIXER_CHANNEL_MUSIC to 0.7
//Once beam hits ground
start music "SirenSong"
run background script SirenSubtitles
stop sound "SCRIPT4_SEPIC_BEAMOFLIGHTLOOP7"
//Create a timer for time up counting
MusicEventTimer=create timer for 0 seconds
MusicEvent1=get music "SirenSong" event "e1" time
MusicEvent2=get music "SirenSong" event "e2" time
//new
set camera lens 50.000
RelCamPos=marker at get world position from Siren to {0.299, 18.818, 0.665}
RelCamFoc=marker at get world position from Siren to {-14.789, -92.676, -38.880}
set camera position to {RelCamPos}
set camera focus to {RelCamFoc}
RelCamPos=marker at get world position from Siren to {1.701, 60.175, -0.018}
RelCamFoc=marker at get world position from Siren to {-2.676, -45.344, -44.427}
move camera position to {RelCamPos} time 6.5
move camera focus to {RelCamFoc} time 6.5
wait 6.5 seconds
//wait until camera ready
set camera position follow Siren offset {-0.751, 7.898, 24.249}
set camera focus follow Siren offset {1.475, -3.738, -89.701}
wait 6 seconds
//close up
set camera lens 18.000
set camera position follow Siren offset {19.979, 9.857, 15.356}
set camera focus follow Siren offset {-70.832, 7.366, -54.446}
wait until get MusicEventTimer time since set >= MusicEvent1
set camera lens 50.000
set camera position follow Siren offset {1.072, 7.771, 24.721}
set camera focus follow Siren offset {-7.308, -4.887, -88.835}
set camera position to camera position
set camera focus to camera focus
invoke Siren EPIC_SUMMON_NYMPHS
wait 0.5 seconds
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
invoke Siren EPIC_ADD_NYMPHS //add nymphs
set camera position follow Siren offset {-0.253, 10.650, 22.440}
set camera focus follow Siren offset {-8.047, -10.598, -89.869}
wait 0.2 seconds
set camera position to camera position
set camera focus to camera focus
set camera lens 70.000 time 3
MeOldMateDave = get Siren star STAR_VILLAGER1
wait 3 seconds
//1st low tracking//////////////////////////////////////////////////////////////////////////////////
StarNymph = get Siren star STAR_NYMPH
if MeOldMateDave exists
RelCamPos=marker at get world position from MeOldMateDave to {0.509, 0.736, -1.712}
RelCamFoc=marker at get world position from MeOldMateDave to {0.651, 1.155, -0.815}
set camera position to {RelCamPos}
set camera focus to {RelCamFoc}
RelCamPos=marker at get world position from MeOldMateDave to {-1.194, 0.721, -1.437}
RelCamFoc=marker at get world position from MeOldMateDave to {-1.052, 1.140, -0.540}
move camera position to {RelCamPos} time 7
move camera focus to {RelCamFoc} time 7
end if
wait 6 seconds
//down siren leg//////////////////////////////////////////////////////////////////////////////////
RelCamPos=marker at get world position from Siren to {-3.240, 37.112, 3.494}
RelCamFoc=marker at get world position from Siren to {24.455, 52.740, -55.142}
set camera position to {RelCamPos}
set camera focus to {RelCamFoc}
RelCamPos=marker at get world position from Siren to {-16.892, 18.205, 24.192}
RelCamFoc=marker at get world position from Siren to {14.588, 37.534, -31.350}
move camera position to {RelCamPos} time 7
move camera focus to {RelCamFoc} time 7
wait 6 seconds
//follow nymph//////////////////////////////////////////////////////////////////////////////////
//set camera position follow StarNymph offset {-0.983,-0.576,-1.214}
//set camera focus follow StarNymph offset {4.980,4.667,11.096}
RelCamPos=marker at get world position from Siren to {-74.461, 44.675, -31.588}
RelCamFoc=marker at get world position from Siren to {8.412, 4.457, 7.328}
set camera position to {RelCamPos}
set camera focus to {RelCamFoc}
RelCamPos=marker at get world position from Siren to {-76.002, 44.476, -27.218}
RelCamFoc=marker at get world position from Siren to {9.026, 5.094, 7.707}
move camera position to {RelCamPos} time 5 easein 0 easeout 0
move camera focus to {RelCamFoc} time 5 easein 0 easeout 0
wait 5 seconds
//wait until get MusicEventTimer time since set >= MusicEvent2
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
RelCamPos=marker at get world position from Siren to {-14.726, 27.090, 9.482}
RelCamFoc=marker at get world position from Siren to {107.596, 61.052, -67.388}
set camera position to {RelCamPos}
set camera focus to {RelCamFoc}
//wait 2 seconds
invoke Siren EPIC_TRIGGER_NYMPHS_GESTURE //sic nymphs
wait 2 seconds
wait 1 seconds
invoke Siren EPIC_TRIGGER_NYMPHS //sic nymphs
RelCamPos=marker at get world position from Siren to {-14.726, 27.090, 9.482}
RelCamFoc=marker at get world position from Siren to {106.261, -55.985, 31.522}
move camera position to {RelCamPos} time 2.5
move camera focus to {RelCamFoc} time 2.5
wait 2.3 seconds
//play string sound "SCRIPT4_SEPIC_EPICTOWERLOOP1" //Beam us up sample!
/*RelCamPos=marker at get world position from Siren to {-35.153, 7.701, 28.173}
RelCamFoc=marker at get world position from Siren to {-33.970, 7.373, 27.803}
move camera position to {RelCamPos} time 3*/
StarVillager = get Siren star STAR_VILLAGER
if StarVillager exists
HackVillexistingTimer =create timer for 10 seconds
while WaitUntilPairedAnimStarts not exists or get HackVillexistingTimer time remaining <= 0
WaitUntilPairedAnimStarts = get Siren star EPIC_WONDER_HACK_VILLAGER
end while
end if
StarVillager = get Siren star STAR_VILLAGER
if StarVillager exists
set camera lens 38.000
RelCamPos=marker at get world position from StarVillager to {0.820, 1.323, 1.452}
RelCamFoc=marker at get world position from StarVillager to {0.187, 1.248, 0.682}
set camera position to {RelCamPos}
set camera focus to {RelCamFoc}
wait 2 seconds
RelCamPos=marker at get world position from StarVillager to {3.891, 1.394, -1.827}
RelCamFoc=marker at get world position from StarVillager to {3.160, 1.347, -1.146}
set camera position to {RelCamPos}
set camera focus to {RelCamFoc}
wait 2 seconds
RelCamPos=marker at get world position from StarVillager to {11.107, 2.570, 6.509}
RelCamFoc=marker at get world position from StarVillager to {10.243, 2.511, 6.010}
set camera position to {RelCamPos}
set camera focus to {RelCamFoc}
wait 5 seconds
RelCamPos=marker at get world position from StarVillager to {24.125, 12.082, 39.660}
RelCamFoc=marker at get world position from StarVillager to {23.729, 11.905, 38.759}
move camera position to {RelCamPos} time 8
move camera focus to {RelCamFoc} time 8
wait 8 seconds
//wait until camera ready
end if
play string sound "SCRIPT4_SEPIC_SIRENDISAPPEAR"
//stop sound "SCRIPT4_SEPIC_EPICTOWERLOOP1"
///this removal sample will now be played in code
//play string sound "SCRIPT4_SEPIC_BEAMOFLIGHTLOOP6"
invoke Siren EPIC_REMOVE_SIREN
set camera lens 70.000
RelCamPos=marker at get world position from Siren to {-0.137, 15.183, 43.739}
RelCamFoc=marker at get world position from Siren to {-0.093, 15.178, 42.740}
set camera position to {RelCamPos}
set camera focus to {RelCamFoc}
wait 2 seconds
RelCamPos=marker at get world position from Siren to {-0.137, 15.183, 43.739}
RelCamFoc=marker at get world position from Siren to {-0.094, 14.899, 42.781}
move camera position to {RelCamPos} time 4
move camera focus to {RelCamFoc} time 4
invoke Wonder EPIC_WONDER_STAGE_5
invoke Wonder EPIC_WONDER_STAGE_7
wait 7 seconds
//reset sky colour 3 seconds//restore sky colour to normal
enable predefined sky "DEFAULT" time 3
wait 3 seconds
enable simulation sound
enable shadows
stop music//kill the music
invoke Wonder EPIC_WONDER_STAGE_LAST
ATIEndFlag=1
wait 2 seconds
end cinema//exit widescreen
destroy mixer SirenMixer with fadetime 2
end script SirenSpell
the say command allows you to add text to the script
here is the siren spell script from the mac version of black & white 2
the say command
say "BW2T_SCRIPT_SIREN_SONG_60"
play string sound "SCRIPT4_SEPIC_FLAMETHROWERWHOOSH4" //Wonder sound loop 1
allows playing a sound sample from one of the lug files ( i think)
i have been experimenting with scripting a little and some work and some dont.
the below script cant be compiled directly (maybe lionhead uses a different script compiler from what you can download or wants to protect their internal scripting engine or there are some missing db and enum files
as of crashing of some wonders you can not fire the volcano or earthquake in the water or the game crashes (sorry no tsunamis in black and white 2
start music "greek_chant"// to Wonder allows you to play one of the stock ogg files in the music folder
just change out the ogg files for speech
that loads text from one of the text bin files (i think) and displays it in the text field
//--------------------------------------------------------------------------------------------------------------
define SSTrue = 1
//--------------------------------------------------------------------------------------------------------------
global DancePositions[20]
global BellyPos=0
global ATIEndFlag=0
global Land11VolcanoCasting = 0
global WhiChEpicSpellIsBeingCast = 0
//--------------------------------------------------------------------------------------------------------------
begin script SirenSubtitles
SirenSubTimer=0
Marker1=0
Marker2=0
Marker3=0
Marker4=0
Marker5=0
Marker6=0
SkipMeNow=0
start
Marker1=get music "SirenSong" event "siren1" time
Marker2=get music "SirenSong" event "siren2" time
Marker3=get music "SirenSong" event "siren3" time
Marker4=get music "SirenSong" event "siren4" time
Marker5=get music "SirenSong" event "siren5" time
Marker6=get music "SirenSong" event "siren6" time
SirenSubTimer=create timer for 0 seconds
begin known cinema
while SkipMeNow==0
wait until get SirenSubTimer time since set >= Marker1
say "BW2T_SCRIPT_SIREN_SONG_10"
wait until get SirenSubTimer time since set >= Marker2
say "BW2T_SCRIPT_SIREN_SONG_20"
wait until get SirenSubTimer time since set >= Marker3
say "BW2T_SCRIPT_SIREN_SONG_30"
wait until get SirenSubTimer time since set >= Marker4
say "BW2T_SCRIPT_SIREN_SONG_40"
wait until get SirenSubTimer time since set >= Marker5
say "BW2T_SCRIPT_SIREN_SONG_50"
wait until get SirenSubTimer time since set >= Marker6
say "BW2T_SCRIPT_SIREN_SONG_60"
wait until read
clear dialogue
SkipMeNow=1
end while
end known cinema
end script SirenSubtitles
begin script SetupDancerPositions(whichspell)
start
if whichspell == 0 //siren
DancePositions[0]=marker at {-5.002, 5.872, 3.985}
DancePositions[1]=marker at {-4.460, 5.872, 5.124}
DancePositions[2]=marker at {-6.273, 5.872, 2.992}
DancePositions[3]=marker at {-6.614, 5.872, 3.953}
DancePositions[4]=marker at {-5.343, 5.872, 4.946}
DancePositions[5]=marker at {-4.072, 5.872, 5.938}
DancePositions[6]=marker at {-6.026, 5.872, 6.868}
DancePositions[7]=marker at {-7.885, 5.872, 2.961}
DancePositions[8]=marker at {-6.956, 5.872, 4.914}
DancePositions[9]=marker at {-2.801, 5.872, 6.930}
DancePositions[10]=marker at {-4.755, 5.872, 7.860}
DancePositions[11]=marker at {-8.878, 5.872, 4.232}
DancePositions[12]=marker at {-6.987, 5.872, 6.527}
DancePositions[13]=marker at {-4.135, 5.872, 9.162}
DancePositions[14]=marker at {-7.018, 5.872, 8.139}
DancePositions[15]=marker at {-8.909, 5.872, 5.844}
DancePositions[16]=marker at {-6.125, 5.872, 9.452}
DancePositions[17]=marker at {-10.184, 5.872, 4.364}
DancePositions[18]=marker at {-9.060, 5.872, 2.954}
DancePositions[19]=marker at {-8.444, 5.872, 6.993}
elsif whichspell == 1 //volcano
DancePositions[0]=marker at {0.315, 1.410, -11.642}
DancePositions[1]=marker at {-1.096, 1.149, -10.804}
DancePositions[2]=marker at {-1.338, 1.149, -12.035}
DancePositions[3]=marker at {-2.718, 1.149, -11.253}
DancePositions[4]=marker at {-4.341, 1.149, -11.701}
DancePositions[5]=marker at {1.216, 1.149, -10.748}
DancePositions[6]=marker at {2.988, 1.149, -10.841}
DancePositions[7]=marker at {2.205, 1.149, -12.221}
DancePositions[8]=marker at {0.853, 1.149, -12.594}
DancePositions[9]=marker at {-0.499, 1.149, -12.968}
DancePositions[10]=marker at {-3.352, 1.149, -13.174}
DancePositions[11]=marker at {-2.363, 1.149, -14.647}
DancePositions[12]=marker at {3.585, 1.149, -13.004}
DancePositions[13]=marker at {1.460, 1.149, -13.736}
DancePositions[14]=marker at {-0.051, 1.149, -14.590}
DancePositions[15]=marker at {-1.851, 1.149, -13.341}
DancePositions[16]=marker at {2.847, 1.149, -14.232}
DancePositions[17]=marker at {-4.436, 1.149, -14.380}
DancePositions[18]=marker at {1.534, 1.149, -15.423}
DancePositions[19]=marker at {-2.506, 1.149, -15.979}
elsif whichspell == 2 //earthquake
DancePositions[0]=marker at {0.311, 4.174, 11.804}
DancePositions[1]=marker at {1.725, 4.174, 12.277}
DancePositions[2]=marker at {2.670, 4.174, 11.807}
DancePositions[3]=marker at {-2.048, 4.174, 11.800}
DancePositions[4]=marker at {3.140, 4.174, 12.751}
DancePositions[5]=marker at {-0.687, 4.174, 12.500}
DancePositions[6]=marker at {1.763, 4.174, 13.611}
DancePositions[7]=marker at {3.323, 4.174, 14.148}
DancePositions[8]=marker at {0.499, 4.174, 12.812}
DancePositions[9]=marker at {-1.584, 4.174, 12.943}
DancePositions[10]=marker at {0.015, 4.174, 14.284}
DancePositions[11]=marker at {-2.436, 4.174, 14.294}
DancePositions[12]=marker at {2.224, 4.174, 15.010}
DancePositions[13]=marker at {-3.546, 4.174, 12.706}
DancePositions[14]=marker at {0.877, 4.174, 15.384}
DancePositions[15]=marker at {-1.332, 4.174, 14.658}
DancePositions[16]=marker at {-3.783, 4.174, 14.668}
DancePositions[17]=marker at {3.576, 4.174, 15.863}
DancePositions[18]=marker at {-0.590, 4.174, 16.125}
DancePositions[19]=marker at {-2.552, 4.174, 15.888}
elsif whichspell == 3 //Hurricane
DancePositions[0]=marker at {0.987, 0.354, 12.999}
DancePositions[1]=marker at {2.807, 0.354, 12.886}
DancePositions[2]=marker at {-0.981, 0.354, 13.670}
DancePositions[3]=marker at {-2.653, 0.354, 13.226}
DancePositions[4]=marker at {3.625, 0.354, 14.297}
DancePositions[5]=marker at {1.806, 0.354, 14.410}
DancePositions[6]=marker at {-0.014, 0.354, 14.523}
DancePositions[7]=marker at {4.444, 0.354, 15.707}
DancePositions[8]=marker at {-3.654, 0.354, 14.750}
DancePositions[9]=marker at {2.624, 0.354, 15.821}
DancePositions[10]=marker at {0.804, 0.354, 15.934}
DancePositions[11]=marker at {-1.982, 0.354, 15.194}
DancePositions[12]=marker at {3.443, 0.354, 17.231}
DancePositions[13]=marker at {-0.737, 0.354, 16.121}
DancePositions[14]=marker at {-4.098, 0.354, 16.422}
DancePositions[15]=marker at {-2.426, 0.354, 16.866}
DancePositions[16]=marker at {1.623, 0.354, 17.344}
DancePositions[17]=marker at {-0.197, 0.354, 17.458}
DancePositions[18]=marker at {4.627, 0.354, 12.773}
DancePositions[19]=marker at {-1.608, 0.354, 18.276}
elsif whichspell == 4 // WOMD
DancePositions[0]=marker at {3.521, 1.768, 22.614}
DancePositions[1]=marker at {1.650, 4.882, 22.793}
DancePositions[2]=marker at {-0.522, 1.645, 22.752}
DancePositions[3]=marker at {-2.539, 1.587, 22.649}
DancePositions[4]=marker at {-4.802, 1.554, 22.654}
DancePositions[5]=marker at {-5.902, 4.516, 22.897}
DancePositions[6]=marker at {4.788, 1.887, 23.757}
DancePositions[7]=marker at {2.626, 1.792, 23.854}
DancePositions[8]=marker at {0.592, 1.726, 23.804}
DancePositions[9]=marker at {-1.886, 1.651, 23.911}
DancePositions[10]=marker at {-3.893, 1.609, 23.813}
DancePositions[11]=marker at {-5.831, 1.594, 24.056}
DancePositions[12]=marker at {3.807, 1.917, 25.455}
DancePositions[13]=marker at {1.559, 1.816, 25.369}
DancePositions[14]=marker at {-0.393, 4.933, 25.322}
DancePositions[15]=marker at {-2.971, 1.681, 25.435}
DancePositions[16]=marker at {-5.221, 1.656, 25.827}
DancePositions[17]=marker at {-7.495, 1.621, 25.885}
DancePositions[18]=marker at {6.087, 1.953, 25.018}
DancePositions[19]=marker at {6.128, 1.882, 22.657}
end if
end script SetupDancerPositions
//--------------------------------------------------------------------------------------------------------------
begin script DancerLookAtWonder(MyVillager, Wonder, Count, whichspell)
MyPos=0
LessEvenDudes=0
start
MyPos=marker at get world position from Wonder to {DancePositions[Count]}
set MyVillager position to {MyPos}
LessEvenDudes = number from 0 to 10
//wait LessEvenDudes/20 seconds
//play anim "a_p_dance_worship3" on MyVillager loop -1
if WhiChEpicSpellIsBeingCast == 0
//siren
play anim "a_p_dance_worship1" on MyVillager loop -1
elsif WhiChEpicSpellIsBeingCast == 2
//earthquake
play anim "a_p_dance_celebrate03" on MyVillager loop -1
elsif WhiChEpicSpellIsBeingCast == 1
//volcano
play anim "a_p_dance_worship2" on MyVillager loop -1
else//if WhiChEpicSpellIsBeingCast == 3
//hurricane
play anim "a_p_dance_worship3" on MyVillager loop -1
end if
set MyVillager focus to {Wonder}
wait 20 seconds
end script DancerLookAtWonder
//--------------------------------------------------------------------------------------------------------------
begin script SirenSpell(EnemyWonder, Siren)
Shockeddude = 0
Wonder = 0
MyDance = 0
Dancer = 0
Count = 0
WonderCamPosLinkup=0
WonderCamFocLinkup=0
RelCamPos=0
RelCamFoc=0
StarVillager=0
StarNymph=0
AboveSiren=0
MeOldMateDave=0
MusicEventTimer=0
MusicEvent1=0
MusicEvent2=0
WaitUntilPairedAnimStarts=0
SirenMixer=0
HackVillexistingTimer=0
start
WhiChEpicSpellIsBeingCast = Siren
SirenMixer = create mixer
set mixer SirenMixer channel AUDIO_MIXER_CHANNEL_ANIMATION_VILLAGER to 1.0
set mixer SirenMixer channel AUDIO_MIXER_CHANNEL_MUSIC to 1.0
set mixer SirenMixer channel AUDIO_MIXER_CHANNEL_SCRIPT_SFX to 1.0
run script SetupDancerPositions(0)
begin interruptible cinema
//focus on wonder and dancers
Wonder = get Siren creator
if Wonder not exists
Wonder = EnemyWonder
end if
MyDance=get Wonder dance
Dancer=get first in MyDance
while Dancer exists and Count <= 19
detach Dancer from MyDance
run background script DancerLookAtWonder(Dancer, Wonder, Count, 0)
Count++
Dancer=get first in MyDance
if Count == 3
Shockeddude = Dancer
end if
end while
//start flame on wonder and zoom into other flame////////////////////////////////////////////////
AboveSiren = marker at {Siren}+{0.000,3.000,0.000}
move camera focus to {AboveSiren} time 2
move camera position to {AboveSiren} time 2
wait 1 seconds
set fade red 255 green 255 blue 255 time 1
wait 1 seconds
RelCamPos=marker at get world position from Wonder to {-13.391, 4.641, 1.841}
RelCamFoc=marker at get world position from Wonder to {54.199, 77.960, 9.324}
disable simulation sound
//Chant music around the wonder
start music "greek_chant"// to Wonder
play string sound "SCRIPT4_SEPIC_FLAMETHROWERWHOOSH4" //Wonder sound loop 1
play string sound "SCRIPT4_SEPIC_CASTSPELLFREEZE1" //Wonder sound loop 2
play string sound "SCRIPT4_SEPIC_EPICTOWERLOOP2"
play string sound "SCRIPT4_SEPIC_EPICTOWERLOOP3"
set camera position to {RelCamPos}
set camera focus to {RelCamFoc}
set fade in time 1
//wait 1 seconds
//suitable sfx for thunder and other ominous, powerful sounds
///////////////////////////////////////////////////////////////////////////////
RelCamPos=marker at get world position from Wonder to {-13.391, 4.641, 1.841}
RelCamFoc=marker at get world position from Wonder to {83.362, -18.238, 12.534}
move camera position to {RelCamPos} time 7 easein 0 easeout 0
move camera focus to {RelCamFoc} time 7 easein 0 easeout 0
wait 7 seconds
//wait until camera ready
RelCamPos=marker at get world position from Wonder to {-5.434, 4.101, -1.597}
RelCamFoc=marker at get world position from Wonder to {-11.843, -33.951, 90.658}
set camera position to {RelCamPos}
set camera focus to {RelCamFoc}
RelCamPos=marker at get world position from Wonder to {-5.434, 4.101, -1.597}
RelCamFoc=marker at get world position from Wonder to {-16.732, -38.075, 88.369}
move camera position to {RelCamPos} time 3 easein 0 easeout 0
move camera focus to {RelCamFoc} time 3 easein 0 easeout 0
wait 3 seconds
/*RelCamPos=marker at get world position from Wonder to {-18.947, 0.969, 13.936}
RelCamFoc=marker at get world position from Wonder to {21.481, 2.488, 10.615}
set camera position to {RelCamPos}
set camera focus to {RelCamFoc}
wait 3 seconds*/
RelCamPos=marker at get world position from Wonder to {8.296, 5.021, -7.021}
RelCamFoc=marker at get world position from Wonder to {-55.144, 73.302, 29.215}
set camera lens 50.000
set camera position to {RelCamPos}
set camera focus to {RelCamFoc}
set camera lens 48.000 time 2
//invoke Wonder EPIC_WONDER_STAGE_2 //Torch effect
invoke Wonder EPIC_WONDER_STAGE_2
invoke Wonder EPIC_WONDER_STAGE_3
invoke Wonder EPIC_WONDER_STAGE_4
invoke Wonder EPIC_WONDER_STAGE_5
wait 1 seconds
play string sound "SCRIPT4_SEPIC_EXPLOSION3" //Zap!
wait 0.5 seconds
//Remove the chant music
detach music from Wonder
if Shockeddude exists
play anim "A_P_SIREN_REACTION" on Shockeddude
wait 0.2 seconds
set camera lens 37.000
RelCamPos=marker at get world position from Shockeddude to {0.320, 2.783, 0.888}
RelCamFoc=marker at get world position from Shockeddude to {0.030, 1.948, 0.420}
set camera position to {RelCamPos}
set camera focus to {RelCamFoc}
set camera lens 34.000 time 1
end if
wait 1.4 seconds
RelCamPos=marker at get world position from Wonder to {-11.134, 5.632, 10.823}
RelCamFoc=marker at get world position from Wonder to {55.577, -28.978, -55.144}
set camera lens 70.000
set camera position to {RelCamPos}
set camera focus to {RelCamFoc}
wait 0.2 seconds
//invoke Wonder EPIC_WONDER_STAGE_1 //Bottom effect explosion
play string sound "SCRIPT4_SEPIC_EPICTOWERELECTRIC2" //Zap!
//set sky colour red 0 green 33 blue 64 time 9
enable predefined sky "SIREN" time 9
RelCamPos=marker at get world position from Wonder to {-11.134, 37.408, 10.823}
RelCamFoc=marker at get world position from Wonder to {59.923, 49.631, -58.477}
move camera position to {RelCamPos} time 9
move camera focus to {RelCamFoc} time 9
wait 1 second
invoke Wonder EPIC_WONDER_STAGE_2
play string sound "SCRIPT4_SEPIC_FLAMETHROWERWHOOSH1" //Zap!
play string sound "SCRIPT4_SEPIC_EXPLOSION1" //Zap!
wait 2 seconds
invoke Wonder EPIC_WONDER_STAGE_3
play string sound "SCRIPT4_SEPIC_FLAMETHROWERWHOOSH2" //Zap!
play string sound "SCRIPT4_SEPIC_EXPLOSION2" //Zap!
invoke Wonder EPIC_WONDER_STAGE_4
wait 3 seconds
//invoke Wonder EPIC_WONDER_STAGE_1 //Bottom effect explosion
invoke Wonder EPIC_WONDER_STAGE_5
wait 3 seconds
stop sound "SCRIPT4_SEPIC_EPICTOWERELECTRIC2"
//send beam of light into the air
invoke Wonder EPIC_WONDER_STAGE_6
//play string sound "SCRIPT4_SEPIC_FREEZE_01" //Long Beam Zap!
wait 0.2 seconds
play string sound "SCRIPT4_SEPIC_EXPLOSION3" //Zap!
play string sound "SCRIPT4_SEPIC_BEAMOFLIGHT11"
stop sound "SCRIPT4_SEPIC_EPICTOWERLOOP2"
stop sound "SCRIPT4_SEPIC_EPICTOWERLOOP3"
RelCamPos=marker at get world position from Wonder to {-11.134, 37.408, 10.823}
RelCamFoc=marker at get world position from Wonder to {1.549, 135.599, -3.240}
move camera position to {RelCamPos} time 0.6
move camera focus to {RelCamFoc} time 0.6
//wait until camera ready
disable shadows
wait 0.6 seconds
set fade red 255 green 255 blue 255 time 1.5
wait 0.7 seconds
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
set camera lens 50.000
invoke Siren EPIC_MOVE_VILLAGERS //teleports enemy villagers to siren (not on screen)
//Stop the wonder sounds.
stop sound "SCRIPT4_SEPIC_FLAMETHROWERWHOOSH4" //Wonder sound loop 1
stop sound "SCRIPT4_SEPIC_CASTSPELLFREEZE1" //Wonder sound loop 2
//beam down from afar?///////////////////////////////////////////////////////////////////////
RelCamPos=marker at get world position from Siren to {-40.758, 28.688, 34.774}
RelCamFoc=marker at get world position from Siren to {-40.010, 28.594, 34.117}
set camera position to {RelCamPos}
set camera focus to {RelCamFoc}
set fade in time 1
wait 0.8 seconds
invoke Siren EPIC_BEAM_DOWN //sEND BEAM DOWN
wait 0.2 seconds
RelCamPos=marker at get world position from Siren to {-40.758, 28.688, 34.774}
RelCamFoc=marker at get world position from Siren to {-40.043, 28.364, 34.154}
move camera position to {RelCamPos} time 1.5
move camera focus to {RelCamFoc} time 1.5
wait 0.5 seconds
play string sound "SCRIPT4_SEPIC_BEAMOFLIGHTSTART1" //Short Beam Zap!
play string sound "SCRIPT4_SEPIC_BEAMOFLIGHT11"
wait 0.5 second
play string sound "SCRIPT4_SEPIC_BEAMOFLIGHTLOOP7"
MeOldMateDave = get Siren star STAR_VILLAGER1
stop music
wait 2 seconds
if MeOldMateDave exists
set camera lens 34.000
RelCamPos=marker at get world position from MeOldMateDave to {-4.750, 3.239, 5.303}
RelCamFoc=marker at get world position from MeOldMateDave to {-3.949, 2.902, 4.809}
set camera position to {RelCamPos}
set camera focus to {RelCamFoc}
end if
wait 2 seconds
stop sound "SCRIPT4_SEPIC_BEAMOFLIGHT7"
stop sound "SCRIPT4_SEPIC_DECAYCHARGESPELL"
invoke Siren EPIC_SHOW_SIREN //show siren
invoke Siren EPIC_SHUT_DOWN_BEAM
//set mixer SirenMixer channel AUDIO_MIXER_CHANNEL_MUSIC to 0.7
//Once beam hits ground
start music "SirenSong"
run background script SirenSubtitles
stop sound "SCRIPT4_SEPIC_BEAMOFLIGHTLOOP7"
//Create a timer for time up counting
MusicEventTimer=create timer for 0 seconds
MusicEvent1=get music "SirenSong" event "e1" time
MusicEvent2=get music "SirenSong" event "e2" time
//new
set camera lens 50.000
RelCamPos=marker at get world position from Siren to {0.299, 18.818, 0.665}
RelCamFoc=marker at get world position from Siren to {-14.789, -92.676, -38.880}
set camera position to {RelCamPos}
set camera focus to {RelCamFoc}
RelCamPos=marker at get world position from Siren to {1.701, 60.175, -0.018}
RelCamFoc=marker at get world position from Siren to {-2.676, -45.344, -44.427}
move camera position to {RelCamPos} time 6.5
move camera focus to {RelCamFoc} time 6.5
wait 6.5 seconds
//wait until camera ready
set camera position follow Siren offset {-0.751, 7.898, 24.249}
set camera focus follow Siren offset {1.475, -3.738, -89.701}
wait 6 seconds
//close up
set camera lens 18.000
set camera position follow Siren offset {19.979, 9.857, 15.356}
set camera focus follow Siren offset {-70.832, 7.366, -54.446}
wait until get MusicEventTimer time since set >= MusicEvent1
set camera lens 50.000
set camera position follow Siren offset {1.072, 7.771, 24.721}
set camera focus follow Siren offset {-7.308, -4.887, -88.835}
set camera position to camera position
set camera focus to camera focus
invoke Siren EPIC_SUMMON_NYMPHS
wait 0.5 seconds
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
invoke Siren EPIC_ADD_NYMPHS //add nymphs
set camera position follow Siren offset {-0.253, 10.650, 22.440}
set camera focus follow Siren offset {-8.047, -10.598, -89.869}
wait 0.2 seconds
set camera position to camera position
set camera focus to camera focus
set camera lens 70.000 time 3
MeOldMateDave = get Siren star STAR_VILLAGER1
wait 3 seconds
//1st low tracking//////////////////////////////////////////////////////////////////////////////////
StarNymph = get Siren star STAR_NYMPH
if MeOldMateDave exists
RelCamPos=marker at get world position from MeOldMateDave to {0.509, 0.736, -1.712}
RelCamFoc=marker at get world position from MeOldMateDave to {0.651, 1.155, -0.815}
set camera position to {RelCamPos}
set camera focus to {RelCamFoc}
RelCamPos=marker at get world position from MeOldMateDave to {-1.194, 0.721, -1.437}
RelCamFoc=marker at get world position from MeOldMateDave to {-1.052, 1.140, -0.540}
move camera position to {RelCamPos} time 7
move camera focus to {RelCamFoc} time 7
end if
wait 6 seconds
//down siren leg//////////////////////////////////////////////////////////////////////////////////
RelCamPos=marker at get world position from Siren to {-3.240, 37.112, 3.494}
RelCamFoc=marker at get world position from Siren to {24.455, 52.740, -55.142}
set camera position to {RelCamPos}
set camera focus to {RelCamFoc}
RelCamPos=marker at get world position from Siren to {-16.892, 18.205, 24.192}
RelCamFoc=marker at get world position from Siren to {14.588, 37.534, -31.350}
move camera position to {RelCamPos} time 7
move camera focus to {RelCamFoc} time 7
wait 6 seconds
//follow nymph//////////////////////////////////////////////////////////////////////////////////
//set camera position follow StarNymph offset {-0.983,-0.576,-1.214}
//set camera focus follow StarNymph offset {4.980,4.667,11.096}
RelCamPos=marker at get world position from Siren to {-74.461, 44.675, -31.588}
RelCamFoc=marker at get world position from Siren to {8.412, 4.457, 7.328}
set camera position to {RelCamPos}
set camera focus to {RelCamFoc}
RelCamPos=marker at get world position from Siren to {-76.002, 44.476, -27.218}
RelCamFoc=marker at get world position from Siren to {9.026, 5.094, 7.707}
move camera position to {RelCamPos} time 5 easein 0 easeout 0
move camera focus to {RelCamFoc} time 5 easein 0 easeout 0
wait 5 seconds
//wait until get MusicEventTimer time since set >= MusicEvent2
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
RelCamPos=marker at get world position from Siren to {-14.726, 27.090, 9.482}
RelCamFoc=marker at get world position from Siren to {107.596, 61.052, -67.388}
set camera position to {RelCamPos}
set camera focus to {RelCamFoc}
//wait 2 seconds
invoke Siren EPIC_TRIGGER_NYMPHS_GESTURE //sic nymphs
wait 2 seconds
wait 1 seconds
invoke Siren EPIC_TRIGGER_NYMPHS //sic nymphs
RelCamPos=marker at get world position from Siren to {-14.726, 27.090, 9.482}
RelCamFoc=marker at get world position from Siren to {106.261, -55.985, 31.522}
move camera position to {RelCamPos} time 2.5
move camera focus to {RelCamFoc} time 2.5
wait 2.3 seconds
//play string sound "SCRIPT4_SEPIC_EPICTOWERLOOP1" //Beam us up sample!
/*RelCamPos=marker at get world position from Siren to {-35.153, 7.701, 28.173}
RelCamFoc=marker at get world position from Siren to {-33.970, 7.373, 27.803}
move camera position to {RelCamPos} time 3*/
StarVillager = get Siren star STAR_VILLAGER
if StarVillager exists
HackVillexistingTimer =create timer for 10 seconds
while WaitUntilPairedAnimStarts not exists or get HackVillexistingTimer time remaining <= 0
WaitUntilPairedAnimStarts = get Siren star EPIC_WONDER_HACK_VILLAGER
end while
end if
StarVillager = get Siren star STAR_VILLAGER
if StarVillager exists
set camera lens 38.000
RelCamPos=marker at get world position from StarVillager to {0.820, 1.323, 1.452}
RelCamFoc=marker at get world position from StarVillager to {0.187, 1.248, 0.682}
set camera position to {RelCamPos}
set camera focus to {RelCamFoc}
wait 2 seconds
RelCamPos=marker at get world position from StarVillager to {3.891, 1.394, -1.827}
RelCamFoc=marker at get world position from StarVillager to {3.160, 1.347, -1.146}
set camera position to {RelCamPos}
set camera focus to {RelCamFoc}
wait 2 seconds
RelCamPos=marker at get world position from StarVillager to {11.107, 2.570, 6.509}
RelCamFoc=marker at get world position from StarVillager to {10.243, 2.511, 6.010}
set camera position to {RelCamPos}
set camera focus to {RelCamFoc}
wait 5 seconds
RelCamPos=marker at get world position from StarVillager to {24.125, 12.082, 39.660}
RelCamFoc=marker at get world position from StarVillager to {23.729, 11.905, 38.759}
move camera position to {RelCamPos} time 8
move camera focus to {RelCamFoc} time 8
wait 8 seconds
//wait until camera ready
end if
play string sound "SCRIPT4_SEPIC_SIRENDISAPPEAR"
//stop sound "SCRIPT4_SEPIC_EPICTOWERLOOP1"
///this removal sample will now be played in code
//play string sound "SCRIPT4_SEPIC_BEAMOFLIGHTLOOP6"
invoke Siren EPIC_REMOVE_SIREN
set camera lens 70.000
RelCamPos=marker at get world position from Siren to {-0.137, 15.183, 43.739}
RelCamFoc=marker at get world position from Siren to {-0.093, 15.178, 42.740}
set camera position to {RelCamPos}
set camera focus to {RelCamFoc}
wait 2 seconds
RelCamPos=marker at get world position from Siren to {-0.137, 15.183, 43.739}
RelCamFoc=marker at get world position from Siren to {-0.094, 14.899, 42.781}
move camera position to {RelCamPos} time 4
move camera focus to {RelCamFoc} time 4
invoke Wonder EPIC_WONDER_STAGE_5
invoke Wonder EPIC_WONDER_STAGE_7
wait 7 seconds
//reset sky colour 3 seconds//restore sky colour to normal
enable predefined sky "DEFAULT" time 3
wait 3 seconds
enable simulation sound
enable shadows
stop music//kill the music
invoke Wonder EPIC_WONDER_STAGE_LAST
ATIEndFlag=1
wait 2 seconds
end cinema//exit widescreen
destroy mixer SirenMixer with fadetime 2
end script SirenSpell