• Welcome to Freedom Reborn Archive.
 

EZScript Comics

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

Previous topic - Next topic
|

BentonGrey

D'oh!  You know, I could swear that I had already double checked this, but apparently, I'm just retarded.  Well, I only had office1_villain1-6.  I added in a 7 and 8, and that solved the problem.  The whole thing works like a charm now, thanks M!

BentonGrey

Alrighty, all my missions are working at the moment (crosses fingers), but my base scenes are giving me a bit of trouble.  I don't really have enough experience with these to spot the simpler stuff that might be messing them up, so I'm hoping someone else can see something obvious I'm overlooking:

[spoiler]Encounter: Start
Type: Base

Start Cutscene:
Camera on mainroom1
Narrator says, "In quiet, peaceful Ivy Town, all is not as it appears. A local jewlrey store holds the beginning of a strange story..."
Cinematic camera on jewler1 to customer1
jewler1 turns to customer1
jewler1 says, "Well sir, it is a beautiful stone, I'm sure that your she would love it."
customer1 turns to jewler1
customer1 says, "hmm...I'm sure she would...but it is very pricey...could I see something a little less expensive?"
jewler1 says, "Of course sir, I'll just be a moment."
jewler1 moves to mainroom2
Camera on jewler1
sc_pat_sign_diamond_small17 teleports to closet1
Wait for 2 seconds
jewler1 moves to mainroom1_ally1
jewler1 plays animation power
jewler1 says, "What did you do with the diamond, return it immediately!"
Camera on customer1
customer1 plays animaiton stunned
customer1 says, "Wh-what are you talking about? It was right there, I didn't do anything with it!"
jewler1 plays animation ranged
jewler1 says, "Well, don't try and run off, the police are going to want to have a word with you, mister!"



#
# The briefing cutscene will play when the player
# selects the briefing button on the base screen.
#
# Notice the 'Starts when: Briefing' line.
# That must be there or it won't play as a briefing.
#


Encounter: Briefing
Type: Cutscene
Starts When: Briefing

Start Cutscene:
Camera on ray_palmer
ray_palmer says, "Hmm..if the dwarf star matter has the abilities to warp mass..."
ray_palmer plays animation ranged
jean_loring moves to boss1
jean_loring says, "Ray? Do you have a minute?"
ray_palmer turns to jean_loring
ray_palmer says, "Hi honey, of course, I've always got time for you."
jean_loring says, "The strangest thing happened today, and I wanted to tell you about it."
ray_palmer says, "Well, I'm not making any progress here, let's hear your story. What happened?"
jean_loring says, "A man named Greg Adams came into my office a few hours ago, and asked me to defend him in court. Apparently, he is accused of stealing a valuable diamond."
ray_palmer says, "Well, that doesn't sound particularly strange, what's his alibi?"
jean_loring says, "That's where it gets weird, he claims that the gem just 'disappeared.' He says the clerk walked away, looking for another stone, and Mr. Adams himself was looking at something else in the display case. The next thing he knew, the clerk had returned and was calling him a theif."
ray_palmer says, "And neither of them saw anyone take the stone?"
jean_loring says, "No, and neither did anyone else in the store, isn't that bizarre? Whoever the theif was, he was very clever."
ray_palmer says, "I suppose so, that is very strange, so, how does the case look?"
jean_loring says, "Ohh, it should be simple enough, the evidence against Mr. Adams is all circumstantial, but if he's not the thief, who is?"
ray_palmer says, "Yes, that is the question, isn't it?"
jean_loring says, "Well, thanks for listening darling, but I suppose I had better let you get back to work, I'll see you for dinner tonight?"
ray_palmer says, "I wouldn't miss it for the world dear..."
jean_loring moves to firstdoor1
ray_palmer turns to seconddoor1
ray_palmer says, "Hmm...this is quite a pretty mystery...I wonder if the Atom might be able to find something the police might have overlooked?"
ray_palmer moves to seconddoor1

[/spoiler]

Neither portion is playing

M25

The simplest thing that can cause base cutscenes not to play is not having an encounter marker to play at.

Make sure you have a marker called encounter1 on the map.


BentonGrey

Check, I've got all the positional markers referenced in the script, plus the standard encounter markers.  Is it possible it has something to do with the object?  I'm trying to remove it from the cutscene while the camera is off of it, but I'm not sure I can use the teleport function like that.

M25

Hmmm, on a quick read through it looks fine.  The teleport shouldn't cause a problem.  As long as all of the characters you reference exist on the map they should play. 

Did you put the ezscript campaign  base.py script into your mission directory?


BentonGrey

Yep, it's the proper file.  Earlier, the briefing was playing, but not the intermission.  I think I may have changed the camera directions, and then even the briefing didn't play.  I can't remember exactly what I did, but it shouldn't have caused it to break.  Both jewler1 and customer1 exist, so I'm not quite sure what to do.  Here's a question though, should I call them by their name on the map, or by their template?  You know, I bet that's the problem, let me check.

:EDIT: Alright, I've just finished a lot of testing, and here's what I've got:  I had forgotten to run the Control Center after I added in the last few characters, so I figured that might have something to do with it (especially considering that jewler and customer were two of the latest).  So, I ran the CC.  I also remembered what you said about characters possessing the same portrait can give EZScript fits, so I set up an alternate civilian_male directory IN the DCUG, complete with custom portraits, same for civilian_female.  So, Ray and Jean should be set, right? 

Nope, I load up the base screen several more times and I get A) A repeating message telling me I've got duplicate values in the 'complex' entry and to run the Control Center, no matter HOW many times I do it.  I even took precautions, renaming DCUG to FFX3, because I heard the CC has issues with other mods some times.  So, the the intermission still won't play.  B) After renaming the jewler1 and customer1 to just plain old jewler and customer, the Briefing cutscene plays, BUT ray_palmer is not the ray_palmer I placed on the map.  The game picks any random civilian around the place, and makes HIM ray palmer, who proceeds to have his discussion with empty air, since Jean, wherever she is, doesn't happen to be near him.

M25

It does sound like issues with the tags that identify each character.   The FFXCC doesn't properly generate ids for characters with the GAME_OBJ_CIVILIAN class set in their template.  If they don't have an id, then chances are EZ script won't find them correctly.

The easiest way around this is to make them some other type (such as police or hero or whatever).  Then re-run the FFXCC.

The all powerful stumpy has a somewhat more complex, but more comprehensive fix for this issue, reproduced below.  You could probably just do step 5.

[spoiler]
It can happen if the objects.dat file has duplicate complex values set for characters.  (I have not checked, but I am thinking this shouldn't happen with HERO files.)  Here is a procedure for getting what I hope is a set of clean complex values in the built-in characters.

   1. Load the datfiles module in the game or at whatever python you use. Keep in mind that from the game command prompt, the filename isn't needed (assuming you are working on the DATs for the current mod), but you will have to quit the game and restart after all this is done to have the DATs re-read.

   2. Call datfiles.Campaign_RemoveObjectAttrib() on your objects.dat file to get rid of all complex template attribute values.  The call will look something like

datfiles.Campaign_RemoveObjectAttrib('complex',r'C:\Program Files\games\Freedom Force vs The 3rd Reich\ffx3\objects.dat')

      (Keep in mind that, unless you are letting the game find things for you, your DAT path will likely be slightly different from mine.)

   3. Open FFEdit and click on the Templates tab.  Click Save and quit FFEdit.  FFEdit makes sure the template attributes are written one after another, with no blanks in the attribute list for an object.  Those "holes'" can cause trouble with FFXCC.

   4. Run FFXCC on that mod to tag all the regular characters.  Quit FFXCC.

   5. At the python prompt, run datfiles.Campaign_SetMissingComplexAttribs() on the objects file to tag all the characters (civilians and tanks) that the FFXCC missed.  The call will look something like

datfiles.Campaign_SetMissingComplexAttribs(r'C:\Program Files\games\Freedom Force vs The 3rd Reich\ffx3\objects.dat',r'C:\Program Files\games\Freedom Force vs The 3rd Reich\ffx3\characters.dat')

      Once again, make sure you use the right paths for your DAT files, unless you arre running from within the game.
   6. Now, for good measure, re-open FFEdit and click on the Templates tab.  Click Save and quit FFEdit.

That should be it.  The FFXCC doesn't clear the attributes for the civilians and tanks, so there should be no need to go through this again unless you add more civilians or tanks to the mod.

You should have an objects.dat with unique complex attribute values set for all characters, with no duplicates.  If you run the game and still get the message at the status window, let me know.
[/spoiler]


BentonGrey

Thanks M25, I didn't realize that!  I will have to set them up as police from now on, so that I can get them branded.  I'll try Stumpy's fix sometime tonight, as I've added in a good number of civilian characters.

:EDIT:  Alright, I'm not quite sure I understand Stumpy's instructions.  I typed in the command (minus the directory) in the game, using the debugging mode that you can pull up with ~, but nothing happened.  Am I supposed to put it in somewhere specific?

I did it by hand, changing all the characters I can remember, including all of those involved with this scene.  However the intermission still won't play.  The briefing seems to be playing correctly now, though.  I'm still getting the 'duplicate characters' message, so I need to do the full thing that Stumpy suggests.

M25

Yes, you do the fix in debugging mode.  You may have to type

import datfiles

to get datfiles loaded. 

BentonGrey

Ahh, okay, that makes sense.  Thanks M!

BentonGrey

Alrighty, well, that's taken care of, but we've still got that intermission cutscene not playing.  I can't figure out what's wrong.

M25

It looks like there was a bug in the ez script base.py included with ffx 3.2 final.

Make sure your base.py file has this for OnPostInit()


def OnPostInit():
m25minimod.OnPostInit(campaign=1, base=1)



Your mission.py file should similarly have an OnPostInit() like this


def OnPostInit():
m25minimod.OnPostInit(campaign=1)



BentonGrey

Thanks M, I was indeed missing those entries.  I would love to test it out and see if this works but.....something else seems to have broken.  This is weird.  You know that message you get after you accidentally open the campaign tab in FFEdit?  You know, when you go to play a rumble room mission and the game crashes, saying something about your campdef file?  Well, yesterday, after getting all those complex attributes assigned, my game started doing that to me.  Now, I didn't just open up the campaign tab and not put anything in it, I had already design the campaign of my EZScript missions, and it was working just fine earlier that day.  So, I go into FFEdit, and I check my campaign, nothing has changed.  I rename the campdef file, and the game plays fine.  So, I delete my campdef file, but now FFEdit won't let me create a new campaign!  The tab is completely grayed out, and it says read only in the bottom right corner.  What the heck is going on?!

Previsionary

FFedit needs any campdef file there to be able to edit it. I don't believe it has the ability to just create it's own blank copy (read-only is an attribute of a file that you can turn on and off). As for campdef/rumbleroom...in FFVTTR, the campdef needs to have a certain number of missions for the rumbleroom to work correctly. I don't remember the exact number, but I believe it's around 8 or so missions.

BentonGrey

That's so weird Prev, 'cause I've got four, and it was working fine earlier.  Anyway, at least I know how to make it edit-able now, thanks.

BentonGrey

Nevermind, I'm retarded.

BentonGrey

Howdy guys, I imagine I'll be posting here a lot in the next few days as I try and whip everything into shape!  First off, Atom#2 is giving me some troubles.  The first encounter is working like a charm, but the second one doesn't want to start.  The characters all generate, but the item does not.  The start cutscene never plays either, and they all just stand there.  As always, here is the mission:

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

Encounter: Warm Greeting
Type: Fight
Villains: robot_spider, robot_spider
Marker: atom1

Alert Cutscene:
Unfade for 3 seconds
Camera on Hero1
Narrator says, "After what seemed like an eternity in the dark, winding corridors of the ants, the Atom emerges into a small but well stocked laboratory."
Hero1 says, "Whew, I'm glad to be out of there! If I never see another insect as long as I live, it'll be too soon..."
Villain1 moves to Hero1
Hero1 turns to Villain1
Hero1 says, "Well, this figures, I escape a horde of angry ants, only to face giant. mechanical. spiders. I feel like I've stumbled into the plot for a B movie..."

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

Encounter: Exposition
Type: Custom
Actions: Villains Fight Heroes, Item Exists, Heroes Sabotage Object, Villains Can Be Interrogated
Villains: bugeyed, robot_spider, robot_spider
Marker: atom2
Item: ff_science_equipment

Start Cutscene:
Camera on Hero1
Hero1 says, "Alright, not that this hasn't been fun, what with the giant insects and all, but it's over Buggy."
Villain1 turns to Hero1
Villain2 turns to Hero1
Villain3 turns to Hero1
Camera on Villain1
Villain1 says, "Not quite pipsqueak, I control all of the insects for miles around! Ever had a bee-sting? Imagine that sensation multiplied a thousand fold..."
Villain1 plays animation ranged
Villain1 says, "I never wanted to be a killer...but you wouldn't leave well enough alone!"

Sabotage Cutscene:
Camera on Hero1
Hero1 says, "Lets see how well this machine works with a few crossed wires!"

Sabotage Complete Cutscene:
Camera on Villain1
Villain1 says, "Nooo! My life's work!"

Interrogation Cutscene:
Camera on Hero1
Hero1 turns to Villain1
Hero1 says, "Now, what in the world was this all about?"
Villain1 says, "I just...I just wanted to share my genuis with the world..."
Hero1 says, "Your genuis? By stealing jewels and framing an innocent man?"
Villain1 says, "I...I didn't know about that. I invented a device, which can control insects, and it seemed like the perfect answer to man's pest problems...but all of the investors I approached laughed at me..."
Villain1 says, "To continue its develompent I...needed money..."
Hero1 plays animation ranged
Hero1 says, "So you decided to steal what you needed?"
Villain1 says, "You have to understand...it's my dream..."
Hero1 says, "And this gadget is worth killling for?"
Villain1 says, "A dream is always worth killing for..."


[/spoiler]

And here is the script.log:

[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 1197584942.656000
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
Campaign_ReadObjects() warning: object template <bigwater> 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\mission.py executed
MLOG_Init(keepRunningModules=0): starting up
mlogreader.MLOG_Init: current mission = '02_ATOM'
initialising FFX: skirmish=0
storing hero1: id_1,157
! GetMapInfo
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 hero1 (atom)
initAttribsForChar (atom): looking at attribute nimble
initAttribsForChar (atom): looking at attribute jumper
initAttribsForChar (atom): looking at attribute masscontrol
execInitAttrib: init masscontrol attribute
    on hero1 of template atom (atom)
initAttribsForChar (atom): looking at attribute density control
initAttribsForChar: working on m25obj_2 (apokolips_warhound)
initAttribsForChar (apokolips_warhound): looking at attribute clumsy
initAttribsForChar (apokolips_warhound): looking at attribute cybernetic brain
initAttribsForChar: working on m25obj_4 (apokolips_warhound)
initAttribsForChar (apokolips_warhound): looking at attribute clumsy
initAttribsForChar (apokolips_warhound): looking at attribute cybernetic brain
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()
ff.Examine_Setup(2)
exceptions.IndexError list index out of range
ff.DoEncCustom(2,villains = ['bugeyed', 'robot_spider', 'robot_spider'], cutscenes = [['startcs', [['priority', 1], ['replace', ['hero1', 'hero'], ['villain1', 'villain'], ['villain2', 'villain'], ['villain3', 'villain']], ['cutscene', 'CS_Start()', "CS_Camera('hero1', dist=-160, yaw=0)", 'CS_Speak(\'hero1\', "Alright, not that this hasn\'t been fun, what with the giant insects and all, but it\'s over Buggy.", force=0)', "CS_TurnTo('villain1', 'hero1')", "CS_TurnTo('villain2', 'hero1')", "CS_TurnTo('villain3', 'hero1')", "CS_Camera('villain1', dist=-160, yaw=0)", "CS_Speak('villain1', 'Not quite pipsqueak, I control all of the insects for miles around! Ever had a bee-sting? Imagine that sensation multiplied a thousand fold...', force=0)", "CS_Animate('villain1','ranged')", 'CS_Speak(\'villain1\', "I never wanted to be a killer...but you wouldn\'t leave well enough alone!", force=0)', 'CS_End()']]], ['sabotagecs', [['priority', 1], ['replace', ['hero1', 'hero']], ['cutscene', 'CS_Start()', "CS_Camera('hero1', dist=-160, yaw=0)", "CS_Speak('hero1', 'Lets see how well this machine works with a few crossed wires!', force=0)", 'CS_End()']]], ['sabotagecompletecs', [['priority', 1], ['replace', ['villain1', 'villain']], ['cutscene', 'CS_Start()', "CS_Camera('villain1', dist=-160, yaw=0)", 'CS_Speak(\'villain1\', "Nooo! My life\'s work!", force=0)', 'CS_End()']]], ['interrogationcs', [['priority', 1], ['replace', ['hero1', 'hero'], ['villain1', 'villain']], ['cutscene', 'CS_Start()', "CS_Camera('hero1', dist=-160, yaw=0)", "CS_TurnTo('hero1', 'villain1')", "CS_Speak('hero1', 'Now, what in the world was this all about?', force=0)", "CS_Speak('villain1', 'I just...I just wanted to share my genuis with the world...', force=0)", "CS_Speak('hero1', 'Your genuis? By stealing jewels and framing an innocent man?', force=0)", 'CS_Speak(\'villain1\', "I...I didn\'t know about that. I invented a device, which can control insects, and it seemed like the perfect answer to man\'s pest problems...but all of the investors I approached laughed at me...", force=0)', "CS_Speak('villain1', 'To continue its develompent I...needed money...', force=0)", "CS_Animate('hero1','ranged')", "CS_Speak('hero1', 'So you decided to steal what you needed?', force=0)", 'CS_Speak(\'villain1\', "You have to understand...it\'s my dream...", force=0)', "CS_Speak('hero1', 'And this gadget is worth killling for?', force=0)", "CS_Speak('villain1', 'A dream is always worth killing for...', force=0)", 'CS_End()']]]], marker = 'atom2', actions = 'Villains Fight Heroes, Item Exists, Heroes Sabotage Object, Villains Can Be Interrogated', item = 'ff_science_equipment',return_function="StorylineEncounterReturn")
Traceback (innermost last):
  File "C:\Program Files\Irrational Games\Freedom Force vs The 3rd Reich\.\DCUG\missions\scripts\m25story.py", line 250, in DoStorylineStateEvent
    DoStorylineState(story, state, event.user)
  File "C:\Program Files\Irrational Games\Freedom Force vs The 3rd Reich\.\DCUG\missions\scripts\m25story.py", line 293, in DoStorylineState
    if not StorySetupEncounter(enc_id,story,state,a):
  File "C:\Program Files\Irrational Games\Freedom Force vs The 3rd Reich\.\DCUG\missions\scripts\m25story.py", line 383, in StorySetupEncounter
    val = eval('ff.%s(%i,%s,return_function="StorylineEncounterReturn")'%(encname,enc_id,encparams))
  File "<string>", line 0, in ?
  File "C:\Program Files\Irrational Games\Freedom Force vs The 3rd Reich\.\DCUG\missions\scripts\m25enc.py", line 4193, in DoEncCustom
    return SetupEncounter(enc_id, encounter)
  File "C:\Program Files\Irrational Games\Freedom Force vs The 3rd Reich\.\DCUG\missions\scripts\m25enc.py", line 1357, in SetupEncounter
    SetupEnc_CallPost(enc_id, encounter)
  File "C:\Program Files\Irrational Games\Freedom Force vs The 3rd Reich\.\DCUG\missions\scripts\m25enc.py", line 1500, in SetupEnc_CallPost
    exec 'ff.' + s + '(' + `enc_id` + ')'            
  File "<string>", line 1, in ?
  File "C:\Program Files\Irrational Games\Freedom Force vs The 3rd Reich\.\DCUG\missions\scripts\m25enc.py", line 1584, in Examine_Setup
    chosen = members[0]
IndexError: list index out of range
initAttribsForChar: working on m25obj_8 (apokolips_warhound)
initAttribsForChar (apokolips_warhound): looking at attribute clumsy
initAttribsForChar (apokolips_warhound): looking at attribute cybernetic brain
initAttribsForChar: working on m25obj_10 (apokolips_warhound)
initAttribsForChar (apokolips_warhound): looking at attribute clumsy
initAttribsForChar (apokolips_warhound): looking at attribute cybernetic brain
initAttribsForChar: working on m25obj_6 (bugeyed)
initAttribsForChar (bugeyed): looking at attribute summoner3
execInitAttrib: init summoner3 attribute
    on m25obj_6 of template bugeyed (bugeyed)
[/spoiler]

BentonGrey

Alright, Batman mission #6, also not working.  The first two encounters are fine, but the third one, the object hunt isn't starting.:

Mission:

[spoiler]Story: My Story

#
# Put the story for you mission into here.
#
#------------------------------------------------------------------

Encounter: Hello
Type: Cutscene

Start Cutscene:
Camera on Hero1
Unfade for 3 seconds
Hero1 says, "Feel that chill Robin?"
Camera on Hero2
Hero2 says, "Brr! Do I! My teeth are about to chatter out of my head!"
Hero1 says, "This complex was refrigerated until a short time ago, Mr. Freeze has been here...recently."
Hero2 says, "Feels like he's still here!"

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

Encounter: Packing
Type: Fight
Villains: league_assassin, league_assassin, league_assassin, league_assassin
Marker: pack1
Next: Packing2

Alert Cutscene:
Red Arrow on Villain1

Start Cutscene:
Remove Arrow from Villain1
Camera on Villain1
Villain1 turns to Villain2
Villain1 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
Villains: league_assassin, league_assassin, league_assassin, 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 some kind of doomsday weapon?"
Camera on Hero1
Hero1 says, "Do you remember a few years ago, when Grant Walker, the theme park magnate, built that 'ideal city' off the coast of Gotham?"
Hero2 says, "Ohh yeah, Oceaiana, that guy was all kinds of nuts!"
Hero2 plays animation ranged
Hero1 says, "Right Robin, but he wanted to wipe out all but his select remnant of humanity, much like R'as."
Hero2 says, "And he was planning to use a jumbo sized version of 'ol Victor's freeze ray...I see! R'as has Freeze working on a new version!"
Hero1 says, "Now that we know what he's up to, we've got to stop him before R'as can get his hands on that technology!"
Hero2 says, "But Batman, I still don't understand why Freeze is helping Methusala."
Hero1 says, "I have a theory Robin, but there's only one way to find out for sure, and that's to track him down."

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

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

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

Script.log

[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 1197589556.906000
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
Campaign_ReadObjects() warning: object template <bigwater> 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\mission.py executed
! GetMapInfo
MLOG_Init(keepRunningModules=0): starting up
mlogreader.MLOG_Init: current mission = '05_CHASINGTHECOLD'
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
storing hero2: id_1,191
storing hero1: id_2,159
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 hero2 (robin)
initAttribsForChar (robin): looking at attribute capedcrusader
execInitAttrib: init disciplined attribute inside ['capedcrusader', 'disciplined', 'utilitybelt', 'nimble', 'acrobatic', 'grimresolve', 'ffqtracking'] combo
    on hero2 of template robin (robin)
execInitAttrib: init utilitybelt attribute inside ['capedcrusader', 'disciplined', 'utilitybelt', 'nimble', 'acrobatic', 'grimresolve', 'ffqtracking'] combo
    on hero2 of template robin (robin)
execInitAttrib: init nimble attribute inside ['capedcrusader', 'disciplined', 'utilitybelt', 'nimble', 'acrobatic', 'grimresolve', 'ffqtracking'] combo
    on hero2 of template robin (robin)
execInitAttrib: init acrobatic attribute inside ['capedcrusader', 'disciplined', 'utilitybelt', 'nimble', 'acrobatic', 'grimresolve', 'ffqtracking'] combo
    on hero2 of template robin (robin)
execInitAttrib: init grimresolve attribute inside ['capedcrusader', 'disciplined', 'utilitybelt', 'nimble', 'acrobatic', 'grimresolve', 'ffqtracking'] combo
    on hero2 of template robin (robin)
execInitAttrib: init ffqtracking attribute inside ['capedcrusader', 'disciplined', 'utilitybelt', 'nimble', 'acrobatic', 'grimresolve', 'ffqtracking'] combo
    on hero2 of template robin (robin)
initAttribsForChar (robin): looking at attribute wall climbing
initAttribsForChar (robin): looking at attribute nimble
initAttribsForChar: working on hero1 (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 capedcrusaderbat
execInitAttrib: init disciplined attribute inside ['capedcrusaderbat', 'disciplined', 'presence', 'utilitybelt', 'nimble', 'acrobatic', 'grimresolve', 'ffqtracking'] combo
    on hero1 of template batman (batman)
execInitAttrib: init presence attribute inside ['capedcrusaderbat', 'disciplined', 'presence', 'utilitybelt', 'nimble', 'acrobatic', 'grimresolve', 'ffqtracking'] combo
    on hero1 of template batman (batman)
execInitAttrib: init utilitybelt attribute inside ['capedcrusaderbat', 'disciplined', 'presence', 'utilitybelt', 'nimble', 'acrobatic', 'grimresolve', 'ffqtracking'] combo
    on hero1 of template batman (batman)
execInitAttrib: init nimble attribute inside ['capedcrusaderbat', 'disciplined', 'presence', 'utilitybelt', 'nimble', 'acrobatic', 'grimresolve', 'ffqtracking'] combo
    on hero1 of template batman (batman)
execInitAttrib: init acrobatic attribute inside ['capedcrusaderbat', 'disciplined', 'presence', 'utilitybelt', 'nimble', 'acrobatic', 'grimresolve', 'ffqtracking'] combo
    on hero1 of template batman (batman)
execInitAttrib: init grimresolve attribute inside ['capedcrusaderbat', 'disciplined', 'presence', 'utilitybelt', 'nimble', 'acrobatic', 'grimresolve', 'ffqtracking'] combo
    on hero1 of template batman (batman)
execInitAttrib: init ffqtracking attribute inside ['capedcrusaderbat', 'disciplined', 'presence', 'utilitybelt', 'nimble', 'acrobatic', 'grimresolve', 'ffqtracking'] combo
    on hero1 of template batman (batman)
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()
addArrow m25obj_2arrow m25obj_2 0 1
initAttribsForChar: working on m25obj_8 (league_assassin)
initAttribsForChar (league_assassin): looking at attribute danger sense
initAttribsForChar: working on m25obj_6 (league_assassin)
initAttribsForChar (league_assassin): looking at attribute danger sense
initAttribsForChar: working on m25obj_4 (league_assassin)
initAttribsForChar (league_assassin): looking at attribute danger sense
initAttribsForChar: working on m25obj_2 (league_assassin)
initAttribsForChar (league_assassin): looking at attribute danger sense
initAttribsForChar: working on m25obj_14 (league_assassin)
initAttribsForChar (league_assassin): looking at attribute danger sense
initAttribsForChar: working on m25obj_10 (league_assassin)
initAttribsForChar (league_assassin): looking at attribute danger sense
initAttribsForChar: working on m25obj_12 (league_assassin)
initAttribsForChar (league_assassin): looking at attribute danger sense
initAttribsForChar: working on m25obj_16 (league_assassin)
initAttribsForChar (league_assassin): looking at attribute danger sense
[/spoiler]

lmalonsof

Hi Benton,

I don't know if your problem is in this encounter, but I don't understand this:

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

Encounter: Packing2
Type: Fight
Villains: league_assassin, league_assassin, league_assassin, league_assassin
Marker: pack2
Next: None

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

Why aren't you asking the script to go to the next encounter?

BentonGrey

D'oh!  I had both Packing1 and Clue starting at the same time, so I didn't want Packing2 to start it over again.  When I changed the mission layout, trying to see what was broken, I forgot to get rid of that.  Still, Clue didn't work to begin with, so I doubt that is the problem.

M25

Once you get rid of the Next: None line, Clue should start.

Make sure you have some encounter markers on your map.

It looks like there is a internal problem with EZ script.  You can't have two or more heroes in an examine cutscene, but as a quick fix, change the Examine Cutscene in Clue to an End Cutscene


BentonGrey

Thanks guys!  Okay, I tried your quick fix M, and it seemed to work, after a fashion.  I set the Examine scene to a particular marker in an attempt to make sure the object was spawning.  It did, the scene played, everything worked like clockwork.  So, I put things back in the order I wanted, with the third and fourth encounters starting simultaneously, and the Examine encounter sans marker, so that it's position would be random.  I have 10 'encounter' markers, each with a specific object marker.  So, I've got encounter1_object1, etc.  However, now the Examine encounter refuses to start.  Everything else is still working, though.

Mission:
[spoiler]Story: My Story

#
# Put the story for you mission into here.
#
#------------------------------------------------------------------

Encounter: Hello
Type: Cutscene

Start Cutscene:
Camera on batman
Unfade for 3 seconds
batman says, "Feel that chill Robin?"
robin plays animation dodge_left_a
robin plays animation dodge_right_a
robin says, "Brr! Do I! My teeth are about to chatter out of my head!"
batman says, "This complex was refrigerated until a short time ago, Mr. Freeze has been here...recently."
robin says, "Feels like he's still here!"

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

Encounter: Packing
Type: Fight
Villains: league_assassin, league_assassin, league_assassin, league_assassin
Marker: pack1
Next: Packing2, Clue

Alert Cutscene:
Red Arrow on Villain1

Start Cutscene:
Remove Arrow from Villain1
Camera on Villain1
Villain1 turns to Villain2
Villain1 says, "Come on, we need to have these supplies moved before the master arrives at the new location."
Camera on robin
robin turns to Villain1
robin says, "We'll save you boys a trip!"

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

Encounter: Packing2
Type: Hunt
Villains: league_assassin, league_assassin, league_assassin, league_assassin
Marker: pack2
Next: None

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

Encounter: Clue
Type: Examine
Objects: nazihq_secret_plans

Alert Cutscene:
Fade for 3 seconds
Camera on batman
Unfade for 3 seconds
batman 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."

End Cutscene:
Camera on batman
batman says, "It looks like we were right, Freeze is working for R'as Al Ghul..."
robin turns to batman
Camera on robin
robin says,"Right, but what is this all about?"
Camera on batman
batman says, "What is it always about with R'as? Doomsday..."
Camera on robin
robin says, "He's got Mr. Freeze building some kind of doomsday weapon?"
Camera on batman
batman says, "Do you remember a few years ago, when Grant Walker, the theme park magnate, built that 'ideal city' off the coast of Gotham?"
robin says, "Ohh yeah, Oceaiana, that guy was all kinds of nuts!"
robin plays animation ranged
batman says, "Right Robin, but he wanted to wipe out all but his select remnant of humanity, much like R'as."
robin says, "And he was planning to use a jumbo sized version of 'ol Victor's freeze ray...I see! R'as has Freeze working on a new version!"
batman says, "Now that we know what he's up to, we've got to stop him before R'as can get his hands on that technology!"
robin says, "But Batman, I still don't understand why Freeze is helping Methusala."
batman says, "I have a theory Robin, but there's only one way to find out for sure, and that's to track him down. Let's get out of here!"

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

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

Alert Cutscene:
Fade for 3 seconds
Unfade for 3 seconds

Start Cutscene:
Camera on Villain1
Villain1 turns to batman
Villain1 plays animation melee
Villain1 says, "I am sorry beloved, but I cannot allow you to interfere in my father's plans any further."
Camera on batman
batman turns to Villain1
batman plays animation idle_1
batman says, "Talia, we don't have to do this."
Camera on Villain1
Villain1 says, "I have betrayed my father too many times, my love, I must not disappoint him again."

Interrogation Cutscene:
Camera on batman
batman moves to Villain1
batman says, "Talia, you have to help us...if R'as succeeds, millions could die."
Villain1 says, "What...what is it you want to know?"
batman says, "Where is he building the freeze ray?"
Villain1 says, "I will tell you...what you want to know, but it will do you no good. Father has prepared a compound for the construction of the device up the coast from Gotham."
batman says, "I know that you don't want your father to succeed Talia, and I promise that we'll stop him."
Villain1 says, "I wish you could..."
batman moves to skirmishspawn
Villain1 says, "Good luck, beloved!"[/spoiler]


Script.log: There's an error here I can't figure out.
[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 1197759738.250000
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
Campaign_ReadObjects() warning: object template <bigwater> 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\mission.py executed
! GetMapInfo
MLOG_Init(keepRunningModules=0): starting up
mlogreader.MLOG_Init: current mission = '05_CHASINGTHECOLD'
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
storing hero2: id_1,191
storing hero1: id_2,159
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 hero2 (robin)
initAttribsForChar (robin): looking at attribute capedcrusader
execInitAttrib: init disciplined attribute inside ['capedcrusader', 'disciplined', 'utilitybelt', 'nimble', 'acrobatic', 'grimresolve', 'ffqtracking'] combo
    on hero2 of template robin (robin)
execInitAttrib: init utilitybelt attribute inside ['capedcrusader', 'disciplined', 'utilitybelt', 'nimble', 'acrobatic', 'grimresolve', 'ffqtracking'] combo
    on hero2 of template robin (robin)
execInitAttrib: init nimble attribute inside ['capedcrusader', 'disciplined', 'utilitybelt', 'nimble', 'acrobatic', 'grimresolve', 'ffqtracking'] combo
    on hero2 of template robin (robin)
execInitAttrib: init acrobatic attribute inside ['capedcrusader', 'disciplined', 'utilitybelt', 'nimble', 'acrobatic', 'grimresolve', 'ffqtracking'] combo
    on hero2 of template robin (robin)
execInitAttrib: init grimresolve attribute inside ['capedcrusader', 'disciplined', 'utilitybelt', 'nimble', 'acrobatic', 'grimresolve', 'ffqtracking'] combo
    on hero2 of template robin (robin)
execInitAttrib: init ffqtracking attribute inside ['capedcrusader', 'disciplined', 'utilitybelt', 'nimble', 'acrobatic', 'grimresolve', 'ffqtracking'] combo
    on hero2 of template robin (robin)
initAttribsForChar (robin): looking at attribute wall climbing
initAttribsForChar (robin): looking at attribute nimble
initAttribsForChar: working on hero1 (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 capedcrusaderbat
execInitAttrib: init disciplined attribute inside ['capedcrusaderbat', 'disciplined', 'presence', 'utilitybelt', 'nimble', 'acrobatic', 'grimresolve', 'ffqtracking'] combo
    on hero1 of template batman (batman)
execInitAttrib: init presence attribute inside ['capedcrusaderbat', 'disciplined', 'presence', 'utilitybelt', 'nimble', 'acrobatic', 'grimresolve', 'ffqtracking'] combo
    on hero1 of template batman (batman)
execInitAttrib: init utilitybelt attribute inside ['capedcrusaderbat', 'disciplined', 'presence', 'utilitybelt', 'nimble', 'acrobatic', 'grimresolve', 'ffqtracking'] combo
    on hero1 of template batman (batman)
execInitAttrib: init nimble attribute inside ['capedcrusaderbat', 'disciplined', 'presence', 'utilitybelt', 'nimble', 'acrobatic', 'grimresolve', 'ffqtracking'] combo
    on hero1 of template batman (batman)
execInitAttrib: init acrobatic attribute inside ['capedcrusaderbat', 'disciplined', 'presence', 'utilitybelt', 'nimble', 'acrobatic', 'grimresolve', 'ffqtracking'] combo
    on hero1 of template batman (batman)
execInitAttrib: init grimresolve attribute inside ['capedcrusaderbat', 'disciplined', 'presence', 'utilitybelt', 'nimble', 'acrobatic', 'grimresolve', 'ffqtracking'] combo
    on hero1 of template batman (batman)
execInitAttrib: init ffqtracking attribute inside ['capedcrusaderbat', 'disciplined', 'presence', 'utilitybelt', 'nimble', 'acrobatic', 'grimresolve', 'ffqtracking'] combo
    on hero1 of template batman (batman)
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()
spawn: 'position' parameter invalid type, should be string or tuple.
ff.DoEncCustom(2,cutscenes = [['alertcs', [['priority', 1], ['required', 'batman'], ['cutscene', 'CS_Start()', 'CS_Fade(3)', "CS_Camera('batman', dist=-160, yaw=0)", 'CS_UnFade(3)', "CS_Speak('batman', '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.', force=0)", 'CS_End()']]], ['endcs', [['priority', 1], ['required', 'batman', 'robin'], ['cutscene', 'CS_Start()', "CS_Camera('batman', dist=-160, yaw=0)", 'CS_Speak(\'batman\', "It looks like we were right, Freeze is working for R\'as Al Ghul...", force=0)', "CS_TurnTo('robin', 'batman')", "CS_Camera('robin', dist=-160, yaw=0)", "CS_Speak('robin', 'Right, but what is this all about?', force=0)", "CS_Camera('batman', dist=-160, yaw=0)", 'CS_Speak(\'batman\', "What is it always about with R\'as? Doomsday...", force=0)', "CS_Camera('robin', dist=-160, yaw=0)", 'CS_Speak(\'robin\', "He\'s got Mr. Freeze building some kind of doomsday weapon?", force=0)', "CS_Camera('batman', dist=-160, yaw=0)", 'CS_Speak(\'batman\', "Do you remember a few years ago, when Grant Walker, the theme park magnate, built that \'ideal city\' off the coast of Gotham?", force=0)', "CS_Speak('robin', 'Ohh yeah, Oceaiana, that guy was all kinds of nuts!', force=0)", "CS_Animate('robin','ranged')", 'CS_Speak(\'batman\', "Right Robin, but he wanted to wipe out all but his select remnant of humanity, much like R\'as.", force=0)', 'CS_Speak(\'robin\', "And he was planning to use a jumbo sized version of \'ol Victor\'s freeze ray...I see! R\'as has Freeze working on a new version!", force=0)', 'CS_Speak(\'batman\', "Now that we know what he\'s up to, we\'ve got to stop him before R\'as can get his hands on that technology!", force=0)', 'CS_Speak(\'robin\', "But Batman, I still don\'t understand why Freeze is helping Methusala.", force=0)', 'CS_Speak(\'batman\', "I have a theory Robin, but there\'s only one way to find out for sure, and that\'s to track him down. Let\'s get out of here!", force=0)', 'CS_End()']]]], marker = 'encounter', actions="villains fight heroes, allies fight villains, object can be examined", objects = ['nazihq_secret_plans'],return_function="StorylineEncounterReturn")
Traceback (innermost last):
  File "C:\Program Files\Irrational Games\Freedom Force vs The 3rd Reich\.\DCUG\missions\scripts\m25story.py", line 250, in DoStorylineStateEvent
    DoStorylineState(story, state, event.user)
  File "C:\Program Files\Irrational Games\Freedom Force vs The 3rd Reich\.\DCUG\missions\scripts\m25story.py", line 293, in DoStorylineState
    if not StorySetupEncounter(enc_id,story,state,a):
  File "C:\Program Files\Irrational Games\Freedom Force vs The 3rd Reich\.\DCUG\missions\scripts\m25story.py", line 383, in StorySetupEncounter
    val = eval('ff.%s(%i,%s,return_function="StorylineEncounterReturn")'%(encname,enc_id,encparams))
  File "<string>", line 0, in ?
  File "C:\Program Files\Irrational Games\Freedom Force vs The 3rd Reich\.\DCUG\missions\scripts\m25enc.py", line 4193, in DoEncCustom
    return SetupEncounter(enc_id, encounter)
  File "C:\Program Files\Irrational Games\Freedom Force vs The 3rd Reich\.\DCUG\missions\scripts\m25enc.py", line 1342, in SetupEncounter
    if not SetupEnc_Spawn(enc_id, start_num, encounter): return 0
  File "C:\Program Files\Irrational Games\Freedom Force vs The 3rd Reich\.\DCUG\missions\scripts\m25enc.py", line 1408, in SetupEnc_Spawn
    EncSpawnGroup(enc_id,start_num +'_'+ s[1] ,s[2],s[0],s[3],marker_type=s[4],create_markers=s[5])
  File "C:\Program Files\Irrational Games\Freedom Force vs The 3rd Reich\.\DCUG\missions\scripts\m25enc.py", line 359, in EncSpawnGroup
    m25_spawn(name,template,start_markers[num],teleport=teleport,objclass=savename,disable=disable)
  File "C:\Program Files\Irrational Games\Freedom Force vs The 3rd Reich\.\DCUG\missions\scripts\m25enc.py", line 240, in m25_spawn
    if js.Object_GetAttr(name,'complex'):
SystemError: NULL result without error in call_object
[/spoiler]

BentonGrey

Quote from: M25 on September 11, 2007, 09:28:20 AM
Quote from: BentonGrey on September 10, 2007, 09:03:14 PM
Also, can one of y'all give me an example of how the whole win/lose thing works?  Say I've got this encounter:

Encounter: Grab
Type: Snatch
Villains: thug_with_gun, thug_with_bat
Allies: civilian_female

How would I go about setting it up so that if they get away with the item, you lose the mission, but if you recover the item, you win?

Do you do something with the cutscene?

Item Lost Custscene:
Lose

Item Returned Cutscene:
Win

Or what?


You can choose to immediately win or lose a mission from the Next: section of the encounter.   Next: works on the end conditions (not the cutscenes), so you'd put them there.

For Snatch, it has three end conditions:  Item Lost, Item Recovered, and End.

If you want to lose the mission if the villains get away with the item, then use Item Lost

Next: If Item Lost: Lose

If you want to win the mission if the hero stops the villains, then use Item Recovered

Next: If Item Recovered: Win


If you want to win the mission no matter what happens, use End

Next: If End: Win


Of course, you can also use the more fine-grained actions as Imalonsof suggests, but you have to be careful to look up which end conditions are available based on which actions you use.



Also remember, that if EZscript reaches the end of your story file, it will automatically win the mission.


And yet another post by me....sorry guys, I'm just trying to make up for lost time here.  I'm curious about this win/lose function, as I've followed your example there, but in both missions I use it, if you lose the encounter, nothing happens.  For example:

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

Encounter: Guard8
Type: Flee the Scene
Villains: freeze_lackey
Marker: cave1
Primary Objective: "Sneak past the guards."
Next: If All Escaped: Lose
Next: If None Escaped: Win
Next: If Some Escaped: Lose

Start Cutscene:
Hero1 says, "We've been spotted! We have to take them out before they can alert the others!"

Villain1 Escapes:
Villain1 says, "It's the Bat! Raise the alarm!"
Hero1 says, "We've been discovered, now Freeze will evacuate the base!

None Escaped Cutscene:
Hero1 says, "Now to get a closer look at this operation..."[/spoiler]

In this encounter, I let the guy escape, and I didn't lose the mission.  Nothing happened.  I haven't tested the win thing yet, but it is the last encounter in the script, so it's probably not an issue.

GGiant

I don't really know about this but,
Next: If All Escaped: Lose
Next: If None Escaped: Win
Next: If Some Escaped: Lose
[/quote]
Why is there a Next: If ALL Escaped: Lose, When there's already an Next: If SOME Escaped: Lose or vice versa?
Although I don't know what I'm talking about so carry on... :unsure:

M25

For the Win/Lose question: 

the Win and Lose worlds aren't being translated correctly internally under certain conditions.  What does that mean?  You did it right, but you found a bug.

As another quick fix, you can use __lose__  and __win__ instead of Lose and Win and it will work.  (That's two underscore characters on each side of the word).


Your Villain1 Escapes cutscene is incorrect though.  It should be labelled Villain Escapes Cutscene or freeze_lackey Escapes Cutscene


Encounter: Guard8
Type: Flee the Scene
Villains: freeze_lackey
Marker: cave1
Primary Objective: "Sneak past the guards."
Next: If All Escaped: __lose__
Next: If None Escaped: __win__
Next: If Some Escaped: __lose__

Start Cutscene:
Hero1 says, "We've been spotted! We have to take them out before they can alert the others!"

Villain Escapes Cutscene:
Villain1 says, "It's the Bat! Raise the alarm!"
Hero1 says, "We've been discovered, now Freeze will evacuate the base!

None Escaped Cutscene:
Hero1 says, "Now to get a closer look at this operation..."




For the Examine Encounter, I haven't been able to replicate the problem.   Make sure your object markers in this case end with 1  (encounter1_object1, encounter2_object1, encounter3_object1)


BentonGrey

Thanks for the help guys!  I haven't tested the __lose__ thing yet, but it seems like it should work.  I have been testing the other mission with the Examine cutscene, and I've established that everything works beautifully when I specify a marker.  However, when I leave it up for random encounters it refuses to play.  I can't figure it out, I seem to have the positional markers for encounters1-10 set up appropriately, along with their particular object markers.  Still, it's not a problem, I'll simply specify a marker, and people will just have to get over it not being random.

BentonGrey

Howdy guys, the base scene of the first Atom mission is still not working.  As a matter of fact, now it isn't even unfading.

[spoiler]#--------------------------------------
#
#  Sample Base cutscenes for EZ script
#
#--------------------------------------


Story: My Story

#
# The base encounter will set up the camera
# and take care of any campaign housekeeping
# e.g. right after the base loads.
# sc_pat_sign_diamond_small17 teleports to closet1

Encounter: Start
Type: Base

Start Cutscene:
Camera on mainroom1
Unfade for 3 seconds
Narrator says, "In quiet, peaceful Ivy Town, all is not as it appears. A local

jewelrey store holds the beginning of a strange story..."
Camera on jewler to customer
jewler turns to customer
customer turns to jewler
jewler says, "Well sir, it is a beautiful stone, I'm sure that she would love

it."
customer says, "hmm...I'm sure she would...but it is very pricey...could I see

something a little less expensive?"
jewler says, "Of course sir, I'll just be a moment."
jewler moves to mainroom2
Camera on jewler
Wait for 2 seconds
jewler moves to mainroom1_ally1
Camera on customer
jewler plays animation melee
jewler says, "What did you do with the diamond?! Return it immediately!"
customer plays animaiton stunned
customer says, "Wh-what are you talking about? It was right there, I didn't do

anything with it!"
jewler plays animation ranged
jewler says, "Well, don't try and run off, the police are going to want to have

a word with you, mister!"


#
# The briefing cutscene will play when the player
# selects the briefing button on the base screen.
#
# Notice the 'Starts when: Briefing' line.
# That must be there or it won't play as a briefing.
#


Encounter: Briefing
Type: Cutscene
Starts When: Briefing

Start Cutscene:
Camera on ray_palmer
ray_palmer says, "Hmm..if the dwarf star matter has the abilities to warp

mass..."
ray_palmer plays animation ranged
jean_loring moves to boss1
jean_loring says, "Ray? Do you have a minute?"
ray_palmer turns to jean_loring
ray_palmer says, "Hi honey, of course, I've always got time for you."
jean_loring says, "The strangest thing happened today, and I wanted to tell you

about it."
ray_palmer says, "Well, I'm not making any progress here, let's hear your

story. What happened?"
jean_loring says, "A man named Greg Adams came into my office a few hours ago,

and asked me to defend him in court. Apparently, he is accused of stealing a

valuable diamond."
ray_palmer says, "Well, that doesn't sound particularly strange, what's his

alibi?"
jean_loring says, "That's where it gets weird, he claims that the gem just

'disappeared.' He says the clerk walked away, looking for another stone, and

Mr. Adams himself was looking at something else in the display case."
jean_loring says, "The next thing he knew, the clerk had returned and was

calling him a theif."
ray_palmer says, "And neither of them saw anyone take the stone?"
jean_loring says, "No, and neither did anyone else in the store, isn't that

bizarre? Whoever the theif was, he was very clever."
ray_palmer says, "I suppose so, that is very strange, so, how does the case

look?"
jean_loring says, "Ohh, it should be simple enough, the evidence against Mr.

Adams is all circumstantial, but if he's not the thief, who is?"
ray_palmer says, "Yes, that is the question, isn't it?"
jean_loring says, "Well, thanks for listening darling, but I suppose I had

better let you get back to work, I'll see you for dinner tonight?"
ray_palmer says, "I wouldn't miss it for the world dear..."
jean_loring moves to firstdoor1
ray_palmer turns to seconddoor1
ray_palmer says, "Hmm...this is quite a pretty mystery...I wonder if the Atom

might be able to find something the police might have overlooked?"
ray_palmer moves to seconddoor1

[/spoiler]

Any suggestions?

M25

Go into m25config.py and set

M25_USE_REPORTS = 1

Then post the script.log


Other than that, make sure you have an encounter1 marker on the base map.


BentonGrey

Thanks M, I'll try and do that when I come back to the Atom missions.  In the meantime, I'm trying to finish the JLA campaign, but I'm stuck on the second mission.  I'm having trouble with one encounter in particular.  What I WANT to happen is, Batman has to leave the room he's in and go to another room, where a new encounter will start, spawning villains BEHIND him.  I've tried using Local Cutscene, but the cs didn't play when he neared the designated marker.  I'm assuming that you can't designate a marker for those.  I suppose I need to use a custom encounter, but I'm not really sure what I need to have in it.

M25

EZ script triggers encounters when the hero nears an object/villain/minion/ally etc. that belongs to the encounter.  Just having a marker isn't enough (though I can see how that would be better in this case). 

Have the Local Cutscene spawn some sort of object (even a ffx_tiggot should work) and it will trigger when the hero gets near it.


|