A random assortment of actors that you can use! Actors that can't be categorized will exclusively be found here.
A BearTrap that comes with more customization and fixes. This bear trap can also hurt a pawn even if the pawn falls into it, making it much more dangerous.
Variables
fDamageAmount - The amount of damage to deal to the pawn
TrapSound - The sound the trap should made when activated
TrapLeavesEmitter - The emitter to spawn when the trap is activated
TrapLeavesClass - The actor class to spawn in for the leaves that appear near the trap
TrapStaticAnimName - The animation to play while the trap is idle
TrapSnapAnimName - The animation to play when the trap is activated
bChangeOpacityForFadeOut - If true, the bear trap will fade out over the course of fCurrentOpacityForFadeOut seconds. If false, the bear trap will not fade out and will permanently stay de-activated
fCurrentOpacityForFadeOut - How many seconds it should take for the bear trap to fade out once activated
fDesiredOpacityForFadeOut - The opacity the bear trap must fade to before being considered able to despawn
fSpeedOpacityForFadeOut - How long it should take in seconds for the bear trap to fade out when activated
bAffectAllPawns - If true, all pawns can affect the bear trap
bTakeKnockback - If true, any pawn that activates the trap will have knockback dealt to the pawn
A generic blob shadow that you can place in your map to make the map's lighting potentially look more consistent. Due to a fun bug with UE2, when you place down this actor, it will appear like a black square, despite the fact it's a transparent texture. Once you place down the actor, you can temporarily make it appear transparent by going into the Texture Browser, clicking on In Use, then modifying the properties of the texture so that bAlphaTexture=true.
When first placed down, build the map, then enable the group associated with this actor.
Variables
bMadeShadowTwoSided - If true, the blob shadow will render on both sides
A BriarPatch that comes with more customization and fixes. The main difference with this briar patch is the fact it can hurt a pawn even if it falls into the briar patch, making this much more effective as a world hazard.
Variables
fDamageAmount - The amount of damage a pawn should take when touching the briar patch
fDamageDelay - How long it will take in seconds before the briar patch can hurt a pawn again
EmitterHurtClass - The emitter that spawns in when the briar patch is touched
HurtSound - The sound to play when the briar patch is touched
bAffectAllPawns - If true, all pawns will be affected by the briar patch instead of only the current player
bTakeKnockback - If true, any pawn that takes damage from the briar patch will take knockback, if applicable
fChanceToSayBumpline - The chance of the pawn saying a bumpline when getting hurt. Only applies to playable characters
A controller that features a ton of new console commands, plus some needed features!
To add this controller to a map, locate the main player in the map, go into their PlayerControl property tab, then set DefaultPlayerControllerClass to equal MController. You do not need to do this for every playable character in the map, only the first one. The reason is because when you switch control to another pawn, the controllers are simply swapped, meaning the MController can switch its control across any pawns needed in real-time.
Additionally, there's a custom fork of MController that gives the player a crosshair. When using this controller specifically, 2 additional console commands (both with their own alias) are added.
SetCrosshairVisibility <bool> - Sets the visibility of the crosshair. True is visible and false is invisible. Alias for this command is SCV
SetCrosshairDistance <float> - Sets the maximum distance of the crosshair. Default is 1500.0. Alias for this command is SCD
All stock console command changes:
MListDynamicActors - Fixed to work as intended (was listing static actors)
MLockCamera - Fixed to work as intended (wasn't working)
MSetCameraDist - Fixed to work as intended (wasn't working)
MGhost, MFly and MWalk - Fixed a critical error where you could double jump while ghosting, which would fling you extremely far out of bounds, and fixed a bug with MWalk where if the player had jumped then ghosted and flew into a floor, they would be unable to jump without falling and landing first
MGod <bool> - Not a toggle; requires a bool. Fixed to prevent other sources of damage/knockback
MInvisible <bool> - Not a toggle; requires a bool. Fixed to work as intended (only worked for a tick)
MSloMo <float> - No longer persists the speed across levels (use the new console command SloMoSave instead if you need this to persist)
MSetJumpZ <float> <bool> - Added an optional bool. If <bool> is true, affects the double jump height instead
MSetHealth <float> - Health is now clamped to the minimum and maximum health values by default
MSetSpeed <float> - Takes a raw speed value instead of a multiplier and fixed to work as intended (would stop working all the time)
MSummon <class> - Same as Summon, but doesn't require specifying a library
All new (or heavily edited) console commands:
MPakVersion - Displays to the user what the current MPak version is
UnCauseEvent <event> - Does the opposite of CauseEvent, and uncauses the event <event>
ListStaticActors - Lists all static actors
SloMoSave <float> - Acts like the original SloMo command where the SloMo speed persists
SetPotions <int> - Sets the total of all potion totals to <int>
SetCoins <int> - Sets the coin total to <int>
ShowAINodes <bool> - If <bool>=true, runs the console command ShowDebug, then shows all AI node lines/paths
SetJumpZ <float> <bool> - Sets your player's jump height (not for the double jump) to <float>. If <bool>=true, then the command changes the double jump height instead. The default value varies between characters
Invisible <bool> - Sets the invisibility of the player to <bool>
NoTarget <bool> - Sets the player's NoTarget to <bool>, meaning no enemies will target the player if true
FullDebug <bool> - If <bool>=true, turns on both notable debug features
SummonNoRot <class> - Same as MSummon, but doesn't pitch the actor. The camera angle will still dictate how high or low the actor will spawn however
SummonCoords <class> <float1> <float2> <float3> - Same as SummonNoRot, but spawns an actor at specific coordinates and doesn't rotate on any axis. Example: Summon Shrek 360 420 640
SetProp <ActorTag> <ActorVariable> <ActorValue> - Sets <ActorTag>'s <ActorVariable> to <ActorValue>. Example: SetProp Shrek Health 64 sets the health of Shrek to a value of 64.0
GetProp <ActorTag> <ActorVariable> - Just like SetProp, but will return with the value of the variable
WhoAmI - Logs who you are playing as
Rocket - Takes away all movement input and propels you in the direction you were last flying in
Spider - Converts your character into a spider
Driving - Takes away all movement input and makes you walk in the direction you were last walking in
Announce <message> - Acts like AdminSay, but that can have the display time and colors customized (making it practical for real maps)
AnnounceTime <float> - Sets the amount of seconds the announcement should be onscreen for to <float> seconds
AnnounceColor <red> <green> <blue> - Sets the color of the announcement text (Example: AnnounceColor 127 255 0 will make the text have a greenish color)
TP <X> <Y> <Z> - Teleports the player to the location vector provided
TPBack - If the player has used the TP command, teleports them back to where they were originally
WriteString <string> - Logs <string> to the log
WriteStrings <string(s)> - Logs <string(s)> to the log
UpdateInv - Updates the inventory, which is sometimes required to do when checking how many coins or potions a player has via a GetProp (not doing so may crash the game)
SetBoth <int> - Sets the coin total and the potion total to <int>
AddBoth <int> - Adds the coin total and the potion total by <int>
BossCheat - Sets the health of all 4 main boss types to 1.0
ChangeState <state> <bool> - Changes the state of the player to <state>. If <bool>=true, then the state is changed relative to the pawn (instead of the controller)
ChangePhysics <int> - Changes the physics of the player to <int>. <int> is converted from a numerical value to a physics enumerator. Example: ChangePhysics 1 would change the physics of the player to PHYS_Walking
AntiAntiCheat - Disables M.A.C. (Master's Anti-Cheat) if it currently exists in the map
AddHealth <float> - Adds to the player's health by <float>
Execute <string> - Allows you to execute multiple console commands from within a single console command. Simply add the keyword | between each console command, just like when configurating keybinds. Example: Execute Ghost | SetHealth 50 runs both the console command Ghost and SetHealth 50
SleepFor <float> <string> - The same as Execute but delays running the commands until <float> seconds have passed
PlayASound <library>.<class> - Plays a 2D sound. Example: PlayASound Shrek.Faint will play Shrek's faint sound
PlayADialog <string> - Plays the dialog <string> from the player's mouth. Example: PlayADialog pc_dnk_CarHijack_34 will play the voice line "Are we there yet?"
PlayAMusic <string> - Plays the song <string>. Example: PlayAMusic 1_Swamp will play the Shrek's Swamp theme
RefreshJumpVars - Refreshes all jump variables on the current player to match the default values and the current environment. This should be used when the gravity changes or when the variables need to be defaulted
SetGameState <string> - Sets the GameState to <string>. Example: SetGameState GSTATE010 would set the current GameState to GSTATE010. Due to an arbitrary "valid check" forced by KnowWonder that can't be bypassed, this command can only change to the 6 GameStates you see in the KnowWonder debug menu
GetGameState - Returns with the current GameState and prints the value in the KW log
DropCarryingActor <bool> - Drops the currently held actor onto the ground. If <bool>=true, then the held actor is also destroyed
ConsoleKey <byte> - Changes the current console key to the keyboard key code value of <byte>. This change is saved until Default.ini is refreshed
SetShamrocks <int> - Sets the player's total shamrocks to <int>. Takes a value between -1 and 5. 5 is all shamrocks, 0 is no shamrocks, and -1 is no health, so an instant death
AddShamrocks <int> - Adds the player's total shamrocks by <int>
PlayAMovie <string> - Plays the movie <string> on the screen. Do not include the number 512, 640 or 1024 after, as the console command will locate these versions of the movie automatically as needed
New command aliases:
LogAIS - LogScriptedSequences
CE - CauseEvent
UCE - UnCauseEvent
SH - SetHealth
SP - SetPotions
SC - SetCoins
SB - SetBoth
AH - AddHealth
AP - AddPotions
AC - AddCoins
AB - AddBoth
BC - BossCheat
MV - MPakVersion
FD - FullDebug
AAC - AntiAntiCheat
Variables
fPlayASoundVolume - The volume at which any sound played with the console command PlayASound plays at
bModifyHealthSFX - If true, a sound effect will play when using SetHealth or AddHealth
bModifyHealthKnockback - If true, the player will take knockback when using SetHealth or AddHealth
ModifyHealthHealSFX - What sound effect should play if SetHealth or AddHealth causes the player's health to increase
ModifyHealthHurtSFX - What sound effect should play if SetHealth or AddHealth causes the player's health to decrease
ModifyHealthDeathCC - What console command should be ran if SetHealth or AddHealth causes the player's health to go to 0 or below
bTPBackOncePerTP - If true, a TPBack only works once per TP (a TP must be done before a TPBack can work once)
iTPRetryAttempts - How many times should a TP be retried if the TP initially fails (due to the location being blocked). A safe value is 28, however if a TP you need isn't working consistently, you may need to increase this value (however higher values may impact performance)
iSummonRetryAttempts - How many times should a summon be retried if the summoned actor is attempted to be spawned in an illegal position
fTeleportDist - The maximum distance that the command Teleport will teleport the player forward
A custom action for CutScript that adds the ability to execute player console commands. Simply type CC and then anything after it will execute as a console command (CC stands for Console Command). To enable this in-game, you must edit your Default.ini configuration file in the game's System directory, then add this line at the bottom of [KWGame.KWCutController]: ProjectActionString="MPak.MCUTACTION_"
A custom action for CutScript that replaces the Say CutScript actions and must be used if AllDialog.uax is modified (in order to preserve lipsyncing). Simply type MSay instead of Say. To enable this in-game, you must edit your Default.ini configuration file in the game's System directory, then add this line at the bottom of [KWGame.KWCutController]: ProjectActionString="MPak.MCUTACTION_"
An extension of a DriveThrough that allows you to modify normally impossible-to-access variables. This includes the cost of each potion and click sounds.
Variables
iPotionCost_Strength - The cost of a strength potion
iPotionCost_Frog - The cost of a frog potion
iPotionCost_Invisibility - The cost of an invisibility potion
iPotionCost_Sleep - The cost of a sleep potion
iPotionCost_Stinky - The cost of a stinky potion
iPotionCost_Shrink - The cost of a shrink potion
iPotionCost_ShrinkEnemies - The cost of a shrink enemies potion
iPotionCost_Freeze - The cost of a freeze potion
iPotionCost_Love - The cost of a love potion
AcceptSound - The sound to play when accepting a purchase
CancelSound - The sound to play when canceling a purchase
BuySound1 - The sound to play when buying a potion (1)
BuySound2 - The sound to play when buying a potion (2)
JingleSound - The sound to play when the player approaches the drive through
An emitter that can have the opacity of the texture be adjusted for each individual ParticleEmitter inside this emitter. The index of the variable fOpacities should correspond with the ParticleEmitter in Emitters that you wish to change. If you do not want to change the opacity, then assign the value 1.0 for the fOpacities index.
Variables
fOpacities - The amount of opacity that each texture in the emitter should render with. 1.0 is completely visible, and 0.0 is invisible
Allows a mapper to define an area that should block light. To place down a fake shadow, right-click on the place mover button, seen on the left of the level editor view, then select MFakeShadow. Whatever shadow is casted from the static mesh used for this actor is what the shadow will appear like in-game. This actor will be destroyed once the map is loaded, meaning it doesn't matter what it looks like.
When first placed down, build the map, then enable the group associated with this actor.
A jump magnet, but with more customization!
Variables
fJumpTime - How long it should take in seconds for the player to land where the jump magnet is located from the time the player actuates the jump magnet
fHeightCheckAmount - If bDisableIfNoGroundBelow=true, how close a ground needs to be relative to the jump magnet (on the Z axis) in order for the jump magnet to be possible to trigger
bTakeAwayControl - If true, the player will lose the ability to control their character until they land
bAutoJump - If true, the jump magnet will instead act like a SHJumpMagnet where it throws the player in the jump magnet's direction automatically
bAllowMultipleInputs - If true, the player will be able to actuate the jump magnet multiple times without having to land
bDisableIfFalling - If true, the jump magnet will be disabled while the player is falling (prevents phantom jumps)
bDisableIfNoGroundBelow - If true, if no ground is close enough to the jump magnet, the jump magnet will be disabled
An invisible plane that can be used to specify the material type of the ground in a certain area in a map. This is very convenient for when you need to specify the ground's material type in a certain area without making it based on a texture, or for toggling between different material types.
When first placed down, build the map, then enable the group associated with this actor.
Extremely important notice: You should never change the collision values to change where it collides. Only change the variable DrawScale to set the collision for it (DrawScale3D will not work).
An plane that renders a looping movie onto the face of it. This plane does not support transparency and is strictly 1-sided. Triggering the movie plane will cause the movie to toggle whether its playing or not. The movie that is played MUST HAVE A RESOLUTION TO THE POWER OF 2. If the resolution of the movie is not divisible by 2, then it will not properly render.
Variables
MovieToPlay - The name of the movie, and its versions that play depending on the game's resolution
fFrameRate - The frame rate of the movie
bInitiallyPlayMovie - If true, the movie will automatically start playing
bDoNotLoop - If true, the movie will not loop, although this only works if you provide the duration of the movie
fMovieDuration - If bDoNotLoop=true, how long will the movie play until it is finished
bTriggerOnceOnly - If true, can only be triggered once
TextureWhileMovieIsNotPlaying - If a movie is not playing, what texture should the plane render
MMutRPC = Master's Replace PlayerController Mutator
A mutator that is capable of replacing ANY PlayerController in ANY map, including stock maps and bonus levels. Simply open any map like you normally would, but add ?Mutator=MPak.MMutRPC to the end of the name of the map. Run this console command to activate this mutator: Open Book_FrontEnd?Mutator=MPak.MMutRPC
Important notice: once this mutator is loaded, it is permanently loaded until you close the game. If you open a save that had this mutator running, that also permanently re-enables the mutator. To disable this mutator, run this console command: Start Book_FrontEnd
This mutator uses a hacky method of doing this, which causes the beginning of every level to have to reload. After this occurs, no more reloading is required and you can now play the level with the new player controller. If you want to force-add your own custom controller into any map, simply extend this mutator and change the default property of NewController to equal your own custom controller. At that point, you just simply change the mutator to the name of your mutator you just made.
Pros of using this mutator:
Can easily add your own code into any map without modifying the map via a custom PlayerController instead of a custom actor
Easier custom game rule creations that are related directly with the current player
Can easily obtain the current player's controller and their pawn via calling PC and HP (if calling HP, call GetHP() before this) in your mutator's code
Don't have to make the framework for the mutator as you can easily extend this one
Cons of using this mutator:
To change what the PlayerController should be, you have to extend this mutator and change the default property
A save-load will always occur at the beginning of every map, which can be a bit off-putting and can cause certain weird issues
Annoying to unload mutator
A better version of the Note actor that takes multiple lines. Convenient for to-do lists built straight into the map's file.
Variables
Notes - All of the notes
For those who need to borderline write a manual inside the map's file, here you go. Convenient for big guides or for detailed information built straight into the map's file. Can have a title, a table of contents (which allows you to mark which index corresponds to what section) and sections.
Variables
Notes - All of the side notes
NoteTitle - The title of this entire note
NoteTableOfContents.NoteSectionTitle - The section title
NoteTableOfContents.NoteIndex - The note index (or chapter number) that corresponds with the section title
NoteChapters.Notes - All of the notes
A fork of MPathBlockingPlane that is a cube instead of a plane.
Allows a mapper to block off paths that could be used for NPC navigation. To block off a path, simply place the plane between the 2 paths to disconnect them. This is especially helpful when you don't want auto-generated AI nodes that come from pickups to interfere with your AI nodes. This actor will be destroyed once the map is loaded, meaning it doesn't matter what it looks like.
When first placed down, build the map, then enable the group associated with this actor.
A path node that, at the moment, only has the original collision size. These path nodes should always be used since they will typically build paths better.
A pawn that simulates physics and interacts with the world in many different ways. Simply change the StaticMesh to what you want your physics pawn to look like and configure it to your liking! The class MPCrate is a simple way of testing how these physic pawns work.
Variables
bCanBePickedUpWhileBouncing - If true, can be picked up while bouncing. This will cause a lot of weird issues if allowed
bDestroyWhenFallOutOfWorld - If true, will be destroyed if it falls out of the world
bAutoRotateWhileBouncing - If true, will automatically rotate in the air while falling
bDealDamageToPawns - If true, can deal damage to pawns if it has a high enough velocity
bScaleDamageWithVelocity - If true and if bDealDamageToPawns=true, the damage will scale depending on the velocity
bTakeKnockback - If true and if bDealDamageToPawns=true, the pawn that is hit will take knockback if applicable
bAllowBumpForBounce - If true, any pawn bumping this can cause it to be kicked in the direction it was bumped from by the instigator
bAllowBumpFromAbove - If true and if bAllowBumpForBounce=true, bumping the pawn from above is allowed (allows for a lot of exploits)
bUseBounceLivesSystem - If true, can only bounce a certain amount of times before being destroyed
bStickToSurfaces - If true, will stick to any bumped surfaces
bCanTouchActors - If true, can touch other actors, such as triggers
bDoNotStayOnTopOfPawns - If true, if the pawn stops moving on top of a pawn when thrown, it will constantly attempt to get off of it. This is recommended so that the pawn doesn't easily get stuck in a place that may not be easily reachable
BounceSounds - What random sound to play when a bounce occurs
DestroySounds - What random sound to play when destroyed
fMinimumVelocitySpeedToPlaySound - The minimum amount of velocity the pawn must be travelling at in order to play a bounce sound
fBounceDropoffMultiplier - The dropoff multiplier for the pawn. The higher the value, the slower it drops off in velocity
fBounceSoundRadius - The sound radius for the bounce sound
fAutoRotatePitchDirection - If bAutoRotateWhileBouncing=true, the pitch direction auto rotation should rotate in (should be a value between -1.0 and 1.0)
fAutoRotateRollDirection - If bAutoRotateWhileBouncing=true, the roll direction auto rotation should rotate in (should be a value between -1.0 and 1.0)
fAutoRotateRate - If bAutoRotateWhileBouncing=true, the rate/speed at which the pawn should auto rotate
fDamageAmount - If bDealDamageToPawns=true, how much damage should be dealt to other pawns when bumped into
fMinimumVelocitySpeedToDamagePawn - If bDealDamageToPawns=true, how much velocity must the pawn be falling with in order to damage a pawn
fVelocityDamageMultiplier - If bDealDamageToPawns=true and if bScaleDamageWithVelocity=true, the multiplier for how much of the velocity should be translated to damage. Higher values equal higher damage
fMinimumVelocitySpeedToBump - If bAllowBumpForBounce=true, the minimum amount of velocity the instigating pawn must have in order to bump it
fBumpBounceVelocityMultiplier - When bumping into an actor, the multiplier to apply to the current velocity of the pawn
fBumpBounceHelpBoostMultiplier - When a pawn bumps into this pawn, how much upward (or downward) velocity should be applied? It's recommended to keep this at a value of at least 1.0 so that the pawn actually moves when bumped into
fReBumpDelay - How long in seconds it should take before the pawn can be bumped again by another actor
iBounceLives - If bUseBounceLivesSystem=true, how many times can the pawn bounce before being destroyed
AmbientEmitterClass - The emitter to constantly show
BounceEmitterClass - The emitter to spawn when the pawn bounces
DestroyEmitterClass - The emitter to spawn when destroyed
vAmbientEmitterOffset - The offset for the ambient emitter
vBounceEmitterOffset - The offset for the bounce emitter
vDestroyEmitterOffset - The offset for the destroyed emitter
A heavily customizable PlayerStart actor that is actually useful for Shrek 2 maps! The variables below are ordered explicitly (in order of execution) and certain ones cause latent actions to occur, those of which will be labelled with [LATENT].
Variables
nPreStartingEvent - If provided, what event to fire to immediately upon level load
bClearInventory - If true, clears all player inventories
sStartingMovie - [LATENT] If provided a valid movie name, plays the movie sStartingMovie
bMovieUsesSound - If true, the movie will play with sound
sStartingMenu - [LATENT] If provided a valid menu, opens the menu sStartingMenu (example: SHGame.SHPageYesNo)
sStartingMusicName - If provided, plays the music track sStartingMusicName
fMusicFadeTime - How long it should take in seconds for the music to fade in
StartingSound - If provided, what sound to play
fStartingSoundVolume - The volume of the sound to play
FadeSettings.bFadeScreen - If true, fades the screen with the settings below
FadeSettings.ScreenColor - The new color of the screen
FadeSettings.fFadeTime - [LATENT] How long should the fade take in seconds
FadeSettings.FadeType - The easing type for the fade transition
FadeSettings.bFlash - If true, the fade will act as a flash instead
FadeSettings.bHideHUDDuringFade - If true, the HUD will be hidden while the fade occurs
AnnounceMessage.sMessage - If provided, the message to announce onto the center of the screen
AnnounceMessage.fAnnTime - [LATENT] How long the announcement should stay on screen
AnnounceMessage.AnnColor - The color of the announcement text
sStartingDialog - [LATENT] What dialog should be played
fStartingDialogDelay - [LATENT] How long should it take before the dialog plays
nPostStartingEvent - If provided, what event to fire to once the above latent actions have finished
bAutoSave - [LATENT] If true, automatically saves the game once all latent variables above are finished and if the player is not mounting
fAutoSaveDelay - [LATENT] How long should an autosave take in seconds before actually saving
A dynamic light that is turned on only while the current player is colliding with the collision of the light.
Variables
fTransitionTime - How long it should take for the light to turn on or off in seconds
A full re-design/overhaul to the original SlotMachine actor that is incredibly customizable, a lot more entertaining and a lot more fun!
Here's the general method in which the slot machine works:
The player must interact with the slot machine by attacking in front of it, the same way you interact with a DriveThrough
The player will get a GUI popup, where if they click Yes, they will be charged the bet amount if applicable
The typical slot machine spins a single time, but sometimes it can spin more. It will pick 3 random icons to display with a custom animation to do so
If 2 of the 3 icons match, it is considered a win, and a small payout will be given (unless PrizesToWin.bMustFullscreen=true)
If 3 of the 3 icons match, it is considered a fullscreen, and a big payout will be given. Certain fullscreens are considered max wins
After this has concluded, the slot machine may be re-used as many times as the player can bet (unless the slot machine is configured to work otherwise)
This slot machine features a custom texture pack full of custom-made slot textures made by Karpai. To use any of these textures, open a new texture package in the level editor and tell it to open MPak.u in the System folder. From this point, simply pick any of the slot textures you wish to use.
Variables
bDetermineRTP - If true, an RTP-determining system will be enabled and will majorly lag the entire game for typically a few minutes. The progress and results of the RTP determination are shown in the game's log, which you can check in-game with the console command ShowLog. If the RTP is under 100%, then your slot machine is considered balanced, and very similar to real-life slot machines. If it is above 100%, then it is in theory possible to obtain an infinite amount of coins, unless the slot machine is limited by lives
bLockPlayerWhileSpinning - If true, the player will be locked in place during the entire phase of the spinning process of the slot machine
bUseLifeSystem - If true, the slot machine can only be used iTotalLives times before the slot machine is permanently disabled. It's important to understand that the free spins mechanic adds lives, but additional spins do NOT add lives. This means that if you only have 1 life but iSpinsPerBet is above 1, only 1 spin will be done before the slot machine is disabled
CostSignFontType - The fonts the cost sign can use. Similar to GUIStyles, 4 fonts can be provided, which are switched between in real-time depending on how many characters are in the current cost sign text string. The first font will be used if it's only 1 character long, the second font will be used if it's only 2 characters long, etc. The fourth font is the default case font, meaning the font that will be used if the amount of characters in the current cost sign text string is equal to or exceeds 4 characters in length
CostSignMaterialOverride - If provided a material, the material to use for the cost sign
CostSignTextColor - The color of the cost sign text string
CostSignTexts.sWinText - The text to display on the cost sign when a spin wins
CostSignTexts.sFullscreenText - The text to display on the cost sign when a spin hits a fullscreen of icons
CostSignTexts.sMaxWinText - The text to display on the cost sign when a spin hits a max win
CostSignTexts.sLossText - The text to display on the cost sign when a spin loses
CostSignTexts.sOutOfServiceText - The text to display on the cost sign when the slot machine runs out of lives
CostSignTexts.sSpinText - The text to display on the cost sign when a spin begins
CostSignTexts.bCostDecrementsWithBetProcessing - If true, the cost of the bet shown on the cost sign will decrement while it takes away the player's coins
CostSignTexts.bShowSpinCountForSpinText - If true, the cost sign will display the total amount of spins left if iSpinsPerBet is above 1 or if the player receives free spins resulting in spinning more than 1 additional time
fBetProcessTime - How long it should take in seconds for a bet to be processed. This is referring to the time while the slot machine takes away the player's coins
fDelayBeforeSpin - How long it should take in seconds before the spins begin, after a bet has been successfully processed
fPrizeDropInitialDelay - How long it should take in seconds after a winning spin has finished before a prize is dropped
fPrizeDropTime - How long it should take in seconds to drop all of the prizes won in a single spin
fRepeatIconChance - The percent chance of an icon being repeated. This is a pretty complex value and largely determines how many wins you will end up getting, especially with higher prize types. Essentially the odds of all 3 icons being the same is very low, so when the icons are being determined, first, 3 are picked with weighted RNG. Afterward, this percent chance is run on each of the 3 slots, and if it hits the chance, it duplicates its icon to any of the 3 icons, which can also include itself. Due to how this system works, you may now understand why the slot machine is so unpredictable
fSlotSpinRate - How long it should take in seconds before the slot spin animation can change its texture. Higher values will result in slower animation speeds
fSpinTime - How long it should take in seconds for one of the slots to stop spinning
iCostOfBet - The cost of the bet, also known as the amount of coins the player must bet with to spin the slot machine
iCostSignTextOffset - The X and Y offsets for all 4 fonts, relative to the center of the cost sign material. This can be used to manually center the text if the font was incorrectly created, or to make it not be centered
iSpinsPerBet - How many spins should occur per bet
iTotalLives - If bUseLifeSystem=true, how many times can the slot machine be used
SlotSpinMaterials - The range of materials to make a random animation out of for the spinning slot animation
PrizesToWin.bBadPrize - If true, the prize will be considered a loss no matter what
PrizesToWin.bIgnoreMultiplier - If true, no multiplier will be applied to PrizesToWin.iDropCount if a fullscreen occurs
PrizesToWin.bMaxWinPrize - If true, the prize will be considered a max win if a fullscreen of this prize icon occurs
PrizesToWin.bSurpriseFullscreen - If true, the prize will only ever be seen as a fullscreen, meaning that if it was picked to be spun in but not all 3 icons were related to this prize, then it changes the icons to be something else
PrizesToWin.bMustFullscreen - If true, the prize can only be considered a win if it fullscreens (meaning 2/3 doesn't count as a win)
PrizesToWin.bDisableSlotMachine - If true, the prize will cause the slot machine to be disabled (but can be overwritten with a script by modifying the variable bDisabled back to false)
PrizesToWin.BonusSettings.BonusType - If applicable, what type of bonus icon should this icon be? Typically this will be none and will only be assigned to a single prize type
PrizesToWin.BonusSettings.fFreeSpinsDelay - If free spins are enabled, the time it should take in seconds when this prize is won, which stacks with the time it takes for the prize to be dropped if that's applicable
PrizesToWin.BonusSettings.iFreeSpinCount - If free spins are enabled, the amount of free spins that should be won. This amount can be multiplied by the fullscreen multiplier if enabled
PrizesToWin.BonusSettings.BonusRewardSound - The random sound to play when a bonus is won
PrizesToWin.fThrowDeviationLengthMultiplier - The multiplier of how much the direction of the prize being thrown in can deviate to the left or the right. This value should typically stay under a value of 1.0
PrizesToWin.fThrowHeightMultiplier - The multiplier for high the prize should be thrown
PrizesToWin.fThrowLengthMultiplier - The multiplier for how far forward the prize should be thrown
PrizesToWin.fThrowVelocityMultiplier - The overall multiplier for how much velocity the prize should be thrown withÂ
PrizesToWin.iDropCount - How many prizes should be dropped per win
PrizesToWin.iDropWeight - The weight of the prize. Lower weights typically mean lower odds, unless there is not much weight being added by all the other prizes. This is used for calculating the odds of how often this prize can appear
PrizesToWin.iFullscreenMultiplier - If PrizesToWin.bIgnoreMultiplier=false, the multiplier to apply to PrizesToWin.iDropCount if a fullscreen of this prize is spun in
PrizesToWin.nEventToFireTo - If provided, the event to fire to each time this prize is dropped, not how much it has been spun in. This means that if this prize drops 5 prizes, then this event will be fired to 5 times
PrizesToWin.nStateToRun - If provided, the state to make the prize actor go to when spawned in
PrizesToWin.PrizeClass - The class(es) to pick from when determining which actor class to spawn in. Each time the prize is dropped by the witch, this list is checked and one of the classes is picked to be spawned in
PrizesToWin.FullscreenPrizeClass - The class(es) to pick from when determining which actor class to spawn in, only if a fullscreen hits and only if any classes are provided. If the fullscreen reward should be the same class as PrizesToWin.PrizeClass, then don't provide any fullscreen prize classes. Each time the prize is dropped by the witch, this list is checked and one of the classes is picked to be spawned in
PrizesToWin.vOffset - The locational offset to apply to the spawnpoint for the prize
PrizesToWin.rOffset - The rotational offset to apply to the prize
PrizesToWin.SetProps.Variable - What variable to Set to the prize
PrizesToWin.SetProps.Value - What value to Set to the prize
PrizesToWin.SlotMaterial - The material of the slot that corresponds to this prize
PrizesToWin.SpawnSound - The random sound to play from the prize whenÂ
PrizesOnLoss - The same variables as PrizesToWin, but certain variables will have no effect, such as SlotMaterial
WitchSettings.bTurnToPlayer - If true, the witch will turn to face the player. This also affects the direction the prizes are thrown in, since that is relative to the rotational direction
WitchSettings.fAppearDistance - The distance the player must be within range of the witch in order for the witch to pop out of the slot machine cauldron
WitchSettings.nAppearAnim - The animation the witch should play when appearing
WitchSettings.nDisappearAnim - The animation the witch should play when disappearing
WitchSettings.nIdleAnim - The animation the witch should play while doing nothing and being visible
WitchSettings.nPayoutAnim - The animation the witch should play when dropping a prize
WitchSettings.nSpinIdleAnim - The animation the witch should play when the slot machine is spinning
WitchSettings.vOffset - The locational offset to apply
WitchSettings.rOffset - The rotational offset to apply
WitchSettings.SetProps.Variable - What variable to Set to the witch
WitchSettings.SetProps.Value - What value to Set to the witch
WitchSettings.WitchAppearSound - The random sound the witch should play when appearing
WitchSettings.WitchDisappearSound - The random sound the witch should play when disappearing
WitchSettings.WitchMeshes - What random mesh should be used for the witch
WitchSettings.WitchSkins - What random skin should be applied to the witch
WinSound - The random sound to play when a spin wins
FullscreenSound - The random sound to play when a spin hits a fullscreen of icons
MaxWinSound - The random sound to play when a spin hits a max win
ProcessBetFailSound - The random sound to play when processing a bet fails (the player lacks the amount of coins to place a bet)
ProcessBetSuccessSound - The random sound to play when processing a bet succeeds
SpinLoop1Sound - The sound to loop while the slot machine is on its first slot
SpinLoop2Sound - The sound to loop while the slot machine is on its second slot
SpinLoop3Sound - The sound to loop while the slot machine is on its last slot
SpinStartSound - The random sound to play when the slot machine starts to spin
SpinStopSound - The random sound to play when any of the slots stop spinning
A StaticMeshActor that has full access to all in-game variables. You'll likely only use this for shimmy pipes or for when you need a StaticMeshActor to use a box collision (although if you're going to do this, consider the much better and easier alternative of a BlockingVolume).
A plane that is capable of dynamically rendering text from within the game onto itself. This plane does not support transparency and is strictly 1-sided. Supports a layering system for both the text being dynamically rendered on the face of the plane, and the textures making up the material behind the text. Firing an event to this text plane will cause the text to toggle its visibility, or it can cause the text to change.
Important notice: this is known to cause a render device crash if you go fullscreen mode twice while in a level with this in it. There is nothing I can do about this.
Variables
TextLayers.sText - The text to be displayed
TextLayers.FontType - The font the text should render with
TextLayers.cTextColor - The color of the text
TextLayers.iPositionOffset - The positional offset of the text. This is relative to the center of the plane
TextLayers.bDropShadow - If true, drops a shadow beneath the text
TextLayers.fDropShadowDistance - Determines how far the drop shadow should be
TextureLayers.Texture - The texture to render behind the text. If no texture is provided, it will simply render black
TextureLayers.cTextureColor - The color to render the texture through. A white color with an opacity of 255 will make the texture render as normal
bInitiallyDrawText - If true, the text will initially be drawn onto the plane
bTriggerOnceOnly - If true, the text plane can only be triggered once
bShowTextLayersInOrderByTrigger - If true, only the first text layer is rendered, and each triggering of the text plane will cycle through the text layers
bCycleThroughTextLayers - If true, the text layers will automatically cycle in order at the rate of fCycleRate
fCycleRate - If bCycleThroughTextLayers=true, how long it should take in seconds until the text layer is cycled
bPickRandomTextLayer - If true, picks a random text layer to render
A dynamic light that can be toggled on and off through the use of events. Essential for lighting effects, such as lightning, or glowing effects that need to be toggled. This actor is ported directly from Shrek 2's Gameplay.u (KnowWonder's code), with no changes made to the original at the moment.
Variables
ChangeTime - How long it takes in seconds for a light to transition from off to on or on to off
bInitiallyOn - If true, the light will initially be on
bDelayFullOn - If true, the light will wait ChangeTime seconds, then fully turn on (?)
RemainOnTime - If the state of the light is set to TriggerPound, how long should the light stay on once activated, before turning off (?)
An actor that simply contains the current version of MPak in its variable Version. This can be useful for debugging.
If this WorldInfo is applied, you can use up to 100 GameStates, instead of only 6 specific ones. To load this in-game, you must edit your Default.ini configuration file in the game's System directory, then add this line at the bottom of [Engine.Engine]: WorldInfo=MPak.MWorldInfo.
The numbers you can use for GameStates are as follows: Starting from 000, and then adding 10 to that value, until 990 is reached.
By default, without using this WorldInfo, these will be the only valid GameStates you can use:
GSTATE000
GSTATE010
GSTATE020
GSTATE030
GSTATE040
GSTATE900