WorldSimulation / plugins /MarriagePlugin.py
yingqianjiang-lingoace
update
0a0d866
raw
history blame
1.3 kB
import random
class MarriagePlugin:
def __init__(self, marriage_rate, min_marriage_age=20):
self.marriage_rate = marriage_rate
self.min_marriage_age = min_marriage_age # 最小结婚年龄
def perform_marriages(self, characters, callback=None):
# 随机一些表观年龄>20的角色结婚
eligible_characters = [character for character in characters if character.apparent_age > self.min_marriage_age and character.partner is None and character.check_is_alive() and not character.is_immortal]
new_couple_count = 0
for _ in range(int(len(eligible_characters) * self.marriage_rate)):
character = random.choice(eligible_characters)
partner = random.choice(eligible_characters)
if character != partner and character.gender != partner.gender and character.partner is None and partner.partner is None:
character.marry(partner)
new_couple_count += 1
print(f"{new_couple_count}对新人结婚了")
if callback is not None:
callback(new_couple_count)
def set_marriage_rate(self, marriage_rate):
self.marriage_rate = marriage_rate
# 统一插件接口
def execute(self, *args, **kwargs):
self.perform_marriages(*args, **kwargs)