RustTip

OnLoseCondition

OxideCarbonGlobal

Called when an item's condition is reduced or it breaks.

void OnLoseCondition(Item item, ref float amount)
Работает — метод игры в этой сборке тот же, под который написан хук.

Параметры

item
Item
amount
ref float

Возвращаемое значение

voidВозвращаемое значение игнорируется — хук только уведомляет.

Пример

private void OnLoseCondition(Item item, ref float amount)
{
    Puts("OnLoseCondition");
}

Работает и в Oxide, и в Carbon: Carbon загружает плагины Oxide без изменений.

Где вызывается

ядро Oxide (Oxide.Rust)
RustCore::IOnLoseCondition(Item item, float amount)

Код ядра Oxide — отсюда вызывается хук

private object IOnLoseCondition(Item item, float amount)
{
    object[] arguments = { item, amount };
    Interface.CallHook("OnLoseCondition", arguments);
    amount = (float)arguments[1];
    float condition = item.condition;
    item.condition -= amount;
    if (item.condition <= 0f && item.condition < condition)
    {
        item.OnBroken();
    }

// …

Место встраивания

Rust.opj (Oxide)
void Item.LoseCondition(float)

Встроен служебный хук IOnLoseCondition — этот хук вызывает его обработчик в ядре Oxide/Carbon

РаботаетReturnBehavior: ExitWhenValidTypeArgumentBehavior: AllAssembly-CSharp.dll

Где вызывается (код игры этой ветки)

public void LoseCondition(float amount)
{
	if (hasCondition && !Debugging.disablecondition)
	{
		if (Interface.CallHook("IOnLoseCondition", this, amount) != null)
		{
			return;
		}
		float num = condition;
		condition -= amount;
		if (Global.developer > 0)
		{
			Debug.Log(info.shortname + " was damaged by: " + amount + "cond is: " + condition + "/" + maxCondition);
// …

Источники: Rust.opj из OxideMod/Oxide.Rust (MIT) и метаданные хуков документации Carbon (MIT). Код методов — декомпиляция сервера этой ветки.