12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- class ActionCollectBloodTargetCB : ActionContinuousBaseCB
- {
- override void CreateActionComponent()
- {
- m_ActionData.m_ActionComponent = new CAContinuousTime(UATimeSpent.COLLECT_BLOOD);
- }
- };
- class ActionCollectBloodTarget: ActionContinuousBase
- {
- void ActionCollectBloodTarget()
- {
- m_CallbackClass = ActionCollectBloodTargetCB;
- m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_SALINEBLOODBAGTARGET;
- m_FullBody = true;
- m_StanceMask = DayZPlayerConstants.STANCEMASK_ERECT | DayZPlayerConstants.STANCEMASK_CROUCH;
- m_SpecialtyWeight = UASoftSkillsWeight.PRECISE_HIGH;
- m_Text = "#collect_persons_blood";
- }
- override void CreateConditionComponents()
- {
- m_ConditionItem = new CCINonRuined;
- m_ConditionTarget = new CCTMan( UAMaxDistances.DEFAULT );
- }
-
- override void OnEndServer( ActionData action_data )
- {
- super.OnEndServer(action_data);
-
- PlayerBase ntarget = PlayerBase.Cast( action_data.m_Target.GetObject() );
-
- if ( !ntarget )
- return;
-
- Param1<float> nacdata;
- Class.CastTo( nacdata, action_data.m_ActionComponent.GetACData() );
- float delta = 0;
- if ( nacdata )
- delta = ( nacdata.param1 / UATimeSpent.COLLECT_BLOOD );
-
- if ( delta > 0 )
- {
- ActionCollectBloodTargetLambda lambda = new ActionCollectBloodTargetLambda(action_data.m_MainItem, "BloodBagFull", action_data.m_Player, m_SpecialtyWeight, ntarget, delta);
- action_data.m_Player.ServerReplaceItemInHandsWithNew(lambda);
- }
- }
- };
- class ActionCollectBloodTargetLambda : ReplaceItemWithNewLambda
- {
- float m_SpecialtyWeight;
- float m_percentFilled;
- PlayerBase m_Target;
- void ActionCollectBloodTargetLambda(EntityAI old_item, string new_item_type, PlayerBase player, float specialtyWeight, PlayerBase target, float delta) { m_SpecialtyWeight = specialtyWeight; m_Target = target; m_percentFilled = delta; }
- override void CopyOldPropertiesToNew(notnull EntityAI old_item, EntityAI new_item)
- {
- float maxQuantity;
- float quantitySet;
- super.CopyOldPropertiesToNew(old_item, new_item);
- if ( new_item )
- {
- ItemBase old_item_IB = ItemBase.Cast(old_item);
- ItemBase new_item_IB = ItemBase.Cast(new_item);
-
- ItemBase.Cast( old_item ).TransferModifiers( m_Target );
- MiscGameplayFunctions.TransferItemProperties( old_item_IB, new_item_IB, true, false, true );
- ItemBase.Cast( new_item ).SetLiquidType( m_Target.GetStatBloodType().Get() );
-
- maxQuantity = ItemBase.Cast( new_item ).GetQuantityMax();
- quantitySet = m_percentFilled * maxQuantity;
- ItemBase.Cast( new_item ).SetQuantity( quantitySet );
- m_Target.AddHealth( "", "Blood", -quantitySet );
-
- if ( m_Player.HasBloodTypeVisible() )
- BloodContainerBase.Cast( new_item ).SetBloodTypeVisible( true );
- PluginTransmissionAgents plugin = PluginTransmissionAgents.Cast(GetPlugin(PluginTransmissionAgents));
- plugin.TransmitAgents(m_Target, new_item, AGT_UACTION_TO_ITEM);
- }
- else
- {
- Debug.LogError("ActionCollectBloodTargetLambda: failed to create new item","static");
- }
- }
- };
|