Monday, December 16, 2024

Should you buy the new (2024) D&D Player’s Handbook?


D&D Party in combat, gold dragon in the background and red dragon in the foreground
    The new edition of Dungeons and Dragons is out, and you may be wondering if it is for you. I hope to provide some enlightenment. I cannot really know your wants and needs, but my first impression of the new Players Handbook for D&D (2024) is that it is one of the best ever. I believe that it is easier to read, more digestible and possibly easier to reference at the table than any other version. That said, I have not read every Player’s Handbook ever, even though I have been playing since the mid nineteen eighties, I stated with Basic D&D but my first actual Player’s Handbook was the third edition one from Wizards of the Coast The last one is rated as a “possibly” since I have not really used the printed book at the table, mostly because I play online and referencing material digitally is a different experience and the tools for online access can cover up a lot of issues one may have with a printed book.

Note: I have now managed to get my hands on a physical copy of the Player’s Handbook (I wanted to support a local store) and I am impressed. The font size is good, clear and legible. Most things should be easy to find at the table. The index is in a larger font also. The one quibble in that conditions are not described together, they are individually listed in the index and if I was using this at the table, I would bookmark page 363 of the glossary (where conditions are listed and enter the page numbers for each one by the listing.


    If one is a new player and do not have the existing books then it is pretty much a no brainer, this is the version if one wants to play official D&D, there are alternatives like Tales of the Valiant from Kobold Press or Advanced Level UP 5e from EnWorld Publishing. I would also be of the opinion that that the classes from the 2014 version of the PHB (Player’s Handbook) would work mechanically alongside their 2024 counterparts, though a player playing a 2014 version of a class alongside a 2024 version of the same class may feel that the older class is not as competitive or flexible as the newer class. This is especially true of martial classes and the new martial feature of weapon masteries.

What is included and how does it compare to the 2014 version?

    The 2024 Players Handbook (PHB 2024) gives roughly the same information as the 2014 version and in a similar order, its style is a lot terser, and the order of some elements are changed and are more complete in the order they are presented. For example, in the 2014 PHB the introduction has a short couple of paragraphs describing the basic game play loop: the DM describes the scene, the players state their intentions, actions are resolved and results narrated. The rules for this in the 2014 PHB are referenced later and spread over 3 chapters.

    In contrast, while the 2024 PHB opens similarly with a brief reference to the origins of D&D and then launches into a description of what you need to play, how the book is structured, a quick reference to the broader published D&D multiverse and what is new in this book. It then covers how to play the game, covering the basic concepts and terms with a note to reference the Glossary at the back for more information. The remaining chapters cover, Class descriptions, Origins (species and background), Feats (special abilities) and Spells in that order. The whole this is pretty tersely written and while the basic flow is clear enough, there are places where a group (or DM) is going to read the rules and when they are putting it all together, find that the rules appear to allow some interactions that they may have trouble justifying in the fiction. Then they are going to have to make a judgement call as to how to interpret that or even rule out certain outcomes. There are a few places where I feel a few more words in the description of something would have made this a bit clearer.

    These are not rules that can be blindly followed and have a satisfactory experience. I am not even sure that its possible to write rules to a game as complex as D&D and achieve such a thing but there have been editions that made the attempt. I think that this make the learning experience better and simpler than before and most thing are in one or two places, the relevant chapter or in the Rules Glossary. One example of the ease of use is that spell lists specific to classes are now in the class descriptions. In 2014 the spells that a class had were in the spells section. One of the downsides of this, is that conditions (usually debilitating effects that characters can suffer, like “stunned” are defined in the glossary section and are not listed separately. I would advise that that if playing from the physical books to make a cheat sheet listing the common conditions. 

    There are no default gods listed, and the book has been stripped of most anything that could be construed as a default background. It would appear to be Wizards of the Coast’s policy now to make setting separate from the players handbook. It will be interesting to see how Wizards handle this going forward. Will they do setting books or will they add more setting material to adventure books.

Thoughts

    Overall, I believe that this is one of the best versions of the Player’s Handbook ever, clear, concise and everything should be easy to reference and find at the table. With the exceptions I have noticed for some rules interactions and things that one might reference often like the conditions. I think that the power level of the classes is higher than the 2014 average but that many groups could play with both versions without much issue. Old adventures should run satisfactorily though the DM may want to change the boss fights to account for new abilities. It will be interesting to see what the new Monster Manual brings to the table. 

    One of the areas where I have a real issue with the new book is in the backgrounds section. I believe the given list of backgrounds is limited, in part because not all origin feats are of equal utility. Some are much better to have than others, depending on the campaign. I believe that the game would be much better if it allowed custom backgrounds explicitly in the Players Handbook instead of an option tucked away in the Dungeon Master Guide. There are explicit instructions on how to use backgrounds from other books in chapter 2 and this is referenced in the backgrounds chapter. It is easy to infer how to create a custom background and I think it should be the default but consult with your Dungeon Master. 

    One sidebar that I feel is missing is an explicit callout to subclasses. Each Class features list as a sentence at the end of the Level 3 Subclass feature that says (for the barbarian class), “For the rest of your career, you gain each of your subclass’s features that are of your Barbarian level or lower”. This is the only reference to allowing older subclasses to be used in the game. I think it could have used a more explicit call out. There are also a few rules interaction that if taken too literally can lead to some rather silly places, the stealth rules are a particular example of this. There are also a few spells that are open to broken exploits I would refer the reader to Treantmonk’s Temple on YouTube for more details.


Overall

    If you are perfectly happy with the existing rules there is little reason to change here. This is a variant of the existing game not a new version. If you are new to D&D I have no hesitation in recommending this book. If you want to refresh and add something new to the exiting rules this could be worth checking out. But you can look before you buy as can check out the free rules on D&DBeyond and there will be an open source SRD in 2025.


Sunday, November 10, 2024

Is Conjure Elementals Really Broken


Does Conjure Minor Elementals damage apply to multi target cantrips like Eldritch Blast?


Hi all,

Treantmonk a prominent YouTuber recently did a video (recent as in the last 3 months 😊) on how the spell Conjure Minor Elementals breaks the game of D&D. I think he may be interpreting the rules incorrectly.

Now the basis of his argument centres around the example of a valor bard build with a one level dip in warlock.

The Warlock dip is to access Eldritch Blast cantrip and the Valor Bard is because Conjure Minor Elements is not natively on the bard spell list, but they can grab it at level 10 with the Magical Secrets feature, and they get the cantrip Shillelagh also. The valor subclass can also, at level 6, if they take the attack action, they can swap out an attack from the Extra Attack feature with a cantrip.

To set up the whole thing, the bard is using the cantrip Shillelagh to make their attacks and then swap out an extra attack to cast Eldritch Blast, and since their initial attack (using shillelagh) uses a club, which is a light weapon, that allows an extra off hand attack with the bonus action, with another light weapon.

At the end of all of this, at level 11, the Valor Bard 10/Warlock 1 gets 6 attacks per turn and with Conjure Minor Elementals up and running (Plus 4d8 extra damage) they get six attacks per turn.

• 3 from Eldritch Blast
• 1 from the club attack via Shillelagh
• and 1 from the light weapon bonus attack

Or do they?

My argument is that that bard/Warlocks only gets 3 attacks, they make 6 attack rolls but only 3 attacks.

That is, Eldritch Blast as a cantrip give one attack within the meaning of the rules even as it gives multiple attack rolls. There is a reason that the rules glossary distinguishes between an attack and an attack roll.

First let’s look at the relevant text of the spells in question:

"Shillelagh

Transmutation Cantrip (Druid)
Casting Time: Bonus Action
Range: Self
Components: V, S, M (mistletoe)
Duration: 1 minute

A Club or Quarterstaff you are holding is imbued with nature’s power. For the duration, you can use your spellcasting ability instead of Strength for the attack and damage rolls of melee attacks using that weapon, and the weapon’s damage die becomes a d8. If the attack deals damage, it can be Force damage or the weapon’s normal damage type (your choice).

The spell ends early if you cast it again or if you let go of the weapon.

Cantrip Upgrade. The damage die changes when you reach levels 5 (d10), 11 (d12), and 17 (2d6).
"

Ok, this seems to be ok and allows the Attack Action to be conducted using Shillelagh and since the character has Extra Attack, they can make 2 attacks in a turn plus a bonus attack with a light weapon on turns other than the one they cast Shillelagh.

So far, so good, what about Eldritch Blast?

"Eldritch Blast

Evocation Cantrip (Warlock)
Casting Time: Action
Range: 120 feet
Components: V, S
Duration: Instantaneous

You hurl a beam of crackling energy. Make a ranged spell attack against one creature or object in range. On a hit, the target takes 1d10 Force damage.

Cantrip Upgrade. The spell creates two beams at level 5, three beams at level 11, and four beams at level 17. You can direct the beams at the same target or at different ones. Make a separate attack roll for each beam.

"


Here there is some interesting wording. The Casting time is one action but not terribly relevant since the level six Extra attack feature allows the substitution of a cantrip for one of these attacks.

Eldritch Blast however in the main body refers to the cantrip making a ranged spell attack as the effect of the spell but the extra beams are not referred to as separate attacks but as attack rolls. My view is that the cantrip only counts as a single attack, even if directed at multiple targets.

Now looking at Conjure Minor Elementals and the glossary definitions of Attack and Attack Rolls:


CONJURE MINOR ELEMENTALS

Level 4 Conjuration (Druid, Wizard)
….
You conjure spirits from the Elemental Planes that flit around you in a 15-foot Emanation for the duration. Until the spell ends, any attack you make deals an extra 2d8 damage when you hit a creature in the Emanation. This damage is Acid, Cold, Fire, or Lightning (your choice when you make the attack).
…..”

The relevant section of this spell is bolded, it adds the damage to any attack.

Now for the rules of the attack action and attack roll.

When you take the Attack action, you can make one attack roll with a weapon or an Unarmed Strike. …….

An attack roll is a D20 Test that represents making an attack with a weapon, an Unarmed Strike, or a spell. See also chapter 1 (“D20 Tests”).”

There is distinction drawn between Attack and Attack Rolls, what does the general rules say about making an attack.

"Making an Attack

When you take the Attack action, you make an attack. Some other actions, Bonus Actions, and Reactions also let you make an attack. Whether you strike with a Melee weapon, fire a Ranged weapon, or make an attack roll as part of a spell, an attack has the following structure: ….."

This would seem to imply that a spell that makes an attack roll is an attack for the purposes of the general procedures of the game. So Eldritch Blast is an Attack for the purposes of CME but what about the beams?

it also implies that the Extra Attack feature confers an attack.

Well, here I want to look at what Hunter’s Mark and Hex have to say – Which was what triggered my thoughts on this matter).

"Hunter’s Mark

Level 1 Divination (Ranger)….You magically mark one creature you can see within range as your quarry. Until the spell ends, you deal an extra 1d6 Force damage to the target whenever you hit it with an attack roll. You also have Advantage on any Wisdom (Perception or Survival) check you make to find it….

Hex

……You place a curse on a creature that you can see within range. Until the spell ends, you deal an extra 1d6 Necrotic damage to the target whenever you hit it with an attack roll. Also, choose one ability when you cast the spell. The target has Disadvantage on ability checks made with the chosen ability……"

These spells specifically call out attack rolls, so the would apply to a spell like Eldritch blast but they do not use the word attack like Conjure Minor Elementals does.

With all of this considered I believe that Conjure Minor Elementals only adds damage to an attack and that Eldritch Blast or any other multi-target cantrip is only a single attack for the purposes of this spell. Otherwise, why make the distinction in the Eldritch Blast spell between the Attack in the body of the spell but refer to the extra beams as “Attack Rolls” and to refer to the damage in Hunter’s Mark and in Hex as applying to the “Attack Rolls”.

So, in the linked video, at 9 minutes in the CME damage was calculated at 90, 5 attacks with an additional 4d8 => 4.5*5= 18 per attack for a total of 90 extra damage.

My argument is that this damage should be only added 3 times.

Once for the cantrip, once for the club attack and once for the bonus light weapon attack.

For a total of 54 which is still very good but not as broken as the 90 and it is only going to scale with the level slot used to cast the spell, not with that and the number of beams supplied by Eldritch Blast.

What do people think? is my reasoning too convoluted? Have I completely missed the point.

Let me know in the comments.

Even if you do not agree that my interpretation is correct "Rules as written", I think it would a good ruling to make before trying out other nerfs.

Saturday, November 9, 2024

 

Change of topics

Greeting all,

This blog was a place where I used to keep some lessons learned from various task that gave some trouble in my software career.

Now, I am retired from that, and I want to write something about games and Dungeons and Dragons.

So I will be mostly posting on that an other gaming topics that I want to get off my chest.

UngainlyTitan

Thursday, October 7, 2010

A look at Entity Framework

What I have been doing since.

Been a while since I posted here. Blame real life and some computer issues. Purchased a new laptop as spring with the intension of it being my new development machine and that I would make more use of virtual machines and such tricks.
For the last month it has been unavailable to me as it was randomly crashing. I have been on the phone with Dell tech support several times for hours on end the issue is still unresolved but meanwhile I returned to my old  machine which in spite of making the occasional funny fan noise it is still soldiering on. I rebuilt my database server on another machine and need to look into backup solutions as my 1TB NAS disk is filling up faster than I would like.

Exploration of Entity Framework

One of the things I have been researching recently is Entity Framework, this is mainly because i have been considering of applying it to a project i have been working on. However, I have noticed a couple of things on my explorations on the web; most of the code is in C# and the examples are either, trivial or very complex. So after some research I have decided to purchase a book. In general I think to learn better from books if I need more in-depth knowledge. So I choose “Entity Framework 4.0 Recipes – A problem-Solution Approach” by Larry Tenny and Zeeshan Hirani. Of course it is written in C#, one wonders is there a deliberate policy of deprecating vb.net or do they simply consider that all serious programmers are using C#. Anyway I decide it would be fun for me to rewrite all the listings in vb.net. This would serve two purposes; it would consolidate my knowledge of C# and learn some new tricks in vb.net. I even emailed Apress asking permission to list here, the vb.net translations of the code listings in the book (Never heard anything back – so I guess I won’t go there).
So far I have just completed chapter 2 which covers various scenarios concerning the way different database table structures could be modelled in the Entity Framework. Chapter 2 covers the following scenarios:
  • Creating a simple model
  • Creating a model from an Existing database
  • Modelling a Many to Many relationship with no payload
  • Modelling a Many to Many Relationship with a payload
  • Modelling a Self-Referencing Relationship
  • Splitting a Entity across multiple Tables
  • Splitting a Table across multiple Entities
  • Modelling Table per Type inheritance
  • Using Conditions to filter an ObjectSet
  • Modelling Table per Hierarchy inheritance
  • Modelling Is-a and Has-a relationships between two Entities
  • Creating, Modifying and Mapping Complex Types.
One tool that I have found invaluable is a C# to VB convertor. The content is pretty clear and gives the step by step instructions to complete the tasks. All the code examples are console applications and so far the code to write data to the database and retrieve the data and display the returned data in the console, are given in the listing for each section.
Now I am not going to create tutorials on Entity Framework. I don’t yet know enough about the topic and the basics are well covered on MSDN, what I intend to do in this and future posts is create a guide to the “Entity Framework Recipes” book mentioned above. So basically I’ll list the topics covered in a chapter and include some code, the original C# listing and my vb.net translation.
So if we take the data tables shown in  below.Tables used in example
So the business table is a base set of information and the Retail and eCommerce tables hold additional information that relate to that type of business.



When you initially create a new Entity Framework mapping you get a similar set of entities.
Initial Entity Framework mapping

Here we have the same tables as Entities in the Entity Framework mapping created by default. The relationships will be edited  and replaced by inheritance relationships.
Delete the existing relationships and replace with inheritance relationships. Also remove the primary key entries in the inherited entities and then check that the mappings are still correct.



The final version of the used in the application looks like this.
Entity Framework Final Mapping
The C# code listing to write the data to the database and then retrieve it and display it to the console looks like the following code.
          using (var context = new EFRecipesEntities())
            {
                var business = new Business
                {
                    Name = "Corner Dry Cleaning",
                    LicenseNumber = "100x1"
                };
                context.Businesses.AddObject(business);
                var retail = new Retail
                {
                    Name = "Shop and Save",
                    LicenseNumber = "200C",
                    Address = "101 Main",
                    City = "Anytown",
                    State = "TX",
                    ZIPCode = "76106"
                };
                context.Businesses.AddObject(retail);
                var web = new eCommerce
                {
                    Name = "BuyNow.com",
                    LicenseNumber = "300AB",
                    URL = "www.buynow.com"
                };
                context.Businesses.AddObject(web);
                context.SaveChanges();

            }
            using (var context = new EFRecipesEntities())
            {
                Console.WriteLine("\n--- All Businesses ---");
                foreach (var b in context.Businesses)
                {
                    Console.WriteLine("{0} (#{1})", b.Name, b.LicenseNumber);

                }
                Console.WriteLine("\n--- Retail Businesses ---");
                foreach (var r in context.Businesses.OfType<Retail>)
                {
                    Console.WriteLine("{0} (#{1})", r.Name, r.LicenseNumber);
                    Console.WriteLine("{0}", r.Address);
                    Console.WriteLine("{0}, {1} {2}", r.City, r.State, r.ZIPCode);

                }
                Console.WriteLine("\n--- eCommerce Businesses ---");
                foreach (var e in context.Businesses.OfType<eCommerce>)
                {
                    Console.WriteLine("{0} (#{1})", e.Name, e.LicenseNumber);
                    Console.WriteLine("Online address is: {0}", e.URL);
                }
            }
        



The same code in VB.Net



  Using context As New EFRecipesEntities
            Dim business = New  Business  With {.Name = "Corner Dry Cleaning", _
                                              .LicenseNumber = "100x1"}
            context.Businesses.AddObject(business)
            Dim retail = New  Retail  With {.Name = "Shop and Save", _
                                          .LicenseNumber = "200C", _
                                          .Address = "101 Main", _
                                          .City = "Anytown", .State = "TX" _
                                         , .ZIPCode = "76106"}
            context.Businesses.AddObject(retail)
            Dim  web = New  eCommerce  With {.Name = "BuyNow.com", _
                                          .LicenseNumber = "300AB", _
                                          .URL = "www.buynow.com"}
            context.Businesses.AddObject(web)
            context.SaveChanges()

        End Using
        Using  context = New  EFRecipesEntities
            Console.WriteLine(ControlChars.Lf & "--- All Business ---")
            For Each b In context.Businesses
                Console.WriteLine("{0} (#{1})", b.Name, b.LicenseNumber)

            Next
            Console.WriteLine(ControlChars.Lf & "--- Retail Business ---")
            For Each r In context.Businesses.OfType(Of Retail)()
                Console.WriteLine("{0} (#{1})", r.Name, r.LicenseNumber)
                Console.WriteLine("{0}", r.Address)
                Console.WriteLine("{0}, {1} {2}", r.City, r.State, r.ZIPCode)
            Next
            Console.WriteLine(ControlChars.Lf & "--- eCommerce Business ---")
            For Each e In context.Businesses.OfType(Of eCommerce)()
                Console.WriteLine("{0} (#{1})", e.Name, e.LicenseNumber)
                Console.WriteLine("Online address is: {0}", e.URL)
            Next
        End Using
  

Thursday, June 24, 2010

A funny thing about Web Services in Visual Studio 2010

As mentioned in my profile, my primary activity these days is caring for mother but I have a couple of projects on the go as well when I get the chance to code. One of these project is porting a previous project to VB.NET 2010, party to learn 2010, partly to take advantage of some of the .NET 4.0 technologies to make the application more maintainable and efficient.

So far I have managed to port over all the source code and the existing NUnit tests, converting the NUnit tests to MSUnit Test as I go. So I had all my unit test running (or so I thought, it turns out I had missed some) and I tried running the application. So splash screen appears and login then I select one of the user screen from the main menu and bang! the application crashes.

The application has a dependency on Adobe Reader in several screens and Adobe does not  play well in 64bit environments. So then I get that working by setting the target CPU to x86 and now I can open the application view the screens but now there is no data on several. It turns out that the Web Services are throwing errors.

WebServiceError

So I googled the error and got a lot of info on checking that the .asmx file markup refers to the correct namespace and the code behind class is correctly named, also that the namespaces match. All of this I played around to no effect but of the 3 services one was working.

To no avail, it turns out that the code behind should be in an App_Code folder, even though Visual Studio did not create one when I created the .asmx file.

Must play around with this  some more.

Wednesday, June 9, 2010

For the Next Time I am moving a SQL Database to another server

Not a lot to comment on this; there is a good discussion here but the key bits to lookup on Books Online are:

The stored proceedure sp_change_users_login, look up the topic Troubleshooting Orphaned Users and the proceedure sp_validatelogins. That should be enough to get it all working when I need to to do it about 2 to 3 years as that seems to be the pattern of these things.

Tuesday, May 25, 2010

The Joy of HTML

Or more precisely the joy of xhtml, Now I had a website back in the mid nineties. it is long defunct though I still have the files, having found them on an old drive I rehabilitated recently. More specifically I am using “HTML4 for Dummies” by Ed Tittel and Stephen Nelson Jame and also “HTML, XHTML & CSS” by Ed Tittel and Jeff Noble. The site is for my brothers mountaineering web site; He manages most of his activities through face book and email.
So he wanted a simple page, with very little configuration, allowing contact but protecting his email from spam harvesters. The page is pure HTML and CSS for layout. So far, we are still tweaking it. it looks good on IE8 and Firefox. I still need to check on it in Safari on the iphone and the Palm Pre.
To hide the mail I used the catchpa service provided by Google called MailHide. By default this produces an email address that looks like “nam…@domain.com” with the ellipsis providing the link. Clicking on the link opens a pop up window that has the captcha and solving this reveals the email as an embedded mailto: link.  Since we did not like this we edited the generated code to replace the ellipsis with an image and removed the remaining original text of the email address.
The other problem, I have is with the Facebook like button. Here I was getting a popup window with error and nothing else much, no error message or anything of help. Some Googling later got me to this blog entry which I hope will solve the issue. I have to test that part yet.
Turns out that the problem (may have been blindness on my part since I did not see the textbox to enter the url for the site hosting the like button. It all seems to be working now. Firefox allows one to see who has liked the site but IE8 does not.

CiV VII The first 100 hours

First Impressions   I purchased Civ VII from Steam earlier this summer when it was on sale and almost immediately pulled an all-night sessio...