mirror of
https://github.com/evennia/evennia.git
synced 2026-03-24 00:36:30 +01:00
contrib/barter.py code cleaning, update markup
Renames partA/B variables to part_a/b Typo fixes
This commit is contained in:
parent
81d35dad14
commit
b1be4ade62
1 changed files with 161 additions and 162 deletions
|
|
@ -38,10 +38,10 @@ B sees: You are now trading with A. Use 'trade help' for aid.
|
|||
A: offer sword: This is a nice sword. I would need some rations in trade.
|
||||
B sees: A says: "This is a nice sword. I would need some rations in trade."
|
||||
[A offers Sword of might.]
|
||||
B evalute sword
|
||||
B evaluate sword
|
||||
B sees: <Sword's description and possibly stats>
|
||||
B: offer ration: This is a prime ration.
|
||||
A sees: B says: "These is a prime ration."
|
||||
A sees: B says: "This is a prime ration."
|
||||
[B offers iron ration]
|
||||
A: say Hey, this is a nice sword, I need something more for it.
|
||||
B sees: A says: "Hey this is a nice sword, I need something more for it."
|
||||
|
|
@ -136,7 +136,7 @@ class TradeHandler(object):
|
|||
Objects of this class handles the ongoing trade, notably storing the current
|
||||
offers from each side and wether both have accepted or not.
|
||||
"""
|
||||
def __init__(self, partA, partB):
|
||||
def __init__(self, part_a, part_b):
|
||||
"""
|
||||
Initializes the trade. This is called when part A tries to
|
||||
initiate a trade with part B. The trade will not start until
|
||||
|
|
@ -144,8 +144,8 @@ class TradeHandler(object):
|
|||
command)
|
||||
|
||||
Args:
|
||||
partA (object): The party trying to start barter.
|
||||
partB (object): The party asked to barter.
|
||||
part_a (object): The party trying to start barter.
|
||||
part_b (object): The party asked to barter.
|
||||
|
||||
Notes:
|
||||
We also store the back-reference from the respective party
|
||||
|
|
@ -153,17 +153,17 @@ class TradeHandler(object):
|
|||
|
||||
"""
|
||||
# parties
|
||||
self.partA = partA
|
||||
self.partB = partB
|
||||
self.part_a = part_a
|
||||
self.part_b = part_b
|
||||
|
||||
self.partA.cmdset.add(CmdsetTrade())
|
||||
self.part_a.cmdset.add(CmdsetTrade())
|
||||
self.trade_started = False
|
||||
self.partA.ndb.tradehandler = self
|
||||
self.part_a.ndb.tradehandler = self
|
||||
# trade variables
|
||||
self.partA_offers = []
|
||||
self.partB_offers = []
|
||||
self.partA_accepted = False
|
||||
self.partB_accepted = False
|
||||
self.part_a_offers = []
|
||||
self.part_b_offers = []
|
||||
self.part_a_accepted = False
|
||||
self.part_b_accepted = False
|
||||
|
||||
def msg_other(self, sender, string):
|
||||
"""
|
||||
|
|
@ -172,59 +172,59 @@ class TradeHandler(object):
|
|||
have to worry about which party they are in the handler.
|
||||
|
||||
Args:
|
||||
sender (object): One of partA or B. The method will figure
|
||||
sender (object): One of A or B. The method will figure
|
||||
out the *other* party to send to.
|
||||
string (str): Text to send.
|
||||
"""
|
||||
if self.partA == sender:
|
||||
self.partB.msg(string)
|
||||
elif self.partB == sender:
|
||||
self.partA.msg(string)
|
||||
if self.part_a == sender:
|
||||
self.part_b.msg(string)
|
||||
elif self.part_b == sender:
|
||||
self.part_a.msg(string)
|
||||
else:
|
||||
# no match, relay to oneself
|
||||
sender.msg(string) if sender else self.partA.msg(string)
|
||||
sender.msg(string) if sender else self.part_a.msg(string)
|
||||
|
||||
def get_other(self, party):
|
||||
"""
|
||||
Returns the other party of the trade
|
||||
|
||||
Args:
|
||||
partyX (object): One of the parties of the negotiation
|
||||
party (object): One of the parties of the negotiation
|
||||
|
||||
Returns:
|
||||
partyY (object): The other party, not partyX.
|
||||
party_other (object): The other party, not the first party.
|
||||
|
||||
"""
|
||||
if self.partA == party:
|
||||
return self.partB
|
||||
if self.partB == party:
|
||||
return self.partA
|
||||
if self.part_a == party:
|
||||
return self.part_b
|
||||
if self.part_b == party:
|
||||
return self.part_a
|
||||
return None
|
||||
|
||||
def join(self, partB):
|
||||
def join(self, part_b):
|
||||
"""
|
||||
This is used once B decides to join the trade
|
||||
|
||||
Args:
|
||||
partB (object): The party accepting the barter.
|
||||
part_b (object): The party accepting the barter.
|
||||
|
||||
"""
|
||||
if self.partB == partB:
|
||||
self.partB.ndb.tradehandler = self
|
||||
self.partB.cmdset.add(CmdsetTrade())
|
||||
if self.part_b == part_b:
|
||||
self.part_b.ndb.tradehandler = self
|
||||
self.part_b.cmdset.add(CmdsetTrade())
|
||||
self.trade_started = True
|
||||
return True
|
||||
return False
|
||||
|
||||
def unjoin(self, partB):
|
||||
def unjoin(self, part_b):
|
||||
"""
|
||||
This is used if B decides not to join the trade.
|
||||
|
||||
Args:
|
||||
partB (object): The party leaving the barter.
|
||||
part_b (object): The party leaving the barter.
|
||||
|
||||
"""
|
||||
if self.partB == partB:
|
||||
if self.part_b == part_b:
|
||||
self.finish(force=True)
|
||||
return True
|
||||
return False
|
||||
|
|
@ -242,12 +242,12 @@ class TradeHandler(object):
|
|||
"""
|
||||
if self.trade_started:
|
||||
# reset accept statements whenever an offer changes
|
||||
self.partA_accepted = False
|
||||
self.partB_accepted = False
|
||||
if party == self.partA:
|
||||
self.partA_offers = list(args)
|
||||
elif party == self.partB:
|
||||
self.partB_offers = list(args)
|
||||
self.part_a_accepted = False
|
||||
self.part_b_accepted = False
|
||||
if party == self.part_a:
|
||||
self.part_a_offers = list(args)
|
||||
elif party == self.part_b:
|
||||
self.part_b_offers = list(args)
|
||||
else:
|
||||
raise ValueError
|
||||
|
||||
|
|
@ -259,7 +259,7 @@ class TradeHandler(object):
|
|||
offers (tuple): A tuple with two lists, (A_offers, B_offers).
|
||||
|
||||
"""
|
||||
return self.partA_offers, self.partB_offers
|
||||
return self.part_a_offers, self.part_b_offers
|
||||
|
||||
def search(self, offername):
|
||||
"""
|
||||
|
|
@ -273,7 +273,7 @@ class TradeHandler(object):
|
|||
offer (object): An object on offer, based on the search criterion.
|
||||
|
||||
"""
|
||||
all_offers = self.partA_offers + self.partB_offers
|
||||
all_offers = self.part_a_offers + self.part_b_offers
|
||||
if isinstance(offername, int):
|
||||
# an index to return
|
||||
if 0 <= offername < len(all_offers):
|
||||
|
|
@ -307,10 +307,10 @@ class TradeHandler(object):
|
|||
|
||||
"""
|
||||
if self.trade_started:
|
||||
if party == self.partA:
|
||||
self.partA_accepted = True
|
||||
elif party == self.partB:
|
||||
self.partB_accepted = True
|
||||
if party == self.part_a:
|
||||
self.part_a_accepted = True
|
||||
elif party == self.part_b:
|
||||
self.part_b_accepted = True
|
||||
else:
|
||||
raise ValueError
|
||||
return self.finish() # try to close the deal
|
||||
|
|
@ -334,14 +334,14 @@ class TradeHandler(object):
|
|||
|
||||
"""
|
||||
if self.trade_started:
|
||||
if party == self.partA:
|
||||
if self.partA_accepted:
|
||||
self.partA_accepted = False
|
||||
if party == self.part_a:
|
||||
if self.part_a_accepted:
|
||||
self.part_a_accepted = False
|
||||
return True
|
||||
return False
|
||||
elif party == self.partB:
|
||||
if self.partB_accepted:
|
||||
self.partB_accepted = False
|
||||
elif party == self.part_b:
|
||||
if self.part_b_accepted:
|
||||
self.part_b_accepted = False
|
||||
return True
|
||||
return False
|
||||
else:
|
||||
|
|
@ -361,24 +361,24 @@ class TradeHandler(object):
|
|||
|
||||
"""
|
||||
fin = False
|
||||
if self.trade_started and self.partA_accepted and self.partB_accepted:
|
||||
if self.trade_started and self.part_a_accepted and self.part_b_accepted:
|
||||
# both accepted - move objects before cleanup
|
||||
for obj in self.partA_offers:
|
||||
obj.location = self.partB
|
||||
for obj in self.partB_offers:
|
||||
obj.location = self.partA
|
||||
for obj in self.part_a_offers:
|
||||
obj.location = self.part_b
|
||||
for obj in self.part_b_offers:
|
||||
obj.location = self.part_a
|
||||
fin = True
|
||||
if fin or force:
|
||||
# cleanup
|
||||
self.partA.cmdset.delete("cmdset_trade")
|
||||
self.partB.cmdset.delete("cmdset_trade")
|
||||
self.partA_offers = None
|
||||
self.partB_offers = None
|
||||
self.partA.scripts.stop("trade_request_timeout")
|
||||
# this will kill it also from partB
|
||||
del self.partA.ndb.tradehandler
|
||||
if self.partB.ndb.tradehandler:
|
||||
del self.partB.ndb.tradehandler
|
||||
self.part_a.cmdset.delete("cmdset_trade")
|
||||
self.part_b.cmdset.delete("cmdset_trade")
|
||||
self.part_a_offers = None
|
||||
self.part_b_offers = None
|
||||
self.part_a.scripts.stop("trade_request_timeout")
|
||||
# this will kill it also from B
|
||||
del self.part_a.ndb.tradehandler
|
||||
if self.part_b.ndb.tradehandler:
|
||||
del self.part_b.ndb.tradehandler
|
||||
return True
|
||||
return False
|
||||
|
||||
|
|
@ -398,8 +398,8 @@ class CmdTradeBase(Command):
|
|||
"""
|
||||
self.args = self.args.strip()
|
||||
self.tradehandler = self.caller.ndb.tradehandler
|
||||
self.partA = self.tradehandler.partA
|
||||
self.partB = self.tradehandler.partB
|
||||
self.part_a = self.tradehandler.part_a
|
||||
self.part_b = self.tradehandler.part_b
|
||||
|
||||
self.other = self.tradehandler.get_other(self.caller)
|
||||
self.msg_other = self.tradehandler.msg_other
|
||||
|
|
@ -412,7 +412,7 @@ class CmdTradeBase(Command):
|
|||
self.args, self.emote = [part.strip() for part in self.args.rsplit(":", 1)]
|
||||
self.str_caller = 'You say, "' + self.emote + '"\n [%s]'
|
||||
if self.caller.has_player:
|
||||
self.str_other = '{c%s{n says, "' % self.caller.key + self.emote + '"\n [%s]'
|
||||
self.str_other = '|c%s|n says, "' % self.caller.key + self.emote + '"\n [%s]'
|
||||
else:
|
||||
self.str_other = '%s says, "' % self.caller.key + self.emote + '"\n [%s]'
|
||||
|
||||
|
|
@ -429,35 +429,34 @@ class CmdTradeHelp(CmdTradeBase):
|
|||
Displays help for the trade commands.
|
||||
"""
|
||||
key = "trade help"
|
||||
#aliases = ["trade help"]
|
||||
locks = "cmd:all()"
|
||||
help_category = "Trade"
|
||||
|
||||
def func(self):
|
||||
"Show the help"
|
||||
"""Show the help"""
|
||||
string = """
|
||||
Trading commands
|
||||
|
||||
{woffer <objects> [:emote]{n
|
||||
|woffer <objects> [:emote]|n
|
||||
offer one or more objects for trade. The emote can be used for
|
||||
RP/arguments. A new offer will require both parties to re-accept
|
||||
it again.
|
||||
{waccept [:emote]{n
|
||||
|waccept [:emote]|n
|
||||
accept the currently standing offer from both sides. Also 'agree'
|
||||
works. Once both have accepted, the deal is finished and goods
|
||||
will change hands.
|
||||
{wdecline [:emote]{n
|
||||
|wdecline [:emote]|n
|
||||
change your mind and remove a previous accept (until other
|
||||
has also accepted)
|
||||
{wstatus{n
|
||||
|wstatus|n
|
||||
show the current offers on each side of the deal. Also 'offers'
|
||||
and 'deal' works.
|
||||
{wevaluate <nr> or <offer>{n
|
||||
|wevaluate <nr> or <offer>|n
|
||||
examine any offer in the deal. List them with the 'status' command.
|
||||
{wend trade{n
|
||||
|wend trade|n
|
||||
end the negotiations prematurely. No trade will take place.
|
||||
|
||||
You can also use {wemote{n, {wsay{n etc to discuss
|
||||
You can also use |wemote|n, |wsay|n etc to discuss
|
||||
without making a decision or offer.
|
||||
"""
|
||||
self.caller.msg(string)
|
||||
|
|
@ -480,7 +479,7 @@ class CmdOffer(CmdTradeBase):
|
|||
help_category = "Trading"
|
||||
|
||||
def func(self):
|
||||
"implement the offer"
|
||||
"""implement the offer"""
|
||||
|
||||
caller = self.caller
|
||||
if not self.args:
|
||||
|
|
@ -502,9 +501,9 @@ class CmdOffer(CmdTradeBase):
|
|||
|
||||
# output
|
||||
if len(offerobjs) > 1:
|
||||
objnames = ", ".join("{w%s{n" % obj.key for obj in offerobjs[:-1]) + " and {w%s{n" % offerobjs[-1].key
|
||||
objnames = ", ".join("|w%s|n" % obj.key for obj in offerobjs[:-1]) + " and |w%s|n" % offerobjs[-1].key
|
||||
else:
|
||||
objnames = "{w%s{n" % offerobjs[0].key
|
||||
objnames = "|w%s|n" % offerobjs[0].key
|
||||
|
||||
caller.msg(self.str_caller % ("You offer %s" % objnames))
|
||||
self.msg_other(caller, self.str_other % ("They offer %s" % objnames))
|
||||
|
|
@ -531,19 +530,20 @@ class CmdAccept(CmdTradeBase):
|
|||
help_category = "Trading"
|
||||
|
||||
def func(self):
|
||||
"accept the offer"
|
||||
"""accept the offer"""
|
||||
caller = self.caller
|
||||
if not self.trade_started:
|
||||
caller.msg("Wait until the other party has accepted to trade with you.")
|
||||
return
|
||||
if self.tradehandler.accept(self.caller):
|
||||
# deal finished. Trade ended and cleaned.
|
||||
caller.msg(self.str_caller % "You {gaccept{n the deal. {gDeal is made and goods changed hands.{n")
|
||||
self.msg_other(caller, self.str_other % "%s {gaccepts{n the deal. {gDeal is made and goods changed hands.{n" % caller.key)
|
||||
caller.msg(self.str_caller % "You |gaccept|n the deal. |gDeal is made and goods changed hands.|n")
|
||||
self.msg_other(caller, self.str_other % "%s |gaccepts|n the deal."
|
||||
" |gDeal is made and goods changed hands.|n" % caller.key)
|
||||
else:
|
||||
# a one-sided accept.
|
||||
caller.msg(self.str_caller % "You {Gaccept{n the offer. %s must now also accept." % self.other.key)
|
||||
self.msg_other(caller, self.str_other % "%s {Gaccepts{n the offer. You must now also accept." % caller.key)
|
||||
caller.msg(self.str_caller % "You |Gaccept|n the offer. %s must now also accept." % self.other.key)
|
||||
self.msg_other(caller, self.str_other % "%s |Gaccepts|n the offer. You must now also accept." % caller.key)
|
||||
|
||||
|
||||
# decline
|
||||
|
|
@ -565,22 +565,23 @@ class CmdDecline(CmdTradeBase):
|
|||
help_category = "Trading"
|
||||
|
||||
def func(self):
|
||||
"decline the offer"
|
||||
"""decline the offer"""
|
||||
caller = self.caller
|
||||
if not self.trade_started:
|
||||
caller.msg("Wait until the other party has accepted to trade with you.")
|
||||
return
|
||||
offerA, offerB = self.tradehandler.list()
|
||||
if not offerA or not offerB:
|
||||
caller.msg("Noone has offered anything (yet) so there is nothing to decline.")
|
||||
offer_a, offer_b = self.tradehandler.list()
|
||||
if not offer_a or not offer_b:
|
||||
caller.msg("No offers have been made yet, so there is nothing to decline.")
|
||||
return
|
||||
if self.tradehandler.decline(self.caller):
|
||||
# changed a previous accept
|
||||
caller.msg(self.str_caller % "You change your mind, {Rdeclining{n the current offer.")
|
||||
self.msg_other(caller, self.str_other % "%s changes their mind, {Rdeclining{n the current offer." % caller.key)
|
||||
caller.msg(self.str_caller % "You change your mind, |Rdeclining|n the current offer.")
|
||||
self.msg_other(caller, self.str_other
|
||||
% "%s changes their mind, |Rdeclining|n the current offer." % caller.key)
|
||||
else:
|
||||
# no acceptance to change
|
||||
caller.msg(self.str_caller % "You {Rdecline{n the current offer.")
|
||||
# no accept_ance to change
|
||||
caller.msg(self.str_caller % "You |Rdecline|n the current offer.")
|
||||
self.msg_other(caller, self.str_other % "%s declines the current offer." % caller.key)
|
||||
|
||||
|
||||
|
|
@ -607,7 +608,7 @@ class CmdEvaluate(CmdTradeBase):
|
|||
help_category = "Trading"
|
||||
|
||||
def func(self):
|
||||
"evaluate an object"
|
||||
"""evaluate an object"""
|
||||
caller = self.caller
|
||||
if not self.args:
|
||||
caller.msg("Usage: evaluate <offered object>")
|
||||
|
|
@ -650,31 +651,30 @@ class CmdStatus(CmdTradeBase):
|
|||
help_category = "Trading"
|
||||
|
||||
def func(self):
|
||||
"Show the current deal"
|
||||
"""Show the current deal"""
|
||||
caller = self.caller
|
||||
partA_offers, partB_offers = self.tradehandler.list()
|
||||
part_a_offers, part_b_offers = self.tradehandler.list()
|
||||
count = 1
|
||||
partA_offerlist = ""
|
||||
for offer in partA_offers:
|
||||
partA_offerlist += "\n {w%i{n %s" % (count, offer.key)
|
||||
part_a_offerlist = ""
|
||||
for offer in part_a_offers:
|
||||
part_a_offerlist += "\n |w%i|n %s" % (count, offer.key)
|
||||
count += 1
|
||||
if not partA_offerlist:
|
||||
partA_offerlist = "\n <nothing>"
|
||||
partB_offerlist = ""
|
||||
for offer in partB_offers:
|
||||
partB_offerlist += "\n {w%i{n %s" % (count, offer.key)
|
||||
if not part_a_offerlist:
|
||||
part_a_offerlist = "\n <nothing>"
|
||||
part_b_offerlist = ""
|
||||
for offer in part_b_offers:
|
||||
part_b_offerlist += "\n |w%i|n %s" % (count, offer.key)
|
||||
count += 1
|
||||
if not partB_offerlist:
|
||||
partB_offerlist = "\n <nothing>"
|
||||
if not part_b_offerlist:
|
||||
part_b_offerlist = "\n <nothing>"
|
||||
|
||||
string = "{gOffered by %s:{n%s\n{yOffered by %s:{n%s" % (self.partA.key,
|
||||
partA_offerlist,
|
||||
self.partB.key,
|
||||
partB_offerlist)
|
||||
acceptA = self.tradehandler.partA_accepted and "{gYes{n" or "{rNo{n"
|
||||
acceptB = self.tradehandler.partB_accepted and "{gYes{n" or "{rNo{n"
|
||||
string += "\n\n%s agreed: %s, %s agreed: %s" % \
|
||||
(self.partA.key, acceptA, self.partB.key, acceptB)
|
||||
string = "|gOffered by %s:|n%s\n|yOffered by %s:|n%s" % (self.part_a.key,
|
||||
part_a_offerlist,
|
||||
self.part_b.key,
|
||||
part_b_offerlist)
|
||||
accept_a = self.tradehandler.part_a_accepted and "|gYes|n" or "|rNo|n"
|
||||
accept_b = self.tradehandler.part_b_accepted and "|gYes|n" or "|rNo|n"
|
||||
string += "\n\n%s agreed: %s, %s agreed: %s" % (self.part_a.key, accept_a, self.part_b.key, accept_b)
|
||||
string += "\n Use 'offer', 'eval' and 'accept'/'decline' to trade. See also 'trade help'."
|
||||
caller.msg(string)
|
||||
|
||||
|
|
@ -698,11 +698,11 @@ class CmdFinish(CmdTradeBase):
|
|||
help_category = "Trading"
|
||||
|
||||
def func(self):
|
||||
"end trade"
|
||||
"""end trade"""
|
||||
caller = self.caller
|
||||
self.tradehandler.finish(force=True)
|
||||
caller.msg(self.str_caller % "You {raborted{n trade. No deal was made.")
|
||||
self.msg_other(caller, self.str_other % "%s {raborted{n trade. No deal was made." % caller.key)
|
||||
caller.msg(self.str_caller % "You |raborted|n trade. No deal was made.")
|
||||
self.msg_other(caller, self.str_other % "%s |raborted|n trade. No deal was made." % caller.key)
|
||||
|
||||
|
||||
# custom Trading cmdset
|
||||
|
|
@ -715,7 +715,7 @@ class CmdsetTrade(CmdSet):
|
|||
key = "cmdset_trade"
|
||||
|
||||
def at_cmdset_creation(self):
|
||||
"Called when cmdset is created"
|
||||
"""Called when cmdset is created"""
|
||||
self.add(CmdTradeHelp())
|
||||
self.add(CmdOffer())
|
||||
self.add(CmdAccept())
|
||||
|
|
@ -750,7 +750,7 @@ class CmdTrade(Command):
|
|||
help_category = "General"
|
||||
|
||||
def func(self):
|
||||
"Initiate trade"
|
||||
"""Initiate trade"""
|
||||
|
||||
if not self.args:
|
||||
if self.caller.ndb.tradehandler and self.caller.ndb.tradeevent.trade_started:
|
||||
|
|
@ -767,36 +767,36 @@ class CmdTrade(Command):
|
|||
self.args, emote = [part.strip() for part in self.args.rsplit(":", 1)]
|
||||
selfemote = 'You say, "%s"\n ' % emote
|
||||
if self.caller.has_player:
|
||||
theiremote = '{c%s{n says, "%s"\n ' % (self.caller.key, emote)
|
||||
theiremote = '|c%s|n says, "%s"\n ' % (self.caller.key, emote)
|
||||
else:
|
||||
theiremote = '%s says, "%s"\n ' % (self.caller.key, emote)
|
||||
|
||||
# for the sake of this command, the caller is always partA; this
|
||||
# for the sake of this command, the caller is always part_a; this
|
||||
# might not match the actual name in tradehandler (in the case of
|
||||
# using this command to accept/decline a trade invitation).
|
||||
partA = self.caller
|
||||
part_a = self.caller
|
||||
accept = 'accept' in self.args
|
||||
decline = 'decline' in self.args
|
||||
if accept:
|
||||
partB = self.args.rstrip('accept').strip()
|
||||
part_b = self.args.rstrip('accept').strip()
|
||||
elif decline:
|
||||
partB = self.args.rstrip('decline').strip()
|
||||
part_b = self.args.rstrip('decline').strip()
|
||||
else:
|
||||
partB = self.args
|
||||
partB = self.caller.search(partB)
|
||||
if not partB:
|
||||
part_b = self.args
|
||||
part_b = self.caller.search(part_b)
|
||||
if not part_b:
|
||||
return
|
||||
if partA == partB:
|
||||
partA.msg("You play trader with yourself.")
|
||||
if part_a == part_b:
|
||||
part_a.msg("You play trader with yourself.")
|
||||
return
|
||||
|
||||
# messages
|
||||
str_initA = "You ask to trade with %s. They need to accept within %s secs."
|
||||
str_initB = "%s wants to trade with you. Use {wtrade %s accept/decline [:emote]{n to answer (within %s secs)."
|
||||
str_noinitA = "%s declines the trade"
|
||||
str_noinitB = "You decline trade with %s."
|
||||
str_startA = "%s starts to trade with you. See {wtrade help{n for aid."
|
||||
str_startB = "You start to trade with %s. See {wtrade help{n for aid."
|
||||
str_init_a = "You ask to trade with %s. They need to accept within %s secs."
|
||||
str_init_b = "%s wants to trade with you. Use |wtrade %s accept/decline [:emote]|n to answer (within %s secs)."
|
||||
str_noinit_a = "%s declines the trade"
|
||||
str_noinit_b = "You decline trade with %s."
|
||||
str_start_a = "%s starts to trade with you. See |wtrade help|n for aid."
|
||||
str_start_b = "You start to trade with %s. See |wtrade help|n for aid."
|
||||
|
||||
if not (accept or decline):
|
||||
# initialization of trade
|
||||
|
|
@ -806,42 +806,41 @@ class CmdTrade(Command):
|
|||
string = "You are already in trade with %s. You need to end trade first."
|
||||
else:
|
||||
string = "You are already trying to initiate trade with %s. You need to decline that trade first."
|
||||
self.caller.msg(string % partB.key)
|
||||
elif partB.ndb.tradehandler and partB.ndb.tradehandler.partB == partA:
|
||||
# this is equivalent to partA accepting a trade from partB (so roles are reversed)
|
||||
partB.ndb.tradehandler.join(partA)
|
||||
partB.msg(theiremote + str_startA % partA.key)
|
||||
partA.msg(selfemote + str_startB % (partB.key))
|
||||
self.caller.msg(string % part_b.key)
|
||||
elif part_b.ndb.tradehandler and part_b.ndb.tradehandler.part_b == part_a:
|
||||
# this is equivalent to part_a accepting a trade from part_b (so roles are reversed)
|
||||
part_b.ndb.tradehandler.join(part_a)
|
||||
part_b.msg(theiremote + str_start_a % part_a.key)
|
||||
part_a.msg(selfemote + str_start_b % part_b.key)
|
||||
else:
|
||||
# initiate a new trade
|
||||
TradeHandler(partA, partB)
|
||||
partA.msg(selfemote + str_initA % (partB.key, TRADE_TIMEOUT))
|
||||
partB.msg(theiremote + str_initB % (partA.key, partA.key, TRADE_TIMEOUT))
|
||||
partA.scripts.add(TradeTimeout)
|
||||
TradeHandler(part_a, part_b)
|
||||
part_a.msg(selfemote + str_init_a % (part_b.key, TRADE_TIMEOUT))
|
||||
part_b.msg(theiremote + str_init_b % (part_a.key, part_a.key, TRADE_TIMEOUT))
|
||||
part_a.scripts.add(TradeTimeout)
|
||||
return
|
||||
elif accept:
|
||||
# accept a trade proposal from partB (so roles are reversed)
|
||||
if partA.ndb.tradehandler:
|
||||
# accept a trade proposal from part_b (so roles are reversed)
|
||||
if part_a.ndb.tradehandler:
|
||||
# already in a trade
|
||||
partA.msg("You are already in trade with %s. You need to end that first." % partB.key)
|
||||
part_a.msg("You are already in trade with %s. You need to end that first." % part_b.key)
|
||||
return
|
||||
if partB.ndb.tradehandler.join(partA):
|
||||
partB.msg(theiremote + str_startA % partA.key)
|
||||
partA.msg(selfemote + str_startB % partB.key)
|
||||
if part_b.ndb.tradehandler.join(part_a):
|
||||
part_b.msg(theiremote + str_start_a % part_a.key)
|
||||
part_a.msg(selfemote + str_start_b % part_b.key)
|
||||
else:
|
||||
partA.msg("No trade proposal to accept.")
|
||||
part_a.msg("No trade proposal to accept.")
|
||||
return
|
||||
else:
|
||||
# decline trade proposal from partB (so roles are reversed)
|
||||
if partA.ndb.tradehandler and partA.ndb.tradehandler.partB == partA:
|
||||
# decline trade proposal from part_b (so roles are reversed)
|
||||
if part_a.ndb.tradehandler and part_a.ndb.tradehandler.part_b == part_a:
|
||||
# stopping an invite
|
||||
partA.ndb.tradehandler.finish(force=True)
|
||||
partB.msg(theiremote + "%s aborted trade attempt with you." % partA)
|
||||
partA.msg(selfemote + "You aborted the trade attempt with %s." % partB)
|
||||
elif partB.ndb.tradehandler and partB.ndb.tradehandler.unjoin(partA):
|
||||
partB.msg(theiremote + str_noinitA % partA.key)
|
||||
partA.msg(selfemote + str_noinitB % partB.key)
|
||||
part_a.ndb.tradehandler.finish(force=True)
|
||||
part_b.msg(theiremote + "%s aborted trade attempt with you." % part_a)
|
||||
part_a.msg(selfemote + "You aborted the trade attempt with %s." % part_b)
|
||||
elif part_b.ndb.tradehandler and part_b.ndb.tradehandler.unjoin(part_a):
|
||||
part_b.msg(theiremote + str_noinit_a % part_a.key)
|
||||
part_a.msg(selfemote + str_noinit_b % part_b.key)
|
||||
else:
|
||||
partA.msg("No trade proposal to decline.")
|
||||
part_a.msg("No trade proposal to decline.")
|
||||
return
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue