/* (non-Javadoc) Methode überschrieben * @see org.d3s.alricg.charKomponenten.sonderregeln.SonderregelInterface#finalizeSonderregel(org.d3s.alricg.charKomponenten.links.Link) */ public void finalizeSonderregel(Link link) { CharElement element; GeneratorLink tmpLink, modiLink; assert link.getZweitZiel() != null; // Auslesen des gewünschten Links element = link.getZweitZiel(); tmpLink = (GeneratorLink) prozessor.getElementBox().getObjectById(element); // Suche und entferne den Link aus dem Element tmpLink.removeLinkByQuelle(this); eigen = null; }
/* (non-Javadoc) Methode überschrieben * @see org.d3s.alricg.charKomponenten.sonderregeln.SonderregelInterface#canAddSelf(org.d3s.alricg.held.box.HeldProzessor, boolean, org.d3s.alricg.charKomponenten.links.Link) * * - Das Ziel dieser Sonderregel (also die Eigenschaft) wird aus dem * srLink ausgelesen und ist das "zweitZiel". * - Es darf keine Eigenschaft die SF "Herausragende Eigenschaft" bekommen, die * durch die Herkunft gesenkt wurde. */ public boolean canAddSelf(Held held, boolean ok, Link srlink) { Eigenschaft element; Link tmpLink; // Auslesen des gewünschten Links element = (Eigenschaft) srlink.getZweitZiel(); tmpLink = ((LinkProzessor<Eigenschaft, HeldenLink>) held.getProzessor(CharKomponente.eigenschaft)) .getElementBox() .getObjectById(element); // Überprüfung ob die Modis durch die Herkunft u.ä. negativ sind, // dann dürfte diese SR nicht gewählt werden if (((GeneratorLink) tmpLink).getWertModis() < 0) { return false; } // Die Sonderregel darf nur einmal zu einem ELement existieren if (held.getSonderregelAdmin().hasSonderregel(this.getId(), null, element)) { return false; } // Prüfen ob "Stubenhocker" --> Nicht erlaubt mit KK, KO und GE! if (element.getEigenschaftEnum().equals(EigenschaftEnum.GE) || element.getEigenschaftEnum().equals(EigenschaftEnum.KK) || element.getEigenschaftEnum().equals(EigenschaftEnum.KO)) { if (held.getSonderregelAdmin().hasSonderregel("SR-Stubenhocker", null, null)) { return false; } } return ok; }
/* (non-Javadoc) Methode überschrieben * @see org.d3s.alricg.charKomponenten.sonderregeln.SonderregelInterface#changeMinStufe(int, org.d3s.alricg.charKomponenten.links.Link) * - Da eine Herausragende Eigenschaft nicht gesenkt werden kann gilt: * Minimale Stufe = Maximale Stufe. */ public int changeMinWert(int minStufe, Link link) { if (eigen.equals(link.getZiel())) { // Der Wert kann nicht mehr gesenkt werden! return prozessor.getMaxWert(link); } return minStufe; }
/* (non-Javadoc) Methode überschrieben * @see org.d3s.alricg.charKomponenten.sonderregeln.SonderregelInterface#changeCanAddElement(boolean, org.d3s.alricg.charKomponenten.links.Link) * * - Es kann keine Rasse oder Kultur hinzugefügt werden, die einen Eigenschaft * mit "Herausragender Eigenschaft" erniedrigt */ public boolean changeCanAddElement(boolean ok, Link tmpLink) { CharElement element = tmpLink.getZiel(); if (element instanceof Rasse) { // TODO Es darf keine Eigenschaft gesenkt werden, die "Herausragende Eigenschaft" ist } else if (element instanceof Kultur) { // TODO Es darf keine Eigenschaft gesenkt werden, die "Herausragende Eigenschaft" ist } else if (element instanceof Profession) { // TODO Es darf keine Eigenschaft gesenkt werden, die "Herausragende Eigenschaft" ist } return ok; }
/* (non-Javadoc) Methode überschrieben * @see org.d3s.alricg.charKomponenten.sonderregeln.SonderregelInterface#initSonderregel(org.d3s.alricg.held.box.HeldProzessor, org.d3s.alricg.charKomponenten.links.Link) * * - Das Ziel dieser Sonderregel (also die Eigenschaft) wird aus dem * srElementlink ausgelesen und ist das "zweitZiel". * - Die betreffende Eigenschaft wird auf das Maximum gesetzt und um den * Wert in "link" erhöht. */ public void initSonderregel(Held held, Link srLink) { GeneratorLink tmpLink; IdLink modiLink; assert srLink.getZweitZiel() != null; this.prozessor = held.getProzessor(CharKomponente.eigenschaft); // Auslesen des gewünschten Links eigen = (Eigenschaft) srLink.getZweitZiel(); tmpLink = (GeneratorLink) prozessor.getElementBox().getObjectById(eigen); // Link erstellen der die Eigenschaft um den gewünschten Wert erhöht modiLink = new IdLink(this, null); modiLink.setWert(srLink.getWert()); // Neuen Link hinzufügen, tmpLink.addLink(modiLink); // Eigenschaft auf den Maximalen Wert setzen tmpLink.setUserGesamtWert(prozessor.getMaxWert(tmpLink)); }