Aller au contenu principal

Inventaire & armes

Cette page détaille le fonctionnement du stock de nourriture, de l’inventaire joueur et des armes utilisables pendant une partie.

Elle s’appuie notamment sur :

  • game/inventory.py (stock global, inventaire joueur),
  • rendering/inventory_menu.py (menu d’inventaire),
  • les systèmes de sabotage pour les interactions avec le stock.

Stock de nourriture (FoodStock)​

Chaque restaurant (tacos ou kebab) possède son propre stock de nourriture, représenté par FoodStock :

  • pour chaque ingrĂ©dient, on stocke :
    • la quantitĂ© actuelle (quantity) ;
    • la capacitĂ© maximale (max) ;
    • le prix unitaire (price) ;
  • le stock est consommĂ© via les recettes (voir la page Plats & ingrĂ©dients).

Le stock est utilisé lors de chaque service :

  • si le stock est suffisant pour tous les ingrĂ©dients du plat :
    • la commande est servie ;
    • les quantitĂ©s d’ingrĂ©dients sont diminuĂ©es ;
    • le joueur gagne de l’argent et de la rĂ©putation ;
  • sinon, le jeu signale une rupture de stock pour ce plat.

Le menu d’inventaire est accessible via une touche dédiée sur chaque joueur :

  • onglet Stock :
    • affiche une barre de couleur (vert/orange/rouge) pour chaque ingrĂ©dient ;
    • montre le texte quantitĂ© / max ;
    • permet de rĂ©approvisionner un ingrĂ©dient ou tout le stock :
      • le coĂ»t est calculĂ© Ă  partir du price de chaque ingrĂ©dient ;
      • l’argent du restaurant est dĂ©bitĂ© en consĂ©quence.
  • onglet Équipement :
    • affiche l’état des Ă©quipements (caisse, toilettes, broche, friteuse, menu, etc.) ;
    • indique si un Ă©quipement est cassĂ© ou en cooldown suite Ă  un sabotage ;
    • affiche aussi l’arme Ă©quipĂ©e par le joueur.

Inventaire joueur (PlayerInventory)​

L’inventaire du joueur gère ce qu’il porte sur lui, en particulier les armes :

  • chaque joueur ne peut porter qu’une seule arme Ă  la fois (knife ou fork) ;
  • chaque arme possède :
    • un nombre maximum d’utilisations (max_weapon_uses, par dĂ©faut 3) ;
    • des statistiques (dĂ©gâts, portĂ©e, couleur d’affichage, etc.).

Les armes apparaissent périodiquement sur la carte via un spawner dédié (WeaponSpawner) :

  • spawn toutes les 45 secondes environ ;
  • nombre maximal d’armes actives en mĂŞme temps (par ex. 4) ;
  • positions possibles configurĂ©es par zone (tacos, kebab, street).

Attaquer avec une arme​

Lorsque le joueur attaque (attack) :

  • le jeu vĂ©rifie la portĂ©e et la prĂ©sence d’une cible valide (client, parfois autre entitĂ©) ;
  • si la cible est touchĂ©e :
    • une quantitĂ© fixe de dĂ©gâts est infligĂ©e (souvent 100 → mort instantanĂ©e pour un client) ;
    • le nombre d’utilisations de l’arme est dĂ©crĂ©mentĂ© ;
    • Ă  0 utilisation, l’arme est perdue.

Ces actions ont un impact direct sur :

  • les clients (morts, fuite, colère) ;
  • la rĂ©putation (surtout si les meurtres ont lieu dans ton propre restaurant).

Interactions avec les sabotages​

Certains sabotages ciblent explicitement le stock et les équipements :

  • Vol de broche (steal_spit) :
    • dĂ©sactive temporairement la broche du kebab (indiquĂ©e comme volĂ©e dans l’inventaire) ;
    • empĂŞche de servir certains plats Ă  base de broche.
  • Empoisonner le stock :
    • rĂ©duit brutalement plusieurs ingrĂ©dients dans FoodStock ;
    • inflige une pĂ©nalitĂ© de rĂ©putation.

Ces effets sont gérés dans game/sabotage.py mais consultent et modifient toujours les mêmes structures de données (FoodStock, état des équipements) visibles dans le menu d’inventaire.