Author Topic: The glories of Stalwart Planar Ally  (Read 7497 times)

Offline Amechra

  • Epic Member
  • ****
  • Posts: 4560
  • Thread Necromancy a specialty
    • View Profile
The glories of Stalwart Planar Ally
« on: December 07, 2012, 03:26:48 PM »
Namely, this feat has a very good prerequisite (5 ranks spellcraft and Planar Touchstone? I'm sold!)

It also has a lovely benefit (any spell or SLA that summons a creature from the plane that one of your Planar Touchstones is on gets +4 AC, +4 to all saves, and has the duration of the effect doubled.)

It's also amazingly open-ended; among other things, if you have a celestial warhorse as your special mount if you're a Paladin? Automatic +4 to AC, Saves, and it comes Extended. That, my friend, is pretty damn sweet.

Throw this on a demon/devil/other outsider that summons pals to make said pals a bit better (hey, +4 AC/Saves helps them live a bit longer...)

Hell, it might even help out Elemental Summoning (or whatever that reserve feat's called; it does specify that it summons the elementals as if they were summoned through the Summon Monster spell, so the right planar touchstone can work wonders...)

"There is happiness for those who accept their fate, there is glory for those that defy it."

"Now that everyone's so happy, this is probably a good time to tell you I ate your parents."

Offline Rebel7284

  • Hero Member
  • ***
  • Posts: 706
    • View Profile
Re: The glories of Stalwart Planar Ally
« Reply #1 on: December 07, 2012, 03:42:11 PM »
Sounds nice on a malconvoker or greenbound summoning druid.

Offline SorO_Lost

  • Epic Member
  • ****
  • Posts: 7197
  • Banned
    • View Profile
Re: The glories of Stalwart Planar Ally
« Reply #2 on: December 07, 2012, 04:03:24 PM »
I think Savage Bard deserves a notation if you've found an Animal on the SNA list SPA applies to.

Also don't forget Worldmeet Glade's +2 to Saves. A focused summoner can create some amazing creatures, but man the paper work sucks. Someone should create a database of all Summonable monsters with a range of check boxes to automatically apply various Summon-Effects to their stat blocks.

Offline Amechra

  • Epic Member
  • ****
  • Posts: 4560
  • Thread Necromancy a specialty
    • View Profile
Re: The glories of Stalwart Planar Ally
« Reply #3 on: December 07, 2012, 05:58:12 PM »
I might be able to whip something up once school gets out; python actually has a nice amount of sweet, sweet GUI options I can use to make the thing look pretty-full; but don't expect any miracles.

Basically, I could set it up so that you'd get one frame that would have the stats, which would have some options in there that bump everything up in that instance of the monster.

I could toss out a dice roller in there too, now that I think about it (learning how to program is the best thing.)
"There is happiness for those who accept their fate, there is glory for those that defy it."

"Now that everyone's so happy, this is probably a good time to tell you I ate your parents."

Offline sirpercival

  • Epic Member
  • ****
  • Posts: 10855
  • you can't escape the miles
    • View Profile
Re: The glories of Stalwart Planar Ally
« Reply #4 on: December 07, 2012, 06:38:47 PM »
Could also do it with Excel macros.  I know VB...
I am the assassin of productivity

(member in good standing of the troll-feeders guild)

It's begun — my things have overgrown the previous sig.

Offline Amechra

  • Epic Member
  • ****
  • Posts: 4560
  • Thread Necromancy a specialty
    • View Profile
Re: The glories of Stalwart Planar Ally
« Reply #5 on: December 07, 2012, 06:45:25 PM »
I know Python a lot better than I do Excel; I might try to teach myself through this kinda project, though.
"There is happiness for those who accept their fate, there is glory for those that defy it."

"Now that everyone's so happy, this is probably a good time to tell you I ate your parents."

Offline Unbeliever

  • Legendary Member
  • ****
  • Posts: 2288
  • gentleman gamer
    • View Profile
Re: The glories of Stalwart Planar Ally
« Reply #6 on: December 07, 2012, 07:11:11 PM »
A focused summoner can create some amazing creatures, but man the paper work sucks.
Yeah, that's usually my complaint.  I actually don't mind doing it every so often, but the idea of statting up new monsters for each spell level is kinda irksome.  I may just try and advance the old ones or something, as I also like the idea of hewing pretty closely to a summoning style. 

Offline Rebel7284

  • Hero Member
  • ***
  • Posts: 706
    • View Profile
Re: The glories of Stalwart Planar Ally
« Reply #7 on: December 07, 2012, 07:36:36 PM »
Amercha, if you are interested, I would be happy to collaborate.  I have about 8 years experience with LAMP programming.  The P primarily being PHP though.

Offline SorO_Lost

  • Epic Member
  • ****
  • Posts: 7197
  • Banned
    • View Profile
Re: The glories of Stalwart Planar Ally
« Reply #8 on: December 07, 2012, 09:25:39 PM »
Yeahee, another program project ^_^.

May I suggest this one actually goes somewhere?
Ouch, that was mean.

I've got an idea on this, why not split it into two parts: the program and the database. First off, I'm glad you like Python and think google using it for some reason means something, and whatever the hell LAMP is I'm sure it *could* be just as impressive as some other language I've never heard of. However, universally it doesn't take a genius to use XML and even the most uneducated forum user can work with it (srsly, <str>14</str> guess what that means!). So while you're debating on program language or bogging down the debate of XML vs SQL vs god-knows-what-else, at least someone that doesn't fancy them selves as a leet programmer wanting to argue ins and outs of stuff  could start listing stat blocks.

Offline Garryl

  • DnD Handbook Writer
  • ****
  • Posts: 4515
    • View Profile
Re: The glories of Stalwart Planar Ally
« Reply #9 on: December 07, 2012, 09:43:30 PM »
LAMP = Linux, Apache (web server), MySQL, PHP
It's a standard package of resources for setting up/running a web server. There's also WAMP (for Windows) and MAMP (for Mac), which are pretty similar.

Offline Rebel7284

  • Hero Member
  • ***
  • Posts: 706
    • View Profile
Re: The glories of Stalwart Planar Ally
« Reply #10 on: December 07, 2012, 09:57:42 PM »
Yeahee, another program project ^_^.

May I suggest this one actually goes somewhere?
Ouch, that was mean.

I've got an idea on this, why not split it into two parts: the program and the database. First off, I'm glad you like Python and think google using it for some reason means something, and whatever the hell LAMP is I'm sure it *could* be just as impressive as some other language I've never heard of. However, universally it doesn't take a genius to use XML and even the most uneducated forum user can work with it (srsly, <str>14</str> guess what that means!). So while you're debating on program language or bogging down the debate of XML vs SQL vs god-knows-what-else, at least someone that doesn't fancy them selves as a leet programmer wanting to argue ins and outs of stuff  could start listing stat blocks.

I think the last one was too big and no one really took up organization.  This one seems more manageable.  :)

Offline Amechra

  • Epic Member
  • ****
  • Posts: 4560
  • Thread Necromancy a specialty
    • View Profile
Re: The glories of Stalwart Planar Ally
« Reply #11 on: December 08, 2012, 01:15:39 AM »
Plus, we aren't arguing languages; we're sharing which ones we know.

XML sounds like it could work...
"There is happiness for those who accept their fate, there is glory for those that defy it."

"Now that everyone's so happy, this is probably a good time to tell you I ate your parents."

Offline Rebel7284

  • Hero Member
  • ***
  • Posts: 706
    • View Profile
Re: The glories of Stalwart Planar Ally
« Reply #12 on: December 08, 2012, 03:16:17 AM »
Just wrote some SQL off the top of my head, so far untested.

- May need to update some of the integer references I am using into actual enums for ease of use.
- May need to add some keys for faster access, like the compound keys on the bridge tables.
- Will see if I can design a simple script soon to populate the DB so I can let other people do the boring data entry work. :P
- Simple XML API forthcoming.

EDIT: Additional notes to self:
- Add is_open_content to be able to hide closed content in case WotC decide to be evil
- Add effect table for the effect of feats and such and a LOT of bridge tables to make it work
- Add spell list (and bridge table) so it can be filtered by spell list and level.
- Add stat to HP is more flexible than add con to hp, update
/EDIT:

CREATE TABLE source (
   `source_id` int unsigned AUTO_INCREMENT PRIMARY KEY,
   `name` varchar (256),
   `type` varchar (256), -- Book, Magazine, Web article
   `sequence_number` int, -- Magazine number
   `edition` varchar(16), -- 3.0, 3.5
   `description` varchar(256)
);

CREATE TABLE monster (
   `monster_id` int unsigned AUTO_INCREMENT PRIMARY KEY,
   `name` varchar(256),
   `source_id` int unsigned FOREIGN KEY references source.source_id,
   `page_number` int,
   `size` tinyint DEFAULT 0,  -- 0 for medium, 1 for large, -1 for small, etc.
   `space` smallint, -- in feet
   `reach`  smallint DEFAULT 0, -- in feet
   `d4` float DEFAULT 0, -- HD
   `d6` float DEFAULT 0, -- HD
   `d8` float DEFAULT 0, -- HD
   `d10` float DEFAULT 0, -- HD
   `d12` float DEFAULT 0, -- HD
   `extra_hp` smallint DEFAULT 0,
   `add_con_to_hp` bool DEFAULT 1, -- Needed for undead and such
   `str` smallint,
   `dex` smallint,
   `con` smallint,
   `wis` smallint,
   `int` smallint,
   `cha` smallint,
   `speed` smallint, -- in feet
   `swim_speed` smallint, -- in feet
   `fly_speed` smallint, -- in feet
   `fly_maneuverability tinyint, -- 0 is Average, +1 good, -1 Poor etc
   `burrow_speed` smallint, -- in feet
   `speed_reduced_by_armor` bool DEFAULT 0,
   `initiative` smallint,
   `fort` smallint,
   `ref` smallint,
   `will` smallint,
   `grapple` smallint,
   `AC` smallint,
   `touch_AC` smallint,
   `flat_footed_AC` smallint,
   `environment` varchar(256),
   `organization` varchar(256),
   `challenge_rating` float,
   `advancement` varchar(256),
   `LA` varchar(256),
   `description` varchar(65,535)
);

CREATE TABLE attack(
   `attack_id` int unsigned AUTO_INCREMENT PRIMARY KEY,
   `attack_name` varchar(64), -- Claw
   `attack_stat` tinyint, -- 1: Str, 2: Dex, 3: Con etc.
   `damage_stat` tinyint, -- 1: Str, 2: Dex, 3: Con etc.
   `attack_type` varchar(256), -- Normal/ranged/touch
   `attack_bonus` smallint,
   `range_increment` smallint,
   `attack_note` varchar(256),
   `damage_dice_type` smallint,
   `damage_dice_number` smallint,
   `damage_bonus` smallint,
   `damage_type` varchar(256), -- P/B/S/Cold/Half-Fire, Half Divine
   `damage_note` varchar(256),
   `is_manufactured` bool,
   `is_primary` bool,
   `is_two_handed` bool, -- Apply 1.5 damage_stat to damage
   `additional_effect_hit_dc` smallint,
   `additional_effect_hit_stat` tinyint,
   `additional_effect_damage_dc` smallint, -- Poison and such
   `additional_effect_damage_stat` tinyint -- 1: Str, 2: Dex, 3: Con etc.
);

CREATE TABLE monster_attack_sequence( -- Bridge table to organize lists of attack sequences
   `monster_attack_sequence_id` int unsigned AUTO_INCREMENT PRIMARY KEY,
   `monster_id` int unsigned FOREIGN KEY references monster.monster_id,
   `name` varchar(128),
   is_full_attack bool
);

CREATE TABLE attack_sequence( -- Bridge table grouping attacks into attack sequences
   `attack_id` int unsigned FOREIGN KEY references attack.attack_id,
   `monster_attack_sequence_id` int unsigned FOREIGN KEY references monster_attack_sequence.monster_attack_sequence_id,
   `attack_modifier` smallint DEFAULT 0,
   `damage_modifier` smallint DEFAULT 0
);

CREATE TABLE feat (
   `feat_id` int unsigned AUTO_INCREMENT PRIMARY KEY,
   `name` varchar(256),
   `description` varchar(16384)
);

CREATE TABLE monster_feat (
   `feat_id` int unsigned FOREIGN KEY references feat.feat_id,
   `monster_id` int unsigned FOREIGN KEY references monster.monster_id,
   `is_bonus` bool DEFAULT 0
)

CREATE TABLE creature_types ( -- List of all types and subtypes
   `creature_type_id` int unsigned AUTO_INCREMENT PRIMARY KEY,
   `name` varchar(256),
   `description` varchar(16384),
   `is_subtype` bool DEFAULT 0
)

CREATE TABLE monster_type(
   `monster_id` int unsigned FOREIGN KEY references monster.monster_id,
   `creature_type_id` int unsigned FOREIGN KEY references creature_types.creature_type_id,
   `is_augmented` bool DEFAULT 0
);

CREATE TABLE skill (
   `skill_id` int unsigned AUTO_INCREMENT PRIMARY KEY,
   `related_stat` tinyint
);

CREATE TABLE monster_skill (
   `monster_id` int unsigned FOREIGN KEY references monster.monster_id,
   `skill_id` int unsigned FOREIGN KEY references skill.skill_id,
   `modifier` smallint
);

CREATE TABLE special_quality(
   `special_quality_id` int unsigned AUTO_INCREMENT PRIMARY KEY,
   `description` varchar(16384),
   `type` varchar(16)
);

CREATE TABLE monster_special_quality(
   `monster_id` int unsigned FOREIGN KEY references monster.monster_id,
   `special_quality_id int unsigned FOREIGN KEY references special_quality.special_quality_id
);

CREATE TABLE special_attack(
   `special_attack_id` int unsigned AUTO_INCREMENT PRIMARY KEY,
   `description` varchar(16384),
   `type` varchar(16),
   `save_dc` smallint,
   `save_stat` tinyint -- 1: Str, 2: Dex, 3: Con etc.
);

CREATE TABLE monster_special_attack(
   `monster_id` int unsigned FOREIGN KEY references monster.monster_id,
   `special_special_attack int unsigned FOREIGN KEY references special_attack.special_attack_id
);
« Last Edit: December 08, 2012, 11:59:28 AM by Rebel7284 »

Offline SorO_Lost

  • Epic Member
  • ****
  • Posts: 7197
  • Banned
    • View Profile
Re: The glories of Stalwart Planar Ally
« Reply #13 on: December 08, 2012, 12:56:01 PM »
Just wrote some SQL off the top of my head, so far untested.

The question to ask you is can I run it natively, or is this worthless until I download and install MySQL, and download and install the PHP packages, and download & install Apache, and sit there debugging Apache to load those PHP files, and then finally copy/paste your code?

Plus, we aren't arguing languages; we're sharing which ones we know.

XML sounds like it could work...
Yeah, anything can use XML and like I said it requires no real programming knowledge to write the data. And once something is made, anyone fo thinks they know how to program can make a program to handle it. Means Rebeal could have his rather extensive server based setup. Average Joe can write it in javascript and literately paste it on any web host or in here and any computer made in the last twenty years and run it. Even Bob can write it in C#, because f*ck Javascript's tear your hair out error handling. Or, in other words, write w/e the hell you wish on your own time, lets sucker some people into doing the real hard part.


Since I'm bored, here is a quick example.
Code: [Select]
Size (string)
Type (string)
Subtypes (string)
Hit_Dice (int[], use as: amount of dice = length/2+i, die size = length/2+i+1 and problem solved)
Hit_Points (int, used only for none-HD/Con changes, also algorithm used can check construct/undead so skip that too)
Initiative (int, used only for none dex based changes)
Land_Speed (int)
Swim_Speed (int)
Burrow_Speed (int)
Fly_Speed (int)
Armor_Armor (int)
Armor_Shield (int)
Armor_Natural (int)
Armor_Deflection (int)
BAB (int)
Attack_Bonuses (int, besides bab/str, like weapon focus's +1)
Damage_Bonus (int, besides str)
Attack_Entry (string; example: "2 Slams {0/1/2} melee 1d6+{3}")
Space_Reach (string)
Special_Attacks (string[], just add them all together)
Special_Qualities ...
Saves_Fort (int, minus Con bonuns)
Saves_Reflex ...
Saves_Will ...
Abilities_Str (int, just parse out bonus)
Abilities_Con ...
Abilities_Dex ...
Abilities_Int ...
Abilities_Wis ...
Abilities_Cha ...
Skills (table<string, int>, again minus ability bonuses)
Feats (string[], would be nice if hyperlinks to a google site search using D&D tools)
Environment (string)
Organization (string)
Challenge_Rating (int)
Treasure (string)
Alignment (string)
Advancement (string)
Level Adjustment (int)
Of course, being XML the (string)/(int) stuff it just a reminder.

To the layman, you want to write in the creature's land speed? Look above, it's "Land_Speed". Make it into a tag like you use on the forums but use carrots (or not, hell notepad has replace): Example: <Land_Speed>60</Land_Speed>. Notice the total lack of "ft." there? Yeah it it's marked (int) only put numbers in the tag, thanks.

Hit_Dice confuses me!
Say your creature has 5d6+1d8, that's <Hit_Dice>5, 6, 1, 8<Hit_Dice>, in this case you're allowed to use commas as we'll expect you to. Anyway, see the pattern? Yeah, super simple eh.

I don't understand Attack_Entry's {#} things.
{#} is a C thing that even Java copied. It's just a marker for replacement. Use {0} if you want the value to be treated as a weapon (ie +17/+12+7), {1} if it's a Primary Natural Weapon (and thus only listed as +X) and {2} if it's Secondary (will be listed as +X-5). {3} will be replaced by the Str_Mod+Bonuses for damage calculations. That way no matter how many times Str changes, we can always recalculate out the new values.

What if it's Incorporeal and uses Charisma instead of Strength?
Welcome to XML, just write the exception in like this
<Attack_Entry Exceptions="Cha_To_Attack, Cha_To_Damage">Incorporeal Touch {1} melee 1d6+{3} negative energy</Attack_Entry>
A program can be set up to read it.

But, what about this exception?
See above, just make sure they all follow suit. Like if you find six monsters with Con to attack and Int to damage, make sure ALL the text used is exactly alike. The program can then be updated to look for and handle the exceptions via GetAttribute and text found.

***

Any needed tweaks? Suggest them, and encourage people to start writing stuff. :D

Offline phaedrusxy

  • DnD Handbook Writer
  • ****
  • Posts: 10717
  • The iconic spambot
    • View Profile
Re: The glories of Stalwart Planar Ally
« Reply #14 on: December 08, 2012, 07:06:26 PM »
It's also amazingly open-ended; among other things, if you have a celestial warhorse as your special mount if you're a Paladin? Automatic +4 to AC, Saves, and it comes Extended. That, my friend, is pretty damn sweet.
This is awesome! I want to make a Cleric/Prestige Paladin just to (ab)use this!  I'm still not sure it makes it worth it to choose a celestial warhorse over a drakkensteed mount, though.  :lmao
I don't pee messages into the snow often , but when I do , it's in Cyrillic with Fake Viagra.  Stay frosty my friends.

Offline Garryl

  • DnD Handbook Writer
  • ****
  • Posts: 4515
    • View Profile
Re: The glories of Stalwart Planar Ally
« Reply #15 on: December 08, 2012, 07:47:23 PM »
It's also amazingly open-ended; among other things, if you have a celestial warhorse as your special mount if you're a Paladin? Automatic +4 to AC, Saves, and it comes Extended. That, my friend, is pretty damn sweet.
This is awesome! I want to make a Cleric/Prestige Paladin just to (ab)use this!  I'm still not sure it makes it worth it to choose a celestial warhorse over a drakkensteed mount, though.  :lmao

Why not do both? What plane(s) are drakkensteeds from?

Offline phaedrusxy

  • DnD Handbook Writer
  • ****
  • Posts: 10717
  • The iconic spambot
    • View Profile
Re: The glories of Stalwart Planar Ally
« Reply #16 on: December 08, 2012, 09:14:52 PM »
It's also amazingly open-ended; among other things, if you have a celestial warhorse as your special mount if you're a Paladin? Automatic +4 to AC, Saves, and it comes Extended. That, my friend, is pretty damn sweet.
This is awesome! I want to make a Cleric/Prestige Paladin just to (ab)use this!  I'm still not sure it makes it worth it to choose a celestial warhorse over a drakkensteed mount, though.  :lmao

Why not do both? What plane(s) are drakkensteeds from?
Prime, I think. They're basically heavy warhorses with a template much like the dragonborn of bahamut template added to them, but the fluff is that they're a "race" of dragon-like creatures. It's a paladin ACF from Dragon Magic. It basically costs you nothing at all to get one as a mount, and they are amazing.
I don't pee messages into the snow often , but when I do , it's in Cyrillic with Fake Viagra.  Stay frosty my friends.

Offline Garryl

  • DnD Handbook Writer
  • ****
  • Posts: 4515
    • View Profile
Re: The glories of Stalwart Planar Ally
« Reply #17 on: December 08, 2012, 10:42:24 PM »
Aren't there some touchstones in Sandstorm on the Prime Material Plane?

Offline phaedrusxy

  • DnD Handbook Writer
  • ****
  • Posts: 10717
  • The iconic spambot
    • View Profile
Re: The glories of Stalwart Planar Ally
« Reply #18 on: December 08, 2012, 10:43:56 PM »
Aren't there some touchstones in Sandstorm on the Prime Material Plane?
:clap I didn't think of that... In my mind, Planar=Extra-Planar...
I don't pee messages into the snow often , but when I do , it's in Cyrillic with Fake Viagra.  Stay frosty my friends.

Offline Amechra

  • Epic Member
  • ****
  • Posts: 4560
  • Thread Necromancy a specialty
    • View Profile
Re: The glories of Stalwart Planar Ally
« Reply #19 on: December 08, 2012, 10:55:33 PM »
Well, you can grab that feat that would let you have a Celestial Drakkensteed mount, thus shifting them to a celestial plane of, essentially, your choice.

Enjoy!
"There is happiness for those who accept their fate, there is glory for those that defy it."

"Now that everyone's so happy, this is probably a good time to tell you I ate your parents."