Difference between revisions of "NERPs documentation"

From RRU Knowledge Base
Line 52: Line 52:
|}
|}


==Expressions==
==Functions==
<!--'''Parameters''' are pieces of script that designate a very specific property.  These are essential to [[Programming Mission Objectives]]. When encrypted into [[NPL file|NPL Files]], they are given a simple 8 character hex-string.  Basic Parameter hex-strings end in <code>02 00</code> to indicate itself.  [[Special Parameters]], which are different than basic parameters in function, end in <code>04 00</code> and <code>08 00</code>.  Each parameter is given a number value, which is the first two pairs of the hex-string.-->
===Expressions===
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
Line 76: Line 78:
|}
|}


==Random functions==
===Random functions===
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
Line 100: Line 102:
|}
|}


==Goal functions==
===Goal functions===
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
Line 144: Line 146:
|}
|}


==Register functions==
===Register functions===
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
Line 271: Line 273:
|
|
|-
|-
| <samp>2F 00 02 00</samp>
| <samp>2F 00 00 00</samp>
| SubR6
| SubR6
|
|

Revision as of 23:40, 5 December 2017

ALL KNOWN NERPS

Effects written //Like this are Karl White's original comments

Comparison operations

Value Function Action
01 00 01 00 +[verify]
02 00 01 00 #[verify]
03 00 01 00 /[verify]
04 00 01 00 ? Ternary operator, acts like an "if" clause
Example: Expression ? Action
Basically: if(Expression) Action()
05 00 01 00 > Is greater than
06 00 01 00 < Is less than than
07 00 01 00 = Is equal to
08 00 01 00 >= Is greater than or equal to
09 00 01 00 <= Is less than or equal to
0A 00 01 00 != Is not equal to

Functions

Expressions

Value Function Effect
00 00 02 00 Stop
01 00 02 00 True Returns true
02 00 02 00 False Returns false
03 00 02 00 Null Returns null

Random functions

Value Function Effect
04 00 02 00 GetRandom
05 00 02 00 GetRandom10
06 00 02 00 GetRandom100
07 00 02 00 GetRandomTrueFalse

Goal functions

Value Function Effect
08 00 02 00 SetLevelCompleted
09 00 02 00 SetLevelFail
0A 00 02 00 SetGameCompleted
0B 00 02 00 SetGameFail
0C 00 02 00 GetCrystalsPickedUp
0D 00 02 00 GetCrystalsCurrentlyStored
0E 00 02 00 GetCrystalsUsed //CRYSTALS USED FOR CONSTRUCTIONS ETC
0F 00 02 00 GetCrystalsStolen
10 00 02 00 SetMessage

Register functions

Hex Command Effect
11 00 02 00 GetR0 //get current value
12 00 02 00 GetR1
13 00 02 00 GetR2
14 00 02 00 GetR3
15 00 02 00 GetR4
16 00 02 00 GetR5
17 00 02 00 GetR6
18 00 02 00 GetR7
19 00 02 00 SetR0 //set current value
1A 00 02 00 SetR1
1B 00 02 00 SetR2
1C 00 02 00 SetR3
1D 00 02 00 SetR4
1E 00 02 00 SetR5
1F 00 02 00 SetR6
20 00 02 00 SetR7
21 00 02 00 AddR0
22 00 02 00 AddR1
23 00 02 00 AddR2
24 00 02 00 AddR3
25 00 02 00 AddR4
26 00 02 00 AddR5
27 00 02 00 AddR6
28 00 02 00 AddR7
29 00 02 00 SubR0
2A 00 02 00 SubR1
2B 00 02 00 SubR2
2C 00 02 00 SubR3
2D 00 02 00 SubR4
2E 00 02 00 SubR5
2F 00 00 00 SubR6
30 00 02 00 SubR7
Hex Command Effect
31 00 02 00 SetMessagePermit
32 00 02 00 GetObjectiveShowing
33 00 02 00 GetTeleportIconClicked
34 00 02 00 GetMiniFiguresOnLevel
35 00 02 00 GetBuildIconClicked
36 00 02 00 SetBuildIconClicked
37 00 02 00 SetTeleportIconClicked
38 00 02 00 SetToolStoreIconClicked
39 00 02 00 GetToolStoreIconClicked
3A 00 02 00 FlashToolStoreIcon
3B 00 02 00 FlashBuildIcon
3C 00 02 00 FlashTeleportIcon
3D 00 02 00 SetGoBackIconClicked
3E 00 02 00 GetGoBackIconClicked
3F 00 02 00 FlashGoBackIcon
40 00 02 00 SetDigIconClicked
41 00 02 00 GetDigIconClicked
42 00 02 00 FlashDigIcon
43 00 02 00 GetTimer0 //get current time in seconds
44 00 02 00 GetTimer1
45 00 02 00 GetTimer2
46 00 02 00 GetTimer3
47 00 02 00 SetTimer0 //set current time in seconds
48 00 02 00 SetTimer1
49 00 02 00 SetTimer2
4A 00 02 00 SetTimer3
4B 00 02 00 GetBarracksBuilt //Number of barracks
4C 00 02 00 GetOreRefineriesBuilt //Number of Ore Refineries
4D 00 02 00 GetToolStoresBuilt //Number of Tool Stores
4E 00 02 00 GetStudCount //Number of studs
4F 00 02 00 GetTeleportsBuilt //Number of teleport pads
50 00 02 00 GetMiniFigureSelected //Is a minifigure selected?
51 00 02 00 GetSmallDiggerSelected //Is a small digger selected
52 00 02 00 GetMiniFigureInSmallDigger //Is there a minifigure in a small digger somewhere
53 00 02 00 GetTrainFlags
54 00 02 00 SetTrainFlags
55 00 02 00 SetIconPos //Sets position of icons displayed with message
56 00 02 00 SetIconSpace //Sets spacing of icons displayed with message
57 00 02 00 SetIconWidth //Sets width of icons displayed with message
58 00 02 00 SetMessageWait
59 00 02 00 GetMountIconClicked //Has mount icon been clicked
5A 00 02 00 SetMountIconClicked //Manually set value of above
5B 00 02 00 FlashMountIcon //Flash the mount icon
5C 00 02 00 SetTutorialPointer //Make a pointer appear above tutorial block number x
5D 00 02 00 GetTutorialFlags //Get the current tutorial flags
5E 00 02 00 SetTutorialFlags //Sets tutorial flags (0 = allow any click anywhere anytime 3 = Disallow invalid clicks)
5F 00 02 00 SetRockMonster //Make a rock monster appear at block x,y
60 00 02 00 GetOrePickedUp //How much ore is currently being carried
61 00 02 00 GetOreCurrentlyStored //How much ore is stored
62 00 02 00 GetOreUsed //ORE USED FOR CONSTRUCTIONS ETC
//How much ore has been used???
63 00 02 00 GetOreStolen //How much ore has been stolen???
64 00 02 00 GetCrystalRefineriesBuilt //Has a crystal refinery been built
65 00 02 00 FlashLayPathIcon //Flash the lay path icon
66 00 02 00 SetLayPathIconClicked //Set a value for click flag
67 00 02 00 GetLayPathIconClicked //Has it been clicked
68 00 02 00 GetTeleportPadIconClicked //Has teleport icon been clicked
69 00 02 00 SetTeleportPadIconClicked //Reset value to summat
6A 00 02 00 FlashTeleportPadIcon //Flash teleport minifigure icon
6B 00 02 00 GetMessageTimer //Gets how much longer a wav accompanying a message will last
6C 00 02 00 SetMessageTimerValues //Set defaults (see example)
6D 00 02 00 GetTutorialBlockClicks //Has the block at tutorial block number x been clicked
6E 00 02 00 SetTutorialBlockClicks //Reset this value
6F 00 02 00 GetTutorialCrystals //How many crystals are at this tutorial block
70 00 02 00 SetTutorialCrystals //Set this value
71 00 02 00 GetPathsBuilt //How many paths have been built
72 00 02 00 GetTutorialBlockIsGround //Is there ground at tutorial block x
73 00 02 00 SetCameraGotoTutorial //Make camera look at a particular tutorial block
74 00 02 00 FlashDynamiteIcon //Make the dynamit icon flash
75 00 02 00 GetDynamiteClicked //Has this icon been clicked
76 00 02 00 SetDynamiteClicked //Has my life really become this dull?
77 00 02 00 AddPoweredCrystals //Why am I writing all of this?
78 00 02 00 GetGraniteGrinderSelected //Has the granite grinder been selected
79 00 02 00 GetChromeCrusherSelected //Has the chrome crusher(large digger) been selected
7A 00 02 00 GetTutorialBlockIsPath
7B 00 02 00 GetGunstationIconClicked
7C 00 02 00 SetGunstationIconClicked
7D 00 02 00 FlashGunStationIcon
7E 00 02 00 GetGunstationsBuilt
7F 00 02 00 SetOreAtIconPositions
80 00 02 00 GetVehicleTransportsBuilt
81 00 02 00 GetVehicleTransportIconClicked
82 00 02 00 SetVehicleTransportIconClicked
83 00 02 00 FlashVehicleTransportIcon
84 00 02 00 GetUpgradeStationIconClicked
85 00 02 00 SetUpgradeStationIconClicked
86 00 02 00 FlashUpgradeStationIcon
87 00 02 00 GetUpgradeStationsBuilt
88 00 02 00 SetTutorialBlockIsGround
89 00 02 00 SetTutorialBlockIsPath
8A 00 02 00 CameraLockOnObject
8B 00 02 00 CameraUnlock
8C 00 02 00 CameraZoomIn
8D 00 02 00 CameraZoomOut
8E 00 02 00 CameraRotate
8F 00 02 00 GetCameraAtTutorial
90 00 02 00 GetSelectedRecordedObject
91 00 02 00 GetSmallHelicopterSelected
92 00 02 00 GetRapidRiderSelected
93 00 02 00 GetMinifigureInRapidRider
94 00 02 00 GetDismountIconClicked
95 00 02 00 SetDismountIconClicked
96 00 02 00 FlashDismountIcon
97 00 02 00 GetGetToolIconClicked
98 00 02 00 SetGetToolIconClicked
99 00 02 00 FlashGetToolIcon
9A 00 02 00 GetAnyKeyPressed
9B 00 02 00 SetPauseGame
9C 00 02 00 GetGetLaserIconClicked
9D 00 02 00 SetGetLaserIconClicked
9E 00 02 00 FlashGetLaserIcon
9F 00 02 00 SetRockMonsterAtTutorial
A0 00 02 00 GetCallToArmsButtonClicked
A1 00 02 00 GetRockMonstersDestroyed
A2 00 02 00 SetGetPusherIconClicked
A3 00 02 00 GetGetPusherIconClicked
A4 00 02 00 FlashGetPusherIcon
A5 00 02 00 GetRockMonsterRunningAway
A6 00 02 00 SetCallToArms
A7 00 02 00 FlashPowerstationIcon
A8 00 02 00 SetPowerStationIconClicked
A9 00 02 00 GetPowerStationIconClicked
AA 00 02 00 GetPowerStationsBuilt
AB 00 02 00 SetAttackDefer
AC 00 02 00 SetRockMonsterPainThreshold
AD 00 02 00 SetRockMonsterHealth
AE 00 02 00 SetGameSpeed
AF 00 02 00 FlashBarracksIcon
B0 00 02 00 SetBarracksIconClicked
B1 00 02 00 GetBarracksIconClicked
B2 00 02 00 GetRecordObjectAtTutorial
B3 00 02 00 GetHiddenObjectsFound
B4 00 02 00 SetHiddenObjectsFound
B5 00 02 00 GetOxygenLevel
B6 00 02 00 FlashGeodomeIcon
B7 00 02 00 GetGeodomeIconClicked
B8 00 02 00 SetGeodomeIconClicked
B9 00 02 00 GetGeodomeBuilt
BA 00 02 00 AddStoredOre
BB 00 02 00 GenerateSlug
BC 00 02 00 GetSlugsOnLevel
BD 00 02 00 GetMonstersOnLevel
BE 00 02 00 SetCongregationAtTutorial
BF 00 02 00 SetObjectiveSwitch
C0 00 02 00 GetObjectiveSwitch
C1 00 02 00 GetGraniteGrindersOnLevel
C2 00 02 00 GetSmallDiggersOnLevel
C3 00 02 00 GetDocksBuilt
C4 00 02 00 GetRapidRidersOnLevel
C5 00 02 00 GetUnitAtBlock
C6 00 02 00 GetSmallHelicoptersOnLevel
C7 00 02 00 GetRecordObjectAmountAtTutorial
C8 00 02 00 AdvanceMessage
C9 00 02 00 AllowCameraMovement
CA 00 02 00 ClickOnlyObjects
CB 00 02 00 ClickOnlyMap
CC 00 02 00 ClickOnlyIcon
CD 00 02 00 DisallowAll
CE 00 02 00 SupressArrow
CF 00 02 00 GetMinifigureInGraniteGrinder
D0 00 02 00 GetMinifigureInChromeCrusher
D1 00 02 00 GetMessagesAreUpToDate
D2 00 02 00 SetCrystalPriority
D3 00 02 00 MakeSomeoneOnThisBlock-PickUpSomethingOnThisBlock
D4 00 02 00 SetTrainIconClicked
D5 00 02 00 GetTrainIconClicked
D6 00 02 00 FlashTrainIcon
D7 00 02 00 SetTrainDriverIconClicked
D8 00 02 00 GetTrainDriverIconClicked
D9 00 02 00 FlashTrainDriverIcon
DA 00 02 00 SetTrainPilotIconClicked
DB 00 02 00 GetTrainPilotIconClicked
DC 00 02 00 FlashTrainPilotIcon
DD 00 02 00 SetTrainSailorIconClicked
DE 00 02 00 GetTrainSailorIconClicked
DF 00 02 00 FlashTrainSailorIcon
E0 00 02 00 GetSmallTruckSelected
E1 00 02 00 GetMinifigureInSmallTruck
E2 00 02 00 GetMinifigureInSmallHelicopter
E3 00 02 00 SetBarracksLevel
E4 00 02 00 SetDocksLevel
E5 00 02 00 SetGeoDomeLevel
E6 00 02 00 SetPowerStationLevel
E7 00 02 00 SetToolStoreLevel
E8 00 02 00 SetGunstationLevel
E9 00 02 00 SetTeleportPadLevel
EA 00 02 00 SetSuperTeleportLevel
EB 00 02 00 SetUpgradeStationLevel
EC 00 02 00 GetBarracksSelected
ED 00 02 00 GetDocksSelected
EE 00 02 00 GetGeoDomeSelected
EF 00 02 00 GetPowerstationsBuilt
F0 00 02 00 GetToolStoreSelected
F1 00 02 00 GetGunstationSelected
F2 00 02 00 GetTeleportPadSelected
F3 00 02 00 GetSuperTeleportSelected
F4 00 02 00 GetUpgradeStationSelected
F5 00 02 00 SetUpgradeBuildingIconClicked
F6 00 02 00 GetUpgradeBuildingIconClicked
F7 00 02 00 FlashUpgradeBuildingIcon
F8 00 02 00 GetBuildingsTeleported
F9 00 02 00 SetBuildingsTeleported
FA 00 02 00 CameraLockOnMonster
FB 00 02 00 SetMonsterAttackPowerstation
FC 00 02 00 ClickOnlyCalltoarms
FD 00 02 00 FlashCallToArmsIcon
FE 00 02 00 SetRecordObjectPointer
FF 00 02 00 GetGetSonicBlasterIconClicked
00 01 02 00 SetGetSonicBlasterIconClicked
01 01 02 00 FlashGetSonicBlasterIcon
02 01 02 00 GetDropSonicBlasterIconClicked
03 01 02 00 SetDropSonicBlasterIconClicked
04 01 02 00 FlashDropSonicBlasterIcon
05 01 02 00 GetMonsterAtTutorial
06 01 02 00 SetMonsterAttackNowt
07 01 02 00 GetPlaceFenceIconClicked
08 01 02 00 SetPlaceFenceIconClicked
09 01 02 00 FlashPlaceFenceIcon
0A 01 02 00 GetLevel1BarracksBuilt
0B 01 02 00 GetLevel1DocksBuilt
0C 01 02 00 GetLevel1GeodomeBuilt
0D 01 02 00 GetLevel1PowerdtationsBuilt
0E 01 02 00 GetLevel1ToolStoresBuilt
0F 01 02 00 GetLevel1GunstationsBuilt
10 01 02 00 GetLevel1TeleportsBuilt
11 01 02 00 GetLevel1VehicleTeleportsBuilt
12 01 02 00 GetLevel1UpgradeStationsBuilt
13 01 02 00 GetLevel2BarracksBuilt
14 01 02 00 GetLevel2DocksBuilt
15 01 02 00 GetLevel2GeodomeBuilt
16 01 02 00 GetLevel2PowerstationsBuilt
17 01 02 00 GetLevel2ToolStoresBuilt
18 01 02 00 GetLevel2GunstationsBuilt
19 01 02 00 GetLevel2TeleportsBuilt
1A 01 02 00 GetLevel2VehicleTeleportsBuilt
1B 01 02 00 GetLevel2UpgradeStationsBuilt
1C 01 02 00 GetPoweredBarracksBuilt
1D 01 02 00 GetPoweredDocksBuilt
1E 01 02 00 GetPoweredGeodomeBuilt
1F 01 02 00 GetPoweredPowerStationsBuilt
20 01 02 00 GetPoweredTeleportsBuilt
21 01 02 00 GetPoweredGunstationsBuilt
22 01 02 00 GetPoweredTeleportsBuilt
23 01 02 00 GetPoweredVehicleTeleportsBuilt
24 01 02 00 GetPoweredUpgradeStationsBuilt

These commands were in the first chunk of the NERP list before the verified positions - many may not work

  • GetMinifigureTask; //get number of minifigures doing a task
  • GetMinifigureActivity; //get number of minifigures doing an activity
  • GetMinifigureHealth;
  • GetMinifigureEnergy;
  • GetMinifigureTool; //drill, spade
  • GetMinifigureCarryObject; //crystal, ore, weapon
  • GetMinifigureCurrentTask; //deposit crystal, dig, etc
  • GetMinifigureUnderAttack; //weapon type, thrown about, punched,etc
  • GetMinifigureScared; //close proximity of enemy
  • GetMinifigureCocooned; //trapped by cocoon
  • GetBlocksDynamited;
  • GetBarriersOnLevel;
  • GetElectricFencesOnLevel;
  • GetMinifiguresTeleportedIn;
  • GetMinifiguresDestroyedIn;
  • GetMinifiguresSold;
  • GetMinifiguresTeleportedOut;
  • GetMinifiguresGrabbed;
  • GetMinifiguresScaredCount; //NUMBER OF TIMES MINIFIGURES ARE SCARED, NOT NUMBER OF INDIVIDUAL MINIFIGURES SCARED
  • GetMinifiguresSlippedCount; //NUMBER OF TIMES MINIFIGURES SLIPPED, NOT NUMBER OF INDIVIDUAL MINIFIGURES SPLIPPED
  • GetMinifiguresCaughtInWeb;
  • GetVehiclesTeleportedIn;
  • GetVehiclesSold;
  • GetVehiclesTeleportedOut;
  • GetVehiclesCaughtInWeb;
  • GetBuildingsConstructed;
  • GetBuildingsDestroyed;
  • GetBuildingsSold;
  • GetBuildingsTeleportOut;
  • GetBuildingsPunched; //NUMBER OF TIMES BUILDINGS ARE PUNCHED
  • GetBuildingsHitByBoulder; //NUMBER OF TIMES BUILDINGS ARE HIT BY BOULDER
  • GetRockMonstersEmerged;
  • GetRockMonstersDestroyed;
  • GetRockMonstersEnteredWall;
  • GetRockMonstersElectrocutedOnFence;
  • SetLevelComplete;
  • SetGameComplete;
  • SetPrintMessage;

These commands were tagged // very questionable

  • SetAssignTaskToUnit;
  • SetCreateBuilding;
  • SetCreateMinifgure;
  • SetRockMonsterAggression
  • SetSpiderAggression

These commands were listed between SetTutorialCrystals and GetTutorialBlockIsGround, but there's only one open value there:

  • GetPathsBuilt //How many paths have been built
  • GetBuildPathIconClicked //Reset value
  • SetBuildPathIconClicked //Has build path icon been clicked
  • FlashBuildPathIcon //Flash build path icon
Sample NERP levels

//----------------------------
//Example of what to use for sample times
//Set wait times (sample length multiplier, time added after sample, time for no sample)
TRUE ? SetMessageTimerValues 1000 1000 4000

//----------------------------


//----------------------------
Objective :-
		 Level ends after 5 minutes

Solution :-
		TRUE ? SetTimer0 300
		GetTimer0 > 0 ? :Skip
		TRUE ? SetLevelComplete
Skip:
//----------------------------------


//----------------------------
Objective :-
		 Level ends after 10 power crystals collected and teleporter built
		 After 9 crystals collected give the message "Only one more crystal to collect"

Solution :-
		GetCrystalsCollected < 10 ? :Skip
		GetCrystalsCollected = 9 ? SetPrintMessage Only one more crystal to collect
		GetBuildingsConstructed TELEPORTER <1 ?:Skip
		TRUE ? SetLevelComplete
Skip:
//----------------------------------

Special Commands

These were on the old wiki on a page "Special Parameters" but I have no idea what any of it means

Special Parameters act much of the same way as Basic Parameters do. They help designate a property, a series of certain basic parameters, or help organize certain basic parameters. The details of their function aren't entirely known.

There are two kinds of Special Parameters, ones that begin with a colon ":" and ones that end with a colon. Each special function has a counterpart of the other kind (for most ones at least). For example, there is both a “:cestfini” and a “cestfini:” because of the way they work in the NRN file. In the encoded NPL file, they each have different hex-strings. Not only do they have different strings but they also have different suffixes. Ones that begin with the colon have the encoded suffix “08 00” and ones that end with it have the suffix “04 00.”

Rather than trying to cover every single number, I will just deal with the special parameters that are common in normal game levels (there are some very specialized ones that only appear in some scripts), and give the encodings for both the one that begins with the colon and the one that ends with it. Here they are (some may be missing one of the encodings simply because I either haven’t found them, or they are unused. You’ll also notice there’s a lot of overlap with the encodings, and several functions do the same thing...which makes no sense):

(Parameter Name – encoding for that beginning with the colon – encoding for that ending with colon)

Top – ? – 00 00

NoMessage – 12 00 – 00 00

Skippedskip – 0D 00 – 01 00

Skip – 1A 00 or 31 00 or 32 00 – 00 00 or 01 00 or 02 00

CanRebuildToolStore – 2B 00 – 01 00

NoneStored – 54 00 – 02 00

end – ? – 03 00

CloseDown – 65 00 or 72 00 – 03 00 or 02 00

Wbe – ? – 04 00

Next - ? – 05 00

Clear – ? – 06 00

finish – ? – 07 00

Complete – ? – 08 00

canrebuild – 93 00 – 09 00

endmessage – B0 00 – 09 00

Events – B8 00 – 0A 00

cestfini – 46 01 – 14 00

These parameters have proven to be very confusing, and they are not very well understood.