var obj = new JsonObject
obj["player"] = player.name
obj["reward"] = reward
- obj["github_event"] = json
+ obj["github_event"] = self
var event = new GameEvent(player.game, kind, obj)
player.game.add_event(event)
return event
# Rewards player for opened pull requests.
redef fun react_player_event(r, game) do
- if action == "opened" then
+ if action == "opened" or action == "reopened" then
react_pull_open(r, game)
else if action == "closed" then
react_pull_close(r, game)
end
private fun react_pull_close(r: PlayerReactor, game: Game) do
- if not pull.merged then return
var player = pull.user.player(game)
- var reward = pull.commits * r.nc_commit_merged
+ var reward
+ var event
+ if pull.merged then
+ reward = pull.commits * r.nc_commit_merged
+ event = player_reward_event("pull_merged", player, reward)
+ else
+ reward = -r.nc_pull_open
+ event = player_reward_event("pull_closed", player, reward)
+ end
player.nitcoins += reward
player.save
- var event = player_reward_event("pull_merged", player, reward)
player.add_event(event)
end
end
# Rewards player for review comments.
#
# TODO only give nitcoins if reviewers < 2
+ # TODO give more points to first reviewer
redef fun react_player_event(r, game) do
if comment.is_ack then
react_player_review(r, game)
end
end
+ # TODO same player should not be authorized to review multiple times? How to handle rerols?
private fun react_player_review(r: PlayerReactor, game: Game) do
+ if issue.state == "closed" then return
var player = comment.user.player(game)
+ if issue.user == player.user then return
player.nitcoins += r.nc_pull_review
player.save
var event = player_reward_event("pull_review", player, r.nc_pull_review)