Both sides previous revision Previous revision Next revision | Previous revision | ||
hpl2:machine_for_pigs:new_scripts [2020/03/08 17:46] darkfire [Other] AddHint tests |
— (current) | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== 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, which are listed below. | ||
- | |||
- | <font inherit/inherit;;#FF0000;;inherit>// This list might be incomplete. You can contribute by going through original MFP .hps files and listing any new scripts ("new" meaning: not a TDD script and not a function which is declared in the same file). //</font> | ||
- | |||
- | <font inherit/inherit;;#FF0000;;inherit>// You can also contribute by testing the untested functions or function arguments with uncertain usage. //</font> | ||
- | |||
- | ===== Player ===== | ||
- | |||
- | <code> | ||
- | void SetLanternFlickerActive(bool abActive); | ||
- | </code> | ||
- | |||
- | Enables the lantern flicker effect. | ||
- | |||
- | //abActive //- set to true to enable the effect | ||
- | <code> | ||
- | void SetPlayerInfection(float afAmount); | ||
- | void AddPlayerInfection(float afAmount); | ||
- | float GetPlayerInfection(); | ||
- | </code> | ||
- | |||
- | Infection related scripts. | ||
- | |||
- | ===== Screen effects ===== | ||
- | |||
- | <code> | ||
- | void ShowScreenImage(string asImage, int alPosX, int alPosY, float afUnknown, bool abUnknown2, float afTime, float afFadeIn, float afFadeOut); | ||
- | </code> | ||
- | |||
- | 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 ===== | ||
- | |||
- | <code> | ||
- | void SetEnemyMoveType(string &in asEnemy, string asMoveType); | ||
- | </code> | ||
- | |||
- | **{{http://wiki.frictionalgames.com/lib/images/smileys/icon_question.gif?nolink&15x15}}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. | ||
- | <code> | ||
- | void SetManPigType(string &in asEntity, string &in asType); | ||
- | </code> | ||
- | |||
- | **{{http://wiki.frictionalgames.com/lib/images/smileys/icon_question.gif?nolink&15x15}}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 paper(("Disruptive Game Design: A Commercial Design and Development Methodology for Supporting Player Cognitive Engagement in Digital Games", Peter Howell, 2015)) : | ||
- | |||
- | //"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):// | ||
- | |||
- | **‘Rod’:** | ||
- | |||
- | • Will maintain a ‘safe’ distance from the player-character.\\ | ||
- | • 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.\\ | ||
- | • If unable to maintain ‘safe’ distance, will panic and flee.\\ | ||
- | • If cornered and unable to flee, will attack and knock player-character to floor, then flee.\\ | ||
- | • Will only attack and kill player-character as a last resort. | ||
- | |||
- | **‘Freddy’** | ||
- | |||
- | • Will actively hunt the player-character.\\ | ||
- | • Will attack and kill them if given the opportunity. | ||
- | |||
- | [[https://researchportal.port.ac.uk/portal/files/3364888/PeterHowell_PhD.pdf|Source]] | ||
- | |||
- | ===== Other ===== | ||
- | |||
- | <code> | ||
- | void SetParticleSystemActive(string &in asParticle, bool abX); | ||
- | </code> | ||
- | |||
- | "Freezes" a particle (meaning, the last texture will linger). | ||
- | |||
- | Manual particle optimising might have been the intended usage. It was seen used next to //SetPhysicsAutoDisable//.\\ | ||
- | Another apparent usage is to place an inactive particle in the map and activate it when convenient (which might be a simpler way than //CreateParticleSystemAtEntity//) | ||
- | |||
- | //asParticle //- the particle in question | ||
- | |||
- | //abX //- whether to freeze or unfreeze the particle | ||
- | <code> | ||
- | void AddHint(string &in asEntryName, string asUnknown); | ||
- | </code> | ||
- | |||
- | Adds a journal entry in the "My Journal" category. | ||
- | |||
- | //asEntryName -// entries the lang file.\\ | ||
- | Like Notes, it must consist of two actual entries: //Hint_EntryName_Name // and //Hint_EntryName_Text//. Both must be in the "Journal" category.\\ | ||
- | See english.lang for examples. | ||
- | |||
- | //asUnknown - // this argument was never used. It always contained an empty string. Writing in it doesn't yield any error messages or log entries. | ||
- | <code c++> | ||
- | SetLightVisible(string& asLightName, bool abVisible); | ||
- | </code> | ||
- | |||
- | **{{http://wiki.frictionalgames.com/lib/images/smileys/icon_question.gif?nolink&15x15}}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 | ||
- | <code> | ||
- | void SetPhysicsAutoDisable(string &in asEntity, bool abX); | ||
- | </code> | ||
- | |||
- | **{{http://wiki.frictionalgames.com/lib/images/smileys/icon_question.gif?nolink&15x15}}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?//). | ||