User Tools

Site Tools


Sidebar

hpl2:machine_for_pigs:new_scripts

New Scripts

Many scripts from TDD work in MFP, but some of them have been removed (e.g. SetInventoryDisabled).
However, MFP has a set of its own new scripts:

Player

void SetLanternFlickerActive(bool abActive);

Enables the lantern flicker effect.

abActive - set to true to enable the effect

void SetPlayerInfection(float afAmount);
void AddPlayerInfection(float afAmount);
float GetPlayerInfection();

Infection related scripts.

Screen effects

void ShowScreenImage(string asImage, int alPosX, int alPosY, float afUnknown, bool abUnknown2, float afTime, float afFadeIn, float afFadeOut);

Displays an image on the screen. Originally used to show the MFP logo in-game.

asImage - the image to display. E.g. startup_aamfp_logo.jpg
alPosX - horizontal position of the image. 0 is right screen border, smaller values are left. -400 was used for the middle of the screen.
alPosY - vertical position of the image. 0 is bottom, smaller values are up. -350 was used for the middle of the screen.
afUnknown - Unless set to below 0, the image won't appear. Might have more functionality to it.
abUnknown2 - setting this to true makes the image not appear. Might have more functionality to it.
afTime - image display time.
afFadeIn - fade in time. It's added to the base display time.
afFadeOut - fade out time. It's added to the base display time.

Enemies

void SetEnemyMoveType(string &in asEnemy, string asMoveType);

This script hasn't been tested.

Sets the enemy move type.

asEnemy - the in-game enemy entity

asMoveType - options include: WalkBiped, RunBiped, ChargeBiped, and probably Quadruped variations as well.

void SetManPigType(string &in asEntity, string &in asType);

This script hasn't been tested.

Seems to alter the enemy AI. It was mostly used in conjunction with Child enemies (but also with Wretches).

asEntity - the enemy in question. Can be Enemy_ManPig or Enemy_Child type.

asType - only “Freddy” has been used in the entire game. It is unknown whether other options work.

From Peter Howell's PhD paper1) :

“The initial design of the game’s enemy artificial intelligence system contained three unique sets of behavioural controls. […] every enemy agent in the game would be assigned one of three possible ‘personalities’, referred to in the game’s code as the ‘Rod’, ‘Jane’ and ‘Freddy’ personality types.”

Overview of proposed enemy agent personality types and key behavioural traits (Pre-Development, December 2011):

Enemy Agent Personality Type Primary Behavioural Traits
‘Rod’ • Will maintain a ‘safe’ distance from the player-character._PARATABLE_INS_• If unable to do so, will approach player character, investigate them (by getting close and smelling them), before continuing its patrol. | |‘Jane’ |• Will maintain a ‘safe’ distance from player-character, whilst observing the player-character’s movements._PARATABLE_INS_• If unable to maintain ‘safe’ distance, will panic and flee._PARATABLE_INS_• If cornered and unable to flee, will attack and knock player-character to floor, then flee._PARATABLE_INS_• Will only attack and kill player-character as a last resort.
‘Freddy’ • Will actively hunt the player-character._PARA__TABLE_INS_• Will attack and kill them if given the opportunity.
[[https://researchportal.port.ac.uk/portal/files/3364888/PeterHowell_PhD.pdf|[source]]]

Other

void SetParticleSystemActive(string &in asParticle, bool abX);

This script hasn't been tested.

void AddHint(string &in asEntity, string asUnknown);

This script hasn't been tested.

Might be a replacement for GiveHint from TDD.
Another option is that it gives a specified hint (asUnknown) upon touching the asEntity.

SetLightVisible(string& asLightName, bool abVisible);

This script hasn't been tested.

Enables/disables lights.

It was used in the main game scripts (in conjunction with SpotLights), which might indicate that unlike in TDD, this time it actually works.

asLightName - internal name
abVisible - determines the state of the light

void SetPhysicsAutoDisable(string &in asEntity, bool abX);

This script hasn't been tested.

Unknown usage.

asEntity - entity in question. It was used with chandelier_nice.

abX - whether to disable the object physics (when?).

1) “Disruptive Game Design: A Commercial Design and Development Methodology for Supporting Player Cognitive Engagement in Digital Games”, Peter Howell, 2015
hpl2/machine_for_pigs/new_scripts.1583597919.txt.gz · Last modified: 2020/03/07 16:18 by darkfire