Remove extra release event

Remove extraneous release event when player steps on a
QuestTriggerConnect and does not satisfy the quest predicate.

While here, correct the polarity of the state flag to match the comments
in the server's trigger_connected() function.
master
Kevin Zheng 2021-10-17 13:09:31 -07:00
parent 467f437e84
commit 927916a286
1 changed files with 12 additions and 6 deletions

View File

@ -29,13 +29,22 @@
import Crossfire
def trigger_connected(conn, state, player):
if state == 0:
name = "push"
else:
name = "release"
Crossfire.Log(Crossfire.LogDebug, "QuestTriggerConnect.py: triggering connection number %d (%s)" % (conn, name))
Crossfire.WhoAmI().Map.TriggerConnected(conn, state, player)
def trigger():
player = Crossfire.WhoIsActivator()
params = Crossfire.ScriptParameters()
args = params.split()
conn = int(args[2])
if type(player) != Crossfire.Player:
# stepping off, trigger state 0
Crossfire.WhoAmI().Map.TriggerConnected(int(args[2]), 0, Crossfire.WhoAmI())
# stepping off, trigger released state
trigger_connected(conn, 1, player)
return
questname = args[0]
currentstep = player.QuestGetState(questname)
@ -47,9 +56,6 @@ def trigger():
startstep = int(condition.split("-")[0])
endstep= int(condition.split("-")[1])
if currentstep >= startstep and currentstep <= endstep:
Crossfire.Log(Crossfire.LogDebug, "QuestTriggerConnect.py: triggering connection number %s." % args[2])
Crossfire.WhoAmI().Map.TriggerConnected(int(args[2]), 1, player)
else:
Crossfire.WhoAmI().Map.TriggerConnected(int(args[2]), 0, player)
trigger_connected(conn, 0, player)
trigger()