J'ai une classe technique globale (=actions spéciales)
Elle gère la proximité et la disponibilité des personnages, ainsi qu'un template d'affichage
chaque technique possède ensuite les attributs suivants
_ bool offensif : est-ce que l'action peut faire du mal à la cible ? si oui préparer les ripostes
_ bool soi_meme : peut-on effectuer l'action sur soi-même
_ bool perso : peut-on effectuer l'action sur d'autres persos
_ bool monstre : peut-on effectuer l'action sur les monstres
_ string classe : nom de la classe à instancier
A partir de cela, je peux définir 50% du déroulement d'une action en éliminant les vérifications.
Je n'ai plus qu'a écrire une méthode effet() qui décrit le reste.
Ex pour une boule de feu :
bool offensif : true // bool soi_meme : false // bool perso : true // bool monstre : true p// string classe : BouleFeu.class
function effet()
{
$degats = mt_rand(1,$this->lanceur->intelligence);
$this->log .= $this->lanceur->nom.' lance une boule de feu sur '.$this->cible->nom;
$this->cible->setVie(-$degats);
$this->lanceur->setEnergie(-10);
}
Dans le cas présent, le template technique effectue les actions suivantes :
_ $this->lanceur possède la technique boule de feu
_ $this->cible est vivante et à proximité de $this->lanceur
_ on effectue la méthode effet
_ les méthodes setVie, setEnergie génére des logs (machin perd 5 pv) et gèrent les cas de mort
_ le template technique prend en charge la riposte automatique de la cible si elle est vivante
_ on écrit les logs et on recharge la page
Depuis peu, j'ai surchargé avec une méthode check() qui me renvoit un entier qui correspond à un résultat à appliquer.
-1 : on ne peut réaliser l'action
0 : on réalise l'action standard
1 : réussite critique etc ...
Elle gère la proximité et la disponibilité des personnages, ainsi qu'un template d'affichage
chaque technique possède ensuite les attributs suivants
_ bool offensif : est-ce que l'action peut faire du mal à la cible ? si oui préparer les ripostes
_ bool soi_meme : peut-on effectuer l'action sur soi-même
_ bool perso : peut-on effectuer l'action sur d'autres persos
_ bool monstre : peut-on effectuer l'action sur les monstres
_ string classe : nom de la classe à instancier
A partir de cela, je peux définir 50% du déroulement d'une action en éliminant les vérifications.
Je n'ai plus qu'a écrire une méthode effet() qui décrit le reste.
Ex pour une boule de feu :
bool offensif : true // bool soi_meme : false // bool perso : true // bool monstre : true p// string classe : BouleFeu.class
function effet()
{
$degats = mt_rand(1,$this->lanceur->intelligence);
$this->log .= $this->lanceur->nom.' lance une boule de feu sur '.$this->cible->nom;
$this->cible->setVie(-$degats);
$this->lanceur->setEnergie(-10);
}
Dans le cas présent, le template technique effectue les actions suivantes :
_ $this->lanceur possède la technique boule de feu
_ $this->cible est vivante et à proximité de $this->lanceur
_ on effectue la méthode effet
_ les méthodes setVie, setEnergie génére des logs (machin perd 5 pv) et gèrent les cas de mort
_ le template technique prend en charge la riposte automatique de la cible si elle est vivante
_ on écrit les logs et on recharge la page
Depuis peu, j'ai surchargé avec une méthode check() qui me renvoit un entier qui correspond à un résultat à appliquer.
-1 : on ne peut réaliser l'action
0 : on réalise l'action standard
1 : réussite critique etc ...