ActionCheckPulseTarget.c
class ActionCheckPulseTargetCB : ActionContinuousBaseCB
{
override void CreateActionComponent()
{
m_ActionData.m_ActionComponent = new CAContinuousTime(UATimeSpent.CHECK_PULSE);
}
};
class ActionCheckPulseTarget: ActionContinuousBase
{
const int TARGET_IRREGULAR_PULSE_BIT = 1 << 31;
void ActionCheckPulseTarget()
{
m_CallbackClass = ActionCheckPulseTargetCB;
m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_CHECKPULSE;
m_FullBody = true;
m_StanceMask = DayZPlayerConstants.STANCEMASK_CROUCH;
m_SpecialtyWeight = UASoftSkillsWeight.ROUGH_HIGH;
m_Text = "#check_pulse_target";
}
static string GetPulseMessage(EPulseType pulse_type, int blood_level)
{
//builds string table keys:
//pulse_strong
//pulse_decent
//pulse_moderate
//pulse_weak
//pulse_faint
//pulse_strong_irregular
//pulse_decent_irregular
//pulse_moderate_irregular
//pulse_weak_irregular
//pulse_faint_irregular
string blood_msg = "strong";
string pulse_msg = "";
if(pulse_type == EPulseType.IRREGULAR)
{
pulse_msg = "_irregular";
}
if( blood_level == EStatLevels.HIGH )
{
blood_msg = "decent";
}
if( blood_level == EStatLevels.MEDIUM )
{
blood_msg = "moderate";
}
if( blood_level == EStatLevels.LOW )
{
blood_msg = "weak";
}
if( blood_level == EStatLevels.CRITICAL )
{
blood_msg = "faint";
}
//string message = blood_msg + " " + pulse_msg + " pulse";
string message = "#"+ "pulse_" + blood_msg + pulse_msg;
return message;
}
override bool ActionCondition( PlayerBase player, ActionTarget target, ItemBase item )
{
PlayerBase ntarget = PlayerBase.Cast( target.GetObject() );
if( ntarget && ntarget.IsAlive())
{
return true;
}
return false;
}
override typename GetInputType()
{
return ContinuousInteractActionInput;
}
override void CreateConditionComponents()
{
m_ConditionItem = new CCINone;
m_ConditionTarget = new CCTMan(UAMaxDistances.DEFAULT);
}
override void OnFinishProgressServer( ActionData action_data )
{
PlayerBase target_player = PlayerBase.Cast(action_data.m_Target.GetObject());
if (target_player)
{
PlayerBase player = action_data.m_Player;
CachedObjectsParams.PARAM1_INT.param1 = target_player.GetStatLevelBlood();
bool pulse_type = target_player.GetPulseType();
if (pulse_type == EPulseType.IRREGULAR)
CachedObjectsParams.PARAM1_INT.param1 = CachedObjectsParams.PARAM1_INT.param1 | (1 << TARGET_IRREGULAR_PULSE_BIT);
g_Game.RPCSingleParam( player ,ERPCs.RPC_CHECK_PULSE, CachedObjectsParams.PARAM1_INT, true, player.GetIdentity() );
}
}
override void OnFinishProgressClient( ActionData action_data )
{
PlayerBase ntarget = PlayerBase.Cast( action_data.m_Target.GetObject() );
if(ntarget)
{
action_data.m_Player.m_CheckPulseLastTarget = ntarget;
}
}
};