public override int DetermineReward(int points, Quest quest, EntityType entityType) { var val = (int)pointsCurve.Evaluate(points); if (!StringField.IsNullOrEmpty(thing)) { var bodyText = BodyTextQuestContent.CreateInstance <BodyTextQuestContent>(); bodyText.bodyText = new StringField(val + " " + thing); quest.offerContentList.Add(bodyText); } var messageQuestAction = MessageQuestAction.CreateInstance <MessageQuestAction>(); messageQuestAction.senderID = new StringField(QuestMachineTags.QUESTGIVERID); messageQuestAction.targetID = target; messageQuestAction.message = message; messageQuestAction.parameter = parameter; messageQuestAction.value.valueType = MessageValueType.Int; messageQuestAction.value.intValue = val; var successInfo = quest.GetStateInfo(QuestState.Successful); successInfo.actionList.Add(messageQuestAction); return(consumePoints ? (points - val) : points); }