New version of celestial button
Moderators: dorpond, trevor, Azhrei, giliath, Gamerdude, jay, Mr.Ice, lmarkus001
Forum rules
Discussion regarding lmarkus001's framework only. Other posts deleted without notice!
Discussion regarding lmarkus001's framework only. Other posts deleted without notice!
New version of celestial button
Can anyone make a copy of the celestial button for applying a template, but to make it apply the savage creature template from savage tide? This would be for pathfinder.
Specifically:
+2 Natural Armor
+Bite attack (1d8 damage)
DR 5/Magic
Darkvision 60 feet
Immune to disease, exhaustion, mind-affecting, stun, and pain related effects.
Acid resistance 10
Ferocity (Die hard)
Base stat change
+4 str
+4 con
-6 Int (min 1)
If anyone can help a huge Thanks!!!
Specifically:
+2 Natural Armor
+Bite attack (1d8 damage)
DR 5/Magic
Darkvision 60 feet
Immune to disease, exhaustion, mind-affecting, stun, and pain related effects.
Acid resistance 10
Ferocity (Die hard)
Base stat change
+4 str
+4 con
-6 Int (min 1)
If anyone can help a huge Thanks!!!
Re: New version of celestial button
What version of the framework are you using? I will try making it.
Re: New version of celestial button
Everything is working now. You can thank Aliasmask for the bit that sets the skills. Make sure that there are no RacialModifiers for any of the skills included in this template as this will wipe them out and set them to template standard only. This can be used for 3.5E currently(you can tweak the skills to make it applicable to Pathfinder). Just use Aliasmask's RPEdit tool to edit the libdnd35Pathfinder token using the below. Then make a copy of the PF Add Celestial Template button on the campaign window and change the macrolink part to point to this macro instead.
Code: Select all
@@ @applyDDSavageTemplate
@PROPS@ fontColor=black;autoExecute=true;fontSize=1.00em;sortBy=;color=default;playerEditable=false;applyToSelected=true;group=;tooltip=;minWidth=
<!-- Requirements: if the base creature has any of the following abilities
they must be formatted as shown here:
SR (uppercase only; if in SpecialQual the template's SR is ignored)
"darkvision" (upper or lowercase in SpecialQual)
"NA" (uppercase only; in SpecialQual or SpecialATK it means "none")
"smite good #/day" (lowercase only; in SpecialQual)
Sight type on the Config tab of the token editor must include "Darkvision"
-->
[H: macargs = macro.args ]
[H, if( json.type(macargs) == "UNKNOWN" || json.isEmpty(macargs) ), CODE: {
[ tToken = currentToken() ]
[ showWarn = 1 ]
} ; {
[H: tToken = json.get(macargs, "tokenID")]
[H, if( tToken == "" ): tToken = currentToken(); switchToken( tToken ) ]
[H: showWarn = json.get(macargs, "showWarn")]
}]
[H, if(showWarn): cancel = input( "Warning|This will permanently alter the selected token, are you certain you wish to continue?||LABEL|SPAN=TRUE" ); "" ]
[H, if(showWarn): abort( cancel ); "" ]
[H: output = "<h2><b>Savage Creature</b> (CR +1)</h2><br />It may have once been a man, but now its gray skin, strangely flopping arms and legs, and the vacant-eyed vestigial head hanging from its neck make the creature anything but. Yet perhaps worst of all is the creature's mouth, a cavernous wound in its twisted face filled with a twisting landscape of teeth, a mouth designed for one thing only—the tearing offlesh from the bone.<p><h3 align='center'><b>Rebuild Rules</b></h3><b>Armor Class</b>: Natural Armor +2<br /><b>Attack</b>: Bite 1d8 damage for Medium sized creature<h4 align='center'><b>Special Attacks</b></h4><ul><li><b>Death Throes (Su)</b> (When a savage creature dies, it can immediately make a bite attack, snapping at any one creature in reach just before it succumbs.)</li><li><b>Disease(Su)</b> (A creature bitten by a savage creature must make a Fortitude save (DC 10 + 1/2 savage creature's racial HD + savage creature's Con modifier) or contract a supernatural disease called savage fever.)</li></ul><h4 align='center'><b>Special Qualities</b></h4><ul><li><b>Afflicted (Ex)</b> (Once transformed into a savage creature, a Greater Restoration spell causes the victim to revert to normal, provided the caster succeeds on a caster level check (DC = 10 + 1/2 the savage creature's hit dice + the savage creature's Charisma modifier).)</li><li><b>Ferocity (Ex)</b> (A savage creature fights without penalty while disabled and dying.)</li></ul><b>Senses</b>: darkvision 60 ft.<br /><b>Defensive Abilities</b> DR 5/magic, energy resistance acid 10, Immunity to disease, exhaustion, fatigue, mind-affecting, stunning, and pain-related effects<br /><b>Abilities</b>: Str +4, Con +4, Int -6(minimum 1)<br /><b>Skills</b>: Escape Artist +4 racial bonus, Intimidate +4 racial bonus, Listen +4 racial bonus, Spot +4 racial bonus, Disguise -4 penalty, Diplomacy -4 penalty, Gather Information -4 penalty<br /><b>Alignment</b>: Chaotic Evil<br /><b>Challenge Rating</b>: +1<br /><b>Level Adjustment</b>: +3 </p>"]
[H: label = getGMName() ]
[H: label = if(label=="", "Savage Creature", label + " (Savage Creature)") ]
[H: newER = 10 ]
[H: newDR = 5 ]
[H: tECL = getStrProp(Levels, "ECL") ]
[H, if(Level > 0), code: {
[ newER = 10 ]
[ newDR = 5 ]
[ newNote = "Immune to disease, exhaustion, fatigue, mind-affecting, stunning, and pain-related effects" ]
[ tECL = tECL+"+1" ]
[ Levels = setStrProp(Levels, "ECL", tECL) ]
} ]
<!-- force the string property into a JSON object -->
[H: tDRER = json.merge(DRER, "{}") ]
[H: tNote = json.get(tDRER, "Damage Reduction") ]
[H: tNote = json.set(tNote, "Note", newNote, "Magic", newDR) ]
[H: tER = json.get(tDRER, "Energy Resistance") ]
[H, if(json.get(tER,"Acid") < 10): tER = json.set(tER, "Acid", newER) ]
[H: DRER = json.set("{}", "Damage Reduction", tNote, "Energy Resistance", tER) ]
[H, MACRO( "subRecalcDR@this" ): json.set( "{}", "Token", tToken ) ]
[H: newSQ = "" ]
[H: newDV = "" ]
[H, if(indexOf(SpecialQual,"darkvision") == -1): newDV = "darkvision 60 ft, " ]
[H, if(indexOf(SpecialQual,"afflicted") ==-1): newAfflicted = "Afflicted (Ex), " ]
[H, if(indexOf(SpecialQual,"ferocity") ==-1): newFerocity = "Ferocity (Ex), " ]
[H, if(newDV != ""): newSQ = listAppend(newAfflicted, newFerocity, newDV) ]
[H, if(newSQ != ""), code: {
[ if(SpecialQual == "NA"): SpecialQual = "" ]
[ SpecialQual = listAppend(SpecialQual, newSQ) ]
[ if(newDV!=""): setSightType("Darkvision") ]
} ]
[H: oldSA = SpecialATK ]
[H, if(oldSA == lower("NA")): oldSA = "" ]
[H: index = indexOf(oldSA, "death throes") ]
[H, if(index == -1), code: {
[ newSA = listAppend(oldSA, "death throes(Su)") ]
}; {
[ newSA = oldSA ]
} ]
[H: SpecialATK = newSA ]
[H: oldSA = SpecialATK ]
[H, if(oldSA==lower("NA")): newSA = "" ]
[H: index = indexOf(oldSA, "disease") ]
[H, if(index == -1), code: {
[ newSA = listAppend(oldSA, "disease(Su)") ]
}; {
[ newSA = oldSA ]
} ]
[H: SpecialATK = newSA ]
[H: baseSpeed = json.get(Speed, "base")]
[H: spd = baseSpeed + 10]
[H: Speed = json.set(Speed, "base", spd)]
[H, MACRO("subRecalcMovement@this"): "Token=" + tToken]
[H: Level = Level + 3]
[H: tStrength = getProperty("Strength")]
[H: tStrength = if( tStrength == "", 4, tStrength + 4 )]
[H: setProperty("Strength", tStrength)]
[H: tConstitution = getProperty("Constitution")]
[H: tConstitution = if( tConstitution == "", 4, tConstitution + 4 )]
[H: setProperty("Constitution", tConstitution)]
[H: tIntelligence = getProperty("Intelligence")]
[H: tIntelligence = if( tIntelligence == "", 1, max(1,tIntelligence - 6) )]
[H: setProperty("Intelligence", tIntelligence)]
[H: tNaturalMod = getStrProp(ArmorClass, "NaturalMod")]
[H: tNaturalMod = if( tNaturalMod == "", 0, tNaturalMod )]
[H: ArmorClass = setStrProp(ArmorClass, "NaturalMod", tNaturalMod + 2)]
[H, MACRO( "subRecalcAC@Lib:libDnD35Pathfinder" ): "Token=" + currentToken() ]
[H: subtypes = json.get(Race,"subtype")]
[H: subtypes = json.union(subtypes,json.append("","Chaotic","Evil"))]
[H: Race = json.set(Race,"subtype",subtypes)]
[H: Feats=setStrProp(Feats, "DieHard", 1)]
<!-- Skills Begin -->
[H: skillMods = json.set("{}","Escape Artist",4,"Intimidate",4,"Listen",4,"Spot",4,"Disguise",-4,"Diplomacy",-4,"Gather Information",-4)]
[H: tempArray = "[]"]
[H, foreach(skillObj,SkillsJ), code: {
[H: name = json.get(skillObj,"name")]
[H, if(json.contains(skillMods,name)): skillObj = json.set(skillObj,"racialmod",json.get(skillMods,name))]
[H: tempArray = json.append(tempArray,skillObj)]
}]
[H: SkillsJ = tempArray]
<!-- Skills End -->
<!-- Attack Begins -->
<!-- Name=Bite ; Primary=1 ; Quantity=1 ; Manufactured=0 ; AtkBonus=0 ; CritMult=2 ; CritRange=20 ; Damage=1d8 ; DmgMax=4 ; DmgExtra=0d6 ; DmgExtraCrit=0d10 ; DmgExtraName= ; DmgBonusCap=50 ; TwoHanded=0 ; Finesse=0 ; OHLight=2 ; Ranged=0 ; -->
[H: Weapon12 = "Name=Bite ; Primary=1 ; Quantity=1 ; Manufactured=0 ; AtkBonus=0 ; CritMult=2 ; CritRange=20 ; Damage=1d8 ; DmgMax=4 ; DmgExtra=0d6 ; DmgExtraCrit=0d10 ; DmgExtraName= ; DmgBonusCap=50 ; TwoHanded=0 ; Finesse=0 ; OHLight=2 ; Ranged=0 ; "]
[H: setGMName(label) ]
[R,S,G: output]
!!
Last edited by neofax on Sun Jul 03, 2011 12:22 am, edited 1 time in total.
Re: New version of celestial button
Thanks so much!! This will make my savage tides game so much easier
- lmarkus001
- Great Wyrm
- Posts: 1867
- Joined: Sat Mar 29, 2008 12:30 am
- Location: Layfayette Hill, PA
Re: New version of celestial button
Nice, I will add this into the base framework too.
One question, is this a template that should be available to be applied to summoned creatures (like Celestial and Fiendish)?
One question, is this a template that should be available to be applied to summoned creatures (like Celestial and Fiendish)?
Re: New version of celestial button
Interesting...
I tried using the Apply Young Template button, and I drew this error...
Unknown macro "LibChgSize@Lib:libDnD35Pathfinder
FYI
I tried using the Apply Young Template button, and I drew this error...
Unknown macro "LibChgSize@Lib:libDnD35Pathfinder
FYI
I no longer believe that MapTools is usuable or intended just for programmers. MapTools is for everyone.
Re: New version of celestial button
It wouldn't normally be available for a summoned creature. Its more a disease or plague.
- lmarkus001
- Great Wyrm
- Posts: 1867
- Joined: Sat Mar 29, 2008 12:30 am
- Location: Layfayette Hill, PA
Re: New version of celestial button
Oh ho! I had started work on a routine to handle size change on any map type, that is probably there because I got part way but did not complete... I will add that to the be fixed and the to be finished lists lolParadox wrote:Interesting...
I tried using the Apply Young Template button, and I drew this error...
Unknown macro "LibChgSize@Lib:libDnD35Pathfinder
FYI
Re: New version of celestial button
@Paradox: I am pretty sure I wrote a fix for that template somwehere here on the boards.
Many of the templates now don't really require a full blown template as most of it can be handled via a ActiveMod. If only one day we could have weapons in a JSON format so we could on the fly manipulate them via a switch on the attack dialog. This would make one-handed/two-handed and thrown weapons ohh so much easier.
Many of the templates now don't really require a full blown template as most of it can be handled via a ActiveMod. If only one day we could have weapons in a JSON format so we could on the fly manipulate them via a switch on the attack dialog. This would make one-handed/two-handed and thrown weapons ohh so much easier.