Notes entry in Group Files
Notes entry in Group Files
IT v1.0
I have taken Jay's DMGenie output script and added the ability to output the description as an XML field. I've then added a "description" custom field to my game file. That works great and the description comes out in the custom data. However Custom data is just one long line which isn't all that friendly to read.
But the Notes field looks like it might be useful in this case. So is there a way to get data into the Notes field for a combatant when in the group file *.rpgrp?
Thanks
Blakey
I have taken Jay's DMGenie output script and added the ability to output the description as an XML field. I've then added a "description" custom field to my game file. That works great and the description comes out in the custom data. However Custom data is just one long line which isn't all that friendly to read.
But the Notes field looks like it might be useful in this case. So is there a way to get data into the Notes field for a combatant when in the group file *.rpgrp?
Thanks
Blakey
The guy in the green hat.
Gratz Jay!!!
No, sorry that doesn't work. Or at least not for me.
I'm using IT v1.0.b22.
Here is the XML copy and pasted (apologies for the long post). You can see this entry has some notes but nothing shows up in the notes section on the Index Card View...
Any other ideas?
Cheers
Blakey
No, sorry that doesn't work. Or at least not for me.
I'm using IT v1.0.b22.
Here is the XML copy and pasted (apologies for the long post). You can see this entry has some notes but nothing shows up in the notes section on the Index Card View...
Any other ideas?
Cheers
Blakey
Code: Select all
<group>
<game>Rodinia</game>
<groups>
<group>
<name>DMGenie Group</name>
<combatants>
<combatant>
<name>Trap, Tilting Floor</name>
<count>1</count>
<init>0</init>
<player></player>
<type>NPC</type>
<token>
<alignment>N</alignment>
<family>Tilting floor trap</family> <TODO>
<size>M</size>
<ac>25</ac>
<touchAc>25</touchAc>
<flatFootedAc>25</flatFootedAc>
<speed>0</speed>
<baseAttack>0</baseAttack>
<str>10</str>
<dex>10</dex>
<con>10</con>
<int>10</int>
<wis>10</wis>
<cha>10</cha>
<grapple>FIXME</grapple>
<fortSave>0</fortSave>
<reflexSave>0</reflexSave>
<willSave>0</willSave>
<strBonus>0</strBonus>
<dexBonus>0</dexBonus>
<conBonus>0</conBonus>
<intBonus>0</intBonus>
<wisBonus>0</wisBonus>
<chaBonus>0</chaBonus>
<gender></gender>
<levels>1d8</levels>
<height>0</height>
<weight>0</weight>
<age>0</age>
<damageReduction></damageReduction>
<hp>1</hp>
<fortBase>0</fortBase>
<fortMagic>0</fortMagic>
<reflexBase>0</reflexBase>
<reflexMagic>0</reflexMagic>
<willBase>0</willBase>
<willMagic>0</willMagic>
<sizeBonus>M</sizeBonus>
<armorCheckPenalty>0</armorCheckPenalty>
<notes>Trap, Tilting Floor
Turning the trigger in the wrong direction causes the eastern end of the 10-foot landing to tilt upward. Anyone standing on the floor must succeed at a reflex save (DC 15) or tumble down the 20-foot staircase, landing prone. A successful tumble check (DC 12) halves the damage and allows the PC to land on his or her feet.
The trap and trigger reset after the trap has been triggered.
Challenge Rating: 1
mechanical
location trigger
automatic reset
Hidden/puzzle switch bypass (Search DC 25)
DC 15 Reflex save avoids
DC 12 Tumble Check for half damage
20 ft. staircase fall (2d6, fall)
multiple targets (first target in each of two adjacent 5-ft. squares)
Search DC 25
Disable Device DC 20
Market Price: 1,300 gp.
</notes>
<skill>-99</skill>
<skill>0</skill>
<skill>-99</skill>
<skill>-99</skill>
<skill>0</skill>
<skill>-99</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>-99</skill>
<skill>0</skill>
<skill>-99</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>-99</skill>
<skill>0</skill>
<skill>-99</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>-99</skill>
<skill>0</skill>
<skill>-99</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>-99</skill>
<skill>0</skill>
<skill>-99</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>-99</skill>
<skill>0</skill>
<skill>-99</skill>
<skill>-99</skill>
<skill>0</skill>
<skill>-99</skill>
<skill>-99</skill>
<skill>0</skill>
<skill>-99</skill>
<skill>-99</skill>
<skill>0</skill>
<skill>-99</skill>
<skill>-99</skill>
<skill>0</skill>
<skill>-99</skill>
<skill>-99</skill>
<skill>0</skill>
<skill>-99</skill>
<skill>-99</skill>
<skill>0</skill>
<skill>-99</skill>
<skill>-99</skill>
<skill>0</skill>
<skill>-99</skill>
<skill>-99</skill>
<skill>0</skill>
<skill>-99</skill>
<skill>-99</skill>
<skill>0</skill>
<skill>-99</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>-99</skill>
<skill>0</skill>
<skill>-99</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>-99</skill>
<skill>0</skill>
<skill>-99</skill>
<skill>-99</skill>
<skill>0</skill>
<skill>-99</skill>
<skill>-99</skill>
<skill>0</skill>
<skill>-99</skill>
<skill>-99</skill>
<skill>0</skill>
<skill>-99</skill>
<skill>-99</skill>
<skill>0</skill>
<skill>-99</skill>
<skill>-99</skill>
<skill>0</skill>
<skill>-99</skill>
<skill>-99</skill>
<skill>0</skill>
<skill>-99</skill>
<skill>-99</skill>
<skill>0</skill>
<skill>-99</skill>
<skill>-99</skill>
<skill>0</skill>
<skill>-99</skill>
<skill>-99</skill>
<skill>0</skill>
<skill>-99</skill>
<skill>-99</skill>
<skill>0</skill>
<skill>-99</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>-99</skill>
<skill>0</skill>
<skill>-99</skill>
<skill>-99</skill>
<skill>0</skill>
<skill>-99</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>-99</skill>
<skill>0</skill>
<skill>-99</skill>
<skill>-99</skill>
<skill>0</skill>
<skill>-99</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>-99</skill>
<skill>0</skill>
<skill>-99</skill>
<skill>-99</skill>
<skill>0</skill>
<skill>-99</skill>
<skill>-99</skill>
<skill>0</skill>
<skill>-99</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>-99</skill>
<skill>0</skill>
<skill>-99</skill>
<skill>-99</skill>
<skill>0</skill>
<skill>-99</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>0</skill>
<skill>-99</skill>
<skill>0</skill>
<skill>-99</skill>
</combatant>
</combatants>
</group>
</groups>
</group>
The guy in the green hat.
I fixed some problems w/ the XML that you posted to get it to work on 1.0b23 which is the production build:
Note that I removed all of the repeated <skill> elements to make thins shorter. Only the last one would get saved into GT.
Once again I apologize for the slow response.
- Renamed <game> to <game-name>.
- Renamed <init> to <init-modifier>.
- Removed <TODO> string.
- Added <token> end tag.
- Moved <notes> element and contents to be right after the <token> element.
Code: Select all
<group-set>
<game-name>Init Tool Default D&D</game-name>
<groups>
<group>
<name>DMGenie Group</name>
<combatants>
<combatant>
<name>Trap, Tilting Floor</name>
<count>1</count>
<init-modifier>0</init-modifier>
<player></player>
<type>NPC</type>
<token/>
<notes>Trap, Tilting Floor
Turning the trigger in the wrong direction causes the eastern end of the 10-foot landing to tilt upward. Anyone standing on the floor must succeed at a reflex save (DC 15) or tumble down the 20-foot staircase, landing prone. A successful tumble check (DC 12) halves the damage and allows the PC to land on his or her feet.
The trap and trigger reset after the trap has been triggered.
Challenge Rating: 1
mechanical
location trigger
automatic reset
Hidden/puzzle switch bypass (Search DC 25)
DC 15 Reflex save avoids
DC 12 Tumble Check for half damage
20 ft. staircase fall (2d6, fall)
multiple targets (first target in each of two adjacent 5-ft. squares)
Search DC 25
Disable Device DC 20
Market Price: 1,300 gp.
</notes>
<alignment>N</alignment>
<family>Tilting floor trap</family>
<size>M</size>
<ac>25</ac>
<touchAc>25</touchAc>
<flatFootedAc>25</flatFootedAc>
<speed>0</speed>
<baseAttack>0</baseAttack>
<str>10</str>
<dex>10</dex>
<con>10</con>
<int>10</int>
<wis>10</wis>
<cha>10</cha>
<grapple>FIXME</grapple>
<fortSave>0</fortSave>
<reflexSave>0</reflexSave>
<willSave>0</willSave>
<strBonus>0</strBonus>
<dexBonus>0</dexBonus>
<conBonus>0</conBonus>
<intBonus>0</intBonus>
<wisBonus>0</wisBonus>
<chaBonus>0</chaBonus>
<gender></gender>
<levels>1d8</levels>
<height>0</height>
<weight>0</weight>
<age>0</age>
<damageReduction></damageReduction>
<hp>1</hp>
<fortBase>0</fortBase>
<fortMagic>0</fortMagic>
<reflexBase>0</reflexBase>
<reflexMagic>0</reflexMagic>
<willBase>0</willBase>
<willMagic>0</willMagic>
<sizeBonus>M</sizeBonus>
<armorCheckPenalty>0</armorCheckPenalty>
</combatant>
</combatants>
</group>
</groups>
</group-set>
Once again I apologize for the slow response.
Okay, couple of questions then:jay wrote:I fixed some problems w/ the XML that you posted to get it to work on 1.0b23 which is the production build:
- Renamed <game> to <game>.
- Renamed <init> to <init>.
- Removed <TODO> string.
- Added <token> end tag.
- Moved <notes> element and contents to be right after the <token> element.
1. Is the order of the XML important? If so that surprises me as I didn't think it would matter.
2. The code I posted was what was generated by your DMGenie output code button, with <notes> added in by hand. Are you suggesting that this doesn't work with the latest production build?
No worries, thanks for the help squire.Once again I apologize for the slow response.
Blakey
The guy in the green hat.
Order is important for the values that IT uses directly. The custom fields come after these required values, but other than that their order isn't important.Blakey wrote:1. Is the order of the XML important? If so that surprises me as I didn't think it would matter.
That is possible. I don't remember when I changed things last and I've not gotten any bug reports about it. We'll have to fix itBlakey wrote:2. The code I posted was what was generated by your DMGenie output code button, with <notes> added in by hand. Are you suggesting that this doesn't work with the latest production build?
Re: Notes entry in Group Files
Can I see the script your using. The one I posted in the gallery doesn't look like it works. I fixed that, but I want to make sure we're looking at the same code.Blakey wrote:I have taken Jay's DMGenie output script and added the ability to output the description as an XML field.
Hi Jay,
Thanks for your help on this.
As far as I recall all I did here was to change the default <game> to Rodinia - my own game name. Then I added <notes> before the skills section. Clearly I need to at least change the location of <notes> to be after the <token> node.
I copied this from the thread on this board about importing from DMGenie.
This is the code I'm using in its entirety:
Cheers
Blakey
Thanks for your help on this.
As far as I recall all I did here was to change the default <game> to Rodinia - my own game name. Then I added <notes> before the skills section. Clearly I need to at least change the location of <notes> to be after the <token> node.
I copied this from the thread on this board about importing from DMGenie.
This is the code I'm using in its entirety:
Code: Select all
Public Sub ActionButton19()
func.AddToCombatLog "<group>"
func.AddToCombatLog " <game>Rodinia</game>"
func.AddToCombatLog " <groups>"
func.AddToCombatLog " <group>"
func.AddToCombatLog " <name>DMGenie Group</name>"
func.AddToCombatLog " <combatants>"
func.GetNextCreatureInit 0
Set MyCreature = func.GetNextCreature
While (Not MyCreature Is Nothing)
func.AddToCombatLog " <combatant>"
func.AddToCombatLog " <name>" & MyCreature.Name & "</name>"
func.AddToCombatLog " <count>1</count>"
func.AddToCombatLog " <init>" & MyCreature.InitBonus & "</init>"
func.AddToCombatLog " <player>" & MyCreature.Desc_PlayerName & "</player>"
func.AddToCombatLog " <type>NPC</type>"
func.AddToCombatLog " <token>"
func.AddToCombatLog " <alignment>" & MyCreature.Alignment & "</alignment>"
func.AddToCombatLog " <family>" & MyCreature.RaceName & "</family> <TODO>"
func.AddToCombatLog " <size>" & MyCreature.SizeStr & "</size>"
func.AddToCombatLog " <ac>" & MyCreature.AC & "</ac>"
func.AddToCombatLog " <touchAc>" & MyCreature.ACTouch & "</touchAc>"
func.AddToCombatLog " <flatFootedAc>" & MyCreature.ACFF & "</flatFootedAc>"
func.AddToCombatLog " <speed>" & MyCreature.SpeedStr & "</speed>"
func.AddToCombatLog " <baseAttack>" & MyCreature.CalculateBABFromClasses() & "</baseAttack>"
func.AddToCombatLog " <str>" & MyCreature.Str & "</str>"
func.AddToCombatLog " <dex>" & MyCreature.Dex & "</dex>"
func.AddToCombatLog " <con>" & MyCreature.Con & "</con>"
func.AddToCombatLog " <int>" & MyCreature.Intel & "</int>"
func.AddToCombatLog " <wis>" & MyCreature.Wis & "</wis>"
func.AddToCombatLog " <cha>" & MyCreature.Cha & "</cha>"
func.AddToCombatLog " <grapple>FIXME</grapple>"
func.AddToCombatLog " <fortSave>" & MyCreature.FortSave & "</fortSave>"
func.AddToCombatLog " <reflexSave>" & MyCreature.RefSave & "</reflexSave>"
func.AddToCombatLog " <willSave>" & MyCreature.WillSave & "</willSave>"
func.AddToCombatLog " <strBonus>" & MyCreature.StrMod & "</strBonus>"
func.AddToCombatLog " <dexBonus>" & MyCreature.DexMod & "</dexBonus>"
func.AddToCombatLog " <conBonus>" & MyCreature.ConMod & "</conBonus>"
func.AddToCombatLog " <intBonus>" & MyCreature.IntMod & "</intBonus>"
func.AddToCombatLog " <wisBonus>" & MyCreature.WisMod & "</wisBonus>"
func.AddToCombatLog " <chaBonus>" & MyCreature.ChaMod & "</chaBonus>"
func.AddToCombatLog " <gender>" & MyCreature.Gender & "</gender>"
func.AddToCombatLog " <levels>" & MyCreature.LevelStr & "</levels>"
func.AddToCombatLog " <height>" & MyCreature.Height & "</height>"
func.AddToCombatLog " <weight>" & MyCreature.Weight & "</weight>"
func.AddToCombatLog " <age>" & MyCreature.Age & "</age>"
func.AddToCombatLog " <damageReduction>" & MyCreature.DamageReductionStr & "</damageReduction>"
func.AddToCombatLog " <hp>" & MyCreature.HPBase & "</hp>"
func.AddToCombatLog " <fortBase>" & MyCreature.FortBase & "</fortBase>"
func.AddToCombatLog " <fortMagic>" & MyCreature.FortBonus & "</fortMagic>"
func.AddToCombatLog " <reflexBase>" & MyCreature.RefBase & "</reflexBase>"
func.AddToCombatLog " <reflexMagic>" & MyCreature.RefBonus & "</reflexMagic>"
func.AddToCombatLog " <willBase>" & MyCreature.WillBase & "</willBase>"
func.AddToCombatLog " <willMagic>" & MyCreature.WillBonus & "</willMagic>"
func.AddToCombatLog " <sizeBonus>" & MyCreature.SizeStr & "</sizeBonus>"
func.AddToCombatLog " <armorCheckPenalty>" & MyCreature.FinalCheck & "</armorCheckPenalty>"
func.AddToCombatLog " <notes>" & MyCreature.Desc & "</notes>"
Dim MySkill, i
for i = 1 to func.GetNumberOf_Skills
Set MySkill = func.GetSkillObj(CInt(i))
if func.ValidSk(MySkill) then
tag = lcase(MySkill.NameUcase)
tag = replace(tag, "(", "")
tag = replace(tag, ")", "")
words = split(tag)
if ubound(words) >= 0 then
tag = "skill." & words(0)
if ubound(words) > 0 then
for j = 1 to ubound(words)
tag = tag & func.Capital(words(j))
next
end if
func.AddToCombatLog " <" & tag & ".total>" & MyCreature.SkillTotal(i) & "</" & tag & ".total>"
func.AddToCombatLog " <" & tag & ".rank>" & MyCreature.SkillRanks(i) & "</" & tag & ".rank>"
func.AddToCombatLog " <" & tag & ".misc>" & MyCreature.SkillTotal(i) & "</" & tag & ".misc>"
else
func.AddToCombatLog " <skipping>"
end if
end If
next
func.AddToCombatLog " </combatant>"
Set MyCreature = func.GetNextCreature
Wend
func.AddToCombatLog " </combatants>"
func.AddToCombatLog " </group>"
func.AddToCombatLog " </groups>"
func.AddToCombatLog "</group>"
End Sub
Blakey
The guy in the green hat.
Here it is, updated with the notes field. I'm thinking maybe that you had an earlier copy of the script, becuase the one posted here seems to work. Here is that script with your notes added in the right spot:I'll update that script to add the notes as well.
EDIT: Fixed problem where the forum was deleting some of the code.
Code: Select all
Public Sub ActionButton19()
func.AddToCombatLog "<group-set>"
func.AddToCombatLog " <game-name>Rodinia</game-name>"
func.AddToCombatLog " <groups>"
func.AddToCombatLog " <group>"
func.AddToCombatLog " <name>DMGenie Group</name>"
func.AddToCombatLog " <combatants>"
func.GetNextCreatureInit 0
Set MyCreature = func.GetNextCreature
While (Not MyCreature Is Nothing)
func.AddToCombatLog " <combatant>"
func.AddToCombatLog " <name>" & MyCreature.Name & "</name>"
func.AddToCombatLog " <count>1</count>"
func.AddToCombatLog " <init-modifier>" & MyCreature.InitBonus & "</init-modifier>"
func.AddToCombatLog " <player>" & MyCreature.Desc_PlayerName & "</player>"
func.AddToCombatLog " <type>PC</type>"
func.AddToCombatLog " <token/>"
func.AddToCombatLog " <notes>" & MyCreature.Desc & "</notes>"
func.AddToCombatLog " <alignment>" & MyCreature.Alignment & "</alignment>"
func.AddToCombatLog " <family>" & MyCreature.RaceName & "</family> <!-- TODO: Change family to race -->"
func.AddToCombatLog " <size>" & MyCreature.SizeStr & "</size>"
func.AddToCombatLog " <ac>" & MyCreature.AC & "</ac>"
func.AddToCombatLog " <touchAc>" & MyCreature.ACTouch & "</touchAc>"
func.AddToCombatLog " <flatFootedAc>" & MyCreature.ACFF & "</flatFootedAc>"
func.AddToCombatLog " <speed>" & MyCreature.SpeedStr & "</speed>"
func.AddToCombatLog " <baseAttack>" & MyCreature.CalculateBABFromClasses() & "</baseAttack>"
func.AddToCombatLog " <str>" & MyCreature.Str & "</str>"
func.AddToCombatLog " <dex>" & MyCreature.Dex & "</dex>"
func.AddToCombatLog " <con>" & MyCreature.Con & "</con>"
func.AddToCombatLog " <int>" & MyCreature.Intel & "</int>"
func.AddToCombatLog " <wis>" & MyCreature.Wis & "</wis>"
func.AddToCombatLog " <cha>" & MyCreature.Cha & "</cha>"
func.AddToCombatLog " <grapple>FIXME</grapple>"
func.AddToCombatLog " <fortSave>" & MyCreature.FortSave & "</fortSave>"
func.AddToCombatLog " <reflexSave>" & MyCreature.RefSave & "</reflexSave>"
func.AddToCombatLog " <willSave>" & MyCreature.WillSave & "</willSave>"
func.AddToCombatLog " <strBonus>" & MyCreature.StrMod & "</strBonus>"
func.AddToCombatLog " <dexBonus>" & MyCreature.DexMod & "</dexBonus>"
func.AddToCombatLog " <conBonus>" & MyCreature.ConMod & "</conBonus>"
func.AddToCombatLog " <intBonus>" & MyCreature.IntMod & "</intBonus>"
func.AddToCombatLog " <wisBonus>" & MyCreature.WisMod & "</wisBonus>"
func.AddToCombatLog " <chaBonus>" & MyCreature.ChaMod & "</chaBonus>"
func.AddToCombatLog " <gender>" & MyCreature.Gender & "</gender>"
func.AddToCombatLog " <levels>" & MyCreature.LevelStr & "</levels>"
func.AddToCombatLog " <height>" & MyCreature.Height & "</height>"
func.AddToCombatLog " <weight>" & MyCreature.Weight & "</weight>"
func.AddToCombatLog " <age>" & MyCreature.Age & "</age>"
func.AddToCombatLog " <damageReduction>" & MyCreature.DamageReductionStr & "</damageReduction>"
func.AddToCombatLog " <hp>" & MyCreature.HPBase & "</hp>"
func.AddToCombatLog " <fortBase>" & MyCreature.FortBase & "</fortBase>"
func.AddToCombatLog " <fortMagic>" & MyCreature.FortBonus & "</fortMagic>"
func.AddToCombatLog " <reflexBase>" & MyCreature.RefBase & "</reflexBase>"
func.AddToCombatLog " <reflexMagic>" & MyCreature.RefBonus & "</reflexMagic>"
func.AddToCombatLog " <willBase>" & MyCreature.WillBase & "</willBase>"
func.AddToCombatLog " <willMagic>" & MyCreature.WillBonus & "</willMagic>"
func.AddToCombatLog " <sizeBonus>" & MyCreature.SizeStr & "</sizeBonus>"
func.AddToCombatLog " <armorCheckPenalty>" & MyCreature.FinalCheck & "</armorCheckPenalty>"
Dim MySkill, i
for i = 1 to func.GetNumberOf_Skills
Set MySkill = func.GetSkillObj(CInt(i))
if func.ValidSk(MySkill) then
tag = lcase(MySkill.NameUcase)
tag = replace(tag, "(", "")
tag = replace(tag, ")", "")
words = split(tag)
if ubound(words) >= 0 then
tag = "skill." & words(0)
if ubound(words) > 0 then
for j = 1 to ubound(words)
tag = tag & func.Capital(words(j))
next
end if
func.AddToCombatLog " <" & tag & ".total>" & MyCreature.SkillTotal(i) & "</" & tag & ".total>"
func.AddToCombatLog " <" & tag & ".rank>" & MyCreature.SkillRanks(i) & "</" & tag & ".rank>"
func.AddToCombatLog " <" & tag & ".misc>" & MyCreature.SkillTotal(i) & "</" & tag & ".misc>"
else
func.AddToCombatLog " <!-- skipping a skill without a name -->"
end if
end If
next
func.AddToCombatLog " </combatant>"
Set MyCreature = func.GetNextCreature
Wend
func.AddToCombatLog " </combatants>"
func.AddToCombatLog " </group>"
func.AddToCombatLog " </groups>"
func.AddToCombatLog "</group-set>"
End Sub
EDIT: Fixed problem where the forum was deleting some of the code.
Last edited by jay on Thu May 15, 2008 3:14 pm, edited 1 time in total.
The only thing that I can think of is that DMGenie's combat log cuts off if there is too much text in it. I'm guessing it is a windows limit. It only seemed to happen to me whan I tried to generate text for large DMGenie groups. But that is the only thing that I had problems with. Could you email me the group file you create? I'll take a look and see if I can figure out what the problem is. I'll probably be online for most of the night as well, so you can AIM me if you want and we'll fix the whole thing before your game tomorrow.Blakey wrote:Now when I try this new script, output the resulting text to DMGenie's combat log and then save it as an .rpgrp file, when I try to load it into IT )Open Group File) it says:
The file 'c:\Docu...' does not contain valid Group data.
I've updated IT to v1.0b23
Any ideas?
Hi Jay,
I appreciate your help - living on opposite sides of the Atlantic makes instant fixes impossible of course.
I did some debugging myself and have made significant progress.
First off here is the DMGenie script I am now using. Note these changes I had to make to get it working:
This now generates sensible <XML> which Group Tool is able to read happily. When I load the group up into Group Tool and click on any given creature I see its NOTES section in full - perfect.
However, when I drag that group into Init Tool the Notes section does not appear on the Index Card view in Init Tool - which is where I really wanted it to appear...
Cheers
Blakey
P.S. This fix is enough for me to be able to convert the DMGenie groups I need for this afternoon's session to InitTool, even if they don't have Notes associated with them.
I appreciate your help - living on opposite sides of the Atlantic makes instant fixes impossible of course.
I did some debugging myself and have made significant progress.
First off here is the DMGenie script I am now using. Note these changes I had to make to get it working:
- Ensure the first tag is <group> not <group>
- Ensure the <game> tag is <game>
- Ensure the <init> tag is <init>
- Change <TODO> back to the originial <TODO> comment
- Change <token> to <token>
Code: Select all
Public Sub ActionButton19()
func.AddToCombatLog "<group>"
func.AddToCombatLog " <game>Rodinia</game>"
func.AddToCombatLog " <groups>"
func.AddToCombatLog " <group>"
func.AddToCombatLog " <name>DMGenie Group</name>"
func.AddToCombatLog " <combatants>"
func.GetNextCreatureInit 0
Set MyCreature = func.GetNextCreature
While (Not MyCreature Is Nothing)
func.AddToCombatLog " <combatant>"
func.AddToCombatLog " <name>" & MyCreature.Name & "</name>"
func.AddToCombatLog " <count>1</count>"
func.AddToCombatLog " <init>" & MyCreature.InitBonus & "</init>"
func.AddToCombatLog " <player>" & MyCreature.Desc_PlayerName & "</player>"
func.AddToCombatLog " <type>NPC</type>"
func.AddToCombatLog " <token>"
func.AddToCombatLog " <notes>" & MyCreature.Desc & "</notes>"
func.AddToCombatLog " <alignment>" & MyCreature.Alignment & "</alignment>"
func.AddToCombatLog " <family>" & MyCreature.RaceName & "</family> <TODO>"
func.AddToCombatLog " <size>" & MyCreature.SizeStr & "</size>"
func.AddToCombatLog " <ac>" & MyCreature.AC & "</ac>"
func.AddToCombatLog " <touchAc>" & MyCreature.ACTouch & "</touchAc>"
func.AddToCombatLog " <flatFootedAc>" & MyCreature.ACFF & "</flatFootedAc>"
func.AddToCombatLog " <speed>" & MyCreature.SpeedStr & "</speed>"
func.AddToCombatLog " <baseAttack>" & MyCreature.CalculateBABFromClasses() & "</baseAttack>"
func.AddToCombatLog " <str>" & MyCreature.Str & "</str>"
func.AddToCombatLog " <dex>" & MyCreature.Dex & "</dex>"
func.AddToCombatLog " <con>" & MyCreature.Con & "</con>"
func.AddToCombatLog " <int>" & MyCreature.Intel & "</int>"
func.AddToCombatLog " <wis>" & MyCreature.Wis & "</wis>"
func.AddToCombatLog " <cha>" & MyCreature.Cha & "</cha>"
func.AddToCombatLog " <grapple>FIXME</grapple>"
func.AddToCombatLog " <fortSave>" & MyCreature.FortSave & "</fortSave>"
func.AddToCombatLog " <reflexSave>" & MyCreature.RefSave & "</reflexSave>"
func.AddToCombatLog " <willSave>" & MyCreature.WillSave & "</willSave>"
func.AddToCombatLog " <strBonus>" & MyCreature.StrMod & "</strBonus>"
func.AddToCombatLog " <dexBonus>" & MyCreature.DexMod & "</dexBonus>"
func.AddToCombatLog " <conBonus>" & MyCreature.ConMod & "</conBonus>"
func.AddToCombatLog " <intBonus>" & MyCreature.IntMod & "</intBonus>"
func.AddToCombatLog " <wisBonus>" & MyCreature.WisMod & "</wisBonus>"
func.AddToCombatLog " <chaBonus>" & MyCreature.ChaMod & "</chaBonus>"
func.AddToCombatLog " <gender>" & MyCreature.Gender & "</gender>"
func.AddToCombatLog " <levels>" & MyCreature.LevelStr & "</levels>"
func.AddToCombatLog " <height>" & MyCreature.Height & "</height>"
func.AddToCombatLog " <weight>" & MyCreature.Weight & "</weight>"
func.AddToCombatLog " <age>" & MyCreature.Age & "</age>"
func.AddToCombatLog " <damageReduction>" & MyCreature.DamageReductionStr & "</damageReduction>"
func.AddToCombatLog " <hp>" & MyCreature.HPBase & "</hp>"
func.AddToCombatLog " <fortBase>" & MyCreature.FortBase & "</fortBase>"
func.AddToCombatLog " <fortMagic>" & MyCreature.FortBonus & "</fortMagic>"
func.AddToCombatLog " <reflexBase>" & MyCreature.RefBase & "</reflexBase>"
func.AddToCombatLog " <reflexMagic>" & MyCreature.RefBonus & "</reflexMagic>"
func.AddToCombatLog " <willBase>" & MyCreature.WillBase & "</willBase>"
func.AddToCombatLog " <willMagic>" & MyCreature.WillBonus & "</willMagic>"
func.AddToCombatLog " <sizeBonus>" & MyCreature.SizeStr & "</sizeBonus>"
func.AddToCombatLog " <armorCheckPenalty>" & MyCreature.FinalCheck & "</armorCheckPenalty>"
Dim MySkill, i
for i = 1 to func.GetNumberOf_Skills
Set MySkill = func.GetSkillObj(CInt(i))
if func.ValidSk(MySkill) then
tag = lcase(MySkill.NameUcase)
tag = replace(tag, "(", "")
tag = replace(tag, ")", "")
words = split(tag)
if ubound(words) >= 0 then
tag = "skill." & words(0)
if ubound(words) > 0 then
for j = 1 to ubound(words)
tag = tag & func.Capital(words(j))
next
end if
func.AddToCombatLog " <" & tag & ".total>" & MyCreature.SkillTotal(i) & "</" & tag & ".total>"
func.AddToCombatLog " <" & tag & ".rank>" & MyCreature.SkillRanks(i) & "</" & tag & ".rank>"
func.AddToCombatLog " <" & tag & ".misc>" & MyCreature.SkillTotal(i) & "</" & tag & ".misc>"
else
func.AddToCombatLog " <skipping>"
end if
end If
next
func.AddToCombatLog " </combatant>"
Set MyCreature = func.GetNextCreature
Wend
func.AddToCombatLog " </combatants>"
func.AddToCombatLog " </group>"
func.AddToCombatLog " </groups>"
func.AddToCombatLog "</group>"
End Sub
This now generates sensible <XML> which Group Tool is able to read happily. When I load the group up into Group Tool and click on any given creature I see its NOTES section in full - perfect.
However, when I drag that group into Init Tool the Notes section does not appear on the Index Card view in Init Tool - which is where I really wanted it to appear...
Cheers
Blakey
P.S. This fix is enough for me to be able to convert the DMGenie groups I need for this afternoon's session to InitTool, even if they don't have Notes associated with them.
Last edited by Blakey on Sat May 10, 2008 5:16 am, edited 1 time in total.
The guy in the green hat.
I see the Problem now!!!
If you put an HTML tag with a minus sign in it, the forum steals it!
e.g. "group-set" becomes just "group"
e.g. "init-modifier" becomes just "init"
e.g. "token/" becomes just "token"
So you cannot post DMGenie code into the forum as it will corrupt it. Same with the output from DMGenie's log file. So please ignore my last post, although it goes to demonstrate the problem.
Cheers!
Blakey
P.S. I still have the issue of Notes not transfering from Group Tool to Init Tool...
If you put an HTML tag with a minus sign in it, the forum steals it!
e.g. "group-set" becomes just "group"
e.g. "init-modifier" becomes just "init"
e.g. "token/" becomes just "token"
So you cannot post DMGenie code into the forum as it will corrupt it. Same with the output from DMGenie's log file. So please ignore my last post, although it goes to demonstrate the problem.
Cheers!
Blakey
P.S. I still have the issue of Notes not transfering from Group Tool to Init Tool...
The guy in the green hat.
Hi Jay,
Further to this conversation I have now figured out how to modify your DMGenie script to output all the bits I have as custom fields in my Rodinia game. So I'm getting on with building a nice exporter script for DMGenie which exports into my own personal set of custom fields. I've figured out a lot about how this all works from playing with it and its all pretty good.
I would post my DMGenie script but there is no point as:
1. The forum will corrupt the XML it outputs.
2. It outputs specific custom fields I have set up for Rodinia.
Anyway, this leaves one issue still:
That is the fact that the <notes> field does successfully get into the GROUP (.rpgrp) file and when you edit a combatant in the Group Tool you see the <notes> field all imported correctly. However when you drag and drop that group into Init Tool the <notes> field is not populated inside the Index Card view in IT.
This is in the release version v1.0b23 and I suspect therefore is not going to ever be fixed as this version has been frozen I believe?
Cheers
Blakey
Further to this conversation I have now figured out how to modify your DMGenie script to output all the bits I have as custom fields in my Rodinia game. So I'm getting on with building a nice exporter script for DMGenie which exports into my own personal set of custom fields. I've figured out a lot about how this all works from playing with it and its all pretty good.
I would post my DMGenie script but there is no point as:
1. The forum will corrupt the XML it outputs.
2. It outputs specific custom fields I have set up for Rodinia.
Anyway, this leaves one issue still:
That is the fact that the <notes> field does successfully get into the GROUP (.rpgrp) file and when you edit a combatant in the Group Tool you see the <notes> field all imported correctly. However when you drag and drop that group into Init Tool the <notes> field is not populated inside the Index Card view in IT.
This is in the release version v1.0b23 and I suspect therefore is not going to ever be fixed as this version has been frozen I believe?
Cheers
Blakey
The guy in the green hat.