From: SourceForge.net <no...@so...> - 2005-10-24 23:27:24
|
Bugs item #1336842, was opened at 2005-10-24 19:27 Message generated for change (Tracker Item Submitted) made by Item Submitter You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=384719&aid=1336842&group_id=25576 Please note that this message will contain a full copy of the comment thread, including the initial issue submission, for this request, not just the latest update. Category: Skill Support Group: To be Fixed for 6.0 Status: Open Resolution: None Priority: 5 Submitted By: Scott (tyranscooter) Assigned to: Scott (tyranscooter) Summary: Paladin Detect Evil causes null dereference Initial Comment: A little further digging reveals that the Paladin's Detect Evil is being stored under the racial spell like abilites list. Hence the "Innate". A consequence of this is that Paladins recieve a "Human" subtag appears under the "Preview" tag. Clicking that tag shows the "Detect evil Null". i.e. the spell info lookup failed. It seems we need a way to represent Class granted spell-like abilities, rather than trying to hide it under racial spell-like abilities. --- Scott Little <tyr...@ya...> wrote: > > > I'm seeing the following null pointer dereferance > error when loading a Paladin. > > java.lang.NullPointerException > at > pcgen.core.spell.Spell.getDCForPlayerCharacter(Spell.java:257) > at > pcgen.core.spell.Spell.getDCForPlayerCharacter(Spell.java:232) > at > plugin.charactersheet.gui.ClassSpellLevelPane.addLine(ClassSpellLevelPane.java:457) > at > plugin.charactersheet.gui.ClassSpellLevelPane.refresh(ClassSpellLevelPane.java:417) > at > plugin.charactersheet.gui.SpellPage.refresh(SpellPage.java:64) > at > plugin.charactersheet.gui.CharacterPanel.generateTabs(CharacterPanel.java:273) > at > plugin.charactersheet.gui.CharacterPanel.setPc(CharacterPanel.java:159) > at > plugin.charactersheet.gui.CharacterInfoTabPanel.setPc(CharacterInfoTabPanel.java:46) > at > pcgen.gui.CharacterInfo$PcSetter.finished(CharacterInfo.java:491) > at > pcgen.util.SwingWorker$1.run(SwingWorker.java:106) > at > java.awt.event.InvocationEvent.dispatch(Unknown > Source) > at java.awt.EventQueue.dispatchEvent(Unknown > Source) > at > pcgen.gui.PCGen_Frame1$WaitCursorEventQueue.dispatchEvent(PCGen_Frame1.java:3155) > at > java.awt.EventDispatchThread.pumpOneEventForHierarchy(Unknown > Source) > at > java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown > Source) > at > java.awt.EventDispatchThread.pumpEvents(Unknown > Source) > at > java.awt.EventDispatchThread.pumpEvents(Unknown > Source) > at java.awt.EventDispatchThread.run(Unknown > Source) > > the source of the null apears to be ... > > private int > plugin.charactersheet.gui.ClassSpellLevelPane.addLine(CharacterSpell > cs, String spellBook, Color color, int gridY, List > colorList) > { > Spell spell = cs.getSpell(); > SpellInfo si = cs.getSpellInfoFor(spellBook, > level, > -1); > ... > dc.setText(new > Integer(spell.getDCForPlayerCharacter(pc, > si)).toString()); > ... > } > > where ... > > spellBook = "Innate" > spell.name = "Detect Evil" > si = null > > "si" appears to be null because the following ... > > public SpellInfo > pcgen.core.character.CharacterSpell.getSpellInfoFor(final > String bookName, final int level, final int > specialty, > final ListfeatList) > { > if (infoList.isEmpty()) > { > return null; > } > > boolean sp = (specialty == 1); > > if (sp && (specialty != -1)) > { > sp = isSpecialtySpell(); > } > > final Iterator x = infoList.iterator(); > > while (x.hasNext()) > { > final SpellInfo s = (SpellInfo) x.next(); > > if ((("").equals(bookName) || > bookName.equals(s.getBook())) > && ((level == -1) || (s.getActualLevel() > == > level)) > && ((specialty == -1) || sp) > && ((featList == null) > || (featList.isEmpty() > && ((s.getFeatList() == null) || > s.getFeatList().isEmpty())) > || ((s.getFeatList() != null) > && > featList.toString().equals(s.getFeatList().toString())))) > { > return s; > } > } > > return null; > } > > returns null when the iterator has a single "Detect > Evil" entry but > s.getBook() returns "Paladin" which is unequal to > bookName which > contains "Innate". > > Is this a Data error? > > Should there not be special case code for si == NULL > in > plugin.charactersheet.gui.ClassSpellLevelPane.addLine? > > Scott > ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=384719&aid=1336842&group_id=25576 |