Description

Agents et Acteurs

Les acteurs ont besoin d’un agent pour les représenter. Ce sont les agents qui approchent les acteurs et qui font une proposition afin de les représenter. Un agent peut représenter plusieurs acteurs.

À chaque tour, un agent fait des demandes à tous les acteurs qui:

  • N’ont pas déjà un agent.
  • Ont autant ou plus de points de réputation que lui.

Les acteurs croient beaucoup en l’Hamstrologie. Celle-ci stipule que les acteurs vont mieux s’entendre avec les personnages dont la première lettre du nom est la plus proche de la première lettre de leur nom dans l’alphabet (distance Ascii, car case sensitive) (voir exemples plus bas). Si la première lettre est identique, y aller avec celui qui a le plus de points de réputation (Si première lettre identique et même nombre de points de réputation, choisir un agent au hasard. À noter que ce cas ne sera pas testé.). Ils vont donc accepter l’offre de l’agent selon ce critère.

Déroulement lorsqu’un tour est joué:

  • Chaque agent fait des demandes à tous les acteurs qui correspondent aux critères plus haut.
  • Les acteurs peuvent donc avoir plusieurs demandes d’agent et doivent choisir en utilisant l’Hamstrologie.

Exemples (cliquez pour voir)

Exemple - Ajout d’un agent et d’un acteur sur Hamstagram

  • POST /characters => Créer Bob l’agent
  • POST /characters => Créer Joe l’acteur
  • POST /turn
  • GET /hamstagram/Bob => Bob l’agent a Joe l’acteur dans son payload Hamstagram represent
  • GET /hamstagram/Joe => Joe est representedBy Bob

Exemple 1 sur l’Hamstrologie

  • L’acteur Bob a reçu des offres des agents John et Rob. Il choisira donc John et refusera l’offre de Rob (J plus proche de B que de R).

Exemple 2 sur l’Hamstrologie

  • Suzanne l’actrice reçoit une offre de John et Rob, elle choisira Rob.

RattedIn

Les agents et les avocats peuvent faire des demandes de contact sur le réseau social RattedIn. Leur réseau de contacts leur sera utile plus tard. Si un avocat fait une demande à un agent et que ce dernier accepte, alors l’agent fait partie des contacts de l’avocat et vice versa (l’avocat fait partie des contacts de l’agent). Il n’y a pas de restriction au niveau des professions, c’est-à-dire qu’un agent peut avoir des agents et des avocats parmi ses contacts et vice versa.

Les acteurs ne sont pas sur RattedIn.

Les avocats acceptent toujours toute demande de contact. Alors que les agents sont plus réticents et ne vont accepter que les demandes qui proviennent de personnages qui ont le même nombre de points de réputation ou plus qu’eux (>=).

Les demandes de contact ne sont acceptées/refusées que lorsqu’un tour est joué. Si la demande de contact est refusée, le contact n’apparaitra tout simplement pas dans la liste des contacts.

Puisque les personnages auront éventuellement besoin d’avocats, ces derniers vont changer leur statut à openToWork sur RattedIn afin d’informer leurs contacts qu’ils sont disponibles pour offrir leurs services. Les agents ont toujours un statut d’emploi à N/A.

Exemples (cliquez pour voir)

Exemple - Les avocats et les agents apparaissent sur RattedIn après que le tour soit joué.

  • POST /characters => Créer Bob l’agent
  • GET /rattedin/Bob => Not found
  • POST /turn
  • GET /rattedin/Bob => OK 200

Exemple - Les demandes de contact ne sont acceptées/refusées que lorsqu’un tour est joué.

  • POST /characters => Créer Bob l’avocat
  • POST /characters => Créer Zoe l’avocat
  • POST /turn
  • POST /rattedin/Bob/request => Zoe fait une demande de contact à Bob
  • GET /rattedin/Bob => Bob n’est pas encore dans les contacts de Zoe
  • POST /turn
  • GET /rattedin/Bob => Bob a Zoe dans ses contacts
  • GET /rattedin/Zoe => Zoe a Bob dans ses contacts

Lorsqu’un personnage est éliminé:

  • Tout ce qui le concerne est effacé:
    • Son profil, donc GET /characters/nomDuPersonnageElimine retournera 404. Il serait possible d’ajouter un personnage avec le même nom qu’un personnage éliminé, mais ce ne sera pas vérifié.
    • S’il possède un compte sur Hamstagram, il sera effacé.
    • S’il possède un compte sur RattedIn, il sera effacé et retiré des contacts sur RattedIn.
    • S’il avait des demandes de contact sur RattedIn, ces demandes sont ignorées.
    • S’il s’agissait d’un agent, tous ses acteurs se retrouvent sans agent.
    • S’il s’agissait d’un acteur qui avait un agent, il sera retiré de la liste des acteurs représenté par l’agent.

:ballot_box_with_check: Conditions de succès

:warning:
Introduction de changements majeurs par rapport aux stories précédentes
# Description
1 À chaque tour, si un acteur possède un agent, l’acteur doit payer son agent selon le salaire de ce dernier (argent est transféré du compte de l’acteur vers celui de l’agent).
2 Si un acteur n’a pas assez d’argent pour payer le salaire de l’agent, le restant de son solde est entièrement transféré à l’agent. Son solde tombe alors à 0 et il sera éliminé du jeu (voir règles story 2).

:clock1: Ordre des événements lorsqu’un tour est joué

:warning:
Introduction de changements majeurs par rapport aux stories précédentes
# Description
1 Les acteurs déjà dans le jeu paient leur agent s’ils en ont un.
2 Les personnages déjà dans le jeu perdent 100$.
3 Les personnages déjà dans le jeu perdent 6 points de réputation.
4 Les personnages déjà dans le jeu et sur Hamstagram perdent 600 abonnés.
5 Les personnages sont éliminés selon les règlements habituels.
6 Les demandes de contact faites sur RattedIn sont acceptées ou refusées.
7 Les nouveaux personnages sont ajoutés en ordre chronologique.
8 Les nouveaux acteurs et agents se créent un compte sur Hamstagram.
9 Les nouveaux agents et avocats se créent un compte sur RattedIn.
10 Tous les agents (incluant ceux nouvellement ajoutés) font une proposition à tous les acteurs (incluant ceux nouvellement ajoutés) pour les représenter.
11 Les acteurs acceptent ou refusent les demandes des agents.

API

:memo: Réseau social

:warning:
Introduction de changements majeurs par rapport aux stories précédentes

Requête

GET /hamstagram/<username>

Réponse

  • Ajout du champ represent. Liste des noms des acteurs que l’agent représente, la liste sera vide pour les acteurs.
  • Ajout du champ representedBy. Le nom de l’agent de l’acteur sera vide si le personnage est un agent.
{
  "username": ""::string,
  "nbFollowers": 10000::int,
  "represent": [],
  "representedBy": ""::string
}

Exception

Pas de changements.

:memo: Demande de contact sur RattedIn

Le nom du personnage est utilisé à titre de username.

Requête

POST /rattedin/<username de celui qui reçoit la demande>/request

{
  "username": ""::string  username du personnage qui fait la demande de contact
}

Réponse

HTTP 200 OK

Exception

Aucune n’est exigée, on ne testera qu’un payload adéquat et que des personnages qui sont déjà sur RattedIn.

:memo: Obtenir les informations d’un utilisateur sur RattedIn

Requête

GET /rattedin/<username>

Réponse

HTTP 200 OK

{
  "username": ""::string,
  "status": openToWork | busy | N/A,  => Le statut passera à `busy` plus tard dans le projet.
  "contacts": [] => Liste des usernames
}

Exception

HTTP 404 Not Found

{
  "error": "CHARACTER_NOT_FOUND"::string,
  "description": "Character not found."::string
}