::Austra Puzzles Customizable::
NOTE:
If you download this, please copy the sound module file from Nifflas' level:
Nifflas - 000 - Teleporters\Sound Module.ccn
Copy it and place it into my level after you download and extract it.
(It's a big file. I didn't want to upload it)
I have included the puzzler.mfa with the download
http://www.filefront.com/15418809/Joel---000---Test.zip/All of Autra's puzzles are customizable (except for the teleport device)
There's some other stuff I was experimenting with in here. Might be worth taking a quick look. I might write more about it later.
There are 2 read me's and 1 puzzler.ini worth looking at. I'll paste them here for quick reference:
[Puzzle 1]
Puzzle Type=Symbols 15
Initial Prompt=What is the anshwuer?
Win Prompt=Wow. You're smark!
Symbol 0=1
Symbol 1=1
Symbol 2=1
;
; ::Symbol 15 Grid Reference::
; 14 13 12 11 2
; 10 9 8 7 1
; 6 5 4 3 0
;
; In this case I have set
; the solution to symbols 0, 1 and 2
;
;
; Generic puzzle settings
;
Hint 0=Right most column
Set Flag on Win=0
Set Flag on Win to=12
;Set Flag on Win relative=1
;Disable if Flag has value=5
;Disable if Flag has value comparison=-1
;Disable if Flag has value comparison=1
;
;
; Notes on the flag settings:
;
; Set Flag on Win=0
; means, if I win, I want to change the value of "Flag 0"
;
; Set Flag on Win to=12
; means, if I win, I want to change the value of "Flag 0" to the value 12
;
; Set Flag on Win relative=1
; means, if I win, I actually want add 12 to whatever value is in "Flag 0" instead of just setting it to 12
; (Never set "Set Flag on Win relative" equal to anything but 1 or 0. (1 = yes, 0 = no)
;
; Disable if Flag has value=5
; This means that this puzzle has already been beaten if "Flag 0" has the value 5
; If you do not speciefy "Disable if Flag has value", it will use the "Set Flag on Win to" by default.
; Usually you will not specify this value unless you got some really crazy flag stuff going on.
;
; Disable if Flag has value comparison=-1
; This means that this puzzle has already been beaten if the value in "Flag 0" is less than or equal to 5
;
; Disable if Flag has value comparison=1
; This means that this puzzle has already been beaten if the value in "Flag 0" is greater than or equal to 5
;
; Disable if Flag has value comparison=0
; This is the default. It just looks to see if the values are equal.
;
; Do not set "Disable if Flag has value comparison" to anything but -1 or 1 or 0
; Unless you want to break everything >=(
;
;
; I think that the rest of this ini file is self explanitory.
; Except, the Teleporter device is NOT configurable.
; You can select it as a Puzzle Type, but it will act just like the normal one.
; I am not sure what is the right way to make this configurable right now.
; Maybe your are good at MMF2 and you know what to do?
;
[Puzzle 2]
Puzzle Type=Labyrinth
Initial Prompt=DO EEET!!
Win Prompt=Good job
;I know this maze sucks =(
Map 0=################
Map 1=#..............#
Map 2=#..............#
Map 3=#..............#
Map 4=#..............#
Map 5=#..............#
Map 6=#####..........#
Map 7=#...#..........#
Map 8=#...#..........#
Map 9=#...#..........#
Map 10=#...#..........#
Map 11=#...#...#......#
Map 12=#..#.....#.....#
Map 13=#..#E.#..#.....#
Map 14=#..S##.##......#
Map 15=#..............#
Map 16=################
;
; Generic puzzle settings
;
Hint 0=This is the hardest puzzle in the game.
Set Flag on Win=0
Set Flag on Win to=13
;Set Flag on Win relative=1
;Disable if Flag has value=5
;Disable if Flag has value comparison=-1
;Disable if Flag has value comparison=1
[Puzzle 3]
Puzzle Type=Password Numpad
Initial Prompt=Enter teh pahzwaurd
Win Prompt=Access Granted
Password=123
;
; Generic puzzle settings
;
Hint 0=Easy as ABC.
Hint 1=Baby, you and me.
Set Flag on Win=0
Set Flag on Win to=14
;Set Flag on Win relative=1
;Disable if Flag has value=5
;Disable if Flag has value comparison=-1
;Disable if Flag has value comparison=1
[Puzzle 4]
Puzzle Type=Battery Charger
Initial Prompt=Q-OS 1.1a
Max Charge=500
;
; Generic puzzle settings
;
Hint 0=lookit all dat jooze!
;Set Flag on Win=2
;Set Flag on Win to=1
;Set Flag on Win relative=1
; If you specify a flag, it will always be set
; Even if the user does not charge his batteries.
;
; No disable options right now =(
; Just use the regular Control Flag & On Value in sprites.ini
;
[Puzzle 5]
Puzzle Type=Item Device
Image 0=Puzzles\off.png
Image 1=Puzzles\on.png
Item=Impulse Charge (Homebrew)
Initial Prompt=GET TEH 7 MAJIKAL ITEM THINGAS
Win Prompt=We did it!
;
; Generic puzzle settings
;
Hint 0=" you."
Hint 1="don't."
Hint 2=" need."
Hint 3=" this."
Hint 4=" ."
Hint 5=" ."
Hint 6=" ."
Hint 7=" ."
Hint 8=" ."
Hint 9=" ."
Hint 10=" ."
Hint 11=" .aggravation"
Set Flag on Win=0
Set Flag on Win to=10
;Set Flag on Win relative=1
;Disable if Flag has value=5
;Disable if Flag has value comparison=-1
;Disable if Flag has value comparison=1
[Puzzle 6]
Puzzle Type=Password Catcher
Password=LMNO
;
; Generic puzzle settings
;
Hint 0=Ellim Minno
Set Flag on Win=0
Set Flag on Win to=16
;Set Flag on Win relative=1
;Disable if Flag has value=5
;Disable if Flag has value comparison=-1
;Disable if Flag has value comparison=1
[Puzzle 7]
Puzzle Type=Item Device
Image 0=Puzzles\off.png
Image 1=Puzzles\on.png
Item=Impulse Charge (Homebrew)
Initial Prompt=Adds -1 to the value of the flag.
Win Prompt=Flag decremented.
;
; Generic puzzle settings
;
Hint 0=Adds -1 to the value of the flag.
Set Flag on Win=0
Set Flag on Win to=-1
Set Flag on Win relative=1
Disable if Flag has value=0
Disable if Flag has value comparison=-1
;Disable if Flag has value comparison=1
[Puzzle 8]
Puzzle Type=Teleporter Configuration
First:
To get sound, copy the "Sound Module.ccn" file from nifflas' level into this one
from
Nifflas - 000 - Teleporters\Sound Module.ccn
to right here
Joel - 000 - Test\Sound Module.ccn
I took it out because it was 11mb and way unnecessary.
So this is literally _everything_ that I have made so far with Saira.
Not that I am claming to "own" or have "rights" to any of this stuff.
I guess I drew those "ON" "OFF" images, but...
Basically everything was made by nifflas or someone else, and I just crammed them together and made it customizeable.
Please use & expand upon what I have here.
#MMF2 Developers:
The puzzler.mfa notes are in the file Puzzler.mfa Read Me.txt
#Level Designers:
The puzzler.ini notes are in the file puzzler.ini
Also, to the level designers:
This Lomond planet also has 2 "Trigger Points" that will teleport you to a planet.
One teleports you to Sekkei.
The other teleports you back to the same planet (Lomond... just a few feet away)
Nifflas had only used these kind of "Trigger Points" for cutscenes.
But I just wanted to demonstrait that they also let you travel from planet to planet.
This means that you should not feel "constrained" by the size of the planet.
(you want something larger and more metroidvania-like, do you?)
You can always just make another planet and let the person walk back and forth between planets by "teleporting"
The problem with this is that each planet has only 1 entrance (I think)
So, to make it work, you could have multiple copies of the same area with different entrances.
I hope you can understand what I am saying. It is somethign that only someone that has seen those crazy Knytt Stories techniques could come up with.
I don't have an example right now.
Finnally, even if you get the multple copies and entrances working, you still ahve teh problem with flags not beening shared between the copies (becaus they are really the different planets according to the game)
For this, I may have to expand the capabilities of the puzzler.ini to be able to set flags on different planets.
I beleive that fixing the puzzler is the easy part in all of this. Setting flags on other planets should be no problem.
Just something to think about.
So.
I have made the puzzles from the first planet customizable (except for the teleporter device)
But there is no reason we cannot get all the puzzles from all of the planets into one Puzzler.mfa/Puzzler.ccn with customize options simular to this one.
::Entry:: frames
The "Entry" frame is the first frame that the game loads.
If a user puts "Puzzle=1", then the first "Entry" frame is hit.
If a user puts "Puzzle=2", then the second "Entry" frame is hit.
ect.
All these entry frames do is:
#record their "Puzzle Number" to a global vairable and then
#load up "Swap Frame"
We need to save the "Puzzle Number" because that is how we know where to look in Puzzler.ini to get our settings.
Note:
If it becomes a problem that we are setting the global values but we are not supposed to, we can always just save the number in some external file.
Probably in the save game directory or some other temp directory.
::Swap Frame::
This is always the second frame to load up.
All this guy does is look at the Puzzler.ini to see what puzzle we need to show.
::Puzzler.ini object::
In each of the puzzle frames there is an instance of the INI++ object. This instance is called Puzzler.ini.
Puzzler.ini pulls all the rest of the config from the Puzzler.ini file.
MOST of the loading is done in the Puzzler.ini's "Behaviors" (select the Puzzler.ini object and click the "Events" tab in its properties)
In here the object will open the puzzler.ini file and try to pull a bunch of settings out of it.
It also loads up the hints to the hints global string.
The behaviors also have 2 invokeable "loops" (think, something like a procedure)
ini bhav SetFlag
Looks at the flag information that has been loaded and will change the value of a flag.
This is usually called by a puzzle frame after someone has completed the puzzle.
ini bhav Disable Check
Looks at the flag information that has been loaded and decides if we need to disable this device.
It will run the loop "Disable Device" if the flag conditions match.
This is usually called by a puzzle frame when the puzzle frame first loads up.
This is supposed to check if the user has already completed the puzzle.
The puzzle frame must have an [on "Disable Device"] loop hooked up to handle the decision to disable the device.
You don't have to use these behaviors if you are going to make any more customizable puzzles. I just found that they save some time.
Unfortunately, there is still a lot of cut&paste involved:
If I update the Puzzler.ini behavior one of the puzzle frames, the other Puzzler.ini behaviors are not automatically updated.
But you can copy&paste behaviors between the objects pretty easily.
Still, MMF2 is annoying.