WorldSimulation / plugins /DisasterPlugin.py
yingqianjiang-lingoace
Add application file
bcf0302
raw
history blame
786 Bytes
import random
class DisasterPlugin:
def __init__(self, disaster_frequency, disaster_prob):
self.disaster_frequency = disaster_frequency
self.disaster_prob = disaster_prob
def trigger_disaster(self, characters, character_die_callback):
print("发生自然灾难...")
num_killed = int(len(characters) * self.disaster_prob)
killed = random.sample(characters, num_killed)
for c in killed:
c.history.append(f"{c.real_age}岁,死于自然灾难")
character_die_callback(c)
def execute(self, characters, round_num, character_die_callback):
if round_num % self.disaster_frequency == 0 and random.random() < self.disaster_prob:
self.trigger_disaster(characters, character_die_callback)