From 310d4db9529425314b3b856efa5ec731c0cdee42 Mon Sep 17 00:00:00 2001 From: Argent77 <4519923+Argent77@users.noreply.github.com> Date: Sun, 11 Sep 2022 19:01:35 +0200 Subject: [PATCH 01/11] Add partial support for BioWare's BG1 non-interactive Demo Note: IDS files referenced by scripts must be provided by the user. --- src/org/infinity/resource/Profile.java | 7 +++- src/org/infinity/resource/key/BIFFEntry.java | 42 ++++++++++++++++---- src/org/infinity/resource/key/Keyfile.java | 9 ++++- 3 files changed, 48 insertions(+), 10 deletions(-) diff --git a/src/org/infinity/resource/Profile.java b/src/org/infinity/resource/Profile.java index fbb2db74e..87ed5f906 100644 --- a/src/org/infinity/resource/Profile.java +++ b/src/org/infinity/resource/Profile.java @@ -1879,7 +1879,12 @@ && getLuaValue(FileManager.query(gameRoots, "engine.lua"), "engine_mode", "0", f // present list of available game types to choose from Game oldGame = getProperty(Key.GET_GAME_TYPE_PREVIOUS); if (oldGame == null) { - oldGame = Profile.Game.Unknown; + if (FileEx.create(FileManager.query(gameRoots, "baldur.exe")).isFile()) { + // Could be BG1 Demo + oldGame = Profile.Game.BG1; + } else { + oldGame = Profile.Game.Unknown; + } } game = Profile.showGameSelectionDialog("Unknown game", "Please select a game:", oldGame); if (game != null) { diff --git a/src/org/infinity/resource/key/BIFFEntry.java b/src/org/infinity/resource/key/BIFFEntry.java index b9725652c..75bc1a06e 100644 --- a/src/org/infinity/resource/key/BIFFEntry.java +++ b/src/org/infinity/resource/key/BIFFEntry.java @@ -6,7 +6,9 @@ import java.io.IOException; import java.io.OutputStream; +import java.nio.Buffer; import java.nio.ByteBuffer; +import java.nio.file.Files; import java.nio.file.Path; import java.util.ArrayList; import java.util.List; @@ -57,8 +59,17 @@ public BIFFEntry(Path keyFile, String fileName) { this.index = -1; // not yet associated with KEY file } - public BIFFEntry(Path keyFile, int index, ByteBuffer buffer, int offset) { - updateBIFF(keyFile, index, buffer, offset); + /** + * Constructs a new BIFF entry from CHITIN.KEY information. + * + * @param keyFile Path to the KEY file. + * @param index The BIFF entry index. + * @param buffer {@link Buffer} with KEY file data. + * @param offset Byte offset of the BIFF entry. + * @param isDemo Indicates whether the KEY file uses the old BG1 demo format variant. + */ + public BIFFEntry(Path keyFile, int index, ByteBuffer buffer, int offset, boolean isDemo) { + updateBIFF(keyFile, index, buffer, offset, isDemo); } // --------------------- Begin Interface Comparable --------------------- @@ -170,17 +181,25 @@ public void setFileSize(int fileSize) { * @param index BIFF entry index in KEY file. * @param buffer Buffered KEY file. * @param offset Start offset of BIFF entry data in KEY file. + * @param isDemo Indicates whether the KEY file uses the old BG1 demo format variant. */ - public void updateBIFF(Path keyFile, int index, ByteBuffer buffer, int offset) { + public void updateBIFF(Path keyFile, int index, ByteBuffer buffer, int offset, boolean isDemo) { if (keyFile == null || buffer == null) { throw new NullPointerException(); } this.keyFile = keyFile.toAbsolutePath(); this.index = index; - this.fileSize = buffer.getInt(offset); - this.stringOffset = buffer.getInt(offset + 4); - short stringLength = buffer.getShort(offset + 8); - this.location = buffer.getShort(offset + 10) & 0xffff; + int curOfs = 0; + if (!isDemo) { + this.fileSize = buffer.getInt(offset + curOfs); + curOfs += 4; + } + this.stringOffset = buffer.getInt(offset + curOfs); + curOfs += 4; + short stringLength = buffer.getShort(offset + curOfs); + curOfs += 2; + this.location = buffer.getShort(offset + curOfs) & 0xffff; + curOfs += 2; this.fileName = StreamUtils.readString(buffer, this.stringOffset, stringLength - 1); if (this.fileName.charAt(0) == '\\') { this.fileName = this.fileName.substring(1); @@ -194,6 +213,15 @@ public void updateBIFF(Path keyFile, int index, ByteBuffer buffer, int offset) { } this.fileName = this.fileName.replace(this.separatorChar, '/'); this.biffFile = findBiffFile(this.keyFile.getParent(), this.location, this.fileName); + + if (isDemo) { + try { + this.fileSize = (int) Files.size(this.biffFile); + } catch (IOException e) { + System.err.println(String.format("Could not determine file size: %s", this.biffFile)); + e.printStackTrace(); + } + } } public int updateOffset(int newOffset) { diff --git a/src/org/infinity/resource/key/Keyfile.java b/src/org/infinity/resource/key/Keyfile.java index 5ea0aa1e4..a45324c09 100644 --- a/src/org/infinity/resource/key/Keyfile.java +++ b/src/org/infinity/resource/key/Keyfile.java @@ -544,9 +544,14 @@ private void init() throws IOException { biffList.clear(); } + // checking for BG1 Demo variant of KEY file format + final boolean isDemo = (buffer.getInt(ofsBif) - ofsBif) == (numBif * 0x8) + && (buffer.getInt(ofsBif + 4) - ofsBif) != (numBif * 0xc); + final int biffEntrySize = isDemo ? 0x8 : 0xc; + // processing BIFF entries - for (int i = 0, ofs = ofsBif; i < numBif; i++, ofs += 12) { - biffList.add(new BIFFEntry(file, i, buffer, ofs)); + for (int i = 0, ofs = ofsBif; i < numBif; i++, ofs += biffEntrySize) { + biffList.add(new BIFFEntry(file, i, buffer, ofs, isDemo)); } biffEntries.put(file, biffList); From cc370bc9863ce3dfd9e2989eb8731f0df78fca10 Mon Sep 17 00:00:00 2001 From: Argent77 <4519923+Argent77@users.noreply.github.com> Date: Sat, 1 Oct 2022 16:30:37 +0200 Subject: [PATCH 02/11] Add check option for illegal soundrefs in strings --- .../infinity/check/StringSoundsChecker.java | 321 ++++++++++++++++++ src/org/infinity/gui/BrowserMenuBar.java | 8 + 2 files changed, 329 insertions(+) create mode 100644 src/org/infinity/check/StringSoundsChecker.java diff --git a/src/org/infinity/check/StringSoundsChecker.java b/src/org/infinity/check/StringSoundsChecker.java new file mode 100644 index 000000000..f4ea71883 --- /dev/null +++ b/src/org/infinity/check/StringSoundsChecker.java @@ -0,0 +1,321 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.check; + +import java.awt.BorderLayout; +import java.awt.Component; +import java.awt.FlowLayout; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import java.awt.event.MouseAdapter; +import java.awt.event.MouseEvent; +import java.awt.event.MouseListener; +import java.util.ArrayList; +import java.util.EnumMap; +import java.util.List; +import java.util.Locale; + +import javax.swing.BorderFactory; +import javax.swing.JButton; +import javax.swing.JLabel; +import javax.swing.JOptionPane; +import javax.swing.JPanel; +import javax.swing.JScrollPane; +import javax.swing.JTabbedPane; +import javax.swing.SwingConstants; +import javax.swing.event.ChangeEvent; +import javax.swing.event.ChangeListener; +import javax.swing.event.ListSelectionEvent; +import javax.swing.event.ListSelectionListener; + +import org.infinity.NearInfinity; +import org.infinity.gui.BrowserMenuBar; +import org.infinity.gui.Center; +import org.infinity.gui.ChildFrame; +import org.infinity.gui.SortableTable; +import org.infinity.gui.StringEditor; +import org.infinity.gui.StringLookup; +import org.infinity.gui.TableItem; +import org.infinity.gui.WindowBlocker; +import org.infinity.icon.Icons; +import org.infinity.resource.Profile; +import org.infinity.resource.ResourceFactory; +import org.infinity.resource.key.FileResourceEntry; +import org.infinity.resource.key.ResourceEntry; +import org.infinity.search.AbstractSearcher; +import org.infinity.util.Misc; +import org.infinity.util.StringTable; + +/** + * Checks for illegal sound resrefs associated to TLK strings. + */ +public class StringSoundsChecker extends AbstractSearcher implements Runnable, ActionListener, ListSelectionListener, ChangeListener { + private ChildFrame resultsFrame; + private JTabbedPane tabbedPane; + private SortableTable table, tableFemale; + private EnumMap> stringMap; + + private JButton saveButton; + private JButton openLookupButton; + private JButton openStringTableButton; + + public StringSoundsChecker(Component parent) { + super(CHECK_MULTI_TYPE_FORMAT, parent); + new Thread(this).start(); + } + + // --------------------- Begin Interface ActionListener --------------------- + + @Override + public void actionPerformed(ActionEvent e) { + final SortableTable table = (tabbedPane.getSelectedIndex() == 1) ? this.tableFemale : this.table; + if (e.getSource() == saveButton) { + if (table != this.tableFemale) { + table.saveCheckResult(resultsFrame, "Illegal sound resrefs in string table"); + } else { + tableFemale.saveCheckResult(resultsFrame, "Illegal sound resrefs in female string table"); + } + } else if (e.getSource() == openLookupButton) { + final int row = table.getSelectedRow(); + if (row != -1) { + final StringSoundsItem item = (StringSoundsItem) table.getTableItemAt(row); + ChildFrame.show(StringLookup.class, StringLookup::new).hitFound(item.strref); + } + } else if (e.getSource() == openStringTableButton) { + final int row = table.getSelectedRow(); + if (row != -1) { + final StringSoundsItem item = (StringSoundsItem) table.getTableItemAt(row); + ChildFrame.show(StringEditor.class, StringEditor::new).showEntry(item.strref); + } + } + } + + // --------------------- End Interface ActionListener --------------------- + + // --------------------- Begin Interface ListSelectionListener --------------------- + + @Override + public void valueChanged(ListSelectionEvent e) { + final SortableTable table = (tabbedPane.getSelectedIndex() == 1) ? this.tableFemale : this.table; + final int row = table.getSelectedRow(); + openLookupButton.setEnabled(row != -1); + openStringTableButton.setEnabled(row != -1); + } + + // --------------------- End Interface ListSelectionListener --------------------- + + // --------------------- Begin Interface ChangeListener --------------------- + + @Override + public void stateChanged(ChangeEvent e) { + if (e.getSource() == tabbedPane) { + final SortableTable table = (tabbedPane.getSelectedIndex() == 1) ? this.tableFemale : this.table; + final ListSelectionEvent event = new ListSelectionEvent(table, table.getSelectedRow(), table.getSelectedRow(), false); + valueChanged(event); + } + } + + // --------------------- End Interface ChangeListener --------------------- + + @Override + public void run() { + final WindowBlocker blocker = new WindowBlocker(NearInfinity.getInstance()); + blocker.setBlocked(true); + try { + final List files = new ArrayList<>(); + files.add(new FileResourceEntry(Profile.getProperty(Profile.Key.GET_GAME_DIALOG_FILE))); // dummy entry + stringMap = new EnumMap<>(StringTable.Type.class); + stringMap.put(StringTable.Type.MALE, new ArrayList<>()); + if (StringTable.hasFemaleTable()) { + stringMap.put(StringTable.Type.FEMALE, new ArrayList<>()); + } + + if (runSearch("Checking strings", files)) { + return; + } + + boolean found = !stringMap.get(StringTable.Type.MALE).isEmpty(); + if (stringMap.containsKey(StringTable.Type.FEMALE)) { + found |= !stringMap.get(StringTable.Type.FEMALE).isEmpty(); + } + if (!found) { + JOptionPane.showMessageDialog(NearInfinity.getInstance(), "No illegal sound resrefs in strings found.", "Info", + JOptionPane.INFORMATION_MESSAGE); + } else { + table = new SortableTable(new String[] { "StringRef", "String", "Sound" }, + new Class[] { Integer.class, String.class, String.class }, + new Integer[] { 25, 600, 50 }); + List list = stringMap.get(StringTable.Type.MALE); + for (int i = 0, size = list.size(); i < size; i++) { + table.addTableItem(new StringSoundsItem(list.get(i), StringTable.Type.MALE)); + } + + // Female string table is presented in a separate tab, if available + if (stringMap.containsKey(StringTable.Type.FEMALE)) { + tableFemale = new SortableTable(new String[] { "StringRef", "String", "Sound" }, + new Class[] { Integer.class, String.class, String.class }, + new Integer[] { 25, 600, 50 }); + list = stringMap.get(StringTable.Type.FEMALE); + for (int i = 0, size = list.size(); i < size; i++) { + tableFemale.addTableItem(new StringSoundsItem(list.get(i), StringTable.Type.FEMALE)); + } + } + + getResultFrame().setVisible(true); + } + } finally { + blocker.setBlocked(false); + } + } + + @Override + protected Runnable newWorker(ResourceEntry entry) { + if (entry != null) { + return () -> { + for (int strref = 0, count = StringTable.getNumEntries(); strref < count; strref++) { + String soundRef = StringTable.getSoundResource(strref); + if (!soundRef.isEmpty() && !ResourceFactory.resourceExists(soundRef + ".WAV", true)) { + stringMap.get(StringTable.Type.MALE).add(strref); + } + if (StringTable.hasFemaleTable()) { + soundRef = StringTable.getSoundResource(StringTable.Type.FEMALE, strref); + if (!soundRef.isEmpty() && !ResourceFactory.resourceExists(soundRef + ".WAV", true)) { + stringMap.get(StringTable.Type.FEMALE).add(strref); + } + } + } + }; + } else { + return () -> {}; + } + } + + private ChildFrame getResultFrame() { + if (resultsFrame == null) { + resultsFrame = new ChildFrame("Result", true); + resultsFrame.setIconImage(Icons.ICON_REFRESH_16.getIcon().getImage()); + + saveButton = new JButton("Save...", Icons.ICON_SAVE_16.getIcon()); + saveButton.setMnemonic('s'); + saveButton.addActionListener(this); + openLookupButton = new JButton("Open in StringRef Lookup", Icons.ICON_OPEN_16.getIcon()); + openLookupButton.setMnemonic('l'); + openLookupButton.setEnabled(false); + openLookupButton.addActionListener(this); + openStringTableButton = new JButton("Open in String Table", Icons.ICON_OPEN_16.getIcon()); + openStringTableButton.setMnemonic('t'); + openStringTableButton.setEnabled(false); + openStringTableButton.addActionListener(this); + resultsFrame.getRootPane().setDefaultButton(openLookupButton); + + int count = table.getRowCount(); + if (tableFemale != null) { + count += tableFemale.getRowCount(); + } + final JLabel countLabel = new JLabel(count + " illegal sound resrefs found", SwingConstants.CENTER); + countLabel.setFont(countLabel.getFont().deriveFont(countLabel.getFont().getSize2D() + 2.0f)); + + JPanel buttonPanel = new JPanel(new FlowLayout(FlowLayout.CENTER)); + buttonPanel.add(openLookupButton); + buttonPanel.add(openStringTableButton); + buttonPanel.add(saveButton); + + tabbedPane = new JTabbedPane(JTabbedPane.TOP); + + // Male string table + JScrollPane scrollTable = new JScrollPane(table); + scrollTable.getViewport().setBackground(table.getBackground()); + tabbedPane.addTab("Male (" + table.getRowCount() + ")", scrollTable); + table.setFont(Misc.getScaledFont(BrowserMenuBar.getInstance().getScriptFont())); + table.setRowHeight(table.getFontMetrics(table.getFont()).getHeight() + 1); + table.getSelectionModel().addListSelectionListener(this); + + // Female string table + if (tableFemale != null) { + scrollTable = new JScrollPane(tableFemale); + scrollTable.getViewport().setBackground(tableFemale.getBackground()); + tabbedPane.addTab("Female (" + tableFemale.getRowCount() + ")", scrollTable); + tableFemale.setFont(Misc.getScaledFont(BrowserMenuBar.getInstance().getScriptFont())); + tableFemale.setRowHeight(tableFemale.getFontMetrics(tableFemale.getFont()).getHeight() + 1); + tableFemale.getSelectionModel().addListSelectionListener(this); + } else { + tabbedPane.addTab("Female", new JPanel()); + tabbedPane.setEnabledAt(1, false); + tabbedPane.setToolTipTextAt(1, "Female string table not available."); + } + tabbedPane.setSelectedIndex(0); + tabbedPane.addChangeListener(this); + + JPanel pane = (JPanel) resultsFrame.getContentPane(); + pane.setLayout(new BorderLayout(0, 3)); + pane.add(countLabel, BorderLayout.PAGE_START); + pane.add(tabbedPane, BorderLayout.CENTER); + pane.add(buttonPanel, BorderLayout.PAGE_END); + + final MouseListener listener = new MouseAdapter() { + @Override + public void mouseReleased(MouseEvent event) { + tableEntryOpened(event); + } + }; + table.addMouseListener(listener); + if (tableFemale != null) { + tableFemale.addMouseListener(listener); + } + pane.setBorder(BorderFactory.createEmptyBorder(3, 3, 3, 3)); + resultsFrame.setSize(1024, 576); + Center.center(resultsFrame, NearInfinity.getInstance().getBounds()); + } + return resultsFrame; + } + + private void tableEntryOpened(MouseEvent event) { + if (event.getClickCount() == 2) { + final SortableTable table = (SortableTable) event.getSource(); + final StringTable.Type tableType = (table == tableFemale) ? StringTable.Type.FEMALE : StringTable.Type.MALE; + int row = table.getSelectedRow(); + if (row != -1) { + final StringSoundsItem item = (StringSoundsItem) table.getTableItemAt(row); + if (event.isAltDown()) { + ChildFrame.show(StringEditor.class, StringEditor::new).showEntry(tableType, item.strref); + } else { + ChildFrame.show(StringLookup.class, StringLookup::new).hitFound(item.strref); + } + } + } + } + + // -------------------------- INNER CLASSES -------------------------- + + private static final class StringSoundsItem implements TableItem { + private final Integer strref; + private final String string; + private final String sound; + + public StringSoundsItem(int strref, StringTable.Type type) { + this.strref = strref; + this.string = StringTable.getStringRef(type, strref, StringTable.Format.NONE); + this.sound = StringTable.getSoundResource(type, strref).toUpperCase(Locale.ENGLISH); + } + + @Override + public Object getObjectAt(int columnIndex) { + switch (columnIndex) { + case 0: + return strref; + case 2: + return sound; + default: + return string; + } + } + + @Override + public String toString() { + return String.format("StringRef: %d, Sound: %s, Text: %s", + strref, sound, string.replace("\r\n", Misc.LINE_SEPARATOR)); + } + } +} diff --git a/src/org/infinity/gui/BrowserMenuBar.java b/src/org/infinity/gui/BrowserMenuBar.java index b4c57fa19..6a9bb95b9 100644 --- a/src/org/infinity/gui/BrowserMenuBar.java +++ b/src/org/infinity/gui/BrowserMenuBar.java @@ -70,6 +70,7 @@ import org.infinity.check.ResourceUseChecker; import org.infinity.check.ScriptChecker; import org.infinity.check.StringDuplicatesChecker; +import org.infinity.check.StringSoundsChecker; import org.infinity.check.StringUseChecker; import org.infinity.check.StringValidationChecker; import org.infinity.check.StrrefIndexChecker; @@ -1425,6 +1426,7 @@ private static final class ToolsMenu extends JMenu implements ActionListener { private final JMenuItem toolCheckStringUse; private final JMenuItem toolCheckStringDuplicates; + private final JMenuItem toolCheckStringSounds; private final JMenuItem toolCheckStringValid; private final JMenuItem toolCheckStringIndex; private final JMenuItem toolCheckFileUse; @@ -1514,6 +1516,10 @@ private ToolsMenu() { toolCheckStringUse = makeMenuItem("For Unused Strings", KeyEvent.VK_U, Icons.ICON_FIND_16.getIcon(), -1, this); checkMenu.add(toolCheckStringUse); + toolCheckStringSounds = makeMenuItem("For Illegal SoundRefs in Strings", KeyEvent.VK_O, + Icons.ICON_FIND_16.getIcon(), -1, this); + checkMenu.add(toolCheckStringSounds); + toolCheckStringDuplicates = makeMenuItem("For Duplicate Strings", KeyEvent.VK_D, Icons.ICON_FIND_16.getIcon(), -1, this); checkMenu.add(toolCheckStringDuplicates); @@ -1684,6 +1690,8 @@ public void windowClosing(WindowEvent e) { new StructChecker(); } else if (event.getSource() == toolCheckStringUse) { new StringUseChecker(NearInfinity.getInstance()); + } else if (event.getSource() == toolCheckStringSounds) { + new StringSoundsChecker(NearInfinity.getInstance()); } else if (event.getSource() == toolCheckStringDuplicates) { new StringDuplicatesChecker(NearInfinity.getInstance()); } else if (event.getSource() == toolCheckStringValid) { From 04733f535d5cf3926c00d4d26e9d0495787bddc6 Mon Sep 17 00:00:00 2001 From: Argent77 <4519923+Argent77@users.noreply.github.com> Date: Fri, 21 Oct 2022 13:57:58 +0200 Subject: [PATCH 03/11] Add new option: Override UI Scaling This option overrides the system scaling of UI elements by a specified scaling factor, when enabled. Only available on Java 9 or higher. May not work equally well on all platforms. --- src/org/infinity/NearInfinity.java | 56 ++++++- src/org/infinity/gui/BrowserMenuBar.java | 204 ++++++++++++++++++----- src/org/infinity/util/Platform.java | 22 +++ 3 files changed, 236 insertions(+), 46 deletions(-) diff --git a/src/org/infinity/NearInfinity.java b/src/org/infinity/NearInfinity.java index a5314563f..aae668818 100644 --- a/src/org/infinity/NearInfinity.java +++ b/src/org/infinity/NearInfinity.java @@ -130,8 +130,6 @@ public final class NearInfinity extends JFrame implements ActionListener, ViewableContainer { private static final int[] JAVA_VERSION = { 1, 8 }; // the minimum java version supported - private static final InfinityTextArea CONSOLE_TEXT = new InfinityTextArea(true); - private static final String KEYFILENAME = "chitin.key"; private static final String WINDOW_SIZEX = "WindowSizeX"; private static final String WINDOW_SIZEY = "WindowSizeY"; @@ -145,18 +143,32 @@ public final class NearInfinity extends JFrame implements ActionListener, Viewab private static final String TABLE_WIDTH_SIZE = "TableColWidthSize"; private static final String TABLE_PANEL_HEIGHT = "TablePanelHeight"; private static final String OPTION_GLOBAL_FONT_SIZE = "GlobalFontSize"; + private static final String APP_UI_SCALE_ENABLED = "AppUiScaleEnabled"; + private static final String APP_UI_SCALE_FACTOR = "AppUiScaleFactor"; private static final String STATUSBAR_TEXT_FMT = "Welcome to Near Infinity! - %s @ %s - %d files available"; - private static NearInfinity browser; - static { + // Setting Swing UI scale factor (only available for Java 9 or higher) + if (Platform.JAVA_VERSION > 8) { + final int uiScale = getUiScalingOption(); + if (uiScale > 0) { + // Must be set BEFORE any Swing Library calls to be effective + System.setProperty("sun.java2d.uiScale.enabled", "true"); + System.setProperty("sun.java2d.uiScale", Double.toString(uiScale / 100.0)); + } + } + if (Platform.IS_MACOS) { // Enforce proper macOS menu bar integration System.setProperty("apple.laf.useScreenMenuBar", "true"); } } + private static final InfinityTextArea CONSOLE_TEXT = new InfinityTextArea(true); + + private static NearInfinity browser; + private final JPanel containerpanel; private final JSplitPane spSplitter; private final ResourceTree tree; @@ -172,7 +184,8 @@ public final class NearInfinity extends JFrame implements ActionListener, Viewab private JPopupMenu launchMenu; private int tablePanelHeight; private ProgressMonitor pmProgress; - private int progressIndex, globalFontSize; + private int progressIndex, globalFontSize, uiScalingFactor; + private boolean uiScalingEnabled; private static Path findKeyfile() { JFileChooser chooser; @@ -316,6 +329,10 @@ private NearInfinity(Path gameOverride, Profile.Game forcedGame) { Preferences prefs = Preferences.userNodeForPackage(getClass()); migratePreferences("infinity", prefs, true); + // updating UI scale override + uiScalingEnabled = prefs.getBoolean(APP_UI_SCALE_ENABLED, false); + uiScalingFactor = prefs.getInt(APP_UI_SCALE_FACTOR, 100); + // updating relative default font size globally globalFontSize = Math.max(50, Math.min(400, prefs.getInt(OPTION_GLOBAL_FONT_SIZE, 100))); resizeUIFont(globalFontSize); @@ -903,6 +920,20 @@ public int updateTablePanelHeight(int newValue) { return retVal; } + /** + * Returns whether global UI Scaling is overridden by the application. + */ + public boolean isUiScalingEnabled() { + return uiScalingEnabled; + } + + /** + * Returns the currently selected UI Scaling factor, in percent. + */ + public int getUiScalingFactor() { + return uiScalingFactor; + } + /** * Returns the currently selected global font size relative to UI defaults. */ @@ -978,6 +1009,19 @@ public void updateLauncher() { }); } + /** + * Returns the UI scaling factor (in percent) if overridden by the app. Returns 0 if system-wide UI scale factor + * is used. + */ + private static int getUiScalingOption() { + int retVal = 0; + final Preferences prefs = Preferences.userNodeForPackage(NearInfinity.class); + if (prefs.getBoolean(APP_UI_SCALE_ENABLED, false)) { + retVal = Math.max(50, Math.min(400, prefs.getInt(APP_UI_SCALE_FACTOR, 100))); + } + return retVal; + } + private static boolean reloadFactory(boolean refreshOnly) { boolean retVal = false; clearCache(refreshOnly); @@ -1068,6 +1112,8 @@ private void storePreferences() { prefs.putInt(TABLE_WIDTH_OFS, getTableColumnWidth(2)); prefs.putInt(TABLE_WIDTH_SIZE, getTableColumnWidth(3)); prefs.putInt(TABLE_PANEL_HEIGHT, getTablePanelHeight()); + prefs.putBoolean(APP_UI_SCALE_ENABLED, BrowserMenuBar.getInstance().isUiScalingEnabled()); + prefs.putInt(APP_UI_SCALE_FACTOR, BrowserMenuBar.getInstance().getUiScalingFactor()); prefs.putInt(OPTION_GLOBAL_FONT_SIZE, BrowserMenuBar.getInstance().getGlobalFontSize()); BrowserMenuBar.getInstance().storePreferences(); Updater.getInstance().saveUpdateSettings(); diff --git a/src/org/infinity/gui/BrowserMenuBar.java b/src/org/infinity/gui/BrowserMenuBar.java index 6a9bb95b9..1db5aca7d 100644 --- a/src/org/infinity/gui/BrowserMenuBar.java +++ b/src/org/infinity/gui/BrowserMenuBar.java @@ -512,6 +512,16 @@ public LookAndFeelInfo getLookAndFeel() { return optionsMenu.getLookAndFeel(); } + /** Returns whether UI scaling override is enabled. */ + public boolean isUiScalingEnabled() { + return optionsMenu.isUiScalingEnabled(); + } + + /** Returns the UI scaling factor override in percent. */ + public int getUiScalingFactor() { + return optionsMenu.getUiScalingFactor(); + } + /** Returns the global font size override in percent. */ public int getGlobalFontSize() { return optionsMenu.getGlobalFontSize(); @@ -1723,8 +1733,12 @@ public void windowClosing(WindowEvent e) { /////////////////////////////// private static final class OptionsMenu extends JMenu implements ActionListener, ItemListener { + // List of predefined font sizes (-1 indicates a custom value) private static final int[] FONT_SIZES = { 50, 75, 100, 125, 150, 175, 200, 250, 300, 400, -1 }; + // List of predefined ui scaling factors (-1 indicates a custom value) + private static final int[] UI_SCALING = { 100, 125, 133, 150, 175, 200, 250, 300, 400, -1 }; + private static final Font[] FONTS = { new Font(Font.MONOSPACED, Font.PLAIN, 12), new Font(Font.SERIF, Font.PLAIN, 12), new Font(Font.SANS_SERIF, Font.PLAIN, 12), @@ -1856,6 +1870,7 @@ private static final class OptionsMenu extends JMenu implements ActionListener, private final JRadioButtonMenuItem[] selectTlkColorScheme = new JRadioButtonMenuItem[COLOR_SCHEME.length]; private final JRadioButtonMenuItem[] selectWeiDUColorScheme = new JRadioButtonMenuItem[COLOR_SCHEME.length]; private final DataRadioButtonMenuItem[] globalFontSize = new DataRadioButtonMenuItem[FONT_SIZES.length]; + private final DataRadioButtonMenuItem[] globalUiScaling = new DataRadioButtonMenuItem[UI_SCALING.length]; private JCheckBoxMenuItem optionTextHightlightCurrent; private JCheckBoxMenuItem optionTextLineNumbers; @@ -1895,6 +1910,7 @@ private static final class OptionsMenu extends JMenu implements ActionListener, private JCheckBoxMenuItem optionTreeSearchNames; private JCheckBoxMenuItem optionHighlightOverridden; private JCheckBoxMenuItem optionLaunchGameAllowed; + private JCheckBoxMenuItem optionUiScalingEnabled; // private JCheckBoxMenuItem optionMonitorFileChanges; private final JMenu mCharsetMenu; @@ -2244,6 +2260,46 @@ private OptionsMenu() { viewOrEditShown[i] = menu; } + // Options->Override UI Scaling + JMenu uiScalingMenu = new JMenu("Override UI Scaling"); + add(uiScalingMenu); + // adding "Enabled" checkbox + optionUiScalingEnabled = new JCheckBoxMenuItem("Enabled", NearInfinity.getInstance().isUiScalingEnabled()); + optionUiScalingEnabled.setToolTipText("Enabling this option overrides the global scaling factor for UI elements."); + optionUiScalingEnabled.addActionListener(this); + uiScalingMenu.add(optionUiScalingEnabled); + uiScalingMenu.addSeparator(); + // adding scaling factors + bg = new ButtonGroup(); + uiScalingMenu.addItemListener(this); + int selectedScale = NearInfinity.getInstance().getUiScalingFactor(); + selectedScale = Math.min(Math.max(selectedScale, 50), 400); + boolean isCustomScale = true; + for (int i = 0; i < UI_SCALING.length; i++) { + int scale = UI_SCALING[i]; + if (scale > 0) { + String msg = UI_SCALING[i] + " %" + (scale == 100 ? " (Default)" : ""); + globalUiScaling[i] = new DataRadioButtonMenuItem(msg, UI_SCALING[i] == selectedScale, + Integer.valueOf(UI_SCALING[i])); + if (UI_SCALING[i] == selectedScale) { + isCustomScale = false; + } + } else { + String msg = isCustomScale ? "Custom (" + selectedScale + " %)..." : "Custom..."; + globalUiScaling[i] = new DataRadioButtonMenuItem(msg, isCustomScale, isCustomScale ? selectedScale : scale); + } + globalUiScaling[i].setEnabled(NearInfinity.getInstance().isUiScalingEnabled()); + globalUiScaling[i].setActionCommand("ChangeUiScaling"); + globalUiScaling[i].addActionListener(this); + uiScalingMenu.add(globalUiScaling[i]); + bg.add(globalUiScaling[i]); + } + // Option is only available on Java Runtime 9 or higher + if (Platform.JAVA_VERSION <= 8) { + uiScalingMenu.setEnabled(false); + uiScalingMenu.setToolTipText("Only available on Java 9 or higher."); + } + // Options->Global Font Size JMenu fontSizeMenu = new JMenu("Change Global Font Size"); add(fontSizeMenu); @@ -2840,6 +2896,95 @@ private void applyCustomFont(Font font) { selectFont[index].setFont(FONTS[index].deriveFont(Misc.getScaledValue(12.0f))); } + /** Enables the UI scaling factor provided by the specified menu item. */ + private void applyUiScaling(DataRadioButtonMenuItem dmi) { + int percent = ((Integer) dmi.getData()); + if (dmi == globalUiScaling[globalUiScaling.length - 1]) { + if (percent < 0) { + percent = NearInfinity.getInstance().getUiScalingFactor(); + } + String ret = JOptionPane.showInputDialog(NearInfinity.getInstance(), + "Enter UI scaling factor in percent (50 - 400):", Integer.valueOf(percent)); + if (ret == null) { + dmi.setData(Integer.valueOf(percent)); + dmi.setText("Custom (" + percent + " %)..."); + return; + } + + int value = NearInfinity.getInstance().getUiScalingFactor(); + try { + int radix = 10; + if (ret.toLowerCase().startsWith("0x")) { + ret = ret.substring(2); + radix = 16; + } + value = Integer.parseInt(ret, radix); + if (value < 50 || value > 400) { + JOptionPane.showMessageDialog(NearInfinity.getInstance(), + "Number out of range. Using current value " + percent + "."); + value = NearInfinity.getInstance().getUiScalingFactor(); + } + + } catch (NumberFormatException nfe) { + JOptionPane.showMessageDialog(NearInfinity.getInstance(), + "Invalid number entered. Using current value " + percent + "."); + } + dmi.setData(Integer.valueOf(value)); + dmi.setText("Custom (" + value + " %)..."); + if (value == NearInfinity.getInstance().getUiScalingFactor()) { + return; + } + } + if (percent != NearInfinity.getInstance().getUiScalingFactor()) { + JOptionPane.showMessageDialog(NearInfinity.getInstance(), + "You have to restart Near Infinity\n" + "for the UI scale factor change to take effect."); + } + } + + /** Enables the global font size provided by the specified menu item. */ + private void applyGlobalFontSize(DataRadioButtonMenuItem dmi) { + int percent = ((Integer) dmi.getData()); + if (dmi == globalFontSize[globalFontSize.length - 1]) { + if (percent < 0) { + percent = NearInfinity.getInstance().getGlobalFontSize(); + } + String ret = JOptionPane.showInputDialog(NearInfinity.getInstance(), "Enter font size in percent (50 - 400):", + Integer.valueOf(percent)); + if (ret == null) { + dmi.setData(Integer.valueOf(percent)); + dmi.setText("Custom (" + percent + " %)..."); + return; + } + + int value = NearInfinity.getInstance().getGlobalFontSize(); + try { + int radix = 10; + if (ret.toLowerCase().startsWith("0x")) { + ret = ret.substring(2); + radix = 16; + } + value = Integer.parseInt(ret, radix); + if (value < 50 || value > 400) { + JOptionPane.showMessageDialog(NearInfinity.getInstance(), + "Number out of range. Using current value " + percent + "."); + value = NearInfinity.getInstance().getGlobalFontSize(); + } + } catch (NumberFormatException nfe) { + JOptionPane.showMessageDialog(NearInfinity.getInstance(), + "Invalid number entered. Using current value " + percent + "."); + } + dmi.setData(Integer.valueOf(value)); + dmi.setText("Custom (" + value + " %)..."); + if (value == NearInfinity.getInstance().getGlobalFontSize()) { + return; + } + } + if (percent != NearInfinity.getInstance().getGlobalFontSize()) { + JOptionPane.showMessageDialog(NearInfinity.getInstance(), + "You have to restart Near Infinity\n" + "for the font size change to take effect."); + } + } + /** Returns defValue if masked bit is clear or value if masked bit is already set. */ private boolean fixOption(int mask, boolean defValue, boolean value) { boolean retVal = value; @@ -2941,6 +3086,14 @@ public LookAndFeelInfo getLookAndFeel() { return DEFAULT_LOOKFEEL; } + public boolean isUiScalingEnabled() { + return optionUiScalingEnabled.isSelected(); + } + + public int getUiScalingFactor() { + return ((Integer) globalUiScaling[getSelectedButtonIndex(globalUiScaling, 0)].getData()); + } + public int getGlobalFontSize() { return ((Integer) globalFontSize[getSelectedButtonIndex(globalFontSize, 2)].getData()); } @@ -2969,6 +3122,13 @@ public void actionPerformed(ActionEvent event) { NearInfinity.getInstance().updateLauncher(); } else if (event.getSource() == optionShowSize) { optionSizeInHex.setEnabled(optionShowSize.isSelected()); + } else if (event.getSource() == optionUiScalingEnabled) { + final boolean isEnabled = optionUiScalingEnabled.isSelected(); + for (int i = 0; i < globalUiScaling.length; i++) { + globalUiScaling[i].setEnabled(isEnabled); + } + JOptionPane.showMessageDialog(NearInfinity.getInstance(), + "You have to restart Near Infinity\n" + "for the UI scale override setting to take effect."); } else if (event.getActionCommand().equals("TextFont")) { int index = FONTS.length - 1; FontChooser fc = new FontChooser(); @@ -2978,48 +3138,10 @@ public void actionPerformed(ActionEvent event) { if (fc.showDialog(NearInfinity.getInstance()) == FontChooser.OK_OPTION) { applyCustomFont(fc.getSelectedFont()); } + } else if (event.getActionCommand().equals("ChangeUiScaling")) { + applyUiScaling((DataRadioButtonMenuItem) event.getSource()); } else if (event.getActionCommand().equals("ChangeFontSize")) { - DataRadioButtonMenuItem dmi = (DataRadioButtonMenuItem) event.getSource(); - int percent = ((Integer) dmi.getData()); - if (dmi == globalFontSize[globalFontSize.length - 1]) { - if (percent < 0) { - percent = NearInfinity.getInstance().getGlobalFontSize(); - } - String ret = JOptionPane.showInputDialog(NearInfinity.getInstance(), "Enter font size in percent (50 - 400):", - Integer.valueOf(percent)); - if (ret == null) { - dmi.setData(Integer.valueOf(percent)); - dmi.setText("Custom (" + percent + " %)..."); - return; - } - - int value = NearInfinity.getInstance().getGlobalFontSize(); - try { - int radix = 10; - if (ret.toLowerCase().startsWith("0x")) { - ret = ret.substring(2); - radix = 16; - } - value = Integer.parseInt(ret, radix); - if (value < 50 || value > 400) { - JOptionPane.showMessageDialog(NearInfinity.getInstance(), - "Number out of range. Using current value " + percent + "."); - value = NearInfinity.getInstance().getGlobalFontSize(); - } - } catch (NumberFormatException nfe) { - JOptionPane.showMessageDialog(NearInfinity.getInstance(), - "Invalid number entered. Using current value " + percent + "."); - } - dmi.setData(Integer.valueOf(value)); - dmi.setText("Custom (" + value + " %)..."); - if (value == NearInfinity.getInstance().getGlobalFontSize()) { - return; - } - } - if (percent != NearInfinity.getInstance().getGlobalFontSize()) { - JOptionPane.showMessageDialog(NearInfinity.getInstance(), - "You have to restart Near Infinity\n" + "for the font size change to take effect."); - } + applyGlobalFontSize((DataRadioButtonMenuItem) event.getSource()); } else if (event.getActionCommand().equals("Charset")) { DataRadioButtonMenuItem dmi = (DataRadioButtonMenuItem) event.getSource(); String csName = (String) dmi.getData(); diff --git a/src/org/infinity/util/Platform.java b/src/org/infinity/util/Platform.java index 15d7ef240..ca49a836f 100644 --- a/src/org/infinity/util/Platform.java +++ b/src/org/infinity/util/Platform.java @@ -27,6 +27,9 @@ public enum OS { /** Returns the system-dependent name-separator character as string for the current platform. */ public final static String SEPARATOR = System.getProperty("file.separator"); + /** Returns the major version number of the active Java Runtime. */ + public final static int JAVA_VERSION = getJavaVersion(); + /** * Determines the current operating system. */ @@ -45,6 +48,25 @@ public static OS getPlatform() { } } + /** + * Returns the Java Runtime major version. + */ + public static int getJavaVersion() { + int retVal = 8; + + String[] versionString = System.getProperty("java.specification.version").split("\\."); + try { + int major = Integer.parseInt(versionString[0]); + if (major <= 1 && versionString.length > 1) { + major = Integer.parseInt(versionString[1]); + } + retVal = major; + } catch (NumberFormatException e) { + } + + return retVal; + } + private Platform() { } } From 2f837aaf55d9a62ca2ea54985932a0b1108843a1 Mon Sep 17 00:00:00 2001 From: Argent77 <4519923+Argent77@users.noreply.github.com> Date: Sat, 22 Oct 2022 11:20:21 +0200 Subject: [PATCH 04/11] Resource field updates --- src/org/infinity/resource/are/AreResource.java | 4 ++-- src/org/infinity/resource/pro/ProSingleType.java | 1 + 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/src/org/infinity/resource/are/AreResource.java b/src/org/infinity/resource/are/AreResource.java index e489c1669..143e7d614 100644 --- a/src/org/infinity/resource/are/AreResource.java +++ b/src/org/infinity/resource/are/AreResource.java @@ -128,8 +128,8 @@ public final class AreResource extends AbstractStruct implements Resource, HasCh public static final String[] FLAGS_ARRAY = { "Indoors", "Outdoors", "Day/Night", "Weather", "City", "Forest", "Dungeon", "Extended night", "Can rest indoors" }; - public static final String[] FLAGS_TORMENT_ARRAY = { "Indoors", "Hive", "Hive Night", "Clerk's ward", "Lower ward", - "Ravel's maze", "Baator", "Rubikon", "Negative material plane", "Curst", "Carceri", "Allow day/night" }; + public static final String[] FLAGS_TORMENT_ARRAY = { "Indoors", "Hive", null, "Clerk's ward", "Lower ward", + "Ravel's maze", "Baator", "Rubikon", "Fortress of Regrets", "Curst", "Carceri", "Allow day/night" }; public static final String[] ATYPE_ARRAY = { "Normal", "Save not allowed", "Tutorial area", "Dead magic zone", "Dream area" }; diff --git a/src/org/infinity/resource/pro/ProSingleType.java b/src/org/infinity/resource/pro/ProSingleType.java index 3200af04c..7a85537dd 100644 --- a/src/org/infinity/resource/pro/ProSingleType.java +++ b/src/org/infinity/resource/pro/ProSingleType.java @@ -50,6 +50,7 @@ public final class ProSingleType extends AbstractStruct implements AddRemovable public static final String[] TRAIL_ARRAY = { "No flags set", "Draw at target", "Draw at source" }; static { + FACE_TARGET_MAP.put(0L, "Do not mirror"); FACE_TARGET_MAP.put(1L, "Do not face target"); FACE_TARGET_MAP.put(5L, "Mirrored east (reduced)"); FACE_TARGET_MAP.put(9L, "Mirrored east (full)"); From 3c07ffccc8557fb436516a1c2a6c3420fe9479ff Mon Sep 17 00:00:00 2001 From: Argent77 <4519923+Argent77@users.noreply.github.com> Date: Sat, 22 Oct 2022 20:24:52 +0200 Subject: [PATCH 05/11] Update library: RSyntaxTextArea 3.1.1 -> 3.3.0 --- .classpath | 2 +- .../RSyntaxTextArea-3.1.1-light.zip | Bin 729710 -> 0 bytes .../RSyntaxTextArea.License.txt | 2 +- .../rsyntaxtextarea-3.3.0-sources.jar | Bin 0 -> 519974 bytes lib/rsyntaxtextarea/rsyntaxtextarea.jar | Bin 624999 -> 646255 bytes 5 files changed, 2 insertions(+), 2 deletions(-) delete mode 100644 lib/rsyntaxtextarea/RSyntaxTextArea-3.1.1-light.zip create mode 100644 lib/rsyntaxtextarea/rsyntaxtextarea-3.3.0-sources.jar diff --git a/.classpath b/.classpath index ca4fa57d7..3e5f133fc 100644 --- a/.classpath +++ b/.classpath @@ -2,7 +2,7 @@ - + diff --git a/lib/rsyntaxtextarea/RSyntaxTextArea-3.1.1-light.zip b/lib/rsyntaxtextarea/RSyntaxTextArea-3.1.1-light.zip deleted file mode 100644 index 9b2464cecabb38cecc6363ba15225bcb8297ba69..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 729710 zcmb5UW3X^dlP!4c^Bg?Kwr$(CZQHhO+qP}nwr!tzd%o^(qUTP>om;Ups($QTJ7ZPt z6`7GGCkYIK1ONm8006C;E%(p#?}75qNK`NgAAM+yjm({F9Sm)4Ow3IqR~9BEs3fC~C#EFDrzyi}Y09U> zmFtwr#H9kDjaB@Gq}n7R7#t5JBM=!K86Fo7Cm9(e6(XS#6Zrcbufk<=l|n}2Lsag$rCK-o}ex$XaNt46o}*1IpaK(fXHt} zYxZ3;bIy@1-45b@^<{fFjCxs@fY(lsESywxqv9CL79#5P-$S748V z5S$$JUCbS6+^wy&<@#j?>0r7~DXZ*l7(?P(#IfSy=7|1;)dQE3OK+_ZN=jTgUEPkW z5E0R|d|CCH@`_Sf#wDrGNa&-jLgfXNPQN@K-yiCCYb-k!+w6H-Vd8}Z>82xc#6d`n zUPa@fvB}%j2mN`Q3J^6j47f&i+p*@03%(RsjD)eQp2wkQgXzBSxe@!=T0(L@G-M4P z{(6y_y?r()KSrVyHzBH_QpWN|iSTc>s0-W60g}v5zsWfd2{^%_0EsqW22I#FzkD~Q z8J8*#{LCsbWLPmIPnD>bW*Q4x?T{RC=i)cd1dt}V&HFI95D*u%;j;IwH)d^%1Z0Ux zlM3a_kA@$l-Q!MeO)>{v%xP>M`_kRlvue8UMtceolzM2b@cDmjFe=bmro}&JR0s?J zfZ%^**TC7_%816)LEp&Acv(r(_Afnr ^!a)M@gv*Jd9h4P;=KY(T=Ic0mno$c`& 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%0DuS_ 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

p#*Kj|mV0qhF^F3~ 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

xZqdDpLy&uKepK5$s?tx;pvW(sO;@g4$8^D_ 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

p}Tnr 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 literal 0 HcmV?d00001 diff --git a/lib/rsyntaxtextarea/rsyntaxtextarea.jar b/lib/rsyntaxtextarea/rsyntaxtextarea.jar index 262670d9ddff352790cd8999aa7bd8665f0eaba9..fb90944b9da94cc35242fd731be24c94b85619ae 100644 GIT binary patch delta 452502 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

hx$BP&trH;q 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 a0|6@o7C2W5uvo3XT0eIk=A$q;Q}6#MA?%9) delta 432423 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 yA145 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 Date: Tue, 25 Oct 2022 15:12:02 +0200 Subject: [PATCH 06/11] Improved and generalized text resource features: trim, align, sort - Made functions static and independent of class-specific fields - Added more function parameters --- .../resource/text/PlainTextResource.java | 424 ++++++++++-------- 1 file changed, 230 insertions(+), 194 deletions(-) diff --git a/src/org/infinity/resource/text/PlainTextResource.java b/src/org/infinity/resource/text/PlainTextResource.java index 4a53a5837..97223cf99 100644 --- a/src/org/infinity/resource/text/PlainTextResource.java +++ b/src/org/infinity/resource/text/PlainTextResource.java @@ -107,6 +107,221 @@ public static String getSearchString(ResourceEntry entry) { return retVal; } + /** + * Removes whitespace at the beginning and/or end of lines. + * + * @param text The text to trim. + * @param trailing Whether to trim trailing whitespace. + * @param leading Whether to trim leading whitespace. + * @return The trimmed string. Returns {@code null} if {@code text} argument is {@code null}. + */ + public static String trimSpaces(String text, boolean trailing, boolean leading) { + String retVal = null; + if (text != null) { + final String newline = text.contains("\r\n") ? "\r\n" : "\n"; + final String[] lines = text.split("\r?\n"); + final StringBuilder newText = new StringBuilder(); + for (String line : lines) { + if (trailing && leading) { + newText.append(line.trim()).append(newline); + } else if (trailing) { + newText.append(Misc.trimEnd(line)).append(newline); + } else if (leading) { + newText.append(Misc.trimStart(line)).append(newline); + } else { + newText.append(line).append(newline); + } + } + retVal = newText.toString(); + } + return retVal; + } + + /** + * Aligns table columns to improve readability. + * + * @param text The text content with table columns. + * @param spaces Min. number of spaces between columns. + * @param alignPerColumn specify {@code true} to calculate max width on a per column basis, or {@code false} to + * calculate for the whole table. + * @param multipleOf ensures that column position is always a multiple of the specified value. (e.g. specify 2 to + * have every column start at an even horizontal position.) + * @return The aligned text. Returns {@code null} if {@code text} argument is {@code null}. + */ + public static String alignTableColumns(String text, int spaces, boolean alignPerColumn, int multipleOf) { + String retVal = null; + if (text != null) { + spaces = Math.max(1, spaces); + multipleOf = Math.max(1, multipleOf); + + // splitting text into lines + final String newline = text.contains("\r\n") ? "\r\n" : "\n"; + final String[] lines = text.split("\r?\n"); + + // splitting lines into tokens + int maxCols = 0; + int maxTokenLength = 0; + final List> matrix = new ArrayList<>(lines.length); + for (int i = 0; i < lines.length; i++) { + final String[] tokens = lines[i].split("\\s+"); + if (tokens.length > 0) { + matrix.add(new ArrayList<>(tokens.length)); + if (matrix.size() == 3) { + matrix.get(matrix.size() - 1).add(""); + } + for (String token : tokens) { + if (!token.isEmpty()) { + matrix.get(i).add(token); + } + } + if (matrix.size() > 2) { + maxCols = Math.max(maxCols, matrix.get(matrix.size() - 1).size()); + for (String token : tokens) { + maxTokenLength = Math.max(maxTokenLength, token.length()); + } + } + } + } + + // calculating column sizes + final int[] columns = new int[maxCols]; + for (int col = 0; col < maxCols; col++) { + int maxLen = 0; + if (alignPerColumn) { + for (int row = 2; row < matrix.size(); row++) { + if (col < matrix.get(row).size()) { + maxLen = Math.max(maxLen, matrix.get(row).get(col).length()); + } + } + } else { + maxLen = maxTokenLength; + } + int len = maxLen + spaces; + if (len % multipleOf != 0) { + len += multipleOf - (len % multipleOf); + } + columns[col] = len; + } + + // normalizing data + final StringBuilder newText = new StringBuilder(); + int blankLen = maxTokenLength + spaces; + if (blankLen % multipleOf != 0) { + blankLen += multipleOf - (blankLen % multipleOf); + } + String blank = new String(new char[blankLen]).replace('\0', ' '); + for (int row = 0, rows = matrix.size(); row < rows; row++) { + StringBuilder sb = new StringBuilder(); + for (int col = 0, cols = matrix.get(row).size(); col < cols; col++) { + String token = matrix.get(row).get(col); + sb.append(token); + if (col < cols - 1) { + if (row < 2) { + sb.append(' '); + } else { + int end = columns[col] - token.length(); + sb.append((end < blank.length()) ? blank.substring(0, end) : blank); + } + } + } + newText.append(sb.toString()).append(newline); + } + retVal = newText.toString(); + } + return retVal; + } + + /** + * Sorts IDS entries by key values. Special entry at line 1 is excluded. + * + * @param text The text content to perform sorting on. + * @param ascending {@code true} to sort in ascending order, {@code false} to sort in descending order. + * @param isTrigger {@code true} to ignore bit 14 (0x4000) when comparing is performed. + * @return Text with sorted IDS entries. Returns {@code null} if {@code text} argument is {@code null}. + */ + public static String sortTable(String text, boolean ascending, boolean isTrigger) { + String retVal = null; + if (text != null) { + final String newline = text.contains("\r\n") ? "\r\n" : "\n"; + final String[] lines = text.split("\r?\n"); + + // dividing lines into fixed entries and (sortable) ids entries + final List header = new ArrayList<>(); // contains fixed lines to be placed at the top + final List entries = new ArrayList<>(); // contains ids entries + for (String line : lines) { + final String[] items = line.trim().split("\\s+", 2); + if (items.length < 2 || items[0].equalsIgnoreCase("IDS")) { + header.add(line); + } else { + entries.add(line); + } + } + if (entries.isEmpty()) { + return text; + } + + // sorting ids entries + final Pattern patKey = Pattern.compile("\\s*(\\S+).*"); + entries.sort((c1, c2) -> { + int radix; + long v1 = Long.MAX_VALUE, v2 = Long.MAX_VALUE; + Matcher m; + + m = patKey.matcher(c1); + if (m.find()) { + String s = m.groupCount() > 0 ? m.group(1) : ""; + radix = (s.length() > 2 && (s.charAt(1) == 'x' || s.charAt(1) == 'X')) ? 16 : 10; + if (radix == 16) { + s = s.substring(2); + } + try { + v1 = Long.parseLong(s, radix); + } catch (NumberFormatException ex) { + } + } + + m = patKey.matcher(c2); + if (m.find()) { + String s = m.groupCount() > 0 ? m.group(1) : ""; + radix = (s.length() > 2 && (s.charAt(1) == 'x' || s.charAt(1) == 'X')) ? 16 : 10; + if (radix == 16) { + s = s.substring(2); + } + try { + v2 = Long.parseLong(s, radix); + } catch (NumberFormatException ex) { + } + } + + if (isTrigger) { + v1 &= ~0x4000; + v2 &= ~0x4000; + } + + int result = (v1 < v2) ? -1 : ((v1 > v2) ? 1 : 0); + if (!ascending) { + result = -result; + } + return result; + }); + + // building output string + final StringBuilder sb = new StringBuilder(); + for (String s : header) { + sb.append(s).append(newline); + } + for (String s : entries) { + sb.append(s).append(newline); + } + if (text.charAt(text.length() - 1) != '\n') { + sb.delete(sb.length() - newline.length(), sb.length()); + } + + retVal = sb.toString(); + } + return retVal; + } + public PlainTextResource(ResourceEntry entry) throws Exception { this.entry = entry; ByteBuffer buffer = entry.getResourceBuffer(); @@ -135,7 +350,7 @@ public void actionPerformed(ActionEvent event) { } else if (buttonPanel.getControlByType(ButtonPanel.Control.EXPORT_BUTTON) == event.getSource()) { ResourceFactory.exportResource(entry, panel.getTopLevelAncestor()); } else if (buttonPanel.getControlByType(ButtonPanel.Control.TRIM_SPACES) == event.getSource()) { - trimSpaces(); + setText(trimSpaces(editor.getText(), true, false)); } } @@ -200,13 +415,13 @@ public void itemStateChanged(ItemEvent event) { } } else if (event.getSource() == bpmFormat) { if (bpmFormat.getSelectedItem() == miFormatTrim) { - trimSpaces(); + setText(trimSpaces(editor.getText(), true, false)); } else if (bpmFormat.getSelectedItem() == miFormatAlignCompact) { - alignTableColumns(2, true, 4); + setText(alignTableColumns(editor.getText(), 2, true, 4)); } else if (bpmFormat.getSelectedItem() == miFormatAlignUniform) { - alignTableColumns(1, false, 1); + setText(alignTableColumns(editor.getText(), 1, false, 1)); } else if (bpmFormat.getSelectedItem() == miFormatSort) { - sortTable(true); + setText(sortTable(editor.getText(), true, entry.getResourceRef().equalsIgnoreCase("TRIGGER"))); } } } @@ -291,7 +506,7 @@ public JComponent makeViewer(ViewableContainer container) { miFormatAlignCompact.setToolTipText("Align table columns to improve readability. Column width is calculated individually."); miFormatAlignUniform = new JMenuItem("Align table (uniform)"); miFormatAlignUniform.setToolTipText( - "Align table columns to improve readability. Column width is calculated evenly, similar to WeiDU's PRETTY_PRINT_2DA."); + "Align table columns to improve readability. Column width is calculated evenly, comparable to WeiDU's PRETTY_PRINT_2DA."); ButtonPopupMenu bpmFormat = new ButtonPopupMenu("Format...", new JMenuItem[] { miFormatTrim, miFormatAlignCompact, miFormatAlignUniform }); bpmFormat.addItemListener(this); @@ -299,7 +514,7 @@ public JComponent makeViewer(ViewableContainer container) { } else if ("IDS".equals(ext)) { miFormatTrim = new JMenuItem("Trim spaces"); miFormatSort = new JMenuItem("Sort entries"); - miFormatSort.setToolTipText("Sort entries in ascending order."); + miFormatSort.setToolTipText("Sort entries in ascending order. Note: Bit 14 (0x4000) is ignored for TRIGGER.IDS."); ButtonPopupMenu bpmFormat = new ButtonPopupMenu("Format...", new JMenuItem[] { miFormatTrim, miFormatSort }); bpmFormat.addItemListener(this); buttonPanel.addControl(bpmFormat, ButtonPanel.Control.CUSTOM_1); @@ -366,196 +581,17 @@ public List extract2DAHeaders() { } /** - * Removes trailing whitespace from every line of the text. Ensures that text ends with a newline. - */ - public void trimSpaces() { - String input = editor.getText(); - String[] lines = input.split("\n"); - StringBuilder newText = new StringBuilder(); - for (String line : lines) { - newText.append(Misc.trimEnd(line)).append('\n'); - } - String output = newText.toString(); - - if (input.compareTo(output) != 0) { - editor.setText(output); - editor.setCaretPosition(0); - } - } - - /** - * Aligns table columns to improve readability. - * - * @param spaces Min. number of spaces between columns. - * @param alignPerColumn specify {@code true} to calculate max width on a per column basis, or {@code false} to - * calculate for the whole table. - * @param multipleOf ensures that column position is always a multiple of the specified value. (e.g. specify 2 to - * have every column start at an even horizontal position.) - */ - public void alignTableColumns(int spaces, boolean alignPerColumn, int multipleOf) { - spaces = Math.max(1, spaces); - multipleOf = Math.max(1, multipleOf); - - // splitting text into lines - String input = editor.getText(); - String[] lines = input.split("\n"); - - // splitting lines into tokens - int maxCols = 0; - int maxTokenLength = 0; - List> matrix = new ArrayList<>(lines.length); - for (int i = 0; i < lines.length; i++) { - String[] tokens = lines[i].split("\\s+"); - if (tokens.length > 0) { - matrix.add(new ArrayList<>(tokens.length)); - if (matrix.size() == 3) { - matrix.get(matrix.size() - 1).add(""); - } - for (String token : tokens) { - if (!token.isEmpty()) { - matrix.get(i).add(token); - } - } - if (matrix.size() > 2) { - maxCols = Math.max(maxCols, matrix.get(matrix.size() - 1).size()); - for (String token : tokens) { - maxTokenLength = Math.max(maxTokenLength, token.length()); - } - } - } - } - - // calculating column sizes - int[] columns = new int[maxCols]; - for (int col = 0; col < maxCols; col++) { - int maxLen = 0; - if (alignPerColumn) { - for (int row = 2; row < matrix.size(); row++) { - if (col < matrix.get(row).size()) { - maxLen = Math.max(maxLen, matrix.get(row).get(col).length()); - } - } - } else { - maxLen = maxTokenLength; - } - int len = maxLen + spaces; - if (len % multipleOf != 0) { - len += multipleOf - (len % multipleOf); - } - columns[col] = len; - } - - // normalizing data - StringBuilder newText = new StringBuilder(); - int blankLen = maxTokenLength + spaces; - if (blankLen % multipleOf != 0) { - blankLen += multipleOf - (blankLen % multipleOf); - } - String blank = new String(new char[blankLen]).replace('\0', ' '); - for (int row = 0, rows = matrix.size(); row < rows; row++) { - StringBuilder sb = new StringBuilder(); - for (int col = 0, cols = matrix.get(row).size(); col < cols; col++) { - String token = matrix.get(row).get(col); - sb.append(token); - if (col < cols - 1) { - if (row < 2) { - sb.append(' '); - } else { - int end = columns[col] - token.length(); - sb.append((end < blank.length()) ? blank.substring(0, end) : blank); - } - } - } - newText.append(sb.toString()).append('\n'); - } - String output = newText.toString(); - - if (input.compareTo(output) != 0) { - editor.setText(newText.toString()); - editor.setCaretPosition(0); - } - } - - /** - * Sorts IDS entries by key values. Special entry at line 1 is excluded. + * Sets the text in the editor and places the caret before the first character. Does nothing if input text is equal + * to the current text content. * - * @param ascending {@code true} to sort in ascending order, {@code false} to sort in descending order. + * @param text The text to set. */ - public void sortTable(boolean ascending) { - String input = editor.getText(); - String[] lines = input.split("\n"); - - // dividing lines into fixed entries and (sortable) ids entries - List header = new ArrayList<>(); // contains fixed lines to be placed at the top - List entries = new ArrayList<>(); // contains ids entries - for (String line : lines) { - String[] items = line.trim().split("\\s+", 2); - if (items.length < 2 || items[0].equalsIgnoreCase("IDS")) { - header.add(line); - } else { - entries.add(line); - } - } - if (entries.isEmpty()) { - return; - } - - // sorting ids entries - final Pattern patKey = Pattern.compile("\\s*(\\S+).*"); - entries.sort((c1, c2) -> { - int radix; - long v1 = Long.MAX_VALUE, v2 = Long.MAX_VALUE; - Matcher m; - - m = patKey.matcher(c1); - if (m.find()) { - String s = m.groupCount() > 0 ? m.group(1) : ""; - radix = (s.length() > 2 && (s.charAt(1) == 'x' || s.charAt(1) == 'X')) ? 16 : 10; - if (radix == 16) { - s = s.substring(2); - } - try { - v1 = Long.parseLong(s, radix); - } catch (NumberFormatException ex) { - } - } - - m = patKey.matcher(c2); - if (m.find()) { - String s = m.groupCount() > 0 ? m.group(1) : ""; - radix = (s.length() > 2 && (s.charAt(1) == 'x' || s.charAt(1) == 'X')) ? 16 : 10; - if (radix == 16) { - s = s.substring(2); - } - try { - v2 = Long.parseLong(s, radix); - } catch (NumberFormatException ex) { - } + public void setText(String text) { + if (text != null) { + if (text.compareTo(editor.getText()) != 0) { + editor.setText(text); + editor.setCaretPosition(0); } - - int retVal = (v1 < v2) ? -1 : ((v1 > v2) ? 1 : 0); - if (!ascending) { - retVal = -retVal; - } - return retVal; - }); - - // building output string - StringBuilder sb = new StringBuilder(); - for (String s : header) { - sb.append(s).append('\n'); - } - for (String s : entries) { - sb.append(s).append('\n'); - } - if (input.charAt(input.length() - 1) != '\n') { - sb.deleteCharAt(sb.length() - 1); - } - - String output = sb.toString(); - if (!input.equals(output)) { - editor.setText(output); - editor.setCaretPosition(0); } } From 9f8799476d010d831d29f28d88ef963306dc8cdc Mon Sep 17 00:00:00 2001 From: Argent77 <4519923+Argent77@users.noreply.github.com> Date: Tue, 25 Oct 2022 21:02:37 +0200 Subject: [PATCH 07/11] Mass Exporter: Added shortcut and new export options Shortcut: Ctrl+M Export options: - Trim spaces (all text) - Align table columns (2DA): compact or uniform --- src/org/infinity/gui/BrowserMenuBar.java | 2 +- src/org/infinity/util/MassExporter.java | 258 ++++++++++++++++------- 2 files changed, 184 insertions(+), 76 deletions(-) diff --git a/src/org/infinity/gui/BrowserMenuBar.java b/src/org/infinity/gui/BrowserMenuBar.java index 1db5aca7d..cb80a40c4 100644 --- a/src/org/infinity/gui/BrowserMenuBar.java +++ b/src/org/infinity/gui/BrowserMenuBar.java @@ -1586,7 +1586,7 @@ private ToolsMenu() { addSeparator(); - toolMassExport = makeMenuItem("Mass Export...", KeyEvent.VK_M, Icons.ICON_EXPORT_16.getIcon(), -1, this); + toolMassExport = makeMenuItem("Mass Export...", KeyEvent.VK_M, Icons.ICON_EXPORT_16.getIcon(), KeyEvent.VK_M, this); add(toolMassExport); addSeparator(); diff --git a/src/org/infinity/util/MassExporter.java b/src/org/infinity/util/MassExporter.java index 7c081cdbe..d142cb819 100644 --- a/src/org/infinity/util/MassExporter.java +++ b/src/org/infinity/util/MassExporter.java @@ -15,13 +15,11 @@ import java.awt.event.ActionListener; import java.awt.image.BufferedImage; import java.awt.image.RenderedImage; -import java.io.BufferedWriter; import java.io.EOFException; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; -import java.io.Writer; import java.nio.ByteBuffer; import java.nio.file.Files; import java.nio.file.Path; @@ -52,8 +50,11 @@ import org.infinity.gui.ViewerUtil; import org.infinity.icon.Icons; import org.infinity.resource.Profile; +import org.infinity.resource.Resource; import org.infinity.resource.ResourceFactory; import org.infinity.resource.StructEntry; +import org.infinity.resource.TextResource; +import org.infinity.resource.bcs.BcsResource; import org.infinity.resource.bcs.Decompiler; import org.infinity.resource.cre.CreResource; import org.infinity.resource.graphics.BamDecoder; @@ -67,6 +68,7 @@ import org.infinity.resource.graphics.TisResource; import org.infinity.resource.key.ResourceEntry; import org.infinity.resource.sound.AudioFactory; +import org.infinity.resource.text.PlainTextResource; import org.infinity.resource.video.MveResource; import org.infinity.util.io.FileEx; import org.infinity.util.io.FileManager; @@ -90,7 +92,10 @@ public final class MassExporter extends ChildFrame implements ActionListener, Li private final JCheckBox cbDecompress = new JCheckBox("Decompress BAM/MOS", false); private final JCheckBox cbConvertToPNG = new JCheckBox("Export MOS/PVRZ/TIS as PNG", false); private final JCheckBox cbConvertTisVersion = new JCheckBox("Convert TIS to ", false); + private final JCheckBox cbTrimText = new JCheckBox("Trim spaces in text files", false); + private final JCheckBox cbFormatAlign = new JCheckBox("Align 2DA table data:", false); private final JComboBox cbConvertTisList = new JComboBox<>(new String[] { "Palette-based", "PVRZ-based" }); + private final JComboBox cbFormatAlignList = new JComboBox<>(new String[] { "Compact", "Uniform" }); private final JCheckBox cbExtractFramesBAM = new JCheckBox("Export BAM frames as ", false); private final JCheckBox cbExportMVEasAVI = new JCheckBox("Export MVE as AVI", false); private final JCheckBox cbOverwrite = new JCheckBox("Overwrite existing files", false); @@ -146,42 +151,71 @@ public MassExporter() { pTisConvert.add(cbConvertTisVersion); pTisConvert.add(cbConvertTisList); - gbc = ViewerUtil.setGBC(gbc, 0, 0, 1, 1, 1.0, 1.0, GridBagConstraints.FIRST_LINE_START, + JPanel pTextAlign = new JPanel(new FlowLayout(FlowLayout.LEFT, 0, 0)); + pTextAlign.add(cbFormatAlign); + pTextAlign.add(cbFormatAlignList); + cbFormatAlign.setToolTipText("Align table columns to improve readability:

"); + + int row = 0; + gbc = ViewerUtil.setGBC(gbc, 0, row, 1, 1, 1.0, 1.0, GridBagConstraints.FIRST_LINE_START, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 0, 0), 0, 0); bottomRightPanel.add(new JLabel("Options:"), gbc); - gbc = ViewerUtil.setGBC(gbc, 0, 1, 1, 1, 1.0, 1.0, GridBagConstraints.FIRST_LINE_START, + row++; + gbc = ViewerUtil.setGBC(gbc, 0, row, 1, 1, 1.0, 1.0, GridBagConstraints.FIRST_LINE_START, GridBagConstraints.HORIZONTAL, new Insets(2, 0, 0, 0), 0, 0); bottomRightPanel.add(cbIncludeExtraDirs, gbc); - gbc = ViewerUtil.setGBC(gbc, 0, 2, 1, 1, 1.0, 1.0, GridBagConstraints.FIRST_LINE_START, + row++; + gbc = ViewerUtil.setGBC(gbc, 0, row, 1, 1, 1.0, 1.0, GridBagConstraints.FIRST_LINE_START, GridBagConstraints.HORIZONTAL, new Insets(2, 0, 0, 0), 0, 0); bottomRightPanel.add(cbConvertWAV, gbc); - gbc = ViewerUtil.setGBC(gbc, 0, 3, 1, 1, 1.0, 1.0, GridBagConstraints.FIRST_LINE_START, + row++; + gbc = ViewerUtil.setGBC(gbc, 0, row, 1, 1, 1.0, 1.0, GridBagConstraints.FIRST_LINE_START, GridBagConstraints.HORIZONTAL, new Insets(2, 0, 0, 0), 0, 0); bottomRightPanel.add(cbConvertCRE, gbc); - gbc = ViewerUtil.setGBC(gbc, 0, 4, 1, 1, 1.0, 1.0, GridBagConstraints.FIRST_LINE_START, + row++; + gbc = ViewerUtil.setGBC(gbc, 0, row, 1, 1, 1.0, 1.0, GridBagConstraints.FIRST_LINE_START, GridBagConstraints.HORIZONTAL, new Insets(2, 0, 0, 0), 0, 0); bottomRightPanel.add(cbDecompile, gbc); - gbc = ViewerUtil.setGBC(gbc, 0, 5, 1, 1, 1.0, 1.0, GridBagConstraints.FIRST_LINE_START, + row++; + gbc = ViewerUtil.setGBC(gbc, 0, row, 1, 1, 1.0, 1.0, GridBagConstraints.FIRST_LINE_START, GridBagConstraints.HORIZONTAL, new Insets(2, 0, 0, 0), 0, 0); bottomRightPanel.add(cbDecrypt, gbc); - gbc = ViewerUtil.setGBC(gbc, 0, 6, 1, 1, 1.0, 1.0, GridBagConstraints.FIRST_LINE_START, + row++; + gbc = ViewerUtil.setGBC(gbc, 0, row, 1, 1, 1.0, 1.0, GridBagConstraints.FIRST_LINE_START, + GridBagConstraints.HORIZONTAL, new Insets(2, 0, 0, 0), 0, 0); + bottomRightPanel.add(cbTrimText, gbc); + row++; + gbc = ViewerUtil.setGBC(gbc, 0, row, 1, 1, 1.0, 1.0, GridBagConstraints.FIRST_LINE_START, + GridBagConstraints.HORIZONTAL, new Insets(2, 0, 0, 0), 0, 0); + bottomRightPanel.add(pTextAlign, gbc); + row++; + gbc = ViewerUtil.setGBC(gbc, 0, row, 1, 1, 1.0, 1.0, GridBagConstraints.FIRST_LINE_START, GridBagConstraints.HORIZONTAL, new Insets(2, 0, 0, 0), 0, 0); bottomRightPanel.add(cbDecompress, gbc); - gbc = ViewerUtil.setGBC(gbc, 0, 7, 1, 1, 1.0, 1.0, GridBagConstraints.FIRST_LINE_START, + row++; + gbc = ViewerUtil.setGBC(gbc, 0, row, 1, 1, 1.0, 1.0, GridBagConstraints.FIRST_LINE_START, GridBagConstraints.HORIZONTAL, new Insets(2, 0, 0, 0), 0, 0); bottomRightPanel.add(cbConvertToPNG, gbc); - gbc = ViewerUtil.setGBC(gbc, 0, 8, 1, 1, 1.0, 1.0, GridBagConstraints.FIRST_LINE_START, + row++; + gbc = ViewerUtil.setGBC(gbc, 0, row, 1, 1, 1.0, 1.0, GridBagConstraints.FIRST_LINE_START, GridBagConstraints.HORIZONTAL, new Insets(2, 0, 0, 0), 0, 0); bottomRightPanel.add(pTisConvert, gbc); - gbc = ViewerUtil.setGBC(gbc, 0, 9, 1, 1, 1.0, 1.0, GridBagConstraints.FIRST_LINE_START, + row++; + gbc = ViewerUtil.setGBC(gbc, 0, row, 1, 1, 1.0, 1.0, GridBagConstraints.FIRST_LINE_START, GridBagConstraints.HORIZONTAL, new Insets(2, 0, 0, 0), 0, 0); bottomRightPanel.add(pBamFrames, gbc); - gbc = ViewerUtil.setGBC(gbc, 0, 10, 1, 1, 1.0, 1.0, GridBagConstraints.FIRST_LINE_START, + row++; + gbc = ViewerUtil.setGBC(gbc, 0, row, 1, 1, 1.0, 1.0, GridBagConstraints.FIRST_LINE_START, GridBagConstraints.HORIZONTAL, new Insets(2, 0, 0, 0), 0, 0); bottomRightPanel.add(cbExportMVEasAVI, gbc); - gbc = ViewerUtil.setGBC(gbc, 0, 11, 1, 1, 1.0, 1.0, GridBagConstraints.FIRST_LINE_START, + row++; + gbc = ViewerUtil.setGBC(gbc, 0, row, 1, 1, 1.0, 1.0, GridBagConstraints.FIRST_LINE_START, GridBagConstraints.HORIZONTAL, new Insets(2, 0, 0, 0), 0, 0); bottomRightPanel.add(cbOverwrite, gbc); + row++; JPanel bottomPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT)); bottomPanel.add(bExport); @@ -363,37 +397,31 @@ private synchronized void advanceProgress(boolean finished) { } } - private void exportText(ResourceEntry entry, Path output) throws Exception { + private void exportText(ResourceEntry entry, Class resourceType, Path output) throws Exception { + // preparing source data ByteBuffer bb = entry.getResourceBuffer(); - if (bb.limit() > 0) { - if (bb.limit() > 1 && bb.getShort(0) == -1) { - bb = StaticSimpleXorDecryptor.decrypt(bb, 2); - } - // Keep trying. File may be in use by another thread. - try (OutputStream os = tryOpenOutputStream(output, 10, 100)) { - StreamUtils.writeBytes(os, bb); - } - } - } - private void exportDecompiledScript(ResourceEntry entry, Path output) throws Exception { - output = output.getParent().resolve(StreamUtils.replaceFileExtension(output.getFileName().toString(), "BAF")); - if (FileEx.create(output).exists() && !cbOverwrite.isSelected()) { - return; + if (cbDecrypt.isSelected()) { + bb = decryptText(entry, bb); } - ByteBuffer bb = entry.getResourceBuffer(); - if (bb.limit() > 0) { - if (bb.limit() > 1 && bb.getShort(0) == -1) { - bb = StaticSimpleXorDecryptor.decrypt(bb, 2); + + if (resourceType.isAssignableFrom(BcsResource.class) && cbDecompile.isSelected()) { + bb = decompileScript(entry, bb); + output = output.getParent().resolve(StreamUtils.replaceFileExtension(output.getFileName().toString(), "BAF")); + } else { + if (cbTrimText.isSelected()) { + bb = trimText(entry, bb); } - Decompiler decompiler = new Decompiler(StreamUtils.readString(bb, bb.limit()), false); - decompiler.setGenerateComments(BrowserMenuBar.getInstance().autogenBCSComments()); - String script = decompiler.getSource(); - // Keep trying. File may be in use by another thread. - try (BufferedWriter bw = new BufferedWriter(tryOpenOutputWriter(output, 10, 100))) { - bw.write(script.replaceAll("\r?\n", Misc.LINE_SEPARATOR)); + if (cbFormatAlign.isSelected() && entry.getExtension().equalsIgnoreCase("2DA")) { + bb = alignTable(entry, bb); } } + + // saving data + // Keep trying. File may be in use by another thread. + try (OutputStream os = tryOpenOutputStream(output, 10, 100)) { + StreamUtils.writeBytes(os, bb); + } } private void decompressBamMos(ResourceEntry entry, Path output) throws Exception { @@ -593,17 +621,12 @@ private void export(ResourceEntry entry) { if (FileEx.create(output).exists() && !cbOverwrite.isSelected()) { return; } - if ((entry.getExtension().equalsIgnoreCase("IDS") || entry.getExtension().equalsIgnoreCase("2DA") - || entry.getExtension().equalsIgnoreCase("BIO") || entry.getExtension().equalsIgnoreCase("RES") - || entry.getExtension().equalsIgnoreCase("INI") || entry.getExtension().equalsIgnoreCase("TXT") - || (Profile.isEnhancedEdition() && (entry.getExtension().equalsIgnoreCase("GLSL") - || entry.getExtension().equalsIgnoreCase("GUI") || entry.getExtension().equalsIgnoreCase("SQL"))) - || (entry.getExtension().equalsIgnoreCase("SRC") && Profile.getEngine() == Profile.Engine.IWD2)) - && cbDecrypt.isSelected()) { - exportText(entry, output); - } else if ((entry.getExtension().equalsIgnoreCase("BCS") || entry.getExtension().equalsIgnoreCase("BS")) - && cbDecompile.isSelected()) { - exportDecompiledScript(entry, output); + + Class resourceType = ResourceFactory.getResourceType(entry); + boolean isTextResource = TextResource.class.isAssignableFrom(resourceType); + + if (isTextResource) { + exportText(entry, resourceType, output); } else if (entry.getExtension().equalsIgnoreCase("MOS") && cbConvertToPNG.isSelected()) { mosToPng(entry, output); } else if (entry.getExtension().equalsIgnoreCase("PVRZ") && cbConvertToPNG.isSelected()) { @@ -634,6 +657,91 @@ private void export(ResourceEntry entry) { } } + /** + * Decompiles BCS data from {@code inBuffer}. + * + * @param entry The original {@link ResourceEntry} instance. + * @param inBuffer Buffer containing the current state of the resource data. + * @return {@link ByteBuffer} instance with decompiled script content. + */ + private ByteBuffer decompileScript(ResourceEntry entry, ByteBuffer inBuffer) throws Exception { + if (inBuffer != null) { + final Decompiler decompiler = new Decompiler(StreamUtils.readString(inBuffer, inBuffer.limit()), false); + decompiler.setGenerateComments(BrowserMenuBar.getInstance().autogenBCSComments()); + String script = decompiler.getSource().replaceAll("\r?\n", Misc.LINE_SEPARATOR); + return ByteBuffer.wrap(script.getBytes(Misc.CHARSET_DEFAULT)); + } + return inBuffer; + } + + /** + * Decrypts data from {@code inBuffer}. + * + * @param entry The original {@link ResourceEntry} instance. + * @param inBuffer Buffer containing the current state of the resource data. + * @return {@link ByteBuffer} instance with decrypted text content. + */ + private ByteBuffer decryptText(ResourceEntry entry, ByteBuffer inBuffer) { + if (inBuffer != null && inBuffer.limit() > 1 && inBuffer.getShort(0) == -1) { + return StaticSimpleXorDecryptor.decrypt(inBuffer, 2); + } + return inBuffer; + } + + /** + * Removes trailing whitespace from all lines of text in {@code inBuffer}. + * + * @param entry The original {@link ResourceEntry} instance. + * @param inBuffer Buffer containing the current state of the resource data. + * @return {@link ByteBuffer} instance with trimmed text content. + */ + private ByteBuffer trimText(ResourceEntry entry, ByteBuffer inBuffer) { + if (inBuffer != null) { + String text = Misc.CHARSET_DEFAULT.decode(inBuffer).toString(); + text = PlainTextResource.trimSpaces(text, true, false); + return ByteBuffer.wrap(text.getBytes(Misc.CHARSET_DEFAULT)); + } + return inBuffer; + } + + /** + * Aligns table data for improved readability. + * + * @param entry The original {@link ResourceEntry} instance. + * @param inBuffer Buffer containing the current state of the resource data. + * @return {@link ByteBuffer} instance with aligned text content. + */ + private ByteBuffer alignTable(ResourceEntry entry, ByteBuffer inBuffer) { + if (inBuffer != null) { + String text = Misc.CHARSET_DEFAULT.decode(inBuffer).toString(); + if (cbFormatAlignList.getSelectedIndex() == 1) { + // Uniform alignment + text = PlainTextResource.alignTableColumns(text, 1, false, 1); + } else { + // Compact alignment + text = PlainTextResource.alignTableColumns(text, 2, true, 4); + } + return ByteBuffer.wrap(text.getBytes(Misc.CHARSET_DEFAULT)); + } + return inBuffer; + } + +// /** +// * Sorts IDS entries by key values. +// * +// * @param entry The original {@link ResourceEntry} instance. +// * @param inBuffer Buffer containing the current state of the resource data. +// * @return {@link ByteBuffer} instance with sorted text content. +// */ +// private ByteBuffer sortTableText(ResourceEntry entry, ByteBuffer inBuffer) { +// if (entry != null && inBuffer != null && entry.getExtension().equalsIgnoreCase("IDS")) { +// String text = Misc.CHARSET_DEFAULT.decode(inBuffer).toString(); +// text = PlainTextResource.sortTable(text, true, entry.getResourceRef().equalsIgnoreCase("TRIGGER")); +// return ByteBuffer.wrap(text.getBytes(Misc.CHARSET_DEFAULT)); +// } +// return inBuffer; +// } + // Attempts to open "output" as stream to the specified file "numAttempts' time with "delayAttempts" ms delay // inbetween. private OutputStream tryOpenOutputStream(Path output, int numAttempts, int delayAttempts) throws Exception { @@ -660,31 +768,31 @@ private OutputStream tryOpenOutputStream(Path output, int numAttempts, int delay return null; } - // Attempts to open "output" as writer to the specified file "numAttempts' time with "delayAttempts" ms delay - // inbetween. - private Writer tryOpenOutputWriter(Path output, int numAttempts, int delayAttempts) throws Exception { - if (output != null) { - numAttempts = Math.max(1, numAttempts); - delayAttempts = Math.max(0, delayAttempts); - Writer w = null; - while (w == null) { - try { - w = Files.newBufferedWriter(output); - } catch (FileNotFoundException fnfe) { - w = null; - if (--numAttempts == 0) { - throw fnfe; - } - try { - Thread.sleep(delayAttempts); - } catch (InterruptedException ie) { - } - } - } - return w; - } - return null; - } +// // Attempts to open "output" as writer to the specified file "numAttempts' time with "delayAttempts" ms delay +// // inbetween. +// private Writer tryOpenOutputWriter(Path output, int numAttempts, int delayAttempts) throws Exception { +// if (output != null) { +// numAttempts = Math.max(1, numAttempts); +// delayAttempts = Math.max(0, delayAttempts); +// Writer w = null; +// while (w == null) { +// try { +// w = Files.newBufferedWriter(output); +// } catch (FileNotFoundException fnfe) { +// w = null; +// if (--numAttempts == 0) { +// throw fnfe; +// } +// try { +// Thread.sleep(delayAttempts); +// } catch (InterruptedException ie) { +// } +// } +// } +// return w; +// } +// return null; +// } // -------------------------- INNER CLASSES -------------------------- From e719c16a5d42b1e6d18ce9c0109b1692e0653f26 Mon Sep 17 00:00:00 2001 From: Argent77 <4519923+Argent77@users.noreply.github.com> Date: Wed, 2 Nov 2022 11:08:38 +0100 Subject: [PATCH 08/11] Add confirmation prompts and shortcut keys for bookmarked games Dynamically assigns Ctrl+Alt+[digit] and Ctrl+Alt+Shift+[digit] for entries 1 to 20 in the bookmarks list. --- src/org/infinity/gui/BrowserMenuBar.java | 78 +++++++++++++++++++++++- 1 file changed, 75 insertions(+), 3 deletions(-) diff --git a/src/org/infinity/gui/BrowserMenuBar.java b/src/org/infinity/gui/BrowserMenuBar.java index cb80a40c4..600875d10 100644 --- a/src/org/infinity/gui/BrowserMenuBar.java +++ b/src/org/infinity/gui/BrowserMenuBar.java @@ -22,6 +22,7 @@ import java.awt.event.KeyEvent; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; +import java.io.IOError; import java.io.IOException; import java.nio.charset.Charset; import java.nio.file.Path; @@ -41,7 +42,9 @@ import javax.swing.BorderFactory; import javax.swing.ButtonGroup; import javax.swing.Icon; +import javax.swing.InputMap; import javax.swing.JCheckBoxMenuItem; +import javax.swing.JComponent; import javax.swing.JLabel; import javax.swing.JMenu; import javax.swing.JMenuBar; @@ -856,6 +859,7 @@ private void updateBookmarkedGames() { for (int i = 0, size = bookmarkList.size(); i < size; i++) { gameBookmarks.insert(bookmarkList.get(i).getMenuItem(), i); } + updateBookmarkShortcuts(); gameBookmarkSeparator.setVisible(!bookmarkList.isEmpty()); gameBookmarkEdit.setEnabled(!bookmarkList.isEmpty()); @@ -873,6 +877,7 @@ private void removeBookmarkedGame(int idx) { Bookmark b = bookmarkList.remove(idx); if (b != null) { b.setActionListener(null); + updateBookmarkShortcuts(); } if (gameBookmarks.getPopupMenu().getComponent(idx) == b.getMenuItem()) { gameBookmarks.getPopupMenu().remove(idx); @@ -905,6 +910,7 @@ private void addBookmarkedGame(int idx, Bookmark bookmark) { if (bookmark != null && idx <= separatorIdx) { bookmarkList.add(idx, bookmark); + updateBookmarkShortcuts(); gameBookmarks.insert(bookmark.getMenuItem(), idx); gameBookmarkSeparator.setVisible(!bookmarkList.isEmpty()); gameBookmarkEdit.setEnabled(!bookmarkList.isEmpty()); @@ -941,6 +947,26 @@ private void addNewBookmark(String name) { } } + /** Updates shortcuts for bookmark menu items */ + private void updateBookmarkShortcuts() { + for (int i = 0, count = bookmarkList.size(); i < count; i++) { + final Bookmark bookmark = bookmarkList.get(i); + if (i < 10) { + // Ctrl+Alt+[digit] + int key = (i < 9) ? KeyEvent.VK_1 + i : KeyEvent.VK_0; + bookmark.updateAccelerator(KeyStroke.getKeyStroke(key, CTRL_MASK | InputEvent.ALT_DOWN_MASK)); + } else if (i < 20) { + // Ctrl+Alt+Shift+[digit] + int key = (i < 19) ? KeyEvent.VK_1 + (i % 10) : KeyEvent.VK_0; + bookmark.updateAccelerator( + KeyStroke.getKeyStroke(key, CTRL_MASK | InputEvent.ALT_DOWN_MASK | InputEvent.SHIFT_DOWN_MASK)); + } else { + // No shortcut + bookmark.updateAccelerator(null); + } + } + } + /** Adds the specified last game entry to the list. */ private void addLastGame(int idx, RecentGame rg) { if (rg != null) { @@ -1047,13 +1073,27 @@ public void actionPerformed(ActionEvent event) { } } if (selected != -1) { - Path keyFile = FileManager.resolve(bookmarkList.get(selected).getPath()); + final Bookmark bookmark = bookmarkList.get(selected); + Path keyFile = FileManager.resolve(bookmark.getPath()); if (!FileEx.create(keyFile).isFile()) { JOptionPane.showMessageDialog(NearInfinity.getInstance(), - bookmarkList.get(selected).getPath() + " could not be found", "Open game failed", + bookmark.getPath() + " could not be found", "Open game failed", JOptionPane.ERROR_MESSAGE); } else { - NearInfinity.getInstance().openGame(keyFile); + boolean isEqual = false; + try { + isEqual = keyFile.equals(Profile.getChitinKey().toAbsolutePath()); + } catch (IOError e) { + e.printStackTrace(); + } + if (!isEqual) { + String message = String.format("Open bookmarked game \"%s\"?", bookmark.getName()); + int confirm = JOptionPane.showConfirmDialog(NearInfinity.getInstance(), message, "Open game", + JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE); + if (confirm == JOptionPane.YES_OPTION) { + NearInfinity.getInstance().openGame(keyFile); + } + } } } } else if (event.getActionCommand().equals(RecentGame.getCommand())) { @@ -3755,6 +3795,38 @@ private void updateMenuItem() { item.setEnabled(isEnabled()); } + /** + * Assigns the specified {@link KeyStroke} to the menu item that is associated with this bookmark. + * Previous accelerators are removed. + * + * @param accelerator The new {@code KeyStroke}. Specify {@code null} to remove any existing keystroke. + */ + public void updateAccelerator(KeyStroke accelerator) { + removeAccelerator(); + if (accelerator != null) { + item.setAccelerator(accelerator); + } + } + + /** Removes the current accelerator keystroke from the menu item that is associated with the bookmark. */ + public void removeAccelerator() { + removeAcceleratorFromMap(item.getInputMap(JComponent.WHEN_FOCUSED), item.getAccelerator()); + removeAcceleratorFromMap(item.getInputMap(JComponent.WHEN_ANCESTOR_OF_FOCUSED_COMPONENT), item.getAccelerator()); + removeAcceleratorFromMap(item.getInputMap(JComponent.WHEN_IN_FOCUSED_WINDOW), item.getAccelerator()); + item.setAccelerator(null); + } + + /** Helper method: Removes an accelerator from the given input map. */ + private void removeAcceleratorFromMap(InputMap map, KeyStroke accelerator) { + if (map != null && accelerator != null) { + map.remove(accelerator); + final InputMap parentMap = map.getParent(); + if (parentMap != null) { + parentMap.remove(accelerator); + } + } + } + /** Returns the command string used for all menu items. */ public static String getCommand() { return MENUITEM_COMMAND; From f61a97496e00f3602293a5f20132da11ef87210d Mon Sep 17 00:00:00 2001 From: Argent77 <4519923+Argent77@users.noreply.github.com> Date: Sun, 6 Nov 2022 16:42:04 +0100 Subject: [PATCH 09/11] Improve EEex support Added support for EEex v0.9 and later versions, which requires a different file existence check. --- src/org/infinity/resource/Profile.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/org/infinity/resource/Profile.java b/src/org/infinity/resource/Profile.java index 87ed5f906..10735f4bc 100644 --- a/src/org/infinity/resource/Profile.java +++ b/src/org/infinity/resource/Profile.java @@ -2450,8 +2450,9 @@ private void initFeatures() { // Has EEex been installed? if (engine == Engine.EE) { - Path eeexDb = FileManager.query(getGameRoot(), "EEex.db"); - addEntry(Key.IS_GAME_EEEX, Type.BOOLEAN, FileEx.create(eeexDb).isFile()); + Path eeexDb = FileManager.query(getGameRoot(), "EEex.db"); // older EEex versions + Path eeexDb2 = FileManager.query(getGameRoot(), "InfinityLoader.db"); + addEntry(Key.IS_GAME_EEEX, Type.BOOLEAN, FileEx.create(eeexDb).isFile() || FileEx.create(eeexDb2).isFile()); } else { addEntry(Key.IS_GAME_EEEX, Type.BOOLEAN, Boolean.FALSE); } From 6bbdd8a423d56db9ffea1743c87c18d33173ff45 Mon Sep 17 00:00:00 2001 From: Argent77 <4519923+Argent77@users.noreply.github.com> Date: Mon, 7 Nov 2022 16:56:18 +0100 Subject: [PATCH 10/11] Redesign of the effect manager Replaced the huge monolitic EffectFactory class by a set of classes where each opcode is defined by a separate class. Fixed and/or updated several opcode definitions in the process. --- src/org/infinity/NearInfinity.java | 7 +- src/org/infinity/datatype/EffectType.java | 8 +- src/org/infinity/resource/EffectFactory.java | 5855 ----------------- .../infinity/resource/effects/BaseOpcode.java | 1378 ++++ .../resource/effects/DefaultOpcode.java | 49 + .../infinity/resource/effects/Opcode000.java | 50 + .../infinity/resource/effects/Opcode001.java | 106 + .../infinity/resource/effects/Opcode002.java | 35 + .../infinity/resource/effects/Opcode003.java | 65 + .../infinity/resource/effects/Opcode004.java | 35 + .../infinity/resource/effects/Opcode005.java | 100 + .../infinity/resource/effects/Opcode006.java | 35 + .../infinity/resource/effects/Opcode007.java | 35 + .../infinity/resource/effects/Opcode008.java | 45 + .../infinity/resource/effects/Opcode009.java | 49 + .../infinity/resource/effects/Opcode010.java | 35 + .../infinity/resource/effects/Opcode011.java | 35 + .../infinity/resource/effects/Opcode012.java | 103 + .../infinity/resource/effects/Opcode013.java | 94 + .../infinity/resource/effects/Opcode014.java | 35 + .../infinity/resource/effects/Opcode015.java | 97 + .../infinity/resource/effects/Opcode016.java | 54 + .../infinity/resource/effects/Opcode017.java | 76 + .../infinity/resource/effects/Opcode018.java | 67 + .../infinity/resource/effects/Opcode019.java | 35 + .../infinity/resource/effects/Opcode020.java | 54 + .../infinity/resource/effects/Opcode021.java | 50 + .../infinity/resource/effects/Opcode022.java | 75 + .../infinity/resource/effects/Opcode023.java | 125 + .../infinity/resource/effects/Opcode024.java | 63 + .../infinity/resource/effects/Opcode025.java | 94 + .../infinity/resource/effects/Opcode026.java | 48 + .../infinity/resource/effects/Opcode027.java | 35 + .../infinity/resource/effects/Opcode028.java | 35 + .../infinity/resource/effects/Opcode029.java | 35 + .../infinity/resource/effects/Opcode030.java | 35 + .../infinity/resource/effects/Opcode031.java | 35 + .../infinity/resource/effects/Opcode032.java | 46 + .../infinity/resource/effects/Opcode033.java | 60 + .../infinity/resource/effects/Opcode034.java | 60 + .../infinity/resource/effects/Opcode035.java | 60 + .../infinity/resource/effects/Opcode036.java | 66 + .../infinity/resource/effects/Opcode037.java | 66 + .../infinity/resource/effects/Opcode038.java | 35 + .../infinity/resource/effects/Opcode039.java | 70 + .../infinity/resource/effects/Opcode040.java | 35 + .../infinity/resource/effects/Opcode041.java | 54 + .../infinity/resource/effects/Opcode042.java | 66 + .../infinity/resource/effects/Opcode043.java | 35 + .../infinity/resource/effects/Opcode044.java | 97 + .../infinity/resource/effects/Opcode045.java | 48 + .../infinity/resource/effects/Opcode046.java | 35 + .../infinity/resource/effects/Opcode047.java | 35 + .../infinity/resource/effects/Opcode048.java | 35 + .../infinity/resource/effects/Opcode049.java | 35 + .../infinity/resource/effects/Opcode050.java | 50 + .../infinity/resource/effects/Opcode051.java | 45 + .../infinity/resource/effects/Opcode052.java | 45 + .../infinity/resource/effects/Opcode053.java | 40 + .../infinity/resource/effects/Opcode054.java | 40 + .../infinity/resource/effects/Opcode055.java | 35 + .../infinity/resource/effects/Opcode056.java | 35 + .../infinity/resource/effects/Opcode057.java | 39 + .../infinity/resource/effects/Opcode058.java | 61 + .../infinity/resource/effects/Opcode059.java | 43 + .../infinity/resource/effects/Opcode060.java | 67 + .../infinity/resource/effects/Opcode061.java | 58 + .../infinity/resource/effects/Opcode062.java | 80 + .../infinity/resource/effects/Opcode063.java | 35 + .../infinity/resource/effects/Opcode064.java | 35 + .../infinity/resource/effects/Opcode065.java | 35 + .../infinity/resource/effects/Opcode066.java | 61 + .../infinity/resource/effects/Opcode067.java | 70 + .../infinity/resource/effects/Opcode068.java | 48 + .../infinity/resource/effects/Opcode069.java | 35 + .../infinity/resource/effects/Opcode070.java | 35 + .../infinity/resource/effects/Opcode071.java | 40 + .../infinity/resource/effects/Opcode072.java | 40 + .../infinity/resource/effects/Opcode073.java | 51 + .../infinity/resource/effects/Opcode074.java | 35 + .../infinity/resource/effects/Opcode075.java | 35 + .../infinity/resource/effects/Opcode076.java | 35 + .../infinity/resource/effects/Opcode077.java | 35 + .../infinity/resource/effects/Opcode078.java | 149 + .../infinity/resource/effects/Opcode079.java | 35 + .../infinity/resource/effects/Opcode080.java | 35 + .../infinity/resource/effects/Opcode081.java | 35 + .../infinity/resource/effects/Opcode082.java | 40 + .../infinity/resource/effects/Opcode083.java | 89 + .../infinity/resource/effects/Opcode084.java | 54 + .../infinity/resource/effects/Opcode085.java | 54 + .../infinity/resource/effects/Opcode086.java | 35 + .../infinity/resource/effects/Opcode087.java | 35 + .../infinity/resource/effects/Opcode088.java | 35 + .../infinity/resource/effects/Opcode089.java | 35 + .../infinity/resource/effects/Opcode090.java | 35 + .../infinity/resource/effects/Opcode091.java | 35 + .../infinity/resource/effects/Opcode092.java | 35 + .../infinity/resource/effects/Opcode093.java | 35 + .../infinity/resource/effects/Opcode094.java | 35 + .../infinity/resource/effects/Opcode095.java | 35 + .../infinity/resource/effects/Opcode096.java | 35 + .../infinity/resource/effects/Opcode097.java | 35 + .../infinity/resource/effects/Opcode098.java | 80 + .../infinity/resource/effects/Opcode099.java | 49 + .../infinity/resource/effects/Opcode100.java | 35 + .../infinity/resource/effects/Opcode101.java | 36 + .../infinity/resource/effects/Opcode102.java | 37 + .../infinity/resource/effects/Opcode103.java | 38 + .../infinity/resource/effects/Opcode104.java | 35 + .../infinity/resource/effects/Opcode105.java | 35 + .../infinity/resource/effects/Opcode106.java | 35 + .../infinity/resource/effects/Opcode107.java | 42 + .../infinity/resource/effects/Opcode108.java | 46 + .../infinity/resource/effects/Opcode109.java | 52 + .../infinity/resource/effects/Opcode110.java | 44 + .../infinity/resource/effects/Opcode111.java | 39 + .../infinity/resource/effects/Opcode112.java | 37 + .../infinity/resource/effects/Opcode113.java | 46 + .../infinity/resource/effects/Opcode114.java | 46 + .../infinity/resource/effects/Opcode115.java | 40 + .../infinity/resource/effects/Opcode116.java | 35 + .../infinity/resource/effects/Opcode117.java | 35 + .../infinity/resource/effects/Opcode118.java | 46 + .../infinity/resource/effects/Opcode119.java | 55 + .../infinity/resource/effects/Opcode120.java | 41 + .../infinity/resource/effects/Opcode121.java | 46 + .../infinity/resource/effects/Opcode122.java | 50 + .../infinity/resource/effects/Opcode123.java | 37 + .../infinity/resource/effects/Opcode124.java | 61 + .../infinity/resource/effects/Opcode125.java | 35 + .../infinity/resource/effects/Opcode126.java | 44 + .../infinity/resource/effects/Opcode127.java | 55 + .../infinity/resource/effects/Opcode128.java | 35 + .../infinity/resource/effects/Opcode129.java | 36 + .../infinity/resource/effects/Opcode130.java | 35 + .../infinity/resource/effects/Opcode131.java | 48 + .../infinity/resource/effects/Opcode132.java | 35 + .../infinity/resource/effects/Opcode133.java | 35 + .../infinity/resource/effects/Opcode134.java | 35 + .../infinity/resource/effects/Opcode135.java | 51 + .../infinity/resource/effects/Opcode136.java | 35 + .../infinity/resource/effects/Opcode137.java | 46 + .../infinity/resource/effects/Opcode138.java | 73 + .../infinity/resource/effects/Opcode139.java | 36 + .../infinity/resource/effects/Opcode140.java | 67 + .../infinity/resource/effects/Opcode141.java | 55 + .../infinity/resource/effects/Opcode142.java | 36 + .../infinity/resource/effects/Opcode143.java | 57 + .../infinity/resource/effects/Opcode144.java | 79 + .../infinity/resource/effects/Opcode145.java | 71 + .../infinity/resource/effects/Opcode146.java | 51 + .../infinity/resource/effects/Opcode147.java | 76 + .../infinity/resource/effects/Opcode148.java | 51 + .../infinity/resource/effects/Opcode149.java | 35 + .../infinity/resource/effects/Opcode150.java | 35 + .../infinity/resource/effects/Opcode151.java | 51 + .../infinity/resource/effects/Opcode152.java | 46 + .../infinity/resource/effects/Opcode153.java | 48 + .../infinity/resource/effects/Opcode154.java | 48 + .../infinity/resource/effects/Opcode155.java | 59 + .../infinity/resource/effects/Opcode156.java | 59 + .../infinity/resource/effects/Opcode157.java | 48 + .../infinity/resource/effects/Opcode158.java | 48 + .../infinity/resource/effects/Opcode159.java | 37 + .../infinity/resource/effects/Opcode160.java | 35 + .../infinity/resource/effects/Opcode161.java | 35 + .../infinity/resource/effects/Opcode162.java | 35 + .../infinity/resource/effects/Opcode163.java | 35 + .../infinity/resource/effects/Opcode164.java | 35 + .../infinity/resource/effects/Opcode165.java | 35 + .../infinity/resource/effects/Opcode166.java | 51 + .../infinity/resource/effects/Opcode167.java | 40 + .../infinity/resource/effects/Opcode168.java | 35 + .../infinity/resource/effects/Opcode169.java | 36 + .../infinity/resource/effects/Opcode170.java | 41 + .../infinity/resource/effects/Opcode171.java | 37 + .../infinity/resource/effects/Opcode172.java | 37 + .../infinity/resource/effects/Opcode173.java | 60 + .../infinity/resource/effects/Opcode174.java | 37 + .../infinity/resource/effects/Opcode175.java | 35 + .../infinity/resource/effects/Opcode176.java | 58 + .../infinity/resource/effects/Opcode177.java | 48 + .../infinity/resource/effects/Opcode178.java | 58 + .../infinity/resource/effects/Opcode179.java | 58 + .../infinity/resource/effects/Opcode180.java | 62 + .../infinity/resource/effects/Opcode181.java | 72 + .../infinity/resource/effects/Opcode182.java | 42 + .../infinity/resource/effects/Opcode183.java | 61 + .../infinity/resource/effects/Opcode184.java | 49 + .../infinity/resource/effects/Opcode185.java | 62 + .../infinity/resource/effects/Opcode186.java | 98 + .../infinity/resource/effects/Opcode187.java | 56 + .../infinity/resource/effects/Opcode188.java | 73 + .../infinity/resource/effects/Opcode189.java | 85 + .../infinity/resource/effects/Opcode190.java | 82 + .../infinity/resource/effects/Opcode191.java | 74 + .../infinity/resource/effects/Opcode192.java | 66 + .../infinity/resource/effects/Opcode193.java | 69 + .../infinity/resource/effects/Opcode194.java | 72 + .../infinity/resource/effects/Opcode195.java | 95 + .../infinity/resource/effects/Opcode196.java | 76 + .../infinity/resource/effects/Opcode197.java | 74 + .../infinity/resource/effects/Opcode198.java | 71 + .../infinity/resource/effects/Opcode199.java | 70 + .../infinity/resource/effects/Opcode200.java | 80 + .../infinity/resource/effects/Opcode201.java | 91 + .../infinity/resource/effects/Opcode202.java | 71 + .../infinity/resource/effects/Opcode203.java | 74 + .../infinity/resource/effects/Opcode204.java | 74 + .../infinity/resource/effects/Opcode205.java | 75 + .../infinity/resource/effects/Opcode206.java | 82 + .../infinity/resource/effects/Opcode207.java | 76 + .../infinity/resource/effects/Opcode208.java | 59 + .../infinity/resource/effects/Opcode209.java | 71 + .../infinity/resource/effects/Opcode210.java | 64 + .../infinity/resource/effects/Opcode211.java | 71 + .../infinity/resource/effects/Opcode212.java | 71 + .../infinity/resource/effects/Opcode213.java | 82 + .../infinity/resource/effects/Opcode214.java | 85 + .../infinity/resource/effects/Opcode215.java | 76 + .../infinity/resource/effects/Opcode216.java | 70 + .../infinity/resource/effects/Opcode217.java | 68 + .../infinity/resource/effects/Opcode218.java | 103 + .../infinity/resource/effects/Opcode219.java | 83 + .../infinity/resource/effects/Opcode220.java | 71 + .../infinity/resource/effects/Opcode221.java | 71 + .../infinity/resource/effects/Opcode222.java | 70 + .../infinity/resource/effects/Opcode223.java | 81 + .../infinity/resource/effects/Opcode224.java | 68 + .../infinity/resource/effects/Opcode225.java | 68 + .../infinity/resource/effects/Opcode226.java | 81 + .../infinity/resource/effects/Opcode227.java | 81 + .../infinity/resource/effects/Opcode228.java | 81 + .../infinity/resource/effects/Opcode229.java | 71 + .../infinity/resource/effects/Opcode230.java | 71 + .../infinity/resource/effects/Opcode231.java | 68 + .../infinity/resource/effects/Opcode232.java | 201 + .../infinity/resource/effects/Opcode233.java | 127 + .../infinity/resource/effects/Opcode234.java | 79 + .../infinity/resource/effects/Opcode235.java | 82 + .../infinity/resource/effects/Opcode236.java | 79 + .../infinity/resource/effects/Opcode237.java | 91 + .../infinity/resource/effects/Opcode238.java | 73 + .../infinity/resource/effects/Opcode239.java | 74 + .../infinity/resource/effects/Opcode240.java | 80 + .../infinity/resource/effects/Opcode241.java | 97 + .../infinity/resource/effects/Opcode242.java | 79 + .../infinity/resource/effects/Opcode243.java | 92 + .../infinity/resource/effects/Opcode244.java | 79 + .../infinity/resource/effects/Opcode245.java | 71 + .../infinity/resource/effects/Opcode246.java | 79 + .../infinity/resource/effects/Opcode247.java | 73 + .../infinity/resource/effects/Opcode248.java | 96 + .../infinity/resource/effects/Opcode249.java | 80 + .../infinity/resource/effects/Opcode250.java | 73 + .../infinity/resource/effects/Opcode251.java | 75 + .../infinity/resource/effects/Opcode252.java | 73 + .../infinity/resource/effects/Opcode253.java | 103 + .../infinity/resource/effects/Opcode254.java | 79 + .../infinity/resource/effects/Opcode255.java | 79 + .../infinity/resource/effects/Opcode256.java | 75 + .../infinity/resource/effects/Opcode257.java | 74 + .../infinity/resource/effects/Opcode258.java | 70 + .../infinity/resource/effects/Opcode259.java | 89 + .../infinity/resource/effects/Opcode260.java | 73 + .../infinity/resource/effects/Opcode261.java | 83 + .../infinity/resource/effects/Opcode262.java | 74 + .../infinity/resource/effects/Opcode263.java | 87 + .../infinity/resource/effects/Opcode264.java | 79 + .../infinity/resource/effects/Opcode265.java | 80 + .../infinity/resource/effects/Opcode266.java | 74 + .../infinity/resource/effects/Opcode267.java | 72 + .../infinity/resource/effects/Opcode268.java | 57 + .../infinity/resource/effects/Opcode269.java | 73 + .../infinity/resource/effects/Opcode270.java | 71 + .../infinity/resource/effects/Opcode271.java | 57 + .../infinity/resource/effects/Opcode272.java | 90 + .../infinity/resource/effects/Opcode273.java | 82 + .../infinity/resource/effects/Opcode274.java | 57 + .../infinity/resource/effects/Opcode275.java | 72 + .../infinity/resource/effects/Opcode276.java | 74 + .../infinity/resource/effects/Opcode277.java | 72 + .../infinity/resource/effects/Opcode278.java | 72 + .../infinity/resource/effects/Opcode279.java | 110 + .../infinity/resource/effects/Opcode280.java | 103 + .../infinity/resource/effects/Opcode281.java | 72 + .../infinity/resource/effects/Opcode282.java | 113 + .../infinity/resource/effects/Opcode283.java | 79 + .../infinity/resource/effects/Opcode284.java | 72 + .../infinity/resource/effects/Opcode285.java | 74 + .../infinity/resource/effects/Opcode286.java | 72 + .../infinity/resource/effects/Opcode287.java | 57 + .../infinity/resource/effects/Opcode288.java | 77 + .../infinity/resource/effects/Opcode289.java | 72 + .../infinity/resource/effects/Opcode290.java | 96 + .../infinity/resource/effects/Opcode291.java | 71 + .../infinity/resource/effects/Opcode292.java | 71 + .../infinity/resource/effects/Opcode293.java | 71 + .../infinity/resource/effects/Opcode294.java | 71 + .../infinity/resource/effects/Opcode295.java | 71 + .../infinity/resource/effects/Opcode296.java | 78 + .../infinity/resource/effects/Opcode297.java | 72 + .../infinity/resource/effects/Opcode298.java | 92 + .../infinity/resource/effects/Opcode299.java | 72 + .../infinity/resource/effects/Opcode300.java | 73 + .../infinity/resource/effects/Opcode301.java | 86 + .../infinity/resource/effects/Opcode302.java | 68 + .../infinity/resource/effects/Opcode303.java | 91 + .../infinity/resource/effects/Opcode304.java | 68 + .../infinity/resource/effects/Opcode305.java | 68 + .../infinity/resource/effects/Opcode306.java | 68 + .../infinity/resource/effects/Opcode307.java | 70 + .../infinity/resource/effects/Opcode308.java | 68 + .../infinity/resource/effects/Opcode309.java | 70 + .../infinity/resource/effects/Opcode310.java | 68 + .../infinity/resource/effects/Opcode311.java | 68 + .../infinity/resource/effects/Opcode312.java | 68 + .../infinity/resource/effects/Opcode313.java | 70 + .../infinity/resource/effects/Opcode314.java | 70 + .../infinity/resource/effects/Opcode315.java | 68 + .../infinity/resource/effects/Opcode316.java | 68 + .../infinity/resource/effects/Opcode317.java | 73 + .../infinity/resource/effects/Opcode318.java | 81 + .../infinity/resource/effects/Opcode319.java | 120 + .../infinity/resource/effects/Opcode320.java | 44 + .../infinity/resource/effects/Opcode321.java | 46 + .../infinity/resource/effects/Opcode322.java | 41 + .../infinity/resource/effects/Opcode323.java | 41 + .../infinity/resource/effects/Opcode324.java | 57 + .../infinity/resource/effects/Opcode325.java | 44 + .../infinity/resource/effects/Opcode326.java | 43 + .../infinity/resource/effects/Opcode327.java | 45 + .../infinity/resource/effects/Opcode328.java | 91 + .../infinity/resource/effects/Opcode329.java | 41 + .../infinity/resource/effects/Opcode330.java | 45 + .../infinity/resource/effects/Opcode331.java | 60 + .../infinity/resource/effects/Opcode332.java | 43 + .../infinity/resource/effects/Opcode333.java | 57 + .../infinity/resource/effects/Opcode334.java | 41 + .../infinity/resource/effects/Opcode335.java | 58 + .../infinity/resource/effects/Opcode336.java | 54 + .../infinity/resource/effects/Opcode337.java | 44 + .../infinity/resource/effects/Opcode338.java | 45 + .../infinity/resource/effects/Opcode339.java | 59 + .../infinity/resource/effects/Opcode340.java | 43 + .../infinity/resource/effects/Opcode341.java | 62 + .../infinity/resource/effects/Opcode342.java | 85 + .../infinity/resource/effects/Opcode343.java | 44 + .../infinity/resource/effects/Opcode344.java | 55 + .../infinity/resource/effects/Opcode345.java | 64 + .../infinity/resource/effects/Opcode346.java | 55 + .../infinity/resource/effects/Opcode347.java | 49 + .../infinity/resource/effects/Opcode352.java | 49 + .../infinity/resource/effects/Opcode353.java | 68 + .../infinity/resource/effects/Opcode354.java | 47 + .../infinity/resource/effects/Opcode355.java | 47 + .../infinity/resource/effects/Opcode356.java | 50 + .../infinity/resource/effects/Opcode357.java | 52 + .../infinity/resource/effects/Opcode358.java | 47 + .../infinity/resource/effects/Opcode360.java | 41 + .../infinity/resource/effects/Opcode361.java | 61 + .../infinity/resource/effects/Opcode362.java | 59 + .../infinity/resource/effects/Opcode363.java | 55 + .../infinity/resource/effects/Opcode365.java | 56 + .../infinity/resource/effects/Opcode366.java | 57 + .../infinity/resource/effects/Opcode367.java | 44 + .../infinity/resource/effects/Opcode368.java | 58 + .../infinity/resource/effects/Opcode369.java | 53 + .../infinity/resource/effects/Opcode370.java | 58 + .../infinity/resource/effects/Opcode371.java | 58 + .../infinity/resource/effects/Opcode372.java | 58 + .../infinity/resource/effects/Opcode373.java | 58 + .../infinity/resource/effects/Opcode374.java | 52 + .../infinity/resource/effects/Opcode375.java | 56 + .../infinity/resource/effects/Opcode376.java | 47 + .../infinity/resource/effects/Opcode378.java | 47 + .../infinity/resource/effects/Opcode379.java | 47 + .../infinity/resource/effects/Opcode380.java | 52 + .../infinity/resource/effects/Opcode381.java | 47 + .../infinity/resource/effects/Opcode382.java | 47 + .../infinity/resource/effects/Opcode383.java | 55 + .../infinity/resource/effects/Opcode400.java | 62 + .../infinity/resource/effects/Opcode401.java | 72 + .../infinity/resource/effects/Opcode402.java | 75 + .../infinity/resource/effects/Opcode403.java | 71 + .../infinity/resource/effects/Opcode404.java | 64 + .../infinity/resource/effects/Opcode405.java | 73 + .../infinity/resource/effects/Opcode406.java | 64 + .../infinity/resource/effects/Opcode407.java | 73 + .../infinity/resource/effects/Opcode408.java | 71 + .../infinity/resource/effects/Opcode409.java | 46 + .../infinity/resource/effects/Opcode410.java | 46 + .../infinity/resource/effects/Opcode411.java | 46 + .../infinity/resource/effects/Opcode412.java | 46 + .../infinity/resource/effects/Opcode413.java | 51 + .../infinity/resource/effects/Opcode414.java | 41 + .../infinity/resource/effects/Opcode415.java | 41 + .../infinity/resource/effects/Opcode416.java | 46 + .../infinity/resource/effects/Opcode417.java | 48 + .../infinity/resource/effects/Opcode418.java | 41 + .../infinity/resource/effects/Opcode419.java | 44 + .../infinity/resource/effects/Opcode420.java | 47 + .../infinity/resource/effects/Opcode421.java | 41 + .../infinity/resource/effects/Opcode422.java | 41 + .../infinity/resource/effects/Opcode423.java | 41 + .../infinity/resource/effects/Opcode424.java | 41 + .../infinity/resource/effects/Opcode425.java | 41 + .../infinity/resource/effects/Opcode426.java | 41 + .../infinity/resource/effects/Opcode427.java | 41 + .../infinity/resource/effects/Opcode428.java | 41 + .../infinity/resource/effects/Opcode429.java | 43 + .../infinity/resource/effects/Opcode430.java | 45 + .../infinity/resource/effects/Opcode431.java | 43 + .../infinity/resource/effects/Opcode432.java | 43 + .../infinity/resource/effects/Opcode433.java | 46 + .../infinity/resource/effects/Opcode434.java | 45 + .../infinity/resource/effects/Opcode435.java | 41 + .../infinity/resource/effects/Opcode436.java | 42 + .../infinity/resource/effects/Opcode437.java | 41 + .../infinity/resource/effects/Opcode438.java | 41 + .../infinity/resource/effects/Opcode439.java | 41 + .../infinity/resource/effects/Opcode440.java | 41 + .../infinity/resource/effects/Opcode441.java | 41 + .../infinity/resource/effects/Opcode442.java | 41 + .../infinity/resource/effects/Opcode443.java | 46 + .../infinity/resource/effects/Opcode444.java | 41 + .../infinity/resource/effects/Opcode445.java | 41 + .../infinity/resource/effects/Opcode446.java | 41 + .../infinity/resource/effects/Opcode447.java | 41 + .../infinity/resource/effects/Opcode448.java | 41 + .../infinity/resource/effects/Opcode449.java | 45 + .../infinity/resource/effects/Opcode450.java | 46 + .../infinity/resource/effects/Opcode451.java | 41 + .../infinity/resource/effects/Opcode452.java | 41 + .../infinity/resource/effects/Opcode453.java | 41 + .../infinity/resource/effects/Opcode454.java | 41 + .../infinity/resource/effects/Opcode455.java | 41 + .../infinity/resource/effects/Opcode456.java | 41 + .../infinity/resource/effects/Opcode457.java | 41 + src/org/infinity/search/SearchResource.java | 6 +- 441 files changed, 26619 insertions(+), 5865 deletions(-) delete mode 100644 src/org/infinity/resource/EffectFactory.java create mode 100644 src/org/infinity/resource/effects/BaseOpcode.java create mode 100644 src/org/infinity/resource/effects/DefaultOpcode.java create mode 100644 src/org/infinity/resource/effects/Opcode000.java create mode 100644 src/org/infinity/resource/effects/Opcode001.java create mode 100644 src/org/infinity/resource/effects/Opcode002.java create mode 100644 src/org/infinity/resource/effects/Opcode003.java create mode 100644 src/org/infinity/resource/effects/Opcode004.java create mode 100644 src/org/infinity/resource/effects/Opcode005.java create mode 100644 src/org/infinity/resource/effects/Opcode006.java create mode 100644 src/org/infinity/resource/effects/Opcode007.java create mode 100644 src/org/infinity/resource/effects/Opcode008.java create mode 100644 src/org/infinity/resource/effects/Opcode009.java create mode 100644 src/org/infinity/resource/effects/Opcode010.java create mode 100644 src/org/infinity/resource/effects/Opcode011.java create mode 100644 src/org/infinity/resource/effects/Opcode012.java create mode 100644 src/org/infinity/resource/effects/Opcode013.java create mode 100644 src/org/infinity/resource/effects/Opcode014.java create mode 100644 src/org/infinity/resource/effects/Opcode015.java create mode 100644 src/org/infinity/resource/effects/Opcode016.java create mode 100644 src/org/infinity/resource/effects/Opcode017.java create mode 100644 src/org/infinity/resource/effects/Opcode018.java create mode 100644 src/org/infinity/resource/effects/Opcode019.java create mode 100644 src/org/infinity/resource/effects/Opcode020.java create mode 100644 src/org/infinity/resource/effects/Opcode021.java create mode 100644 src/org/infinity/resource/effects/Opcode022.java create mode 100644 src/org/infinity/resource/effects/Opcode023.java create mode 100644 src/org/infinity/resource/effects/Opcode024.java create mode 100644 src/org/infinity/resource/effects/Opcode025.java create mode 100644 src/org/infinity/resource/effects/Opcode026.java create mode 100644 src/org/infinity/resource/effects/Opcode027.java create mode 100644 src/org/infinity/resource/effects/Opcode028.java create mode 100644 src/org/infinity/resource/effects/Opcode029.java create mode 100644 src/org/infinity/resource/effects/Opcode030.java create mode 100644 src/org/infinity/resource/effects/Opcode031.java create mode 100644 src/org/infinity/resource/effects/Opcode032.java create mode 100644 src/org/infinity/resource/effects/Opcode033.java create mode 100644 src/org/infinity/resource/effects/Opcode034.java create mode 100644 src/org/infinity/resource/effects/Opcode035.java create mode 100644 src/org/infinity/resource/effects/Opcode036.java create mode 100644 src/org/infinity/resource/effects/Opcode037.java create mode 100644 src/org/infinity/resource/effects/Opcode038.java create mode 100644 src/org/infinity/resource/effects/Opcode039.java create mode 100644 src/org/infinity/resource/effects/Opcode040.java create mode 100644 src/org/infinity/resource/effects/Opcode041.java create mode 100644 src/org/infinity/resource/effects/Opcode042.java create mode 100644 src/org/infinity/resource/effects/Opcode043.java create mode 100644 src/org/infinity/resource/effects/Opcode044.java create mode 100644 src/org/infinity/resource/effects/Opcode045.java create mode 100644 src/org/infinity/resource/effects/Opcode046.java create mode 100644 src/org/infinity/resource/effects/Opcode047.java create mode 100644 src/org/infinity/resource/effects/Opcode048.java create mode 100644 src/org/infinity/resource/effects/Opcode049.java create mode 100644 src/org/infinity/resource/effects/Opcode050.java create mode 100644 src/org/infinity/resource/effects/Opcode051.java create mode 100644 src/org/infinity/resource/effects/Opcode052.java create mode 100644 src/org/infinity/resource/effects/Opcode053.java create mode 100644 src/org/infinity/resource/effects/Opcode054.java create mode 100644 src/org/infinity/resource/effects/Opcode055.java create mode 100644 src/org/infinity/resource/effects/Opcode056.java create mode 100644 src/org/infinity/resource/effects/Opcode057.java create mode 100644 src/org/infinity/resource/effects/Opcode058.java create mode 100644 src/org/infinity/resource/effects/Opcode059.java create mode 100644 src/org/infinity/resource/effects/Opcode060.java create mode 100644 src/org/infinity/resource/effects/Opcode061.java create mode 100644 src/org/infinity/resource/effects/Opcode062.java create mode 100644 src/org/infinity/resource/effects/Opcode063.java create mode 100644 src/org/infinity/resource/effects/Opcode064.java create mode 100644 src/org/infinity/resource/effects/Opcode065.java create mode 100644 src/org/infinity/resource/effects/Opcode066.java create mode 100644 src/org/infinity/resource/effects/Opcode067.java create mode 100644 src/org/infinity/resource/effects/Opcode068.java create mode 100644 src/org/infinity/resource/effects/Opcode069.java create mode 100644 src/org/infinity/resource/effects/Opcode070.java create mode 100644 src/org/infinity/resource/effects/Opcode071.java create mode 100644 src/org/infinity/resource/effects/Opcode072.java create mode 100644 src/org/infinity/resource/effects/Opcode073.java create mode 100644 src/org/infinity/resource/effects/Opcode074.java create mode 100644 src/org/infinity/resource/effects/Opcode075.java create mode 100644 src/org/infinity/resource/effects/Opcode076.java create mode 100644 src/org/infinity/resource/effects/Opcode077.java create mode 100644 src/org/infinity/resource/effects/Opcode078.java create mode 100644 src/org/infinity/resource/effects/Opcode079.java create mode 100644 src/org/infinity/resource/effects/Opcode080.java create mode 100644 src/org/infinity/resource/effects/Opcode081.java create mode 100644 src/org/infinity/resource/effects/Opcode082.java create mode 100644 src/org/infinity/resource/effects/Opcode083.java create mode 100644 src/org/infinity/resource/effects/Opcode084.java create mode 100644 src/org/infinity/resource/effects/Opcode085.java create mode 100644 src/org/infinity/resource/effects/Opcode086.java create mode 100644 src/org/infinity/resource/effects/Opcode087.java create mode 100644 src/org/infinity/resource/effects/Opcode088.java create mode 100644 src/org/infinity/resource/effects/Opcode089.java create mode 100644 src/org/infinity/resource/effects/Opcode090.java create mode 100644 src/org/infinity/resource/effects/Opcode091.java create mode 100644 src/org/infinity/resource/effects/Opcode092.java create mode 100644 src/org/infinity/resource/effects/Opcode093.java create mode 100644 src/org/infinity/resource/effects/Opcode094.java create mode 100644 src/org/infinity/resource/effects/Opcode095.java create mode 100644 src/org/infinity/resource/effects/Opcode096.java create mode 100644 src/org/infinity/resource/effects/Opcode097.java create mode 100644 src/org/infinity/resource/effects/Opcode098.java create mode 100644 src/org/infinity/resource/effects/Opcode099.java create mode 100644 src/org/infinity/resource/effects/Opcode100.java create mode 100644 src/org/infinity/resource/effects/Opcode101.java create mode 100644 src/org/infinity/resource/effects/Opcode102.java create mode 100644 src/org/infinity/resource/effects/Opcode103.java create mode 100644 src/org/infinity/resource/effects/Opcode104.java create mode 100644 src/org/infinity/resource/effects/Opcode105.java create mode 100644 src/org/infinity/resource/effects/Opcode106.java create mode 100644 src/org/infinity/resource/effects/Opcode107.java create mode 100644 src/org/infinity/resource/effects/Opcode108.java create mode 100644 src/org/infinity/resource/effects/Opcode109.java create mode 100644 src/org/infinity/resource/effects/Opcode110.java create mode 100644 src/org/infinity/resource/effects/Opcode111.java create mode 100644 src/org/infinity/resource/effects/Opcode112.java create mode 100644 src/org/infinity/resource/effects/Opcode113.java create mode 100644 src/org/infinity/resource/effects/Opcode114.java create mode 100644 src/org/infinity/resource/effects/Opcode115.java create mode 100644 src/org/infinity/resource/effects/Opcode116.java create mode 100644 src/org/infinity/resource/effects/Opcode117.java create mode 100644 src/org/infinity/resource/effects/Opcode118.java create mode 100644 src/org/infinity/resource/effects/Opcode119.java create mode 100644 src/org/infinity/resource/effects/Opcode120.java create mode 100644 src/org/infinity/resource/effects/Opcode121.java create mode 100644 src/org/infinity/resource/effects/Opcode122.java create mode 100644 src/org/infinity/resource/effects/Opcode123.java create mode 100644 src/org/infinity/resource/effects/Opcode124.java create mode 100644 src/org/infinity/resource/effects/Opcode125.java create mode 100644 src/org/infinity/resource/effects/Opcode126.java create mode 100644 src/org/infinity/resource/effects/Opcode127.java create mode 100644 src/org/infinity/resource/effects/Opcode128.java create mode 100644 src/org/infinity/resource/effects/Opcode129.java create mode 100644 src/org/infinity/resource/effects/Opcode130.java create mode 100644 src/org/infinity/resource/effects/Opcode131.java create mode 100644 src/org/infinity/resource/effects/Opcode132.java create mode 100644 src/org/infinity/resource/effects/Opcode133.java create mode 100644 src/org/infinity/resource/effects/Opcode134.java create mode 100644 src/org/infinity/resource/effects/Opcode135.java create mode 100644 src/org/infinity/resource/effects/Opcode136.java create mode 100644 src/org/infinity/resource/effects/Opcode137.java create mode 100644 src/org/infinity/resource/effects/Opcode138.java create mode 100644 src/org/infinity/resource/effects/Opcode139.java create mode 100644 src/org/infinity/resource/effects/Opcode140.java create mode 100644 src/org/infinity/resource/effects/Opcode141.java create mode 100644 src/org/infinity/resource/effects/Opcode142.java create mode 100644 src/org/infinity/resource/effects/Opcode143.java create mode 100644 src/org/infinity/resource/effects/Opcode144.java create mode 100644 src/org/infinity/resource/effects/Opcode145.java create mode 100644 src/org/infinity/resource/effects/Opcode146.java create mode 100644 src/org/infinity/resource/effects/Opcode147.java create mode 100644 src/org/infinity/resource/effects/Opcode148.java create mode 100644 src/org/infinity/resource/effects/Opcode149.java create mode 100644 src/org/infinity/resource/effects/Opcode150.java create mode 100644 src/org/infinity/resource/effects/Opcode151.java create mode 100644 src/org/infinity/resource/effects/Opcode152.java create mode 100644 src/org/infinity/resource/effects/Opcode153.java create mode 100644 src/org/infinity/resource/effects/Opcode154.java create mode 100644 src/org/infinity/resource/effects/Opcode155.java create mode 100644 src/org/infinity/resource/effects/Opcode156.java create mode 100644 src/org/infinity/resource/effects/Opcode157.java create mode 100644 src/org/infinity/resource/effects/Opcode158.java create mode 100644 src/org/infinity/resource/effects/Opcode159.java create mode 100644 src/org/infinity/resource/effects/Opcode160.java create mode 100644 src/org/infinity/resource/effects/Opcode161.java create mode 100644 src/org/infinity/resource/effects/Opcode162.java create mode 100644 src/org/infinity/resource/effects/Opcode163.java create mode 100644 src/org/infinity/resource/effects/Opcode164.java create mode 100644 src/org/infinity/resource/effects/Opcode165.java create mode 100644 src/org/infinity/resource/effects/Opcode166.java create mode 100644 src/org/infinity/resource/effects/Opcode167.java create mode 100644 src/org/infinity/resource/effects/Opcode168.java create mode 100644 src/org/infinity/resource/effects/Opcode169.java create mode 100644 src/org/infinity/resource/effects/Opcode170.java create mode 100644 src/org/infinity/resource/effects/Opcode171.java create mode 100644 src/org/infinity/resource/effects/Opcode172.java create mode 100644 src/org/infinity/resource/effects/Opcode173.java create mode 100644 src/org/infinity/resource/effects/Opcode174.java create mode 100644 src/org/infinity/resource/effects/Opcode175.java create mode 100644 src/org/infinity/resource/effects/Opcode176.java create mode 100644 src/org/infinity/resource/effects/Opcode177.java create mode 100644 src/org/infinity/resource/effects/Opcode178.java create mode 100644 src/org/infinity/resource/effects/Opcode179.java create mode 100644 src/org/infinity/resource/effects/Opcode180.java create mode 100644 src/org/infinity/resource/effects/Opcode181.java create mode 100644 src/org/infinity/resource/effects/Opcode182.java create mode 100644 src/org/infinity/resource/effects/Opcode183.java create mode 100644 src/org/infinity/resource/effects/Opcode184.java create mode 100644 src/org/infinity/resource/effects/Opcode185.java create mode 100644 src/org/infinity/resource/effects/Opcode186.java create mode 100644 src/org/infinity/resource/effects/Opcode187.java create mode 100644 src/org/infinity/resource/effects/Opcode188.java create mode 100644 src/org/infinity/resource/effects/Opcode189.java create mode 100644 src/org/infinity/resource/effects/Opcode190.java create mode 100644 src/org/infinity/resource/effects/Opcode191.java create mode 100644 src/org/infinity/resource/effects/Opcode192.java create mode 100644 src/org/infinity/resource/effects/Opcode193.java create mode 100644 src/org/infinity/resource/effects/Opcode194.java create mode 100644 src/org/infinity/resource/effects/Opcode195.java create mode 100644 src/org/infinity/resource/effects/Opcode196.java create mode 100644 src/org/infinity/resource/effects/Opcode197.java create mode 100644 src/org/infinity/resource/effects/Opcode198.java create mode 100644 src/org/infinity/resource/effects/Opcode199.java create mode 100644 src/org/infinity/resource/effects/Opcode200.java create mode 100644 src/org/infinity/resource/effects/Opcode201.java create mode 100644 src/org/infinity/resource/effects/Opcode202.java create mode 100644 src/org/infinity/resource/effects/Opcode203.java create mode 100644 src/org/infinity/resource/effects/Opcode204.java create mode 100644 src/org/infinity/resource/effects/Opcode205.java create mode 100644 src/org/infinity/resource/effects/Opcode206.java create mode 100644 src/org/infinity/resource/effects/Opcode207.java create mode 100644 src/org/infinity/resource/effects/Opcode208.java create mode 100644 src/org/infinity/resource/effects/Opcode209.java create mode 100644 src/org/infinity/resource/effects/Opcode210.java create mode 100644 src/org/infinity/resource/effects/Opcode211.java create mode 100644 src/org/infinity/resource/effects/Opcode212.java create mode 100644 src/org/infinity/resource/effects/Opcode213.java create mode 100644 src/org/infinity/resource/effects/Opcode214.java create mode 100644 src/org/infinity/resource/effects/Opcode215.java create mode 100644 src/org/infinity/resource/effects/Opcode216.java create mode 100644 src/org/infinity/resource/effects/Opcode217.java create mode 100644 src/org/infinity/resource/effects/Opcode218.java create mode 100644 src/org/infinity/resource/effects/Opcode219.java create mode 100644 src/org/infinity/resource/effects/Opcode220.java create mode 100644 src/org/infinity/resource/effects/Opcode221.java create mode 100644 src/org/infinity/resource/effects/Opcode222.java create mode 100644 src/org/infinity/resource/effects/Opcode223.java create mode 100644 src/org/infinity/resource/effects/Opcode224.java create mode 100644 src/org/infinity/resource/effects/Opcode225.java create mode 100644 src/org/infinity/resource/effects/Opcode226.java create mode 100644 src/org/infinity/resource/effects/Opcode227.java create mode 100644 src/org/infinity/resource/effects/Opcode228.java create mode 100644 src/org/infinity/resource/effects/Opcode229.java create mode 100644 src/org/infinity/resource/effects/Opcode230.java create mode 100644 src/org/infinity/resource/effects/Opcode231.java create mode 100644 src/org/infinity/resource/effects/Opcode232.java create mode 100644 src/org/infinity/resource/effects/Opcode233.java create mode 100644 src/org/infinity/resource/effects/Opcode234.java create mode 100644 src/org/infinity/resource/effects/Opcode235.java create mode 100644 src/org/infinity/resource/effects/Opcode236.java create mode 100644 src/org/infinity/resource/effects/Opcode237.java create mode 100644 src/org/infinity/resource/effects/Opcode238.java create mode 100644 src/org/infinity/resource/effects/Opcode239.java create mode 100644 src/org/infinity/resource/effects/Opcode240.java create mode 100644 src/org/infinity/resource/effects/Opcode241.java create mode 100644 src/org/infinity/resource/effects/Opcode242.java create mode 100644 src/org/infinity/resource/effects/Opcode243.java create mode 100644 src/org/infinity/resource/effects/Opcode244.java create mode 100644 src/org/infinity/resource/effects/Opcode245.java create mode 100644 src/org/infinity/resource/effects/Opcode246.java create mode 100644 src/org/infinity/resource/effects/Opcode247.java create mode 100644 src/org/infinity/resource/effects/Opcode248.java create mode 100644 src/org/infinity/resource/effects/Opcode249.java create mode 100644 src/org/infinity/resource/effects/Opcode250.java create mode 100644 src/org/infinity/resource/effects/Opcode251.java create mode 100644 src/org/infinity/resource/effects/Opcode252.java create mode 100644 src/org/infinity/resource/effects/Opcode253.java create mode 100644 src/org/infinity/resource/effects/Opcode254.java create mode 100644 src/org/infinity/resource/effects/Opcode255.java create mode 100644 src/org/infinity/resource/effects/Opcode256.java create mode 100644 src/org/infinity/resource/effects/Opcode257.java create mode 100644 src/org/infinity/resource/effects/Opcode258.java create mode 100644 src/org/infinity/resource/effects/Opcode259.java create mode 100644 src/org/infinity/resource/effects/Opcode260.java create mode 100644 src/org/infinity/resource/effects/Opcode261.java create mode 100644 src/org/infinity/resource/effects/Opcode262.java create mode 100644 src/org/infinity/resource/effects/Opcode263.java create mode 100644 src/org/infinity/resource/effects/Opcode264.java create mode 100644 src/org/infinity/resource/effects/Opcode265.java create mode 100644 src/org/infinity/resource/effects/Opcode266.java create mode 100644 src/org/infinity/resource/effects/Opcode267.java create mode 100644 src/org/infinity/resource/effects/Opcode268.java create mode 100644 src/org/infinity/resource/effects/Opcode269.java create mode 100644 src/org/infinity/resource/effects/Opcode270.java create mode 100644 src/org/infinity/resource/effects/Opcode271.java create mode 100644 src/org/infinity/resource/effects/Opcode272.java create mode 100644 src/org/infinity/resource/effects/Opcode273.java create mode 100644 src/org/infinity/resource/effects/Opcode274.java create mode 100644 src/org/infinity/resource/effects/Opcode275.java create mode 100644 src/org/infinity/resource/effects/Opcode276.java create mode 100644 src/org/infinity/resource/effects/Opcode277.java create mode 100644 src/org/infinity/resource/effects/Opcode278.java create mode 100644 src/org/infinity/resource/effects/Opcode279.java create mode 100644 src/org/infinity/resource/effects/Opcode280.java create mode 100644 src/org/infinity/resource/effects/Opcode281.java create mode 100644 src/org/infinity/resource/effects/Opcode282.java create mode 100644 src/org/infinity/resource/effects/Opcode283.java create mode 100644 src/org/infinity/resource/effects/Opcode284.java create mode 100644 src/org/infinity/resource/effects/Opcode285.java create mode 100644 src/org/infinity/resource/effects/Opcode286.java create mode 100644 src/org/infinity/resource/effects/Opcode287.java create mode 100644 src/org/infinity/resource/effects/Opcode288.java create mode 100644 src/org/infinity/resource/effects/Opcode289.java create mode 100644 src/org/infinity/resource/effects/Opcode290.java create mode 100644 src/org/infinity/resource/effects/Opcode291.java create mode 100644 src/org/infinity/resource/effects/Opcode292.java create mode 100644 src/org/infinity/resource/effects/Opcode293.java create mode 100644 src/org/infinity/resource/effects/Opcode294.java create mode 100644 src/org/infinity/resource/effects/Opcode295.java create mode 100644 src/org/infinity/resource/effects/Opcode296.java create mode 100644 src/org/infinity/resource/effects/Opcode297.java create mode 100644 src/org/infinity/resource/effects/Opcode298.java create mode 100644 src/org/infinity/resource/effects/Opcode299.java create mode 100644 src/org/infinity/resource/effects/Opcode300.java create mode 100644 src/org/infinity/resource/effects/Opcode301.java create mode 100644 src/org/infinity/resource/effects/Opcode302.java create mode 100644 src/org/infinity/resource/effects/Opcode303.java create mode 100644 src/org/infinity/resource/effects/Opcode304.java create mode 100644 src/org/infinity/resource/effects/Opcode305.java create mode 100644 src/org/infinity/resource/effects/Opcode306.java create mode 100644 src/org/infinity/resource/effects/Opcode307.java create mode 100644 src/org/infinity/resource/effects/Opcode308.java create mode 100644 src/org/infinity/resource/effects/Opcode309.java create mode 100644 src/org/infinity/resource/effects/Opcode310.java create mode 100644 src/org/infinity/resource/effects/Opcode311.java create mode 100644 src/org/infinity/resource/effects/Opcode312.java create mode 100644 src/org/infinity/resource/effects/Opcode313.java create mode 100644 src/org/infinity/resource/effects/Opcode314.java create mode 100644 src/org/infinity/resource/effects/Opcode315.java create mode 100644 src/org/infinity/resource/effects/Opcode316.java create mode 100644 src/org/infinity/resource/effects/Opcode317.java create mode 100644 src/org/infinity/resource/effects/Opcode318.java create mode 100644 src/org/infinity/resource/effects/Opcode319.java create mode 100644 src/org/infinity/resource/effects/Opcode320.java create mode 100644 src/org/infinity/resource/effects/Opcode321.java create mode 100644 src/org/infinity/resource/effects/Opcode322.java create mode 100644 src/org/infinity/resource/effects/Opcode323.java create mode 100644 src/org/infinity/resource/effects/Opcode324.java create mode 100644 src/org/infinity/resource/effects/Opcode325.java create mode 100644 src/org/infinity/resource/effects/Opcode326.java create mode 100644 src/org/infinity/resource/effects/Opcode327.java create mode 100644 src/org/infinity/resource/effects/Opcode328.java create mode 100644 src/org/infinity/resource/effects/Opcode329.java create mode 100644 src/org/infinity/resource/effects/Opcode330.java create mode 100644 src/org/infinity/resource/effects/Opcode331.java create mode 100644 src/org/infinity/resource/effects/Opcode332.java create mode 100644 src/org/infinity/resource/effects/Opcode333.java create mode 100644 src/org/infinity/resource/effects/Opcode334.java create mode 100644 src/org/infinity/resource/effects/Opcode335.java create mode 100644 src/org/infinity/resource/effects/Opcode336.java create mode 100644 src/org/infinity/resource/effects/Opcode337.java create mode 100644 src/org/infinity/resource/effects/Opcode338.java create mode 100644 src/org/infinity/resource/effects/Opcode339.java create mode 100644 src/org/infinity/resource/effects/Opcode340.java create mode 100644 src/org/infinity/resource/effects/Opcode341.java create mode 100644 src/org/infinity/resource/effects/Opcode342.java create mode 100644 src/org/infinity/resource/effects/Opcode343.java create mode 100644 src/org/infinity/resource/effects/Opcode344.java create mode 100644 src/org/infinity/resource/effects/Opcode345.java create mode 100644 src/org/infinity/resource/effects/Opcode346.java create mode 100644 src/org/infinity/resource/effects/Opcode347.java create mode 100644 src/org/infinity/resource/effects/Opcode352.java create mode 100644 src/org/infinity/resource/effects/Opcode353.java create mode 100644 src/org/infinity/resource/effects/Opcode354.java create mode 100644 src/org/infinity/resource/effects/Opcode355.java create mode 100644 src/org/infinity/resource/effects/Opcode356.java create mode 100644 src/org/infinity/resource/effects/Opcode357.java create mode 100644 src/org/infinity/resource/effects/Opcode358.java create mode 100644 src/org/infinity/resource/effects/Opcode360.java create mode 100644 src/org/infinity/resource/effects/Opcode361.java create mode 100644 src/org/infinity/resource/effects/Opcode362.java create mode 100644 src/org/infinity/resource/effects/Opcode363.java create mode 100644 src/org/infinity/resource/effects/Opcode365.java create mode 100644 src/org/infinity/resource/effects/Opcode366.java create mode 100644 src/org/infinity/resource/effects/Opcode367.java create mode 100644 src/org/infinity/resource/effects/Opcode368.java create mode 100644 src/org/infinity/resource/effects/Opcode369.java create mode 100644 src/org/infinity/resource/effects/Opcode370.java create mode 100644 src/org/infinity/resource/effects/Opcode371.java create mode 100644 src/org/infinity/resource/effects/Opcode372.java create mode 100644 src/org/infinity/resource/effects/Opcode373.java create mode 100644 src/org/infinity/resource/effects/Opcode374.java create mode 100644 src/org/infinity/resource/effects/Opcode375.java create mode 100644 src/org/infinity/resource/effects/Opcode376.java create mode 100644 src/org/infinity/resource/effects/Opcode378.java create mode 100644 src/org/infinity/resource/effects/Opcode379.java create mode 100644 src/org/infinity/resource/effects/Opcode380.java create mode 100644 src/org/infinity/resource/effects/Opcode381.java create mode 100644 src/org/infinity/resource/effects/Opcode382.java create mode 100644 src/org/infinity/resource/effects/Opcode383.java create mode 100644 src/org/infinity/resource/effects/Opcode400.java create mode 100644 src/org/infinity/resource/effects/Opcode401.java create mode 100644 src/org/infinity/resource/effects/Opcode402.java create mode 100644 src/org/infinity/resource/effects/Opcode403.java create mode 100644 src/org/infinity/resource/effects/Opcode404.java create mode 100644 src/org/infinity/resource/effects/Opcode405.java create mode 100644 src/org/infinity/resource/effects/Opcode406.java create mode 100644 src/org/infinity/resource/effects/Opcode407.java create mode 100644 src/org/infinity/resource/effects/Opcode408.java create mode 100644 src/org/infinity/resource/effects/Opcode409.java create mode 100644 src/org/infinity/resource/effects/Opcode410.java create mode 100644 src/org/infinity/resource/effects/Opcode411.java create mode 100644 src/org/infinity/resource/effects/Opcode412.java create mode 100644 src/org/infinity/resource/effects/Opcode413.java create mode 100644 src/org/infinity/resource/effects/Opcode414.java create mode 100644 src/org/infinity/resource/effects/Opcode415.java create mode 100644 src/org/infinity/resource/effects/Opcode416.java create mode 100644 src/org/infinity/resource/effects/Opcode417.java create mode 100644 src/org/infinity/resource/effects/Opcode418.java create mode 100644 src/org/infinity/resource/effects/Opcode419.java create mode 100644 src/org/infinity/resource/effects/Opcode420.java create mode 100644 src/org/infinity/resource/effects/Opcode421.java create mode 100644 src/org/infinity/resource/effects/Opcode422.java create mode 100644 src/org/infinity/resource/effects/Opcode423.java create mode 100644 src/org/infinity/resource/effects/Opcode424.java create mode 100644 src/org/infinity/resource/effects/Opcode425.java create mode 100644 src/org/infinity/resource/effects/Opcode426.java create mode 100644 src/org/infinity/resource/effects/Opcode427.java create mode 100644 src/org/infinity/resource/effects/Opcode428.java create mode 100644 src/org/infinity/resource/effects/Opcode429.java create mode 100644 src/org/infinity/resource/effects/Opcode430.java create mode 100644 src/org/infinity/resource/effects/Opcode431.java create mode 100644 src/org/infinity/resource/effects/Opcode432.java create mode 100644 src/org/infinity/resource/effects/Opcode433.java create mode 100644 src/org/infinity/resource/effects/Opcode434.java create mode 100644 src/org/infinity/resource/effects/Opcode435.java create mode 100644 src/org/infinity/resource/effects/Opcode436.java create mode 100644 src/org/infinity/resource/effects/Opcode437.java create mode 100644 src/org/infinity/resource/effects/Opcode438.java create mode 100644 src/org/infinity/resource/effects/Opcode439.java create mode 100644 src/org/infinity/resource/effects/Opcode440.java create mode 100644 src/org/infinity/resource/effects/Opcode441.java create mode 100644 src/org/infinity/resource/effects/Opcode442.java create mode 100644 src/org/infinity/resource/effects/Opcode443.java create mode 100644 src/org/infinity/resource/effects/Opcode444.java create mode 100644 src/org/infinity/resource/effects/Opcode445.java create mode 100644 src/org/infinity/resource/effects/Opcode446.java create mode 100644 src/org/infinity/resource/effects/Opcode447.java create mode 100644 src/org/infinity/resource/effects/Opcode448.java create mode 100644 src/org/infinity/resource/effects/Opcode449.java create mode 100644 src/org/infinity/resource/effects/Opcode450.java create mode 100644 src/org/infinity/resource/effects/Opcode451.java create mode 100644 src/org/infinity/resource/effects/Opcode452.java create mode 100644 src/org/infinity/resource/effects/Opcode453.java create mode 100644 src/org/infinity/resource/effects/Opcode454.java create mode 100644 src/org/infinity/resource/effects/Opcode455.java create mode 100644 src/org/infinity/resource/effects/Opcode456.java create mode 100644 src/org/infinity/resource/effects/Opcode457.java diff --git a/src/org/infinity/NearInfinity.java b/src/org/infinity/NearInfinity.java index aae668818..dd969799a 100644 --- a/src/org/infinity/NearInfinity.java +++ b/src/org/infinity/NearInfinity.java @@ -94,7 +94,6 @@ import org.infinity.icon.Icons; import org.infinity.resource.AbstractStruct; import org.infinity.resource.Closeable; -import org.infinity.resource.EffectFactory; import org.infinity.resource.Profile; import org.infinity.resource.Resource; import org.infinity.resource.ResourceFactory; @@ -104,6 +103,7 @@ import org.infinity.resource.bcs.Signatures; import org.infinity.resource.cre.decoder.util.ItemInfo; import org.infinity.resource.cre.decoder.util.SpriteUtils; +import org.infinity.resource.effects.BaseOpcode; import org.infinity.resource.graphics.ColorConvert; import org.infinity.resource.key.FileResourceEntry; import org.infinity.resource.key.ResourceEntry; @@ -385,6 +385,7 @@ protected Void doInBackground() throws Exception { advanceProgress("Initializing GUI..."); BrowserMenuBar.getInstance().gameLoaded(Profile.Game.Unknown, null); CreMapCache.reset(); + BaseOpcode.initOpcodes(); // if (BrowserMenuBar.getInstance().getMonitorFileChanges()) { // FileWatcher.getInstance().start(); // } @@ -744,7 +745,7 @@ public void openGame(Path keyFile) { Path oldKeyFile = Profile.getChitinKey(); ChildFrame.closeWindows(); clearCache(false); - EffectFactory.reset(); + BaseOpcode.reset(); Profile.openGame(keyFile, BrowserMenuBar.getInstance().getBookmarkName(keyFile)); // making sure vital game resources are accessible @@ -1027,7 +1028,6 @@ private static boolean reloadFactory(boolean refreshOnly) { clearCache(refreshOnly); Path keyFile = refreshOnly ? Profile.getChitinKey() : findKeyfile(); if (keyFile != null) { - EffectFactory.reset(); retVal = Profile.openGame(keyFile, BrowserMenuBar.getInstance().getBookmarkName(keyFile)); if (retVal) { CreMapCache.reset(); @@ -1050,6 +1050,7 @@ private static void clearCache(boolean refreshOnly) { IniMapCache.clearCache(); Table2daCache.clearCache(); CreMapCache.clearCache(); + BaseOpcode.reset(); // SearchFrame.clearCache(); StringTable.resetAll(); ProRef.clearCache(); diff --git a/src/org/infinity/datatype/EffectType.java b/src/org/infinity/datatype/EffectType.java index b0bd19855..879d96c4d 100644 --- a/src/org/infinity/datatype/EffectType.java +++ b/src/org/infinity/datatype/EffectType.java @@ -10,8 +10,8 @@ import java.util.List; import org.infinity.resource.AbstractStruct; -import org.infinity.resource.EffectFactory; import org.infinity.resource.StructEntry; +import org.infinity.resource.effects.BaseOpcode; public final class EffectType extends Bitmap implements UpdateListener { // EffectType-specific field labels @@ -25,7 +25,7 @@ public final class EffectType extends Bitmap implements UpdateListener { private int attrLength; public EffectType(ByteBuffer buffer, int offset, int length) { - super(buffer, offset, length, EFFECT_TYPE, EffectFactory.getFactory().getEffectNameArray()); + super(buffer, offset, length, EFFECT_TYPE, BaseOpcode.getEffectNames()); } // --------------------- Begin Interface Editable --------------------- @@ -54,7 +54,7 @@ public boolean updateValue(AbstractStruct struct) { @Override public boolean valueUpdated(UpdateEvent event) { try { - return EffectFactory.updateOpcode(event.getStructure()); + return BaseOpcode.updateOpcode(event.getStructure()); } catch (Exception e) { e.printStackTrace(); } @@ -78,7 +78,7 @@ public int readAttributes(ByteBuffer buffer, int off, List list) { off += 8; } try { - off = EffectFactory.getFactory().makeEffectStruct(this, buffer, off, list, getValue(), isV1); + off = BaseOpcode.makeEffectStruct(getValue(), this, buffer, off, list, isV1); } catch (Exception e) { e.printStackTrace(); } diff --git a/src/org/infinity/resource/EffectFactory.java b/src/org/infinity/resource/EffectFactory.java deleted file mode 100644 index 2cee1a6e8..000000000 --- a/src/org/infinity/resource/EffectFactory.java +++ /dev/null @@ -1,5855 +0,0 @@ -// Near Infinity - An Infinity Engine Browser and Editor -// Copyright (C) 2001 - 2022 Jon Olav Hauglid -// See LICENSE.txt for license information - -package org.infinity.resource; - -import java.io.IOException; -import java.nio.ByteBuffer; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.EnumMap; -import java.util.List; -import java.util.TreeMap; -import java.util.stream.Stream; - -import org.infinity.datatype.AnimateBitmap; -import org.infinity.datatype.Bitmap; -import org.infinity.datatype.ColorPicker; -import org.infinity.datatype.ColorValue; -import org.infinity.datatype.Datatype; -import org.infinity.datatype.DecNumber; -import org.infinity.datatype.EffectType; -import org.infinity.datatype.Flag; -import org.infinity.datatype.HashBitmap; -import org.infinity.datatype.IdsBitmap; -import org.infinity.datatype.IdsFlag; -import org.infinity.datatype.IdsTargetType; -import org.infinity.datatype.IsNumeric; -import org.infinity.datatype.MultiNumber; -import org.infinity.datatype.PriTypeBitmap; -import org.infinity.datatype.ProRef; -import org.infinity.datatype.ResourceRef; -import org.infinity.datatype.SecTypeBitmap; -import org.infinity.datatype.SpellProtType; -import org.infinity.datatype.StringRef; -import org.infinity.datatype.Summon2daBitmap; -import org.infinity.datatype.TextString; -import org.infinity.datatype.Unknown; -import org.infinity.datatype.UnsignDecNumber; -import org.infinity.datatype.UpdateListener; -import org.infinity.resource.are.AutomapNote; -import org.infinity.resource.itm.ItmResource; -import org.infinity.util.IdsMapEntry; -import org.infinity.util.StringTable; -import org.infinity.util.Table2da; -import org.infinity.util.Table2daCache; -import org.infinity.util.io.ByteBufferOutputStream; -import org.infinity.util.io.StreamUtils; - -public final class EffectFactory { - // Effect-specific field labels - public static final String EFFECT_PARAMETER_1 = "Parameter 1"; - public static final String EFFECT_PARAMETER_2 = "Parameter 2"; - public static final String EFFECT_SPECIAL = "Special"; - public static final String EFFECT_IDENTIFIER = "Identifier"; - public static final String EFFECT_PREFIX = "Prefix"; - public static final String EFFECT_TIMING_MODE = "Timing mode"; - public static final String EFFECT_DURATION = "Duration"; - public static final String EFFECT_PROBABILITY_1 = "Probability 1"; - public static final String EFFECT_PROBABILITY_2 = "Probability 2"; - public static final String EFFECT_STRING = "String"; - public static final String EFFECT_RESOURCE = "Resource"; - public static final String EFFECT_DICE_COUNT_MAX_LEVEL = "# dice thrown/maximum level"; - public static final String EFFECT_DICE_SIZE_MIN_LEVEL = "Dice size/minimum level"; - public static final String EFFECT_SAVE_TYPE = "Save type"; - public static final String EFFECT_SAVE_PENALTY = "Save penalty"; - public static final String EFFECT_SAVE_BONUS = "Save bonus"; - public static final String EFFECT_PARAMETER = "Parameter?"; - public static final String EFFECT_DICE_COUNT = "# dice thrown"; - public static final String EFFECT_DICE_SIZE = "Dice size"; - - private static EffectFactory efactory; - private String[] portraitIconsArray; - private String[] effectNamesArray; - - /** - * Used in conjunction with {@code getEffectStructure} to address specific fields within an effect structure. - */ - public static enum EffectEntry { - // EFF all versions - // table index abs. structure offset - IDX_OPCODE, OFS_OPCODE, - IDX_TARGET, OFS_TARGET, - IDX_POWER, OFS_POWER, - IDX_PARAM1, OFS_PARAM1, - IDX_PARAM1A, OFS_PARAM1A, - IDX_PARAM1B, OFS_PARAM1B, - IDX_PARAM2, OFS_PARAM2, - IDX_PARAM2A, OFS_PARAM2A, - IDX_PARAM2B, OFS_PARAM2B, - IDX_TIMING, OFS_TIMING, - IDX_RESISTANCE, OFS_RESISTANCE, - IDX_DURATION, OFS_DURATION, - IDX_PROBABILITY1, OFS_PROBABILITY1, - IDX_PROBABILITY2, OFS_PROBABILITY2, - IDX_RESOURCE, OFS_RESOURCE, - IDX_DICETHROWN, OFS_DICETHROWN, - IDX_DICESIDES, OFS_DICESIDES, - IDX_SAVETYPE, OFS_SAVETYPE, - IDX_SAVEBONUS, OFS_SAVEBONUS, - IDX_SPECIAL, OFS_SPECIAL, - // EFF V2.0 only - // table index abs. structure offset - IDX_PRIMARYTYPE, OFS_PRIMARYTYPE, - IDX_UNKNOWN040, OFS_UNKNOWN040, - IDX_PARENTLOWESTLEVEL, OFS_PARENTLOWESTLEVEL, - IDX_PARENTHIGHESTLEVEL, OFS_PARENTHIGHESTLEVEL, - IDX_PARAM3, OFS_PARAM3, - IDX_PARAM4, OFS_PARAM4, - IDX_PARAM5, OFS_PARAM5, - IDX_TIMEAPPLIED, OFS_TIMEAPPLIED, - IDX_RESOURCE2, OFS_RESOURCE2, - IDX_RESOURCE3, OFS_RESOURCE3, - IDX_CASTERX, OFS_CASTERX, - IDX_CASTERY, OFS_CASTERY, - IDX_TARGETX, OFS_TARGETX, - IDX_TARGETY, OFS_TARGETY, - IDX_PARENTRESOURCETYPE, OFS_PARENTRESOURCETYPE, - IDX_PARENTRESOURCE, OFS_PARENTRESOURCE, - IDX_PARENTRESOURCEFLAGS, OFS_PARENTRESOURCEFLAGS, - IDX_PROJECTILE, OFS_PROJECTILE, - IDX_PARENTRESOURCESLOT, OFS_PARENTRESOURCESLOT, - IDX_VARIABLE, OFS_VARIABLE, - IDX_CASTERLEVEL, OFS_CASTERLEVEL, - IDX_FIRSTAPPLY, OFS_FIRSTAPPLY, - IDX_SECONDARYTYPE, OFS_SECONDARYTYPE, - IDX_UNKNOWN0C4, OFS_UNKNOWN0C4, - } - - public static final TreeMap DURATIONS_V1_MAP = new TreeMap<>(); - public static final TreeMap DURATIONS_V2_MAP = new TreeMap<>(); - public static final TreeMap COLOR_LOCATIONS_MAP = new TreeMap<>(); - public static final TreeMap PROJECTILES_IWD_MAP = new TreeMap<>(); - public static final TreeMap INC_TYPES_MAP = new TreeMap<>(); - public static final TreeMap ATTACKS_EE_MAP = new TreeMap(); - - public static final String[] INC_TYPES = { "Increment", "Set", "Set % of" }; - - public static final String[] BUTTON_TYPES = { - "Unknown", "Unknown", "Bard Song", "Cast Spell", "Find Traps", - "Talk", "Unknown", "Guard", "Attack", "Unknown", - "Special Abilities", "Stealth", "Thieving", "Turn Undead", "Use Item", - "Stop", "Unknown", "Unknown", "Unknown", "Unknown", - "Unknown", "Quick Item 1", "Quick Item 2", "Quick Item 3", "Quick Spell 1", - "Quick Spell 2", "Quick Spell 3", "Quick Weapon 1", "Quick Weapon 2", "Quick Weapon 3", - "Quick Weapon 4", "Unknown", "Unknown", "Unknown", "Unknown", - "Unknown", "Unknown", "Unknown", "Unknown", "Unknown", - "Unknown", "Unknown", "Unknown", "Unknown", "Unknown", - "Unknown", "Unknown", "Unknown", "Unknown", "Unknown", - "Unknown", "Unknown", "Unknown", "Unknown", "Unknown", - "Unknown", "Unknown", "Unknown", "Unknown", "Unknown", - "Unknown", "Unknown", "Unknown", "Unknown", "Unknown", - "Unknown", "Unknown", "Unknown", "Unknown", "Unknown", - "Unknown", "Unknown", "Unknown", "Unknown", "Unknown", - "Unknown", "Unknown", "Unknown", "Unknown", "Unknown", - "Unknown", "Unknown", "Unknown", "Unknown", "Unknown", - "Unknown", "Unknown", "Unknown", "Unknown", "Unknown", - "Unknown", "Unknown", "Unknown", "Unknown", "Unknown", - "Unknown", "Unknown", "Unknown", "Unknown", "Unknown", - "None" - }; - - public static final String[] VISUALS = { - // 0..9 - "None", "Hit abjuration", "Hit alteration", "Hit invocation", "Hit necromancy", "Hit conjuration", - "Hit enchantment", "Hit illusion", "Hit divination", "Armor", - // 10..19 - "Spirit armor", "Ghost armor", "Strength", "Confusion", "Shroud of flame", "Death spell", - "Disintegrate", "Power word, silence", "Power word, stun", "Finger of death", - // 20..29 - "Mordenkainen's sword", "Monster summoning 1", "Monster summoning 2", "Monster summoning 3", - "Monster summoning 4", "Monster summoning 5", "Monster summoning 6", "Monster summoning 7", - "Conjure fire elemental", "Conjure earth elemental", - // 30..39 - "Conjure water elemental", "Bless", "Curse", "Prayer", "Recitation", "Cure light wounds", - "Cure moderate wounds", "Cure serious wounds", "Cure critical wounds", "Heal", - // 40..49 - "Animal summoning 1", "Animal summoning 2", "Animal summoning 3", "Slow poison", - "Neutralize poison", "Call lightning", "Static charge", "Remove paralysis", "Free action", - "Miscast magic", - // 50..59 - "Strength of one", "Champion's strength", "Flame strike", "Raise dead", "Resurrection", - "Chaotic commands", "Righteous wrath of the faithful", "Sunray", "Spike stones", - "Dimension door departure", - // 60..69 - "Dimension door arrival", "Cone of cold", "Sol's searing orb", "Hit fire", "Hit cold", - "Hit electricity", "Hit acid", "Hit paralysis", "Malavon's rage", - "Righteous wrath of the faithful ground", - // 70..79 - "Belhifet death", "Portal", "Sunscorch", "Blade barrier (front)", "Blade barrier (back)", - "Circle of bones (front)", "Circle of bones (back)", "Cause light wounds", - "Cause moderate wounds", "Cause serious wounds", - // 80..89 - "Cause critical wounds", "Cause disease", "Hit poison", "Slay living", "Harm", "Destruction", - "Exaltation", "Cloudburst", "Mold touch", "Lower resistance", - // 90..99 - "Cat's grace", "Soul eater", "Smashing wave", "Suffocate", "Abi-dalzim's horrid wilting", - "Mordenkainen's force missiles", "Vitriolic sphere", "Wailing virgin death", "Undead ward", - "Wailing virgin hit", - // 100..109 - "Wylfden's death 1", "Wylfden's death 2", "Dragon's death 1", "Dragon's death 2", - "Monster summoning circle", "Animal summoning circle", "Earth summoning circle", - "Fire summoning circle", "Water summoning circle", "Gedlee's electric loop", - // 110... - "Darktree attack"}; - - public static final String[] LIGHTING = { - // 0..9 - "Necromancy air", "Necromancy earth", "Necromancy water", "", "Alteration air", - "Alteration earth", "Alteration water", "", "Enchantment air", "Enchantment earth", - // 10..19 - "Enchantment water", "", "Abjuration air", "Abjuration earth", "Abjuration water", "", - "Illusion air", "Illusion earth", "Illusion water", "", - // 20..29 - "Conjure air", "Conjure earth", "Conjure water", "", "Invocation air", "Invocation earth", - "Invocation water", "", "Divination air", "Divination earth", - // 30..39 - "Divination water", "", "Mushroom fire", "Mushroom gray", "Mushroom green", "Shaft fire", - "Shaft light", "Shaft white", "Hit door", "Hit finger of death"}; - - public static final String[] CRE_TYPES_IWD = { - // 0..9 - "Anyone", "Undead", "Not undead", "Fire-dwelling", "Not fire-dwelling", "Humanoid", - "Not humanoid", "Animal", "Not animal", "Elemental", - // 10..19 - "Not elemental", "Fungus", "Not fungus", "Huge creature", "Not huge creature", "Elf", "Not elf", - "Umber hulk", "Not umber hulk", "Half-elf", - // 20..29 - "Not half-elf", "Humanoid or animal", "Not humanoid or animal", "Blind", "Not blind", - "Cold-dwelling", "Not cold-dwelling", "Golem", "Not golem", "Minotaur", - // 30..39 - "Not minotaur", "Undead or fungus", "Not undead or fungus", "Good", "Not good", "Neutral", - "Not neutral", "Evil", "Not evil", "Paladin", - // 40..49 - "Not paladin", "Same moral alignment as source", "Not same moral alignment as source", "Source", - "Not source", "Water-dwelling", "Not water-dwelling", "Breathing", "Not breathing", "Allies", - // 50..59 - "Not allies", "Enemies", "Not enemies", "Fire or cold dwelling", "Not fire or cold dwelling", - "Unnatural", "Not unnatural", "Male", "Not male", "Lawful", - // 60..69 - "Not lawful", "Chaotic", "Not chaotic", "Evasion check", "Orc", "Not orc", "Deaf", "Not deaf", - "Summoned creature", "Not summoned creature", - // 70..79 - "Mind flayer", "Not mind flayer", "Silenced", "Not silenced", "Intelligence less than", - "Intelligence greater than", "Intelligence less than or equal to", - "Intelligence greater than or equal to", "Skald", "Not skald", - // 80..89 - "Near enemies", "Not near enemies", "Drow", "Not drow", "Gray dwarf", "Not gray dwarf", - "Daytime", "Not daytime", "Outdoor", "Not outdoor", - // 90.. - "Keg", "Not keg", "Outsider", "Not outsider"}; - - public static final String[] CRE_TYPES_IWD2 = { - // 0..9 - "Anyone", "Undead", "Not undead", "Fire-dwelling", "Not fire-dwelling", "Humanoid", - "Not humanoid", "Animal", "Not animal", "Elemental", - // 10..19 - "Not elemental", "Fungus", "Not fungus", "Huge creature", "Not huge creature", "Elf", "Not elf", - "Umber hulk", "Not umber hulk", "Half-elf", - // 20..29 - "Not half-elf", "Humanoid or animal", "Not humanoid or animal", "Blind", "Not blind", - "Cold-dwelling", "Not cold-dwelling", "Golem", "Not golem", "Minotaur", - // 30..39 - "Not minotaur", "Undead or fungus", "Not undead or fungus", "Good", "Not good", "Neutral", - "Not neutral", "Evil", "Not evil", "Paladin", - // 40..49 - "Not paladin", "Same moral alignment as source", "Not same moral alignment as source", "Source", - "Not source", "Water-dwelling", "Not water-dwelling", "Breathing", "Not breathing", "Allies", - // 50..59 - "Not allies", "Enemies", "Not enemies", "Fire or cold dwelling", "Not fire or cold dwelling", - "Unnatural", "Not unnatural", "Male", "Not male", "Lawful", - // 60..69 - "Not lawful", "Chaotic", "Not chaotic", "Orc", "Not orc", "Deaf", "Not deaf", "Same alignment", - "Not same alignment", "Allied and same alignment", - // 70..79 - "Not allied and same alignment", "HP greater than value", "HP less than value", "Drow", "Not drow", - "Gray dwarf", "Not gray dwarf", "Summoned creature", "Not summoned creature", "Goblin", - // 80..89 - "Not goblin", "Giant", "Not giant", "Troll", "Not troll", "Keg", "Not keg", "Human", "Not human", - "Yuan-ti", - // 90.. - "Not yuan-ti", "Outsider", "Not outsider"}; - - public static final String[] SUMMON_ANIMS = { "No animation", "Monster summoning circle", "Animal summoning circle", - "Earth summoning circle", "Fire summoning circle", "Water summoning circle", "", "Puff of smoke" }; - - public static final String[] SPARKLE_COLORS = { "", "Black", "Blue", "Chromatic", "Gold", "Green", "Purple", "Red", - "White", "Ice", "Stone", "Magenta", "Orange" }; - - public static final String[] AC_TYPES = { "All weapons", "Crushing weapons", "Missile weapons", "Piercing weapons", - "Slashing weapons", "Set base AC to value" }; - - public static final String[] DAMAGE_TYPES = { "All", "Fire damage", "Cold damage", "Electricity damage", - "Acid damage", "Magic damage", "Poison damage", "Slashing damage", "Piercing damage", "Crushing damage", - "Missile damage" }; - - public static final String[] BUTTONS = { "Stealth", "Thieving", "Spell select", "Quick spell 1", "Quick spell 2", - "Quick spell 3", "Turn undead", "Talk", "Use item", "Quick item 1", "", "Quick item 2", "Quick item 3", - "Special abilities" }; - - public static final String[] BUTTONS_IWD2 = { "Stealth", "Thieving", "Cast spell", "Quick spell 0", "Quick spell 1", - "Quick spell 2", "Quick spell 3", "Quick spell 4", "Quick spell 5", "Quick spell 6", "Quick spell 7", - "Quick spell 8", "Bard song", "Quick song 0", "Quick song 1", "Quick song 2", "Quick song 3", "Quick song 4", - "Quick song 5", "Quick song 6", "Quick song 7", "Quick song 8", "Quick skill 0", "Quick skill 1", "Quick skill 2", - "Quick skill 3", "Quick skill 4", "Quick skill 5", "Quick skill 6", "Quick skill 7", "Quick skill 8" }; - - public static final String[] ATTACKS = {"0 attacks per round", "1 attack per round", - "2 attacks per round", "3 attacks per round", - "4 attacks per round", "5 attacks per round", - "0.5 attack per round", "1.5 attacks per round", - "2.5 attacks per round", "3.5 attacks per round", - "4.5 attacks per round"}; - - public static final String[] SUMMON_CONTROLS = { "Match target", "Match target", "From CRE file", "Match target", - "From CRE file", "Hostile", "From CRE file", "", "From CRE file" }; - - public static final String[] REGEN_TYPES = { "Amount HP per second", "Amount HP percentage per second", - "Amount HP per second", "1 HP per amount seconds", "Parameter3 HP per amount seconds" }; - - public static final String[] REGEN_TYPES_IWD = { "Amount HP per second", "Amount HP percentage per second", - "Amount HP per second", "1 HP per amount seconds", "Amount HP per round" }; - - public static final String[] SAVE_TYPES = { "No save", "Spell", "Breath weapon", "Paralyze/Poison/Death", - "Rod/Staff/Wand", "Petrify/Polymorph", null, null, null, null, null, - "EE: Ignore primary target*;Line AoE projectile doesn't affect end target", - "EE: Ignore secondary target*;Line AoE projectile doesn't affect bystanders", null, null, null, null, null, null, - null, null, null, null, null, null, "EE/Ex: Bypass mirror image*;Affects only opcodes 12 and 25", - "EE: Ignore difficulty*;Affects only opcode 12" }; - - public static final String[] SAVE_TYPES_TOBEX = { "No save", "Spell", "Breath weapon", "Paralyze/Poison/Death", - "Rod/Staff/Wand", "Petrify/Polymorph", null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, "EE/Ex: Bypass mirror image", "Ex: Limit stacking", - "Ex: Suspend effect application (internal)" }; - - public static final String[] SAVE_TYPES_IWD2 = {"No save", null, null, "Fortitude", "Reflex", "Will"}; - - public static final String[] SPELL_STATES = { "Chaotic Command", "Miscast Magic", "Pain", "Greater Malison", - "Blood Rage", "Cat's Grace", "Mold Touch", "Shroud of Flame" }; - - static { - DURATIONS_V1_MAP.put(0L, "Instant/Limited"); - DURATIONS_V1_MAP.put(1L, "Instant/Permanent until death"); - DURATIONS_V1_MAP.put(2L, "Instant/While equipped"); - DURATIONS_V1_MAP.put(3L, "Delay/Limited"); - DURATIONS_V1_MAP.put(4L, "Delay/Permanent"); - DURATIONS_V1_MAP.put(5L, "Delay/While equipped"); - DURATIONS_V1_MAP.put(6L, "Limited after duration"); - DURATIONS_V1_MAP.put(7L, "Permanent after duration"); - DURATIONS_V1_MAP.put(8L, "Equipped after duration"); - DURATIONS_V1_MAP.put(9L, "Instant/Permanent"); - DURATIONS_V1_MAP.put(10L, "Instant/Limited (ticks)"); - - DURATIONS_V2_MAP.put(0L, "Instant/Limited"); - DURATIONS_V2_MAP.put(1L, "Instant/Permanent until death"); - DURATIONS_V2_MAP.put(2L, "Instant/While equipped"); - DURATIONS_V2_MAP.put(3L, "Delay/Limited"); - DURATIONS_V2_MAP.put(4L, "Delay/Permanent"); - DURATIONS_V2_MAP.put(5L, "Delay/While equipped"); - DURATIONS_V2_MAP.put(6L, "Limited after duration"); - DURATIONS_V2_MAP.put(7L, "Permanent after duration"); - DURATIONS_V2_MAP.put(8L, "Equipped after duration"); - DURATIONS_V2_MAP.put(9L, "Instant/Permanent"); - DURATIONS_V2_MAP.put(10L, "Instant/Limited (ticks)"); - DURATIONS_V2_MAP.put(4096L, "Absolute duration"); - - COLOR_LOCATIONS_MAP.put(0x00L, "Armor (grey): Belt/Amulet"); - COLOR_LOCATIONS_MAP.put(0x01L, "Armor (teal): Minor color"); - COLOR_LOCATIONS_MAP.put(0x02L, "Armor (pink): Major color"); - COLOR_LOCATIONS_MAP.put(0x03L, "Armor (yellow): Skin color"); - COLOR_LOCATIONS_MAP.put(0x04L, "Armor (red): Strap/Leather"); - COLOR_LOCATIONS_MAP.put(0x05L, "Armor (blue): Armor/Trimming"); - COLOR_LOCATIONS_MAP.put(0x06L, "Armor (green): Hair"); - COLOR_LOCATIONS_MAP.put(0x10L, "Weapon (grey): Head/blade/staff major"); - COLOR_LOCATIONS_MAP.put(0x11L, "Weapon (teal): Staff minor"); - COLOR_LOCATIONS_MAP.put(0x12L, "Weapon (pink)"); - COLOR_LOCATIONS_MAP.put(0x13L, "Weapon (yellow)"); - COLOR_LOCATIONS_MAP.put(0x14L, "Weapon (red): Grip/staff minor"); - COLOR_LOCATIONS_MAP.put(0x15L, "Weapon (blue): Head/blade minor"); - COLOR_LOCATIONS_MAP.put(0x16L, "Weapon (green)"); - COLOR_LOCATIONS_MAP.put(0x20L, "Shield (grey): Hub"); - COLOR_LOCATIONS_MAP.put(0x21L, "Shield (teal): Interior"); - COLOR_LOCATIONS_MAP.put(0x22L, "Shield (pink): Panel"); - COLOR_LOCATIONS_MAP.put(0x23L, "Shield (yellow)"); - COLOR_LOCATIONS_MAP.put(0x24L, "Shield (red): Grip"); - COLOR_LOCATIONS_MAP.put(0x25L, "Shield (blue): Body/trim"); - COLOR_LOCATIONS_MAP.put(0x26L, "Shield (green)"); - COLOR_LOCATIONS_MAP.put(0x30L, "Helmet (grey): Wings"); - COLOR_LOCATIONS_MAP.put(0x31L, "Helmet (teal): Detail"); - COLOR_LOCATIONS_MAP.put(0x32L, "Helmet (pink): Plume"); - COLOR_LOCATIONS_MAP.put(0x33L, "Helmet (yellow)"); - COLOR_LOCATIONS_MAP.put(0x34L, "Helmet (red): Face"); - COLOR_LOCATIONS_MAP.put(0x35L, "Helmet (blue): Exterior"); - COLOR_LOCATIONS_MAP.put(0x36L, "Helmet (green)"); - COLOR_LOCATIONS_MAP.put(0xffL, "Character color"); - - PROJECTILES_IWD_MAP.put(0L, "Instant"); - PROJECTILES_IWD_MAP.put(1L, "Arrow"); - PROJECTILES_IWD_MAP.put(2L, "Arrow Exploding"); - PROJECTILES_IWD_MAP.put(3L, "Arrow Flaming"); - PROJECTILES_IWD_MAP.put(4L, "Arrow Heavy*"); - PROJECTILES_IWD_MAP.put(5L, "Arrow (Non-Magical)"); - PROJECTILES_IWD_MAP.put(6L, "Axe"); - PROJECTILES_IWD_MAP.put(7L, "Axe Exploding"); - PROJECTILES_IWD_MAP.put(8L, "Axe Flaming"); - PROJECTILES_IWD_MAP.put(9L, "Axe Heavy*"); - PROJECTILES_IWD_MAP.put(10L, "Axe (Non-Magical)"); - PROJECTILES_IWD_MAP.put(11L, "Bolt"); - PROJECTILES_IWD_MAP.put(12L, "Bolt Exploding"); - PROJECTILES_IWD_MAP.put(13L, "Bolt Flaming"); - PROJECTILES_IWD_MAP.put(14L, "Bolt Heavy*"); - PROJECTILES_IWD_MAP.put(15L, "Bolt (Non-Magical)"); - PROJECTILES_IWD_MAP.put(16L, "Bullet"); - PROJECTILES_IWD_MAP.put(17L, "Bullet Exploding"); - PROJECTILES_IWD_MAP.put(18L, "Bullet Flaming"); - PROJECTILES_IWD_MAP.put(19L, "Bullet Heavy*"); - PROJECTILES_IWD_MAP.put(20L, "Bullet (Non-Magical)"); - PROJECTILES_IWD_MAP.put(26L, "Dagger*"); - PROJECTILES_IWD_MAP.put(27L, "Dagger Exploding"); - PROJECTILES_IWD_MAP.put(28L, "Dagger Flaming"); - PROJECTILES_IWD_MAP.put(29L, "Dagger Heavy"); - PROJECTILES_IWD_MAP.put(30L, "Dagger (Non-Magical)"); - PROJECTILES_IWD_MAP.put(31L, "Dart"); - PROJECTILES_IWD_MAP.put(32L, "Dart Exploding"); - PROJECTILES_IWD_MAP.put(33L, "Dart Flaming"); - PROJECTILES_IWD_MAP.put(34L, "Dart Heavy*"); - PROJECTILES_IWD_MAP.put(35L, "Dart (Non-Magical)"); - PROJECTILES_IWD_MAP.put(36L, "Magic Missile"); - PROJECTILES_IWD_MAP.put(37L, "Fireball"); - PROJECTILES_IWD_MAP.put(39L, "Lightning Bolt"); - PROJECTILES_IWD_MAP.put(41L, "Sleep"); - PROJECTILES_IWD_MAP.put(55L, "Spear"); - PROJECTILES_IWD_MAP.put(56L, "Spear Exploding"); - PROJECTILES_IWD_MAP.put(57L, "Spear Flaming"); - PROJECTILES_IWD_MAP.put(58L, "Spear Heaby"); - PROJECTILES_IWD_MAP.put(59L, "Spear (Non-Magical)"); - PROJECTILES_IWD_MAP.put(62L, "Web Travel"); - PROJECTILES_IWD_MAP.put(63L, "Web Ground"); - PROJECTILES_IWD_MAP.put(64L, "Gaze"); - PROJECTILES_IWD_MAP.put(65L, "Holy Might"); - PROJECTILES_IWD_MAP.put(66L, "Flame Strike"); - PROJECTILES_IWD_MAP.put(67L, "Magic Missile 1"); - PROJECTILES_IWD_MAP.put(68L, "Magic Missile 2"); - PROJECTILES_IWD_MAP.put(69L, "Magic Missile 3"); - PROJECTILES_IWD_MAP.put(70L, "Magic Missile 4"); - PROJECTILES_IWD_MAP.put(71L, "Magic Missile 5"); - PROJECTILES_IWD_MAP.put(72L, "Magic Missile 6"); - PROJECTILES_IWD_MAP.put(73L, "Magic Missile 7"); - PROJECTILES_IWD_MAP.put(74L, "Magic Missile 8"); - PROJECTILES_IWD_MAP.put(75L, "Magic Missile 9"); - PROJECTILES_IWD_MAP.put(76L, "Magic Missile 10"); - PROJECTILES_IWD_MAP.put(94L, "Cloud"); - PROJECTILES_IWD_MAP.put(95L, "Skull Trap"); - PROJECTILES_IWD_MAP.put(96L, "Colour Spray"); - PROJECTILES_IWD_MAP.put(97L, "Ice Storm"); - PROJECTILES_IWD_MAP.put(98L, "Fire Wall"); - PROJECTILES_IWD_MAP.put(99L, "Glyph"); - PROJECTILES_IWD_MAP.put(100L, "Grease"); - PROJECTILES_IWD_MAP.put(101L, "Flame Arrow Green"); - PROJECTILES_IWD_MAP.put(102L, "Flame Arrow Blue"); - PROJECTILES_IWD_MAP.put(103L, "Fireball Green"); - PROJECTILES_IWD_MAP.put(104L, "FireBall Blue"); - PROJECTILES_IWD_MAP.put(105L, "Potion"); - PROJECTILES_IWD_MAP.put(106L, "Potion Exploding"); - PROJECTILES_IWD_MAP.put(107L, "Acid Blob"); - PROJECTILES_IWD_MAP.put(108L, "Scorcher"); - PROJECTILES_IWD_MAP.put(109L, "Travel Door"); - PROJECTILES_IWD_MAP.put(186L, "Cloudkill"); - PROJECTILES_IWD_MAP.put(187L, "Flame Arrow Ice"); - PROJECTILES_IWD_MAP.put(188L, "Cow"); - PROJECTILES_IWD_MAP.put(189L, "Hold"); - PROJECTILES_IWD_MAP.put(190L, "Scorcher Ice"); - PROJECTILES_IWD_MAP.put(191L, "Acid Blob Mustard"); - PROJECTILES_IWD_MAP.put(192L, "Acid Blob Grey"); - PROJECTILES_IWD_MAP.put(193L, "Acid Blob Ochre"); - PROJECTILES_IWD_MAP.put(217L, "Icewind Magic Missile"); - PROJECTILES_IWD_MAP.put(313L, "Modenkainen's Force Missiles"); - PROJECTILES_IWD_MAP.put(345L, "Sekolah's Fire"); - - INC_TYPES_MAP.put(0L, "Increment"); - INC_TYPES_MAP.put(1L, "Set"); - INC_TYPES_MAP.put(2L, "Set % of"); - INC_TYPES_MAP.put(5L, "Multiply %"); - - ATTACKS_EE_MAP.put(-10L, "-4.5 attack per round"); - ATTACKS_EE_MAP.put(-9L, "-3.5 attack per round"); - ATTACKS_EE_MAP.put(-8L, "-2.5 attack per round"); - ATTACKS_EE_MAP.put(-7L, "-1.5 attack per round"); - ATTACKS_EE_MAP.put(-6L, "-0.5 attack per round"); - ATTACKS_EE_MAP.put(-5L, "-5 attacks per round"); - ATTACKS_EE_MAP.put(-4L, "-4 attacks per round"); - ATTACKS_EE_MAP.put(-3L, "-3 attacks per round"); - ATTACKS_EE_MAP.put(-2L, "-2 attacks per round"); - ATTACKS_EE_MAP.put(-1L, "-1 attack per round"); - ATTACKS_EE_MAP.put(0L, "0 attacks per round"); - ATTACKS_EE_MAP.put(1L, "1 attack per round"); - ATTACKS_EE_MAP.put(2L, "2 attacks per round"); - ATTACKS_EE_MAP.put(3L, "3 attacks per round"); - ATTACKS_EE_MAP.put(4L, "4 attacks per round"); - ATTACKS_EE_MAP.put(5L, "5 attacks per round"); - ATTACKS_EE_MAP.put(6L, "0.5 attack per round"); - ATTACKS_EE_MAP.put(7L, "1.5 attacks per round"); - ATTACKS_EE_MAP.put(8L, "2.5 attacks per round"); - ATTACKS_EE_MAP.put(9L, "3.5 attacks per round"); - ATTACKS_EE_MAP.put(10L, "4.5 attacks per round"); - } - - public static EffectFactory getFactory() - { - if (efactory == null) { - efactory = new EffectFactory(); - } - return efactory; - } - - public static void reset() - { - efactory = null; - } - - /** Returns the save type flags description table depending on the current game. */ - public static String[] getSaveType() - { - if (Profile.getEngine() == Profile.Engine.IWD2) { - return SAVE_TYPES_IWD2; - } else if ((Boolean)Profile.getProperty(Profile.Key.IS_GAME_TOBEX)) { - return SAVE_TYPES_TOBEX; - } else { - return SAVE_TYPES; - } - } - - /** - * Creates and returns an index/offset map of the current effect structure which can be used - * to address specific fields within the effect. - * @param struct The effect structure to map. - * @return A map containing table indices and structure offsets, starting with the opcode field. - * @throws Exception If struct doesn't contain a valid effect structure. - */ - public static EnumMap getEffectStructure(AbstractStruct struct) throws Exception - { - if (struct != null) { - EffectType effType = (EffectType)struct.getAttribute(EffectType.EFFECT_TYPE); - if (effType != null) { - EnumMap map = new EnumMap<>(EffectEntry.class); - boolean isV1 = (effType.getSize() == 2); - int ofsOpcode = effType.getOffset(); - int idxOpcode = struct.getFields().indexOf(struct.getAttribute(ofsOpcode)); - if (isV1 && struct.getSize() >= 0x30) { - // EFF V1.0 - map.put(EffectEntry.IDX_OPCODE, idxOpcode); - map.put(EffectEntry.OFS_OPCODE, ofsOpcode); - map.put(EffectEntry.IDX_TARGET, idxOpcode + 1); - map.put(EffectEntry.OFS_TARGET, ofsOpcode + 0x02); - map.put(EffectEntry.IDX_POWER, idxOpcode + 2); - map.put(EffectEntry.OFS_POWER, ofsOpcode + 0x03); - map.put(EffectEntry.IDX_PARAM1, idxOpcode + 3); - map.put(EffectEntry.OFS_PARAM1, ofsOpcode + 0x04); - map.put(EffectEntry.IDX_PARAM1A, idxOpcode + 3); - map.put(EffectEntry.OFS_PARAM1A, ofsOpcode + 0x04); - map.put(EffectEntry.IDX_PARAM1B, idxOpcode + 4); - map.put(EffectEntry.OFS_PARAM1B, ofsOpcode + 0x06); - map.put(EffectEntry.IDX_PARAM2, idxOpcode + 4); - map.put(EffectEntry.OFS_PARAM2, ofsOpcode + 0x08); - map.put(EffectEntry.IDX_PARAM2A, idxOpcode + 4); - map.put(EffectEntry.OFS_PARAM2A, ofsOpcode + 0x08); - map.put(EffectEntry.IDX_PARAM2B, idxOpcode + 5); - map.put(EffectEntry.OFS_PARAM2B, ofsOpcode + 0x0a); - map.put(EffectEntry.IDX_TIMING, idxOpcode + 5); - map.put(EffectEntry.OFS_TIMING, ofsOpcode + 0x0C); - map.put(EffectEntry.IDX_RESISTANCE, idxOpcode + 6); - map.put(EffectEntry.OFS_RESISTANCE, ofsOpcode + 0x0D); - map.put(EffectEntry.IDX_DURATION, idxOpcode + 7); - map.put(EffectEntry.OFS_DURATION, ofsOpcode + 0x0E); - map.put(EffectEntry.IDX_PROBABILITY1, idxOpcode + 8); - map.put(EffectEntry.OFS_PROBABILITY1, ofsOpcode + 0x12); - map.put(EffectEntry.IDX_PROBABILITY2, idxOpcode + 9); - map.put(EffectEntry.OFS_PROBABILITY2, ofsOpcode + 0x13); - map.put(EffectEntry.IDX_RESOURCE, idxOpcode + 10); - map.put(EffectEntry.OFS_RESOURCE, ofsOpcode + 0x14); - map.put(EffectEntry.IDX_DICETHROWN, idxOpcode + 11); - map.put(EffectEntry.OFS_DICETHROWN, ofsOpcode + 0x1C); - map.put(EffectEntry.IDX_DICESIDES, idxOpcode + 12); - map.put(EffectEntry.OFS_DICESIDES, ofsOpcode + 0x20); - map.put(EffectEntry.IDX_SAVETYPE, idxOpcode + 13); - map.put(EffectEntry.OFS_SAVETYPE, ofsOpcode + 0x24); - map.put(EffectEntry.IDX_SAVEBONUS, idxOpcode + 14); - map.put(EffectEntry.OFS_SAVEBONUS, ofsOpcode + 0x28); - map.put(EffectEntry.IDX_SPECIAL, idxOpcode + 15); - map.put(EffectEntry.OFS_SPECIAL, ofsOpcode + 0x2C); - return map; - } else if (!isV1 && struct.getSize() >= 0x100) { - // EFF V2.0 - map.put(EffectEntry.IDX_OPCODE, idxOpcode); - map.put(EffectEntry.OFS_OPCODE, ofsOpcode); - map.put(EffectEntry.IDX_TARGET, idxOpcode + 1); - map.put(EffectEntry.OFS_TARGET, ofsOpcode + 0x04); - map.put(EffectEntry.IDX_POWER, idxOpcode + 2); - map.put(EffectEntry.OFS_POWER, ofsOpcode + 0x08); - map.put(EffectEntry.IDX_PARAM1, idxOpcode + 3); - map.put(EffectEntry.OFS_PARAM1, ofsOpcode + 0x0C); - map.put(EffectEntry.IDX_PARAM1A, idxOpcode + 3); - map.put(EffectEntry.OFS_PARAM1A, ofsOpcode + 0x0C); - map.put(EffectEntry.IDX_PARAM1B, idxOpcode + 4); - map.put(EffectEntry.OFS_PARAM1B, ofsOpcode + 0x0E); - map.put(EffectEntry.IDX_PARAM2, idxOpcode + 4); - map.put(EffectEntry.OFS_PARAM2, ofsOpcode + 0x10); - map.put(EffectEntry.IDX_PARAM2A, idxOpcode + 4); - map.put(EffectEntry.OFS_PARAM2A, ofsOpcode + 0x10); - map.put(EffectEntry.IDX_PARAM2B, idxOpcode + 5); - map.put(EffectEntry.OFS_PARAM2B, ofsOpcode + 0x12); - map.put(EffectEntry.IDX_TIMING, idxOpcode + 5); - map.put(EffectEntry.OFS_TIMING, ofsOpcode + 0x14); - map.put(EffectEntry.IDX_DURATION, idxOpcode + 6); - map.put(EffectEntry.OFS_DURATION, ofsOpcode + 0x18); - map.put(EffectEntry.IDX_PROBABILITY1, idxOpcode + 7); - map.put(EffectEntry.OFS_PROBABILITY1, ofsOpcode + 0x1C); - map.put(EffectEntry.IDX_PROBABILITY2, idxOpcode + 8); - map.put(EffectEntry.OFS_PROBABILITY2, ofsOpcode + 0x1E); - map.put(EffectEntry.IDX_RESOURCE, idxOpcode + 9); - map.put(EffectEntry.OFS_RESOURCE, ofsOpcode + 0x20); - map.put(EffectEntry.IDX_DICETHROWN, idxOpcode + 10); - map.put(EffectEntry.OFS_DICETHROWN, ofsOpcode + 0x28); - map.put(EffectEntry.IDX_DICESIDES, idxOpcode + 11); - map.put(EffectEntry.OFS_DICESIDES, ofsOpcode + 0x2C); - map.put(EffectEntry.IDX_SAVETYPE, idxOpcode + 12); - map.put(EffectEntry.OFS_SAVETYPE, ofsOpcode + 0x30); - map.put(EffectEntry.IDX_SAVEBONUS, idxOpcode + 13); - map.put(EffectEntry.OFS_SAVEBONUS, ofsOpcode + 0x34); - map.put(EffectEntry.IDX_SPECIAL, idxOpcode + 14); - map.put(EffectEntry.OFS_SPECIAL, ofsOpcode + 0x38); - map.put(EffectEntry.IDX_PRIMARYTYPE, idxOpcode + 15); - map.put(EffectEntry.OFS_PRIMARYTYPE, ofsOpcode + 0x3C); - map.put(EffectEntry.IDX_UNKNOWN040, idxOpcode + 16); - map.put(EffectEntry.OFS_UNKNOWN040, ofsOpcode + 0x40); - map.put(EffectEntry.IDX_PARENTLOWESTLEVEL, idxOpcode + 17); - map.put(EffectEntry.OFS_PARENTLOWESTLEVEL, ofsOpcode + 0x44); - map.put(EffectEntry.IDX_PARENTHIGHESTLEVEL, idxOpcode + 18); - map.put(EffectEntry.OFS_PARENTHIGHESTLEVEL, ofsOpcode + 0x48); - map.put(EffectEntry.IDX_RESISTANCE, idxOpcode + 19); - map.put(EffectEntry.OFS_RESISTANCE, ofsOpcode + 0x4C); - map.put(EffectEntry.IDX_PARAM3, idxOpcode + 20); - map.put(EffectEntry.OFS_PARAM3, ofsOpcode + 0x50); - map.put(EffectEntry.IDX_PARAM4, idxOpcode + 21); - map.put(EffectEntry.OFS_PARAM4, ofsOpcode + 0x54); - map.put(EffectEntry.IDX_PARAM5, idxOpcode + 22); - map.put(EffectEntry.OFS_PARAM5, ofsOpcode + 0x58); - map.put(EffectEntry.IDX_TIMEAPPLIED, idxOpcode + 23); - map.put(EffectEntry.OFS_TIMEAPPLIED, ofsOpcode + 0x5c); - map.put(EffectEntry.IDX_RESOURCE2, idxOpcode + 24); - map.put(EffectEntry.OFS_RESOURCE2, ofsOpcode + 0x60); - map.put(EffectEntry.IDX_RESOURCE3, idxOpcode + 25); - map.put(EffectEntry.OFS_RESOURCE3, ofsOpcode + 0x68); - map.put(EffectEntry.IDX_CASTERX, idxOpcode + 26); - map.put(EffectEntry.OFS_CASTERX, ofsOpcode + 0x70); - map.put(EffectEntry.IDX_CASTERY, idxOpcode + 27); - map.put(EffectEntry.OFS_CASTERY, ofsOpcode + 0x74); - map.put(EffectEntry.IDX_TARGETX, idxOpcode + 28); - map.put(EffectEntry.OFS_TARGETX, ofsOpcode + 0x78); - map.put(EffectEntry.IDX_TARGETY, idxOpcode + 29); - map.put(EffectEntry.OFS_TARGETY, ofsOpcode + 0x7C); - map.put(EffectEntry.IDX_PARENTRESOURCETYPE, idxOpcode + 30); - map.put(EffectEntry.OFS_PARENTRESOURCETYPE, ofsOpcode + 0x80); - map.put(EffectEntry.IDX_PARENTRESOURCE, idxOpcode + 31); - map.put(EffectEntry.OFS_PARENTRESOURCE, ofsOpcode + 0x84); - map.put(EffectEntry.IDX_PARENTRESOURCEFLAGS, idxOpcode + 32); - map.put(EffectEntry.OFS_PARENTRESOURCEFLAGS, ofsOpcode + 0x8C); - map.put(EffectEntry.IDX_PROJECTILE, idxOpcode + 33); - map.put(EffectEntry.OFS_PROJECTILE, ofsOpcode + 0x90); - map.put(EffectEntry.IDX_PARENTRESOURCESLOT, idxOpcode + 34); - map.put(EffectEntry.OFS_PARENTRESOURCESLOT, ofsOpcode + 0x94); - map.put(EffectEntry.IDX_VARIABLE, idxOpcode + 35); - map.put(EffectEntry.OFS_VARIABLE, ofsOpcode + 0x98); - map.put(EffectEntry.IDX_CASTERLEVEL, idxOpcode + 36); - map.put(EffectEntry.OFS_CASTERLEVEL, ofsOpcode + 0xb8); - map.put(EffectEntry.IDX_FIRSTAPPLY, idxOpcode + 37); - map.put(EffectEntry.OFS_FIRSTAPPLY, ofsOpcode + 0xbc); - map.put(EffectEntry.IDX_SECONDARYTYPE, idxOpcode + 38); - map.put(EffectEntry.OFS_SECONDARYTYPE, ofsOpcode + 0xc0); - map.put(EffectEntry.IDX_UNKNOWN0C4, idxOpcode + 39); - map.put(EffectEntry.OFS_UNKNOWN0C4, ofsOpcode + 0xc4); - return map; - } - } - } - throw new Exception("Invalid effect structure specified"); - } - - /** - * Returns the StructEntry object, specified by the EffectEntry argument. - * @param struct The structure that contains the requested entry. - * @param id Indicates which effect field to return. - * @return The StructEntry instance specified by the id. - * @throws Exception If one or more arguments are invalid. - */ - public static StructEntry getEntry(AbstractStruct struct, EffectEntry id) throws Exception - { - StructEntry retVal = null; - EnumMap map = getEffectStructure(struct); - if (map != null && map.containsKey(id)) { - retVal = getEntryByIndex(struct, map.get(id)); - } - return retVal; - } - - /** - * Returns the StructEntry object at the specified index. Use in conjunction with getEffectStructure. - * @param struct The structure that contains the requested entry. - * @param entryIndex The index of the requested entry. - * @return The entry at the specified index - * @throws Exception If one or more arguments are invalid. - */ - public static StructEntry getEntryByIndex(AbstractStruct struct, int entryIndex) throws Exception - { - if (struct != null) { - return struct.getFields().get(entryIndex); - } else { - throw new Exception("Invalid arguments specified"); - } - } - - /** - * Returns the data associated with the specified structure entry. - * @param entry The structure entry to fetch data from. - * @return Data as ByteBuffer object. - */ - public static ByteBuffer getEntryData(StructEntry entry) - { - ByteBuffer bb = StreamUtils.getByteBuffer(entry.getSize()); - try (ByteBufferOutputStream bbos = new ByteBufferOutputStream(bb)) { - entry.write(bbos); - } catch (IOException e) { - e.printStackTrace(); - return null; - } - return bb; - } - - /** - * Convenience function to retrieve data associated with a structure entry within struct. - * @param struct The structure that contains the structure entry - * @param id Indicates which effect field to process. - * @return Data as ByteBuffer object - */ - public static ByteBuffer getEntryData(AbstractStruct struct, EffectEntry id) - { - if (struct != null) { - try { - EnumMap map = getEffectStructure(struct); - if (map != null && map.containsKey(id)) { - int idx = map.get(id); - if (idx >= 0 && idx < struct.getFields().size()) { - return getEntryData(struct.getFields().get(idx)); - } - } - } catch (Exception e) { - e.printStackTrace(); - } - } - return null; - } - - /** - * Replaces a data entry in struct with the specified new entry. - * @param struct The struct which contains the entry specified by entryIndex and entryOffset. - * @param index The index key for the entry within struct. - * @param offset The offset key for the data entry. - * @param newEntry The new entry which replaces the old one. - */ - public static void replaceEntry(AbstractStruct struct, EffectEntry index, EffectEntry offset, - StructEntry newEntry) throws Exception - { - EnumMap map = getEffectStructure(struct); - if (struct != null && newEntry != null && - map != null && map.containsKey(index) && map.containsKey(offset)) { - int idx = map.get(index); - int ofs = map.get(offset); - final List list = struct.getFields(); - if (idx >= 0 && idx < list.size() && - ofs >= struct.getOffset() && ofs < struct.getOffset() + struct.getSize()) { - newEntry.setOffset(ofs); - list.set(idx, newEntry); - } else{ - throw new Exception("Index or offset are out of bounds"); - } - } else { - throw new Exception("Invalid arguments specified"); - } - } - - /** - * Central hub for dynamic opcode specific modifications of effect structures. - * @param struct The effect structure to update. - * @return true if fields within the effect structure have been updated, false otherwise. - * @throws Exception If the argument doesn't specify a valid effect structure. - */ - public static boolean updateOpcode(AbstractStruct struct) throws Exception - { - if (struct != null) { - EffectType effType = (EffectType)getEntry(struct, EffectEntry.IDX_OPCODE); - if (effType != null) { - int opcode = ((IsNumeric)getEntry(struct, EffectEntry.IDX_OPCODE)).getValue(); - switch (opcode) { - case 1: // Modify attacks per round - return updateOpcode1(struct); - case 15: // Dexterity bonus - return updateOpcode15(struct); - case 44: // Strength bonus - return updateOpcode44(struct); - case 23: // Reset morale - return updateOpcode23(struct); - case 78: // Disease - return updateOpcode78(struct); - case 232: // Cast spell on condition - return updateOpcode232(struct); - case 233: // Modify proficiencies - return updateOpcode233(struct); - case 319: // Item Usability - return updateOpcode319(struct); - case 328: // Set spell state - return updateOpcode328(struct); - case 342: // Override creature data - return updateOpcode342(struct); - } - } - } - return false; - } - - // Effect type "Modify attacks per round" (1) - private static boolean updateOpcode1(AbstractStruct struct) throws Exception - { - if (struct != null) { - if (Profile.isEnhancedEdition()) { - int opcode = ((IsNumeric)getEntry(struct, EffectEntry.IDX_OPCODE)).getValue(); - if (opcode == 1) { - int param2 = ((IsNumeric)getEntry(struct, EffectEntry.IDX_PARAM2)).getValue(); - switch (param2) { - case 0: // Increment - { - final HashBitmap bmp = new HashBitmap(getEntryData(struct, EffectEntry.IDX_PARAM1), 0, 4, "Value", - ATTACKS_EE_MAP, false, true); - bmp.setFormatter(bmp.formatterBitmap); - replaceEntry(struct, EffectEntry.IDX_PARAM1, EffectEntry.OFS_PARAM1, bmp); - break; - } - case 2: // Set % of - replaceEntry(struct, EffectEntry.IDX_PARAM1, EffectEntry.OFS_PARAM1, - new DecNumber(getEntryData(struct, EffectEntry.IDX_PARAM1), 0, 4, "Value")); - break; - default: - replaceEntry(struct, EffectEntry.IDX_PARAM1, EffectEntry.OFS_PARAM1, - new Bitmap(getEntryData(struct, EffectEntry.IDX_PARAM1), 0, 4, "Value", ATTACKS)); - } - return true; - } - } - } - return false; - } - - // Effect type "Dexterity bonus" (15) - private static boolean updateOpcode15(AbstractStruct struct) throws Exception - { - boolean retVal = false; - if (struct != null) { - if (Profile.getEngine() == Profile.Engine.IWD || Profile.getEngine() == Profile.Engine.IWD2 || - Profile.isEnhancedEdition() || (boolean)Profile.getProperty(Profile.Key.IS_GAME_TOBEX)) { - boolean isV1 = (getEntry(struct, EffectEntry.IDX_OPCODE).getSize() == 2); - int opcode = ((IsNumeric)getEntry(struct, EffectEntry.IDX_OPCODE)).getValue(); - int param2 = ((IsNumeric)getEntry(struct, EffectEntry.IDX_PARAM2)).getValue(); - if (opcode == 15) { - if (isV1 && param2 == 3) { - replaceEntry(struct, EffectEntry.IDX_PARAM1, EffectEntry.OFS_PARAM1, - new DecNumber(getEntryData(struct, EffectEntry.IDX_PARAM1), 0, 4, AbstractStruct.COMMON_UNUSED)); - retVal = true; - } else { - replaceEntry(struct, EffectEntry.IDX_PARAM1, EffectEntry.OFS_PARAM1, - new DecNumber(getEntryData(struct, EffectEntry.IDX_PARAM1), 0, 4, "Value")); - retVal = true; - } - } - } - } - return retVal; - } - - // Effect type "Reset morale" (23) - private static boolean updateOpcode23(AbstractStruct struct) throws Exception - { - if (struct != null) { - if (Profile.isEnhancedEdition()) { - int opcode = ((IsNumeric)getEntry(struct, EffectEntry.IDX_OPCODE)).getValue(); - if (opcode == 23) { - int special = ((IsNumeric)getEntry(struct, EffectEntry.IDX_SPECIAL)).getValue(); - if (special == 0 ) { - // Activate BG2 mode - replaceEntry(struct, EffectEntry.IDX_PARAM1, EffectEntry.OFS_PARAM1, - new DecNumber(getEntryData(struct, EffectEntry.IDX_PARAM1), 0, 4, AbstractStruct.COMMON_UNUSED)); - replaceEntry(struct, EffectEntry.IDX_PARAM2, EffectEntry.OFS_PARAM2, - new DecNumber(getEntryData(struct, EffectEntry.IDX_PARAM2), 0, 4, AbstractStruct.COMMON_UNUSED)); - } else { - // Activate BG1 mode - replaceEntry(struct, EffectEntry.IDX_PARAM1, EffectEntry.OFS_PARAM1, - new DecNumber(getEntryData(struct, EffectEntry.IDX_PARAM1), 0, 4, "Value")); - replaceEntry(struct, EffectEntry.IDX_PARAM2, EffectEntry.OFS_PARAM2, - new Bitmap(getEntryData(struct, EffectEntry.IDX_PARAM2), 0, 4, "Modifier type", INC_TYPES)); - } - return true; - } - } - } - return false; - } - - // Effect type "Strength bonus" (44) - private static boolean updateOpcode44(AbstractStruct struct) throws Exception - { - boolean retVal = false; - if (struct != null) { - if (Profile.getEngine() == Profile.Engine.IWD || Profile.getEngine() == Profile.Engine.IWD2 || - Profile.isEnhancedEdition() || (boolean)Profile.getProperty(Profile.Key.IS_GAME_TOBEX)) { - boolean isV1 = (getEntry(struct, EffectEntry.IDX_OPCODE).getSize() == 2); - int opcode = ((IsNumeric)getEntry(struct, EffectEntry.IDX_OPCODE)).getValue(); - int param2 = ((IsNumeric)getEntry(struct, EffectEntry.IDX_PARAM2)).getValue(); - if (opcode == 44) { - if (isV1 && param2 == 3) { - replaceEntry(struct, EffectEntry.IDX_PARAM1, EffectEntry.OFS_PARAM1, - new DecNumber(getEntryData(struct, EffectEntry.IDX_PARAM1), 0, 4, AbstractStruct.COMMON_UNUSED)); - retVal = true; - } else { - replaceEntry(struct, EffectEntry.IDX_PARAM1, EffectEntry.OFS_PARAM1, - new DecNumber(getEntryData(struct, EffectEntry.IDX_PARAM1), 0, 4, "Value")); - retVal = true; - } - } - } - } - return retVal; - } - - // Effect type "Disease" (78) - private static boolean updateOpcode78(AbstractStruct struct) throws Exception - { - if (struct != null) { - if (Profile.isEnhancedEdition()) { - int opcode = ((IsNumeric)getEntry(struct, EffectEntry.IDX_OPCODE)).getValue(); - if (opcode == 78) { - int param2 = ((IsNumeric)getEntry(struct, EffectEntry.IDX_PARAM2)).getValue(); - switch (param2) { - case 11: // Mold Touch/Single - case 12: // Mold Touch/Decrement - replaceEntry(struct, EffectEntry.IDX_RESOURCE, EffectEntry.OFS_RESOURCE, - new ResourceRef(getEntryData(struct, EffectEntry.IDX_RESOURCE), 0, - EFFECT_RESOURCE, "SPL")); - break; - default: - replaceEntry(struct, EffectEntry.IDX_RESOURCE, EffectEntry.OFS_RESOURCE, - new Unknown(getEntryData(struct, EffectEntry.IDX_RESOURCE), 0, 8, - AbstractStruct.COMMON_UNUSED)); - break; - } - return true; - } - } - } - return false; - } - - // Effect type "Cast spell on condition" (232) - private static boolean updateOpcode232(AbstractStruct struct) throws Exception - { - if (struct != null) { - if (Profile.isEnhancedEdition()) { - int opcode = ((IsNumeric)getEntry(struct, EffectEntry.IDX_OPCODE)).getValue(); - if (opcode == 232) { - int param2 = ((IsNumeric)getEntry(struct, EffectEntry.IDX_PARAM2)).getValue(); - switch (param2) { - case 13: // Time of day - replaceEntry(struct, EffectEntry.IDX_SPECIAL, EffectEntry.OFS_SPECIAL, - new IdsBitmap(getEntryData(struct, EffectEntry.IDX_SPECIAL), 0, 4, - EFFECT_SPECIAL, "TIMEODAY.IDS")); - break; - case 15: // State - replaceEntry(struct, EffectEntry.IDX_SPECIAL, EffectEntry.OFS_SPECIAL, - new IdsFlag(getEntryData(struct, EffectEntry.IDX_SPECIAL), 0, 4, - EFFECT_SPECIAL, "STATE.IDS")); - break; - case 21: - replaceEntry(struct, EffectEntry.IDX_SPECIAL, EffectEntry.OFS_SPECIAL, - new IdsBitmap(getEntryData(struct, EffectEntry.IDX_SPECIAL), 0, 4, - EFFECT_SPECIAL, "SPLSTATE.IDS")); - break; - default: - replaceEntry(struct, EffectEntry.IDX_SPECIAL, EffectEntry.OFS_SPECIAL, - new DecNumber(getEntryData(struct, EffectEntry.IDX_SPECIAL), 0, 4, EFFECT_SPECIAL)); - } - return true; - } - } - } - return false; - } - - // Effect type "Modify proficiencies" (233). - private static boolean updateOpcode233(AbstractStruct struct) throws Exception - { - if (struct != null) { - if (Profile.isEnhancedEdition()) { - int opcode = ((IsNumeric)getEntry(struct, EffectEntry.IDX_OPCODE)).getValue(); - if (opcode == 233) { - boolean signed = ((MultiNumber)getEntry(struct, EffectEntry.IDX_PARAM1)).isSigned(); - int mode = ((IsNumeric)getEntry(struct, EffectEntry.IDX_PARAM2B)).getValue(); - if (signed ^ (mode == 1)) { - replaceEntry(struct, EffectEntry.IDX_PARAM1, EffectEntry.OFS_PARAM1, - new MultiNumber(getEntryData(struct, EffectEntry.IDX_PARAM1), 0, 4, "# stars", - 3, 2, new String[]{"Active class", "Original class"}, mode == 1)); - return true; - } - } - } - } - return false; - } - - // Effect type "Item Usability" (319). - private static boolean updateOpcode319(AbstractStruct struct) throws Exception - { - boolean retVal = false; - if (struct != null) { - if (Profile.getEngine() == Profile.Engine.BG2 || Profile.isEnhancedEdition()) { - int opcode = ((IsNumeric)getEntry(struct, EffectEntry.IDX_OPCODE)).getValue(); - if (opcode == 319) { - boolean isEEex = Profile.getProperty(Profile.Key.IS_GAME_EEEX); - if (isEEex) { - int power = ((IsNumeric)getEntry(struct, EffectEntry.IDX_POWER)).getValue(); - if (power == 2 || power == 3) { - SpellProtType param2 = new SpellProtType(getEntryData(struct, EffectEntry.IDX_PARAM2), 0, 4); - param2.setName("EEex: " + param2.getName()); - StructEntry param1 = param2.createCreatureValueFromType(getEntryData(struct, EffectEntry.IDX_PARAM1), 0); - param1.setName("EEex: " + param1.getName()); - replaceEntry(struct, EffectEntry.IDX_PARAM1, EffectEntry.OFS_PARAM1, param1); - replaceEntry(struct, EffectEntry.IDX_PARAM2, EffectEntry.OFS_PARAM2, param2); - retVal = true; - } - else { - IdsTargetType param2 = new IdsTargetType(getEntryData(struct, EffectEntry.IDX_PARAM2), 0, 4, - IdsTargetType.DEFAULT_NAME_TYPE, -1, - IdsTargetType.DEFAULT_SECOND_IDS, true); - param2.addUpdateListener((UpdateListener)struct.getField(0)); - replaceEntry(struct, EffectEntry.IDX_PARAM1, EffectEntry.OFS_PARAM1, - param2.createIdsValueFromType(getEntryData(struct, EffectEntry.IDX_PARAM1), 0)); - replaceEntry(struct, EffectEntry.IDX_PARAM2, EffectEntry.OFS_PARAM2, param2); - retVal = true; - } - } - // updating resource field - StructEntry entry = getEntry(struct, EffectEntry.IDX_PARAM2); - if (entry instanceof IdsTargetType) { - StructEntry resourceEntry = - ((IdsTargetType)entry).createResourceFromType(getEntryData(struct, EffectEntry.IDX_RESOURCE), 0); - replaceEntry(struct, EffectEntry.IDX_RESOURCE, EffectEntry.OFS_RESOURCE, resourceEntry); - retVal = true; - } - } - } - } - return retVal; - } - - // Effect type "Set State" (328) - private static boolean updateOpcode328(AbstractStruct struct) throws Exception - { - if (struct != null) { - if (Profile.isEnhancedEdition()) { - int opcode = ((IsNumeric)getEntry(struct, EffectEntry.IDX_OPCODE)).getValue(); - if (opcode == 328) { - int special = ((IsNumeric)getEntry(struct, EffectEntry.IDX_SPECIAL)).getValue(); - if (special == 1 && ResourceFactory.resourceExists("SPLSTATE.IDS")) { - // Activate IWD2 mode - replaceEntry(struct, EffectEntry.IDX_PARAM2, EffectEntry.OFS_PARAM2, - new IdsBitmap(getEntryData(struct, EffectEntry.IDX_PARAM2), 0, 4, "State", "SPLSTATE.IDS")); - } else { - // Activate IWD1 mode - replaceEntry(struct, EffectEntry.IDX_PARAM2, EffectEntry.OFS_PARAM2, - new Bitmap(getEntryData(struct, EffectEntry.IDX_PARAM2), 0, 4, "State", SPELL_STATES)); - } - return true; - } - } - } - return false; - } - - // Effect type "Override creature data" (342) - private static boolean updateOpcode342(AbstractStruct struct) throws Exception - { - if (struct != null) { - if (Profile.isEnhancedEdition()) { - int opcode = ((IsNumeric)getEntry(struct, EffectEntry.IDX_OPCODE)).getValue(); - if (opcode == 342) { - int param2 = ((IsNumeric)getEntry(struct, EffectEntry.IDX_PARAM2)).getValue(); - StructEntry newEntry = null; - switch (param2) { - case 1: - newEntry = new Bitmap(getEntryData(struct, EffectEntry.IDX_PARAM1), 0, 4, "Enabled?", AbstractStruct.OPTION_NOYES); - break; - case 2: - newEntry = new ColorValue(getEntryData(struct, EffectEntry.IDX_PARAM1), 0, 4, "Color", false); - break; - default: - newEntry = new DecNumber(getEntryData(struct, EffectEntry.IDX_PARAM1), 0, 4, "Value"); - } - replaceEntry(struct, EffectEntry.IDX_PARAM1, EffectEntry.OFS_PARAM1, newEntry); - return true; - } - } - } - return false; - } - - public EffectFactory() - { - effectNamesArray = null; - switch (Profile.getEngine()) { - case BG1: - effectNamesArray = new String[]{ - // 0..9 - "AC bonus", "Modify attacks per round", "Cure sleep", "Berserk", "Cure berserk", - "Charm creature", "Charisma bonus", "Set color", "Set color glow solid", - "Set color glow pulse", - // 10..19 - "Constitution bonus", "Cure poison", "Damage", "Kill target", "Defrost", - "Dexterity bonus", "Haste", "Current HP bonus", "Maximum HP bonus", "Intelligence bonus", - // 20..29 - "Invisibility", "Lore bonus", "Luck bonus", "Morale bonus", "Panic", "Poison", - "Remove curse", "Acid resistance bonus", "Cold resistance bonus", - "Electricity resistance bonus", - // 30..39 - "Fire resistance bonus", "Magic damage resistance bonus", "Raise dead", - "Save vs. death bonus", "Save vs. wand bonus", "Save vs. polymorph bonus", - "Save vs. breath bonus", "Save vs. spell bonus", "Silence", "Sleep", - // 40..49 - "Slow", "Sparkle", "Bonus wizard spells", "Stone to flesh", "Strength bonus", "Stun", - "Cure stun", "Remove invisibility", "Vocalize", "Wisdom bonus", - // 50..59 - "Character color pulse", "Character tint solid", "Character tint bright", - "Animation change", "Base THAC0 bonus", "Slay", "Invert alignment", "Change alignment", - "Dispel effects", "Stealth bonus", - // 60..69 - "Casting failure", "Unknown (61)", "Bonus priest spells", "Infravision", - "Remove infravision", "Blur", "Translucency", "Summon creature", "Unsummon creature", - "Nondetection", - // 70..79 - "Remove nondetection", "Change gender", "Change AI type", "Attack damage bonus", - "Blindness", "Cure blindness", "Feeblemindedness", "Cure feeblemindedness", - "Disease", "Cure disease", - // 80..89 - "Deafness", "Cure deafness", "Set AI script", "Immunity to projectile", - "Magical fire resistance bonus", "Magical cold resistance bonus", - "Slashing resistance bonus", "Crushing resistance bonus", - "Piercing resistance bonus", "Missile resistance bonus", - // 90..99 - "Open locks bonus", "Find traps bonus", "Pick pockets bonus", "Fatigue bonus", - "Intoxication bonus", "Tracking bonus", "Change level", "Exceptional strength bonus", - "Regeneration", "Modify duration", - // 100..109 - "Protection from creature type", "Immunity to effect", "Immunity to spell level", - "Change name", "XP bonus", "Remove gold", "Morale break", "Change portrait", - "Reputation bonus", "Paralyze", - // 110..119 - "Unknown (110)", "Create weapon", "Remove item", "Equip weapon", "Dither", - "Detect alignment", "Detect invisible", "Clairvoyance", "Show creatures", "Mirror image", - // 120..129 - "Immunity to weapons", "Visual animation effect", "Create inventory item", - "Remove inventory item", "Teleport", "Unlock", "Movement rate bonus", "Summon monsters", - "Confusion", "Aid (non-cumulative)", - // 130..139 - "Bless (non-cumulative)", "Chant (non-cumulative)", "Draw upon holy might (non-cumulative)", - "Luck (non-cumulative)", "Petrification", "Polymorph", "Force visible", - "Bad chant (non-cumulative)", "Set animation sequence", "Display string", - // 140..149 - "Casting glow", "Lighting effects", "Display portrait icon", "Create item in slot", - "Disable button", "Disable spellcasting", "Cast spell", "Learn spell", - "Cast spell at point", "Identify", - // 150..159 - "Find traps", "Replace self", "Play movie", "Sanctuary", "Entangle overlay", - "Minor globe overlay", "Protection from normal missiles overlay", "Web effect", - "Grease overlay", "Mirror image effect", - // 160..169 - "Remove sanctuary", "Remove fear", "Remove paralysis", "Free action", - "Remove intoxication", "Pause target", "Magic resistance bonus", "Missile THAC0 bonus", - "Remove creature", "Prevent portrait icon", - // 170..179 - "Play damage animation", "Give innate ability", "Remove spell", "Poison resistance bonus", - "Play sound", "Hold creature", "Movement rate bonus 2", "Use EFF file", - "THAC0 vs. type bonus", "Damage vs. type bonus", - // 180..189 - "Disallow item", "Disallow item type", "Use EFF file (do not use)", "Use EFF file on equip type", - "No collision detection", "Hold creature 2", "DestroySelf() on target", - "Set local variable", "Increase spells cast per round", "Increase casting speed factor", - // 190.. - "Increase attack speed factor", "Casting level bonus"}; - break; - - case BG2: - case Unknown: // Default list - effectNamesArray = new String[]{ - // 0..9 - "AC bonus", "Modify attacks per round", "Cure sleep", "Berserk", "Cure berserk", - "Charm creature", "Charisma bonus", "Set color", "Set color glow solid", - "Set color glow pulse", - // 10..19 - "Constitution bonus", "Cure poison", "Damage", "Kill target", "Defrost", - "Dexterity bonus", "Haste", "Current HP bonus", "Maximum HP bonus", "Intelligence bonus", - // 20..29 - "Invisibility", "Lore bonus", "Luck bonus", "Reset morale", "Panic", "Poison", - "Remove curse", "Acid resistance bonus", "Cold resistance bonus", - "Electricity resistance bonus", - // 30..39 - "Fire resistance bonus", "Magic damage resistance bonus", "Raise dead", - "Save vs. death bonus", "Save vs. wand bonus", "Save vs. polymorph bonus", - "Save vs. breath bonus", "Save vs. spell bonus", "Silence", "Sleep", - // 40..49 - "Slow", "Sparkle", "Bonus wizard spells", "Stone to flesh", "Strength bonus", "Stun", - "Cure stun", "Remove invisibility", "Vocalize", "Wisdom bonus", - // 50..59 - "Character color pulse", "Character tint solid", "Character tint bright", - "Animation change", "Base THAC0 bonus", "Slay", "Invert alignment", "Change alignment", - "Dispel effects", "Move silently bonus", - // 60..69 - "Casting failure", "Unknown (61)", "Bonus priest spells", "Infravision", - "Remove infravision", "Blur", "Translucency", "Summon creature", "Unsummon creature", - "Nondetection", - // 70..79 - "Remove nondetection", "Change gender", "Change AI type", "Attack damage bonus", - "Blindness", "Cure blindness", "Feeblemindedness", "Cure feeblemindedness", "Disease", - "Cure disease", - // 80..89 - "Deafness", "Cure deafness", "Set AI script", "Immunity to projectile", - "Magical fire resistance bonus", "Magical cold resistance bonus", - "Slashing resistance bonus", "Crushing resistance bonus", "Piercing resistance bonus", - "Missile resistance bonus", - // 90..99 - "Open locks bonus", "Find traps bonus", "Pick pockets bonus", "Fatigue bonus", - "Intoxication bonus", "Tracking bonus", "Change level", "Exceptional strength bonus", - "Regeneration", "Modify duration", - // 100..109 - "Protection from creature type", "Immunity to effect", "Immunity to spell level", - "Change name", "XP bonus", "Remove gold", "Morale break", "Change portrait", - "Reputation bonus", "Paralyze", - // 110..119 - "Retreat from", "Create weapon", "Remove item", "Equip weapon", "Dither", - "Detect alignment", "Detect invisible", "Clairvoyance", "Show creatures", "Mirror image", - // 120..129 - "Immunity to weapons", "Visual animation effect", "Create inventory item", - "Remove inventory item", "Teleport", "Unlock", "Movement rate bonus", "Summon monsters", - "Confusion", "Aid (non-cumulative)", - // 130..139 - "Bless (non-cumulative)", "Chant (non-cumulative)", "Draw upon holy might (non-cumulative)", - "Luck (non-cumulative)", "Petrification", "Polymorph", "Force visible", - "Bad chant (non-cumulative)", "Set animation sequence", "Display string", - // 140..149 - "Casting glow", "Lighting effects", "Display portrait icon", "Create item in slot", - "Disable button", "Disable spellcasting", "Cast spell", "Learn spell", - "Cast spell at point", "Identify", - // 150..159 - "Find traps", "Replace self", "Play movie", "Sanctuary", "Entangle overlay", - "Minor globe overlay", "Protection from normal missiles overlay", "Web effect", - "Grease overlay", "Mirror image effect", - // 160..169 - "Remove sanctuary", "Remove fear", "Remove paralysis", "Free action", - "Remove intoxication", "Pause target", "Magic resistance bonus", "Missile THAC0 bonus", - "Remove creature", "Prevent portrait icon", - // 170..179 - "Play damage animation", "Give innate ability", "Remove spell", "Poison resistance bonus", - "Play sound", "Hold creature", "Movement rate bonus 2", "Use EFF file", - "THAC0 vs. type bonus", "Damage vs. type bonus", - // 180..189 - "Disallow item", "Disallow item type", "Use EFF file (do not use)", - "Use EFF file on equip type", "No collision detection", "Hold creature 2", - "Move creature", "Set local variable", "Increase spells cast per round", - "Increase casting speed factor", - // 190..199 - "Increase attack speed factor", "Casting level bonus", "Find familiar", - "Invisibility detection", "Ignore dialogue pause", "Drain CON and HP on death", - "Disable familiar", "Physical mirror", "Reflect specified effect", "Reflect spell level", - // 200..209 - "Spell turning", "Spell deflection", "Reflect spell school", "Reflect spell type", - "Protection from spell school", "Protection from spell type", "Protection from spell", - "Reflect specified spell", "Minimum HP", "Power word, kill", - // 210..219 - "Power word, stun", "Imprisonment", "Freedom", "Maze", "Select spell", - "Play visual effect", "Level drain", "Power word, sleep", "Stoneskin effect", - "Attack and Saving Throw roll penalty", - // 220..229 - "Remove spell school protections", "Remove spell type protections", "Teleport field", - "Spell school deflection", "Restoration", "Detect magic", "Spell type deflection", - "Spell school turning", "Spell type turning", "Remove protection by school", - // 230..239 - "Remove protection by type", "Time stop", "Cast spell on condition", - "Modify proficiencies", "Create contingency", "Wing buffet", "Project image", - "Set image type", "Disintegrate", "Farsight", - // 240..249 - "Remove portrait icon", "Control creature", "Cure confusion", "Drain item charges", - "Drain wizard spells", "Check for berserk", "Berserk effect", "Attack nearest creature", - "Melee hit effect", "Ranged hit effect", - // 250..259 - "Maximum damage each hit", "Change bard song", "Set trap", "Set automap note", - "Remove automap note", "Create item (days)", "Spell sequencer", "Create spell sequencer", - "Activate spell sequencer", "Spell trap", - // 260..269 - "Activate spell sequencer at point", "Restore lost spells", "Visual range bonus", - "Backstab bonus", "Drop item", "Modify global variable", "Remove protection from spell", - "Disable display string", "Clear fog of war", "Shake screen", - // 270..279 - "Unpause target", "Disable creature", "Use EFF file on condition", "Zone of sweet air", - "Phase", "Hide in shadows bonus", "Detect illusion bonus", "Set traps bonus", - "THAC0 bonus", "Enable button", - // 280..289 - "Wild magic", "Wild surge bonus", "Modify script state", "Use EFF file as curse", - "Melee THAC0 bonus", "Melee weapon damage bonus", "Missile weapon damage bonus", - "Remove feet circle", "Fist THAC0 bonus", "Fist damage bonus", - // 290..299 - "Change title", "Disable visual effects", "Immunity to backstab", "Set persistent AI", - "Set existence delay", "Disable permanent death", "Immunity to specific animation", - "Immunity to turn undead", "Pocket plane", "Chaos shield effect", - // 300..309 - "Modify collision behavior", "Critical hit bonus", "Can use any item", - "Backstab every hit", "Mass raise dead", "Off-hand THAC0 bonus", "Main hand THAC0 bonus", - "Tracking", "Immunity to tracking", "Modify local variable", - // 310.. - "Immunity to time stop", "Wish", "Immunity to sequester", "High-level ability", - "Stoneskin protection", "Remove animation", "Rest", "Haste 2", "Ex: Set stat"}; - break; - - case EE: - effectNamesArray = new String[]{ - // 0..9 - "AC bonus", "Modify attacks per round", "Cure sleep", "Berserk", "Cure berserk", - "Charm creature", "Charisma bonus", "Set color", "Set color glow solid", - "Set color glow pulse", - // 10..19 - "Constitution bonus", "Cure poison", "Damage", "Kill target", "Defrost", - "Dexterity bonus", "Haste", "Current HP bonus", "Maximum HP bonus", "Intelligence bonus", - // 20..29 - "Invisibility", "Lore bonus", "Luck bonus", "Reset morale", "Panic", "Poison", - "Remove curse", "Acid resistance bonus", "Cold resistance bonus", - "Electricity resistance bonus", - // 30..39 - "Fire resistance bonus", "Magic damage resistance bonus", "Raise dead", - "Save vs. death bonus", "Save vs. wand bonus", "Save vs. polymorph bonus", - "Save vs. breath bonus", "Save vs. spell bonus", "Silence", "Sleep", - // 40..49 - "Slow", "Sparkle", "Bonus wizard spells", "Stone to flesh", "Strength bonus", "Stun", - "Cure stun", "Remove invisibility", "Vocalize", "Wisdom bonus", - // 50..59 - "Character color pulse", "Character tint solid", "Character tint bright", - "Animation change", "Base THAC0 bonus", "Slay", "Invert alignment", "Change alignment", - "Dispel effects", "Move silently bonus", - // 60..69 - "Casting failure", "Creature RGB color fade", "Bonus priest spells", "Infravision", - "Remove infravision", "Blur", "Translucency", "Summon creature", "Unsummon creature", - "Nondetection", - // 70..79 - "Remove nondetection", "Change gender", "Change AI type", "Attack damage bonus", - "Blindness", "Cure blindness", "Feeblemindedness", "Cure feeblemindedness", "Disease", - "Cure disease", - // 80..89 - "Deafness", "Cure deafness", "Set AI script", "Immunity to projectile", - "Magical fire resistance bonus", "Magical cold resistance bonus", - "Slashing resistance bonus", "Crushing resistance bonus", "Piercing resistance bonus", - "Missile resistance bonus", - // 90..99 - "Open locks bonus", "Find traps bonus", "Pick pockets bonus", "Fatigue bonus", - "Intoxication bonus", "Tracking bonus", "Change level", "Exceptional strength bonus", - "Regeneration", "Modify duration", - // 100..109 - "Protection from creature type", "Immunity to effect", "Immunity to spell level", - "Change name", "XP bonus", "Remove gold", "Morale break", "Change portrait", - "Reputation bonus", "Paralyze", - // 110..119 - "Retreat from", "Create weapon", "Remove item", "Equip weapon", "Dither", - "Detect alignment", "Detect invisible", "Clairvoyance", "Show creatures", "Mirror image", - // 120..129 - "Immunity to weapons", "Visual animation effect", "Create inventory item", - "Remove inventory item", "Teleport", "Unlock", "Movement rate bonus", "Summon monsters", - "Confusion", "Aid (non-cumulative)", - // 130..139 - "Bless (non-cumulative)", "Chant (non-cumulative)", "Draw upon holy might (non-cumulative)", - "Luck (non-cumulative)", "Petrification", "Polymorph", "Force visible", - "Bad chant (non-cumulative)", "Set animation sequence", "Display string", - // 140..149 - "Casting glow", "Lighting effects", "Display portrait icon", "Create item in slot", - "Disable button", "Disable spellcasting", "Cast spell", "Learn spell", - "Cast spell at point", "Identify", - // 150..159 - "Find traps", "Replace self", "Play movie", "Sanctuary", "Entangle overlay", - "Minor globe overlay", "Protection from normal missiles overlay", "Web effect", - "Grease overlay", "Mirror image effect", - // 160..169 - "Remove sanctuary", "Remove fear", "Remove paralysis", "Free action", - "Remove intoxication", "Pause target", "Magic resistance bonus", "Missile THAC0 bonus", - "Remove creature", "Prevent portrait icon", - // 170..179 - "Play damage animation", "Give innate ability", "Remove spell", "Poison resistance bonus", - "Play sound", "Hold creature", "Movement rate bonus 2", "Use EFF file", - "THAC0 vs. type bonus", "Damage vs. type bonus", - // 180..189 - "Disallow item", "Disallow item type", "Use EFF file (do not use)", - "Use EFF file while on type", "No collision detection", "Hold creature 2", - "Move creature", "Set local variable", "Increase spells cast per round", - "Increase casting speed factor", - // 190..199 - "Increase attack speed factor", "Casting level bonus", "Find familiar", - "Invisibility detection", "Ignore dialogue pause", "Drain CON and HP on death", - "Disable familiar", "Physical mirror", "Reflect specified effect", "Reflect spell level", - // 200..209 - "Spell turning", "Spell deflection", "Reflect spell school", "Reflect spell type", - "Protection from spell school", "Protection from spell type", "Protection from spell", - "Reflect specified spell", "Minimum HP", "Power word, kill", - // 210..219 - "Power word, stun", "Imprisonment", "Freedom", "Maze", "Select spell", - "Play visual effect", "Level drain", "Power word, sleep", "Stoneskin effect", - "Attack and Saving Throw roll penalty", - // 220..229 - "Remove spell school protections", "Remove spell type protections", "Teleport field", - "Spell school deflection", "Restoration", "Detect magic", "Spell type deflection", - "Spell school turning", "Spell type turning", "Remove protection by school", - // 230..239 - "Remove protection by type", "Time stop", "Cast spell on condition", - "Modify proficiencies", "Create contingency", "Wing buffet", "Project image", - "Set image type", "Disintegrate", "Farsight", - // 240..249 - "Remove portrait icon", "Control creature", "Cure confusion", "Drain item charges", - "Drain wizard spells", "Check for berserk", "Berserk effect", "Attack nearest creature", - "Melee hit effect", "Ranged hit effect", - // 250..259 - "Maximum damage each hit", "Change bard song", "Set trap", "Set automap note", - "Remove automap note", "Create item (days)", "Spell sequencer", "Create spell sequencer", - "Activate spell sequencer", "Spell trap", - // 260..269 - "Activate spell sequencer at point", "Restore lost spells", "Visual range bonus", - "Backstab bonus", "Drop item", "Modify global variable", "Remove protection from spell", - "Disable display string", "Clear fog of war", "Shake screen", - // 270..279 - "Unpause target", "Disable creature", "Use EFF file on condition", "Zone of sweet air", - "Phase", "Hide in shadows bonus", "Detect illusion bonus", "Set traps bonus", - "THAC0 bonus", "Enable button", - // 280..289 - "Wild magic", "Wild surge bonus", "Modify script state", "Use EFF file as curse", - "Melee THAC0 bonus", "Melee weapon damage bonus", "Missile weapon damage bonus", - "Remove feet circle", "Fist THAC0 bonus", "Fist damage bonus", - // 290..299 - "Change title", "Disable visual effects", "Immunity to backstab", "Set persistent AI", - "Set existence delay", "Disable permanent death", "Immunity to specific animation", - "Immunity to turn undead", "Pocket plane", "Chaos shield effect", - // 300..309 - "Modify collision behavior", "Critical hit bonus", "Can use any item", - "Backstab every hit", "Mass raise dead", "Off-hand THAC0 bonus", "Main hand THAC0 bonus", - "Tracking", "Immunity to tracking", "Modify local variable", - // 310..319 - "Immunity to time stop", "Wish", "Immunity to sequester", "High-level ability", - "Stoneskin protection", "Remove animation", "Rest", "Haste 2", "Protection from resource", - "Restrict item", - // 320..329 - "Change weather", "Remove effects by resource", "AoE evade check (deprecated)", - "Turn undead level", "Immunity to resource and message", "All saving throws bonus", - "Apply effects list", "Show visual effect", "Set spell state", "Slow poison", - // 330..339 - "Float text", "Summon creatures 2", "Attack damage type bonus", "Static charge", - "Turn undead", "Seven eyes", "Seven eyes overlay", "Remove effects by opcode", - "Disable rest or save", "Alter visual animation effect", - // 340..349 - "Backstab hit effect", "Critical hit effect", "Override creature data", - "HP swap", "Enchantment vs. creature type", "Enchantment bonus", "Save vs. school bonus", - "Move view to target", "Unknown (348)", "Unknown (349)", - // 350..359 - "Unknown (350)", "Unknown (351)", "Change Background", "Tint screen", "Flash screen", - "Soul exodus", "Stop all actions", "Set state", "Set AI script", "Unknown (359)", - // 360..367 - "Ignore reputation breaking point", "Cast spell on critical miss", "Critical miss bonus", - "Movement check", "Unknown (364)", "Make unselectable", "Apply spell on movement", - "Minimum base stats"}; - - // add more game-specific types dynamically - boolean isEEex = Profile.getProperty(Profile.Key.IS_GAME_EEEX); - if (Profile.getGame() == Profile.Game.PSTEE) { - final String[] effectNamesArray2 = new String[] { - // 368..369 - "Unknown (368)", "Play BAM file (single/dual)", - // 370..379 - "Play BAM file", "Play BAM file 2", "Play BAM file 3", "Play BAM file 4", - "Special spell hit", "Play BAM with effects", "Detect evil", "Unknown (377)", "Prayer", - "Curse", - // 380..383 - "Embalm", "Induce hiccups", "Fist of iron", "Hit point transfer"}; - effectNamesArray = Stream.of(effectNamesArray, effectNamesArray2).flatMap(Stream::of).toArray(String[]::new); - if (isEEex) { - String[] eeexOpcodes = new String[]{ - // 384..389 - "Undefined (384)", "Undefined (385)", "Undefined (386)", "Undefined (387)", - "Undefined (388)", "Undefined (389)", - // 390..399 - "Undefined (390)", "Undefined (391)", "Undefined (392)", "Undefined (393)", - "Undefined (394)", "Undefined (395)", "Undefined (396)", "Undefined (397)", - "Undefined (398)", "Undefined (399)", - // 400..408 - "EEex: Set Temporary AI Script", "EEex: Set Extended Stat", "EEex: Invoke Lua", "EEex: Screen Effects", - "EEex: Override Button Type", "EEex: Override Button Index", "EEex: Render Override", "EEex: On Remove", - "EEex: Projectile Mutator"}; - effectNamesArray = Stream.of(effectNamesArray, eeexOpcodes).flatMap(Stream::of).toArray(String[]::new); - } - } - else if (isEEex) { - String[] eeexOpcodes = new String[]{ - // 368..369 - "Undefined (368)", "Undefined (369)", - // 370..379 - "Undefined (370)", "Undefined (371)", "Undefined (372)", "Undefined (373)", - "Undefined (374)", "Undefined (375)", "Undefined (376)", "Undefined (377)", - "Undefined (378)", "Undefined (379)", - // 380..389 - "Undefined (380)", "Undefined (381)", "Undefined (382)", "Undefined (383)", - "Undefined (384)", "Undefined (385)", "Undefined (386)", "Undefined (387)", - "Undefined (388)", "Undefined (389)", - // 390..399 - "Undefined (390)", "Undefined (391)", - "Undefined (392)", "Undefined (393)", "Undefined (394)", "Undefined (395)", - "Undefined (396)", "Undefined (397)", "Undefined (398)", "Undefined (399)", - // 400..408 - "EEex: Set Temporary AI Script", "EEex: Set Extended Stat", "EEex: Invoke Lua", "EEex: Screen Effects", - "EEex: Override Button Type", "EEex: Override Button Index", "EEex: Render Override", "EEex: On Remove", - "EEex: Projectile Mutator"}; - effectNamesArray = Stream.of(effectNamesArray, eeexOpcodes).flatMap(Stream::of).toArray(String[]::new); - } - break; - - case PST: - effectNamesArray = new String[]{ - // 0..9 - "AC bonus", "Modify attacks per round", "Cure sleep", "Berserk", "Cure berserk", - "Charm creature", "Charisma bonus", "Set color", "Set color glow solid", - "Set color glow pulse", - // 10..19 - "Constitution bonus", "Cure poison", "Damage", "Kill target", "Defrost", "Dexterity bonus", - "Haste", "Current HP bonus", "Maximum HP bonus", "Intelligence bonus", - // 20..29 - "Invisibility", "Lore bonus", "Luck bonus", "Reset morale", "Panic", "Poison", - "Remove curse", "Acid resistance bonus", "Cold resistance bonus", - "Electricity resistance bonus", - // 30..39 - "Fire resistance bonus", "Magic damage resistance bonus", "Raise dead", - "Save vs. death bonus", "Save vs. wand bonus", "Save vs. polymorph bonus", - "Save vs. breath bonus", "Save vs. spell bonus", "Silence", "Sleep", - // 40..49 - "Slow", "Sparkle", "Bonus wizard spells", "Stone to flesh", "Strength bonus", "Stun", - "Cure stun", "Remove invisibility", "Vocalize", "Wisdom bonus", - // 50..59 - "Character color pulse", "Character tint solid", "Character tint bright", - "Animation change", "Base THAC0 bonus", "Slay", "Invert alignment", "Change alignment", - "Dispel effects", "Stealth bonus", - // 60..69 - "Casting failure", "Unknown (61)", "Bonus priest spells", "Infravision", - "Remove infravision", "Blur", "Translucency", "Summon creature", "Unsummon creature", - "Nondetection", - // 70..79 - "Remove nondetection", "Change gender", "Change AI type", "Attack damage bonus", - "Blindness", "Cure blindness", "Feeblemindedness", "Cure feeblemindedness", "Disease", - "Cure disease", - // 80..89 - "Deafness", "Cure deafness", "Set AI script", "Immunity to projectile", - "Magical fire resistance bonus", "Magical cold resistance bonus", - "Slashing resistance bonus", "Crushing resistance bonus", "Piercing resistance bonus", - "Missile resistance bonus", - // 90..99 - "Open locks bonus", "Find traps bonus", "Pick pockets bonus", "Fatigue bonus", - "Intoxication bonus", "Tracking bonus", "Change level", "Exceptional strength bonus", - "Regeneration", "Modify duration", - // 100..109 - "Protection from creature type", "Immunity to effect", "Immunity to spell level", - "Change name", "XP bonus", "Remove gold", "Morale break", "Change portrait", - "Reputation bonus", "Paralyze", - // 110..119 - "Retreat from", "Create weapon", "Remove item", "Equip weapon", "Dither", - "Detect alignment", "Detect invisible", "Clairvoyance", "Show creatures", "Mirror image", - // 120..129 - "Immunity to weapons", "Visual animation effect", "Create inventory item", - "Remove inventory item", "Teleport", "Unlock", "Movement rate bonus", "Summon monsters", - "Confusion", "Aid (non-cumulative)", - // 130..139 - "Bless (non-cumulative)", "Chant (non-cumulative)", "Draw upon holy might (non-cumulative)", - "Luck (non-cumulative)", "Petrification", "Polymorph", "Force visible", - "Bad chant (non-cumulative)", "Set animation sequence", "Display string", - // 140..149 - "Casting glow", "Lighting effects", "Display portrait icon", "Create item in slot", - "Disable button", "Disable spellcasting", "Cast spell", "Learn spell", - "Cast spell at point", "Identify", - // 150..159 - "Find traps", "Replace self", "Play movie", "Sanctuary", "Entangle overlay", - "Minor globe overlay", "Protection from normal missiles overlay", "Web effect", - "Grease overlay", "Mirror image effect", - // 160..169 - "Remove sanctuary", "Remove fear", "Remove paralysis", "Free action", - "Remove intoxication", "Pause target", "Magic resistance bonus", "Missile THAC0 bonus", - "Remove creature", "Prevent portrait icon", - // 170..179 - "Play damage animation", "Give innate ability", "Remove spell", "Poison resistance bonus", - "Play sound", "Hold creature", "Unknown (176)", "Unknown (177)", - "Unknown (178)", "Unknown (179)", - // 180..189 - "Unknown (180)", "Unknown (181)", "Unknown (182)", "Unknown (183)", "Unknown (184)", - "Unknown (185)", "Set state", "Play BAM file (single/dual)", "Play BAM file", - "Play BAM file 2", - // 190..199 - "Play BAM file 3", "Play BAM file 4", "Hit point transfer", "Shake screen", - "Flash screen", "Tint screen", "Special spell hit", "Unknown (197)", "Unknown (198)", - "Unknown (199)", - // 200..209 - "Unknown (200)", "Play BAM with effects", "Unknown (202)", "Curse", "Prayer", - "Move view to target", "Embalm", "Stop all actions", "Fist of iron", "Soul exodus", - // 210.. - "Detect evil", "Induce hiccups", "Speak with dead"}; - break; - - case IWD: - effectNamesArray = new String[]{ - // 0..9 - "AC bonus", "Modify attacks per round", "Cure sleep", "Berserk", "Cure berserk", - "Charm creature", "Charisma bonus", "Set color", "Set color glow solid", - "Set color glow pulse", - // 10..19 - "Constitution bonus", "Cure poison", "Damage", "Kill target", "Defrost", - "Dexterity bonus", "Haste", "Current HP bonus", "Maximum HP bonus", "Intelligence bonus", - // 20..29 - "Invisibility", "Lore bonus", "Luck bonus", "Morale bonus", "Panic", "Poison", - "Remove curse", "Acid resistance bonus", "Cold resistance bonus", - "Electricity resistance bonus", - // 30..39 - "Fire resistance bonus", "Magic damage resistance bonus", "Raise dead", - "Save vs. death bonus", "Save vs. wand bonus", "Save vs. polymorph bonus", - "Save vs. breath bonus", "Save vs. spell bonus", "Silence", "Sleep", - // 40..49 - "Slow", "Sparkle", "Bonus wizard spells", "Stone to flesh", "Strength bonus", "Stun", - "Cure stun", "Remove invisibility", "Vocalize", "Wisdom bonus", - // 50..59 - "Character color pulse", "Character tint solid", "Character tint bright", - "Animation change", "Base THAC0 bonus", "Slay", "Invert alignment", "Change alignment", - "Dispel effects", "Stealth bonus", - // 60..69 - "Casting failure", "Unknown (61)", "Bonus priest spells", "Infravision", - "Remove infravision", "Blur", "Translucency", "Summon creature", "Unsummon creature", - "Nondetection", - // 70..79 - "Remove nondetection", "Change gender", "Change AI type", "Attack damage bonus", - "Blindness", "Cure blindness", "Feeblemindedness", "Cure feeblemindedness", "Disease", - "Cure disease", - // 80..89 - "Deafness", "Cure deafness", "Set AI script", "Immunity to projectile", - "Unknown (84)", "Unknown (85)", "Slashing resistance bonus", "Crushing resistance bonus", - "Piercing resistance bonus", "Missile resistance bonus", - // 90..99 - "Open locks bonus", "Find traps bonus", "Pick pockets bonus", "Fatigue bonus", - "Intoxication bonus", "Tracking bonus", "Change level", "Exceptional strength bonus", - "Regeneration", "Modify duration", - // 100..109 - "Protection from creature type", "Immunity to effect", "Immunity to spell level", - "Change name", "XP bonus", "Remove gold", "Morale break", "Change portrait", - "Reputation bonus", "Paralyze", - // 110..119 - "Unknown (110)", "Create weapon", "Remove item", "Unknown (113)", "Unknown (114)", - "Detect alignment", "Detect invisible", "Clairvoyance", "Unknown (118)", "Mirror image", - // 120..129 - "Immunity to weapons", "Unknown (121)", "Create inventory item", - "Remove inventory item", "Teleport", "Unlock", "Movement rate bonus", "Summon monsters", - "Confusion", "Aid (non-cumulative)", - // 130..139 - "Bless (non-cumulative)", "Chant (non-cumulative)", "Draw upon holy might (non-cumulative)", - "Luck (non-cumulative)", "Petrification", "Polymorph", "Force visible", - "Bad chant (non-cumulative)", "Set animation sequence", "Display string", - // 140..149 - "Casting glow", "Lighting effects", "Display portrait icon", "Create item in slot", - "Disable button", "Disable spellcasting", "Cast spell", "Learn spell", - "Cast spell at point", "Identify", - // 150..159 - "Find traps", "Replace self", "Play movie", "Sanctuary", "Entangle overlay", - "Minor globe overlay", "Protection from normal missiles overlay", "Web effect", - "Grease overlay", "Mirror image effect", - // 160..169 - "Remove sanctuary", "Remove fear", "Remove paralysis", "Free action", - "Remove intoxication", "Pause target", "Magic resistance bonus", "Missile THAC0 bonus", - "Remove creature", "Prevent portrait icon", - // 170..179 - "Play damage animation", "Give innate ability", "Remove spell", "Poison resistance bonus", - "Play sound", "Hold creature", "Movement rate bonus 2", "Use EFF file", - "THAC0 vs. type bonus", "Damage vs. type bonus", - // 180..189 - "Disallow item", "Disallow item type", "Use EFF file (do not use)", - "Use EFF file while on type", "No collision detection", "Hold creature 2", - "Move creature", "Set local variable", "Increase spells cast per round", - "Increase casting speed factor", - // 190..199 - "Increase attack speed factor", "Casting level bonus", "Find familiar", - "Invisibility detection", "Unknown (194)", "Unknown (195)", "Unknown (196)", - "Unknown (197)", "Unknown (198)", "Unknown (199)", - // 200..209 - "Unknown (200)", "Unknown (201)", "Unknown (202)", "Unknown (203)", - "Unknown (204)", "Unknown (205)", "Protection from spell", - "Unknown (207)", "Minimum HP", "Unknown (209)", - // 210..219 - "Power word, stun", "Unknown (211)", "Unknown (212)", "Unknown (213)", "Unknown (214)", - "Unknown (215)", "Unknown (216)", "Unknown (217)", "Stoneskin effect", - "Unknown (219)", - // 220..229 - "Unknown (220)", "Unknown (221)", "Unknown (222)", "Unknown (223)", "Unknown (224)", - "Unknown (225)", "Unknown (226)", "Unknown (227)", "Unknown (228)", "Unknown (229)", - // 230..239 - "Unknown (230)", "Unknown (231)", "Creature RGB color fade", "Show visual effect", - "Snilloc's snowball swarm", "Show casting glow", "Chill touch", "Magical stone", - "All saving throws bonus", "Slow poison", - // 240..249 - "Summon creature 2", "Vampiric touch", "Show visual overlay", "Animate dead", "Prayer", - "Bad prayer", "Summon creature 3", "Beltyn's burning blood", "Summon shadow", - "Recitation", - // 250..259 - "Bad recitation", "Lich touch", "Sol's searing orb", "Bonus AC vs. weapons", - "Dispel specific spell", "Salamander aura", "Umber hulk gaze", "Zombie lord aura", - "Immunity to specific resource", "Summon creatures with cloud", - // 260..269 - "Hide creature", "Immunity to effect and string", "Pomab images", "Evil turn undead", - "Static charge", "Cloak of fear", "Movement rate modifier", "Cure confusion", - "Eye of the mind", "Eye of the sword", - // 270..279 - "Eye of the mage", "Eye of venom", "Eye of the spirit", "Eye of fortitude", - "Eye of stone", "Remove seven eyes", "Remove effect by type", "Soul eater", - "Shroud of flame", "Animal rage", - // 280..289 - "Turn undead", "Vitriolic sphere", "Hide hit points", "Float text", "Mace of disruption", - "Force sleep", "Ranger tracking", "Immunity to sneak attack", "Set spell state", - "Dragon gem cutscene", - // 290..299 - "Display spell immunity string", "Rod of smiting", "Rest", "Beholder dispel magic", - "Harpy wail", "Jackalwere gaze", "Set global variable"}; - break; - - case IWD2: - effectNamesArray = new String[]{ - // 0..9 - "AC bonus", "Modify attacks per round", "Cure sleep", "Berserk", "Cure berserk", - "Charm creature", "Charisma bonus", "Set color", "Set color glow solid", - "Set color glow pulse", - // 10..19 - "Constitution bonus", "Cure poison", "Damage", "Kill target", "Defrost", - "Dexterity bonus", "Haste", "Current HP bonus", "Maximum HP bonus", "Intelligence bonus", - // 20..29 - "Invisibility", "Knowledge arcana", "Luck bonus", "Morale bonus", "Panic", "Poison", - "Remove curse", "Acid resistance bonus", "Cold resistance bonus", - "Electricity resistance bonus", - // 30..39 - "Fire resistance bonus", "Magic damage resistance bonus", "Raise dead", - "Fortitude save bonus", "Reflex save bonus", "Will save bonus", "Unknown (36)", - "Unknown (37)", "Silence", "Sleep", - // 40..49 - "Slow", "Sparkle", "Bonus wizard spells", "Stone to flesh", "Strength bonus", "Stun", - "Cure stun", "Remove invisibility", "Vocalize", "Wisdom bonus", - // 50..59 - "Character color pulse", "Character tint solid", "Character tint bright", - "Animation change", "Base attack bonus", "Slay", "Invert alignment", "Change alignment", - "Dispel effects", "Move silently bonus", - // 60..69 - "Casting failure", "Alchemy", "Bonus priest spells", "Infravision", "Remove infravision", - "Blur", "Translucency", "Summon creature", "Unsummon creature", "Nondetection", - // 70..79 - "Remove nondetection", "Change gender", "Change AI type", "Attack damage bonus", - "Blindness", "Cure blindness", "Feeblemindedness", "Cure feeblemindedness", "Disease", - "Cure disease", - // 80..89 - "Deafness", "Cure deafness", "Set AI script", "Immunity to projectile", - "Unknown (84)", "Unknown (85)", - "Slashing resistance bonus", "Crushing resistance bonus", "Piercing resistance bonus", - "Missile resistance bonus", - // 90..99 - "Open locks bonus", "Find traps bonus", "Pick pockets bonus", "Fatigue bonus", - "Intoxication bonus", "Tracking bonus", "Change level", "Exceptional strength bonus", - "Regeneration", "Modify duration", - // 100..109 - "Protection from creature type", "Immunity to effect", "Immunity to spell level", - "Change name", "XP bonus", "Remove gold", "Morale break", "Change portrait", - "Reputation bonus", "Paralyze", - // 110..119 - "Unknown (110)", "Create weapon", "Remove item", "Equip weapon", "Dither", - "Detect alignment", "Detect invisible", "Clairvoyance", "Show creatures", "Mirror image", - // 120..129 - "Immunity to weapons", "Visual animation effect", "Create inventory item", - "Remove inventory item", "Teleport", "Unlock", "Movement rate bonus", "Unknown (127)", - "Confusion", "Aid (non-cumulative)", - // 130..139 - "Bless (non-cumulative)", "Chant (non-cumulative)", "Draw upon holy might (non-cumulative)", - "Luck (non-cumulative)", "Petrification", "Polymorph", "Force visible", - "Unknown (137)", "Set animation sequence", "Display string", - // 140..149 - "Casting glow", "Lighting effects", "Display portrait icon", "Create item in slot", - "Disable button", "Disable spellcasting", "Cast spell", "Learn spell", - "Cast spell at point", "Identify", - // 150..159 - "Find traps", "Replace self", "Play movie", "Sanctuary", "Entangle overlay", - "Unknown (155)", "Unknown (156)", "Web effect", - "Grease overlay", "Mirror image effect", - // 160..169 - "Remove sanctuary", "Remove fear", "Remove paralysis", "Free action", - "Remove intoxication", "Pause target", "Magic resistance bonus", "Missile attack bonus", - "Remove creature", "Prevent portrait icon", - // 170..179 - "Play damage animation", "Give innate ability", "Remove spell", "Poison resistance bonus", - "Play sound", "Hold creature", "Movement rate penalty", "Use EFF file", - "THAC0 vs. type bonus", "Damage vs. type bonus", - // 180..189 - "Disallow item", "Disallow item type", "Use EFF file (do not use)", - "Use EFF file while on type", "No collision detection", "Hold creature 2", - "Move creature", "Set local variable", "Increase spells cast per round", - "Increase casting speed factor", - // 190..199 - "Increase attack speed factor", "Casting level bonus", "Find familiar", - "Invisibility detection", "Unknown (194)", "Unknown (195)", "Unknown (196)", - "Unknown (197)", "Unknown (198)", "Unknown (199)", - // 200..209 - "Unknown (200)", "Unknown (201)", "Unknown (202)", "Unknown (203)", - "Unknown (204)", "Unknown (205)", "Protection from spell", - "Unknown (207)", "Minimum HP", "Unknown (209)", - // 210..219 - "Unknown (210)", "Unknown (211)", "Unknown (212)", "Unknown (213)", "Unknown (214)", - "Unknown (215)", "Unknown (216)", "Unknown (217)", "Stoneskin effect", - "Unknown (219)", - // 220..229 - "Unknown (220)", "Unknown (221)", "Unknown (222)", - "Unknown (223)", "Unknown (224)", "Unknown (225)", "Unknown (226)", - "Unknown (227)", "Unknown (228)", "Unknown (229)", - // 230..239 - "Unknown (230)", "Unknown (231)", "Creature RGB color fade", "Show visual effect", - "Unknown (234)", "Show casting glow", "Panic undead", "Unknown (237)", - "All saving throws bonus", "Slow poison", - // 240..249 - "Unknown (240)", "Vampiric touch", "Unknown (242)", "Unknown (243)", "Prayer", - "Unknown (245)", "Unknown (246)", "Beltyn's burning blood", "Summon shadow", - "Recitation", - // 250..259 - "Unknown (250)", "Unknown (251)", "Unknown (252)", "Unknown (253)", - "Dispel specific spell", "Salamander aura", "Umber hulk gaze", "Unknown (257)", - "Immunity to specific resource", "Unknown (259)", - // 260..269 - "Hide creature", "Immunity to effect and resource", "Unknown (262)", "Evil turn undead", - "Static charge", "Cloak of fear", "Movement rate modifier", "Cure confusion", - "Eye of the mind", "Eye of the sword", - // 270..279 - "Eye of the mage", "Eye of venom", "Eye of the spirit", "Eye of fortitude", - "Eye of stone", "Remove seven eyes", "Remove effect by type", "Unknown (277)", - "Shroud of flame", "Animal rage", - // 280..289 - "Turn undead", "Vitriolic sphere", "Hide hit points", "Float text", "Mace of disruption", - "Force sleep", "Ranger tracking", "Immunity to sneak attack", "Set spell state", - "Unknown (289)", - // 290..299 - "Display spell immunity string", "Rod of smiting", "Rest", "Beholder dispel magic", - "Harpy wail", "Jackalwere gaze", "Set global variable", "Hide in shadows bonus", - "Use magic device bonus", "Unknown (299)", - // 300..309 - "Unknown (300)", "Unknown (301)", "Unknown (302)", "Unknown (303)", "Unknown (304)", - "Unknown (305)", "Unknown (306)", "Unknown (307)", "Unknown (308)", "Unknown (309)", - // 310..319 - "Unknown (310)", "Unknown (311)", "Unknown (312)", "Unknown (313)", "Unknown (314)", - "Unknown (315)", "Unknown (316)", "Unknown (317)", "Unknown (318)", "Unknown (319)", - // 320..329 - "Unknown (320)", "Unknown (321)", "Unknown (322)", "Unknown (323)", "Unknown (324)", - "Unknown (325)", "Unknown (326)", "Unknown (327)", "Unknown (328)", "Unknown (329)", - // 330..339 - "Unknown (330)", "Unknown (331)", "Unknown (332)", "Unknown (333)", "Unknown (334)", - "Unknown (335)", "Unknown (336)", "Unknown (337)", "Unknown (338)", "Unknown (339)", - // 340..349 - "Unknown (340)", "Unknown (341)", "Unknown (342)", "Unknown (343)", "Unknown (344)", - "Unknown (345)", "Unknown (346)", "Unknown (347)", "Unknown (348)", "Unknown (349)", - // 350..359 - "Unknown (350)", "Unknown (351)", "Unknown (352)", "Unknown (353)", "Unknown (354)", - "Unknown (355)", "Unknown (356)", "Unknown (357)", "Unknown (358)", "Unknown (359)", - // 360..369 - "Unknown (360)", "Unknown (361)", "Unknown (362)", "Unknown (363)", "Unknown (364)", - "Unknown (365)", "Unknown (366)", "Unknown (367)", "Unknown (368)", "Unknown (369)", - // 370..379 - "Unknown (370)", "Unknown (371)", "Unknown (372)", "Unknown (373)", "Unknown (374)", - "Unknown (375)", "Unknown (376)", "Unknown (377)", "Unknown (378)", "Unknown (379)", - // 380..389 - "Unknown (380)", "Unknown (381)", "Unknown (382)", "Unknown (383)", "Unknown (384)", - "Unknown (385)", "Unknown (386)", "Unknown (387)", "Unknown (388)", "Unknown (389)", - // 390..399 - "Unknown (390)", "Unknown (391)", "Unknown (392)", "Unknown (393)", "Unknown (394)", - "Unknown (395)", "Unknown (396)", "Unknown (397)", "Unknown (398)", "Unknown (399)", - // 400..409 - "Hopelessness", "Protection from evil", "Apply effects list", "Armor of faith", - "Nausea", "Enfeeblement", "Fire shield", "Death ward", "Holy power", - "Righteous wrath of the faithful", - // 410..419 - "Summon friendly creature", "Summon hostile creature", "Control creature", - "Run visual effect", "Otiluke's resilient sphere", "Barkskin", "Bleeding wounds", - "Area effect using effects list", "Free action", "Unconsciousness", - // 420..429 - "Death magic", "Entropy shield", "Storm shell", "Protection from the elements", - "Hold undead", "Control undead", "Aegis", "Executioner's eyes", "Banish", - "Apply effects list on hit", - // 430..439 - "Projectile type using effects list", "Energy drain", "Tortoise shell", "Blink", - "Persistent using effects list", "Day blindness", "Damage reduction", "Disguise", - "Heroic inspiration", "Prevent AI slowdown", - // 440..449 - "Barbarian rage", "Force slow", "Cleave", "Protection from arrows", - "Tenser's transformation", "Slippery mind", "Smite evil", "Restoration", "Alicorn lance", - "Call lightning", - // 450..459 - "Globe of invulnerability", "Lower resistance", "Bane", "Power attack", "Expertise", - "Arterial strike", "Hamstring", "Rapid shot"}; - break; - - default: - effectNamesArray = new String[0]; - } - } - - public String[] getEffectNameArray() - { - return effectNamesArray; - } - - // Returns portrait icon description array (used by opcodes 142, 149 and 240) - public String[] getIconDescArray() - { - return getIconDescArray(false); - } - - // Returns portrait icon description array. - // Specify "setDefault" to indicate whether entry 0 should be overridden by "Default" string. - public String[] getIconDescArray(boolean setDefault) - { - if (portraitIconsArray == null) { - Table2da table = Table2daCache.get("STATDESC.2DA"); - if (table != null) { - // first pass: determine highest icon index - int maxIndex = -1; - for (int i = 0, count = table.getRowCount(); i < count; i++) { - try { - int idx = Integer.parseInt(table.get(i, 0)); - maxIndex = Math.max(idx, maxIndex); - } catch (NumberFormatException e) { - } - } - - // second pass: collect icon descriptions - if (maxIndex >= 0) { - portraitIconsArray = new String[maxIndex + 1]; - for (int i = 0, count = table.getRowCount(); i < count; i++) { - try { - int idx = Integer.parseInt(table.get(i, 0)); - int strref = Integer.parseInt(table.get(i, 1)); - if (idx >= 0 && strref >= 0) { - portraitIconsArray[idx] = StringTable.getStringRef(strref); - } - } catch (NumberFormatException e) { - } - } - } - } - if (portraitIconsArray == null) { - portraitIconsArray = new String[0]; - } - } - - if (setDefault && portraitIconsArray.length > 0) { - portraitIconsArray[0] = "Default"; - } - - return portraitIconsArray; - } - - public int makeEffectStruct(Datatype parent, ByteBuffer buffer, int offset, List s, - int effectType, boolean isV1) throws Exception - { - if (buffer != null && offset >= 0 && s != null && effectType >= 0) { - buffer.position(offset); - int param1 = buffer.getInt(); - int param2 = buffer.getInt(); - - // setting param1 & param2 - String restype = makeEffectParams(parent, buffer, offset, s, effectType, isV1); - offset += 8; - - // setting common fields #1 ("Timing mode" ... "Probability2") - offset = makeEffectCommon1(buffer, offset, s, isV1); - - // setting Resource field - offset = makeEffectResource(parent, buffer, offset, s, effectType, restype, param1, param2); - - // setting common fields #2 ("Dice" ... "Save bonus") - offset = makeEffectCommon2(buffer, offset, s, isV1); - - // setting Parameter 2.5 field - offset = makeEffectParam25(parent, buffer, offset, s, effectType, restype, param1, param2); - - return offset; - } else { - throw new Exception("Invalid parameters specified"); - } - } - - - private String makeEffectParams(Datatype parent, ByteBuffer buffer, int offset, List s, - int effectType, boolean isV1) - { - final int initSize = s.size(); - - // Processing effects common to all supported game engines - String restype = makeEffectParamsGeneric(parent, buffer, offset, s, effectType, isV1); - - // Processing game specific effects - if (s.size() == initSize && restype == null) { - if (Profile.getEngine() == Profile.Engine.BG1) { - restype = makeEffectParamsBG1(parent, buffer, offset, s, effectType, isV1); - } else if (Profile.getEngine() == Profile.Engine.PST) { - restype = makeEffectParamsPST(parent, buffer, offset, s, effectType, isV1); - } else if (Profile.getEngine() == Profile.Engine.IWD) { - restype = makeEffectParamsIWD(parent, buffer, offset, s, effectType, isV1); - } else if (Profile.getEngine() == Profile.Engine.BG2 || Profile.isEnhancedEdition()) { - restype = makeEffectParamsBG2(parent, buffer, offset, s, effectType, isV1); - } else if (Profile.getEngine() == Profile.Engine.IWD2) { - restype = makeEffectParamsIWD2(parent, buffer, offset, s, effectType, isV1); - } - } - - // failsafe initialization - if (s.size() == initSize) { - s.add(new Unknown(buffer, offset, 4)); - s.add(new Unknown(buffer, offset + 4, 4)); - } - - return restype; - } - - private String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, - List s, int effectType, boolean isV1) - { - String restype = null; - boolean isTobEx = Profile.getProperty(Profile.Key.IS_GAME_TOBEX); - boolean isEEex = Profile.getProperty(Profile.Key.IS_GAME_EEEX); - - switch (effectType) { - case 0: // AC bonus - s.add(new DecNumber(buffer, offset, 4, "AC value")); - if (Profile.getEngine() == Profile.Engine.IWD2) { - s.add(new Bitmap(buffer, offset + 4, 4, "Bonus to", - new String[]{"Generic", "Armor", "Deflection", "Shield", "Crushing", - "Piercing", "Slashing", "Missile"})); - } else { - s.add(new Flag(buffer, offset + 4, 4, "Bonus to", AC_TYPES)); - } - break; - - case 1: // Modify attacks per round - if (Profile.getEngine() == Profile.Engine.IWD) { - s.add(new Bitmap(buffer, offset, 4, "Value", Arrays.copyOf(ATTACKS, 6))); - } else if (Profile.isEnhancedEdition()) { - int type = buffer.getInt(offset + 4); - switch (type) { - case 0: // Increment - { - final HashBitmap bmp = new HashBitmap(buffer, offset, 4, "Value", ATTACKS_EE_MAP, false, true); - bmp.setFormatter(bmp.formatterBitmap); - s.add(bmp); - break; - } - case 2: // Set % of - s.add(new DecNumber(buffer, offset, 4, "Value")); - break; - default: - s.add(new Bitmap(buffer, offset, 4, "Value", ATTACKS)); - } - } else { - s.add(new Bitmap(buffer, offset, 4, "Value", ATTACKS)); - } - - if (Profile.isEnhancedEdition()) { - Bitmap item = new Bitmap(buffer, offset + 4, 4, "Modifier type", - new String[]{INC_TYPES[0], INC_TYPES[1], INC_TYPES[2], "Set final"}); - if (parent != null && parent instanceof UpdateListener) { - item.addUpdateListener((UpdateListener)parent); - } - s.add(item); - } else { - s.add(new Bitmap(buffer, offset + 4, 4, "Modifier type", INC_TYPES)); - } - break; - - case 2: // Sleep - case 4: // Cure berserk - case 11: // Cure poison - case 14: // Defrost - case 38: // Silence - case 40: // Slow - case 43: // Stone to flesh - case 46: // Cure stun - case 47: // Remove invisibility - case 48: // Vocalize - case 56: // Invert alignment - case 63: // Infravision - case 64: // Remove infravision - case 65: // Blur - case 69: // Nondetection - case 70: // Remove nondetection - case 74: // Blindness - case 75: // Cure blindness - case 76: // Feeblemindedness - case 77: // Cure feeblemindedness - case 79: // Cure disease - case 80: // Deafness - case 81: // Cure deafness - case 116: // Detect invisible - case 117: // Clairvoyance - case 125: // Unlock - case 128: // Confusion - case 134: // Petrification - case 136: // Force visible - case 149: // Identifiy - case 150: // Find traps - case 160: // Remove sanctuary - case 161: // Remove fear - case 162: // Remove paralysis - case 163: // Free action - case 164: // Remove intoxication - case 165: // Pause target - case 168: // Remove creature - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - break; - - case 3: // Berserk - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - if (Profile.getEngine() == Profile.Engine.IWD || Profile.getEngine() == Profile.Engine.IWD2) { - s.add(new Bitmap(buffer, offset + 4, 4, "Berserk type", - new String[]{"Normal", "Constant", "Blood rage"})); - } else if (Profile.isEnhancedEdition()) { - s.add(new Bitmap(buffer, offset + 4, 4, "Berserk type", new String[]{"Normal", "Constant"})); - } else { - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - } - break; - - case 5: // Charm creature - { - s.add(new IdsBitmap(buffer, offset, 4, "Creature type", "GENERAL.IDS")); - if (Profile.getEngine() == Profile.Engine.IWD2) { - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - } else { - final TreeMap idsmap = new TreeMap<>(); - idsmap.put(0L, "Charmed (neutral)"); - idsmap.put(1L, "Charmed (hostile)"); - idsmap.put(2L, "Dire charmed (neutral)"); - idsmap.put(3L, "Dire charmed (hostile)"); - if (Profile.getEngine() != Profile.Engine.PST) { - idsmap.put(4L, "Controlled"); - idsmap.put(5L, "Thrull (hostile)"); - if (Profile.getEngine() == Profile.Engine.BG1 || Profile.getEngine() == Profile.Engine.BG2 || - Profile.isEnhancedEdition()) { - idsmap.put(1000L, "Charmed (neutral, no text)"); - idsmap.put(1001L, "Charmed (hostile, no text)"); - idsmap.put(1002L, "Dire charmed (neutral, no text)"); - idsmap.put(1003L, "Dire charmed (hostile, no text)"); - idsmap.put(1004L, "Controlled (no text)"); - idsmap.put(1005L, "Thrull (hostile, no text)"); - } - } - s.add(new HashBitmap(buffer, offset + 4, 4, "Charm type", idsmap, false)); - } - break; - } - - case 6: // Charisma bonus - case 10: // Constitution bonus - case 19: // Intelligence bonus - case 27: // Acid resistance bonus - case 28: // Cold resistance bonus - case 29: // Electricity resistance bonus - case 30: // Fire resistance bonus - case 31: // Magic damage resistance bonus - case 49: // Wisdom bonus - case 54: // Base THAC0 bonus / Base attack bonus - case 59: // Stealth bonus / Move silently bonus - case 86: // Slashing resistance bonus - case 87: // Crushing resistance bonus - case 88: // Piercing resistance bonus - case 89: // Missile resistance bonus - case 90: // Open locks bonus - case 91: // Find traps bonus - case 92: // Pick pockets bonus - case 93: // Fatigue bonus - case 94: // Intoxication bonus - case 95: // Tracking bonus - case 96: // Change level - case 97: // Exceptional strength bonus - case 104: // XP bonus - case 105: // Remove gold - case 106: // Morale break - case 167: // Missile THAC0 bonus / Missile attack bonus - s.add(new DecNumber(buffer, offset, 4, "Value")); - s.add(new Bitmap(buffer, offset + 4, 4, "Modifier type", INC_TYPES)); - break; - - case 7: // Set color - s.add(new ColorValue(buffer, offset, 4, "Color", false)); - s.add(new HashBitmap(buffer, offset + 4, 4, "Location", COLOR_LOCATIONS_MAP, false)); - break; - - case 8: // Set color glow solid - case 51: // Character tint solid - case 52: // Character tint bright - s.add(new ColorPicker(buffer, offset, "Color")); - if (Profile.getEngine() != Profile.Engine.PST) { - s.add(new HashBitmap(buffer, offset + 4, 4, "Location", COLOR_LOCATIONS_MAP, false)); - } else { - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - } - break; - - case 9: // Set color glow pulse - s.add(new ColorPicker(buffer, offset, "Color")); - if (Profile.getEngine() != Profile.Engine.PST) { - s.add(new HashBitmap(buffer, offset + 4, 2, "Location", COLOR_LOCATIONS_MAP, false)); - } else { - s.add(new DecNumber(buffer, offset + 4, 2, AbstractStruct.COMMON_UNUSED)); - } - s.add(new DecNumber(buffer, offset + 6, 2, "Cycle speed")); - break; - - case 12: // Damage - { - s.add(new DecNumber(buffer, offset, 4, "Amount")); - final String[] modeArray; - if (Profile.getEngine() == Profile.Engine.BG1 || Profile.getEngine() == Profile.Engine.PST) { - modeArray = new String[]{"Normal", "Set to value", "Set to %"}; - } else if (Profile.getEngine() == Profile.Engine.IWD2) { - modeArray = new String[]{"Normal", "Set to value", "Set to %", "Save for half"}; - } else { - modeArray = new String[]{"Normal", "Set to value", "Set to %", "Percentage"}; - } - s.add(new Bitmap(buffer, offset + 4, 2, "Mode", modeArray)); - s.add(new IdsBitmap(buffer, offset + 6, 2, "Damage type", "DAMAGES.IDS")); - break; - } - - case 13: // Kill target - { - if (Profile.getEngine() == Profile.Engine.PST) { - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - } else { - s.add(new Bitmap(buffer, offset, 4, "Display text?", AbstractStruct.OPTION_YESNO)); - } - final String[] typesArray; - if (Profile.getEngine() == Profile.Engine.BG1) { - typesArray = new String[]{"Acid", "Burning", "Crushed", "Normal", "Exploding", "Stoned", - "Freezing", "Exploding stoned", "Exploding freezing", "Electrified"}; - } else if (Profile.getEngine() == Profile.Engine.PST) { - typesArray = new String[]{"Normal", null, null, null, "Exploding", null, "Freezing", "Exploding stoned"}; - } else if (Profile.getEngine() == Profile.Engine.IWD) { - typesArray = new String[]{"Acid", "Burning", "Crushed", "Normal", "Exploding", "Stoned", - "Freezing", null, null, null, "Disintegration", "Destruction"}; - } else if (Profile.getEngine() == Profile.Engine.IWD2) { - typesArray = new String[]{"Acid", "Burning", "Crushed", "Normal", "Exploding", "Stoned", - "Freezing", "Exploding stoned", "Exploding freezing", - "Electrified", "Disintegration", "Destruction"}; - } else { - typesArray = new String[]{"Acid", "Burning", "Crushed", "Normal", "Exploding", "Stoned", - "Freezing", "Exploding stoned", "Exploding freezing", "Electrified", - "Disintegration", null}; - if (Profile.isEnhancedEdition()) { - typesArray[11] = "Exploding (no drop);Exploding death, inventory is not dropped"; - } - } - s.add(new Flag(buffer, offset + 4, 4, "Death type", typesArray)); - break; - } - - case 15: // Dexterity bonus - if (Profile.getEngine() == Profile.Engine.IWD || Profile.getEngine() == Profile.Engine.IWD2 || - Profile.isEnhancedEdition() || isTobEx) { - int type = buffer.getInt(offset + 4); - s.add(new DecNumber(buffer, offset, 4, (isV1 && type == 3) ? AbstractStruct.COMMON_UNUSED : "Value")); - Bitmap item = new Bitmap(buffer, offset + 4, 4, "Modifier type", - new String[]{INC_TYPES[0], INC_TYPES[1], INC_TYPES[2], "Cat's grace"}); - s.add(item); - if (parent != null && parent instanceof UpdateListener) { - item.addUpdateListener((UpdateListener)parent); - } - } else { - s.add(new DecNumber(buffer, offset, 4, "Value")); - s.add(new Bitmap(buffer, offset + 4, 4, "Modifier type", INC_TYPES)); - } - break; - - case 16: // Haste - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - if (Profile.getEngine() == Profile.Engine.BG2 || Profile.isEnhancedEdition()) { - s.add(new Bitmap(buffer, offset + 4, 4, "Haste type", - new String[]{"Normal", "Improved", "Movement rate only"})); - } else { - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - } - break; - - case 17: // Current HP bonus - s.add(new DecNumber(buffer, offset, 4, "Value")); - if (Profile.getEngine() == Profile.Engine.BG1 || Profile.getEngine() == Profile.Engine.PST) { - s.add(new Bitmap(buffer, offset + 4, 4, "Modifier type", INC_TYPES)); - } else if (Profile.getEngine() == Profile.Engine.IWD2) { - s.add(new Bitmap(buffer, offset + 4, 4, "Modifier type", - new String[]{INC_TYPES[0], INC_TYPES[1], INC_TYPES[2], "Lay on hands", - "Wholeness of body", "Lathander's renewal"})); - } else { - s.add(new Bitmap(buffer, offset + 4, 2, "Modifier type", INC_TYPES)); - final String[] flagsArray; - if (Profile.getEngine() == Profile.Engine.IWD) { - flagsArray = new String[]{"No flags set", "Raise dead"}; - } else { - flagsArray = new String[]{"Heal normally", "Raise dead", "Remove limited effects"}; - } - s.add(new Flag(buffer, offset + 6, 2, "Heal flags", flagsArray)); - } - break; - - case 18: // Maximum HP bonus - { - s.add(new DecNumber(buffer, offset, 4, "Value")); - ArrayList typeList = new ArrayList() { - { - add("Increment"); - add("Set"); - add("Set % of"); - add("Increment, don't update current HP"); - add("Set, don't update current HP"); - add("Set % of, don't update current HP"); - } - }; - if (Profile.isEnhancedEdition()) { - typeList.add("Increment, non-cumulative"); - } - s.add(new Bitmap(buffer, offset + 4, 4, "Modifier type", typeList.toArray(new String[typeList.size()]))); - break; - } - - case 20: // Invisibility - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - if (Profile.getEngine() == Profile.Engine.BG1 || Profile.getEngine() == Profile.Engine.PST) { - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - } else { - s.add(new Bitmap(buffer, offset + 4, 4, "Invisibility type", - new String[]{"Normal", "Improved", "Weak"})); - } - break; - - case 21: // Lore bonus / Knowledge arcana - s.add(new DecNumber(buffer, offset, 4, "Value")); - if (Profile.getEngine() == Profile.Engine.IWD2) { - s.add(new Bitmap(buffer, offset + 4, 4, "Modifier type", - new String[]{INC_TYPES[0], INC_TYPES[1], "Mastery"})); - } else { - s.add(new Bitmap(buffer, offset + 4, 4, "Modifier type", INC_TYPES)); - } - break; - - case 22: // Luck bonus - s.add(new DecNumber(buffer, offset, 4, "Value")); - if (Profile.getEngine() == Profile.Engine.BG1) { - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - } else if (Profile.getEngine() == Profile.Engine.IWD || Profile.getEngine() == Profile.Engine.IWD2) { - s.add(new Bitmap(buffer, offset + 4, 4, "Modifier type", - new String[]{"Increment", "Lucky streak", "Fortune's favorite"})); - } else if (isTobEx) { - s.add(new Bitmap(buffer, offset + 4, 4, "Modifier type", new String[]{ - INC_TYPES[0], INC_TYPES[1], INC_TYPES[2], "Instantaneous"})); - } else { - s.add(new Bitmap(buffer, offset + 4, 4, "Modifier type", INC_TYPES)); - } - break; - - case 23: // Reset morale - { - int bg1mode = (Profile.getEngine() == Profile.Engine.BG2 || Profile.getEngine() == Profile.Engine.PST) ? 0 : 1; - if (Profile.isEnhancedEdition()) { - int ofsSpecial = offset + (isV1 ? 0x28 : 0x2c); - bg1mode = buffer.getInt(ofsSpecial); - } - if (bg1mode == 0) { - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - } else { - s.add(new DecNumber(buffer, offset, 4, "Value")); - s.add(new Bitmap(buffer, offset + 4, 4, "Modifier type", INC_TYPES)); - } - break; - } - - case 24: // Panic - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - if (Profile.getEngine() == Profile.Engine.IWD || Profile.getEngine() == Profile.Engine.IWD2) { - s.add(new Bitmap(buffer, offset + 4, 4, "Panic type", new String[]{"Normal", "Harpy wail"})); - } else if (Profile.isEnhancedEdition()) { - s.add(new Bitmap(buffer, offset + 4, 4, "Panic type", new String[] {"Normal", "Bypass immunity"})); - } else { - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - } - break; - - case 25: // Poison - { - s.add(new DecNumber(buffer, offset, 4, "Amount")); - String[] typesArray; - if (Profile.getEngine() == Profile.Engine.IWD || Profile.getEngine() == Profile.Engine.IWD2) { - typesArray = new String[]{"1 damage per second", "Amount damage per second", - "Amount damage per second", "1 damage per amount seconds", - "Amount damage per round", "(Crash)", "Snakebite", "Unused", - "Envenomed weapon"}; - if (Profile.getEngine() == Profile.Engine.IWD2) { - typesArray[5] = "Unused"; - } - } else { - typesArray = new String[]{"1 damage per second", "1 damage per second", - "Amount damage per second", "1 damage per amount seconds", - "Param3 damage per amount seconds"}; - if (Profile.getEngine() == Profile.Engine.BG1) { - typesArray[3] = "1 damage per amount+1 seconds"; - } - } - Bitmap bmp = new Bitmap(buffer, offset + 4, 4, "Poison type", typesArray); - s.add(bmp); - if (parent != null && parent instanceof UpdateListener) { - bmp.addUpdateListener((UpdateListener)parent); - } - - break; - } - - case 26: // Remove Curse - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - if (Profile.getEngine() == Profile.Engine.PST) { - s.add(new Bitmap(buffer, offset + 4, 4, "Curse type", - new String[]{"Normal", "Jumble curse"})); - } else { - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - } - break; - - case 32: // Raise dead - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - if (Profile.isEnhancedEdition()) { - s.add(new Bitmap(buffer, offset + 4, 4, "Restore creature animation?", AbstractStruct.OPTION_NOYES)); - } else { - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - } - break; - - case 33: // Save vs. death bonus / Fortitude save bonus - case 34: // Save vs. wand bonus / Reflex save bonus - case 35: // Save vs. polymorph bonus / Will save bonus - s.add(new DecNumber(buffer, offset, 4, "Value")); - if (isTobEx || Profile.isEnhancedEdition()) { - s.add(new Bitmap(buffer, offset + 4, 4, "Modifier type", new String[]{ - INC_TYPES[0], INC_TYPES[1], INC_TYPES[2], "Increment instantaneously"})); - } else { - s.add(new Bitmap(buffer, offset + 4, 4, "Modifier type", INC_TYPES)); - } - break; - - case 36: // Save vs. breath bonus - case 37: // Save vs. spell bonus - if (Profile.getEngine() == Profile.Engine.IWD2) { - makeEffectParamsDefault(buffer, offset, s); - } else { - s.add(new DecNumber(buffer, offset, 4, "Value")); - if (isTobEx || Profile.isEnhancedEdition()) { - s.add(new Bitmap(buffer, offset + 4, 4, "Modifier type", new String[]{ - INC_TYPES[0], INC_TYPES[1], INC_TYPES[2], "Increment instantaneously"})); - } else { - s.add(new Bitmap(buffer, offset + 4, 4, "Modifier type", INC_TYPES)); - } - } - break; - - case 39: // Sleep - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - if (Profile.getEngine() == Profile.Engine.IWD || Profile.getEngine() == Profile.Engine.IWD2 || - Profile.isEnhancedEdition()) { - s.add(new Bitmap(buffer, offset + 4, 4, "Wake on damage?", AbstractStruct.OPTION_YESNO)); - } else { - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - } - break; - - case 41: // Sparkle - s.add(new Bitmap(buffer, offset, 4, "Color", SPARKLE_COLORS)); - s.add(new Bitmap(buffer, offset + 4, 4, "Particle effect", - new String[]{"", "Explosion", "Swirl", "Shower"})); - break; - - case 42: // Bonus wizard spells - { - s.add(new DecNumber(buffer, offset, 4, "# spells to add")); - final String[] levels = {"Double spells", "Level 1", "Level 2", "Level 3", "Level 4", - "Level 5", "Level 6", "Level 7", "Level 8", "Level 9", "Ex: Double spells"}; - s.add(new Flag(buffer, offset + 4, 4, "Spell levels", - isTobEx ? levels : Arrays.copyOf(levels, levels.length - 1))); - break; - } - - case 44: // Strength bonus - Bitmap item = null; - if (Profile.getEngine() == Profile.Engine.IWD || Profile.getEngine() == Profile.Engine.IWD2 || - Profile.isEnhancedEdition()) { - int type = buffer.getInt(offset + 4); - s.add(new DecNumber(buffer, offset, 4, (isV1 && type == 3) ? AbstractStruct.COMMON_UNUSED : "Value")); - item = new Bitmap(buffer, offset + 4, 4, "Modifier type", - new String[]{INC_TYPES[0], INC_TYPES[1], INC_TYPES[2], "Bull's Strength"}); - s.add(item); - } else if (isTobEx) { - int type = buffer.getInt(offset + 4); - s.add(new DecNumber(buffer, offset, 4, (type == 3) ? AbstractStruct.COMMON_UNUSED : "Value")); - item = new Bitmap(buffer, offset + 4, 4, "Modifier type", new String[]{INC_TYPES[0], INC_TYPES[1], - INC_TYPES[2], "Strength spell"}); - s.add(item); - } else { - s.add(new DecNumber(buffer, offset, 4, "Value")); - s.add(new Bitmap(buffer, offset + 4, 4, "Modifier type", INC_TYPES)); - } - if (item != null && parent != null && parent instanceof UpdateListener) { - item.addUpdateListener((UpdateListener)parent); - } - break; - - case 45: // Stun - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - if (Profile.getEngine() == Profile.Engine.IWD2) { - s.add(new Bitmap(buffer, offset + 4, 4, "Stun type", - new String[]{"Normal", "Unstun on damage", "Power word, stun"})); - } else { - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - } - break; - - case 50: // Character color pulse - s.add(new ColorPicker(buffer, offset, "Color")); - if (Profile.getEngine() == Profile.Engine.IWD2) { - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - } else { - s.add(new HashBitmap(buffer, offset + 4, 1, "Location", COLOR_LOCATIONS_MAP, false)); - s.add(new DecNumber(buffer, offset + 5, 1, AbstractStruct.COMMON_UNUSED)); - s.add(new UnsignDecNumber(buffer, offset + 6, 1, "Cycle speed")); - s.add(new DecNumber(buffer, offset + 7, 1, AbstractStruct.COMMON_UNUSED)); - } - break; - - case 53: // Animation change - s.add(new AnimateBitmap(buffer, offset, 4, "Morph into")); - s.add(new Bitmap(buffer, offset + 4, 4, "Morph type", - new String[]{"Temporary change", "Remove temporary change", - "Permanent change"})); - break; - - case 55: // Slay - case 100: // Protection from creature type - case 109: // Paralyze - case 175: // Hold creature - { - final IdsTargetType param2 = new IdsTargetType(buffer, offset + 4); - s.add(param2.createIdsValueFromType(buffer)); - s.add(param2); - break; - } - - case 57: // Change alignment - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new IdsBitmap(buffer, offset + 4, 4, "Alignment", - Profile.getProperty(Profile.Key.GET_IDS_ALIGNMENT))); - break; - - case 58: // Dispel effects - s.add(new DecNumber(buffer, offset, 4, "Level")); - if (isTobEx || Profile.isEnhancedEdition()) { - s.add(new Bitmap(buffer, offset + 4, 2, "Dispel type", new String[]{ - "Always dispel", "Use caster level", "Use specific level"})); - s.add(new Bitmap(buffer, offset + 6, 2, "Magic weapon dispel type", new String[]{ - "Always dispel", "Do not dispel", "Chance of dispel"})); - } else { - s.add(new Bitmap(buffer, offset + 4, 4, "Dispel type", new String[]{ - "Always dispel", "Use caster level", "Use specific level"})); - } - break; - - case 60: // Casting failure - { - s.add(new DecNumber(buffer, offset, 4, "Amount")); - final String label; - final String[] typesArray; - if (Profile.getEngine() == Profile.Engine.BG2 || Profile.isEnhancedEdition()) { - label = "Failure type"; - typesArray = new String[]{"Wizard", "Priest", "Innate", "Wizard (dead magic)", - "Priest (dead magic)", "Innate (dead magic)"}; - } else if (Profile.getEngine() == Profile.Engine.IWD2) { - label = "Spell class"; - typesArray = new String[]{"Arcane", "Divine", "All spells"}; - } else { - label = "Failure type"; - typesArray = new String[]{"Wizard", "Priest", "Innate"}; - } - s.add(new Bitmap(buffer, offset + 4, 4, label, typesArray)); - break; - } - - case 62: // Bonus priest spells - { - s.add(new DecNumber(buffer, offset, 4, "# spells to add")); - final String[] levels = {"Double spells", "Level 1", "Level 2", "Level 3", "Level 4", - "Level 5", "Level 6", "Level 7", "Level 8", "Level 9", "Ex: Double spells"}; - if (Profile.getEngine() == Profile.Engine.IWD2) { - s.add(new Flag(buffer, offset + 4, 4, "Spell levels", Arrays.copyOf(levels, levels.length - 1))); - } else { - levels[8] = levels[9] = null; - s.add(new Flag(buffer, offset + 4, 4, "Spell levels", - isTobEx ? levels : Arrays.copyOf(levels, levels.length - 3))); - } - break; - } - - case 66: // Translucency - s.add(new DecNumber(buffer, offset, 4, "Fade amount")); - if (Profile.getEngine() == Profile.Engine.IWD || Profile.getEngine() == Profile.Engine.IWD2 || - Profile.isEnhancedEdition()) { - s.add(new Bitmap(buffer, offset + 4, 4, "Visual effect", - new String[]{"Draw instantly", "Fade in", "Fade out"})); - } else { - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - } - break; - - case 67: // Summon creature - if (Profile.getEngine() == Profile.Engine.IWD2) { - s.add(new DecNumber(buffer, offset, 4, "# creatures")); - } else { - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - } - if (Profile.getEngine() == Profile.Engine.BG2 || Profile.isEnhancedEdition() || - Profile.getEngine() == Profile.Engine.IWD) { - s.add(new Bitmap(buffer, offset + 4, 4, "Allegiance", SUMMON_CONTROLS)); - } else if (Profile.getEngine() == Profile.Engine.IWD2) { - s.add(new Bitmap(buffer, offset + 4, 4, "Summon animation", SUMMON_ANIMS)); - } else { - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - } - restype = "CRE"; - break; - - case 68: // Unsummon creature - s.add(new Bitmap(buffer, offset, 4, "Display text?", AbstractStruct.OPTION_NOYES)); - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - if (Profile.isEnhancedEdition()) { - restype = "VEF:VVC:BAM"; - } - break; - - case 71: // Change gender - s.add(new IdsBitmap(buffer, offset, 4, "Gender", "GENDER.IDS")); - s.add(new Bitmap(buffer, offset + 4, 4, "How?", - new String[]{"Reverse gender", "Set gender"})); - break; - - case 72: // Change AI type - { - final String[] ids = new String[]{"EA.IDS", "GENERAL.IDS", "RACE.IDS", "CLASS.IDS", - "SPECIFIC.IDS", "GENDER.IDS", - Profile.getProperty(Profile.Key.GET_IDS_ALIGNMENT)}; - final IdsTargetType param2 = new IdsTargetType(buffer, offset + 4, IdsTargetType.DEFAULT_NAME_TYPE, ids); - s.add(param2.createIdsValueFromType(buffer)); - s.add(param2); - break; - } - - case 73: // Attack damage bonus - s.add(new DecNumber(buffer, offset, 4, "Value")); - if (Profile.getEngine() == Profile.Engine.IWD || Profile.getEngine() == Profile.Engine.IWD2) { - s.add(new Bitmap(buffer, offset + 4, 4, "Damage type", DAMAGE_TYPES)); - } else { - s.add(new Bitmap(buffer, offset + 4, 4, "Modifier type", INC_TYPES)); - } - break; - - case 78: // Disease - if (Profile.getEngine() == Profile.Engine.BG1 || Profile.getEngine() == Profile.Engine.PST) { - s.add(new DecNumber(buffer, offset, 4, "Amount per second")); - } else { - s.add(new DecNumber(buffer, offset, 4, "Amount")); - } - if (Profile.getEngine() == Profile.Engine.BG1 || Profile.getEngine() == Profile.Engine.PST) { - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - } else { - final String[] typesArray; - if (Profile.getEngine() == Profile.Engine.IWD) { - typesArray = new String[]{"1 damage per second", "Amount damage per round", - "Amount damage per second", "1 damage per amount seconds", - "Strength", "Dexterity", "Constitution", "Intelligence", - "Wisdom", "Charisma", "Slow target", "Mold touch"}; - } else if (Profile.getEngine() == Profile.Engine.IWD2) { - typesArray = new String[]{"1 damage per second", "Amount damage per round", - "Amount damage per second", "1 damage per amount seconds", - "Strength", "Dexterity", "Constitution", "Intelligence", - "Wisdom", "Charisma", "Slow target", "Mold touch", "", - "Contagion", "Cloud of pestilence", "Dolorous decay"}; - } else if (Profile.isEnhancedEdition()) { - typesArray = new String[]{"1 damage per second", "Amount damage per round", - "Amount damage per second", "1 damage per amount seconds", - "Strength", "Dexterity", "Constitution", "Intelligence", - "Wisdom", "Charisma", "Slow target", "Mold touch/Single", - "Mold touch/Decrement", "Contagion"}; - } else { - typesArray = new String[]{"1 damage per second", "Amount damage per round", - "Amount damage per second", "1 damage per amount seconds", - "Strength", "Dexterity", "Constitution", "Intelligence", - "Wisdom", "Charisma", "Slow target"}; - } - Bitmap bmp = new Bitmap(buffer, offset + 4, 4, "Disease type", typesArray); - s.add(bmp); - if (Profile.isEnhancedEdition() && parent != null && parent instanceof UpdateListener) { - bmp.addUpdateListener((UpdateListener)parent); - if (bmp.getValue() == 11 || bmp.getValue() == 12) { - restype = "SPL"; - } - } - } - break; - - case 400: // EEex: Set Temporary AI Script - if (!isEEex) { - break; - } - case 82: // Set AI script - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new IdsBitmap(buffer, offset + 4, 4, "Script level", "SCRLEV.IDS")); - restype = "BCS"; - break; - - case 83: // Immunity to projectile - { - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - if (Profile.getEngine() == Profile.Engine.BG2 || Profile.isEnhancedEdition()) { - IdsBitmap ids = new IdsBitmap(buffer, offset + 4, 4, "Projectile", "PROJECTL.IDS"); - ids.addIdsMapEntry(new IdsMapEntry(0L, "None")); - s.add(ids); - } else { - TreeMap idsmap; - if (Profile.getEngine() == Profile.Engine.IWD || Profile.getEngine() == Profile.Engine.IWD2) { - idsmap = PROJECTILES_IWD_MAP; - } else { - idsmap = new TreeMap<>(); - idsmap.put(0L, "None"); - idsmap.put(4L, "Arrow"); - idsmap.put(9L, "Axe"); - idsmap.put(14L, "Bolt"); - idsmap.put(19L, "Bullet"); - idsmap.put(26L, "Throwing Dagger"); - idsmap.put(34L, "Dart"); - if (Profile.getEngine() == Profile.Engine.BG1) { - idsmap.put(64L, "Gaze"); - } - } - s.add(new HashBitmap(buffer, offset + 4, 4, "Projectile", idsmap)); - } - break; - } - - case 84: // Magical fire resistance bonus - case 85: // Magical cold resistance bonus - if (Profile.getEngine() == Profile.Engine.IWD || Profile.getEngine() == Profile.Engine.IWD2) { - makeEffectParamsDefault(buffer, offset, s); - } else { - s.add(new DecNumber(buffer, offset, 4, "Value")); - s.add(new Bitmap(buffer, offset + 4, 4, "Modifier type", INC_TYPES)); - } - break; - - case 98: // Regeneration - { - s.add(new DecNumber(buffer, offset, 4, "Value")); - final String[] typesArray; - if (Profile.getEngine() == Profile.Engine.PST) { - typesArray = new String[]{"Regen all HP", "Regenerate amount percentage", - "Amount HP per second", "1 HP per amount seconds"}; - } else if (Profile.getEngine() == Profile.Engine.IWD || Profile.getEngine() == Profile.Engine.IWD2) { - typesArray = REGEN_TYPES_IWD; - } else { - typesArray = REGEN_TYPES; - } - Bitmap bmp = new Bitmap(buffer, offset + 4, 4, "Regeneration type", typesArray); - s.add(bmp); - if (parent != null && parent instanceof UpdateListener) { - bmp.addUpdateListener((UpdateListener)parent); - } - break; - } - - case 99: // Modify duration - { - s.add(new DecNumber(buffer, offset, 4, "Percentage")); - final String[] typesArray; - if (Profile.isEnhancedEdition()) { - typesArray = new String[]{"Wizard", "Priest", "Bard song"}; - } else { - typesArray = new String[]{"Wizard", "Priest"}; - } - s.add(new Bitmap(buffer, offset + 4, 4, "Spell class", typesArray)); - break; - } - - case 101: // Immunity to effect - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new Bitmap(buffer, offset + 4, 4, "Effect", getEffectNameArray())); - break; - - case 102: // Immunity to spell level - s.add(new DecNumber(buffer, offset, 4, "Spell level")); - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - break; - - case 103: // Change name - s.add(new StringRef(buffer, offset, "Name")); - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - break; - - case 107: // Change portrait - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new Bitmap(buffer, offset + 4, 4, "Which portrait?", new String[]{"Small", "Large"})); - restype = "BMP"; - break; - - case 108: // Reputation bonus - { - s.add(new DecNumber(buffer, offset, 4, "Value")); - if (Profile.isEnhancedEdition()) { - final String[] incType = {INC_TYPES[0], INC_TYPES[1], INC_TYPES[2], - "Increment (party)", "Reset (party)"}; - s.add(new Bitmap(buffer, offset + 4, 4, "Modifier type", incType)); - } else { - s.add(new Bitmap(buffer, offset + 4, 4, "Modifier type", INC_TYPES)); - } - break; - } - - case 111: // Create weapon - s.add(new DecNumber(buffer, offset, 4, "# to create")); - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - restype = "ITM"; - break; - - case 112: // Remove item - case 123: // Remove inventory item - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - restype = "ITM"; - break; - - case 113: // Equip weapon - case 114: // Dither - case 118: // Show creatures - case 121: // Visual animation effect - if (Profile.getEngine() == Profile.Engine.IWD) { - makeEffectParamsDefault(buffer, offset, s); - } else { - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - } - break; - - case 115: // Detect alignment - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new Bitmap(buffer, offset + 4, 4, "Alignment mask", - new String[]{"Evil", "Neutral", "Good"})); - break; - - case 119: // Mirror image - s.add(new DecNumber(buffer, offset, 4, "# images")); - if (Profile.getEngine() == Profile.Engine.IWD || Profile.getEngine() == Profile.Engine.IWD2) { - s.add(new Bitmap(buffer, offset + 4, 4, "Image type", new String[]{"Normal", "Reflected image"})); - } else { - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - } - break; - - case 120: // Immunity to weapons - s.add(new DecNumber(buffer, offset, 4, "Maximum enchantment")); - s.add(new Bitmap(buffer, offset + 4, 4, "Weapon type", - new String[]{"Enchanted", "Magical", "Non-magical", "Silver", - "Non-silver", "Non-silver, non-magical", "Two-handed", - "One-handed", "Cursed", "Non-cursed", "Cold iron", - "Non-cold-iron"})); - break; - - case 122: // Create inventory item - if (Profile.getEngine() == Profile.Engine.IWD2) { - s.add(new DecNumber(buffer, offset, 4, "Location")); - s.add(new Bitmap(buffer, offset + 4, 4, "Type", new String[]{"Group", "Slot"})); - } else { - s.add(new DecNumber(buffer, offset, 4, "# to create")); - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - } - restype = "ITM"; - break; - - case 124: // Teleport - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - if (Profile.getEngine() == Profile.Engine.IWD || Profile.getEngine() == Profile.Engine.IWD2 || - Profile.isEnhancedEdition()) { - s.add(new Bitmap(buffer, offset + 4, 4, "Behavior", - new String[]{"Normal", "Source to target", "Return to start", - "Exchange with target"})); - } else { - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - } - break; - - case 126: // Movement rate bonus - s.add(new DecNumber(buffer, offset, 4, "Value")); - if (Profile.isEnhancedEdition()) { - s.add(new HashBitmap(buffer, offset + 4, 4, "Modifier type", INC_TYPES_MAP, false)); - } else { - s.add(new Bitmap(buffer, offset + 4, 4, "Modifier type", INC_TYPES)); - } - break; - - case 127: // Summon monsters - if (Profile.getEngine() == Profile.Engine.IWD2) { - makeEffectParamsDefault(buffer, offset, s); - } else { - s.add(new DecNumber(buffer, offset, 4, "Total XP")); - s.add(new Bitmap(buffer, offset + 4, 4, "From 2DA file", - new String[]{"Monsum01 (ally)", "Monsum02 (ally)", "Monsum03 (ally)", - "Anisum01 (ally)", "Anisum02 (ally)", "Monsum01 (enemy)", - "Monsum02 (enemy)", "Monsum03 (enemy)", - "Anisum01 (enemy)", "Anisum02 (enemy)"})); - restype = "2DA"; - } - break; - - case 129: // Aid (non-cumulative) - s.add(new DecNumber(buffer, offset, 4, "Amount")); - s.add(new DecNumber(buffer, offset + 4, 4, "HP bonus")); - break; - - case 130: // Bless (non-cumulative) - case 132: // Draw upon holy might (non-cumulative) - case 133: // Luck (non-cumulative) - s.add(new DecNumber(buffer, offset, 4, "Amount")); - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - break; - - case 137: // Bad chant (non-cumulative) - if (Profile.getEngine() == Profile.Engine.IWD2) { - makeEffectParamsDefault(buffer, offset, s); - } else { - s.add(new DecNumber(buffer, offset, 4, "Amount")); - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - } - break; - - case 131: // Chant (non-cumulative) - if (Profile.getEngine() == Profile.Engine.IWD2) { - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new Bitmap(buffer, offset + 4, 4, "Prayer type", - new String[]{"Beneficial", "Detrimental"})); - } else { - s.add(new DecNumber(buffer, offset, 4, "Amount")); - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - } - break; - - case 135: // Polymorph - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - if (Profile.getEngine() != Profile.Engine.IWD2) { - s.add(new Bitmap(buffer, offset + 4, 4, "Polymorph type", - new String[]{"Change into", "Appearance only", "Appearance only", - "Appearance only"})); - } else { - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - } - restype = "CRE"; - break; - - case 138: // Set animation sequence - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - if (Profile.getEngine() == Profile.Engine.BG1 || Profile.getEngine() == Profile.Engine.IWD) { - s.add(new Bitmap(buffer, offset + 4, 4, "Sequence", - new String[]{"", "Lay down (short)", "Move hands (short)", "Move hands (long)", - "Move shoulder (short)", "Move shoulder (long)", "Lay down (long)", - "Breathe rapidly (short)", "Breath rapidly (long)"})); - } else { - String ids; - if (Profile.getEngine() == Profile.Engine.PST) { - ids = "ANIMSTAT.IDS"; - } else if (Profile.getEngine() == Profile.Engine.IWD2) { - ids = "SEQUENCE.IDS"; - } else { - ids = "SEQ.IDS"; - } - s.add(new IdsBitmap(buffer, offset + 4, 4, "Sequence", ids)); - } - break; - - case 139: // Display string - s.add(new StringRef(buffer, offset, "String")); - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - break; - - case 140: // Casting glow - { - final TreeMap castGlowMap = new TreeMap<>(); - if (Profile.isEnhancedEdition()) { - castGlowMap.put(0L, "Use projectile"); - } - castGlowMap.put(9L, "Necromancy"); - castGlowMap.put(10L, "Alteration"); - castGlowMap.put(11L, "Enchantment"); - castGlowMap.put(12L, "Abjuration"); - castGlowMap.put(13L, "Illusion"); - castGlowMap.put(14L, "Conjuration"); - castGlowMap.put(15L, "Invocation"); - castGlowMap.put(16L, "Divination"); - if (Profile.isEnhancedEdition()) { - s.add(new ProRef(buffer, offset, "Projectile", false)); - s.add(new DecNumber(buffer, offset + 2, 2, AbstractStruct.COMMON_UNUSED)); - } else { - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - } - s.add(new HashBitmap(buffer, offset + 4, 4, "Glow", castGlowMap)); - break; - } - - case 141: // Lighting effects / Visual spell hit - if (Profile.getEngine() == Profile.Engine.BG2 || Profile.isEnhancedEdition()) { - s.add(new Bitmap(buffer, offset, 4, "Target", new String[]{"Spell target", "Target point"})); - } else { - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - } - s.add(new Bitmap(buffer, offset + 4, 4, "Effect", LIGHTING)); - break; - - case 142: // Display portrait icon - case 169: // Prevent portrait icon - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new Bitmap(buffer, offset + 4, 4, "Icon", getIconDescArray())); - break; - - case 143: // Create item in slot - if (Profile.getEngine() == Profile.Engine.PST) { - s.add(new Bitmap(buffer, offset, 4, "Slot", - new String[]{"Hand", "Eyeball/Earring (left)", "Tattoo", "Bracelet", - "Ring (right)", "Tattoo (top left)", "Ring (left)", - "Earring (right)/Lens", "Armor", "Tattoo (bottomr right)", - "Temporary weapon", "Ammo 1", "Ammo 2", "Ammo 3", "Ammo 4", - "Ammo 5", "Ammo 6", "Quick item 1", "Quick item 2", "Quick item 3", - "Quick item 4", "Quick item 5", "Inventory 1", "Inventory 2", - "Inventory 3", "Inventory 4", "Inventory 5", "Inventory 6", - "Inventory 7", "Inventory 8", "Inventory 9", "Inventory 10", - "Inventory 11", "Inventory 12", "Inventory 13", "Inventory 14", - "Inventory 15", "Inventory 16", "Inventory 17", "Inventory 18", - "Inventory 19", "Inventory 20", "Magic weapon", "Weapon 1", - "Weapon 2", "Weapon 3", "Weapon 4"})); - } else { - s.add(new IdsBitmap(buffer, offset, 4, "Slot", "SLOTS.IDS", true, false, true)); - } - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - restype = "ITM"; - break; - - case 144: // Disable button - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - if (isTobEx || Profile.isEnhancedEdition()) { - int size = isTobEx ? 15 : 16; - String[] buttons = new String[size]; - System.arraycopy(BUTTONS, 0, buttons, 0, 14); - buttons[10] = "Bard song"; - buttons[14] = "Find traps"; - if (Profile.isEnhancedEdition()) { - buttons[15] = "Inventory screen"; - } - s.add(new Bitmap(buffer, offset + 4, 4, "Button", buttons)); - } else { - s.add(new Bitmap(buffer, offset + 4, 4, "Button", - Profile.getEngine() == Profile.Engine.IWD2 ? BUTTONS_IWD2 : BUTTONS)); - } - break; - - case 145: // Disable spellcasting - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - if (Profile.getEngine() == Profile.Engine.IWD2) { - s.add(new Bitmap(buffer, offset + 4, 4, "Spell class", - new String[]{"All spells", "Non-innate", "Arcane", "Divine", "Innate"})); - } else if (Profile.isEnhancedEdition()) { - s.add(new Bitmap(buffer, offset + 4, 4, "Spell class", - new String[]{"Wizard", "Priest", "Innate", "All, magical only"})); - } else { - s.add(new Bitmap(buffer, offset + 4, 4, "Spell class", - new String[]{"Wizard", "Priest", "Innate"})); - } - break; - - case 146: // Cast spell - case 148: // Cast spell at point - s.add(new DecNumber(buffer, offset, 4, "Cast at level")); - if (Profile.isEnhancedEdition()) { - s.add(new Bitmap(buffer, offset + 4, 4, "Mode", - new String[]{"Cast normally", "Cast instantly (ignore level)", - "Cast instantly (at level)"})); - } else { - s.add(new Bitmap(buffer, offset + 4, 4, "Cast instantly?", AbstractStruct.OPTION_NOYES)); - } - restype = "SPL"; - break; - - case 147: // Learn spell - if (isTobEx) { - s.add(new DecNumber(buffer, offset, 2, AbstractStruct.COMMON_UNUSED)); - s.add(new Flag(buffer, offset + 2, 2, "Behavior", new String[]{ - "Default", "No XP", null, "Always successful", null, "No XP if already learned", - "Exclude spell schools", "Exclude sorcerer", "Fail if max. spells learned" - })); - } else { - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - } - if (Profile.getEngine() == Profile.Engine.PST) { - s.add(new Bitmap(buffer, offset + 4, 4, "Spell type", - new String[]{"Wizard", "Priest", "Innate"})); - } else if (Profile.getEngine() == Profile.Engine.IWD2) { - s.add(new Bitmap(buffer, offset + 4, 4, "Spell type", - new String[]{"Arcane", "Divine", "Innate"})); - } else { - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - } - restype = "SPL"; - break; - - case 151: // Replace self - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - if (Profile.getEngine() == Profile.Engine.PST) { - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - } else { - s.add(new Bitmap(buffer, offset + 4, 4, "Replacement method", - new String[]{"Remove silently", "Remove via chunked death", - "Remove via normal death", "Don't remove"})); - } - restype = "CRE"; - break; - - case 152: // Play movie - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - restype = Profile.isEnhancedEdition() ? "WBM" : "MVE"; - break; - - case 153: // Sanctuary - case 154: // Entangle overlay - case 157: // Web effect - case 158: // Grease overlay - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - if (Profile.isEnhancedEdition()) { - s.add(new Bitmap(buffer, offset + 4, 4, "Mode", new String[]{"Default overlay", "Custom overlay"})); - restype = "VVC:BAM"; - } else { - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - } - break; - - case 155: // Minor globe overlay - case 156: // Protection from normal missiles overlay - if (Profile.getEngine() == Profile.Engine.IWD2) { - makeEffectParamsDefault(buffer, offset, s); - } else { - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - if (Profile.isEnhancedEdition()) { - s.add(new Bitmap(buffer, offset + 4, 4, "Mode", new String[]{"Default overlay", "Custom overlay"})); - restype = "VVC:BAM"; - } else { - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - } - } - break; - - - case 159: // Mirror image effect - s.add(new DecNumber(buffer, offset, 4, "# images")); - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - break; - - case 166: // Magic resistance bonus - s.add(new DecNumber(buffer, offset, 4, "Value")); - if (isTobEx) { - s.add(new Bitmap(buffer, offset + 4, 4, "Modifier type", new String[]{ - "Instantaneous", INC_TYPES[1], INC_TYPES[2], INC_TYPES[0]})); - } else { - s.add(new Bitmap(buffer, offset + 4, 4, "Modifier type", new String[]{"Increment", "Set"})); - } - break; - - case 170: // Play damage animation - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new Bitmap(buffer, offset + 4, 4, "Animation", - new String[]{"Blood (behind)", "Blood (front)", "Blood (left)", - "Blood (right)", "Fire 1", "Fire 2", "Fire 3", - "Electricity 1", "Electricity 2", "Electricity 3"})); - break; - - case 171: // Give innate ability - case 172: // Remove spell / Remove innate ability - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - restype = "SPL"; - break; - - case 173: // Poison resistance bonus - s.add(new DecNumber(buffer, offset, 4, "Value")); - if (Profile.getEngine() == Profile.Engine.IWD2) { - s.add(new Bitmap(buffer, offset + 4, 4, "Modifier type", new String[]{"Increment", "Set"})); - } else if (isTobEx) { - s.add(new Bitmap(buffer, offset + 4, 4, "Modifier type", new String[]{ - INC_TYPES[1], INC_TYPES[0], INC_TYPES[2], "Instantaneous"})); - } else { - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - } - break; - - case 174: // Play sound - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - restype = "WAV"; - break; - - case 176: // Movement rate bonus 2 / Movement rate penalty - if (Profile.getEngine() == Profile.Engine.PST) { - makeEffectParamsDefault(buffer, offset, s); - } else { - s.add(new DecNumber(buffer, offset, 4, "Value")); - if (Profile.isEnhancedEdition()) { - s.add(new HashBitmap(buffer, offset + 4, 4, "Modifier type", INC_TYPES_MAP, false)); - } else { - s.add(new Bitmap(buffer, offset + 4, 4, "Modifier type", INC_TYPES)); - } - } - break; - - case 177: // Use EFF file - if (Profile.getEngine() == Profile.Engine.PST) { - makeEffectParamsDefault(buffer, offset, s); - } else { - final IdsTargetType param2 = new IdsTargetType(buffer, offset + 4); - s.add(param2.createIdsValueFromType(buffer)); - s.add(param2); - restype = "EFF"; - } - break; - - case 178: // THAC0 vs. type bonus - case 179: // Damage vs. type bonus - if (Profile.getEngine() == Profile.Engine.PST) { - makeEffectParamsDefault(buffer, offset, s); - } else { - final IdsTargetType param2 = new IdsTargetType(buffer, offset + 4); - s.add(param2.createIdsValueFromType(buffer)); - s.add(param2); - } - break; - - case 180: // Disallow item - if (Profile.getEngine() == Profile.Engine.PST) { - makeEffectParamsDefault(buffer, offset, s); - } else { - s.add(new StringRef(buffer, offset, "String")); - if (Profile.isEnhancedEdition()) { - s.add(new Bitmap(buffer, offset + 4, 4, "Restriction", new String[]{"Equip", "Use"})); - } else { - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - } - restype = "ITM"; - } - break; - - case 181: // Disallow itemtype - if (Profile.isEnhancedEdition()) { - s.add(new Bitmap(buffer, offset, 4, "Item type", ItmResource.CATEGORIES_ARRAY)); - s.add(new Bitmap(buffer, offset + 4, 4, "Restriction", new String[]{"Equip", "Use"})); - } else { - makeEffectParamsDefault(buffer, offset, s); - } - break; - - case 182: // Use EFF file (do not use) - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - break; - - case 183: // Use EFF file on equip type - if (Profile.getEngine() == Profile.Engine.PST) { - makeEffectParamsDefault(buffer, offset, s); - } else { - if (Profile.getEngine() == Profile.Engine.IWD2) { - s.add(new StringRef(buffer, offset, "String")); - } else { - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - } - s.add(new Bitmap(buffer, offset + 4, 4, "Item type", ItmResource.CATEGORIES_ARRAY)); - restype = "EFF"; - } - break; - - case 184: // No collision detection - if (Profile.getEngine() == Profile.Engine.PST) { - makeEffectParamsDefault(buffer, offset, s); - } else { - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new Bitmap(buffer, offset + 4, 4, "Pass walls?", AbstractStruct.OPTION_NOYES)); - } - break; - - case 185: // Hold creature 2 - if (Profile.getEngine() == Profile.Engine.PST) { - makeEffectParamsDefault(buffer, offset, s); - } else if (Profile.getEngine() == Profile.Engine.IWD || Profile.getEngine() == Profile.Engine.IWD2) { - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - } else { - final IdsTargetType param2 = new IdsTargetType(buffer, offset + 4); - s.add(param2.createIdsValueFromType(buffer)); - s.add(param2); - } - break; - - case 187: // Set local variable / Play BAM file (single/dual) - if (Profile.getEngine() == Profile.Engine.PST) { - s.add(new ColorPicker(buffer, offset, "Color", ColorPicker.Format.RGBX)); - s.add(new Flag(buffer, offset + 4, 4, "Method", - new String[]{"Default", "Repeat animation", "Remove stickiness"})); - restype = "BAM"; - } else { - s.add(new DecNumber(buffer, offset, 4, "Value")); - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - } - break; - - } - - return restype; - } - - private String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List s, - int effectType, boolean isV1) - { - String restype = null; - switch (effectType) { - case 186: // DestroySelf() on target - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - break; - - case 188: // Increase spells cast per round - s.add(new DecNumber(buffer, offset, 4, "Spells per round")); - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - break; - - case 189: // Increase casting speed factor - case 190: // Increase attack speed factor - s.add(new DecNumber(buffer, offset, 4, "Amount")); - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - break; - - case 191: // Casting level bonus - s.add(new DecNumber(buffer, offset, 4, "Amount")); - s.add(new Bitmap(buffer, offset + 4, 4, "Spell class", new String[]{"Wizard", "Priest"})); - break; - - default: - makeEffectParamsDefault(buffer, offset, s); - break; - } - - return restype; - } - - private String makeEffectParamsBG2(Datatype parent, ByteBuffer buffer, int offset, List s, - int effectType, boolean isV1) - { - String restype = null; - boolean isTobEx = Profile.getProperty(Profile.Key.IS_GAME_TOBEX); - boolean isEEex = Profile.getProperty(Profile.Key.IS_GAME_EEEX); - - switch (effectType) { - case 61: // Creature RGB color fade - if (Profile.isEnhancedEdition()) { - s.add(new ColorPicker(buffer, offset, "Color")); - s.add(new DecNumber(buffer, offset + 4, 2, AbstractStruct.COMMON_UNUSED)); - s.add(new DecNumber(buffer, offset + 6, 2, "Fade speed")); - } else { - makeEffectParamsDefault(buffer, offset, s); - } - break; - - case 186: // Move creature - s.add(new DecNumber(buffer, offset, 4, "Delay")); - if (Profile.isEnhancedEdition() && ResourceFactory.resourceExists("DIR.IDS")) { - s.add(new IdsBitmap(buffer, offset + 4, 4, "Orientation", "DIR.IDS")); - } else { - s.add(new Bitmap(buffer, offset + 4, 4, "Orientation", AbstractStruct.OPTION_ORIENTATION)); - } - restype = "ARE"; - break; - - case 188: // Increase spells cast per round - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new Bitmap(buffer, offset + 4, 4, "Cleanse aura?", AbstractStruct.OPTION_NOYES)); - break; - - case 189: // Increase casting speed factor - s.add(new DecNumber(buffer, offset, 4, "Amount")); - s.add(new Bitmap(buffer, offset + 4, 4, "Modifier type", - new String[]{"Increment", "Set", "Set if lower"})); - break; - - case 190: // Increase attack speed factor - s.add(new DecNumber(buffer, offset, 4, "Amount")); - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - break; - - case 191: // Casting level bonus - s.add(new DecNumber(buffer, offset, 4, "Amount")); - s.add(new Bitmap(buffer, offset + 4, 4, "Spell class", new String[]{"Wizard", "Priest"})); - break; - - case 192: // Find familiar - case 196: // Disable familiar - case 209: // Power word, kill - case 210: // Power word, stun - case 211: // Imprisonment - case 212: // Freedom - case 217: // Power word, sleep - case 224: // Restoration - case 225: // Detect magic - case 231: // Time stop - case 242: // Cure confusion - case 268: // Clear fog of war - case 271: // Disable creature - case 274: // Phase - case 287: // Remove feet circle - case 304: // Mass raise dead - case 311: // Wish - case 316: // Rest - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - break; - - case 193: // Invisibility detection - case 194: // Ignore dialogue pause - case 245: // Check for berserk - case 246: // Berserk effect - case 247: // Attack nearest creature - case 270: // Unpause target - case 291: // Disable visual effects - case 292: // Immunity to backstab - case 293: // Set persistent AI - case 295: // Disable permanent death - case 297: // Immunity to turn undead - case 302: // Can use any item - case 308: // Immunity to tracking - case 310: // Immunity to time stop - case 312: // Immunity to sequester - case 315: // Remove animation - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new DecNumber(buffer, offset + 4, 4, "Stat value")); - break; - - case 195: // Drain CON and HP on death - case 208: // Minimum HP - s.add(new DecNumber(buffer, offset, 4, "HP amount")); - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - break; - - case 197: // Physical mirror - { - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - IdsBitmap ids = new IdsBitmap(buffer, offset + 4, 4, "Projectile", "PROJECTL.IDS"); - ids.addIdsMapEntry(new IdsMapEntry(0L, "None")); - s.add(ids); - break; - } - - case 198: // Reflect specified effect - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new Bitmap(buffer, offset + 4, 4, "Effect", getEffectNameArray())); - break; - - case 199: // Reflect spell level - s.add(new DecNumber(buffer, offset, 4, "Spell level")); - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - break; - - case 200: // Spell turning - case 201: // Spell deflection - s.add(new DecNumber(buffer, offset, 4, "# levels")); - s.add(new DecNumber(buffer, offset + 4, 4, "Spell level")); - if (Profile.isEnhancedEdition()) { restype = "SPL"; } - break; - - case 202: // Reflect spell school - case 204: // Protection from spell school - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new PriTypeBitmap(buffer, offset + 4, 4, "Spell school")); - break; - - case 203: // Reflect spell type - case 205: // Protection from spell type - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new SecTypeBitmap(buffer, offset + 4, 4, "Spell type")); - break; - - case 206: // Protection from spell - s.add(new StringRef(buffer, offset, "String")); - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - restype = "SPL"; - break; - - case 207: // Reflect specified spell - case 251: // Change bard song - case 252: // Set trap - case 256: // Spell sequencer - case 258: // Activate spell sequencer - case 260: // Activate spell sequencer at point - case 266: // Remove protection from spell - case 313: // High-level ability - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - if (effectType == 258 || effectType == 260) { - restype = "ITM:SPL"; - } else { - restype = "SPL"; - } - break; - - case 213: // Maze - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new Bitmap(buffer, offset + 4, 4, "Mode", - new String[]{"Use INTMOD.2DA", "Use duration"})); - break; - - case 214: // Select spell - { - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - String[] list; - if (Profile.isEnhancedEdition()) { - list = new String[]{"From 2DA", "Known spells", - "Known spells with unset spell flags bit 15 (Ignore wild surge)"}; - } else { - list = new String[]{"From 2DA", "Known spells"}; - } - s.add(new Bitmap(buffer, offset + 4, 4, "Show", list)); - restype = "2DA"; - break; - } - - case 215: // Play visual effect - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new Bitmap(buffer, offset + 4, 4, "Play where?", - new String[]{"Over target (unattached)", "Over target (attached)", - "At target point"})); - restype = "VEF:VVC:BAM"; - break; - - case 216: // Level drain - s.add(new DecNumber(buffer, offset, 4, "# levels")); - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - break; - - case 218: // Stoneskin effect - s.add(new DecNumber(buffer, offset, 4, "# skins")); - if (Profile.isEnhancedEdition()) { - s.add(new Bitmap(buffer, offset + 4, 4, "Use dice?", AbstractStruct.OPTION_NOYES)); - } else { - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - } - if (isEEex) { - restype = "SPL"; - } - break; - - case 219: // Attack and Saving Throw roll penalty - { - final String[] ids; - if (Profile.isEnhancedEdition()) { - ids = new String[]{"", "", "EA.IDS", "GENERAL.IDS", "RACE.IDS", "CLASS.IDS", "", "GENDER.IDS", - Profile.getProperty(Profile.Key.GET_IDS_ALIGNMENT), "KIT.IDS"}; - } else { - ids = new String[]{"", "", "EA.IDS", "GENERAL.IDS", "RACE.IDS", "CLASS.IDS", "", "GENDER.IDS", - Profile.getProperty(Profile.Key.GET_IDS_ALIGNMENT)}; - } - final IdsTargetType param2 = new IdsTargetType(buffer, offset + 4, IdsTargetType.DEFAULT_NAME_TYPE, ids); - s.add(param2.createIdsValueFromType(buffer)); - s.add(param2); - break; - } - - case 220: // Remove spell school protections - case 229: // Remove protection by school - s.add(new DecNumber(buffer, offset, 4, "Maximum level")); - s.add(new PriTypeBitmap(buffer, offset + 4, 4, "Spell school")); - break; - - case 221: // Remove spell type protections - case 230: // Remove protection by type - s.add(new DecNumber(buffer, offset, 4, "Maximum level")); - s.add(new SecTypeBitmap(buffer, offset + 4, 4, "Spell type")); - break; - - case 222: // Teleport field - s.add(new DecNumber(buffer, offset, 4, "Maximum range")); - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - break; - - case 223: // Spell school deflection - case 227: // Spell school turning - s.add(new DecNumber(buffer, offset, 4, "# levels")); - s.add(new PriTypeBitmap(buffer, offset + 4, 4, "Spell school")); - if (Profile.isEnhancedEdition()) { restype = "SPL"; } - break; - - case 226: // Spell type deflection - case 228: // Spell type turning - s.add(new DecNumber(buffer, offset, 4, "# levels")); - s.add(new SecTypeBitmap(buffer, offset + 4, 4, "Spell type")); - if (Profile.isEnhancedEdition()) { restype = "SPL"; } - break; - - case 232: // Cast spell on condition - { - s.add(new Bitmap(buffer, offset, 4, "Target", new String[]{"Myself", "LastHitter", "[EVILCUTOFF]", "[ANYONE]"})); - List conditionsList = new ArrayList<>(Arrays.asList( - "HitBy([ANYONE]) / instant", - "See([EVILCUTOFF]) / per round", - "HPPercentLT(Myself,50) / per round", - "HPPercentLT(Myself,25) / per round", - "HPPercentLT(Myself,10) / per round", - "StateCheck(Myself,STATE_HELPLESS) / per round", - "StateCheck(Myself,STATE_POISONED) / per round", - "AttackedBy([ANYONE]) / instant", - "PersonalSpaceDistance([ANYONE],4) / per round", - "PersonalSpaceDistance([ANYONE],10) / per round", - "-Unknown- / per round", - "TookDamage() / instant")); - if (Profile.isEnhancedEdition()) { - conditionsList.set(10, "Delay('Special') / per round"); - conditionsList.addAll(Arrays.asList( - "Killed([ANYONE]) / instant", - "TimeOfDay('Special') / per round", - "PersonalSpaceDistance([ANYONE],'Special') / per round", - "StateCheck(Myself,'Special') / per round", - "Die() / instant", - "Died([ANYONE]) / instant", - "TurnedBy([ANYONE]) / instant", - "HPLT(Myself,'Special') / per round", - "HPPercentLT(Myself,'Special') / per round", - "CheckSpellState(Myself,'Special') / per round")); - } - final String[] conditions = conditionsList.toArray(new String[conditionsList.size()]); - if (Profile.isEnhancedEdition()) { - Bitmap item = new Bitmap(buffer, offset + 4, 4, "Condition", conditions); - s.add(item); - if (parent != null && parent instanceof UpdateListener) { - item.addUpdateListener((UpdateListener)parent); - } - } else if (isTobEx) { - s.add(new Bitmap(buffer, offset + 4, 2, "Condition", conditions)); - s.add(new DecNumber(buffer, offset + 6, 2, "Trigger check period")); - } else { - s.add(new Bitmap(buffer, offset + 4, 4, "Condition", conditions)); - } - restype = "SPL"; - break; - } - - case 233: // Modify proficiencies - { - int mode = buffer.getShort(offset + 6); - s.add(new MultiNumber(buffer, offset, 4, "# stars", 3, 2, new String[]{"Active class", "Original class"}, - (mode == 1) && Profile.isEnhancedEdition())); - if (isTobEx || Profile.isEnhancedEdition()) { - final String idsFile = (Profile.getGame() == Profile.Game.PSTEE) ? "WPROF.IDS" : "STATS.IDS"; - s.add(new IdsBitmap(buffer, offset + 4, 2, "Proficiency", idsFile)); - Bitmap param2b = new Bitmap(buffer, offset + 6, 2, "Behavior", new String[]{"Set if higher", "Increment"}); - if (Profile.isEnhancedEdition()) { - param2b.addUpdateListener((UpdateListener)parent); - } - s.add(param2b); - } else { - s.add(new IdsBitmap(buffer, offset + 4, 4, "Proficiency", "STATS.IDS")); - } - break; - } - - case 234: // Create contingency - s.add(new DecNumber(buffer, offset, 4, "Maximum spell level")); - s.add(new DecNumber(buffer, offset + 4, 2, "# spells")); - s.add(new Bitmap(buffer, offset + 6, 2, "Trigger type", - new String[]{"Chain contingency", "Contingency", "Spell sequencer"})); - break; - - case 235: // Wing buffet - s.add(new DecNumber(buffer, offset, 4, "Strength")); - s.add(new Bitmap(buffer, offset + 4, 4, "Direction", - new String[]{"", "Away from target point", "Away from source", - "Towards target point", "Towards source"})); - break; - - case 236: // Project image - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new Bitmap(buffer, offset + 4, 4, "Image type", - new String[]{"Talkative, uncontrollable", "Mislead", "Project image", "Simulacrum"})); - break; - - case 237: // Set image type - { - final TreeMap map = new TreeMap<>(); - map.put(0L, "Player1"); - map.put(1L, "Player2"); - map.put(2L, "Player3"); - map.put(3L, "Player4"); - map.put(4L, "Player5"); - map.put(5L, "Player6"); - map.put(0xffffffffL, "Not party member"); - s.add(new HashBitmap(buffer, offset, 4, "Puppet master", map)); - s.add(new Bitmap(buffer, offset + 4, 4, "Puppet type", - new String[]{"Talkative, uncontrollable", "Mislead", "Project image", "Simulacrum"})); - break; - } - - case 238: // Disintegrate - { - final IdsTargetType param2 = new IdsTargetType(buffer, offset + 4); - s.add(param2.createIdsValueFromType(buffer)); - s.add(param2); - break; - } - - case 239: // Farsight - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new Bitmap(buffer, offset + 4, 4, "Can view unexplored?", AbstractStruct.OPTION_NOYES)); - break; - - case 240: // Remove portrait icon - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new Bitmap(buffer, offset + 4, 4, "Icon", getIconDescArray())); - break; - - case 241: // Control creature - { - final TreeMap map = new TreeMap<>(); - map.put(0L, "Charmed (neutral)"); - map.put(1L, "Charmed (hostile)"); - map.put(2L, "Dire charmed (neutral)"); - map.put(3L, "Dire charmed (hostile)"); - map.put(4L, "Controlled"); - map.put(5L, "Hostile"); - map.put(1000L, "Charmed (neutral, no text)"); - map.put(1001L, "Charmed (hostile, no text)"); - map.put(1002L, "Dire charmed (neutral, no text)"); - map.put(1003L, "Dire charmed (hostile, no text)"); - map.put(1004L, "Controlled (no text)"); - map.put(1005L, "Hostile (no text)"); - s.add(new IdsBitmap(buffer, offset, 4, "Creature type", "GENERAL.IDS")); - s.add(new HashBitmap(buffer, offset + 4, 4, "Charm type", map)); - break; - } - - case 243: // Drain item charges - if (Profile.getGame() == Profile.Game.BG2SoA) { - s.add(new Bitmap(buffer, offset, 4, "Include weapons?", AbstractStruct.OPTION_NOYES)); - } else { - s.add(new DecNumber(buffer, offset, 4, "# to drain")); - restype = "ITM"; - } - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - break; - - case 244: // Drain wizard spells - s.add(new DecNumber(buffer, offset, 4, "# spells")); - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - break; - - case 248: // Melee hit effect - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - if (Profile.isEnhancedEdition()) { - TreeMap map = new TreeMap<>(); - map.put(0L, "Default"); - map.put(4L, "Fists only"); - s.add(new HashBitmap(buffer, offset + 4, 4, "Type", map, false)); - } else { - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - } - restype = "EFF"; - break; - - case 249: // Ranged hit effect - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - restype = "EFF"; - break; - - case 250: // Maximum damage each hit - s.add(new DecNumber(buffer, offset, 4, "Damage value")); - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - break; - - case 253: // Set automap note - s.add(new StringRef(buffer, offset, "String")); - if (Profile.isEnhancedEdition() && ResourceFactory.resourceExists("MAPNOTES.IDS")) { - s.add(new IdsBitmap(buffer, offset + 4, 4, "Color", "MAPNOTES.IDS", false)); - } else if (Profile.getEngine() == Profile.Engine.BG2) { - s.add(new Bitmap(buffer, offset + 4, 4, "Color", AutomapNote.FLAGS_ARRAY)); - } else { - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - } - break; - - case 254: // Remove automap note - case 267: // Disable display string - s.add(new StringRef(buffer, offset, "String")); - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - break; - - case 255: // Create item (days) - s.add(new DecNumber(buffer, offset, 4, "# items in stack")); - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - restype = "ITM"; - break; - - case 257: // Create spell sequencer - s.add(new DecNumber(buffer, offset, 4, "Maximum level")); - s.add(new DecNumber(buffer, offset + 4, 4, "# spells")); - break; - - case 259: // Spell trap - s.add(new DecNumber(buffer, offset, 4, "# spells")); - s.add(new DecNumber(buffer, offset + 4, 4, "Spell level")); - if (Profile.isEnhancedEdition()) { restype = "SPL"; } - break; - - case 261: // Restore lost spells - s.add(new DecNumber(buffer, offset, 4, "Spell level")); - s.add(new Bitmap(buffer, offset + 4, 4, "Spell class", new String[]{"Wizard", "Priest"})); - break; - - case 262: // Visual range bonus - s.add(new DecNumber(buffer, offset, 4, "Value")); - s.add(new Bitmap(buffer, offset + 4, 4, "Modifier type", new String[]{"Increment", "Set"})); - break; - - case 263: // Backstab bonus - case 275: // Hide in shadows bonus - case 276: // Detect illusion bonus - case 277: // Set traps bonus - case 278: // THAC0 bonus - case 281: // Wild surge bonus - case 284: // Melee THAC0 bonus - case 285: // Melee weapon damage bonus - case 286: // Missile weapon damage bonus - case 288: // Fist THAC0 bonus - case 289: // Fist damage bonus - case 305: // Off-hand THAC0 bonus - case 306: // Main hand THAC0 bonus - s.add(new DecNumber(buffer, offset, 4, "Value")); - s.add(new Bitmap(buffer, offset + 4, 4, "Modifier type", INC_TYPES)); - break; - - case 264: // Drop item - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new Bitmap(buffer, offset + 4, 4, "Only quick weapons?", AbstractStruct.OPTION_NOYES)); - break; - - case 265: // Modify global variable - s.add(new DecNumber(buffer, offset, 4, "Value")); - s.add(new Bitmap(buffer, offset + 4, 4, "Modifier type", new String[]{"Set", "Increment"})); - restype = EFFECT_STRING; - break; - - case 269: // Shake screen - s.add(new DecNumber(buffer, offset, 4, "Strength")); - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - break; - - case 272: // Use EFF file on condition - s.add(new DecNumber(buffer, offset, 4, "Value")); - s.add(new Bitmap(buffer, offset + 4, 4, "Condition", - new String[]{"Once per second", "", "Value per second", - "Once per value seconds", "Parameter3 per value seconds"})); - restype = "EFF"; - break; - - case 273: // Zone of sweet air - { - if (isTobEx) { - s.add(new Bitmap(buffer, offset, 4, "Mode", new String[]{ "Remove from CLEARAIR.2DA", - "Remove from resource"})); - } else { - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - } - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - if (isTobEx || Profile.isEnhancedEdition()) { - restype = "2DA"; - } - break; - } - - case 279: // Enable button - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - if (isTobEx || Profile.isEnhancedEdition()) { - int size = isTobEx ? 15 : 16; - String[] buttons = new String[size]; - System.arraycopy(BUTTONS, 0, buttons, 0, 14); - buttons[10] = "Bard song"; - buttons[14] = "Find traps"; - if (Profile.isEnhancedEdition()) { - buttons[15] = "Inventory screen"; - } - s.add(new Bitmap(buffer, offset + 4, 4, "Button", buttons)); - } else { - s.add(new Bitmap(buffer, offset + 4, 4, "Button", BUTTONS)); - } - break; - - case 280: // Wild magic - if (isEEex) { - s.add(new DecNumber(buffer, offset, 4, "EEex: Surge roll")); - } - else { - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - } - s.add(new Bitmap(buffer, offset + 4, 4, "Affect", - new String[]{"", "Next spell only", "Use duration"})); - break; - - case 282: // Modify script state - { - final String[] list = new String[]{ - "Scripting State 1", "Scripting State 2", "Scripting State 3", "Scripting State 4", "Scripting State 5", - "Scripting State 6", "Scripting State 7", "Scripting State 8", "Scripting State 9", - "Scripting State 10", "Melee THAC0 Bonus", "Melee Damage Bonus", "Missile Damage Bonus", - "Disable Circle", "Fist THAC0 Bonus", "Fist Damage Bonus", "Class String Override Mixed", - "Class String Override Lower", "Prevent Spell Protection Effects", "Immunity to Backstab", - "Lockpicking Bonus", "Move Silently Bonus", "Find Traps Bonus", "Pickpocket Bonus", - "Hide in Shadows Bonus", "Detect Illusions Bonus", "Set Traps Bonus", "Prevent AI Slowdown", - "Existance Delay Override", "Animation-only Haste", "No Permanent Death", "Immune to Turn Undead", - "Chaos Shield", "NPC Bump", "Use Any Item", "Assassinate", "Sex Changed", "Spell Failure Innate", - "Immune to Tracking", "Dead Magic", "Immune to Timestop", "Immune to Sequester", "Stoneskins Golem", - "Level Drain", "Do Not Draw"}; - if (Profile.isEnhancedEdition()) { - list[0] += " / Wing Buffet"; - list[1] += " / Death Ward"; - list[2] += " / Level Drain Immunity"; - list[3] += " / Offensive Modifier"; - list[4] += " / Defensive Modifier"; - list[5] += " / Defensive Modifier"; - list[6] += " / Wizard Spell Immunity"; - list[7] += " / Wizard Protection from Energy"; - list[8] += " / Wizard Spell Trap"; - list[9] += " / Wizard Improved Alacrity"; - } - for (int i = 10; i < list.length; i++) { - // only first 10 scripting states are officially supported by this opcode - list[i] += " [undocumented]"; - } - s.add(new DecNumber(buffer, offset, 4, "Value")); - s.add(new Bitmap(buffer, offset + 4, 4, "State", list)); - break; - } - - case 283: // Use EFF file as curse - { - final IdsTargetType param2 = new IdsTargetType(buffer, offset + 4); - s.add(param2.createIdsValueFromType(buffer)); - s.add(param2); - restype = "EFF"; - break; - } - - case 290: // Change title - s.add(new StringRef(buffer, offset, "Title")); - s.add(new Bitmap(buffer, offset + 4, 4, "Change where?", - new String[]{"Records screen", "Class name"})); - break; - - case 294: // Set existence delay - s.add(new DecNumber(buffer, offset, 4, "Stat value")); - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - break; - - case 296: // Immunity to specific animation - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - restype = "VEF:VVC:BAM"; - break; - - case 298: // Pocket plane - if (isTobEx) { - s.add(new Bitmap(buffer, offset, 4, "Store party location", new String[]{ - "Use pocket plane field", "Use party location field", "Do not store" - })); - s.add(new Bitmap(buffer, offset + 4, 4, "Use custom script?", AbstractStruct.OPTION_NOYES)); - restype = "BCS"; - } else { - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new DecNumber(buffer, offset + 4, 4, "Stat value")); - } - break; - - case 299: // Chaos shield effect - s.add(new DecNumber(buffer, offset, 4, "Value")); - s.add(new Bitmap(buffer, offset + 4, 4, "Portrait", - new String[]{"Chaos Shield", "Improved Chaos Shield"})); - break; - - case 300: // Modify collision behavior - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new Flag(buffer, offset + 4, 4, "Behavior", - new String[]{"None", "NPC bumps PCs", "NPC can't be bumped"})); - break; - - case 301: // Critical hit bonus - s.add(new DecNumber(buffer, offset, 4, "Value")); - s.add(new Bitmap(buffer, offset + 4, 4, "Condition", - new String[]{"Always", "By this weapon only"})); - break; - - case 303: // Backstab every hit - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - if (isTobEx) { - TreeMap idsmap = new TreeMap<>(); - idsmap.put(0L, "Normal conditions"); - idsmap.put(1L, "Ignore visual state and position"); - idsmap.put(2L, "Ignore visual state only"); - idsmap.put(4L, "Ignore position only"); - s.add(new HashBitmap(buffer, offset + 4, 4, "Type", idsmap)); - } else { - s.add(new DecNumber(buffer, offset + 4, 4, "Stat value")); - } - break; - - case 307: // Tracking - s.add(new DecNumber(buffer, offset, 4, "Range")); - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - break; - - case 309: // Modify local variable - s.add(new DecNumber(buffer, offset, 4, "Value")); - s.add(new Bitmap(buffer, offset + 4, 4, "Modifier type", new String[]{"Set", "Increment"})); - restype = EFFECT_STRING; - break; - - case 314: // Stoneskin protection - s.add(new DecNumber(buffer, offset, 4, "# skins")); - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - break; - - case 317: // Haste 2 - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new Bitmap(buffer, offset + 4, 4, "Haste type", - new String[]{"Normal", "Improved", "Movement rate only"})); - break; - - case 318: // Protection from Spell, Ex: Set stat - if (Profile.isEnhancedEdition()) { - SpellProtType param2 = new SpellProtType(buffer, offset + 4, 4); - s.add(param2.createCreatureValueFromType(buffer, offset)); - s.add(param2); - restype = "EFF:ITM:SPL"; - } else if (isTobEx) { - s.add(new DecNumber(buffer, offset, 4, "Value")); - s.add(new IdsBitmap(buffer, offset + 4, 2, "Stat opcode", "STATS.IDS")); - s.add(new Bitmap(buffer, offset + 6, 2, "Modifier type", new String[]{ - "Increment", "Set", "Set % of", "Multiply", "Divide", "Modulus", - "Logical AND", "Logical OR", "Bitwise AND", "Bitwise OR", "Invert"})); - } else { - makeEffectParamsDefault(buffer, offset, s); - } - break; - - case 319: // Restrict item (BGEE) - { - if (Profile.isEnhancedEdition()) { - if (isEEex) { - Bitmap power = new Bitmap(buffer, offset - 1, 1, "EEex: Mode", - new String[]{"Not usable by", "Usable by", - "EEex: Usable by (splprot)", "EEex: Not usable by (splprot)"}); - power.addUpdateListener((UpdateListener)parent); - s.set(1, power); - } - byte power = buffer.get(offset - 1); - if (isEEex && (power == 2 || power == 3)) { - SpellProtType param2 = new SpellProtType(buffer, offset + 4, 4); - param2.setName("EEex: " + param2.getName()); - StructEntry param1 = param2.createCreatureValueFromType(buffer); - param1.setName("EEex: " + param1.getName()); - s.add(param1); - s.add(param2); - } - else { - IdsTargetType param2 = new IdsTargetType(buffer, offset + 4, 4, - IdsTargetType.DEFAULT_NAME_TYPE, -1, - IdsTargetType.DEFAULT_SECOND_IDS, true); - param2.addUpdateListener((UpdateListener)parent); - s.add(param2.createIdsValueFromType(buffer)); - s.add(param2); - } - } else { - makeEffectParamsDefault(buffer, offset, s); - } - break; - } - - case 320: // Change weather (BGEE) - if (Profile.isEnhancedEdition()) { - s.add(new Bitmap(buffer, offset, 4, "Type", - new String[]{"Normal", "Rain", "Snow", "Nothing"})); - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - } else { - makeEffectParamsDefault(buffer, offset, s); - } - break; - - case 321: // Remove effects by resource (BGEE) - if (Profile.isEnhancedEdition()) { - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new Bitmap(buffer, offset + 4, 4, "Type", - new String[]{"Default", "Equipped effects list only", "Timed effects list only"})); - restype = "ITM:SPL"; - } else { - makeEffectParamsDefault(buffer, offset, s); - } - break; - - case 322: // AoE evade check (deprecated) - if (Profile.isEnhancedEdition()) { - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - } else { - makeEffectParamsDefault(buffer, offset, s); - } - break; - - case 323: // Turn undead level - if (Profile.isEnhancedEdition()) { - s.add(new DecNumber(buffer, offset, 4, "Value")); - s.add(new Bitmap(buffer, offset + 4, 4, "Modifier type", INC_TYPES)); - } else { - makeEffectParamsDefault(buffer, offset, s); - } - break; - - case 324: // Immunity to spell and message - case 326: // Apply effects list - if (Profile.isEnhancedEdition()) { - SpellProtType param2 = new SpellProtType(buffer, offset + 4, 4); - s.add(param2.createCreatureValueFromType(buffer, offset)); - s.add(param2); - restype = (effectType == 324) ? "EFF:ITM:SPL" : "SPL"; - } else { - makeEffectParamsDefault(buffer, offset, s); - } - break; - - case 325: // All saving throws bonus - if (Profile.isEnhancedEdition()) { - s.add(new DecNumber(buffer, offset, 4, "Value")); - s.add(new Bitmap(buffer, offset + 4, 4, "Modifier type", new String[]{ - INC_TYPES[0], INC_TYPES[1], INC_TYPES[2], "Increment instantaneously"})); - } else { - makeEffectParamsDefault(buffer, offset, s); - } - break; - - case 327: // Show visual effect - if (Profile.isEnhancedEdition()) { - s.add(new Bitmap(buffer, offset, 4, "Target", new String[]{"Spell target", "Target point"})); - s.add(new Bitmap(buffer, offset + 4, 4, "Effect", VISUALS)); - } else { - makeEffectParamsDefault(buffer, offset, s); - } - break; - - case 328: // Set spell state - if (Profile.isEnhancedEdition()) { - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - int ofsSpecial = offset + (isV1 ? 0x28 : 0x2c); - int special = buffer.getInt(ofsSpecial); - if (special == 1) { - s.add(new IdsBitmap(buffer, offset + 4, 4, "State", "SPLSTATE.IDS")); - } else { - s.add(new Bitmap(buffer, offset + 4, 4, "State", SPELL_STATES)); - } - } else { - makeEffectParamsDefault(buffer, offset, s); - } - break; - - case 329: // Slow poison - if (Profile.isEnhancedEdition()) { - s.add(new DecNumber(buffer, offset, 4, "Amount")); - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - } else { - makeEffectParamsDefault(buffer, offset, s); - } - break; - - case 330: // Float text - if (Profile.isEnhancedEdition()) { - s.add(new StringRef(buffer, offset, "String")); - s.add(new Bitmap(buffer, offset + 4, 4, "Display type", - new String[]{"String reference", "Cynicism"})); - } else { - makeEffectParamsDefault(buffer, offset, s); - } - break; - - case 331: // Summon creatures 2 - if (Profile.isEnhancedEdition()) { - s.add(new DecNumber(buffer, offset, 4, "# creatures")); - s.add(new Summon2daBitmap(buffer, offset + 4, 4, "2DA reference")); - restype = "2DA"; - } else { - makeEffectParamsDefault(buffer, offset, s); - } - break; - - case 332: // Attack damage type bonus - if (Profile.isEnhancedEdition()) { - s.add(new DecNumber(buffer, offset, 4, "Value")); - s.add(new Bitmap(buffer, offset + 4, 4, "Damage type", DAMAGE_TYPES)); - } else { - makeEffectParamsDefault(buffer, offset, s); - } - break; - - case 333: // Static charge - if (Profile.isEnhancedEdition()) { - s.add(new DecNumber(buffer, offset, 4, "# hits")); - s.add(new DecNumber(buffer, offset + 4, 4, "Cast at level")); - restype = "SPL"; - } else { - makeEffectParamsDefault(buffer, offset, s); - } - break; - - case 334: // Turn undead - if (Profile.isEnhancedEdition()) { - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - } else { - makeEffectParamsDefault(buffer, offset, s); - } - break; - - case 335: // Seven eyes - if (Profile.isEnhancedEdition()) { - s.add(new IdsBitmap(buffer, offset, 4, "State", "SPLSTATE.IDS")); - s.add(new DecNumber(buffer, offset + 4, 4, "Identifier")); - restype = "SPL"; - } else { - makeEffectParamsDefault(buffer, offset, s); - } - break; - - case 336: // Seven eyes overlay - if (Profile.isEnhancedEdition()) { - final ArrayList letterList = new ArrayList() { - { - add("None"); - for (char ch = 'A'; ch <= 'Z'; ch++) { - add(Character.toString(ch)); - } - } - }; - s.add(new Bitmap(buffer, offset, 4, "Last VVC letter", letterList.toArray(new String[letterList.size()]))); - s.add(new DecNumber(buffer, offset + 4, 4, "Type")); - restype = "VVC"; - } else { - makeEffectParamsDefault(buffer, offset, s); - } - break; - - case 337: // Remove effects by opcode - if (Profile.isEnhancedEdition()) { - s.add(new DecNumber(buffer, offset, 4, "Match 'Parameter 2' value")); - s.add(new Bitmap(buffer, offset + 4, 4, "Effect", getEffectNameArray())); - } else { - makeEffectParamsDefault(buffer, offset, s); - } - break; - - case 338: // Disable rest or save - if (Profile.isEnhancedEdition()) { - s.add(new StringRef(buffer, offset, "Message")); - s.add(new Bitmap(buffer, offset + 4, 4, "Mode", - new String[]{"Cannot rest", "Cannot save", "Cannot rest or save"})); - } else { - makeEffectParamsDefault(buffer, offset, s); - } - break; - - case 339: // Alter visual animation effect - if (Profile.isEnhancedEdition()) { - s.add(new Bitmap(buffer, offset, 2, "Modifier type", - new String[]{"Set value", "AND value", "OR value", "XOR value", "AND NOT value"})); - s.add(new DecNumber(buffer, offset + 2, 2, "Value")); - s.add(new ProRef(buffer, offset + 4, 4, "Projectile")); - restype = EFFECT_STRING; - } else { - makeEffectParamsDefault(buffer, offset, s); - } - break; - - case 340: // Backstab hit effect - if (Profile.isEnhancedEdition()) { - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - restype = "SPL"; - } else { - makeEffectParamsDefault(buffer, offset, s); - } - break; - - case 341: // Critical hit effect - if (Profile.isEnhancedEdition()) { - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new Bitmap(buffer, offset + 4, 4, "Condition", - new String[]{"Always", "By this weapon only"})); - restype = "SPL"; - } else { - makeEffectParamsDefault(buffer, offset, s); - } - break; - - case 342: // Override creature data - if (Profile.isEnhancedEdition()) { - Bitmap bmp = new Bitmap(buffer, offset + 4, 4, "Field", - new String[]{"Unknown", "Body heat", "Blood color", "Unknown", "Personal space"}); - switch (bmp.getValue()) { - case 1: s.add(new Bitmap(buffer, offset, 4, "Enabled?", AbstractStruct.OPTION_NOYES)); break; - case 2: s.add(new ColorValue(buffer, offset, 4, "Color", false)); break; - default: s.add(new DecNumber(buffer, offset, 4, "Value")); - } - s.add(bmp); - if (parent != null && parent instanceof UpdateListener) { - bmp.addUpdateListener((UpdateListener)parent); - } - } else { - makeEffectParamsDefault(buffer, offset, s); - } - break; - - case 343: // HP swap - if (Profile.isEnhancedEdition()) { - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new Bitmap(buffer, offset + 4, 4, "Mode", - new String[]{"Swap if caster HP > target HP", "Always swap"})); - } else { - makeEffectParamsDefault(buffer, offset, s); - } - break; - - case 344: // Enchantment vs. creature type - if (Profile.isEnhancedEdition()) { - final IdsTargetType param2 = new IdsTargetType(buffer, offset + 4); - s.add(param2.createIdsValueFromType(buffer)); - s.add(param2); - } else { - makeEffectParamsDefault(buffer, offset, s); - } - break; - - case 345: // Enchantment bonus - if (Profile.isEnhancedEdition()) { - s.add(new DecNumber(buffer, offset, 4, "Enchantment")); - s.add(new Bitmap(buffer, offset + 4, 4, "Type", - new String[]{"Magical weapons (<= 'Enchantment')", "Magical weapons (all)", - "Non-magical weapons", "Silver", "Non-silver", "Non-silver/non-magical", - "Two-Handed", "Non-two-handed", "Cursed", "Non-cursed", - "Cold iron", "Non-cold iron"})); - } else { - makeEffectParamsDefault(buffer, offset, s); - } - break; - - case 346: // Save vs. school bonus - if (Profile.isEnhancedEdition()) { - s.add(new DecNumber(buffer, offset, 4, "Value")); - s.add(new Bitmap(buffer, offset + 4, 4, "Modifier type", INC_TYPES)); - } else { - makeEffectParamsDefault(buffer, offset, s); - } - break; - - case 347: // Move view to target - // TODO: PSTEE confirm! - if (Profile.getGame() == Profile.Game.PSTEE) { - s.add(new DecNumber(buffer, offset, 4, "Scroll speed")); - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - } else { - makeEffectParamsDefault(buffer, offset, s); - } - break; - - case 352: // Change Background - // TODO: PSTEE confirm! - if (Profile.getGame() == Profile.Game.PSTEE) { - s.add(new DecNumber(buffer, offset, 4, "Duration modifier")); - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - restype = "BMP"; - } else { - makeEffectParamsDefault(buffer, offset, s); - } - break; - - case 353: // Tint screen - // TODO: PSTEE confirm! - if (Profile.getGame() == Profile.Game.PSTEE) { - s.add(new ColorPicker(buffer, offset, "Color", ColorPicker.Format.RGBX)); - final String[] methodsArray = { - "Quick fade light->dark->light", - "Quick fade light->dark->light", - "Quick fade light->dark, instant fade light", - "Quick fade light->dark, instant fade light", - "Fade light->dark->light (duration)", - "Fade light->dark->light (duration)", - "Fade light->dark->light (duration)", - "Fade light->dark->light (duration)", - "No effect", - "Very fast light->black->light", - "Instant black for duration, instant light" - }; - s.add(new Bitmap(buffer, offset + 4, 4, "Method", methodsArray)); - } else { - makeEffectParamsDefault(buffer, offset, s); - } - break; - - case 354: // Flash screen - // TODO: PSTEE confirm! - if (Profile.getGame() == Profile.Game.PSTEE) { - s.add(new ColorPicker(buffer, offset, "Color", ColorPicker.Format.RGBX)); - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - } else { - makeEffectParamsDefault(buffer, offset, s); - } - break; - - case 355: // Soul exodus - case 376: // Detect evil - case 381: // Induce hiccups - case 382: // Fist of iron - // TODO: PSTEE confirm! - makeEffectParamsDefault(buffer, offset, s); - break; - - case 356: // Stop all actions - // TODO: PSTEE confirm! - if (Profile.getGame() == Profile.Game.PSTEE) { - s.add(new DecNumber(buffer, offset, 4, "Stat value")); - s.add(new Bitmap(buffer, offset + 4, 4, "Mode", new String[]{"Pause actions", "Unpause actions"})); - } else { - makeEffectParamsDefault(buffer, offset, s); - } - break; - - case 357: // Set state - // TODO: PSTEE confirm! - if (Profile.getGame() == Profile.Game.PSTEE) { - s.add(new Bitmap(buffer, offset, 4, "Action", new String[]{"Clear", "Set"})); - s.add(new IdsFlag(buffer, offset + 4, 4, "State", "STATE.IDS")); - } else { - makeEffectParamsDefault(buffer, offset, s); - } - break; - - case 358: // Set AI script - // TODO: PSTEE confirm! - if (Profile.getGame() == Profile.Game.PSTEE) { - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new IdsBitmap(buffer, offset + 4, 4, "Script level", "SCRLEV.IDS")); - restype = "BCS"; - } else { - makeEffectParamsDefault(buffer, offset, s); - } - break; - - case 360: // Ignore reputation breaking point - if (Profile.isEnhancedEdition()) { - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - } else { - makeEffectParamsDefault(buffer, offset, s); - } - break; - - case 361: // Cast spell on critical miss - if (Profile.isEnhancedEdition()) { - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new Bitmap(buffer, offset + 4, 4, "Current weapon only?", AbstractStruct.OPTION_NOYES)); - restype = "SPL"; - } else { - makeEffectParamsDefault(buffer, offset, s); - } - break; - - case 362: // Critical miss bonus - if (Profile.isEnhancedEdition()) { - s.add(new DecNumber(buffer, offset, 4, "Value")); - s.add(new Bitmap(buffer, offset + 4, 4, "Current weapon only?", AbstractStruct.OPTION_NOYES)); - } else { - makeEffectParamsDefault(buffer, offset, s); - } - break; - - case 363: // Movement check - if (Profile.isEnhancedEdition()) { - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - } else { - makeEffectParamsDefault(buffer, offset, s); - } - break; - - case 365: // Make unselectable - if (Profile.isEnhancedEdition()) { - s.add(new Bitmap(buffer, offset, 4, "Disable dialogue?", AbstractStruct.OPTION_YESNO)); - s.add(new Bitmap(buffer, offset + 4, 4, "Disable AI?", AbstractStruct.OPTION_YESNO)); - } else { - makeEffectParamsDefault(buffer, offset, s); - } - break; - - case 366: // Apply spell on movement - if (Profile.isEnhancedEdition()) { - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - restype = "SPL"; - } else { - makeEffectParamsDefault(buffer, offset, s); - } - break; - - case 367: // Minimum base stats - if (Profile.isEnhancedEdition()) { - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new Bitmap(buffer, offset + 4, 4, "Enabled?", AbstractStruct.OPTION_NOYES)); - } else { - makeEffectParamsDefault(buffer, offset, s); - } - break; - - case 369: // Play BAM file (single/dual) - // TODO: PSTEE confirm! - if (Profile.getGame() == Profile.Game.PSTEE) { - s.add(new ColorPicker(buffer, offset, "Color", ColorPicker.Format.RGBX)); - s.add(new Flag(buffer, offset + 4, 4, "Method", - new String[]{"Default", "Repeat animation", "Remove stickiness"})); - restype = "BAM"; - } else { - makeEffectParamsDefault(buffer, offset, s); - } - break; - - case 370: // Play BAM file - case 371: // Play BAM file 2 - case 372: // Play BAM file 3 - case 373: // Play BAM file 4 - // TODO: PSTEE confirm! - if (Profile.getGame() == Profile.Game.PSTEE) { - s.add(new ColorPicker(buffer, offset, "Color", ColorPicker.Format.RGBX)); - s.add(new Flag(buffer, offset + 4, 4, "Flags", new String[] { - null, "Random placement", null, null, null, "Undetermined", null, null, null, - null, null, null, null, "Sticky", null, null, null, "Undetermined (repeat)", - "Foreground (repeat)", null, null, - "Fade out transparency (blended)", - "Color & transparency (blended)"})); - restype = "BAM"; - } else { - makeEffectParamsDefault(buffer, offset, s); - } - break; - - case 374: // Special spell hit - // TODO: PSTEE confirm! - if (Profile.getGame() == Profile.Game.PSTEE) { - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new Bitmap(buffer, offset + 4, 4, "Effect", - new String[]{"Adder's kiss", "Ball lightning", "Fizzle"})); - } else { - makeEffectParamsDefault(buffer, offset, s); - } - break; - - case 375: // Play BAM with effects - // TODO: PSTEE confirm! - if (Profile.getGame() == Profile.Game.PSTEE) { - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new Bitmap(buffer, offset + 4, 4, "Effect", - new String[]{"Cloak of warding", "Shield", "Black-barbed shield", - "Pain mirror", "Guardian mantle", "", "Enoll eva's duplication", - "Armor", "Antimagic shell", "", "", "Flame walk", - "Protection from evil", "Conflagration", "Infernal shield", - "Submerge the will", "Balance in all things"})); - restype = "BAM"; - } else { - makeEffectParamsDefault(buffer, offset, s); - } - break; - - case 378: // Prayer - case 379: // Curse - // TODO: PSTEE confirm! - if (Profile.getGame() == Profile.Game.PSTEE) { - s.add(new DecNumber(buffer, offset, 4, "Amount")); - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - } else { - makeEffectParamsDefault(buffer, offset, s); - } - break; - - case 380: // Embalm - // TODO: PSTEE confirm! - if (Profile.getGame() == Profile.Game.PSTEE) { - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new Bitmap(buffer, offset + 4, 4, "Embalming type", new String[]{"Normal", "Greater"})); - } else { - makeEffectParamsDefault(buffer, offset, s); - } - break; - - case 383: // Hit point transfer - // TODO: PSTEE confirm! - if (Profile.getGame() == Profile.Game.PSTEE) { - s.add(new DecNumber(buffer, offset, 4, "Amount")); - s.add(new Bitmap(buffer, offset + 4, 2, "Direction", - new String[]{"Source to target", "Target to source", "Swap HP", - "Source to target even over max. HP"})); - s.add(new IdsBitmap(buffer, offset + 6, 2, "Damage type", "DAMAGES.IDS")); - } else { - makeEffectParamsDefault(buffer, offset, s); - } - break; - - case 401: // EEex: Set Extended Stat - if (isEEex) { - s.add(new DecNumber(buffer, offset, 4, "Value")); - s.add(new Bitmap(buffer, offset + 4, 4, "Modifier type", INC_TYPES)); - } - else { - makeEffectParamsDefault(buffer, offset, s); - } - break; - - case 404: // EEex: Override Button Type - if (isEEex) { - s.add(new Bitmap(buffer, offset, 4, "Type to override", BUTTON_TYPES)); - s.add(new Bitmap(buffer, offset + 4, 4, "Override with type", BUTTON_TYPES)); - } - else { - makeEffectParamsDefault(buffer, offset, s); - } - break; - - case 405: // EEex: Override Button Index - if (isEEex) { - s.add(new DecNumber(buffer, offset, 4, "Index to override")); - s.add(new Bitmap(buffer, offset + 4, 4, "Override with type", BUTTON_TYPES)); - } - else { - makeEffectParamsDefault(buffer, offset, s); - } - break; - - case 407: // EEex: On Remove - makeEffectParamsDefault(buffer, offset, s); - if (isEEex) { - restype = "SPL"; - } - break; - - default: - makeEffectParamsDefault(buffer, offset, s); - break; - } - - return restype; - } - - private String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List s, - int effectType, boolean isV1) - { - String restype = null; - switch (effectType) { - case 110: // Retreat from - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new Bitmap(buffer, offset + 4, 4, "Type", - new String[]{"Run", "Run", "Run", "Run", "Run", "Run", "Run", "Weak", "Walk"})); - break; - - case 186: // Set state - s.add(new Bitmap(buffer, offset, 4, "Action", new String[]{"Clear", "Set"})); - s.add(new IdsFlag(buffer, offset + 4, 4, "State", "STATE.IDS")); - break; - - case 188: // Play BAM file - case 189: // Play BAM file 2 - case 190: // Play BAM file 3 - case 191: // Play BAM file 4 - { - s.add(new ColorPicker(buffer, offset, "Color", ColorPicker.Format.RGBX)); - s.add(new Flag(buffer, offset + 4, 4, "Flags", new String[] { - null, "Random placement", null, null, null, "Undetermined", null, null, null, - null, null, null, null, "Sticky", null, null, null, "Undetermined (repeat)", - "Foreground (repeat)", null, null, - "Fade out transparency (blended)", - "Color & transparency (blended)"})); - // final LongIntegerHashMap playBamMap = new LongIntegerHashMap(); - // playBamMap.put(0L, "Non-sticky, not 3D"); - // playBamMap.put(1L, "Random placement, not 3D"); - // playBamMap.put(528384L, "Sticky, 3D"); - // playBamMap.put(1179648L, "RGB transparent"); - // playBamMap.put(1183744L, "RGB transparent, 3D, sticky"); - // playBamMap.put(3280896L, "RGB transparent, 3D"); - // s.add(new HashBitmap(buffer, offset + 4, 4, "Properties", playBamMap)); - restype = "BAM"; - break; - } - - case 192: // Hit point transfer - s.add(new DecNumber(buffer, offset, 4, "Amount")); - s.add(new Bitmap(buffer, offset + 4, 2, "Direction", - new String[]{"Source to target", "Target to source", "Swap HP", - "Source to target even over max. HP"})); - s.add(new IdsBitmap(buffer, offset + 6, 2, "Damage type", "DAMAGES.IDS")); - break; - - case 193: // Shake screen - s.add(new DecNumber(buffer, offset, 4, "Strength")); - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - break; - - case 194: // Flash screen - s.add(new ColorPicker(buffer, offset, "Color", ColorPicker.Format.RGBX)); - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - break; - - case 195: // Tint screen - { - final TreeMap fadeTypeMap = new TreeMap<>(); - fadeTypeMap.put(0L, "Quick fade light->dark->light"); - fadeTypeMap.put(1L, "Quick fade light->dark->light"); - fadeTypeMap.put(2L, "Quick fade light->dark, instant fade light"); - fadeTypeMap.put(3L, "Quick fade light->dark, instant fade light"); - fadeTypeMap.put(4L, "Fade light->dark->light (duration)"); - fadeTypeMap.put(5L, "Fade light->dark->light (duration)"); - fadeTypeMap.put(6L, "Fade light->dark->light (duration)"); - fadeTypeMap.put(7L, "Fade light->dark->light (duration)"); - fadeTypeMap.put(8L, "No effect"); - fadeTypeMap.put(9L, "Very fast light->black->light"); - fadeTypeMap.put(10L, "Instant black for duration, instant light"); - fadeTypeMap.put(100L, "Unknown"); - fadeTypeMap.put(200L, "Unknown"); - s.add(new ColorPicker(buffer, offset, "Color", ColorPicker.Format.RGBX)); - s.add(new HashBitmap(buffer, offset + 4, 4, "Method", fadeTypeMap)); - break; - } - - case 196: // Special spell hit - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new Bitmap(buffer, offset + 4, 4, "Effect", - new String[]{"Adder's kiss", "Ball lightning", "Fizzle"})); - break; - - case 201: // Play BAM with effects - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new Bitmap(buffer, offset + 4, 4, "Effect", - new String[]{"Cloak of warding", "Shield", "Black-barbed shield", - "Pain mirror", "Guardian mantle", "", "Enoll eva's duplication", - "Armor", "Antimagic shell", "", "", "Flame walk", - "Protection from evil", "Conflagration", "Infernal shield", - "Submerge the will", "Balance in all things"})); - restype = "BAM"; - break; - - case 203: // Curse - case 204: // Prayer - s.add(new DecNumber(buffer, offset, 4, "Amount")); - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - break; - - case 205: // Move view to target - s.add(new DecNumber(buffer, offset, 4, "Scroll speed")); - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - break; - - case 206: // Embalm - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new Bitmap(buffer, offset + 4, 4, "Embalming type", - new String[]{"Normal", "Greater"})); - break; - - case 207: // Stop all actions - s.add(new DecNumber(buffer, offset, 4, "Stat value")); - s.add(new Bitmap(buffer, offset + 4, 4, "Mode", - new String[]{"Pause actions", "Unpause actions"})); - break; - - case 208: // Fist of iron - case 209: // Soul exodus - case 210: // Detect evil - case 211: // Induce hiccups - case 212: // Speak with dead - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - break; - - default: - makeEffectParamsDefault(buffer, offset, s); - break; - } - - return restype; - } - - private String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List s, - int effectType, boolean isV1) - { - String restype = null; - switch (effectType) { - case 186: // Move creature - s.add(new DecNumber(buffer, offset, 4, "Delay")); - s.add(new IdsBitmap(buffer, offset + 4, 4, "Orientation", "DIR.IDS")); - restype = "ARE"; - break; - - case 188: // Increase spells cast per round - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new Bitmap(buffer, offset + 4, 4, "Cleanse aura?", AbstractStruct.OPTION_NOYES)); - break; - - case 189: // Increase casting speed factor - case 190: // Increase attack speed factor - case 234: // Snilloc's snowball swarm - case 236: // Chill touch - case 237: // Magical stone - case 239: // Slow poison - case 244: // Prayer - case 245: // Bad prayer - case 249: // Recitation - case 250: // Bad recitation - case 252: // Sol's searing orb - case 277: // Soul eater - case 281: // Vitriolic sphere - s.add(new DecNumber(buffer, offset, 4, "Amount")); - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - break; - - case 191: // Casting level bonus - s.add(new DecNumber(buffer, offset, 4, "Amount")); - s.add(new Bitmap(buffer, offset + 4, 4, "Spell class", new String[]{"Wizard", "Priest"})); - break; - - case 192: // Find familiar - case 210: // Power word, stun - case 257: // Zombie lord aura - case 260: // Hide creature - case 262: // Pomab images - case 267: // Cure confusion - case 268: // Eye of the mind - case 269: // Eye of the sword - case 270: // Eye of the mage - case 271: // Eye of venom - case 272: // Eye of the spirit - case 273: // Eye of fortitude - case 274: // Eye of stone - case 275: // Remove seven eyes - case 278: // Shroud of flame - case 282: // Hide hit points - case 284: // Mace of disruption - case 286: // Ranger tracking - case 287: // Immunity to sneak attack - case 289: // Dragon gem cutscene - case 291: // Rod of smiting - case 292: // Rest - case 293: // Beholder dispel magic - case 294: // Harpy wail - case 295: // Jackalwere gaze - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - break; - - case 193: // Invisibility detection - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new DecNumber(buffer, offset + 4, 4, "Stat value")); - break; - - case 206: // Protection from spell - case 290: // Display spell immunity string - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new Bitmap(buffer, offset + 4, 4, "Creature type", CRE_TYPES_IWD)); - restype = "SPL"; - break; - - case 208: // Minimum HP - s.add(new DecNumber(buffer, offset, 4, "HP amount")); - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - break; - - case 218: // Stoneskin effect - s.add(new DecNumber(buffer, offset, 4, "# skins")); - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - break; - - case 232: // Creature RGB color fade - s.add(new ColorPicker(buffer, offset, "Color")); - s.add(new HashBitmap(buffer, offset + 4, 2, "Location", COLOR_LOCATIONS_MAP, false)); - s.add(new DecNumber(buffer, offset + 6, 2, "Speed")); - break; - - case 233: // Show visual effect - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new Bitmap(buffer, offset + 4, 4, "Effect", VISUALS)); - break; - - case 235: // Show casting glow - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new Bitmap(buffer, offset + 4, 4, "Glow", - new String[]{"None", "Abjuration", "Conjuration", "Divination", - "Enchantment", "Illusion", "Invocation", "Necromancy", - "Transmutation"})); - break; - - case 238: // All saving throws bonus - case 266: // Movement rate modifier - s.add(new DecNumber(buffer, offset, 4, "Value")); - s.add(new Bitmap(buffer, offset + 4, 4, "Modifier type", INC_TYPES)); - break; - - case 240: // Summon creature 2 - s.add(new DecNumber(buffer, offset, 4, "# creatures")); - s.add(new Bitmap(buffer, offset + 4, 4, "Summon type", - new String[]{"Monster summoning 1", "Monster summoning 2", - "Monster summoning 3", "Monster summoning 4", - "Monster summoning 5", "Monster summoning 6", - "Monster summoning 7", "Animal summoning 1", - "Animal summoning 2", "Animal summoning 3", - "Summon insects", "Creeping doom", "Malavon summon"})); - break; - - case 241: // Vampiric touch - s.add(new DecNumber(buffer, offset, 4, "Amount")); - s.add(new Bitmap(buffer, offset + 4, 4, "Direction", - new String[]{"Target to source", "Source to target"})); - break; - - case 242: // Show visual overlay - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new Bitmap(buffer, offset + 4, 4, "Overlay", - new String[]{"Globe of invulnerability", "Shroud of flame", - "Antimagic shell", "Otiluke's resilient sphere", - "Protection from normal missiles", "Cloak of fear", - "Entropy shield", "Fire aura", "Frost aura", - "Insect plague", "Storm shell", "Shield of lathander", - "Greater shield of lathander", "Seven eyes"})); - break; - - case 243: // Animate dead - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new Bitmap(buffer, offset + 4, 4, "Undead type", new String[]{"Normal", "Lich"})); - break; - - case 246: // Summon creature 3 - s.add(new DecNumber(buffer, offset, 4, "# creatures")); - s.add(new Bitmap(buffer, offset + 4, 4, "Creature type", - new String[]{"Lizard man", "Troll", "Shadow", "Invisible stalker", - "Fire elemental (wizard)", "Earth elemental (wizard)", - "Water elemental (wizard)", "Fire elemental (priest)", - "Earth elemental (priest)", "Water elemental (priest)", - "Malavon earth elemental"})); - break; - - case 247: // Beltyn's burning blood - case 264: // Static charge - case 265: // Cloak of fear - s.add(new DecNumber(buffer, offset, 4, "# hits")); - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - break; - - case 248: // Summon shadow - s.add(new DecNumber(buffer, offset, 4, "# creatures")); - s.add(new Bitmap(buffer, offset + 4, 4, "Shadow type", - new String[]{"Shadow", "Demishadow", "Shade"})); - break; - - case 251: // Lich touch - case 256: // Umber hulk gaze - s.add(new DecNumber(buffer, offset, 4, "# seconds")); - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - break; - - case 253: // Bonus AC vs. weapons - s.add(new DecNumber(buffer, offset, 4, "AC value")); - s.add(new Flag(buffer, offset + 4, 4, "Bonus to", - new String[]{"All weapons", "Blunt weapons", "Missile weapons", - "Piercing weapons", "Slashing weapons", - "Set base AC to value"})); - break; - - case 254: // Dispel specific spell - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new Bitmap(buffer, offset + 4, 4, "Dispel type", - new String[]{"All effects", "Equipped effects only", "Limited effects only"})); - restype = "SPL"; - break; - - case 255: // Salamander aura - s.add(new DecNumber(buffer, offset, 4, "Amount")); - s.add(new Bitmap(buffer, offset + 4, 4, "Aura type", new String[]{"Fire", "Frost"})); - break; - - case 258: // Immunity to specific resource - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new Bitmap(buffer, offset + 4, 4, "Type", new String[]{"Default", "Test and set to 0"})); - break; - - case 259: // Summon creatures with cloud - s.add(new DecNumber(buffer, offset, 4, "# creatures")); - s.add(new Bitmap(buffer, offset + 4, 4, "Summon type", - new String[]{"Default", "Ally", "Hostile", "Forced", "Genie"})); - restype = "CRE"; - break; - - case 261: // Immunity to effect and string - case 276: // Remove effect by type - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new Bitmap(buffer, offset + 4, 4, "Effect", getEffectNameArray())); - break; - - case 263: // Evil turn undead - { - final TreeMap map = new TreeMap<>(); - map.put(0L, "Charmed (neutral)"); - map.put(1L, "Charmed (hostile)"); - map.put(2L, "Dire charmed (neutral)"); - map.put(3L, "Dire charmed (hostile)"); - map.put(4L, "Controlled"); - s.add(new IdsBitmap(buffer, offset, 4, "Creature type", "GENERAL.IDS")); - s.add(new HashBitmap(buffer, offset + 4, 4, "Type type", map)); - break; - } - - case 279: // Animal rage - s.add(new DecNumber(buffer, offset, 4, "# seconds")); - s.add(new Bitmap(buffer, offset + 4, 4, "Type", - new String[]{"LOS check (# seconds)", "State"})); - break; - - case 280: // Turn undead - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new Bitmap(buffer, offset + 4, 4, "Turn type", - new String[]{"Command", "Rebuke", "Destroy", "Panic", "Depend on caster"})); - break; - - case 283: // Float text - s.add(new StringRef(buffer, offset, "String")); - s.add(new Bitmap(buffer, offset + 4, 4, "Display type", - new String[]{"String reference", "Cynicism"})); - break; - - case 285: // Force sleep - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new Bitmap(buffer, offset + 4, 4, "Wake on damage?", AbstractStruct.OPTION_YESNO)); - break; - - case 288: // Set spell state - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new Bitmap(buffer, offset + 4, 4, "State", SPELL_STATES)); - break; - - case 296: // Set global variable - s.add(new DecNumber(buffer, offset, 4, "Value")); - s.add(new Bitmap(buffer, offset + 4, 4, "Variable", new String[]{"RETURN_TO_LONELYWOOD"})); - break; - - default: - makeEffectParamsDefault(buffer, offset, s); - break; - } - - return restype; - } - - private String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List s, - int effectType, boolean isV1) - { - String restype = null; - switch (effectType) { - case 61: // Alchemy - s.add(new DecNumber(buffer, offset, 4, "Value")); - s.add(new Bitmap(buffer, offset + 4, 4, "Modifier type", - new String[]{"Increment", "Set", "Mastery"})); - break; - - case 186: // Move creature - s.add(new DecNumber(buffer, offset, 4, "Delay")); - s.add(new IdsBitmap(buffer, offset + 4, 4, "Orientation", "DIR.IDS")); - restype = "ARE"; - break; - - case 188: // Increase spells cast per round - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new Bitmap(buffer, offset + 4, 4, "Cleanse aura?", AbstractStruct.OPTION_NOYES)); - break; - - case 189: // Increase casting speed factor - case 190: // Increase attack speed factor - case 239: // Slow poison - case 281: // Vitriolic sphere - s.add(new DecNumber(buffer, offset, 4, "Amount")); - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - break; - - case 191: // Casting level bonus - s.add(new DecNumber(buffer, offset, 4, "Amount")); - s.add(new Bitmap(buffer, offset + 4, 4, "Spell class", new String[]{"Arcane", "Divine"})); - break; - - case 192: // Find familiar - case 236: // Panic undead - case 260: // Hide creature - case 267: // Cure confusion - case 268: // Eye of the mind - case 269: // Eye of the sword - case 270: // Eye of the mage - case 271: // Eye of venom - case 272: // Eye of the spirit - case 273: // Eye of fortitude - case 274: // Eye of stone - case 275: // Remove seven eyes - case 278: // Shroud of flame - case 282: // Hide hit points - case 284: // Mace of disruption - case 286: // Ranger tracking - case 287: // Immunity to sneak attack - case 292: // Rest - case 293: // Beholder dispel magic - case 294: // Harpy wail - case 295: // Jackalwere gaze - case 400: // Hopelessness - case 401: // Protection from evil - case 403: // Armor of faith - case 405: // Enfeeblement - case 407: // Death ward - case 408: // Holy power - case 414: // Otiluke's resilient sphere - case 415: // Barkskin - case 418: // Free action - case 421: // Entropy shield - case 422: // Storm shell - case 423: // Protection from the elements - case 424: // Hold undead - case 425: // Control undead - case 426: // Aegis - case 427: // Executioner's eyes - case 428: // Banish - case 435: // Day blindness - case 438: // Heroic inspiration - case 440: // Barbarian rage - case 442: // Cleave - case 444: // Tenser's transformation - case 445: // Slippery mind - case 446: // Smite evil - case 447: // Restoration - case 448: // Alicorn lance - case 451: // Lower resistance - case 452: // Bane - case 453: // Power attack - case 454: // Expertise - case 455: // Arterial strike - case 456: // Hamstring - case 457: // Rapid shot - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - break; - - case 193: // Invisibility detection - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new Bitmap(buffer, offset + 4, 4, "Ignore visibility?", AbstractStruct.OPTION_NOYES)); - break; - - case 206: // Protection from spell - case 290: // Display spell immunity string - s.add(new DecNumber(buffer, offset, 4, "Value")); - s.add(new Bitmap(buffer, offset + 4, 4, "Creature type", CRE_TYPES_IWD)); - restype = "SPL"; - break; - - case 208: // Minimum HP - case 432: // Tortoise shell - s.add(new DecNumber(buffer, offset, 4, "HP amount")); - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - break; - - case 218: // Stoneskin effect - s.add(new DecNumber(buffer, offset, 4, "# skins")); - s.add(new Bitmap(buffer, offset + 4, 4, "Skin type", new String[]{"Stoneskin", "Iron skins"})); - break; - - case 232: // Creature RGB color fade - s.add(new ColorPicker(buffer, offset, "Color")); - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - break; - - case 233: // Show visual effect - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new Bitmap(buffer, offset + 4, 4, "Effect", VISUALS)); - break; - - case 235: // Show casting glow - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new Bitmap(buffer, offset + 4, 4, "Glow", - new String[]{"None", "Abjuration", "Conjuration", "Divination", - "Enchantment", "Illusion", "Invocation", "Necromancy", - "Transmutation"})); - break; - - case 238: // All saving throws bonus - case 266: // Movement rate modifier - case 297: // Hide in shadows bonus - case 298: // Use magic device bonus - case 441: // Force slow - s.add(new DecNumber(buffer, offset, 4, "Value")); - s.add(new Bitmap(buffer, offset + 4, 4, "Modifier type", INC_TYPES)); - break; - - case 241: // Vampiric touch - s.add(new DecNumber(buffer, offset, 4, "Amount")); - s.add(new Bitmap(buffer, offset + 4, 4, "Direction", - new String[]{"Target to source", "Source to target"})); - break; - - case 244: // Prayer - case 249: // Recitation - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new Bitmap(buffer, offset + 4, 4, "Prayer type", - new String[]{"Beneficial", "Detrimental"})); - break; - - case 247: // Beltyn's burning blood - s.add(new DecNumber(buffer, offset, 4, "# hits")); - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - break; - - case 248: // Summon shadow - s.add(new DecNumber(buffer, offset, 4, "# creatures")); - s.add(new Bitmap(buffer, offset + 4, 4, "Shadow type", - new String[]{"Shadow", "Demishadow", "Shade"})); - break; - - case 256: // Umber hulk gaze - s.add(new DecNumber(buffer, offset, 4, "# seconds")); - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - break; - - case 254: // Dispel specific spell - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new Bitmap(buffer, offset + 4, 4, "Dispel type", - new String[]{"All effects", "Equipped effects only", "Limited effects only"})); - restype = "SPL"; - break; - - case 255: // Salamander aura - s.add(new DecNumber(buffer, offset, 4, "Amount")); - s.add(new Bitmap(buffer, offset + 4, 4, "Aura type", new String[]{"Fire", "Frost"})); - break; - - case 261: // Immunity to effect and resource - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new Bitmap(buffer, offset + 4, 4, "Effect", getEffectNameArray())); - restype = "SPL"; - break; - - case 263: // Evil turn undead - { - final TreeMap map = new TreeMap<>(); - map.put(0L, "Charmed (neutral)"); - map.put(1L, "Charmed (hostile)"); - map.put(2L, "Dire charmed (neutral)"); - map.put(3L, "Dire charmed (hostile)"); - map.put(4L, "Controlled"); - s.add(new IdsBitmap(buffer, offset, 4, "Creature type", "GENERAL.IDS")); - s.add(new HashBitmap(buffer, offset + 4, 4, "Type type", map)); - break; - } - - case 264: // Static charge - case 265: // Cloak of fear - case 449: // Call lightning - s.add(new DecNumber(buffer, offset, 4, "# hits")); - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - restype = "SPL"; - break; - - case 276: // Remove effect by type - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new Bitmap(buffer, offset + 4, 4, "Effect", getEffectNameArray())); - break; - - case 279: // Animal rage - s.add(new DecNumber(buffer, offset, 4, "# seconds")); - s.add(new Bitmap(buffer, offset + 4, 4, "Type", - new String[]{"LOS check (# seconds)", "State"})); - break; - - case 280: // Turn undead - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new Bitmap(buffer, offset + 4, 4, "Turn type", - new String[]{"Command", "Rebuke", "Destroy", "Panic", "Depend on caster"})); - break; - - case 283: // Float text - s.add(new StringRef(buffer, offset, "String")); - s.add(new Bitmap(buffer, offset + 4, 4, "Display type", - new String[]{"String reference", "Cynicism"})); - break; - - case 285: // Force sleep - case 419: // Unconsciousness - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new Bitmap(buffer, offset + 4, 4, "Wake on damage?", AbstractStruct.OPTION_YESNO)); - break; - - case 288: // Set spell state - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new IdsBitmap(buffer, offset + 4, 4, "State", "SPLSTATE.IDS")); - break; - - case 296: // Set global variable - s.add(new DecNumber(buffer, offset, 4, "Value")); - s.add(new Bitmap(buffer, offset + 4, 4, "Variable", new String[]{"RETURN_TO_LONELYWOOD"})); - break; - - case 402: // Apply effects list - s.add(new DecNumber(buffer, offset, 4, "Value")); - s.add(new Bitmap(buffer, offset + 4, 4, "Creature type", CRE_TYPES_IWD2)); - restype = "SPL"; - break; - - case 404: // Nausea - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new Bitmap(buffer, offset + 4, 4, "Nausea type", - new String[]{"Stinking cloud", "Ghoul touch"})); - break; - - case 406: // Fire shield - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new Bitmap(buffer, offset + 4, 4, "Shield type", new String[]{"Red", "Blue"})); - restype = "SPL"; - break; - - case 409: // Righteous wrath of the faithful - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new Bitmap(buffer, offset + 4, 4, "Affect", - new String[]{"Allies", "Allies and same alignment"})); - break; - - case 410: // Summon friendly creature - case 411: // Summon hostile creature - s.add(new DecNumber(buffer, offset, 4, "# creatures")); - s.add(new Bitmap(buffer, offset + 4, 4, "Summon animation", SUMMON_ANIMS)); - restype = "CRE"; - break; - - case 412: // Control creature - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new Bitmap(buffer, offset + 4, 4, "Control type", - new String[]{"", "Default", "Mental domination"})); - break; - - case 413: // Run visual effect - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new Bitmap(buffer, offset + 4, 4, "Animation", - new String[]{"Sanctuary", "Entangle", "Wisp", "Shield", "Grease", - "Web", "Minor globe of invulnerability", - "Globe of invulnerability", "Shroud of flame", - "Antimagic shell", "Otiluke's resilient sphere", - "Protection from normal missiles", "Cloak of fear", - "Entrophy shield", "Fire aura", "Frost aura", - "Insect plague", "Storm shell", "Shield of lathander", - "", "Greater shield of lathander", "", "Seven eyes", - "", "Blur", "Invisibility", "Fire shield (red)", - "Fire shield (blue)", "", "", "Tortoise shell", "Death armor"})); - break; - - case 416: // Bleeding wounds - s.add(new DecNumber(buffer, offset, 4, "Amount")); - s.add(new Bitmap(buffer, offset + 4, 4, "Damage type", - new String[]{"Amount HP per round", "Amount HP per second", - "1 HP per amount seconds"})); - break; - - case 417: // Area effect using effects list - s.add(new DecNumber(buffer, offset, 4, "Radius")); - s.add(new Flag(buffer, offset + 4, 4, "Area effect type", - new String[]{"Instant", "Once per round", "Ignore target"})); - restype = "SPL"; - break; - - case 420: // Death magic - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new Flag(buffer, offset + 4, 4, "Death type", new String[] { - "Acid", "Burning", "Crushing", "Normal", "Exploding", "Stoned", - "Freezing", null, null, null, "Permanent", "Destruction"})); - break; - - case 429: // Apply effects list on hit - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - restype = "SPL"; - break; - - case 430: // Projectile type using effects list - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new DecNumber(buffer, offset + 4, 4, "Projectile")); - restype = "SPL"; - break; - - case 431: // Energy drain - s.add(new DecNumber(buffer, offset, 4, "# levels")); - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - break; - - case 433: // Blink - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new Bitmap(buffer, offset + 4, 4, "Blink type", new String[]{"Normal", "Empty body"})); - break; - - case 434: // Persistent using effects list - s.add(new DecNumber(buffer, offset, 4, "Interval")); - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - restype = "SPL"; - break; - - case 436: // Damage reduction - s.add(new DecNumber(buffer, offset, 4, "Value")); - s.add(new DecNumber(buffer, offset + 4, 4, "Enchantment to overcome")); - break; - - case 437: // Disguise - s.add(new DecNumber(buffer, offset, 4, "Value")); - s.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); - break; - - case 439: // Prevent AI slowdown - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new DecNumber(buffer, offset + 4, 4, "Stat value")); - break; - - case 443: // Protection from arrows - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new Bitmap(buffer, offset + 4, 4, "Damage reduction", - new String[]{"None", "10/+1", "10/+2", "10/+3", "10/+4", "10/+5"})); - break; - - case 450: // Globe of invulnerability - s.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); - s.add(new Bitmap(buffer, offset + 4, 4, "Globe type", - new String[]{"Minor globe of invulnerability", "Globe of invulnerability"})); - break; - - default: - makeEffectParamsDefault(buffer, offset, s); - break; - } - - return restype; - } - - private void makeEffectParamsDefault(ByteBuffer buffer, int offset, List s) - { - if (s != null) { - s.add(new DecNumber(buffer, offset, 4, EFFECT_PARAMETER_1)); - s.add(new DecNumber(buffer, offset + 4, 4, EFFECT_PARAMETER_2)); - } - } - - private int makeEffectCommon1(ByteBuffer buffer, int offset, List s, boolean isV1) - { - if (isV1) { - s.add(new HashBitmap(buffer, offset, 1, EFFECT_TIMING_MODE, DURATIONS_V1_MAP, false)); - // s.add(new Flag(buffer, offset + 1, 1, Effect2.EFFECT_DISPEL_TYPE, Effect2.DISPEL_ARRAY)); - s.add(new Bitmap(buffer, offset + 1, 1, Effect2.EFFECT_DISPEL_TYPE, Effect2.DISPEL_ARRAY)); - offset += 2; - } else { - s.add(new HashBitmap(buffer, offset, 4, EFFECT_TIMING_MODE, DURATIONS_V2_MAP, false)); - offset += 4; - } - - s.add(new DecNumber(buffer, offset, 4, EFFECT_DURATION)); - offset += 4; - - if (isV1) { - s.add(new DecNumber(buffer, offset, 1, EFFECT_PROBABILITY_1)); - s.add(new DecNumber(buffer, offset + 1, 1, EFFECT_PROBABILITY_2)); - offset += 2; - } else { - s.add(new DecNumber(buffer, offset, 2, EFFECT_PROBABILITY_1)); - s.add(new DecNumber(buffer, offset + 2, 2, EFFECT_PROBABILITY_2)); - offset += 4; - } - - return offset; - } - - private int makeEffectResource(Datatype parent, ByteBuffer buffer, int offset, List s, - int effectType, String resourceType, int param1, int param2) - { - boolean isEEex = Profile.getProperty(Profile.Key.IS_GAME_EEEX); - if (resourceType == null) { - switch (effectType) { - case 402: - case 403: - if (isEEex) { - s.add(new TextString(buffer, offset, 8, "Lua function")); - } - else { - s.add(new Unknown(buffer, offset, 8, AbstractStruct.COMMON_UNUSED)); - } - break; - - case 408: - if (isEEex) { - s.add(new TextString(buffer, offset, 8, "Lua table")); - } - else { - s.add(new Unknown(buffer, offset, 8, AbstractStruct.COMMON_UNUSED)); - } - break; - - default: - if ((Profile.getEngine() == Profile.Engine.BG2 || Profile.isEnhancedEdition()) && - effectType == 319 && param2 == 11) { // Restrict item (BGEE) - s.add(new TextString(buffer, offset, 8, "Script name")); - } - else { - s.add(new Unknown(buffer, offset, 8, AbstractStruct.COMMON_UNUSED)); - } - break; - } - } - else if (resourceType.equalsIgnoreCase(EFFECT_STRING)) { - s.add(new TextString(buffer, offset, 8, EFFECT_STRING)); - } - else { - String resourceString = EFFECT_RESOURCE; - switch (effectType) { - case 218: - if (isEEex) { - resourceString = "EEex: On skins destroyed"; - } - break; - - case 407: - if (isEEex) { - resourceString = "On remove"; - } - break; - } - s.add(new ResourceRef(buffer, offset, resourceString, resourceType.split(":"))); - } - offset += 8; - - return offset; - } - - private int makeEffectCommon2(ByteBuffer buffer, int offset, List s, boolean isV1) - { - final String[] saveType = getSaveType(); - if (isV1) { - s.add(new DecNumber(buffer, offset, 4, EFFECT_DICE_COUNT_MAX_LEVEL)); - s.add(new DecNumber(buffer, offset + 4, 4, EFFECT_DICE_SIZE_MIN_LEVEL)); - if (Profile.getEngine() == Profile.Engine.IWD2) { - s.add(new Flag(buffer, offset + 8, 4, EFFECT_SAVE_TYPE, saveType)); - s.add(new DecNumber(buffer, offset + 12, 4, EFFECT_SAVE_PENALTY)); - } - else { - s.add(new Flag(buffer, offset + 8, 4, EFFECT_SAVE_TYPE, saveType)); - s.add(new DecNumber(buffer, offset + 12, 4, EFFECT_SAVE_BONUS)); - } - } else { - if (Profile.getEngine() == Profile.Engine.IWD2) { - s.add(new Flag(buffer, offset, 4, EFFECT_SAVE_TYPE, saveType)); - s.add(new DecNumber(buffer, offset + 4, 4, EFFECT_SAVE_PENALTY)); - s.add(new DecNumber(buffer, offset + 8, 4, EFFECT_PARAMETER)); - s.add(new DecNumber(buffer, offset + 12, 4, EFFECT_PARAMETER)); - } - else { - s.add(new DecNumber(buffer, offset, 4, EFFECT_DICE_COUNT)); - s.add(new DecNumber(buffer, offset + 4, 4, EFFECT_DICE_SIZE)); - s.add(new Flag(buffer, offset + 8 , 4, EFFECT_SAVE_TYPE, saveType)); - s.add(new DecNumber(buffer, offset + 12, 4, EFFECT_SAVE_BONUS)); - } - } - offset += 16; - - return offset; - } - - private int makeEffectParam25(Datatype parent, ByteBuffer buffer, int offset, List s, - int effectType, String resourceType, int param1, int param2) - { - if (Profile.isEnhancedEdition()) { - boolean isEEex = Profile.getProperty(Profile.Key.IS_GAME_EEEX); - switch (effectType) { - case 12: // Damage - s.add(new Flag(buffer, offset, 4, "Flags", new String[] { - "Default", - "Transfer HP to caster (cumulative)*;Bits 0, 1, 3 and 4 are mutually exclusive. Cumulative temporary extra HP.", - "Transfer HP to target (cumulative)*;Bits 0, 1, 3 and 4 are mutually exclusive. Cumulative temporary extra HP.", - "Fist damage only", - "Transfer HP to caster (non-cumulative)*;Bits 0, 1, 3 and 4 are mutually exclusive. Non-cumulative temporary extra HP.", - "Transfer HP to target (non-cumulative)*;Bits 0, 1, 3 and 4 are mutually exclusive. Non-cumulative temporary extra HP.", - "Suppress damage feedback", - "Limit to cur. HP of target minus MINHP*;Bits 1 and 4 switch target -> caster.", - "Limit to cur./max. HP difference of caster*;Bits 1 and 4 switch caster -> target.", - "Save for half", "Made save", "Does not wake sleepers"})); - break; - - case 18: // Maximum HP bonus - { - s.add(new Bitmap(buffer, offset, 4, "Mode", new String[] {"Normal", "Max. HP only"})); - break; - } - - case 23: // Reset morale - { - final Bitmap bmp = new Bitmap(buffer, offset, 4, "Mode", new String[] {"BG2 mode", "BG1 mode"}); - s.add(bmp); - if (parent != null && parent instanceof UpdateListener) { - bmp.addUpdateListener((UpdateListener)parent); - } - break; - } - - // REMEMBER: Previous functionality moved to EFF V2, Parameter4 - case 25: // Poison - case 78: // Disease - case 98: // Regeneration - case 272: // Use EFF file on condition - s.add(new Bitmap(buffer, offset, 4, "Icon", getIconDescArray(true))); - break; - - case 39: // Sleep - case 213: // Maze - case 218: // Stoneskin effect - { - String[] array = getIconDescArray(); - array = Arrays.copyOf(array, array.length); - array[0] = "Default icon"; - s.add(new Bitmap(buffer, offset, 4, "Icon", array)); - break; - } - - case 42: - case 62: - if (isEEex) { - s.add(new Bitmap(buffer, offset, 4, "EEex: Bypass slot requirement?", AbstractStruct.OPTION_NOYES)); - } else { - s.add(new DecNumber(buffer, offset, 4, EFFECT_SPECIAL)); - } - break; - - case 109: // Paralyze - s.add(new Bitmap(buffer, offset, 4, "Effect", new String[] {"Normal", "Fake petrification"})); - break; - - case 145: // Disable spellcasting - s.add(new Bitmap(buffer, offset, 4, "Display message?", AbstractStruct.OPTION_YESNO)); - break; - - case 178: // THAC0 vs. type bonus - case 179: // Damage vs. type bonus - s.add(new DecNumber(buffer, offset, 4, "Value")); - break; - - case 181: // Disallow item type - case 318: // Protection from spell - case 319: // Restrict item (BGEE) - s.add(new StringRef(buffer, offset, "Description note")); - break; - - case 232: // Cast spell on condition - switch (param2) { - case 13: // Time of day - s.add(new IdsBitmap(buffer, offset, 4, EFFECT_SPECIAL, "TIMEODAY.IDS")); - break; - case 15: // State check - s.add(new IdsFlag(buffer, offset, 4, EFFECT_SPECIAL, "STATE.IDS")); - break; - case 21: // Spell State check - s.add(new IdsBitmap(buffer, offset, 4, EFFECT_SPECIAL, "SPLSTATE.IDS")); - break; - default: - s.add(new DecNumber(buffer, offset, 4, EFFECT_SPECIAL)); - } - break; - - case 280: - if (isEEex) { - s.add(new Bitmap(buffer, offset, 4, "EEex: Suppress graphics?", AbstractStruct.OPTION_NOYES)); - } else { - s.add(new DecNumber(buffer, offset, 4, EFFECT_SPECIAL)); - } - break; - - case 290: // Change title - s.add(new IdsBitmap(buffer, offset, 4, "Class override", "CLASS.IDS")); - break; - - case 301: // Critical hit bonus - case 341: // Critical hit effect - case 361: // Cast spell on critical miss - case 362: // Critical miss bonus - s.add(new Bitmap(buffer, offset, 4, "Attack type", - new String[]{"Any attack type", "Melee attack only", "Ranged attack only", - "Magical attack only"})); - break; - - case 324: - if (isEEex) { - s.add(new StringRef(buffer, offset, "EEex: Override strref")); - } else { - s.add(new DecNumber(buffer, offset, 4, EFFECT_SPECIAL)); - } - break; - - case 328: // Set spell state (BGEE/IWDEE) - { - final Bitmap bmp = new Bitmap(buffer, offset, 4, "Mode", new String[]{"IWD mode", "IWD2 mode"}); - s.add(bmp); - if (parent != null && parent instanceof UpdateListener) { - bmp.addUpdateListener((UpdateListener)parent); - } - break; - } - - case 331: // Summon creatures 2 - s.add(new Bitmap(buffer, offset, 4, "Mode", - new String[]{"Use dice", "Use dice", "Use caster level"})); - break; - - case 333: // Static charge - s.add(new DecNumber(buffer, offset, 4, "Delay")); - break; - - case 335: // Seven eyes - s.add(new DecNumber(buffer, offset, 4, "Eye group")); - break; - - case 339: // Alter visual animation effect - s.add(new DecNumber(buffer, offset, 4, "Range")); - break; - - case 344: // Enchantment vs. creature type - s.add(new DecNumber(buffer, offset, 4, "Enchantment")); - break; - - case 345: // Enchantment bonus - s.add(new Bitmap(buffer, offset, 4, "Weapon slot", - new String[]{"Current weapon", "Main hand weapon", - "Off-hand weapon", "Both weapons"})); - break; - - case 346: // Save vs. school bonus - s.add(new PriTypeBitmap(buffer, offset, 4, "School of magic")); - break; - - case 363: // Movement check - s.add(new IdsBitmap(buffer, offset, 4, "Modal state to check", "MODAL.IDS")); - break; - - case 365: // Make unselectable - s.add(new Bitmap(buffer, offset, 4, "Use purple selection color?", AbstractStruct.OPTION_YESNO)); - break; - - case 366: // Apply spell on movement - s.add(new IdsBitmap(buffer, offset, 4, "Modal state to check", "MODAL.IDS")); - break; - - case 401: - if (isEEex) { - s.add(new IdsBitmap(buffer, offset, 4, "Stat", "STATS.IDS")); - } else { - s.add(new DecNumber(buffer, offset, 4, EFFECT_SPECIAL)); - } - break; - - case 405: - if (isEEex) { - s.add(new DecNumber(buffer, offset, 4, "Target config")); - } else { - s.add(new DecNumber(buffer, offset, 4, EFFECT_SPECIAL)); - } - break; - - default: - s.add(new DecNumber(buffer, offset, 4, EFFECT_SPECIAL)); - break; - } - } else if (Profile.getEngine() == Profile.Engine.BG2 || - Profile.getEngine() == Profile.Engine.IWD2) { - if (((Boolean)Profile.getProperty(Profile.Key.IS_GAME_TOBEX))) { - // related to effect stacking behavior - s.add(new DecNumber(buffer, offset, 2, EFFECT_IDENTIFIER)); - s.add(new TextString(buffer, offset + 2, 2, EFFECT_PREFIX)); - } else { - s.add(new DecNumber(buffer, offset, 4, EFFECT_SPECIAL)); - } - } else if (Profile.getEngine() == Profile.Engine.PST) { - switch (effectType) { - case 12: // Damage - s.add(new Flag(buffer, offset, 4, "Specific visual for", - new String[]{"None", "The Nameless One", "Annah", "Grace", "Nordom", - "Vhailor", "Morte", "Dakkon", "Ignus"})); - break; - - default: - s.add(new Unknown(buffer, offset, 4)); - break; - } - } else { - s.add(new Unknown(buffer, offset, 4)); - } - offset += 4; - - return offset; - } -} \ No newline at end of file diff --git a/src/org/infinity/resource/effects/BaseOpcode.java b/src/org/infinity/resource/effects/BaseOpcode.java new file mode 100644 index 000000000..323fbac90 --- /dev/null +++ b/src/org/infinity/resource/effects/BaseOpcode.java @@ -0,0 +1,1378 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.io.IOException; +import java.lang.reflect.Constructor; +import java.lang.reflect.InvocationTargetException; +import java.nio.ByteBuffer; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.EnumMap; +import java.util.HashSet; +import java.util.List; +import java.util.Objects; +import java.util.TreeMap; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.EffectType; +import org.infinity.datatype.Flag; +import org.infinity.datatype.HashBitmap; +import org.infinity.datatype.IsNumeric; +import org.infinity.datatype.ResourceRef; +import org.infinity.datatype.TextString; +import org.infinity.datatype.Unknown; +import org.infinity.datatype.UpdateListener; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Effect2; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; +import org.infinity.util.StringTable; +import org.infinity.util.Table2da; +import org.infinity.util.Table2daCache; +import org.infinity.util.io.ByteBufferOutputStream; +import org.infinity.util.io.StreamUtils; + +/** + * Base class for opcode-handling classes. Derived classes should handle one opcode per class for all game variants. + */ +public class BaseOpcode { + // Total number of opcode definitions. Used internally for optimization purposes. + private static final int NUM_OPCODES = 460; + + // Effect-specific field labels (generic) + public static final String EFFECT_PARAMETER_1 = "Parameter 1"; + public static final String EFFECT_PARAMETER_2 = "Parameter 2"; + public static final String EFFECT_SPECIAL = "Special"; + public static final String EFFECT_IDENTIFIER = "Identifier"; + public static final String EFFECT_PREFIX = "Prefix"; + public static final String EFFECT_TIMING_MODE = "Timing mode"; + public static final String EFFECT_DURATION = "Duration"; + public static final String EFFECT_PROBABILITY_1 = "Probability 1"; + public static final String EFFECT_PROBABILITY_2 = "Probability 2"; + public static final String EFFECT_STRING = "String"; + public static final String EFFECT_RESOURCE = "Resource"; + public static final String EFFECT_DICE_COUNT_MAX_LEVEL = "# dice thrown/maximum level"; + public static final String EFFECT_DICE_SIZE_MIN_LEVEL = "Dice size/minimum level"; + public static final String EFFECT_SAVE_TYPE = "Save type"; + public static final String EFFECT_SAVE_PENALTY = "Save penalty"; + public static final String EFFECT_SAVE_BONUS = "Save bonus"; + public static final String EFFECT_PARAMETER = "Parameter?"; + public static final String EFFECT_DICE_COUNT = "# dice thrown"; + public static final String EFFECT_DICE_SIZE = "Dice size"; + + // Effect-specific field labels (commonly used) + protected static final String EFFECT_AMOUNT = "Amount"; + protected static final String EFFECT_COLOR = "Color"; + protected static final String EFFECT_ICON = "Icon"; + protected static final String EFFECT_LOCATION = "Location"; + protected static final String EFFECT_MODE = "Mode"; + protected static final String EFFECT_MODIFIER_TYPE = "Modifier type"; + protected static final String EFFECT_STAT_VALUE = "Stat value"; + protected static final String EFFECT_TYPE = "Type"; + protected static final String EFFECT_VALUE = "Value"; + + /** Resource type for raw strings. */ + protected static final String RES_TYPE_STRING = "String"; + + /** The string {@code "Default"} for general use. */ + protected static final String STRING_DEFAULT = "Default"; + + /** + * Used in conjunction with {@code getEffectStructure} to address specific fields within an effect structure. + */ + public static enum EffectEntry { + // EFF all versions + // table index abs. structure offset + IDX_OPCODE, OFS_OPCODE, + IDX_TARGET, OFS_TARGET, + IDX_POWER, OFS_POWER, + IDX_PARAM1, OFS_PARAM1, + IDX_PARAM1A, OFS_PARAM1A, + IDX_PARAM1B, OFS_PARAM1B, + IDX_PARAM2, OFS_PARAM2, + IDX_PARAM2A, OFS_PARAM2A, + IDX_PARAM2B, OFS_PARAM2B, + IDX_TIMING, OFS_TIMING, + IDX_RESISTANCE, OFS_RESISTANCE, + IDX_DURATION, OFS_DURATION, + IDX_PROBABILITY1, OFS_PROBABILITY1, + IDX_PROBABILITY2, OFS_PROBABILITY2, + IDX_RESOURCE, OFS_RESOURCE, + IDX_DICETHROWN, OFS_DICETHROWN, + IDX_DICESIDES, OFS_DICESIDES, + IDX_SAVETYPE, OFS_SAVETYPE, + IDX_SAVEBONUS, OFS_SAVEBONUS, + IDX_SPECIAL, OFS_SPECIAL, + // EFF V2.0 only + // table index abs. structure offset + IDX_PRIMARYTYPE, OFS_PRIMARYTYPE, + IDX_UNKNOWN040, OFS_UNKNOWN040, + IDX_PARENTLOWESTLEVEL, OFS_PARENTLOWESTLEVEL, + IDX_PARENTHIGHESTLEVEL, OFS_PARENTHIGHESTLEVEL, + IDX_PARAM3, OFS_PARAM3, + IDX_PARAM4, OFS_PARAM4, + IDX_PARAM5, OFS_PARAM5, + IDX_TIMEAPPLIED, OFS_TIMEAPPLIED, + IDX_RESOURCE2, OFS_RESOURCE2, + IDX_RESOURCE3, OFS_RESOURCE3, + IDX_CASTERX, OFS_CASTERX, + IDX_CASTERY, OFS_CASTERY, + IDX_TARGETX, OFS_TARGETX, + IDX_TARGETY, OFS_TARGETY, + IDX_PARENTRESOURCETYPE, OFS_PARENTRESOURCETYPE, + IDX_PARENTRESOURCE, OFS_PARENTRESOURCE, + IDX_PARENTRESOURCEFLAGS, OFS_PARENTRESOURCEFLAGS, + IDX_PROJECTILE, OFS_PROJECTILE, + IDX_PARENTRESOURCESLOT, OFS_PARENTRESOURCESLOT, + IDX_VARIABLE, OFS_VARIABLE, + IDX_CASTERLEVEL, OFS_CASTERLEVEL, + IDX_FIRSTAPPLY, OFS_FIRSTAPPLY, + IDX_SECONDARYTYPE, OFS_SECONDARYTYPE, + IDX_UNKNOWN0C4, OFS_UNKNOWN0C4, + } + + public static final TreeMap DURATIONS_V1_MAP = new TreeMap<>(); + public static final TreeMap DURATIONS_V2_MAP = new TreeMap<>(); + public static final TreeMap COLOR_LOCATIONS_MAP = new TreeMap<>(); + public static final TreeMap PROJECTILES_IWD_MAP = new TreeMap<>(); + public static final TreeMap INC_TYPES_MAP = new TreeMap<>(); + public static final TreeMap ATTACKS_EE_MAP = new TreeMap(); + + public static final String[] INC_TYPES = { "Increment", "Set", "Set % of" }; + + public static final String[] BUTTON_TYPES = { + "Unknown", "Unknown", "Bard Song", "Cast Spell", "Find Traps", + "Talk", "Unknown", "Guard", "Attack", "Unknown", + "Special Abilities", "Stealth", "Thieving", "Turn Undead", "Use Item", + "Stop", "Unknown", "Unknown", "Unknown", "Unknown", + "Unknown", "Quick Item 1", "Quick Item 2", "Quick Item 3", "Quick Spell 1", + "Quick Spell 2", "Quick Spell 3", "Quick Weapon 1", "Quick Weapon 2", "Quick Weapon 3", + "Quick Weapon 4", "Unknown", "Unknown", "Unknown", "Unknown", + "Unknown", "Unknown", "Unknown", "Unknown", "Unknown", + "Unknown", "Unknown", "Unknown", "Unknown", "Unknown", + "Unknown", "Unknown", "Unknown", "Unknown", "Unknown", + "Unknown", "Unknown", "Unknown", "Unknown", "Unknown", + "Unknown", "Unknown", "Unknown", "Unknown", "Unknown", + "Unknown", "Unknown", "Unknown", "Unknown", "Unknown", + "Unknown", "Unknown", "Unknown", "Unknown", "Unknown", + "Unknown", "Unknown", "Unknown", "Unknown", "Unknown", + "Unknown", "Unknown", "Unknown", "Unknown", "Unknown", + "Unknown", "Unknown", "Unknown", "Unknown", "Unknown", + "Unknown", "Unknown", "Unknown", "Unknown", "Unknown", + "Unknown", "Unknown", "Unknown", "Unknown", "Unknown", + "Unknown", "Unknown", "Unknown", "Unknown", "Unknown", + "None" + }; + + public static final String[] VISUALS = { + // 0..9 + "None", "Hit abjuration", "Hit alteration", "Hit invocation", "Hit necromancy", "Hit conjuration", + "Hit enchantment", "Hit illusion", "Hit divination", "Armor", + // 10..19 + "Spirit armor", "Ghost armor", "Strength", "Confusion", "Shroud of flame", "Death spell", + "Disintegrate", "Power word, silence", "Power word, stun", "Finger of death", + // 20..29 + "Mordenkainen's sword", "Monster summoning 1", "Monster summoning 2", "Monster summoning 3", + "Monster summoning 4", "Monster summoning 5", "Monster summoning 6", "Monster summoning 7", + "Conjure fire elemental", "Conjure earth elemental", + // 30..39 + "Conjure water elemental", "Bless", "Curse", "Prayer", "Recitation", "Cure light wounds", + "Cure moderate wounds", "Cure serious wounds", "Cure critical wounds", "Heal", + // 40..49 + "Animal summoning 1", "Animal summoning 2", "Animal summoning 3", "Slow poison", + "Neutralize poison", "Call lightning", "Static charge", "Remove paralysis", "Free action", + "Miscast magic", + // 50..59 + "Strength of one", "Champion's strength", "Flame strike", "Raise dead", "Resurrection", + "Chaotic commands", "Righteous wrath of the faithful", "Sunray", "Spike stones", + "Dimension door departure", + // 60..69 + "Dimension door arrival", "Cone of cold", "Sol's searing orb", "Hit fire", "Hit cold", + "Hit electricity", "Hit acid", "Hit paralysis", "Malavon's rage", + "Righteous wrath of the faithful ground", + // 70..79 + "Belhifet death", "Portal", "Sunscorch", "Blade barrier (front)", "Blade barrier (back)", + "Circle of bones (front)", "Circle of bones (back)", "Cause light wounds", + "Cause moderate wounds", "Cause serious wounds", + // 80..89 + "Cause critical wounds", "Cause disease", "Hit poison", "Slay living", "Harm", "Destruction", + "Exaltation", "Cloudburst", "Mold touch", "Lower resistance", + // 90..99 + "Cat's grace", "Soul eater", "Smashing wave", "Suffocate", "Abi-dalzim's horrid wilting", + "Mordenkainen's force missiles", "Vitriolic sphere", "Wailing virgin death", "Undead ward", + "Wailing virgin hit", + // 100..109 + "Wylfden's death 1", "Wylfden's death 2", "Dragon's death 1", "Dragon's death 2", + "Monster summoning circle", "Animal summoning circle", "Earth summoning circle", + "Fire summoning circle", "Water summoning circle", "Gedlee's electric loop", + // 110... + "Darktree attack" + }; + + public static final String[] LIGHTING = { + // 0..9 + "Necromancy air", "Necromancy earth", "Necromancy water", "", "Alteration air", + "Alteration earth", "Alteration water", "", "Enchantment air", "Enchantment earth", + // 10..19 + "Enchantment water", "", "Abjuration air", "Abjuration earth", "Abjuration water", "", + "Illusion air", "Illusion earth", "Illusion water", "", + // 20..29 + "Conjure air", "Conjure earth", "Conjure water", "", "Invocation air", "Invocation earth", + "Invocation water", "", "Divination air", "Divination earth", + // 30..39 + "Divination water", "", "Mushroom fire", "Mushroom gray", "Mushroom green", "Shaft fire", + "Shaft light", "Shaft white", "Hit door", "Hit finger of death" + }; + + public static final String[] CRE_TYPES_IWD = { + // 0..9 + "Anyone", "Undead", "Not undead", "Fire-dwelling", "Not fire-dwelling", "Humanoid", + "Not humanoid", "Animal", "Not animal", "Elemental", + // 10..19 + "Not elemental", "Fungus", "Not fungus", "Huge creature", "Not huge creature", "Elf", "Not elf", + "Umber hulk", "Not umber hulk", "Half-elf", + // 20..29 + "Not half-elf", "Humanoid or animal", "Not humanoid or animal", "Blind", "Not blind", + "Cold-dwelling", "Not cold-dwelling", "Golem", "Not golem", "Minotaur", + // 30..39 + "Not minotaur", "Undead or fungus", "Not undead or fungus", "Good", "Not good", "Neutral", + "Not neutral", "Evil", "Not evil", "Paladin", + // 40..49 + "Not paladin", "Same moral alignment as source", "Not same moral alignment as source", "Source", + "Not source", "Water-dwelling", "Not water-dwelling", "Breathing", "Not breathing", "Allies", + // 50..59 + "Not allies", "Enemies", "Not enemies", "Fire or cold dwelling", "Not fire or cold dwelling", + "Unnatural", "Not unnatural", "Male", "Not male", "Lawful", + // 60..69 + "Not lawful", "Chaotic", "Not chaotic", "Evasion check", "Orc", "Not orc", "Deaf", "Not deaf", + "Summoned creature", "Not summoned creature", + // 70..79 + "Mind flayer", "Not mind flayer", "Silenced", "Not silenced", "Intelligence less than", + "Intelligence greater than", "Intelligence less than or equal to", + "Intelligence greater than or equal to", "Skald", "Not skald", + // 80..89 + "Near enemies", "Not near enemies", "Drow", "Not drow", "Gray dwarf", "Not gray dwarf", + "Daytime", "Not daytime", "Outdoor", "Not outdoor", + // 90.. + "Keg", "Not keg", "Outsider", "Not outsider" + }; + + public static final String[] CRE_TYPES_IWD2 = { + // 0..9 + "Anyone", "Undead", "Not undead", "Fire-dwelling", "Not fire-dwelling", "Humanoid", + "Not humanoid", "Animal", "Not animal", "Elemental", + // 10..19 + "Not elemental", "Fungus", "Not fungus", "Huge creature", "Not huge creature", "Elf", "Not elf", + "Umber hulk", "Not umber hulk", "Half-elf", + // 20..29 + "Not half-elf", "Humanoid or animal", "Not humanoid or animal", "Blind", "Not blind", + "Cold-dwelling", "Not cold-dwelling", "Golem", "Not golem", "Minotaur", + // 30..39 + "Not minotaur", "Undead or fungus", "Not undead or fungus", "Good", "Not good", "Neutral", + "Not neutral", "Evil", "Not evil", "Paladin", + // 40..49 + "Not paladin", "Same moral alignment as source", "Not same moral alignment as source", "Source", + "Not source", "Water-dwelling", "Not water-dwelling", "Breathing", "Not breathing", "Allies", + // 50..59 + "Not allies", "Enemies", "Not enemies", "Fire or cold dwelling", "Not fire or cold dwelling", + "Unnatural", "Not unnatural", "Male", "Not male", "Lawful", + // 60..69 + "Not lawful", "Chaotic", "Not chaotic", "Orc", "Not orc", "Deaf", "Not deaf", "Same alignment", + "Not same alignment", "Allied and same alignment", + // 70..79 + "Not allied and same alignment", "HP greater than value", "HP less than value", "Drow", "Not drow", + "Gray dwarf", "Not gray dwarf", "Summoned creature", "Not summoned creature", "Goblin", + // 80..89 + "Not goblin", "Giant", "Not giant", "Troll", "Not troll", "Keg", "Not keg", "Human", "Not human", + "Yuan-ti", + // 90.. + "Not yuan-ti", "Outsider", "Not outsider" + }; + + public static final String[] SUMMON_ANIMS = { + "No animation", "Monster summoning circle", "Animal summoning circle", + "Earth summoning circle", "Fire summoning circle", "Water summoning circle", "", "Puff of smoke" + }; + + public static final String[] SPARKLE_COLORS = { + "", "Black", "Blue", "Chromatic", "Gold", "Green", "Purple", "Red", "White", "Ice", "Stone", "Magenta", "Orange" + }; + + public static final String[] AC_TYPES = { + "All weapons", "Crushing weapons", "Missile weapons", "Piercing weapons", "Slashing weapons", + "Set base AC to value" + }; + + public static final String[] DAMAGE_TYPES = { + "All", "Fire damage", "Cold damage", "Electricity damage", "Acid damage", "Magic damage", "Poison damage", + "Slashing damage", "Piercing damage", "Crushing damage", "Missile damage" + }; + + public static final String[] BUTTONS = { + "Stealth", "Thieving", "Spell select", "Quick spell 1", "Quick spell 2", "Quick spell 3", "Turn undead", "Talk", + "Use item", "Quick item 1", "", "Quick item 2", "Quick item 3", "Special abilities" + }; + + public static final String[] BUTTONS_IWD2 = { + "Stealth", "Thieving", "Cast spell", "Quick spell 0", "Quick spell 1", "Quick spell 2", "Quick spell 3", + "Quick spell 4", "Quick spell 5", "Quick spell 6", "Quick spell 7", "Quick spell 8", "Bard song", "Quick song 0", + "Quick song 1", "Quick song 2", "Quick song 3", "Quick song 4", "Quick song 5", "Quick song 6", "Quick song 7", + "Quick song 8", "Quick skill 0", "Quick skill 1", "Quick skill 2", "Quick skill 3", "Quick skill 4", + "Quick skill 5", "Quick skill 6", "Quick skill 7", "Quick skill 8" + }; + + public static final String[] ATTACKS = { + "0 attacks per round", "1 attack per round", + "2 attacks per round", "3 attacks per round", + "4 attacks per round", "5 attacks per round", + "0.5 attack per round", "1.5 attacks per round", + "2.5 attacks per round", "3.5 attacks per round", + "4.5 attacks per round" + }; + + public static final String[] SUMMON_CONTROLS = { + "Match target", "Match target", "From CRE file", "Match target", "From CRE file", "Hostile", "From CRE file", "", + "From CRE file" + }; + + public static final String[] REGEN_TYPES = { + "Amount HP per second", "Amount HP percentage per second", "Amount HP per second", "1 HP per amount seconds", + "Parameter3 HP per amount seconds" + }; + + public static final String[] REGEN_TYPES_IWD = { + "Amount HP per second", "Amount HP percentage per second", "Amount HP per second", "1 HP per amount seconds", + "Amount HP per round" + }; + + public static final String[] SAVE_TYPES = { + "No save", "Spell", "Breath weapon", "Paralyze/Poison/Death", "Rod/Staff/Wand", "Petrify/Polymorph", + null, null, null, null, null, + "EE: Ignore primary target*;Line AoE projectile doesn't affect end target", + "EE: Ignore secondary target*;Line AoE projectile doesn't affect bystanders", + null, null, null, null, null, null, null, null, null, null, null, null, + "EE/Ex: Bypass mirror image*;Affects only opcodes 12 and 25", "EE: Ignore difficulty*;Affects only opcode 12" + }; + + public static final String[] SAVE_TYPES_TOBEX = { + "No save", "Spell", "Breath weapon", "Paralyze/Poison/Death", "Rod/Staff/Wand", "Petrify/Polymorph", + null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, + "EE/Ex: Bypass mirror image", "Ex: Limit stacking", "Ex: Suspend effect application (internal)" + }; + + public static final String[] SAVE_TYPES_IWD2 = {"No save", null, null, "Fortitude", "Reflex", "Will"}; + + public static final String[] SPELL_STATES = { + "Chaotic Command", "Miscast Magic", "Pain", "Greater Malison", "Blood Rage", "Cat's Grace", "Mold Touch", + "Shroud of Flame" + }; + + // Global list of available opcode classes. They are used to initialize game-specific lists of opcode instances. + private static final HashSet> OPCODE_CLASSES = new HashSet<>((int)(NUM_OPCODES / .75) + 5); + + private static TreeMap opcodeList; + private static String[] effectNames; + private static String[] portraitIconNames; + + static { + DURATIONS_V1_MAP.put(0L, "Instant/Limited"); + DURATIONS_V1_MAP.put(1L, "Instant/Permanent until death"); + DURATIONS_V1_MAP.put(2L, "Instant/While equipped"); + DURATIONS_V1_MAP.put(3L, "Delay/Limited"); + DURATIONS_V1_MAP.put(4L, "Delay/Permanent"); + DURATIONS_V1_MAP.put(5L, "Delay/While equipped"); + DURATIONS_V1_MAP.put(6L, "Limited after duration"); + DURATIONS_V1_MAP.put(7L, "Permanent after duration"); + DURATIONS_V1_MAP.put(8L, "Equipped after duration"); + DURATIONS_V1_MAP.put(9L, "Instant/Permanent"); + DURATIONS_V1_MAP.put(10L, "Instant/Limited (ticks)"); + + DURATIONS_V2_MAP.put(0L, "Instant/Limited"); + DURATIONS_V2_MAP.put(1L, "Instant/Permanent until death"); + DURATIONS_V2_MAP.put(2L, "Instant/While equipped"); + DURATIONS_V2_MAP.put(3L, "Delay/Limited"); + DURATIONS_V2_MAP.put(4L, "Delay/Permanent"); + DURATIONS_V2_MAP.put(5L, "Delay/While equipped"); + DURATIONS_V2_MAP.put(6L, "Limited after duration"); + DURATIONS_V2_MAP.put(7L, "Permanent after duration"); + DURATIONS_V2_MAP.put(8L, "Equipped after duration"); + DURATIONS_V2_MAP.put(9L, "Instant/Permanent"); + DURATIONS_V2_MAP.put(10L, "Instant/Limited (ticks)"); + DURATIONS_V2_MAP.put(4096L, "Absolute duration"); + + COLOR_LOCATIONS_MAP.put(0x00L, "Armor (grey): Belt/Amulet"); + COLOR_LOCATIONS_MAP.put(0x01L, "Armor (teal): Minor color"); + COLOR_LOCATIONS_MAP.put(0x02L, "Armor (pink): Major color"); + COLOR_LOCATIONS_MAP.put(0x03L, "Armor (yellow): Skin color"); + COLOR_LOCATIONS_MAP.put(0x04L, "Armor (red): Strap/Leather"); + COLOR_LOCATIONS_MAP.put(0x05L, "Armor (blue): Armor/Trimming"); + COLOR_LOCATIONS_MAP.put(0x06L, "Armor (green): Hair"); + COLOR_LOCATIONS_MAP.put(0x10L, "Weapon (grey): Head/blade/staff major"); + COLOR_LOCATIONS_MAP.put(0x11L, "Weapon (teal): Staff minor"); + COLOR_LOCATIONS_MAP.put(0x12L, "Weapon (pink)"); + COLOR_LOCATIONS_MAP.put(0x13L, "Weapon (yellow)"); + COLOR_LOCATIONS_MAP.put(0x14L, "Weapon (red): Grip/staff minor"); + COLOR_LOCATIONS_MAP.put(0x15L, "Weapon (blue): Head/blade minor"); + COLOR_LOCATIONS_MAP.put(0x16L, "Weapon (green)"); + COLOR_LOCATIONS_MAP.put(0x20L, "Shield (grey): Hub"); + COLOR_LOCATIONS_MAP.put(0x21L, "Shield (teal): Interior"); + COLOR_LOCATIONS_MAP.put(0x22L, "Shield (pink): Panel"); + COLOR_LOCATIONS_MAP.put(0x23L, "Shield (yellow)"); + COLOR_LOCATIONS_MAP.put(0x24L, "Shield (red): Grip"); + COLOR_LOCATIONS_MAP.put(0x25L, "Shield (blue): Body/trim"); + COLOR_LOCATIONS_MAP.put(0x26L, "Shield (green)"); + COLOR_LOCATIONS_MAP.put(0x30L, "Helmet (grey): Wings"); + COLOR_LOCATIONS_MAP.put(0x31L, "Helmet (teal): Detail"); + COLOR_LOCATIONS_MAP.put(0x32L, "Helmet (pink): Plume"); + COLOR_LOCATIONS_MAP.put(0x33L, "Helmet (yellow)"); + COLOR_LOCATIONS_MAP.put(0x34L, "Helmet (red): Face"); + COLOR_LOCATIONS_MAP.put(0x35L, "Helmet (blue): Exterior"); + COLOR_LOCATIONS_MAP.put(0x36L, "Helmet (green)"); + COLOR_LOCATIONS_MAP.put(0xffL, "Character color"); + + PROJECTILES_IWD_MAP.put(0L, "Instant"); + PROJECTILES_IWD_MAP.put(1L, "Arrow"); + PROJECTILES_IWD_MAP.put(2L, "Arrow Exploding"); + PROJECTILES_IWD_MAP.put(3L, "Arrow Flaming"); + PROJECTILES_IWD_MAP.put(4L, "Arrow Heavy*"); + PROJECTILES_IWD_MAP.put(5L, "Arrow (Non-Magical)"); + PROJECTILES_IWD_MAP.put(6L, "Axe"); + PROJECTILES_IWD_MAP.put(7L, "Axe Exploding"); + PROJECTILES_IWD_MAP.put(8L, "Axe Flaming"); + PROJECTILES_IWD_MAP.put(9L, "Axe Heavy*"); + PROJECTILES_IWD_MAP.put(10L, "Axe (Non-Magical)"); + PROJECTILES_IWD_MAP.put(11L, "Bolt"); + PROJECTILES_IWD_MAP.put(12L, "Bolt Exploding"); + PROJECTILES_IWD_MAP.put(13L, "Bolt Flaming"); + PROJECTILES_IWD_MAP.put(14L, "Bolt Heavy*"); + PROJECTILES_IWD_MAP.put(15L, "Bolt (Non-Magical)"); + PROJECTILES_IWD_MAP.put(16L, "Bullet"); + PROJECTILES_IWD_MAP.put(17L, "Bullet Exploding"); + PROJECTILES_IWD_MAP.put(18L, "Bullet Flaming"); + PROJECTILES_IWD_MAP.put(19L, "Bullet Heavy*"); + PROJECTILES_IWD_MAP.put(20L, "Bullet (Non-Magical)"); + PROJECTILES_IWD_MAP.put(26L, "Dagger*"); + PROJECTILES_IWD_MAP.put(27L, "Dagger Exploding"); + PROJECTILES_IWD_MAP.put(28L, "Dagger Flaming"); + PROJECTILES_IWD_MAP.put(29L, "Dagger Heavy"); + PROJECTILES_IWD_MAP.put(30L, "Dagger (Non-Magical)"); + PROJECTILES_IWD_MAP.put(31L, "Dart"); + PROJECTILES_IWD_MAP.put(32L, "Dart Exploding"); + PROJECTILES_IWD_MAP.put(33L, "Dart Flaming"); + PROJECTILES_IWD_MAP.put(34L, "Dart Heavy*"); + PROJECTILES_IWD_MAP.put(35L, "Dart (Non-Magical)"); + PROJECTILES_IWD_MAP.put(36L, "Magic Missile"); + PROJECTILES_IWD_MAP.put(37L, "Fireball"); + PROJECTILES_IWD_MAP.put(39L, "Lightning Bolt"); + PROJECTILES_IWD_MAP.put(41L, "Sleep"); + PROJECTILES_IWD_MAP.put(55L, "Spear"); + PROJECTILES_IWD_MAP.put(56L, "Spear Exploding"); + PROJECTILES_IWD_MAP.put(57L, "Spear Flaming"); + PROJECTILES_IWD_MAP.put(58L, "Spear Heaby"); + PROJECTILES_IWD_MAP.put(59L, "Spear (Non-Magical)"); + PROJECTILES_IWD_MAP.put(62L, "Web Travel"); + PROJECTILES_IWD_MAP.put(63L, "Web Ground"); + PROJECTILES_IWD_MAP.put(64L, "Gaze"); + PROJECTILES_IWD_MAP.put(65L, "Holy Might"); + PROJECTILES_IWD_MAP.put(66L, "Flame Strike"); + PROJECTILES_IWD_MAP.put(67L, "Magic Missile 1"); + PROJECTILES_IWD_MAP.put(68L, "Magic Missile 2"); + PROJECTILES_IWD_MAP.put(69L, "Magic Missile 3"); + PROJECTILES_IWD_MAP.put(70L, "Magic Missile 4"); + PROJECTILES_IWD_MAP.put(71L, "Magic Missile 5"); + PROJECTILES_IWD_MAP.put(72L, "Magic Missile 6"); + PROJECTILES_IWD_MAP.put(73L, "Magic Missile 7"); + PROJECTILES_IWD_MAP.put(74L, "Magic Missile 8"); + PROJECTILES_IWD_MAP.put(75L, "Magic Missile 9"); + PROJECTILES_IWD_MAP.put(76L, "Magic Missile 10"); + PROJECTILES_IWD_MAP.put(94L, "Cloud"); + PROJECTILES_IWD_MAP.put(95L, "Skull Trap"); + PROJECTILES_IWD_MAP.put(96L, "Colour Spray"); + PROJECTILES_IWD_MAP.put(97L, "Ice Storm"); + PROJECTILES_IWD_MAP.put(98L, "Fire Wall"); + PROJECTILES_IWD_MAP.put(99L, "Glyph"); + PROJECTILES_IWD_MAP.put(100L, "Grease"); + PROJECTILES_IWD_MAP.put(101L, "Flame Arrow Green"); + PROJECTILES_IWD_MAP.put(102L, "Flame Arrow Blue"); + PROJECTILES_IWD_MAP.put(103L, "Fireball Green"); + PROJECTILES_IWD_MAP.put(104L, "FireBall Blue"); + PROJECTILES_IWD_MAP.put(105L, "Potion"); + PROJECTILES_IWD_MAP.put(106L, "Potion Exploding"); + PROJECTILES_IWD_MAP.put(107L, "Acid Blob"); + PROJECTILES_IWD_MAP.put(108L, "Scorcher"); + PROJECTILES_IWD_MAP.put(109L, "Travel Door"); + PROJECTILES_IWD_MAP.put(186L, "Cloudkill"); + PROJECTILES_IWD_MAP.put(187L, "Flame Arrow Ice"); + PROJECTILES_IWD_MAP.put(188L, "Cow"); + PROJECTILES_IWD_MAP.put(189L, "Hold"); + PROJECTILES_IWD_MAP.put(190L, "Scorcher Ice"); + PROJECTILES_IWD_MAP.put(191L, "Acid Blob Mustard"); + PROJECTILES_IWD_MAP.put(192L, "Acid Blob Grey"); + PROJECTILES_IWD_MAP.put(193L, "Acid Blob Ochre"); + PROJECTILES_IWD_MAP.put(217L, "Icewind Magic Missile"); + PROJECTILES_IWD_MAP.put(313L, "Modenkainen's Force Missiles"); + PROJECTILES_IWD_MAP.put(345L, "Sekolah's Fire"); + + INC_TYPES_MAP.put(0L, "Increment"); + INC_TYPES_MAP.put(1L, "Set"); + INC_TYPES_MAP.put(2L, "Set % of"); + INC_TYPES_MAP.put(5L, "Multiply %"); + + ATTACKS_EE_MAP.put(-10L, "-4.5 attack per round"); + ATTACKS_EE_MAP.put(-9L, "-3.5 attack per round"); + ATTACKS_EE_MAP.put(-8L, "-2.5 attack per round"); + ATTACKS_EE_MAP.put(-7L, "-1.5 attack per round"); + ATTACKS_EE_MAP.put(-6L, "-0.5 attack per round"); + ATTACKS_EE_MAP.put(-5L, "-5 attacks per round"); + ATTACKS_EE_MAP.put(-4L, "-4 attacks per round"); + ATTACKS_EE_MAP.put(-3L, "-3 attacks per round"); + ATTACKS_EE_MAP.put(-2L, "-2 attacks per round"); + ATTACKS_EE_MAP.put(-1L, "-1 attack per round"); + ATTACKS_EE_MAP.put(0L, "0 attacks per round"); + ATTACKS_EE_MAP.put(1L, "1 attack per round"); + ATTACKS_EE_MAP.put(2L, "2 attacks per round"); + ATTACKS_EE_MAP.put(3L, "3 attacks per round"); + ATTACKS_EE_MAP.put(4L, "4 attacks per round"); + ATTACKS_EE_MAP.put(5L, "5 attacks per round"); + ATTACKS_EE_MAP.put(6L, "0.5 attack per round"); + ATTACKS_EE_MAP.put(7L, "1.5 attacks per round"); + ATTACKS_EE_MAP.put(8L, "2.5 attacks per round"); + ATTACKS_EE_MAP.put(9L, "3.5 attacks per round"); + ATTACKS_EE_MAP.put(10L, "4.5 attacks per round"); + } + + private int id; + private String name; + + /** One-time initialization of opcode classes. */ + public static void initOpcodes() { + if (OPCODE_CLASSES.isEmpty()) { + // Using a for-loop is not very efficient, but shouldn't produce a noticeable delay in this case. + for (int id = 0; id < 1000; id++) { + try { + Class cls = Class.forName(String.format("%s.Opcode%03d", BaseOpcode.class.getPackage().getName(), id)); + OPCODE_CLASSES.add(cls.asSubclass(BaseOpcode.class)); + } catch (ClassNotFoundException e) { + // speeding up opcode detection + if (id >= NUM_OPCODES) { + break; + } + } + } + } + } + + /** Clears all game-specific data. */ + public static void reset() { + opcodeList = null; + effectNames = null; + portraitIconNames = null; + DefaultOpcode.clearCache(); + } + + /** + * Returns an array with the names of all available opcodes for the current game. + * + * @return String array with opcode names. + */ + public static synchronized String[] getEffectNames() { + if (effectNames == null) { + final List names = new ArrayList<>(); + + // finding highest supported opcode id for the current game + final BaseOpcode lastOpcode = getOpcodeMap().values().stream().max((a, b) -> { + final int ra = a.isAvailable() ? a.getId() : -1; + final int rb = b.isAvailable() ? b.getId() : -1; + return ra - rb; + }).orElse(null); + int maxOpcodeId = (lastOpcode != null) ? lastOpcode.getId() : Integer.MAX_VALUE; + + // collecting opcode names + for (final Integer id : getOpcodeMap().keySet()) { + if (id > maxOpcodeId) { + break; + } + final BaseOpcode opcode = getOpcodeMap().get(id); + while (names.size() < opcode.getId()) { + names.add(DefaultOpcode.getDefaultName()); + } + names.add(opcode.getName()); + } + + effectNames = names.toArray(new String[names.size()]); + } + return effectNames; + } + + /** + * Returns the array with portrait icon names. + * + * @return String array with icon names. + */ + public static String[] getPortraitIconNames() { + return getPortraitIconNames(null); + } + + /** + * Returns the array with portrait icon names. + * + * @param defaultName Optional custom name for the first entry (index 0). Specify {@code null} to ignore. + * @return String array with icon names. + */ + public static synchronized String[] getPortraitIconNames(String defaultName) { + if (portraitIconNames == null) { + if (Profile.getGame() != Profile.Game.PSTEE && Profile.getGame() != Profile.Game.PST) { + try { + Table2da table = Objects.requireNonNull(Table2daCache.get("STATDESC.2DA")); + // first pass: determine highest icon index + int maxIndex = -1; + for (int row = 0, rowCount = table.getRowCount(); row < rowCount; row++) { + try { + int index = Integer.parseInt(table.get(row, 0)); + maxIndex = Math.max(maxIndex, index); + } catch (NumberFormatException nfe) { + } + } + + // second pass: collect icon descriptions + if (maxIndex >= 0) { + portraitIconNames = new String[maxIndex + 1]; + for (int row = 0, rowCount = table.getRowCount(); row < rowCount; row++) { + try { + int index = Integer.parseInt(table.get(row, 0)); + int strref = Integer.parseInt(table.get(row, 1)); + if (index >= 0 && strref >= 0) { + portraitIconNames[index] = StringTable.getStringRef(strref); + } + } catch (NumberFormatException nfe) { + nfe.printStackTrace(); + } + } + } + } catch (NullPointerException npe) { + npe.printStackTrace(); + } + } + + if (portraitIconNames == null) { + portraitIconNames = new String[] { STRING_DEFAULT }; + } + } + + String[] retVal; + if (defaultName != null && portraitIconNames.length > 0) { + retVal = Arrays.copyOf(portraitIconNames, portraitIconNames.length); + retVal[0] = defaultName; + } else { + retVal = portraitIconNames; + } + return retVal; + } + + /** Returns the save type flags description table depending on the current game. */ + public static String[] getSaveType() { + if (Profile.getEngine() == Profile.Engine.IWD2) { + return SAVE_TYPES_IWD2; + } else if ((Boolean)Profile.getProperty(Profile.Key.IS_GAME_TOBEX)) { + return SAVE_TYPES_TOBEX; + } else { + return SAVE_TYPES; + } + } + + /** + * Creates and returns an index/offset map of the current effect structure which can be used to address specific + * fields within the effect. + * + * @param struct The effect structure to map. + * @return A map containing table indices and structure offsets, starting with the opcode field. + * @throws Exception If struct doesn't contain a valid effect structure. + */ + public static EnumMap getEffectStructure(AbstractStruct struct) throws Exception { + if (struct != null) { + EffectType effType = (EffectType)struct.getAttribute(EffectType.EFFECT_TYPE); + if (effType != null) { + final EnumMap map = new EnumMap<>(EffectEntry.class); + boolean isVersion1 = (effType.getSize() == 2); + int ofsOpcode = effType.getOffset(); + int idxOpcode = struct.getFields().indexOf(struct.getAttribute(ofsOpcode)); + if (isVersion1 && struct.getSize() >= 0x30) { + // EFF V1.0 + map.put(EffectEntry.IDX_OPCODE, idxOpcode); + map.put(EffectEntry.OFS_OPCODE, ofsOpcode); + map.put(EffectEntry.IDX_TARGET, idxOpcode + 1); + map.put(EffectEntry.OFS_TARGET, ofsOpcode + 0x02); + map.put(EffectEntry.IDX_POWER, idxOpcode + 2); + map.put(EffectEntry.OFS_POWER, ofsOpcode + 0x03); + map.put(EffectEntry.IDX_PARAM1, idxOpcode + 3); + map.put(EffectEntry.OFS_PARAM1, ofsOpcode + 0x04); + map.put(EffectEntry.IDX_PARAM1A, idxOpcode + 3); + map.put(EffectEntry.OFS_PARAM1A, ofsOpcode + 0x04); + map.put(EffectEntry.IDX_PARAM1B, idxOpcode + 4); + map.put(EffectEntry.OFS_PARAM1B, ofsOpcode + 0x06); + map.put(EffectEntry.IDX_PARAM2, idxOpcode + 4); + map.put(EffectEntry.OFS_PARAM2, ofsOpcode + 0x08); + map.put(EffectEntry.IDX_PARAM2A, idxOpcode + 4); + map.put(EffectEntry.OFS_PARAM2A, ofsOpcode + 0x08); + map.put(EffectEntry.IDX_PARAM2B, idxOpcode + 5); + map.put(EffectEntry.OFS_PARAM2B, ofsOpcode + 0x0a); + map.put(EffectEntry.IDX_TIMING, idxOpcode + 5); + map.put(EffectEntry.OFS_TIMING, ofsOpcode + 0x0C); + map.put(EffectEntry.IDX_RESISTANCE, idxOpcode + 6); + map.put(EffectEntry.OFS_RESISTANCE, ofsOpcode + 0x0D); + map.put(EffectEntry.IDX_DURATION, idxOpcode + 7); + map.put(EffectEntry.OFS_DURATION, ofsOpcode + 0x0E); + map.put(EffectEntry.IDX_PROBABILITY1, idxOpcode + 8); + map.put(EffectEntry.OFS_PROBABILITY1, ofsOpcode + 0x12); + map.put(EffectEntry.IDX_PROBABILITY2, idxOpcode + 9); + map.put(EffectEntry.OFS_PROBABILITY2, ofsOpcode + 0x13); + map.put(EffectEntry.IDX_RESOURCE, idxOpcode + 10); + map.put(EffectEntry.OFS_RESOURCE, ofsOpcode + 0x14); + map.put(EffectEntry.IDX_DICETHROWN, idxOpcode + 11); + map.put(EffectEntry.OFS_DICETHROWN, ofsOpcode + 0x1C); + map.put(EffectEntry.IDX_DICESIDES, idxOpcode + 12); + map.put(EffectEntry.OFS_DICESIDES, ofsOpcode + 0x20); + map.put(EffectEntry.IDX_SAVETYPE, idxOpcode + 13); + map.put(EffectEntry.OFS_SAVETYPE, ofsOpcode + 0x24); + map.put(EffectEntry.IDX_SAVEBONUS, idxOpcode + 14); + map.put(EffectEntry.OFS_SAVEBONUS, ofsOpcode + 0x28); + map.put(EffectEntry.IDX_SPECIAL, idxOpcode + 15); + map.put(EffectEntry.OFS_SPECIAL, ofsOpcode + 0x2C); + return map; + } else if (!isVersion1 && struct.getSize() >= 0x100) { + // EFF V2.0 + map.put(EffectEntry.IDX_OPCODE, idxOpcode); + map.put(EffectEntry.OFS_OPCODE, ofsOpcode); + map.put(EffectEntry.IDX_TARGET, idxOpcode + 1); + map.put(EffectEntry.OFS_TARGET, ofsOpcode + 0x04); + map.put(EffectEntry.IDX_POWER, idxOpcode + 2); + map.put(EffectEntry.OFS_POWER, ofsOpcode + 0x08); + map.put(EffectEntry.IDX_PARAM1, idxOpcode + 3); + map.put(EffectEntry.OFS_PARAM1, ofsOpcode + 0x0C); + map.put(EffectEntry.IDX_PARAM1A, idxOpcode + 3); + map.put(EffectEntry.OFS_PARAM1A, ofsOpcode + 0x0C); + map.put(EffectEntry.IDX_PARAM1B, idxOpcode + 4); + map.put(EffectEntry.OFS_PARAM1B, ofsOpcode + 0x0E); + map.put(EffectEntry.IDX_PARAM2, idxOpcode + 4); + map.put(EffectEntry.OFS_PARAM2, ofsOpcode + 0x10); + map.put(EffectEntry.IDX_PARAM2A, idxOpcode + 4); + map.put(EffectEntry.OFS_PARAM2A, ofsOpcode + 0x10); + map.put(EffectEntry.IDX_PARAM2B, idxOpcode + 5); + map.put(EffectEntry.OFS_PARAM2B, ofsOpcode + 0x12); + map.put(EffectEntry.IDX_TIMING, idxOpcode + 5); + map.put(EffectEntry.OFS_TIMING, ofsOpcode + 0x14); + map.put(EffectEntry.IDX_DURATION, idxOpcode + 6); + map.put(EffectEntry.OFS_DURATION, ofsOpcode + 0x18); + map.put(EffectEntry.IDX_PROBABILITY1, idxOpcode + 7); + map.put(EffectEntry.OFS_PROBABILITY1, ofsOpcode + 0x1C); + map.put(EffectEntry.IDX_PROBABILITY2, idxOpcode + 8); + map.put(EffectEntry.OFS_PROBABILITY2, ofsOpcode + 0x1E); + map.put(EffectEntry.IDX_RESOURCE, idxOpcode + 9); + map.put(EffectEntry.OFS_RESOURCE, ofsOpcode + 0x20); + map.put(EffectEntry.IDX_DICETHROWN, idxOpcode + 10); + map.put(EffectEntry.OFS_DICETHROWN, ofsOpcode + 0x28); + map.put(EffectEntry.IDX_DICESIDES, idxOpcode + 11); + map.put(EffectEntry.OFS_DICESIDES, ofsOpcode + 0x2C); + map.put(EffectEntry.IDX_SAVETYPE, idxOpcode + 12); + map.put(EffectEntry.OFS_SAVETYPE, ofsOpcode + 0x30); + map.put(EffectEntry.IDX_SAVEBONUS, idxOpcode + 13); + map.put(EffectEntry.OFS_SAVEBONUS, ofsOpcode + 0x34); + map.put(EffectEntry.IDX_SPECIAL, idxOpcode + 14); + map.put(EffectEntry.OFS_SPECIAL, ofsOpcode + 0x38); + map.put(EffectEntry.IDX_PRIMARYTYPE, idxOpcode + 15); + map.put(EffectEntry.OFS_PRIMARYTYPE, ofsOpcode + 0x3C); + map.put(EffectEntry.IDX_UNKNOWN040, idxOpcode + 16); + map.put(EffectEntry.OFS_UNKNOWN040, ofsOpcode + 0x40); + map.put(EffectEntry.IDX_PARENTLOWESTLEVEL, idxOpcode + 17); + map.put(EffectEntry.OFS_PARENTLOWESTLEVEL, ofsOpcode + 0x44); + map.put(EffectEntry.IDX_PARENTHIGHESTLEVEL, idxOpcode + 18); + map.put(EffectEntry.OFS_PARENTHIGHESTLEVEL, ofsOpcode + 0x48); + map.put(EffectEntry.IDX_RESISTANCE, idxOpcode + 19); + map.put(EffectEntry.OFS_RESISTANCE, ofsOpcode + 0x4C); + map.put(EffectEntry.IDX_PARAM3, idxOpcode + 20); + map.put(EffectEntry.OFS_PARAM3, ofsOpcode + 0x50); + map.put(EffectEntry.IDX_PARAM4, idxOpcode + 21); + map.put(EffectEntry.OFS_PARAM4, ofsOpcode + 0x54); + map.put(EffectEntry.IDX_PARAM5, idxOpcode + 22); + map.put(EffectEntry.OFS_PARAM5, ofsOpcode + 0x58); + map.put(EffectEntry.IDX_TIMEAPPLIED, idxOpcode + 23); + map.put(EffectEntry.OFS_TIMEAPPLIED, ofsOpcode + 0x5c); + map.put(EffectEntry.IDX_RESOURCE2, idxOpcode + 24); + map.put(EffectEntry.OFS_RESOURCE2, ofsOpcode + 0x60); + map.put(EffectEntry.IDX_RESOURCE3, idxOpcode + 25); + map.put(EffectEntry.OFS_RESOURCE3, ofsOpcode + 0x68); + map.put(EffectEntry.IDX_CASTERX, idxOpcode + 26); + map.put(EffectEntry.OFS_CASTERX, ofsOpcode + 0x70); + map.put(EffectEntry.IDX_CASTERY, idxOpcode + 27); + map.put(EffectEntry.OFS_CASTERY, ofsOpcode + 0x74); + map.put(EffectEntry.IDX_TARGETX, idxOpcode + 28); + map.put(EffectEntry.OFS_TARGETX, ofsOpcode + 0x78); + map.put(EffectEntry.IDX_TARGETY, idxOpcode + 29); + map.put(EffectEntry.OFS_TARGETY, ofsOpcode + 0x7C); + map.put(EffectEntry.IDX_PARENTRESOURCETYPE, idxOpcode + 30); + map.put(EffectEntry.OFS_PARENTRESOURCETYPE, ofsOpcode + 0x80); + map.put(EffectEntry.IDX_PARENTRESOURCE, idxOpcode + 31); + map.put(EffectEntry.OFS_PARENTRESOURCE, ofsOpcode + 0x84); + map.put(EffectEntry.IDX_PARENTRESOURCEFLAGS, idxOpcode + 32); + map.put(EffectEntry.OFS_PARENTRESOURCEFLAGS, ofsOpcode + 0x8C); + map.put(EffectEntry.IDX_PROJECTILE, idxOpcode + 33); + map.put(EffectEntry.OFS_PROJECTILE, ofsOpcode + 0x90); + map.put(EffectEntry.IDX_PARENTRESOURCESLOT, idxOpcode + 34); + map.put(EffectEntry.OFS_PARENTRESOURCESLOT, ofsOpcode + 0x94); + map.put(EffectEntry.IDX_VARIABLE, idxOpcode + 35); + map.put(EffectEntry.OFS_VARIABLE, ofsOpcode + 0x98); + map.put(EffectEntry.IDX_CASTERLEVEL, idxOpcode + 36); + map.put(EffectEntry.OFS_CASTERLEVEL, ofsOpcode + 0xb8); + map.put(EffectEntry.IDX_FIRSTAPPLY, idxOpcode + 37); + map.put(EffectEntry.OFS_FIRSTAPPLY, ofsOpcode + 0xbc); + map.put(EffectEntry.IDX_SECONDARYTYPE, idxOpcode + 38); + map.put(EffectEntry.OFS_SECONDARYTYPE, ofsOpcode + 0xc0); + map.put(EffectEntry.IDX_UNKNOWN0C4, idxOpcode + 39); + map.put(EffectEntry.OFS_UNKNOWN0C4, ofsOpcode + 0xc4); + return map; + } + } + } + throw new Exception("Invalid effect structure specified"); + } + + /** + * Returns the {@code StructEntry} object that is specified by the {@code EffectEntry} argument. + * + * @param struct The structure that contains the requested entry. + * @param id Indicates which effect field to return. + * @return The {@code StructEntry} instance specified by the id. + * @throws Exception If one or more arguments are invalid. + */ + public static StructEntry getEntry(AbstractStruct struct, EffectEntry id) throws Exception + { + StructEntry retVal = null; + final EnumMap map = getEffectStructure(struct); + if (map != null && map.containsKey(id)) { + retVal = getEntryByIndex(struct, map.get(id)); + } + return retVal; + } + + /** + * Returns the StructEntry object at the specified index. Use in conjunction with getEffectStructure. + * + * @param struct The structure that contains the requested entry. + * @param entryIndex The index of the requested entry. + * @return The entry at the specified index + * @throws Exception If one or more arguments are invalid. + */ + public static StructEntry getEntryByIndex(AbstractStruct struct, int entryIndex) throws Exception + { + if (struct != null) { + return struct.getFields().get(entryIndex); + } else { + throw new Exception("Invalid arguments specified"); + } + } + + /** + * Returns the data associated with the specified structure entry. + * + * @param entry The structure entry to fetch data from. + * @return Data as {@code ByteBuffer} object. + */ + public static ByteBuffer getEntryData(StructEntry entry) + { + ByteBuffer bb = StreamUtils.getByteBuffer(entry.getSize()); + try (ByteBufferOutputStream bbos = new ByteBufferOutputStream(bb)) { + entry.write(bbos); + } catch (IOException e) { + e.printStackTrace(); + return null; + } + return bb; + } + + /** + * Convenience function to retrieve data associated with a structure entry within struct. + * + * @param struct The structure that contains the structure entry + * @param id Indicates which effect field to process. + * @return Data as {@code ByteBuffer} object. + */ + public static ByteBuffer getEntryData(AbstractStruct struct, EffectEntry id) + { + if (struct != null) { + try { + EnumMap map = getEffectStructure(struct); + if (map != null && map.containsKey(id)) { + int idx = map.get(id); + if (idx >= 0 && idx < struct.getFields().size()) { + return getEntryData(struct.getFields().get(idx)); + } + } + } catch (Exception e) { + e.printStackTrace(); + } + } + return null; + } + + /** + * Replaces a data entry in struct with the specified new entry. + * + * @param struct The struct which contains the entry specified by entryIndex and entryOffset. + * @param index The index key for the entry within struct. + * @param offset The offset key for the data entry. + * @param newEntry The new entry which replaces the old one. + */ + public static void replaceEntry(AbstractStruct struct, EffectEntry index, EffectEntry offset, + StructEntry newEntry) throws Exception + { + EnumMap map = getEffectStructure(struct); + if (struct != null && newEntry != null && + map != null && map.containsKey(index) && map.containsKey(offset)) { + int idx = map.get(index); + int ofs = map.get(offset); + final List list = struct.getFields(); + if (idx >= 0 && idx < list.size() && + ofs >= struct.getOffset() && ofs < struct.getOffset() + struct.getSize()) { + newEntry.setOffset(ofs); + list.set(idx, newEntry); + } else{ + throw new Exception("Index or offset are out of bounds"); + } + } else { + throw new Exception("Invalid arguments specified"); + } + } + + /** + * Central hub for dynamic opcode specific modifications of effect structures. + * + * @param struct The effect structure to update. + * @return {@code true} if fields within the effect structure have been updated, {@code false} otherwise. + * @throws Exception If the argument doesn't specify a valid effect structure. + */ + public static boolean updateOpcode(AbstractStruct struct) throws Exception { + if (struct != null) { + EffectType effType = (EffectType)getEntry(struct, EffectEntry.IDX_OPCODE); + if (effType != null) { + int opcode = ((IsNumeric)getEntry(struct, EffectEntry.IDX_OPCODE)).getValue(); + return getOpcode(opcode).update(struct); + } + } + return false; + } + + /** + * Public method that creates all the required effect fields based on the given parameters for the given opcode. + * + * @param id Number of the opcode to create an effect structure for. + * @param parent The parent structure. + * @param buffer Buffer containing raw effects data. + * @param offset Buffer offset pointing to the first field after the opcode type field. + * @param list List of field data for the current effect. + * @param isVersion1 {@code true} if the buffer contains data for a version 1 effect, otherwise a version 2 effect is + * assumed. + * @return Offset pointing behind the last initialized effect field. + */ + public static int makeEffectStruct(int id, Datatype parent, ByteBuffer buffer, int offset, + List list, boolean isVersion1) throws Exception { + return getOpcode(id).makeEffectStruct(parent, buffer, offset, list, isVersion1); + } + + /** Returns whether the current game is enhanced by TobEx. */ + protected static boolean isTobEx() { + return Profile.getProperty(Profile.Key.IS_GAME_TOBEX); + } + + /** Returns whether the current game is enhanced by EEEx. */ + protected static boolean isEEEx() { + return Profile.getProperty(Profile.Key.IS_GAME_EEEX); + } + + /** + * Returns the specified opcode instance. Returns a default instance if the requested opcode doesn't exist. + * + * @param id The opcode number. + * @return {@code BaseOpcode} instance of the requested opcode. Returns a default opcode instance for unknown or + * unsupported opcodes. + */ + protected static BaseOpcode getOpcode(int id) { + final BaseOpcode opcode = getOpcodeMap().get(id); + if (opcode != null) { + return opcode; + } else { + return DefaultOpcode.get(id); + } + } + + /** Used internally to return a valid opcode list for the current game. */ + private static synchronized TreeMap getOpcodeMap() { + if (opcodeList == null) { + initOpcodes(); + opcodeList = new TreeMap<>(); + // initializing opcode list + for (final Class cls : OPCODE_CLASSES) { + try { + Constructor ctor = cls.getConstructor(); + if (ctor != null) { + BaseOpcode opcode = ctor.newInstance(); + if (opcode.isAvailable()) { + opcodeList.put(opcode.getId(), opcode); + } + } + } catch (NoSuchMethodException | InvocationTargetException | IllegalAccessException + | InstantiationException e) { + e.printStackTrace(); + } + } + } + return opcodeList; + } + + + /** Returns the opcode index. */ + public int getId() { + return id; + } + + /** Returns the name of the opcode for the current game. */ + public String getName() { + return (name != null) ? name : DefaultOpcode.getDefaultName(); + } + + /** Returns whether the opcode is available in the current game. */ + public boolean isAvailable() { + return name != null; + } + + /** + * Initializes common properties of the opcode. + * + * @param id The opcode index. + * @param name The opcode name. + */ + protected BaseOpcode(int id, String name) { + this.id = id; + this.name = name; + } + + /** + * Creates all the required effect fields based on the given parameters. + * + * @param parent The parent structure. + * @param buffer Buffer containing raw effects data. + * @param offset Buffer offset pointing to the first field after the opcode type field. + * @param list List of field data for the current effect. + * @param isVersion1 {@code true} if the buffer contains data for a version 1 effect, otherwise a version 2 effect is + * assumed. + * @return Offset pointing behind the last initialized effect field. + */ + protected int makeEffectStruct(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) throws Exception { + if (buffer != null && offset >= 0 && list != null) { + buffer.position(); + int param1 = buffer.getInt(); + int param2 = buffer.getInt(); + + // setting parameter 1 and 2 + String resType = makeEffectParams(parent, buffer, offset, list, isVersion1); + offset += 8; + + // setting common fields #1 ("Timing mode" ... "Probability2") + offset = makeEffectCommon1(parent, buffer, offset, list, isVersion1); + + // setting Resource field + offset = makeEffectResource(parent, buffer, offset, list, resType, param1, param2); + + // setting common fields #2 ("Dice" ... "Save bonus") + offset = makeEffectCommon2(parent, buffer, offset, list, isVersion1); + + // setting 'Special' parameter + offset = makeEffectSpecial(parent, buffer, offset, list, resType, param1, param2); + + return offset; + } else { + throw new Exception("Invalid effect parameters"); + } + } + + /** + * Handles initialization of parameter 1 and 2 of the effect structure. + * + * @param parent The parent structure. + * @param buffer Buffer containing raw effects data. + * @param offset Buffer offset pointing to the first field after the opcode type field. + * @param list List of field data for the current effect. + * @param isVersion1 {@code true} if the buffer contains data for a version 1 effect, otherwise a version 2 effect is + * assumed. + * @return Expected resource type(s) for the resource field. Multiple types are separated by colons. + * Returns {@link #EFFECT_STRING} if resource field specifies a literal string. + * Returns {@code null} if resource field is unused. + */ + protected String makeEffectParams(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + String resType; + switch (Profile.getEngine()) { + case BG1: + resType = makeEffectParamsBG1(parent, buffer, offset, list, isVersion1); + break; + case BG2: + resType = makeEffectParamsBG2(parent, buffer, offset, list, isVersion1); + break; + case EE: + resType = makeEffectParamsEE(parent, buffer, offset, list, isVersion1); + break; + case PST: + resType = makeEffectParamsPST(parent, buffer, offset, list, isVersion1); + break; + case IWD: + resType = makeEffectParamsIWD(parent, buffer, offset, list, isVersion1); + break; + case IWD2: + resType = makeEffectParamsIWD2(parent, buffer, offset, list, isVersion1); + break; + default: + resType = makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + return resType; + } + + /** + * Generic implementation for handling parameter 1 and 2 of the effect structure. + * See {@link #makeEffectParams(Datatype, ByteBuffer, int, List, boolean)} for more information. + *

Preferred method to override in derived classes for opcode definitions that cover multiple engines.

+ */ + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_PARAMETER_1)); + list.add(new DecNumber(buffer, offset + 4, 4, EFFECT_PARAMETER_2)); + return null; + } + + /** + * BG1 implementation for handling parameter 1 and 2 of the effect structure. + * See {@link #makeEffectParams(Datatype, ByteBuffer, int, List, boolean)} for more information. + *

Preferred method to override in derived classes for BG1-specific opcode definitions.

+ */ + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + /** + * BG2 implementation for handling parameter 1 and 2 of the effect structure. + * See {@link #makeEffectParams(Datatype, ByteBuffer, int, List, boolean)} for more information. + *

Preferred method to override in derived classes for BG2-specific opcode definitions.

+ */ + protected String makeEffectParamsBG2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + /** + * Enhanced Edition implementation for handling parameter 1 and 2 of the effect structure. + * See {@link #makeEffectParams(Datatype, ByteBuffer, int, List, boolean)} for more information. + *

Preferred method to override in derived classes for EE-specific opcode definitions (all games).

+ */ + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + /** + * PST implementation for handling parameter 1 and 2 of the effect structure. + * See {@link #makeEffectParams(Datatype, ByteBuffer, int, List, boolean)} for more information. + *

Preferred method to override in derived classes for PST-specific opcode definitions.

+ */ + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + /** + * IWD implementation for handling parameter 1 and 2 of the effect structure. + * See {@link #makeEffectParams(Datatype, ByteBuffer, int, List, boolean)} for more information. + *

Preferred method to override in derived classes for IWD-specific opcode definitions.

+ */ + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + /** + * IWD2 implementation for handling parameter 1 and 2 of the effect structure. + * See {@link #makeEffectParams(Datatype, ByteBuffer, int, List, boolean)} for more information. + *

Preferred method to override in derived classes for IWD2-specific opcode definitions.

+ */ + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + /** + * Handles parameter 1 and 2 of the effect structure for unknown opcodes. + * + * @param buffer Buffer containing raw effects data. + * @param offset Buffer offset pointing to the first field after the opcode type field. + * @param list List of field data for the current effect. + * @return Always returns {@code null}. + */ + protected String makeEffectParamsUnknown(ByteBuffer buffer, int offset, List list) { + list.add(new Unknown(buffer, offset, 4)); + list.add(new Unknown(buffer, offset + 4, 4)); + return null; + } + + /** + * Handles initialization of the resource field. + * + * @param parent The parent structure. + * @param buffer Buffer containing raw effects data. + * @param offset Buffer offset pointing to the first field after the opcode type field. + * @param list List of field data for the current effect. + * @param resType Resource type(s) for the resource field. Multiple types are separated by colons. + * Specify {@code #EFFECT_STRING} if resource field specifies a literal string. + * Specify {@code null} if resource field is unused. + * @param param1 Value of the "Parameter 1" field. + * @param param2 Value of the "Parameter 2" field + * @return Offset pointing behind the last initialized effect field. + */ + protected int makeEffectResource(Datatype parent, ByteBuffer buffer, int offset, List list, + String resType, int param1, int param2) { + if (resType != null) { + if (resType.equalsIgnoreCase(EFFECT_STRING)) { + list.add(new TextString(buffer, offset, 8, EFFECT_STRING)); + } else { + list.add(new ResourceRef(buffer, offset, EFFECT_RESOURCE, resType.split(":"))); + } + } else { + list.add(new Unknown(buffer, offset, 8, AbstractStruct.COMMON_UNUSED)); + } + return offset + 8; + } + + /** + * Handles initialization of the first set of common fields ("Timing mode" ... "Probability2"). + * + * @param parent The parent structure. + * @param buffer Buffer containing raw effects data. + * @param offset Buffer offset pointing to the first field after the opcode type field. + * @param list List of field data for the current effect. + * @param isVersion1 {@code true} if the buffer contains data for a version 1 effect, otherwise a version 2 effect is + * assumed. + * @return Offset pointing behind the last initialized effect field. + */ + protected int makeEffectCommon1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + if (isVersion1) { + list.add(new HashBitmap(buffer, offset, 1, EFFECT_TIMING_MODE, DURATIONS_V1_MAP, false)); + list.add(new Bitmap(buffer, offset + 1, 1, Effect2.EFFECT_DISPEL_TYPE, Effect2.DISPEL_ARRAY)); + offset += 2; + } else { + list.add(new HashBitmap(buffer, offset, 4, EFFECT_TIMING_MODE, DURATIONS_V2_MAP, false)); + offset += 4; + } + + list.add(new DecNumber(buffer, offset, 4, EFFECT_DURATION)); + offset += 4; + + if (isVersion1) { + list.add(new DecNumber(buffer, offset, 1, EFFECT_PROBABILITY_1)); + list.add(new DecNumber(buffer, offset + 1, 1, EFFECT_PROBABILITY_2)); + offset += 2; + } else { + list.add(new DecNumber(buffer, offset, 2, EFFECT_PROBABILITY_1)); + list.add(new DecNumber(buffer, offset + 2, 2, EFFECT_PROBABILITY_2)); + offset += 4; + } + + return offset; + } + + /** + * Handles initialization of the second set of common fields ("Dice" ... "Save bonus"). + * + * @param parent The parent structure. + * @param buffer Buffer containing raw effects data. + * @param offset Buffer offset pointing to the first field after the opcode type field. + * @param list List of field data for the current effect. + * @param isVersion1 {@code true} if the buffer contains data for a version 1 effect, otherwise a version 2 effect is + * assumed. + * @return Offset pointing behind the last initialized effect field. + */ + protected int makeEffectCommon2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + final String[] saveType = getSaveType(); + if (isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_DICE_COUNT_MAX_LEVEL)); + list.add(new DecNumber(buffer, offset + 4, 4, EFFECT_DICE_SIZE_MIN_LEVEL)); + if (Profile.getEngine() == Profile.Engine.IWD2) { + list.add(new Flag(buffer, offset + 8, 4, EFFECT_SAVE_TYPE, saveType)); + list.add(new DecNumber(buffer, offset + 12, 4, EFFECT_SAVE_PENALTY)); + } + else { + list.add(new Flag(buffer, offset + 8, 4, EFFECT_SAVE_TYPE, saveType)); + list.add(new DecNumber(buffer, offset + 12, 4, EFFECT_SAVE_BONUS)); + } + } else { + if (Profile.getEngine() == Profile.Engine.IWD2) { + list.add(new Flag(buffer, offset, 4, EFFECT_SAVE_TYPE, saveType)); + list.add(new DecNumber(buffer, offset + 4, 4, EFFECT_SAVE_PENALTY)); + list.add(new DecNumber(buffer, offset + 8, 4, EFFECT_PARAMETER)); + list.add(new DecNumber(buffer, offset + 12, 4, EFFECT_PARAMETER)); + } + else { + list.add(new DecNumber(buffer, offset, 4, EFFECT_DICE_COUNT)); + list.add(new DecNumber(buffer, offset + 4, 4, EFFECT_DICE_SIZE)); + list.add(new Flag(buffer, offset + 8 , 4, EFFECT_SAVE_TYPE, saveType)); + list.add(new DecNumber(buffer, offset + 12, 4, EFFECT_SAVE_BONUS)); + } + } + offset += 16; + + return offset; + } + + /** + * Handles initialization of the "Special" (or "Parameter 2.5") field. + * + * @param parent The parent structure. + * @param buffer Buffer containing raw effects data. + * @param offset Buffer offset pointing to the first field after the opcode type field. + * @param list List of field data for the current effect. + * @param resType Resource type(s) for the resource field. Multiple types are separated by colons. + * Specify {@code #EFFECT_STRING} if resource field specifies a literal string. + * Specify {@code null} if resource field is unused. + * @param param1 Value of the "Parameter 1" field. + * @param param2 Value of the "Parameter 2" field + * @return Offset pointing behind the last initialized effect field. + */ + protected int makeEffectSpecial(Datatype parent, ByteBuffer buffer, int offset, List list, + String resType, int param1, int param2) { + if (Profile.getEngine() == Profile.Engine.BG2 && isTobEx()) { + // related to effect stacking behavior + list.add(new DecNumber(buffer, offset, 2, EFFECT_IDENTIFIER)); + list.add(new TextString(buffer, offset + 2, 2, EFFECT_PREFIX)); + } else { + list.add(new DecNumber(buffer, offset, 4, EFFECT_SPECIAL)); + } + return offset + 4; + } + + /** + * This method is called when effect-related fields have enabled their {@link UpdateListener} for content changes. + * It should be overridden by subclasses that provide content-aware changes to the effect structure. + * + * @param struct The effect structure to update. + * @return {@code true} if fields within the effect structure have been updated, {@code false} otherwise. + * @throws Exception If the argument doesn't specify a valid effect structure. + */ + protected boolean update(AbstractStruct struct) throws Exception { + return false; + } +} diff --git a/src/org/infinity/resource/effects/DefaultOpcode.java b/src/org/infinity/resource/effects/DefaultOpcode.java new file mode 100644 index 000000000..269e1e461 --- /dev/null +++ b/src/org/infinity/resource/effects/DefaultOpcode.java @@ -0,0 +1,49 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.util.HashMap; + +/** + * A generic opcode implementation intended for representation of unknown or invalid opcodes. + */ +public class DefaultOpcode extends BaseOpcode { + private static final HashMap OPCODE_CACHE = new HashMap<>(); + + /** Removes all accumulated default opcode instances from the cache. */ + public static void clearCache() { + OPCODE_CACHE.clear(); + } + + /** Returns the name for an unknown opcode. */ + public static String getDefaultName() { + return "Unknown"; + } + + /** + * Returns the default opcode instance for the specified opcode number. For performance reasons opcode instances + * will be recycled if possible. + * + * @param id Requested opcode number. + * @return {@code DefaultOpcode} instance for the given opcode number. + */ + public static DefaultOpcode get(int id) { + DefaultOpcode retVal = OPCODE_CACHE.get(id); + if (retVal == null) { + retVal = new DefaultOpcode(id); + OPCODE_CACHE.put(id, retVal); + } + return retVal; + } + + @Override + public boolean isAvailable() { + return false; + } + + private DefaultOpcode(int id) { + super(id, getDefaultName()); + } +} diff --git a/src/org/infinity/resource/effects/Opcode000.java b/src/org/infinity/resource/effects/Opcode000.java new file mode 100644 index 000000000..0f2952154 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode000.java @@ -0,0 +1,50 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.Flag; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 0. + */ +public class Opcode000 extends BaseOpcode { + private static final String EFFECT_AC_VALUE = "AC value"; + private static final String EFFECT_BONUS_TO = "Bonus to"; + + private static final String[] TYPE_IWD2 = { "Generic", "Armor", "Deflection", "Shield", "Crushing", "Piercing", + "Slashing", "Missile" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "AC bonus"; + } + + public Opcode000() { + super(0, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_AC_VALUE)); + list.add(new Flag(buffer, offset + 4, 4, EFFECT_BONUS_TO, AC_TYPES)); + return null; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_AC_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_BONUS_TO, TYPE_IWD2)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode001.java b/src/org/infinity/resource/effects/Opcode001.java new file mode 100644 index 000000000..e951fea16 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode001.java @@ -0,0 +1,106 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.Arrays; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.HashBitmap; +import org.infinity.datatype.IsNumeric; +import org.infinity.datatype.UpdateListener; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 1. + */ +public class Opcode001 extends BaseOpcode { + private static final String[] ATTACKS_IWD = Arrays.copyOf(ATTACKS, 6); + private static final String[] INC_TYPES_EE = { INC_TYPES[0], INC_TYPES[1], INC_TYPES[2], "Set final" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Modify attacks per round"; + } + + public Opcode001() { + super(1, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new Bitmap(buffer, offset, 4, EFFECT_VALUE, ATTACKS)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, INC_TYPES)); + return null; + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + int type = buffer.getInt(offset + 4); + switch (type) { + case 0: // Increment + { + final HashBitmap bmp = new HashBitmap(buffer, offset, 4, EFFECT_VALUE, ATTACKS_EE_MAP, false, true); + bmp.setFormatter(bmp.formatterBitmap); + list.add(bmp); + break; + } + case 2: // Set % of + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + break; + default: + list.add(new Bitmap(buffer, offset, 4, EFFECT_VALUE, ATTACKS)); + } + + Bitmap item = new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, INC_TYPES_EE); + if (parent != null && parent instanceof UpdateListener) { + item.addUpdateListener((UpdateListener)parent); + } + list.add(item); + + return null; + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new Bitmap(buffer, offset, 4, EFFECT_VALUE, ATTACKS_IWD)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, INC_TYPES)); + return null; + } + + @Override + protected boolean update(AbstractStruct struct) throws Exception { + if (struct != null && Profile.isEnhancedEdition()) { + int param2 = ((IsNumeric) getEntry(struct, EffectEntry.IDX_PARAM2)).getValue(); + switch (param2) { + case 0: // Increment + { + final HashBitmap bmp = new HashBitmap(getEntryData(struct, EffectEntry.IDX_PARAM1), 0, 4, EFFECT_VALUE, + ATTACKS_EE_MAP, false, true); + bmp.setFormatter(bmp.formatterBitmap); + replaceEntry(struct, EffectEntry.IDX_PARAM1, EffectEntry.OFS_PARAM1, bmp); + break; + } + case 2: // Set % of + replaceEntry(struct, EffectEntry.IDX_PARAM1, EffectEntry.OFS_PARAM1, + new DecNumber(getEntryData(struct, EffectEntry.IDX_PARAM1), 0, 4, EFFECT_VALUE)); + break; + default: + replaceEntry(struct, EffectEntry.IDX_PARAM1, EffectEntry.OFS_PARAM1, + new Bitmap(getEntryData(struct, EffectEntry.IDX_PARAM1), 0, 4, EFFECT_VALUE, ATTACKS)); + } + return true; + } + return false; + } +} diff --git a/src/org/infinity/resource/effects/Opcode002.java b/src/org/infinity/resource/effects/Opcode002.java new file mode 100644 index 000000000..610c24ca5 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode002.java @@ -0,0 +1,35 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 2. + */ +public class Opcode002 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Cure sleep"; + } + + public Opcode002() { + super(2, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode003.java b/src/org/infinity/resource/effects/Opcode003.java new file mode 100644 index 000000000..8b646a0a9 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode003.java @@ -0,0 +1,65 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 3. + */ +public class Opcode003 extends BaseOpcode { + private static final String EFFECT_BERSERK_TYPE = "Berserk type"; + + private static final String[] TYPE_EE = {"Normal", "Constant"}; + private static final String[] TYPE_IWD = {"Normal", "Constant", "Blood rage"}; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Berserk"; + } + + public Opcode003() { + super(3, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_BERSERK_TYPE, TYPE_EE)); + return null; + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_BERSERK_TYPE, TYPE_IWD)); + return null; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_BERSERK_TYPE, TYPE_IWD)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode004.java b/src/org/infinity/resource/effects/Opcode004.java new file mode 100644 index 000000000..4aee0cd29 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode004.java @@ -0,0 +1,35 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 4. + */ +public class Opcode004 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Cure berserk"; + } + + public Opcode004() { + super(4, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode005.java b/src/org/infinity/resource/effects/Opcode005.java new file mode 100644 index 000000000..7623b6da0 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode005.java @@ -0,0 +1,100 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; +import java.util.TreeMap; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.HashBitmap; +import org.infinity.datatype.IdsBitmap; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 5. + */ +public class Opcode005 extends BaseOpcode { + private static final String EFFECT_CREATURE_TYPE = "Creature type"; + private static final String EFFECT_CHARM_TYPE = "Charm type"; + + private static final TreeMap TYPE_CHARM = new TreeMap<>(); + private static final TreeMap TYPE_CHARM_IWD = new TreeMap<>(); + private static final TreeMap TYPE_CHARM_BG = new TreeMap<>(); + + static { + TYPE_CHARM.put(0L, "Charmed (neutral)"); + TYPE_CHARM.put(1L, "Charmed (hostile)"); + TYPE_CHARM.put(2L, "Dire charmed (neutral)"); + TYPE_CHARM.put(3L, "Dire charmed (hostile)"); + + TYPE_CHARM_IWD.putAll(TYPE_CHARM); + TYPE_CHARM_IWD.put(4L, "Controlled"); + TYPE_CHARM_IWD.put(5L, "Thrull (hostile)"); + + TYPE_CHARM_BG.putAll(TYPE_CHARM_IWD); + TYPE_CHARM_BG.put(1000L, "Charmed (neutral, no text)"); + TYPE_CHARM_BG.put(1001L, "Charmed (hostile, no text)"); + TYPE_CHARM_BG.put(1002L, "Dire charmed (neutral, no text)"); + TYPE_CHARM_BG.put(1003L, "Dire charmed (hostile, no text)"); + TYPE_CHARM_BG.put(1004L, "Controlled (no text)"); + TYPE_CHARM_BG.put(1005L, "Thrull (hostile, no text)"); + } + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Charm creature"; + } + + public Opcode005() { + super(5, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new IdsBitmap(buffer, offset, 4, EFFECT_CREATURE_TYPE, "GENERAL.IDS")); + list.add(new HashBitmap(buffer, offset + 4, 4, EFFECT_CHARM_TYPE, TYPE_CHARM, false)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new IdsBitmap(buffer, offset, 4, EFFECT_CREATURE_TYPE, "GENERAL.IDS")); + list.add(new HashBitmap(buffer, offset + 4, 4, EFFECT_CHARM_TYPE, TYPE_CHARM_BG, false)); + return null; + } + + @Override + protected String makeEffectParamsBG2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return makeEffectParamsBG1(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return makeEffectParamsBG1(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new IdsBitmap(buffer, offset, 4, EFFECT_CREATURE_TYPE, "GENERAL.IDS")); + list.add(new HashBitmap(buffer, offset + 4, 4, EFFECT_CHARM_TYPE, TYPE_CHARM_IWD, false)); + return null; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new IdsBitmap(buffer, offset, 4, EFFECT_CREATURE_TYPE, "GENERAL.IDS")); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode006.java b/src/org/infinity/resource/effects/Opcode006.java new file mode 100644 index 000000000..4c570158c --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode006.java @@ -0,0 +1,35 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 6. + */ +public class Opcode006 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Charisma bonus"; + } + + public Opcode006() { + super(6, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, INC_TYPES)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode007.java b/src/org/infinity/resource/effects/Opcode007.java new file mode 100644 index 000000000..4e5c0415b --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode007.java @@ -0,0 +1,35 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.ColorValue; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.HashBitmap; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 7. + */ +public class Opcode007 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Set color"; + } + + public Opcode007() { + super(7, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new ColorValue(buffer, offset, 4, EFFECT_COLOR, false)); + list.add(new HashBitmap(buffer, offset + 4, 4, EFFECT_LOCATION, COLOR_LOCATIONS_MAP, false)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode008.java b/src/org/infinity/resource/effects/Opcode008.java new file mode 100644 index 000000000..568e0ba3e --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode008.java @@ -0,0 +1,45 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.ColorPicker; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.HashBitmap; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 8. + */ +public class Opcode008 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Set color glow solid"; + } + + public Opcode008() { + super(8, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new ColorPicker(buffer, offset, EFFECT_COLOR)); + list.add(new HashBitmap(buffer, offset + 4, 4, EFFECT_LOCATION, COLOR_LOCATIONS_MAP, false)); + return null; + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new ColorPicker(buffer, offset, EFFECT_COLOR)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode009.java b/src/org/infinity/resource/effects/Opcode009.java new file mode 100644 index 000000000..bc8eee00b --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode009.java @@ -0,0 +1,49 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.ColorPicker; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.HashBitmap; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 9. + */ +public class Opcode009 extends BaseOpcode { + private static final String EFFECT_CYCLE_SPEED = "Cycle speed"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Set color glow pulse"; + } + + public Opcode009() { + super(9, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new ColorPicker(buffer, offset, EFFECT_COLOR)); + list.add(new HashBitmap(buffer, offset + 4, 2, EFFECT_LOCATION, COLOR_LOCATIONS_MAP, false)); + list.add(new DecNumber(buffer, offset + 6, 2, EFFECT_CYCLE_SPEED)); + return null; + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new ColorPicker(buffer, offset, EFFECT_COLOR)); + list.add(new DecNumber(buffer, offset + 4, 2, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 6, 2, EFFECT_CYCLE_SPEED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode010.java b/src/org/infinity/resource/effects/Opcode010.java new file mode 100644 index 000000000..fe1fb46f3 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode010.java @@ -0,0 +1,35 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 10. + */ +public class Opcode010 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Constitution bonus"; + } + + public Opcode010() { + super(10, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, INC_TYPES)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode011.java b/src/org/infinity/resource/effects/Opcode011.java new file mode 100644 index 000000000..2103f682e --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode011.java @@ -0,0 +1,35 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 11. + */ +public class Opcode011 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Cure poison"; + } + + public Opcode011() { + super(11, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode012.java b/src/org/infinity/resource/effects/Opcode012.java new file mode 100644 index 000000000..8afed2bfc --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode012.java @@ -0,0 +1,103 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.Flag; +import org.infinity.datatype.IdsBitmap; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 12. + */ +public class Opcode012 extends BaseOpcode { + private static final String EFFECT_DAMAGE_TYPE = "Damage type"; + private static final String EFFECT_FLAGS = "Flags"; + private static final String EFFECT_SPECIFIC_VISUAL_FOR = "Specific visual for"; + + private static final String[] MODE = new String[]{"Normal", "Set to value", "Set to %", "Percentage"}; + private static final String[] MODE_BG1 = {"Normal", "Set to value", "Set to %"}; + private static final String[] MODE_IWD2 = {"Normal", "Set to value", "Set to %", "Save for half"}; + + private static final String[] SPECIAL_FLAGS_EE = { "Default", + "Transfer HP to caster (cumulative)*;Bits 0, 1, 3 and 4 are mutually exclusive. Cumulative temporary extra HP.", + "Transfer HP to target (cumulative)*;Bits 0, 1, 3 and 4 are mutually exclusive. Cumulative temporary extra HP.", + "Fist damage only", + "Transfer HP to caster (non-cumulative)*;Bits 0, 1, 3 and 4 are mutually exclusive. Non-cumulative temporary extra HP.", + "Transfer HP to target (non-cumulative)*;Bits 0, 1, 3 and 4 are mutually exclusive. Non-cumulative temporary extra HP.", + "Suppress damage feedback", + "Limit to cur. HP of target minus MINHP*;Bits 1 and 4 switch target -> caster.", + "Limit to cur./max. HP difference of caster*;Bits 1 and 4 switch caster -> target.", + "Save for half", + "Fail for half;A failed (or lack of) saving throw results in half damage", + "Does not wake sleepers" }; + + private static final String[] NPCS_PST = { "None", "The Nameless One", "Annah", "Grace", "Nordom", "Vhailor", "Morte", + "Dakkon", "Ignus" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Damage"; + } + + public Opcode012() { + super(12, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_AMOUNT)); + list.add(new Bitmap(buffer, offset + 4, 2, EFFECT_MODE, MODE)); + list.add(new IdsBitmap(buffer, offset + 6, 2, EFFECT_DAMAGE_TYPE, "DAMAGES.IDS")); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_AMOUNT)); + list.add(new Bitmap(buffer, offset + 4, 2, EFFECT_MODE, MODE_BG1)); + list.add(new IdsBitmap(buffer, offset + 6, 2, EFFECT_DAMAGE_TYPE, "DAMAGES.IDS")); + return null; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_AMOUNT)); + list.add(new Bitmap(buffer, offset + 4, 2, EFFECT_MODE, MODE_IWD2)); + list.add(new IdsBitmap(buffer, offset + 6, 2, EFFECT_DAMAGE_TYPE, "DAMAGES.IDS")); + return null; + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return makeEffectParamsBG1(parent, buffer, offset, list, isVersion1); + } + + @Override + protected int makeEffectSpecial(Datatype parent, ByteBuffer buffer, int offset, List list, + String resType, int param1, int param2) { + switch (Profile.getEngine()) { + case EE: + list.add(new Flag(buffer, offset, 4, EFFECT_FLAGS, SPECIAL_FLAGS_EE)); + break; + case PST: + list.add(new Flag(buffer, offset, 4, EFFECT_SPECIFIC_VISUAL_FOR, NPCS_PST)); + break; + default: + return super.makeEffectSpecial(parent, buffer, offset, list, resType, param1, param2); + } + return offset + 4; + } +} diff --git a/src/org/infinity/resource/effects/Opcode013.java b/src/org/infinity/resource/effects/Opcode013.java new file mode 100644 index 000000000..d03f56c4b --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode013.java @@ -0,0 +1,94 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.Flag; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 13. + */ +public class Opcode013 extends BaseOpcode { + private static final String EFFECT_DISPLAY_TEXT = "Display text?"; + private static final String EFFECT_DEATH_TYPE = "Death type"; + + private static final String[] TYPE_BG1 = { "Acid", "Burning", "Crushed", "Normal", "Exploding", "Stoned", "Freezing", + "Exploding stoned", "Exploding freezing", "Electrified" }; + private static final String[] TYPE_BG2 = { "Acid", "Burning", "Crushed", "Normal", "Exploding", "Stoned", "Freezing", + "Exploding stoned", "Exploding freezing", "Electrified", "Disintegration", null }; + private static final String[] TYPE_EE = { "Acid", "Burning", "Crushed", "Normal", "Exploding", "Stoned", "Freezing", + "Exploding stoned", "Exploding freezing", "Electrified", "Disintegration", + "Exploding (no drop);Exploding death, inventory is not dropped" }; + private static final String[] TYPE_IWD = { "Acid", "Burning", "Crushed", "Normal", "Exploding", "Stoned", "Freezing", + null, null, null, "Disintegration", "Destruction" }; + private static final String[] TYPE_IWD2 = { "Acid", "Burning", "Crushed", "Normal", "Exploding", "Stoned", "Freezing", + "Exploding stoned", "Exploding freezing", "Electrified", "Disintegration", "Destruction" }; + private static final String[] TYPE_PST = { "Normal", null, null, null, "Exploding", null, "Freezing", + "Exploding stoned" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Kill target"; + } + + public Opcode013() { + super(13, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new Bitmap(buffer, offset, 4, EFFECT_DISPLAY_TEXT, AbstractStruct.OPTION_YESNO)); + list.add(new Flag(buffer, offset + 4, 4, EFFECT_DEATH_TYPE, TYPE_BG2)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new Bitmap(buffer, offset, 4, EFFECT_DISPLAY_TEXT, AbstractStruct.OPTION_YESNO)); + list.add(new Flag(buffer, offset + 4, 4, EFFECT_DEATH_TYPE, TYPE_BG1)); + return null; + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new Bitmap(buffer, offset, 4, EFFECT_DISPLAY_TEXT, AbstractStruct.OPTION_YESNO)); + list.add(new Flag(buffer, offset + 4, 4, EFFECT_DEATH_TYPE, TYPE_EE)); + return null; + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new Bitmap(buffer, offset, 4, EFFECT_DISPLAY_TEXT, AbstractStruct.OPTION_YESNO)); + list.add(new Flag(buffer, offset + 4, 4, EFFECT_DEATH_TYPE, TYPE_IWD)); + return null; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new Bitmap(buffer, offset, 4, EFFECT_DISPLAY_TEXT, AbstractStruct.OPTION_YESNO)); + list.add(new Flag(buffer, offset + 4, 4, EFFECT_DEATH_TYPE, TYPE_IWD2)); + return null; + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Flag(buffer, offset + 4, 4, EFFECT_DEATH_TYPE, TYPE_PST)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode014.java b/src/org/infinity/resource/effects/Opcode014.java new file mode 100644 index 000000000..bd6cec0ee --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode014.java @@ -0,0 +1,35 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 14. + */ +public class Opcode014 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Defrost"; + } + + public Opcode014() { + super(14, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode015.java b/src/org/infinity/resource/effects/Opcode015.java new file mode 100644 index 000000000..bb6a0b94e --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode015.java @@ -0,0 +1,97 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.IsNumeric; +import org.infinity.datatype.UpdateListener; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 15. + */ +public class Opcode015 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Dexterity bonus"; + } + + public Opcode015() { + super(15, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, INC_TYPES)); + return null; + } + + @Override + protected String makeEffectParamsBG2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + if (isTobEx()) { + return makeEffectParamsEE(parent, buffer, offset, list, isVersion1); + } else { + return makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + int type = buffer.getInt(offset + 4); + list.add(new DecNumber(buffer, offset, 4, (isVersion1 && type == 3) ? AbstractStruct.COMMON_UNUSED : EFFECT_VALUE)); + Bitmap item = new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, + new String[] { INC_TYPES[0], INC_TYPES[1], INC_TYPES[2], "Cat's grace" }); + list.add(item); + if (parent != null && parent instanceof UpdateListener) { + item.addUpdateListener((UpdateListener)parent); + } + return null; + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return makeEffectParamsEE(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return makeEffectParamsEE(parent, buffer, offset, list, isVersion1); + } + + @Override + protected boolean update(AbstractStruct struct) throws Exception { + boolean retVal = false; + if (struct != null) { + if (Profile.getEngine() == Profile.Engine.IWD || Profile.getEngine() == Profile.Engine.IWD2 || + Profile.isEnhancedEdition() || isTobEx()) { + boolean isVersion1 = (getEntry(struct, EffectEntry.IDX_OPCODE).getSize() == 2); + int param2 = ((IsNumeric) getEntry(struct, EffectEntry.IDX_PARAM2)).getValue(); + if ((isVersion1 || isTobEx()) && param2 == 3) { + replaceEntry(struct, EffectEntry.IDX_PARAM1, EffectEntry.OFS_PARAM1, + new DecNumber(getEntryData(struct, EffectEntry.IDX_PARAM1), 0, 4, AbstractStruct.COMMON_UNUSED)); + retVal = true; + } else { + replaceEntry(struct, EffectEntry.IDX_PARAM1, EffectEntry.OFS_PARAM1, + new DecNumber(getEntryData(struct, EffectEntry.IDX_PARAM1), 0, 4, EFFECT_VALUE)); + retVal = true; + } + } + } + return retVal; + } +} diff --git a/src/org/infinity/resource/effects/Opcode016.java b/src/org/infinity/resource/effects/Opcode016.java new file mode 100644 index 000000000..a14060b11 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode016.java @@ -0,0 +1,54 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 16. + */ +public class Opcode016 extends BaseOpcode { + private static final String EFFECT_HASTE_TYPE = "Haste type"; + + private static final String[] TYPE_BG2 = { "Normal", "Improved", "Movement rate only" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Haste"; + } + + public Opcode016() { + super(16, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsBG2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_HASTE_TYPE, TYPE_BG2)); + return null; + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return makeEffectParamsBG2(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode017.java b/src/org/infinity/resource/effects/Opcode017.java new file mode 100644 index 000000000..8f78ceb2e --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode017.java @@ -0,0 +1,76 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.Flag; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 17. + */ +public class Opcode017 extends BaseOpcode { + private static final String EFFECTS_HEAL_FLAGS = "Heal flags"; + + private static final String[] TYPE_IWD2 = { INC_TYPES[0], INC_TYPES[1], INC_TYPES[2], "Lay on hands", + "Wholeness of body", "Lathander's renewal" }; + + private static final String[] FLAGS = { "Heal normally", "Raise dead", "Remove limited effects" }; + private static final String[] FLAGS_IWD = { "No flags set", "Raise dead" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Current HP bonus"; + } + + public Opcode017() { + super(17, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 2, EFFECT_MODIFIER_TYPE, INC_TYPES)); + list.add(new Flag(buffer, offset + 6, 2, EFFECTS_HEAL_FLAGS, FLAGS)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, INC_TYPES)); + return null; + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 2, EFFECT_MODIFIER_TYPE, INC_TYPES)); + list.add(new Flag(buffer, offset + 6, 2, EFFECTS_HEAL_FLAGS, FLAGS_IWD)); + return null; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, TYPE_IWD2)); + return null; + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return makeEffectParamsBG1(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode018.java b/src/org/infinity/resource/effects/Opcode018.java new file mode 100644 index 000000000..92f05a81e --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode018.java @@ -0,0 +1,67 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.Arrays; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 18. + */ +public class Opcode018 extends BaseOpcode { + private static final String[] TYPES = { INC_TYPES[0], INC_TYPES[1], INC_TYPES[2], + "Increment, don't update current HP", "Set, don't update current HP", "Set % of, don't update current HP" }; + private static final String[] TYPES_EE; + + private static final String[] MODES_EE = { "Normal", "Max. HP only" }; + + static { + TYPES_EE = Arrays.copyOf(TYPES, TYPES.length + 1); + TYPES_EE[TYPES.length] = "Increment, non-cumulative"; + } + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Maximum HP bonus"; + } + + public Opcode018() { + super(18, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, TYPES)); + return null; + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, TYPES_EE)); + return null; + } + + @Override + protected int makeEffectSpecial(Datatype parent, ByteBuffer buffer, int offset, List list, + String resType, int param1, int param2) { + if (Profile.isEnhancedEdition()) { + list.add(new Bitmap(buffer, offset, 4, EFFECT_MODE, MODES_EE)); + return offset + 4; + } else { + return super.makeEffectSpecial(parent, buffer, offset, list, resType, param1, param2); + } + } +} diff --git a/src/org/infinity/resource/effects/Opcode019.java b/src/org/infinity/resource/effects/Opcode019.java new file mode 100644 index 000000000..4a7f57e66 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode019.java @@ -0,0 +1,35 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 19. + */ +public class Opcode019 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Intelligence bonus"; + } + + public Opcode019() { + super(19, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, INC_TYPES)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode020.java b/src/org/infinity/resource/effects/Opcode020.java new file mode 100644 index 000000000..463070550 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode020.java @@ -0,0 +1,54 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 20. + */ +public class Opcode020 extends BaseOpcode { + private static final String EFFECT_INVISIBILITY_TYPE = "Invisibility type"; + + private static final String[] TYPE = { "Normal", "Improved", "Weak" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Invisibility"; + } + + public Opcode020() { + super(20, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_INVISIBILITY_TYPE, TYPE)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return makeEffectParamsBG1(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode021.java b/src/org/infinity/resource/effects/Opcode021.java new file mode 100644 index 000000000..e9e9c332a --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode021.java @@ -0,0 +1,50 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 21. + */ +public class Opcode021 extends BaseOpcode { + private static final String[] TYPE_IWD2 = { INC_TYPES[0], INC_TYPES[1], "Mastery" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + if (Profile.getEngine() == Profile.Engine.IWD2) { + return "Knowledge arcana"; + } else { + return "Lore bonus"; + } + } + + public Opcode021() { + super(21, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, INC_TYPES)); + return null; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, TYPE_IWD2)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode022.java b/src/org/infinity/resource/effects/Opcode022.java new file mode 100644 index 000000000..ca84a4cf4 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode022.java @@ -0,0 +1,75 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 22. + */ +public class Opcode022 extends BaseOpcode { + private static final String[] TYPE_TOBEX = { INC_TYPES[0], INC_TYPES[1], INC_TYPES[2], "Instantaneous" }; + private static final String[] TYPE_IWD = { "Increment", "Lucky streak", "Fortune's favorite" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Luck bonus"; + } + + public Opcode022() { + super(22, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, INC_TYPES)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsBG2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + if (isTobEx()) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, TYPE_TOBEX)); + return null; + } else { + return makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, TYPE_IWD)); + return null; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return makeEffectParamsIWD(parent, buffer, offset, list, isVersion1); + } + + +} diff --git a/src/org/infinity/resource/effects/Opcode023.java b/src/org/infinity/resource/effects/Opcode023.java new file mode 100644 index 000000000..e86a3394e --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode023.java @@ -0,0 +1,125 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.IsNumeric; +import org.infinity.datatype.UpdateListener; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 23. + */ +public class Opcode023 extends BaseOpcode { + private static final String[] MODES_EE = { "BG2 mode", "BG1 mode" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case EE: + case IWD: + case IWD2: + case PST: + return "Morale bonus"; + default: + return "Reset morale"; + } + } + + public Opcode023() { + super(23, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, INC_TYPES)); + return null; + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + int ofsSpecial = offset + (isVersion1 ? 0x28 : 0x2c); + boolean isBG1Mode = buffer.getInt(ofsSpecial) != 0; + if (isBG1Mode) { + return makeEffectParamsBG1(parent, buffer, offset, list, isVersion1); + } else { + return makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return makeEffectParamsBG1(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return makeEffectParamsBG1(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return makeEffectParamsBG1(parent, buffer, offset, list, isVersion1); + } + + @Override + protected boolean update(AbstractStruct struct) throws Exception { + if (struct != null && Profile.isEnhancedEdition()) { + int special = ((IsNumeric)getEntry(struct, EffectEntry.IDX_SPECIAL)).getValue(); + if (special == 0 ) { + // Activate BG2 mode + replaceEntry(struct, EffectEntry.IDX_PARAM1, EffectEntry.OFS_PARAM1, + new DecNumber(getEntryData(struct, EffectEntry.IDX_PARAM1), 0, 4, AbstractStruct.COMMON_UNUSED)); + replaceEntry(struct, EffectEntry.IDX_PARAM2, EffectEntry.OFS_PARAM2, + new DecNumber(getEntryData(struct, EffectEntry.IDX_PARAM2), 0, 4, AbstractStruct.COMMON_UNUSED)); + } else { + // Activate BG1 mode + replaceEntry(struct, EffectEntry.IDX_PARAM1, EffectEntry.OFS_PARAM1, + new DecNumber(getEntryData(struct, EffectEntry.IDX_PARAM1), 0, 4, EFFECT_VALUE)); + replaceEntry(struct, EffectEntry.IDX_PARAM2, EffectEntry.OFS_PARAM2, + new Bitmap(getEntryData(struct, EffectEntry.IDX_PARAM2), 0, 4, EFFECT_MODIFIER_TYPE, INC_TYPES)); + } + return true; + } + return false; + } + + @Override + protected int makeEffectSpecial(Datatype parent, ByteBuffer buffer, int offset, List list, + String resType, int param1, int param2) { + if (Profile.isEnhancedEdition()) { + final Bitmap bmp = new Bitmap(buffer, offset, 4, EFFECT_MODE, MODES_EE); + list.add(bmp); + if (parent != null && parent instanceof UpdateListener) { + bmp.addUpdateListener((UpdateListener)parent); + } + return offset + 4; + } else { + return super.makeEffectSpecial(parent, buffer, offset, list, resType, param1, param2); + } + } +} diff --git a/src/org/infinity/resource/effects/Opcode024.java b/src/org/infinity/resource/effects/Opcode024.java new file mode 100644 index 000000000..fb340d2f7 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode024.java @@ -0,0 +1,63 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 24. + */ +public class Opcode024 extends BaseOpcode { + private static final String EFFECT_PANIC_TYPE = "Panic type"; + + private static final String[] TYPE_EE = { "Normal", "Bypass immunity" }; + private static final String[] TYPE_IWD = { "Normal", "Harpy wail" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Panic"; + } + + public Opcode024() { + super(24, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_PANIC_TYPE, TYPE_EE)); + return null; + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_PANIC_TYPE, TYPE_IWD)); + return null; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return makeEffectParamsIWD(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode025.java b/src/org/infinity/resource/effects/Opcode025.java new file mode 100644 index 000000000..2539736c7 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode025.java @@ -0,0 +1,94 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.Arrays; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.UpdateListener; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 25. + */ +public class Opcode025 extends BaseOpcode { + private static final String EFFECT_POISON_TYPE = "Poison type"; + + private static final String[] TYPES = { "1 damage per second", "1 damage per second", "Amount damage per second", + "1 damage per amount seconds", "Param3 damage per amount seconds" }; + private static final String[] TYPES_IWD = { "1 damage per second", "Amount damage per second", + "Amount damage per second", "1 damage per amount seconds", "Amount damage per round", "(Crash)", "Snakebite", + "Unused", "Envenomed weapon" }; + private static final String[] TYPES_BG1; + private static final String[] TYPES_IWD2; + + static { + TYPES_BG1 = Arrays.copyOf(TYPES, TYPES.length); + TYPES_BG1[3] = "1 damage per amount+1 seconds"; + + TYPES_IWD2 = Arrays.copyOf(TYPES_IWD, TYPES_IWD.length); + TYPES_IWD2[5] = "Unused"; + } + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Poison"; + } + + public Opcode025() { + super(25, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return makeEffectParamsInternal(parent, buffer, offset, list, isVersion1, TYPES); + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return makeEffectParamsInternal(parent, buffer, offset, list, isVersion1, TYPES_BG1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return makeEffectParamsInternal(parent, buffer, offset, list, isVersion1, TYPES_IWD); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return makeEffectParamsInternal(parent, buffer, offset, list, isVersion1, TYPES_IWD2); + } + + private String makeEffectParamsInternal(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1, String[] poisonTypes) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_AMOUNT)); + final Bitmap bmp = new Bitmap(buffer, offset + 4, 4, EFFECT_POISON_TYPE, poisonTypes); + list.add(bmp); + if (parent != null && parent instanceof UpdateListener) { + bmp.addUpdateListener((UpdateListener)parent); + } + return null; + } + + @Override + protected int makeEffectSpecial(Datatype parent, ByteBuffer buffer, int offset, List list, + String resType, int param1, int param2) { + if (Profile.isEnhancedEdition()) { + list.add(new Bitmap(buffer, offset, 4, EFFECT_ICON, getPortraitIconNames(STRING_DEFAULT))); + return offset + 4; + } else { + return super.makeEffectSpecial(parent, buffer, offset, list, resType, param1, param2); + } + } +} diff --git a/src/org/infinity/resource/effects/Opcode026.java b/src/org/infinity/resource/effects/Opcode026.java new file mode 100644 index 000000000..94ee504af --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode026.java @@ -0,0 +1,48 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 26. + */ +public class Opcode026 extends BaseOpcode { + private static final String EFFECT_CURSE_TYPE = "Curse type"; + + private static final String[] TYPES_PST = { "Normal", "Jumble curse" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Remove curse"; + } + + public Opcode026() { + super(26, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_CURSE_TYPE, TYPES_PST)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode027.java b/src/org/infinity/resource/effects/Opcode027.java new file mode 100644 index 000000000..8097a4175 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode027.java @@ -0,0 +1,35 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 27. + */ +public class Opcode027 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Acid resistance bonus"; + } + + public Opcode027() { + super(27, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, INC_TYPES)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode028.java b/src/org/infinity/resource/effects/Opcode028.java new file mode 100644 index 000000000..4b9fa8159 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode028.java @@ -0,0 +1,35 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 28. + */ +public class Opcode028 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Cold resistance bonus"; + } + + public Opcode028() { + super(28, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, INC_TYPES)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode029.java b/src/org/infinity/resource/effects/Opcode029.java new file mode 100644 index 000000000..cd11d3e34 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode029.java @@ -0,0 +1,35 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 29. + */ +public class Opcode029 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Electricity resistance bonus"; + } + + public Opcode029() { + super(29, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, INC_TYPES)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode030.java b/src/org/infinity/resource/effects/Opcode030.java new file mode 100644 index 000000000..77008f885 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode030.java @@ -0,0 +1,35 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 30. + */ +public class Opcode030 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Fire resistance bonus"; + } + + public Opcode030() { + super(30, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, INC_TYPES)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode031.java b/src/org/infinity/resource/effects/Opcode031.java new file mode 100644 index 000000000..c943c3226 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode031.java @@ -0,0 +1,35 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 31. + */ +public class Opcode031 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Magic damage resistance bonus"; + } + + public Opcode031() { + super(31, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, INC_TYPES)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode032.java b/src/org/infinity/resource/effects/Opcode032.java new file mode 100644 index 000000000..c21d079fd --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode032.java @@ -0,0 +1,46 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 32. + */ +public class Opcode032 extends BaseOpcode { + private static final String EFFECT_RESTORE_CRE_ANIM = "Restore creature animation?"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Raise dead"; + } + + public Opcode032() { + super(32, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_RESTORE_CRE_ANIM, AbstractStruct.OPTION_NOYES)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode033.java b/src/org/infinity/resource/effects/Opcode033.java new file mode 100644 index 000000000..cc957fc0e --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode033.java @@ -0,0 +1,60 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 33. + */ +public class Opcode033 extends BaseOpcode { + private static final String[] TYPES_EE = { INC_TYPES[0], INC_TYPES[1], INC_TYPES[2], "Increment instantaneously" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + if (Profile.getEngine() == Profile.Engine.IWD2) { + return "Fortitude save bonus"; + } else { + return "Save vs. death bonus"; + } + } + + public Opcode033() { + super(33, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, INC_TYPES)); + return null; + } + + @Override + protected String makeEffectParamsBG2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + if (isTobEx()) { + return makeEffectParamsEE(parent, buffer, offset, list, isVersion1); + } else { + return makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, TYPES_EE)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode034.java b/src/org/infinity/resource/effects/Opcode034.java new file mode 100644 index 000000000..75c692774 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode034.java @@ -0,0 +1,60 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 34. + */ +public class Opcode034 extends BaseOpcode { + private static final String[] TYPES_EE = { INC_TYPES[0], INC_TYPES[1], INC_TYPES[2], "Increment instantaneously" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + if (Profile.getEngine() == Profile.Engine.IWD2) { + return "Reflex save bonus"; + } else { + return "Save vs. wand bonus"; + } + } + + public Opcode034() { + super(34, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, INC_TYPES)); + return null; + } + + @Override + protected String makeEffectParamsBG2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + if (isTobEx()) { + return makeEffectParamsEE(parent, buffer, offset, list, isVersion1); + } else { + return makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, TYPES_EE)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode035.java b/src/org/infinity/resource/effects/Opcode035.java new file mode 100644 index 000000000..e9eaf74e8 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode035.java @@ -0,0 +1,60 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 35. + */ +public class Opcode035 extends BaseOpcode { + private static final String[] TYPES_EE = { INC_TYPES[0], INC_TYPES[1], INC_TYPES[2], "Increment instantaneously" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + if (Profile.getEngine() == Profile.Engine.IWD2) { + return "Will save bonus"; + } else { + return "Save vs. polymorph bonus"; + } + } + + public Opcode035() { + super(35, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, INC_TYPES)); + return null; + } + + @Override + protected String makeEffectParamsBG2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + if (isTobEx()) { + return makeEffectParamsEE(parent, buffer, offset, list, isVersion1); + } else { + return makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, TYPES_EE)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode036.java b/src/org/infinity/resource/effects/Opcode036.java new file mode 100644 index 000000000..758a80290 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode036.java @@ -0,0 +1,66 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 36. + */ +public class Opcode036 extends BaseOpcode { + private static final String[] TYPES_EE = { INC_TYPES[0], INC_TYPES[1], INC_TYPES[2], "Increment instantaneously" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + if (Profile.getEngine() == Profile.Engine.IWD2) { + return null; + } else { + return "Save vs. breath bonus"; + } + } + + public Opcode036() { + super(36, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, INC_TYPES)); + return null; + } + + @Override + protected String makeEffectParamsBG2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + if (isTobEx()) { + return makeEffectParamsEE(parent, buffer, offset, list, isVersion1); + } else { + return makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, TYPES_EE)); + return null; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode037.java b/src/org/infinity/resource/effects/Opcode037.java new file mode 100644 index 000000000..90b46040b --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode037.java @@ -0,0 +1,66 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 37. + */ +public class Opcode037 extends BaseOpcode { + private static final String[] TYPES_EE = { INC_TYPES[0], INC_TYPES[1], INC_TYPES[2], "Increment instantaneously" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + if (Profile.getEngine() == Profile.Engine.IWD2) { + return null; + } else { + return "Save vs. spell bonus"; + } + } + + public Opcode037() { + super(37, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, INC_TYPES)); + return null; + } + + @Override + protected String makeEffectParamsBG2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + if (isTobEx()) { + return makeEffectParamsEE(parent, buffer, offset, list, isVersion1); + } else { + return makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, TYPES_EE)); + return null; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode038.java b/src/org/infinity/resource/effects/Opcode038.java new file mode 100644 index 000000000..2ccb37004 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode038.java @@ -0,0 +1,35 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 38. + */ +public class Opcode038 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Silence"; + } + + public Opcode038() { + super(38, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode039.java b/src/org/infinity/resource/effects/Opcode039.java new file mode 100644 index 000000000..6e3a9b20e --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode039.java @@ -0,0 +1,70 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 39. + */ +public class Opcode039 extends BaseOpcode { + private static final String EFFECT_WAKE_ON_DAMAGE = "Wake on damage?"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Sleep"; + } + + public Opcode039() { + super(39, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_WAKE_ON_DAMAGE, AbstractStruct.OPTION_YESNO)); + return null; + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return makeEffectParamsEE(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return makeEffectParamsEE(parent, buffer, offset, list, isVersion1); + } + + @Override + protected int makeEffectSpecial(Datatype parent, ByteBuffer buffer, int offset, List list, + String resType, int param1, int param2) { + if (Profile.isEnhancedEdition()) { + list.add(new Bitmap(buffer, offset, 4, EFFECT_ICON, getPortraitIconNames(STRING_DEFAULT))); + return offset + 4; + } else { + return super.makeEffectSpecial(parent, buffer, offset, list, resType, param1, param2); + } + } +} diff --git a/src/org/infinity/resource/effects/Opcode040.java b/src/org/infinity/resource/effects/Opcode040.java new file mode 100644 index 000000000..d4aed6498 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode040.java @@ -0,0 +1,35 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 40. + */ +public class Opcode040 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Slow"; + } + + public Opcode040() { + super(40, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode041.java b/src/org/infinity/resource/effects/Opcode041.java new file mode 100644 index 000000000..dc717b361 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode041.java @@ -0,0 +1,54 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 41. + */ +public class Opcode041 extends BaseOpcode { + private static final String EFFECT_PARTICLE_EFFECT = "Particle effect"; + + private static final String RES_TYPE = "BAM"; + + private static final String[] PARTICLE_TYPES = { "", "Explosion", "Swirl", "Shower" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Sparkle"; + } + + public Opcode041() { + super(41, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new Bitmap(buffer, offset, 4, EFFECT_COLOR, SPARKLE_COLORS)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_PARTICLE_EFFECT, PARTICLE_TYPES)); + return null; + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + if (Profile.getGame() == Profile.Game.PSTEE) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_AMOUNT)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_PARTICLE_EFFECT, PARTICLE_TYPES)); + return RES_TYPE; + } else { + return makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + } +} diff --git a/src/org/infinity/resource/effects/Opcode042.java b/src/org/infinity/resource/effects/Opcode042.java new file mode 100644 index 000000000..bd3495cbe --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode042.java @@ -0,0 +1,66 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.Arrays; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.Flag; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 42. + */ +public class Opcode042 extends BaseOpcode { + private static final String EFFECT_NUM_SPELLS_TO_ADD = "# spells to add"; + private static final String EFFECT_SPELL_LEVELS = "Spell levels"; + private static final String EFFECT_BYPASS_SLOT_REQ = "EEex: Bypass slot requirement?"; + + private static final String[] SPELL_LEVELS_BG2 = { "Double spells", "Level 1", "Level 2", "Level 3", "Level 4", + "Level 5", "Level 6", "Level 7", "Level 8", "Level 9", "Ex: Double spells" }; + private static final String[] SPELL_LEVELS = Arrays.copyOf(SPELL_LEVELS_BG2, SPELL_LEVELS_BG2.length - 1); + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Bonus wizard spells"; + } + + public Opcode042() { + super(42, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_NUM_SPELLS_TO_ADD)); + list.add(new Flag(buffer, offset + 4, 4, EFFECT_SPELL_LEVELS, SPELL_LEVELS)); + return null; + } + + @Override + protected String makeEffectParamsBG2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_NUM_SPELLS_TO_ADD)); + list.add(new Flag(buffer, offset + 4, 4, EFFECT_SPELL_LEVELS, SPELL_LEVELS_BG2)); + return null; + } + + @Override + protected int makeEffectSpecial(Datatype parent, ByteBuffer buffer, int offset, List list, + String resType, int param1, int param2) { + if (Profile.isEnhancedEdition() && isEEEx()) { + list.add(new Bitmap(buffer, offset, 4, EFFECT_BYPASS_SLOT_REQ, AbstractStruct.OPTION_NOYES)); + return offset + 4; + } else { + return super.makeEffectSpecial(parent, buffer, offset, list, resType, param1, param2); + } + } +} diff --git a/src/org/infinity/resource/effects/Opcode043.java b/src/org/infinity/resource/effects/Opcode043.java new file mode 100644 index 000000000..e4825a4f4 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode043.java @@ -0,0 +1,35 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 43. + */ +public class Opcode043 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Stone to flesh"; + } + + public Opcode043() { + super(43, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode044.java b/src/org/infinity/resource/effects/Opcode044.java new file mode 100644 index 000000000..599682c51 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode044.java @@ -0,0 +1,97 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.IsNumeric; +import org.infinity.datatype.UpdateListener; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 44. + */ +public class Opcode044 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Strength bonus"; + } + + public Opcode044() { + super(44, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, INC_TYPES)); + return null; + } + + @Override + protected String makeEffectParamsBG2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + if (isTobEx()) { + return makeEffectParamsEE(parent, buffer, offset, list, isVersion1); + } else { + return makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + int type = buffer.getInt(offset + 4); + list.add(new DecNumber(buffer, offset, 4, (isVersion1 && type == 3) ? AbstractStruct.COMMON_UNUSED : EFFECT_VALUE)); + Bitmap item = new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, + new String[] { INC_TYPES[0], INC_TYPES[1], INC_TYPES[2], "Bull's Strength" }); + list.add(item); + if (parent != null && parent instanceof UpdateListener) { + item.addUpdateListener((UpdateListener)parent); + } + return null; + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return makeEffectParamsEE(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return makeEffectParamsEE(parent, buffer, offset, list, isVersion1); + } + + @Override + protected boolean update(AbstractStruct struct) throws Exception { + boolean retVal = false; + if (struct != null) { + if (Profile.getEngine() == Profile.Engine.IWD || Profile.getEngine() == Profile.Engine.IWD2 || + Profile.isEnhancedEdition() || isTobEx()) { + boolean isVersion1 = (getEntry(struct, EffectEntry.IDX_OPCODE).getSize() == 2); + int param2 = ((IsNumeric) getEntry(struct, EffectEntry.IDX_PARAM2)).getValue(); + if ((isVersion1 || isTobEx()) && param2 == 3) { + replaceEntry(struct, EffectEntry.IDX_PARAM1, EffectEntry.OFS_PARAM1, + new DecNumber(getEntryData(struct, EffectEntry.IDX_PARAM1), 0, 4, AbstractStruct.COMMON_UNUSED)); + retVal = true; + } else { + replaceEntry(struct, EffectEntry.IDX_PARAM1, EffectEntry.OFS_PARAM1, + new DecNumber(getEntryData(struct, EffectEntry.IDX_PARAM1), 0, 4, EFFECT_VALUE)); + retVal = true; + } + } + } + return retVal; + } +} diff --git a/src/org/infinity/resource/effects/Opcode045.java b/src/org/infinity/resource/effects/Opcode045.java new file mode 100644 index 000000000..50f2a71a6 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode045.java @@ -0,0 +1,48 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 45. + */ +public class Opcode045 extends BaseOpcode { + private static final String EFFECT_STUN_TYPE = "Stun type"; + + private static final String[] TYPES_IWD2 = { "Normal", "Unstun on damage", "Power word, stun" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Stun"; + } + + public Opcode045() { + super(45, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_STUN_TYPE, TYPES_IWD2)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode046.java b/src/org/infinity/resource/effects/Opcode046.java new file mode 100644 index 000000000..96c47da03 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode046.java @@ -0,0 +1,35 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 46. + */ +public class Opcode046 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Cure stun"; + } + + public Opcode046() { + super(46, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode047.java b/src/org/infinity/resource/effects/Opcode047.java new file mode 100644 index 000000000..987715588 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode047.java @@ -0,0 +1,35 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 47. + */ +public class Opcode047 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Remove invisibility"; + } + + public Opcode047() { + super(47, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode048.java b/src/org/infinity/resource/effects/Opcode048.java new file mode 100644 index 000000000..5d5745ccf --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode048.java @@ -0,0 +1,35 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 48. + */ +public class Opcode048 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Vocalize"; + } + + public Opcode048() { + super(48, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode049.java b/src/org/infinity/resource/effects/Opcode049.java new file mode 100644 index 000000000..736e05e73 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode049.java @@ -0,0 +1,35 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 49. + */ +public class Opcode049 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Wisdom bonus"; + } + + public Opcode049() { + super(49, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, INC_TYPES)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode050.java b/src/org/infinity/resource/effects/Opcode050.java new file mode 100644 index 000000000..36036a104 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode050.java @@ -0,0 +1,50 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.ColorPicker; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.HashBitmap; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 50. + */ +public class Opcode050 extends BaseOpcode { + private static final String EFFECT_CYCLE_SPEED = "Cycle speed"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Character color pulse"; + } + + public Opcode050() { + super(50, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new ColorPicker(buffer, offset, EFFECT_COLOR)); + list.add(new HashBitmap(buffer, offset + 4, 1, EFFECT_LOCATION, COLOR_LOCATIONS_MAP, false)); + list.add(new DecNumber(buffer, offset + 5, 1, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 6, 1, EFFECT_CYCLE_SPEED)); + list.add(new DecNumber(buffer, offset + 7, 1, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new ColorPicker(buffer, offset, EFFECT_COLOR)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode051.java b/src/org/infinity/resource/effects/Opcode051.java new file mode 100644 index 000000000..7211a5675 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode051.java @@ -0,0 +1,45 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.ColorPicker; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.HashBitmap; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 51. + */ +public class Opcode051 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Character tint solid"; + } + + public Opcode051() { + super(51, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new ColorPicker(buffer, offset, EFFECT_COLOR)); + list.add(new HashBitmap(buffer, offset + 4, 4, EFFECT_LOCATION, COLOR_LOCATIONS_MAP, false)); + return null; + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new ColorPicker(buffer, offset, EFFECT_COLOR)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode052.java b/src/org/infinity/resource/effects/Opcode052.java new file mode 100644 index 000000000..c97102b45 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode052.java @@ -0,0 +1,45 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.ColorPicker; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.HashBitmap; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 52. + */ +public class Opcode052 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Character tint bright"; + } + + public Opcode052() { + super(52, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new ColorPicker(buffer, offset, EFFECT_COLOR)); + list.add(new HashBitmap(buffer, offset + 4, 4, EFFECT_LOCATION, COLOR_LOCATIONS_MAP, false)); + return null; + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new ColorPicker(buffer, offset, EFFECT_COLOR)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode053.java b/src/org/infinity/resource/effects/Opcode053.java new file mode 100644 index 000000000..db032abc4 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode053.java @@ -0,0 +1,40 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.AnimateBitmap; +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 53. + */ +public class Opcode053 extends BaseOpcode { + private static final String EFFECT_MORPH_INTO = "Morph into"; + private static final String EFFECT_MORPH_TYPE = "Morph type"; + + private static final String[] TYPES = { "Temporary change", "Remove temporary change", "Permanent change" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Animation change"; + } + + public Opcode053() { + super(53, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new AnimateBitmap(buffer, offset, 4, EFFECT_MORPH_INTO)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MORPH_TYPE, TYPES)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode054.java b/src/org/infinity/resource/effects/Opcode054.java new file mode 100644 index 000000000..72b8e7e17 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode054.java @@ -0,0 +1,40 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 54. + */ +public class Opcode054 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + if (Profile.getEngine() == Profile.Engine.IWD2) { + return "Base attack bonus"; + } else { + return "Base THAC0 bonus"; + } + } + + public Opcode054() { + super(54, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, INC_TYPES)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode055.java b/src/org/infinity/resource/effects/Opcode055.java new file mode 100644 index 000000000..3ca40d100 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode055.java @@ -0,0 +1,35 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.IdsTargetType; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 55. + */ +public class Opcode055 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Slay"; + } + + public Opcode055() { + super(55, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + final IdsTargetType param2 = new IdsTargetType(buffer, offset + 4); + list.add(param2.createIdsValueFromType(buffer)); + list.add(param2); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode056.java b/src/org/infinity/resource/effects/Opcode056.java new file mode 100644 index 000000000..63f443555 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode056.java @@ -0,0 +1,35 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 56. + */ +public class Opcode056 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Invert alignment"; + } + + public Opcode056() { + super(56, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode057.java b/src/org/infinity/resource/effects/Opcode057.java new file mode 100644 index 000000000..b056c3eaf --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode057.java @@ -0,0 +1,39 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.IdsBitmap; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 57. + */ +public class Opcode057 extends BaseOpcode { + private static final String EFFECT_ALIGNMENT = "Alignment"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Change alignment"; + } + + public Opcode057() { + super(57, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new IdsBitmap(buffer, offset + 4, 4, EFFECT_ALIGNMENT, Profile.getProperty(Profile.Key.GET_IDS_ALIGNMENT))); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode058.java b/src/org/infinity/resource/effects/Opcode058.java new file mode 100644 index 000000000..bebd822db --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode058.java @@ -0,0 +1,61 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 58. + */ +public class Opcode058 extends BaseOpcode { + private static final String EFFECT_LEVEL = "Level"; + private static final String EFFECT_DISPEL_TYPE = "Dispel type"; + private static final String EFFECT_WEAPON_DISPEL_TYPE = "Magic weapon dispel type"; + + private static final String[] DISPEL_TYPES = { "Always dispel", "Use caster level", "Use specific level" }; + private static final String[] WEAPON_DISPEL_TYPES = { "Always dispel", "Do not dispel", "Chance of dispel" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Dispel effects"; + } + + public Opcode058() { + super(58, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_LEVEL)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_DISPEL_TYPE, DISPEL_TYPES)); + return null; + } + + @Override + protected String makeEffectParamsBG2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + if (isTobEx()) { + return makeEffectParamsEE(parent, buffer, offset, list, isVersion1); + } else { + return makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_LEVEL)); + list.add(new Bitmap(buffer, offset + 4, 2, EFFECT_DISPEL_TYPE, DISPEL_TYPES)); + list.add(new Bitmap(buffer, offset + 6, 2, EFFECT_WEAPON_DISPEL_TYPE, WEAPON_DISPEL_TYPES)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode059.java b/src/org/infinity/resource/effects/Opcode059.java new file mode 100644 index 000000000..f81b472c3 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode059.java @@ -0,0 +1,43 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 59. + */ +public class Opcode059 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case IWD: + case PST: + return "Stealth bonus"; + default: + return "Move silently bonus"; + } + } + + public Opcode059() { + super(59, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, INC_TYPES)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode060.java b/src/org/infinity/resource/effects/Opcode060.java new file mode 100644 index 000000000..920cb2d8e --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode060.java @@ -0,0 +1,67 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 60. + */ +public class Opcode060 extends BaseOpcode { + private static final String EFFECT_FAILURE_TYPE = "Failure type"; + private static final String EFFECT_SPELL_CLASS = "Spell class"; + + private static final String[] SPELL_TYPES = { "Wizard", "Priest", "Innate" }; + private static final String[] SPELL_TYPES_BG2 = { "Wizard", "Priest", "Innate", "Wizard (dead magic)", + "Priest (dead magic)", "Innate (dead magic)" }; + private static final String[] SPELL_TYPES_IWD2 = { "Arcane", "Divine", "All spells" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Casting failure"; + } + + public Opcode060() { + super(60, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_AMOUNT)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_FAILURE_TYPE, SPELL_TYPES)); + return null; + } + + @Override + protected String makeEffectParamsBG2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_AMOUNT)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_FAILURE_TYPE, SPELL_TYPES_BG2)); + return null; + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_AMOUNT)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_FAILURE_TYPE, SPELL_TYPES_BG2)); + return null; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_AMOUNT)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_SPELL_CLASS, SPELL_TYPES_IWD2)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode061.java b/src/org/infinity/resource/effects/Opcode061.java new file mode 100644 index 000000000..515060573 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode061.java @@ -0,0 +1,58 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.ColorPicker; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 61. + */ +public class Opcode061 extends BaseOpcode { + private static final String EFFECT_FADE_SPEED = "Fade speed"; + + private static final String[] ALCHEMY_TYPES_IWD2 = { "Increment", "Set", "Mastery" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case IWD2: + return "Alchemy"; + case EE: + return "Creature RGB color fade"; + default: + return null; + } + } + + public Opcode061() { + super(61, getOpcodeName()); + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new ColorPicker(buffer, offset, EFFECT_COLOR)); + list.add(new DecNumber(buffer, offset + 4, 2, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 6, 2, EFFECT_FADE_SPEED)); + return null; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, ALCHEMY_TYPES_IWD2)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode062.java b/src/org/infinity/resource/effects/Opcode062.java new file mode 100644 index 000000000..eacdf4b33 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode062.java @@ -0,0 +1,80 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.Arrays; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.Flag; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 62. + */ +public class Opcode062 extends BaseOpcode { + private static final String EFFECT_NUM_SPELLS_TO_ADD = "# spells to add"; + private static final String EFFECT_SPELL_LEVELS = "Spell levels"; + private static final String EFFECT_BYPASS_SLOT_REQ = "EEex: Bypass slot requirement?"; + + private static final String[] SPELL_LEVELS_IWD2 = { "Double spells", "Level 1", "Level 2", "Level 3", "Level 4", + "Level 5", "Level 6", "Level 7", "Level 8", "Level 9" }; + private static final String[] SPELL_LEVELS_BG2 = Arrays.copyOf(SPELL_LEVELS_IWD2, SPELL_LEVELS_IWD2.length + 1); + private static final String[] SPELL_LEVELS = Arrays.copyOf(SPELL_LEVELS_IWD2, SPELL_LEVELS_IWD2.length - 2); + + static { + SPELL_LEVELS_BG2[8] = SPELL_LEVELS_BG2[9] = null; + SPELL_LEVELS_BG2[10] = "Ex: Double spells"; + } + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Bonus priest spells"; + } + + public Opcode062() { + super(62, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_NUM_SPELLS_TO_ADD)); + list.add(new Flag(buffer, offset + 4, 4, EFFECT_SPELL_LEVELS, SPELL_LEVELS)); + return null; + } + + @Override + protected String makeEffectParamsBG2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_NUM_SPELLS_TO_ADD)); + list.add(new Flag(buffer, offset + 4, 4, EFFECT_SPELL_LEVELS, SPELL_LEVELS_BG2)); + return null; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_NUM_SPELLS_TO_ADD)); + list.add(new Flag(buffer, offset + 4, 4, EFFECT_SPELL_LEVELS, SPELL_LEVELS_IWD2)); + return null; + } + + @Override + protected int makeEffectSpecial(Datatype parent, ByteBuffer buffer, int offset, List list, + String resType, int param1, int param2) { + if (Profile.isEnhancedEdition() && isEEEx()) { + list.add(new Bitmap(buffer, offset, 4, EFFECT_BYPASS_SLOT_REQ, AbstractStruct.OPTION_NOYES)); + return offset + 4; + } else { + return super.makeEffectSpecial(parent, buffer, offset, list, resType, param1, param2); + } + } +} diff --git a/src/org/infinity/resource/effects/Opcode063.java b/src/org/infinity/resource/effects/Opcode063.java new file mode 100644 index 000000000..402181cdb --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode063.java @@ -0,0 +1,35 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 63. + */ +public class Opcode063 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Infravision"; + } + + public Opcode063() { + super(63, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode064.java b/src/org/infinity/resource/effects/Opcode064.java new file mode 100644 index 000000000..08f723476 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode064.java @@ -0,0 +1,35 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 64. + */ +public class Opcode064 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Remove infravision"; + } + + public Opcode064() { + super(64, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode065.java b/src/org/infinity/resource/effects/Opcode065.java new file mode 100644 index 000000000..847b5ef1f --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode065.java @@ -0,0 +1,35 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 65. + */ +public class Opcode065 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Blur"; + } + + public Opcode065() { + super(65, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode066.java b/src/org/infinity/resource/effects/Opcode066.java new file mode 100644 index 000000000..9695ddf4d --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode066.java @@ -0,0 +1,61 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 66. + */ +public class Opcode066 extends BaseOpcode { + private static final String EFFECT_FADE_AMOUNT = "Fade amount"; + private static final String EFFECT_VISUAL_EFFECT = "Visual effect"; + + private static final String[] VISUAL_TYPES = { "Draw instantly", "Fade in", "Fade out" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Translucency"; + } + + public Opcode066() { + super(66, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_FADE_AMOUNT)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_FADE_AMOUNT)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_VISUAL_EFFECT, VISUAL_TYPES)); + return null; + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return makeEffectParamsEE(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return makeEffectParamsEE(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode067.java b/src/org/infinity/resource/effects/Opcode067.java new file mode 100644 index 000000000..2300da022 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode067.java @@ -0,0 +1,70 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 67. + */ +public class Opcode067 extends BaseOpcode { + private static final String EFFECT_NUM_CREATURES = "# creatures"; + private static final String EFFECT_ALLEGIANCE = "Allegiance"; + private static final String EFFECT_SUMMON_ANIMATION = "Summon animation"; + + private static final String RES_TYPE = "CRE"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Summon creature"; + } + + public Opcode067() { + super(67, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return RES_TYPE; + } + + @Override + protected String makeEffectParamsBG2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_ALLEGIANCE, SUMMON_CONTROLS)); + return RES_TYPE; + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return makeEffectParamsBG2(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return makeEffectParamsBG2(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_NUM_CREATURES)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_SUMMON_ANIMATION, SUMMON_ANIMS)); + return RES_TYPE; + } +} diff --git a/src/org/infinity/resource/effects/Opcode068.java b/src/org/infinity/resource/effects/Opcode068.java new file mode 100644 index 000000000..17ebfaa9a --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode068.java @@ -0,0 +1,48 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 68. + */ +public class Opcode068 extends BaseOpcode { + private static final String EFFECT_DISPLAY_TEXT = "Display text?"; + + private static final String RES_TYPE = "VEF:VVC:BAM"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Unsummon creature"; + } + + public Opcode068() { + super(68, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new Bitmap(buffer, offset, 4, EFFECT_DISPLAY_TEXT, AbstractStruct.OPTION_NOYES)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new Bitmap(buffer, offset, 4, EFFECT_DISPLAY_TEXT, AbstractStruct.OPTION_NOYES)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return RES_TYPE; + } +} diff --git a/src/org/infinity/resource/effects/Opcode069.java b/src/org/infinity/resource/effects/Opcode069.java new file mode 100644 index 000000000..619e77521 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode069.java @@ -0,0 +1,35 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 69. + */ +public class Opcode069 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Nondetection"; + } + + public Opcode069() { + super(69, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode070.java b/src/org/infinity/resource/effects/Opcode070.java new file mode 100644 index 000000000..80c29c9c5 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode070.java @@ -0,0 +1,35 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 70. + */ +public class Opcode070 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Remove nondetection"; + } + + public Opcode070() { + super(70, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode071.java b/src/org/infinity/resource/effects/Opcode071.java new file mode 100644 index 000000000..e77db70ea --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode071.java @@ -0,0 +1,40 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.IdsBitmap; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 71. + */ +public class Opcode071 extends BaseOpcode { + private static final String EFFECT_GENDER = "Gender"; + private static final String EFFECT_HOW = "How?"; + + private static final String[] CHANGE_TYPES = { "Reverse gender", "Set gender" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Change gender"; + } + + public Opcode071() { + super(71, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new IdsBitmap(buffer, offset, 4, EFFECT_GENDER, "GENDER.IDS")); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_HOW, CHANGE_TYPES)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode072.java b/src/org/infinity/resource/effects/Opcode072.java new file mode 100644 index 000000000..e4fc433b7 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode072.java @@ -0,0 +1,40 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.IdsTargetType; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 72. + */ +public class Opcode072 extends BaseOpcode { + private static final String[] IDS_TYPES = { "EA.IDS", "GENERAL.IDS", "RACE.IDS", "CLASS.IDS", "SPECIFIC.IDS", + "GENDER.IDS", null }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Change AI type"; + } + + public Opcode072() { + super(72, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + IDS_TYPES[6] = Profile.getProperty(Profile.Key.GET_IDS_ALIGNMENT); + final IdsTargetType param2 = new IdsTargetType(buffer, offset + 4, IdsTargetType.DEFAULT_NAME_TYPE, IDS_TYPES); + list.add(param2.createIdsValueFromType(buffer)); + list.add(param2); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode073.java b/src/org/infinity/resource/effects/Opcode073.java new file mode 100644 index 000000000..16f26d121 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode073.java @@ -0,0 +1,51 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 73. + */ +public class Opcode073 extends BaseOpcode { + private static final String EFFECT_DAMAGE_TYPE = "Damage type"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Attack damage bonus"; + } + + public Opcode073() { + super(73, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, INC_TYPES)); + return null; + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_DAMAGE_TYPE, DAMAGE_TYPES)); + return null; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return makeEffectParamsIWD(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode074.java b/src/org/infinity/resource/effects/Opcode074.java new file mode 100644 index 000000000..7e79cae50 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode074.java @@ -0,0 +1,35 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 74. + */ +public class Opcode074 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Blindness"; + } + + public Opcode074() { + super(74, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode075.java b/src/org/infinity/resource/effects/Opcode075.java new file mode 100644 index 000000000..b55f10c0f --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode075.java @@ -0,0 +1,35 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 75. + */ +public class Opcode075 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Cure blindness"; + } + + public Opcode075() { + super(75, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode076.java b/src/org/infinity/resource/effects/Opcode076.java new file mode 100644 index 000000000..f27941148 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode076.java @@ -0,0 +1,35 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 76. + */ +public class Opcode076 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Feeblemindedness"; + } + + public Opcode076() { + super(76, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode077.java b/src/org/infinity/resource/effects/Opcode077.java new file mode 100644 index 000000000..e7c7c88f2 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode077.java @@ -0,0 +1,35 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 77. + */ +public class Opcode077 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Cure feeblemindedness"; + } + + public Opcode077() { + super(77, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode078.java b/src/org/infinity/resource/effects/Opcode078.java new file mode 100644 index 000000000..5c09ab4b7 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode078.java @@ -0,0 +1,149 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.Arrays; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.IsNumeric; +import org.infinity.datatype.ResourceRef; +import org.infinity.datatype.Unknown; +import org.infinity.datatype.UpdateListener; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 78. + */ +public class Opcode078 extends BaseOpcode { + private static final String EFFECT_AMOUNT_PER_SECOND = "Amount per second"; + private static final String EFFECT_DISEASE_TYPE = "Disease type"; + + private static final String RES_TYPE = "SPL"; + + private static final String[] DISEASE_TYPES = { "1 damage per second", "Amount damage per round", + "Amount damage per second", "1 damage per amount seconds", "Strength", "Dexterity", "Constitution", + "Intelligence", "Wisdom", "Charisma", "Slow target" }; + private static final String[] DISEASE_TYPES_EE; + private static final String[] DISEASE_TYPES_IWD; + private static final String[] DISEASE_TYPES_IWD2; + + static { + DISEASE_TYPES_EE = Arrays.copyOf(DISEASE_TYPES, DISEASE_TYPES.length + 3); + DISEASE_TYPES_EE[11] = "Mold touch/Single"; + DISEASE_TYPES_EE[12] = "Mold touch/Decrement"; + DISEASE_TYPES_EE[13] = "Contagion"; + + DISEASE_TYPES_IWD = Arrays.copyOf(DISEASE_TYPES, DISEASE_TYPES.length + 1); + DISEASE_TYPES_IWD[11] = "Mold touch"; + + DISEASE_TYPES_IWD2 = Arrays.copyOf(DISEASE_TYPES, DISEASE_TYPES.length + 5); + DISEASE_TYPES_IWD2[11] = "Mold touch"; + DISEASE_TYPES_IWD2[12] = ""; + DISEASE_TYPES_IWD2[13] = "Contagion"; + DISEASE_TYPES_IWD2[14] = "Cloud of pestilence"; + DISEASE_TYPES_IWD2[15] = "Dolorous decay"; + } + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Disease"; + } + + public Opcode078() { + super(78, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_AMOUNT)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_DISEASE_TYPE, DISEASE_TYPES)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_AMOUNT_PER_SECOND)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_AMOUNT)); + final Bitmap bmp = new Bitmap(buffer, offset + 4, 4, EFFECT_DISEASE_TYPE, DISEASE_TYPES_EE); + list.add(bmp); + if (Profile.isEnhancedEdition() && parent != null && parent instanceof UpdateListener) { + bmp.addUpdateListener((UpdateListener)parent); + if (bmp.getValue() == 11 || bmp.getValue() == 12) { + return RES_TYPE; + } + } + return null; + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_AMOUNT)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_DISEASE_TYPE, DISEASE_TYPES_IWD)); + return null; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_AMOUNT)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_DISEASE_TYPE, DISEASE_TYPES_IWD2)); + return null; + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return makeEffectParamsBG1(parent, buffer, offset, list, isVersion1); + } + + @Override + protected boolean update(AbstractStruct struct) throws Exception { + if (struct != null && Profile.isEnhancedEdition()) { + int param2 = ((IsNumeric)getEntry(struct, EffectEntry.IDX_PARAM2)).getValue(); + switch (param2) { + case 11: // Mold Touch/Single + case 12: // Mold Touch/Decrement + replaceEntry(struct, EffectEntry.IDX_RESOURCE, EffectEntry.OFS_RESOURCE, + new ResourceRef(getEntryData(struct, EffectEntry.IDX_RESOURCE), 0, + EFFECT_RESOURCE, RES_TYPE)); + break; + default: + replaceEntry(struct, EffectEntry.IDX_RESOURCE, EffectEntry.OFS_RESOURCE, + new Unknown(getEntryData(struct, EffectEntry.IDX_RESOURCE), 0, 8, + AbstractStruct.COMMON_UNUSED)); + break; + } + return true; + } + return false; + } + + @Override + protected int makeEffectSpecial(Datatype parent, ByteBuffer buffer, int offset, List list, + String resType, int param1, int param2) { + if (Profile.isEnhancedEdition()) { + list.add(new Bitmap(buffer, offset, 4, EFFECT_ICON, getPortraitIconNames(STRING_DEFAULT))); + return offset + 4; + } else { + return super.makeEffectSpecial(parent, buffer, offset, list, resType, param1, param2); + } + } +} diff --git a/src/org/infinity/resource/effects/Opcode079.java b/src/org/infinity/resource/effects/Opcode079.java new file mode 100644 index 000000000..62cb16fed --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode079.java @@ -0,0 +1,35 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 79. + */ +public class Opcode079 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Cure disease"; + } + + public Opcode079() { + super(79, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode080.java b/src/org/infinity/resource/effects/Opcode080.java new file mode 100644 index 000000000..d1c97eb69 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode080.java @@ -0,0 +1,35 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 80. + */ +public class Opcode080 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Deafness"; + } + + public Opcode080() { + super(80, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode081.java b/src/org/infinity/resource/effects/Opcode081.java new file mode 100644 index 000000000..1f3af22ca --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode081.java @@ -0,0 +1,35 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 81. + */ +public class Opcode081 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Cure deafness"; + } + + public Opcode081() { + super(81, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode082.java b/src/org/infinity/resource/effects/Opcode082.java new file mode 100644 index 000000000..5f9b2b735 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode082.java @@ -0,0 +1,40 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.IdsBitmap; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 82. + */ +public class Opcode082 extends BaseOpcode { + private static final String EFFECT_SCRIPT_LEVEL = "Script level"; + + private static final String RES_TYPE = "BCS"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Set AI script"; + } + + public Opcode082() { + super(82, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new IdsBitmap(buffer, offset + 4, 4, EFFECT_SCRIPT_LEVEL, "SCRLEV.IDS")); + return RES_TYPE; + } +} diff --git a/src/org/infinity/resource/effects/Opcode083.java b/src/org/infinity/resource/effects/Opcode083.java new file mode 100644 index 000000000..3cd627edc --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode083.java @@ -0,0 +1,89 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; +import java.util.TreeMap; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.HashBitmap; +import org.infinity.datatype.IdsBitmap; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; +import org.infinity.util.IdsMapEntry; + +/** + * Implemention of opcode 83. + */ +public class Opcode083 extends BaseOpcode { + private static final String EFFECT_PROJECTILE = "Projectile"; + + private static final TreeMap PRO_MAP = new TreeMap<>(); + private static final TreeMap PRO_MAP_BG1; + + static { + PRO_MAP.put(0L, "None"); + PRO_MAP.put(4L, "Arrow"); + PRO_MAP.put(9L, "Axe"); + PRO_MAP.put(14L, "Bolt"); + PRO_MAP.put(19L, "Bullet"); + PRO_MAP.put(26L, "Throwing Dagger"); + PRO_MAP.put(34L, "Dart"); + + PRO_MAP_BG1 = new TreeMap<>(PRO_MAP); + PRO_MAP_BG1.put(64L, "Gaze"); + } + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Immunity to projectile"; + } + + public Opcode083() { + super(83, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + final IdsBitmap ids = new IdsBitmap(buffer, offset + 4, 4, "Projectile", "PROJECTL.IDS"); + ids.addIdsMapEntry(new IdsMapEntry(0L, "None")); + list.add(ids); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new HashBitmap(buffer, offset + 4, 4, EFFECT_PROJECTILE, PRO_MAP_BG1)); + return null; + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new HashBitmap(buffer, offset + 4, 4, EFFECT_PROJECTILE, PROJECTILES_IWD_MAP)); + return null; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return makeEffectParamsIWD(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new HashBitmap(buffer, offset + 4, 4, EFFECT_PROJECTILE, PRO_MAP)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode084.java b/src/org/infinity/resource/effects/Opcode084.java new file mode 100644 index 000000000..3a5daf61b --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode084.java @@ -0,0 +1,54 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 84. + */ +public class Opcode084 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case IWD: + case IWD2: + return null; + default: + return "Magical fire resistance bonus"; + } + } + + public Opcode084() { + super(84, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, INC_TYPES)); + return null; + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode085.java b/src/org/infinity/resource/effects/Opcode085.java new file mode 100644 index 000000000..4df84407b --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode085.java @@ -0,0 +1,54 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 85. + */ +public class Opcode085 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case IWD: + case IWD2: + return null; + default: + return "Magical cold resistance bonus"; + } + } + + public Opcode085() { + super(85, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, INC_TYPES)); + return null; + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode086.java b/src/org/infinity/resource/effects/Opcode086.java new file mode 100644 index 000000000..7eb74d9c2 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode086.java @@ -0,0 +1,35 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 86. + */ +public class Opcode086 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Slashing resistance bonus"; + } + + public Opcode086() { + super(86, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, INC_TYPES)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode087.java b/src/org/infinity/resource/effects/Opcode087.java new file mode 100644 index 000000000..01a976a12 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode087.java @@ -0,0 +1,35 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 87. + */ +public class Opcode087 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Crushing resistance bonus"; + } + + public Opcode087() { + super(87, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, INC_TYPES)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode088.java b/src/org/infinity/resource/effects/Opcode088.java new file mode 100644 index 000000000..14a2f5a43 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode088.java @@ -0,0 +1,35 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 88. + */ +public class Opcode088 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Piercing resistance bonus"; + } + + public Opcode088() { + super(88, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, INC_TYPES)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode089.java b/src/org/infinity/resource/effects/Opcode089.java new file mode 100644 index 000000000..a6e8f4815 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode089.java @@ -0,0 +1,35 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 89. + */ +public class Opcode089 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Missile resistance bonus"; + } + + public Opcode089() { + super(89, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, INC_TYPES)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode090.java b/src/org/infinity/resource/effects/Opcode090.java new file mode 100644 index 000000000..3b93fbc32 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode090.java @@ -0,0 +1,35 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 90. + */ +public class Opcode090 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Open locks bonus"; + } + + public Opcode090() { + super(90, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, INC_TYPES)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode091.java b/src/org/infinity/resource/effects/Opcode091.java new file mode 100644 index 000000000..61b89ecb1 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode091.java @@ -0,0 +1,35 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 91. + */ +public class Opcode091 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Find traps bonus"; + } + + public Opcode091() { + super(91, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, INC_TYPES)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode092.java b/src/org/infinity/resource/effects/Opcode092.java new file mode 100644 index 000000000..129565111 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode092.java @@ -0,0 +1,35 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 92. + */ +public class Opcode092 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Pick pockets bonus"; + } + + public Opcode092() { + super(92, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, INC_TYPES)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode093.java b/src/org/infinity/resource/effects/Opcode093.java new file mode 100644 index 000000000..8a5efc9ce --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode093.java @@ -0,0 +1,35 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 93. + */ +public class Opcode093 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Fatigue bonus"; + } + + public Opcode093() { + super(93, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, INC_TYPES)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode094.java b/src/org/infinity/resource/effects/Opcode094.java new file mode 100644 index 000000000..4280d3f5f --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode094.java @@ -0,0 +1,35 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 94. + */ +public class Opcode094 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Intoxication bonus"; + } + + public Opcode094() { + super(94, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, INC_TYPES)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode095.java b/src/org/infinity/resource/effects/Opcode095.java new file mode 100644 index 000000000..d7170531e --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode095.java @@ -0,0 +1,35 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 95. + */ +public class Opcode095 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Tracking bonus"; + } + + public Opcode095() { + super(95, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, INC_TYPES)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode096.java b/src/org/infinity/resource/effects/Opcode096.java new file mode 100644 index 000000000..499e22d22 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode096.java @@ -0,0 +1,35 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 96. + */ +public class Opcode096 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Change level"; + } + + public Opcode096() { + super(96, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, INC_TYPES)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode097.java b/src/org/infinity/resource/effects/Opcode097.java new file mode 100644 index 000000000..f7eb19927 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode097.java @@ -0,0 +1,35 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 97. + */ +public class Opcode097 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Exceptional strength bonus"; + } + + public Opcode097() { + super(97, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, INC_TYPES)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode098.java b/src/org/infinity/resource/effects/Opcode098.java new file mode 100644 index 000000000..323a58f7d --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode098.java @@ -0,0 +1,80 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.UpdateListener; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 98. + */ +public class Opcode098 extends BaseOpcode { + private static final String EFFECT_REGENERATION_TYPE = "Regeneration type"; + + private static final String[] REGEN_TYPES_PST = { "Regen all HP", "Regenerate amount percentage", + "Amount HP per second", "1 HP per amount seconds" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Regeneration"; + } + + public Opcode098() { + super(98, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return makeEffectParamsInternal(parent, buffer, offset, list, isVersion1, REGEN_TYPES); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return makeEffectParamsInternal(parent, buffer, offset, list, isVersion1, REGEN_TYPES_IWD); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return makeEffectParamsInternal(parent, buffer, offset, list, isVersion1, REGEN_TYPES_IWD); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return makeEffectParamsInternal(parent, buffer, offset, list, isVersion1, REGEN_TYPES_PST); + } + + protected String makeEffectParamsInternal(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1, String[] regenTypes) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + final Bitmap bmp = new Bitmap(buffer, offset + 4, 4, EFFECT_REGENERATION_TYPE, regenTypes); + list.add(bmp); + if (parent != null && parent instanceof UpdateListener) { + bmp.addUpdateListener((UpdateListener)parent); + } + return null; + } + + @Override + protected int makeEffectSpecial(Datatype parent, ByteBuffer buffer, int offset, List list, + String resType, int param1, int param2) { + if (Profile.isEnhancedEdition()) { + list.add(new Bitmap(buffer, offset, 4, EFFECT_ICON, getPortraitIconNames(STRING_DEFAULT))); + return offset + 4; + } else { + return super.makeEffectSpecial(parent, buffer, offset, list, resType, param1, param2); + } + } +} diff --git a/src/org/infinity/resource/effects/Opcode099.java b/src/org/infinity/resource/effects/Opcode099.java new file mode 100644 index 000000000..251bf375e --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode099.java @@ -0,0 +1,49 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 99. + */ +public class Opcode099 extends BaseOpcode { + private static final String EFFECT_PERCENTAGE = "Percentage"; + private static final String EFFECT_SPELL_CLASS = "Spell class"; + + private static final String[] SPELL_TYPES = new String[] { "Wizard", "Priest" }; + private static final String[] SPELL_TYPES_EE = new String[] { "Wizard", "Priest", "Bard song" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Modify duration"; + } + + public Opcode099() { + super(99, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_PERCENTAGE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_SPELL_CLASS, SPELL_TYPES)); + return null; + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_PERCENTAGE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_SPELL_CLASS, SPELL_TYPES_EE)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode100.java b/src/org/infinity/resource/effects/Opcode100.java new file mode 100644 index 000000000..e9b669078 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode100.java @@ -0,0 +1,35 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.IdsTargetType; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 100. + */ +public class Opcode100 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Protection from creature type"; + } + + public Opcode100() { + super(100, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + final IdsTargetType param2 = new IdsTargetType(buffer, offset + 4); + list.add(param2.createIdsValueFromType(buffer)); + list.add(param2); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode101.java b/src/org/infinity/resource/effects/Opcode101.java new file mode 100644 index 000000000..13c033bcd --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode101.java @@ -0,0 +1,36 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 101. + */ +public class Opcode101 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Immunity to effect"; + } + + public Opcode101() { + super(101, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, "Effect", getEffectNames())); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode102.java b/src/org/infinity/resource/effects/Opcode102.java new file mode 100644 index 000000000..850a361df --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode102.java @@ -0,0 +1,37 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 102. + */ +public class Opcode102 extends BaseOpcode { + private static final String EFFECT_SPELL_LEVEL = "Spell level"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Immunity to spell level"; + } + + public Opcode102() { + super(102, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_SPELL_LEVEL)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode103.java b/src/org/infinity/resource/effects/Opcode103.java new file mode 100644 index 000000000..c4c864d79 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode103.java @@ -0,0 +1,38 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.StringRef; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 103. + */ +public class Opcode103 extends BaseOpcode { + private static final String EFFECT_NAME = "Name"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Change name"; + } + + public Opcode103() { + super(103, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new StringRef(buffer, offset, EFFECT_NAME)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode104.java b/src/org/infinity/resource/effects/Opcode104.java new file mode 100644 index 000000000..20298033c --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode104.java @@ -0,0 +1,35 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 104. + */ +public class Opcode104 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "XP bonus"; + } + + public Opcode104() { + super(104, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, INC_TYPES)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode105.java b/src/org/infinity/resource/effects/Opcode105.java new file mode 100644 index 000000000..0a6385329 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode105.java @@ -0,0 +1,35 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 105. + */ +public class Opcode105 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Remove gold"; + } + + public Opcode105() { + super(105, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, INC_TYPES)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode106.java b/src/org/infinity/resource/effects/Opcode106.java new file mode 100644 index 000000000..409eb8165 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode106.java @@ -0,0 +1,35 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 106. + */ +public class Opcode106 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Morale break"; + } + + public Opcode106() { + super(106, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, INC_TYPES)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode107.java b/src/org/infinity/resource/effects/Opcode107.java new file mode 100644 index 000000000..7c1a539a6 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode107.java @@ -0,0 +1,42 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 107. + */ +public class Opcode107 extends BaseOpcode { + private static final String EFFECT_WHICH_PORTRAIT = "Which portrait?"; + + private static final String RES_TYPE = "BMP"; + + private static final String[] PORTRAIT_TYPES = { "Small", "Large" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Change portrait"; + } + + public Opcode107() { + super(107, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_WHICH_PORTRAIT, PORTRAIT_TYPES)); + return RES_TYPE; + } +} diff --git a/src/org/infinity/resource/effects/Opcode108.java b/src/org/infinity/resource/effects/Opcode108.java new file mode 100644 index 000000000..2a0a7eb7c --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode108.java @@ -0,0 +1,46 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 108. + */ +public class Opcode108 extends BaseOpcode { + private static final String[] INC_TYPES_EE = { INC_TYPES[0], INC_TYPES[1], INC_TYPES[2], "Increment (party)", + "Reset (party)" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Reputation bonus"; + } + + public Opcode108() { + super(108, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, INC_TYPES)); + return null; + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, INC_TYPES_EE)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode109.java b/src/org/infinity/resource/effects/Opcode109.java new file mode 100644 index 000000000..445b65eaa --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode109.java @@ -0,0 +1,52 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.IdsTargetType; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 109. + */ +public class Opcode109 extends BaseOpcode { + private static final String EFFECT_FX = "Effect"; + + private static final String[] PARALYZE_EFFECTS_EE = { "Normal", "Fake petrification" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Paralyze"; + } + + public Opcode109() { + super(109, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + final IdsTargetType param2 = new IdsTargetType(buffer, offset + 4); + list.add(param2.createIdsValueFromType(buffer)); + list.add(param2); + return null; + } + + @Override + protected int makeEffectSpecial(Datatype parent, ByteBuffer buffer, int offset, List list, + String resType, int param1, int param2) { + if (Profile.isEnhancedEdition()) { + list.add(new Bitmap(buffer, offset, 4, EFFECT_FX, PARALYZE_EFFECTS_EE)); + return offset + 4; + } else { + return super.makeEffectSpecial(parent, buffer, offset, list, resType, param1, param2); + } + } +} diff --git a/src/org/infinity/resource/effects/Opcode110.java b/src/org/infinity/resource/effects/Opcode110.java new file mode 100644 index 000000000..02305a2c7 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode110.java @@ -0,0 +1,44 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 110. + */ +public class Opcode110 extends BaseOpcode { + private static final String[] MOVE_TYPES = { "Run", "Run", "Run", "Run", "Run", "Run", "Run", "Weak", "Walk" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case PST: + return "Retreat from"; + default: + return null; + } + } + + public Opcode110() { + super(110, getOpcodeName()); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_TYPE, MOVE_TYPES)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode111.java b/src/org/infinity/resource/effects/Opcode111.java new file mode 100644 index 000000000..f1f57224d --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode111.java @@ -0,0 +1,39 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 111. + */ +public class Opcode111 extends BaseOpcode { + private static final String EFFECT_NUM_TO_CREATE = "# to create"; + + private static final String RES_TYPE = "ITM"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Create weapon"; + } + + public Opcode111() { + super(111, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_NUM_TO_CREATE)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return RES_TYPE; + } +} diff --git a/src/org/infinity/resource/effects/Opcode112.java b/src/org/infinity/resource/effects/Opcode112.java new file mode 100644 index 000000000..a99184322 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode112.java @@ -0,0 +1,37 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 112. + */ +public class Opcode112 extends BaseOpcode { + private static final String RES_TYPE = "ITM"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Remove item"; + } + + public Opcode112() { + super(112, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return RES_TYPE; + } +} diff --git a/src/org/infinity/resource/effects/Opcode113.java b/src/org/infinity/resource/effects/Opcode113.java new file mode 100644 index 000000000..4d98735c5 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode113.java @@ -0,0 +1,46 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 113. + */ +public class Opcode113 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + if (Profile.getEngine() == Profile.Engine.IWD) { + return null; + } else { + return "Equip weapon"; + } + } + + public Opcode113() { + super(113, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode114.java b/src/org/infinity/resource/effects/Opcode114.java new file mode 100644 index 000000000..90bbe9e7c --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode114.java @@ -0,0 +1,46 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 114. + */ +public class Opcode114 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + if (Profile.getEngine() == Profile.Engine.IWD) { + return null; + } else { + return "Dither"; + } + } + + public Opcode114() { + super(114, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode115.java b/src/org/infinity/resource/effects/Opcode115.java new file mode 100644 index 000000000..be3b18721 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode115.java @@ -0,0 +1,40 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 115. + */ +public class Opcode115 extends BaseOpcode { + private static final String EFFECT_ALIGNMENT_MASK = "Alignment mask"; + + private static final String[] MASK_TYPES = { "Evil", "Neutral", "Good" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Detect alignment"; + } + + public Opcode115() { + super(115, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_ALIGNMENT_MASK, MASK_TYPES)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode116.java b/src/org/infinity/resource/effects/Opcode116.java new file mode 100644 index 000000000..856958ca3 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode116.java @@ -0,0 +1,35 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 116. + */ +public class Opcode116 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Detect invisible"; + } + + public Opcode116() { + super(116, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode117.java b/src/org/infinity/resource/effects/Opcode117.java new file mode 100644 index 000000000..81a78e161 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode117.java @@ -0,0 +1,35 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 117. + */ +public class Opcode117 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Clairvoyance"; + } + + public Opcode117() { + super(117, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode118.java b/src/org/infinity/resource/effects/Opcode118.java new file mode 100644 index 000000000..558727a36 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode118.java @@ -0,0 +1,46 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 118. + */ +public class Opcode118 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + if (Profile.getEngine() == Profile.Engine.IWD) { + return null; + } else { + return "Show creatures"; + } + } + + public Opcode118() { + super(118, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode119.java b/src/org/infinity/resource/effects/Opcode119.java new file mode 100644 index 000000000..49b86775a --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode119.java @@ -0,0 +1,55 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 119. + */ +public class Opcode119 extends BaseOpcode { + private static final String EFFECT_NUM_IMAGES = "# images"; + private static final String EFFECT_IMAGE_TYPE = "Image type"; + + private static final String[] IMAGE_TYPES = { "Normal", "Reflected image" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Mirror image"; + } + + public Opcode119() { + super(119, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_NUM_IMAGES)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_NUM_IMAGES)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_IMAGE_TYPE, IMAGE_TYPES)); + return null; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return makeEffectParamsIWD(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode120.java b/src/org/infinity/resource/effects/Opcode120.java new file mode 100644 index 000000000..7653d4eea --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode120.java @@ -0,0 +1,41 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 120. + */ +public class Opcode120 extends BaseOpcode { + private static final String EFFECT_MAX_ENCHANTMENT = "Maximum enchantment"; + private static final String EFFECT_WEAPON_TYPE = "Weapon type"; + + private static final String[] WEAPON_TYPES = { "Enchanted", "Magical", "Non-magical", "Silver", "Non-silver", + "Non-silver, non-magical", "Two-handed", "One-handed", "Cursed", "Non-cursed", "Cold iron", "Non-cold-iron" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Immunity to weapons"; + } + + public Opcode120() { + super(120, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_MAX_ENCHANTMENT)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_WEAPON_TYPE, WEAPON_TYPES)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode121.java b/src/org/infinity/resource/effects/Opcode121.java new file mode 100644 index 000000000..52fe413ab --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode121.java @@ -0,0 +1,46 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 121. + */ +public class Opcode121 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + if (Profile.getEngine() == Profile.Engine.IWD) { + return null; + } else { + return "Visual animation effect"; + } + } + + public Opcode121() { + super(121, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode122.java b/src/org/infinity/resource/effects/Opcode122.java new file mode 100644 index 000000000..d26daf704 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode122.java @@ -0,0 +1,50 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 122. + */ +public class Opcode122 extends BaseOpcode { + private static final String EFFECT_NUM_TO_CREATE = "# to create"; + + private static final String RES_TYPE = "ITM"; + + private static final String[] TYPES = { "Group", "Slot" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Create inventory item"; + } + + public Opcode122() { + super(122, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_NUM_TO_CREATE)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return RES_TYPE; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_LOCATION)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_TYPE, TYPES)); + return RES_TYPE; + } +} diff --git a/src/org/infinity/resource/effects/Opcode123.java b/src/org/infinity/resource/effects/Opcode123.java new file mode 100644 index 000000000..cf4af73b9 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode123.java @@ -0,0 +1,37 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 123. + */ +public class Opcode123 extends BaseOpcode { + private static final String RES_TYPE = "ITM"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Remove inventory item"; + } + + public Opcode123() { + super(123, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return RES_TYPE; + } +} diff --git a/src/org/infinity/resource/effects/Opcode124.java b/src/org/infinity/resource/effects/Opcode124.java new file mode 100644 index 000000000..a23943eae --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode124.java @@ -0,0 +1,61 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 124. + */ +public class Opcode124 extends BaseOpcode { + private static final String EFFECT_BEHAVIOR = "Behavior"; + + private static final String[] BEHAVIOR_TYPES = { "Normal", "Source to target", "Return to start", + "Exchange with target" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Teleport"; + } + + public Opcode124() { + super(124, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_BEHAVIOR, BEHAVIOR_TYPES)); + return null; + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return makeEffectParamsEE(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return makeEffectParamsEE(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode125.java b/src/org/infinity/resource/effects/Opcode125.java new file mode 100644 index 000000000..3f8a8f5f5 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode125.java @@ -0,0 +1,35 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 125. + */ +public class Opcode125 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Unlock"; + } + + public Opcode125() { + super(125, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode126.java b/src/org/infinity/resource/effects/Opcode126.java new file mode 100644 index 000000000..5c8fddb74 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode126.java @@ -0,0 +1,44 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.HashBitmap; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 126. + */ +public class Opcode126 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Movement rate bonus"; + } + + public Opcode126() { + super(126, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, INC_TYPES)); + return null; + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new HashBitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, INC_TYPES_MAP, false)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode127.java b/src/org/infinity/resource/effects/Opcode127.java new file mode 100644 index 000000000..2b313a0ca --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode127.java @@ -0,0 +1,55 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 127. + */ +public class Opcode127 extends BaseOpcode { + private static final String EFFECT_TOTAL_XP = "Total XP"; + private static final String EFFECT_FROM_2DA = "From 2DA file"; + + private static final String RES_TYPE = "2DA"; + + private static final String[] FILE_TYPES = { "Monsum01 (ally)", "Monsum02 (ally)", "Monsum03 (ally)", + "Anisum01 (ally)", "Anisum02 (ally)", "Monsum01 (enemy)", "Monsum02 (enemy)", "Monsum03 (enemy)", + "Anisum01 (enemy)", "Anisum02 (enemy)" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + if (Profile.getEngine() == Profile.Engine.IWD2) { + return null; + } else { + return "Summon monsters"; + } + } + + public Opcode127() { + super(127, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_TOTAL_XP)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_FROM_2DA, FILE_TYPES)); + return RES_TYPE; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode128.java b/src/org/infinity/resource/effects/Opcode128.java new file mode 100644 index 000000000..562a5bcc9 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode128.java @@ -0,0 +1,35 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 128. + */ +public class Opcode128 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Confusion"; + } + + public Opcode128() { + super(128, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode129.java b/src/org/infinity/resource/effects/Opcode129.java new file mode 100644 index 000000000..4299927ce --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode129.java @@ -0,0 +1,36 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 129. + */ +public class Opcode129 extends BaseOpcode { + private static final String EFFECT_HP_BONUS = "HP bonus"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Aid (non-cumulative)"; + } + + public Opcode129() { + super(129, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_AMOUNT)); + list.add(new DecNumber(buffer, offset + 4, 4, EFFECT_HP_BONUS)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode130.java b/src/org/infinity/resource/effects/Opcode130.java new file mode 100644 index 000000000..9d148d004 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode130.java @@ -0,0 +1,35 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 130. + */ +public class Opcode130 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Bless (non-cumulative)"; + } + + public Opcode130() { + super(130, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_AMOUNT)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode131.java b/src/org/infinity/resource/effects/Opcode131.java new file mode 100644 index 000000000..b600304dd --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode131.java @@ -0,0 +1,48 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 131. + */ +public class Opcode131 extends BaseOpcode { + private static final String EFFECT_PRAYER_TYPE = "Prayer type"; + + private static final String[] PRAYER_TYPES = { "Beneficial", "Detrimental" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Chant (non-cumulative)"; + } + + public Opcode131() { + super(131, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_AMOUNT)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_PRAYER_TYPE, PRAYER_TYPES)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode132.java b/src/org/infinity/resource/effects/Opcode132.java new file mode 100644 index 000000000..678141294 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode132.java @@ -0,0 +1,35 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 132. + */ +public class Opcode132 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Draw upon holy might (non-cumulative)"; + } + + public Opcode132() { + super(132, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_AMOUNT)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode133.java b/src/org/infinity/resource/effects/Opcode133.java new file mode 100644 index 000000000..ca729046b --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode133.java @@ -0,0 +1,35 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 133. + */ +public class Opcode133 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Luck (non-cumulative)"; + } + + public Opcode133() { + super(133, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_AMOUNT)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode134.java b/src/org/infinity/resource/effects/Opcode134.java new file mode 100644 index 000000000..1e3865c9b --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode134.java @@ -0,0 +1,35 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 134. + */ +public class Opcode134 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Petrification"; + } + + public Opcode134() { + super(134, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode135.java b/src/org/infinity/resource/effects/Opcode135.java new file mode 100644 index 000000000..41b4d258a --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode135.java @@ -0,0 +1,51 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 135. + */ +public class Opcode135 extends BaseOpcode { + private static final String EFFECT_POLYMORPH_TYPE = "Polymorph type"; + + private static final String RES_TYPE = "CRE"; + + private static final String[] POLYMORPH_TYPES = { "Change into", "Appearance only", "Appearance only", + "Appearance only" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Polymorph"; + } + + public Opcode135() { + super(135, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_POLYMORPH_TYPE, POLYMORPH_TYPES)); + return RES_TYPE; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return RES_TYPE; + } +} diff --git a/src/org/infinity/resource/effects/Opcode136.java b/src/org/infinity/resource/effects/Opcode136.java new file mode 100644 index 000000000..96453e074 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode136.java @@ -0,0 +1,35 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 136. + */ +public class Opcode136 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Force visible"; + } + + public Opcode136() { + super(136, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode137.java b/src/org/infinity/resource/effects/Opcode137.java new file mode 100644 index 000000000..46d1341e2 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode137.java @@ -0,0 +1,46 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 137. + */ +public class Opcode137 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + if (Profile.getEngine() == Profile.Engine.IWD2) { + return null; + } else { + return "Bad chant (non-cumulative)"; + } + } + + public Opcode137() { + super(137, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_AMOUNT)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode138.java b/src/org/infinity/resource/effects/Opcode138.java new file mode 100644 index 000000000..eaa920c5b --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode138.java @@ -0,0 +1,73 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.IdsBitmap; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 138. + */ +public class Opcode138 extends BaseOpcode { + private static final String EFFECT_SEQUENCE = "Sequence"; + + private static final String[] SEQ_TYPES = { "", "Lay down (short)", "Move hands (short)", "Move hands (long)", + "Move shoulder (short)", "Move shoulder (long)", "Lay down (long)", "Breathe rapidly (short)", + "Breath rapidly (long)" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Set animation sequence"; + } + + public Opcode138() { + super(138, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new IdsBitmap(buffer, offset + 4, 4, EFFECT_SEQUENCE, "SEQ.IDS")); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_SEQUENCE, SEQ_TYPES)); + return null; + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return makeEffectParamsBG1(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new IdsBitmap(buffer, offset + 4, 4, EFFECT_SEQUENCE, "SEQUENCE.IDS")); + return null; + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new IdsBitmap(buffer, offset + 4, 4, EFFECT_SEQUENCE, "ANIMSTAT.IDS")); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode139.java b/src/org/infinity/resource/effects/Opcode139.java new file mode 100644 index 000000000..20636916d --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode139.java @@ -0,0 +1,36 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.StringRef; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 139. + */ +public class Opcode139 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Display string"; + } + + public Opcode139() { + super(139, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new StringRef(buffer, offset, EFFECT_STRING)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode140.java b/src/org/infinity/resource/effects/Opcode140.java new file mode 100644 index 000000000..21f997067 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode140.java @@ -0,0 +1,67 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; +import java.util.TreeMap; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.HashBitmap; +import org.infinity.datatype.ProRef; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 140. + */ +public class Opcode140 extends BaseOpcode { + private static final String EFFECT_GLOW = "Glow"; + private static final String EFFECT_PROJECTILE = "Projectile"; + + private static final TreeMap GLOW_MAP = new TreeMap<>(); + private static final TreeMap GLOW_MAP_EE; + + static { + GLOW_MAP.put(9L, "Necromancy"); + GLOW_MAP.put(10L, "Alteration"); + GLOW_MAP.put(11L, "Enchantment"); + GLOW_MAP.put(12L, "Abjuration"); + GLOW_MAP.put(13L, "Illusion"); + GLOW_MAP.put(14L, "Conjuration"); + GLOW_MAP.put(15L, "Invocation"); + GLOW_MAP.put(16L, "Divination"); + + GLOW_MAP_EE = new TreeMap<>(GLOW_MAP); + GLOW_MAP_EE.put(0L, "Use projectile"); + } + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Casting glow"; + } + + public Opcode140() { + super(140, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new HashBitmap(buffer, offset + 4, 4, EFFECT_GLOW, GLOW_MAP)); + return null; + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new ProRef(buffer, offset, EFFECT_PROJECTILE, false)); + list.add(new DecNumber(buffer, offset + 2, 2, AbstractStruct.COMMON_UNUSED)); + list.add(new HashBitmap(buffer, offset + 4, 4, EFFECT_GLOW, GLOW_MAP_EE)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode141.java b/src/org/infinity/resource/effects/Opcode141.java new file mode 100644 index 000000000..352dbd6e8 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode141.java @@ -0,0 +1,55 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 141. + */ +public class Opcode141 extends BaseOpcode { + private static final String EFFECT_TARGET = "Target"; + private static final String EFFECT_FX = "Effect"; + + private static final String[] TARGET_TYPES = { "Spell target", "Target point" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Lighting effects"; + } + + public Opcode141() { + super(141, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_FX, LIGHTING)); + return null; + } + + @Override + protected String makeEffectParamsBG2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new Bitmap(buffer, offset, 4, EFFECT_TARGET, TARGET_TYPES)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_FX, LIGHTING)); + return null; + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return makeEffectParamsBG2(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode142.java b/src/org/infinity/resource/effects/Opcode142.java new file mode 100644 index 000000000..312bc2d93 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode142.java @@ -0,0 +1,36 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 142. + */ +public class Opcode142 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Display portrait icon"; + } + + public Opcode142() { + super(142, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_ICON, getPortraitIconNames())); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode143.java b/src/org/infinity/resource/effects/Opcode143.java new file mode 100644 index 000000000..2d8e7b3f3 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode143.java @@ -0,0 +1,57 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.IdsBitmap; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 143. + */ +public class Opcode143 extends BaseOpcode { + private static final String EFFECT_SLOT = "Slot"; + + private static final String RES_TYPE = "ITM"; + + private static final String[] SLOT_TYPES_PST = { "Hand", "Eyeball/Earring (left)", "Tattoo", "Bracelet", + "Ring (right)", "Tattoo (top left)", "Ring (left)", "Earring (right)/Lens", "Armor", "Tattoo (bottomr right)", + "Temporary weapon", "Ammo 1", "Ammo 2", "Ammo 3", "Ammo 4", "Ammo 5", "Ammo 6", "Quick item 1", "Quick item 2", + "Quick item 3", "Quick item 4", "Quick item 5", "Inventory 1", "Inventory 2", "Inventory 3", "Inventory 4", + "Inventory 5", "Inventory 6", "Inventory 7", "Inventory 8", "Inventory 9", "Inventory 10", "Inventory 11", + "Inventory 12", "Inventory 13", "Inventory 14", "Inventory 15", "Inventory 16", "Inventory 17", "Inventory 18", + "Inventory 19", "Inventory 20", "Magic weapon", "Weapon 1", "Weapon 2", "Weapon 3", "Weapon 4" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Create item in slot"; + } + + public Opcode143() { + super(143, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new IdsBitmap(buffer, offset, 4, EFFECT_SLOT, "SLOTS.IDS", true, false, true)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return RES_TYPE; + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new Bitmap(buffer, offset, 4, EFFECT_SLOT, SLOT_TYPES_PST)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return RES_TYPE; + } +} diff --git a/src/org/infinity/resource/effects/Opcode144.java b/src/org/infinity/resource/effects/Opcode144.java new file mode 100644 index 000000000..f48ae1d2c --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode144.java @@ -0,0 +1,79 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.Arrays; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 144. + */ +public class Opcode144 extends BaseOpcode { + private static final String EFFECT_BUTTON = "Button"; + + private static final String[] BUTTONS_TOBEX; + private static final String[] BUTTONS_EE; + + static { + BUTTONS_TOBEX = Arrays.copyOf(BUTTONS, 15); + BUTTONS_TOBEX[10] = "Bard song"; + BUTTONS_TOBEX[14] = "Find traps"; + + BUTTONS_EE = Arrays.copyOf(BUTTONS_TOBEX, 16); + BUTTONS_EE[15] = "Inventory screen"; + } + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Disable button"; + } + + public Opcode144() { + super(144, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_BUTTON, BUTTONS)); + return null; + } + + @Override + protected String makeEffectParamsBG2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + if (isTobEx()) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_BUTTON, BUTTONS_TOBEX)); + return null; + } else { + return makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_BUTTON, BUTTONS_EE)); + return null; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_BUTTON, BUTTONS_IWD2)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode145.java b/src/org/infinity/resource/effects/Opcode145.java new file mode 100644 index 000000000..6f431b125 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode145.java @@ -0,0 +1,71 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 145. + */ +public class Opcode145 extends BaseOpcode { + private static final String EFFECT_SPELL_CLASS = "Spell class"; + private static final String EFFECT_DISPLAY_MESSAGE = "Display message?"; + + private static final String[] SPELL_CLASSES = { "Wizard", "Priest", "Innate" }; + private static final String[] SPELL_CLASSES_EE = { "Wizard", "Priest", "Innate", "All, magical only" }; + private static final String[] SPELL_CLASSES_IWD2 = { "All spells", "Non-innate", "Arcane", "Divine", "Innate" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Disable spellcasting"; + } + + public Opcode145() { + super(145, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_SPELL_CLASS, SPELL_CLASSES)); + return null; + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_SPELL_CLASS, SPELL_CLASSES_EE)); + return null; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_SPELL_CLASS, SPELL_CLASSES_IWD2)); + return null; + } + + @Override + protected int makeEffectSpecial(Datatype parent, ByteBuffer buffer, int offset, List list, + String resType, int param1, int param2) { + if (Profile.isEnhancedEdition()) { + list.add(new Bitmap(buffer, offset, 4, EFFECT_DISPLAY_MESSAGE, AbstractStruct.OPTION_YESNO)); + return offset + 4; + } else { + return super.makeEffectSpecial(parent, buffer, offset, list, resType, param1, param2); + } + } +} diff --git a/src/org/infinity/resource/effects/Opcode146.java b/src/org/infinity/resource/effects/Opcode146.java new file mode 100644 index 000000000..045888843 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode146.java @@ -0,0 +1,51 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 146. + */ +public class Opcode146 extends BaseOpcode { + private static final String EFFECT_CAST_AT_LEVEL = "Cast at level"; + + private static final String RES_TYPE = "SPL"; + + private static final String[] CASTING_MODE = { "Cast normally", "Cast instantly (caster level)" }; + private static final String[] CASTING_MODE_EE = { CASTING_MODE[0], CASTING_MODE[1], + "Cast instantly (specified level)" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Cast spell"; + } + + public Opcode146() { + super(146, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_CAST_AT_LEVEL)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODE, CASTING_MODE)); + return RES_TYPE; + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_CAST_AT_LEVEL)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODE, CASTING_MODE_EE)); + return RES_TYPE; + } +} diff --git a/src/org/infinity/resource/effects/Opcode147.java b/src/org/infinity/resource/effects/Opcode147.java new file mode 100644 index 000000000..cf51872a2 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode147.java @@ -0,0 +1,76 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.Flag; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 147. + */ +public class Opcode147 extends BaseOpcode { + private static final String EFFECT_BEHAVIOR = "Behavior"; + private static final String EFFECT_SPELL_TYPE = "Spell type"; + + private static final String RES_TYPE = "SPL"; + + private static final String[] BEHAVIOR_TYPES = { "Default", "No XP", null, "Always successful", null, + "No XP if already learned", "Exclude spell schools", "Exclude sorcerer", "Fail if max. spells learned" }; + private static final String[] SPELL_TYPES_IWD2 = { "Arcane", "Divine", "Innate" }; + private static final String[] SPELL_TYPES_PST = { "Wizard", "Priest", "Innate" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Learn spell"; + } + + public Opcode147() { + super(147, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return RES_TYPE; + } + + @Override + protected String makeEffectParamsBG2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + if (isTobEx()) { + list.add(new DecNumber(buffer, offset, 2, AbstractStruct.COMMON_UNUSED)); + list.add(new Flag(buffer, offset + 2, 2, EFFECT_BEHAVIOR, BEHAVIOR_TYPES)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return RES_TYPE; + } else { + return makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_SPELL_TYPE, SPELL_TYPES_IWD2)); + return RES_TYPE; + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_SPELL_TYPE, SPELL_TYPES_PST)); + return RES_TYPE; + } +} diff --git a/src/org/infinity/resource/effects/Opcode148.java b/src/org/infinity/resource/effects/Opcode148.java new file mode 100644 index 000000000..8d604fdca --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode148.java @@ -0,0 +1,51 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 148. + */ +public class Opcode148 extends BaseOpcode { + private static final String EFFECT_CAST_AT_LEVEL = "Cast at level"; + + private static final String RES_TYPE = "SPL"; + + private static final String[] CASTING_MODE = { "Cast normally", "Cast instantly (caster level)" }; + private static final String[] CASTING_MODE_EE = { CASTING_MODE[0], CASTING_MODE[1], + "Cast instantly (specified level)" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Cast spell at point"; + } + + public Opcode148() { + super(148, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_CAST_AT_LEVEL)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODE, CASTING_MODE)); + return RES_TYPE; + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_CAST_AT_LEVEL)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODE, CASTING_MODE_EE)); + return RES_TYPE; + } +} diff --git a/src/org/infinity/resource/effects/Opcode149.java b/src/org/infinity/resource/effects/Opcode149.java new file mode 100644 index 000000000..37aba5c3a --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode149.java @@ -0,0 +1,35 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 149. + */ +public class Opcode149 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Identify"; + } + + public Opcode149() { + super(149, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode150.java b/src/org/infinity/resource/effects/Opcode150.java new file mode 100644 index 000000000..5a7e48a6b --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode150.java @@ -0,0 +1,35 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 150. + */ +public class Opcode150 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Find traps"; + } + + public Opcode150() { + super(150, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode151.java b/src/org/infinity/resource/effects/Opcode151.java new file mode 100644 index 000000000..d7eb960ce --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode151.java @@ -0,0 +1,51 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 151. + */ +public class Opcode151 extends BaseOpcode { + private static final String EFFECT_REPLACEMENT_METHOD = "Replacement method"; + + private static final String RES_TYPE = "CRE"; + + private static final String[] REPLACEMENT_TYPES = { "Remove silently", "Remove via chunked death", + "Remove via normal death", "Don't remove" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Replace self"; + } + + public Opcode151() { + super(151, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_REPLACEMENT_METHOD, REPLACEMENT_TYPES)); + return RES_TYPE; + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return RES_TYPE; + } +} diff --git a/src/org/infinity/resource/effects/Opcode152.java b/src/org/infinity/resource/effects/Opcode152.java new file mode 100644 index 000000000..7acd97ee5 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode152.java @@ -0,0 +1,46 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 152. + */ +public class Opcode152 extends BaseOpcode { + private static final String RES_TYPE = "MVE"; + private static final String RES_TYPE_EE = "WBM"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Play movie"; + } + + public Opcode152() { + super(152, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return RES_TYPE; + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return RES_TYPE_EE; + } +} diff --git a/src/org/infinity/resource/effects/Opcode153.java b/src/org/infinity/resource/effects/Opcode153.java new file mode 100644 index 000000000..0e7225d1c --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode153.java @@ -0,0 +1,48 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 153. + */ +public class Opcode153 extends BaseOpcode { + private static final String RES_TYPE_EE = "VVC:BAM"; + + private static final String[] MODES_EE = { "Default overlay", "Custom overlay" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Sanctuary"; + } + + public Opcode153() { + super(153, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODE, MODES_EE)); + return RES_TYPE_EE; + } +} diff --git a/src/org/infinity/resource/effects/Opcode154.java b/src/org/infinity/resource/effects/Opcode154.java new file mode 100644 index 000000000..fddcf3766 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode154.java @@ -0,0 +1,48 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 154. + */ +public class Opcode154 extends BaseOpcode { + private static final String RES_TYPE_EE = "VVC:BAM"; + + private static final String[] MODES_EE = { "Default overlay", "Custom overlay" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Entangle overlay"; + } + + public Opcode154() { + super(154, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODE, MODES_EE)); + return RES_TYPE_EE; + } +} diff --git a/src/org/infinity/resource/effects/Opcode155.java b/src/org/infinity/resource/effects/Opcode155.java new file mode 100644 index 000000000..a216ad3e9 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode155.java @@ -0,0 +1,59 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 155. + */ +public class Opcode155 extends BaseOpcode { + private static final String RES_TYPE_EE = "VVC:BAM"; + + private static final String[] MODES_EE = { "Default overlay", "Custom overlay" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + if (Profile.getEngine() == Profile.Engine.IWD2) { + return null; + } else { + return "Minor globe overlay"; + } + } + + public Opcode155() { + super(155, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODE, MODES_EE)); + return RES_TYPE_EE; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode156.java b/src/org/infinity/resource/effects/Opcode156.java new file mode 100644 index 000000000..c6ba9ffbb --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode156.java @@ -0,0 +1,59 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 156. + */ +public class Opcode156 extends BaseOpcode { + private static final String RES_TYPE_EE = "VVC:BAM"; + + private static final String[] MODES_EE = { "Default overlay", "Custom overlay" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + if (Profile.getEngine() == Profile.Engine.IWD2) { + return null; + } else { + return "Protection from normal missiles overlay"; + } + } + + public Opcode156() { + super(156, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODE, MODES_EE)); + return RES_TYPE_EE; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode157.java b/src/org/infinity/resource/effects/Opcode157.java new file mode 100644 index 000000000..99710d83a --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode157.java @@ -0,0 +1,48 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 157. + */ +public class Opcode157 extends BaseOpcode { + private static final String RES_TYPE_EE = "VVC:BAM"; + + private static final String[] MODES_EE = { "Default overlay", "Custom overlay" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Web effect"; + } + + public Opcode157() { + super(157, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODE, MODES_EE)); + return RES_TYPE_EE; + } +} diff --git a/src/org/infinity/resource/effects/Opcode158.java b/src/org/infinity/resource/effects/Opcode158.java new file mode 100644 index 000000000..cf0d59a6e --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode158.java @@ -0,0 +1,48 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 158. + */ +public class Opcode158 extends BaseOpcode { + private static final String RES_TYPE_EE = "VVC:BAM"; + + private static final String[] MODES_EE = { "Default overlay", "Custom overlay" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Grease overlay"; + } + + public Opcode158() { + super(158, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODE, MODES_EE)); + return RES_TYPE_EE; + } +} diff --git a/src/org/infinity/resource/effects/Opcode159.java b/src/org/infinity/resource/effects/Opcode159.java new file mode 100644 index 000000000..1bc4694c2 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode159.java @@ -0,0 +1,37 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 159. + */ +public class Opcode159 extends BaseOpcode { + private static final String EFFECT_NUM_IMAGES = "# images"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Mirror image effect"; + } + + public Opcode159() { + super(159, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_NUM_IMAGES)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode160.java b/src/org/infinity/resource/effects/Opcode160.java new file mode 100644 index 000000000..a9090bfd6 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode160.java @@ -0,0 +1,35 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 160. + */ +public class Opcode160 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Remove sanctuary"; + } + + public Opcode160() { + super(160, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode161.java b/src/org/infinity/resource/effects/Opcode161.java new file mode 100644 index 000000000..c3a53c673 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode161.java @@ -0,0 +1,35 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 161. + */ +public class Opcode161 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Remove fear"; + } + + public Opcode161() { + super(161, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode162.java b/src/org/infinity/resource/effects/Opcode162.java new file mode 100644 index 000000000..8db1ada3a --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode162.java @@ -0,0 +1,35 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 162. + */ +public class Opcode162 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Remove paralysis"; + } + + public Opcode162() { + super(162, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode163.java b/src/org/infinity/resource/effects/Opcode163.java new file mode 100644 index 000000000..763c0cbf4 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode163.java @@ -0,0 +1,35 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 163. + */ +public class Opcode163 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Free action"; + } + + public Opcode163() { + super(163, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode164.java b/src/org/infinity/resource/effects/Opcode164.java new file mode 100644 index 000000000..31a5c85af --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode164.java @@ -0,0 +1,35 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 164. + */ +public class Opcode164 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Remove intoxication"; + } + + public Opcode164() { + super(164, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode165.java b/src/org/infinity/resource/effects/Opcode165.java new file mode 100644 index 000000000..884bc9eef --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode165.java @@ -0,0 +1,35 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 165. + */ +public class Opcode165 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Pause target"; + } + + public Opcode165() { + super(165, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode166.java b/src/org/infinity/resource/effects/Opcode166.java new file mode 100644 index 000000000..d4d8cce25 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode166.java @@ -0,0 +1,51 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.Arrays; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 166. + */ +public class Opcode166 extends BaseOpcode { + private static final String[] INC_TYPES_GENERIC = Arrays.copyOf(INC_TYPES, 2); + private static final String[] INC_TYPES_TOBEX = { "Instantaneous", INC_TYPES[1], INC_TYPES[2], INC_TYPES[0] }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Magic resistance bonus"; + } + + public Opcode166() { + super(166, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, INC_TYPES_GENERIC)); + return null; + } + + @Override + protected String makeEffectParamsBG2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + if (isTobEx()) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, INC_TYPES_TOBEX)); + return null; + } else { + return makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + } +} diff --git a/src/org/infinity/resource/effects/Opcode167.java b/src/org/infinity/resource/effects/Opcode167.java new file mode 100644 index 000000000..00361602f --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode167.java @@ -0,0 +1,40 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 167. + */ +public class Opcode167 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + if (Profile.getEngine() == Profile.Engine.IWD2) { + return "Missile attack bonus"; + } else { + return "Missile THAC0 bonus"; + } + } + + public Opcode167() { + super(167, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, INC_TYPES)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode168.java b/src/org/infinity/resource/effects/Opcode168.java new file mode 100644 index 000000000..f8a1a94a9 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode168.java @@ -0,0 +1,35 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 168. + */ +public class Opcode168 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Remove creature"; + } + + public Opcode168() { + super(168, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode169.java b/src/org/infinity/resource/effects/Opcode169.java new file mode 100644 index 000000000..f31a218f5 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode169.java @@ -0,0 +1,36 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 169. + */ +public class Opcode169 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Prevent portrait icon"; + } + + public Opcode169() { + super(169, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_ICON, getPortraitIconNames())); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode170.java b/src/org/infinity/resource/effects/Opcode170.java new file mode 100644 index 000000000..455d1498f --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode170.java @@ -0,0 +1,41 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 170. + */ +public class Opcode170 extends BaseOpcode { + private static final String EFFECT_ANIMATION = "Animation"; + + private static final String[] ANIMATION_TYPES = { "Blood (behind)", "Blood (front)", "Blood (left)", "Blood (right)", + "Fire 1", "Fire 2", "Fire 3", "Electricity 1", "Electricity 2", "Electricity 3" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Play damage animation"; + } + + public Opcode170() { + super(170, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_ANIMATION, ANIMATION_TYPES)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode171.java b/src/org/infinity/resource/effects/Opcode171.java new file mode 100644 index 000000000..350d2a28f --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode171.java @@ -0,0 +1,37 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 171. + */ +public class Opcode171 extends BaseOpcode { + private static final String RES_TYPE = "SPL"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Give innate ability"; + } + + public Opcode171() { + super(171, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return RES_TYPE; + } +} diff --git a/src/org/infinity/resource/effects/Opcode172.java b/src/org/infinity/resource/effects/Opcode172.java new file mode 100644 index 000000000..3ecc28808 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode172.java @@ -0,0 +1,37 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 172. + */ +public class Opcode172 extends BaseOpcode { + private static final String RES_TYPE = "SPL"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Remove spell"; + } + + public Opcode172() { + super(172, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return RES_TYPE; + } +} diff --git a/src/org/infinity/resource/effects/Opcode173.java b/src/org/infinity/resource/effects/Opcode173.java new file mode 100644 index 000000000..92e28aa11 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode173.java @@ -0,0 +1,60 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.Arrays; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 173. + */ +public class Opcode173 extends BaseOpcode { + private static final String[] INC_TYPES_TOBEX = { INC_TYPES[1], INC_TYPES[0], INC_TYPES[2], "Instantaneous" }; + private static final String[] INC_TYPES_IWD2 = Arrays.copyOf(INC_TYPES, 2); + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Poison resistance bonus"; + } + + public Opcode173() { + super(173, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsBG2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + if (isTobEx()) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, INC_TYPES_TOBEX)); + return null; + } else { + return makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, INC_TYPES_IWD2)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode174.java b/src/org/infinity/resource/effects/Opcode174.java new file mode 100644 index 000000000..80c083f1b --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode174.java @@ -0,0 +1,37 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 174. + */ +public class Opcode174 extends BaseOpcode { + private static final String RES_TYPE = "WAV"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Play sound"; + } + + public Opcode174() { + super(174, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return RES_TYPE; + } +} diff --git a/src/org/infinity/resource/effects/Opcode175.java b/src/org/infinity/resource/effects/Opcode175.java new file mode 100644 index 000000000..4bf7f923f --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode175.java @@ -0,0 +1,35 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.IdsTargetType; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 175. + */ +public class Opcode175 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + return "Hold creature"; + } + + public Opcode175() { + super(175, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + final IdsTargetType param2 = new IdsTargetType(buffer, offset + 4); + list.add(param2.createIdsValueFromType(buffer)); + list.add(param2); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode176.java b/src/org/infinity/resource/effects/Opcode176.java new file mode 100644 index 000000000..62b65dd0b --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode176.java @@ -0,0 +1,58 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.HashBitmap; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 176. + */ +public class Opcode176 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case IWD2: + return "Movement rate penalty"; + case PST: + return null; + default: + return "Movement rate bonus 2"; + } + } + + public Opcode176() { + super(176, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, INC_TYPES)); + return null; + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new HashBitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, INC_TYPES_MAP, false)); + return null; + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode177.java b/src/org/infinity/resource/effects/Opcode177.java new file mode 100644 index 000000000..2fa17ea90 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode177.java @@ -0,0 +1,48 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.IdsTargetType; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 177. + */ +public class Opcode177 extends BaseOpcode { + private static final String RES_TYPE = "EFF"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + if (Profile.getEngine() == Profile.Engine.PST) { + return null; + } else { + return "Use EFF file"; + } + } + + public Opcode177() { + super(177, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + final IdsTargetType param2 = new IdsTargetType(buffer, offset + 4); + list.add(param2.createIdsValueFromType(buffer)); + list.add(param2); + return RES_TYPE; + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode178.java b/src/org/infinity/resource/effects/Opcode178.java new file mode 100644 index 000000000..97cbdd185 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode178.java @@ -0,0 +1,58 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.IdsTargetType; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 178. + */ +public class Opcode178 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + if (Profile.getEngine() == Profile.Engine.PST) { + return null; + } else { + return "THAC0 vs. type bonus"; + } + } + + public Opcode178() { + super(178, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + final IdsTargetType param2 = new IdsTargetType(buffer, offset + 4); + list.add(param2.createIdsValueFromType(buffer)); + list.add(param2); + return null; + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected int makeEffectSpecial(Datatype parent, ByteBuffer buffer, int offset, List list, + String resType, int param1, int param2) { + if (Profile.isEnhancedEdition()) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + return offset + 4; + } else { + return super.makeEffectSpecial(parent, buffer, offset, list, resType, param1, param2); + } + } +} diff --git a/src/org/infinity/resource/effects/Opcode179.java b/src/org/infinity/resource/effects/Opcode179.java new file mode 100644 index 000000000..c54fb3905 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode179.java @@ -0,0 +1,58 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.IdsTargetType; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 179. + */ +public class Opcode179 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + if (Profile.getEngine() == Profile.Engine.PST) { + return null; + } else { + return "Damage vs. type bonus"; + } + } + + public Opcode179() { + super(179, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + final IdsTargetType param2 = new IdsTargetType(buffer, offset + 4); + list.add(param2.createIdsValueFromType(buffer)); + list.add(param2); + return null; + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected int makeEffectSpecial(Datatype parent, ByteBuffer buffer, int offset, List list, + String resType, int param1, int param2) { + if (Profile.isEnhancedEdition()) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + return offset + 4; + } else { + return super.makeEffectSpecial(parent, buffer, offset, list, resType, param1, param2); + } + } +} diff --git a/src/org/infinity/resource/effects/Opcode180.java b/src/org/infinity/resource/effects/Opcode180.java new file mode 100644 index 000000000..dc4d52dfc --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode180.java @@ -0,0 +1,62 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.StringRef; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 180. + */ +public class Opcode180 extends BaseOpcode { + private static final String EFFECT_RESTRICTION = "Restriction"; + + private static final String RES_TYPE = "ITM"; + + private static final String[] RESTRICTION_TYPES_EE = { "Equip", "Use" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + if (Profile.getEngine() == Profile.Engine.PST) { + return null; + } else { + return "Disallow item"; + } + } + + public Opcode180() { + super(180, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new StringRef(buffer, offset, EFFECT_STRING)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return RES_TYPE; + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new StringRef(buffer, offset, EFFECT_STRING)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_RESTRICTION, RESTRICTION_TYPES_EE)); + return RES_TYPE; + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode181.java b/src/org/infinity/resource/effects/Opcode181.java new file mode 100644 index 000000000..ec3ff8ac5 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode181.java @@ -0,0 +1,72 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.StringRef; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; +import org.infinity.resource.itm.ItmResource; + +/** + * Implemention of opcode 181. + */ +public class Opcode181 extends BaseOpcode { + private static final String EFFECT_DESC_NOTE = "Description note"; + private static final String EFFECT_ITEM_TYPE = "Item type"; + private static final String EFFECT_RESTRICTION = "Restriction"; + + private static final String[] RESTRICTION_TYPES_EE = { "Equip", "Use" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + if (Profile.getEngine() == Profile.Engine.PST) { + return null; + } else { + return "Disallow item type"; + } + } + + public Opcode181() { + super(181, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new StringRef(buffer, offset, EFFECT_DESC_NOTE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_ITEM_TYPE, ItmResource.CATEGORIES_ARRAY)); + return null; + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new Bitmap(buffer, offset, 4, EFFECT_ITEM_TYPE, ItmResource.CATEGORIES_ARRAY)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_RESTRICTION, RESTRICTION_TYPES_EE)); + return null; + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected int makeEffectSpecial(Datatype parent, ByteBuffer buffer, int offset, List list, + String resType, int param1, int param2) { + if (Profile.isEnhancedEdition()) { + list.add(new StringRef(buffer, offset, EFFECT_DESC_NOTE)); + return offset + 4; + } else { + return super.makeEffectSpecial(parent, buffer, offset, list, resType, param1, param2); + } + } +} diff --git a/src/org/infinity/resource/effects/Opcode182.java b/src/org/infinity/resource/effects/Opcode182.java new file mode 100644 index 000000000..93a09398a --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode182.java @@ -0,0 +1,42 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 182. + */ +public class Opcode182 extends BaseOpcode { + private static final String RES_TYPE = "ITM"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + if (Profile.getEngine() == Profile.Engine.PST) { + return null; + } else { + return "Use EFF when item equipped (do not use)"; + } + } + + public Opcode182() { + super(182, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return RES_TYPE; + } +} diff --git a/src/org/infinity/resource/effects/Opcode183.java b/src/org/infinity/resource/effects/Opcode183.java new file mode 100644 index 000000000..7a9f25c2e --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode183.java @@ -0,0 +1,61 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.StringRef; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; +import org.infinity.resource.itm.ItmResource; + +/** + * Implemention of opcode 183. + */ +public class Opcode183 extends BaseOpcode { + private static final String EFFECT_ITEM_TYPE = "Item type"; + + private static final String RES_TYPE = "EFF"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + if (Profile.getEngine() == Profile.Engine.PST) { + return null; + } else { + return "Use EFF when item type equipped"; + } + } + + public Opcode183() { + super(183, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_ITEM_TYPE, ItmResource.CATEGORIES_ARRAY)); + return RES_TYPE; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new StringRef(buffer, offset, EFFECT_STRING)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_ITEM_TYPE, ItmResource.CATEGORIES_ARRAY)); + return RES_TYPE; + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode184.java b/src/org/infinity/resource/effects/Opcode184.java new file mode 100644 index 000000000..7330ed4fd --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode184.java @@ -0,0 +1,49 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 184. + */ +public class Opcode184 extends BaseOpcode { + private static final String EFFECT_PASS_WALLS = "Pass walls?"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + if (Profile.getEngine() == Profile.Engine.PST) { + return null; + } else { + return "No collision detection"; + } + } + + public Opcode184() { + super(184, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_PASS_WALLS, AbstractStruct.OPTION_NOYES)); + return null; + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode185.java b/src/org/infinity/resource/effects/Opcode185.java new file mode 100644 index 000000000..40bbaf3ea --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode185.java @@ -0,0 +1,62 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.IdsTargetType; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 185. + */ +public class Opcode185 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + if (Profile.getEngine() == Profile.Engine.PST) { + return null; + } else { + return "Hold creature 2"; + } + } + + public Opcode185() { + super(185, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + final IdsTargetType param2 = new IdsTargetType(buffer, offset + 4); + list.add(param2.createIdsValueFromType(buffer)); + list.add(param2); + return null; + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return makeEffectParamsIWD(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode186.java b/src/org/infinity/resource/effects/Opcode186.java new file mode 100644 index 000000000..c5c78f2f9 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode186.java @@ -0,0 +1,98 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.IdsBitmap; +import org.infinity.datatype.IdsFlag; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.ResourceFactory; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 186. + */ +public class Opcode186 extends BaseOpcode { + private static final String EFFECT_DELAY = "Delay"; + private static final String EFFECT_ORIENTATION = "Orientation"; + private static final String EFFECT_ACTION = "Action"; + private static final String EFFECT_STATE = "State"; + + private static final String RES_TYPE = "ARE"; + + private static final String[] ACTIONS_PST = { "Clear", "Set" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + return "DestroySelf() on target"; + case PST: + return "Set state"; + default: + return "Move creature"; + } + } + + public Opcode186() { + super(186, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_DELAY)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_ORIENTATION, AbstractStruct.OPTION_ORIENTATION)); + return RES_TYPE; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + if (ResourceFactory.resourceExists("DIR.IDS")) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_DELAY)); + list.add(new IdsBitmap(buffer, offset + 4, 4, EFFECT_ORIENTATION, "DIR.IDS")); + return RES_TYPE; + } else { + return makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_DELAY)); + list.add(new IdsBitmap(buffer, offset + 4, 4, EFFECT_ORIENTATION, "DIR.IDS")); + return RES_TYPE; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return makeEffectParamsIWD(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new Bitmap(buffer, offset, 4, EFFECT_ACTION, ACTIONS_PST)); + list.add(new IdsFlag(buffer, offset + 4, 4, EFFECT_STATE, "STATE.IDS")); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode187.java b/src/org/infinity/resource/effects/Opcode187.java new file mode 100644 index 000000000..1467791ac --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode187.java @@ -0,0 +1,56 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.ColorPicker; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.Flag; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 187. + */ +public class Opcode187 extends BaseOpcode { + private static final String EFFECT_METHOD = "Method"; + + private static final String RES_TYPE = "BAM"; + + private static final String[] METHOD_TYPES_PST = { "Default", "Repeat animation", "Remove stickiness" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + if (Profile.getEngine() == Profile.Engine.PST) { + return "Play BAM file (single/dual)"; + } else { + return "Set local variable"; + } + } + + public Opcode187() { + super(187, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new ColorPicker(buffer, offset, EFFECT_COLOR, ColorPicker.Format.RGBX)); + list.add(new Flag(buffer, offset + 4, 4, EFFECT_METHOD, METHOD_TYPES_PST)); + return RES_TYPE; + } +} diff --git a/src/org/infinity/resource/effects/Opcode188.java b/src/org/infinity/resource/effects/Opcode188.java new file mode 100644 index 000000000..1651c0649 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode188.java @@ -0,0 +1,73 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.ColorPicker; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.Flag; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 188. + */ +public class Opcode188 extends BaseOpcode { + private static final String EFFECT_SPELLS_PER_ROUND = "Spells per round"; + private static final String EFFECT_CLEANSE_AURA = "Cleanse aura?"; + private static final String EFFECT_FLAGS = "Flags"; + + private static final String RES_TYPE_PST = "BAM"; + + private static final String[] FLAGS_PST = { null, + "Random placement", null, null, null, null, null, null, null, + null, null, null, null, "Sticky", null, null, null, + "Repeat;Only effective if bit 17 is set", "Foreground", null, null, + "Fade out;Duration defined by Dice Size, initial transparency defined by red color value. Effect changes if bit 21 is set.", + "Blended;Only if bit 20 is also set.", null, null }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case PST: + return "Play BAM file 1"; + default: + return "Increase spells cast per round"; + } + } + + public Opcode188() { + super(188, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_CLEANSE_AURA, AbstractStruct.OPTION_NOYES)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_SPELLS_PER_ROUND)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new ColorPicker(buffer, offset, EFFECT_COLOR, ColorPicker.Format.RGBX)); + list.add(new Flag(buffer, offset + 4, 4, EFFECT_FLAGS, FLAGS_PST)); + return RES_TYPE_PST; + } +} diff --git a/src/org/infinity/resource/effects/Opcode189.java b/src/org/infinity/resource/effects/Opcode189.java new file mode 100644 index 000000000..b235c4d3a --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode189.java @@ -0,0 +1,85 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.ColorPicker; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.Flag; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 189. + */ +public class Opcode189 extends BaseOpcode { + private static final String EFFECT_FLAGS = "Flags"; + + private static final String RES_TYPE_PST = "BAM"; + + private static final String[] CASTING_INC_TYPES = { "Increment", "Set", "Set if lower" }; + + private static final String[] FLAGS_PST = { null, + "Random placement", null, null, null, null, null, null, null, + null, null, null, null, "Sticky", null, null, null, + "Repeat;Only effective if bit 17 is set", "Foreground", null, null, + "Fade out;Duration defined by Dice Size, initial transparency defined by red color value. Effect changes if bit 21 is set.", + "Blended;Only if bit 20 is also set.", null, null }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case PST: + return "Play BAM file 2"; + default: + return "Increase casting speed factor"; + } + } + + public Opcode189() { + super(189, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_AMOUNT)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, CASTING_INC_TYPES)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_AMOUNT)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return makeEffectParamsBG1(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return makeEffectParamsBG1(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new ColorPicker(buffer, offset, EFFECT_COLOR, ColorPicker.Format.RGBX)); + list.add(new Flag(buffer, offset + 4, 4, EFFECT_FLAGS, FLAGS_PST)); + return RES_TYPE_PST; + } +} diff --git a/src/org/infinity/resource/effects/Opcode190.java b/src/org/infinity/resource/effects/Opcode190.java new file mode 100644 index 000000000..53443d176 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode190.java @@ -0,0 +1,82 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.ColorPicker; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.Flag; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 190. + */ +public class Opcode190 extends BaseOpcode { + private static final String EFFECT_FLAGS = "Flags"; + + private static final String RES_TYPE_PST = "BAM"; + + private static final String[] FLAGS_PST = { null, + "Random placement", null, null, null, null, null, null, null, + null, null, null, null, "Sticky", null, null, null, + "Repeat;Only effective if bit 17 is set", "Foreground", null, null, + "Fade out;Duration defined by Dice Size, initial transparency defined by red color value. Effect changes if bit 21 is set.", + "Blended;Only if bit 20 is also set.", null, null }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case PST: + return "Play BAM file 3"; + default: + return "Increase attack speed factor"; + } + } + + public Opcode190() { + super(190, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_AMOUNT)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_AMOUNT)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return makeEffectParamsBG1(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return makeEffectParamsBG1(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new ColorPicker(buffer, offset, EFFECT_COLOR, ColorPicker.Format.RGBX)); + list.add(new Flag(buffer, offset + 4, 4, EFFECT_FLAGS, FLAGS_PST)); + return RES_TYPE_PST; + } +} diff --git a/src/org/infinity/resource/effects/Opcode191.java b/src/org/infinity/resource/effects/Opcode191.java new file mode 100644 index 000000000..91527900f --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode191.java @@ -0,0 +1,74 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.ColorPicker; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.Flag; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 191. + */ +public class Opcode191 extends BaseOpcode { + private static final String EFFECT_SPELL_CLASS = "Spell class"; + private static final String EFFECT_FLAGS = "Flags"; + + private static final String RES_TYPE_PST = "BAM"; + + private static final String[] SPELL_CLASSES = { "Wizard", "Priest" }; + private static final String[] SPELL_CLASSES_IWD2 = { "Arcane", "Divine" }; + + private static final String[] FLAGS_PST = { null, + "Random placement", null, null, null, null, null, null, null, + null, null, null, null, "Sticky", null, null, null, + "Repeat;Only effective if bit 17 is set", "Foreground", null, null, + "Fade out;Duration defined by Dice Size, initial transparency defined by red color value. Effect changes if bit 21 is set.", + "Blended;Only if bit 20 is also set.", null, null }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case PST: + return "Play BAM file 4"; + default: + return "Casting level bonus"; + } + } + + public Opcode191() { + super(191, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_AMOUNT)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_SPELL_CLASS, SPELL_CLASSES)); + return null; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_AMOUNT)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_SPELL_CLASS, SPELL_CLASSES_IWD2)); + return null; + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new ColorPicker(buffer, offset, EFFECT_COLOR, ColorPicker.Format.RGBX)); + list.add(new Flag(buffer, offset + 4, 4, EFFECT_FLAGS, FLAGS_PST)); + return RES_TYPE_PST; + } +} diff --git a/src/org/infinity/resource/effects/Opcode192.java b/src/org/infinity/resource/effects/Opcode192.java new file mode 100644 index 000000000..78a1f0f01 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode192.java @@ -0,0 +1,66 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.IdsBitmap; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 192. + */ +public class Opcode192 extends BaseOpcode { + private static final String EFFECT_DIRECTION = "Direction"; + private static final String EFFECT_DAMAGE_TYPE = "Damage type"; + + private static final String[] DIRECTIONS = { "Source to target", "Target to source", "Swap HP", + "Source to target even over max. HP" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + return null; + case PST: + return "Hit point transfer"; + default: + return "Find familiar"; + } + } + + public Opcode192() { + super(192, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_AMOUNT)); + list.add(new Bitmap(buffer, offset + 4, 2, EFFECT_DIRECTION, DIRECTIONS)); + list.add(new IdsBitmap(buffer, offset + 6, 2, EFFECT_DAMAGE_TYPE, "DAMAGES.IDS")); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode193.java b/src/org/infinity/resource/effects/Opcode193.java new file mode 100644 index 000000000..8736a2a14 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode193.java @@ -0,0 +1,69 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 193. + */ +public class Opcode193 extends BaseOpcode { + private static final String EFFECT_IGNORE_VISIBILITY = "Ignore visibility?"; + private static final String EFFECT_STRENGTH = "Strength"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + return null; + case PST: + return "Shake screen"; + default: + return "Invisibility detection"; + } + } + + public Opcode193() { + super(193, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, EFFECT_STAT_VALUE)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_IGNORE_VISIBILITY, AbstractStruct.OPTION_NOYES)); + return null; + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_STRENGTH)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode194.java b/src/org/infinity/resource/effects/Opcode194.java new file mode 100644 index 000000000..0f772e642 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode194.java @@ -0,0 +1,72 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.ColorPicker; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 194. + */ +public class Opcode194 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case IWD: + case IWD2: + return null; + case PST: + return "Flash screen"; + default: + return "Ignore dialogue pause"; + } + } + + public Opcode194() { + super(194, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, EFFECT_STAT_VALUE)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new ColorPicker(buffer, offset, EFFECT_COLOR, ColorPicker.Format.RGBX)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode195.java b/src/org/infinity/resource/effects/Opcode195.java new file mode 100644 index 000000000..3d0128125 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode195.java @@ -0,0 +1,95 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; +import java.util.TreeMap; + +import org.infinity.datatype.ColorPicker; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.HashBitmap; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 195. + */ +public class Opcode195 extends BaseOpcode { + private static final String EFFECT_HP_AMOUNT = "HP amount"; + private static final String EFFECT_METHOD = "Method"; + + private static final TreeMap METHODS_MAP_PST = new TreeMap<>(); + + static { + METHODS_MAP_PST.put(0L, "Quick fade light->dark->light"); + METHODS_MAP_PST.put(1L, "Quick fade light->dark->light"); + METHODS_MAP_PST.put(2L, "Quick fade light->dark, instant fade light"); + METHODS_MAP_PST.put(3L, "Quick fade light->dark, instant fade light"); + METHODS_MAP_PST.put(4L, "Fade light->dark->light (duration)"); + METHODS_MAP_PST.put(5L, "Fade light->dark->light (duration)"); + METHODS_MAP_PST.put(6L, "Fade light->dark->light (duration)"); + METHODS_MAP_PST.put(7L, "Fade light->dark->light (duration)"); + METHODS_MAP_PST.put(8L, "No effect"); + METHODS_MAP_PST.put(9L, "Very fast light->black->light"); + METHODS_MAP_PST.put(10L, "Instant black for duration, instant light"); + METHODS_MAP_PST.put(100L, "Unknown"); + METHODS_MAP_PST.put(200L, "Unknown"); + } + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case IWD: + case IWD2: + return null; + case PST: + return "Tint screen"; + default: + return "Drain CON and HP on death"; + } + } + + public Opcode195() { + super(195, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_HP_AMOUNT)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new ColorPicker(buffer, offset, EFFECT_COLOR, ColorPicker.Format.RGBX)); + list.add(new HashBitmap(buffer, offset + 4, 4, EFFECT_METHOD, METHODS_MAP_PST, false)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode196.java b/src/org/infinity/resource/effects/Opcode196.java new file mode 100644 index 000000000..6f6a4cbb0 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode196.java @@ -0,0 +1,76 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 196. + */ +public class Opcode196 extends BaseOpcode { + private static final String EFFECT_FX = "Effect"; + + private static final String[] EFFECTS_PST = { "Adder's kiss", "Ball lightning", "Fizzle" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case IWD: + case IWD2: + return null; + case PST: + return "Special spell hit"; + default: + return "Disable familiar"; + } + } + + public Opcode196() { + super(196, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_FX, EFFECTS_PST)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode197.java b/src/org/infinity/resource/effects/Opcode197.java new file mode 100644 index 000000000..2abf51d4c --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode197.java @@ -0,0 +1,74 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.IdsBitmap; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; +import org.infinity.util.IdsMapEntry; + +/** + * Implemention of opcode 197. + */ +public class Opcode197 extends BaseOpcode { + private static final String EFFECT_PROJECTILE = "Projectile"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case IWD: + case IWD2: + case PST: + return null; + default: + return "Physical mirror"; + } + } + + public Opcode197() { + super(197, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + final IdsBitmap ids = new IdsBitmap(buffer, offset + 4, 4, EFFECT_PROJECTILE, "PROJECTL.IDS"); + ids.addIdsMapEntry(new IdsMapEntry(0L, "None")); + list.add(ids); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode198.java b/src/org/infinity/resource/effects/Opcode198.java new file mode 100644 index 000000000..da82ec98f --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode198.java @@ -0,0 +1,71 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 198. + */ +public class Opcode198 extends BaseOpcode { + private static final String EFFECT_FX = "Effect"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case IWD: + case IWD2: + case PST: + return null; + default: + return "Reflect specified effect"; + } + } + + public Opcode198() { + super(198, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_FX, getEffectNames())); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode199.java b/src/org/infinity/resource/effects/Opcode199.java new file mode 100644 index 000000000..91f79f6e4 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode199.java @@ -0,0 +1,70 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 199. + */ +public class Opcode199 extends BaseOpcode { + private static final String EFFECT_SPELL_LEVEL = "Spell level"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case IWD: + case IWD2: + case PST: + return null; + default: + return "Reflect spell level"; + } + } + + public Opcode199() { + super(199, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_SPELL_LEVEL)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode200.java b/src/org/infinity/resource/effects/Opcode200.java new file mode 100644 index 000000000..60f5f24ac --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode200.java @@ -0,0 +1,80 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 200. + */ +public class Opcode200 extends BaseOpcode { + private static final String EFFECT_NUM_LEVELS = "# levels"; + private static final String EFFECT_SPELL_LEVEL = "Spell level"; + + private static final String RES_TYPE = "SPL"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case IWD: + case IWD2: + case PST: + return null; + default: + return "Spell turning"; + } + } + + public Opcode200() { + super(200, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_NUM_LEVELS)); + list.add(new DecNumber(buffer, offset + 4, 4, EFFECT_SPELL_LEVEL)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_NUM_LEVELS)); + list.add(new DecNumber(buffer, offset + 4, 4, EFFECT_SPELL_LEVEL)); + return RES_TYPE; + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode201.java b/src/org/infinity/resource/effects/Opcode201.java new file mode 100644 index 000000000..949f3a14e --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode201.java @@ -0,0 +1,91 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 201. + */ +public class Opcode201 extends BaseOpcode { + private static final String EFFECT_NUM_LEVELS = "# levels"; + private static final String EFFECT_SPELL_LEVEL = "Spell level"; + private static final String EFFECT_FX = "Effect"; + + private static final String RES_TYPE = "SPL"; + private static final String RES_TYPE_PST = "BAM"; + + private static final String[] EFFECTS_PST = { "Cloak of warding", "Shield", "Black-barbed shield", "Pain mirror", + "Guardian mantle", "", "Enoll eva's duplication", "Armor", "Antimagic shell", "", "", "Flame walk", + "Protection from evil", "Conflagration", "Infernal shield", "Submerge the will", "Balance in all things" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case IWD: + case IWD2: + return null; + case PST: + return "Play BAM with effects"; + default: + return "Spell deflection"; + } + } + + public Opcode201() { + super(201, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_NUM_LEVELS)); + list.add(new DecNumber(buffer, offset + 4, 4, EFFECT_SPELL_LEVEL)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_NUM_LEVELS)); + list.add(new DecNumber(buffer, offset + 4, 4, EFFECT_SPELL_LEVEL)); + return RES_TYPE; + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_FX, EFFECTS_PST)); + return RES_TYPE_PST; + } +} diff --git a/src/org/infinity/resource/effects/Opcode202.java b/src/org/infinity/resource/effects/Opcode202.java new file mode 100644 index 000000000..29187158b --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode202.java @@ -0,0 +1,71 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.PriTypeBitmap; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 202. + */ +public class Opcode202 extends BaseOpcode { + private static final String EFFECT_SPELL_SCHOOL = "Spell school"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case IWD: + case IWD2: + case PST: + return null; + default: + return "Reflect spell school"; + } + } + + public Opcode202() { + super(202, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new PriTypeBitmap(buffer, offset + 4, 4, EFFECT_SPELL_SCHOOL)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode203.java b/src/org/infinity/resource/effects/Opcode203.java new file mode 100644 index 000000000..39eeaaf2d --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode203.java @@ -0,0 +1,74 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.SecTypeBitmap; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 203. + */ +public class Opcode203 extends BaseOpcode { + private static final String EFFECT_SPELL_TYPE = "Spell type"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case IWD: + case IWD2: + return null; + case PST: + return "Curse"; + default: + return "Reflect spell type"; + } + } + + public Opcode203() { + super(203, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new SecTypeBitmap(buffer, offset + 4, 4, EFFECT_SPELL_TYPE)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_AMOUNT)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode204.java b/src/org/infinity/resource/effects/Opcode204.java new file mode 100644 index 000000000..be4eea3a1 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode204.java @@ -0,0 +1,74 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.PriTypeBitmap; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 204. + */ +public class Opcode204 extends BaseOpcode { + private static final String EFFECT_SPELL_SCHOOL = "Spell school"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case IWD: + case IWD2: + return null; + case PST: + return "Prayer"; + default: + return "Protection from spell school"; + } + } + + public Opcode204() { + super(204, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new PriTypeBitmap(buffer, offset + 4, 4, EFFECT_SPELL_SCHOOL)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_AMOUNT)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode205.java b/src/org/infinity/resource/effects/Opcode205.java new file mode 100644 index 000000000..b139fc83e --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode205.java @@ -0,0 +1,75 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.SecTypeBitmap; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 205. + */ +public class Opcode205 extends BaseOpcode { + private static final String EFFECT_SPELL_TYPE = "Spell type"; + private static final String EFFECT_SCROLL_SPEED = "Scroll speed"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case IWD: + case IWD2: + return null; + case PST: + return "Move view to target"; + default: + return "Protection from spell type"; + } + } + + public Opcode205() { + super(205, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new SecTypeBitmap(buffer, offset + 4, 4, EFFECT_SPELL_TYPE)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_SCROLL_SPEED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode206.java b/src/org/infinity/resource/effects/Opcode206.java new file mode 100644 index 000000000..3c8c09e9b --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode206.java @@ -0,0 +1,82 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.StringRef; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 206. + */ +public class Opcode206 extends BaseOpcode { + private static final String EFFECT_EMBALMING_TYPE = "Embalming type"; + private static final String EFFECT_CREATURE_TYPE = "Creature type"; + + private static final String RES_TYPE = "SPL"; + + private static final String[] EMBALMING_TYPES_PST = { "Normal", "Greater" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + return null; + case PST: + return "Embalm"; + default: + return "Protection from spell"; + } + } + + public Opcode206() { + super(206, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new StringRef(buffer, offset, EFFECT_STRING)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return RES_TYPE; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_CREATURE_TYPE, CRE_TYPES_IWD)); + return RES_TYPE; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_CREATURE_TYPE, CRE_TYPES_IWD)); + return RES_TYPE; + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_EMBALMING_TYPE, EMBALMING_TYPES_PST)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode207.java b/src/org/infinity/resource/effects/Opcode207.java new file mode 100644 index 000000000..51da402c7 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode207.java @@ -0,0 +1,76 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 207. + */ +public class Opcode207 extends BaseOpcode { + private static final String RES_TYPE = "SPL"; + + private static final String[] MODES_PST = { "Pause actions", "Unpause actions" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case IWD: + case IWD2: + return null; + case PST: + return "Stop all actions"; + default: + return "Reflect specified spell"; + } + } + + public Opcode207() { + super(207, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return RES_TYPE; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODE, MODES_PST)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode208.java b/src/org/infinity/resource/effects/Opcode208.java new file mode 100644 index 000000000..82d75cfa2 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode208.java @@ -0,0 +1,59 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 208. + */ +public class Opcode208 extends BaseOpcode { + private static final String EFFECT_HP_AMOUNT = "HP amount"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + return null; + case PST: + return "Fist of iron"; + default: + return "Minimum HP"; + } + } + + public Opcode208() { + super(208, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_HP_AMOUNT)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode209.java b/src/org/infinity/resource/effects/Opcode209.java new file mode 100644 index 000000000..989b3ca50 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode209.java @@ -0,0 +1,71 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 209. + */ +public class Opcode209 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case IWD: + case IWD2: + return null; + case PST: + return "Soul exodus"; + default: + return "Power word, kill"; + } + } + + public Opcode209() { + super(209, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode210.java b/src/org/infinity/resource/effects/Opcode210.java new file mode 100644 index 000000000..8e1e4b3fc --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode210.java @@ -0,0 +1,64 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 210. + */ +public class Opcode210 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case IWD2: + return null; + case PST: + return "Detect evil"; + default: + return "Power word, stun"; + } + } + + public Opcode210() { + super(210, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode211.java b/src/org/infinity/resource/effects/Opcode211.java new file mode 100644 index 000000000..02e12176d --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode211.java @@ -0,0 +1,71 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 211. + */ +public class Opcode211 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case IWD: + case IWD2: + return null; + case PST: + return "Induce hiccups"; + default: + return "Imprisonment"; + } + } + + public Opcode211() { + super(211, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode212.java b/src/org/infinity/resource/effects/Opcode212.java new file mode 100644 index 000000000..0328e758d --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode212.java @@ -0,0 +1,71 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 212. + */ +public class Opcode212 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case IWD: + case IWD2: + return null; + case PST: + return "Speak with dead"; + default: + return "Freedom"; + } + } + + public Opcode212() { + super(212, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode213.java b/src/org/infinity/resource/effects/Opcode213.java new file mode 100644 index 000000000..a862cea98 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode213.java @@ -0,0 +1,82 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 213. + */ +public class Opcode213 extends BaseOpcode { + private static final String[] MODE_TYPES = { "Use INTMOD.2DA", "Use duration" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case IWD: + case IWD2: + case PST: + return null; + default: + return "Maze"; + } + } + + public Opcode213() { + super(213, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODE, MODE_TYPES)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected int makeEffectSpecial(Datatype parent, ByteBuffer buffer, int offset, List list, + String resType, int param1, int param2) { + if (Profile.isEnhancedEdition()) { + list.add(new Bitmap(buffer, offset, 4, EFFECT_ICON, getPortraitIconNames(STRING_DEFAULT))); + return offset + 4; + } else { + return super.makeEffectSpecial(parent, buffer, offset, list, resType, param1, param2); + } + } +} diff --git a/src/org/infinity/resource/effects/Opcode214.java b/src/org/infinity/resource/effects/Opcode214.java new file mode 100644 index 000000000..ab74ecacb --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode214.java @@ -0,0 +1,85 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 214. + */ +public class Opcode214 extends BaseOpcode { + private static final String EFFECT_SHOW = "Show"; + + private static final String RES_TYPE = "2DA"; + + private static final String[] SHOW_TYPES = { "From 2DA", "Known spells" }; + private static final String[] SHOW_TYPES_EE = { SHOW_TYPES[0], SHOW_TYPES[1], + "Known spells with unset spell flags bit 15 (Ignore wild surge)" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case IWD: + case IWD2: + case PST: + return null; + default: + return "Select spell"; + } + } + + public Opcode214() { + super(214, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_SHOW, SHOW_TYPES)); + return RES_TYPE; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_SHOW, SHOW_TYPES_EE)); + return RES_TYPE; + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode215.java b/src/org/infinity/resource/effects/Opcode215.java new file mode 100644 index 000000000..ad99681be --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode215.java @@ -0,0 +1,76 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 215. + */ +public class Opcode215 extends BaseOpcode { + private static final String EFFECT_PLAY_WHERE = "Play where?"; + + private static final String RES_TYPE = "VEF:VVC:BAM"; + + private static final String[] PLAY_TYPES = { "Over target (unattached)", "Over target (attached)", + "At target point" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case IWD: + case IWD2: + case PST: + return null; + default: + return "Play visual effect"; + } + } + + public Opcode215() { + super(215, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_PLAY_WHERE, PLAY_TYPES)); + return RES_TYPE; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode216.java b/src/org/infinity/resource/effects/Opcode216.java new file mode 100644 index 000000000..7dfa9b739 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode216.java @@ -0,0 +1,70 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 216. + */ +public class Opcode216 extends BaseOpcode { + private static final String EFFECT_NUM_LEVELS = "# levels"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case IWD: + case IWD2: + case PST: + return null; + default: + return "Level drain"; + } + } + + public Opcode216() { + super(216, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_NUM_LEVELS)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode217.java b/src/org/infinity/resource/effects/Opcode217.java new file mode 100644 index 000000000..1d61ec5b1 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode217.java @@ -0,0 +1,68 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 217. + */ +public class Opcode217 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case IWD: + case IWD2: + case PST: + return null; + default: + return "Power word, sleep"; + } + } + + public Opcode217() { + super(217, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode218.java b/src/org/infinity/resource/effects/Opcode218.java new file mode 100644 index 000000000..68d34ab10 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode218.java @@ -0,0 +1,103 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.ResourceRef; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 218. + */ +public class Opcode218 extends BaseOpcode { + private static final String EFFECT_NUM_SKINS = "# skins"; + private static final String EFFECT_USE_DICE = "Use dice?"; + private static final String EFFECT_ON_SKINS_DESTROYED = "EEex: On skins destroyed"; + private static final String EFFECT_SKIN_TYPE = "Skin type"; + + private static final String RES_TYPE = "SPL"; + + private static final String[] SKIN_TYPES_IWD2 = { "Stoneskin", "Iron skins" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case PST: + return null; + default: + return "Stoneskin effect"; + } + } + + public Opcode218() { + super(218, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_NUM_SKINS)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_NUM_SKINS)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_USE_DICE, AbstractStruct.OPTION_NOYES)); + return isEEEx() ? RES_TYPE : null; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_NUM_SKINS)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_SKIN_TYPE, SKIN_TYPES_IWD2)); + return null; + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected int makeEffectResource(Datatype parent, ByteBuffer buffer, int offset, List list, + String resType, int param1, int param2) { + if (Profile.isEnhancedEdition() && isEEEx()) { + list.add(new ResourceRef(buffer, offset, EFFECT_ON_SKINS_DESTROYED, resType.split(":"))); + return offset + 8; + } else { + return super.makeEffectResource(parent, buffer, offset, list, resType, param1, param2); + } + } + + @Override + protected int makeEffectSpecial(Datatype parent, ByteBuffer buffer, int offset, List list, + String resType, int param1, int param2) { + if (Profile.isEnhancedEdition()) { + list.add(new Bitmap(buffer, offset, 4, EFFECT_ICON, getPortraitIconNames(STRING_DEFAULT))); + return offset + 4; + } else { + return super.makeEffectSpecial(parent, buffer, offset, list, resType, param1, param2); + } + } +} diff --git a/src/org/infinity/resource/effects/Opcode219.java b/src/org/infinity/resource/effects/Opcode219.java new file mode 100644 index 000000000..6332610e0 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode219.java @@ -0,0 +1,83 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.Arrays; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.IdsTargetType; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 219. + */ +public class Opcode219 extends BaseOpcode { + private final String[] idsList = { "", "", "EA.IDS", "GENERAL.IDS", "RACE.IDS", "CLASS.IDS", "", "GENDER.IDS", + Profile.getProperty(Profile.Key.GET_IDS_ALIGNMENT) }; + private final String[] idsListEE = Arrays.copyOf(idsList, idsList.length + 1); + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case IWD: + case IWD2: + case PST: + return null; + default: + return "Attack and Saving Throw roll penalty"; + } + } + + public Opcode219() { + super(219, getOpcodeName()); + idsListEE[idsListEE.length - 1] = "KIT.IDS"; + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + final IdsTargetType param2 = new IdsTargetType(buffer, offset + 4, IdsTargetType.DEFAULT_NAME_TYPE, idsList); + list.add(param2.createIdsValueFromType(buffer)); + list.add(param2); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + final IdsTargetType param2 = new IdsTargetType(buffer, offset + 4, IdsTargetType.DEFAULT_NAME_TYPE, idsListEE); + list.add(param2.createIdsValueFromType(buffer)); + list.add(param2); + return null; + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode220.java b/src/org/infinity/resource/effects/Opcode220.java new file mode 100644 index 000000000..cc08fbfb9 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode220.java @@ -0,0 +1,71 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.PriTypeBitmap; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 220. + */ +public class Opcode220 extends BaseOpcode { + private static final String EFFECT_MAX_LEVEL = "Maximum level"; + private static final String EFFECT_SPELL_SCHOOL = "Spell school"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case IWD: + case IWD2: + case PST: + return null; + default: + return "Remove spell school protections"; + } + } + + public Opcode220() { + super(220, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_MAX_LEVEL)); + list.add(new PriTypeBitmap(buffer, offset + 4, 4, EFFECT_SPELL_SCHOOL)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode221.java b/src/org/infinity/resource/effects/Opcode221.java new file mode 100644 index 000000000..40045606a --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode221.java @@ -0,0 +1,71 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.SecTypeBitmap; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 221. + */ +public class Opcode221 extends BaseOpcode { + private static final String EFFECT_MAX_LEVEL = "Maximum level"; + private static final String EFFECT_SPELL_TYPE = "Spell type"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case IWD: + case IWD2: + case PST: + return null; + default: + return "Remove spell type protections"; + } + } + + public Opcode221() { + super(221, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_MAX_LEVEL)); + list.add(new SecTypeBitmap(buffer, offset + 4, 4, EFFECT_SPELL_TYPE)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode222.java b/src/org/infinity/resource/effects/Opcode222.java new file mode 100644 index 000000000..561914381 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode222.java @@ -0,0 +1,70 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 222. + */ +public class Opcode222 extends BaseOpcode { + private static final String EFFECT_MAX_RANGE = "Maximum range"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case IWD: + case IWD2: + case PST: + return null; + default: + return "Teleport field"; + } + } + + public Opcode222() { + super(222, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_MAX_RANGE)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode223.java b/src/org/infinity/resource/effects/Opcode223.java new file mode 100644 index 000000000..644637678 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode223.java @@ -0,0 +1,81 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.PriTypeBitmap; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 223. + */ +public class Opcode223 extends BaseOpcode { + private static final String EFFECT_NUM_LEVELS = "# levels"; + private static final String EFFECT_SPELL_SCHOOL = "Spell school"; + + private static final String RES_TYPE = "SPL"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case IWD: + case IWD2: + case PST: + return null; + default: + return "Spell school deflection"; + } + } + + public Opcode223() { + super(223, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_NUM_LEVELS)); + list.add(new PriTypeBitmap(buffer, offset + 4, 4, EFFECT_SPELL_SCHOOL)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_NUM_LEVELS)); + list.add(new PriTypeBitmap(buffer, offset + 4, 4, EFFECT_SPELL_SCHOOL)); + return RES_TYPE; + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode224.java b/src/org/infinity/resource/effects/Opcode224.java new file mode 100644 index 000000000..6fa3c0a6d --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode224.java @@ -0,0 +1,68 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 224. + */ +public class Opcode224 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case IWD: + case IWD2: + case PST: + return null; + default: + return "Restoration"; + } + } + + public Opcode224() { + super(224, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode225.java b/src/org/infinity/resource/effects/Opcode225.java new file mode 100644 index 000000000..c8297b005 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode225.java @@ -0,0 +1,68 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 225. + */ +public class Opcode225 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case IWD: + case IWD2: + case PST: + return null; + default: + return "Detect magic"; + } + } + + public Opcode225() { + super(225, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode226.java b/src/org/infinity/resource/effects/Opcode226.java new file mode 100644 index 000000000..39a65cc4d --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode226.java @@ -0,0 +1,81 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.SecTypeBitmap; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 226. + */ +public class Opcode226 extends BaseOpcode { + private static final String EFFECT_NUM_LEVELS = "# levels"; + private static final String EFFECT_SPELL_TYPE = "Spell type"; + + private static final String RES_TYPE = "SPL"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case IWD: + case IWD2: + case PST: + return null; + default: + return "Spell type deflection"; + } + } + + public Opcode226() { + super(226, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_NUM_LEVELS)); + list.add(new SecTypeBitmap(buffer, offset + 4, 4, EFFECT_SPELL_TYPE)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_NUM_LEVELS)); + list.add(new SecTypeBitmap(buffer, offset + 4, 4, EFFECT_SPELL_TYPE)); + return RES_TYPE; + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode227.java b/src/org/infinity/resource/effects/Opcode227.java new file mode 100644 index 000000000..6661da4b6 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode227.java @@ -0,0 +1,81 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.PriTypeBitmap; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 227. + */ +public class Opcode227 extends BaseOpcode { + private static final String EFFECT_NUM_LEVELS = "# levels"; + private static final String EFFECT_SPELL_SCHOOL = "Spell school"; + + private static final String RES_TYPE = "SPL"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case IWD: + case IWD2: + case PST: + return null; + default: + return "Spell school turning"; + } + } + + public Opcode227() { + super(227, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_NUM_LEVELS)); + list.add(new PriTypeBitmap(buffer, offset + 4, 4, EFFECT_SPELL_SCHOOL)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_NUM_LEVELS)); + list.add(new PriTypeBitmap(buffer, offset + 4, 4, EFFECT_SPELL_SCHOOL)); + return RES_TYPE; + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode228.java b/src/org/infinity/resource/effects/Opcode228.java new file mode 100644 index 000000000..30e5ffe95 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode228.java @@ -0,0 +1,81 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.SecTypeBitmap; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 228. + */ +public class Opcode228 extends BaseOpcode { + private static final String EFFECT_NUM_LEVELS = "# levels"; + private static final String EFFECT_SPELL_TYPE = "Spell type"; + + private static final String RES_TYPE = "SPL"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case IWD: + case IWD2: + case PST: + return null; + default: + return "Spell type turning"; + } + } + + public Opcode228() { + super(228, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_NUM_LEVELS)); + list.add(new SecTypeBitmap(buffer, offset + 4, 4, EFFECT_SPELL_TYPE)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_NUM_LEVELS)); + list.add(new SecTypeBitmap(buffer, offset + 4, 4, EFFECT_SPELL_TYPE)); + return RES_TYPE; + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode229.java b/src/org/infinity/resource/effects/Opcode229.java new file mode 100644 index 000000000..e0c865e14 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode229.java @@ -0,0 +1,71 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.PriTypeBitmap; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 229. + */ +public class Opcode229 extends BaseOpcode { + private static final String EFFECT_MAX_LEVEL = "Maximum level"; + private static final String EFFECT_SPELL_SCHOOL = "Spell school"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case IWD: + case IWD2: + case PST: + return null; + default: + return "Remove protection by school"; + } + } + + public Opcode229() { + super(229, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_MAX_LEVEL)); + list.add(new PriTypeBitmap(buffer, offset + 4, 4, EFFECT_SPELL_SCHOOL)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode230.java b/src/org/infinity/resource/effects/Opcode230.java new file mode 100644 index 000000000..18c4838bf --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode230.java @@ -0,0 +1,71 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.SecTypeBitmap; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 230. + */ +public class Opcode230 extends BaseOpcode { + private static final String EFFECT_MAX_LEVEL = "Maximum level"; + private static final String EFFECT_SPELL_TYPE = "Spell type"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case IWD: + case IWD2: + case PST: + return null; + default: + return "Remove protection by type"; + } + } + + public Opcode230() { + super(230, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_MAX_LEVEL)); + list.add(new SecTypeBitmap(buffer, offset + 4, 4, EFFECT_SPELL_TYPE)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode231.java b/src/org/infinity/resource/effects/Opcode231.java new file mode 100644 index 000000000..8247becd2 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode231.java @@ -0,0 +1,68 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 231. + */ +public class Opcode231 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case IWD: + case IWD2: + case PST: + return null; + default: + return "Time stop"; + } + } + + public Opcode231() { + super(231, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode232.java b/src/org/infinity/resource/effects/Opcode232.java new file mode 100644 index 000000000..c1fe5e785 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode232.java @@ -0,0 +1,201 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.Arrays; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.ColorPicker; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.HashBitmap; +import org.infinity.datatype.IdsBitmap; +import org.infinity.datatype.IdsFlag; +import org.infinity.datatype.IsNumeric; +import org.infinity.datatype.UpdateListener; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 232. + */ +public class Opcode232 extends BaseOpcode { + private static final String EFFECT_TARGET = "Target"; + private static final String EFFECT_CONDITION = "Condition"; + private static final String EFFECT_PERIOD = "Trigger check period"; + private static final String EFFECT_SPEED = "Speed"; + + private static final String RES_TYPE = "SPL"; + + private static final String[] TARGETS = { "Myself", "LastHitter", "[EVILCUTOFF]", "[ANYONE]" }; + + private static final String[] CONDITIONS = { + "HitBy([ANYONE]) / instant", + "See([EVILCUTOFF]) / per round", + "HPPercentLT(Myself,50) / per round", + "HPPercentLT(Myself,25) / per round", + "HPPercentLT(Myself,10) / per round", + "StateCheck(Myself,STATE_HELPLESS) / per round", + "StateCheck(Myself,STATE_POISONED) / per round", + "AttackedBy([ANYONE]) / instant", + "PersonalSpaceDistance([ANYONE],4) / per round", + "PersonalSpaceDistance([ANYONE],10) / per round", + "-Unknown- / per round", + "TookDamage() / instant" }; + + // temporary object to help creating EE string array + private static final String[] NEW_CONDITIONS_EE = { + "Killed([ANYONE]) / instant", + "TimeOfDay('Special') / per round", + "PersonalSpaceDistance([ANYONE],'Special') / per round", + "StateCheck(Myself,'Special') / per round", + "Die() / instant", + "Died([ANYONE]) / instant", + "TurnedBy([ANYONE]) / instant", + "HPLT(Myself,'Special') / per round", + "HPPercentLT(Myself,'Special') / per round", + "CheckSpellState(Myself,'Special') / per round" }; + private static final String[] CONDITIONS_EE = Arrays.copyOf(CONDITIONS, CONDITIONS.length + NEW_CONDITIONS_EE.length); + + static { + CONDITIONS_EE[10] = "Delay('Special') / per round"; + System.arraycopy(NEW_CONDITIONS_EE, 0, CONDITIONS_EE, CONDITIONS.length, NEW_CONDITIONS_EE.length); + } + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case PST: + return null; + case IWD: + case IWD2: + return "Creature RGB color fade"; + default: + return "Cast spell on condition"; + } + } + + public Opcode232() { + super(232, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new Bitmap(buffer, offset, 4, EFFECT_TARGET, TARGETS)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_CONDITION, CONDITIONS)); + return RES_TYPE; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsBG2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + if (isTobEx()) { + list.add(new Bitmap(buffer, offset, 4, EFFECT_TARGET, TARGETS)); + list.add(new Bitmap(buffer, offset + 4, 2, EFFECT_CONDITION, CONDITIONS)); + list.add(new DecNumber(buffer, offset + 6, 2, EFFECT_PERIOD)); + return RES_TYPE; + } else { + return makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new Bitmap(buffer, offset, 4, EFFECT_TARGET, TARGETS)); + Bitmap item = new Bitmap(buffer, offset + 4, 4, EFFECT_CONDITION, CONDITIONS_EE); + list.add(item); + if (parent != null && parent instanceof UpdateListener) { + item.addUpdateListener((UpdateListener)parent); + } + return RES_TYPE; + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new ColorPicker(buffer, offset, EFFECT_COLOR)); + list.add(new HashBitmap(buffer, offset + 4, 2, EFFECT_LOCATION, COLOR_LOCATIONS_MAP, false)); + list.add(new DecNumber(buffer, offset + 6, 2, EFFECT_SPEED)); + return null; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new ColorPicker(buffer, offset, EFFECT_COLOR)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected boolean update(AbstractStruct struct) throws Exception { + if (struct != null && Profile.isEnhancedEdition()) { + int param2 = ((IsNumeric)getEntry(struct, EffectEntry.IDX_PARAM2)).getValue(); + switch (param2) { + case 13: // Time of day + replaceEntry(struct, EffectEntry.IDX_SPECIAL, EffectEntry.OFS_SPECIAL, + new IdsBitmap(getEntryData(struct, EffectEntry.IDX_SPECIAL), 0, 4, + EFFECT_SPECIAL, "TIMEODAY.IDS")); + break; + case 15: // State + replaceEntry(struct, EffectEntry.IDX_SPECIAL, EffectEntry.OFS_SPECIAL, + new IdsFlag(getEntryData(struct, EffectEntry.IDX_SPECIAL), 0, 4, + EFFECT_SPECIAL, "STATE.IDS")); + break; + case 21: + replaceEntry(struct, EffectEntry.IDX_SPECIAL, EffectEntry.OFS_SPECIAL, + new IdsBitmap(getEntryData(struct, EffectEntry.IDX_SPECIAL), 0, 4, + EFFECT_SPECIAL, "SPLSTATE.IDS")); + break; + default: + replaceEntry(struct, EffectEntry.IDX_SPECIAL, EffectEntry.OFS_SPECIAL, + new DecNumber(getEntryData(struct, EffectEntry.IDX_SPECIAL), 0, 4, EFFECT_SPECIAL)); + } + return true; + } + return false; + } + + @Override + protected int makeEffectSpecial(Datatype parent, ByteBuffer buffer, int offset, List list, + String resType, int param1, int param2) { + if (Profile.isEnhancedEdition()) { + switch (param2) { + case 13: // Time of day + list.add(new IdsBitmap(buffer, offset, 4, EFFECT_SPECIAL, "TIMEODAY.IDS")); + break; + case 15: // State check + list.add(new IdsFlag(buffer, offset, 4, EFFECT_SPECIAL, "STATE.IDS")); + break; + case 21: // Spell State check + list.add(new IdsBitmap(buffer, offset, 4, EFFECT_SPECIAL, "SPLSTATE.IDS")); + break; + default: + list.add(new DecNumber(buffer, offset, 4, EFFECT_SPECIAL)); + } + return offset + 4; + } else { + return super.makeEffectSpecial(parent, buffer, offset, list, resType, param1, param2); + } + } +} diff --git a/src/org/infinity/resource/effects/Opcode233.java b/src/org/infinity/resource/effects/Opcode233.java new file mode 100644 index 000000000..1c561181e --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode233.java @@ -0,0 +1,127 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.IdsBitmap; +import org.infinity.datatype.IsNumeric; +import org.infinity.datatype.MultiNumber; +import org.infinity.datatype.UpdateListener; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 233. + */ +public class Opcode233 extends BaseOpcode { + private static final String EFFECT_NUM_STARS = "# stars"; + private static final String EFFECT_PROFICIENCY = "Proficiency"; + private static final String EFFECT_BEHAVIOR = "Behavior"; + private static final String EFFECT_FX = "Effect"; + + private static final String[] CLASS_TYPES = { "Active class", "Original class" }; + private static final String[] BEHAVIORS = { "Set if higher", "Increment" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case PST: + return null; + case IWD: + case IWD2: + return "Show visual effect"; + default: + return "Modify proficiencies"; + } + } + + public Opcode233() { + super(233, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new MultiNumber(buffer, offset, 4, EFFECT_NUM_STARS, 3, 2, CLASS_TYPES, false)); + list.add(new IdsBitmap(buffer, offset + 4, 4, EFFECT_PROFICIENCY, "STATS.IDS")); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsBG2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + if (isTobEx()) { + list.add(new MultiNumber(buffer, offset, 4, EFFECT_NUM_STARS, 3, 2, CLASS_TYPES, false)); + list.add(new IdsBitmap(buffer, offset + 4, 2, EFFECT_PROFICIENCY, "STATS.IDS")); + list.add(new Bitmap(buffer, offset + 6, 2, EFFECT_BEHAVIOR, BEHAVIORS)); + return null; + } else { + return makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + int mode = buffer.getShort(offset + 6); + list.add(new MultiNumber(buffer, offset, 4, EFFECT_NUM_STARS, 3, 2, CLASS_TYPES, mode == 1)); + final String idsFile = (Profile.getGame() == Profile.Game.PSTEE) ? "WPROF.IDS" : "STATS.IDS"; + list.add(new IdsBitmap(buffer, offset + 4, 2, EFFECT_PROFICIENCY, idsFile)); + final Bitmap param2b = new Bitmap(buffer, offset + 6, 2, EFFECT_BEHAVIOR, BEHAVIORS); + if (parent != null) { + param2b.addUpdateListener((UpdateListener)parent); + } + list.add(param2b); + return null; + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_FX, VISUALS)); + return null; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return makeEffectParamsIWD(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected boolean update(AbstractStruct struct) throws Exception { + if (struct != null && Profile.isEnhancedEdition()) { + boolean signed = ((MultiNumber)getEntry(struct, EffectEntry.IDX_PARAM1)).isSigned(); + boolean increment = ((IsNumeric)getEntry(struct, EffectEntry.IDX_PARAM2B)).getValue() == 1; + if (signed ^ increment) { + replaceEntry(struct, EffectEntry.IDX_PARAM1, EffectEntry.OFS_PARAM1, + new MultiNumber(getEntryData(struct, EffectEntry.IDX_PARAM1), 0, 4, EFFECT_NUM_STARS, + 3, 2, CLASS_TYPES, increment)); + return true; + } + } + return false; + } +} diff --git a/src/org/infinity/resource/effects/Opcode234.java b/src/org/infinity/resource/effects/Opcode234.java new file mode 100644 index 000000000..10c35bda2 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode234.java @@ -0,0 +1,79 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 234. + */ +public class Opcode234 extends BaseOpcode { + private static final String EFFECT_MAX_SPELL_LEVEL = "Maximum spell level"; + private static final String EFFECT_NUM_SPELLS = "# spells"; + private static final String EFFECT_TRIGGER_TYPE = "Trigger type"; + + private static final String[] TRIGGER_TYPES = { "Chain contingency", "Contingency", "Spell sequencer" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case IWD2: + case PST: + return null; + case IWD: + return "Snilloc's snowball swarm"; + default: + return "Create contingency"; + } + } + + public Opcode234() { + super(234, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_MAX_SPELL_LEVEL)); + list.add(new DecNumber(buffer, offset + 4, 2, EFFECT_NUM_SPELLS)); + list.add(new Bitmap(buffer, offset + 6, 2, EFFECT_TRIGGER_TYPE, TRIGGER_TYPES)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_AMOUNT)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode235.java b/src/org/infinity/resource/effects/Opcode235.java new file mode 100644 index 000000000..347dac199 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode235.java @@ -0,0 +1,82 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 235. + */ +public class Opcode235 extends BaseOpcode { + private static final String EFFECT_STRENGTH = "Strength"; + private static final String EFFECT_DIRECTION = "Direction"; + private static final String EFFECT_GLOW = "Glow"; + + private static final String[] DIRECTIONS = { "", "Away from target point", "Away from source", "Towards target point", + "Towards source" }; + + private static final String[] GLOW_TYPES_IWD = { "None", "Abjuration", "Conjuration", "Divination", "Enchantment", + "Illusion", "Invocation", "Necromancy", "Transmutation" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case PST: + return null; + case IWD: + case IWD2: + return "Show casting glow"; + default: + return "Wing buffet"; + } + } + + public Opcode235() { + super(235, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_STRENGTH)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_DIRECTION, DIRECTIONS)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_GLOW, GLOW_TYPES_IWD)); + return null; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return makeEffectParamsIWD(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode236.java b/src/org/infinity/resource/effects/Opcode236.java new file mode 100644 index 000000000..77f62a5b6 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode236.java @@ -0,0 +1,79 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 236. + */ +public class Opcode236 extends BaseOpcode { + private static final String EFFECT_IMAGE_TYPE = "Image type"; + + private static final String[] IMAGE_TYPES = { "Talkative, uncontrollable", "Mislead", "Project image", "Simulacrum" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case PST: + return null; + case IWD: + return "Chill touch"; + case IWD2: + return "Panic undead"; + default: + return "Project image"; + } + } + + public Opcode236() { + super(236, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_IMAGE_TYPE, IMAGE_TYPES)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_AMOUNT)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode237.java b/src/org/infinity/resource/effects/Opcode237.java new file mode 100644 index 000000000..20042040b --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode237.java @@ -0,0 +1,91 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; +import java.util.TreeMap; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.HashBitmap; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 237. + */ +public class Opcode237 extends BaseOpcode { + private static final String EFFECT_PUPPET_MASTER = "Puppet master"; + private static final String EFFECT_PUPPET_TYPE = "Puppet type"; + + private static final TreeMap PUPPET_MASTERS = new TreeMap<>(); + private static final String[] PUPPET_TYPES = { "Talkative, uncontrollable", "Mislead", "Project image", + "Simulacrum" }; + + static { + PUPPET_MASTERS.put(0L, "Player1"); + PUPPET_MASTERS.put(1L, "Player2"); + PUPPET_MASTERS.put(2L, "Player3"); + PUPPET_MASTERS.put(3L, "Player4"); + PUPPET_MASTERS.put(4L, "Player5"); + PUPPET_MASTERS.put(5L, "Player6"); + PUPPET_MASTERS.put(0xffffffffL, "Not party member"); + } + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case IWD2: + case PST: + return null; + case IWD: + return "Magical stone"; + default: + return "Set image type"; + } + } + + public Opcode237() { + super(237, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new HashBitmap(buffer, offset, 4, EFFECT_PUPPET_MASTER, PUPPET_MASTERS)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_PUPPET_TYPE, PUPPET_TYPES)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_AMOUNT)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode238.java b/src/org/infinity/resource/effects/Opcode238.java new file mode 100644 index 000000000..b20c97546 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode238.java @@ -0,0 +1,73 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.IdsTargetType; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 238. + */ +public class Opcode238 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case PST: + return null; + case IWD: + case IWD2: + return "All saving throws bonus"; + default: + return "Disintegrate"; + } + } + + public Opcode238() { + super(238, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + final IdsTargetType param2 = new IdsTargetType(buffer, offset + 4); + list.add(param2.createIdsValueFromType(buffer)); + list.add(param2); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, INC_TYPES)); + return null; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return makeEffectParamsIWD(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode239.java b/src/org/infinity/resource/effects/Opcode239.java new file mode 100644 index 000000000..f10f370f0 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode239.java @@ -0,0 +1,74 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 239. + */ +public class Opcode239 extends BaseOpcode { + private static final String EFFECT_VIEW_UNEXPLORED = "Can view unexplored?"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case PST: + return null; + case IWD: + case IWD2: + return "Slow poison"; + default: + return "Farsight"; + } + } + + public Opcode239() { + super(239, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_VIEW_UNEXPLORED, AbstractStruct.OPTION_NOYES)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_AMOUNT)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return makeEffectParamsIWD(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode240.java b/src/org/infinity/resource/effects/Opcode240.java new file mode 100644 index 000000000..e9b39f657 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode240.java @@ -0,0 +1,80 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 240. + */ +public class Opcode240 extends BaseOpcode { + private static final String EFFECT_NUM_CREATURES = "# creatures"; + private static final String EFFECT_SUMMON_TYPE = "Summon type"; + + private static final String[] SUMMON_TYPES_IWD = { "Monster summoning 1", "Monster summoning 2", + "Monster summoning 3", "Monster summoning 4", "Monster summoning 5", "Monster summoning 6", "Monster summoning 7", + "Animal summoning 1", "Animal summoning 2", "Animal summoning 3", "Summon insects", "Creeping doom", + "Malavon summon" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case IWD2: + case PST: + return null; + case IWD: + return "Summon creature 2"; + default: + return "Remove portrait icon"; + } + } + + public Opcode240() { + super(240, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_ICON, getPortraitIconNames())); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_NUM_CREATURES)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_SUMMON_TYPE, SUMMON_TYPES_IWD)); + return null; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode241.java b/src/org/infinity/resource/effects/Opcode241.java new file mode 100644 index 000000000..7aebc3199 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode241.java @@ -0,0 +1,97 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; +import java.util.TreeMap; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.HashBitmap; +import org.infinity.datatype.IdsBitmap; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 241. + */ +public class Opcode241 extends BaseOpcode { + private static final String EFFECT_CRE_TYPE = "Creature type"; + private static final String EFFECT_CHARM_TYPE = "Charm type"; + private static final String EFFECT_DIRECTION = "Direction"; + + private static final String[] DIRECTIONS_IWD = { "Target to source", "Source to target" }; + + private static final TreeMap CHARM_MAP = new TreeMap<>(); + + static { + CHARM_MAP.put(0L, "Charmed (neutral)"); + CHARM_MAP.put(1L, "Charmed (hostile)"); + CHARM_MAP.put(2L, "Dire charmed (neutral)"); + CHARM_MAP.put(3L, "Dire charmed (hostile)"); + CHARM_MAP.put(4L, "Controlled"); + CHARM_MAP.put(5L, "Hostile"); + CHARM_MAP.put(1000L, "Charmed (neutral, no text)"); + CHARM_MAP.put(1001L, "Charmed (hostile, no text)"); + CHARM_MAP.put(1002L, "Dire charmed (neutral, no text)"); + CHARM_MAP.put(1003L, "Dire charmed (hostile, no text)"); + CHARM_MAP.put(1004L, "Controlled (no text)"); + CHARM_MAP.put(1005L, "Hostile (no text)"); + } + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case PST: + return null; + case IWD: + case IWD2: + return "Vampiric touch"; + default: + return "Control creature"; + } + } + + public Opcode241() { + super(241, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new IdsBitmap(buffer, offset, 4, EFFECT_CRE_TYPE, "GENERAL.IDS")); + list.add(new HashBitmap(buffer, offset + 4, 4, EFFECT_CHARM_TYPE, CHARM_MAP)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_AMOUNT)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_DIRECTION, DIRECTIONS_IWD)); + return null; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return makeEffectParamsIWD(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode242.java b/src/org/infinity/resource/effects/Opcode242.java new file mode 100644 index 000000000..a369a506f --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode242.java @@ -0,0 +1,79 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 242. + */ +public class Opcode242 extends BaseOpcode { + private static final String EFFECT_OVERLAY = "Overlay"; + + private static final String[] OVERLAY_TYPES_IWD = { "Globe of invulnerability", "Shroud of flame", "Antimagic shell", + "Otiluke's resilient sphere", "Protection from normal missiles", "Cloak of fear", "Entropy shield", "Fire aura", + "Frost aura", "Insect plague", "Storm shell", "Shield of lathander", "Greater shield of lathander", + "Seven eyes" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case IWD2: + case PST: + return null; + case IWD: + return "Show visual overlay"; + default: + return "Cure confusion"; + } + } + + public Opcode242() { + super(242, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_OVERLAY, OVERLAY_TYPES_IWD)); + return null; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode243.java b/src/org/infinity/resource/effects/Opcode243.java new file mode 100644 index 000000000..b0d955662 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode243.java @@ -0,0 +1,92 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 243. + */ +public class Opcode243 extends BaseOpcode { + private static final String EFFECT_INCLUDE_WEAPONS = "Include weapons?"; + private static final String EFFECT_NUM_TO_DRAIN = "# to drain"; + private static final String EFFECT_UNDEAD_TYPE = "Undead type"; + + private static final String RES_TYPE = "ITM"; + + private static final String[] UNDEAD_TYPES_IWD = { "Normal", "Lich" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case IWD2: + case PST: + return null; + case IWD: + return "Animate dead"; + default: + return "Drain item charges"; + } + } + + public Opcode243() { + super(243, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_NUM_TO_DRAIN)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return RES_TYPE; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsBG2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + if (Profile.getGame() == Profile.Game.BG2SoA) { + list.add(new Bitmap(buffer, offset, 4, EFFECT_INCLUDE_WEAPONS, AbstractStruct.OPTION_NOYES)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } else { + return makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_UNDEAD_TYPE, UNDEAD_TYPES_IWD)); + return null; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode244.java b/src/org/infinity/resource/effects/Opcode244.java new file mode 100644 index 000000000..d0951358b --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode244.java @@ -0,0 +1,79 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 244. + */ +public class Opcode244 extends BaseOpcode { + private static final String EFFECT_NUM_SPELLS = "# spells"; + private static final String EFFECT_PRAYER_TYPE = "Prayer type"; + + private static final String[] PRAYER_TYPES_IWD2 = { "Beneficial", "Detrimental" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case PST: + return null; + case IWD: + case IWD2: + return "Prayer"; + default: + return "Drain wizard spells"; + } + } + + public Opcode244() { + super(244, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_NUM_SPELLS)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_AMOUNT)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_PRAYER_TYPE, PRAYER_TYPES_IWD2)); + return null; + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode245.java b/src/org/infinity/resource/effects/Opcode245.java new file mode 100644 index 000000000..8c53f8f3a --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode245.java @@ -0,0 +1,71 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 245. + */ +public class Opcode245 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case IWD2: + case PST: + return null; + case IWD: + return "Bad prayer"; + default: + return "Check for berserk"; + } + } + + public Opcode245() { + super(245, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, EFFECT_STAT_VALUE)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_AMOUNT)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode246.java b/src/org/infinity/resource/effects/Opcode246.java new file mode 100644 index 000000000..8c97b7ff5 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode246.java @@ -0,0 +1,79 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 246. + */ +public class Opcode246 extends BaseOpcode { + private static final String EFFECT_NUM_CREATURES = "# creatures"; + private static final String EFFECT_CREATURE_TYPE = "Creature type"; + + private static final String[] CREATURE_TYPES_IWD = { "Lizard man", "Troll", "Shadow", "Invisible stalker", + "Fire elemental (wizard)", "Earth elemental (wizard)", "Water elemental (wizard)", "Fire elemental (priest)", + "Earth elemental (priest)", "Water elemental (priest)", "Malavon earth elemental" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case IWD2: + case PST: + return null; + case IWD: + return "Summon creature 3"; + default: + return "Berserk effect"; + } + } + + public Opcode246() { + super(246, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, EFFECT_STAT_VALUE)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_NUM_CREATURES)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_CREATURE_TYPE, CREATURE_TYPES_IWD)); + return null; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode247.java b/src/org/infinity/resource/effects/Opcode247.java new file mode 100644 index 000000000..6b7cbc76b --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode247.java @@ -0,0 +1,73 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 247. + */ +public class Opcode247 extends BaseOpcode { + private static final String EFFECT_NUM_HITS = "# hits"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case PST: + return null; + case IWD2: + case IWD: + return "Beltyn's burning blood"; + default: + return "Attack nearest creature"; + } + } + + public Opcode247() { + super(247, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, EFFECT_STAT_VALUE)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_NUM_HITS)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return makeEffectParamsIWD(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode248.java b/src/org/infinity/resource/effects/Opcode248.java new file mode 100644 index 000000000..b5374df4c --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode248.java @@ -0,0 +1,96 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; +import java.util.TreeMap; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.HashBitmap; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 248. + */ +public class Opcode248 extends BaseOpcode { + private static final String EFFECT_NUM_CREATURES = "# creatures"; + private static final String EFFECT_SHADOW_TYPE = "Shadow type"; + + private static final String RES_TYPE = "EFF"; + + private static final String[] SHADOW_TYPES_IWD = { "Shadow", "Demishadow", "Shade" }; + + private static final TreeMap TYPE_MAP = new TreeMap<>(); + + static { + TYPE_MAP.put(0L, "Default"); + TYPE_MAP.put(4L, "Fists only"); + } + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case PST: + return null; + case IWD: + case IWD2: + return "Summon shadow"; + default: + return "Melee hit effect"; + } + } + + public Opcode248() { + super(248, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return RES_TYPE; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new HashBitmap(buffer, offset + 4, 4, EFFECT_TYPE, TYPE_MAP, false)); + return RES_TYPE; + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_NUM_CREATURES)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_SHADOW_TYPE, SHADOW_TYPES_IWD)); + return null; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return makeEffectParamsIWD(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode249.java b/src/org/infinity/resource/effects/Opcode249.java new file mode 100644 index 000000000..f74bc96fe --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode249.java @@ -0,0 +1,80 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 249. + */ +public class Opcode249 extends BaseOpcode { + private static final String EFFECT_PRAYER_TYPE = "Prayer type"; + + private static final String RES_TYPE = "EFF"; + + private static final String[] PRAYER_TYPES_IWD2 = { "Beneficial", "Detrimental" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case PST: + return null; + case IWD: + case IWD2: + return "Recitation"; + default: + return "Ranged hit effect"; + } + } + + public Opcode249() { + super(249, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return RES_TYPE; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_AMOUNT)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_PRAYER_TYPE, PRAYER_TYPES_IWD2)); + return null; + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode250.java b/src/org/infinity/resource/effects/Opcode250.java new file mode 100644 index 000000000..e4b3b8133 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode250.java @@ -0,0 +1,73 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 250. + */ +public class Opcode250 extends BaseOpcode { + private static final String EFFECT_DAMAGE_VALUE = "Damage value"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case IWD2: + case PST: + return null; + case IWD: + return "Bad recitation"; + default: + return "Maximum damage each hit"; + } + } + + public Opcode250() { + super(250, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_DAMAGE_VALUE)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_AMOUNT)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode251.java b/src/org/infinity/resource/effects/Opcode251.java new file mode 100644 index 000000000..82ccd1776 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode251.java @@ -0,0 +1,75 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 251. + */ +public class Opcode251 extends BaseOpcode { + private static final String EFFECT_NUM_SECONDS = "# seconds"; + + private static final String RES_TYPE = "SPL"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case IWD2: + case PST: + return null; + case IWD: + return "Lich touch"; + default: + return "Change bard song"; + } + } + + public Opcode251() { + super(251, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return RES_TYPE; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_NUM_SECONDS)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode252.java b/src/org/infinity/resource/effects/Opcode252.java new file mode 100644 index 000000000..99fde8284 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode252.java @@ -0,0 +1,73 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 252. + */ +public class Opcode252 extends BaseOpcode { + private static final String RES_TYPE = "SPL"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case IWD2: + case PST: + return null; + case IWD: + return "Sol's searing orb"; + default: + return "Set trap"; + } + } + + public Opcode252() { + super(252, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return RES_TYPE; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_AMOUNT)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode253.java b/src/org/infinity/resource/effects/Opcode253.java new file mode 100644 index 000000000..1ee2e0492 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode253.java @@ -0,0 +1,103 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.Flag; +import org.infinity.datatype.IdsBitmap; +import org.infinity.datatype.StringRef; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.ResourceFactory; +import org.infinity.resource.StructEntry; +import org.infinity.resource.are.AutomapNote; + +/** + * Implemention of opcode 253. + */ +public class Opcode253 extends BaseOpcode { + private static final String EFFECT_AC_VALUE = "AC value"; + private static final String EFFECT_BONUS_TO = "Bonus to"; + + private static final String[] WEAPON_TYPES_IWD = { "All weapons", "Blunt weapons", "Missile weapons", + "Piercing weapons", "Slashing weapons", "Set base AC to value" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case IWD2: + case PST: + return null; + case IWD: + return "Bonus AC vs. weapons"; + default: + return "Set automap note"; + } + } + + public Opcode253() { + super(253, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new StringRef(buffer, offset, EFFECT_STRING)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsBG2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new StringRef(buffer, offset, EFFECT_STRING)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_COLOR, AutomapNote.FLAGS_ARRAY)); + return null; + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + if (ResourceFactory.resourceExists("MAPNOTES.IDS")) { + list.add(new StringRef(buffer, offset, EFFECT_STRING)); + list.add(new IdsBitmap(buffer, offset + 4, 4, EFFECT_COLOR, "MAPNOTES.IDS", false)); + return null; + } else { + return makeEffectParamsBG2(parent, buffer, offset, list, isVersion1); + } + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_AC_VALUE)); + list.add(new Flag(buffer, offset + 4, 4, EFFECT_BONUS_TO, WEAPON_TYPES_IWD)); + return null; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode254.java b/src/org/infinity/resource/effects/Opcode254.java new file mode 100644 index 000000000..42eb8e06b --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode254.java @@ -0,0 +1,79 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.StringRef; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 254. + */ +public class Opcode254 extends BaseOpcode { + private static final String EFFECT_DISPEL_TYPE = "Dispel type"; + + private static final String RES_TYPE_IWD = "SPL"; + + private static final String[] EFFECT_TYPES_IWD = { "All effects", "Equipped effects only", "Limited effects only" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case PST: + return null; + case IWD: + case IWD2: + return "Dispel specific spell"; + default: + return "Remove automap note"; + } + } + + public Opcode254() { + super(254, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new StringRef(buffer, offset, EFFECT_STRING)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_DISPEL_TYPE, EFFECT_TYPES_IWD)); + return RES_TYPE_IWD; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return makeEffectParamsIWD(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode255.java b/src/org/infinity/resource/effects/Opcode255.java new file mode 100644 index 000000000..946ae2efa --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode255.java @@ -0,0 +1,79 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 255. + */ +public class Opcode255 extends BaseOpcode { + private static final String EFFECT_NUM_IN_STACK = "# items in stack"; + private static final String EFFECT_AURA_TYPE = "Aura type"; + + private static final String RES_TYPE = "ITM"; + + private static final String[] AURA_TYPES_IWD = { "Fire", "Frost" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case PST: + return null; + case IWD: + case IWD2: + return "Salamander aura"; + default: + return "Create item (days)"; + } + } + + public Opcode255() { + super(255, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_NUM_IN_STACK)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return RES_TYPE; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_AMOUNT)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_AURA_TYPE, AURA_TYPES_IWD)); + return null; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return makeEffectParamsIWD(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode256.java b/src/org/infinity/resource/effects/Opcode256.java new file mode 100644 index 000000000..198afc0cb --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode256.java @@ -0,0 +1,75 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 256. + */ +public class Opcode256 extends BaseOpcode { + private static final String EFFECT_NUM_SECONDS = "# seconds"; + + private static final String RES_TYPE = "SPL"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case PST: + return null; + case IWD: + case IWD2: + return "Umber hulk gaze"; + default: + return "Spell sequencer"; + } + } + + public Opcode256() { + super(256, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return RES_TYPE; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_NUM_SECONDS)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return makeEffectParamsIWD(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode257.java b/src/org/infinity/resource/effects/Opcode257.java new file mode 100644 index 000000000..4a58d673c --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode257.java @@ -0,0 +1,74 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 257. + */ +public class Opcode257 extends BaseOpcode { + private static final String EFFECT_MAX_LEVEL = "Maximum level"; + private static final String EFFECT_NUM_SPELLS = "# spells"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case IWD2: + case PST: + return null; + case IWD: + return "Zombie lord aura"; + default: + return "Create spell sequencer"; + } + } + + public Opcode257() { + super(257, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_MAX_LEVEL)); + list.add(new DecNumber(buffer, offset + 4, 4, EFFECT_NUM_SPELLS)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode258.java b/src/org/infinity/resource/effects/Opcode258.java new file mode 100644 index 000000000..78307f3cd --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode258.java @@ -0,0 +1,70 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 258. + */ +public class Opcode258 extends BaseOpcode { + private static final String RES_TYPE = "ITM:SPL"; + + private static final String[] TYPES_IWD = { "Default", "Test and set to 0" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case PST: + return null; + case IWD: + case IWD2: + return "Immunity to specific resource"; + default: + return "Activate spell sequencer"; + } + } + + public Opcode258() { + super(258, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return RES_TYPE; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_TYPE, TYPES_IWD)); + return null; + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode259.java b/src/org/infinity/resource/effects/Opcode259.java new file mode 100644 index 000000000..5935c5f97 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode259.java @@ -0,0 +1,89 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 259. + */ +public class Opcode259 extends BaseOpcode { + private static final String EFFECT_NUM_SPELLS = "# spells"; + private static final String EFFECT_SPELL_LEVEL = "Spell level"; + private static final String EFFECT_NUM_CREATURES = "# creatures"; + private static final String EFFECT_SUMMON_TYPE = "Summon type"; + + private static final String RES_TYPE = "SPL"; + private static final String RES_TYPE_IWD = "CRE"; + + private static final String[] SUMMON_TYPES_IWD = { "Default", "Ally", "Hostile", "Forced", "Genie" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case IWD2: + case PST: + return null; + case IWD: + return "Summon creatures with cloud"; + default: + return "Spell trap"; + } + } + + public Opcode259() { + super(259, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_NUM_SPELLS)); + list.add(new DecNumber(buffer, offset + 4, 4, EFFECT_SPELL_LEVEL)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_NUM_SPELLS)); + list.add(new DecNumber(buffer, offset + 4, 4, EFFECT_SPELL_LEVEL)); + return RES_TYPE; + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_NUM_CREATURES)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_SUMMON_TYPE, SUMMON_TYPES_IWD)); + return RES_TYPE_IWD; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode260.java b/src/org/infinity/resource/effects/Opcode260.java new file mode 100644 index 000000000..e17ab4335 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode260.java @@ -0,0 +1,73 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 260. + */ +public class Opcode260 extends BaseOpcode { + private static final String RES_TYPE = "ITM:SPL"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case PST: + return null; + case IWD: + case IWD2: + return "Hide creature"; + default: + return "Activate spell sequencer at point"; + } + } + + public Opcode260() { + super(260, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return RES_TYPE; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return makeEffectParamsIWD(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode261.java b/src/org/infinity/resource/effects/Opcode261.java new file mode 100644 index 000000000..7048f98e6 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode261.java @@ -0,0 +1,83 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 261. + */ +public class Opcode261 extends BaseOpcode { + private static final String EFFECT_SPELL_LEVEL = "Spell level"; + private static final String EFFECT_SPELL_CLASS = "Spell class"; + private static final String EFFECT_FX = "Effect"; + + private static final String RES_TYPE_IWD2 = "SPL"; + + private static final String[] SPELL_CLASSES = new String[] { "Wizard", "Priest" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case PST: + return null; + case IWD: + return "Immunity to effect and string"; + case IWD2: + return "Immunity to effect and resource"; + default: + return "Restore lost spells"; + } + } + + public Opcode261() { + super(261, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_SPELL_LEVEL)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_SPELL_CLASS, SPELL_CLASSES)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_FX, getEffectNames())); + return null; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_FX, getEffectNames())); + return RES_TYPE_IWD2; + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode262.java b/src/org/infinity/resource/effects/Opcode262.java new file mode 100644 index 000000000..a4036e39e --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode262.java @@ -0,0 +1,74 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 262. + */ +public class Opcode262 extends BaseOpcode { + private static final String[] INC_TYPES_SPELLS = new String[] { "Increment", "Set" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case IWD2: + case PST: + return null; + case IWD: + return "Pomab images"; + default: + return "Visual range bonus"; + } + } + + public Opcode262() { + super(262, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, INC_TYPES_SPELLS)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode263.java b/src/org/infinity/resource/effects/Opcode263.java new file mode 100644 index 000000000..81f5f93fe --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode263.java @@ -0,0 +1,87 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; +import java.util.TreeMap; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.HashBitmap; +import org.infinity.datatype.IdsBitmap; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 263. + */ +public class Opcode263 extends BaseOpcode { + private static final String EFFECT_CREATURE_TYPE = "Creature type"; + private static final String EFFECT_TURN_TYPE = "Turn type"; + + private static final TreeMap TURN_MAP_IWD = new TreeMap<>(); + + static { + TURN_MAP_IWD.put(0L, "Charmed (neutral)"); + TURN_MAP_IWD.put(1L, "Charmed (hostile)"); + TURN_MAP_IWD.put(2L, "Dire charmed (neutral)"); + TURN_MAP_IWD.put(3L, "Dire charmed (hostile)"); + TURN_MAP_IWD.put(4L, "Controlled"); + } + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case PST: + return null; + case IWD: + case IWD2: + return "Evil turn undead"; + default: + return "Backstab bonus"; + } + } + + public Opcode263() { + super(263, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, INC_TYPES)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new IdsBitmap(buffer, offset, 4, EFFECT_CREATURE_TYPE, "GENERAL.IDS")); + list.add(new HashBitmap(buffer, offset + 4, 4, EFFECT_TURN_TYPE, TURN_MAP_IWD)); + return null; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return makeEffectParamsIWD(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode264.java b/src/org/infinity/resource/effects/Opcode264.java new file mode 100644 index 000000000..bf2bf956d --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode264.java @@ -0,0 +1,79 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 264. + */ +public class Opcode264 extends BaseOpcode { + private static final String EFFECT_ONLY_QUICK = "Only weapons in quick slots?"; + private static final String EFFECT_NUM_HITS = "# hits"; + + private static final String RES_TYPE_IWD2 = "SPL"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case PST: + return null; + case IWD: + case IWD2: + return "Static charge"; + default: + return "Drop item"; + } + } + + public Opcode264() { + super(264, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_ONLY_QUICK, AbstractStruct.OPTION_NOYES)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_NUM_HITS)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_NUM_HITS)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return RES_TYPE_IWD2; + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode265.java b/src/org/infinity/resource/effects/Opcode265.java new file mode 100644 index 000000000..6b2a65376 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode265.java @@ -0,0 +1,80 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 265. + */ +public class Opcode265 extends BaseOpcode { + private static final String EFFECT_NUM_HITS = "# hits"; + + private static final String RES_TYPE_IWD2 = "SPL"; + + private static final String[] INC_TYPES_VARS = { "Set", "Increment" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case PST: + return null; + case IWD: + case IWD2: + return "Cloak of fear"; + default: + return "Modify global variable"; + } + } + + public Opcode265() { + super(265, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, INC_TYPES_VARS)); + return RES_TYPE_STRING; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_NUM_HITS)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_NUM_HITS)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return RES_TYPE_IWD2; + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode266.java b/src/org/infinity/resource/effects/Opcode266.java new file mode 100644 index 000000000..e2010ad2e --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode266.java @@ -0,0 +1,74 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 266. + */ +public class Opcode266 extends BaseOpcode { + private static final String RES_TYPE = "SPL"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case PST: + return null; + case IWD: + case IWD2: + return "Movement rate modifier"; + default: + return "Remove protection from spell"; + } + } + + public Opcode266() { + super(266, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return RES_TYPE; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, INC_TYPES)); + return null; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return makeEffectParamsIWD(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode267.java b/src/org/infinity/resource/effects/Opcode267.java new file mode 100644 index 000000000..5bb1117f8 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode267.java @@ -0,0 +1,72 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.StringRef; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 267. + */ +public class Opcode267 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case PST: + return null; + case IWD: + case IWD2: + return "Cure confusion"; + default: + return "Disable display string"; + } + } + + public Opcode267() { + super(267, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new StringRef(buffer, offset, EFFECT_STRING)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return makeEffectParamsIWD(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode268.java b/src/org/infinity/resource/effects/Opcode268.java new file mode 100644 index 000000000..4d35d682d --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode268.java @@ -0,0 +1,57 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 268. + */ +public class Opcode268 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case PST: + return null; + case IWD: + case IWD2: + return "Eye of the mind"; + default: + return "Clear fog of war"; + } + } + + public Opcode268() { + super(268, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode269.java b/src/org/infinity/resource/effects/Opcode269.java new file mode 100644 index 000000000..62ed0ecec --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode269.java @@ -0,0 +1,73 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 269. + */ +public class Opcode269 extends BaseOpcode { + private static final String EFFECT_STRENGTH = "Strength"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case PST: + return null; + case IWD: + case IWD2: + return "Eye of the sword"; + default: + return "Shake screen"; + } + } + + public Opcode269() { + super(269, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_STRENGTH)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return makeEffectParamsIWD(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode270.java b/src/org/infinity/resource/effects/Opcode270.java new file mode 100644 index 000000000..de9392327 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode270.java @@ -0,0 +1,71 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 270. + */ +public class Opcode270 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case PST: + return null; + case IWD2: + case IWD: + return "Eye of the mage"; + default: + return "Unpause target"; + } + } + + public Opcode270() { + super(270, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, EFFECT_STAT_VALUE)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return makeEffectParamsIWD(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode271.java b/src/org/infinity/resource/effects/Opcode271.java new file mode 100644 index 000000000..122ffa09f --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode271.java @@ -0,0 +1,57 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 271. + */ +public class Opcode271 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case PST: + return null; + case IWD: + case IWD2: + return "Eye of venom"; + default: + return "Disable creature"; + } + } + + public Opcode271() { + super(271, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode272.java b/src/org/infinity/resource/effects/Opcode272.java new file mode 100644 index 000000000..4d37ba2ff --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode272.java @@ -0,0 +1,90 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 272. + */ +public class Opcode272 extends BaseOpcode { + private static final String EFFECT_CONDITION = "Condition"; + + private static final String RES_TYPE = "EFF"; + + private static final String[] CONDITIONS = { "Once per second", "", "Value per second", "Once per value seconds", + "Parameter3 per value seconds" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case PST: + return null; + case IWD: + case IWD2: + return "Eye of the spirit"; + default: + return "Use EFF file on condition"; + } + } + + public Opcode272() { + super(272, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_CONDITION, CONDITIONS)); + return RES_TYPE; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return makeEffectParamsIWD(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected int makeEffectSpecial(Datatype parent, ByteBuffer buffer, int offset, List list, + String resType, int param1, int param2) { + if (Profile.isEnhancedEdition()) { + list.add(new Bitmap(buffer, offset, 4, EFFECT_ICON, getPortraitIconNames(STRING_DEFAULT))); + return offset + 4; + } else { + return super.makeEffectSpecial(parent, buffer, offset, list, resType, param1, param2); + } + } +} diff --git a/src/org/infinity/resource/effects/Opcode273.java b/src/org/infinity/resource/effects/Opcode273.java new file mode 100644 index 000000000..a7a22b924 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode273.java @@ -0,0 +1,82 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 273. + */ +public class Opcode273 extends BaseOpcode { + private static final String RES_TYPE = "2DA"; + + private static final String[] MODES_TOBEX = { "Remove from CLEARAIR.2DA", "Remove from resource" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case PST: + return null; + case IWD: + case IWD2: + return "Eye of fortitude"; + default: + return "Zone of sweet air"; + } + } + + public Opcode273() { + super(273, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsBG2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + if (isTobEx()) { + list.add(new Bitmap(buffer, offset, 4, EFFECT_MODE, MODES_TOBEX)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return RES_TYPE; + } else { + return makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return RES_TYPE; + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode274.java b/src/org/infinity/resource/effects/Opcode274.java new file mode 100644 index 000000000..7a82e881b --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode274.java @@ -0,0 +1,57 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 274. + */ +public class Opcode274 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case PST: + return null; + case IWD: + case IWD2: + return "Eye of stone"; + default: + return "Phase"; + } + } + + public Opcode274() { + super(274, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode275.java b/src/org/infinity/resource/effects/Opcode275.java new file mode 100644 index 000000000..ca0a4b580 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode275.java @@ -0,0 +1,72 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 275. + */ +public class Opcode275 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case PST: + return null; + case IWD: + case IWD2: + return "Remove seven eyes"; + default: + return "Hide in shadows bonus"; + } + } + + public Opcode275() { + super(275, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, INC_TYPES)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return makeEffectParamsIWD(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode276.java b/src/org/infinity/resource/effects/Opcode276.java new file mode 100644 index 000000000..21b38ec61 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode276.java @@ -0,0 +1,74 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 276. + */ +public class Opcode276 extends BaseOpcode { + private static final String EFFECT_FX = "Effect"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case PST: + return null; + case IWD: + case IWD2: + return "Remove effect by type"; + default: + return "Detect illusion bonus"; + } + } + + public Opcode276() { + super(276, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, INC_TYPES)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_FX, getEffectNames())); + return null; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return makeEffectParamsIWD(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode277.java b/src/org/infinity/resource/effects/Opcode277.java new file mode 100644 index 000000000..99ac55682 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode277.java @@ -0,0 +1,72 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 277. + */ +public class Opcode277 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case IWD2: + case PST: + return null; + case IWD: + return "Soul eater"; + default: + return "Set traps bonus"; + } + } + + public Opcode277() { + super(277, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, INC_TYPES)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_AMOUNT)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode278.java b/src/org/infinity/resource/effects/Opcode278.java new file mode 100644 index 000000000..3680de572 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode278.java @@ -0,0 +1,72 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 278. + */ +public class Opcode278 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case PST: + return null; + case IWD: + case IWD2: + return "Shroud of flame"; + default: + return "THAC0 bonus"; + } + } + + public Opcode278() { + super(278, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, INC_TYPES)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return makeEffectParamsIWD(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode279.java b/src/org/infinity/resource/effects/Opcode279.java new file mode 100644 index 000000000..3b07f1b39 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode279.java @@ -0,0 +1,110 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.Arrays; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 279. + */ +public class Opcode279 extends BaseOpcode { + private static final String EFFECT_BUTTON = "Button"; + private static final String EFFECT_NUM_SECONDS = "# seconds"; + + private static final String[] BUTTONS_TOBEX; + private static final String[] BUTTONS_EE; + + private static final String[] RAGE_TYPE_IWD = { "LOS check (# seconds)", "State" }; + + static { + BUTTONS_TOBEX = Arrays.copyOf(BUTTONS, 15); + BUTTONS_TOBEX[10] = "Bard song"; + BUTTONS_TOBEX[14] = "Find traps"; + + BUTTONS_EE = Arrays.copyOf(BUTTONS_TOBEX, 16); + BUTTONS_EE[15] = "Inventory screen"; + } + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case PST: + return null; + case IWD: + case IWD2: + return "Animal rage"; + default: + return "Enable button"; + } + } + + public Opcode279() { + super(279, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_BUTTON, BUTTONS)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsBG2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + if (isTobEx()) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_BUTTON, BUTTONS_TOBEX)); + return null; + } else { + return makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_BUTTON, BUTTONS_EE)); + return null; + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_NUM_SECONDS)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_TYPE, RAGE_TYPE_IWD)); + return null; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return makeEffectParamsIWD(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode280.java b/src/org/infinity/resource/effects/Opcode280.java new file mode 100644 index 000000000..cba3dd2b0 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode280.java @@ -0,0 +1,103 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 280. + */ +public class Opcode280 extends BaseOpcode { + private static final String EFFECT_AFFECT = "Affect"; + private static final String EFFECT_SURGE_ROLL = "EEex: Surge roll"; + private static final String EFFECT_TURN_TYPE = "Turn type"; + private static final String EFFECT_SUPPRESS_GFX = "EEex: Suppress graphics?"; + + private static final String[] AFFECT_TYPES = { "", "Next spell only", "Use duration" }; + private static final String[] TURN_TYPES_IWD = { "Command", "Rebuke", "Destroy", "Panic", "Depend on caster" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case PST: + return null; + case IWD: + case IWD2: + return "Turn undead"; + default: + return "Wild magic"; + } + } + + public Opcode280() { + super(280, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_AFFECT, AFFECT_TYPES)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + if (isEEEx()) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_SURGE_ROLL)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_AFFECT, AFFECT_TYPES)); + return null; + } else { + return makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_TURN_TYPE, TURN_TYPES_IWD)); + return null; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return makeEffectParamsIWD(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected int makeEffectSpecial(Datatype parent, ByteBuffer buffer, int offset, List list, + String resType, int param1, int param2) { + if (Profile.isEnhancedEdition() && isEEEx()) { + list.add(new Bitmap(buffer, offset, 4, EFFECT_SUPPRESS_GFX, AbstractStruct.OPTION_NOYES)); + return offset + 4; + } else { + return super.makeEffectSpecial(parent, buffer, offset, list, resType, param1, param2); + } + } +} diff --git a/src/org/infinity/resource/effects/Opcode281.java b/src/org/infinity/resource/effects/Opcode281.java new file mode 100644 index 000000000..7fa1eca01 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode281.java @@ -0,0 +1,72 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 281. + */ +public class Opcode281 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case PST: + return null; + case IWD: + case IWD2: + return "Vitriolic sphere"; + default: + return "Wild surge bonus"; + } + } + + public Opcode281() { + super(281, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, INC_TYPES)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_AMOUNT)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return makeEffectParamsIWD(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode282.java b/src/org/infinity/resource/effects/Opcode282.java new file mode 100644 index 000000000..ac4aa30f8 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode282.java @@ -0,0 +1,113 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.Arrays; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 282. + */ +public class Opcode282 extends BaseOpcode { + private static final String EFFECT_STATE = "State"; + + private static final String[] STATES = { "Scripting State 1", "Scripting State 2", "Scripting State 3", + "Scripting State 4", "Scripting State 5", "Scripting State 6", "Scripting State 7", "Scripting State 8", + "Scripting State 9", "Scripting State 10", "Melee THAC0 Bonus", "Melee Damage Bonus", "Missile Damage Bonus", + "Disable Circle", "Fist THAC0 Bonus", "Fist Damage Bonus", "Class String Override Mixed", + "Class String Override Lower", "Prevent Spell Protection Effects", "Immunity to Backstab", "Lockpicking Bonus", + "Move Silently Bonus", "Find Traps Bonus", "Pickpocket Bonus", "Hide in Shadows Bonus", "Detect Illusions Bonus", + "Set Traps Bonus", "Prevent AI Slowdown", "Existance Delay Override", "Animation-only Haste", + "No Permanent Death", "Immune to Turn Undead", "Chaos Shield", "NPC Bump", "Use Any Item", "Assassinate", + "Sex Changed", "Spell Failure Innate", "Immune to Tracking", "Dead Magic", "Immune to Timestop", + "Immune to Sequester", "Stoneskins Golem", "Level Drain", "Do Not Draw" }; + private static final String[] STATES_EE = Arrays.copyOf(STATES, STATES.length); + + static { + STATES_EE[0] += " / Wing Buffet"; + STATES_EE[1] += " / Death Ward"; + STATES_EE[2] += " / Level Drain Immunity"; + STATES_EE[3] += " / Offensive Modifier"; + STATES_EE[4] += " / Defensive Modifier"; + STATES_EE[5] += " / Defensive Modifier"; + STATES_EE[6] += " / Wizard Spell Immunity"; + STATES_EE[7] += " / Wizard Protection from Energy"; + STATES_EE[8] += " / Wizard Spell Trap"; + STATES_EE[9] += " / Wizard Improved Alacrity"; + + for (int i = 10; i < STATES.length; i++) { + STATES[i] += " [undocumented]"; + STATES_EE[i] += " [undocumented]"; + } + } + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case PST: + return null; + case IWD: + case IWD2: + return "Hide hit points"; + default: + return "Modify script state"; + } + } + + public Opcode282() { + super(282, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_STATE, STATES)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_STATE, STATES_EE)); + return null; + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return makeEffectParamsIWD(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode283.java b/src/org/infinity/resource/effects/Opcode283.java new file mode 100644 index 000000000..dcc45d8c2 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode283.java @@ -0,0 +1,79 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.IdsTargetType; +import org.infinity.datatype.StringRef; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 283. + */ +public class Opcode283 extends BaseOpcode { + private static final String EFFECT_DISPLAY_TYPE = "Display type"; + + private static final String RES_TYPE = "EFF"; + + private static final String[] TEXT_TYPES_IWD = { "String reference", "Cynicism" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case PST: + return null; + case IWD: + case IWD2: + return "Float text"; + default: + return "Use EFF file as curse"; + } + } + + public Opcode283() { + super(283, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + final IdsTargetType param2 = new IdsTargetType(buffer, offset + 4); + list.add(param2.createIdsValueFromType(buffer)); + list.add(param2); + return RES_TYPE; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new StringRef(buffer, offset, EFFECT_STRING)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_DISPLAY_TYPE, TEXT_TYPES_IWD)); + return null; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return makeEffectParamsIWD(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode284.java b/src/org/infinity/resource/effects/Opcode284.java new file mode 100644 index 000000000..6668f3f1e --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode284.java @@ -0,0 +1,72 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 284. + */ +public class Opcode284 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case PST: + return null; + case IWD: + case IWD2: + return "Mace of disruption"; + default: + return "Melee THAC0 bonus"; + } + } + + public Opcode284() { + super(284, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, INC_TYPES)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return makeEffectParamsIWD(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode285.java b/src/org/infinity/resource/effects/Opcode285.java new file mode 100644 index 000000000..c7b36d72d --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode285.java @@ -0,0 +1,74 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 285. + */ +public class Opcode285 extends BaseOpcode { + private static final String EFFECT_WAKE_ON_DAMAGE = "Wake on damage?"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case PST: + return null; + case IWD: + case IWD2: + return "Force sleep"; + default: + return "Melee weapon damage bonus"; + } + } + + public Opcode285() { + super(285, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, INC_TYPES)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_WAKE_ON_DAMAGE, AbstractStruct.OPTION_YESNO)); + return null; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return makeEffectParamsIWD(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode286.java b/src/org/infinity/resource/effects/Opcode286.java new file mode 100644 index 000000000..7739a066e --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode286.java @@ -0,0 +1,72 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 286. + */ +public class Opcode286 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case PST: + return null; + case IWD: + case IWD2: + return "Ranger tracking"; + default: + return "Missile weapon damage bonus"; + } + } + + public Opcode286() { + super(286, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, INC_TYPES)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return makeEffectParamsIWD(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode287.java b/src/org/infinity/resource/effects/Opcode287.java new file mode 100644 index 000000000..d59e1e250 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode287.java @@ -0,0 +1,57 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 287. + */ +public class Opcode287 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case PST: + return null; + case IWD: + case IWD2: + return "Immunity to sneak attack"; + default: + return "Remove feet circle"; + } + } + + public Opcode287() { + super(287, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode288.java b/src/org/infinity/resource/effects/Opcode288.java new file mode 100644 index 000000000..15c6d3f27 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode288.java @@ -0,0 +1,77 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.IdsBitmap; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 288. + */ +public class Opcode288 extends BaseOpcode { + private static final String EFFECT_STATE = "State"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case PST: + return null; + case IWD: + case IWD2: + return "Set spell state"; + default: + return "Fist THAC0 bonus"; + } + } + + public Opcode288() { + super(288, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, INC_TYPES)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_STATE, SPELL_STATES)); + return null; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new IdsBitmap(buffer, offset + 4, 4, EFFECT_STATE, "SPLSTATE.IDS")); + return null; + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode289.java b/src/org/infinity/resource/effects/Opcode289.java new file mode 100644 index 000000000..1cd178ce1 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode289.java @@ -0,0 +1,72 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 289. + */ +public class Opcode289 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case IWD2: + case PST: + return null; + case IWD: + return "Dragon gem cutscene"; + default: + return "Fist damage bonus"; + } + } + + public Opcode289() { + super(289, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, INC_TYPES)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode290.java b/src/org/infinity/resource/effects/Opcode290.java new file mode 100644 index 000000000..a7ad2e3aa --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode290.java @@ -0,0 +1,96 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.IdsBitmap; +import org.infinity.datatype.StringRef; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 290. + */ +public class Opcode290 extends BaseOpcode { + private static final String EFFECT_TITLE = "Title"; + private static final String EFFECT_WHERE = "Change where?"; + private static final String EFFECT_CREATURE_TYPE = "Creature type"; + private static final String EFFECT_CLASS_OVERRIDE = "Class override"; + + private static final String RES_TYPE_IWD = "SPL"; + + private static final String[] WHERE = { "Records screen", "Class name" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case PST: + return null; + case IWD: + case IWD2: + return "Display spell immunity string"; + default: + return "Change title"; + } + } + + public Opcode290() { + super(290, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new StringRef(buffer, offset, EFFECT_TITLE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_WHERE, WHERE)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_CREATURE_TYPE, CRE_TYPES_IWD)); + return RES_TYPE_IWD; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_CREATURE_TYPE, CRE_TYPES_IWD)); + return RES_TYPE_IWD; + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected int makeEffectSpecial(Datatype parent, ByteBuffer buffer, int offset, List list, + String resType, int param1, int param2) { + if (Profile.isEnhancedEdition()) { + list.add(new IdsBitmap(buffer, offset, 4, EFFECT_CLASS_OVERRIDE, "CLASS.IDS")); + return offset + 4; + } else { + return super.makeEffectSpecial(parent, buffer, offset, list, resType, param1, param2); + } + } +} diff --git a/src/org/infinity/resource/effects/Opcode291.java b/src/org/infinity/resource/effects/Opcode291.java new file mode 100644 index 000000000..5389fe5b7 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode291.java @@ -0,0 +1,71 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 291. + */ +public class Opcode291 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case PST: + return null; + case IWD2: + case IWD: + return "Rod of smiting"; + default: + return "Disable visual effects"; + } + } + + public Opcode291() { + super(291, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, EFFECT_STAT_VALUE)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return makeEffectParamsIWD(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode292.java b/src/org/infinity/resource/effects/Opcode292.java new file mode 100644 index 000000000..b9e10556c --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode292.java @@ -0,0 +1,71 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 292. + */ +public class Opcode292 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case PST: + return null; + case IWD2: + case IWD: + return "Rest"; + default: + return "Immunity to backstab"; + } + } + + public Opcode292() { + super(292, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, EFFECT_STAT_VALUE)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return makeEffectParamsIWD(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode293.java b/src/org/infinity/resource/effects/Opcode293.java new file mode 100644 index 000000000..b097b31c9 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode293.java @@ -0,0 +1,71 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 293. + */ +public class Opcode293 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case PST: + return null; + case IWD2: + case IWD: + return "Beholder dispel magic"; + default: + return "Set persistent AI"; + } + } + + public Opcode293() { + super(293, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, EFFECT_STAT_VALUE)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return makeEffectParamsIWD(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode294.java b/src/org/infinity/resource/effects/Opcode294.java new file mode 100644 index 000000000..c7fbe6387 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode294.java @@ -0,0 +1,71 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 294. + */ +public class Opcode294 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case PST: + return null; + case IWD: + case IWD2: + return "Harpy wail"; + default: + return "Set existence delay"; + } + } + + public Opcode294() { + super(294, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_STAT_VALUE)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return makeEffectParamsIWD(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode295.java b/src/org/infinity/resource/effects/Opcode295.java new file mode 100644 index 000000000..9d753661c --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode295.java @@ -0,0 +1,71 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 295. + */ +public class Opcode295 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case PST: + return null; + case IWD2: + case IWD: + return "Jackalwere gaze"; + default: + return "Disable permanent death"; + } + } + + public Opcode295() { + super(295, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, EFFECT_STAT_VALUE)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return makeEffectParamsIWD(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode296.java b/src/org/infinity/resource/effects/Opcode296.java new file mode 100644 index 000000000..513b09a8e --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode296.java @@ -0,0 +1,78 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 296. + */ +public class Opcode296 extends BaseOpcode { + private static final String EFFECT_VARIABLE = "Variable"; + + private static final String RES_TYPE = "VEF:VVC:BAM"; + + private static final String[] VARIABLES_IWD = { "RETURN_TO_LONELYWOOD" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case PST: + return null; + case IWD: + case IWD2: + return "Set global variable"; + default: + return "Immunity to specific animation"; + } + } + + public Opcode296() { + super(296, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return RES_TYPE; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_VARIABLE, VARIABLES_IWD)); + return null; + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return makeEffectParamsIWD(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode297.java b/src/org/infinity/resource/effects/Opcode297.java new file mode 100644 index 000000000..cde8c6b66 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode297.java @@ -0,0 +1,72 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 297. + */ +public class Opcode297 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case PST: + case IWD: + return null; + case IWD2: + return "Hide in shadows bonus"; + default: + return "Immunity to turn undead"; + } + } + + public Opcode297() { + super(297, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, EFFECT_STAT_VALUE)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, INC_TYPES)); + return null; + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode298.java b/src/org/infinity/resource/effects/Opcode298.java new file mode 100644 index 000000000..14e391c48 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode298.java @@ -0,0 +1,92 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 298. + */ +public class Opcode298 extends BaseOpcode { + private static final String EFFECT_STORE_LOCATION = "Store party location"; + private static final String EFFECT_USE_SCRIPT = "Use custom script?"; + + private static final String RES_TYPE = "BCS"; + + private static final String[] LOCATIONS_TOBEX = { "Use pocket plane field", "Use party location field", + "Do not store" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case IWD: + case PST: + return null; + case IWD2: + return "Use magic device bonus"; + default: + return "Pocket plane"; + } + } + + public Opcode298() { + super(298, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, EFFECT_STAT_VALUE)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsBG2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + if (isTobEx()) { + list.add(new Bitmap(buffer, offset, 4, EFFECT_STORE_LOCATION, LOCATIONS_TOBEX)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_USE_SCRIPT, AbstractStruct.OPTION_NOYES)); + return RES_TYPE; + } else { + return makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, INC_TYPES)); + return null; + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode299.java b/src/org/infinity/resource/effects/Opcode299.java new file mode 100644 index 000000000..9db3af671 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode299.java @@ -0,0 +1,72 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 299. + */ +public class Opcode299 extends BaseOpcode { + private static final String EFFECT_PORTRAIT = "Portrait"; + + private static final String[] PORTRAITS = { "Chaos Shield", "Improved Chaos Shield" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case IWD: + case IWD2: + case PST: + return null; + default: + return "Chaos shield effect"; + } + } + + public Opcode299() { + super(299, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_PORTRAIT, PORTRAITS)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode300.java b/src/org/infinity/resource/effects/Opcode300.java new file mode 100644 index 000000000..248706247 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode300.java @@ -0,0 +1,73 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.Flag; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 300. + */ +public class Opcode300 extends BaseOpcode { + private static final String EFFECT_BEHAVIOR = "Behavior"; + + private static final String[] BEHAVIORS = { "None", "NPC bumps PCs", "NPC can't be bumped" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case IWD: + case IWD2: + case PST: + return null; + default: + return "Modify collision behavior"; + } + } + + public Opcode300() { + super(300, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Flag(buffer, offset + 4, 4, EFFECT_BEHAVIOR, BEHAVIORS)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode301.java b/src/org/infinity/resource/effects/Opcode301.java new file mode 100644 index 000000000..37701d8ea --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode301.java @@ -0,0 +1,86 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 301. + */ +public class Opcode301 extends BaseOpcode { + private static final String EFFECT_CONDITION = "Condition"; + private static final String EFFECT_ATTACK_TYPE = "Attack type"; + + private static final String[] CONDITIONS = { "Always", "By this weapon only" }; + private static final String[] ATTACK_TYPES_EE = { "Any attack type", "Melee attack only", "Ranged attack only", + "Magical attack only" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case IWD: + case IWD2: + case PST: + return null; + default: + return "Critical hit bonus"; + } + } + + public Opcode301() { + super(301, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_CONDITION, CONDITIONS)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected int makeEffectSpecial(Datatype parent, ByteBuffer buffer, int offset, List list, + String resType, int param1, int param2) { + if (Profile.isEnhancedEdition()) { + list.add(new Bitmap(buffer, offset, 4, EFFECT_ATTACK_TYPE, ATTACK_TYPES_EE)); + return offset + 4; + } else { + return super.makeEffectSpecial(parent, buffer, offset, list, resType, param1, param2); + } + } +} diff --git a/src/org/infinity/resource/effects/Opcode302.java b/src/org/infinity/resource/effects/Opcode302.java new file mode 100644 index 000000000..a234babbe --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode302.java @@ -0,0 +1,68 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 302. + */ +public class Opcode302 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case PST: + case IWD: + case IWD2: + return null; + default: + return "Can use any item"; + } + } + + public Opcode302() { + super(302, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, EFFECT_STAT_VALUE)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode303.java b/src/org/infinity/resource/effects/Opcode303.java new file mode 100644 index 000000000..37459513e --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode303.java @@ -0,0 +1,91 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; +import java.util.TreeMap; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.HashBitmap; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 303. + */ +public class Opcode303 extends BaseOpcode { + private static final TreeMap TYPE_MAP_TOBEX = new TreeMap<>(); + + static { + TYPE_MAP_TOBEX.put(0L, "Normal conditions"); + TYPE_MAP_TOBEX.put(1L, "Ignore visual state and position"); + TYPE_MAP_TOBEX.put(2L, "Ignore visual state only"); + TYPE_MAP_TOBEX.put(4L, "Ignore position only"); + } + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case IWD: + case IWD2: + case PST: + return null; + default: + return "Backstab every hit"; + } + } + + public Opcode303() { + super(303, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, EFFECT_STAT_VALUE)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsBG2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + if (isTobEx()) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new HashBitmap(buffer, offset + 4, 4, EFFECT_TYPE, TYPE_MAP_TOBEX)); + return null; + } else { + return makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode304.java b/src/org/infinity/resource/effects/Opcode304.java new file mode 100644 index 000000000..89486bb36 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode304.java @@ -0,0 +1,68 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 304. + */ +public class Opcode304 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case IWD: + case IWD2: + case PST: + return null; + default: + return "Mass raise dead"; + } + } + + public Opcode304() { + super(304, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode305.java b/src/org/infinity/resource/effects/Opcode305.java new file mode 100644 index 000000000..ace5c9a4e --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode305.java @@ -0,0 +1,68 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 305. + */ +public class Opcode305 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case IWD: + case IWD2: + case PST: + return null; + default: + return "Off-hand THAC0 bonus"; + } + } + + public Opcode305() { + super(305, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, INC_TYPES)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode306.java b/src/org/infinity/resource/effects/Opcode306.java new file mode 100644 index 000000000..dd810d03b --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode306.java @@ -0,0 +1,68 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 306. + */ +public class Opcode306 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case IWD: + case IWD2: + case PST: + return null; + default: + return "Main hand THAC0 bonus"; + } + } + + public Opcode306() { + super(306, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, INC_TYPES)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode307.java b/src/org/infinity/resource/effects/Opcode307.java new file mode 100644 index 000000000..ae2b37792 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode307.java @@ -0,0 +1,70 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 307. + */ +public class Opcode307 extends BaseOpcode { + private static final String EFFECT_RANGE = "Range"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case IWD: + case IWD2: + case PST: + return null; + default: + return "Tracking"; + } + } + + public Opcode307() { + super(307, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_RANGE)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode308.java b/src/org/infinity/resource/effects/Opcode308.java new file mode 100644 index 000000000..c9410a184 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode308.java @@ -0,0 +1,68 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 308. + */ +public class Opcode308 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case PST: + case IWD: + case IWD2: + return null; + default: + return "Immunity to tracking"; + } + } + + public Opcode308() { + super(308, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, EFFECT_STAT_VALUE)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode309.java b/src/org/infinity/resource/effects/Opcode309.java new file mode 100644 index 000000000..66bf51a6a --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode309.java @@ -0,0 +1,70 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 309. + */ +public class Opcode309 extends BaseOpcode { + private static final String[] INC_TYPES_VARS = { "Set", "Increment" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case PST: + case IWD: + case IWD2: + return null; + default: + return "Modify local variable"; + } + } + + public Opcode309() { + super(309, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, INC_TYPES_VARS)); + return RES_TYPE_STRING; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode310.java b/src/org/infinity/resource/effects/Opcode310.java new file mode 100644 index 000000000..bd0308d8a --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode310.java @@ -0,0 +1,68 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 310. + */ +public class Opcode310 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case PST: + case IWD: + case IWD2: + return null; + default: + return "Immunity to time stop"; + } + } + + public Opcode310() { + super(310, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, EFFECT_STAT_VALUE)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode311.java b/src/org/infinity/resource/effects/Opcode311.java new file mode 100644 index 000000000..8207266e6 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode311.java @@ -0,0 +1,68 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 311. + */ +public class Opcode311 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case IWD: + case IWD2: + case PST: + return null; + default: + return "Wish"; + } + } + + public Opcode311() { + super(311, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode312.java b/src/org/infinity/resource/effects/Opcode312.java new file mode 100644 index 000000000..cd976bcdc --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode312.java @@ -0,0 +1,68 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 312. + */ +public class Opcode312 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case PST: + case IWD: + case IWD2: + return null; + default: + return "Immunity to sequester"; + } + } + + public Opcode312() { + super(312, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, EFFECT_STAT_VALUE)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode313.java b/src/org/infinity/resource/effects/Opcode313.java new file mode 100644 index 000000000..aaeed79fb --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode313.java @@ -0,0 +1,70 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 313. + */ +public class Opcode313 extends BaseOpcode { + private static final String RES_TYPE = "SPL"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case PST: + case IWD: + case IWD2: + return null; + default: + return "High-level ability"; + } + } + + public Opcode313() { + super(313, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return RES_TYPE; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode314.java b/src/org/infinity/resource/effects/Opcode314.java new file mode 100644 index 000000000..33a7663e1 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode314.java @@ -0,0 +1,70 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 314. + */ +public class Opcode314 extends BaseOpcode { + private static final String EFFECT_NUM_SKINS = "# skins"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case PST: + case IWD: + case IWD2: + return null; + default: + return "Stoneskin protection"; + } + } + + public Opcode314() { + super(314, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_NUM_SKINS)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode315.java b/src/org/infinity/resource/effects/Opcode315.java new file mode 100644 index 000000000..9c2151ab4 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode315.java @@ -0,0 +1,68 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 315. + */ +public class Opcode315 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case PST: + case IWD: + case IWD2: + return null; + default: + return "Remove animation"; + } + } + + public Opcode315() { + super(315, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, EFFECT_STAT_VALUE)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode316.java b/src/org/infinity/resource/effects/Opcode316.java new file mode 100644 index 000000000..423dbe616 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode316.java @@ -0,0 +1,68 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 316. + */ +public class Opcode316 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case IWD: + case IWD2: + case PST: + return null; + default: + return "Rest"; + } + } + + public Opcode316() { + super(316, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode317.java b/src/org/infinity/resource/effects/Opcode317.java new file mode 100644 index 000000000..4c39f5308 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode317.java @@ -0,0 +1,73 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 317. + */ +public class Opcode317 extends BaseOpcode { + private static final String EFFECT_HASTE_TYPE = "Haste type"; + + private static final String[] HASTE_TYPES = { "Normal", "Improved", "Movement rate only" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case BG1: + case PST: + case IWD: + case IWD2: + return null; + default: + return "Haste 2"; + } + } + + public Opcode317() { + super(317, getOpcodeName()); + } + + @Override + protected String makeEffectParamsGeneric(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_HASTE_TYPE, HASTE_TYPES)); + return null; + } + + @Override + protected String makeEffectParamsBG1(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } + + @Override + protected String makeEffectParamsPST(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + return super.makeEffectParamsGeneric(parent, buffer, offset, list, isVersion1); + } +} diff --git a/src/org/infinity/resource/effects/Opcode318.java b/src/org/infinity/resource/effects/Opcode318.java new file mode 100644 index 000000000..fe7efceb4 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode318.java @@ -0,0 +1,81 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.IdsBitmap; +import org.infinity.datatype.SpellProtType; +import org.infinity.datatype.StringRef; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 318. + */ +public class Opcode318 extends BaseOpcode { + private static final String EFFECT_STAT_OPCODE = "Stat opcode"; + private static final String EFFECT_DESC_NOTE = "Description note"; + + private static final String RES_TYPE = "EFF:ITM:SPL"; + + private static final String[] OPERATIONS_TOBEX = { "Increment", "Set", "Set % of", "Multiply", "Divide", "Modulus", + "Logical AND", "Logical OR", "Bitwise AND", "Bitwise OR", "Invert" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case EE: + return "Protection from resource"; + case BG2: + if (isTobEx()) { + return "Ex: Set stat"; + } + default: + return null; + } + } + + public Opcode318() { + super(318, getOpcodeName()); + } + + @Override + protected String makeEffectParamsBG2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + if (isTobEx()) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new IdsBitmap(buffer, offset + 4, 2, EFFECT_STAT_OPCODE, "STATS.IDS")); + list.add(new Bitmap(buffer, offset + 6, 2, EFFECT_MODIFIER_TYPE, OPERATIONS_TOBEX)); + return null; + } else { + return super.makeEffectParamsBG2(parent, buffer, offset, list, isVersion1); + } + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + final SpellProtType param2 = new SpellProtType(buffer, offset + 4, 4); + list.add(param2.createCreatureValueFromType(buffer, offset)); + list.add(param2); + return RES_TYPE; + } + + @Override + protected int makeEffectSpecial(Datatype parent, ByteBuffer buffer, int offset, List list, + String resType, int param1, int param2) { + if (Profile.isEnhancedEdition()) { + list.add(new StringRef(buffer, offset, EFFECT_DESC_NOTE)); + return offset + 4; + } else { + return super.makeEffectSpecial(parent, buffer, offset, list, resType, param1, param2); + } + } +} diff --git a/src/org/infinity/resource/effects/Opcode319.java b/src/org/infinity/resource/effects/Opcode319.java new file mode 100644 index 000000000..3fb00d8fe --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode319.java @@ -0,0 +1,120 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.IdsTargetType; +import org.infinity.datatype.IsNumeric; +import org.infinity.datatype.SpellProtType; +import org.infinity.datatype.StringRef; +import org.infinity.datatype.UpdateListener; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 319. + */ +public class Opcode319 extends BaseOpcode { + private static final String EFFECT_MODE_EEEX = "EEex: Mode"; + private static final String EFFECT_DESC_NOTE = "Description note"; + + private static final String[] MODES_EEEX = { "Not usable by", "Usable by", "EEex: Usable by (splprot)", + "EEex: Not usable by (splprot)" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case EE: + return "Restrict item"; + default: + return null; + } + } + + public Opcode319() { + super(319, getOpcodeName()); + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + if (isEEEx()) { + final Bitmap power = new Bitmap(buffer, offset - 1, 1, EFFECT_MODE_EEEX, MODES_EEEX); + power.addUpdateListener((UpdateListener)parent); + list.set(1, power); + } + + byte power = buffer.get(offset - 1); + if (isEEEx() && (power == 2 || power == 3)) { + final SpellProtType param2 = new SpellProtType(buffer, offset + 4, 4); + param2.setName("EEex: " + param2.getName()); + final StructEntry param1 = param2.createCreatureValueFromType(buffer); + param1.setName("EEex: " + param1.getName()); + list.add(param1); + list.add(param2); + } else { + final IdsTargetType param2 = new IdsTargetType(buffer, offset + 4, 4, + IdsTargetType.DEFAULT_NAME_TYPE, -1, IdsTargetType.DEFAULT_SECOND_IDS, true); + param2.addUpdateListener((UpdateListener)parent); + list.add(param2.createIdsValueFromType(buffer)); + list.add(param2); + } + + return null; + } + + @Override + protected boolean update(AbstractStruct struct) throws Exception { + boolean retVal = false; + if (struct != null && Profile.isEnhancedEdition()) { + if (isEEEx()) { + int power = ((IsNumeric)getEntry(struct, EffectEntry.IDX_POWER)).getValue(); + if (power == 2 || power == 3) { + final SpellProtType param2 = new SpellProtType(getEntryData(struct, EffectEntry.IDX_PARAM2), 0, 4); + param2.setName("EEex: " + param2.getName()); + final StructEntry param1 = param2.createCreatureValueFromType(getEntryData(struct, EffectEntry.IDX_PARAM1), 0); + param1.setName("EEex: " + param1.getName()); + replaceEntry(struct, EffectEntry.IDX_PARAM1, EffectEntry.OFS_PARAM1, param1); + replaceEntry(struct, EffectEntry.IDX_PARAM2, EffectEntry.OFS_PARAM2, param2); + retVal = true; + } + else { + final IdsTargetType param2 = new IdsTargetType(getEntryData(struct, EffectEntry.IDX_PARAM2), 0, 4, + IdsTargetType.DEFAULT_NAME_TYPE, -1, IdsTargetType.DEFAULT_SECOND_IDS, true); + param2.addUpdateListener((UpdateListener)struct.getField(0)); + replaceEntry(struct, EffectEntry.IDX_PARAM1, EffectEntry.OFS_PARAM1, + param2.createIdsValueFromType(getEntryData(struct, EffectEntry.IDX_PARAM1), 0)); + replaceEntry(struct, EffectEntry.IDX_PARAM2, EffectEntry.OFS_PARAM2, param2); + retVal = true; + } + } + // updating resource field + final StructEntry entry = getEntry(struct, EffectEntry.IDX_PARAM2); + if (entry instanceof IdsTargetType) { + StructEntry resourceEntry = + ((IdsTargetType)entry).createResourceFromType(getEntryData(struct, EffectEntry.IDX_RESOURCE), 0); + replaceEntry(struct, EffectEntry.IDX_RESOURCE, EffectEntry.OFS_RESOURCE, resourceEntry); + retVal = true; + } + } + return retVal; + } + + @Override + protected int makeEffectSpecial(Datatype parent, ByteBuffer buffer, int offset, List list, + String resType, int param1, int param2) { + if (Profile.isEnhancedEdition()) { + list.add(new StringRef(buffer, offset, EFFECT_DESC_NOTE)); + return offset + 4; + } else { + return super.makeEffectSpecial(parent, buffer, offset, list, resType, param1, param2); + } + } +} diff --git a/src/org/infinity/resource/effects/Opcode320.java b/src/org/infinity/resource/effects/Opcode320.java new file mode 100644 index 000000000..43623ca6e --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode320.java @@ -0,0 +1,44 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 320. + */ +public class Opcode320 extends BaseOpcode { + private static final String[] WEATHER_TYPES = { "Normal", "Rain", "Snow", "Nothing" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case EE: + return "Change weather"; + default: + return null; + } + } + + public Opcode320() { + super(320, getOpcodeName()); + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new Bitmap(buffer, offset, 4, EFFECT_TYPE, WEATHER_TYPES)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode321.java b/src/org/infinity/resource/effects/Opcode321.java new file mode 100644 index 000000000..c2713b07f --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode321.java @@ -0,0 +1,46 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 321. + */ +public class Opcode321 extends BaseOpcode { + private static final String RES_TYPE = "ITM:SPL"; + + private static final String[] FX_TYPES = { "Default", "Equipped effects list only", "Timed effects list only" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case EE: + return "Remove effects by resource"; + default: + return null; + } + } + + public Opcode321() { + super(321, getOpcodeName()); + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_TYPE, FX_TYPES)); + return RES_TYPE; + } +} diff --git a/src/org/infinity/resource/effects/Opcode322.java b/src/org/infinity/resource/effects/Opcode322.java new file mode 100644 index 000000000..29b0437da --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode322.java @@ -0,0 +1,41 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 322. + */ +public class Opcode322 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case EE: + return "AoE evade check (deprecated)"; + default: + return null; + } + } + + public Opcode322() { + super(322, getOpcodeName()); + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode323.java b/src/org/infinity/resource/effects/Opcode323.java new file mode 100644 index 000000000..71efdac58 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode323.java @@ -0,0 +1,41 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 323. + */ +public class Opcode323 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case EE: + return "Turn undead level"; + default: + return null; + } + } + + public Opcode323() { + super(323, getOpcodeName()); + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, INC_TYPES)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode324.java b/src/org/infinity/resource/effects/Opcode324.java new file mode 100644 index 000000000..796f5e159 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode324.java @@ -0,0 +1,57 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.SpellProtType; +import org.infinity.datatype.StringRef; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 324. + */ +public class Opcode324 extends BaseOpcode { + private static final String EFFECT_OVERRIDE_STRREF = "EEex: Override strref"; + + private static final String RES_TYPE = "EFF:ITM:SPL"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case EE: + return "Immunity to resource and message"; + default: + return null; + } + } + + public Opcode324() { + super(324, getOpcodeName()); + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + final SpellProtType param2 = new SpellProtType(buffer, offset + 4, 4); + list.add(param2.createCreatureValueFromType(buffer, offset)); + list.add(param2); + return RES_TYPE; + } + + @Override + protected int makeEffectSpecial(Datatype parent, ByteBuffer buffer, int offset, List list, + String resType, int param1, int param2) { + if (Profile.isEnhancedEdition() && isEEEx()) { + list.add(new StringRef(buffer, offset, EFFECT_OVERRIDE_STRREF)); + return offset + 4; + } else { + return super.makeEffectSpecial(parent, buffer, offset, list, resType, param1, param2); + } + } +} diff --git a/src/org/infinity/resource/effects/Opcode325.java b/src/org/infinity/resource/effects/Opcode325.java new file mode 100644 index 000000000..081e5ad27 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode325.java @@ -0,0 +1,44 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 325. + */ +public class Opcode325 extends BaseOpcode { + private static final String[] INC_TYPES_EE = { INC_TYPES[0], INC_TYPES[1], INC_TYPES[2], + "Increment instantaneously" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case EE: + return "All saving throws bonus"; + default: + return null; + } + } + + public Opcode325() { + super(325, getOpcodeName()); + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, INC_TYPES_EE)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode326.java b/src/org/infinity/resource/effects/Opcode326.java new file mode 100644 index 000000000..68bce8ae3 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode326.java @@ -0,0 +1,43 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.SpellProtType; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 326. + */ +public class Opcode326 extends BaseOpcode { + private static final String RES_TYPE = "SPL"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case EE: + return "Apply effects list"; + default: + return null; + } + } + + public Opcode326() { + super(326, getOpcodeName()); + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + final SpellProtType param2 = new SpellProtType(buffer, offset + 4, 4); + list.add(param2.createCreatureValueFromType(buffer, offset)); + list.add(param2); + return RES_TYPE; + } +} diff --git a/src/org/infinity/resource/effects/Opcode327.java b/src/org/infinity/resource/effects/Opcode327.java new file mode 100644 index 000000000..27d219bab --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode327.java @@ -0,0 +1,45 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 327. + */ +public class Opcode327 extends BaseOpcode { + private static final String EFFECT_TARGET = "Target"; + private static final String EFFECT_FX = "Effect"; + + private static final String[] TARGETS = { "Spell target", "Target point" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case EE: + return "Show visual effect"; + default: + return null; + } + } + + public Opcode327() { + super(327, getOpcodeName()); + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new Bitmap(buffer, offset, 4, EFFECT_TARGET, TARGETS)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_FX, VISUALS)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode328.java b/src/org/infinity/resource/effects/Opcode328.java new file mode 100644 index 000000000..0d63f6470 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode328.java @@ -0,0 +1,91 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.IdsBitmap; +import org.infinity.datatype.IsNumeric; +import org.infinity.datatype.UpdateListener; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.ResourceFactory; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 328. + */ +public class Opcode328 extends BaseOpcode { + private static final String EFFECT_STATE = "State"; + + private static final String[] MODES_EE = { "IWD mode", "IWD2 mode" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case EE: + return "Set spell state"; + default: + return null; + } + } + + public Opcode328() { + super(328, getOpcodeName()); + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + int ofsSpecial = offset + (isVersion1 ? 0x28 : 0x2c); + int special = buffer.getInt(ofsSpecial); + if (special == 1 && ResourceFactory.resourceExists("SPLSTATE.IDS")) { + // Initialize IWD2 mode + list.add(new IdsBitmap(buffer, offset + 4, 4, EFFECT_STATE, "SPLSTATE.IDS")); + } else { + // Initialize IWD1 mode + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_STATE, SPELL_STATES)); + } + return null; + } + + @Override + protected boolean update(AbstractStruct struct) throws Exception { + if (struct != null && Profile.isEnhancedEdition()) { + int special = ((IsNumeric)getEntry(struct, EffectEntry.IDX_SPECIAL)).getValue(); + if (special == 1 && ResourceFactory.resourceExists("SPLSTATE.IDS")) { + // Activate IWD2 mode + replaceEntry(struct, EffectEntry.IDX_PARAM2, EffectEntry.OFS_PARAM2, + new IdsBitmap(getEntryData(struct, EffectEntry.IDX_PARAM2), 0, 4, EFFECT_STATE, "SPLSTATE.IDS")); + } else { + // Activate IWD1 mode + replaceEntry(struct, EffectEntry.IDX_PARAM2, EffectEntry.OFS_PARAM2, + new Bitmap(getEntryData(struct, EffectEntry.IDX_PARAM2), 0, 4, EFFECT_STATE, SPELL_STATES)); + } + return true; + } + return false; + } + + @Override + protected int makeEffectSpecial(Datatype parent, ByteBuffer buffer, int offset, List list, + String resType, int param1, int param2) { + if (Profile.isEnhancedEdition()) { + final Bitmap bmp = new Bitmap(buffer, offset, 4, EFFECT_MODE, MODES_EE); + list.add(bmp); + if (parent != null && parent instanceof UpdateListener) { + bmp.addUpdateListener((UpdateListener)parent); + } + return offset + 4; + } else { + return super.makeEffectSpecial(parent, buffer, offset, list, resType, param1, param2); + } + } +} diff --git a/src/org/infinity/resource/effects/Opcode329.java b/src/org/infinity/resource/effects/Opcode329.java new file mode 100644 index 000000000..1fb4cd5e7 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode329.java @@ -0,0 +1,41 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 329. + */ +public class Opcode329 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case EE: + return "Slow poison"; + default: + return null; + } + } + + public Opcode329() { + super(329, getOpcodeName()); + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_AMOUNT)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode330.java b/src/org/infinity/resource/effects/Opcode330.java new file mode 100644 index 000000000..4801cbc2b --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode330.java @@ -0,0 +1,45 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.StringRef; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 330. + */ +public class Opcode330 extends BaseOpcode { + private static final String EFFECT_DISPLAY_TYPE = "Display type"; + + private static final String[] DISPLAY_TYPES = { "String reference", "Cynicism" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case EE: + return "Float text"; + default: + return null; + } + } + + public Opcode330() { + super(330, getOpcodeName()); + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new StringRef(buffer, offset, EFFECT_STRING)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_DISPLAY_TYPE, DISPLAY_TYPES)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode331.java b/src/org/infinity/resource/effects/Opcode331.java new file mode 100644 index 000000000..4a1483933 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode331.java @@ -0,0 +1,60 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.Summon2daBitmap; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 331. + */ +public class Opcode331 extends BaseOpcode { + private static final String EFFECT_NUM_CREATURES = "# creatures"; + private static final String EFFECT_2DA_REFERENCE = "2DA reference"; + + private static final String RES_TYPE = "2DA"; + + private static final String[] MODES_EE = { "Use dice", "Use dice", "Use caster level" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case EE: + return "Summon creatures 2"; + default: + return null; + } + } + + public Opcode331() { + super(331, getOpcodeName()); + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_NUM_CREATURES)); + list.add(new Summon2daBitmap(buffer, offset + 4, 4, EFFECT_2DA_REFERENCE)); + return RES_TYPE; + } + + @Override + protected int makeEffectSpecial(Datatype parent, ByteBuffer buffer, int offset, List list, + String resType, int param1, int param2) { + if (Profile.isEnhancedEdition()) { + list.add(new Bitmap(buffer, offset, 4, EFFECT_MODE, MODES_EE)); + return offset + 4; + } else { + return super.makeEffectSpecial(parent, buffer, offset, list, resType, param1, param2); + } + } +} diff --git a/src/org/infinity/resource/effects/Opcode332.java b/src/org/infinity/resource/effects/Opcode332.java new file mode 100644 index 000000000..071e80640 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode332.java @@ -0,0 +1,43 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 332. + */ +public class Opcode332 extends BaseOpcode { + private static final String EFFECT_DAMAGE_TYPE = "Damage type"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case EE: + return "Attack damage type bonus"; + default: + return null; + } + } + + public Opcode332() { + super(332, getOpcodeName()); + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_DAMAGE_TYPE, DAMAGE_TYPES)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode333.java b/src/org/infinity/resource/effects/Opcode333.java new file mode 100644 index 000000000..7cc79d480 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode333.java @@ -0,0 +1,57 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 333. + */ +public class Opcode333 extends BaseOpcode { + private static final String EFFECT_NUM_HITS = "# hits"; + private static final String EFFECT_CAST_AT_LEVEL = "Cast at level"; + private static final String EFFECT_DELAY = "Delay"; + + private static final String RES_TYPE = "SPL"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case EE: + return "Static charge"; + default: + return null; + } + } + + public Opcode333() { + super(333, getOpcodeName()); + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_NUM_HITS)); + list.add(new DecNumber(buffer, offset + 4, 4, EFFECT_CAST_AT_LEVEL)); + return RES_TYPE; + } + + @Override + protected int makeEffectSpecial(Datatype parent, ByteBuffer buffer, int offset, List list, + String resType, int param1, int param2) { + if (Profile.isEnhancedEdition()) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_DELAY)); + return offset + 4; + } else { + return super.makeEffectSpecial(parent, buffer, offset, list, resType, param1, param2); + } + } +} diff --git a/src/org/infinity/resource/effects/Opcode334.java b/src/org/infinity/resource/effects/Opcode334.java new file mode 100644 index 000000000..37a1dcce6 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode334.java @@ -0,0 +1,41 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 334. + */ +public class Opcode334 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case EE: + return "Turn undead"; + default: + return null; + } + } + + public Opcode334() { + super(334, getOpcodeName()); + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode335.java b/src/org/infinity/resource/effects/Opcode335.java new file mode 100644 index 000000000..3b67b20f8 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode335.java @@ -0,0 +1,58 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.IdsBitmap; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 335. + */ +public class Opcode335 extends BaseOpcode { + private static final String EFFECT_STATE = "State"; + private static final String EFFECT_IDENTIFIER = "Identifier"; + private static final String EFFECT_EYE_GROUP = "Eye group"; + + private static final String RES_TYPE = "SPL"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case EE: + return "Seven eyes"; + default: + return null; + } + } + + public Opcode335() { + super(335, getOpcodeName()); + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new IdsBitmap(buffer, offset, 4, EFFECT_STATE, "SPLSTATE.IDS")); + list.add(new DecNumber(buffer, offset + 4, 4, EFFECT_IDENTIFIER)); + return RES_TYPE; + } + + @Override + protected int makeEffectSpecial(Datatype parent, ByteBuffer buffer, int offset, List list, + String resType, int param1, int param2) { + if (Profile.isEnhancedEdition()) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_EYE_GROUP)); + return offset + 4; + } else { + return super.makeEffectSpecial(parent, buffer, offset, list, resType, param1, param2); + } + } +} diff --git a/src/org/infinity/resource/effects/Opcode336.java b/src/org/infinity/resource/effects/Opcode336.java new file mode 100644 index 000000000..0f7ca5baf --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode336.java @@ -0,0 +1,54 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 336. + */ +public class Opcode336 extends BaseOpcode { + private static final String EFFECT_LAST_LETTER = "Last VVC letter"; + + private static final String RES_TYPE = "VVC"; + + private static final String[] LETTERS = new String['Z' - 'A' + 2]; + + static { + LETTERS[0] = "None"; + for (char ch = 'A'; ch <= 'Z'; ch++) { + LETTERS[ch - 'A' + 1] = Character.toString(ch); + } + } + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case EE: + return "Seven eyes overlay"; + default: + return null; + } + } + + public Opcode336() { + super(336, getOpcodeName()); + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new Bitmap(buffer, offset, 4, EFFECT_LAST_LETTER, LETTERS)); + list.add(new DecNumber(buffer, offset + 4, 4, EFFECT_TYPE)); + return RES_TYPE; + } +} diff --git a/src/org/infinity/resource/effects/Opcode337.java b/src/org/infinity/resource/effects/Opcode337.java new file mode 100644 index 000000000..b6d6c002a --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode337.java @@ -0,0 +1,44 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 337. + */ +public class Opcode337 extends BaseOpcode { + private static final String EFFECT_MATCH_P2_VALUE = "Match 'Parameter 2' value"; + private static final String EFFECT_FX = "Effect"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case EE: + return "Remove effects by opcode"; + default: + return null; + } + } + + public Opcode337() { + super(337, getOpcodeName()); + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_MATCH_P2_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_FX, getEffectNames())); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode338.java b/src/org/infinity/resource/effects/Opcode338.java new file mode 100644 index 000000000..cc13199c4 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode338.java @@ -0,0 +1,45 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.StringRef; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 338. + */ +public class Opcode338 extends BaseOpcode { + private static final String EFFECT_MESSAGE = "Message"; + + private static final String[] MODES = { "Cannot rest", "Cannot save", "Cannot rest or save" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case EE: + return "Disable rest or save"; + default: + return null; + } + } + + public Opcode338() { + super(338, getOpcodeName()); + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new StringRef(buffer, offset, EFFECT_MESSAGE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODE, MODES)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode339.java b/src/org/infinity/resource/effects/Opcode339.java new file mode 100644 index 000000000..eaba33ef9 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode339.java @@ -0,0 +1,59 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.ProRef; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 339. + */ +public class Opcode339 extends BaseOpcode { + private static final String EFFECT_PROJECTILE = "Projectile"; + private static final String EFFECT_RANGE = "Range"; + + private static final String[] MODES = { "Set value", "AND value", "OR value", "XOR value", "AND NOT value" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case EE: + return "Alter visual animation effect"; + default: + return null; + } + } + + public Opcode339() { + super(339, getOpcodeName()); + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new Bitmap(buffer, offset, 2, EFFECT_MODIFIER_TYPE, MODES)); + list.add(new DecNumber(buffer, offset + 2, 2, EFFECT_VALUE)); + list.add(new ProRef(buffer, offset + 4, 4, EFFECT_PROJECTILE)); + return RES_TYPE_STRING; + } + + @Override + protected int makeEffectSpecial(Datatype parent, ByteBuffer buffer, int offset, List list, + String resType, int param1, int param2) { + if (Profile.isEnhancedEdition()) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_RANGE)); + return offset + 4; + } else { + return super.makeEffectSpecial(parent, buffer, offset, list, resType, param1, param2); + } + } +} diff --git a/src/org/infinity/resource/effects/Opcode340.java b/src/org/infinity/resource/effects/Opcode340.java new file mode 100644 index 000000000..862b4aa2c --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode340.java @@ -0,0 +1,43 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 340. + */ +public class Opcode340 extends BaseOpcode { + private static final String RES_TYPE = "SPL"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case EE: + return "Backstab hit effect"; + default: + return null; + } + } + + public Opcode340() { + super(340, getOpcodeName()); + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return RES_TYPE; + } +} diff --git a/src/org/infinity/resource/effects/Opcode341.java b/src/org/infinity/resource/effects/Opcode341.java new file mode 100644 index 000000000..0b7ebb3e5 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode341.java @@ -0,0 +1,62 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 341. + */ +public class Opcode341 extends BaseOpcode { + private static final String EFFECT_CONDITION = "Condition"; + private static final String EFFECT_ATTACK_TYPE = "Attack type"; + + private static final String RES_TYPE = "SPL"; + + private static final String[] CONDITIONS = { "Always", "By this weapon only" }; + private static final String[] ATTACK_TYPES_EE = { "Any attack type", "Melee attack only", "Ranged attack only", + "Magical attack only" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case EE: + return "Critical hit effect"; + default: + return null; + } + } + + public Opcode341() { + super(341, getOpcodeName()); + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_CONDITION, CONDITIONS)); + return RES_TYPE; + } + + @Override + protected int makeEffectSpecial(Datatype parent, ByteBuffer buffer, int offset, List list, + String resType, int param1, int param2) { + if (Profile.isEnhancedEdition()) { + list.add(new Bitmap(buffer, offset, 4, EFFECT_ATTACK_TYPE, ATTACK_TYPES_EE)); + return offset + 4; + } else { + return super.makeEffectSpecial(parent, buffer, offset, list, resType, param1, param2); + } + } +} diff --git a/src/org/infinity/resource/effects/Opcode342.java b/src/org/infinity/resource/effects/Opcode342.java new file mode 100644 index 000000000..e6c9ba4f2 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode342.java @@ -0,0 +1,85 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.ColorValue; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.IsNumeric; +import org.infinity.datatype.UpdateListener; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 342. + */ +public class Opcode342 extends BaseOpcode { + private static final String EFFECT_FIELD = "Field"; + private static final String EFFECT_ENABLED = "Enabled?"; + + private static final String[] FIELDS = {"Unknown", "Body heat", "Blood color", "Unknown", "Personal space"}; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case EE: + return "Override creature data"; + default: + return null; + } + } + + public Opcode342() { + super(342, getOpcodeName()); + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + final Bitmap bmp = new Bitmap(buffer, offset + 4, 4, EFFECT_FIELD, FIELDS); + switch (bmp.getValue()) { + case 1: + list.add(new Bitmap(buffer, offset, 4, EFFECT_ENABLED, AbstractStruct.OPTION_NOYES)); + break; + case 2: + list.add(new ColorValue(buffer, offset, 4, EFFECT_COLOR, false)); + break; + default: + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + } + list.add(bmp); + if (parent != null && parent instanceof UpdateListener) { + bmp.addUpdateListener((UpdateListener)parent); + } + return null; + } + + @Override + protected boolean update(AbstractStruct struct) throws Exception { + if (struct != null && Profile.isEnhancedEdition()) { + int param2 = ((IsNumeric)getEntry(struct, EffectEntry.IDX_PARAM2)).getValue(); + StructEntry newEntry = null; + switch (param2) { + case 1: + newEntry = new Bitmap(getEntryData(struct, EffectEntry.IDX_PARAM1), 0, 4, EFFECT_ENABLED, + AbstractStruct.OPTION_NOYES); + break; + case 2: + newEntry = new ColorValue(getEntryData(struct, EffectEntry.IDX_PARAM1), 0, 4, EFFECT_COLOR, false); + break; + default: + newEntry = new DecNumber(getEntryData(struct, EffectEntry.IDX_PARAM1), 0, 4, EFFECT_VALUE); + } + replaceEntry(struct, EffectEntry.IDX_PARAM1, EffectEntry.OFS_PARAM1, newEntry); + return true; + } + return false; + } +} diff --git a/src/org/infinity/resource/effects/Opcode343.java b/src/org/infinity/resource/effects/Opcode343.java new file mode 100644 index 000000000..fc4ea1b8a --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode343.java @@ -0,0 +1,44 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 343. + */ +public class Opcode343 extends BaseOpcode { + private static final String[] MODES = { "Swap if caster HP > target HP", "Always swap" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case EE: + return "HP swap"; + default: + return null; + } + } + + public Opcode343() { + super(343, getOpcodeName()); + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODE, MODES)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode344.java b/src/org/infinity/resource/effects/Opcode344.java new file mode 100644 index 000000000..9ccb6c1d0 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode344.java @@ -0,0 +1,55 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.IdsTargetType; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 344. + */ +public class Opcode344 extends BaseOpcode { + private static final String EFFECT_ENCHANTMENT = "Enchantment"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case EE: + return "Enchantment vs. creature type"; + default: + return null; + } + } + + public Opcode344() { + super(344, getOpcodeName()); + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + final IdsTargetType param2 = new IdsTargetType(buffer, offset + 4); + list.add(param2.createIdsValueFromType(buffer)); + list.add(param2); + return null; + } + + @Override + protected int makeEffectSpecial(Datatype parent, ByteBuffer buffer, int offset, List list, + String resType, int param1, int param2) { + if (Profile.isEnhancedEdition()) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_ENCHANTMENT)); + return offset + 4; + } else { + return super.makeEffectSpecial(parent, buffer, offset, list, resType, param1, param2); + } + } +} diff --git a/src/org/infinity/resource/effects/Opcode345.java b/src/org/infinity/resource/effects/Opcode345.java new file mode 100644 index 000000000..31b0b60fa --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode345.java @@ -0,0 +1,64 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 345. + */ +public class Opcode345 extends BaseOpcode { + private static final String EFFECT_ENCHANTMENT = "Enchantment"; + private static final String EFFECT_ITEM_TYPE = "Item type"; + private static final String EFFECT_WEAPON_SLOT = "Weapon slot"; + + + private static final String[] ITEM_TYPES = { "Magical weapons (<= 'Enchantment')", "Magical weapons (all)", + "Non-magical weapons", "Silver", "Non-silver", "Non-silver/non-magical", "Two-Handed", "Non-two-handed", "Cursed", + "Non-cursed", "Cold iron", "Non-cold iron" }; + + private static final String[] WEAPON_SLOTS_EE = { "Current weapon", "Main hand weapon", "Off-hand weapon", + "Both weapons" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case EE: + return "Enchantment bonus"; + default: + return null; + } + } + + public Opcode345() { + super(345, getOpcodeName()); + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_ENCHANTMENT)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_ITEM_TYPE, ITEM_TYPES)); + return null; + } + + @Override + protected int makeEffectSpecial(Datatype parent, ByteBuffer buffer, int offset, List list, + String resType, int param1, int param2) { + if (Profile.isEnhancedEdition()) { + list.add(new Bitmap(buffer, offset, 4, EFFECT_WEAPON_SLOT, WEAPON_SLOTS_EE)); + return offset + 4; + } else { + return super.makeEffectSpecial(parent, buffer, offset, list, resType, param1, param2); + } + } +} diff --git a/src/org/infinity/resource/effects/Opcode346.java b/src/org/infinity/resource/effects/Opcode346.java new file mode 100644 index 000000000..d748f47ad --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode346.java @@ -0,0 +1,55 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.PriTypeBitmap; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 346. + */ +public class Opcode346 extends BaseOpcode { + private static final String EFFECT_SCHOOL_OF_MAGIC = "School of magic"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case EE: + return "Save vs. school bonus"; + default: + return null; + } + } + + public Opcode346() { + super(346, getOpcodeName()); + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, INC_TYPES)); + return null; + } + + @Override + protected int makeEffectSpecial(Datatype parent, ByteBuffer buffer, int offset, List list, + String resType, int param1, int param2) { + if (Profile.isEnhancedEdition()) { + list.add(new PriTypeBitmap(buffer, offset, 4, EFFECT_SCHOOL_OF_MAGIC)); + return offset + 4; + } else { + return super.makeEffectSpecial(parent, buffer, offset, list, resType, param1, param2); + } + } +} diff --git a/src/org/infinity/resource/effects/Opcode347.java b/src/org/infinity/resource/effects/Opcode347.java new file mode 100644 index 000000000..a7d688bfc --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode347.java @@ -0,0 +1,49 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 347. + */ +public class Opcode347 extends BaseOpcode { + private static final String EFFECT_SCROLL_SPEED = "Scroll speed"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case EE: + if (Profile.getGame() == Profile.Game.PSTEE) { + return "Move view to target"; + } + default: + return null; + } + } + + public Opcode347() { + super(347, getOpcodeName()); + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + if (Profile.getGame() == Profile.Game.PSTEE) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_SCROLL_SPEED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } else { + return super.makeEffectParamsEE(parent, buffer, offset, list, isVersion1); + } + } +} diff --git a/src/org/infinity/resource/effects/Opcode352.java b/src/org/infinity/resource/effects/Opcode352.java new file mode 100644 index 000000000..56f1bc074 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode352.java @@ -0,0 +1,49 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 352. + */ +public class Opcode352 extends BaseOpcode { + private static final String RES_TYPE = "BMP"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case EE: + if (Profile.getGame() == Profile.Game.PSTEE) { + return "Change Background"; + } + default: + return null; + } + } + + public Opcode352() { + super(352, getOpcodeName()); + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + if (Profile.getGame() == Profile.Game.PSTEE) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return RES_TYPE; + } else { + return super.makeEffectParamsEE(parent, buffer, offset, list, isVersion1); + } + } +} diff --git a/src/org/infinity/resource/effects/Opcode353.java b/src/org/infinity/resource/effects/Opcode353.java new file mode 100644 index 000000000..65f5a4501 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode353.java @@ -0,0 +1,68 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; +import java.util.TreeMap; + +import org.infinity.datatype.ColorPicker; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.HashBitmap; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 353. + */ +public class Opcode353 extends BaseOpcode { + private static final String EFFECT_METHOD = "Method"; + + private static final TreeMap METHODS_MAP = new TreeMap<>(); + + // TODO: verify list of methods + static { + METHODS_MAP.put(0L, "No effect"); + METHODS_MAP.put(1L, "No effect"); + METHODS_MAP.put(2L, "No effect"); + METHODS_MAP.put(3L, "No effect"); + METHODS_MAP.put(4L, "Instant color (duration)"); + METHODS_MAP.put(5L, "Instant color (duration)"); + METHODS_MAP.put(6L, "Instant color (duration)"); + METHODS_MAP.put(7L, "Instant color (duration)"); + METHODS_MAP.put(8L, "No effect"); + METHODS_MAP.put(9L, "Instant inverted color (duration)"); + METHODS_MAP.put(10L, "Instant black (duration)"); + METHODS_MAP.put(101L, "Instant color (duration)"); + } + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case EE: + if (Profile.getGame() == Profile.Game.PSTEE) { + return "Tint screen"; + } + default: + return null; + } + } + + public Opcode353() { + super(353, getOpcodeName()); + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + if (Profile.getGame() == Profile.Game.PSTEE) { + list.add(new ColorPicker(buffer, offset, EFFECT_COLOR, ColorPicker.Format.RGBX)); + list.add(new HashBitmap(buffer, offset + 4, 4, EFFECT_METHOD, METHODS_MAP, false)); + return null; + } else { + return super.makeEffectParamsEE(parent, buffer, offset, list, isVersion1); + } + } +} diff --git a/src/org/infinity/resource/effects/Opcode354.java b/src/org/infinity/resource/effects/Opcode354.java new file mode 100644 index 000000000..0efea23df --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode354.java @@ -0,0 +1,47 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 354. + */ +public class Opcode354 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case EE: + if (Profile.getGame() == Profile.Game.PSTEE) { + return "Flash screen"; + } + default: + return null; + } + } + + public Opcode354() { + super(354, getOpcodeName()); + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + if (Profile.getGame() == Profile.Game.PSTEE) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } else { + return super.makeEffectParamsEE(parent, buffer, offset, list, isVersion1); + } + } +} diff --git a/src/org/infinity/resource/effects/Opcode355.java b/src/org/infinity/resource/effects/Opcode355.java new file mode 100644 index 000000000..2d65a00d3 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode355.java @@ -0,0 +1,47 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 355. + */ +public class Opcode355 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case EE: + if (Profile.getGame() == Profile.Game.PSTEE) { + return "Soul exodus"; + } + default: + return null; + } + } + + public Opcode355() { + super(355, getOpcodeName()); + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + if (Profile.getGame() == Profile.Game.PSTEE) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } else { + return super.makeEffectParamsEE(parent, buffer, offset, list, isVersion1); + } + } +} diff --git a/src/org/infinity/resource/effects/Opcode356.java b/src/org/infinity/resource/effects/Opcode356.java new file mode 100644 index 000000000..3d865f6f8 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode356.java @@ -0,0 +1,50 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 356. + */ +public class Opcode356 extends BaseOpcode { + private static final String[] MODES = { "Pause actions", "Unpause actions" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case EE: + if (Profile.getGame() == Profile.Game.PSTEE) { + return "Stop all actions"; + } + default: + return null; + } + } + + public Opcode356() { + super(356, getOpcodeName()); + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + if (Profile.getGame() == Profile.Game.PSTEE) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODE, MODES)); + return null; + } else { + return super.makeEffectParamsEE(parent, buffer, offset, list, isVersion1); + } + } +} diff --git a/src/org/infinity/resource/effects/Opcode357.java b/src/org/infinity/resource/effects/Opcode357.java new file mode 100644 index 000000000..b8007970d --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode357.java @@ -0,0 +1,52 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.IdsFlag; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 357. + */ +public class Opcode357 extends BaseOpcode { + private static final String EFFECT_ACTION = "Action"; + private static final String EFFECT_STATE = "State"; + + private static final String[] ACTIONS = { "Clear", "Set" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case EE: + if (Profile.getGame() == Profile.Game.PSTEE) { + return "Set state"; + } + default: + return null; + } + } + + public Opcode357() { + super(357, getOpcodeName()); + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + if (Profile.getGame() == Profile.Game.PSTEE) { + list.add(new Bitmap(buffer, offset, 4, EFFECT_ACTION, ACTIONS)); + list.add(new IdsFlag(buffer, offset + 4, 4, EFFECT_STATE, "STATE.IDS")); + return null; + } else { + return super.makeEffectParamsEE(parent, buffer, offset, list, isVersion1); + } + } +} diff --git a/src/org/infinity/resource/effects/Opcode358.java b/src/org/infinity/resource/effects/Opcode358.java new file mode 100644 index 000000000..ae360f1a9 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode358.java @@ -0,0 +1,47 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 358. + */ +public class Opcode358 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case EE: + if (Profile.getGame() == Profile.Game.PSTEE) { + return "Incite berserk attack"; + } + default: + return null; + } + } + + public Opcode358() { + super(358, getOpcodeName()); + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + if (Profile.getGame() == Profile.Game.PSTEE) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } else { + return super.makeEffectParamsEE(parent, buffer, offset, list, isVersion1); + } + } +} diff --git a/src/org/infinity/resource/effects/Opcode360.java b/src/org/infinity/resource/effects/Opcode360.java new file mode 100644 index 000000000..d848ce365 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode360.java @@ -0,0 +1,41 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 360. + */ +public class Opcode360 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case EE: + return "Ignore reputation breaking point"; + default: + return null; + } + } + + public Opcode360() { + super(360, getOpcodeName()); + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode361.java b/src/org/infinity/resource/effects/Opcode361.java new file mode 100644 index 000000000..bf8ead6b6 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode361.java @@ -0,0 +1,61 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 361. + */ +public class Opcode361 extends BaseOpcode { + private static final String EFFECT_CURRENT_WEAPON = "Current weapon only?"; + private static final String EFFECT_ATTACK_TYPE = "Attack type"; + + private static final String RES_TYPE = "SPL"; + + private static final String[] ATTACK_TYPES_EE = { "Any attack type", "Melee attack only", "Ranged attack only", + "Magical attack only" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case EE: + return "Cast spell on critical miss"; + default: + return null; + } + } + + public Opcode361() { + super(361, getOpcodeName()); + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_CURRENT_WEAPON, AbstractStruct.OPTION_NOYES)); + return RES_TYPE; + } + + @Override + protected int makeEffectSpecial(Datatype parent, ByteBuffer buffer, int offset, List list, + String resType, int param1, int param2) { + if (Profile.isEnhancedEdition()) { + list.add(new Bitmap(buffer, offset, 4, EFFECT_ATTACK_TYPE, ATTACK_TYPES_EE)); + return offset + 4; + } else { + return super.makeEffectSpecial(parent, buffer, offset, list, resType, param1, param2); + } + } +} diff --git a/src/org/infinity/resource/effects/Opcode362.java b/src/org/infinity/resource/effects/Opcode362.java new file mode 100644 index 000000000..1cc948dc7 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode362.java @@ -0,0 +1,59 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 362. + */ +public class Opcode362 extends BaseOpcode { + private static final String EFFECT_CURRENT_WEAPON = "Current weapon only?"; + private static final String EFFECT_ATTACK_TYPE = "Attack type"; + + private static final String[] ATTACK_TYPES_EE = { "Any attack type", "Melee attack only", "Ranged attack only", + "Magical attack only" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case EE: + return "Critical miss bonus"; + default: + return null; + } + } + + public Opcode362() { + super(362, getOpcodeName()); + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_CURRENT_WEAPON, AbstractStruct.OPTION_NOYES)); + return null; + } + + @Override + protected int makeEffectSpecial(Datatype parent, ByteBuffer buffer, int offset, List list, + String resType, int param1, int param2) { + if (Profile.isEnhancedEdition()) { + list.add(new Bitmap(buffer, offset, 4, EFFECT_ATTACK_TYPE, ATTACK_TYPES_EE)); + return offset + 4; + } else { + return super.makeEffectSpecial(parent, buffer, offset, list, resType, param1, param2); + } + } +} diff --git a/src/org/infinity/resource/effects/Opcode363.java b/src/org/infinity/resource/effects/Opcode363.java new file mode 100644 index 000000000..3a23391c5 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode363.java @@ -0,0 +1,55 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.IdsBitmap; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 363. + */ +public class Opcode363 extends BaseOpcode { + private static final String EFFECT_MODAL_TO_CHECK = "Modal state to check"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case EE: + return "Movement check"; + default: + return null; + } + } + + public Opcode363() { + super(363, getOpcodeName()); + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected int makeEffectSpecial(Datatype parent, ByteBuffer buffer, int offset, List list, + String resType, int param1, int param2) { + if (Profile.isEnhancedEdition()) { + list.add(new IdsBitmap(buffer, offset, 4, EFFECT_MODAL_TO_CHECK, "MODAL.IDS")); + return offset + 4; + } else { + return super.makeEffectSpecial(parent, buffer, offset, list, resType, param1, param2); + } + } +} diff --git a/src/org/infinity/resource/effects/Opcode365.java b/src/org/infinity/resource/effects/Opcode365.java new file mode 100644 index 000000000..18625e053 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode365.java @@ -0,0 +1,56 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 365. + */ +public class Opcode365 extends BaseOpcode { + private static final String EFFECT_DISABLE_DIALOG = "Disable dialogue?"; + private static final String EFFECT_DISABLE_AI = "Disable AI?"; + private static final String EFFECT_USE_PURPLE_SELECTION = "Use purple selection color?"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case EE: + return "Make unselectable"; + default: + return null; + } + } + + public Opcode365() { + super(365, getOpcodeName()); + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new Bitmap(buffer, offset, 4, EFFECT_DISABLE_DIALOG, AbstractStruct.OPTION_YESNO)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_DISABLE_AI, AbstractStruct.OPTION_YESNO)); + return null; + } + + @Override + protected int makeEffectSpecial(Datatype parent, ByteBuffer buffer, int offset, List list, + String resType, int param1, int param2) { + if (Profile.isEnhancedEdition()) { + list.add(new Bitmap(buffer, offset, 4, EFFECT_USE_PURPLE_SELECTION, AbstractStruct.OPTION_YESNO)); + return offset + 4; + } else { + return super.makeEffectSpecial(parent, buffer, offset, list, resType, param1, param2); + } + } +} diff --git a/src/org/infinity/resource/effects/Opcode366.java b/src/org/infinity/resource/effects/Opcode366.java new file mode 100644 index 000000000..9754890c7 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode366.java @@ -0,0 +1,57 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.IdsBitmap; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 366. + */ +public class Opcode366 extends BaseOpcode { + private static final String EFFECT_MODAL_TO_CHECK = "Modal state to check"; + + private static final String RES_TYPE = "SPL"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case EE: + return "Apply spell on movement"; + default: + return null; + } + } + + public Opcode366() { + super(366, getOpcodeName()); + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return RES_TYPE; + } + + @Override + protected int makeEffectSpecial(Datatype parent, ByteBuffer buffer, int offset, List list, + String resType, int param1, int param2) { + if (Profile.isEnhancedEdition()) { + list.add(new IdsBitmap(buffer, offset, 4, EFFECT_MODAL_TO_CHECK, "MODAL.IDS")); + return offset + 4; + } else { + return super.makeEffectSpecial(parent, buffer, offset, list, resType, param1, param2); + } + } +} diff --git a/src/org/infinity/resource/effects/Opcode367.java b/src/org/infinity/resource/effects/Opcode367.java new file mode 100644 index 000000000..ef52a92af --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode367.java @@ -0,0 +1,44 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 367. + */ +public class Opcode367 extends BaseOpcode { + private static final String EFFECT_ENABLED = "Enabled?"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case EE: + return "Minimum base stats"; + default: + return null; + } + } + + public Opcode367() { + super(367, getOpcodeName()); + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_ENABLED, AbstractStruct.OPTION_NOYES)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode368.java b/src/org/infinity/resource/effects/Opcode368.java new file mode 100644 index 000000000..48a742473 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode368.java @@ -0,0 +1,58 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.Flag; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 368. + */ +public class Opcode368 extends BaseOpcode { + private static final String EFFECT_FLAGS = "Flags"; + + private static final String RES_TYPE = "BAM"; + + private static final String[] FLAGS = { "Default", + null, null, null, null, null, null, "Blended", null, + null, null, null, null, null, null, null, null, + null, null, null, "Grayscale", null, "Bright", null, null, + "Hide background on movement", "Dream palette", null, "Garbled frames?", null, null, null, null }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case EE: + if (Profile.getGame() == Profile.Game.PSTEE) { + return "Play BAM with expiration effect"; + } + default: + return null; + } + } + + public Opcode368() { + super(368, getOpcodeName()); + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + if (Profile.getGame() == Profile.Game.PSTEE) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNKNOWN)); + list.add(new Flag(buffer, offset + 4, 4, EFFECT_FLAGS, FLAGS)); + return RES_TYPE; + } else { + return super.makeEffectParamsEE(parent, buffer, offset, list, isVersion1); + } + } +} diff --git a/src/org/infinity/resource/effects/Opcode369.java b/src/org/infinity/resource/effects/Opcode369.java new file mode 100644 index 000000000..d8cb6905f --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode369.java @@ -0,0 +1,53 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.ColorPicker; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.Flag; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 369. + */ +public class Opcode369 extends BaseOpcode { + private static final String EFFECT_METHOD = "Method"; + + private static final String RES_TYPE = "BAM"; + + private static final String[] METHODS = { "Default", "Repeat animation", "Remove stickiness" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case EE: + if (Profile.getGame() == Profile.Game.PSTEE) { + return "Play BAM file (blended/sticky)"; + } + default: + return null; + } + } + + public Opcode369() { + super(369, getOpcodeName()); + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + if (Profile.getGame() == Profile.Game.PSTEE) { + list.add(new ColorPicker(buffer, offset, EFFECT_COLOR, ColorPicker.Format.RGBX)); + list.add(new Flag(buffer, offset + 4, 4, EFFECT_METHOD, METHODS)); + return RES_TYPE; + } else { + return super.makeEffectParamsEE(parent, buffer, offset, list, isVersion1); + } + } +} diff --git a/src/org/infinity/resource/effects/Opcode370.java b/src/org/infinity/resource/effects/Opcode370.java new file mode 100644 index 000000000..523fb4be9 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode370.java @@ -0,0 +1,58 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.ColorPicker; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.Flag; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 370. + */ +public class Opcode370 extends BaseOpcode { + private static final String EFFECT_FLAGS = "Flags"; + + private static final String RES_TYPE = "BAM"; + + private static final String[] FLAGS = { null, + "Random placement", null, null, null, null, null, null, null, + null, null, null, null, "Sticky", null, null, null, + "Repeat;Only effective if bit 17 is set", "Foreground", null, null, + "Fade out;Duration defined by Dice Size, initial transparency defined by red color value. Effect changes if bit 21 is set.", + "Blended;Only if bit 20 is also set.", null, null }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case EE: + if (Profile.getGame() == Profile.Game.PSTEE) { + return "Play BAM file 1"; + } + default: + return null; + } + } + + public Opcode370() { + super(370, getOpcodeName()); + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + if (Profile.getGame() == Profile.Game.PSTEE) { + list.add(new ColorPicker(buffer, offset, EFFECT_COLOR, ColorPicker.Format.RGBX)); + list.add(new Flag(buffer, offset + 4, 4, EFFECT_FLAGS, FLAGS)); + return RES_TYPE; + } else { + return super.makeEffectParamsEE(parent, buffer, offset, list, isVersion1); + } + } +} diff --git a/src/org/infinity/resource/effects/Opcode371.java b/src/org/infinity/resource/effects/Opcode371.java new file mode 100644 index 000000000..ba233650e --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode371.java @@ -0,0 +1,58 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.ColorPicker; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.Flag; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 371. + */ +public class Opcode371 extends BaseOpcode { + private static final String EFFECT_FLAGS = "Flags"; + + private static final String RES_TYPE = "BAM"; + + private static final String[] FLAGS = { null, + "Random placement", null, null, null, null, null, null, null, + null, null, null, null, "Sticky", null, null, null, + "Repeat;Only effective if bit 17 is set", "Foreground", null, null, + "Fade out;Duration defined by Dice Size, initial transparency defined by red color value. Effect changes if bit 21 is set.", + "Blended;Only if bit 20 is also set.", null, null }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case EE: + if (Profile.getGame() == Profile.Game.PSTEE) { + return "Play BAM file 2"; + } + default: + return null; + } + } + + public Opcode371() { + super(371, getOpcodeName()); + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + if (Profile.getGame() == Profile.Game.PSTEE) { + list.add(new ColorPicker(buffer, offset, EFFECT_COLOR, ColorPicker.Format.RGBX)); + list.add(new Flag(buffer, offset + 4, 4, EFFECT_FLAGS, FLAGS)); + return RES_TYPE; + } else { + return super.makeEffectParamsEE(parent, buffer, offset, list, isVersion1); + } + } +} diff --git a/src/org/infinity/resource/effects/Opcode372.java b/src/org/infinity/resource/effects/Opcode372.java new file mode 100644 index 000000000..56c8a0092 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode372.java @@ -0,0 +1,58 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.ColorPicker; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.Flag; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 372. + */ +public class Opcode372 extends BaseOpcode { + private static final String EFFECT_FLAGS = "Flags"; + + private static final String RES_TYPE = "BAM"; + + private static final String[] FLAGS = { null, + "Random placement", null, null, null, null, null, null, null, + null, null, null, null, "Sticky", null, null, null, + "Repeat;Only effective if bit 17 is set", "Foreground", null, null, + "Fade out;Duration defined by Dice Size, initial transparency defined by red color value. Effect changes if bit 21 is set.", + "Blended;Only if bit 20 is also set.", null, null }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case EE: + if (Profile.getGame() == Profile.Game.PSTEE) { + return "Play BAM file 3"; + } + default: + return null; + } + } + + public Opcode372() { + super(372, getOpcodeName()); + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + if (Profile.getGame() == Profile.Game.PSTEE) { + list.add(new ColorPicker(buffer, offset, EFFECT_COLOR, ColorPicker.Format.RGBX)); + list.add(new Flag(buffer, offset + 4, 4, EFFECT_FLAGS, FLAGS)); + return RES_TYPE; + } else { + return super.makeEffectParamsEE(parent, buffer, offset, list, isVersion1); + } + } +} diff --git a/src/org/infinity/resource/effects/Opcode373.java b/src/org/infinity/resource/effects/Opcode373.java new file mode 100644 index 000000000..2f72920aa --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode373.java @@ -0,0 +1,58 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.ColorPicker; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.Flag; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 373. + */ +public class Opcode373 extends BaseOpcode { + private static final String EFFECT_FLAGS = "Flags"; + + private static final String RES_TYPE = "BAM"; + + private static final String[] FLAGS = { null, + "Random placement", null, null, null, null, null, null, null, + null, null, null, null, "Sticky", null, null, null, + "Repeat;Only effective if bit 17 is set", "Foreground", null, null, + "Fade out;Duration defined by Dice Size, initial transparency defined by red color value. Effect changes if bit 21 is set.", + "Blended;Only if bit 20 is also set.", null, null }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case EE: + if (Profile.getGame() == Profile.Game.PSTEE) { + return "Play BAM file 4"; + } + default: + return null; + } + } + + public Opcode373() { + super(373, getOpcodeName()); + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + if (Profile.getGame() == Profile.Game.PSTEE) { + list.add(new ColorPicker(buffer, offset, EFFECT_COLOR, ColorPicker.Format.RGBX)); + list.add(new Flag(buffer, offset + 4, 4, EFFECT_FLAGS, FLAGS)); + return RES_TYPE; + } else { + return super.makeEffectParamsEE(parent, buffer, offset, list, isVersion1); + } + } +} diff --git a/src/org/infinity/resource/effects/Opcode374.java b/src/org/infinity/resource/effects/Opcode374.java new file mode 100644 index 000000000..aef229f0b --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode374.java @@ -0,0 +1,52 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 374. + */ +public class Opcode374 extends BaseOpcode { + private static final String EFFECT_FX = "Effect"; + + private static final String[] EFFECTS = { "Adder's kiss", "Ball lightning", "Fizzle" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case EE: + if (Profile.getGame() == Profile.Game.PSTEE) { + return "Special spell hit"; + } + default: + return null; + } + } + + public Opcode374() { + super(374, getOpcodeName()); + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + if (Profile.getGame() == Profile.Game.PSTEE) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_FX, EFFECTS)); + return null; + } else { + return super.makeEffectParamsEE(parent, buffer, offset, list, isVersion1); + } + } +} diff --git a/src/org/infinity/resource/effects/Opcode375.java b/src/org/infinity/resource/effects/Opcode375.java new file mode 100644 index 000000000..68eab9751 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode375.java @@ -0,0 +1,56 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 375. + */ +public class Opcode375 extends BaseOpcode { + private static final String EFFECT_FX = "Effect"; + + private static final String RES_TYPE = "BAM"; + + private static final String[] EFFECTS = { "Cloak of warding", "Shield", "Black-barbed shield", "Pain mirror", + "Guardian mantle", "", "Enoll eva's duplication", "Armor", "Antimagic shell", "", "", "Flame walk", + "Protection from evil", "Conflagration", "Infernal shield", "Submerge the will", "Balance in all things" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case EE: + if (Profile.getGame() == Profile.Game.PSTEE) { + return "Play BAM with effects"; + } + default: + return null; + } + } + + public Opcode375() { + super(375, getOpcodeName()); + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + if (Profile.getGame() == Profile.Game.PSTEE) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_FX, EFFECTS)); + return RES_TYPE; + } else { + return super.makeEffectParamsEE(parent, buffer, offset, list, isVersion1); + } + } +} diff --git a/src/org/infinity/resource/effects/Opcode376.java b/src/org/infinity/resource/effects/Opcode376.java new file mode 100644 index 000000000..93688d5b5 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode376.java @@ -0,0 +1,47 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 376. + */ +public class Opcode376 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case EE: + if (Profile.getGame() == Profile.Game.PSTEE) { + return "Detect evil"; + } + default: + return null; + } + } + + public Opcode376() { + super(376, getOpcodeName()); + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + if (Profile.getGame() == Profile.Game.PSTEE) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } else { + return super.makeEffectParamsEE(parent, buffer, offset, list, isVersion1); + } + } +} diff --git a/src/org/infinity/resource/effects/Opcode378.java b/src/org/infinity/resource/effects/Opcode378.java new file mode 100644 index 000000000..63b5fb1dd --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode378.java @@ -0,0 +1,47 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 378. + */ +public class Opcode378 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case EE: + if (Profile.getGame() == Profile.Game.PSTEE) { + return "Prayer"; + } + default: + return null; + } + } + + public Opcode378() { + super(378, getOpcodeName()); + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + if (Profile.getGame() == Profile.Game.PSTEE) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_AMOUNT)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } else { + return super.makeEffectParamsEE(parent, buffer, offset, list, isVersion1); + } + } +} diff --git a/src/org/infinity/resource/effects/Opcode379.java b/src/org/infinity/resource/effects/Opcode379.java new file mode 100644 index 000000000..126418354 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode379.java @@ -0,0 +1,47 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 379. + */ +public class Opcode379 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case EE: + if (Profile.getGame() == Profile.Game.PSTEE) { + return "Curse"; + } + default: + return null; + } + } + + public Opcode379() { + super(379, getOpcodeName()); + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + if (Profile.getGame() == Profile.Game.PSTEE) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_AMOUNT)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } else { + return super.makeEffectParamsEE(parent, buffer, offset, list, isVersion1); + } + } +} diff --git a/src/org/infinity/resource/effects/Opcode380.java b/src/org/infinity/resource/effects/Opcode380.java new file mode 100644 index 000000000..e319f0bc7 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode380.java @@ -0,0 +1,52 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 380. + */ +public class Opcode380 extends BaseOpcode { + private static final String EFFECT_EMBALMING_TYPE = "Embalming type"; + + private static final String[] EMBALMING_TYPES = { "Normal", "Greater" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case EE: + if (Profile.getGame() == Profile.Game.PSTEE) { + return "Embalm"; + } + default: + return null; + } + } + + public Opcode380() { + super(380, getOpcodeName()); + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + if (Profile.getGame() == Profile.Game.PSTEE) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_EMBALMING_TYPE, EMBALMING_TYPES)); + return null; + } else { + return super.makeEffectParamsEE(parent, buffer, offset, list, isVersion1); + } + } +} diff --git a/src/org/infinity/resource/effects/Opcode381.java b/src/org/infinity/resource/effects/Opcode381.java new file mode 100644 index 000000000..202ea5f0e --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode381.java @@ -0,0 +1,47 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 381. + */ +public class Opcode381 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case EE: + if (Profile.getGame() == Profile.Game.PSTEE) { + return "Induce hiccups"; + } + default: + return null; + } + } + + public Opcode381() { + super(381, getOpcodeName()); + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + if (Profile.getGame() == Profile.Game.PSTEE) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } else { + return super.makeEffectParamsEE(parent, buffer, offset, list, isVersion1); + } + } +} diff --git a/src/org/infinity/resource/effects/Opcode382.java b/src/org/infinity/resource/effects/Opcode382.java new file mode 100644 index 000000000..28fcdd48f --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode382.java @@ -0,0 +1,47 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 382. + */ +public class Opcode382 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case EE: + if (Profile.getGame() == Profile.Game.PSTEE) { + return "Fist of iron"; + } + default: + return null; + } + } + + public Opcode382() { + super(382, getOpcodeName()); + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + if (Profile.getGame() == Profile.Game.PSTEE) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } else { + return super.makeEffectParamsEE(parent, buffer, offset, list, isVersion1); + } + } +} diff --git a/src/org/infinity/resource/effects/Opcode383.java b/src/org/infinity/resource/effects/Opcode383.java new file mode 100644 index 000000000..090a9e729 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode383.java @@ -0,0 +1,55 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.IdsBitmap; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 383. + */ +public class Opcode383 extends BaseOpcode { + private static final String EFFECT_DIRECTION = "Direction"; + private static final String EFFECT_DAMAGE_TYPE = "Damage type"; + + private static final String[] DIRECTIONS = { "Source to target", "Target to source", "Swap HP", + "Source to target even over max. HP" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case EE: + if (Profile.getGame() == Profile.Game.PSTEE) { + return "Hit point transfer"; + } + default: + return null; + } + } + + public Opcode383() { + super(383, getOpcodeName()); + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + if (Profile.getGame() == Profile.Game.PSTEE) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_AMOUNT)); + list.add(new Bitmap(buffer, offset + 4, 2, EFFECT_DIRECTION, DIRECTIONS)); + list.add(new IdsBitmap(buffer, offset + 6, 2, EFFECT_DAMAGE_TYPE, "DAMAGES.IDS")); + return null; + } else { + return super.makeEffectParamsEE(parent, buffer, offset, list, isVersion1); + } + } +} diff --git a/src/org/infinity/resource/effects/Opcode400.java b/src/org/infinity/resource/effects/Opcode400.java new file mode 100644 index 000000000..34225bfa3 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode400.java @@ -0,0 +1,62 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.IdsBitmap; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 400. + */ +public class Opcode400 extends BaseOpcode { + private static final String EFFECT_SCRIPT_LEVEL = "Script level"; + + private static final String RES_TYPE = "BCS"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case IWD2: + return "Hopelessness"; + case EE: + if (isEEEx()) { + return "EEex: Set Temporary AI Script"; + } + default: + return null; + } + } + + public Opcode400() { + super(400, getOpcodeName()); + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + if (isEEEx()) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new IdsBitmap(buffer, offset + 4, 4, EFFECT_SCRIPT_LEVEL, "SCRLEV.IDS")); + return RES_TYPE; + } else { + return super.makeEffectParamsEE(parent, buffer, offset, list, isVersion1); + } + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode401.java b/src/org/infinity/resource/effects/Opcode401.java new file mode 100644 index 000000000..f8e60e479 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode401.java @@ -0,0 +1,72 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.IdsBitmap; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 401. + */ +public class Opcode401 extends BaseOpcode { + private static final String EFFECT_STAT = "Stat"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case IWD2: + return "Protection from evil"; + case EE: + if (isEEEx()) { + return "EEex: Set Extended Stat"; + } + default: + return null; + } + } + + public Opcode401() { + super(401, getOpcodeName()); + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + if (isEEEx()) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, INC_TYPES)); + return null; + } else { + return super.makeEffectParamsEE(parent, buffer, offset, list, isVersion1); + } + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected int makeEffectSpecial(Datatype parent, ByteBuffer buffer, int offset, List list, + String resType, int param1, int param2) { + if (Profile.isEnhancedEdition() && isEEEx()) { + list.add(new IdsBitmap(buffer, offset, 4, EFFECT_STAT, "STATS.IDS")); + return offset + 4; + } else { + return super.makeEffectSpecial(parent, buffer, offset, list, resType, param1, param2); + } + } +} diff --git a/src/org/infinity/resource/effects/Opcode402.java b/src/org/infinity/resource/effects/Opcode402.java new file mode 100644 index 000000000..5f1d0e89e --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode402.java @@ -0,0 +1,75 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.TextString; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 402. + */ +public class Opcode402 extends BaseOpcode { + private static final String EFFECT_LUA_FUNCTION = "Lua function"; + private static final String EFFECT_CRE_TYPE = "Creature type"; + + private static final String RES_TYPE_IWD2 = "SPL"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case IWD2: + return "Apply effects list"; + case EE: + if (isEEEx()) { + return "EEex: Invoke Lua"; + } + default: + return null; + } + } + + public Opcode402() { + super(402, getOpcodeName()); + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + if (isEEEx()) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } else { + return super.makeEffectParamsEE(parent, buffer, offset, list, isVersion1); + } + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_CRE_TYPE, CRE_TYPES_IWD2)); + return RES_TYPE_IWD2; + } + + @Override + protected int makeEffectResource(Datatype parent, ByteBuffer buffer, int offset, List list, + String resType, int param1, int param2) { + if (Profile.isEnhancedEdition() && isEEEx()) { + list.add(new TextString(buffer, offset, 8, EFFECT_LUA_FUNCTION)); + return offset + 8; + } else { + return super.makeEffectResource(parent, buffer, offset, list, resType, param1, param2); + } + } +} diff --git a/src/org/infinity/resource/effects/Opcode403.java b/src/org/infinity/resource/effects/Opcode403.java new file mode 100644 index 000000000..bb72e999c --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode403.java @@ -0,0 +1,71 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.TextString; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 403. + */ +public class Opcode403 extends BaseOpcode { + private static final String EFFECT_LUA_FUNCTION = "Lua function"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case IWD2: + return "Armor of faith"; + case EE: + if (isEEEx()) { + return "EEex: Screen Effects"; + } + default: + return null; + } + } + + public Opcode403() { + super(403, getOpcodeName()); + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + if (isEEEx()) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } else { + return super.makeEffectParamsEE(parent, buffer, offset, list, isVersion1); + } + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected int makeEffectResource(Datatype parent, ByteBuffer buffer, int offset, List list, + String resType, int param1, int param2) { + if (Profile.isEnhancedEdition() && isEEEx()) { + list.add(new TextString(buffer, offset, 8, EFFECT_LUA_FUNCTION)); + return offset + 8; + } else { + return super.makeEffectResource(parent, buffer, offset, list, resType, param1, param2); + } + } +} diff --git a/src/org/infinity/resource/effects/Opcode404.java b/src/org/infinity/resource/effects/Opcode404.java new file mode 100644 index 000000000..d9a41fb69 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode404.java @@ -0,0 +1,64 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 404. + */ +public class Opcode404 extends BaseOpcode { + private static final String EFFECT_TYPE_TO_OVERRIDE = "Type to override"; + private static final String EFFECT_OVERRIDE_WITH_TYPE = "Override with type"; + private static final String EFFECT_NAUSEA_TYPE = "Nausea type"; + + private static final String[] NAUSEA_TYPES_IWD2 = { "Stinking cloud", "Ghoul touch" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case IWD2: + return "Nausea"; + case EE: + if (isEEEx()) { + return "EEex: Override Button Type"; + } + default: + return null; + } + } + + public Opcode404() { + super(404, getOpcodeName()); + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + if (isEEEx()) { + list.add(new Bitmap(buffer, offset, 4, EFFECT_TYPE_TO_OVERRIDE, BUTTON_TYPES)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_OVERRIDE_WITH_TYPE, BUTTON_TYPES)); + return null; + } else { + return super.makeEffectParamsEE(parent, buffer, offset, list, isVersion1); + } + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_NAUSEA_TYPE, NAUSEA_TYPES_IWD2)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode405.java b/src/org/infinity/resource/effects/Opcode405.java new file mode 100644 index 000000000..b0334cdb5 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode405.java @@ -0,0 +1,73 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 405. + */ +public class Opcode405 extends BaseOpcode { + private static final String EFFECT_INDEX_TO_OVERRIDE = "Index to override"; + private static final String EFFECT_OVERRIDE_WITH_TYPE = "Override with type"; + private static final String EFFECT_TARGET_CONFIG = "Target config"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case IWD2: + return "Enfeeblement"; + case EE: + if (isEEEx()) { + return "EEex: Override Button Index"; + } + default: + return null; + } + } + + public Opcode405() { + super(405, getOpcodeName()); + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + if (isEEEx()) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_INDEX_TO_OVERRIDE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_OVERRIDE_WITH_TYPE, BUTTON_TYPES)); + return null; + } else { + return super.makeEffectParamsEE(parent, buffer, offset, list, isVersion1); + } + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected int makeEffectSpecial(Datatype parent, ByteBuffer buffer, int offset, List list, + String resType, int param1, int param2) { + if (Profile.isEnhancedEdition() && isEEEx()) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_TARGET_CONFIG)); + return offset + 4; + } else { + return super.makeEffectSpecial(parent, buffer, offset, list, resType, param1, param2); + } + } +} diff --git a/src/org/infinity/resource/effects/Opcode406.java b/src/org/infinity/resource/effects/Opcode406.java new file mode 100644 index 000000000..8441e3984 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode406.java @@ -0,0 +1,64 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 406. + */ +public class Opcode406 extends BaseOpcode { + private static final String EFFECT_SHIELD_TYPE = "Shield type"; + + private static final String RES_TYPE_IWD2 = "SPL"; + + private static final String[] SHIELD_TYPES_IWD2 = { "Red", "Blue" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case IWD2: + return "Fire shield"; + case EE: + if (isEEEx()) { + return "EEex: Render Override"; + } + default: + return null; + } + } + + public Opcode406() { + super(406, getOpcodeName()); + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + if (isEEEx()) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } else { + return super.makeEffectParamsEE(parent, buffer, offset, list, isVersion1); + } + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_SHIELD_TYPE, SHIELD_TYPES_IWD2)); + return RES_TYPE_IWD2; + } +} diff --git a/src/org/infinity/resource/effects/Opcode407.java b/src/org/infinity/resource/effects/Opcode407.java new file mode 100644 index 000000000..49e226860 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode407.java @@ -0,0 +1,73 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.ResourceRef; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 407. + */ +public class Opcode407 extends BaseOpcode { + private static final String EFFECT_ON_REMOVE = "EEex: On remove"; + + private static final String RES_TYPE = "SPL"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case IWD2: + return "Death ward"; + case EE: + if (isEEEx()) { + return "EEex: On Remove"; + } + default: + return null; + } + } + + public Opcode407() { + super(407, getOpcodeName()); + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + if (isEEEx()) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return RES_TYPE; + } else { + return super.makeEffectParamsEE(parent, buffer, offset, list, isVersion1); + } + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected int makeEffectResource(Datatype parent, ByteBuffer buffer, int offset, List list, + String resType, int param1, int param2) { + if (Profile.isEnhancedEdition() && isEEEx()) { + list.add(new ResourceRef(buffer, offset, EFFECT_ON_REMOVE, resType.split(":"))); + return offset + 8; + } else { + return super.makeEffectResource(parent, buffer, offset, list, resType, param1, param2); + } + } +} diff --git a/src/org/infinity/resource/effects/Opcode408.java b/src/org/infinity/resource/effects/Opcode408.java new file mode 100644 index 000000000..d4008249e --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode408.java @@ -0,0 +1,71 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.TextString; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 408. + */ +public class Opcode408 extends BaseOpcode { + private static final String EFFECT_LUA_TABLE = "Lua table"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case IWD2: + return "Holy power"; + case EE: + if (isEEEx()) { + return "EEex: Projectile Mutator"; + } + default: + return null; + } + } + + public Opcode408() { + super(408, getOpcodeName()); + } + + @Override + protected String makeEffectParamsEE(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + if (isEEEx()) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } else { + return super.makeEffectParamsEE(parent, buffer, offset, list, isVersion1); + } + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } + + @Override + protected int makeEffectResource(Datatype parent, ByteBuffer buffer, int offset, List list, + String resType, int param1, int param2) { + if (Profile.isEnhancedEdition() && isEEEx()) { + list.add(new TextString(buffer, offset, 8, EFFECT_LUA_TABLE)); + return offset + 8; + } else { + return super.makeEffectResource(parent, buffer, offset, list, resType, param1, param2); + } + } +} diff --git a/src/org/infinity/resource/effects/Opcode409.java b/src/org/infinity/resource/effects/Opcode409.java new file mode 100644 index 000000000..5e1658498 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode409.java @@ -0,0 +1,46 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 409. + */ +public class Opcode409 extends BaseOpcode { + private static final String EFFECT_AFFECT = "Affect"; + + private static final String[] AFFECTED_TYPES_IWD2 = { "Allies", "Allies and same alignment" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case IWD2: + return "Righteous wrath of the faithful"; + default: + return null; + } + } + + public Opcode409() { + super(409, getOpcodeName()); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_AFFECT, AFFECTED_TYPES_IWD2)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode410.java b/src/org/infinity/resource/effects/Opcode410.java new file mode 100644 index 000000000..bf343163b --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode410.java @@ -0,0 +1,46 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 410. + */ +public class Opcode410 extends BaseOpcode { + private static final String EFFECT_NUM_CREATURES = "# creatures"; + private static final String EFFECT_SUMMON_ANIMATION = "Summon animation"; + + private static final String RES_TYPE_IWD2 = "CRE"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case IWD2: + return "Summon friendly creature"; + default: + return null; + } + } + + public Opcode410() { + super(410, getOpcodeName()); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_NUM_CREATURES)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_SUMMON_ANIMATION, SUMMON_ANIMS)); + return RES_TYPE_IWD2; + } +} diff --git a/src/org/infinity/resource/effects/Opcode411.java b/src/org/infinity/resource/effects/Opcode411.java new file mode 100644 index 000000000..5e3ebec70 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode411.java @@ -0,0 +1,46 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 411. + */ +public class Opcode411 extends BaseOpcode { + private static final String EFFECT_NUM_CREATURES = "# creatures"; + private static final String EFFECT_SUMMON_ANIMATION = "Summon animation"; + + private static final String RES_TYPE_IWD2 = "CRE"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case IWD2: + return "Summon hostile creature"; + default: + return null; + } + } + + public Opcode411() { + super(411, getOpcodeName()); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_NUM_CREATURES)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_SUMMON_ANIMATION, SUMMON_ANIMS)); + return RES_TYPE_IWD2; + } +} diff --git a/src/org/infinity/resource/effects/Opcode412.java b/src/org/infinity/resource/effects/Opcode412.java new file mode 100644 index 000000000..8c6616180 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode412.java @@ -0,0 +1,46 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 412. + */ +public class Opcode412 extends BaseOpcode { + private static final String EFFECT_CONTROL_TYPE = "Control type"; + + private static final String[] CONTROL_TYPES_IWD2 = { "", "Default", "Mental domination" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case IWD2: + return "Control creature"; + default: + return null; + } + } + + public Opcode412() { + super(412, getOpcodeName()); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_CONTROL_TYPE, CONTROL_TYPES_IWD2)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode413.java b/src/org/infinity/resource/effects/Opcode413.java new file mode 100644 index 000000000..c0e478da6 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode413.java @@ -0,0 +1,51 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 413. + */ +public class Opcode413 extends BaseOpcode { + private static final String EFFECT_ANIMATION = "Animation"; + + private static final String[] ANIMATIONS_IWD2 = { "Sanctuary", "Entangle", "Wisp", "Shield", "Grease", "Web", + "Minor globe of invulnerability", "Globe of invulnerability", "Shroud of flame", "Antimagic shell", + "Otiluke's resilient sphere", "Protection from normal missiles", "Cloak of fear", "Entrophy shield", "Fire aura", + "Frost aura", "Insect plague", "Storm shell", "Shield of lathander", "", "Greater shield of lathander", "", + "Seven eyes", "", "Blur", "Invisibility", "Fire shield (red)", "Fire shield (blue)", "", "", "Tortoise shell", + "Death armor" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case IWD2: + return "Run visual effect"; + default: + return null; + } + } + + public Opcode413() { + super(413, getOpcodeName()); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_ANIMATION, ANIMATIONS_IWD2)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode414.java b/src/org/infinity/resource/effects/Opcode414.java new file mode 100644 index 000000000..0d42a4577 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode414.java @@ -0,0 +1,41 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 414. + */ +public class Opcode414 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case IWD2: + return "Otiluke's resilient sphere"; + default: + return null; + } + } + + public Opcode414() { + super(414, getOpcodeName()); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode415.java b/src/org/infinity/resource/effects/Opcode415.java new file mode 100644 index 000000000..7abac68e8 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode415.java @@ -0,0 +1,41 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 415. + */ +public class Opcode415 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case IWD2: + return "Barkskin"; + default: + return null; + } + } + + public Opcode415() { + super(415, getOpcodeName()); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode416.java b/src/org/infinity/resource/effects/Opcode416.java new file mode 100644 index 000000000..2a3a95faf --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode416.java @@ -0,0 +1,46 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 416. + */ +public class Opcode416 extends BaseOpcode { + private static final String EFFECT_DAMAGE_TYPE = "Damage type"; + + private static final String[] DAMAGE_TYPES_IWD2 = { "Amount HP per round", "Amount HP per second", + "1 HP per amount seconds" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case IWD2: + return "Bleeding wounds"; + default: + return null; + } + } + + public Opcode416() { + super(416, getOpcodeName()); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_AMOUNT)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_DAMAGE_TYPE, DAMAGE_TYPES_IWD2)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode417.java b/src/org/infinity/resource/effects/Opcode417.java new file mode 100644 index 000000000..82442d1fe --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode417.java @@ -0,0 +1,48 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.Flag; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 417. + */ +public class Opcode417 extends BaseOpcode { + private static final String EFFECT_RADIUS = "Radius"; + private static final String EFFECT_AREA_EFFECT_TYPE = "Area effect type"; + + private static final String RES_TYPE_IWD2 = "SPL"; + + private static final String[] EFFECT_TYPES_IWD2 = { "Instant", "Once per round", "Ignore target" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case IWD2: + return "Area effect using effects list"; + default: + return null; + } + } + + public Opcode417() { + super(417, getOpcodeName()); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_RADIUS)); + list.add(new Flag(buffer, offset + 4, 4, EFFECT_AREA_EFFECT_TYPE, EFFECT_TYPES_IWD2)); + return RES_TYPE_IWD2; + } +} diff --git a/src/org/infinity/resource/effects/Opcode418.java b/src/org/infinity/resource/effects/Opcode418.java new file mode 100644 index 000000000..afcf8fbc2 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode418.java @@ -0,0 +1,41 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 418. + */ +public class Opcode418 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case IWD2: + return "Free action"; + default: + return null; + } + } + + public Opcode418() { + super(418, getOpcodeName()); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode419.java b/src/org/infinity/resource/effects/Opcode419.java new file mode 100644 index 000000000..3534fe939 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode419.java @@ -0,0 +1,44 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 419. + */ +public class Opcode419 extends BaseOpcode { + private static final String EFFECT_WAKE_ON_DAMAGE = "Wake on damage?"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case IWD2: + return "Unconsciousness"; + default: + return null; + } + } + + public Opcode419() { + super(419, getOpcodeName()); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_WAKE_ON_DAMAGE, AbstractStruct.OPTION_YESNO)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode420.java b/src/org/infinity/resource/effects/Opcode420.java new file mode 100644 index 000000000..f45a9813c --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode420.java @@ -0,0 +1,47 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.datatype.Flag; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 420. + */ +public class Opcode420 extends BaseOpcode { + private static final String EFFECT_DEATH_TYPE = "Death type"; + + private static final String[] DEATH_TYPES_IWD2 = { "Acid", "Burning", "Crushing", "Normal", "Exploding", "Stoned", + "Freezing", null, null, null, "Permanent", "Destruction" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case IWD2: + return "Death magic"; + default: + return null; + } + } + + public Opcode420() { + super(420, getOpcodeName()); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Flag(buffer, offset + 4, 4, EFFECT_DEATH_TYPE, DEATH_TYPES_IWD2)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode421.java b/src/org/infinity/resource/effects/Opcode421.java new file mode 100644 index 000000000..61eaa4194 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode421.java @@ -0,0 +1,41 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 421. + */ +public class Opcode421 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case IWD2: + return "Entropy shield"; + default: + return null; + } + } + + public Opcode421() { + super(421, getOpcodeName()); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode422.java b/src/org/infinity/resource/effects/Opcode422.java new file mode 100644 index 000000000..6ea5a6b74 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode422.java @@ -0,0 +1,41 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 422. + */ +public class Opcode422 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case IWD2: + return "Storm shell"; + default: + return null; + } + } + + public Opcode422() { + super(422, getOpcodeName()); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode423.java b/src/org/infinity/resource/effects/Opcode423.java new file mode 100644 index 000000000..2484a0afd --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode423.java @@ -0,0 +1,41 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 423. + */ +public class Opcode423 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case IWD2: + return "Protection from the elements"; + default: + return null; + } + } + + public Opcode423() { + super(423, getOpcodeName()); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode424.java b/src/org/infinity/resource/effects/Opcode424.java new file mode 100644 index 000000000..81b82aa50 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode424.java @@ -0,0 +1,41 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 424. + */ +public class Opcode424 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case IWD2: + return "Hold undead"; + default: + return null; + } + } + + public Opcode424() { + super(424, getOpcodeName()); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode425.java b/src/org/infinity/resource/effects/Opcode425.java new file mode 100644 index 000000000..18c60fbe5 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode425.java @@ -0,0 +1,41 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 425. + */ +public class Opcode425 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case IWD2: + return "Control undead"; + default: + return null; + } + } + + public Opcode425() { + super(425, getOpcodeName()); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode426.java b/src/org/infinity/resource/effects/Opcode426.java new file mode 100644 index 000000000..b55ed0049 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode426.java @@ -0,0 +1,41 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 426. + */ +public class Opcode426 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case IWD2: + return "Aegis"; + default: + return null; + } + } + + public Opcode426() { + super(426, getOpcodeName()); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode427.java b/src/org/infinity/resource/effects/Opcode427.java new file mode 100644 index 000000000..b165d8cba --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode427.java @@ -0,0 +1,41 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 427. + */ +public class Opcode427 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case IWD2: + return "Executioner's eyes"; + default: + return null; + } + } + + public Opcode427() { + super(427, getOpcodeName()); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode428.java b/src/org/infinity/resource/effects/Opcode428.java new file mode 100644 index 000000000..98616723b --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode428.java @@ -0,0 +1,41 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 428. + */ +public class Opcode428 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case IWD2: + return "Banish"; + default: + return null; + } + } + + public Opcode428() { + super(428, getOpcodeName()); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode429.java b/src/org/infinity/resource/effects/Opcode429.java new file mode 100644 index 000000000..62c9869da --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode429.java @@ -0,0 +1,43 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 429. + */ +public class Opcode429 extends BaseOpcode { + private static final String RES_TYPE_IWD2 = "SPL"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case IWD2: + return "Apply effects list on hit"; + default: + return null; + } + } + + public Opcode429() { + super(429, getOpcodeName()); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return RES_TYPE_IWD2; + } +} diff --git a/src/org/infinity/resource/effects/Opcode430.java b/src/org/infinity/resource/effects/Opcode430.java new file mode 100644 index 000000000..831885f53 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode430.java @@ -0,0 +1,45 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 430. + */ +public class Opcode430 extends BaseOpcode { + private static final String EFFECT_PROJECTILE = "Projectile"; + + private static final String RES_TYPE_IWD2 = "SPL"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case IWD2: + return "Projectile type using effects list"; + default: + return null; + } + } + + public Opcode430() { + super(430, getOpcodeName()); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, EFFECT_PROJECTILE)); + return RES_TYPE_IWD2; + } +} diff --git a/src/org/infinity/resource/effects/Opcode431.java b/src/org/infinity/resource/effects/Opcode431.java new file mode 100644 index 000000000..c0c486a6e --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode431.java @@ -0,0 +1,43 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 431. + */ +public class Opcode431 extends BaseOpcode { + private static final String EFFECT_NUM_LEVELS = "# levels"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case IWD2: + return "Energy drain"; + default: + return null; + } + } + + public Opcode431() { + super(431, getOpcodeName()); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_NUM_LEVELS)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode432.java b/src/org/infinity/resource/effects/Opcode432.java new file mode 100644 index 000000000..284cfacc3 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode432.java @@ -0,0 +1,43 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 432. + */ +public class Opcode432 extends BaseOpcode { + private static final String EFFECT_HP_AMOUNT = "HP amount"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case IWD2: + return "Tortoise shell"; + default: + return null; + } + } + + public Opcode432() { + super(432, getOpcodeName()); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_HP_AMOUNT)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode433.java b/src/org/infinity/resource/effects/Opcode433.java new file mode 100644 index 000000000..02de17ac7 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode433.java @@ -0,0 +1,46 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 433. + */ +public class Opcode433 extends BaseOpcode { + private static final String EFFECT_BLINK_TYPE = "Blink type"; + + private static final String[] BLINK_TYPES_IWD2 = { "Normal", "Empty body" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case IWD2: + return "Blink"; + default: + return null; + } + } + + public Opcode433() { + super(433, getOpcodeName()); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_BLINK_TYPE, BLINK_TYPES_IWD2)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode434.java b/src/org/infinity/resource/effects/Opcode434.java new file mode 100644 index 000000000..2973da3cf --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode434.java @@ -0,0 +1,45 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 434. + */ +public class Opcode434 extends BaseOpcode { + private static final String EFFECT_INTERVAL = "Interval"; + + private static final String RES_TYPE_IWD2 = "SPL"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case IWD2: + return "Persistent using effects list"; + default: + return null; + } + } + + public Opcode434() { + super(434, getOpcodeName()); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_INTERVAL)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return RES_TYPE_IWD2; + } +} diff --git a/src/org/infinity/resource/effects/Opcode435.java b/src/org/infinity/resource/effects/Opcode435.java new file mode 100644 index 000000000..114b1fedb --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode435.java @@ -0,0 +1,41 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 435. + */ +public class Opcode435 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case IWD2: + return "Day blindness"; + default: + return null; + } + } + + public Opcode435() { + super(435, getOpcodeName()); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode436.java b/src/org/infinity/resource/effects/Opcode436.java new file mode 100644 index 000000000..3b1073685 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode436.java @@ -0,0 +1,42 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 436. + */ +public class Opcode436 extends BaseOpcode { + private static final String EFFECT_ENCHANTMENT_TO_OVERCOME = "Enchantment to overcome"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case IWD2: + return "Damage reduction"; + default: + return null; + } + } + + public Opcode436() { + super(436, getOpcodeName()); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new DecNumber(buffer, offset + 4, 4, EFFECT_ENCHANTMENT_TO_OVERCOME)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode437.java b/src/org/infinity/resource/effects/Opcode437.java new file mode 100644 index 000000000..d88522b17 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode437.java @@ -0,0 +1,41 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 437. + */ +public class Opcode437 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case IWD2: + return "Disguise"; + default: + return null; + } + } + + public Opcode437() { + super(437, getOpcodeName()); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode438.java b/src/org/infinity/resource/effects/Opcode438.java new file mode 100644 index 000000000..a53824672 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode438.java @@ -0,0 +1,41 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 438. + */ +public class Opcode438 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case IWD2: + return "Heroic inspiration"; + default: + return null; + } + } + + public Opcode438() { + super(438, getOpcodeName()); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode439.java b/src/org/infinity/resource/effects/Opcode439.java new file mode 100644 index 000000000..10bd7460b --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode439.java @@ -0,0 +1,41 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 439. + */ +public class Opcode439 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case IWD2: + return "Prevent AI slowdown"; + default: + return null; + } + } + + public Opcode439() { + super(439, getOpcodeName()); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, EFFECT_STAT_VALUE)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode440.java b/src/org/infinity/resource/effects/Opcode440.java new file mode 100644 index 000000000..5938a60e2 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode440.java @@ -0,0 +1,41 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 440. + */ +public class Opcode440 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case IWD2: + return "Barbarian rage"; + default: + return null; + } + } + + public Opcode440() { + super(440, getOpcodeName()); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode441.java b/src/org/infinity/resource/effects/Opcode441.java new file mode 100644 index 000000000..b53912faf --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode441.java @@ -0,0 +1,41 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 441. + */ +public class Opcode441 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case IWD2: + return "Force slow"; + default: + return null; + } + } + + public Opcode441() { + super(441, getOpcodeName()); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_VALUE)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_MODIFIER_TYPE, INC_TYPES)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode442.java b/src/org/infinity/resource/effects/Opcode442.java new file mode 100644 index 000000000..5ae0c1e2c --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode442.java @@ -0,0 +1,41 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 442. + */ +public class Opcode442 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case IWD2: + return "Cleave"; + default: + return null; + } + } + + public Opcode442() { + super(442, getOpcodeName()); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode443.java b/src/org/infinity/resource/effects/Opcode443.java new file mode 100644 index 000000000..ec975d4b6 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode443.java @@ -0,0 +1,46 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 443. + */ +public class Opcode443 extends BaseOpcode { + private static final String EFFECT_DAMAGE_REDUCTION = "Damage reduction"; + + private static final String[] DAMAGE_REDUCTIONS_IWD2 = { "None", "10/+1", "10/+2", "10/+3", "10/+4", "10/+5" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case IWD2: + return "Protection from arrows"; + default: + return null; + } + } + + public Opcode443() { + super(443, getOpcodeName()); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_DAMAGE_REDUCTION, DAMAGE_REDUCTIONS_IWD2)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode444.java b/src/org/infinity/resource/effects/Opcode444.java new file mode 100644 index 000000000..d8ec57308 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode444.java @@ -0,0 +1,41 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 444. + */ +public class Opcode444 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case IWD2: + return "Tenser's transformation"; + default: + return null; + } + } + + public Opcode444() { + super(444, getOpcodeName()); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode445.java b/src/org/infinity/resource/effects/Opcode445.java new file mode 100644 index 000000000..020f394d4 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode445.java @@ -0,0 +1,41 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 445. + */ +public class Opcode445 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case IWD2: + return "Slippery mind"; + default: + return null; + } + } + + public Opcode445() { + super(445, getOpcodeName()); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode446.java b/src/org/infinity/resource/effects/Opcode446.java new file mode 100644 index 000000000..253d9f3ee --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode446.java @@ -0,0 +1,41 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 446. + */ +public class Opcode446 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case IWD2: + return "Smite evil"; + default: + return null; + } + } + + public Opcode446() { + super(446, getOpcodeName()); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode447.java b/src/org/infinity/resource/effects/Opcode447.java new file mode 100644 index 000000000..0f9790c20 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode447.java @@ -0,0 +1,41 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 447. + */ +public class Opcode447 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case IWD2: + return "Restoration"; + default: + return null; + } + } + + public Opcode447() { + super(447, getOpcodeName()); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode448.java b/src/org/infinity/resource/effects/Opcode448.java new file mode 100644 index 000000000..c8abee7b6 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode448.java @@ -0,0 +1,41 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 448. + */ +public class Opcode448 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case IWD2: + return "Alicorn lance"; + default: + return null; + } + } + + public Opcode448() { + super(448, getOpcodeName()); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode449.java b/src/org/infinity/resource/effects/Opcode449.java new file mode 100644 index 000000000..dfa4a5d8d --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode449.java @@ -0,0 +1,45 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 449. + */ +public class Opcode449 extends BaseOpcode { + private static final String EFFECT_NUM_HITS = "# hits"; + + private static final String RES_TYPE_IWD2 = "SPL"; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case IWD2: + return "Call lightning"; + default: + return null; + } + } + + public Opcode449() { + super(449, getOpcodeName()); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, EFFECT_NUM_HITS)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return RES_TYPE_IWD2; + } +} diff --git a/src/org/infinity/resource/effects/Opcode450.java b/src/org/infinity/resource/effects/Opcode450.java new file mode 100644 index 000000000..e11f6f3d5 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode450.java @@ -0,0 +1,46 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Bitmap; +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 450. + */ +public class Opcode450 extends BaseOpcode { + private static final String EFFECT_GLOBE_TYPE = "Globe type"; + + private static final String[] GLOBE_TYPES_IWD2 = { "Minor globe of invulnerability", "Globe of invulnerability" }; + + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case IWD2: + return "Globe of invulnerability"; + default: + return null; + } + } + + public Opcode450() { + super(450, getOpcodeName()); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new Bitmap(buffer, offset + 4, 4, EFFECT_GLOBE_TYPE, GLOBE_TYPES_IWD2)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode451.java b/src/org/infinity/resource/effects/Opcode451.java new file mode 100644 index 000000000..9236427bd --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode451.java @@ -0,0 +1,41 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 451. + */ +public class Opcode451 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case IWD2: + return "Lower resistance"; + default: + return null; + } + } + + public Opcode451() { + super(451, getOpcodeName()); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode452.java b/src/org/infinity/resource/effects/Opcode452.java new file mode 100644 index 000000000..f3dce56a1 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode452.java @@ -0,0 +1,41 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 452. + */ +public class Opcode452 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case IWD2: + return "Bane"; + default: + return null; + } + } + + public Opcode452() { + super(452, getOpcodeName()); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode453.java b/src/org/infinity/resource/effects/Opcode453.java new file mode 100644 index 000000000..01b30a7c0 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode453.java @@ -0,0 +1,41 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 453. + */ +public class Opcode453 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case IWD2: + return "Power attack"; + default: + return null; + } + } + + public Opcode453() { + super(453, getOpcodeName()); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode454.java b/src/org/infinity/resource/effects/Opcode454.java new file mode 100644 index 000000000..462dfea99 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode454.java @@ -0,0 +1,41 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 454. + */ +public class Opcode454 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case IWD2: + return "Expertise"; + default: + return null; + } + } + + public Opcode454() { + super(454, getOpcodeName()); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode455.java b/src/org/infinity/resource/effects/Opcode455.java new file mode 100644 index 000000000..6a8086791 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode455.java @@ -0,0 +1,41 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 455. + */ +public class Opcode455 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case IWD2: + return "Arterial strike"; + default: + return null; + } + } + + public Opcode455() { + super(455, getOpcodeName()); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode456.java b/src/org/infinity/resource/effects/Opcode456.java new file mode 100644 index 000000000..b6555b31e --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode456.java @@ -0,0 +1,41 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 456. + */ +public class Opcode456 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case IWD2: + return "Hamstring"; + default: + return null; + } + } + + public Opcode456() { + super(456, getOpcodeName()); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/resource/effects/Opcode457.java b/src/org/infinity/resource/effects/Opcode457.java new file mode 100644 index 000000000..e71614d54 --- /dev/null +++ b/src/org/infinity/resource/effects/Opcode457.java @@ -0,0 +1,41 @@ +// Near Infinity - An Infinity Engine Browser and Editor +// Copyright (C) 2001 - 2022 Jon Olav Hauglid +// See LICENSE.txt for license information + +package org.infinity.resource.effects; + +import java.nio.ByteBuffer; +import java.util.List; + +import org.infinity.datatype.Datatype; +import org.infinity.datatype.DecNumber; +import org.infinity.resource.AbstractStruct; +import org.infinity.resource.Profile; +import org.infinity.resource.StructEntry; + +/** + * Implemention of opcode 457. + */ +public class Opcode457 extends BaseOpcode { + /** Returns the opcode name for the current game variant. */ + private static String getOpcodeName() { + switch (Profile.getEngine()) { + case IWD2: + return "Rapid shot"; + default: + return null; + } + } + + public Opcode457() { + super(457, getOpcodeName()); + } + + @Override + protected String makeEffectParamsIWD2(Datatype parent, ByteBuffer buffer, int offset, List list, + boolean isVersion1) { + list.add(new DecNumber(buffer, offset, 4, AbstractStruct.COMMON_UNUSED)); + list.add(new DecNumber(buffer, offset + 4, 4, AbstractStruct.COMMON_UNUSED)); + return null; + } +} diff --git a/src/org/infinity/search/SearchResource.java b/src/org/infinity/search/SearchResource.java index 2b7e40dd7..7de6906bc 100644 --- a/src/org/infinity/search/SearchResource.java +++ b/src/org/infinity/search/SearchResource.java @@ -75,13 +75,13 @@ import org.infinity.gui.WindowBlocker; import org.infinity.icon.Icons; import org.infinity.resource.AbstractAbility; -import org.infinity.resource.EffectFactory; import org.infinity.resource.Profile; import org.infinity.resource.ResourceFactory; import org.infinity.resource.Viewable; import org.infinity.resource.are.AreResource; import org.infinity.resource.bcs.BcsResource; import org.infinity.resource.cre.CreResource; +import org.infinity.resource.effects.BaseOpcode; import org.infinity.resource.itm.Ability; import org.infinity.resource.itm.ItmResource; import org.infinity.resource.key.ResourceEntry; @@ -1612,7 +1612,7 @@ private void init() { pTiming = new TimingModePanel(); bpwTiming = new ButtonPopupWindow(SET_OPTIONS_TEXT, pTiming); - String[] saveType = EffectFactory.getSaveType(); + String[] saveType = BaseOpcode.getSaveType(); pSaveType = new FlagsPanel(4, saveType); bpwSaveType = new ButtonPopupWindow(SET_OPTIONS_TEXT, pSaveType); @@ -4074,7 +4074,7 @@ private void init() { cbTiming[i].addActionListener(this); } - cbMode = Utils.defaultWidth(new AutoComboBox<>(IndexedString.createArray(EffectFactory.DURATIONS_V2_MAP)), 130); + cbMode = Utils.defaultWidth(new AutoComboBox<>(IndexedString.createArray(BaseOpcode.DURATIONS_V2_MAP)), 130); sDuration[0] = Utils.createNumberSpinner(Integer.MIN_VALUE, Integer.MAX_VALUE, -32768, 32767, 0, 1); sDuration[1] = Utils.createNumberSpinner(Integer.MIN_VALUE, Integer.MAX_VALUE, -32768, 32767, 3600, 1); From 10bcfb7d96be39ebb8741b76bc96a6d86b1d1d7b Mon Sep 17 00:00:00 2001 From: Argent77 <4519923+Argent77@users.noreply.github.com> Date: Tue, 8 Nov 2022 11:45:01 +0100 Subject: [PATCH 11/11] Version 2.3-20221108 --- src/org/infinity/gui/BrowserMenuBar.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/org/infinity/gui/BrowserMenuBar.java b/src/org/infinity/gui/BrowserMenuBar.java index 600875d10..bc7a68bf7 100644 --- a/src/org/infinity/gui/BrowserMenuBar.java +++ b/src/org/infinity/gui/BrowserMenuBar.java @@ -117,7 +117,7 @@ import org.infinity.util.tuples.Couple; public final class BrowserMenuBar extends JMenuBar implements KeyEventDispatcher { - public static final String VERSION = "v2.3-20220906"; + public static final String VERSION = "v2.3-20221108"; public static final LookAndFeelInfo DEFAULT_LOOKFEEL = new LookAndFeelInfo("Metal", "javax.swing.plaf.metal.MetalLookAndFeel");

cw0^SdYsSvgg&pvLX8C77lJ}(U55? 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%0D9z*FXk`due*pXa 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�lK6$8BV}iaRl@6azO=Wx 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%0Am@R%i@p+@8*c|A3bWf4mPe>X(SLkgh=tTc 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