JARL
JARL (Just Another Rounds Library) is a versatile toolkit that introduces a Armor Framework and provides utilities like CustomCardUnity to streamline the creation of custom cards in Unity
Last updated | 6 days ago |
Total downloads | 85173 |
Total rating | 1 |
Categories | Server-side Custom Cards Utilities |
Dependency string | AALUND13-JARL-2.5.1 |
Dependants | 5 other packages depend on this package |
This mod requires the following mods to function
Pykess-ModdingUtils
Utilities aimed at making modding easier and more accessible
Preferred version: 0.4.6willis81808-UnboundLib
This is a helpful utility for ROUNDS modders aimed at simplifying common tasks.
Preferred version: 3.2.10Root-Classes_Manager_Reborn
A recreation of the original Classes Manager, with added features.
Preferred version: 1.5.4README
JARL (Just Another Rounds Library)
JARL (Just Another Rounds Library) is a versatile toolkit that introduces a Armor Framework
and provides utilities like CustomCardUnity
to streamline the creation of custom cards in Unity.
Feel free send your suggestions or bug report in issues tab.
Features
-
Armor Framework: JARL integrates a flexible Armor Framework, empowering developers to craft their own armor or incorporate methods into armors created by other developers. This is achieved through the utilization of
DamageProcessingMethodsAfter
andDamageProcessingMethodsBefore
, allowing for extensive customization. -
Custom Card Unity: JARL also includes CustomCard for Unity, a class that can be inherited to create custom cards within the Unity environment.
Usage
Armor Framework
Creating a Armor Type
You can create an armor type by inheriting from the ArmorBase
class. Here is an example of an armor type:
public class ExampleArmor : ArmorBase {
public override BarColor GetBarColor() {
return new BarColor(Color.cyan * 0.6f, Color.cyan * 0.45f);
}
public ExampleArmor() {
ArmorTags.Add("CanArmorPierce");
reactivateArmorType = ArmorReactivateType.Second;
}
}
The base class ArmorBase
has a lot of methods/properties that you can change/override to customize your armor. Take a look at the ArmorBase
class to see all the methods/properties that you can change/override.
Registering Armor
After creating your armor, you can register it using the RegisterArmorType
method from the ArmorFramework
class:
void Start() {
ArmorFramework.RegisterArmorType<ExampleArmor>();
}
Adding Armor To Players
You can add armor to a player, for example, when a player picks a card, by using the AddArmor
method from the ArmorHandler
class:
public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats) {
ArmorFramework.armorHandlers[player].AddArmor<ExampleArmor>(50, 5, 5, ArmorReactivateType.Second, 5);
}
Custom Unity Card
Creating a Custom Card For Unity
You can create a custom unity card by inheriting from CustomUnityCard
. Here is an example of a custom card for Unity:
using JARL.Bases;
public class ExampleUnityCard : CustomUnityCard {
public override void OnAddCard(Player player, Gun gun, GunAmmo gunAmmo, CharacterData data, HealthHandler health, Gravity gravity, Block block, CharacterStatModifiers characterStats) {
// Your Code Here
}
public override string GetModName() {
return "Your Mod Initials";
}
}
[!Note] Make sure you called
CustomUnityCard::Register
after you register your card.
Your dont need to callCustomUnityCard::Register
if you are using theCardRegister
class from theJARL
namespace, Because it will automatically call theCustomUnityCard::Register
method for you.
Death Handler
Creating a Death Handler
To handle player deaths and track who dealt damage, you can create a custom death handler. Here an example:
using JARL.Utils;
using System.Collections.Generic;
using System.Text;
using UnityEngine;
public class ExampleDeathHandler : MonoBehaviour {
private static void OnPlayerDeath(Player player, Dictionary<Player, DamageInfo> playerDamageInfos) {
StringBuilder stringBuilder = new StringBuilder();
stringBuilder.AppendLine($"Player {player.playerID} died.");
foreach(var playerLastDamage in playerDamageInfos) {
stringBuilder.AppendLine($"Player {playerLastDamage.Key.playerID} dealt {playerLastDamage.Value.DamageAmount} damage {playerLastDamage.Value.TimeSinceLastDamage} seconds ago.");
}
}
void Awake() {
DeathHandler.OnPlayerDeath += OnPlayerDeath;
}
void OnDestroy() {
DeathHandler.OnPlayerDeath -= OnPlayerDeath;
}
}