[1.0] Verb Expansion Framework (v1.1.5)

Started by ilikegoodfood, July 30, 2019, 06:22:37 AM

Previous topic - Next topic

ilikegoodfood

Verb Expansion Framework

Public Service Announcement
Work on a completely refactored Verb Expansion Framework 2.0 is likely to commence soon(TM).
Soon looks like some time next month Please remember thatit will take considerable time to developel this release, especially with the new changes Tynana has implemented in the code-base.
It will  not be released by myself as I am handing VEF off Erdelf, an increadibly skilled and dedicated RimWorld modder.

About:

The Verb Expansion Framework was initially conceived of as a complete re-implementation of the Range Animal Framework. This initial release has succeeded in that goal, along with a handful of other enhancements.
The long term goal is to provide a broadly increased combat scope, making violence on the Rim more varied, tactical and exotic, than ever before.

Features:

  • All types of Pawn, be they animals, colonists, humanoids or mechanoids, will recognise and use Ranged Verbs from Equipment, Hediffs and Race Definitions.
  • If they have any, animals will use Ranged Verbs preferentially when manhunting (as will manhunting humanoids) or when defending their master.
  • AI with multiple ranged verbs will approximate their usefulness and select the most useful ranged verb to use.
  • Colonists that have Ranged Verbs that are not from their Equipment or that have multiple Ranged Verbs will show an additional Gizmo that allows the player to set which ranged verb they should use in combat (colonists must be drafted to make the selection).
  • Colonists that have Ranged Verbs but do not have any Equipment will display and respect the Toggle Fire-at-Will gizmo.
  • Ranged Verbs from Hediffs display all of the appropriate interactions with the Brawler Trait (unhappy thought, 'Brawler has Ranged Weapon' warning in sidebar, and the Operations 'Add Bill' Menu will display the 'Brawler will be unhappy' warning for appropriate operations).
  • All bleeding-capable pawns have their total bleed rate multiplied by the new Bleed Rate Capacity.
  • Implements Verb_ShootBody, which modifies the damage dealt based on the body size of the pawn using the verb.
  • Implemented VEF_Verb_Explode, VEF_Verb_ExplodeSafe and VEF_Verb_SelfDestruct.
  • Implemented VEF_VerbProperties_Explode to support VEF_Verb_Explode, VEF_Verb_ExplodeSafe and VEF_Verb_SelfDestruct verb classes.
  • Implements versions of Explosions, Extinguishers, and Flames that do not trigger camera shake. Provided by Ogliss.
  • Implements HediffComp and ThingComp versions of Smokepop Belt.
  • Implements HediffComp HealthModifier (Legacy), HealthModifier Capacity and HealthModifierFactor Capacity.
  • Implements HediffSets, allowing you to lock powerful bonuses or penalties behind multiple prerequisite hediffs.

Details:
For full information and documentation, please use the github wiki.

Installation and Compatibility:
The Verb Expansion Framework does not come with any additional content, only utilities for other mods to add content. You will only need to load VEF as a dependancy for another mod.
If you do need to load VEF as a dependancy, it must be loaded between Core and the all mods that are dependant on it. I would recommend placing it high up in the load order, among the other frameworks, such as HugsLibs and JecsTools.


This mod should be compatible with any mod, so long as it doesn't alter the way that equipment, hediffs or ranged verbs work.
Before installing this mod into your precious saved game, load it into your mod-list and attempt to create a new game. Run some basic combat tests and if it produces errors that you do not normally see, report them and discontinue use of the framework with that mod-list.

Downloads:
For RimWorld 1.0
SteamWorkshop
GitHub (Direct Download)

ilikegoodfood

#1
Changelog:
Version 1.1.5:
New Features:
- Implemented VEF_Verb_Explode, VEF_Verb_ExplodeSafe and VEF_Verb_SelfDestruct.
- Implemented VEF_VerbProperties_Explode to support the verb classes.
- Implemented smokepopSound to the SmokepopDefense comps, allowing modders to set what SoundDef is used on the smokepop event.

Version 1.1.4:
New Features:
- HediffSets allow you to lock powerful bonuses behind a list of prerequisite hediffs.
- Verb_ShootBody is an alternative to Verb_Shoot that modifies the damage output based on the bodysize of the pawn firing the verb.

Bugfixes
- Nothing specific, but a bunch of minor and ongoing code improvements.

Version 1.1.3:
Bugfixes
- Myriad small fixes involving the Squad Attack Gizmos.

Compatibility
- Compatibility patch for Cybernetic Warfare's WargearToggle Comp (VEF's gizmo takes over).

Verb Labels
I have discovered that verbs with their own labels must have those labels defined in the language data for your mod. Make sure that the verb's label shows up correctly in game.

Version 1.1.2:
Bugfixes/Compatibility
- Fixed null errorr for pawn that do not inherit comps from Pawn.
- This fixes A RimWorld of Magic's Minions!

Version 1.1.1e:
New Features:
- Implements HealthModifier HediffComp (Legacy), HealthModifier Capacity and HealthModifierFactor Capacity.

Compatibility:
- Reworked out mod-compatibility is set up internally, allowing for faster, more stable, development of mod compatibility.
- Fixed null error in compatibility feature for rollo's DualWield.
- Fixed issues with compatibility for dll-only mods.

Standalone Frameworks:
The Verb Expansion Framework is a large and powerful framework that modifies the selection and use of ranged Verbs on a large scale. In addition to this core foundation, it provides a number of HediffComp and ThingComp sets that would function perfectly well on their own.
Since there are many mods that would benefit from these minor features and that do not require the core features of VEF, it makes sense to split these features into mini-frameworks. I have been working may through the already implemented features creating standalone version that are compatible with each other and with VEF.
Expect these standalone frameworks to become available soon.

Ongoing Work:
I have also been doing extensive work and experimentation with how these frameworks interact in order to minimise any performance impact and i have been examining the inner workings of the shieldbelt system, which is very complex, in order to try and offer Hediff compatible and race definition compatible versions of it. It is vitally important to me that these features interact with each other in a sensible way, try to maintain the core balance of RimWorld and are as mod compatible as humanly possible.
That said, I have had to slow down development, as this has been a manic five weeks for me. I have put in an average of 70 hours of work to this framework each week, to an estimated total of 350 hours in just over a month. Development has not stopped and is continuing, but hopefully at a more sustainable pace.

Version 1.1.0c:
New Features:
- Smokepop Defense HediffComp and ThingComp

Compatibility:
- Partial compatibility for Combat Extended. See the wiki for details.

Bugfixes:
- Fixed compatibility for the Range Animal Framework.
- Fixed Melee attacks triggering Smokepop Belts and Smokepop Defense.
- Fixed null errors on Gizmo as a result of sudden changes in pawn staus (being downed, killed or loosing their weapon)
- Fixed null error in Squad Attack Gizmo Prefix.
- Created a special case for the BattleLog Entry that handles instances where it is no longer possible to determine what weapon was used, such as the pawn being downed or killed between firing the shot and the shot landing.
- Fixed missing 'static' on RangeAnimalFramework compatibility feature.
- Fixed missing `static` on Range Animal Framework compatibility feature.
- Fixed naming errors on Range Animal Framework compatibility features.

Version 1.0.3c:
Bugfixes:
- Resolved crippling null error involving melee weapons and the Verb Gizmo.
- Fixed harmless null error in Battle Log for explosions.
- Fixed harmless null error in Battle Log for certain weapon combinations.
- Fixed Smokepop Belts not being triggered by verbs from other sources.
- Fixed null error that was introduced in recent Gizmo changes.

Version 1.0.2:
Compatibility
- Added compatibility for Range Animal Framework.
- If both VEF and the Range Animal Framework are enabled, VEF will now take over all of the required functions automatically.
- Mod makers are still encouranged to update to VEF from the Range Animal Framework.

Version 1.0.1b:
Compatibility
- Now compatible with roolo's DualWield
- Pawns only dual wield if their primary equipment is selected as their current verb.
- If a pawn's current verb is their primary equipment, it correctly displays the dual wielding icon.

Bugfixes:
- Fixed console spam.
- Fixed Capitalization of labels.
- Fixed ExamplePatches.xml
- Fixed off-hand weapon being drawn over squad attack gizmo.
- Fixed squad attack gizmo not correctly switching to 'squad attack with equipment' when some selected pawns had non-equipment verbs set as primary.

Polish Features
- Provided utility for verb-specific labels.



SargBjornson

Heeeey, awesome! Did you perchance test it with one of the animal mods? I'd love to add multiple ranged attacks per creature :)

ilikegoodfood

#5
I haven't tested it with meod that incorporate the old Range Animals Framework, since they may conflict, but I do know for a fact that it correctly handles multiple ranged verbs on AI, using a modified DPS calculation to select the best verb available for that instance.
If you give an animal a verb that is very accurate at short range, but terrible at long range and one that is the other way around, it will switch between them as the target moves closer, so long as the accuracy change effects the DPS enough.

EDIT: They do indeed conflict.
Fortunately, they require very similar setup for the verbs on the animals, so it shouldn't be too difficult to remove the dependancy on the Range Animal Framework, and switch over to VEF.

SargBjornson

Awesome, I'll run some tests and switch over!

ilikegoodfood

#7
I have succesfully converted Monster Mash over to VEF. I had to change the projectile thingClass back to normal, change the projectile parents, and remove the JobDefOf added by the Range Animal Framework, and I think that was it.

I'm not going to release the conversion yet, as I want to do an extensive overhaul of Monster Mash after implementing some additional features into VEF.

ilikegoodfood

This one's kind of important, so I'm posting an update message to bump this thread:

Bugfixes:
- Resolved crippling null error involving melee weapons and the Verb Gizmo.
- Fixed harmless null error in Battle Log for explosions.
- Fixed harmless null error in Battle Log for certain weapon combinations.

ilikegoodfood

My most major update yet is now out, bringing us to version 1.1.0:
  • Newly implemented Smokepop Defense HediffDef and ThingDef.
  • Partial CE compatibility (make sure to check the wiki for details!).
  • Numerous bugfixes.

Chibisuke


ilikegoodfood

Version 1.1.3 is yet another bug hunting exercise.

This one fixes interactions with Cybernetic Warfare's WargearToggle Comp as well as a number of issues with the squad attack gizmos.

SargBjornson

I still haven't had time to adapt my mods :( One question, some people have complained that the old framework ignored shield belts, have you perchance tested with that?

ilikegoodfood

Version 1.1.4 puts us firmly back on track for producing new content, with the arrival of HediffSets and Verb_ShootBody, as well as myriad tiny code improvements.

ilikegoodfood

VEF verin 1.1.5 brings us new ways to murder on the Rim, with the introduction of three new verbs that all produce explosions centred on te user; VEF_Verb_Explode, VEF_Verb_ExplodeSafe and VEF_Verb_SelfDestruct. These new verbs are fascilitated with the new VEF_VerbProperties_Explode class.

Also implemented a smokepopSound field into the smokepopDefense comps so gthat you can assign custom sounds.