Exemple #1
0
    def func(self):
        "implements the actual functionality"

        skill_list = ', '.join(self.caller.db.skills)

        form = EvForm("world/zchar.py")

        str_name = "|C" + self.caller.name + "|n"
        # add data to each tagged form cell

        form.map(
            cells={
                1: str_name,
                2: "|C" + str(self.caller.db.attr_agility) + "|n",
                3: "|C" + str(self.caller.db.attr_constitution) + "|n",
                4: "|C" + str(self.caller.db.attr_intelligence) + "|n",
                5: "|C" + str(self.caller.db.attr_perception) + "|n",
                6: "|C" + str(self.caller.db.attr_strength) + "|n",
                7: "|C" + str(self.caller.db.stat_defence_unarmed) + "|n",
                8: "|C" + str(self.caller.db.stat_defence_zombie) + "|n",
                9: "|C" + str(self.caller.db.stat_defence_physical) + "|n",
                "A": "|C" + str(self.caller.db.stat_defence_penetration) +
                "|n",
                "B": "|C" + skill_list + "|n",
                "C": "|C" + str(self.caller.db.stat_hitpoints_current) + "|n",
                "D": "|C" + str(self.caller.db.stat_hitpoints) + "|n",
                "E": "|C" + str(self.caller.db.stat_energy_current) + "|n",
                "F": "|C" + str(self.caller.db.stat_energy) + "|n",
                "G": "|C" + str(self.caller.db.stat_contagion) + "|n"
            })

        # unicode is required since the example contains non-ascii characters
        t = unicode(form)

        self.caller.msg(t)
Exemple #2
0
    def func(self):
        """
        Handle displaying status.
        """
        form = EvForm('commands.templates.charsheet', align='r')
        tr = self.caller.traits
        fields = {
            'A': self.caller.name,
            'B': self.caller.db.archetype,
            'C': tr.XP.actual,
            'D': tr.XP.level_boundaries[tr.LV.actual],
            'E': tr.LV.actual,
            'F': tr.STR.actual,
            'G': tr.PER.actual,
            'H': tr.INT.actual,
            'I': tr.DEX.actual,
            'J': tr.CHA.actual,
            'K': tr.VIT.actual,
            'L': tr.MAG.actual,
            'M': tr.FORT.actual,
            'N': tr.REFL.actual,
            'O': tr.WILL.actual,
            'P': tr.ATKM.actual,
            'Q': tr.ATKR.actual,
            'R': tr.ATKU.actual,
            'S': tr.DEF.actual,
            'T': "{:+d}".format(tr.PP.actual),
            'U': tr.ENC.actual,
            'V': tr.ENC.max,
            'W': tr.MV.mod,
            'X': tr.MV.actual,
            'Y': self.caller.db.race,
            'Z': self.caller.db.focus,
        }
        form.map({k: self._format_trait_val(v) for k, v in fields.iteritems()})

        gauges = EvTable(
            "|CHP|n", "|CSP|n", "|CBM|n", "|CWM|n",
            table=[["{} / {}".format(self._format_trait_val(tr.HP.actual),
                                     self._format_trait_val(tr.HP.max))],
                   ["{} / {}".format(self._format_trait_val(tr.SP.actual),
                                     self._format_trait_val(tr.SP.max))],
                   ["{} / {}".format(self._format_trait_val(tr.BM.actual),
                                     self._format_trait_val(tr.BM.max))],
                   ["{} / {}".format(self._format_trait_val(tr.WM.actual),
                                     self._format_trait_val(tr.WM.max))]],
            align='c',
            border="incols"
        )
        desc = EvTable(header=False,
                       align='l',
                       table=[[self.caller.long_desc]],
                       border=None)

        form.map(tables={1: gauges, 2: desc})

        self.caller.msg(unicode(form))

        if any(sw.startswith('sk') for sw in self.switches):
            self.caller.execute_cmd('skills')
Exemple #3
0
def pick_race(caller, **kwargs):
    races = [(x.name, x.sdesc) for x in PLAYABLE_RACES]
    text = "Pick a race"
    form = EvForm('resources.chargen_race_form')

    race_info = np.zeros((len(PLAYABLE_RACES), 8), dtype='object')

    for idx in range(len(PLAYABLE_RACES)):

        info = []
        s = PLAYABLE_RACES[idx]
        name = s.name.capitalize()
        for idy in range(8):
            if idy == 0:
                info.append(name)
            else:
                info.append(s.stats[idy - 1].base)

        max = np.max([x for x in info if isinstance(x, int)])
        min = np.min([x for x in info if isinstance(x, int)])

        idx_max = info.index(max)
        idx_min = info.index(min)
        info[idx_max] = f"|g{info[idx_max]}|n"
        info[idx_min] = f"|r{info[idx_min]}|n"

        info = [str(x) for x in info]
        race_info[idx] = info

    race_table = EvTable("Race",
                         "Str",
                         "End",
                         "Agi",
                         "Int",
                         "Wp",
                         "Prc",
                         "Prs",
                         table=race_info.transpose().tolist(),
                         border='incols',
                         height=2)
    form.map(tables={'B': race_table})
    text = str(form) + "\n*base stats"

    options = []
    for name, sdesc in races:
        options.append({
            'key': name.capitalize(),
            'desc': f"|c{sdesc.capitalize()}|n",
            'goto': ("skill_upgrade", {
                'race': name
            })
        })

    return text, tuple(options)
Exemple #4
0
    def func(self):
        "implements the actual functionality"

        form = EvForm("world/colours.py")

        # unicode is required since the example contains non-ascii characters
        t = unicode(form)

        self.caller.msg(t)
Exemple #5
0
    def func(self):
        """
        Handle displaying status.
        """
        # make sure the char has traits - only possible for superuser
        if len(self.caller.traits.all) == 0:
            return

        form = EvForm('commands.templates.charsheet', align='l')
        tr = self.caller.traits
        fields = {
            'A': self.caller.name,
            'B': self.caller.db.race,
            'C': self.caller.db.gender,
            'D': self.caller.db.guild,
            'E': self.caller.db.clan,
            'F': self.caller.db.title,
            'G': tr.LVL.actual,
            'H': self.caller.db.faith,
            'I': self.caller.db.devotion,
            'J': self.caller.db.nation,
            'K': self.caller.db.background,
            'L': tr.STR.actual,
            'M': tr.DEX.actual,
            'N': tr.CON.actual,
            'O': tr.INT.actual,
            'P': tr.WIS.actual,
            'Q': tr.CHA.actual,
            'R': tr.XP.actual,
            'S': tr.ENC.actual,
            'T': tr.ENC.max,
            'U': tr.HP.actual,
            'V': tr.HP.max,
            'W': tr.SP.actual,
            'X': tr.SP.max,
            'Y': tr.EP.actual,
            'Z': tr.EP.max,
        }
        form.map({k: self._format_trait_val(v) for k, v in fields.iteritems()})

        self.caller.msg(unicode(form))
Exemple #6
0
 def get_form(self, caller):
     """Return the formatted form."""
     if type(self).form:
         to_display = {}
         for i, field in enumerate(type(self).to_display):
             if hasattr(self, "get_{}".format(field)):
                 value = getattr(self, "get_{}".format(field))(caller)
             else:
                 value = self.obj
                 for part in field.split("."):
                     value = getattr(value, part)
             to_display[i + 1] = str(value)
         return unicode(
             EvForm(form={
                 "CELLCHAR": "x",
                 "TABLECHAR": "c",
                 "FORM": type(self).form
             },
                    cells=to_display))
     else:
         return "No display method has been provided for this object."
    def func(self):
        """
        Handle displaying status.
        """
        # make sure the char has traits - only possible for superuser
        if len(self.caller.traits.all) == 0:
            return

        form = EvForm('commands.templates.charsheet', align='r')
        tr = self.caller.traits
        fields = {
            'A': self.caller.name,
            'B': self.caller.db.archetype,
            'C': tr.XP.actual,
            'D': tr.XP.level_boundaries[tr.LV.actual],
            'E': tr.LV.actual,
            'F': tr.STR.actual,
            'G': tr.PER.actual,
            'H': tr.INT.actual,
            'I': tr.DEX.actual,
            'J': tr.CHA.actual,
            'K': tr.VIT.actual,
            'L': tr.MAG.actual,
            'M': tr.FORT.actual,
            'N': tr.REFL.actual,
            'O': tr.WILL.actual,
            'P': tr.ATKM.actual,
            'Q': tr.ATKR.actual,
            'R': tr.ATKU.actual,
            'S': tr.DEF.actual,
            'T': "{:+d}".format(tr.PP.actual),
            'U': tr.ENC.actual,
            'V': tr.ENC.max,
            'W': tr.MV.mod,
            'X': tr.MV.actual,
            'Y': self.caller.db.race,
            'Z': self.caller.db.focus,
        }
        form.map({k: self._format_trait_val(v) for k, v in fields.iteritems()})

        gauges = EvTable(
            "|CHP|n",
            "|CSP|n",
            "|CBM|n",
            "|CWM|n",
            table=[[
                "{} / {}".format(self._format_trait_val(tr.HP.actual),
                                 self._format_trait_val(tr.HP.max))
            ],
                   [
                       "{} / {}".format(self._format_trait_val(tr.SP.actual),
                                        self._format_trait_val(tr.SP.max))
                   ],
                   [
                       "{} / {}".format(self._format_trait_val(tr.BM.actual),
                                        self._format_trait_val(tr.BM.max))
                   ],
                   [
                       "{} / {}".format(self._format_trait_val(tr.WM.actual),
                                        self._format_trait_val(tr.WM.max))
                   ]],
            align='c',
            border="incols")
        desc = EvTable(header=False,
                       align='l',
                       table=[[self.caller.db.desc]],
                       border=None)

        form.map(tables={1: gauges, 2: desc})

        self.caller.msg(unicode(form))

        if any(sw.startswith('sk') for sw in self.switches):
            self.caller.execute_cmd('skills')
Exemple #8
0
    def func(self):
        """
        Handle displaying power list.
        """

        caller = self.caller
        form = EvForm('commands.templates.powersheet', align='l')

        if 'artisan' in caller.db.guild:
            fields = {
                'A': '',
                'B': '',
                'C': '',
                'D': '',
                'E': '',
                'F': '',
                'G': '',
                'H': '',
                'I': '',
                'J': '',
                'K': '',
                'L': '',
                'M': '',
                'N': '',
                'O': '',
                'P': '',
                'Q': '',
                'R': '',
                'S': '',
                'T': '',
                'U': '',
                'V': '',
                'W': '',
                'X': '',
                'Y': '',
                'Z': '',
                'AA': '',
                'AB': '',
                'AC': '',
                'AD': '',
                'AE': 'Artisan'
            }
            form.map(
                {k: self._format_trait_val(v)
                 for k, v in fields.iteritems()})

        if 'assassin' in caller.db.guild:
            fields = {
                'A': '',
                'B': '',
                'C': '',
                'D': '',
                'E': '',
                'F': '',
                'G': '',
                'H': '',
                'I': '',
                'J': '',
                'K': '',
                'L': '',
                'M': '',
                'N': '',
                'O': '',
                'P': '',
                'Q': '',
                'R': '',
                'S': '',
                'T': '',
                'U': '',
                'V': '',
                'W': '',
                'X': '',
                'Y': '',
                'Z': '',
                'AA': '',
                'AB': '',
                'AC': '',
                'AD': '',
                'AE': 'Assassin'
            }
            form.map(
                {k: self._format_trait_val(v)
                 for k, v in fields.iteritems()})

        if 'druid' in caller.db.guild:
            fields = {
                'A': '',
                'B': '',
                'C': '',
                'D': '',
                'E': '',
                'F': '',
                'G': '',
                'H': '',
                'I': '',
                'J': '',
                'K': '',
                'L': '',
                'M': '',
                'N': '',
                'O': '',
                'P': '',
                'Q': '',
                'R': '',
                'S': '',
                'T': '',
                'U': '',
                'V': '',
                'W': '',
                'X': '',
                'Y': '',
                'Z': '',
                'AA': '',
                'AB': '',
                'AC': '',
                'AD': '',
                'AE': 'Driuid'
            }
            form.map(
                {k: self._format_trait_val(v)
                 for k, v in fields.iteritems()})

        if 'fighter' in caller.db.guild:
            fields = {
                'A': '',
                'B': '',
                'C': '',
                'D': '',
                'E': '',
                'F': '',
                'G': '',
                'H': '',
                'I': '',
                'J': '',
                'K': '',
                'L': '',
                'M': '',
                'N': '',
                'O': '',
                'P': '',
                'Q': '',
                'R': '',
                'S': '',
                'T': '',
                'U': '',
                'V': '',
                'W': '',
                'X': '',
                'Y': '',
                'Z': '',
                'AA': '',
                'AB': '',
                'AC': '',
                'AD': '',
                'AE': 'Fighter'
            }
            form.map(
                {k: self._format_trait_val(v)
                 for k, v in fields.iteritems()})

        if 'harbinger' in caller.db.guild:
            fields = {
                'A': '',
                'B': '',
                'C': '',
                'D': '',
                'E': '',
                'F': '',
                'G': '',
                'H': '',
                'I': '',
                'J': '',
                'K': '',
                'L': '',
                'M': '',
                'N': '',
                'O': '',
                'P': '',
                'Q': '',
                'R': '',
                'S': '',
                'T': '',
                'U': '',
                'V': '',
                'W': '',
                'X': '',
                'Y': '',
                'Z': '',
                'AA': '',
                'AB': '',
                'AC': '',
                'AD': '',
                'AE': 'Harbinger'
            }
            form.map(
                {k: self._format_trait_val(v)
                 for k, v in fields.iteritems()})

        if 'helotyr' in caller.db.guild:
            fields = {
                'A': '',
                'B': '',
                'C': '',
                'D': '',
                'E': '',
                'F': '',
                'G': '',
                'H': '',
                'I': '',
                'J': '',
                'K': '',
                'L': '',
                'M': '',
                'N': '',
                'O': '',
                'P': '',
                'Q': '',
                'R': '',
                'S': '',
                'T': '',
                'U': '',
                'V': '',
                'W': '',
                'X': '',
                'Y': '',
                'Z': '',
                'AA': '',
                'AB': '',
                'AC': '',
                'AD': '',
                'AE': 'Helotyr'
            }
            form.map(
                {k: self._format_trait_val(v)
                 for k, v in fields.iteritems()})

        if 'mage' in caller.db.guild:
            fields = {
                'A': '',
                'B': '',
                'C': '',
                'D': '',
                'E': '',
                'F': '',
                'G': '',
                'H': '',
                'I': '',
                'J': '',
                'K': '',
                'L': '',
                'M': '',
                'N': '',
                'O': '',
                'P': '',
                'Q': '',
                'R': '',
                'S': '',
                'T': '',
                'U': '',
                'V': '',
                'W': '',
                'X': '',
                'Y': '',
                'Z': '',
                'AA': '',
                'AB': '',
                'AC': '',
                'AD': '',
                'AE': 'Mage'
            }
            form.map(
                {k: self._format_trait_val(v)
                 for k, v in fields.iteritems()})

        if 'merchant' in caller.db.guild:
            fields = {
                'A': '',
                'B': '',
                'C': '',
                'D': '',
                'E': '',
                'F': '',
                'G': '',
                'H': '',
                'I': '',
                'J': '',
                'K': '',
                'L': '',
                'M': '',
                'N': '',
                'O': '',
                'P': '',
                'Q': '',
                'R': '',
                'S': '',
                'T': '',
                'U': '',
                'V': '',
                'W': '',
                'X': '',
                'Y': '',
                'Z': '',
                'AA': '',
                'AB': '',
                'AC': '',
                'AD': '',
                'AE': 'Merchant'
            }
            form.map(
                {k: self._format_trait_val(v)
                 for k, v in fields.iteritems()})

        if 'monk' in caller.db.guild:
            fields = {
                'A': '',
                'B': '',
                'C': '',
                'D': '',
                'E': '',
                'F': '',
                'G': '',
                'H': '',
                'I': '',
                'J': '',
                'K': '',
                'L': '',
                'M': '',
                'N': '',
                'O': '',
                'P': '',
                'Q': '',
                'R': '',
                'S': '',
                'T': '',
                'U': '',
                'V': '',
                'W': '',
                'X': '',
                'Y': '',
                'Z': '',
                'AA': '',
                'AB': '',
                'AC': '',
                'AD': '',
                'AE': 'Monk'
            }
            form.map(
                {k: self._format_trait_val(v)
                 for k, v in fields.iteritems()})

        if 'ranger' in caller.db.guild:
            fields = {
                'A': '',
                'B': '',
                'C': '',
                'D': '',
                'E': '',
                'F': '',
                'G': '',
                'H': '',
                'I': '',
                'J': '',
                'K': '',
                'L': '',
                'M': '',
                'N': '',
                'O': '',
                'P': '',
                'Q': '',
                'R': '',
                'S': '',
                'T': '',
                'U': '',
                'V': '',
                'W': '',
                'X': '',
                'Y': '',
                'Z': '',
                'AA': '',
                'AB': '',
                'AC': '',
                'AD': '',
                'AE': 'Ranger'
            }
            form.map(
                {k: self._format_trait_val(v)
                 for k, v in fields.iteritems()})

        if 'samurai' in caller.db.guild:
            fields = {
                'A': '',
                'B': '',
                'C': '',
                'D': '',
                'E': '',
                'F': '',
                'G': '',
                'H': '',
                'I': '',
                'J': '',
                'K': '',
                'L': '',
                'M': '',
                'N': '',
                'O': '',
                'P': '',
                'Q': '',
                'R': '',
                'S': '',
                'T': '',
                'U': '',
                'V': '',
                'W': '',
                'X': '',
                'Y': '',
                'Z': '',
                'AA': '',
                'AB': '',
                'AC': '',
                'AD': '',
                'AE': 'Samurai'
            }
            form.map(
                {k: self._format_trait_val(v)
                 for k, v in fields.iteritems()})

        if 'sarthoar' in caller.db.guild:
            fields = {
                'A': '',
                'B': '',
                'C': '',
                'D': '',
                'E': '',
                'F': '',
                'G': '',
                'H': '',
                'I': '',
                'J': '',
                'K': '',
                'L': '',
                'M': '',
                'N': '',
                'O': '',
                'P': '',
                'Q': '',
                'R': '',
                'S': '',
                'T': '',
                'U': '',
                'V': '',
                'W': '',
                'X': '',
                'Y': '',
                'Z': '',
                'AA': '',
                'AB': '',
                'AC': '',
                'AD': '',
                'AE': 'Sarthoar'
            }
            form.map(
                {k: self._format_trait_val(v)
                 for k, v in fields.iteritems()})

        if 'shaman' in caller.db.guild:
            fields = {
                'A': '',
                'B': '',
                'C': '',
                'D': '',
                'E': '',
                'F': '',
                'G': '',
                'H': '',
                'I': '',
                'J': '',
                'K': '',
                'L': '',
                'M': '',
                'N': '',
                'O': '',
                'P': '',
                'Q': '',
                'R': '',
                'S': '',
                'T': '',
                'U': '',
                'V': '',
                'W': '',
                'X': '',
                'Y': '',
                'Z': '',
                'AA': '',
                'AB': '',
                'AC': '',
                'AD': '',
                'AE': 'Shaman'
            }
            form.map(
                {k: self._format_trait_val(v)
                 for k, v in fields.iteritems()})

        if 'sorcerer' in caller.db.guild:
            fields = {
                'A': 'Cursed bone, Death spike',
                'B': 'Body to Mind, Gloom',
                'C': 'Vampiric touch',
                'D': 'Weakness',
                'E': 'Corpse drain',
                'F': 'Poison',
                'G': 'Corrupted Man',
                'H': 'Transfer Pain, Anchor',
                'I': 'Blood Cloak',
                'J': 'Corpse Burst, Bone dust',
                'K': 'Sleep, Disease',
                'L': 'Silence, Poison cloud',
                'M': 'Spectral Hunter, Blood Gem',
                'N': 'Reanimated man',
                'O': 'Teleport, Vampire Claw',
                'P': 'Bone Scythe',
                'Q': 'Curse Death Link',
                'R': 'Blood shield',
                'S': 'Circle of Death',
                'T': 'Imbue Blood, Imbue Death',
                'U': 'Cursed Man',
                'V': 'Mass Sleep',
                'W': 'Mass Silence',
                'X': 'Plague',
                'Y': 'Teleport Other, Summon',
                'Z': 'Mass Weakness',
                'AA': 'Blood Ward',
                'AB': 'Mass Anchor',
                'AC': 'Death Rain',
                'AD': 'Cursed Army',
                'AE': 'Sorcerer'
            }
            form.map(
                {k: self._format_trait_val(v)
                 for k, v in fields.iteritems()})

        if 'templar' in caller.db.guild:
            fields = {
                'A': '',
                'B': '',
                'C': '',
                'D': '',
                'E': '',
                'F': '',
                'G': '',
                'H': '',
                'I': '',
                'J': '',
                'K': '',
                'L': '',
                'M': '',
                'N': '',
                'O': '',
                'P': '',
                'Q': '',
                'R': '',
                'S': '',
                'T': '',
                'U': '',
                'V': '',
                'W': '',
                'X': '',
                'Y': '',
                'Z': '',
                'AA': '',
                'AB': '',
                'AC': '',
                'AD': '',
                'AE': 'Templar'
            }
            form.map(
                {k: self._format_trait_val(v)
                 for k, v in fields.iteritems()})

        if 'thief' in caller.db.guild:
            fields = {
                'A': '',
                'B': '',
                'C': '',
                'D': '',
                'E': '',
                'F': '',
                'G': '',
                'H': '',
                'I': '',
                'J': '',
                'K': '',
                'L': '',
                'M': '',
                'N': '',
                'O': '',
                'P': '',
                'Q': '',
                'R': '',
                'S': '',
                'T': '',
                'U': '',
                'V': '',
                'W': '',
                'X': '',
                'Y': '',
                'Z': '',
                'AA': '',
                'AB': '',
                'AC': '',
                'AD': '',
                'AE': 'Thief'
            }
            form.map(
                {k: self._format_trait_val(v)
                 for k, v in fields.iteritems()})

        if 'trader' in caller.db.guild:
            fields = {
                'A': '',
                'B': '',
                'C': '',
                'D': '',
                'E': '',
                'F': '',
                'G': '',
                'H': '',
                'I': '',
                'J': '',
                'K': '',
                'L': '',
                'M': '',
                'N': '',
                'O': '',
                'P': '',
                'Q': '',
                'R': '',
                'S': '',
                'T': '',
                'U': '',
                'V': '',
                'W': '',
                'X': '',
                'Y': '',
                'Z': '',
                'AA': '',
                'AB': '',
                'AC': '',
                'AD': '',
                'AE': 'Trader'
            }
            form.map(
                {k: self._format_trait_val(v)
                 for k, v in fields.iteritems()})

        if 'warrior' in caller.db.guild:
            fields = {
                'A': '',
                'B': '',
                'C': '',
                'D': '',
                'E': '',
                'F': '',
                'G': '',
                'H': '',
                'I': '',
                'J': '',
                'K': '',
                'L': '',
                'M': '',
                'N': '',
                'O': '',
                'P': '',
                'Q': '',
                'R': '',
                'S': '',
                'T': '',
                'U': '',
                'V': '',
                'W': '',
                'X': '',
                'Y': '',
                'Z': '',
                'AA': '',
                'AB': '',
                'AC': '',
                'AD': '',
                'AE': 'Warrior'
            }
            form.map(
                {k: self._format_trait_val(v)
                 for k, v in fields.iteritems()})

        self.caller.msg(unicode(form))
Exemple #9
0
 def get_form(self, form, *fields):
     """Return the EvForm corresponding to a form."""
     cells = {i + 1: field for i, field in enumerate(fields)}
     form = EvForm(cells=cells, form={"CELLCHAR": "x", "TABLECHAR": "c", "FORM": dedent("\n" + form.lstrip("\n"))})
     return form