|
1 | 1 | /** |
2 | 2 | * # Assigning Sol |
3 | 3 | * |
4 | | - * Sol is the sunlight, during this period, all Bloodsuckers must be in their coffin, else they burn. |
| 4 | + * Sol is the sunlight. After sol bloodsuckers gain ranks |
5 | 5 | */ |
6 | 6 |
|
7 | 7 | /// Start Sol, called when someone is assigned Bloodsucker |
|
24 | 24 |
|
25 | 25 | INVOKE_ASYNC(src, PROC_REF(RankUp)) |
26 | 26 |
|
27 | | -///Called when Sol is near starting. |
28 | | -/datum/antagonist/bloodsucker/proc/sol_near_start(atom/source) |
29 | | - SIGNAL_HANDLER |
30 | | - if(bloodsucker_lair_area && !(locate(/datum/action/cooldown/bloodsucker/gohome) in powers)) |
31 | | - BuyPower(new /datum/action/cooldown/bloodsucker/gohome) |
32 | | - |
33 | | -///Called when Sol first ends. |
34 | | -/datum/antagonist/bloodsucker/proc/on_sol_end(atom/source) |
35 | | - SIGNAL_HANDLER |
36 | | - check_end_torpor() |
37 | | - for(var/datum/action/cooldown/bloodsucker/power in powers) |
38 | | - if(istype(power, /datum/action/cooldown/bloodsucker/gohome)) |
39 | | - RemovePower(power) |
40 | | - |
41 | | -/// Cycle through all vamp antags and check if they're inside a closet. |
42 | | -/datum/antagonist/bloodsucker/proc/handle_sol() |
43 | | - SIGNAL_HANDLER |
44 | | - if(!owner || !owner.current) |
45 | | - return |
46 | | - |
47 | | - if(!istype(owner.current.loc, /obj/structure)) |
48 | | - if(COOLDOWN_FINISHED(src, bloodsucker_spam_sol_burn)) |
49 | | - if(bloodsucker_level > 0) |
50 | | - to_chat(owner, span_userdanger("The solar flare sets your skin ablaze!")) |
51 | | - else |
52 | | - to_chat(owner, span_userdanger("The solar flare scalds your neophyte skin!")) |
53 | | - COOLDOWN_START(src, bloodsucker_spam_sol_burn, BLOODSUCKER_SPAM_SOL) //This should happen twice per Sol |
54 | | - |
55 | | - if(owner.current.fire_stacks <= 0) |
56 | | - owner.current.fire_stacks = 0 |
57 | | - if(bloodsucker_level > 0) |
58 | | - owner.current.adjust_fire_stacks(0.2 + bloodsucker_level / 10) |
59 | | - owner.current.ignite_mob() |
60 | | - owner.current.adjust_fire_loss(2 + (bloodsucker_level / 2)) |
61 | | - owner.current.updatehealth() |
62 | | - owner.current.add_mood_event("vampsleep", /datum/mood_event/daylight_2) |
63 | | - return |
64 | | - |
65 | | - if(istype(owner.current.loc, /obj/structure/closet/crate/coffin)) // Coffins offer the BEST protection |
66 | | - if(owner.current.am_staked() && COOLDOWN_FINISHED(src, bloodsucker_spam_sol_burn)) |
67 | | - to_chat(owner.current, span_userdanger("You are staked! Remove the offending weapon from your heart before sleeping.")) |
68 | | - COOLDOWN_START(src, bloodsucker_spam_sol_burn, BLOODSUCKER_SPAM_SOL) //This should happen twice per Sol |
69 | | - if(!HAS_TRAIT(owner.current, TRAIT_NODEATH)) |
70 | | - check_begin_torpor(TRUE) |
71 | | - owner.current.add_mood_event("vampsleep", /datum/mood_event/coffinsleep) |
72 | | - dirty_area() |
73 | | - return |
74 | | - |
75 | | - if(COOLDOWN_FINISHED(src, bloodsucker_spam_sol_burn)) // Closets offer SOME protection |
76 | | - to_chat(owner, span_warning("Your skin sizzles. [owner.current.loc] doesn't protect well against UV bombardment.")) |
77 | | - COOLDOWN_START(src, bloodsucker_spam_sol_burn, BLOODSUCKER_SPAM_SOL) //This should happen twice per Sol |
78 | | - owner.current.adjust_fire_loss(0.5 + (bloodsucker_level / 4)) |
79 | | - owner.current.updatehealth() |
80 | | - owner.current.add_mood_event("vampsleep", /datum/mood_event/daylight_1) |
81 | | - |
82 | | -///Makes the area the bloodsucker is currently in dirty with cobweb and dirt. |
83 | | -/datum/antagonist/bloodsucker/proc/dirty_area() |
84 | | - var/list/turf/area_turfs = get_area_turfs(get_area(owner.current)) |
85 | | - var/turf/turf_to_be_dirtied = pick(area_turfs) |
86 | | - if(turf_to_be_dirtied && !turf_to_be_dirtied.density) |
87 | | - var/turf/north_turf = get_step(turf_to_be_dirtied, NORTH) |
88 | | - if(istype(north_turf, /turf/closed/wall)) |
89 | | - var/turf/west_turf = get_step(turf_to_be_dirtied, WEST) |
90 | | - if(istype(west_turf, /turf/closed/wall)) |
91 | | - new /obj/effect/decal/cleanable/cobweb(turf_to_be_dirtied) |
92 | | - var/turf/east_turf = get_step(turf_to_be_dirtied, EAST) |
93 | | - if(istype(east_turf, /turf/closed/wall)) |
94 | | - new /obj/effect/decal/cleanable/cobweb/cobweb2(turf_to_be_dirtied) |
95 | | - new /obj/effect/decal/cleanable/dirt(turf_to_be_dirtied) |
96 | | - |
97 | 27 | /datum/antagonist/bloodsucker/proc/give_warning(atom/source, danger_level, vampire_warning_message, vassal_warning_message) |
98 | 28 | SIGNAL_HANDLER |
99 | 29 | if(!owner) |
100 | 30 | return |
101 | 31 | to_chat(owner, vampire_warning_message) |
102 | 32 |
|
103 | 33 | switch(danger_level) |
104 | | - if(DANGER_LEVEL_FIRST_WARNING) |
105 | | - owner.current.playsound_local(null, 'modular_meta/features/antagonists/bloodsuckers/sounds/griffin_3.ogg', 50, 1) |
106 | | - if(DANGER_LEVEL_SECOND_WARNING) |
107 | | - owner.current.playsound_local(null, 'modular_meta/features/antagonists/bloodsuckers/sounds/griffin_5.ogg', 50, 1) |
108 | | - if(DANGER_LEVEL_THIRD_WARNING) |
109 | | - owner.current.playsound_local(null, 'sound/effects/alert.ogg', 75, 1) |
110 | | - if(DANGER_LEVEL_SOL_ROSE) |
111 | | - owner.current.playsound_local(null, 'sound/ambience/misc/ambimystery.ogg', 75, 1) |
112 | 34 | if(DANGER_LEVEL_SOL_ENDED) |
113 | | - owner.current.playsound_local(null, 'sound/music/antag/bloodcult/ghosty_wind.ogg', 90, 1) |
| 35 | + owner.current.playsound_local(null, 'sound/ambience/misc/source_holehit3.ogg', 100, 1) |
0 commit comments