As you can see from the Source Code, the comments will reference the apropiate C Code, for people to check why something is done like its done:
Code: Select all
def perform_action(champ: Champion, action: Action, has_target: bool, rng: random.Random,
difficulty: int = 1, xp_override: int | None = None) -> str | None:
"""Apply an action's cost to the champion (the F0407 tail, MENU.C:1233-1243) and
grant its skill experience. Returns the base-skill name if the champion gained a
level (for the caller to announce), else ``None``.
With nothing in front to hit (``has_target`` False) it's the "miss" path: the
cooldown and experience are halved (MENU.C:1045-1052) but still applied. Either way
the action is consumed — cooldown set, stamina decremented, (partial) XP granted.
``difficulty`` is the current map's XP multiplier (F0304). ``xp_override`` supplies a
dynamic experience amount (the HEAL action's ``2 + 2*cycles``) that replaces the table
value and is never halved."""https://youtu.be/XU9nbs-FwZk
I divided the code into 2 Parts:
Renderer -> PyDM
World -> Basilisk Engine
I will upload the whole source in the next couple of days to my codeberg repository. And also create a Webasm Version and upload it to a website.
Oh, i use my own DMCSB Python module to extract graphics.dat/dungeon.dat, you need to supply it at the assets dir later. Maybe i will write a small "own" format to not get any problems with copyright of a nearly 40 year old game graphics
What else is needed:
pygame-ce
numpy
Will keep you updated.
