Example #1
0
    def from_dict_sync(cls, raw, ctx, combat):
        inst = super(PlayerCombatant, cls).from_dict(raw, ctx, combat)
        inst.character_id = raw['character_id']
        inst.character_owner = raw['character_owner']

        from cogs5e.models.character import Character
        char = ctx.bot.mdb.characters.delegate.find_one({"owner": inst.character_owner, "upstream": inst.character_id})
        if char is None:
            raise CombatException(f"A character in combat was deleted. "
                                  f"Please run `{ctx.prefix}init end -force` to end combat.")
        inst._character = Character.from_dict(char)
        return inst
Example #2
0
 def from_dict(cls, raw, ctx):
     combatants = []
     for c in raw['combatants']:
         if c['type'] == 'common':
             combatants.append(Combatant.from_dict(c, ctx))
         elif c['type'] == 'monster':
             combatants.append(MonsterCombatant.from_dict(c, ctx))
         elif c['type'] == 'player':
             combatants.append(PlayerCombatant.from_dict(c, ctx))
         else:
             raise CombatException("Unknown combatant type")
     return cls(raw['name'], raw['init'], combatants, ctx, raw['index'])
Example #3
0
    def from_dict_sync(cls, raw, ctx, combat):
        inst = super(PlayerCombatant, cls).from_dict(raw, ctx, combat)
        inst.character_id = raw['character_id']
        inst.character_owner = raw['character_owner']

        try:
            from cogs5e.models.character import Character
            inst._character = Character.from_bot_and_ids_sync(ctx.bot, inst.character_owner, inst.character_id)
        except NoCharacter:
            raise CombatException(f"A character in combat was deleted. "
                                  f"Please run `{ctx.prefix}init end -force` to end combat.")
        return inst
Example #4
0
 def from_dict_sync(cls, raw, ctx, combat):
     combatants = []
     for c in raw.pop('combatants'):
         if c['type'] == 'common':
             combatants.append(Combatant.from_dict(c, ctx, combat))
         elif c['type'] == 'monster':
             combatants.append(MonsterCombatant.from_dict(c, ctx, combat))
         elif c['type'] == 'player':
             combatants.append(PlayerCombatant.from_dict_sync(c, ctx, combat))
         else:
             raise CombatException("Unknown combatant type")
     del raw['type']
     return cls(ctx, combat, combatants, **raw)
Example #5
0
 def from_dict(cls, raw, ctx):
     combatants = []
     for c in raw['combatants']:
         if c['type'] == 'common':
             combatants.append(Combatant.from_dict(c, ctx))
         elif c['type'] == 'monster':
             combatants.append(MonsterCombatant.from_dict(c, ctx))
         elif c['type'] == 'player':
             combatants.append(PlayerCombatant.from_dict(c, ctx))
         elif c['type'] == 'group':
             combatants.append(CombatantGroup.from_dict(c, ctx))
         else:
             raise CombatException("Unknown combatant type")
     return cls(raw['channel'], raw['summary'], raw['dm'], raw['options'], ctx, combatants, raw['round'],
                raw['turn'], raw['current'])
Example #6
0
 async def from_dict(cls, raw, ctx):
     inst = cls(raw['channel'], raw['summary'], raw['dm'], raw['options'], ctx, [], raw['round'],
                raw['turn'], raw['current'])
     for c in raw['combatants']:
         if c['type'] == 'common':
             inst._combatants.append(Combatant.from_dict(c, ctx, inst))
         elif c['type'] == 'monster':
             inst._combatants.append(MonsterCombatant.from_dict(c, ctx, inst))
         elif c['type'] == 'player':
             inst._combatants.append(await PlayerCombatant.from_dict(c, ctx, inst))
         elif c['type'] == 'group':
             inst._combatants.append(await CombatantGroup.from_dict(c, ctx, inst))
         else:
             raise CombatException("Unknown combatant type")
     return inst
Example #7
0
 def remove_effect(self, effect):
     try:
         self._effects.remove(effect)
     except ValueError:
         raise CombatException("Effect does not exist on combatant.")