mirror of
https://github.com/evennia/evennia.git
synced 2026-04-05 07:27:17 +02:00
The reworked tutorial world builds now without error; need to play-test it.
This commit is contained in:
parent
c63ae1742f
commit
6f4cbbc1be
4 changed files with 42 additions and 30 deletions
|
|
@ -739,7 +739,7 @@ hole
|
|||
the remains of the castle. There is also a standing archway
|
||||
offering passage to a path along the old {wsouth{nern inner wall.
|
||||
#
|
||||
@detail portoculis;fall;fallen;grating
|
||||
@detail portoculis;fall;fallen;grating =
|
||||
This heavy iron grating used to block off the inner part of the gate house, now it has fallen
|
||||
to the ground together with the stone archway that once help it up.
|
||||
#
|
||||
|
|
@ -834,7 +834,7 @@ archway
|
|||
#
|
||||
@set ghost/get_err_msg = Your fingers just pass straight through it!
|
||||
#
|
||||
@desc ghost/desc_alive =
|
||||
@set ghost/desc_alive =
|
||||
This ghostly shape could momentarily be mistaken for a thick fog had
|
||||
it not moved with such determination and giving echoing hollow
|
||||
screams as it did. The shape is hard to determine, now and then it
|
||||
|
|
@ -842,7 +842,7 @@ archway
|
|||
later. The thing reeks of almost tangible spite at your
|
||||
presence. This must be the ruin's eternal guardian.
|
||||
#
|
||||
@desc ghost/desc_dead =
|
||||
@set ghost/desc_dead =
|
||||
The ghostly apparition is nothing but a howling on the wind, an eternal
|
||||
cold spot that can never be fully eradicated from these walls. While harmless
|
||||
in this state, there is no doubt that it shall eventually return to this plane
|
||||
|
|
@ -970,6 +970,7 @@ mobon ghost
|
|||
@detail altar =
|
||||
The altar is a massive stone slab. It might once have had ornate decorations
|
||||
but time and the salty air has broken everything down into dust.
|
||||
#
|
||||
@detail ceiling =
|
||||
The dome still looming intact above you is a marvel of engineering.
|
||||
|
||||
|
|
@ -1248,6 +1249,8 @@ stairs down
|
|||
#
|
||||
@set sarcophagus/rack_id = rack_sarcophagus
|
||||
#
|
||||
@set sarcophagus/available_weapons = ["ornate_longsword","warhammer","rune axe","thruning","slayer waraxe","ghostblade","hawkblade"]
|
||||
#
|
||||
@set sarcophagus/no_more_weapons_msg =
|
||||
The tomb has already granted you all the might it will ever do.
|
||||
#
|
||||
|
|
@ -1284,7 +1287,7 @@ stairs down
|
|||
# rack_id. This we can use to check if any such weapon is in inventory
|
||||
# before unlocking the exit.
|
||||
#
|
||||
@lock Exit tutorial: view:holds(rack_sarcophagus) ; traverse:holds(rack_sarcophagus)
|
||||
@lock Exit tutorial = view:holds(rack_sarcophagus) ; traverse:holds(rack_sarcophagus)
|
||||
#
|
||||
# to tutorial outro
|
||||
@tel tut#17
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ class CmdMobOnOff(Command):
|
|||
mob = self.caller.search(self.args)
|
||||
if not mob:
|
||||
return
|
||||
if self.cmdname == "mobon":
|
||||
if self.cmdstring == "mobon":
|
||||
mob.set_alive()
|
||||
else:
|
||||
mob.set_dead()
|
||||
|
|
@ -91,7 +91,7 @@ class Mob(tut_objects.TutorialObject):
|
|||
happen to roam into a room with no exits.
|
||||
|
||||
"""
|
||||
def __init__(self):
|
||||
def at_init(self):
|
||||
"""
|
||||
When initialized from cache (after a server reboot), set up
|
||||
the AI state.
|
||||
|
|
@ -107,7 +107,7 @@ class Mob(tut_objects.TutorialObject):
|
|||
Called the first time the object is created.
|
||||
We set up the base properties and flags here.
|
||||
"""
|
||||
self.cmdsets.add(MobCmdSet, permanent=True)
|
||||
self.cmdset.add(MobCmdSet, permanent=True)
|
||||
# Main AI flags. We start in dead mode so we don't have to
|
||||
# chase the mob around when building.
|
||||
self.db.patrolling = True
|
||||
|
|
|
|||
|
|
@ -576,9 +576,9 @@ class CrumblingWall(TutorialObject, DefaultExit):
|
|||
whenever the button is pushed (this hides it as an exit
|
||||
until it actually is)
|
||||
"""
|
||||
def __init__(self):
|
||||
def at_init(self):
|
||||
"""
|
||||
We make sure to reset the puzzle after a server reload/reboot.
|
||||
Called when object is recalled from cache.
|
||||
"""
|
||||
self.reset()
|
||||
|
||||
|
|
@ -913,42 +913,51 @@ WEAPON_PROTOTYPES = {
|
|||
"hit": 0.4,
|
||||
"damage": 6,
|
||||
"parry": 0.2},
|
||||
"axe": {
|
||||
"prototype": "weapon",
|
||||
"key":"Axe",
|
||||
"desc": "A woodcutter's axe with a keen edge.",
|
||||
"hit": 0.4,
|
||||
"damage": 6,
|
||||
"parry": 0.2},
|
||||
"ornate longsword": {
|
||||
"prototype":"sword",
|
||||
"key": "Ornate longsword",
|
||||
"desc": "A fine longsword with some swirling patterns on the handle.",
|
||||
"hit": 0.5,
|
||||
"magic": True,
|
||||
"damage": 5},
|
||||
"rune axe": {
|
||||
"prototype": "club",
|
||||
"key": "Runeaxe",
|
||||
"aliases": ["axe"],
|
||||
"hit": 0.4,
|
||||
"damage": 6},
|
||||
"thruning": {
|
||||
"prototype": "sword",
|
||||
"key": "Broadsword named Thruning",
|
||||
"desc": "This heavy bladed weapon is marked with the name 'Thruning'. It is very powerful in skilled hands.",
|
||||
"hit": 0.6,
|
||||
"parry": 0.6,
|
||||
"damage": 7},
|
||||
"warhammer": {
|
||||
"prototype": "club",
|
||||
"key": "Silver Warhammer",
|
||||
"aliases": ["hammer", "warhammer", "war"],
|
||||
"desc": "A heavy war hammer with silver ornaments. This huge weapon causes massive damage - if you can hit.",
|
||||
"hit": 0.4,
|
||||
"damage": 10},
|
||||
"slayer waraxe": {
|
||||
"magic": True,
|
||||
"damage": 8},
|
||||
"rune axe": {
|
||||
"prototype": "axe",
|
||||
"key": "Runeaxe",
|
||||
"aliases": ["axe"],
|
||||
"hit": 0.4,
|
||||
"magic": True,
|
||||
"damage": 6},
|
||||
"thruning": {
|
||||
"prototype": "ornate longsword",
|
||||
"key": "Broadsword named Thruning",
|
||||
"desc": "This heavy bladed weapon is marked with the name 'Thruning'. It is very powerful in skilled hands.",
|
||||
"hit": 0.6,
|
||||
"parry": 0.6,
|
||||
"damage": 7},
|
||||
"slayer waraxe": {
|
||||
"prototype": "rune axe",
|
||||
"key": "Slayer waraxe",
|
||||
"aliases": ["waraxe", "war", "slayer"],
|
||||
"desc": "A huge double-bladed axe marked with the runes for 'Slayer'. It has more runic inscriptions on its head, which you cannot decipher.",
|
||||
"magic": True,
|
||||
"hit": 0.7,
|
||||
"damage": 8},
|
||||
"ghostblade": {
|
||||
"prototype": "slayer waraxe",
|
||||
"prototype": "ornate longsword",
|
||||
"key": "The Ghostblade",
|
||||
"aliases": ["blade", "ghost"],
|
||||
"desc": "This massive sword is large as you are tall, yet seems to weigh almost nothing. It's almost like it's not really there.",
|
||||
|
|
@ -960,9 +969,9 @@ WEAPON_PROTOTYPES = {
|
|||
"key": "The Hawblade",
|
||||
"aliases": ["hawk", "blade"],
|
||||
"desc": "The weapon of a long-dead heroine and a more civilized age, the hawk-shaped hilt of this blade almost has a life of its own.",
|
||||
"hit": 0.95,
|
||||
"parry": 0.8,
|
||||
"damage": 12}
|
||||
"hit": 0.85,
|
||||
"parry": 0.7,
|
||||
"damage": 11}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -524,7 +524,7 @@ def has_player(accessing_obj, accessed_obj, *args, **kwargs):
|
|||
This is a useful lock for traverse-locking Exits to restrain NPC
|
||||
mobiles from moving outside their areas.
|
||||
"""
|
||||
return hasattr(accessing_obj, "has_player") and accessing_obj.has_player
|
||||
return hasattr(accessing_obj, "has_player") and accessing_obj.has_player()
|
||||
|
||||
def serversetting(accessing_obj, accessed_obj, *args, **kwargs):
|
||||
"""
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue