Releases: SphereII/SphereII.Mods
1.0.59.1007
Version: 1.0.58.1256
[ Resharpen ]
- Fixed an issue where I confused UseTimes with Quantity.
- When you sharpen an item, it'll remove a random amount from the UseTime, capped at 20% of the total max usages
- Added 2 no location entries to be over-ridden in Localization.txt
TooDamagedToSharpen,"This item is too worn out to be resharpened.",""
NotDamagedEnoughToSharpen,"This item is still in pretty good shape.",""
- Cleaned up the code to make it seem like it wasn't developed by a drug addled raccoon.
- If you have used the item 70 times, with a max usage of 250
- A Random number between 51 and 70 is generated.
- 51 comes from 250 max usage * 0.2.
- At most, the Use times will be reduced to 51, with a possible minimum of 69.
[ Powered Workstation ]
- Added a check to see if fuel slots were null before checking if anything was in them.
[ EntityVehicle ]
- Added Harmony patch to EntityVehicle's Kill() to trigger EntityAlive's dropCorpseBlock()
- If the entity vehicle is configured using the following parameters, it'll drop a corpse block.
<property name="CorpseBlock" value="goreBlockAnimal"/>
<property name="CorpseBlockChance" value="1"/>
[ Events ]
- Added two new Mod events to subscribe too
- OnBloodMoonStart / OnBloodMoonEnd.
- This feature is still under development.
[ Solution ]
- Added Peace of Mind and Sample Project to SphereII.Mods Solution
[ Peace of Mind ]
- Fixed an issue where the noose block was causing a warning [ thanks blue name ]
[ Sample Project ]
- Fixed an a block warning [ thanks blue name ]
1.0.58.1256
Version: 1.0.58.1256
[ Resharpen ]
- Fixed an issue where I confused UseTimes with Quantity.
- When you sharpen an item, it'll remove a random amount from the UseTime, capped at 20% of the total max usages
- Added 2 no location entries to be over-ridden in Localization.txt
TooDamagedToSharpen,"This item is too worn out to be resharpened.",""
NotDamagedEnoughToSharpen,"This item is still in pretty good shape.",""
- Cleaned up the code to make it seem like it wasn't developed by a drug addled raccoon.
- If you have used the item 70 times, with a max usage of 250
- A Random number between 51 and 70 is generated.
- 51 comes from 250 max usage * 0.2.
- At most, the Use times will be reduced to 51, with a possible minimum of 69.
[ Powered Workstation ]
- Added a check to see if fuel slots were null before checking if anything was in them.
[ EntityVehicle ]
- Added Harmony patch to EntityVehicle's Kill() to trigger EntityAlive's dropCorpseBlock()
- If the entity vehicle is configured using the following parameters, it'll drop a corpse block.
<property name="CorpseBlock" value="goreBlockAnimal"/>
<property name="CorpseBlockChance" value="1"/>
[ Events ]
- Added two new Mod events to subscribe too
- OnBloodMoonStart / OnBloodMoonEnd.
- This feature is still under development.
[ Solution ]
- Added Peace of Mind and Sample Project to SphereII.Mods Solution
[ Peace of Mind ]
- Fixed an issue where the noose block was causing a warning [ thanks blue name ]
[ Sample Project ]
- Fixed an a block warning [ thanks blue name ]
1.0.56.1453
Version: 1.0.56.1453
[ Sprinklers ]
- Fixed an issue where water sprinklers were not turning on and off on dedicated servers
[ Freshness ]
- Removed test buff of "buffFreshnessSCore" when using the Freshness system and Food Spoilage.
[ Portals ]
- Fixed a null reference when adding a portal key to the text
- Fixed another null reference where there was not a smart mesh on the block
- Fixed an issue where the player would exist in the same block space as the portal, causing the player unstuck message
- Moved player position up by 1 on teleport.
[ Advanced Items - Sharpen ]
- Changed the Sharpen feature to put new item right into backpack / ground, rather than through the crafting queue
- Previously, if you cancelled the resharpen from the crafting queue, you'd get the ingredients of the item back, and not the item you were sharpening.
[ Spawn Particle On Block ]
- Experimental
- Added a series of Harmony patches under Features/Particles/Harmony/Blocks.xml
- OnBlockDamaged, OnBlockAdded, OnBlockRemove
- This will add the specified particle to the block whenever those events are added, if defined on the block.
- The following syntax is supported:
<block name="blah" >
<property class="Particles" >
<!-- Use this particle when the block is added to the world. -->
<!-- comma delimited, if you want to randomize which particle. -->
<!-- otherwise, just a single bundle reference.
<property name="OnSpawnParticle" value="unitybundle,unitybundle2"/>
<!-- If you want to change the particle based on biome?-->
<!-- Use OnSpawn_<biome name> -->
<property name="OnSpawnParticle_pine_forest" value="unitybundle,unitybundle2"/>
<!-- Probably of each block that gets a particle -->
<property name="OnSpawnProb" value="0.2"/>
<!-- If you want a different particle for when it gets damaged -->
<property name="OnDamagedParticle" value="unitybundle,unitybundle2"/>
<property name="OnDamagedParticle_snow" value="unitybundle,unitybundle2"/>
<property name="OnDamagedProb" value="0.2"/>
</property>
</block>
1.0.51.1516
Version: 1.0.51.1516
[ Resharpen ]
- Fixed an issue where the option would not be properly enabled.
- Was looking for the wrong property name.
[ SphereII A Better Life ]
- Many fixes to the models to improve and add hit boxes ( xyth )
- Enables more fishes from pipermac. (xyth)
- Fixed the ModInfo.xml's name entry so it's properly ordered.
1.0.49.1202
Version: 1.0.49.1202
[ Repair From Containers ]
- Adjusted ordering of Nearby Enemy filter
- Check to see if in Party
- Check if nearby entity is in party
- Check if nearby entity is an ally
- Then check if nearby entity can damage you.
- Previously, the "can damage you" check was before the Party check
[ Food Spoilage ]
- Moved Food Spoilage to a Feature folder
- Food Spoilage items will have a new MetaData called "Freshness", which is a percentage of freshness less max durability.
currentSpoilage / maxSpoilage
- Freshness percentage is stored as 0,1 value, with 0.1 being 10%, and 1 being 100% fresh.
- The following vanilla code should be able to compare it through a requirement.
<triggered_effect trigger="onSelfPrimaryActionEnd" action="AddBuff" buff="buffStillFresh">
<requirement name="CompareItemMetaFloat" operation="GTE" value="0.1" key="Freshness"/>
</triggered_effect>
- New Harmony Patches to allow custom Item Type Icons.
- If the Freshness % is above 0%, it will use the AltItemTypeIcon, if it's defined.
- If no AltItemTypeIcon is defined, nothing will display.
- Once freshness reaches 0%, the ItemTypeIcon will be used, if it's defined.
- Example item entry.
<!-- If there's freshness still available, display the campfire icon -->
<property name="AltItemTypeIcon" value="campfire"/>
<!-- If there's no freshness left, display the cold icon -->
<property name="ItemTypeIcon" value="cold"/>
[ FreshnessOnly - A Food Spoilage Sub-Feature ]
- Added a Freshness Only property for ItemClass entry.
- This FreshnessOnly property unlocks a light-weight food spoilage implementation.
- The concept of this feature is to provide an incentive to eat food fresh, without punishing players who are not interested in it.
- If the FreshnessCVar property is defined, then only the cvars listed will be executed again with the multiplier.
- By default, FreshnessCVar is "all".
- If FreshnessCVar is "none", then all ModifyCVars will be ignored from the multiplier.
- Items with this property set to true will not downgrade to another item when spoiled.
- All items in the same stack will lose its freshness at once.
- If this freshness value is 0%, then it will no longer perform calculations
- If this freshness value is 0%, the durability bar will disappear, and the item will appear normally.
- If a freshness value is greater than 0%, then the value of the consumable will be multiplied by that percentage
- Example:
<triggered_effect trigger="onSelfPrimaryActionEnd" action="ModifyCVar" cvar="$waterAmountAdd" operation="add" value="20"/>
With a freshness value of 0.5 ( 50% )
- the $waterAmountAdd will be increased by 20
- the $waterAmountAdd will be further increased by 10. 20 * (.50 + 1 )
- The total $waterAmount will be 30
- When a consumable is ate when it's still fresh, a buff will be applied, letting the player know a bonus is active.
- Example Implementation:
<append xpath="/items/item[@name='drinkJarBlackStrapCoffee']">
<property name="Spoilable" value="true" />
<property name="SpoiledItem" value="drinkJarBlackStrapCoffee" />
<property name="ShowQuality" value="false" />
<property name="SpoilageMax" value="1000" />
<property name="FreshnessOnly" value="true" />
<!-- if specified, it'll only re-trigger the following cvars -->
<property name="FreshnessCVar" value="cvar1,cvar2" />
<!-- If there's freshness still available, display the campfire icon -->
<property name="AltItemTypeIcon" value="campfire"/>
<!-- If there's no freshness left, display the cold icon -->
<property name="ItemTypeIcon" value="cold"/>
</append>
[ SphereII Larger Party ]
- Added a XUi/Config/windows.xml to increase the side of the window for more players.
1.0.46.1010
Version: 1.0.46.1010
[ EntitySwimingSDX / EntitySwimmingSDX ]
- Fixed an issue where fish were leaving the water.
- Each fish searches for water blocks in its area, and uses that to validate it's pathing.
- If a fish has less than 20 water blocks, it'll despawn.
- If a fish leaves the water, it'll despawn.
- Added new class reference to fix spelling error in Swimming.
EntitySwimmingSDX and EntitySwimingSDX are the same, code-wise.
- Kept spelling error to maintain references
[ A Better Life 1.0.0.732 ]
- Adjusted the ModInfo.xml's Name value
- Added the ability to auto-generate the version number.
- Adjusted the entityclasses.xml for class reference for extends.
1.0.39.746
Version: 1.0.38.1615
[ Food Spoilage ]
- Adjusted references within the patches to use their full __instance values, rather than creating shorter forms for cleanliness
- Fixed an issue where a stack was spamming unlimited rotten meat
[ 0-SCore Blocks ]
- Added new class to blocks.xml to support PickUpAndReplace features.
<property class="AdvancedPickUpAndPlace">
<property name="Logging" value="false"/>
<property name="TakeWithTool" value="meleeToolRepairT1ClawHammer" />
</property>
[ Take And Replace ]
- When a TakeWithTools property is set, the default item of clawHammer gets cleared.
- Fixed the ordering of material checks according to the xml defined order.
-> is Block a Valid Material to pick up?
-> Do we need to check the hand item for pick up?
-> Are we holding one of those tools?
-> Does our current hand item have the proper material tag?
- Trying a new design pattern.
-> Hold unto your hats.
- Created some helper shortcuts in order to reduce hard coding many references in the blocks.xml/shapes.xml
- If the TakeWithTool property exists on the block / shape, then a lookup against the AdvancedPickUpAndPlace class is triggered.
-> ValidMaterials operates the same style of lookup.
- This lookup uses the value of the TakeWithTool from the block/shape as a key to an entry in AdvancedPickUpAndPlace.
For Example:
<!-- blocks.xml -->
<property name="TakeWithTool" value="WoodenFenceTools" />
<property name="ValidMaterials" value="woodMaterial"/>
<!-- Config Block -->
<property class="AdvancedPickUpAndPlace">
<property name="Logging" value="false" />
<property name="TakeWithTool" value="meleeToolRepairT1ClawHammer" />
<property name="WoodenFenceTools" value="meleeToolRepairT0StoneAxe,meleeToolRepairT0TazasStoneAxe,meleeToolRepairT1ClawHammer,meleeToolAxeT1IronFireaxe,meleeToolAxeT2SteelAxe,meleeToolAxeT3Chainsaw">
<property name="woodMaterial" value="Mwood_weak,Mwood_regular"/>
</property>
- You may append to the class with your own unique keys
<append xpath="/blocks/block[@name='ConfigFeatureBlock']/property[@class='AdvancedPickUpAndPlace']">
<property name="WoodenFenceTools" value="meleeToolRepairT0StoneAxe,meleeToolRepairT0TazasStoneAxe,meleeToolRepairT1ClawHammer,meleeToolAxeT1IronFireaxe,meleeToolAxeT2SteelAxe,meleeToolAxeT3Chainsaw" />
</append>
1.0.45.853
Version: 1.0.45.853
[ Check Items For Valid Containers ]
- Fixed a null reference when opening up zombie loot bags, because they do not have block properties.
- Questioning life choices that I did not name this feature correctly, and will be forever doomed calling it "Check Items For valid Containers"
- Added additional check for block at the tile location's position
[ ModEvents ]
- Removed a usefuless warning about duplicate mods folder ( this is the standard now )
- This provides a quick hash of all installed mods, allowing overhauls to quickly see at a glance if it matches the expected value.
- The hash is made up of modlet name + version number.
- If more mods are installed than expected, or it has different version numbers, the hash will change.
- Changed the mod hash from a GetHashCode() to a truncated Sha256 value
Modlet List Hash: 7E5FF
1.0.45.1058
Version: 1.0.45.1058
[ Check Items For Valid Containers ]
- Fixed another null reference when blocking an item from the NPC's loot container.
- Added filter for ItemValue's MetaData to exclude them from being added to a chest
- If an ItemValue has a Meta Data of "NoStorage", with a value greater than 0, it will be blocked.
[ NPCs ]
- Added a few new properties to NPCs to block them from being added to storage.
- These are processed regardless of tags on the storage container or item.
- When an NPC is being picked up, NoStorage is read from the entityclass.
- By default, without this property, storage is allowed.
- npcNoStorage localization is added to the 0-SCore's Localization
Example syntax:
<append xpath="/entity_classes/entity_class[@name='npcMeleeTemplate']">
<property name="NoStorage" value="true" />
<property name="DisallowedKey" value="npcNoStorage" />
</append>
1.0.44.1602
Version: 1.0.44.1602
[ Check Items For Valid Containers]
- Introduced a new feature through a series of Harmony patches that allows you to filter items from storage containers.
- Allows you to filter items being added to any given Loot Container based on tags.
- A container with the AllowTags set to "all", will allow all items.
- A container with no AllowTags or DisallowTags will not be checked at all, and act normally.
- If a loot container has the following property, then it will only allow items that have those tags to be stored.
<!-- Only melee, axe, and repairTool items are allowed to be added -->
<!-- But it will not accept any lightarmor -->
<property name="AllowTags" value="melee,axe,repairTool" />
<property name="DisallowTags" value="lightarmor" />
<!-- Items.xml entry -->
<item name="meleeToolRepairT0StoneAxe">
<property name="Tags" value="axe,melee,light,tool,longShaft,repairTool,miningTool,attStrength,perkMiner69r,perkMotherLode,perkTheHuntsman,canHaveCosmetic,harvestingSkill,corpseRemoval"/>
<!-- Example -->
<block name="cntSphereTagTest">
<property name="Extends" value="cntWoodWritableCrate"/>
<property name="LootList" value="playerWoodWritableStorage"/>
<property name="AllowTags" value="melee,axe,repairTool" />
</block>
- If an item is blocked, a denied UI sound will be triggered.
- If an item is dragged and dropped in a blocked container, a tooltip will also display.
- Shift clicking on an item to move it will play the denied UI.
- If a block has the following Property, this will be used to check for localization and display a custom blocked message.
<property name="DisallowedKey" value="NoPickUpForNPCs" />
- This property can also exist on the Item entry as well, and will over-ride the block's message, if it's set.
- If not otherwise set, the default localization entry will be displayed.