forked from Aurorastation/Aurora.3
-
Notifications
You must be signed in to change notification settings - Fork 0
/
modifiers_food.dm
50 lines (43 loc) · 1.27 KB
/
modifiers_food.dm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
/datum/modifier/food
var/regen_added = 0
var/stamina_added = 0
var/nutrition_added = 0
var/original_duration = 0
/datum/modifier/food/activate()
..()
original_duration = duration
var/mob/living/L = target
if(istype(L))
regen_added = L.stamina_recovery + strength*0.03
stamina_added = L.max_stamina + strength
if(strength < 0)
nutrition_added = -strength
L.stamina_recovery += regen_added
L.max_stamina += stamina_added
L.nutrition += nutrition_added
/datum/modifier/food/deactivate()
..()
var/mob/living/L = target
if(istype(L))
L.stamina_recovery -= regen_added
L.max_stamina -= stamina_added
L.nutrition -= nutrition_added
/datum/modifier/food/custom_override(var/datum/modifier/existing)
if((strength > 0 && existing.strength) > 0 || (strength < 0 && existing.strength < 0))
existing.duration += duration
existing.strength += strength
qdel(src)
return existing
else
START_PROCESSING(SSmodifiers, src)
LAZYADD(target.modifiers, src)
activate()
return src
/datum/modifier/food/validity_fail(var/reason) //This is easier and smarter than making a custom check.
//world << "MODIFIER VALIDITY FAIL: [reason]"
if(modifier_type == MODIFIER_REAGENT)
modifier_type = MODIFIER_TIMED
duration = original_duration
return 1
qdel(src)
return 0