Code Monkey home page Code Monkey logo

bestinclasspp's Introduction

BestInClass++

BestInClass++ is a SKSE plugin for Skyrim Legendary Edition (also referred to as Classic) and currently a Work In Progress.

It main feature is improving the BestInClass functionality offered by default in the game, which highlights the best item based on armor rating or damage value. This plugin enhances this functionality by considering more categories and types for armor, weapons, and ammunition. It replaces the vanilla method entirely and disables the original function.

Later releases are planned to include mod support through keyword lookup and options for choosing between base and modified values. A Skyrim Special Edition release is not planned by me for now, but given the license other developers are welcomed to port it.

Requirements

  • Skyrim Legendary Edition
  • Skyrim Script Extender 1.7.3

Building

The plugin is written and compiled using Visual Studio 2015 using the v140 platform toolset with the target platform being 8.1. This plugin also makes use of libSkyrim, which originally was developed by Himika and has been extended by me, which can be found here: https://github.com/Dakraid/libSkyrim

On release(-ish) this will be improvement so any manual setup is no longer required.

Thanks

I want to thank everyone on the Skyrim RE Discord for helping out with researching and advising on implementation. This includes, in no particular order: DavidJCobb, Nukem, Aers, PowerOfThree (po3), Ryan, and everyone else who has helped making this come to fruition.

Special thanks to DavidJCobb, who has provided massive help by helping with the reverse engineering of some of the undefined classes and also has given me a lot of valuable know how. Aers and PowerOfThree also provided significant information and knowledge. Without these three and the others I wouldn't have been able to get this far.

Also thanks to Himika's and the SKSE's teams effort in making these kinds of modifications easier or possible in the first place, and their massive efforts in reverse engineering Skyrim and its engine.

bestinclasspp's People

Contributors

dakraid avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

bestinclasspp's Issues

Markers are cleared early

Issue

For some reason the markers used within the inventory UI are sometimes cleared early. Not sure if this is caused by the game itself or if parts of the code are not in order.

Possible Solution

This requires some more testing and debugging. One has to determine what actually causes the markers to be reset. One attempt is to prevent clearing the array when the marking is still done, which also delays the opening of the menu.

Add INI Configuration

Proposal

Currently the plugin operates without any kind of configuration, but with the proposed feature in issue #4 a configuration is necessary. Additional features could include toggling the disabling of the vanilla function, if only armors/weapons should be compared, and maybe some options relating to sorting and/or performance.

Process bows and ammunition

Proposal

The plugin so far only compares the different weapon and armor types, but leaves out bows, crossbows, and ammunition for these weapons. It would be reasonable to add those in before the release.

Timestamped Logging is broken

Issue

The function LogMessage() is not working as intended. While the timestamps work, the combination of the input and the timestamp is not. Whatever is handed into _Message() seems to be garbled mess.

Possible Solution

Implement an actually decent way of combining the input parameters with the timestamp.

Implement method for actual values

Proposal

Currently the plugin compares the base values of each item, but this means that any improvements through like tempering or similar are not taken into account. An alternative comparison should be sought out to allow for users to select their preferred compare.

Armor Slots are more complex

Issue

Armors can occupy multiple different slots at once, so the number used for the Switch Cases are not always correct and thus the armor piece is not recognized. The issue can be seen within the plugin's logs:

Current Armor "Amulet of Dibella (Flawless)" uses slot(s) 32
Current Armor "Backpack, Brown Fur (Exquisite)" uses slot(s) 131072
Current Armor "Dragon Hunter Armor (Flawless)" uses slot(s) 4
Current Armor "Einherjar Brigandine Dark Gauntlets (Flawless)" uses slot(s) 8
Current Armor "Einherjar Brigandine Dark Hood (Flawless)" uses slot(s) 2050
Current Armor "Forester Aketon Brown (Fine)" uses slot(s) 4194308
Current Armor "Forester Mantle Green" uses slot(s) 2
Current Armor "Forester Solid Boots Black" uses slot(s) 128
Current Armor "Forester Wristguards (Superior)" uses slot(s) 8
Current Armor "Gauldur Amulet Fragment" uses slot(s) 32
Current Armor "Goblet of Infinite Grace" uses slot(s) 0
Current Armor "Gold Emerald Ring" uses slot(s) 64
Current Armor "Leader of the Pack (Exquisite)" uses slot(s) 64
Current Armor "Necklace of Health" uses slot(s) 32
Current Armor "Ring of Dexterity (Flawless)" uses slot(s) 64
Current Armor "Ring of Extreme Wielding (Superior)" uses slot(s) 64
Current Armor "Saarthal Amulet" uses slot(s) 32
Current Armor "Scaled Boots (Epic)" uses slot(s) 128
Current Armor "Travel Lantern" uses slot(s) 0
Current Armor "Vvardenfell Glass Gauntlets" uses slot(s) 8

All slots are assigned a number in the form of nĀ². If multiple slots are used, the numbers are added together.

Possible Solutions

There are three ways I see:

  1. Hardcode all practical combinations. Awful idea.
  2. Use arithmetic to determine which slots are used within an armor piece. Might not be the best approach and could pose issues with the Switch Case.
  3. Find another field to use as the determining factor. The in-game (Sky)UI shows a more easily identifiable type to allow sorting of the armor. This seems like the best option.

Container and Barter Menu Support

Proposal

While the player inventory is already working, the menus for containers and trading are still not implemented. Implementing them requires some reverse engineering as it seems that these have not been fully defined by the SKSE team or other developers. This could take more time than wished, might consider releasing an inventory only version.

Crash on opening the inventory menu

Issue

Since the last commit 6cfc13d the game crashes whenever the plugin is active and one opens the inventory menu. Logs seem to indicate that this issue arises within the weapon comparison, disabling this part of the plugin fixes the crashes. What exactly is causing the issues is not known yet.

Modded item support

Proposal

Some mods and overhauls seem to expand upon the various weapon and armor types already found within the game. Examples include Cloaks of Skyrim, Winter is Coming, Perkus Maximus, and others. Perkus Maximus splits bows into Shortbows and Longbows, but how each is defined and if it is possible to include these efficiently or as option is left to be seen after main release.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    šŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. šŸ“ŠšŸ“ˆšŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ā¤ļø Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.