Example #1
0
        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]);
        }
Example #2
0
        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}");
            }
        }
Example #3
0
        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]);
        }
Example #4
0
 public void RecreateAllHitboxPrimitives(ParamData.NpcParam npcParam)
 {
     lock (_lock_hitboxes)
     {
         ClearAllHitboxPrimitives();
         BuildAllHitboxPrimitives(npcParam);
     }
 }
Example #5
0
        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);
        }