custom raid BBP
unknown
csharp
a year ago
13 kB
7
Indexable
class ActionDestroyBBPCB : ActionContinuousBaseCB { override void CreateActionComponent() { Object targetObject = m_ActionData.m_Target.GetObject(); BaseBuildingBase m_target = BaseBuildingBase.Cast(targetObject); int raidTime = GetRaidTimeBBP(); m_ActionData.m_ActionComponent = new CAContinuousTime( raidTime ); ItemBase item = m_ActionData.m_MainItem; if (item && item.isBBPAdminTool()) { m_ActionData.m_ActionComponent = new CAContinuousTime(0.1); return; } } int GetRaidTimeBBP() { BaseBuildingBase targetObject = BaseBuildingBase.Cast( m_ActionData.m_Target.GetObject() ); BBP_BASE bbpbase = BBP_BASE.Cast(targetObject); PlayerBase BBP_player = m_ActionData.m_Player; //Concrete if ( bbpbase.BBPGetTier() == 3 ) { return getBaseDestroyTimeT3(); } //Metal else if ( bbpbase.BBPGetTier() == 2) { return getBaseDestroyTimeT2(); } //Wood else if ( bbpbase.BBPGetTier() == 1) { return getBaseDestroyTimeT1(); } //frame else { return 5; } //Default return getBaseDestroyTimeT1(); } int getBaseDestroyTimeT3() { BBPConfig BBP_config = GetDayZGame().getBBPGlobals(); if (BBP_config) { return BBP_config.BBP_Tier3RaidTime; } else { return 1200; } } int getBaseDestroyTimeT2() { BBPConfig BBP_config = GetDayZGame().getBBPGlobals(); if (BBP_config) { return BBP_config.BBP_Tier2RaidTime; } else { return 300; } } int getBaseDestroyTimeT1() { BBPConfig BBP_config = GetDayZGame().getBBPGlobals(); if (BBP_config) { return BBP_config.BBP_Tier1RaidTime; } else { return 600; } } }; class ActionDestroyBBP: ActionContinuousBase { void ActionDestroyBBP() { m_CallbackClass = ActionDestroyBBPCB; m_CommandUID = DayZPlayerConstants.CMD_ACTIONFB_DISASSEMBLE; m_FullBody = true; m_StanceMask = DayZPlayerConstants.STANCEMASK_ERECT; m_SpecialtyWeight = UASoftSkillsWeight.ROUGH_HIGH; m_Text = "#destroy"; } override void CreateConditionComponents() { m_ConditionItem = new CCINonRuined; m_ConditionTarget = new CCTNone;//CCTNonRuined( UAMaxDistances.BASEBUILDING ); } override bool CanBeUsedLeaning() { return false; } private string customText = "ERROR"; void SetCustomText(string text) { customText = "#destroy " + text; } override void OnActionInfoUpdate( PlayerBase player, ActionTarget target, ItemBase item ) { Object targetObject = target.GetObject(); if (targetObject.IsInherited(BBP_BASE)) { BBP_BASE bbpbase = BBP_BASE.Cast(targetObject); if(bbpbase.CanCloseFence()) { customText = "CLOSE THE DAMN DOOR TO RAID!"; } m_Text = customText; } } override string GetText() { if(customText != "ERROR") { return customText; } return "ERROR"; } bool HasRaidToolT1(ItemBase item_in_hands, ActionTarget target) { if(item_in_hands && item_in_hands.isBBPAdminTool()) { return true; } ref TStringArray j_raidingToolsW = GetDayZGame().GetBBPRaidToolsT1(); foreach (string toolW : j_raidingToolsW) { if ( item_in_hands && item_in_hands.IsKindOf(toolW)) { return true; } } return false; } bool HasRaidToolT2(ItemBase item_in_hands, ActionTarget target) { if(item_in_hands && item_in_hands.isBBPAdminTool()) { return true; } ref TStringArray j_raidingToolsM = GetDayZGame().GetBBPRaidToolsT2(); foreach (string toolM : j_raidingToolsM) { if ( item_in_hands && item_in_hands.IsKindOf(toolM) ) { return true; } } return false; } bool HasRaidToolT3(ItemBase item_in_hands, ActionTarget target) { if(item_in_hands && item_in_hands.isBBPAdminTool()) { return true; } ref TStringArray j_raidingToolsC = GetDayZGame().GetBBPRaidToolsT3(); foreach (string tool : j_raidingToolsC) { if ( item_in_hands && item_in_hands.IsKindOf(tool)) { return true; } } return false; } override bool ActionCondition( PlayerBase player, ActionTarget target, ItemBase item ) { Object targetObject = target.GetObject(); if (player.GetBrokenLegs() == eBrokenLegs.BROKEN_LEGS) return false; if (targetObject && !targetObject.IsInherited(BBP_BASE)) { return false; } if (targetObject && targetObject.IsInherited(BBP_BASE)) { BBP_BASE bbpbase = BBP_BASE.Cast(targetObject); if ( bbpbase && bbpbase.isDismantle() ) { return false; } if ( bbpbase && bbpbase.DisableDestroyBBP() ) { return false; } if ( getDisableDestroyBBP() == 1 ) { return false; } if ( bbpbase && bbpbase.DisableDestroyBBP() ) { return false; } if (bbpbase && bbpbase.BBPGetTier() != 69) //frame //t1_wall_logs_horizontal //t2_metal //t3_wall_concrete_bricks //t1_door //t3_door { if(!bbpbase.isflat() && !bbpbase.HasProperDistanceBBP( "inside", player) || (bbpbase.isflat() && !bbpbase.HasProperDistanceFlatBBP( "inside", player))) { //door dumbass logic if ( getBaseRaidOnlyDoorsBBP() == 1 ) { if(bbpbase && bbpbase.IsBBPGate()) { if(bbpbase.BBPGetTier() == 3) { if ( !HasRaidToolT3(item, target) ) { return false; } SetCustomText(bbpbase.PartGetBBP()); return true; } //t2 else if(bbpbase.BBPGetTier() == 2) { if ( !HasRaidToolT2(item, target) ) { return false; } SetCustomText(bbpbase.PartGetBBP()); return true; } //t1 else if(bbpbase.BBPGetTier() == 1) { if ( !HasRaidToolT1(item, target) ) { return false; } SetCustomText(bbpbase.PartGetBBP()); return true; } //door only built else if(bbpbase.BBPGetTier() == 0) { if ( !HasRaidToolT1(item, target) ) { return false; } SetCustomText(bbpbase.PartGetBBP()); return true; } } return false; } //t3 if(bbpbase.BBPGetTier() == 3) { if ( !HasRaidToolT3(item, target) ) { return false; } SetCustomText(bbpbase.PartGetBBP()); return true; } //t2 else if(bbpbase.BBPGetTier() == 2) { if ( !HasRaidToolT2(item, target) ) { return false; } SetCustomText(bbpbase.PartGetBBP()); return true; } //t1 else if(bbpbase.BBPGetTier() == 1) { if ( !HasRaidToolT1(item, target) ) { return false; } SetCustomText(bbpbase.PartGetBBP()); return true; } //door only else if(bbpbase.BBPGetTier() == 0) { if ( !HasRaidToolT1(item, target) ) { return false; } SetCustomText(bbpbase.PartGetBBP()); return true; } } } return false; } return false; } override bool ActionConditionContinue( ActionData action_data ) { Object targetObject = action_data.m_Target.GetObject(); if (targetObject && targetObject.IsInherited(BBP_BASE)) { return true; } else { customText = "ERROR"; return false; } } override void OnFinishProgressServer( ActionData action_data ) { Object targetObject = action_data.m_Target.GetObject(); if (targetObject.IsInherited(BBP_BASE)) { BBP_BASE bbpbase = BBP_BASE.Cast(targetObject); Construction construction = bbpbase.GetConstruction(); if (GetGame().IsServer()) { string PlayerName = action_data.m_Player.GetIdentity().GetName(); string PlayerPlainID = action_data.m_Player.GetIdentity().GetPlainId(); m_AdminLog.LogPrint("[BBP] '" + PlayerName + "' (" + PlayerPlainID + ") DESTROYED " + action_data.m_Target.GetObject().GetDisplayName() + " using " + action_data.m_MainItem.GetDisplayName() + " LOCATION:" + action_data.m_Player.GetPosition()); //m_AdminLog.LogPrint("[BBP] '" + PlayerName + "' (" + PlayerPlainID + ") DESTROYED " + action_data.m_Target.GetObject().GetDisplayName() + " with " + action_data.m_MainItem.GetDisplayName()); } if(bbpbase.BBPGetTier() == 3) { action_data.m_MainItem.DecreaseHealth( getBaseDestroyToolDamageT3(), false ); } //t2 else if(bbpbase.BBPGetTier() == 2) { action_data.m_MainItem.DecreaseHealth( getBaseDestroyToolDamageT2(), false ); } //t1 else if(bbpbase.BBPGetTier() == 1) { action_data.m_MainItem.DecreaseHealth( getBaseDestroyToolDamageT1(), false ); } //t1 else if(bbpbase.BBPGetTier() == 0) { action_data.m_MainItem.DecreaseHealth( getBaseDestroyToolDamageT1(), false ); construction.DestroyPartServer( action_data.m_Player, "frame" , AT_DESTROY_PART ); } if (bbpbase && bbpbase.BBP_HasLock()) { bbpbase.BBP_LockHealth(); } if(bbpbase.CanCloseFence()) { construction.DestroyPartServer( action_data.m_Player, "frame" , AT_DESTROY_PART ); } if(!bbpbase.BBP_HasDoor()) { if (bbpbase.GetConstruction().IsPartConstructed( "t3_wall_concrete_bricks_2" )) { construction.DestroyPartServer( action_data.m_Player, "t3_wall_concrete_bricks_2" , AT_DESTROY_PART ); } if (bbpbase.GetConstruction().IsPartConstructed( "t3_wall_concrete_bricks" )) { construction.DestroyPartServer( action_data.m_Player, "t3_wall_concrete_bricks" , AT_DESTROY_PART ); } if (bbpbase.GetConstruction().IsPartConstructed( "window_bars" )) { construction.DestroyPartServer( action_data.m_Player, "window_bars" , AT_DESTROY_PART ); } if (bbpbase.GetConstruction().IsPartConstructed( "t2_metal" )) { construction.DestroyPartServer( action_data.m_Player, "t2_metal" , AT_DESTROY_PART ); } if (bbpbase.GetConstruction().IsPartConstructed( "t2_metal_2" )) { construction.DestroyPartServer( action_data.m_Player, "t2_metal_2" , AT_DESTROY_PART ); } if (bbpbase.GetConstruction().IsPartConstructed( "t1_wall_logs_horizontal" )) { construction.DestroyPartServer( action_data.m_Player, "t1_wall_logs_horizontal" , AT_DESTROY_PART ); } if (bbpbase.GetConstruction().IsPartConstructed( "t1_wall_logs_horizontal_2" )) { construction.DestroyPartServer( action_data.m_Player, "t1_wall_logs_horizontal_2" , AT_DESTROY_PART ); } if (bbpbase.GetConstruction().IsPartConstructed( "t1_wall_planks" )) { construction.DestroyPartServer( action_data.m_Player, "t1_wall_planks" , AT_DESTROY_PART ); } } if(bbpbase.BBP_HasDoor()) { if (bbpbase.GetConstruction().IsPartConstructed( "t3_door" )) { construction.DestroyPartServer( action_data.m_Player, "t3_door" , AT_DESTROY_PART ); } if (bbpbase.GetConstruction().IsPartConstructed( "t2_door" )) { construction.DestroyPartServer( action_data.m_Player, "t2_door" , AT_DESTROY_PART ); } if (bbpbase.GetConstruction().IsPartConstructed( "t1_door" )) { construction.DestroyPartServer( action_data.m_Player, "t1_door" , AT_DESTROY_PART ); } if (bbpbase.GetConstruction().IsPartConstructed( "window_bars" )) { construction.DestroyPartServer( action_data.m_Player, "window_bars" , AT_DESTROY_PART ); } } action_data.m_Player.GetSoftSkillsManager().AddSpecialty( m_SpecialtyWeight ); } } int getDisableDestroyBBP() { BBPConfig BBP_config = GetDayZGame().getBBPGlobals(); if (BBP_config) { return BBP_config.BBP_DisableDestroy; } return 0; } int getBaseRaidOnlyDoorsBBP() { BBPConfig BBP_config = GetDayZGame().getBBPGlobals(); if (BBP_config) { return BBP_config.BBP_RaidOnlyDoors; } return 0; } int getBaseDestroyToolDamageT1() { BBPConfig BBP_config = GetDayZGame().getBBPGlobals(); if (BBP_config) { return BBP_config.BBP_Tier1RaidToolDamage; } return 40; } int getBaseDestroyToolDamageT2() { BBPConfig BBP_config = GetDayZGame().getBBPGlobals(); if (BBP_config) { return BBP_config.BBP_Tier2RaidToolDamage; } return 80; } int getBaseDestroyToolDamageT3() { BBPConfig BBP_config = GetDayZGame().getBBPGlobals(); if (BBP_config) { return BBP_config.BBP_Tier3RaidToolDamage; } return 160; } }
Editor is loading...
Leave a Comment