Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Joueur] La compétence Survie permet de rallonger son espérance de vie #193

Open
ErenHistarion opened this issue Jan 29, 2022 · 2 comments

Comments

@ErenHistarion
Copy link
Collaborator

Il faudrait que lors de l'achat des niveaux Maitre et Grand Maitre de la compétence Survie, on applique automatiquement le rallongement de la durée de vie en retirant artificiellement un jeton de vieillesse : $personnage->removePersonnageHasToken($personnageHasToken); et $age = $app['orm.em']->getRepository('\LarpManager\Entities\Age')->findOneById($personnage->getAge()->getId() - 1);
$personnage->setAge($age);

Repository owner deleted a comment from JosefRDA Jan 30, 2022
@Gectou4
Copy link
Collaborator

Gectou4 commented Apr 27, 2023

@ErenHistarion
je suppose que cela sera LH7

Ressource

Code qui gère les fruits et légume : PersonnageController::adminTokenDeleteAction(), à en juger par le non typage des token, pour le moment il ne semble exister que des token d'age ?

token en question :

$token = $app['orm.em']->getRepository('\LarpManager\Entities\Token')->findOneByTag('VIEILLESSE');

Proposition

Suite à #443 qui fix #418

créer un handler SurvieHandler qui étend CompetenceHandler avec pour méthode give

protected function give(): void
{
        // Uniquement pour maitre et et grand maitre (niveau 4 = expert)
        if ($this->competenceLevel->getIndex() < Level::NIVEAU_4) {
          return;
        }

        $token = $this->app['orm.em']->getRepository('\LarpManager\Entities\Token')->findOneByTag('VIEILLESSE');
        foreach ($personnage->getPersonnageHasTokens() as $personnageHasToken) {
            if ($personnageHasToken->token_id === $token->getId()) {
                $personnage->removePersonnageHasToken($personnageHasToken);
                $this->app['orm.em']->remove($personnageHasToken);
                $this->app['orm.em']->persist($personnage);
                break;
            }
        }
        $evenement = sprintf(
            'Votre compétence survie de %s vous maintiens en vie plus longtemps',
            $this->competenceLevel->getLabel()
        );
        $anneeGN = $this->personnage->getLastParticipantGn()->getDateJeu()  + rand(-2, 2);
        $personnageChronologie = new PersonnageChronologie();
        $personnageChronologie->setAnnee($anneeGN);
        $personnageChronologie->setEvenement($evenement);
        $personnageChronologie->setPersonnage($personnage);
        $app['orm.em']->persist($personnageChronologie);

        $app['orm.em']->flush();
}

Note

  • prévoir une constante pour le TAG d'age
  • attention le code actuel de fruit et légume clear les tokens sans distinction de type de tag
  • adapter l'évènement dans la chronologie du personnage Competence survie NIVEAU vous maintiens en vie plus longtemps
  • voir pk $personnage->getPersonnageHasTokens()->count() % 2 == 0 (ou !=0) qui ne cible pas spécifiquement les token d'age et peuvent poser soucis si changement d'échelle de nombre de token d'age.
  • Voir pk on ne semble pas ce baser sur les token pour la mort de vieillesse mais sur l'index d'age
  • Voir pk l'action ne vieillir n'ajoute pas +1 index alors que l'action d'ajout de token elle ajoute bien un index :
// Vieillir tous les perso
$personnage->setAge($ages[$personnage->getAge()->getId()]); // on set le même age 

// Ajouter d'un token vieillesse par l'admin 
$age = $app['orm.em']->getRepository('\LarpManager\Entities\Age')->findOneById($personnage->getAge()->getId() + 1);
				$personnage->setAge($age);

@ErenHistarion
Copy link
Collaborator Author

@ErenHistarion je suppose que cela sera LH7

@Gectou4 Oui, on fait un freeze des nouvelles features jusqu'au LH6 pour se concentrer sur les bugs éventuels et les urgences absolues qui pourraient apparaitre. Mais je reste extrêmement reconnaissant pour ce que tu fais.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants