GithubHelp home page GithubHelp logo

biomescore's People

Contributors

cosmicodeum avatar draegon1993 avatar flangopink avatar joseasoler avatar kfish610 avatar m00nl1ght-dev avatar mseal avatar taranchuk avatar tidalcadence avatar udderlyevelyn avatar wvcsergkart avatar xidoneye avatar zylleon avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

biomescore's Issues

Rendering code updates

The following features interact with pawn rendering, and need to be reimplemented with the new vanilla rendering code:

CompProperties_DefensiveReaction
CompProperties_CompSleepGraphic
AlternativePawnGraphics

Digger creature support

These creatures currently have a TMK digging speed set in life stages such as BMT_DiggerBaby. These will need to be switched to the new Pathfinding Framework. See ToDo PathfindingCode in the XML code of the mod for details.

Improve performance of the active terrains feature

There have been reports of DoSingleTick_Patch having a significant impact when playing on the Earthen Depths, which have been confirmed as seen in the following screenshot. The code for this feature is quite old and it could use an update.

image

Aquatic plants can spawn on terrains lacking a Biomes_PlantControl extension

Repro steps:

  1. Setup a modlist with just Biomes! Islands, Geological Landforms, ReGrowth: Arid, and their dependencies.

  2. Launch RimWorld and start a new game on an Arid Shrubland (coast) map.

  3. Kelp will spawn on land as shown in this screenshot:

image

This is happening because Biomes! Core is not patching the RG_AridSoil terrain to add the tags into it. Since we cannot count on patching every mod which adds terrains, we should change the default behaviour of this part of the custom plant growth code. If a plant has some Biomes_PlantControl.terrainTags but the underlying terrain does not have any Biomes_PlantControl.terrainTags , the plant should not be allowed to grow there.

Mod patches

Patches to other mods have not been updated to 1.5 yet.

Incompatability with Rim war

There appears to be some sort of an issue with the interaction between caravan generation wrapper in Biomes Core and rim-war
On version 1.4.3704 with a minimal mod list

Harmony
Core +3DLC
Hugslib
Biomes Core
Rimwar

Description:
Rim war has caravans on the world map, you can interact with them it either initiates combat on some map (for a hostile faction) or opens a GUI with options (for a neutral or friendly faction). Neither of these things occur while both mods are active.
However, interactions (Gui or otherwise) with non trader world map units work just fine the problem is strictly for the traders
Also of note this issue was not present when I was using both mods in Version 1.3

Bug log:
Attacking a hostile caravan

Exception while generating pawn group: System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index
at System.ThrowHelper.ThrowArgumentOutOfRangeException (System.ExceptionArgument argument, System.ExceptionResource resource) [0x00029] in :0
at System.ThrowHelper.ThrowArgumentOutOfRangeException () [0x00000] in :0
at BiomesCore.Patches.PawnGroupKindWorker_Trader_GenerateCarriers.GetExtendedCarriers (System.Collections.Generic.List1[T] originalCarriers, RimWorld.PawnGroupMakerParms parms) [0x000f7] in <afad0cf4ff2c4e1c82dc8c076b79b6d8>:0 at (wrapper dynamic-method) RimWorld.PawnGroupKindWorker_Trader.RimWorld.PawnGroupKindWorker_Trader.GenerateCarriers_Patch0(RimWorld.PawnGroupKindWorker_Trader,RimWorld.PawnGroupMakerParms,RimWorld.PawnGroupMaker,Verse.Pawn,System.Collections.Generic.List1<Verse.Thing>,System.Collections.Generic.List1<Verse.Pawn>) at RimWorld.PawnGroupKindWorker_Trader.GeneratePawns (RimWorld.PawnGroupMakerParms parms, RimWorld.PawnGroupMaker groupMaker, System.Collections.Generic.List1[T] outPawns, System.Boolean errorOnZeroResults) [0x00223] in <95de19971c5d40878d8742747904cdcd>:0
at RimWorld.PawnGroupKindWorker.GeneratePawns (RimWorld.PawnGroupMakerParms parms, RimWorld.PawnGroupMaker groupMaker, System.Boolean errorOnZeroResults) [0x00011] in <95de19971c5d40878d8742747904cdcd>:0
UnityEngine.StackTraceUtility:ExtractStackTrace ()
(wrapper dynamic-method) Verse.Log:Verse.Log.Error_Patch1 (string)
RimWorld.PawnGroupKindWorker:GeneratePawns (RimWorld.PawnGroupMakerParms,RimWorld.PawnGroupMaker,bool)
RimWorld.PawnGroupMaker:GeneratePawns (RimWorld.PawnGroupMakerParms,bool)
RimWorld.PawnGroupMakerUtility/d__2:MoveNext ()
System.Collections.Generic.List1<Verse.Pawn>:.ctor (System.Collections.Generic.IEnumerable1<Verse.Pawn>)
System.Linq.Enumerable:ToList<Verse.Pawn> (System.Collections.Generic.IEnumerable1<Verse.Pawn>) RimWar.Utility.IncidentWorker_WarObjectMeeting:GenerateCaravanPawns (RimWorld.Faction,int) RimWar.Utility.IncidentWorker_WarObjectMeeting:TryExecuteWorker (RimWorld.IncidentParms) RimWar.Utility.IncidentWorker_WarObjectMeeting:PreExecuteWorker (RimWorld.IncidentParms,RimWar.Planet.WarObject,int) RimWar.Planet.IncidentUtility:DoCaravanAttackWithPoints (RimWar.Planet.WarObject,RimWorld.Planet.Caravan,RimWar.RimWarData,RimWorld.PawnsArrivalModeDef,RimWorld.PawnGroupKindDef) RimWar.Planet.WarObject:EngageCaravan (RimWorld.Planet.Caravan) RimWar.Planet.CaravanArrivalAction_AttackWarObject:Arrived (RimWorld.Planet.Caravan) RimWorld.Planet.Caravan_PathFollower:PatherArrived () (wrapper dynamic-method) RimWorld.Planet.Caravan_PathFollower:RimWorld.Planet.Caravan_PathFollower.StartPath_Patch1 (RimWorld.Planet.Caravan_PathFollower,int,RimWorld.Planet.CaravanArrivalAction,bool,bool) RimWorld.Planet.CaravanArrivalActionUtility/<>c__DisplayClass0_01<RimWar.Planet.CaravanArrivalAction_AttackWarObject>:b__0 ()
Verse.FloatMenuOption:Chosen (bool,Verse.FloatMenu)
Verse.FloatMenuOption:DoGUI (UnityEngine.Rect,bool,Verse.FloatMenu)
Verse.FloatMenu:DoWindowContents (UnityEngine.Rect)
Verse.FloatMenuWorld:DoWindowContents (UnityEngine.Rect)
Verse.Window:InnerWindowOnGUI (int)
UnityEngine.GUI:CallWindowDelegate (UnityEngine.GUI/WindowFunction,int,int,UnityEngine.GUISkin,int,single,single,UnityEngine.GUIStyle)

IncidentWorker_CaravanMeeting could not generate any pawns.
UnityEngine.StackTraceUtility:ExtractStackTrace ()
(wrapper dynamic-method) Verse.Log:Verse.Log.Error_Patch1 (string)
RimWar.Utility.IncidentWorker_WarObjectMeeting:TryExecuteWorker (RimWorld.IncidentParms)
RimWar.Utility.IncidentWorker_WarObjectMeeting:PreExecuteWorker (RimWorld.IncidentParms,RimWar.Planet.WarObject,int)
RimWar.Planet.IncidentUtility:DoCaravanAttackWithPoints (RimWar.Planet.WarObject,RimWorld.Planet.Caravan,RimWar.RimWarData,RimWorld.PawnsArrivalModeDef,RimWorld.PawnGroupKindDef)
RimWar.Planet.WarObject:EngageCaravan (RimWorld.Planet.Caravan)
RimWar.Planet.CaravanArrivalAction_AttackWarObject:Arrived (RimWorld.Planet.Caravan)
RimWorld.Planet.Caravan_PathFollower:PatherArrived ()
(wrapper dynamic-method) RimWorld.Planet.Caravan_PathFollower:RimWorld.Planet.Caravan_PathFollower.StartPath_Patch1 (RimWorld.Planet.Caravan_PathFollower,int,RimWorld.Planet.CaravanArrivalAction,bool,bool)
RimWorld.Planet.CaravanArrivalActionUtility/<>c__DisplayClass0_0`1<RimWar.Planet.CaravanArrivalAction_AttackWarObject>:b__0 ()
Verse.FloatMenuOption:Chosen (bool,Verse.FloatMenu)
Verse.FloatMenuOption:DoGUI (UnityEngine.Rect,bool,Verse.FloatMenu)
Verse.FloatMenu:DoWindowContents (UnityEngine.Rect)
Verse.FloatMenuWorld:DoWindowContents (UnityEngine.Rect)
Verse.Window:InnerWindowOnGUI (int)
UnityEngine.GUI:CallWindowDelegate (UnityEngine.GUI/WindowFunction,int,int,UnityEngine.GUISkin,int,single,single,UnityEngine.GUIStyle)

Interacting with a friendly caravan leads to the same 2 errors with same cause

Exception while generating pawn group: System.ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index
at System.ThrowHelper.ThrowArgumentOutOfRangeException (System.ExceptionArgument argument, System.ExceptionResource resource) [0x00029] in :0
at System.ThrowHelper.ThrowArgumentOutOfRangeException () [0x00000] in :0
at BiomesCore.Patches.PawnGroupKindWorker_Trader_GenerateCarriers.GetExtendedCarriers (System.Collections.Generic.List1[T] originalCarriers, RimWorld.PawnGroupMakerParms parms) [0x000f7] in <afad0cf4ff2c4e1c82dc8c076b79b6d8>:0 at (wrapper dynamic-method) RimWorld.PawnGroupKindWorker_Trader.RimWorld.PawnGroupKindWorker_Trader.GenerateCarriers_Patch0(RimWorld.PawnGroupKindWorker_Trader,RimWorld.PawnGroupMakerParms,RimWorld.PawnGroupMaker,Verse.Pawn,System.Collections.Generic.List1<Verse.Thing>,System.Collections.Generic.List1<Verse.Pawn>) at RimWorld.PawnGroupKindWorker_Trader.GeneratePawns (RimWorld.PawnGroupMakerParms parms, RimWorld.PawnGroupMaker groupMaker, System.Collections.Generic.List1[T] outPawns, System.Boolean errorOnZeroResults) [0x00223] in <95de19971c5d40878d8742747904cdcd>:0
at RimWorld.PawnGroupKindWorker.GeneratePawns (RimWorld.PawnGroupMakerParms parms, RimWorld.PawnGroupMaker groupMaker, System.Boolean errorOnZeroResults) [0x00011] in <95de19971c5d40878d8742747904cdcd>:0
UnityEngine.StackTraceUtility:ExtractStackTrace ()
(wrapper dynamic-method) Verse.Log:Verse.Log.Error_Patch1 (string)
RimWorld.PawnGroupKindWorker:GeneratePawns (RimWorld.PawnGroupMakerParms,RimWorld.PawnGroupMaker,bool)
RimWorld.PawnGroupMaker:GeneratePawns (RimWorld.PawnGroupMakerParms,bool)
RimWorld.PawnGroupMakerUtility/d__2:MoveNext ()
System.Collections.Generic.List1<Verse.Pawn>:.ctor (System.Collections.Generic.IEnumerable1<Verse.Pawn>)
System.Linq.Enumerable:ToList<Verse.Pawn> (System.Collections.Generic.IEnumerable1<Verse.Pawn>) RimWar.Utility.IncidentWorker_WarObjectMeeting:GenerateCaravanPawns (RimWorld.Faction,int) RimWar.Utility.IncidentWorker_WarObjectMeeting:TryExecuteWorker (RimWorld.IncidentParms) RimWar.Utility.IncidentWorker_WarObjectMeeting:PreExecuteWorker (RimWorld.IncidentParms,RimWar.Planet.WarObject,int) RimWar.Planet.IncidentUtility:DoCaravanTradeWithPoints (RimWar.Planet.WarObject,RimWorld.Planet.Caravan,RimWar.RimWarData,RimWorld.PawnsArrivalModeDef) RimWar.Planet.WarObject:EngageCaravan (RimWorld.Planet.Caravan) RimWar.Planet.CaravanArrivalAction_EngageWarObject:Arrived (RimWorld.Planet.Caravan) RimWorld.Planet.Caravan_PathFollower:PatherArrived () (wrapper dynamic-method) RimWorld.Planet.Caravan_PathFollower:RimWorld.Planet.Caravan_PathFollower.StartPath_Patch1 (RimWorld.Planet.Caravan_PathFollower,int,RimWorld.Planet.CaravanArrivalAction,bool,bool) RimWorld.Planet.CaravanArrivalActionUtility/<>c__DisplayClass0_01<RimWar.Planet.CaravanArrivalAction_EngageWarObject>:b__0 ()
Verse.FloatMenuOption:Chosen (bool,Verse.FloatMenu)
Verse.FloatMenuOption:DoGUI (UnityEngine.Rect,bool,Verse.FloatMenu)
Verse.FloatMenu:DoWindowContents (UnityEngine.Rect)
Verse.FloatMenuWorld:DoWindowContents (UnityEngine.Rect)
Verse.Window:InnerWindowOnGUI (int)
UnityEngine.GUI:CallWindowDelegate (UnityEngine.GUI/WindowFunction,int,int,UnityEngine.GUISkin,int,single,single,UnityEngine.GUIStyle)

IncidentWorker_CaravanMeeting could not generate any pawns.
UnityEngine.StackTraceUtility:ExtractStackTrace ()
(wrapper dynamic-method) Verse.Log:Verse.Log.Error_Patch1 (string)
RimWar.Utility.IncidentWorker_WarObjectMeeting:TryExecuteWorker (RimWorld.IncidentParms)
RimWar.Utility.IncidentWorker_WarObjectMeeting:PreExecuteWorker (RimWorld.IncidentParms,RimWar.Planet.WarObject,int)
RimWar.Planet.IncidentUtility:DoCaravanTradeWithPoints (RimWar.Planet.WarObject,RimWorld.Planet.Caravan,RimWar.RimWarData,RimWorld.PawnsArrivalModeDef)
RimWar.Planet.WarObject:EngageCaravan (RimWorld.Planet.Caravan)
RimWar.Planet.CaravanArrivalAction_EngageWarObject:Arrived (RimWorld.Planet.Caravan)
RimWorld.Planet.Caravan_PathFollower:PatherArrived ()
(wrapper dynamic-method) RimWorld.Planet.Caravan_PathFollower:RimWorld.Planet.Caravan_PathFollower.StartPath_Patch1 (RimWorld.Planet.Caravan_PathFollower,int,RimWorld.Planet.CaravanArrivalAction,bool,bool)
RimWorld.Planet.CaravanArrivalActionUtility/<>c__DisplayClass0_0`1<RimWar.Planet.CaravanArrivalAction_EngageWarObject>:b__0 ()
Verse.FloatMenuOption:Chosen (bool,Verse.FloatMenu)
Verse.FloatMenuOption:DoGUI (UnityEngine.Rect,bool,Verse.FloatMenu)
Verse.FloatMenu:DoWindowContents (UnityEngine.Rect)
Verse.FloatMenuWorld:DoWindowContents (UnityEngine.Rect)
Verse.Window:InnerWindowOnGUI (int)
UnityEngine.GUI:CallWindowDelegate (UnityEngine.GUI/WindowFunction,int,int,UnityEngine.GUISkin,int,single,single,UnityEngine.GUIStyle)

ActiveTerrain rework

To avoid performance issues, the current ActiveTerrain code limits the total number of time that can be spent ticking terrain comps to an amount of time equal to 25% of the rest of the tick time of the game. During that time budget, the game will try to process as many cells as possible. This has multiple issues:

  1. Since the time budget is calculated depending on the tick time of the rest of the game, players with worse TPS will have longer lava processing times. Earthen Depths punishes players for having bad TPS.

  2. 25% of the total tick time is an enormous amount of time. Lava processing must be more performant.

  3. Breaks compatibility with the multiplayer mod.

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.