Giter VIP home page Giter VIP logo

yayos-combat-3's Introduction

YayosCombat3

Image

Update of YAYOs mod https://steamcommunity.com/sharedfiles/filedetails/?id=2038409475 Based on the abandoned 1.3 update by Ogliss https://steamcommunity.com/sharedfiles/filedetails/?id=2513695736

Image

Image

*** Completely changes the combat animation and system**

Image

*** Gorgeous melee combat Animation**

Slash, sting, head attack, down attack

Image

*** And ranged combat Animation**

Aiming, reloading, rotating reloading

Image

*** Powerful armor algorithm**

Penetration becomes very important. High-tech armor is no longer pierced by Low-tech weapon

Image

*** Ammunition system and Loadout**

All ranged weapons are changed to consume ammunition. When the enemy runs out of ammo, they will melee combat with a gun.

Image

Ammunition is divided according to techlevel and damage type. For example, flamethrowers require industrial explosive ammunition.

Image

You can set the loadout of ammo and medicine in the drug policy.

Image

*** Other features**

  • Realistic accuracy algorithm

  • Increased projectile speed for stunning

  • Fixed armor to protect hands or feet (only when protecting arms or legs)

*** Options to control all of this**

Image

*** Detail**

  • There is no need to use it with other yayo combat versions. The new version always includes the features of the previous version.

  • The accuracy algorithm is more closely related to the shooting skill level and eliminates the stupid situation of shooting rabbits all day long.

  • The armor algorithm compares the tech level of the weapon and the armor and applies the penetrating power differently.

  • If the armor is better, it deflect almost all attacks.

  • If the penetration of a weapon is high, the durability of the armor is sharply reduced.

  • When the armor's durability drops above a certain number, the bullet starts to hit.

  • The percentage of durability at which the bullet starts to hit is determined by comparing penetration and defense.

  • Reduce enemy armor's durability first with weapons with high tech levels and high penetration. And put the bullets at the weakened ones

*** Load Order**

  • core
  • hugslib
  • gunplay
  • dual wield
  • [ this mod ]

*** Compatibility**

  • This mod has amazing compatibility. Weapons and armor added by most mods will automatically apply this mod's effect.

  • If a feature crash with another mod, you can fix it by turning it off in the options.

*** Incompatible mods**

  • SheathYourSword (all animation is not work)

*** Recommended mod ( Not Required )**

*** Special thanks**

  • Nemomone3003 ( ammo graphic art )
  • Densevoid (Coding help)

*** Tutorial for modders**

set custom ammo for weapon

https://github.com/rimworldYayo/Yayo-s-Combat/wiki/


We will no longer update mods. Since the source code is included and uploaded, you can receive the source code by subscribing to the mod. Any mods are allowed to be uploaded fresh, and if someone wants to, I'm fine with delegating permission to the mod itself to continue on my behalf. (In this case, I will upload the mod for you, but in the long run, you will have to deal with bugs and rimworld versions)

Image

https://steamcommunity.com/sharedfiles/filedetails/changelog/2854006492]![Image](https://img.shields.io/github/v/release/emipa606/YayosCombat3?label=latest%20version&style=plastic&color=9f1111&labelColor=black)

yayos-combat-3's People

Contributors

chrisf-127 avatar emipa606 avatar imgbotapp avatar ogliss avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar

yayos-combat-3's Issues

null error when entering the distress signal camp (Anomaly extension)

Here's the full stacktrace:

[Ref 33804E22]
 at Verse.GenGrid.InBounds (Verse.IntVec3 c, Verse.Map map) [0x00000] in <5806f7e6dfaf42d1aa138df926455e92>:0 
 at Verse.RegionAndRoomQuery.RegionAt (Verse.IntVec3 c, Verse.Map map, Verse.RegionType allowedRegionTypes) [0x00000] in <5806f7e6dfaf42d1aa138df926455e92>:0 
 at Verse.GridsUtility.GetRegion (Verse.IntVec3 loc, Verse.Map map, Verse.RegionType allowedRegionTypes) [0x00000] in <5806f7e6dfaf42d1aa138df926455e92>:0 
 at RimWorld.RefuelWorkGiverUtility.FindEnoughReservableThings (Verse.Pawn pawn, Verse.IntVec3 rootCell, Verse.IntRange desiredQuantity, System.Predicate`1[T] validThing) [0x00039] in <5806f7e6dfaf42d1aa138df926455e92>:0 
 at yayoCombat.reloadUtility.tryAutoReload (RimWorld.CompApparelReloadable cp) [0x0034c] in <6f3bce889f664d15b60ad5b7a2ab6055>:0 
 at yayoCombat.patch_CompApparelReloadable_UsedOnce.Postfix (RimWorld.CompApparelReloadable __instance) [0x0003c] in <6f3bce889f664d15b60ad5b7a2ab6055>:0 
 at RimWorld.CompApparelReloadable.UsedOnce () [0x00032] in <5806f7e6dfaf42d1aa138df926455e92>:0 
     - POSTFIX Mlie.YayosCombat3: Void yayoCombat.patch_CompApparelReloadable_UsedOnce:Postfix(CompApparelReloadable __instance)
 at yayoCombat.reloadUtility.TryThingEjectAmmoDirect (Verse.Thing w, System.Boolean forbidden, Verse.Pawn pawn) [0x00021] in <6f3bce889f664d15b60ad5b7a2ab6055>:0 
 at yayoCombat.patch_Pawn_EquipmentTracker_DropAllEquipment.Prefix (Verse.Pawn_EquipmentTracker __instance, Verse.ThingOwner`1[T] ___equipment) [0x00031] in <6f3bce889f664d15b60ad5b7a2ab6055>:0 
 at Verse.Pawn_EquipmentTracker.DropAllEquipment (Verse.IntVec3 pos, System.Boolean forbid, System.Boolean rememberPrimary) [0x0000e] in <5806f7e6dfaf42d1aa138df926455e92>:0 
     - PREFIX Mlie.YayosCombat3: Void yayoCombat.patch_Pawn_EquipmentTracker_DropAllEquipment:Prefix(Pawn_EquipmentTracker __instance, ThingOwner`1 ___equipment)
 at Verse.Pawn.DropAndForbidEverything (System.Boolean keepInventoryAndEquipmentIfInBed, System.Boolean rememberPrimary) [0x00104] in <5806f7e6dfaf42d1aa138df926455e92>:0 
 at RimWorld.Planet.DistressCallUtility.SpawnCorpses (Verse.Map map, System.Collections.Generic.IEnumerable`1[T] pawns, System.Collections.Generic.IEnumerable`1[T] killers, Verse.IntVec3 root, System.Int32 radius) [0x0010f] in <5806f7e6dfaf42d1aa138df926455e92>:0 
 at RimWorld.Planet.SitePartWorker_DistressCall_Fleshbeasts.PostMapGenerate (Verse.Map map) [0x0014e] in <5806f7e6dfaf42d1aa138df926455e92>:0 
 at RimWorld.Planet.Site.PostMapGenerate () [0x00027] in <5806f7e6dfaf42d1aa138df926455e92>:0 
 at Verse.MapGenerator.GenerateMap (Verse.IntVec3 mapSize, RimWorld.Planet.MapParent parent, Verse.MapGeneratorDef mapGenerator, System.Collections.Generic.IEnumerable`1[T] extraGenStepDefs, System.Action`1[T] extraInitBeforeContentGen, System.Boolean isPocketMap) [0x002c4] in <5806f7e6dfaf42d1aa138df926455e92>:0 
     - PREFIX MapPreview.Main: Void MapPreview.Patches.Patch_Verse_MapGenerator:GenerateMap()
     - POSTFIX OskarPotocki.VFECore: Void VFECore.MapGenerator_GenerateMap_Patch:Postfix(Map __result)
 at Verse.GetOrGenerateMapUtility.GetOrGenerateMap (System.Int32 tile, Verse.IntVec3 size, RimWorld.WorldObjectDef suggestedMapParentDef) [0x0006b] in <5806f7e6dfaf42d1aa138df926455e92>:0 
 at RimWorld.Planet.CaravanArrivalAction_VisitSite.DoEnter (RimWorld.Planet.Caravan caravan, RimWorld.Planet.Site site) [0x00043] in <5806f7e6dfaf42d1aa138df926455e92>:0 
     - TRANSPILER SmashPhil.VehicleFramework: IEnumerable`1 Vehicles.CaravanHandling:DoEnterWithShipsTranspiler(IEnumerable`1 instructions, ILGenerator ilg)
 at RimWorld.Planet.CaravanArrivalAction_VisitSite+<>c__DisplayClass8_0.<Arrived>b__0 () [0x00000] in <5806f7e6dfaf42d1aa138df926455e92>:0 
 at Verse.LongEventHandler.UpdateCurrentSynchronousEvent (System.Boolean& sceneChanged) [0x0001d] in <5806f7e6dfaf42d1aa138df926455e92>:0 
UnityEngine.StackTraceUtility:ExtractStackTrace ()
(wrapper dynamic-method) MonoMod.Utils.DynamicMethodDefinition:Verse.Log.Error_Patch1 (string)
Verse.LongEventHandler:UpdateCurrentSynchronousEvent (bool&)
Verse.LongEventHandler:LongEventsUpdate (bool&)
(wrapper dynamic-method) MonoMod.Utils.DynamicMethodDefinition:Verse.Root.Update_Patch1 (Verse.Root)
Verse.Root_Play:Update ()

And here's a patch to "fix" the issue by making the reload method failsafe:

diff --git a/Source/yayoCombat/yayoCombat/reloadUtility.cs b/Source/yayoCombat/yayoCombat/reloadUtility.cs
index 7b8deca..5a941cb 100644
--- a/Source/yayoCombat/yayoCombat/reloadUtility.cs
+++ b/Source/yayoCombat/yayoCombat/reloadUtility.cs
@@ -174,10 +174,15 @@ internal class reloadUtility
             return;
         }
 
-        var reservableThings = RefuelWorkGiverUtility.FindEnoughReservableThings(
-            desiredQuantity: new IntRange(cp.MinAmmoNeeded(false), cp.MaxAmmoNeeded(false)), pawn: p,
-            rootCell: p.Position,
-            validThing: t => t.def == cp.AmmoDef && p.Position.DistanceTo(t.Position) <= yayoCombat.supplyAmmoDist);
+        var reservableThings = null;
+        try {
+            reservableThings = RefuelWorkGiverUtility.FindEnoughReservableThings(
+                desiredQuantity: new IntRange(cp.MinAmmoNeeded(false), cp.MaxAmmoNeeded(false)), pawn: p,
+                rootCell: p.Position,
+                validThing: t => t.def == cp.AmmoDef && p.Position.DistanceTo(t.Position) <= yayoCombat.supplyAmmoDist);
+        } catch (Exception ex) {
+            Log.error(p + " cannot find ammo for " cp);
+        }
         if (reservableThings == null || p.jobs.jobQueue.ToList().Count > 0)
         {
             return;

Incompatibility with VFE Pirates

WarCaskets (A new armor type) does not work this this mod. The armor does not protect at all. Bullets will act like it's not there.

Log? Go in game and test it, it's a very easily reproduced bug.

"Eject Ammo" designator

Would be nice to have an "Eject Ammo" designator, as it can get a bit tedious to go through every weapon and look whether there's still ammo in them and having to eject it manually.

This - as a designator:
Screenshot 2021-12-10 152135

Maybe I will look into that later, next week or whenever I have time and will to delve into how to create designators - no idea how to do that yet.

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.