finished laying initial archetype foundation
This commit is contained in:
parent
51c30b326e
commit
0cb88b984c
|
@ -24,4 +24,20 @@ class Archetype:
|
||||||
|
|
||||||
def steal_check(self, outcome, steal_roll):
|
def steal_check(self, outcome, steal_roll):
|
||||||
"""make a runner more or less likely to steal"""
|
"""make a runner more or less likely to steal"""
|
||||||
|
pass
|
||||||
|
|
||||||
|
def modify_steal_attempt(self, outcome, steal_success_roll):
|
||||||
|
"""affect a runner's ability to successfully steal"""
|
||||||
|
pass
|
||||||
|
|
||||||
|
def modify_tag_up_roll(self, outcome, run_roll):
|
||||||
|
"""change the runner's decision to tag-up"""
|
||||||
|
pass
|
||||||
|
|
||||||
|
def modify_advance_roll(self, outcome, run_roll):
|
||||||
|
"""change the runner's decision to advance on groundouts"""
|
||||||
|
pass
|
||||||
|
|
||||||
|
def modify_extra_running_roll(self, outcome, run_roll):
|
||||||
|
"""change the runner's ability to advance extra bases on base hits by a teammate"""
|
||||||
pass
|
pass
|
33
games.py
33
games.py
|
@ -444,6 +444,9 @@ class game(object):
|
||||||
outcome["baserunner_archetype"].modify_steal_attempt(outcome, run_roll)
|
outcome["baserunner_archetype"].modify_steal_attempt(outcome, run_roll)
|
||||||
outcome["pitcher_archetype"].modify_steal_attempt(outcome, run_roll)
|
outcome["pitcher_archetype"].modify_steal_attempt(outcome, run_roll)
|
||||||
|
|
||||||
|
if defender.name in self.defense_archetypes.keys():
|
||||||
|
self.defense_archetypes[defender.name].modify_steal_attempt(outcome, run_roll)
|
||||||
|
|
||||||
if start_base == 2:
|
if start_base == 2:
|
||||||
run_roll = run_roll * .9 #stealing third is harder
|
run_roll = run_roll * .9 #stealing third is harder
|
||||||
if run_roll < 1:
|
if run_roll < 1:
|
||||||
|
@ -488,6 +491,11 @@ class game(object):
|
||||||
runs = 1
|
runs = 1
|
||||||
if self.bases[2] is not None:
|
if self.bases[2] is not None:
|
||||||
run_roll = random.gauss(2*math.erf((random_star_gen("baserunning_stars", self.bases[2])-def_stat)/4)-1,3)
|
run_roll = random.gauss(2*math.erf((random_star_gen("baserunning_stars", self.bases[2])-def_stat)/4)-1,3)
|
||||||
|
|
||||||
|
if self.bases[2].name in self.offense_archetypes.keys():
|
||||||
|
self.offense_archetypes[self.bases[2].name].modify_tag_up_roll(outcome, run_roll)
|
||||||
|
outcome["defender_archetype"].modify_tag_up_roll(outcome, run_roll)
|
||||||
|
|
||||||
if run_roll > 2:
|
if run_roll > 2:
|
||||||
self.bases[3] = self.bases[2]
|
self.bases[3] = self.bases[2]
|
||||||
self.bases[2] = None
|
self.bases[2] = None
|
||||||
|
@ -514,11 +522,21 @@ class game(object):
|
||||||
self.bases[3] = None
|
self.bases[3] = None
|
||||||
if self.bases[2] is not None:
|
if self.bases[2] is not None:
|
||||||
run_roll = random.gauss(2*math.erf((random_star_gen("baserunning_stars", self.bases[2])-def_stat)/4)-1,3)
|
run_roll = random.gauss(2*math.erf((random_star_gen("baserunning_stars", self.bases[2])-def_stat)/4)-1,3)
|
||||||
|
|
||||||
|
if self.bases[2].name in self.offense_archetypes.keys():
|
||||||
|
self.offense_archetypes[self.bases[2].name].modify_advance_roll(outcome, run_roll)
|
||||||
|
outcome["defender_archetype"].modify_advance_roll(outcome, run_roll)
|
||||||
|
|
||||||
if run_roll > 1.5 or outcome["outcome"] == appearance_outcomes.doubleplay: #double play gives them time to run, guaranteed
|
if run_roll > 1.5 or outcome["outcome"] == appearance_outcomes.doubleplay: #double play gives them time to run, guaranteed
|
||||||
self.bases[3] = self.bases[2]
|
self.bases[3] = self.bases[2]
|
||||||
self.bases[2] = None
|
self.bases[2] = None
|
||||||
if self.bases[1] is not None: #double plays set this to None before this call
|
if self.bases[1] is not None: #double plays set this to None before this call
|
||||||
run_roll = random.gauss(2*math.erf((random_star_gen("baserunning_stars", self.bases[1])-def_stat)/4)-1,3)
|
run_roll = random.gauss(2*math.erf((random_star_gen("baserunning_stars", self.bases[1])-def_stat)/4)-1,3)
|
||||||
|
|
||||||
|
if self.bases[1].name in self.offense_archetypes.keys():
|
||||||
|
self.offense_archetypes[self.bases[1].name].modify_advance_roll(outcome, run_roll)
|
||||||
|
outcome["defender_archetype"].modify_advance_roll(outcome, run_roll)
|
||||||
|
|
||||||
if run_roll < 2 or self.bases[2] is not None: #if runner can't make it or if baserunner blocking on second, convert to fielder's choice
|
if run_roll < 2 or self.bases[2] is not None: #if runner can't make it or if baserunner blocking on second, convert to fielder's choice
|
||||||
outcome["outcome"] == appearance_outcomes.fielderschoice
|
outcome["outcome"] == appearance_outcomes.fielderschoice
|
||||||
runners = [(0,self.get_batter())]
|
runners = [(0,self.get_batter())]
|
||||||
|
@ -541,6 +559,11 @@ class game(object):
|
||||||
self.bases[3] = None
|
self.bases[3] = None
|
||||||
if self.bases[2] is not None:
|
if self.bases[2] is not None:
|
||||||
run_roll = random.gauss(math.erf(random_star_gen("baserunning_stars", self.bases[2])-def_stat)-.5,1.5)
|
run_roll = random.gauss(math.erf(random_star_gen("baserunning_stars", self.bases[2])-def_stat)-.5,1.5)
|
||||||
|
|
||||||
|
if self.bases[2].name in self.offense_archetypes.keys():
|
||||||
|
self.offense_archetypes[self.bases[2].name].modify_extra_running_roll(outcome, run_roll)
|
||||||
|
outcome["defender_archetype"].modify_extra_running_roll(outcome, run_roll)
|
||||||
|
|
||||||
if run_roll > 0:
|
if run_roll > 0:
|
||||||
runs += 1
|
runs += 1
|
||||||
else:
|
else:
|
||||||
|
@ -549,6 +572,11 @@ class game(object):
|
||||||
if self.bases[1] is not None:
|
if self.bases[1] is not None:
|
||||||
if self.bases[3] is None:
|
if self.bases[3] is None:
|
||||||
run_roll = random.gauss(math.erf(random_star_gen("baserunning_stars", self.bases[1])-def_stat)-.5,1.5)
|
run_roll = random.gauss(math.erf(random_star_gen("baserunning_stars", self.bases[1])-def_stat)-.5,1.5)
|
||||||
|
|
||||||
|
if self.bases[1].name in self.offense_archetypes.keys():
|
||||||
|
self.offense_archetypes[self.bases[1].name].modify_extra_running_roll(outcome, run_roll)
|
||||||
|
outcome["defender_archetype"].modify_extra_running_roll(outcome, run_roll)
|
||||||
|
|
||||||
if run_roll > 0.75:
|
if run_roll > 0.75:
|
||||||
self.bases[3] = self.bases[1]
|
self.bases[3] = self.bases[1]
|
||||||
else:
|
else:
|
||||||
|
@ -570,6 +598,11 @@ class game(object):
|
||||||
self.bases[2] = None
|
self.bases[2] = None
|
||||||
if self.bases[1] is not None:
|
if self.bases[1] is not None:
|
||||||
run_roll = random.gauss(math.erf(random_star_gen("baserunning_stars", self.bases[1])-def_stat)-.5,1.5)
|
run_roll = random.gauss(math.erf(random_star_gen("baserunning_stars", self.bases[1])-def_stat)-.5,1.5)
|
||||||
|
|
||||||
|
if self.bases[1].name in self.offense_archetypes.keys():
|
||||||
|
self.offense_archetypes[self.bases[1].name].modify_extra_running_roll(outcome, run_roll)
|
||||||
|
outcome["defender_archetype"].modify_extra_running_roll(outcome, run_roll)
|
||||||
|
|
||||||
if run_roll > 1:
|
if run_roll > 1:
|
||||||
runs += 1
|
runs += 1
|
||||||
self.bases[1] = None
|
self.bases[1] = None
|
||||||
|
|
Loading…
Reference in a new issue