summaryrefslogtreecommitdiff
path: root/battle
diff options
context:
space:
mode:
authorJesusaves <cpntb1@ymail.com>2020-12-20 16:47:55 -0300
committerJesusaves <cpntb1@ymail.com>2020-12-20 16:47:55 -0300
commit6aa000483850a90792a7d93b5869747259793351 (patch)
tree85cda34a06ce5704cc70a5f6284616ea03abcec0 /battle
parent0a689ce7178a258759de3e7624c9d13aeceb2820 (diff)
downloadserver-6aa000483850a90792a7d93b5869747259793351.tar.gz
server-6aa000483850a90792a7d93b5869747259793351.tar.bz2
server-6aa000483850a90792a7d93b5869747259793351.tar.xz
server-6aa000483850a90792a7d93b5869747259793351.zip
Add partial support for multiple worlds.
Diffstat (limited to 'battle')
-rw-r--r--battle/main.py34
-rw-r--r--battle/summons.py4
2 files changed, 21 insertions, 17 deletions
diff --git a/battle/main.py b/battle/main.py
index 2ef26c9..f19dc6b 100644
--- a/battle/main.py
+++ b/battle/main.py
@@ -39,12 +39,12 @@ random.seed()
# Structural functions
#############################################
# Update enemy list with the next wave data. No checks are conducted.
-def advance_wave(token, quest_id, next_wave):
+def advance_wave(token, world, quest_id, next_wave):
global Battle, allquests
Battle[token]["enemy"]=[]
stdout("advance_wave was called")
- quest=dl_search(allquests, "quest_id", quest_id)
+ quest=dl_search(allquests[world], "quest_id", quest_id)
if quest == "ERROR":
print("ERROR, INVALID QUEST")
# TODO: HANDLE THIS ERROR (FIXME)
@@ -71,8 +71,8 @@ def advance_wave(token, quest_id, next_wave):
Battle[token]["wave"]+=1
return True
-# get_result(str, bool, int)
-def get_result(token, victory, quest_id):
+# get_result(str, bool, str, int)
+def get_result(token, victory, world, quest_id):
global Player, Battle, allquests
result={
"result": "",
@@ -91,7 +91,7 @@ def get_result(token, victory, quest_id):
# Prepare data
result["result"]="VICTORY"
- quest=dl_search(allquests, "quest_id", quest_id)
+ quest=dl_search(allquests[world], "quest_id", quest_id)
if quest == "ERROR":
print("ERROR, INVALID QUEST")
stdout("Quest %d is invalid", str(quest_id))
@@ -196,7 +196,7 @@ def get_result(token, victory, quest_id):
#############################################
# Client commands
#############################################
-# begin_quest( quest_id, party_id )
+# begin_quest( world, quest_id, party_id )
def begin_quest(args, token, client_side=True):
global allquests, Player, Battle
# Data validation
@@ -209,8 +209,9 @@ def begin_quest(args, token, client_side=True):
tmp=int(bq["party_id"])
if (tmp < 1 or tmp > 3):
return ERR_BAD
- tmp=int(Player[token]["quest"])
- for quest in allquests:
+ tmpw=str(bq["world"])
+ tmp=int(Player[token]["quest"]) # FIXME
+ for quest in allquests[tmpw]:
if (quest["quest_id"] == bq["quest_id"]):
break
if (quest["quest_id"] != bq["quest_id"]):
@@ -240,6 +241,7 @@ def begin_quest(args, token, client_side=True):
player.update_ap(token, -(quest["cost"]))
Battle[token]={
+ "world": bq["world"],
"quest_id": quest["quest_id"],
"difficulty": quest["difficulty"],
"result": "",
@@ -254,7 +256,7 @@ def begin_quest(args, token, client_side=True):
stdout("Data set")
# Write the current wave enemies data
- advance_wave(token, quest["quest_id"], 0)
+ advance_wave(token, bq["world"], quest["quest_id"], 0)
# Write the current party (and their HP bar)
for ux in Player[token]["party_"+str(int(bq["party_id"]))]:
@@ -387,7 +389,7 @@ def battle(args, token):
stdout("vu: %d" % tmp)
tmp=len(bt["sphere"])
stdout("vs: %d" % tmp)
- tmp=int(Player[token]["quest"])
+ tmp=int(Player[token]["quest"]) # FIXME
stdout("ptq: %d pts: %d" % (tmp, Player[token]["status"]))
if (Player[token]["status"] < ST_QUEST):
return ERR_BAD
@@ -466,7 +468,7 @@ def battle(args, token):
stdout("You won!")
if (Battle[token]["wave"] < Battle[token]["max_wave"]):
stdout("Next wave detected: %s, Quest ID: %s\nWave: %s" % (token, Battle[token]["quest_id"], Battle[token]["wave"]))
- advance_wave(token, Battle[token]["quest_id"], Battle[token]["wave"])
+ advance_wave(token, Battle[token]["world"], Battle[token]["quest_id"], Battle[token]["wave"])
# Do not continue this loop: End the turn now
return battle_endturn(token, spheres)
else:
@@ -474,7 +476,7 @@ def battle(args, token):
stdout("Total Victory")
Player[token]["status"]=ST_TOWN
# TODO: enemy die = add reward
- result=get_result(token, True, Battle[token]["quest_id"])
+ result=get_result(token, True, Battle[token]["world"], Battle[token]["quest_id"])
del Battle[token]
return compress(result)
@@ -484,7 +486,7 @@ def battle(args, token):
if (not check_player_alive(token)):
# You lost!
Player[token]["status"]=ST_TOWN
- result=get_result(token, False, Battle[token]["quest_id"])
+ result=get_result(token, False, Battle[token]["world"], Battle[token]["quest_id"])
del Battle[token]
return compress(result)
@@ -513,7 +515,7 @@ def battle(args, token):
if (not check_player_alive(token)):
# You lost!
Player[token]["status"]=ST_TOWN
- result=get_result(token, False, Battle[token]["quest_id"])
+ result=get_result(token, False, Battle[token]["world"], Battle[token]["quest_id"])
del Battle[token]
return compress(result)
@@ -525,6 +527,7 @@ def battle(args, token):
# If in a battle, otherwise it returns: ERR_BAD
# TODO FIXME: Do not default to PID 1. Probably save it as a mask.
# eg. PID + QID as string. So ST_QUEST becomes 11 (PID 1 QID 1)
+# FIXME: Token might have changed, maybe we should save to userid instead of token
def reload_battle(token):
if (Player[token]["status"] < ST_QUEST):
return ERR_BAD
@@ -534,7 +537,8 @@ def reload_battle(token):
del bq
return compress(Battle[token])
except:
- v1=begin_quest('{"quest_id": %d, "party_id": 1}' % Player[token]["status"], token, client_side=False)
+ # FIXME: Detect world
+ v1=begin_quest('{"world": "Main", "quest_id": %d, "party_id": 1}' % Player[token]["status"], token, client_side=False)
stdout("Restarting quest...")
return v1
diff --git a/battle/summons.py b/battle/summons.py
index f662cb8..da393bb 100644
--- a/battle/summons.py
+++ b/battle/summons.py
@@ -47,7 +47,7 @@ def handle_summon(token, summon):
dbgprint("You won!")
if (Battle[token]["wave"] < Battle[token]["max_wave"]):
dbgprint("Next wave detected: %s, Quest ID: %s\nWave: %s" % (token, Battle[token]["quest_id"], Battle[token]["wave"]))
- advance_wave(token, Battle[token]["quest_id"], Battle[token]["wave"])
+ advance_wave(token, Battle[token]["world"], Battle[token]["quest_id"], Battle[token]["wave"])
# Do not continue this loop: End the turn now
return battle_endturn(token, Battle[token]["spheres"])
else:
@@ -55,7 +55,7 @@ def handle_summon(token, summon):
dbgprint("Total Victory")
Player[token]["status"]=ST_TOWN
# TODO: enemy die = add reward
- result=get_result(token, True, Battle[token]["quest_id"])
+ result=get_result(token, True, Battle[token]["world"], Battle[token]["quest_id"])
del Battle[token]
return compress(result)