I folks want these new commands, their choice, but I hope KeeeperFX than will get the option to switch to original Dungeon Keeper, including the bugs. Several maps, made by me and others, use the bugs as properties in their maps, and I like several bugs that I noticed while playing. For example, imps doing strange things, as if they are playing hide an seek around some pillar, a vampire that will not do anything any more after he missed 3 pay days, and things in the games that just don't work and look like half way finished. One room place is not filled, a bug that every one sees every time he or she plays the game. It brings the game alive, it is one of the charms of the original game.
This about these new commands:
Code:
ADD_GOLD_TO_PLAYER
Allows to add some off-map gold as a reward to a player.
Example: ADD_GOLD_TO_PLAYER(PLAYER0,5000)
Obsolete. You can just throw in a weak level 1 creature in an action point there, an script that amount of gold in it's pocket.
If there is 3 Bily's level 2 in that room, it will not live long.
Code:
DISPLAY_OBJECTIVE
The 2nd parameter can now have the following values:
- 'PLAYERx' - zoom to player's dungeon heart
- positive integer - zoom to Action Point of given number
- negative integer - zoom to Hero Gate of given number
- 'ALL_PLAYERS' - zoom button will be inactive
Obsolete. You can put level 1 creatures from Player0 in that place, and it will show that area for the rest of the game.
This is done in several maps that way. A fly level 1 will not survive a trap, an imp will quickly be killed by any opponent there, if it can't flee, but the area becomes visible.
Code:
LEVEL_VERSION
Lets the game know if the level was designed specially for
KeeperFX. To use new script commands, you must start the
script with LEVEL_VERSION(1). Without it, the new commands
will not work properly.
We are talking two games now. If KeeperFX is another game, it should also get a new name. It will get lots of problems with copyright laws, because of the sprites, textures and sounds. KeeperFX should be an enhancement for the existing game of Dungeon Keeper, not a new game.
Code:
PLAY_MESSAGE
Allows to play any SOUND or SPEECH from the game.
Example: PLAY_MESSAGE(PLAYER0,SPEECH,107)
Again we are discussing a new game, where folks are supposed to make new sounds for a game.
If folks want to do that, have fun but don't name it Dungeon Keeper.
Code:
QUICK_INFORMATION
These works same as in Deeper Dungeons, but allows message
length up to 1024 characters. There are 50 quick message
slots.
Longer messages? If map builders want that, i would suggest they go write a book, and find a publisher.
Or start as a blogger. There are many hosting initiatives where you can start your own blog.
There are already existing information and objective scripts in the original game, writing books there will even more divert from the game.
Code:
QUICK_OBJECTIVE
Same as in DD, but allows longer messages and more control
over zoom button (like in DISPLAY_OBJECTIVE).
With zoom? Loosing the ability to just delete any text message, when irritated by them?
Code:
QUICK_INFORMATION_WITH_POS
The stories about Keepers in the original game are not in any way describing reality. This Keeper called "whatever", it's just a creature, we want to make traps, doors, rooms, train creatures, not be bothered by text messages even more than before. "build a lair" What? Must I build a lair? How stupid does this game believe the user is?!
Code:
QUICK_OBJECTIVE_WITH_POS
Accepts additional XY coordinates of the zoom place.
Obsolete, because who wants to script for another game than Dungeon Keeper.
Code:
SET_CREATURE_TENDENCIES
Allows to set tendencies: IMPRISON and FLEE, for a player's
creatures. Example: SET_CREATURE_TENDENCIES(PLAYER2,FLEE,1)
Note that a player must have prison when IMPRISON command
is trigered; otherwise it won't make any change.
Obsolete. If AI can imprison, this was not left out for noting by the original designers. Flee can be created by increasing SET_CREATURE_FEAR([creature],[a]) and using the fear of the original creatures. Orcs for example, I see them flee a lot of times in the game. They will flee, if there is to many troops approaching. A creature that has set max fear in the original code. it will flee for every fight. And must be hunted to take out. Imprisoning gives the problem of getting to many creatures on the map, because portals will keep on spawning new folk. Another problem, if an AI starts to imprison a creature by the Player0, will that creature than see all the Dungeon of the AI? Note, AI is not that smart, if their dungeon design is shown, it will have a very hard time defending against spawning Vampires.
Code:
REVEAL_MAP_RECT
Reveals rectangular map area for given player. Requires
coordinates of area center point, and rectangle dimensions.
Numbers are scaled in subtiles (range is 1..254).
Example: REVEAL_MAP_RECT(PLAYER0,132,96,13,11)
Same as having an imp there.
Code:
REVEAL_MAP_LOCATION
Reveals square area of subtiles around given location.
Location meaning is identical to the one in DISPLAY_OBJECTIVE.
For example, to reveal Hero Gate no.1:
REVEAL_MAP_LOCATION(PLAYER0,-1,11)
What for? An imp placed before a boulder will do the trick with more ease, than scrip testing such an obsolete command.
Code:
RESEARCH
Changes amount of research points needed to discover an item
in library. It doesn't affect research order, only amount
of points. If the item never was in research list, it's added
at end. Example: RESEARCH(PLAYER1,MAGIC,POWER_CHICKEN,10000)
This looks like an effort to repair a "bug". The bug there is in fact not in the game, but in the script reference guide from the Bullfrog Dungeon Keeper editor. There are many ways to influence these timings, one off them being, finding a spell some where on the map, opposed to scripting a time. In fact, all research times are defined in the Bullfrog manual, and can be used as triggers. The bug is this one:
Code:
RESEARCH([player],[research type],[room or spell],[a])
This command allows you to adjust the research value for individual rooms or spells and even for a specific player.
That doesn't work. But who needs it, when there is some many ways to influence research? Taking a library, scripting AVAILABLE,1,1 when ever the map maker decides, and so forth. Obsolete.
Code:
RESEARCH_ORDER
When this command is first called, the research list for
specified players is cleared. Using it you may create
a research list from beginning. Note that if you won't place
an item on the list, it will not be possible to research it.
So if you're using this command, you must add all items
available on the level to the research list. Example:
RESEARCH_ORDER(ALL_PLAYERS,ROOM,SCAVENGER,50000)
[...] - more RESEARCH_ORDER commands should follow.
I published a map today on the forum, where the research order of the rooms was messed up, using the original commands. Only difference there, is that the question mark is not visible. It was off course not my purpose to mess up the order, but to reward the player for some things, making new rooms available for research. Maybe posting that script here will proof also that command obsolete.
Code:
IF_AVAILABLE(PLAYER0,GRAVEYARD==1)
ROOM_AVAILABLE(PLAYER0,BRIDGE,1,0)
ROOM_AVAILABLE(PLAYER0,TEMPLE,1,0)
ENDIF
IF_AVAILABLE(PLAYER0,BRIDGE==1)
ROOM_AVAILABLE(PLAYER0,GUARD_POST,1,0)
ROOM_AVAILABLE(PLAYER0,BARRACKS,1,0)
ENDIF
IF_AVAILABLE(PLAYER0,BARRACKS==1)
ROOM_AVAILABLE(ALL_PLAYERS,WORKSHOP,1,0)
ROOM_AVAILABLE(PLAYER0,SCAVENGER,1,0)
ENDIF
IF_AVAILABLE(PLAYER0,SCAVENGER==1)
ROOM_AVAILABLE(PLAYER0,PRISON,1,0)
ENDIF
IF(PLAYER0,GARDEN>=20)
ROOM_AVAILABLE(PLAYER0,GARDEN,1,0)
ENDIF
Code:
RANDOM
It's not a command, but may be used instead of most parameters.
If used instead of a number, then should look like:
RANDOM(min,max)
but may also be used instead of any other value. Examples:
MAX_CREATURES(PLAYER0,RANDOM(12,19))
ADD_CREATURE_TO_POOL(RANDOM,20)
Note that when used instead of player name, RANDOM may return
ALL_PLAYERS. Also, the command shouldn't be used in multiplayer
maps, as it will lead to synchronization problems.
Value represented by RANDOM is selected at start of a map,
and never changes during the gameplay.
From what I understood, this command was already in the original game.
If not so, please take that bug from http://keeper.lubiki.pl/dk1_docs/dk_scripting_ref.htm and rename it to /KFX_scripting_ref.htm
ADD_CREATURE_TO_POOL((RANDOM,1,2),20), if that was not in the original.