• Welcome to Freedom Reborn Archive.
 

EZScript Comics

Started by BentonGrey, May 06, 2007, 06:28:24 PM

Previous topic - Next topic
|

BentonGrey

I've got the latest version, or at least I'm pretty sure I do.  I did combine my info from an earlier version with the new FFX folder.  I wonder if I accidentally re-introduced that bug.  What file was it in?  I can replace it and see if it makes a difference.

You know...it's funny, this is the very first mission I started working on, and it's the only one that's given me a substantial amount of trouble.  I've already finished two others and a base.txt, but this one still has to be peculiar. :P

M25

The file to replace is m25event.py

Also make sure you have a folder with the path  missions/scripts/ffxplugins/active/m25cutscene_power


BentonGrey

Thanks M25, I've checked those files, and replaced them, so I'll test in a bit and see if it works.

Meanwhile, I'm setting up the next mission and I could use a little advice from the EZScript elite.  I've got Batman and Robin patrolling Gotham, they come across the Joker robbing a bank.  Now, what I'd like to happen at this point is two-fold, and I know how to do each part, but I don't know how to integrate them.  So, I'd like the Joker and his minions to flee with a bag 'o cash, while at the same time, somewhere on the map, Harley Quinn appears with a bomb that starts counting down.  Any advice?

Hmm....well, I had a thought that using a start when command and "Clown Prince at Start" might work, but I didn't get a chance to see if I was right, as I had some kind of error with the heist encounter:

[spoiler]initAttribsForChar: working on m25obj_10 (clown_thug)
initAttribsForChar (clown_thug): looking at attribute weak minded
initAttribsForChar: working on m25obj_8 (clown_thug)
initAttribsForChar (clown_thug): looking at attribute weak minded
initAttribsForChar: working on m25obj_6 (clown_thug)
initAttribsForChar (clown_thug): looking at attribute weak minded
initAttribsForChar: working on m25obj_4 (the_joker)
initAttribsForChar (the_joker): looking at attribute alkaline
initAttribsForChar (the_joker): looking at attribute hatemonger
execInitAttrib: init hatemonger attribute
    on m25obj_4 of template the_joker (the_joker)
initAttribsForChar (the_joker): looking at attribute hot tempered
initAttribsForChar: working on m25obj_12 (clown_thug)
initAttribsForChar (clown_thug): looking at attribute weak minded
initAttribsForChar: working on m25obj_14 (clown_thug)
initAttribsForChar (clown_thug): looking at attribute weak minded
initAttribsForChar: working on m25obj_16 (clown_thug)
initAttribsForChar (clown_thug): looking at attribute weak minded
initAttribsForChar: working on m25obj_18 (clown_thug)
initAttribsForChar (clown_thug): looking at attribute weak minded
initAttribsForChar: working on m25obj_20 (clown_thug)
initAttribsForChar (clown_thug): looking at attribute weak minded
initAttribsForChar: working on m25obj_22 (clown_thug)
initAttribsForChar (clown_thug): looking at attribute weak minded
Traceback (innermost last):
  File "C:\Program Files\Irrational Games\Freedom Force vs The 3rd Reich\.\ffx3\missions\scripts\ffx.py", line 9810, in FeedBackCheck
    doFeedback(event,1)
  File "C:\Program Files\Irrational Games\Freedom Force vs The 3rd Reich\.\ffx3\missions\scripts\ffx.py", line 9834, in doFeedback
    exec('relevant=%s(obj,char)'%(fn))
  File "<string>", line 1, in ?
  File "C:\Program Files\Irrational Games\Freedom Force vs The 3rd Reich\.\ffx3\missions\scripts\ffx.py", line 9946, in isAcidBurnt
    return (Object_GetSecondaryStates(obj)&(SCSTATE_ACIDBURNT))!=0
NameError: SCSTATE_ACIDBURNT
Traceback (innermost last):
  File "C:\Program Files\Irrational Games\Freedom Force vs The 3rd Reich\.\ffx3\missions\scripts\ffx.py", line 9810, in FeedBackCheck
    doFeedback(event,1)
  File "C:\Program Files\Irrational Games\Freedom Force vs The 3rd Reich\.\ffx3\missions\scripts\ffx.py", line 9834, in doFeedback
    exec('relevant=%s(obj,char)'%(fn))
  File "<string>", line 1, in ?
  File "C:\Program Files\Irrational Games\Freedom Force vs The 3rd Reich\.\ffx3\missions\scripts\ffx.py", line 9946, in isAcidBurnt
    return (Object_GetSecondaryStates(obj)&(SCSTATE_ACIDBURNT))!=0
NameError: SCSTATE_ACIDBURNT
Traceback (innermost last):
  File "C:\Program Files\Irrational Games\Freedom Force vs The 3rd Reich\.\ffx3\missions\scripts\ffx.py", line 9810, in FeedBackCheck
    doFeedback(event,1)
  File "C:\Program Files\Irrational Games\Freedom Force vs The 3rd Reich\.\ffx3\missions\scripts\ffx.py", line 9834, in doFeedback
    exec('relevant=%s(obj,char)'%(fn))
  File "<string>", line 1, in ?
  File "C:\Program Files\Irrational Games\Freedom Force vs The 3rd Reich\.\ffx3\missions\scripts\ffx.py", line 9946, in isAcidBurnt
    return (Object_GetSecondaryStates(obj)&(SCSTATE_ACIDBURNT))!=0
NameError: SCSTATE_ACIDBURNT
teleport() - no character m25obj_40
Traceback (innermost last):
  File "C:\Program Files\Irrational Games\Freedom Force vs The 3rd Reich\.\ffx3\missions\scripts\ffx.py", line 9810, in FeedBackCheck
    doFeedback(event,1)[/spoiler]

I'm going to try removing the Joker and seeing what happens.

BentonGrey

Well, Joker seems to be doing something, since when I removed him that encounter ran, but I can't figure out what, as when I tried him in the rumble room, he worked fine.  The bomb encounter doesn't seem to be starting as I'd hoped.  Here is the script as it stands:

[spoiler]# claws and cards story for EZ script
# by m25

Story: ClawsandCards

#----------------------------------------------------------------
Encounter: kitty cat
Type: Custom
Allies: catwoman
Actions: allies become controllable
Marker: cat1

Start Cutscene:
Camera on Ally1
Ally1 turns to Hero1
Ally1 plays animation direct_2
Ally1 says, "Well hello there handsome..."
Camera on Hero1
Hero1 turns to Ally1
Hero1 plays animation ranged
Ally1 moves to Hero1
Hero1 says, "Catwoman! Selena...you know that you're breaking your parole.

What are you after tonight?"
Cinematic camera on Ally1 to Hero1
Ally1 plays animation pain
Ally1 says, "Easy big boy, I've been a good kitty, my claws were pretty well

clipped after that last fiasco with Dagget."
Ally1 plays animation special_transform
Ally1 says, "I've just heard some rumblings about the Ventriloquist planning a

job tonight...I still owe that little scratching post for framing me, and I

was wondering if you might like a hand...or a paw?"
Hero1 plays animation idle_1
Hero1 says, "Well...I suppose it couldn't hurt, but just so we're clear, you

step over the line and I'll have no choice but to bring you back...and I don't

want to do that."
Ally1 plays animation direct_2
Ally1 says, "You're sweet, but don't worry, I'll behave."
Camera on Hero2
Hero2 says, "Alright already, can we get on with this now!"

#----------------------------------------------------------------

Encounter: Clown Prince
Type: Heist
Villains: the_joker, clown_thug, clown_thug, clown_thug, clown_thug,

clown_thug, clown_thug, clown_thug, clown_thug
Item: money_bag
Marker: joker1

Alert Cutscene:
Fade for 2 seconds
Villain1 teleports to vent1
Villain2 teleports to vent1
Villain3 teleports to vent1
Villain4 teleports to vent1
Villain5 teleports to vent1
Villain6 teleports to vent1
Villain7 teleports to vent1
Villain8 teleports to vent1
Villain9 teleports to vent1
Unfade for 2 seconds
Camera on joker1
play effect generic_fire_explosion at joker2
Fade for 2 seconds
Red arrow on Villain1
Villain1 teleports to joker1
Villain2 teleports to joker1
Villain3 teleports to joker1
Villain4 teleports to joker1
Villain5 teleports to joker1
Villain6 teleports to joker1
Villain7 teleports to joker1
Villain8 teleports to joker1
Villain9 teleports to joker1
Camera on Villain1
Villain1 says, "Hahahahahahahaahaha!"
Cinematic camera on Hero1 to Hero2
Hero1 says, "Did you hear that?  It sounded like an explosion!"
Hero2 says, "We'd better check it out!?"
Camera on Hero3
Hero3 says, "Not without me, you don't!"

Start Cutscene:
Remove arrow from Villain1
Teleport Hero1 to Hero2
Cinematic camera on Hero2 to Hero1
Hero2 turns to Hero1
Hero2 says, "The Joker! This night just keeps getting better and better..."
Camera on Villain1
Villain1 turns to Hero1
Villain plays animation pain
Villain1 says, "Oh! You wound me Boy-Blunder, the Clown Prince of Crime makes

everything more fun...Hahahahahahaha!"
Hero1 turns to Villain1
Hero2 turns to Villain1
Camera on Hero1
Hero1 plays animation ranged
Hero1 says, "Give it up Joker, you're going back to Arkham!"
Camera on Hero2
Hero2 says, "And your little playmates are heading straight to Stonegate!"
Camera on Villain1
Villain1 says, "Don't be silly Bats, you know I only stay there as long as

it's funny...and besides, I've got a much better joke for you tonight."
Villain1 plays animation ranged
Villain1 says, "My dear little Harley is out there somewhere out there right

now minding a delightful little surprise for the bored and boring masses. You

can stop me, or stop half of Gotham from catching one tremendous case of the

giggles, haha...hahahaha...haahahahahaha!"

#-----------------------------------------------
Encounter: Tick Tock
Type: Custom
Villains: harley_quinn, clown_thug, clown_thug, clown_thug, clown_thug,

clown_thug, clown_thug, clown_thug, clown_thug
Bomb: abomb_det
Time: 480
Actions: disarm bomb, immediate countdown, villains fight heroes
Starts when: Clown Prince at Start

Start Cutscene:
Cinematic Camera on Villain1 to Hero1
Hero1 plays animation ranged
Hero1 says, "Harley! You don't know what you're doing, that bomb is

dangerous!"
Villain1 plays animation area
Villain1 says, "It's all in good fun Bats, Mr. J. said that it's just going to

give this dismal town some laughs..."
Camera on Hero3
Hero3 plays animation pain
Hero3 says, "We don't have time for this, the clock is ticking..."
Cinematic camera on Hero3 to Hero2
Hero2 says, "Yeah, let's just take Zippy here out and find that bomb!"
Camera on Villain1
Villain1 says, "You just try Jr., we're going to make sure Mr. J.'s toy goes

off like it's supposed to!"

Bomb Disarmed Cutscene:
Camera on Hero2
Hero2 says, "Whew, that was just too close!"

Bomb Exploding Cutscene:
Camera on abomb_det
Hero1 says, "I've failed!"
Play effect generic_fire_explosion_large

#-----------------------------------------------
Encounter: Knock On Wood
Type: Save Civilian
Villains: ventriloquost, thug_with_bat, thug_with_gun, thug_with_bat,

thug_with_gun, thug_with_bat, thug_with_gun, thug_with_bat, thug_with_gun
Allies: civilian_male, civilian_female, civilian_female
Marker: vent1

Alert Cutscene:
Yellow arrow on Villain1
Camera on Hero3
Hero3 turns to Hero1
Hero3 says, "Finally! now that this is all over, can we please go find that

little wooden twerp? There were rumors about a jewel heist..."
Camera on Hero1
Hero1 says, "Hmm...Gotham Jems is in this area, let's go check it out."

Start Cutscene:
Remove arrow on Villain1
Camera on Villain1
Villain1 plays animation melee
Villain1 says telepathically, "Gwast it! It's the Gat! I was hopin' that clown

would keep him busy longer 'dan 'dis..."
Villain1 plays animation pain
Villain1 says, "Oh dear, what are we going to do Mr. Scarface?"
Villain1 says telepathically, "I always got a gack up plan dummy! Goys, grab

'dem, watch-a-call 'ems, gystanders, we'll need some hostages to get outta'

'dis!"
Ally1 turns to Hero1
Ally1 plays animation power
Ally1 says, "Help me!"

Ally Thanks Hero Cutscene:
Cinematic camera on Ally1 to Hero1
Hero1 turns to Ally1
Ally1 turns to Hero1
Hero1 plays animation ranged
Hero1 says, "Are you three okay?"
Ally1 plays animation recover_from_stun
Ally1 says, "Y-y-yes...thanks to you."

End Cutscene:
Cinematic camera on Hero1 to Hero3
Hero3 turns to Hero1
Hero1 turns to Hero3
Hero3 says, "This was fun Bats, maybe we should do it again sometime?"
Hero1 says, "It depends...can you keep your whiskers clean Selena?"
Hero3 says, "I guess only time will tell, huh Batman?"
Hero3 plays animation direct_2
Hero3 says, "Goodbye tall dark and handsome..."

[/spoiler]

M25

To get two encounters to run at the same time, you can branch to both using the Next: part of a lead-in encounter.


Encounter: kitty cat
Next: Clown Prince, Tick Tock


As to the other issue, something is triggering a problem with an ffx attribute.  Which ones does joker have?


BentonGrey

Yeah, I was hoping for the counter to start only once the Joker makes his threat...but I suppose I can do it that way and just add extra time in. 

Joker has hatemonger customized to acid burnt, but I suppose I'll just change it back to the default.

BentonGrey

Okay, monkeyed around with it some more tonight and I think it's the effects that are causing some of my problems.  I'll experiment with them more tomorrow.  However now that the bomb encounter works, I can't disarm the bomb.  There's no command to do so, and when the timer runs out, it simply recycles.

M25

You must be running the beta version, since the disarm bomb problem was fixed in the final release.  Be sure to use the latest versions of m25enc.py and m25cutscene.py

BentonGrey

Hmm.........I could swear that I've completely updated....I suppose I'll re-download and tripple check.

:EDIT: Okay, I've re-installed FFX 3.2, so that's all set.  I think I was up to date, but you can't be too careful.  So, I've also removed all of the 'play effect' and 'teleport' entries, as one of them was giving me trouble, and I didn't particularly care to chase it down.  Now, all of my cutscenes work, and the problems I have are pertaining to the boom.  For one, the disarm still isn't working.  Now, I think that this may be a mesh issues, as I can't effect the bomb in any way, but it shouldn't be since I added a bounding box to the nif.  I'm going to try a different mesh tonight and we'll see if that's the issue.  Still, we also have to problem of the timer.  It seems to reset after I complete the Joker's encounter.  Any suggestions?

Here's the story as it stands:

[spoiler]# claws and cards story for EZ script
# by m25

Story: ClawsandCards

#----------------------------------------------------------------
Encounter: kitty cat
Type: Custom
Allies: catwoman
Actions: allies become controllable
Marker: cat1
Next: Clown Prince, Tick Tock

Start Cutscene:
Camera on Ally1
Ally1 turns to Hero1
Ally1 plays animation direct_2
Ally1 says, "Well hello there handsome..."
Camera on Hero1
Hero1 turns to Ally1
Hero1 plays animation ranged
Ally1 moves to Hero1
Hero1 says, "Catwoman! Selena...you know that you're breaking your parole. What are you after tonight?"
Hero2 turns to Ally1
Cinematic camera on Ally1 to Hero1
Ally1 plays animation pain
Ally1 says, "Easy big boy, I've been a good kitty, my claws were pretty well clipped after that last fiasco with Dagget."
Ally1 plays animation special_transform
Ally1 says, "I've just heard some rumblings about the Ventriloquist planning a job tonight...I still owe that little scratching post for framing me, and I was wondering if you might like a hand...or a paw?"
Hero1 plays animation idle_1
Hero1 says, "Well...I suppose it couldn't hurt, but just so we're clear, you step over the line and I'll have no choice but to bring you back...and I don't want to do that."
Ally1 plays animation direct_2
Ally1 says, "You're sweet, but don't worry, I'll behave."
Camera on Hero2
Hero2 says, "Alright already, can we get on with this now!"

#----------------------------------------------------------------

Encounter: Clown Prince
Type: Heist
Villains: the_joker, clown_thug, clown_thug, clown_thug, clown_thug, clown_thug, clown_thug, clown_thug, clown_thug
Item: money_bag
Marker: joker1

Alert Cutscene:
Narrator says, "BOOOOOM!"
Play sound fx_generic_fire_explosion at Hero1
Red arrow on Villain1
Camera on Villain1
Villain1 says, "Hahahahahahahahaha!"
Wait 2 seconds
Cinematic camera on Hero1 to Hero2
Hero1 says, "Did you hear that?  It sounded like an explosion!"
Hero2 says, "We'd better check it out!?"
Camera on Hero3
Hero3 says, "Not without me, you don't!"

Start Cutscene:
Remove arrow from Villain1
Camera on Hero2
Hero2 turns to Hero1
Hero2 says, "The Joker! This night just keeps getting better and better..."
Camera on Villain1
Villain1 turns to Hero1
Villain1 plays animation pain
Villain1 says, "Oh! You wound me Boy-Blunder, hehe, the Clown Prince of Crime makes everything more fun...Hahahahahahaha!"
Hero1 turns to Villain1
Hero2 turns to Villain1
Camera on Hero1
Hero1 plays animation ranged
Hero1 says, "Give it up Joker, you're going back to Arkham!"
Camera on Hero2
Hero2 says, "And your little playmates are heading straight to Stonegate!"
Camera on Villain1
Villain1 says, "Don't be silly Bats, you know I only stay there as long as it's funny...and besides, I've got a much better joke for you tonight."
Villain1 plays animation ranged
Villain1 says, "My dear little Harley is out there somewhere out there right now minding a delightful little surprise for the bored and boring masses. You can stop me, or stop half of Gotham from catching one tremendous case of the giggles, haha...hahahaha...hahahahahaha!"

#-----------------------------------------------
Encounter: Tick Tock
Type: Custom
Villains: harley_quinn, clown_thug, clown_thug, clown_thug, clown_thug, clown_thug, clown_thug, clown_thug, clown_thug
Bomb: abomb_det
Time: 480
Actions: disarm bomb, immediate countdown, villains fight heroes

Start Cutscene:
Cinematic Camera on Villain1 to Hero1
Hero1 plays animation ranged
Hero1 says, "Harley! You don't know what you're doing, that bomb is dangerous!"
Villain1 plays animation area
Villain1 says, "It's all in good fun Bats, Mr. J. said that it's just going to give this dismal town some laughs..."
Camera on Hero3
Hero3 plays animation pain
Hero3 says, "We don't have time for this, the clock is ticking..."
Cinematic camera on Hero3 to Hero2
Hero2 says, "Yeah, let's just take Zippy here out and find that bomb!"
Camera on Villain1
Villain1 says, "You just try Jr., we're going to make sure Mr. J.'s toy goes off like it's supposed to!"

Bomb Disarmed Cutscene:
Camera on Hero2
Hero2 says, "Whew, that was just too close!"

#-----------------------------------------------
Encounter: Knock On Wood
Type: Save Civilian
Villains: ventriloquost, thug_with_bat, thug_with_gun, thug_with_bat, thug_with_gun, thug_with_bat, thug_with_gun, thug_with_bat, thug_with_gun
Allies: civilian_male, civilian_female, civilian_female
Marker: vent1

Alert Cutscene:
Yellow arrow on Villain1
Camera on Hero3
Hero3 turns to Hero1
Hero3 says, "Finally! now that this is all over, can we please go find that little wooden twerp? There were rumors about a jewel heist..."
Camera on Hero1
Hero1 says, "Hmm...Gotham Jems is in this area, let's go check it out."

Start Cutscene:
Remove arrow on Villain1
Camera on Villain1
Villain1 plays animation melee
Villain1 says telepathically, "Gwast it! It's the Gat! I was hopin' that clown would keep him busy longer 'dan 'dis..."
Villain1 plays animation pain
Villain1 says, "Oh dear, what are we going to do Mr. Scarface?"
Villain1 says telepathically, "I always got a gack up plan dummy! Goys, grab 'dem, watch-a-call 'ems, gystanders, we'll need some hostages to get outta' 'dis!"
Ally1 turns to Hero1
Ally1 plays animation power
Ally1 says, "Help me!"

Ally Thanks Hero Cutscene:
Cinematic camera on Ally1 to Hero1
Hero1 turns to Ally1
Ally1 turns to Hero1
Hero1 plays animation ranged
Hero1 says, "Are you three okay?"
Ally1 plays animation recover_from_stun
Ally1 says, "Y-y-yes...thanks to you."

End Cutscene:
Cinematic camera on Hero1 to Hero3
Hero3 turns to Hero1
Hero1 turns to Hero3
Hero3 says, "This was fun Bats, maybe we should do it again sometime?"
Hero1 says, "It depends...can you keep your whiskers clean Selena?"
Hero3 says, "I guess only time will tell, huh Batman?"
Hero3 plays animation direct_2
Hero3 says, "Goodbye tall dark and handsome..."

[/spoiler]

There are no errors in the script log other than tons of these:

[spoiler]Template_GetMesh() fatal error: template 'custom_template_93' not found
Template_GetMesh() fatal error: template 'custom_template_93' not found
Template_GetMesh() fatal error: template 'custom_template_93' not found
Template_GetMesh() fatal error: template 'custom_template_93' not found
Template_GetMesh() fatal error: template 'custom_template_93' not found
Template_GetMesh() fatal error: template 'custom_template_93' not found
Template_GetMesh() fatal error: template 'custom_template_93' not found
Template_GetMesh() fatal error: template 'custom_template_93' not found
Template_GetMesh() fatal error: template 'custom_template_93' not found
Template_GetMesh() fatal error: template 'custom_template_93' not found
Template_GetMesh() fatal error: template 'custom_template_93' not found
Template_GetMesh() fatal error: template 'custom_template_93' not found
Template_GetMesh() fatal error: template 'custom_template_93' not found
Template_GetMesh() fatal error: template 'custom_template_93' not found
Template_GetMesh() fatal error: template 'custom_template_93' not found
Template_GetMesh() fatal error: template 'custom_template_93' not found
Template_GetMesh() fatal error: template 'custom_template_93' not found
Template_GetMesh() fatal error: template 'custom_template_94' not found
Template_GetMesh() fatal error: template 'custom_template_94' not found
Template_GetMesh() fatal error: template 'custom_template_94' not found
Template_GetMesh() fatal error: template 'custom_template_94' not found
Template_GetMesh() fatal error: template 'custom_template_94' not found
Template_GetMesh() fatal error: template 'custom_template_94' not found[/spoiler]

Epimethee

Did you run the FFX Control Centre after updating? The absence of FFX CC branding could cause these log errors.

M25

The mesh is a problem if you can't interact with it.  That's not an EZ script issue.

The Tick Tock encounter is restarting (or more likely starting twice), due to the flow of the mission.  Since there is no Next: line in the Clown Prince encounter, EZ script just runs the next encounter in the text.  You need a Next: line to explicitly tell EZ script what to do.

I would do it this way:

Encounter: Clown Prince
Next: None

Encounter: Tick Tock
Next: None

Encounter: Knock on Wood
Starts When: Clown Prince at end, Tick Tock at end


BentonGrey

Thanks M25, that solves that problem at least.  Yeah, I know the mesh thing would be its own problem, and I'm going to try and test it tomorrow. 

Hmm...I THINK I've run it Em, but I'm not sure.  I've run it now, so my next test should tell me.

BentonGrey

Okay guys, I've tested a good deal more and the bomb's problems are fixed, everything is working like a charm now, so I decided to go back and investigate the whole effects issue.  Apparently, whenever EZScript tries to play one, it chokes, and the cutscene freezes.  Here's what the script.log looks like:

[spoiler]>>> system/init.py executed
>>> system/localinit.py executed
>>> system\tredir.py executed
Starting ffx.py v. 3.2.0 build 11; branch = Gold / Release
Loading m25ai.py v. 3.2.0 build 10; branch = beta 2: m25 branch 2
importing missionobjvar.py v1.18
loading datfiles version 0.251000
importing MLOG Reader 1.0.18 release
Starting General Utilities 1.0
missionobjvar(FixLongs): Fixing overflow issue with <SCSTATE_BUOYANT>
missionobjvar defining functions for Campaign play.
CustomHeadCurrentTime 1184530442.562000
Starting Height Check module 1.4
Starting System Utilities 1.4
OBJECTS_HEIGHT: 604 entries
NIF_OBJECTS: 482 entries
BUILDINGS_IN_OBJECTS_DAT: 30 entries
BUILDING_DIMENSIONS: 30 entries
Starting skXMapInfo.py  v 0.79 beta
skXMapInfo: m25ai available
Campaign_ReadObjects() warning: object template <water> has more than one entry for attribute <mass>, values 650.000000 and 650.000000
FFX Mission Plugin 'firehydrant' imported
FFX Mission Plugin 'zombie' imported
Loading freeroam_keepbuildingdamage.py v.1.0.0 build 0; branch = main
FFX Mission Plugin 'freeroam_keepbuildingdamage' imported
FFX Mission Plugin 'm25ai_lowjumper' imported
FFX Mission Plugin 'm25ai_realitymanipulation' imported
FFX Mission Plugin 'cutscene_power' imported
Loading     m25enc_OPENDOOR.py v.1.0.0 build 0; branch = main
FFX Mission Plugin 'm25enc_opendoor' imported
Loading     m25enc_simplechoice.py v.1.0.0 build 0; branch = main
FFX Mission Plugin 'm25enc_simplechoice' imported
Starting Built-In Function Wrapper 1.5
('Object_CalcPrestige', 'js')
>>> C:\Documents and Settings\Owner\Local Settings\Application Data\Irrational Games\Freedom Force vs the 3rd Reich\temp\MiniMod clawsandcards.py executed
>>> C:\Documents and Settings\Owner\Local Settings\Application Data\Irrational Games\Freedom Force vs the 3rd Reich\temp\danger.py executed
! GetMapInfo
Building_GetDimensions() non-fatal error:
    template 'building_bank' not found in list of building dimensions.
    To detect approximate dimensions, use
    getBuildingDimensions ()
Building_GetDimensions() non-fatal error:
    template 'building_bank' not found in list of building dimensions.
    To detect approximate dimensions, use
    getBuildingDimensions ()
>>> C:\Documents and Settings\Owner\Local Settings\Application Data\Irrational Games\Freedom Force vs the 3rd Reich\temp\MiniMod clawsandcards.py executed
MLOG_Init(keepRunningModules=0): starting up
mlogreader.MLOG_Init: current mission = '04_CATANDCARDS'
initialising FFX: skirmish=0
mapinfocaliper0 is not a valid explosion object
mapinfocaliper1 is not a valid explosion object
mapinfocaliper2 is not a valid explosion object
mapinfocaliper3 is not a valid explosion object
numberStr=93
storing hero_0: id_1,-93
numberStr=94
storing hero_1: id_2,-94
initialising FFQ_initialiseExtras()
initAttribsForChar: working on hero_0 (adam_strange)
initAttribsForChar (adam_strange): looking at attribute flier
initAttribsForChar (adam_strange): looking at attribute temperature control
initAttribsForChar (adam_strange): looking at attribute strange visitor
initAttribsForChar (adam_strange): looking at attribute crack shot
initAttribsForChar (adam_strange): looking at attribute ffqtracking
execInitAttrib: init ffqtracking attribute
    on hero_0 of template custom_template_93 (adam_strange)
initAttribsForChar: working on hero_1 (animal_man)
initAttribsForChar (animal_man): looking at attribute jumper
initAttribsForChar (animal_man): looking at attribute hirsute
initAttribsForChar (animal_man): looking at attribute danger sense
initAttribsForChar (animal_man): looking at attribute flier
initAttribsForChar: working on m25obj_2 (catwoman)
initAttribsForChar (catwoman): looking at attribute beautiful
initAttribsForChar (catwoman): looking at attribute acrobatic
execInitAttrib: init acrobatic attribute
    on m25obj_2 of template catwoman (catwoman)
initAttribsForChar (catwoman): looking at attribute nimble
initAttribsForChar (catwoman): looking at attribute claws
initAttribsForChar (catwoman): looking at attribute wall climbing
Plugin 'firehydrant' OnPostInit() called
Plugin 'zombie' has no OnPostInit()
Plugin 'freeroam_keepbuildingdamage' OnPostInit() called
Plugin 'm25ai_lowjumper' has no OnPostInit()
Plugin 'm25ai_realitymanipulation' has no OnPostInit()
Plugin 'cutscene_power' has no OnPostInit()
Plugin 'm25enc_opendoor' has no OnPostInit()
Plugin 'm25enc_simplechoice' has no OnPostInit()
Traceback (innermost last):
  File "C:\Program Files\Irrational Games\Freedom Force vs The 3rd Reich\.\ffx3\missions\scripts\m25cutscene.py", line 84, in PlayCurrentCutscene
    exec cs_string
  File "<string>", line 1, in ?
  File "C:\Program Files\Irrational Games\Freedom Force vs The 3rd Reich\.\ffx3\missions\scripts\m25cutscene.py", line 208, in CS_Effect
    js.Object_PlayEffect(location, effect)
RuntimeError: Object_PlayEffect(): Effect resource not found - ffx_blank
[/spoiler]

As you can see, it can't find the FX, even though I've tried custom, built in, and FFX versions.  What's up?

Epimethee

Is "ffx_blank" listed in FFEdit when opening your mod's files?

BentonGrey

Yep, it and all the others I've tried I looked up in the fx tab of FFEdit.  I tried that one, aff_boom_orange, generic_fire_explosion, and fire_minion_detonation.  These are all area effects, if that makes a difference.

M25

The fx tab is only for powers.  If you want to play an effect in game on a character you have to use one from the resources tab (res.dat).  Yes, it is confusing, but that is how the game defines it.




Epimethee

And the "effect_ffx_blank" is also there under the resources tab, I suppose?

If it's there, please open the console from a RR mission and type:
Object_PlayEffect("hero_0", "ffx_blank")
The first hero should play the blank FX once.

(EDIT: Ninja'ed by M25)

BentonGrey

Thanks guys, this is now working!  On a related note, is there any way to force a mission to end if you fail an encounter, or, on the other hand, force it to end once a certain encounter is completed succesfully?

M25

To force the mission to end use

Next: End


You can also use

Next: Win

or

Next: Lose


BentonGrey

Thanks M25, I'm slowly but surely working my way through these.  Can anyone here tell me how to add FFX weapons onto a map?

Epimethee

> Can anyone here tell me how to add FFX weapons onto a map?

If you haven't found it already, you can check the Mod-Making: Special Objects page of the FFX manual?

BentonGrey

Ah-ha!  Thanks Em, I went through the manual, but I didn't think to look there....doh!  I knew the answer had to be in there, thanks again!

BentonGrey

Okay, back on Batman, and having another spot of trouble.  I've got a mission where Batman and Robin have to search for clues while assassins hunt them.........or that's what SHOULD happen.  Instead, they spawn in and nothing starts.  Here is the script:

[spoiler]Story: Chasing the Cold

Starting Encounters: Clue, Packing

#------------------------------------------------------------------------
Encounter: Packing
Type: Fight
Minions: league_assassin
Marker: pack1
Next: Packing2

Start Cutscene:
Camera on Minion1
Minion1 turns to Minion2
Minion1 says, "Come on, we need to have these supplies moved before the master arrives at the new location."
Camera on Hero2
Hero2 says, "We'll save you boys a trip!"

#------------------------------------------------------------------------

Encounter: Packing2
Type: Fight
Minions: league_assassin
Marker: pack2
Next: None

#------------------------------------------------------------------------

Encounter: Clue
Type: Examine
Objects: nazihq_secret_plans
Next: Beloved

Alert Cutscene:
Camera on Hero1
Hero1 says, "Hmm...it looks like they are packing up this equipment. Freeze was definitely working on something big...Maybe we can find a clue to their plans.  Keep your eyes peeled for any documents or other leads."

Examine Cutscene:
Camera on Hero1
Hero1 says, "It looks like we were right, Freeze is working for R'as Al Ghul..."
Hero2 turns to Hero1
Camera on Hero2
Hero2 says,"Right, but what is this all about?"
Camera on Hero1
Hero1 says, "What is it always about with R'as? Doomsday..."
Camera on Hero2
Hero2 says, "He's got Mr. Freeze building him some kind of doomsday weapon?"
Camera on Hero1
Hero1 says, "Do you remember that millionare....EXPLAIN"

#------------------------------------------------------------------------

Encounter: Beloved
Type: Interrogation
Villains: talia
Minions: league_assassin

Interrogation Cutscene:
Camera on Hero1
Hero1 moves to Villain1
Hero1 says, "Why Talia..."
[/spoiler]

And here is the error log.  I don't really know what the heck the error on here means, and I don't see anything wrong with my script.

[spoiler]>>> system/init.py executed
>>> system/localinit.py executed
>>> system\tredir.py executed
Starting ffx.py v. 3.2.0 build 11; branch = Gold / Release
Loading m25ai.py v. 3.2.0 build 10; branch = beta 2: m25 branch 2
importing missionobjvar.py v1.18
loading datfiles version 0.251000
importing MLOG Reader 1.0.18 release
Starting General Utilities 1.0
missionobjvar(FixLongs): Fixing overflow issue with <SCSTATE_BUOYANT>
missionobjvar defining functions for Campaign play.
CustomHeadCurrentTime 1186372511.199000
Starting Height Check module 1.4
Starting System Utilities 1.4
OBJECTS_HEIGHT: 604 entries
NIF_OBJECTS: 482 entries
BUILDINGS_IN_OBJECTS_DAT: 30 entries
BUILDING_DIMENSIONS: 30 entries
Starting skXMapInfo.py  v 0.79 beta
skXMapInfo: m25ai available
Campaign_ReadObjects() warning: object template <water> has more than one entry for attribute <mass>, values 650.000000 and 650.000000
Campaign_ReadObjects() warning: object template <jm_pad_white> has more than one entry for attribute <canPickUp>, values 0.000000 and 0.000000
Campaign_ReadObjects() warning: object template <jm_pad_green> has more than one entry for attribute <canPickUp>, values 0.000000 and 0.000000
Campaign_ReadObjects() warning: object template <jm_pad_brown> has more than one entry for attribute <canPickUp>, values 0.000000 and 0.000000
Campaign_ReadObjects() warning: object template <jm_pad> has more than one entry for attribute <canPickUp>, values 0.000000 and 0.000000
FFX Mission Plugin 'firehydrant' imported
FFX Mission Plugin 'zombie' imported
Loading freeroam_keepbuildingdamage.py v.1.0.0 build 0; branch = main
FFX Mission Plugin 'freeroam_keepbuildingdamage' imported
FFX Mission Plugin 'm25ai_lowjumper' imported
FFX Mission Plugin 'm25ai_realitymanipulation' imported
FFX Mission Plugin 'cutscene_power' imported
Loading     m25enc_OPENDOOR.py v.1.0.0 build 0; branch = main
FFX Mission Plugin 'm25enc_opendoor' imported
Loading     m25enc_simplechoice.py v.1.0.0 build 0; branch = main
FFX Mission Plugin 'm25enc_simplechoice' imported
Starting Built-In Function Wrapper 1.5
('Object_CalcPrestige', 'js')
>>> C:\Documents and Settings\Owner\Local Settings\Application Data\Irrational Games\Freedom Force vs the 3rd Reich\temp\MiniMod chasingcold.py executed
>>> C:\Documents and Settings\Owner\Local Settings\Application Data\Irrational Games\Freedom Force vs the 3rd Reich\temp\danger.py executed
! GetMapInfo
>>> C:\Documents and Settings\Owner\Local Settings\Application Data\Irrational Games\Freedom Force vs the 3rd Reich\temp\MiniMod chasingcold.py executed
Traceback (innermost last):
  File "C:\Documents and Settings\Owner\Local Settings\Application Data\Irrational Games\Freedom Force vs the 3rd Reich\temp\danger.py", line 10, in OnPostInitMap
    Object_Spawn(ff.targetObject, 'nazihq_temporal_amplifier', targetLocation)
RuntimeError: Object_Spawn(): Could not find positional marker - spawn_target_obj
MLOG_Init(keepRunningModules=0): starting up
mlogreader.MLOG_Init: current mission = 'DS_MP_FRANKENSTEINS_LAB'
initialising FFX: skirmish=0
mapinfocaliper0 is not a valid explosion object
mapinfocaliper1 is not a valid explosion object
mapinfocaliper2 is not a valid explosion object
mapinfocaliper3 is not a valid explosion object
numberStr=93
storing hero_0: id_1,-93
numberStr=94
storing hero_1: id_2,-94
Traceback (innermost last):
  File "C:\Program Files\Irrational Games\Freedom Force vs The 3rd Reich\.\ffx3\missions\scripts\m25minimod.py", line 136, in OnPostInit
    MiniMod_AddStories(storyfile)
NameError: storyfile
initialising FFQ_initialiseExtras()
FFX_UpdateSun: getting default sun
FFX_UpdateSun: setting = (-45.0, 45.0, 1.0, 0.800000011921, (1.0, 1.0, 1.0))
initAttribsForChar: working on hero_0 (batman)
initAttribsForChar (batman): looking at attribute heroic
initAttribsForChar (batman): looking at attribute wall climbing
initAttribsForChar (batman): looking at attribute danger sense
initAttribsForChar (batman): looking at attribute capedcrusader
execInitAttrib: init flier attribute inside ['capedcrusader', 'flier', 'ffqropeswinger', 'disciplined', 'utilitybelt', 'nimble', 'acrobatic', 'grimresolve', 'ffqtracking'] combo
    on hero_0 of template custom_template_93 (batman)
execInitAttrib: init ffqropeswinger attribute inside ['capedcrusader', 'flier', 'ffqropeswinger', 'disciplined', 'utilitybelt', 'nimble', 'acrobatic', 'grimresolve', 'ffqtracking'] combo
    on hero_0 of template custom_template_93 (batman)
execInitAttrib: init disciplined attribute inside ['capedcrusader', 'flier', 'ffqropeswinger', 'disciplined', 'utilitybelt', 'nimble', 'acrobatic', 'grimresolve', 'ffqtracking'] combo
    on hero_0 of template custom_template_93 (batman)
execInitAttrib: init utilitybelt attribute inside ['capedcrusader', 'flier', 'ffqropeswinger', 'disciplined', 'utilitybelt', 'nimble', 'acrobatic', 'grimresolve', 'ffqtracking'] combo
    on hero_0 of template custom_template_93 (batman)
execInitAttrib: init nimble attribute inside ['capedcrusader', 'flier', 'ffqropeswinger', 'disciplined', 'utilitybelt', 'nimble', 'acrobatic', 'grimresolve', 'ffqtracking'] combo
    on hero_0 of template custom_template_93 (batman)
execInitAttrib: init acrobatic attribute inside ['capedcrusader', 'flier', 'ffqropeswinger', 'disciplined', 'utilitybelt', 'nimble', 'acrobatic', 'grimresolve', 'ffqtracking'] combo
    on hero_0 of template custom_template_93 (batman)
execInitAttrib: init grimresolve attribute inside ['capedcrusader', 'flier', 'ffqropeswinger', 'disciplined', 'utilitybelt', 'nimble', 'acrobatic', 'grimresolve', 'ffqtracking'] combo
    on hero_0 of template custom_template_93 (batman)
execInitAttrib: init ffqtracking attribute inside ['capedcrusader', 'flier', 'ffqropeswinger', 'disciplined', 'utilitybelt', 'nimble', 'acrobatic', 'grimresolve', 'ffqtracking'] combo
    on hero_0 of template custom_template_93 (batman)
initAttribsForChar: working on hero_1 (robin)
initAttribsForChar (robin): looking at attribute capedcrusader
execInitAttrib: init flier attribute inside ['capedcrusader', 'flier', 'ffqropeswinger', 'disciplined', 'utilitybelt', 'nimble', 'acrobatic', 'grimresolve', 'ffqtracking'] combo
    on hero_1 of template custom_template_94 (robin)
execInitAttrib: init ffqropeswinger attribute inside ['capedcrusader', 'flier', 'ffqropeswinger', 'disciplined', 'utilitybelt', 'nimble', 'acrobatic', 'grimresolve', 'ffqtracking'] combo
    on hero_1 of template custom_template_94 (robin)
execInitAttrib: init disciplined attribute inside ['capedcrusader', 'flier', 'ffqropeswinger', 'disciplined', 'utilitybelt', 'nimble', 'acrobatic', 'grimresolve', 'ffqtracking'] combo
    on hero_1 of template custom_template_94 (robin)
execInitAttrib: init utilitybelt attribute inside ['capedcrusader', 'flier', 'ffqropeswinger', 'disciplined', 'utilitybelt', 'nimble', 'acrobatic', 'grimresolve', 'ffqtracking'] combo
    on hero_1 of template custom_template_94 (robin)
execInitAttrib: init nimble attribute inside ['capedcrusader', 'flier', 'ffqropeswinger', 'disciplined', 'utilitybelt', 'nimble', 'acrobatic', 'grimresolve', 'ffqtracking'] combo
    on hero_1 of template custom_template_94 (robin)
execInitAttrib: init acrobatic attribute inside ['capedcrusader', 'flier', 'ffqropeswinger', 'disciplined', 'utilitybelt', 'nimble', 'acrobatic', 'grimresolve', 'ffqtracking'] combo
    on hero_1 of template custom_template_94 (robin)
execInitAttrib: init grimresolve attribute inside ['capedcrusader', 'flier', 'ffqropeswinger', 'disciplined', 'utilitybelt', 'nimble', 'acrobatic', 'grimresolve', 'ffqtracking'] combo
    on hero_1 of template custom_template_94 (robin)
execInitAttrib: init ffqtracking attribute inside ['capedcrusader', 'flier', 'ffqropeswinger', 'disciplined', 'utilitybelt', 'nimble', 'acrobatic', 'grimresolve', 'ffqtracking'] combo
    on hero_1 of template custom_template_94 (robin)
initAttribsForChar (robin): looking at attribute wall climbing
initAttribsForChar (robin): looking at attribute nimble
Plugin 'firehydrant' OnPostInit() called
Plugin 'zombie' has no OnPostInit()
Plugin 'freeroam_keepbuildingdamage' OnPostInit() called
Plugin 'm25ai_lowjumper' has no OnPostInit()
Plugin 'm25ai_realitymanipulation' has no OnPostInit()
Plugin 'cutscene_power' has no OnPostInit()
Plugin 'm25enc_opendoor' has no OnPostInit()
Plugin 'm25enc_simplechoice' has no OnPostInit()
2
1
3
2
2
1
3
2
[/spoiler]

M25

In FFvTTR, you can set a map to spawn a special 'target object' that is used (I think) for multiplayer missions.  Look in the directory of the map you are using... the danger.py file (or one of the py files) on line 10 is an Object_Spawn command.  Comment that line out (put a # in front of it), or delete the file completely and it should work.

BentonGrey

Thanks M25, I figured it was something outside of my script! :)

BentonGrey

Alrighty, well I fixed that issue, and now the spawn error no longer shows up, but the encounters still don't start.  It gives me a report about error storyfile name or something along those lines.  I've double checked the names, everything seems to be in order.  Well, I'll do some more testing and get back with more info.

BentonGrey

Okay, I'm sick of that Batman story for the moment, so I'm working on the Question adventure at the moment.  Things seem to be working well, except the first Alert Cutscene doesn't seem to want to work.  Here's the story, and there's nothing in the script log, not much help:

[spoiler]#--------------------------------------------------

Encounter: Law and Order
Type: Custom
Actions: Villains Can be Interrogated, Villains Attack Innocent Allies, Villains Fight Heroes, Minions Rampage, Allies Remain After Encounter Ends
Villains: thug_with_grenade
Minions: thug_with_bat, thug_with_gun
Allies: howard_slink, civilian_male, civilian_female, civilian_male, civilian_male, civilian_female, civilian_male, civilian_male, civilian_female, civilian_male, civilian_male, civilian_female, civilian_male
Marker: riot1

Alert Cutscene:
Ally1 turns to Ally2
Camera on Ally1
Ally1 says, "I don't know about you, but I'm tired of being afraid to set foot on the street at night!  I'm tired of living in fear!  I'm tired of letting criminals run this town!  I'm not going to take it any more, are you?!"
Ally2 says, "No!"
Ally3 says, "No!"
Ally4 says, "What are you gonna' do about it?"
Ally1 says, "If elected mayor, I swear to you that I will clean up this town, I'll take back our fair Hub city from the thugs, from the racketeers, from the criminals of all classes!"
Camera on Villain1
Villain1 moves to riot1
Minion1 moves to riot1
Minion2 moves to riot1
Minion3 moves to riot1
Minion4 moves to riot1
Camera on Hero1
Hero1 says, "Hmm...doesn't look like those fellows are just concerned citizens. What are they up to? That is the Question! Need to investigate..."

Start Cutscene:
Camera on Ally1
Ally1 says, "Together we can take back our city, together we can bring about a new age for all law-abidding citizens!"
Camera on Villain1
Villain1 says, "What about 'does of us 'dat don't like 'da law? We heard enough of your preachin' fancy pants, and it's time someone put you in your place. Get 'im boys, show 'dem who runs 'dis city!"
Camera on Hero1
Hero1 says, "Time for you boys to answer to the Question!"

Interrogation Cutscene:
Cinematic camera on Hero1 to Villain1
Hero1 turns to Villain1
Hero1 says, "Time for answers...who put you up to this?"
Villain1 says, "Wha..what makes ya' think anybody did? 'Dis was all jus' business..."
Hero1 says, "No. You're not real criminals, not professional, just scum. Who put you up to this...I won't ask again..."
Hero1 plays animation ranged
Villain1 says, "Alright, alright! I don't know nuthin', but the warlord, he toll' me to come down here with some 'da boys and rough 'dis guy up, 'dats all I know, honest!"
Hero1 says, "A gang threatening a politician...odd...need more information. Where is this 'warlord?'"
Villain1 says, "You can find him at the 'ol night club, 'dats where we meet."
Hero1 says, "Thanks for the directions, now you wait here until the police pick you up, or I'll be back..."[/spoiler]

BentonGrey

Eureka!  I figured it out, I was calling for FOUR minions to move, when there were only THREE spawning....d'oh!  It's all fixed up now, and it plays like a charm!

BentonGrey

Alright, I've repaired two of the five broken Batman missions, but the first one has got me completely stumped.  The script.log shows nothing, no error messages.  The mission starts, but nothing spawns or initializes.  This worked perfectly last time I played it, without a single hitch.  Can anyone tell me what is wrong with it?

[spoiler]Story: Fowl Play

#----------------------------------

Encounter: Drop In
Type: Interrogation
Villains: lenny_weasel
Marker: oprea1

Alert Cutscene:
Set lighting to night
Red arrow on lenny_weasel
Camera on Hero1
Hero1 says, "Hmm, I know that punk, he's part of the Fowl Feathers Gang, and if he's showing his faces on my streets, the Penguin must be up to his old tricks..."

Start Cutscene:
Camera on lenny_weasel
lenny_weasel turns to Hero1
lenny_weasel says, "Holy...it's da' Bat!  The boss ain't gonna' like this!"
Camera on Hero1
Hero1 turns to lenny_weasel
Hero1 says, "You can make this easy on yourself, I only have one question..."
Hero1 plays animation idle_1
Hero1 says, "Where's the Penguin?"
lenny_weasel says, "Forget it gruesome, I ain't no squeeler!"

Interrogation Cutscene:
Camera on Hero1
Hero1 turns to lenny_weasel
Hero1 says, "Alright scum, talk.  What's your boss up to?"
lenny_weasel turns to Hero1
lenny_weasel says, "I can't, I can't, the Penguin will.."
Hero1 says, "You need to ask yourself, should you be more afraid of him...or of me?"
Hero1 plays animation ranged
lenny_weasel says, "Okay, okay, I'll talk....the boss said somethin' about meetin' him for a job in a few minutes." 
lenny_weasel says, "Uhh, we're supposed to hit the Gotham Museum.  I promise, that's all I know!"
Hero1 plays animation ranged
Hero1 says, "That's all I wanted to know...now I'd better not see you on my streets again, punk."

#-------------------------------------------------------------

Encounter: Big Bird
Type: Custom
Actions: villains fight heroes, villains can be interrogated, rivals fight villains
Villains: penguin, fowl_feathers_gang, fowl_feathers_gang2, fowl_feathers_gang, fowl_feathers_gang, fowl_feathers_gang2, fowl_feathers_gang, fowl_feathers_gang, fowl_feathers_gang2, fowl_feathers_gang, fowl_feathers_gang, fowl_feathers_gang2, fowl_feathers_gang
Rivals: mrfreeze, freeze_lackey, freeze_lackey, freeze_lackey, freeze_lackey, freeze_lackey, freeze_lackey, freeze_lackey
Marker: museum1

Alert Cutscene:
Fade for 2 seconds
Rival1 teleports to freeze1
Rival2 teleports to freeze1
Rival3 teleports to freeze1
Rival4 teleports to freeze1
Rival5 teleports to freeze1
Rival6 teleports to freeze1
Rival7 teleports to freeze1
Rival8 teleports to freeze1
Unfade for 2 seconds
Red arrow on Villain1


Start Cutscene:
Remove arrow from Villain1
Camera on Villain1
Villain1 turns to Villain2
Villain1 plays animation melee
Villain1 says, "Faster you poultrons, that curs-ed caped crusader loves to prowl the streets at this time of night!"
Villain2 turns to Villain1
Villain2 says, "I don't get it boss, why are we stealing this here diamond and not any of the other loot?"
Villain1 says, "Aside from an asthetic value that a pea-brain like yours couldn't hope to comprehend, this particular piece of antiquity is worth a considerable fortune!"
Villain2 says, "Oh, okay then boss, what are we waiting for?"
Villain1 plays animation pain
Villain1 says, "That's what I'd like to know you pack of neolithic neanderthals, get on with it!"
Camera on Hero1
Hero1 turns to Villain1
Hero1 says, "Hold it Penguin!  You just earned a one-way trip back to Stonegate Prison!"
Camera on Villain1
Villain1 turns to Hero1
Villain1 says, "Drat your timing Batman, but you haven't caught us yet!  Discretion is the better part of valour my fine feathered friends!"
Villain2 turns to Villain1
Villain2 says, "What's 'dat mean boss?"
Villain1 turns to Villain2
Villain1 says, "It means run you insufferable low-brow!"

Interrogation Cutscene:
Fade for 2 seconds
Hero1 teleports to museum1
Villain1 teleports to museum1
Cinematic camera on Villain1 to Hero1
Hero1 turns to Villain1
Rival1 teleports to freeze3
Rival2 teleports to freeze2
Rival3 teleports to freeze2
Rival4 teleports to freeze2
Rival5 teleports to freeze2
Rival6 teleports to freeze2
Rival7 teleports to freeze2
Rival8 teleports to freeze2
Rival1 moves to Hero1
Rival2 moves to Hero1
Rival3 moves to Hero1
Rival4 moves to Hero1
Rival5 moves to Hero1
Rival6 moves to Hero1
Rival7 moves to Hero1
Rival8 moves to Hero1
Unfade for 5 seconds
Hero1 says, "I hope you enjoy your time at Stonegate, Penguin, you're going to be there for a very long time."
Villain1 says, "Cage me up again like a canary if you like Batman, but you know I'll be back soon..."
Rival1 turns to Villain1
Rival1 says, "Everyone freeze!"
Villain1 turns to Rival1
Hero1 turns to Rival1
Cinematic camera on Rival1 to Villain1
Rival1 says, "Penguin, I believe you have something I want..."
penguin plays animation melee
penguin says, "Back off you petulant icicle, this is my robbery!"
Rival1 says, "It was your robbery..."
Rival1 uses power freeze freeze ray on Villain1

#----------------------------------

Encounter: The End
Type: Cutscene
Villains: mrfreeze

Start Cutscene:
Fade for 3 seconds
Villain1 teleports to Hero1
Unfade for 3 seconds
Cinematic Camera on Hero1 to Villain1
Villain1 turns to Hero1
Hero1 turns to Villain1
Villain1 says, "Well fought Batman, but a colder head prevailed."
Hero1 says, "Freeze, wait!  Why are you doing this?"
Villain1 says, "We must all obey our hearts Batman.  My heart is cold, but not dead...not yet.  I will do what I must...but I've said to much!"
Villain1 uses power freeze freeze ray on Hero1
Villain1 moves to freeze1
Fade for 2 seconds
[/spoiler]

M25

If you haven't made any changes to the story since you last played it, then you've likely made changes to the map and/or the .dat files, or maybe you're playing it on a different map.

Make sure the map you are using has a marker called oprea1 or oprea on it and make sure a character called lenny_weasel exists in the .dat files.   (Do you mean opera instead of oprea?)


|