diff options
-rw-r--r-- | battle/common.py | 4 | ||||
-rw-r--r-- | battle/main.py | 11 | ||||
-rw-r--r-- | battle/skills.py | 2 | ||||
-rw-r--r-- | battle/spheres.py | 15 | ||||
-rw-r--r-- | consts.py | 5 |
5 files changed, 25 insertions, 12 deletions
diff --git a/battle/common.py b/battle/common.py index e9bf3ee..f359597 100644 --- a/battle/common.py +++ b/battle/common.py @@ -80,7 +80,7 @@ def calc_dmg(token, attacker, defender, base, crit=0.1): # Attack all, scope can be: "enemy" or "party" def attackall(token, atker, scope): - for i in Battle[token][scope]: + for c, i in enumerate(Battle[token][scope]): if (i["hp"] < 0): continue i["hp"]-=calc_dmg(token, atker, i, atker["atk"], 0.0) @@ -88,6 +88,8 @@ def attackall(token, atker, scope): # If passed with a negative value... if (i["hp"] > i["max_hp"]): i["hp"]=0+i["max_hp"] + + #Battle[token]["log"].append(["party", idx, sphere, dmg, scope, c]) return False # Find and return target ID in Battle[token][scope]. diff --git a/battle/main.py b/battle/main.py index 4cd5f7c..bd9c90a 100644 --- a/battle/main.py +++ b/battle/main.py @@ -23,7 +23,7 @@ from consts import (CRYSTAL_MIN, CRYSTAL_MAX, EXPRATE_MIN, EXPRATE_MAX, SFLAG_CLEARGEMS, SFLAG_DOUBLEGEMS, SFLAG_SPECIAL, SFLAG_FIRSTLOOT, SFLAG_DOUBLEEXP, SFLAG_DOUBLEGP, SPH_WIDEATTACK, SPH_PIERCE, SPH_ASSAULT, SPH_HEAL, SPH_HEALALL, SPH_ATKUP, - SPH_DEFUP, SPH_NONE) + SPH_DEFUP, SPH_NONE, SRV_WAVE, SRV_SPHERE) import json, random, traceback import player from battle.common import (find_target, check_enemy_alive, check_player_alive, @@ -42,7 +42,7 @@ random.seed() def advance_wave(token, world, quest_id, next_wave): global Battle, allquests Battle[token]["enemy"]=[] - Battle[token]["log"].append(["WAVE", 0, True, "", 0]) + Battle[token]["log"].append(["", 0, SRV_WAVE, 0, "", 0]) stdout("advance_wave was called") quest=dl_search(allquests[world], "quest_id", quest_id) @@ -360,7 +360,7 @@ def battle_endturn(token, spheres): SPH_ATKUP, SPH_DEFUP ]) - Battle[token]["log"].append(["SP", len(Battle[token]["spheres"]), sp, "", 0]) + Battle[token]["log"].append(["spheres", len(Battle[token]["spheres"]), SRV_SPHERE, sp, "", 0]) Battle[token]["spheres"].append(sp) stdout("Spheres added; Status before adjust: %s" % (str(Battle[token]["spheres"])), 2) @@ -521,10 +521,11 @@ def battle(args, token): target_id=find_target(token, "party") stdout("ENEMY: Perform attack against %d" % target_id, 2) target=Battle[token]["party"][target_id] - target["hp"]-=calc_dmg(token, bat, target, bat["atk"]) + dmg=calc_dmg(token, bat, target, bat["atk"]) + target["hp"]-=dmg Battle[token]["bp"]+=1 - Battle[token]["log"].append(["enemy", idx, SPH_NONE, "party", target_id]) + Battle[token]["log"].append(["enemy", idx, SPH_NONE, dmg, "party", target_id]) stdout("ENEMY: Attack performed", 2) # If HP ends up broken diff --git a/battle/skills.py b/battle/skills.py index e88a2ff..91bb990 100644 --- a/battle/skills.py +++ b/battle/skills.py @@ -81,7 +81,7 @@ def skill_core(token, mask, force, element): def handle_skill(token, skill_id): global Battle # TODO - #Battle[token]["log"].append(["who", 0, skill_id << ??, "target", 0]) + #Battle[token]["log"].append(["who", 0, skill_id << ??, dmg, "target", 0]) return diff --git a/battle/spheres.py b/battle/spheres.py index d0e42b4..594636f 100644 --- a/battle/spheres.py +++ b/battle/spheres.py @@ -25,6 +25,7 @@ from battle.common import find_target, attackall, calc_dmg def sphere_attack(token, unit, sphere, idx=0): stdout("%s is attacking" % str(unit), 2) stdout("Sphere selected: %d" % sphere, 2) + dmg = 0 # Select the enemy which should be attacked target_id=find_target(token, "enemy") @@ -37,15 +38,18 @@ def sphere_attack(token, unit, sphere, idx=0): attackall(token, unit, "enemy") elif (sphere == SPH_PIERCE): # Pierce sphere (100% critical chance) - target["hp"]-=calc_dmg(token, unit, target, unit["atk"], 1.0) + dmg = calc_dmg(token, unit, target, unit["atk"], 1.0) + target["hp"]-=dmg elif (sphere == SPH_ASSAULT): # Assault sphere (50% critical chance) - target["hp"]-=calc_dmg(token, unit, target, unit["atk"], 0.5) + dmg = calc_dmg(token, unit, target, unit["atk"], 0.5) + target["hp"]-=dmg elif (sphere == SPH_HEAL): # Heal sphere (30% healing). Need to redefine target target_id=find_target(token, "party") target=Battle[token]["party"][target_id] - target["hp"]+=int(target["max_hp"]*0.3) + dmg=-int(target["max_hp"]*0.3) + target["hp"]-=dmg if (target["hp"] > target["max_hp"]): target["hp"]=0+target["max_hp"] elif (sphere == SPH_HEALALL): @@ -56,7 +60,8 @@ def sphere_attack(token, unit, sphere, idx=0): elif (sphere == SPH_NONE): # Normal Attack stdout("It's a normal attack!", 2) - target["hp"]-=calc_dmg(token, unit, target, unit["atk"]) + dmg=calc_dmg(token, unit, target, unit["atk"]) + target["hp"]-=dmg elif (sphere == SPH_ATKUP): # Attack up sphere: Add SC_ATKUP to all members (even dead ones) for target in Battle[token]["party"]: @@ -74,6 +79,6 @@ def sphere_attack(token, unit, sphere, idx=0): # We are done! #stdout("Attack completed") - Battle[token]["log"].append(["party", idx, sphere, "enemy", target_id]) + Battle[token]["log"].append(["party", idx, sphere, dmg, "enemy", target_id]) return True @@ -51,6 +51,11 @@ SPH_HEALALL =5 SPH_ATKUP =6 SPH_DEFUP =7 +# Combat code +SRV_SKILL =1000 +SRV_WAVE =9901 +SRV_SPHERE =9902 + # Status Conditions SC_ATKUP =1 SC_DEFUP =2 |