====== Not Yet Done ======
Here are things that are not yet done, new things can be added to the end.
==== Find Unused Conversations ====
Find all truly unusued conversations (not in creatures, creature
blueprints, scripts)
==== Find Unused Items ====
Find all truly unused items (not in creatures, areas, placebles in
areas, creature blueprints, shop blueprints, shops, placeables
blueprints) reporting: name, tab,resref, category
==== Find Duplicate Item Blueprints ====
Find duplicate item blueprints (same item name and tag but
different resref) and then change the shops, creatures and
creature blueprints that have them to one.
==== Find Creatures with No Voice Set and Add Random ====
Find creatures with no voice set in blueprints and an placed
things. Set random voice of right gender.
==== Generic Merchant Conversations ====
Search and replace basic merchant convo with generic.
==== Generic Has Item / Has No Item Scripts ====
Replace generic hasitem / has no item scripts with _gen_*
==== GEneric Give Item Scripts ====
Replace generic giveitem scripts with _gen_give* scripts.
==== Generic Open Shop / No Shopping Dialogs ====
Replace generic "open shop" "no shopping" dialogs with generic dialog.
==== Generic Guild Member / Not Guild Member ====
Change all "check if guild member" conversation conditionals to
generic check if guilmemebr and opposite.
==== Generic Is Deity XXX Scripts ====
Change the isdeityXX and the checks for guildrank level to become
generic with things set by variable.
==== Generic Has Gold Scripts ====
Change all "hasgold" scripts to use the _gen_hasgold_X.
==== Generic Take Gold Scripts ====
Change all "takegold" scripts to use the _gen_takegold_X
==== Generic Is Variable Equal To Scripts ====
Change all simple "is variable equal to" options to the generic ones.
==== Generic Set Variable Scripts ====
Change all simple "setvar" scripts to generic ones.
==== Generic Take Item Scripts ====
Change all simple "takeitem scripts" to generic ones
==== GffPrint Enchantment to Support Changing Numbers to Names ====
Enchance the gffprint to be able to crossreference
spells/feats/skills/classes/races .2da files to give names for those
entries
==== GffPrint Enchantment to Support Pretty Item Properties ====
Enchance the gffprint to be able to crossreference item properties
to .2da files and print item properties out in better format.
==== Autogenerate Jump Targets ====
Autogenerate jumpto targets for each area and jump scrolls and
groupjump scrolls each area would then have a
"JumpTargetarearesref" WP and there would be a scroll with names
"Teleport to AREANAME" with description saying that it will take
the reader to AREANAME when read. and corresponding groupjump
scroll. Would probably make sense that these are only generaed for
teleportable areas, ie. those with the navigator codes in tag.
==== Autogenerate Numbered Waypoints for Each Area ====
Autogenerate numbered waypoints to areas to allow GetNextArea type
of functionality. Basically each area would have a waypoint with
tag "Area####" that one can do Getwaypointbytag() on..
==== Change Conversations to use DMFI ====
Make most conversations use _gen_option and the dmfi_digits.
for options:
basically it would need to scan through conversations for conditionals
that are not dependant on anything else in the same convo (integers
with same number set in the convo) and create a toplevel conditional
that incorporates all those as functions in it.
But would do this only if the convo has more than 1 of each (else there
is no saving)
basically the generated code for a thing with 2 options would look
like:
int option0()
{
(the code from the first option script)
}
int option1()
{
(the code from the second option script)
}
int StartingConditional()
{
SetLocalInt(OBJECT_SELF,"option0",option0());
SetLocalInt(OBJECT_SELF,"option1",option0());
SetLocalString(GetPCSpeaker(),"dmfi_execute","ex_XXXX");
return TRUE;
}
Where the ex_XXXX is the other autogenerated script:
void dothing1()
{
(copied code from the first orginal action taken script)
}
void dothing2()
{
(copied code from the second orginal action taken script)
}
void main()
{
int iDMFI = GetLocalInt(OBJECT_SELF, "dmfi_univ_int");
if (iDMFI == 1) {
dothing1();
} else if (iDMFI == 2) {
dothing2();
}
}
the convo would then be automatically changed to run the prescript on
toplevel choise and then the option scripts would be chanegd to the
genrics and the result scripts to dmfi_digits.
The thing would then generate a list of scripts to delete (besides the
list of changes it made).
==== Change Items In Chest to ResRef of Item ====
Make parse-chest script to look at the item source chests and for
items with resref which exists in palette, remove and store the
resref instead for generate item purposes.
==== Change KeyRead to be Able to Read Talk Table to Item Creature Names ====
Modily the keyread to be able to read the talktable to get
item/creature names.
==== Validator for Missing Resources ====
Make a validator that checks for any missing resources used by
blueprints
* items in creatures
* scripts in creature
* items in placeables
* scripts in placeables
* monsters in encounters
* items in shops
For each listing the object (by name and resref) and the missing
resref and type.
==== Change Merchant Inventories to Resrefs If Possible ====
Make a tool to check the merchant inventories for items with
blueprints and not unlimited. replace that with an onopen script
that checks if created and if not creates them.
==== Change One Liner Conversations to Generic ====
Change all one liner conversations to generic.
Should find all conversations with only the NPC greeting.
Then find all places that convo is used(placed/blueprints) and
change them to a generic oneliner that places the greeting as a
variable on creature and then changes the convo to the generic
one. The generic convo pulls that variable to a custom token and
displays it.
==== Guild Info Books and Signs ====
Guild info books and signs. Would parse the guild info from
forums, and result in:
A placeable in spec 2 category and eventual placed instances would
also be updated. the specifications of that being:
name: "List of members The Chosen"
Description: "Captain Marcus, the Seeker
Senior Masters
Masters
Painia Sevier (Fighter/Rogue/Weapon Master)
Journeymen
Ando (Sorceror/Fighter/DragonDisciple)
Apprentices
Initiates
Olorin (Wizard)
and a book named: "Guild info for The Chosen"
with the desription being:
The Chosen
Primary Classes: Any
Secondary Classes: Any
Alignments: Any
Requirements: Must be dragonblood
Restrictions: Must not be member in more than one Cerea Ruling
Guild
Miscellaneous Info: One of the six organisations leading the
City. Any citizen or resident of Cerea City can join.
Ignoring the generic part in places with that.
If need be those entries can be ofcourse edited with some market
char to indicate a break.. say a "--" or part numbers or some
section marker on what goes on signs and what on book.. or other
indicating info ...
Or they can be edited to be more same.
For extra credit parse the raw HTML format that one can get with
wget:ing the files..
==== Manage Treasure Tables ====
A tool to go through all the item blueprints in the module and
seeing what is missing in the treasure tables and produce a list
of resref, name, itemtype, cost.
For extra credit list items in the treaduretable not in module.
Second thoughts on the treasure thing..
Actually it could do the following:
Read a "excluded resrefs list" for things to not add(text file,
one resref/line) preferably with a * working, so could easilty add
a "gi_*" in there.
Then create one file/base item type in the format of the
inc_treasure.
So we would have: (note actual types and resref are totally
invented)
// create a Warhammer in the inventory of the oTarget based on the roll passed
// and return the object.
// Base type=34
object CreateWarHammer(object oTarget, int iRoll, iNumber = 1)
{
switch(iRoll) {
case 1: //Name="Warhammer",Standard, Palette Category=111,GPValue=34, Tag="Wham_001"
return CreateItemOnObject("wham_001", oTarget, iNumber);
break;
case 2: //Name="Warhammer +1",Standard, Palette Category=111,GPValue=334, Tag="Wham_002"
return CreateItemOnObject("wham_002", oTarget, iNumber);
break;
case 2: //Name="My Smashing Warhammer ",Custom, Palette Category=111,GPValue=2334, Tag="Wham_002"
return CreateItemOnObject("mysmashhamm", oTarget, iNumber);
break;
}
}
But with the created function being only the very bare bones case
statement, will all the intelligence happening outside).
The intelligence would then need probably a: second function in
the file:
// give max item number that is equal to or below the give gp cost,
// return -1 on too low cost.
int GetWarhammerLimit(int iGP)
{
if (iGP < 34) return -1;
if (iGP < 334) return 1;
return 2;
}
==== Combine Scripts ====
Go through all placerables, both placed and palette, and find any that
have unique scripts in any slot.
Any such found scripts should be joined into one script/slot that has
a tagwise detection ow what part to run.
Same for creatures.
==== Add Stacks for Scrolls / Potions / Kits ====
Tool to go through all shops, when it finds a scroll/potion/kit for
sale in unlimited numbers, add stacks of 10 for sale.
==== Make Rural Area To Rural Winter ====
Tool to make a copy of a rural area and make it rural winter and the
opposite.
==== Change Encounters to Custom ====
Make a tool to change encounters away from bioware standard.
Basically the steps would be:\\
Convert the encounter to standard trigger.
Place variables on the trigger indicating following:\\
All the creature resrefs in the encounter\\
For each creature place a max spawns number (1 or 8 currently) and the CR.
For the total encounter:\\
* total min and max numbers
* difficulty level
* respawn time
* max respawns
* on enter and on exit scripts
Then change the spawn targets to be waypoints and make a list in the
encounter with the waypoint names.
Then place a new script in the onenter of the thing. (that will do the
actual spawning, I can write this)
==== Create DMFI Basic Conversations ====
Tool to create a DMFI_univ based basic conversation
given input file\\
top level say\\
first choise, npcresponse1,first subchoise, second subchoise, third subchoise, fourth subchoise, fifth subchoise\\
second choise, npc response2,first subchoise, second subchoise, third subchoise, fourth subchoise, fifth subchoise
would generate a conversation file (action taken script)
NPC: "top level say"
PC
1 first choise(dmfi_univ_1)
--NPC:npcrespose1
--PC:
--1 first subchoise(dmfi_univ_1)
--2 second subchoise(dmfi_univ_2)
--3 third subchoise(dmfi_univ_3)
--4 fourth subchoise(dmfi_univ_4)
--5 fifth subchoise(dmfi_univ_5)
2 second choise(dmfi_univ_2)
--NPC:npcrespose2
--PC:
--1 first subchoise(dmfi_univ_1)
--2 second subchoise(dmfi_univ_2)
--3 third subchoise(dmfi_univ_3)
--4 fourth subchoise(dmfi_univ_4)
--5 fifth subchoise(dmfi_univ_5)
and given\\
top level say\\
first choise\\
second choise\\
third choise\\
fourth choise
would generate a basic one level convo file
NPC: "top level say"
PC
1 first choise(dmfi_univ_1)
2 first choise(dmfi_univ_2)
3 first choise(dmfi_univ_3)
4 first choise(dmfi_univ_4)
==== Remove Descriptions From Static Placeables ====
Make tool to remove the descriptions from placed placeables that are
static.
==== Tool To Join Areas ====
Make tool to join 2 areas.
==== Basic Integrity Checker for GFF Files ====
A basic file integtrity checker for GFF files.