Table of Contents

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.