battletechmodders / mechengineer Goto Github PK
View Code? Open in Web Editor NEWMod for BattleTech that introduces many CBT mechanics to the MechLab
License: GNU Lesser General Public License v2.1
Mod for BattleTech that introduces many CBT mechanics to the MechLab
License: GNU Lesser General Public License v2.1
cloned in #20
works using critical slots
using one critical slot component flags the mech to now be endo-steel supported
can't save mech loadout until all 14 endo-steel slots are put on the mech (or all are removed)
Make sure to test intended mod compilations too.
allow mixed heat sinks
assume engine is DHS if just a single DHS is found
allow partial endo-steel
this will count each endo steel critical slot and reduce the tonnage per item
while nice, other mods should modify weapons, we only should concentrate on engines
I think I can generically integrate endo-steel into the engine mod.
we need more TT rules if possible
bundling:
CBT overhaul mods to find ideas from:
since the game does not support large amounts of components (see #38), we should only provide a small number of components with the mod.
some advanced users want to play around with more engines so we still should package in more options.
@Aliencreature did add the more advanced variants.
I would like this source code to have a specific license, I changed all my repos to be UNLICENSE (a.k.a. public domain) but since this also contains crusher bobs work, I would like his permission first.
what method did I miss?
we need 3 head slots
small cockpits would use 1 but have neg effects
standard cockpits take 2 slots, that leaves one head slot empty
move existing cockpit upgrades to actual cockpits that are standard size, leave them with a ++ modifier in the name
dont forget to add weight
can easily be done:
unsure on how to do:
ShutdownCausesInjury
Reuse that code to implement Overheat causes
wait for #64 to be implemented, then add new stat OverheatCausesInjury
see Mech.CheckForHeatDamage on where to patch
see MechShutdownSequence.CheckForHeatDamage on injury code
while endo-steel and ferro-fibrous are easy to show stats for, engines are another beast
currently showing this:
tooltip.detailText.text = "walkSpeed=" + walkSpeed + "\r\n"
+ "runSpeed=" + runSpeed + "\r\n"
+ "TTwalkSpeed=" + TTwalkSpeed + "\r\n"
+ "minHeatSinks=" + minHeatSinks + "\r\n"
+ "maxHeatSinks=" + maxHeatSinks + "\r\n"
+ "dhs=" + engineRef.IsDHS + "\r\n"
+ "dhsSinks=" + engineRef.AdditionalDHSCount + "\r\n"
+ "shsSinks=" + engineRef.AdditionalSHSCount + "\r\n"
+ "engineWeight=" + engineWeight + "\r\n"
+ "gyroWeight=" + gyroWeight + "\r\n"
+ "------- \r\n";
should be reduced to an absolute minimum, and only additional to the detail text of an engine.
Collect crit and show crit multiplier as a single message
Suppress false destroyed message
make engine one slot and gyro one
the gyro ++ should take 2 slots (so engine + gyro++ = base game gyro upgrade)
dont forget to add weight calculations dynamically based on max tonnage engine rating
can easily be done:
unsure on how to do:
since we can't remove items or risk break skirmish mechlab and save games, we should make sure to only add as few items as possible
Note this issues is in conflict with #5
in order to remove added heatsinks from an engine, one has to dismount the whole engine.
however in order to dismount an engine, one has to mount another engine in first.
thats kinda excessive for removing heatsinks.
As the title says, Ferrofibrous armor produces savings equal to 1/1.12 (~90%) of armor tonnage, allowing some quite strange builds . I was able to replicate this on both a Locust (4 tons saved) and a Cataphract (~11 tons saved). I was able to correct it by changing:
public float FerrosFibrousArmorWeightSavingsFactor = 1f / 1.12f;
to
public float FerrosFibrousArmorWeightSavingsFactor = 0.12f;
Apologies if I'm budging in uninvited, but I have been watching this mod for a while and I love toying around with it!
@CrusherBob I have done some extensive changes to the mod (see commits).
we now have std engines, xl engines, endo steel and ferros fibrous.
what do you think is still necessary in order to release a first version?
TODO list from my point of view:
other TODOs?
Cache engine def lookups
Cache engine, structure and armor types lookup
Test if more components hurt or are ok. Maybe allow factional engine tonnage calculations and make xl, lfe, etc just simple kits. Dewcriptions should dynamically change then during tooltips.
right now they display the default heat sink icon
that allows those items to properly have status effects and have them appear in the other filter
do we really want that?
legs:
Hip
Upper Leg
Lower Leg
Foot
arm:
Shoulder
Upper Arm (?)
Lower Arm (optional)
Hand (optional)
http://www.ci-n.com/~jcampbel/rpgs/battletech/FASA/3025/CPLT-C1-Catapult-stats.html
http://www.ci-n.com/~jcampbel/rpgs/battletech/FASA/3025/ON1-K-Orion-stats.html
http://www.ci-n.com/~jcampbel/rpgs/battletech/FASA/3025/GHR-5H-Grasshopper-stats.html
how does DFA upgrades work? -> what kind of actuator replacements? all 4?
how do the melee upgrades work? -> each chassis does supports different number of upgrades / actuators.
Sarna
Torso Cockpits weigh 4 tons and replace the standard Cockpit. Torso Cockpits occupy two spaces in the Center Torso, one for the cockpit and one sensor package. The head mounted Life Support systems are moved to the side torsos. This leaves four critical slots open in the 'Mech's head.[1] The cramped conditions impose a 1 point penalty on all Piloting skill rolls. When the first sensor system is destroyed, add a 2 point penalty on all to-hit rolls. After the second sensor system is destroyed, impose a 4 point to-hit penalty. (If the destroyed sensor systems are both in the head, the 'Mech is effectively blinded and the penalty applies to Piloting skill rolls and physical attacks as well.) If all three sensor systems are destroyed, the 'Mech is completely blind and cannot make weapon attacks as well as suffering a 4 point penalty to Piloting skill rolls.[2]
The proximity to the engine makes a MechWarrior's life difficult as well. The torso mounted life support systems are critical to the operation of the 'Mech. If one Life Support system is destroyed, the MechWarrior will take a point of damage each turn a Torso Cockpit equipped 'Mech is overheated by 1 to 14 points on the 'Mech heat scale. If the 'Mech is overheated by 15 points or more and a Life Support system is destroyed, the MechWarrior will take 2 points of damage.[3]
reactive, reflective and hardened armor have properties that have to be coded in, but the actual problem is that they don't use up slots, so you can't detect them being enabled.
the idea is to add a special slot to all mech locations that can only be used for armor selection.
either make sure to add and filter those things properly (and ignore crits like endo-steel slots), or make it more like regular components you have to scavenge for.
Endo steel, armor, cockput, gyro, maybe more, nothing to do wiith engines.
We need a better name for it than MechEngineMod.
We could also split up stuff into different mods, but thatll reduce my coding time significantly due to overhead in switching between mods and copying code.
Current Candidates:
MechEngineer
MechInternals
Mechlab+
MechEngineer++!
MechTuneUps
PimpMyMech
MechEngineerRedux | KER
MechInternalRevamp | MIR
RealMechInsides | RMI
MechR&D
MechWorkshop
MechPartsExpansion
MooreMechOptions
MechMoore
MechTek
in Mech
public MechComponent GetComponentInSlot(ChassisLocations location, int index)
{
filter out slots from this.allComponents
that way people can decide if they want a fix or not!
after a conversation with TotalMeltdown, my response:
I wont change the 3 xl torso slots to 1, I'll just add 2 torso slots each and remove the ones from the legs and ignore the visual artifacts. I'll just make it dynamically via an autofix setting that applies to all chassis when loading up.
expand saving and loading of MechComponentRefs/BaseComponentRefs (only for engines though)
SimGameUID would be null/"" or "/dhs+5dhs" indicating if shs engine or dhs engine with how many additional heat sinks that were added after the free heatsinks one gets. shs with 3 additionals would be "+3shs". since we allow mixed if configured, "dhs+2dhs+1shs" should be possible.
have an extra item called "DHS Engine Kit" that converts an engine to double heat sinks, it should be worth 10 DHS items.
when dragging and dropping the kit or heat sinks to center torso, try to integrate those into the engine first. Items in engines can only be removed by dismounting the engine. Add the "DHS Engine Kit" back to inventory including all user added dhs.
engines always come with all free shs installed by default.
I'm not fond of the way the items are called and how they display information
since shielding can reduce by half.. core is like 25% and shielding 75% for std?
requires an abstraction of the tooltip patch
we don't know how much tonnage to calculate until that component is in the mech, so would make sense right?
requires rewrite and restructuring of engineCoreRef
Fusion core is ok
RT and LT have to be used to fit space wise or word wrapping happens.
So replace "Engine" with "Shielding"?
XL Shielding, kinda long and not entirely accurate. Lore wise other components are part of an engine too.
XL Components is way to long.
XL Materials, is long but sounds cool, but could also refer to Endo-Steel or FF though
XL Parts, same issue as Materials
XL Assembly, same issue as Materials
XL Case, unfortunately CASE is already reserved
XL Confinement, kinda long
XL Reactor ?!
Maybe I should just rename Fusion Core to "Engine Core" and be done with it,
requires 14 slots
reduces weight per point by 12%
we just copy and paste rules from TT, but how well do they translate to the game mechanics?
When the enthusiast package is active, mechs do not automatically receive engines, gyros and cockpits and the mod's log shows errors. Placing the engines manually works normally.
MechEngineMod [LOG] DynModLib: found up-to-date assembly D:\Battletech\Mods\MechEngineMod\MechEngineMod.dll
MechEngineMod [LOG] Loaded MechEngineMod
MechEngineMod [ERROR] System.FormatException: Input string was not in the correct format
at System.Int32.Parse (System.String s) [0x00000] in :0
at MechEngineMod.EngineCoreDef..ctor (BattleTech.MechComponentDef componentDef) [0x00000] in :0
at MechEngineMod.Extensions.GetEngineCoreDef (BattleTech.MechComponentDef this) [0x00000] in :0
at MechEngineMod.EngineMisc.AddEngineIfPossible (BattleTech.MechDef mechDef) [0x00000] in :0
at MechEngineMod.MechDefMods.PostProcessAfterLoading (BattleTech.Data.DataManager dataManager) [0x00000] in :0
at MechEngineMod.SkirmishMechBayPanelLanceConfiguratorDataLoadedPatch.Prefix (BattleTech.UI.SkirmishMechBayPanel __instance) [0x00000] in :0
MechEngineMod [ERROR] System.FormatException: Input string was not in the correct format
at System.Int32.Parse (System.String s) [0x00000] in :0
at MechEngineMod.EngineCoreDef..ctor (BattleTech.MechComponentDef componentDef) [0x00000] in :0
at MechEngineMod.Extensions.GetEngineCoreDef (BattleTech.MechComponentDef this) [0x00000] in :0
at MechEngineMod.EngineMisc.RefreshAvailability (BattleTech.UI.MechLabInventoryWidget widget, Single tonnage) [0x00000] in :0
at MechEngineMod.MechLabInventoryWidgetRefreshJumpJetOptionsPatch.Postfix (BattleTech.UI.MechLabInventoryWidget __instance, Single ___mechTonnage) [0x00000] in :0
MechEngineMod [ERROR] System.FormatException: Input string was not in the correct format
at System.Int32.Parse (System.String s) [0x00000] in :0
at MechEngineMod.EngineCoreDef..ctor (BattleTech.MechComponentDef componentDef) [0x00000] in :0
at MechEngineMod.Extensions.GetEngineCoreDef (BattleTech.MechComponentDef this) [0x00000] in :0
at MechEngineMod.EngineMisc.RefreshAvailability (BattleTech.UI.MechLabInventoryWidget widget, Single tonnage) [0x00000] in :0
at MechEngineMod.MechLabInventoryWidgetRefreshJumpJetOptionsPatch.Postfix (BattleTech.UI.MechLabInventoryWidget __instance, Single ___mechTonnage) [0x00000] in :0
MechEngineMod [ERROR] System.FormatException: Input string was not in the correct format
at System.Int32.Parse (System.String s) [0x00000] in :0
at MechEngineMod.EngineCoreDef..ctor (BattleTech.MechComponentDef componentDef) [0x00000] in :0
at MechEngineMod.Extensions.GetEngineCoreDef (BattleTech.MechComponentDef this) [0x00000] in :0
at MechEngineMod.EngineMisc.RefreshAvailability (BattleTech.UI.MechLabInventoryWidget widget, Single tonnage) [0x00000] in :0
at MechEngineMod.MechLabInventoryWidgetRefreshJumpJetOptionsPatch.Postfix (BattleTech.UI.MechLabInventoryWidget __instance, Single ___mechTonnage) [0x00000] in :0
MechEngineMod [ERROR] System.FormatException: Input string was not in the correct format
at System.Int32.Parse (System.String s) [0x00000] in :0
at MechEngineMod.EngineCoreDef..ctor (BattleTech.MechComponentDef componentDef) [0x00000] in :0
at MechEngineMod.Extensions.GetEngineCoreDef (BattleTech.MechComponentDef this) [0x00000] in :0
at MechEngineMod.EngineTooltip.AdjustTooltip (MechEngineMod.TooltipPrefab_EquipmentAdapter tooltip, BattleTech.UI.MechLabPanel panel, BattleTech.MechComponentDef mechComponentDef) [0x00000] in :0
at MechEngineMod.TooltipPrefab_EquipmentSetDataPatch.Postfix (BattleTech.UI.Tooltips.TooltipPrefab_Equipment __instance, System.Object data) [0x00000] in :0
MechEngineMod [ERROR] System.FormatException: Input string was not in the correct format
at System.Int32.Parse (System.String s) [0x00000] in :0
at MechEngineMod.EngineCoreDef..ctor (BattleTech.MechComponentDef componentDef) [0x00000] in :0
at MechEngineMod.Extensions.GetEngineCoreDef (BattleTech.MechComponentDef this) [0x00000] in :0
at MechEngineMod.EngineTooltip.AdjustTooltip (MechEngineMod.TooltipPrefab_EquipmentAdapter tooltip, BattleTech.UI.MechLabPanel panel, BattleTech.MechComponentDef mechComponentDef) [0x00000] in :0
at MechEngineMod.TooltipPrefab_EquipmentSetDataPatch.Postfix (BattleTech.UI.Tooltips.TooltipPrefab_Equipment __instance, System.Object data) [0x00000] in :0
MechEngineMod [ERROR] System.FormatException: Input string was not in the correct format
at System.Int32.Parse (System.String s) [0x00000] in :0
at MechEngineMod.EngineCoreDef..ctor (BattleTech.MechComponentDef componentDef) [0x00000] in :0
at MechEngineMod.Extensions.GetEngineCoreDef (BattleTech.MechComponentDef this) [0x00000] in :0
at MechEngineMod.EngineTooltip.AdjustTooltip (MechEngineMod.TooltipPrefab_EquipmentAdapter tooltip, BattleTech.UI.MechLabPanel panel, BattleTech.MechComponentDef mechComponentDef) [0x00000] in :0
at MechEngineMod.TooltipPrefab_EquipmentSetDataPatch.Postfix (BattleTech.UI.Tooltips.TooltipPrefab_Equipment __instance, System.Object data) [0x00000] in :0
MechEngineMod [ERROR] System.FormatException: Input string was not in the correct format
at System.Int32.Parse (System.String s) [0x00000] in :0
at MechEngineMod.EngineCoreDef..ctor (BattleTech.MechComponentDef componentDef) [0x00000] in :0
at MechEngineMod.Extensions.GetEngineCoreDef (BattleTech.MechComponentDef this) [0x00000] in :0
at MechEngineMod.EngineMisc.RefreshAvailability (BattleTech.UI.MechLabInventoryWidget widget, Single tonnage) [0x00000] in :0
at MechEngineMod.MechLabInventoryWidgetRefreshJumpJetOptionsPatch.Postfix (BattleTech.UI.MechLabInventoryWidget __instance, Single ___mechTonnage) [0x00000] in :0
MechEngineMod [ERROR] System.FormatException: Input string was not in the correct format
at System.Int32.Parse (System.String s) [0x00000] in :0
at MechEngineMod.EngineCoreDef..ctor (BattleTech.MechComponentDef componentDef) [0x00000] in :0
at MechEngineMod.Extensions.GetEngineCoreDef (BattleTech.MechComponentDef this) [0x00000] in :0
at MechEngineMod.EngineMisc.RefreshAvailability (BattleTech.UI.MechLabInventoryWidget widget, Single tonnage) [0x00000] in :0
at MechEngineMod.MechLabInventoryWidgetRefreshJumpJetOptionsPatch.Postfix (BattleTech.UI.MechLabInventoryWidget __instance, Single ___mechTonnage) [0x00000] in :0
MechEngineMod [ERROR] System.FormatException: Input string was not in the correct format
at System.Int32.Parse (System.String s) [0x00000] in :0
at MechEngineMod.EngineCoreDef..ctor (BattleTech.MechComponentDef componentDef) [0x00000] in :0
at MechEngineMod.Extensions.GetEngineCoreDef (BattleTech.MechComponentDef this) [0x00000] in :0
at MechEngineMod.EngineTooltip.AdjustTooltip (MechEngineMod.TooltipPrefab_EquipmentAdapter tooltip, BattleTech.UI.MechLabPanel panel, BattleTech.MechComponentDef mechComponentDef) [0x00000] in :0
at MechEngineMod.TooltipPrefab_EquipmentSetDataPatch.Postfix (BattleTech.UI.Tooltips.TooltipPrefab_Equipment __instance, System.Object data) [0x00000] in :0
MechEngineMod [ERROR] System.FormatException: Input string was not in the correct format
at System.Int32.Parse (System.String s) [0x00000] in :0
at MechEngineMod.EngineCoreDef..ctor (BattleTech.MechComponentDef componentDef) [0x00000] in :0
at MechEngineMod.Extensions.GetEngineCoreDef (BattleTech.MechComponentDef this) [0x00000] in :0
at MechEngineMod.EngineTooltip.AdjustTooltip (MechEngineMod.TooltipPrefab_EquipmentAdapter tooltip, BattleTech.UI.MechLabPanel panel, BattleTech.MechComponentDef mechComponentDef) [0x00000] in :0
at MechEngineMod.TooltipPrefab_EquipmentSetDataPatch.Postfix (BattleTech.UI.Tooltips.TooltipPrefab_Equipment __instance, System.Object data) [0x00000] in :0
MechEngineMod [ERROR] System.FormatException: Input string was not in the correct format
at System.Int32.Parse (System.String s) [0x00000] in :0
at MechEngineMod.EngineCoreDef..ctor (BattleTech.MechComponentDef componentDef) [0x00000] in :0
at MechEngineMod.Extensions.GetEngineCoreDef (BattleTech.MechComponentDef this) [0x00000] in :0
at MechEngineMod.EngineTooltip.AdjustTooltip (MechEngineMod.TooltipPrefab_EquipmentAdapter tooltip, BattleTech.UI.MechLabPanel panel, BattleTech.MechComponentDef mechComponentDef) [0x00000] in :0
at MechEngineMod.TooltipPrefab_EquipmentSetDataPatch.Postfix (BattleTech.UI.Tooltips.TooltipPrefab_Equipment __instance, System.Object data) [0x00000] in :0
MechEngineMod [ERROR] System.FormatException: Input string was not in the correct format
at System.Int32.Parse (System.String s) [0x00000] in :0
at MechEngineMod.EngineCoreDef..ctor (BattleTech.MechComponentDef componentDef) [0x00000] in :0
at MechEngineMod.Extensions.GetEngineCoreDef (BattleTech.MechComponentDef this) [0x00000] in :0
at MechEngineMod.EngineTooltip.AdjustTooltip (MechEngineMod.TooltipPrefab_EquipmentAdapter tooltip, BattleTech.UI.MechLabPanel panel, BattleTech.MechComponentDef mechComponentDef) [0x00000] in :0
at MechEngineMod.TooltipPrefab_EquipmentSetDataPatch.Postfix (BattleTech.UI.Tooltips.TooltipPrefab_Equipment __instance, System.Object data) [0x00000] in :0
MechEngineMod [ERROR] System.FormatException: Input string was not in the correct format
at System.Int32.Parse (System.String s) [0x00000] in :0
at MechEngineMod.EngineCoreDef..ctor (BattleTech.MechComponentDef componentDef) [0x00000] in :0
at MechEngineMod.Extensions.GetEngineCoreDef (BattleTech.MechComponentDef this) [0x00000] in :0
at MechEngineMod.EngineTooltip.AdjustTooltip (MechEngineMod.TooltipPrefab_EquipmentAdapter tooltip, BattleTech.UI.MechLabPanel panel, BattleTech.MechComponentDef mechComponentDef) [0x00000] in :0
at MechEngineMod.TooltipPrefab_EquipmentSetDataPatch.Postfix (BattleTech.UI.Tooltips.TooltipPrefab_Equipment __instance, System.Object data) [0x00000] in :0
MechEngineMod [ERROR] System.FormatException: Input string was not in the correct format
at System.Int32.Parse (System.String s) [0x00000] in :0
at MechEngineMod.EngineCoreDef..ctor (BattleTech.MechComponentDef componentDef) [0x00000] in :0
at MechEngineMod.Extensions.GetEngineCoreDef (BattleTech.MechComponentDef this) [0x00000] in :0
at MechEngineMod.EngineTooltip.AdjustTooltip (MechEngineMod.TooltipPrefab_EquipmentAdapter tooltip, BattleTech.UI.MechLabPanel panel, BattleTech.MechComponentDef mechComponentDef) [0x00000] in :0
at MechEngineMod.TooltipPrefab_EquipmentSetDataPatch.Postfix (BattleTech.UI.Tooltips.TooltipPrefab_Equipment __instance, System.Object data) [0x00000] in :0
MechEngineMod [ERROR] System.FormatException: Input string was not in the correct format
at System.Int32.Parse (System.String s) [0x00000] in :0
at MechEngineMod.EngineCoreDef..ctor (BattleTech.MechComponentDef componentDef) [0x00000] in :0
at MechEngineMod.Extensions.GetEngineCoreDef (BattleTech.MechComponentDef this) [0x00000] in :0
at MechEngineMod.EngineTooltip.AdjustTooltip (MechEngineMod.TooltipPrefab_EquipmentAdapter tooltip, BattleTech.UI.MechLabPanel panel, BattleTech.MechComponentDef mechComponentDef) [0x00000] in :0
at MechEngineMod.TooltipPrefab_EquipmentSetDataPatch.Postfix (BattleTech.UI.Tooltips.TooltipPrefab_Equipment __instance, System.Object data) [0x00000] in :0
MechEngineMod [ERROR] System.FormatException: Input string was not in the correct format
at System.Int32.Parse (System.String s) [0x00000] in :0
at MechEngineMod.EngineCoreDef..ctor (BattleTech.MechComponentDef componentDef) [0x00000] in :0
at MechEngineMod.Extensions.GetEngineCoreDef (BattleTech.MechComponentDef this) [0x00000] in :0
at MechEngineMod.EngineTooltip.AdjustTooltip (MechEngineMod.TooltipPrefab_EquipmentAdapter tooltip, BattleTech.UI.MechLabPanel panel, BattleTech.MechComponentDef mechComponentDef) [0x00000] in :0
at MechEngineMod.TooltipPrefab_EquipmentSetDataPatch.Postfix (BattleTech.UI.Tooltips.TooltipPrefab_Equipment __instance, System.Object data) [0x00000] in :0
MechEngineMod [ERROR] System.FormatException: Input string was not in the correct format
at System.Int32.Parse (System.String s) [0x00000] in :0
at MechEngineMod.EngineCoreDef..ctor (BattleTech.MechComponentDef componentDef) [0x00000] in :0
at MechEngineMod.Extensions.GetEngineCoreDef (BattleTech.MechComponentDef this) [0x00000] in :0
at MechEngineMod.EngineMisc.RefreshAvailability (BattleTech.UI.MechLabInventoryWidget widget, Single tonnage) [0x00000] in :0
at MechEngineMod.MechLabInventoryWidgetRefreshJumpJetOptionsPatch.Postfix (BattleTech.UI.MechLabInventoryWidget __instance, Single ___mechTonnage) [0x00000] in :0
don't know if its my mod, my save game or the game itself
This is most prominent in custom variants such as those introduced by RogueTech, but I have a hunch that it affects the SLDF variants already in the story (like the SLDF Black Knight). Upon receiving these mechs, they have double heat sinks with an SHS engine, leading them to be unusable.
Proposed fix: modify the engine fix code to check if there are any DHS on the stock design, and then decide if it should convert the internal sinks to double.
Running the current versions of BTML, ModTek, DynModLib. I first noticed this after updating everything today, but I reinstalled the Battletech modding tools on a clean mod folder with only the default mods and the MechEngineMod. After pressing new game, it is stuck on an infinite loading screen before the character creation kicks in. Removing the MechEngineMod folder fixes the issue both on my usual mod folder and on the clean install.
Attempting to use the DHS conversion kit in the Skirmish mechlab produces the same error as trying to put DHS on an already installed engine in sandbox (that the engine must not already be installed).
is a bit more complicated due to how workorders work, the various inventories that exist and all the possible transitions between them.
all need nice UIName Name Details Manufacturer Model
Problem here, current engine crits don't invalidate effects etc.. need to check how to do that with gyros.
gyro crit:
Total Warfare
Gyro (Torso)
The gyroscope is a ’Mech’s most sensitive piece of machinery. It
keeps the ’Mech upright and able to move. The gyro can survive
only one critical hit; the second destroys it.
After the fi rst critical hit to the gyro, the controlling player must
make a Piloting Skill Roll at the end of the phase in which the
critical hit occurred, with a +3 modifi er (in addition to any other
standard modifi ers); see Making Piloting/Driving Skill Rolls, p. 59. In
addition, the player must make a Piloting Skill Roll every time the
damaged ’Mech runs or jumps, with a +3 modifi er; the roll is made
at the end of the ’Mech’s movement.
When a ’Mech’s gyro is destroyed (after a second critical hit), the
’Mech automatically falls and cannot stand up again; the controlling
player makes an immediate Piloting Skill Roll, with a +6 modifi er
for the destroyed gyro (plus any modifi ers for other damage), to
avoid damaging the MechWarrior during the automatic fall.
’Mechs with a destroyed gyro may make weapon attacks per
Firing When Down, p. 113, and may change facing by one hexside
per turn provided they have at least 1 MP available. A ’Mech with
a destroyed gyro is not considered immobile.
The heat efficiency popup overestimates the heat sinking ability of a mech by always adding the stock 30 heat/turn.
After conversing with TotalMeltdown I think we have enough to make gyros worthwhile, my response to one of his posts:
I've read about gyro crits, basically you are downed and can only turn but not move. I think I can simulate that crit and then it makes sense to have gyro as extra component. if hit your movement speed is 0 and you can basically only turn. probably no JJs either (dont know how to disable those yet though). I'll just add a stock gyro without any stability in mind and a xl variant with more slots.
The tech manual is pretty clear about the costs of a gyro. standard 1.0 ton multi, 4 CBT slots . xl 0.5 ton multi, 6 CBT slots. since 6 CBT slots would mean a full CT a XL gyro actually has to be 3 game slots, so engine + gyro = full CT.
If I understand this mod correctly, someone can use a larger rated engine to increase their mech's speed. Did you also account for the additional jump capacity that would allow?
read up on what happens on limb destructions (can dmglevel be ignored?)
modify the remaining gyro upgrades to be 1 slot high. best do it through code as otherwise new modded content can't be added to center torso.
so we currently add heatsinks into the engine
in crusher bobs overhaul, the amount of heatsinks is not linear to the engine rating up to max 250, that goes against TT rules, do we want that?
also since heatsinks are integrated, there are currently a std single std double xl single xl double engine variants.
I believe that should not be needed, so lets enforce double and single heatsinks on a mech, by default an a std engine uses single heatsinks while an xl engine uses double. if a double heatsink component is mounted on a mech, all heatsinks have to be double (and vice versa). engine integrated heatsinks in mechs are then automatically assumed to be of the type the mech is using.
so remove xl_dhs and xl_shs to be xl again and make heatsink logic work by adding heatsink capabilities through code and what is mounted on a mech.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.