TheNAF / naflm

NAFLM - NAF League Manager
Other
35 stars 34 forks source link

BB2016 re-drafting process and NAFLM/OBBLM #204

Open Halfnir opened 7 years ago

Halfnir commented 7 years ago

Hi,

our league just started a new season and used re-drafting for the first time. This caused some issues with the website that i had to solve manually, with some hacks and urgent code adjustments. We are running OBBLM V0.8 (so really old code), if something can be solved in newer version please let me know, but i don't think so.

A, Ignoring MNG from old season

MNGs from old seasons are not carried over by the rule. Pure MNG could be changed to no inj in the match report in OBBLM as a hack, but in case of stat decrease injuries suffered in the last season game, you can not just delete them from the match report, as stat decreases still apply.

I solved this by adding a new_season flag to the team table and team class that is set by an admin or the coach (currently by me on DB level, but it will be moved to admin/coach functions on team management page). If this flag is set, MNG effects of injuries are ignored (changes done to team and stats class for both display in the roster and the TV calculation).

New_season flag will be set to false automatically whenever a match report for the team is saved. I plan to reuse the new_season flag again for controlling the whole season change process.

B, Possibility to cure Niggling Injuries (needs dice roll)

Rules allow to cure niggling injuries between seasons on a dice roll (so not automatic). Current workaround would be to change the old match report where a cured niggling injury has occured, but this means you have to mess with old game data and spend some time to find the match where a niggling happened.

To enable this better, i plan to add an integer field cured_nigglings to the player table/object. Coaches will be able to record cured nigglings in team management as long as the new_season flag is set for a team, increasing the int value of the field by 1 each. When evaluating the niggling injuries of a player, the code will have to determine all nigglings from old match reports, then deduct the number of cured_nigglings from the player data. (Similiar to how stat increases/decreases are handles today)

I have not implemented this yet.

C, Tracking want-to-retire flag

We have discarded the "wants-to-retire" rule in our league. We have relatively short seasons and this rule would create a lot of trouble as number of season's played is the main metric for this rule. Additionally it would cause coaches to fire ALL players with low SPP (0 SPP is a no-brainer) and rebuy them as new players in the re-draft process as this resets the season counter. This would cause the re-draft process to be more complex and fill up the player table.

But if you would play by the rules as written in Deathzone, you'd need a flag in the player data that carries the wants-to-retire info as long with management functions to set/unset the flag as determined by a dice roll. This flag affects the re-draft costs of a player significantly (+20k*seasons_played)

D, Providing Information about re-draft budget

It would be nice for players to see their current re-draft budget to get a feeling on where it stands compared to their current team value. It can be easily calculated from team stats (1000k + 10kgames_played in last season + 5k TD+CAS scored in last season).

I have not implemented this, but it should be fairly simple, The budget formula should be configurable as i can imagine that leagues will houserule the budget parameters (e.g. give 20k per game). The calcualation of the budget will be required anyway to implement E

E, Running re-draft process

Our re-draft process was done via paper/email and then adjusting the team roster and treasuries using coach/admin functions. in a larger league this could easily become a nightmare.

Ideally there would be a re-draft page similar to the team creator that allows you to spend your calculated re-draft budget+treasury on existing players, new players and team goods. FF needs to be carried over for free, remaining cash goes to treasury. This page would check the new_seasons flag for eligibility of a team to use this.

Let me know what you think ... Best regards, Tim.

Halfnir commented 7 years ago

D and E is implemented for my league.

The design is now as follows:

A: Admin activates Season Change mode for a team via new option in admin panel. -> new_season property for team is set B: Admin adjusts treasury for the team according to the total team value (without FF). This can bring the treasury into negative figures. C: Admin sets the team Ready flag to not ready.

[in future, i plan to provide a function triggered by the coach that does steps A to C automatically]

D: Coach adjusts his team (rather than redrafting from scratch) -> Fire players gives full refund of player value if new_season is set -> Drop Team Goods gives full refund of value if new_season is set -> Buy Team Goods allows to purchase regular price RR and FF if new_season is set

E: Coach sets "Ready to play" Flag for his team, but this function checks if treasury is not negative and will not allow the flag to be set otherwise.

F: Teams that are not set to "ready for play" are removed from the match scheduling screens to keep them from joining a new season until the redraft process is finished.

G: Saving a match report automatically sets new_season to false, removing the refund/purchase options listed under D,

rythos42 commented 7 years ago

Lots of great plans here! We'll definitely accept pull requests!

In the mean time, this morning after my commissioner told me to "update your own damn team", I added the Admin ability to remove one niggling injury from a player. It's on the team roster page, in the Admin box, the last item in the drop down list.

gpr commented 7 years ago

@Halfnir where is the patch please?

jgmorse commented 6 years ago

@Halfnir Would you be willing to share your code?

NickJMereel commented 6 years ago

I'm not clever enough to do this. Can anyone post up the code and tell me where to paste it into my site? 😊