Skip to main content

Hoardomatic Code: Embellishment Class

This represents an individual decorative or functional embellishment on an item.


String embellishment_name: Name of the embellishment (for example, "Fine material" or "Tassels").
Double cf: The embellishment's CF value.
Double wt_mod: Weight adjustment, if any. This defaults to 1 and is expressed as a decimal multiplier to the base item's weight. For example, 0.9 for an embellishment which reduces the weight of the item by 10%.
String motif_option: Some options don't lead to item having a particular decorative motif (for example, improved materials). Some do (for example, relief carving). Some could go either way (for example, painting; an item could simply be painted, say, entirely green, or have figures painted on it in green). This defaults to "N".
String emb_code: A single string corresponding to the range of attributes which items may have.

The constructor I'm using takes a node (from Embelishments.xml) handed to it by the calling class. It goes through the node's elements and extracts various bits of data, putting them into the appropriate variables.

package hoardomatic;

import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

public class Embellishment {
    private String embellishment_name;
    private Double cf;
    private Double flat_cost;
    private Double wt_mod;
    private String motif_option;
    private String emb_code;

    public Embellishment() {

        embellishment_name = "";
        cf = 0.0;
        flat_cost = 0.0;
        wt_mod = 1.0;
        motif_option = "";
        emb_code = "";
    public Embellishment(Node node) {

        motif_option = "";
        wt_mod = 1.0;
        flat_cost = 0.0;

        NodeList tempNodes = node.getChildNodes();
        for (int j = 0; j < tempNodes.getLength(); j++) {
            Node subnode = tempNodes.item(j);

            if (subnode.getNodeType() == Node.ELEMENT_NODE) {
                Element element = (Element) subnode;
                if (element.getNodeName().contentEquals("Embellishment")) {
                    embellishment_name = element.getTextContent();

                if (element.getNodeName().contentEquals("motif")) {
                    motif_option = element.getTextContent();

                if (element.getNodeName().contentEquals("CF")) {
                    cf =Double.parseDouble(element.getTextContent());

                if (element.getNodeName().contentEquals("Cost")) {
                    flat_cost =Double.parseDouble(element.getTextContent());

                if (element.getNodeName().contentEquals("wtmod")) {
                    wt_mod = Double.parseDouble(element.getTextContent());

                if (element.getNodeName().contentEquals("emb_code")) {
                    emb_code = element.getTextContent();

                if (element.getNodeName().contentEquals("Type")) {
                    emb_code = element.getTextContent();




    public Embellishment(String the_name, Double the_cf, Double the_wt_mod) {
        // TODO Auto-generated constructor stub
        embellishment_name = the_name;
        cf = the_cf;
        wt_mod = the_wt_mod;

    public void setWtMod(Double new_wt_mod){
        flat_cost = new_wt_mod;
    public void setCost(Double new_cost){
        flat_cost = new_cost;
    public void setCF(Double new_cf){
        cf = new_cf;
    public String getEmbellishmentName(){
        return embellishment_name;
    public void setEmbellishmentName(String new_name){
        embellishment_name = new_name;
    public String getMotifOption(){
        return motif_option;
    public Double getCf(){
        return cf;

    public Double getWtMod(){
        return wt_mod;
    public String getEmbCode(){
        return emb_code;



Popular posts from this blog

Writing GURPS Adventures

Someone over on the forum asked for advice on writing adventures for GURPS. Or more specifically, in context, writing GURPS adventures with an eye towards publication by SJ Games, which is a very different animal. Whatever method and structure you have for writing up adventures for your own use is, of course, the best and you should use it for your own purposes. But we're talking about commerce here, not just art, so this should be thought of as advice on how to do business with a particular publisher, not generally useful advice on how to write adventures.

I need to start by defining a term. SJ Games means something specific by "adventure." As the wish list uses the word, an adventure has a plot, or at least something plot-like in it. It presents a specific problem to solve through a progression of encounters. They are not sandboxes. Sandbox-style adventures, with their multiplicity of possible PC objectives, are, in the terminology of the wish list, locations. There ar…

Alea Iacta Est

Devices to ensure fair play in dice games go back a long way. The Greeks and Romans used devices like internally-ridged dice cups to make sure game players couldn't unfairly control the spin and roll of the dice.

And, of course, they invented the dice tower. The earliest known dice tower is a 4th century item found near Cologne.

I started playing with a 3d-printed implementation of it a while back, forgot, was reminded of it, and finally got around to finishing.

It's not a perfect implementation. It lacks the pine cones of the original (not included in the picture above), nor the little bells, nor the dolphins, but those can be added easily. It isn't hinged like the original (Lightweight PLA hinges? Nah.). And the steps appear to go up a bit higher in the original. Still, it gets the job done and looks reasonably Roman.

And for anyone interested in making their own, I've put the files on Thingiverse.

Writing Historical RPGs, Doing Diversity

For a few years now, I've been seeing things like this and reading pieces elsewhere about apparent conflicts between historical accuracy in historical or pseudo-historical fantasy games and issues of deep interest to some parts (and some potential parts) of the modern gaming audience. I tend to write things which are both connected to history and are written to enable the fantasies of modern people, some of whom have a specific interest in not reproducing problematic parts of the past and present in their recreations, so it's something which touches on stuff that I do. And I think I tend to move and write in circles where this tends not to get much thought or attention even though I write for a game which makes accuracy a priority, so while none of this is new to people who grapple with these issues regularly, I'm thinking maybe I should say something about it to get it into spaces where I work.

So, how do I approach the demands of both accuracy and diversity in the stuff …