public ResearchEvent createEvent(Node e) {
        String name = "";
        String res = "";
        int effect = 0;
        
        Node attr = e.getFirstChild();
        while(attr != null) {
            if(attr.getNodeType() == Node.ELEMENT_NODE) {
                if(attr.getNodeName().equalsIgnoreCase("Name")) {
                    name = attr.getFirstChild().getNodeValue();
                }
                else if(attr.getNodeName().equalsIgnoreCase("Resource")) {
                    res = attr.getFirstChild().getNodeValue();
                }
                else if(attr.getNodeName().equalsIgnoreCase("Effect")) {
                    effect = Integer.parseInt(attr.getFirstChild().getNodeValue());
                }
            }
            attr = attr.getNextSibling();
        }
        
        if(name.equalsIgnoreCase("Update Damage")) {
            return new UpdateDamageEvent(res, effect);
        }
        else if(name.equalsIgnoreCase("Update Range")) {
            return new UpdateRangeEvent(res, effect);
        }
        else if(name.equalsIgnoreCase("New ShopItem")) {
            return new NewShopItemEvent(res);
        }
        
        return null;
    }