public static ParamData.AtkParam GetNpcBasicAtkParam(ParamData.NpcParam npcParam, int behaviorSubID) { if (npcParam == null) { return(null); } long behaviorParamID = 2_00000_000 + (npcParam.BehaviorVariationID * 1_000) + behaviorSubID; if (!BehaviorParam.ContainsKey(behaviorParamID)) { return(null); } ParamData.BehaviorParam behaviorParamEntry = BehaviorParam[behaviorParamID]; if (behaviorParamEntry.RefType != 0) { return(null); } if (!AtkParam_Npc.ContainsKey(behaviorParamEntry.RefID)) { return(null); } return(AtkParam_Npc[behaviorParamEntry.RefID]); }
private static bool CheckNpcParamForCurrentGameType(int chrId, ParamData.NpcParam r, bool isFirst, bool matchCXXX0) { long checkId = r.ID; if (matchCXXX0) { chrId /= 10; checkId /= 10; } if (GameDataManager.GameType != GameDataManager.GameTypes.SDT) { if ((checkId / 100) == chrId) { return(true); } else if (isFirst && GameDataManager.GameType == GameDataManager.GameTypes.BB) { return((checkId % 1_0000_00) / 100 == chrId); } else { return(false); } } else if (GameDataManager.GameType == GameDataManager.GameTypes.SDT) { return((checkId / 1_0000) == chrId); } else { throw new NotImplementedException( $"ParamManager.CheckNpcParamForCurrentGameType not implemented for game type {GameDataManager.GameType}"); } }
public static ParamData.AtkParam GetNpcBasicAtkParam(ParamData.NpcParam npcParam, int behaviorJudgeID) { if (npcParam == null) { return(null); } // Format: 2VVVVVJJJ // V = BehaviorVariationID // J = BehaviorJudgeID long behaviorParamID = 2_00000_000 + (npcParam.BehaviorVariationID * 1_000) + behaviorJudgeID; if (!BehaviorParam.ContainsKey(behaviorParamID)) { return(null); } ParamData.BehaviorParam behaviorParamEntry = BehaviorParam[behaviorParamID]; // Make sure behavior is an attack behavior. if (behaviorParamEntry.RefType != 0) { return(null); } // Make sure referenced attack exists. if (!AtkParam_Npc.ContainsKey(behaviorParamEntry.RefID)) { return(null); } return(AtkParam_Npc[behaviorParamEntry.RefID]); }
public void RecreateAllHitboxPrimitives(ParamData.NpcParam npcParam) { lock (_lock_hitboxes) { ClearAllHitboxPrimitives(); BuildAllHitboxPrimitives(npcParam); } }
public void BuildAllHitboxPrimitives(ParamData.NpcParam npcParam) { int behaviorStart = 2_00000_000 + (npcParam.BehaviorVariationID * 1_000); var behaviors = ParamManager.BehaviorParam.Where(x => (x.Key >= behaviorStart) && (x.Key <= behaviorStart + 999)); var atkParams = new List <ParamData.AtkParam>(); foreach (var beh in behaviors) { if (beh.Value.RefType == 0 && ParamManager.AtkParam_Npc.ContainsKey(beh.Value.RefID)) { atkParams.Add(ParamManager.AtkParam_Npc[beh.Value.RefID]); } } BuildAllHitboxPrimitives(atkParams); }