HAWK-ONE / playbook.py
ageraustine's picture
init
ab93d31 verified
Raw History Blame Contribute Delete
3.58 kB
"""Offensive plays and defensive calls. Route points are (yards downfield, yards toward the bottom
sideline) relative to the player's alignment. Players are referenced by formation slot id."""
def R(*pts, delay=0.0):
return dict(pts=[tuple(p) for p in pts], delay=delay)
OFFENSE_PLAYS = {
"Inside Zone": dict(kind="run", formation="I-Form (21p)", runner="RB", lead="FB",
aim=(2.5, 1.2), mesh=(-4.3, 0.9), min_handoff=0.45),
"Outside Zone": dict(kind="run", formation="I-Form (21p)", runner="RB", lead="FB",
aim=(1.0, 7.0), mesh=(-4.5, 1.6), min_handoff=0.45),
"Draw": dict(kind="run", formation="Shotgun Trips (10p)", runner="RB", lead=None, fake_pass=True,
aim=(3.0, -0.3), mesh=(-5.0, 1.0), min_handoff=1.1),
"RPO Slant": dict(kind="rpo", formation="Shotgun 11p (2x1 + TE)", runner="RB", lead=None,
aim=(2.5, -2.2), mesh=(-5.0, -1.0), min_handoff=0.7, tgt="X",
routes={"X": R((3, 0), (10, 7), (18, 15))}),
"Quick Slants": dict(kind="pass", formation="Shotgun 11p (2x1 + TE)", drop=5.0, t_first=0.75,
blockers=["TE", "RB"], prog=["X", "Z", "SL"],
routes={"X": R((3, 0), (10, 7), (18, 15)), "Z": R((3, 0), (10, -7), (18, -15)),
"SL": R((1, -4), (3, -9))}),
"Mesh": dict(kind="pass", formation="Shotgun 11p (2x1 + TE)", drop=5.0, t_first=1.3,
blockers=["TE"], prog=["SL", "Z", "X", "RB"],
routes={"SL": R((2, 0), (3, 16)), "Z": R((2, 0), (3, -15)), "X": R((10, 0), (10, 8)),
"RB": R((0.5, -6), (2, -10), delay=0.6)}),
"Four Verticals": dict(kind="pass", formation="Shotgun Trips (10p)", drop=5.0, t_first=2.0,
blockers=["RB"], prog=["H", "SL", "Z", "X"],
routes={"X": R((40, 0)), "Z": R((40, 0)), "SL": R((40, 0)), "H": R((40, 2))}),
"Sideline Fade": dict(kind="pass", formation="Shotgun Trips (10p)", drop=5.0, t_first=1.8,
blockers=["RB"], prog=["X", "Z", "H"],
routes={"X": R((35, -4.4)), "Z": R((40, 0)), "SL": R((30, 0)), "H": R((12, 0), (12, 6))}),
"PA Post": dict(kind="pass", formation="I-Form (21p)", drop=7.0, t_first=1.8, play_action=True,
aim=(2.5, 1.2), blockers=["FB"], prog=["X", "Z", "TE"],
routes={"X": R((12, 0), (26, 9)), "Z": R((10, 0), (10, -9)), "TE": R((5, 0), (8, 5))}),
"RB Screen": dict(kind="pass", formation="Shotgun 11p (2x1 + TE)", drop=7.0, t_first=2.0, screen=True,
blockers=["TE"], prog=["RB"],
routes={"X": R((30, 0)), "SL": R((30, 0)), "Z": R((30, 0)),
"RB": R((3.0, -7.0), delay=1.2)}),
}
DEFENSE_CALLS = {
"4-3 Over 路 Cover 3": dict(formation="4-3 Over", coverage="cover3", blitz=[]),
"4-3 Over 路 Cover 1": dict(formation="4-3 Over", coverage="cover1", blitz=[]),
"4-3 Over 路 Cover 0 Blitz": dict(formation="4-3 Over", coverage="cover0", blitz=["MIKE", "WILL"]),
"Nickel 路 Cover 2": dict(formation="Nickel 4-2-5", coverage="cover2", blitz=[]),
"Nickel 路 Cover 3": dict(formation="Nickel 4-2-5", coverage="cover3", blitz=[]),
"Nickel 路 Cover 1 Mike Blitz": dict(formation="Nickel 4-2-5", coverage="cover1", blitz=["MIKE"]),
"3-4 路 Cover 3": dict(formation="3-4", coverage="cover3", blitz=[]),
"3-4 路 Zone Blitz": dict(formation="3-4", coverage="cover3", blitz=["OLB1", "ILB1"]),
}