Freedom Reborn Archive

Freedom Force Forums => Scripting Forum => Topic started by: qazwsx on September 20, 2008, 10:45:20 AM

Title: EZscript, Oh behave yourself!
Post by: qazwsx on September 20, 2008, 10:45:20 AM
Ok so I'm trying to give consequences to the player's decisions and naturally you can decide to behave badly. Some whipped on something like this(unfinished): Story: Morlock Massacre


Encounter: Hurt
Type: Custom
Actions: Rivals start at distance, Timed Encounter
Allies: x
Rivals:bacchite_extra
Marker: Hurt
Time: 4 seconds

Start Cutscene:
Rival moves to Ally
Cinematic Camera on Ally to Rival
Rival plays animation stunned
Ally turns to Rival
Ally says, "What is it child, are you hurt?!"
Rival says, "Ple.. Please... help.. the others..."
Rival plays animation fall

Timer Expired cutscene:
Fade for 0 seconds
Ally says, "Get her medical attention immediately!"
Rival is destroyed
Unfade for 2 seconds


Encounter: Investigate
Type: Chat
Allies: x
Map: cityfreedom
Marker: Investigate

Chat Cutscene:
Hero turns to Ally
Ally turns to Hero
Cinematic Camera on Hero to Ally
Hero says, "Professor, did she make it?."
Cinematic Camera on Ally to Hero
Ally says, "I'm afraid not, tragically. But we must now concentrate on what can still be done"
Ally says, "Before her passing, I was able catch a glimpse of a bystander who saw her being chased. He was entering a building which resembled a.. top hat. Find out what you can."
Hero says, "On it professor."


Encounter: Interrogate
Type: Simple Choice
Allies: gangster
Map: tophat

Choice1: Ask nicely
Choice2: Act like a female no no place

Next: If Ask nicely: Choose 1 from Spill the beans, Ignored
Next: If Act like a female no no place: Fight
Primary Objective: "Investigate the incident"

Start Cutscene:
Camera on Ally
x says telepathically, "That's him."

End Cutscene:
Cinematic Camera on Hero to Ally
Hero says, "Excuse me"

--------------------------------------------Choices--------------------------------------


Encounter: Spill the beans
Type: Cutscene
Allies: gangster
Map: tophat
Bonus: 50 prestige and 25 xp
Next: Manhole

Start Cutscene:
Cinematic Camera on Hero to Ally
Ally says, "They came that way from the city, guy was a large hairy bastard."
Hero says, "Appreciate it."
Ally says, " Don't mention'"

Start Cutscene:
Cinematic Camera on Hero to Ally
Ally says, "They came that way from the city, guy was a large hairy bastard."
Hero says, "Appreciate it."
Ally says, "Yeah just leave me alone freak."

End Cutscene:
Hero says, "Professor, I suspect this may have been Sabertooth's doing"
x says telepathically, "Yes, that seems quite likely. However it might be a bit soon to conclude that as fact."
x says telepathically, "I want you to find out more."
Hero says, "You read my mind"


Encounter: Ignored
Type: Simple Choice
Allies: gangster
Map: tophat

Choice1: Ask nicely again
Choice2: Threaten

Next: If Ask nicely again: Choose 1 from Ignored, Lie
Next: If Threaten: Choose 1 from Spill the beans, Fight, Lie

Start Cutscene:
Cinematic Camera on Hero to Ally
Ally says, "Scram, yer freak"

Start Cutscene:
Cinematic Camera on Hero to Ally
Ally says, "Scram"

Start Cutscene:
Cinematic Camera on Hero to Ally
Ally says, "frell off"

Start Cutscene:
Cinematic Camera on Hero to Ally
Ally says, "Sod off female no no place"

Start Cutscene:
Ally says, "."

Start Cutscene:
Hero says, "..."

Start Cutscene:
Hero says, "."

Start Cutscene:
Hero says, ".."


Encounter: Lie
Type: Cutscene
Allies: gangster
Map: tophat

Next: Goosechase

Start Cutscene:
Cinematic Camera on Hero to Ally
Ally says, "She came that way east. Freak."


Encounter: Goosechase
Type: Wait
Map: tophat

Next: Ignored
Primary Objective: "Investigate"

Minimum Time: 6 seconds
Maximum Time: 12 seconds


Encounter: Fight
Type: Custom
Actions: villains fight heroes, allies fight villains, Allies Fight Heroes, Allies Start At Distance, Villains Can Be Interrogated
Map: tophat
Villains: gangster
Allies: Security, Security
Primary Objective: "Get him to talk without causing any more trouble" for 0 prestige and 30 xp
Next: If Allies Saved: Manhole
Next: If Allies defeated: Lose

Alert Cutscene:
Cinematic Camera on Hero to Villain
Villain says, "Why you little! I'll have your head for this!"
Hero says, "You can try, bud, die tryin'."

Banter Cutscene:
Ally says, "Oy we cannot have that behaviour in this establishment! Leave it out!"

Interrogation Cutscene:
Cinematic Camera on Villain
Villain says, "Alright alright! What do you want from me?!"
Hero says, "You saw a ragged girl being chased. Who and what!?"
Villain says, "it was a large hairy bloke and they came that way from the city, that's all I know I swear to god.
Hero says, "Swear to me!!!"
Villian says, "I swear! I swear!"
Ally says, "I insist you desist or we're calling the cops!"
Hero says, "I was just about to leave. heh... I've had my fun."

End Cutscene:
Hero says, "I think this is Sabertooth's handiwork."
x says telepathically, "Yes, get out of there and make sure without doing any more damage"
Hero says, "Soree"


Encounter: Manhole

Would it work so the player would get in trouble for murdering bouncers? Oh and how about the use of the "banter" cutscene? Will it play midway through the fight and is there a way to control when? Lastly is it possible to have a script where attacking civs in the city will get you shot at? Cheers!
Title: Re: EZscript, Oh behave yourself!
Post by: M25 on September 20, 2008, 12:21:15 PM
You can certainly have different story branches based on the outcomes of an encounter.  Look at the documentation and you'll see which endings are available for each encounter type and you can set up the story using those. 

Banter cutscenes are played at random intervals during an encounter.  There's no way to control exactly when or which one is played.  They are meant to be random color.

You can play a cutscene when someone is KO'd, such as

Villian KO Cutscene:
...

thug_with_gun KO Cutscene:
...


For the civilians, you could fake it by setting up the map so that civilians spawn at certain places, and then use an encounter to check if they are hurt.  I would put some markers named 'civilian1', 'civilian2', etc. on the map to control where the civilians pop up.

Encounter: Leave the Civ Alone
Type: Custom
Actions: villain stops at two-thirds health
Villains: civilian_male
Marker: civilian
Next: Cops Investigate Heroes

Villains stop Cutscene:
Civilian says, "Help! These so-called heroes are attacking me!"


You can run that encounter more than once, at the same time, to have multiple civilians.

Encounter: Start Civilians
Type: None
Next: Leave the Civ Alone, Leave the Civ Alone, Leave the Civ Alone


Title: Re: EZscript, Oh behave yourself!
Post by: qazwsx on September 21, 2008, 03:01:24 AM
lol :thumbup: Genuis! Would running many of them strain the cpu though? I'm really starting to get the hang of ezscripting but I still can't make the freeroam start after another. Nothing happens if you click on "mission briefing"(I've even tried adding a briefing cutscene), and there's no way out of the base screen. Does the base screen's map need to be a seperate map from the map which you start on?(that's what you did with your sample) If so, how do you transition from the base_map to the "start map"? Cheers mate.
Title: Re: EZscript, Oh behave yourself!
Post by: qazwsx on September 21, 2008, 05:51:24 AM
O and one more minor question, is there a cutscene command to have the characters Kayoed? If I play the fall animation they get back up again before the next action. Sorry I know this must rather tedious, it'll die off soon I promise :lol:
Title: Re: EZscript, Oh behave yourself!
Post by: M25 on September 21, 2008, 10:06:37 AM
An example.... If you have a base called hideout, and you want to move to a map called mycity, you need the following:

Three directories:  one called hideout, one called mycity, and one called freeroam.

The hideout map needs to have a marker called base_map, a marker called mapname_hideout, and a marker called to_mycity

The mycity map needs to have a marker called mapname_mycity, and a marker called to_hideout

Inside Missions/freeroam/mission.py  change the starting map to 'hideout'.


Encounters don't take a lot of cpu time until they are actually running (the hero gets close enough to activate it), so having several on the map at once shouldn't be too much of a problem.


You can ko a character in a cutscene by using 'is killed'

Villain is killed

You can completely remove a character from the map by using 'is destroyed'



Title: Re: EZscript, Oh behave yourself!
Post by: qazwsx on September 22, 2008, 03:31:42 AM
Quote from: M25 on September 21, 2008, 10:06:37 AM
An example.... If you have a base called hideout, and you want to move to a map called mycity, you need the following:

Three directories:  one called hideout, one called mycity, and one called freeroam.

The hideout map needs to have a marker called base_map, a marker called mapname_hideout, and a marker called to_mycity

The mycity map needs to have a marker called mapname_mycity, and a marker called to_hideout

Inside Missions/freeroam/mission.py  change the starting map to 'hideout'.


Encounters don't take a lot of cpu time until they are actually running (the hero gets close enough to activate it), so having several on the map at once shouldn't be too much of a problem.


You can ko a character in a cutscene by using 'is killed'

Villain is killed

You can completely remove a character from the map by using 'is destroyed'




Oh thanks for "is killed", works brilliantly(apart from some occasional weird utterings).
Yeah I've been using "is destroyed" rather lots, cause when you simulate one encounter though several, you have to "destroy" everyone at the end of each encounter, do you not? Otherwise you'de end up with lots of copied characters init. Is there a more elegant method of linking encounters? I can only imagine what an infinitely looping choice would look like :lol:

Quote from: M25 on September 21, 2008, 10:06:37 AM
An example.... If you have a base called hideout, and you want to move to a map called mycity, you need the following:

Three directories:  one called hideout, one called mycity, and one called freeroam.

The hideout map needs to have a marker called base_map, a marker called mapname_hideout, and a marker called to_mycity

The mycity map needs to have a marker called mapname_mycity, and a marker called to_hideout

Inside Missions/freeroam/mission.py  change the starting map to 'hideout'.
Hmm, according to what I've observed so far it seems to be far more complicated than this. When you first start a new campaign, "cityfreedom" loads, then immediately fades to the selection screen. Selecting restart will send you to "fortressbase"(or whatever you defined in mission.py I Think) after selecting your character it then fades and finally sends you to "fortress". The link to "fortressbase" remains, but will instead send you to your desktop if you get curious. Finally you now move to "cityfreedom" once again, and from here on end it's mostly trouble free. However with the beta(whatever version of ezscript your sample had) linking "fortress" to anywhere but "cityfreedom" just warps you back to where you started "fortress" infinitely. I have not tried this as yet with the lastest EZscript, but it seems everything will be OK as long as you mantain the three map names "fortressbase" "fortress" "cityfreedom". Then you're free. This is of course absolutely liveable with, as you have already brought more than what anyone thought was possible. Lastly at least with this structure("fortressbase" "fortress" to "cityfreedom") starting the freeroam after another mission will just have you stuck at the base screen with no options whatsoever(not even esc) the mouse appears and the game is not actually frozen, though.

Hope you know what I mean and that this was all just some silly mistake I did. :P
Title: Re: EZscript, Oh behave yourself!
Post by: M25 on September 22, 2008, 08:02:43 AM
Each encounter cleans up after itself, although there is a delay.  You'll see characters running off after an encounter and then vanish as EZ script removes them. 

If you have a character that you want to use in multiple encounters, give it a name, and EZ script will use the same on-screen character between encounters.

Encounter: One
Type: Cutscene
Allies: minute_man named joe

Encounter: Two
Type: Cutscene
Allies: minute_man named joe

Start Cutscene:
...
joe is destroyed

Encounter One will spawn minute_man and flag him so that he won't be removed at the end of the encounter.  Encounter Two will use the same minute_man.  You'll have to explicitly destroy characters with names though.



You're getting some strange behavior with the freeroam maps.  It shouldn't matter at all what the map is called... it isn't hardwired anywhere in the script.  Are there any errors in the script.log file (in the Freedom Force directory) after you try running the campaign?

Title: Re: EZscript, Oh behave yourself!
Post by: qazwsx on September 23, 2008, 01:39:19 AM
Yeah I think there's something thoroughly wrong with the one I'm using. At first, custom encounters didn't work "doencustom" not found or something, so downloaded the latest FFX, which solved that problem, but then the "cutscene" and "Local cutscene" decided to stop working(nothing happens at the encounter), no biggie right, every encounter can be done with custom encounters after all. But the worst was yet to come. After getting some leeway into actually writing instead of sorting technical problems, I hit a brickwall. No matter what I do I can't get any encounters to play after a particular one. Here is the script if you're free to browse through for errors, but I certainly doubt it, as I've millionquadruple checked. Nothing happens after the simple choice: Encounter: Interrogate
Type: Simple Choice
Allies: mafioso_gun named clint
Map: tophat
Marker: interrogate

Choice1: Ask nicely
Choice2: Act like a female no no place

Next: If Ask nicely: Choose 1 from Spill the beans, Ignored
Next: If Act like a female no no place: Fight

Start Cutscene:
Camera on Ally
x says telepathically, "That's him."

Chat Cutscene:
Cinematic Camera on Hero to Ally
Hero says, "Excuse me"
clint turns to Hero


Encounter: Spill the beans
Type: Cutscene
Allies: mafioso_gun named clint
Map: tophat
Marker: beans
Bonus: 50 prestige and 25 xp
Marker: interrogate

Start Cutscene:
Cinematic Camera on Hero to Ally
Ally says, "They came that way from the city, guy was a large hairy bastard."
Hero says, "Appreciate it."
Ally says, " Don't mention'"

Start Cutscene:
Cinematic Camera on Hero to Ally
Ally says, "They came that way from the city, guy was a large hairy bastard."
Hero says, "Appreciate it."
Ally says, "Yeah just leave me alone freak."

End Cutscene:
Hero says, "Professor, I suspect this may have been Sabertooth's doing"
x says telepathically, "Yes, that seems quite likely. However it might be a bit soon to conclude that as fact."
x says telepathically, "I want you to find out more."
Hero says, "You read my mind"


Encounter: Ignored
Type: Simple Choice
Allies: mafioso_gun named clint
Map: tophat
Marker: interrogate

Choice1: Ask nicely again
Choice2: Threaten

Next: If Ask nicely again: Choose 1 from Ignored, Lie
Next: If Threaten: Choose 1 from Spill the beans, Fight, Lie

Start Cutscene:
Cinematic Camera on Hero to Ally
Ally says, "Scram, yer freak"

Start Cutscene:
Cinematic Camera on Hero to Ally
Ally says, "Scram"

Start Cutscene:
Cinematic Camera on Hero to Ally
Ally says, "frell off"

Start Cutscene:
Cinematic Camera on Hero to Ally
Ally says, "Sod off female no no place"

Start Cutscene:
Ally says, "."

Start Cutscene:
Hero says, "..."

Start Cutscene:
Hero says, "."

Start Cutscene:
Hero says, ".."


Encounter: Lie
Type: Cutscene
Allies: mafioso_gun named clint
Map: tophat
Marker: interrogate

Next: Goosechase

Start Cutscene:
Cinematic Camera on Hero to Ally
Ally says, "She came that way east. Freak."


Encounter: Goosechase
Type: Wait
Map: tophat

Next: Ignored
Primary Objective: "Investigate"

Minimum Time: 6 seconds
Maximum Time: 12 seconds


Encounter: Fight
Type: Custom
Actions: villains fight heroes, allies fight villains, Allies Fight Heroes, Allies Start At Distance, Villains Can Be Interrogated
Map: tophat
Marker: interrogate
Villains: mafioso_gun named clint
Allies: black_jack, black_jack
Primary Objective: "Get him to talk without causing any more trouble" for 0 prestige and 30 xp
Next: If Allies Saved: Manhole
Next: If Allies defeated: Lose

Alert Cutscene:
Cinematic Camera on Hero to Villain
Villain says, "Why you little! I'll have your head for this!"
Hero says, "You can try, bud, die tryin'."

Banter Cutscene:
Ally says, "Oy we cannot have that behaviour in this establishment! Leave it out!"

Interrogation Cutscene:
Cinematic Camera on Villain
Villain says, "Alright alright! What do you want from me?!"
Hero says, "You saw a ragged girl being chased. Who and what!?"
Villain says, "it was a large hairy bloke and they came that way from the city, that's all I know I swear to god.
Hero says, "Swear to me!!!"
Hero plays animation special_3
villain says, "I swear! I swear!"
Ally says, "I insist you desist or we're calling the cops!"
Hero says, "I was just about to leave. heh... I've had my fun."

:banghead:
I'm probably gonna quit after this, you've been just grand, thanks for all the help and patience, which is what really made me "perservere" :lol: as I didn't want it going to waste.
Title: Re: EZscript, Oh behave yourself!
Post by: M25 on September 23, 2008, 08:04:21 AM
Make your choices lower case (it's a bug).  So 'ask nicely' instead of 'Ask nicely'

It's very gratifying to see a mission come to life, so to speak, in the game.  Just start small and keep at it.
Title: Re: EZscript, Oh behave yourself!
Post by: qazwsx on September 24, 2008, 07:26:11 AM
Woah! Can't believe it was as simple as that. Many thanks to you yet again. Though I think you might wanna include that "little tidbit" in the User Manual. Here's another one I discovered :rolleyes:: Choose X from won't directly work with Simple choices. But instead you can lead it to a "Type: None" with the Chooser. Another odd thing I discovered, my freeroam only works(read starts) if I have both "freeroam start" and "ezscriptfreeroam" in the campdef, respectively, though I haven't tried it the other way round, is this supposed to be? As a side note, I've been wondering, where do the EZscript characters get their stats and powers from? At first I thought it would use the character which shares the same name as the template, but this turned out to be false. Oh and three last questions:
-Is there a way to act out two cutscene commands simultaneosly?(two animations or speech while animating)
-Can "X move to" be directed to a specific location?(with a marker or something)
-Can a character be given animation commans out of a cutscene?

Cheers.
Title: Re: EZscript, Oh behave yourself!
Post by: M25 on September 24, 2008, 09:05:32 AM
Heh, I thought I had fixed the simple choice issue, but apparently not. 

The issue with campdef sounds odd.  I've never had to include ezscriptfreeroam in the campaign. 


Characters get their stats either from the templates in the dat files, or from hero files in your hero directory.

-Cutscenes are strictly sequential.  You can't run two commands at once.

- You can specify a marker in the move to command.  Villain moves to my_marker

- No, characters cannot be given animation commands outside of a cutscene.  What are you trying to do?

Title: Re: EZscript, Oh behave yourself!
Post by: qazwsx on September 24, 2008, 05:57:41 PM
Oh you know, just to have people in the club dancing or maybe using characters as corpses(instead of a new mesh). Could probably be done through AI yeah? Though I have yet to venture there. I spose a brute force method would be to replace the idle keyframe with whatever you need, but you'd be limited to one. Is it possible to spawn allies depending on who the player character is? meaning, you wouldn't want to have a copy of your character as an ally now would you?
Thanks!
Title: Re: EZscript, Oh behave yourself!
Post by: qazwsx on September 25, 2008, 02:20:37 AM
[quote

Characters get their stats either from the templates in the dat files, or from hero files in your hero directory.

[/quote]

But the templates don't list any powers. :huh:
Title: Re: EZscript, Oh behave yourself!
Post by: M25 on September 25, 2008, 08:42:38 AM
If you look at the characters tab in ffedit, you'll see that characters have the same name as the templates in the templates tab.  The game links them automatically.  Each character entry contains a list of powers and attributes, and the actual power descriptions are contained in the entries in the powers tab.


For the club dancing, you could use Banter cutscenes that play a sequence of animations. 

Encounter: Dance
Type: Custom
Actions: allies start immediately
Allies: <list of allies>

Banter Cutscene:
Ally plays animation 1
Ally plays animation 2
etc.

Banter Cutscene:
Ally plays animation 2
Ally plays animation 4
etc.

Banter Cutscene:
...


EZ script can't spawn allies based on they player's team.  That is a good idea though.


Title: Re: EZscript, Oh behave yourself!
Post by: qazwsx on September 26, 2008, 02:53:26 AM
Thanks, although for the banter cutscene, the animation would only play IN the cutscene, would it not? The idea is not to "watch some dancin'" but rather to add to the atmosphere and make a club feel like a club, a room full of people standing still deosn't really get that message across you know?(Although I have seen such an occurance in real life actually!) Okey, time for my daily list of questions :P I know I promise I'd stop, but you're always learning with EZscript)

1. How do direct where fleeing characters flee to? I have a marker called "end" but they simply flee to random edges of the map. An extension of some sort perhaps? My "end" isn't an edge of the map by the way, but a sewer cover.

2. Going back to the corpses bit, could I simply directly kill the characters? How is fading handled?(minions fade in a blink I know)

3. Can I use multiple markers with the same name? I know you can have <markername>1, <markername>2 etc, but then would marker1 positions like <markername>1villain1 still work for the other numbered markers? Oh and lastly, can you substitue the template or given name for marker1"ally1"?

Much thanks once again, and I apologize if they seem a bit rapid-fire :lol:
Title: Re: EZscript, Oh behave yourself!
Post by: M25 on September 26, 2008, 09:18:38 AM
A cutscene doesn't have to take over the interface to the game.  If you don't add any camera commands, then a cutscene will play while the player can still move their characters around.  So the banter cutscenes could simulate the dancing while the player is off doing something else.

1.  The marker needs to be called <encountername_end1>.  So if you have an encounter marker called encounter1, the end marker is called encounter1_end1.  You can also have encounter1_end2, encounter1_end3, etc. if you want a bit of randomization.  If EZ script doesn't find such a marker, it creates one at the edge of the map.  So... if you want someone to flee to a specific spot, you can either put all of the encounterX_end1 markers at the sewer cover, or place your own marker on the map to use for the encounter.  If you call the marker 'sewerflee1' then the end marker would be called sewerflee1_end1, and you'd need a

Marker: sewerflee1

statement in your encounter.


2. Templates that are marked as GAME_OBJ_VILLAIN in the templates tab of ffedit won't fade when ko'd.

3. No and no.  Encounter markers don't share anything.  markername1_villain1 will only work for markername1.  You can't use a template or given name for the marker name (that's a good idea too).


Title: Re: EZscript, Oh behave yourself!
Post by: qazwsx on September 27, 2008, 07:05:56 AM
Hmm, I do recall being in full control of the characters during cutscenes with certain installations of ffx or a mod, but not with my freeroam folder. I wonder what causes it? I'm sure it' (a) specific file(s) as I remember installing something before the game transformed itself. It was one of Premonitioner's mods I was playing I believe, and initially all was normal(ie locked controls during cutscenes). But after installing something ontop of it which I can't remember, the top and bottom borders of the cutscenes would move away after the first few seconds or so, and then you'd have full control of the heroes. It's nearly identical to the situation you get if you haven't captioned your dialogue in EZscript. Oh actually I've completely forgetten to mention that as it is the screen locks during the CS haven't I? :lol: So it does, but I think it'd be able to work if the borders and locking were removed. Here is the script I've whipped up Story: Club Dancing

Encounter: Loop
Type: None
Next: Dance1, Dance2, Dance3, Dance4, Dance5, Dance6


Encounter: Dance1
Type: Custom
Actions: Minions Start Immediately
Minions: alchemiss named a, berlin_female named b, berlin_male named c, charles_wilson named d, civilian_female named e, clint coltrane_extra named f, cuban_male named g, duplicate_male named h, duplicate_fem named i, fortissimo named j, ironox named k, nick_craft_beige named l, sukhov named m, shadow named n, blackjack named o
Map: tophat
Next: Loop

Start cutscene:
Minions plays animation direct
Minions plays animation climb
Minions plays animation power
Minions plays animation dodge_left
Minions plays animation dodge_right
Minions plays animation active_defence
Minions plays animation drop_pole
Minions plays animation melee_idle
Minions plays animation hit_and_stunned
Minions plays animation stunned
Minions plays animation walk
Minions plays animation land_from_jump
Minions plays animation walk_with_pole
Minions plays animation area
Minions plays animation run
Minions plays animation walk_with_object


Encounter: Dance2
Type: Custom
Actions: Minions Start Immediately
Minions: alchemiss named a, berlin_female named b, berlin_male named c, charles_wilson named d, civilian_female named e, clint coltrane_extra named f, cuban_male named g, duplicate_male named h, duplicate_fem named i, fortissimo named j, ironox named k, nick_craft_beige named l, sukhov named m, shadow named n, blackjack named o, girl named p
Map: tophat
Next: Loop

Start cutscene:
Minions plays animation direct
Minions plays animation climb
Minions plays animation power
Minions plays animation dodge_left
Minions plays animation dodge_right
Minions plays animation active_defence
Minions plays animation drop_pole
Minions plays animation melee_idle
Minions plays animation hit_and_stunned
Minions plays animation stunned
Minions plays animation walk
Minions plays animation land_from_jump
Minions plays animation walk_with_pole
Minions plays animation area
Minions plays animation run
Minions plays animation walk_with_object


Encounter: Dance3
Type: Custom
Actions: Minions Start Immediately
Minions: alchemiss named a, berlin_female named b, berlin_male named c, charles_wilson named d, civilian_female named e, clint coltrane_extra named f, cuban_male named g, duplicate_male named h, duplicate_fem named i, fortissimo named j, ironox named k, nick_craft_beige named l, sukhov named m, shadow named n, blackjack named o, girl named p
Map: tophat
Next: Loop

Start cutscene:
Minions plays animation direct
Minions plays animation climb
Minions plays animation power
Minions plays animation dodge_left
Minions plays animation dodge_right
Minions plays animation active_defence
Minions plays animation drop_pole
Minions plays animation melee_idle
Minions plays animation hit_and_stunned
Minions plays animation stunned
Minions plays animation walk
Minions plays animation land_from_jump
Minions plays animation walk_with_pole
Minions plays animation area
Minions plays animation run
Minions plays animation walk_with_object


Encounter: Dance4
Type: Custom
Actions: Minions Start Immediately
Minions: alchemiss named a, berlin_female named b, berlin_male named c, charles_wilson named d, civilian_female named e, clint coltrane_extra named f, cuban_male named g, duplicate_male named h, duplicate_fem named i, fortissimo named j, ironox named k, nick_craft_beige named l, sukhov named m, shadow named n, blackjack named o, girl named p
Map: tophat
Next: Loop

Start cutscene:
Minions plays animation direct
Minions plays animation climb
Minions plays animation power
Minions plays animation dodge_left
Minions plays animation dodge_right
Minions plays animation active_defence
Minions plays animation drop_pole
Minions plays animation melee_idle
Minions plays animation hit_and_stunned
Minions plays animation stunned
Minions plays animation walk
Minions plays animation land_from_jump
Minions plays animation walk_with_pole
Minions plays animation area
Minions plays animation run
Minions plays animation walk_with_object


Encounter: Dance5
Type: Custom
Actions: Minions Start Immediately
Minions: alchemiss named a, berlin_female named b, berlin_male named c, charles_wilson named d, civilian_female named e, clint coltrane_extra named f, cuban_male named g, duplicate_male named h, duplicate_fem named i, fortissimo named j, ironox named k, nick_craft_beige named l, sukhov named m, shadow named n, blackjack named o, girl named p
Map: tophat
Next: Loop

Start cutscene:
Minions plays animation direct
Minions plays animation climb
Minions plays animation power
Minions plays animation dodge_left
Minions plays animation dodge_right
Minions plays animation active_defence
Minions plays animation drop_pole
Minions plays animation melee_idle
Minions plays animation hit_and_stunned
Minions plays animation stunned
Minions plays animation walk
Minions plays animation land_from_jump
Minions plays animation walk_with_pole
Minions plays animation area
Minions plays animation run
Minions plays animation walk_with_object


Encounter: Dance6
Type: Custom
Actions: Minions Start Immediately
Minions: alchemiss named a, berlin_female named b, berlin_male named c, charles_wilson named d, civilian_female named e, clint coltrane_extra named f, cuban_male named g, duplicate_male named h, duplicate_fem named i, fortissimo named j, ironox named k, nick_craft_beige named l, sukhov named m, shadow named n, blackjack named o, girl named p
Map: tophat
Next: Loop

Start cutscene:
Minions plays animation direct
Minions plays animation climb
Minions plays animation power
Minions plays animation dodge_left
Minions plays animation dodge_right
Minions plays animation active_defence
Minions plays animation drop_pole
Minions plays animation melee_idle
Minions plays animation hit_and_stunned
Minions plays animation stunned
Minions plays animation walk
Minions plays animation land_from_jump
Minions plays animation walk_with_pole
Minions plays animation area
Minions plays animation run
Minions plays animation walk_with_object


I had them as minions so their appearances would be randomized, and start instead of banter cutscene so they wouldn't stop dancing, and whichever group you were near to would start dancing. As I remember banter cutscenes also locked the game. Then I had to name every last one of them to prevent them from infinitely multiplying :doh:
and lastly remove most of everyone's powers less there be world war III. Yes it seem minions will attempt to kill one another if they're not the same object type. In case wondering, this does take quite a toll on the system  :)
Title: Re: EZscript, Oh behave yourself!
Post by: Previsionary on September 27, 2008, 07:15:24 AM
that "screen lock" is a function of a cutscene. There are "coding hooks" to remove them if you want a normal screen or if you want the player to be able to move around during it. I'd assume it's similar with ezscript.
Title: Re: EZscript, Oh behave yourself!
Post by: qazwsx on September 27, 2008, 07:29:39 AM
Quote from: Previsionary on September 27, 2008, 07:15:24 AM
that "screen lock" is a function of a cutscene. There are "coding hooks" to remove them if you want a normal screen or if you want the player to be able to move around during it. I'd assume it's similar with ezscript.
Oh hey mate, yeah I pretty sure I've had it happen with EZscript before too. But I wonder how my addition of something can affaect Your code. Even after installing your Web tales ontop the aforementioned mod I'm still expereincing this "Phenomenon". I haven't played much, but it was quite brilliant actually cause when Rhino biffed the car I overode the Cutscene to stay there :lol: But what was even cooler was when I decided that instead of letting the cutscene have all the fun, I had spidey "webswing" over the car at the last possible second. That sure was sweet, feel like a director or sumin. :D
Title: Re: EZscript, Oh behave yourself!
Post by: qazwsx on September 27, 2008, 07:36:58 AM
Oh and btw M25, is there a way to have the manhole cover missing for the encounter without removing it permanently?
Cheerio
Title: Re: EZscript, Oh behave yourself!
Post by: M25 on September 27, 2008, 01:43:14 PM
EZ script goes into cinematic mode when you use certain commands inside of a cutscene.  Any sort of camera command or movement command will turn on cinematic mode.  If you just have talking, then it will not go into cinematic mode.

Sometimes you will see EZ script go cinematic, then drop out again right away.  That happens when you have someone say something without having a caption for it in captions.txt and captions.dat.  EZ script will give you the text on the side of the screen instead, but since the game won't display that text in cinematic mode, EZ script has to force it back to normal mode.

That said, 'plays animation' is one of the commands that EZ script interprets as cinematic.  If you want, send me a private message with your email address and I can send you a 'fix' so that it won't go into cinematic mode for 'plays animation'.



I would use allies instead of minions for the dancing, since allies won't attack, or can be set up not to attack more (Actions: allies start immediately, allies do not fight)

Minions are random, but you'll have no control over how many are spawned, eating up resources, and you have to give an animation command for each minion separately (there's no group play animation).  You can achieve some randomness, by having different dance encounters, and having a separate encounter that chooses them at random.

Encounter: Choose Dance
Type: None
Next: Choose 1 of Dance1, Dance2, Dance3



I used banter cutscenes since they play at random intervals rather than all at once.  You could do both, have a start cutscene and banter cutscenes.  And if you use banter cutscenes with enough animations, it will appear to play more of less continuously without having to loop over the encounter.



For the manhole cover, if you place a marker off the edge of the map, or somewhere hidden, you can teleport the manhole cover to the marker so that it appears to have disappeared.  If you also place a marker where the manhole cover is supposed to be, you can teleport it back later.  You need to know the name of the manhole cover though.  So if it is called impobj_124

impobj_124 teleports to off_screen_marker
...
impobj_124 teleports to manhole_marker




Title: Re: EZscript, Oh behave yourself!
Post by: qazwsx on September 27, 2008, 03:34:56 PM
Lovely stuff! Your ideas never cease to awe mate ;) Pmed. Oh and what's this group play you speak of? Can it be used to move two characters together?
Title: Re: EZscript, Oh behave yourself!
Post by: qazwsx on October 01, 2008, 06:20:06 AM
Quote from: M25 on September 25, 2008, 08:42:38 AM
EZ script can't spawn allies based on they player's team.  That is a good idea though.




I think I have an idea to simulate that. You see, I've found that EZscript is able to give individual characters their own cutscenes(lovely touch by the way), so what if you placed all of the allies markers outside of the map,(in the black area) then teleport to the encounter different chracters for that each cutscene? Would that work well enough? Are there any commands to make allies controllable? Do the freeroam characters use m25ai? Thanks in advance! :)
Title: Re: EZscript, Oh behave yourself!
Post by: Boalt92 on October 01, 2008, 07:20:11 AM
Been away for a few weeks (looking for a J.O.B.) but have read this thread with interest.

I'm reviving (yet again) my EZ Script freeroam mod and you've given me some interesting ideas.

One option for allies is to give the player a 'setup' encounter, where player's can choose their allies via simple choice.  They would only be able to choose from a limited number of allies, but you would avoid character duplication.  This would limit the drain on resources, as you wouldn't have a number of allies 'waiting' in the wings.

Check the manual for making allies controllable, you can do it with a custom encounter.

In terms of consequences, here's a post I made using Simple Choice and placeholders to manage multiple story threads: http://freedomreborn.net/archive/index.php?topic=46445.0 (check last few posts for examples).

It's worked out pretty well so far, maybe you have some ideas to tweak it.

B92
Title: Re: EZscript, Oh behave yourself!
Post by: yell0w_lantern on October 01, 2008, 09:21:00 AM
Simple Choice sounds like a very useful tool.

Can branching campaigns be made?
Title: Re: EZscript, Oh behave yourself!
Post by: M25 on October 01, 2008, 11:08:59 AM
EZ script stories can branch, and it is easy to make a freeroam mod with a branching storyline.  I haven't played around with trying to get traditional campaigns to branch though.


Title: Re: EZscript, Oh behave yourself!
Post by: qazwsx on October 20, 2008, 08:24:42 PM
Hello again M25, now you see I've kept my promise and left you alone for a while now. But um, I'm gonna have to break it now :lol:
So I've been testing in the Rumble Room as per your suggestion, but is everything handled identically in FreeroamCampaign and RumbleRoom? I have a feeling the AI and maybe more may be different. Also I'm experiencing something strange with the "flee" commands. In the rumble room at least, it seems the "fleeer" in question will just stay put if continued from a previous encounter. ie. if you name a character for and encounter then reuse him for the flee encounter, be it a villain or ally, the fleeer will be recruited onto the player's team (controllable but still with AI). Hope you share some insight, thanks.
Title: Re: EZscript, Oh behave yourself!
Post by: M25 on October 22, 2008, 12:02:31 PM
There is no difference in both the AI and EZ script when running freeroam missions vs. the rumble room.  It's all the same python code.

Freeroam lets you specify the map that an encounter runs on, but that is about it.


I'll look into the flee thing.

Edit:  On second thought, could you post the part of the story that is causing the problem.  I can't replicate it.



Title: Re: EZscript, Oh behave yourself!
Post by: qazwsx on October 22, 2008, 01:21:31 PM
Ok thanks mate, here's an exerpt I used for testing:
Story: Morlock Massacre


Encounter: stupidcow
Type: Custom
Actions: Heroes Escort Allies, Minions Start Immediately, Minions start at distance
Allies: ultimate_jean named jean, nick_craft_extra named rusty
Minions: upgraded_soldier
Marker: cow


Encounter: Moar
Type: custom
Actions: Villains Flee
Allies: ultimate_jean named jean
Villains: nick_craft_extra named rusty2
Minions: upgraded_soldier named skids
Rivals: darkman_extra named dark
Marker: moar

start Cutscene:
camera on minions
dark is killed
minion turns to hero


Encounter: seek
Type: Custom
Actions: allies start immediately, Allies Flee Map
Allies: ultimate_jean named jean
Villains: nick_craft_extra named rusty2
Primary Objective: "find rusty, again"
Marker: seek

Alert cutscene:
jean says, "rusty!"


Encounter: Dark
Type: Simple Choice
Allies: ultimate_jean named jean
Villains: nick_craft_extra named rusty2

Alert cutscene:
cinematic camera on darkman_extra

Just delete the Marker: entries if you want.
Something I haven't been able to test in RR: you can't set end markers on another map can you?

Cheers
Title: Re: EZscript, Oh behave yourself!
Post by: M25 on October 22, 2008, 01:35:52 PM
No, you can't set end markers on another map.  You could have a 'flee' encounter trigger another flee encounter on the second map though.


OK, I see the issue with the ally suddenly joining your team.   Something odd is going on with the game engine and it may take me a while to figure it out.  But for now, you don't really need to give the allies a name in the first encounter.  Is there some reason why you need to?




Title: Re: EZscript, Oh behave yourself!
Post by: qazwsx on October 22, 2008, 03:22:56 PM
Oh yes, in this scenario and many others, I use flee as a means to make a character "move to" in real time. So in this case, the "fleeyer" is actually "running after" someone who actually is fleeing :lol: I suppose I should abandon this method altogether though, as the characters up and vanish when they reach the marker, which kinda breaks immersion. Another way I see of doing it is just using the "move to" cutscene command with player control enabled, although that limited to one traveler. You'll notice that I tried bypassed this in the transition between "stupidcow" and "moar" by renaming rusty. Here this could be done because the fleeyer's location at the end of the encounter was more or less determined, and he was destroyed anyway. But with the second encounter being a fight, it's anyone's guess where the future fleerer will end up. Thanks again.
Title: Re: EZscript, Oh behave yourself!
Post by: M25 on October 23, 2008, 11:40:12 AM
Ah, so you want to escort the character to a certain spot and then have a new encounter kick in.  It does make sense that a named character shouldn't vanish.  I'll see if I can fix that.

Title: Re: EZscript, Oh behave yourself!
Post by: qazwsx on November 08, 2008, 11:51:43 PM
Any luck?
Title: Re: EZscript, Oh behave yourself!
Post by: M25 on November 10, 2008, 06:47:12 PM
It should be in your email.
Title: Re: EZscript, Oh behave yourself!
Post by: qazwsx on November 18, 2008, 06:55:52 PM
Hi garry. Yes, it's that time of the month again :lol:
I've ran into a debilitating problem, it seems that using:

Actions: Allies Fight Villains, Allies Become Controllable, Allies Start Immediately, Villains Hunt Heroes, Villains Start Immediately, Minions Start Immediately, Villains stop when half are defeated

will imediately end the encounter after the cutscene no matter what I tried adding "villains fight heroes" to see if it helped, but it was fruitless :(
By the way, the old "villains stop when allies defeated" you sent me worked brilliantly, except now the ally had to die to end the encounter!(I was using it to give the player the choice of whose side to take) I found an ingenious(if I say so myself) work around though- simply have a villain KO cutscene which kills then immediately revives the ally. Not resquesting anything of course, just putting it out there so people know this can be done. Thanks for all the support so far,
Title: Re: EZscript, Oh behave yourself!
Post by: M25 on November 20, 2008, 08:43:57 AM
Yes, the 'villains stop when half are defeated' had a bug in it.  Hopefully the fix I sent clears that up.

Not sure what you mean in the second part of this message  (need more coffee I think).  What does the encounter look like?

Title: Re: EZscript, Oh behave yourself!
Post by: qazwsx on November 20, 2008, 03:40:00 PM
Actions: Villains Attack Innocent Allies, Villains Fight Heroes, Allies start at distance, Allies Fight Villains, Fire, Villains start at distance, villains stop when allies are defeated

ok so there's a

Next: If villains gone:
Next: If allies defeated:

So you can choose to side with the "villain", if you know the "ally is a traitor, but for the encounter to end, the ally HAS to be koed. I thought I'd reach a dead end here and forgot about it for a while. Then while working on something else one day, I had a spark- how about adding:

Villain KO cutscene:
Ally is killed
Ally is revived

And to my shock and suprise, it was perfect and hardly noticeable! I love EZscript ^_^
Could you tell me a little about the history behind it? There doesn't seem to be much about it's development anywhere.
Title: Re: EZscript, Oh behave yourself!
Post by: M25 on November 25, 2008, 12:12:46 PM
The 'villains stop when allies are defeated' looks like the issue.  It's not set up to stop when the villains themselves are defeated.  I'll work up a fix.



Erm, history...  EZ script is basically my third attempt at building a mission construction system.  I did the first one way back when the mod tools came out for  :ff:.  I used it in a mod imaginatively named m25_1 (or something like that) and part of the Fantastic Force.  It let you code a mission in a few lines, but didn't work well with the saved game system, and the Irrational developers themselves said they didn't understand how the missions worked. 

The second one relied on placing invisible characters on the map (so you didn't have to write code) and putting special instructions in their names.  I used that for the Fantastic Force mod too, and I think it was included in an early version of FFX, though I didn't advertise it. 

So... by the time I wrote EZ script, I actually knew what I was doing.   :doh:  That, and a lot of functionality written by Dr. Mike, stumpy, kuertee, Epimethee and others made writing EZ script so much easier.  EZ script itself hasn't changed much at all from it's initial version, apart from bug fixes and new features. 
Title: Re: EZscript, Oh behave yourself!
Post by: Epimethee on November 26, 2008, 07:43:07 PM
Quite interesting. If you ever feel like going through the details of EZ script's history and the design choice involved, it could be pretty instructive.