Another new addition: a new way to define emotes which should be a bit quicker/easier/less error-prone.
Old way:
def smile(event, player, room)
if event[:object]
at = room.find(event[:object])
if at.nil?
player.output("Smiling at nothing?")
return
elsif at == player
event[:to_player] = "You smile happily at yourself."
event[:to_other] = "#{player.name} smiles at #{player.pronoun(:reflexive)} sillily."
else
event[:target] = at
event[:to_player] = "You smile at #{at.name} kindly."
event[:to_target] = "#{player.name} smiles at you kindly."
event[:to_other] = "#{player.name} smiles at #{at.name} kindly."
end
else
event[:to_player] = "You smile happily."
event[:to_other] = "#{player.name} smiles happily."
end
room.out_event(event)
end
New way:
def smile(event, player, room)
make_emote event, player, room do
self_target do
to_player "You smile happily at yourself."
to_other "#{player.name} smiles at #{player.pronoun(:reflexive)} sillily."
end
target do
to_player "You smile at #{event.target.name} kindly."
to_target "#{player.name} smiles at you kindly."
to_other "#{player.name} smiles at #{event.target.name} kindly."
end
no_target do
to_player "You smile happily."
to_other "#{player.name} smiles happily."
end
end
end
Besides the nifty syntax, the only other change is that
event.target should be used wherever
at or
object were being used before.
All the current emotes have been converted to this new method.