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)
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')
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)
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)
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))
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')
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))
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