123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195 |
- # sleep
- !! Deals with the sleep cycle, advancing both time and stats during sleep.
- !!
- !! Moved here from pre_sleep
- !! Move to dream_events. Then back to sleep (this location).
- !! When busy moves back and forth to sleep_events (and can be redirected from there)
- !! When done: Move to wakeup
- if $ARGS[0] = 'full':
- msg 'gt ''sleep'', ''full'' is depricated! If you did not load an old save, please report this bug. You can continue playing without worry.'
- gt 'pre_sleep', 'start'
- end
- if $ARGS[0] = 'sleep':
- msg 'gt ''sleep'', ''sleep'' is depricated! If you did not load an old save, please report this bug. You can continue playing without worry.'
- gt 'pre_sleep', 'prepare_sleep'
- end
- if $ARGS[0] = 'dream':
- msg 'gt ''sleep'', ''dream'' is depricated! If you did not load an old save, please report this bug. You can continue playing without worry.'
- gt 'sleep', 'start'
- end
- if $ARGS[0] = 'wake':
- msg 'gt ''sleep'', ''wake'' is depricated! If you did not load an old save, please report this bug. You can continue playing without worry.'
- gt 'wakeup', 'start'
- end
- if $ARGS[0] = 'end':
- msg 'gt ''sleep'', ''end'' is depricated! If you did not load an old save, please report this bug. You can continue playing without worry.'
- gt 'bed_get_out', 'start'
- end
- if $ARGS[0] = '':
- msg 'gt ''sleep'', is depricated! If you did not load an old save, please report this bug. You can continue playing without worry.'
- gt 'pre_sleep', 'start'
-
- end
- if $ARGS[0] = 'start':
- menu_off = 1
- gt 'dream_events', 'start'
- end
- if $ARGS[0] = 'post_dream':
- menu_off = 1
- !! to avoid sleeping the whole day I decide to calcululate the duration of the sleep in advance
- !! the quality of the sleep depends on many factors, so the time of sleep can be modify later, especially the part when the time of sleep is shortened
- sleepVars['time_to_full'] = (100 - pcs_sleep) * 5
- !! fully exhausted Sveta can recover in 500 minutes = 8 hours of sleep
- !! healthy Sveta can hardly sleep more then 10 hours = 600 minutes
- !! so we can add about 2 hours to time to full as a limit
- sleepVars['time_to_full'] += 60 + rand(0, 90)
- xgt 'sleep', 'sleep_handler'
- end
- if $ARGS[0] = 'sleep_handler':
- menu_off = 1
- gs 'sleep', 'calc_minutes_to_wakeup'
- if sleepVars['minutes_to_wakeup'] > 0:
- xgt 'sleep', 'sleep_loop'
- else
- killvar 'sleep_loop_loop'
- xgt 'sleep', 'post_sleep'
- end
- end
- if $ARGS[0] = 'calc_minutes_to_wakeup':
- sleepVars['time_now'] = daystart * 1440 + hour * 60 + minut
- if alarmVars['alarmOn'] = 1 and sleepVars['slept_in'] = 0:
- if (hour < alarmVars['timerEndH'] and ((alarmVars['alarm_holiday'] = 1 and kanikuli ! 0) or (week = 6 or week = 7))) or (hour => alarmVars['timerEndH'] and ((alarmVars['alarm_holiday'] = 1 and func('sleep', 'is_tomorrow_school_vacation') ! 0) or (week = 5 or week = 6))):
- !! use weekend time alarm
- sleepVars['alarm_time'] = daystart * 1440 + alarmVars['timerEndH'] * 60 + alarmVars['timerEndM']
- else
- sleepVars['alarm_time'] = daystart * 1440 + alarmVars['timerH'] * 60 + alarmVars['timerM']
- end
- if sleepVars['time_now'] > sleepVars['alarm_time']: sleepVars['alarm_time'] += 1440
- sleepVars['minutes_to_wakeup'] = min(sleepVars['time_to_full'], sleepVars['alarm_time'] - sleepVars['time_now'])
- else
- sleepVars['minutes_to_wakeup'] = sleepVars['time_to_full']
- end
- end
- if $ARGS[0] = 'is_tomorrow_school_vacation':
- result = 0
- if mid($start_type, 1, 2) = 'sg':
- if (month = 12 and day = 31) or (month = 1 and day <= 14):
- !! Winter Break
- result = 2
- elseif month = 3 and (day >= 19 and day <= 25):
- !! Spring Break
- result = 3
- elseif (month = 5 and day = 31) or month = 6 or month = 7 or (month = 8 and day <= 30):
- !! Summer Break
- result = 4
- elseif month = 11 and (day >= 3 and day <= 10):
- !! Autumn Break
- result = 1
- end
- end
- end
- if $ARGS[0] = 'sleep_loop':
- menu_off = 1
- :sleep_loop_loop
- minut += 1
- sleepVars['stime'] += 1
- sleepVars['time_now'] += 1
- sleepVars['minutes_to_wakeup'] -= 1
- sleepVars['time_to_full'] -= 1
- if vibratorIN = 1:
- sleepVars['vtime'] += 1
- if sleepVars['vtime'] >= 5:
- pcs_horny += 1
- sleepVars['vtime'] = 0
- end
- end
- if recuperation = 0 or SleepVars['no_health'] = 1: sleepVars['health_stock'] += healthmax
- if sleepVars['health_stock'] >= 960:
- pcs_health += sleepVars['health_stock'] / 960
- sleepVars['health_stock'] = sleepVars['health_stock'] mod 960
- end
- if sleepVars['stime'] mod 5 = 0: pcs_sleep += 1
- if sleepVars['stime'] >= 60:
- sleepVars['stime'] = 0
- if pcs_sleep >= 100 or succublvl > 0:
- pcs_condition['lack_of_sleep'] = 0
- elseif pcs_condition['lack_of_sleep'] > 0:
- pcs_condition['lack_of_sleep'] -= 1
- end
- gs 'stat'
- end
- if minut = 60: gs 'stat'
- gs 'sleep', 'mod_sleeptriggers'
- if sleepVars['stime'] mod 5 = 0: gs 'sleep_events', 'start'
- if sleepVars['minutes_to_wakeup'] > 0: jump 'sleep_loop_loop'
- sleepVars['no_health'] = 0
- xgt 'sleep', 'post_sleep'
- end
- if $ARGS[0] = 'mod_sleeptriggers':
- !! This location is here to allow mods to hook into the system.
- !! Check for: if $ARGS[0] = 'pre_sleep' and $ARGS[1] = 'mod_sleeptriggers'
- !!
- !! This is NOT for events!!
-
- gs 'LOCA', 'sleep', 'mod_sleeptriggers'
- end
- if $ARGS[0] = 'post_sleep':
- menu_off = 1
- if succublvl < 0:
- skinDailyPenalty -= 1
- else
- if pcs_condition['lack_of_sleep'] >= 10:
- !!Worsening of skin quality if you do not sleep enough.
- skinDailyPenalty += 2
- elseif pcs_condition['lack_of_sleep'] >= 2:
- skinDailyPenalty += 1
- elseif pcs_condition['lack_of_sleep'] > 0:
- skinDailyPenalty += 0
- else
- skinDailyPenalty -= 1
- end
- end
- gs 'stat'
- xgt 'wakeup', 'start'
- end
- --- sleep ---------------------------------
|