Triggers now work with |p and {0} for a target.
Fixed some bugs, including the trailing period when looking at something.
This commit is contained in:
parent
1cb69a9ab4
commit
daace6e983
3 changed files with 58 additions and 21 deletions
|
|
@ -1,5 +1,6 @@
|
|||
#!/usr/bin/env python
|
||||
|
||||
from random import choice
|
||||
from re import match
|
||||
|
||||
from evennia import CmdSet, create_script
|
||||
|
|
@ -19,7 +20,9 @@ class CmdFly(Command):
|
|||
Make sure you set the following properties, for instance:
|
||||
|
||||
@set self/disappear_msg = "The wizard disappears in a puff of smoke."
|
||||
@set self/reappear_msg = "A plume of <<white ^ light blue ^ gray ^ >> smoke appears... ;; When the smoke clears, a wizard <<emerges ^ materializes>>."
|
||||
@set self/reappear_msg = "A plume of <<white ^ light blue ^ gray ^ >>
|
||||
smoke appears... ;; When the smoke clears, a
|
||||
wizard <<emerges ^ materializes>>."
|
||||
@set self/appear_delay = 3
|
||||
|
||||
The last setting is the number of seconds between message segments
|
||||
|
|
@ -30,6 +33,9 @@ class CmdFly(Command):
|
|||
locks = "cmd:holds()"
|
||||
|
||||
def func(self):
|
||||
"""
|
||||
Call the 'do_fly' method on the caller.
|
||||
"""
|
||||
self.caller.do_fly(self.args.strip())
|
||||
|
||||
|
||||
|
|
@ -93,12 +99,13 @@ class CmdGM(MuxCommand):
|
|||
|
||||
me = self.caller
|
||||
|
||||
msg = routput(self.args)
|
||||
for o in send_to:
|
||||
if o.is_typeclass('typeclasses.rooms.Room'):
|
||||
chars = o.contents_get(None, 'character')
|
||||
send_emote(me, chars, self.args, 'say', None)
|
||||
send_emote(me, chars, msg, 'say', None)
|
||||
elif o.is_typeclass('typeclasses.characters.Character'):
|
||||
o.msg(self.args)
|
||||
o.msg(msg)
|
||||
|
||||
|
||||
class CmdSpell(Command):
|
||||
|
|
@ -211,7 +218,7 @@ class CmdGMTrigger(Command):
|
|||
|
||||
if not self.name:
|
||||
npc.msg("What event do you want to trigger?")
|
||||
for name,details in triggers.items():
|
||||
for name, details in triggers.items():
|
||||
npc.msg(f" - {name} : {details['desc']}")
|
||||
return
|
||||
|
||||
|
|
@ -231,14 +238,21 @@ class CmdGMTrigger(Command):
|
|||
element goes to 'dests' and the second goes to the room
|
||||
(based on the caller's location).
|
||||
"""
|
||||
if len(self.send_to) > 0:
|
||||
target = self.send_to[0]
|
||||
else:
|
||||
target = choice(self.caller.characters_here())
|
||||
name = target.db._sdesc or target.key or ""
|
||||
|
||||
for idx, event in enumerate(events):
|
||||
if isinstance(event, str):
|
||||
msg = target.gendered_text(routput(event, name))
|
||||
delay(time_delay * idx,
|
||||
self.caller.location.msg_contents,
|
||||
"\n" + routput(event))
|
||||
"\n" + msg)
|
||||
else:
|
||||
char = event[0]
|
||||
room = event[1]
|
||||
char = target.gendered_text(routput(event[0], name))
|
||||
room = target.gendered_text(routput(event[1], name))
|
||||
|
||||
if room:
|
||||
delay(time_delay * idx,
|
||||
|
|
|
|||
|
|
@ -211,18 +211,18 @@ class Character(Object, GenderCharacter, ContribRPCharacter):
|
|||
key="post_desc") or ""
|
||||
reg_desc = super().return_appearance(looker)
|
||||
|
||||
pronoun = self.pronoun_subjective(True)
|
||||
return self.gendered_text(pre_desc + \
|
||||
# pronoun = self.pronoun_subjective(True)
|
||||
return self.gendered_text(pre_desc +
|
||||
reg_desc.replace('|wYou see:|n',
|
||||
'|S has') + \
|
||||
post_desc + '.')
|
||||
'|S has') +
|
||||
post_desc)
|
||||
|
||||
def at_pre_move(self, destination, *args, **kwargs):
|
||||
"""
|
||||
Called by self.move_to when trying to move somewhere. If this returns
|
||||
False, the move is immediately canceled.
|
||||
"""
|
||||
self.db.tutorstate = self.db.tutorstate | TutorialState.MOVE.value
|
||||
self.db.tutorstate = (self.db.tutorstate or 0) | TutorialState.MOVE.value
|
||||
|
||||
if self.db.is_sitting:
|
||||
self.msg("You stand up first...")
|
||||
|
|
@ -250,7 +250,7 @@ class Character(Object, GenderCharacter, ContribRPCharacter):
|
|||
|
||||
def at_pre_say(self, message, **kwargs):
|
||||
"While we could/should do 'at_say', this should be easier."
|
||||
self.db.tutorstate = self.db.tutorstate | TutorialState.SAY.value
|
||||
self.db.tutorstate = (self.db.tutorstate or 0) | TutorialState.SAY.value
|
||||
return super().at_pre_say(message)
|
||||
|
||||
def at_look(self, target, **kwargs):
|
||||
|
|
@ -278,9 +278,9 @@ class Character(Object, GenderCharacter, ContribRPCharacter):
|
|||
self.tags.add(hidden_tag)
|
||||
|
||||
if target.is_typeclass("typeclasses.rooms.Room"):
|
||||
self.db.tutorstate = self.db.tutorstate | TutorialState.LOOK.value
|
||||
self.db.tutorstate = (self.db.tutorstate or 0) | TutorialState.LOOK.value
|
||||
else:
|
||||
self.db.tutorstate = self.db.tutorstate | TutorialState.LOOKAT.value
|
||||
self.db.tutorstate = (self.db.tutorstate or 0) | TutorialState.LOOKAT.value
|
||||
|
||||
# Regardless of what happened before, we return the normal
|
||||
# function call.
|
||||
|
|
@ -329,6 +329,15 @@ class Character(Object, GenderCharacter, ContribRPCharacter):
|
|||
self.db.reappear_msg.split(';;'),
|
||||
self.db.appear_delay or 2)
|
||||
|
||||
def characters_here(self):
|
||||
"""
|
||||
Return a list of characters in the current location.
|
||||
"""
|
||||
return [char for char in
|
||||
self.search("", typeclass="typeclasses.characters.Character",
|
||||
location=self.location, quiet=True)
|
||||
if char != self]
|
||||
|
||||
# Hooks to the puppets:
|
||||
|
||||
def puppets_here(self):
|
||||
|
|
|
|||
|
|
@ -153,7 +153,7 @@ py bt = self.search('Bartender'); bt.db.gender = 'male'; bt.db._sdesc = 'blonde
|
|||
|
||||
|
||||
# [[file:../../../projects/mud-rpg.org::*Or a Mushroom Bartender][Or a Mushroom Bartender:4]]
|
||||
@detail mushroom;mushroom man = A stubby mushroom with an enormous red cap and a friendly looking face. Amazing how he can balance cocktails on its head.
|
||||
@detail mushroom person;mushroom man = A stubby mushroom with an enormous red cap and a friendly looking face. Amazing how he can balance cocktails on its head.
|
||||
# Or a Mushroom Bartender:4 ends here
|
||||
|
||||
# Pixie Quartet
|
||||
|
|
@ -177,14 +177,27 @@ py bt = self.search('pixies'); bt.db.pose_default = 'playing music atop a giant
|
|||
@desc pixies = Atop a giant fieldcap mushroom, a quartet of pixies playing the strangest instruments you've never seen, fill the room with music.
|
||||
# Pixie Quartet:3 ends here
|
||||
|
||||
# [[file:../../../projects/mud-rpg.org::*Pixie Quartet][Pixie Quartet:4]]
|
||||
@detail mushroom = A giant, beige-colored mushroom grows on the side of this room providing a perfect stage for the pixie musicians.
|
||||
# Pixie Quartet:4 ends here
|
||||
|
||||
|
||||
|
||||
# And give him the powers he deserves:
|
||||
|
||||
|
||||
# [[file:../../../projects/mud-rpg.org::*Pixie Quartet][Pixie Quartet:4]]
|
||||
# [[file:../../../projects/mud-rpg.org::*Pixie Quartet][Pixie Quartet:5]]
|
||||
@perm pixies = Admin
|
||||
# Pixie Quartet:4 ends here
|
||||
# Pixie Quartet:5 ends here
|
||||
|
||||
|
||||
|
||||
# And when Dabbler arrives …
|
||||
|
||||
|
||||
# [[file:../../../projects/mud-rpg.org::*Pixie Quartet][Pixie Quartet:6]]
|
||||
@set pixies/arrive:dabbler = "8 ;; gm The quartet on the mushroom start playing an << interesting ^ odd >> << composition ^ song ^ arrangment >>. ;; 20 ;; The pixie leader says, \"As you can tell, we're playing << a jazz standard ^ a jazz melody ^ something the Mudders call, jazz fusion >>. That's right, something we picked up from << our travels in ^ >> the Mud World."
|
||||
# Pixie Quartet:6 ends here
|
||||
|
||||
# Awakened Shrub
|
||||
# Next great NPC will a cameo from the Awakened Shrub.
|
||||
|
|
@ -244,17 +257,18 @@ py bt = self.search('shrub'); bt.db.gender = 'neutral'; bt.db._sdesc = 'shrub';
|
|||
# [[file:../../../projects/mud-rpg.org::*Dabbler][Dabbler:2]]
|
||||
@set/character #34/triggers:session1 = {
|
||||
"bubbles": {"desc": "Character blows bubbles",
|
||||
"timer": 10,
|
||||
"timer": 5,
|
||||
"events": [
|
||||
"The old gnome hits his staff on the floor.",
|
||||
("You notice bubbles coming out every time you open your mouth to speak.",
|
||||
"Every time |s speaks, you notice bubbles coming from the mouth of /target."
|
||||
"Every time |s speaks, you notice bubbles coming from the mouth of the {0}."
|
||||
)
|
||||
]
|
||||
},
|
||||
"dark": {"desc": "Make the room go black",
|
||||
"timer": 5,
|
||||
"events": [
|
||||
"The /gnome slams his staff against the floor. The room goes completely dark.",
|
||||
"The old gnome slams his staff against the floor. The room goes completely dark.",
|
||||
"The music stops.",
|
||||
"In the darkness, you see a pair of large red eyes, and a low gutteral growl.",
|
||||
("You can't help it, but scream!",
|
||||
|
|
|
|||
Loading…
Reference in a new issue