1
0

Convert spell objects to a dictionary

This commit is contained in:
Kwarde 2024-01-17 16:06:56 +01:00
parent 9b87f2aa30
commit 89318e7321

View File

@ -22,11 +22,8 @@ __INVALID_SPELL = ".@wizardduel@__spell_invalid__" #Internal usage only
## Spell class ## Spell class
## ##
class Spell: class Spell:
spellList = []
#Class special methods #Class special methods
""" """
name (str) Name of the spell as used in combat
speed (int) Speed of the spell. This will determine what spell is casted first. speed (int) Speed of the spell. This will determine what spell is casted first.
damage (int) Damage that the spell does. damage (int) Damage that the spell does.
<!> Negative damage takes away moves from opponent (eg -2 = cancel 2 moves of opponent) <!> Negative damage takes away moves from opponent (eg -2 = cancel 2 moves of opponent)
@ -39,16 +36,13 @@ class Spell:
- SPELL_TYPE_POWER: Powerful combat spell - deals alot of damage or takes away a few moves from opponent - SPELL_TYPE_POWER: Powerful combat spell - deals alot of damage or takes away a few moves from opponent
- SPELL_TYPE_UNFORGIVABLE: deals alot of damage or takes away alot of moves from opponent - SPELL_TYPE_UNFORGIVABLE: deals alot of damage or takes away alot of moves from opponent
""" """
def __init__(self, name: str, speed: int, damage: int, succes_rate: int, description: str, type: int = SPELL_TYPE_COMMON): def __init__(self, speed: int, damage: int, succes_rate: int, description: str, type: int = SPELL_TYPE_COMMON):
self.name = name
self.speed = speed self.speed = speed
self.damage = damage self.damage = damage
self.succes_rate = succes_rate self.succes_rate = succes_rate
self.description = description self.description = description
self.type = type self.type = type
Spell.spellList.append(self)
def __repr__(self): def __repr__(self):
return " ['{spell}']\n\t{desc}\n\tSUCCES RATE: {srate}%\tSPEED: {speed}\tDAMAGE: {dmg}".format(spell=self.name, type=type, desc=self.description, srate=self.succes_rate, speed=self.speed, dmg=self.damage) return " ['{spell}']\n\t{desc}\n\tSUCCES RATE: {srate}%\tSPEED: {speed}\tDAMAGE: {dmg}".format(spell=self.name, type=type, desc=self.description, srate=self.succes_rate, speed=self.speed, dmg=self.damage)
@ -61,38 +55,39 @@ class Spell:
## ##
## Spells ## Spells
## ##
# Useless spells - These don't do anything useful in combat spell = {
spell_lumos = Spell("Lumos", 100, 000, 100, "Creates a small light at the tip of your wand", SPELL_TYPE_USELESS) # Useless spells - These don't do anything useful in combat
spell_nox = Spell("Nox", 100, 000, 100, "Counter spell of Lumos", SPELL_TYPE_USELESS) "Lumos", Spell(100, 000, 100, "Creates a small light at the tip of your wand", SPELL_TYPE_USELESS),
spell_rennervate = Spell("Rennervate", 100, 000, 100, "Revives your opponent if they are stunned", SPELL_TYPE_USELESS) "Nox", Spell(100, 000, 100, "Counter spell of Lumos", SPELL_TYPE_USELESS),
spell_igni = Spell("Igno", 100, 000, 100, "Damages an enemy using fire. Except, this is a Witcher sign. It thus has no effect at all", SPELL_TYPE_USELESS) "Rennervate", Spell(100, 000, 100, "Revives your opponent if they are stunned", SPELL_TYPE_USELESS),
"Igni", Spell(100, 000, 100, "Damages an enemy using fire. Except, this is a Witcher sign. It thus has no effect at all", SPELL_TYPE_USELESS),
# Defensive spell. Each cast from this category has a 5% chance of completely restoring health or 25% chance to heal 5% of maximum health # Defensive spell. Each cast from this category has a 5% chance of completely restoring health or 25% chance to heal 5% of maximum health
spell_finite_incantatem = Spell("Finite Incantatem", 100, 000, 45, "Cancel all effects casted upon you. If you are stunned/silenced, there's a 10% chance this spell might work", SPELL_TYPE_DEFENSE) "Finite Incantatem", Spell(100, 000, 45, "Cancel all effects casted upon you. If you are stunned/silenced, there's a 10% chance this spell might work", SPELL_TYPE_DEFENSE),
spell_impendimenta = Spell("Impendimenta", 94, 000, 60, "Slows your opponent. EFFECT: Decrease opponent's spell speed by 33% in their next offensive move", SPELL_TYPE_DEFENSE) "Impendimenta", Spell(94, 000, 60, "Slows your opponent. EFFECT: Decrease opponent's spell speed by 33% in their next offensive move", SPELL_TYPE_DEFENSE),
spell_lumos_solem = Spell("Lumos Solem", 94, 000, 60, "Blinds your opponent. EFFECT: Decrease opponent's spell damage by 33% in their next offensive move", SPELL_TYPE_DEFENSE) "Lumos Solem", Spell(94, 000, 60, "Blinds your opponent. EFFECT: Decrease opponent's spell damage by 33% in their next offensive move", SPELL_TYPE_DEFENSE),
spell_protego = Spell("Protego", 100, 000, 80, "Create a shield that blocks most attacks", SPELL_TYPE_DEFENSE) "Protego", Spell(100, 000, 80, "Create a shield that blocks most attacks", SPELL_TYPE_DEFENSE),
# Common combat spells. High chance of succes, deals some damage # Common combat spells. High chance of succes, deals some damage
spell_reducto = Spell("Reducto", 75, 150, 85, "Blast an object near your opponent") "Reducto", Spell(75, 150, 85, "Blast an object near your opponent"),
spell_rictusempra = Spell("Rictusempra", 85, 90, 90, "Causes your opponent to curl up in laughter, tiring them out") "Rictusempra", Spell(85, 90, 90, "Causes your opponent to curl up in laughter, tiring them out"),
spell_stupefy = Spell("Stupefy", 95, 75, 95, "Knock over your opponent") "Stupefy", Spell(95, 75, 95, "Knock over your opponent"),
# Powerful combat spells. Medium chance of succes, deals more damage or stuns opponents # Powerful combat spells. Medium chance of succes, deals more damage or stuns opponents
spell_bombarda = Spell("Bombarda", 50, 180, 75, "Creates an explosion near your opponent", SPELL_TYPE_POWERFUL) "Bombarda", Spell(50, 180, 75, "Creates an explosion near your opponent", SPELL_TYPE_POWERFUL),
spell_confringo = Spell("Confringo", 50, 200, 70, "Creates an explosion directly at your opponent", SPELL_TYPE_POWERFUL) "Confringo", Spell(50, 200, 70, "Creates an explosion directly at your opponent", SPELL_TYPE_POWERFUL),
spell_mimblewimble = Spell("Mimblewimble", 50, -1, 70, "Ties a knot in your opponents tongue, causing them to be unable to cast a spell for 1 (more) move", SPELL_TYPE_POWERFUL) "Mimblewimble", Spell(50, -1, 70, "Ties a knot in your opponents tongue, causing them to be unable to cast a spell for 1 (more) move", SPELL_TYPE_POWERFUL),
spell_sectumsempra = Spell("Sectumsempra", 90, 400, 35, "Slices your opponent", SPELL_TYPE_POWERFUL) "Sectumsempra", Spell(90, 400, 35, "Slices your opponent", SPELL_TYPE_POWERFUL),
spell_silencio = Spell("Silencio", 35, -3, 55, "Silences your opponent, causing them unable to cast spells for 3 moves. <!>Only works if opponent is not stunned yet", SPELL_TYPE_POWERFUL) "Silencio", Spell(35, -3, 55, "Silences your opponent, causing them unable to cast spells for 3 moves. <!>Only works if opponent is not stunned yet", SPELL_TYPE_POWERFUL),
# Unforgivable spells. Very low chance of success, instantly kills or deals alot of damage/stun amount # Unforgivable spells. Very low chance of success, instantly kills or deals alot of damage/stun amount
spell_avada_kedavra = Spell("Avada Kedavra", 999, 999, 2, "Instantly end your opponent", SPELL_TYPE_UNFORGIVABLE) "Avada Kedavra", Spell(999, 999, 2, "Instantly end your opponent", SPELL_TYPE_UNFORGIVABLE),
spell_crucio = Spell("Crucio", 999, 500, 5, "Cause excruciating pain to your opponent, causing alot of damage and making them unable to cast spells for 5 moves", SPELL_TYPE_UNFORGIVABLE) "Crucio", Spell(999, 500, 5, "Cause excruciating pain to your opponent, causing alot of damage and making them unable to cast spells for 5 moves", SPELL_TYPE_UNFORGIVABLE),
spell_imperio = Spell("Imperio", 999, -1, 3, "Muddle with your opponent's mind, convincing them to stop casting spells for 10 moves", SPELL_TYPE_UNFORGIVABLE) "Imperio", Spell(999, -1, 3, "Muddle with your opponent's mind, convincing them to stop casting spells for 10 moves", SPELL_TYPE_UNFORGIVABLE),
# Internal usage # Internal usage
spell_object_none = Spell(__INVALID_SPELL, 0, 0, 0, "(internal) invalid spell", SPELL_TYPE_NONE) __INVALID_SPELL, Spell(__INVALID_SPELL, 0, 0, 0, "(internal) invalid spell", SPELL_TYPE_NONE)
spell_object_stunned = Spell(__INVALID_SPELL, 0, 0, 0, "(internal) object when stunned", SPELL_TYPE_NONE) }
## ##
## Standalone spell functions ## Standalone spell functions