Merge pull request #2997 from rmgr/evadventure_chargen_cleanup

evAdventure tidy up to get chargen.py working
This commit is contained in:
Griatch 2022-11-25 12:21:44 +01:00 committed by GitHub
commit 5e5fe1dcde

View file

@ -5,6 +5,9 @@ EvAdventure character generation.
from evennia import create_object from evennia import create_object
from evennia.prototypes.spawner import spawn from evennia.prototypes.spawner import spawn
from evennia.utils.evmenu import EvMenu from evennia.utils.evmenu import EvMenu
from evennia.objects.models import ObjectDB
from django.conf import settings
from .characters import EvAdventureCharacter from .characters import EvAdventureCharacter
from .random_tables import chargen_tables from .random_tables import chargen_tables
@ -84,6 +87,7 @@ class TemporaryCharacterSheet:
misfortune = dice.roll_random_table("1d20", chargen_tables["misfortune"]) misfortune = dice.roll_random_table("1d20", chargen_tables["misfortune"])
alignment = dice.roll_random_table("1d20", chargen_tables["alignment"]) alignment = dice.roll_random_table("1d20", chargen_tables["alignment"])
self.ability_changes = 0
self.desc = ( self.desc = (
f"You are {physique} with a {face} face, {skin} skin, {hair} hair, {speech} speech, and" f"You are {physique} with a {face} face, {skin} skin, {hair} hair, {speech} speech, and"
f" {clothing} clothing. You were a {background.title()}, but you were {misfortune} and" f" {clothing} clothing. You were a {background.title()}, but you were {misfortune} and"
@ -135,16 +139,22 @@ class TemporaryCharacterSheet:
equipment=", ".join(equipment), equipment=", ".join(equipment),
) )
def apply(self): def apply(self, account):
""" """
Once the chargen is complete, call this create and set up the character. Once the chargen is complete, call this create and set up the character.
""" """
start_location = ObjectDB.objects.get_id(settings.START_LOCATION)
default_home = ObjectDB.objects.get_id(settings.DEFAULT_HOME)
permissions = settings.PERMISSION_ACCOUNT_DEFAULT
# creating character with given abilities # creating character with given abilities
new_character = create_object( new_character = create_object(
EvAdventureCharacter, EvAdventureCharacter,
key=self.name, key=self.name,
location=start_location,
home=default_home,
permissions=permissions,
attributes=( attributes=(
("strength", self.strength), ("strength", self.strength),
("dexterity", self.dexterity), ("dexterity", self.dexterity),
@ -157,23 +167,28 @@ class TemporaryCharacterSheet:
("desc", self.desc), ("desc", self.desc),
), ),
) )
new_character.locks.add(
"puppet:id(%i) or pid(%i) or perm(Developer) or pperm(Developer);delete:id(%i) or"
" perm(Admin)" % (new_character.id, account.id, account.id)
)
# spawn equipment # spawn equipment
if self.weapon: if self.weapon:
weapon = spawn(self.weapon) weapon = spawn(self.weapon)
new_character.equipment.move(weapon) new_character.equipment.move(weapon[0])
if self.shield:
shield = spawn(self.shield)
new_character.equipment.move(shield)
if self.armor: if self.armor:
armor = spawn(self.armor) armor = spawn(self.armor)
new_character.equipment.move(armor) new_character.equipment.move(armor[0])
if self.shield:
shield = spawn(self.shield)
new_character.equipment.move(shield[0])
if self.helmet: if self.helmet:
helmet = spawn(self.helmet) helmet = spawn(self.helmet)
new_character.equipment.move(helmet) new_character.equipment.move(helmet[0])
for item in self.backpack: for item in self.backpack:
item = spawn(item) item = spawn(item)
new_character.equipment.move(item) new_character.equipment.move(item[0])
return new_character return new_character
@ -301,10 +316,8 @@ def node_apply_character(caller, raw_string, **kwargs):
""" """
tmp_character = kwargs["tmp_character"] tmp_character = kwargs["tmp_character"]
new_character = tmp_character.apply(caller) new_character = tmp_character.apply(caller)
caller.db._playable_characters.append(new_character)
caller.account.db._playble_characters = [new_character]
text = "Character created!" text = "Character created!"
@ -321,9 +334,10 @@ def start_chargen(caller, session=None):
"node_chargen": node_chargen, "node_chargen": node_chargen,
"node_change_name": node_change_name, "node_change_name": node_change_name,
"node_swap_abilities": node_swap_abilities, "node_swap_abilities": node_swap_abilities,
"node_apply_character": node_apply_character,
} }
# this generates all random components of the character # this generates all random components of the character
tmp_character = TemporaryCharacterSheet() tmp_character = TemporaryCharacterSheet()
EvMenu(caller, menutree, startnode="node_chargen", session=session, tmp_character=tmp_character) EvMenu(caller, menutree, startnode="node_chargen", session=session, startnode_input=('sgsg', {"tmp_character":tmp_character}))