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); }
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); }
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); }