コード例 #1
0
ファイル: AddDamageOCT.cs プロジェクト: ming81/TotalAI
 public override float CalculateAmount(Agent agent, Entity target, OutputChange outputChange, Mapping mapping)
 {
     if (outputChange.valueType == OutputChange.ValueType.ActionSkillCurve)
     {
         return(outputChange.actionSkillCurve.Eval0to100(agent.ActionSkillWithItemModifiers(mapping.mappingType.actionType)));
     }
     return(outputChange.floatValue);
 }
コード例 #2
0
ファイル: AttributeLevelOCT.cs プロジェクト: ming81/TotalAI
        public override float CalculateAmount(Agent agent, Entity target, OutputChange outputChange, Mapping mapping)
        {
            float amount = outputChange.floatValue;

            if (outputChange.valueType == OutputChange.ValueType.ActionSkillCurve)
            {
                amount = outputChange.actionSkillCurve.Eval0to100(agent.ActionSkillWithItemModifiers(mapping.mappingType.actionType));
            }
            else if (outputChange.valueType == OutputChange.ValueType.Selector)
            {
                amount = outputChange.selector.GetFloatValue(agent, mapping);
            }

            if (outputChange.boolValue)
            {
                return(-amount);
            }
            return(amount);
        }
コード例 #3
0
ファイル: DriveLevelOCT.cs プロジェクト: ming81/TotalAI
        public override float CalculateAmount(Agent agent, Entity target, OutputChange outputChange, Mapping mapping)
        {
            if (outputChange.valueType == OutputChange.ValueType.ActionSkillCurve)
            {
                return(outputChange.actionSkillCurve.Eval0to100(agent.ActionSkillWithItemModifiers(mapping.mappingType.actionType)));
            }
            else if (outputChange.valueType == OutputChange.ValueType.Selector)
            {
                return(outputChange.selector.GetFloatValue(agent, mapping));
            }

            // This looks at the ENTIRE Plan for an equation DriveType
            // will only do it for root mappings (mapping.parent == null) so there's no double counting the changes
            DriveType driveType = (DriveType)outputChange.levelType;

            if (mapping != null && mapping.parent == null && driveType.syncType == DriveType.SyncType.Equation)
            {
                return(driveType.driveTypeEquation.CalculateEquationDriveLevelChange(agent, driveType, mapping, null));
            }

            return(outputChange.floatValue);
        }