Guest User

Untitled

a guest
Mar 7th, 2024
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.05 KB | None | 0 0
  1. import sqlite3
  2. import random
  3. import os
  4.  
  5. # Initialize the item database
  6. conn = sqlite3.connect('/mnt/data/inventory.db')
  7. c = conn.cursor()
  8.  
  9. # Create the 'items' table
  10. c.execute('''
  11. CREATE TABLE IF NOT EXISTS items (
  12. character TEXT,
  13. name TEXT,
  14. description TEXT,
  15. quantity INTEGER,
  16. quality TEXT,
  17. status TEXT,
  18. PRIMARY KEY (character, name)
  19. )
  20. ''')
  21. c.execute('''
  22. CREATE TABLE IF NOT EXISTS characters (
  23. character TEXT PRIMARY KEY,
  24. profession TEXT,
  25. level INTEGER DEFAULT 1
  26. )
  27. ''')
  28. conn.commit()
  29.  
  30.  
  31. def remove_item(character, name, quantity):
  32. # Check current quantity
  33. c.execute('SELECT quantity FROM items WHERE character = ? AND name = ?', (character, name))
  34. result = c.fetchone()
  35. if result:
  36. current_quantity = result[0]
  37. if current_quantity >= quantity:
  38. # Update the quantity if there's enough to remove
  39. c.execute('UPDATE items SET quantity = quantity - ? WHERE character = ? AND name = ?', (quantity, character, name))
  40. else:
  41. # Raise an exception if there's not enough quantity
  42. raise Exception(f"Not enough quantity of '{name}' to remove. Requested: {quantity}, Available: {current_quantity}")
  43. else:
  44. # Raise an exception if the item doesn't exist
  45. raise Exception(f"Item '{name}' not found in {character}'s inventory.")
  46. conn.commit()
  47. # Function to read the items in a character's inventory
  48. def read_inventory(character):
  49. c.execute('SELECT * FROM items WHERE character = ?', (character,))
  50. return c.fetchall()
  51.  
  52. # Function to add items to the inventory
  53. def add_item(character, name, description, quantity, quality, status):
  54. c.execute('''
  55. INSERT INTO items (character, name, description, quantity, quality, status)
  56. VALUES (?, ?, ?, ?, ?, ?)
  57. ON CONFLICT(character, name) DO UPDATE SET
  58. quantity = quantity + EXCLUDED.quantity,
  59. description = EXCLUDED.description,
  60. quality = EXCLUDED.quality,
  61. status = EXCLUDED.status
  62. ''', (character, name, description, quantity, quality, status))
  63. conn.commit()
  64.  
  65. # Function to add or update a character's profession level
  66. def set_profession_level(character, profession, level):
  67. # Check if the character already exists
  68. c.execute('SELECT profession FROM characters WHERE character = ?', (character,))
  69. result = c.fetchone()
  70.  
  71. if result:
  72. # If the profession matches, increase the level; otherwise, add the new profession with level 2
  73. if result[0] == profession:
  74. c.execute('UPDATE characters SET level = ? WHERE character = ? AND profession = ?', (level, character, profession))
  75. else:
  76. c.execute('INSERT OR REPLACE INTO characters (character, profession, level) VALUES (?, ?, ?)', (character, profession, level))
  77. else:
  78. # Add new character with the profession at level 2
  79. c.execute('INSERT INTO characters (character, profession, level) VALUES (?, ?, ?)', (character, profession, level))
  80. conn.commit()
  81.  
  82. def describe_character_professions(character):
  83. c.execute('SELECT profession, level FROM characters WHERE character = ?', (character, ))
  84. return c.fetchall()
  85.  
  86. # Modified roll_for_outcome function to include character and profession
  87. def roll_for_outcome(character, profession, difficulty_level):
  88. # Fetch the character's level for the given profession
  89. c.execute('SELECT level FROM characters WHERE character = ? AND profession = ?', (character, profession))
  90. result = c.fetchone()
  91.  
  92. profession_level = result[0] if result else 1 # Default to 1 if profession not found
  93.  
  94. # Roll a d6 for each profession level and sum the results
  95. total_roll = sum(random.randint(1, 6) for _ in range(profession_level) )
  96. print('dices',profession_level)
  97. print('roll', total_roll)
  98. print('difficulty', difficulty_level)
  99. # Calculate the difference
  100. difference = total_roll - difficulty_level
  101. print('differnce', difference)
  102. # Determine the outcome
  103. if difference >= 8:
  104. return "critical success"
  105. elif difference >= 4:
  106. return "success"
  107. elif difference >= 2:
  108. return "minor progress"
  109. elif difference <= -8:
  110. return "critical failure"
  111. elif difference <= -4:
  112. return "failure"
  113. elif difference <= -2:
  114. return "minor setback"
  115. return "need to try again"
  116.  
  117.  
  118.  
Advertisement
Add Comment
Please, Sign In to add comment