v['#lastinfo'] = timestamp
self.force_redisplay()
- def _onboard_event(self,v,timestamp,pirate,event,
- jobber=None,timeout=None):
+ def _onboard_event(self,v,timestamp,pirate,event,jobber=None):
pa = self._pl.get(pirate, None)
if pa is not None and pa.v is v:
pa.last_time = timestamp
self._pl[pirate] = pa
if v is not None: v[pirate] = pa
pa.jobber = jobber
+
+ if jobber is None: timeout = None
+ else: timeout = getattr(opts, 'timeout_'+jobber)
if timeout is None: pa.expires = None
else: pa.expires = timestamp + timeout
self._vessel_updated(v, timestamp)
return self._onboard_event(
None, timestamp, pirate,
("jobber %s" % jobber),
- jobber=jobber,
- timeout=getattr(opts, 'timeout_'+jobber)
+ jobber=jobber
)
def disembark(v, timestamp, pirate, event):
(cmdr, metacmd) = m.groups()
metacmd = regexp.sub('\\s+', ' ', metacmd).strip()
m2 = regexp.match(
- '/([ad]) (?:([A-Za-z* ]+)\\s*:)?([A-Za-z ]+)$',
- metacmd)
+ '/([adj]) (?:([A-Za-z* ]+)\\s*:)?([A-Za-z ]+)$',
+ metacmd)
if not m2: return chat(chan)
(cmd, pattern, targets) = m2.groups()
dml = ['cmd', chan, cmd]
if cmd == 'a': each = self._onboard_event
- else: each = disembark
+ elif cmd == 'd': each = disembark
+ else: each = lambda *l: self._onboard_event(*l,
+ **{'jobber':'applied'})
if cmdr == self._myself.name:
dml.append('self')
dml.append('other')
how = 'cmd: %s %s' % (cmd,cmdr)
- v = self._find_matching_vessel(
- pattern, timestamp, cmdr, dml, create=True)
+ if cmd == 'j':
+ if pattern is not None:
+ return chat(chan)
+ v = None
+ else:
+ v = self._find_matching_vessel(
+ pattern, timestamp, cmdr,
+ dml, create=True)
- if v is not None:
+ if cmd == 'j' or v is not None:
targets = targets.strip().split(' ')
dml.append(`len(targets)`)
for target in targets:
disembark(self._v, timestamp, pirate, 'left crew')
return d('left crew')
- m = rm('\w+ has applied for the posted job\.')
+ m = rm('(\w+) has applied for the posted job\.')
if m: return jb(m.group(1), 'applied')
pirate= rm_crew("(\\w+) has been invited to job for '(.*)'\\.")