Cutscenes problem

Blade of Darkness general discussion and game help forum. Discuss anything related to Severance / BoD (except modding, use the forum below) Note: Possible spoilers!

Moderators: prospero, Ade

Post Reply
User avatar
Sryml
Dragon
Posts: 137
Joined: Tue Aug 28, 2012 12:50 pm
Location: China
Contact:

Cutscenes problem

Post by Sryml »

I use AbreCam function to create cutscenes, but it does not look how good. :shock: I think, the start and end of the cutscenes should have a fade-out and fade-in., please tell me how to do that, thank you! :)
Fear can hold you prisoner. Hope can set you free.
My YouTube: https://www.youtube.com/channel/UCg0SHO ... P3FdZLWzpQ

User avatar
prospero
Ancient Dragon
Posts: 1730
Joined: Wed Nov 21, 2001 1:42 am
Location: United Kingdom

Re: Cutscenes problem

Post by prospero »

There are a few functions in the Lib/AuxFuncs module that handle screen fades.

Code: Select all

AuxFuncs.FadeFrom()

AuxFuncs.FadeTo()
You can add values for the timing to these function calls. Can't remember exactly how they work, but I'm sure you can figure it out. :D

User avatar
Sryml
Dragon
Posts: 137
Joined: Tue Aug 28, 2012 12:50 pm
Location: China
Contact:

Post by Sryml »

prospero wrote:There are a few functions in the Lib/AuxFuncs module that handle screen fades.

Code: Select all

AuxFuncs.FadeFrom()

AuxFuncs.FadeTo()
You can add values for the timing to these function calls. Can't remember exactly how they work, but I'm sure you can figure it out. :D
Oh!Yes, the fade time is just right.
Fear can hold you prisoner. Hope can set you free.
My YouTube: https://www.youtube.com/channel/UCg0SHO ... P3FdZLWzpQ

User avatar
Sryml
Dragon
Posts: 137
Joined: Tue Aug 28, 2012 12:50 pm
Location: China
Contact:

Post by Sryml »

The same! An entity slowly fade to disappear, what function to achieve it? :?:
Fear can hold you prisoner. Hope can set you free.
My YouTube: https://www.youtube.com/channel/UCg0SHO ... P3FdZLWzpQ

User avatar
prospero
Ancient Dragon
Posts: 1730
Joined: Wed Nov 21, 2001 1:42 am
Location: United Kingdom

Re: Cutscenes problem

Post by prospero »

Code: Select all

AuxFuncs.FadeObject("ObjectName", 1.0, 0.0, 1.0)
I think this works for any object or character. The parameters are: name of the object, initial alpha (1.0 to 0.0), end alpha, time to fade. there is an optional param you can add to the end - 1 to destroy the object when faded. The above call will fade the object from full opacity to nothing in one second.

There are maybe some extra refinements you may need such as to disable the shadows.

User avatar
Sryml
Dragon
Posts: 137
Joined: Tue Aug 28, 2012 12:50 pm
Location: China
Contact:

Post by Sryml »

oh,yes!But now I encountered a new problem, The following code can not transfer function? Bladex.AddInputAction("Recycl", 0)
Bladex.AddBoundFunc("Recycl", Recycling, (per.Name,))
Bladex.AssocKey("Recycl", "Keyboard", "Backspace", 1)
Fear can hold you prisoner. Hope can set you free.
My YouTube: https://www.youtube.com/channel/UCg0SHO ... P3FdZLWzpQ

User avatar
prospero
Ancient Dragon
Posts: 1730
Joined: Wed Nov 21, 2001 1:42 am
Location: United Kingdom

Re: Cutscenes problem

Post by prospero »

Code: Select all

Bladex.AddBoundFunc("Recycl", Recycling, (per.Name,))
Don't think you can add the extra parameter per.Name

User avatar
Sryml
Dragon
Posts: 137
Joined: Tue Aug 28, 2012 12:50 pm
Location: China
Contact:

Post by Sryml »

:? So ah!There is no other way to achieve press a key after the call contains the parameters of the function?
Fear can hold you prisoner. Hope can set you free.
My YouTube: https://www.youtube.com/channel/UCg0SHO ... P3FdZLWzpQ

User avatar
prospero
Ancient Dragon
Posts: 1730
Joined: Wed Nov 21, 2001 1:42 am
Location: United Kingdom

Re: Cutscenes problem

Post by prospero »

Can't really see why you would want to do this. What or who does the variable per refer to?

User avatar
Sryml
Dragon
Posts: 137
Joined: Tue Aug 28, 2012 12:50 pm
Location: China
Contact:

Post by Sryml »

Hi Prospero! I have some questions about Bod:
1. I find there are some *.sf files in the game's folder, what are these and what are these codes mean? Are they Ghost area? I checked them in the game and found there is some relationship with background music. But I don't know how to use them , I need your advice and help.
2. I want to make a breakable wall in my map, When I hit the wall by 5 hits, it will broken. So how to make the code? Should I set some areas in the LED?
3. As I know,I can freeze enemies with o.Freeze clause,But we can still cut up them to limbs if their's life<0. If I want to achive this : when the bad guys' life is 0, then his body can not be chop into pieces, what should I do ?
Thanks very much!!! :)
Fear can hold you prisoner. Hope can set you free.
My YouTube: https://www.youtube.com/channel/UCg0SHO ... P3FdZLWzpQ

User avatar
prospero
Ancient Dragon
Posts: 1730
Joined: Wed Nov 21, 2001 1:42 am
Location: United Kingdom

Re: Cutscenes problem

Post by prospero »

Hi Sryml

Yes .sf files define Ghost Sectors. Theses are like the 'hard' sectors created in the LED, but made using code to set the co-ords. You can use the LED tools to draw them and then export to a temp .sf file. Then copy the block of code into a permanent file in the map. Remember to alter the NumGhostSectors => 12 at the top of the file to corespond with the number of ghost sectors you have. The .sf file needs to be executed from another .py file. With code like this:

Code: Select all

import ReadGSFile



res=ReadGSFile.ReadGhostSectorFile("ruinstsgen.sf")
for igs in res:
	Bladex.AddTriggerSector(igs["Name"],igs["Grupo"],igs["FloorHeight"],igs["RoofHeight"],igs["Vertex"])
(this is from Ruins_M4 map - trsectors.py)

They can be used to make sounds - wind, etc in a localised area by assigning a filepath to a .wav file:

Code: Select all

Sonido => ..\..\Sounds\mist-atmos-1.wav 
They can also be used as trigger sectors.

** Sometimes they don't work. Which is a bit annoying. Make sure the coords don't overlap a solid area in the map.

-----------------------------------------------------------------------------------------------------------------------------------------

Break sectors are a bit involved. You have to make a sector in LED like a door. When the code is applied it will appear solid. You also need to define the 'hit' surface which will be on the sector adjacent to the break sector.
Check out BreakDoors.py in Barb_m1 map. Thare are blocks of code like this:

Code: Select all

b1 = SetupBreakSector((-137250,-25000,173125),(-138000,-25000,173500),(-1,0,0),3,(100,0,0),(0,2000,0),(0,0,500))
b1.ActivatePolvo((-137550,-23700,174375),(-137550,-28000,174375), (-138000,-23700,171875),(-138000,-28000,171875),(300,0,0))
There is a function - SetupBreakSector - in DefFuncs.py that passes on all the parameters to a class in def_class.py to handle the breaking/sounds/dust.

It's quite tricky to get right as there are a lot of settings. I think it goes -

((point somewhere in the break area), (point somewhere in the break area),(Hit surface-the surface to the west on the LED in this case),(x fragments),(y fragments)(z fragments))

Haven't done one lately so not really fresh in my mind, but that's the general idea.

--------------------------------------------------------------------------------------------------------------------------------------------------------------

You can disable mutilations. Look in Lib/Basic_Funcs.py for the Mutilation handling function:

Code: Select all

	def MutilateFunc(self,EntityName,obj_name,x,y,z,nx,ny,nz,node):
		print EntityName+": MutilateFunc"
		me = Bladex.GetEntity(EntityName)
		if me and me.Kind!="Skeleton":
			Blood.Mutilate (EntityName,obj_name,x,y,z,nx,ny,nz,node)
		
		if me.Kind=="Golem_lava":
			return

		if me.Kind=="Minotaur" and node!=Reference.BODY_HEAD:
			return
		
		limb= Bladex.GetEntity(obj_name)
		InitDataField.Initialise(limb)
		limb.Data.NoFXOnHit= 1
		print limb.Mass, node
		if limb.Mass > 1.5 and limb.Mass < 7.0:
			Reference.EntitiesSelectionData[obj_name]= Reference.DefaultSelectionData["Limb"]
			Reference.EntitiesObjectData[obj_name]= Reference.DefaultObjectData['Limb']
To disable mutilations for an entire race, just add another clause, e.g.:

Code: Select all

if me.Kind=="Great_Ork":
    return
To do it for a single person you could try:

o.MutilateFunc=None

Hope that helps. :)

Post Reply