Python:
import random
class DiSeasonBanter(Skill):
def __init__(self):
super().__init__()
self.current_side = "duck" # AI's current stance
self.last_user_side = None # Track user’s previous side
self.toleranceCount = 0 # Loop safety valve
self.maxTolerance = 6 # Max banter exchanges
def input(self, ear: str, skin: str, eye: str):
ear_lower = ear.lower().strip()
# Validate trigger
if ear_lower not in ["duck season", "rabbit season"]:
self.toleranceCount = 0 # reset on non-trigger input
return
user_side = "duck" if ear_lower == "duck season" else "rabbit"
user_flipped = self.last_user_side and user_side != self.last_user_side
self.last_user_side = user_side
# Possibly flip our own stance
if user_flipped and random.random() < 0.3:
self.current_side = user_side
# Respond with opposite
response = "duck season!" if self.current_side == "rabbit" else "rabbit season!"
self.setVerbatimAlg(4, response)
# Increment and check tolerance
self.toleranceCount += 1
if self.toleranceCount >= self.maxTolerance:
self.setVerbatimAlg(4, "Alright already! Let's call it even. 😤")
self.toleranceCount = 0 # reset
def skillNotes(self, param: str) -> str:
if param == "notes":
return "Banters duck vs rabbit season with loop breaker"
elif param == "triggers":
return "'duck season' or 'rabbit season'"
return "note unavailable"