2007-06-26 Craft Skill

The D&D Craft rules suck. They are too damn complicated & hard to predict. I think it would have been better to provide a simple formula based on the assumption that people Take 10. I need to write some code to figure out how long something will take given its price, the DC, and the skill. I hate it when the rules are so complicate that you cannot guestimate time and cost.

I think this is what happened to the authors of CrucibleOfFreya. There’s a smith having Craft (armor) +4 who will provide the party with a plate armor if they rescue his daughter. According to the craft rules, we determine the price (1500 gp = 15000 sp), and the DC (10 + 8 = 18).

Some Emacs code to help me out:

(defun d (x y)
  "Roll XdY."
  (let ((total 0))
    (dotimes (i x)
      (setq total (+ total 1 (random y))))

;; (d 1 20) => 12

(defun craft (dc skill price)
  "Craft something of a given DC using a SKILL given its PRICE in gold pieces.
Example: Craft (armor) +4, DC 18, 1500 gp for a village smith trying to
craft a suit of plate mail."
  (interactive "nDC: \nnSkill: \nnPrice (gp): ")
  (let ((progress 0)
	(target (* price 10))
	(raw (/ price 3))
	(cost 0)
	(week 0))
    (setq cost raw)
    (while (> target progress)
      (setq week (1+ week))
      (let ((roll (+ (d 1 20) skill)))
	(cond ((>= roll dc)
	       (setq progress (+ progress (* roll dc))))
	      ((<= roll (- dc 5))
	       (setq cost (+ cost (/ raw 2)))))))
    (message "It takes %d weeks and %d gp to craft." week cost)))

;; (craft 18 11 1500) => (51 1250)

(defun sample (func)
  "Average 100 calls of FUNC.
FUNC must be a function that takes no argument and returns a list of numbers."
  (let ((total nil)
	(sample-size 100))
    (dotimes (n sample-size)
      (let ((result (funcall func)))
      (dotimes (i (length result))
	(let ((r (assq i total)))
	  (unless r
	    (setq total (cons (cons i 0) total)
		  r (car total)))
	  (setcdr r (+ (cdr r) (nth i result)))))))
    (nreverse (mapcar (lambda (x) (/ (cdr x) sample-size)) total))))

;; (sample (lambda () '(5 6))) => (5 6)
;; (sample (lambda () (list (random 10) (random 20)))) => (4 7)

Now we’re ready to roll!

Ordinary equipment (+0), Craft (armor) +4 as written:

(apply 'message "It takes %d weeks and %d gp on average."
       (sample (lambda () (craft 18 4 1500))))

⇒ It takes 112 weeks and 13042 gp on average.

Assuming enough aids to grant him a +4 bonus on average, a maxed out Craft skill ranks(+9), skill focus on that very skill (+3), and masterwork equipment (+2):

(apply 'message "It takes %d weeks and %d gp on average."
       (sample (lambda () (craft 18 18 1500))))

⇒ It takes 29 weeks and 500 gp on average.

It remains a formidable task!

I think for the purpose of this adventure, we’ll have to assume that Voril the smith has a nearly finished plate mail hidden in his closet.



I think you missed a couple of points 😉

  • there’s a reason why you can’t buy that expensive equipment in villages of that size
  • not knowing the smith’s Int I’ll assume it’s a +0 (since +9 is your maxed out skill total) meaning the smith has 4 ranks and most probably is a maxed out Level 1 expert. So basically we are dealing with an armoursmith who has just finished his apprenticeship and has reached the level of expertise of a journeyman
  • how many full plates has the smith crafted in his career as village blacksmith so far? Given that the first one takes him two years to produce, I’d say not many as most adventuring folks will probably simply move to a bigger settlement where they’ll find a smith who actually can produce that stuff
  • your math has room for improvement 😉 For example, even our village smith hopefully can afford masterwork artisan tools granting a +2 circumstance bonus. Next, if he’s not really dump, he’ll take two apprentices to aid him in this endeavour. All our friendly smiths have to do now is take 10s for 47 weeks and voilà they’re finished with 500gp material cost. 3 apprentices and we are down to 42 weeks etc.
  • I personally believe all crafting rules are made “unfriendly” / realistic on purpose to prevent players from starting their own business instead of having exciting adventures, so good stuff 😀

– madalex 2007-06-28 06:54 UTC

Well, the source book says he’s a level 6 expert with various Craft skills, including a Craft (armor) +4. I don’t dispute that this guy has not and will probably not make any plate armors. What I’m criticizing is that the module text says he’ll make a piece of plate armor in gratitude when the rules as they are written clearly require him to work on it for years. Also note my second example where I maxed out his Craft (armor) skill to +9, skill focus feat for another +3, granted him apprentices who Aid Another for another +4, masterwork equipment for another +2 – and it still takes him more than half a year. That’s Ok as far as I’m concerned. As far as CrucibleOfFreya is concerned, the rules require a different explanation for the plate armor he smith offers, that’s all.

AlexSchroeder 2007-06-28 08:07 UTC

Well, your beginning statement was “The D&D Craft rules suck.”, so it was kind of hard for me to guess that your actual critique was about the adventure and its assertion that the smith will craft that damn thing. 😉

– madalex 2007-06-28 11:03 UTC

I understand. I’ll edit the post to reflect that both the rules and this particular aspect of the module suck. 🙂

AlexSchroeder 2007-06-28 14:31 UTC

Please make sure you contribute only your own work, or work licensed under the GNU Free Documentation License. Note: in order to facilitate peer review and fight vandalism, we will store your IP number for a number of days. See Privacy Policy for more information. See Info for text formatting rules. You can edit the comment page if you need to fix typos. You can subscribe to new comments by email without leaving a comment.

To save this page you must answer this question:

Please say HELLO.