BattletechModders / MechEngineer

Mod for BattleTech that introduces many CBT mechanics to the MechLab
GNU Lesser General Public License v2.1
11 stars 21 forks source link

Introduce crit splitting #93

Open CptMoore opened 6 years ago

CptMoore commented 6 years ago

Developer-Level Errata

second release, p. 57, right column:
"Some items, however, may be broken up among multiple sections (and are noted as such on the Weapon and Equipment Tables).
     The weapons that may be mounted in multiple locations—the AC/20, Ultra AC/20, LB 20-X AC and the heavy Gauss rifle—must be placed in adjacent body locations, and automatically receive the most restrictive firing arc."
Change to:
"Some items, however, may be broken up among two locations (and are noted as such on the Weapon and Equipment Tables).
     Any ranged weapon occupying 8 or more critical slots may be split between any two adjacent locations.  If so, it automatically receives the more restrictive firing arc of the two."

crit splitting will be implemented using dynamic slots

CptMoore commented 6 years ago

AC20 workaround implemented by introducing arm actuators, see #33

CptMoore commented 6 years ago

Didnt work well, while dynamic slots are now named, and crit chance adjustments are easy to add, mech designer cant determin where and how many slots are to be put. Better to actally split the big items with some lore (e.g. magazine as its own 1-3 slot item). Create additional item on drop and track association through simgameuid parameters. Requires crit hit collection of engine to be generalized (linkedcomponents)

CptMoore commented 5 years ago

crit is generialized, but crit splitting is still an issue due to missing option to link items in the mechbay. dynamic slot idea is still the best, and that is not good enough.

CptMoore commented 4 years ago

combat vs mechlab

CptMoore commented 4 years ago

TODO

Variant A) (max compatibilty with existing mods)

// CriticalEffectsFeature
public static void CreateCriticallyLinked(MechComponent linkedTo, int inventorySize, ChassisLocations location)
{
    // introduce multiple links per component
    // make those links all in statcollection, avoid having to do the "HasLinked" checks later
}

//MechDefBuilder
public static int GetDynamicLocationalSlotsForComponent(MechComponent component, ChassisLocations location)
{
    // best use a precomputed cache that is also used in mechlab
}

// Mech.init postfix, add fakes to get crits, inherit linked damage level

// Mech.ToMechDef prefix, remove fakes again

// MechComponent.inventorySize -> mechComponent.GetCriticals() -> use link + fake component logic

also maybe hide those somehow from the overviews? or better.. allow to overwrite descriptions and colors