ActionLightItemOnFireWithBlowtorch.c
class ActionLightItemOnFireWithBlowtorchCB : ActionLightItemOnFireCB
{
override void CreateActionComponent()
{
m_ActionData.m_ActionComponent = new CAContinuousTime(UATimeSpent.FIREPLACE_IGNITE);
}
}
class ActionLightItemOnFireWithBlowtorch : ActionLightItemOnFire
{
void ActionLightItemOnFireWithBlowtorch()
{
m_CallbackClass = ActionLightItemOnFireWithBlowtorchCB;
}
override bool ActionCondition(PlayerBase player, ActionTarget target, ItemBase item)
{
Blowtorch bt = Blowtorch.Cast(item);
if (!bt.HasEnoughEnergyForRepair(UATimeSpent.FIREPLACE_IGNITE))
{
return false;
}
ItemBase target_item = ItemBase.Cast(target.GetObject());
if (target_item && item)
{
// when igniting item on the ground with igniter in hands
if (!target_item.IsIgnited() && !IsItemInCargoOfSomething(target_item) && target_item.CanBeIgnitedBy(item))
{
// oven stage of standard fireplace
if (target_item.IsKindOf("Fireplace"))
{
if (Fireplace.Cast(target_item).IsOven())
{
return true;
}
if (Fireplace.CanIgniteEntityAsFireplace(target_item))
{
return true;
}
return false;
}
return true;
}
// when igniting item in hands from something on ground
else if (!item.IsIgnited() && !IsItemInCargoOfSomething(item) && target_item.CanIgniteItem(item) && item.CanBeIgnitedBy(target_item))
{
return true;
}
}
return false;
}
override void OnUpdateServer(ActionData action_data)
{
super.OnUpdate(action_data);
if (action_data.m_State == UA_PROCESSING && !action_data.m_MainItem.GetCompEM().IsWorking())
{
Interrupt(action_data);
}
}
override void OnExecuteServer(ActionData action_data)
{
super.OnExecuteServer(action_data);
action_data.m_MainItem.GetCompEM().SwitchOn();
}
override void OnFinishProgressServer(ActionData action_data)
{
super.OnFinishProgressServer(action_data);
action_data.m_MainItem.GetCompEM().SwitchOff();
}
override void OnEndServer(ActionData action_data)
{
super.OnEndServer(action_data);
action_data.m_MainItem.GetCompEM().SwitchOff();
}
}