Skip to content

Instantly share code, notes, and snippets.

@dominicmicheletto
Last active May 24, 2021 13:57
Show Gist options
  • Save dominicmicheletto/68e6436e4306c0a50ebccd6f44c97c56 to your computer and use it in GitHub Desktop.
Save dominicmicheletto/68e6436e4306c0a50ebccd6f44c97c56 to your computer and use it in GitHub Desktop.
import services
from buffs.tunable import BuffReference
from sims4.localization import _create_localized_string
from sims4.collections import _ImmutableSlotsBase
from sims4.collections import make_immutable_slots_class as make_immutable_slots
from sims4.resources import Types
NEED_COFFEE_STRING_ID = 0xB6BE4C25
TRAIT_YOUNG_ADULT = 34318
NEED_COFFEE_IN_MORNING_BUFF = 12624494500918649532
def get_tuning(tuning_id: int, tuning_type: Types):
manager = services.get_instance_manager(tuning_type)
return manager.get(tuning_id)
def make_buff_reference(buff, reason_id: int = 0) -> BuffReference:
reason = None
if reason_id:
reason = _create_localized_string(reason_id)
return BuffReference(buff, reason)
def make_immutable_slots_class(**kwargs) -> _ImmutableSlotsBase:
return make_immutable_slots(kwargs.keys())(kwargs)
def make_default_day_night_tracking() -> _ImmutableSlotsBase:
keys = ('day_buffs', 'night_buffs', 'shade_buffs', 'sunlight_buffs', 'force_refresh_buffs', )
values = {key: frozenset() for key in keys}
return make_immutable_slots_class(**values)
def inject_into_ya_trait(manager) -> None:
try:
loaded_buff = get_tuning(NEED_COFFEE_IN_MORNING_BUFF, Types.BUFF)
loaded_trait = manager.get(TRAIT_YOUNG_ADULT)
if not all([loaded_buff, loaded_trait]):
return
buffs_to_add = {make_buff_reference(loaded_buff, NEED_COFFEE_STRING_ID), }
day_night_tracking = loaded_trait.day_night_tracking or make_default_day_night_tracking()
day_buffs = set(day_night_tracking.day_buffs)
day_buffs.union(buffs_to_add)
loaded_trait.day_night_tracking = day_night_tracking.clone_with_overrides(day_buffs=frozenset(day_buffs))
except:
pass
def do_injection() -> None:
trait_manager = services.get_instance_manager(Types.TRAIT)
trait_manager.add_on_load_complete(inject_into_ya_trait)
do_injection()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment