Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[genieslamp] Pathfinder

95 views
Skip to first unread message

dragonstrike69

unread,
Oct 16, 2012, 12:47:41 PM10/16/12
to
Looking for pathfinder rules or something to import. I downloaded some
of the files from pathfinder but when it goes to import it says 0 files
imported for all files.

JDELESKI

unread,
Oct 16, 2012, 7:05:50 PM10/16/12
to
Hello Dragonstrike69,

There are a number of pathfinder rule files on the old DMGeniePathfinder
yahoo group, but that group has not had any activity in a while. It
does have some very useful files, though. If you apply to the group,
I'll accept you and you can peruse the files.

And I haven't used DMGenie in a while, but I recall that you need to not
only select the file to import, but also add it to the import list by
pressing an arrow button on the popup menu. Maybe that might be your
problem?

J Jones

unread,
Oct 5, 2013, 10:53:05 AM10/5/13
to
I haven't been able to find any Pathfinder stuff for DM Genie, but would
have loved to use DM Genie for Pathfinder.I'm not all that great at the
scripting; some of the scripts I've copied and adapted work, while
others do not.The straight data entry is doable (I made a lot of Gestalt
classes for my group).Unfortunately, the best solution I've found has
been Hero Lab, for $30 (with the assorted Pathfinder data sets, which
sets you back another $150 or so).There is a free program called 'Combat
Manager', which can read the .por files that Hero Lab puts out.So far, I
basically create NPCs or Monsters (apply templates/advance them/give
them class levels/gear, etc) with Hero Lab, save them, import them with
Combat Manager to create the encounters and then save groups of bad guys
so the encounter is ready to be loaded once the PCs get to
whatever.Combat Manager is not even close to the functionality of DM
Genie; you can apply conditions, but it doesn't change the math on the
character sheet.


Hero Lab can export as a PDF or HTML as well.
With mixed success, I've copy/pasted NPC stat blocks into DM Genie from
a purchased PDF of 'War of the Burning Crusade'.
Most of the information is correct, but its not perfect and things need
to fixed.
Presumably, with a mostly full Pathfinder rules set inputted, DM Genie
would 'import a stat block' for a legal Pathfinder character.


It's just the process of entering the data is daunting.
11 Core Classes, 8 Base Classes, 3 Alternate Classes... 22 Classes to
enter, not even looking at Prestige Classes yet.
Then there are Archetypes, which are modifications to how a given class
works... my limited knowledge of DM Genie suggests either don't use
Archetypes in your game, or input each one as another slightly different
class... but there are a lot of Archetypes, and Pathfinder greatly
encourages staying within your class rather than multiclassing a la 3.5.
Archetypes allow a great deal of customization of a class, which gives
players the ability to play the type of hero/anti-hero that they want
(you essentially give up class features, to add different features in
their place -- and can take multiple archetypes at once, provided the
features that are removed/modified do not overlap).
A Barbarian has these Archetypes:
-- From Advanced Player's Guide: Breaker, Brutal Pugilist, Drunken
Brute, Elemental Kin, Hurler, Invulnerable Rager, Mounted Fury, Savage
Barbarian, Superstitious, and Totem Warrior.
-- From Ultimate Combat: Armored Hulk, Scarred Rager, Sea Reaver, Titan
Mauler, True Primitive, Urban Barbarian, and Wild Rager.
Each of the 11 Core Classes has a similar number... the Base Classes and
Alternate Classes basically have half as many options (so far).
As I said initially, that's a lot of data to either enter or discard.


Combat Manager reads it all, without difficulty.
It's initiative interface is as easy as DM Genie's, but is easier to
manually adjust a PCs final initiative (if the player wants to roll
their own).

You get Current/Maximum hit points, Stats, Alignment, Type, Size, AC
(and Touch/Flat Footed), Fort/Ref/Will, BAB, Combat Maneuver
Bonus/Combat Maneuver Defense, Melee Attack (with damage) and Ranged
Attack (with damage).
You can apply any condition, and either manually edit the HPs or enter
them via a Damage/Healing interface.
I don't see the option to account for Resistance/Immunities or Damage
Reduction.
And even though a condition can be applied, the math is not done at all.
I really liked the option of having my players decide on an action, and
then just asking for a D20 roll with DM Genie doing all of the math (one
player pretends to be math challenged, to cheat on his 'to hit' or
'damage' amounts)... Combat Manager cannot do this.I'd love to use DM
Genie over Combat Manager, especially if it would read the HTML/PDF
output from Hero Lab.

Zym

unread,
Oct 4, 2013, 5:17:46 PM10/4/13
to
You can also look here:

http://groups.yahoo.com/neo/groups/dmgeniepathfinder/info

However the Rules.txt was taken down as well as some of the other Core info.
So best you can do is make of it what you can and edit/script the rest.

I still only play 3.5 but have had some minor Pathfinder experiences here and
there.

~Zym

"There�s no Drugged-out Devils or Square-halo Angels walking among us...."

greyra...@comcast.net

unread,
Oct 6, 2013, 9:20:44 PM10/6/13
to
The group is shut down. I created it to bring people together to work on
updating to PFRPG but got almost no help. Just a lot of promises. My campaign
is uploaded here. All the core classes are done, skills, most feats. There is
ton of scripted work as well. (Ex some monsters special attacks are applied
automatically, etc). But caution, it is not documented or complete. I add what
I need as I go along, so you are going to find some basic stuff missing and some
advanced stuff completley finished..

Also there is a lot of old data. Item are mostly 3.5 Some monsters too. Be
aware, the conisitancy changes from item to item. As far as I know though, it
is the most complete of any pathfinder upgrade out there.
There is even some things for dreamscarred press psionics, Zym like the
soulknife



---In d_ma...@yahoogroups.com, <djinnzym@...> wrote:


You can also look here:

http://groups.yahoo.com/neo/groups/dmgeniepathfinder/info

However the Rules.txt was taken down as well as some of the other Core info. So
best you can do is make of it what you can and edit/script the rest.

I still only play 3.5 but have had some minor Pathfinder experiences here and
there.

~Zym

"There’s no Drugged-out Devils or Square-halo Angels walking among us...."

In article <l2p94c$qtk$2...@dont-email.me>, jmj_...@yahoo.ca wrote:

jmj_...@yahoo.ca

unread,
Mar 3, 2014, 12:12:16 AM3/3/14
to
In Pathfinder, the Paladin has both Lay on Hands (gained at 2nd level)
and Channel Energy (gained at 4th level) abilities.

She has as many Lay on Hands per day as half her Paladin level plus her
Charisma modifier. The Lay on Hands heals for 1D6 per two Paladin
levels she possesses. When used on others, this is a standard action;
when used on herself, this is a swift action. Alternatively, as a melee
touch attack this can be used to harm undead.

Channel Energy is a 30 ft. radius burst, centered on the Paladin. The
Paladin has the choice to channel the energy in such a way as to heal
the living or to harm the undead, but not both (there is a feat to make
it affect both). The damage/healing is the same as the Cleric ability
(2D6 at 3rd/4th, 3D6 at 5th/6th, 4D6 at 7th/8th... with the Paladin
gaining the ability at 4th level... later than a cleric). Basically,
two uses of Lay on Hands, makes this an AoE effect rather than a touch
effect. If used to harm undead, they receive a Will save to halve the
damage (DC = 10 + 1/2 of your level + CHA modifier).

niriz...@yahoo.com

unread,
Mar 2, 2014, 11:46:55 PM3/2/14
to
I enjoy the DM Genie and I use it as much as I can. For a couple years I
notice how easy Pathfinder is to play with other DMs. That's cool and
all, but I'm lazy I love would DM Genie done for me it has open horizons
for role-playing and DMing without the books. That seems a little bit
dumb to say but I have dyslexia and DM Genie helps me a lot. Little by
little I've been integrating Pathfinder campaign to my spelljamming
company. I'm up to The Paladins. And I have a problem a matter of fact I
have two problems. The first one is with the Paladin's Special Mount
Feat, it does not give bonus to Constitution for the second group of
dice next it doesn't give the Special Mount and intelligence of six. I
am not too good with scripting I tried everything I could but it doesn't
happen. The second problem I have with the Paladin's with the feat Lay
on Hands and with Channel Positive Energy. One does not work without the
other am I right. And making more investigation this problem goes deeper
to the heart of the rule.
Let me show you what I'm talking about.

Lay on Hands (Su): Beginning at 2nd level, a paladin can heal wounds
(her own or those of others) by touch. Each day she can use this ability
a number of times equal to 1/2 her paladin level plus her Charisma
modifier. With one use of this ability, a paladin can heal 1d6 hit
points of damage for every two paladin levels she possesses. Using this
ability is a standard action, unless the paladin targets herself, in
which case it is a swift action. Despite the name of this ability, a
paladin only needs one free hand to use this ability.

Alternatively, a paladin can use this healing power to deal damage to
undead creatures, dealing 1d6 points of damage for every two levels the
paladin possesses. Using lay on hands in this way requires a successful
melee touch attack and doesn't provoke an attack of opportunity. Undead
do not receive a saving throw against this damage.

If I understand this right the Paladin PC has a certain amount of HP's
that he can heal throughout the course of the day. That completely
contradicts the requirements for him and I mean the Paladin PC to use
the next feat.
Let me show you what I'm talking about.

Channel Positive Energy (Su): When a paladin reaches 4th level, she
gains the supernatural ability to channel positive energy like a cleric.
Using this ability consumes two uses of her lay on hands ability. A
paladin uses her level as her effective cleric level when channeling
positive energy. This is a Charisma-based ability.

Maybe I do not understand why do not grasp what this means but to me
that defeat requires two uses from lay on hands but the lay on hands
uses a pool system. And when I use The Channel Positive Energy it does
not allow me to use it on DM Genie. Help me out

jmj_...@yahoo.ca

unread,
Mar 3, 2014, 12:12:16 AM3/3/14
to

niriz...@yahoo.com

unread,
Mar 3, 2014, 1:52:10 PM3/3/14
to
I must've been very tired when I posted that message you absolutely
right. My problem was I was looking at the DM Genie feat lay on hands in
the Pathfinder campaign. And assumed it was a ready convert it but it
hasn't been done. I reloaded the Pathfinder campaign onto DM Genie once
more. And I was correct. If anybody has a proper Lay on Hands Feat for
the Pathfinder DM Genie campaign. I appreciate

mang...@yahoo.com

unread,
Mar 31, 2014, 12:47:46 PM3/31/14
to
your are on the right track, yes lay on hands has a daily useage limit of 1 use per healing (on yourself or others) and
channel energy uses up 2 daily uses of lay on hands (easy to follow?)
now the code i have for this is as follows
*note these scripts were not created by me*
in the Getting Feat tab of Editing the feat

L = cr.GetClassLevel("Pal")
notimes = (int(l/2))+cr.ChaMod
cr.SetVariable "LoH", notimes
dim myatt
dim lohatt
for i=0 to cr.NoAttacks-1
set myatt = cr.Attack(i)
if instr(myatt.Name,"Lay on Hands") > 0 then
set lohatt = cr.Attack(i)
end if
next
if func.ValidAt(lohatt)=FALSE then
set lohatt = cr.MakeNewAttack()
lohatt.Name = "Lay on Hands"
else
end if

lohatt.Category = 1
lohatt.DamageType= "S,P,B,magic, good, silver,cold iron, admantine"
lohatt.DamageStr=(cstr(int(l/2)) & "d6")
lohatt.noDice=int(l/2)
lohatt.Dice = 6
lohatt.Touch = True

calcqty

in the removing feat tab
cr.RemoveVariable("LoH")

in the using feat tab
qty = func.cvint(cr.GetVariable("LoH"))
func.AddToCombatLog("uses left = " & qty)
if qty <= 0 then
func.AddtoCombatLog cr.Name & " has no more uses of Lay on Hands."
exit sub
end if
'Now choose a PC (friendly) in the current group to heal
dim OtherCr, OtherName, DamageHad
set OtherCR = func.ChooseCreature("Select which creature to heal using Lay on Hands", 0, TRUE, True)
if OtherCr is nothing then
OtherName = "(No PC selected)"
end if
dice = cstr(int(cr.GetClassLevel("pal")/2)) & "d6"
if cr.HasFeatName("Greater Mercy") then
l=msgbox("Are you using a mercy",4)
if l=7 then dice = cstr(int(cr.GetClassLevel("pal")/2)+1) & "d6"
end if
roll = func.RollDice(dice)
total = inputbox("Please roll " & dice & " for the amount of healing","Healing Roll",roll)
Othercr.HP=othercr.HP+total
if othercr.hp>othercr.HPBase then othercr.HP=othercr.HPBase
qty=qty-1
func.AddToCombatLog(othercr.Name & " has been healed to " & othercr.hp & "." & cr.Name & " has " & qty & " uses of lay on
hand left for today")
mercy = cr.GetVariable("mercy")
func.AddToCombatLog(othercr.Name & "is also cured of the following effects:" & mercy)
cr.SetVariable "LoH", qty

In the Rest tab
calcqty

in the Other tab
sub calcqty()
s = cr.GetVariable("ExtraSmiting")
M = len(s)
ES = M * 2
L = cr.GetClassLevel("Pal")
notimes = (int(l/2))+cr.ChaMod+ES
cr.SetVariable "LoH", notimes
if Hours = 0 then func.AddtoCombatLog cr.Name & "'s lay onhand uses is reset."
end sub

Now for Channeling Positive Energy
in the getting feat tab
func.AddToCombatLog("\cf2 \b1" & cr.Name & " \b0 \cf0 has been assigned the Channel Positive Energy feat")
PalLvl = cr.GetClassLevel("Pal")
If PalLvl < 4 then
func.AddToCombatLog("Paladin must be \cf1 4th level \cf0 to Channel Positive Energy.")
end if

in the removing feat tab
func.AddToCombatLog("The Channel Positive Energy feat has been removed from \cf2 \b1" & cr.Name & "\b0 \cf0 .")
cr.RemoveVariable("Channel Energy")

in the using feat tab
'Created by Jdeleski
'Design Point: - If a creature is already dead, then the selection menus will not show that creature,
' either for healing or for damaging (undead).
' - If a living creature is already at full HP, then it will not show on the healing
' selection menu
' - The character can only channel energy once on a specific creature per round, therefore
' If the user has already healed a specific creature or damaged a specific undead,
' then the "CURE ALL" or "DAMAGE ALL" options will not be available.
' - Nonlethal damage is cured AFTER all lethal damage has been
'
'Version 2.3 - Streamlined menus a bit
' - Added test and combat log output for paladins < level 3
'Version 2.2 - Added Will Save to channeled damage
'Version 2.1 - Streamlined code to eliminate forcing DMGenie user to select "Done" or "Cancel"
' after healing or damaging the last creature on the list; selecting that last creature
' on the list now automatically ends the ChanPosEnergy process.
' - Fixed bug that didn't let character select undead between 0 hp and -10 hp
' - Fixed bug that didn't heal living creatures if Con = 0 (e.g. automatons)
'Version 2.0 - Large update; too many changes to list. Improved logic to add "smarts" that
' streamline the user's input sequences, added options, fixed bugs, etc.
'Version 1.0 - Created by Jdeleski
'
'BOOLEAN VARIABLES:
' CharBoolean = Tracks whether a valid creature is available to be healed
' UndeadCharBoolean = Tracks whether a valid undead creature is available to damage
' CancelChannelEnergy = Tracks whether user cancelled out of entering data
' CharHealed = Tracks whether any characters have been healed this round
' UndeadDamaged = Tracks whether any undead have been damaged this round
' RemoveAllOption = Tracks if any creature has already been selected individually for healing or
' damage, in which case the "Cure All" or "Damage All" option should vanish
'

'*************** Calculate DC for the cleric's channel energy feature
PalLvl = cr.GetClassLevel("Pal")
ChanEnergyDC = 10 + int(PalLvl/2) + cr.ChaMod

func.AddToCombatLog("-----------------------------------------------------------")
func.AddToCombatLog("\b1 CHANNEL POSITIVE ENERGY Feature\b0")

CharHealed = FALSE
CharDamaged = FALSE
CancelChannelEnergy = FALSE
RemoveAllOption = FALSE

if PalLvl < 4 then
qty = 0
choice = "CANCEL"
UndeadCharBoolean = FALSE
func.AddToCombatLog("Paladin must be \cf1 4th level \cf0 to use this feat.")
else
qty = int(func.cvint(cr.GetVariable("LoH"))/2)
end if
if qty <= 0 then
func.AddtoCombatLog("\cf2 \b1" & cr.Name & " \b0 \cf0 \cf1 has no uses of Channel Energy available. \cf0")
func.AddToCombatLog("-----------------------------------------------------------")
exit sub
end if

dice = cstr(int((cr.GetClassLevel("pal")/2) + 0.5)) & "d6"
roll = func.RollDice(dice)

'*****************************************************************************************
'****************** Test to see what creatures need healing/damage *******************
'*****************************************************************************************
UndeadCharBoolean = False 'Boolean variable to track whether a valid undead is available to be damaged
CharBoolean = False
i = 0
func.GetNextCreatureInit 2 'Set GetNextCreature function to Current Encounter
set target = func.GetNextCreature
While (Not target Is Nothing) 'loop until end of list of creatures
if (target.creaturetype = "Undead") OR (target.creaturetype = "undead") then
if (target.Hp > -10) then 'if creature is not dead, then proceed with killing it!
UndeadCharBoolean = True 'Set flag that DMGenie has identified a valid undead creature
end if
else if (target.hp < target.HPBase) OR (target.subdual > 0) then 'else if target not undead and needs healing
CharBoolean = True 'Set flag that DMGenie has identified a valid living creature to heal
end if
end if
' i = i + 1
set target = func.GetNextCreature
Wend

if UndeadCharBoolean = TRUE then 'If there are undead alive in this enounter
if CharBoolean = TRUE then 'If there are undead AND there are living creatures that need healing
choice = func.ChooseString("Please choose whether to heal or damage creatures: "," Heal Creatures"," Damage Undead")
if choice = -1 then 'User cancelled out of Channel Energy process
CancelChannelEnergy = TRUE
end if
else choice = " Damage Undead" 'if there are valid undead to damage AND no living creatures
end if
else 'if no undead
if CharBoolean = TRUE then 'If there are no undead but there are living creatures that need healing
choice = " Heal Creatures"
else
func.AddToCombatLog("\cf1 There are no living creatures to heal and no undead to damage in this encounter. \cf0")
choice = "CANCEL"
end if
end if

if choice = " Heal Creatures" then

'***********************************************************************************************
'************************************** Healing Process *************************************
'***********************************************************************************************
'*** Create list of characters to heal, then ask user to select each, one by one ***************************
If CancelChannelEnergy = FALSE then
ChannelCharChooseStr = "CharNum = func.Choose(""Select creature(s) to heal. REMEMBER: This feat heals ALL living
creatures within 30 ft, not just friendlies. """
CharBoolean = False 'Boolean variable to track whether a valid creature is available to be healed
i = 0
func.GetNextCreatureInit 2 'Set GetNextCreature function to Current Encounter
set target = func.GetNextCreature
While (Not target Is Nothing) 'Initialize string
If target.CreatureType <> "Undead" then 'if creature is NOT an Undead
if (target.HP > -target.Con) OR ((Target.con = 0) AND (target.HP > -10)) then 'if creature is not dead
if (target.HP < target.HPBase) OR (Target.subdual > 0) then 'if creature needs healing
CharBoolean = True 'There is a valid creature to heal
ChannelCharChooseStr = func.Append((ChannelCharChooseStr), ("""" & target.Name & """"))
ChannelCharChooseStr = func.Append((ChannelCharChooseStr), ("" & i & ""))
end if
end if
end if
i = i + 1
set target = func.GetNextCreature
Wend
LastCreature = i - 1 'Remember string # for the last creature
ChannelCharChooseStr = func.Append((ChannelCharChooseStr), ("""" & " CURE ALL FRIENDS ONLY" & """"))
ChannelCharChooseStr = func.Append((ChannelCharChooseStr), ("" & i & ""))
CureAllFriends = i 'Remember string # for "CURE ALL FRIENDS"
i = i + 1
ChannelCharChooseStr = func.Append((ChannelCharChooseStr), ("""" & " DONE WITH CHANNELING" & """"))
ChannelCharChooseStr = func.Append((ChannelCharChooseStr), ("" & i & ""))
DONE = i 'Remember string # for "DONE"
ChannelCharChooseStrInit = ChannelCharChooseStrInit & ")" 'Done initializing string
ChannelCharChooseStr = ChannelCharChooseStr & ")" 'Done initializing string
CharNum = -1
While (CharNum <> DONE) 'Loop while user has not selected DONE
If CharBoolean = True then 'There are valid creatures in the current encounter
if RemoveAllOption = TRUE then 'If any creature has been healed, then remove "Cure All" option
StringToRemove = func.Append((StringToRemove), (""" CURE ALL FRIENDS ONLY"""))
StringToRemove = func.Append((StringToRemove), ("" & CureAllFriends & ""))
ChannelCharChooseStr = func.remove((ChannelCharChooseStr), (StringToRemove))
StringToRemove = "" 'Reset string
end if
Execute(ChannelCharChooseStr) 'Get creature to heal
if CharNum = -1 then 'Cancelled out of creature selection
CancelChannelEnergy = TRUE
CharNum = DONE
else
If CharNum <> DONE then
If CharNum = CureAllFriends then
' ***CURE ALL FRIENDS LOOP
if (CharHealed = FALSE) then 'if no character healed yet
roll = func.RollDice(dice)
total = inputbox("Please roll " & dice & " for amt of channeled HEALING per creature this
round.","Healing Roll",roll)
if (total = "") then
func.AddToCombatLog("\cf1 Die roll cancelled. \cf0")
CancelChannelEnergy = TRUE
end if
end if 'end loop to get HP healed
func.GetNextCreatureInit 2 'Reset GetNextCreature function to Current Encounter
CharNum = 0
While (CharNum < LastCreature) OR (CharNum = LastCreature)
set target = func.GetNextCreature
If target.enemy = FALSE then 'if creature is a friend
if (target.HP > -target.Con) OR ((Target.con = 0) AND (target.HP > -10)) then 'if creature is not
dead
if (target.HP < target.HPBase) OR (Target.subdual > 0)then 'if creature is not already at full
HP
RemainHealNum = 0 'initialize extra healing counter
NonlethalHealed = 0 'initialize nonlethal healing counter
target.HP = target.HP + total
' *** The following calculations check for lethal vs. nonlethal dmg
DamageHad = target.HPBase - target.HP 'Calc amt of dmg already on target
Basehealed = total 'Assume base healed is = to max of heal spell
if target.HP > target.HPBase then 'if target has less damage than the cure provides
target.HP = target.HPBase
RemainHealNum = total - DamageHad 'Any extra healing to apply to nonlethal?
Basehealed = DamageHad 'track damage that creature initially had
if RemainHealNum > 0 then 'if extra healing available for nonlethal
Nonlethalhealed = RemainHealNum
target.subdual = target.subdual - RemainHealNum
if target.subdual < 0 then 'if healing exceeds subdual dmg
Nonlethalhealed = nonlethalhealed + target.subdual
target.subdual = 0
end if
end if
end if
CharHealed = TRUE
if NonLethalHealed = 0 then
if Target.hp = Target.hpbase then
func.AddToCombatLog("\b1" & target.Name & " \b0 is healed to " & target.hp & " max
HP.")
else
func.AddToCombatLog("\b1" & target.Name & " \b0 is healed to " & target.hp & " HP.")
end if
else 'if there was nonlethal dmg healed
func.AddToCombatLog("\b1" & target.Name & " \b0 is healed to " & target.hp & " max HP +
cured of " & NonLethalHealed & " HP of nonlethal dmg.")
end if
end if
end if
end if
CharNum = CharNum + 1
Wend
if CharHealed = FALSE then
func.AddToCombatLog("\cf1 No characters required healing. \cf0")
end if
CharNum = DONE
else 'If not curing all friends
' *** SELECT SPECIFIC LIVING CREATURES TO HEAL
func.GetNextCreatureInit 2 'Reset GetNextCreature function to Current Encounter
For i = 0 to CharNum step 1
set target = func.GetNextCreature
next
' Now remove the string for the selected character from the list since they've been healed
i=i-1
StringToRemove = func.Append((StringToRemove), ("""" & target.Name & """"))
StringToRemove = func.Append((StringToRemove), ("" & i & ""))
ChannelCharChooseStr = func.remove((ChannelCharChooseStr), (StringToRemove))
StringToRemove = "" 'Reset string

if (CharHealed = FALSE) then 'if no character healed yet, then get healing total
roll = func.RollDice(dice)
total = inputbox("Please roll " & dice & " for amt of channeled HEALING per creature this
round.","Healing Roll",roll)
if (total = "") then
func.AddToCombatLog("\cf1 Die roll cancelled. \cf0")
CancelChannelEnergy = TRUE
end if
end if

if (target.Hp > -target.Con) OR ((Target.con = 0) AND (target.HP > -10)) then 'if creature is not dead
RemainHealNum = 0 'initialize extra healing counter
NonlethalHealed = 0 'initialize nonlethal healing counter
target.HP = target.HP + total
' *** The following calculations check for lethal vs. nonlethal dmg
DamageHad = target.HPBase - target.HP 'Calc amt of dmg already on target
Basehealed = total 'Assume base healed is = to max of heal spell
if target.HP > target.HPBase then 'if target has less damage than the cure provides
target.HP = target.HPBase
RemainHealNum = total - DamageHad 'Any extra healing to apply to nonlethal?
Basehealed = DamageHad 'track damage that creature initially had
if RemainHealNum > 0 then 'if extra healing available for nonlethal
Nonlethalhealed = RemainHealNum
target.subdual = target.subdual - RemainHealNum
if target.subdual < 0 then 'if healing exceeds subdual dmg
Nonlethalhealed = nonlethalhealed + target.subdual
target.subdual = 0
end if
end if
end if
CharHealed = TRUE
RemoveAllOption = TRUE 'Tell DMGenie to remove the option to heal all friends
if NonLethalHealed = 0 then
if Target.hp = Target.hpbase then
func.AddToCombatLog("\b1" & target.Name & " \b0 is healed to " & target.hp & " max HP.")
else
func.AddToCombatLog("\b1" & target.Name & " \b0 is healed to " & target.hp & " HP.")
end if
else 'if there was nonlethal dmg healed
func.AddToCombatLog("\b1" & target.Name & " \b0 is healed to " & target.hp & " max HP + cured of "
& NonLethalHealed & " HP of nonlethal dmg.")
end if
else func.AddToCombatLog(target.name & " is already dead, therefore not healed.")
end if 'End of test to see if creature is not dead
end if 'End of Curing all friends loop
end if 'CharNum <> DONE
end if 'CharNum = -1 (cancelled out of selecting a character to heal)

' Test to see if no creatures left to heal
func.GetNextCreatureInit 2 'Initialize GetNextCreature function to Current Encounter
Test = -1
CharBoolean = False
set ValidCreatureTest = func.getNextCreature
While (Not ValidCreatureTest Is Nothing) 'Initialize string
If ValidCreatureTest.CreatureType <> "Undead" then 'if creature is NOT an Undead
Test = InStr(ChannelCharChooseStr,ValidCreatureTest.Name)
' If the character name is not within the command string which selects characters to heal
if (Test > 0) then
CharBoolean = TRUE
end if
end if
set ValidCreatureTest = func.GetNextCreature
Wend
if CharBoolean = FALSE then CharNum = DONE
func.GetNextCreatureInit 2 'Initialize GetNextCreature function to Current Encounter
n = 0
If CharNum <> DONE then
While n < CharNum 'Reset target counter back to previously selected char for next loop
set target = func.GetNextCreature
n = n + 1
Wend
end if

end if 'CharBoolean = TRUE
wend
if (CharHealed = TRUE) then 'If user healed someone
qty = cr.GetVariable("LoH")
qty = qty - 2
cr.SetVariable "LoH", qty
func.AddToCombatLog("\b1 \cf2" & cr.Name & " \cf0 \b0 may ChanPosEnergy \b1 " & int(qty/2) & " \b0 X more before
resting; \b1 " & qty & " \b0 \i1 LayOnHands \i0 left.")
else
if (CancelChannelEnergy = TRUE) AND (CharHealed = FALSE) then
func.AddToCombatLog("\cf1 No creatures selected. \cf0")
end if
end if
else 'CancelChannelEnergy = TRUE
func.AddToCombatLog("\cf1 Cancelled by User. \cf0")
end if 'CancelChannelEnergy = FALSE

'***********************************************************************************************
'********************************** Damage Undead Process ***********************************
'***********************************************************************************************
else if choice = " Damage Undead" then
func.AddToCombatLog("Damn! Damn those undead to hell!")

'*** Create list of undead to damage, then ask user to select each, one by one ***************************
If CancelChannelEnergy = FALSE then
ChannelCharChooseStr = "CharNum = func.Choose(""Select undead creature(s) to damage. """
CharBoolean = False 'Boolean variable to track whether a valid undead is available to be damaged
i = 0
func.GetNextCreatureInit 2 'Set GetNextCreature function to Current Encounter
set target = func.GetNextCreature
While (Not target Is Nothing) 'Initialize string
if (target.creaturetype = "Undead") OR (target.creaturetype = "undead") then
if (target.Hp > -10) then 'if undead creature is not dead, then proceed with killing it!
CharBoolean = True 'DMGenie has identified a valid creature to damage
ChannelCharChooseStr = func.Append((ChannelCharChooseStr), ("""" & target.Name & """"))
ChannelCharChooseStr = func.Append((ChannelCharChooseStr), ("" & i & ""))
end if
end if
i = i + 1
set target = func.GetNextCreature
Wend

if CharBoolean = True then 'If there are undead to damage
LastCreature = i - 1 'Remember string # for the last creature
ChannelCharChooseStr = func.Append((ChannelCharChooseStr), ("""" & " DAMAGE ALL UNDEAD IN THIS ENCOUNTER" &
""""))
ChannelCharChooseStr = func.Append((ChannelCharChooseStr), ("" & i & ""))
DmgAllUndead = i 'Remember string # for "DAMAGE ALL UNDEAD"
i = i + 1
ChannelCharChooseStr = func.Append((ChannelCharChooseStr), ("""" & " DONE WITH CHANNELING" & """"))
ChannelCharChooseStr = func.Append((ChannelCharChooseStr), ("" & i & ""))
DONE = i 'Remember string # for "DONE"
ChannelCharChooseStr = ChannelCharChooseStr & ")" 'Done initializing string
CharNum = -1
While (CharNum <> DONE) 'while the user has not selected "DONE"
if RemoveAllOption = TRUE then 'If any undead has been damaged, then remove "Damage All" option
StringToRemove = func.Append((StringToRemove), (""" DAMAGE ALL UNDEAD IN THIS ENCOUNTER"""))
StringToRemove = func.Append((StringToRemove), ("" & DmgAllUndead & ""))
ChannelCharChooseStr = func.remove((ChannelCharChooseStr), (StringToRemove))
StringToRemove = "" 'Reset string
end if
Execute(ChannelCharChooseStr)
if CharNum = -1 then 'Cancelled out of creature selection
CancelChannelEnergy = TRUE
CharNum = DONE
else
If CharNum <> DONE then
If CharNum = DmgAllUndead then
func.GetNextCreatureInit 2 'Reset GetNextCreature function to Current Encounter
CharNum = 0
While (CharNum < LastCreature) OR (CharNum = LastCreature)
set target = func.GetNextCreature
if (CharDamaged = FALSE) then 'if no character healed yet
roll = func.RollDice(dice)
total = inputbox("Please roll " & dice & " for the amount of channeled DAMAGE","Damage
Roll",roll)
if (total = "") then
func.AddToCombatLog("\cf1 Die roll cancelled. \cf0")
CancelChannelEnergy = TRUE
end if
end if 'end loop to get HP healed
If target.CreatureType = "Undead" then 'if creature is an Undead
if (target.Hp > -10) then 'if creature is not dead
roll = func.RollDice("1d20")
WillSaveTotal = roll + target.WillSave
if WillSaveTotal < ChanEnergyDC then
target.HP = target.HP - total 'apply damage
func.AddToCombatLog("~~\b1" & target.name & "\b0")
func.AddToCombatLog("Dieroll+WillBonus = " & roll & "+" & target.willsave & " = " &
WillSaveTotal & " vs. DC=" & ChanEnergyDC & ".")
func.AddToCombatLog("Failed. FULL dmg = " & total & "; leaving " & target.hp & " HP.")
else
target.HP = target.HP - int(total/2)
func.AddToCombatLog("~~\b1" & target.name & "\b0")
func.AddToCombatLog("Dieroll+WillBonus = " & roll & "+" & target.willsave & " = " &
WillSaveTotal & " vs. DC=" & ChanEnergyDC & ".")
func.AddToCombatLog("Success! HALF dmg = " & int(total/2) & "; leaving " & target.hp &
" HP.")
end if
end if
end if
CharNum = CharNum + 1
CharDamaged = TRUE
Wend
' func.AddToCombatLog("\cf2 All Undead in this encounter have been damaged. \cf0 ")
CharNum = DONE
else 'if not damaging all undead
func.GetNextCreatureInit 2 'Reset GetNextCreature function to Current Encounter
For i = 0 to CharNum step 1
set target = func.GetNextCreature
next
' Now remove the string for the selected character from the list since they've been healed
i=i-1
StringToRemove = func.Append((StringToRemove), ("""" & target.Name & """"))
StringToRemove = func.Append((StringToRemove), ("" & i & ""))
ChannelCharChooseStr = func.remove((ChannelCharChooseStr), (StringToRemove))
StringToRemove = "" 'Reset string
if (CharDamaged = FALSE) then 'if no character healed yet
roll = func.RollDice(dice)
total = inputbox("Please roll " & dice & " for the amount of channeled DAMAGE per creature this
round.","Damage Roll",roll)
if (total = "") then
func.AddToCombatLog("\cf1 Die roll cancelled. \cf0")
CancelChannelEnergy = TRUE
end if
end if 'end loop to get HP healed
if (target.Hp > -10) then 'if creature is not dead
roll = func.RollDice("1d20")
WillSaveTotal = roll + target.WillSave
if WillSaveTotal < ChanEnergyDC then
target.HP = target.HP - total 'apply damage
func.AddToCombatLog("~~\b1" & target.name & "\b0")
func.AddToCombatLog("Dieroll+WillBonus = " & roll & "+" & target.willsave & " = " &
WillSaveTotal & " vs. DC=" & ChanEnergyDC & ".")
func.AddToCombatLog("Failed. FULL dmg = " & total & "; leaving " & target.hp & " HP.")
else
target.HP = target.HP - int(total/2)
func.AddToCombatLog("~~\b1" & target.name & "\b0")
func.AddToCombatLog("Dieroll+WillBonus = " & roll & "+" & target.willsave & " = " &
WillSaveTotal & " vs. DC=" & ChanEnergyDC & ".")
func.AddToCombatLog("Success! HALF dmg = " & int(total/2) & "; leaving " & target.hp & "
HP.")
end if
CharDamaged = TRUE
RemoveAllOption = TRUE
else func.AddToCombatLog(target.name & " is already dead, therefore not damaged.")
end if
end if 'Curing all friends
end if 'CharNum <> DONE
end if 'CharNum = -1 (cancelled out of selecting a character to heal)

' Test to see if no creatures left to heal
func.GetNextCreatureInit 2 'Initialize GetNextCreature function to Current Encounter
Test = -1
CharBoolean = False
set ValidCreatureTest = func.getNextCreature 'Initialize string
While (Not ValidCreatureTest Is Nothing)
If ValidCreatureTest.CreatureType = "Undead" then 'if creature is an Undead
Test = InStr(ChannelCharChooseStr,ValidCreatureTest.Name)
' If the undead name is within the command string which selects creatures to damage
if (Test > 0) then
CharBoolean = TRUE
end if
end if
set ValidCreatureTest = func.GetNextCreature
Wend
if CharBoolean = FALSE then CharNum = DONE
func.GetNextCreatureInit 2 'Initialize GetNextCreature function to Current Encounter
n = 0
If CharNum <> DONE then
While n < CharNum 'Reset target counter back to previously selected char for next loop
set target = func.GetNextCreature
n = n + 1
Wend
end if

wend 'End of check to see if done cycling through undead creatures

if (CharDamaged = TRUE) then 'AND (CancelChannelEnergy = FALSE) i.e. If user did not cancel out of entering
any data
qty = cr.GetVariable("LoH")
qty = qty - 2
cr.SetVariable "LoH", qty
func.AddToCombatLog("\b1 \cf2" & cr.Name & " \cf0 \b0 may ChanPosEnergy \b1 " & int(qty/2) & " \b0 X more
before resting; \b1 " & qty & " \b0 \i1 LayOnHands \i0 left.")
else
if (CancelChannelEnergy = TRUE) AND (CharDamaged = FALSE) then
func.AddToCombatLog("\cf1 No creatures selected. \cf0")
end if
end if
else func.AddToCombatLog("There were no Undead in this encounter to damage!")
end if 'CharBoolean = FALSE i.e. there are undead to damage
else func.AddToCombatLog("\cf1 User cancelled channel energy \cf0") 'Die Roll Cancelled
end if 'Die roll loop
else if Choice = "CANCEL" then
func.AddToCombatLog("\cf1 Channel Positive Energy Cancelled. \cf0")
CancelChannelEnergy = TRUE
end if
end if 'Choice = Heal, Damage Undead, CANCEL
end if

If CancelChannelEnergy = FALSE then
func.AddToCombatLog("\b1 Done using Channel Energy. \b0")
end if
func.AddToCombatLog("-----------------------------------------------------------")

in the Stop using feat tab
L = cr.GetClassLevel("Pal")
notimes = (int(l/2))+cr.ChaMod
cr.SetVariable "Channel Energy", notimes
if Hours = 0 then func.AddtoCombatLog cr.Name & "'s Channel Energy uses is reset."

put these in the feat using the edit button and you should have it working

0 new messages