-
Notifications
You must be signed in to change notification settings - Fork 58
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Adds hookas #1124
base: master
Are you sure you want to change the base?
Adds hookas #1124
Changes from 1 commit
f162508
123ad7d
f3a532d
7f5e1b4
98d468e
15512e2
eed0401
9908058
617e773
f1ec248
c697569
a6f67b6
6dbfb33
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
/datum/modpack/bar_hookahs | ||
/// A string name for the modpack. Used for looking up other modpacks in init. | ||
name = "bar_hookahs" | ||
/// A string desc for the modpack. Can be used for modpack verb list as description. | ||
desc = "its useless" | ||
/// A string with authors of this modpack. | ||
author = "User" | ||
|
||
/datum/modpack/bar_hookahs/pre_initialize() | ||
. = ..() | ||
|
||
/datum/modpack/bar_hookahs/initialize() | ||
. = ..() | ||
|
||
/datum/modpack/bar_hookahs/post_initialize() | ||
. = ..() | ||
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
#include "_bar_hookahs.dm" | ||
|
||
#include "code/bar_hookahs.dm" |
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
@@ -0,0 +1,345 @@ | ||||||||||||||||||||||||||||||||||||
#define INTERNAL_VOLUME 50 | ||||||||||||||||||||||||||||||||||||
#define MAX_FUEL 30 | ||||||||||||||||||||||||||||||||||||
#define FUEL_PER_COAL 30 | ||||||||||||||||||||||||||||||||||||
#define FUEL_CONSUME_INTERVAL 30 SECONDS | ||||||||||||||||||||||||||||||||||||
#define INHALE_VOLUME 4 | ||||||||||||||||||||||||||||||||||||
#define SPREAD_VOLUME 1 | ||||||||||||||||||||||||||||||||||||
#define INHALE_COOLDOWN 5 SECONDS | ||||||||||||||||||||||||||||||||||||
#define COUGH_STAMINA_LOSS 5 | ||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||
/obj/machinery/hookah | ||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Кальян не должен быть машинерией |
||||||||||||||||||||||||||||||||||||
name = "кальян" | ||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. все названия в ru_names.toml There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. принято |
||||||||||||||||||||||||||||||||||||
desc = "Простой стеклянный водный кальян." | ||||||||||||||||||||||||||||||||||||
icon = 'modular_bandastation/bar_hookahs/icons/hookah.dmi' | ||||||||||||||||||||||||||||||||||||
icon_state = "hookah" | ||||||||||||||||||||||||||||||||||||
max_integrity = 50 | ||||||||||||||||||||||||||||||||||||
integrity_failure = 0 | ||||||||||||||||||||||||||||||||||||
anchored = FALSE | ||||||||||||||||||||||||||||||||||||
can_be_unanchored = TRUE | ||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||
pixel_y = 10 | ||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||
var/mutable_appearance/pipe_overlay | ||||||||||||||||||||||||||||||||||||
var/obj/item/reagent_container | ||||||||||||||||||||||||||||||||||||
var/obj/item/hookah_mouthpiece/this_mouthpiece | ||||||||||||||||||||||||||||||||||||
var/datum/mouthpiece_attachment/attachment | ||||||||||||||||||||||||||||||||||||
var/fuel = 0 | ||||||||||||||||||||||||||||||||||||
var/lit = FALSE | ||||||||||||||||||||||||||||||||||||
var/last_fuel_consume = 0 | ||||||||||||||||||||||||||||||||||||
var/mutable_appearance/coal_overlay | ||||||||||||||||||||||||||||||||||||
var/mutable_appearance/coal_lit_overlay | ||||||||||||||||||||||||||||||||||||
var/mutable_appearance/lit_emissive | ||||||||||||||||||||||||||||||||||||
var/particle_type | ||||||||||||||||||||||||||||||||||||
var/datum/light_source/glow_light | ||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||
/obj/machinery/hookah/examine() | ||||||||||||||||||||||||||||||||||||
. = ..() | ||||||||||||||||||||||||||||||||||||
. += "<span class='info'>ALT+ЛКМ погасит кальян, ALT+ПКМ очистит ёмкость.</span>" | ||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||||||||||||||||||||||||||||
if(lit) | ||||||||||||||||||||||||||||||||||||
. += "<span class='info'>Кальян зажжён.</span>" | ||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. спан макрос |
||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||
/datum/mouthpiece_attachment | ||||||||||||||||||||||||||||||||||||
var/obj/machinery/hookah/this_hookah | ||||||||||||||||||||||||||||||||||||
var/atom/attached_to | ||||||||||||||||||||||||||||||||||||
VAR_PRIVATE | ||||||||||||||||||||||||||||||||||||
datum/beam/beam | ||||||||||||||||||||||||||||||||||||
Comment on lines
+62
to
+63
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||||||||||||||||||||||||||||
/datum/mouthpiece_attachment/New( | ||||||||||||||||||||||||||||||||||||
obj/machinery/hookah/this_hookah, | ||||||||||||||||||||||||||||||||||||
atom/attached_to | ||||||||||||||||||||||||||||||||||||
) | ||||||||||||||||||||||||||||||||||||
Comment on lines
+64
to
+67
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||||||||||||||||||||||||||||
src.this_hookah = this_hookah | ||||||||||||||||||||||||||||||||||||
src.attached_to = attached_to | ||||||||||||||||||||||||||||||||||||
beam = this_hookah.Beam( | ||||||||||||||||||||||||||||||||||||
attached_to, | ||||||||||||||||||||||||||||||||||||
icon = 'icons/effects/beam.dmi', | ||||||||||||||||||||||||||||||||||||
icon_state = "1-full", | ||||||||||||||||||||||||||||||||||||
beam_color = COLOR_BLACK, | ||||||||||||||||||||||||||||||||||||
layer = BELOW_MOB_LAYER, | ||||||||||||||||||||||||||||||||||||
override_origin_pixel_y = 0, | ||||||||||||||||||||||||||||||||||||
) | ||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||
/datum/mouthpiece_attachment/Destroy(force) | ||||||||||||||||||||||||||||||||||||
this_hookah = null | ||||||||||||||||||||||||||||||||||||
attached_to = null | ||||||||||||||||||||||||||||||||||||
QDEL_NULL(beam) | ||||||||||||||||||||||||||||||||||||
return ..() | ||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||
/obj/machinery/hookah/Initialize(mapload) | ||||||||||||||||||||||||||||||||||||
. = ..() | ||||||||||||||||||||||||||||||||||||
pipe_overlay = mutable_appearance('modular_bandastation/bar_hookahs/icons/hookah.dmi', "pipe") | ||||||||||||||||||||||||||||||||||||
this_mouthpiece = new(src) | ||||||||||||||||||||||||||||||||||||
this_mouthpiece.source_hookah = src | ||||||||||||||||||||||||||||||||||||
update_appearance(UPDATE_OVERLAYS) | ||||||||||||||||||||||||||||||||||||
create_reagents(INTERNAL_VOLUME, TRANSPARENT) | ||||||||||||||||||||||||||||||||||||
reagent_container = src | ||||||||||||||||||||||||||||||||||||
coal_overlay = mutable_appearance(icon, "coal") | ||||||||||||||||||||||||||||||||||||
coal_lit_overlay = mutable_appearance(icon, "coal_lit") | ||||||||||||||||||||||||||||||||||||
lit_emissive = emissive_appearance(icon, "lit_overlay", src, alpha = src.alpha) | ||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||
/obj/machinery/hookah/update_overlays() | ||||||||||||||||||||||||||||||||||||
. = ..() | ||||||||||||||||||||||||||||||||||||
if(this_mouthpiece in contents) | ||||||||||||||||||||||||||||||||||||
. += pipe_overlay | ||||||||||||||||||||||||||||||||||||
if(fuel > 0) | ||||||||||||||||||||||||||||||||||||
. += coal_overlay | ||||||||||||||||||||||||||||||||||||
if(lit) | ||||||||||||||||||||||||||||||||||||
. += coal_lit_overlay | ||||||||||||||||||||||||||||||||||||
. += lit_emissive | ||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||
/obj/machinery/hookah/proc/return_mouthpiece(mouthpiece) | ||||||||||||||||||||||||||||||||||||
var/obj/item/hookah_mouthpiece/current_mouthpiece = mouthpiece | ||||||||||||||||||||||||||||||||||||
if(current_mouthpiece.source_hookah != src) | ||||||||||||||||||||||||||||||||||||
return FALSE | ||||||||||||||||||||||||||||||||||||
if(this_mouthpiece in contents) | ||||||||||||||||||||||||||||||||||||
return FALSE | ||||||||||||||||||||||||||||||||||||
current_mouthpiece.forceMove(src) | ||||||||||||||||||||||||||||||||||||
update_appearance(UPDATE_OVERLAYS) | ||||||||||||||||||||||||||||||||||||
return TRUE | ||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||
/obj/machinery/hookah/update_appearance() | ||||||||||||||||||||||||||||||||||||
. = ..() | ||||||||||||||||||||||||||||||||||||
if(this_mouthpiece in contents) | ||||||||||||||||||||||||||||||||||||
QDEL_NULL(attachment) | ||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||
/obj/machinery/hookah/attack_hand(mob/user, list/modifiers) | ||||||||||||||||||||||||||||||||||||
. = ..() | ||||||||||||||||||||||||||||||||||||
if(.) | ||||||||||||||||||||||||||||||||||||
return | ||||||||||||||||||||||||||||||||||||
if(this_mouthpiece in contents) | ||||||||||||||||||||||||||||||||||||
user.put_in_hands(this_mouthpiece) | ||||||||||||||||||||||||||||||||||||
this_mouthpiece.source_hookah = src | ||||||||||||||||||||||||||||||||||||
to_chat(user, span_notice("Вы берёте мундштук в руку.")) | ||||||||||||||||||||||||||||||||||||
update_appearance(UPDATE_OVERLAYS) | ||||||||||||||||||||||||||||||||||||
attachment = new(src, user) | ||||||||||||||||||||||||||||||||||||
else | ||||||||||||||||||||||||||||||||||||
balloon_alert(user, "уже занято!") | ||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||
/obj/machinery/hookah/proc/try_light(obj/item/O, mob/user) | ||||||||||||||||||||||||||||||||||||
if(lit) | ||||||||||||||||||||||||||||||||||||
to_chat(user, span_warning("Кальян уже зажжён!")) | ||||||||||||||||||||||||||||||||||||
return | ||||||||||||||||||||||||||||||||||||
if(!fuel) | ||||||||||||||||||||||||||||||||||||
to_chat(user, span_warning("В кальяне нет углей!")) | ||||||||||||||||||||||||||||||||||||
return | ||||||||||||||||||||||||||||||||||||
var/msg = O.ignition_effect(src, user) | ||||||||||||||||||||||||||||||||||||
if(msg) | ||||||||||||||||||||||||||||||||||||
visible_message(msg) | ||||||||||||||||||||||||||||||||||||
ignite() | ||||||||||||||||||||||||||||||||||||
return TRUE | ||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||
/obj/machinery/hookah/attackby(obj/item/this_item, mob/user, params) | ||||||||||||||||||||||||||||||||||||
if(istype(this_item, /obj/item/hookah_mouthpiece)) | ||||||||||||||||||||||||||||||||||||
return_mouthpiece(this_item) | ||||||||||||||||||||||||||||||||||||
return | ||||||||||||||||||||||||||||||||||||
if(istype(this_item, /obj/item/hookah_coals)) | ||||||||||||||||||||||||||||||||||||
if(fuel + FUEL_PER_COAL > MAX_FUEL) | ||||||||||||||||||||||||||||||||||||
to_chat(user, span_warning("В кальяне уже достаточно углей!")) | ||||||||||||||||||||||||||||||||||||
return | ||||||||||||||||||||||||||||||||||||
fuel += FUEL_PER_COAL | ||||||||||||||||||||||||||||||||||||
qdel(this_item) | ||||||||||||||||||||||||||||||||||||
to_chat(user, span_notice("Вы добавляете угли в кальян.")) | ||||||||||||||||||||||||||||||||||||
return | ||||||||||||||||||||||||||||||||||||
if(istype(this_item, /obj/item/reagent_containers)) | ||||||||||||||||||||||||||||||||||||
var/obj/item/reagent_containers/container = this_item | ||||||||||||||||||||||||||||||||||||
if(!container.reagents.total_volume) | ||||||||||||||||||||||||||||||||||||
to_chat(user, span_warning("[container] пуст!")) | ||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||||||||||||||||||||||||||||
return | ||||||||||||||||||||||||||||||||||||
if(!reagent_container) | ||||||||||||||||||||||||||||||||||||
to_chat(user, span_warning("В кальяне нет контейнера для жидкости!")) | ||||||||||||||||||||||||||||||||||||
return | ||||||||||||||||||||||||||||||||||||
var/transferred = container.reagents.trans_to(reagent_container, container.amount_per_transfer_from_this) | ||||||||||||||||||||||||||||||||||||
user.visible_message(span_notice("[user] переливает что-то в кальян."), span_notice("Вы перелили [transferred] единиц жидкости в кальян.")) | ||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
|
||||||||||||||||||||||||||||||||||||
return | ||||||||||||||||||||||||||||||||||||
if(try_light(this_item, user)) | ||||||||||||||||||||||||||||||||||||
return | ||||||||||||||||||||||||||||||||||||
return ..() | ||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||
/obj/item/hookah_mouthpiece | ||||||||||||||||||||||||||||||||||||
name = "кальянный мундштук" | ||||||||||||||||||||||||||||||||||||
desc = "Мундштук, выполненный из какого-то лёгкого металла. На его ручке что-то выгравировано." | ||||||||||||||||||||||||||||||||||||
icon = 'modular_bandastation/bar_hookahs/icons/hookah.dmi' | ||||||||||||||||||||||||||||||||||||
icon_state = "mouthpiece" | ||||||||||||||||||||||||||||||||||||
w_class = WEIGHT_CLASS_SMALL | ||||||||||||||||||||||||||||||||||||
var/obj/machinery/hookah/source_hookah | ||||||||||||||||||||||||||||||||||||
var/datum/beam/beam | ||||||||||||||||||||||||||||||||||||
var/last_inhale = 0 | ||||||||||||||||||||||||||||||||||||
var/particle_type | ||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||
/obj/item/hookah_mouthpiece/Initialize(mapload, obj/machinery/hookah/hookah) | ||||||||||||||||||||||||||||||||||||
. = ..() | ||||||||||||||||||||||||||||||||||||
if(hookah) | ||||||||||||||||||||||||||||||||||||
source_hookah = hookah | ||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||
/obj/item/hookah_mouthpiece/Destroy() | ||||||||||||||||||||||||||||||||||||
if(source_hookah) | ||||||||||||||||||||||||||||||||||||
source_hookah = null | ||||||||||||||||||||||||||||||||||||
QDEL_NULL(source_hookah.attachment) | ||||||||||||||||||||||||||||||||||||
stop_smoke() | ||||||||||||||||||||||||||||||||||||
return ..() | ||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||
/obj/item/hookah_mouthpiece/dropped(mob/user) | ||||||||||||||||||||||||||||||||||||
. = ..() | ||||||||||||||||||||||||||||||||||||
if(source_hookah) | ||||||||||||||||||||||||||||||||||||
source_hookah.return_mouthpiece(src) | ||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||
/obj/item/hookah_mouthpiece/pickup(mob/user) | ||||||||||||||||||||||||||||||||||||
. = ..() | ||||||||||||||||||||||||||||||||||||
Comment on lines
+214
to
+215
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
Зачем? |
||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||
/obj/item/hookah_coals | ||||||||||||||||||||||||||||||||||||
name = "угли для кальяна" | ||||||||||||||||||||||||||||||||||||
desc = "Плотные угольки, филигранно обработанные до состояния кубика." | ||||||||||||||||||||||||||||||||||||
icon = 'modular_bandastation/bar_hookahs/icons/hookah.dmi' | ||||||||||||||||||||||||||||||||||||
icon_state = "coals" | ||||||||||||||||||||||||||||||||||||
custom_premium_price = PAYCHECK_CREW * 1.5 | ||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||
/obj/item/hookah_coals/examine() | ||||||||||||||||||||||||||||||||||||
. = ..() | ||||||||||||||||||||||||||||||||||||
. += "<span class='info'>В кучке три кубика.</span>" | ||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. спан макрос |
||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||
/obj/machinery/hookah/process() | ||||||||||||||||||||||||||||||||||||
if(!lit || !fuel) | ||||||||||||||||||||||||||||||||||||
return PROCESS_KILL | ||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||
if(world.time > last_fuel_consume + FUEL_CONSUME_INTERVAL) | ||||||||||||||||||||||||||||||||||||
fuel = max(fuel - 1, 0) | ||||||||||||||||||||||||||||||||||||
last_fuel_consume = world.time | ||||||||||||||||||||||||||||||||||||
if(fuel <= 0) | ||||||||||||||||||||||||||||||||||||
put_out() | ||||||||||||||||||||||||||||||||||||
return PROCESS_KILL | ||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||
if(attachment) | ||||||||||||||||||||||||||||||||||||
var/atom/attached_to = attachment.attached_to | ||||||||||||||||||||||||||||||||||||
if(!(get_dist(src, attached_to) <= 1 && isturf(attached_to.loc))) | ||||||||||||||||||||||||||||||||||||
if(ismob(attached_to)) | ||||||||||||||||||||||||||||||||||||
var/mob/user = attached_to | ||||||||||||||||||||||||||||||||||||
user.dropItemToGround(this_mouthpiece) | ||||||||||||||||||||||||||||||||||||
to_chat(user, span_warning("Вы отпускаете мундштук.")) | ||||||||||||||||||||||||||||||||||||
QDEL_NULL(attachment) | ||||||||||||||||||||||||||||||||||||
Comment on lines
+239
to
+246
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
немного лесенку уменьшим |
||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||
/obj/machinery/hookah/click_alt(mob/user) | ||||||||||||||||||||||||||||||||||||
if(!lit) | ||||||||||||||||||||||||||||||||||||
return CLICK_ACTION_BLOCKING | ||||||||||||||||||||||||||||||||||||
to_chat(user, span_notice("Вы начинаете тушить кальян...")) | ||||||||||||||||||||||||||||||||||||
if(!do_after(user, 2 SECONDS, src)) | ||||||||||||||||||||||||||||||||||||
return CLICK_ACTION_BLOCKING | ||||||||||||||||||||||||||||||||||||
put_out() | ||||||||||||||||||||||||||||||||||||
return CLICK_ACTION_SUCCESS | ||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||
/obj/machinery/hookah/proc/ignite() | ||||||||||||||||||||||||||||||||||||
lit = TRUE | ||||||||||||||||||||||||||||||||||||
START_PROCESSING(SSmachines, src) | ||||||||||||||||||||||||||||||||||||
visible_message(span_notice("Угли внутри кальяна медленно багровеют.")) | ||||||||||||||||||||||||||||||||||||
update_appearance() | ||||||||||||||||||||||||||||||||||||
set_light(2, 1, LIGHT_COLOR_ORANGE) | ||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||
/obj/machinery/hookah/proc/put_out() | ||||||||||||||||||||||||||||||||||||
lit = FALSE | ||||||||||||||||||||||||||||||||||||
visible_message(span_notice("Угли внутри кальяна возвращают свой привычный цвет.")) | ||||||||||||||||||||||||||||||||||||
update_appearance() | ||||||||||||||||||||||||||||||||||||
if(!fuel) | ||||||||||||||||||||||||||||||||||||
STOP_PROCESSING(SSmachines, src) | ||||||||||||||||||||||||||||||||||||
set_light(0) | ||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||
/obj/machinery/hookah/click_alt_secondary(mob/user) | ||||||||||||||||||||||||||||||||||||
if(!reagent_container) | ||||||||||||||||||||||||||||||||||||
return CLICK_ACTION_BLOCKING | ||||||||||||||||||||||||||||||||||||
if(!do_after(user, 2 SECONDS, src)) | ||||||||||||||||||||||||||||||||||||
return CLICK_ACTION_BLOCKING | ||||||||||||||||||||||||||||||||||||
reagent_container.reagents.clear_reagents() | ||||||||||||||||||||||||||||||||||||
to_chat(user, span_notice("Вы очистили внутреннее хранилище реагентов кальяна.")) | ||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Suggested change
Мы все действия пишем в настоящем времени для консистенси |
||||||||||||||||||||||||||||||||||||
return CLICK_ACTION_SUCCESS | ||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||
/obj/item/hookah_mouthpiece/attack_self(mob/living/carbon/human/user) | ||||||||||||||||||||||||||||||||||||
if(!source_hookah || !source_hookah.lit) | ||||||||||||||||||||||||||||||||||||
return ..() | ||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||
user.visible_message(span_notice("[user] затягивается из кальяна."), span_notice("Вы затягиваетесь...")) | ||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. деклент |
||||||||||||||||||||||||||||||||||||
if(!do_after(user, 2 SECONDS, src)) | ||||||||||||||||||||||||||||||||||||
return | ||||||||||||||||||||||||||||||||||||
if(!source_hookah.reagent_container.reagents.total_volume) | ||||||||||||||||||||||||||||||||||||
to_chat(user, span_warning("В кальяне нет жидкости!")) | ||||||||||||||||||||||||||||||||||||
return | ||||||||||||||||||||||||||||||||||||
inhale_smoke(user) | ||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||
/obj/item/hookah_mouthpiece/proc/inhale_smoke(mob/living/carbon/human/user) | ||||||||||||||||||||||||||||||||||||
if(!source_hookah.reagent_container || !source_hookah.reagent_container.reagents.total_volume) | ||||||||||||||||||||||||||||||||||||
to_chat(user, span_warning("В кальяне нет жидкости!")) | ||||||||||||||||||||||||||||||||||||
return | ||||||||||||||||||||||||||||||||||||
source_hookah.particle_type = /particles/smoke/cig/big | ||||||||||||||||||||||||||||||||||||
source_hookah.add_shared_particles(source_hookah.particle_type) | ||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||
var/datum/reagents/these_reagents = source_hookah.reagent_container.reagents | ||||||||||||||||||||||||||||||||||||
var/transferred = these_reagents.trans_to(user, INHALE_VOLUME, methods = INHALE) | ||||||||||||||||||||||||||||||||||||
playsound(src, 'sound/effects/bubbles/bubbles.ogg', 20) | ||||||||||||||||||||||||||||||||||||
if(transferred) | ||||||||||||||||||||||||||||||||||||
to_chat(user, span_notice("Вы вдыхаете дым из кальяна.")) | ||||||||||||||||||||||||||||||||||||
if(world.time < (last_inhale + INHALE_COOLDOWN)) | ||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Надо использовать COOLDOWN_DECLARE для таких |
||||||||||||||||||||||||||||||||||||
to_chat(user, span_warning("Вы вдыхаете слишком резко и закашливаетесь!")) | ||||||||||||||||||||||||||||||||||||
user.emote("cough") | ||||||||||||||||||||||||||||||||||||
user.adjustStaminaLoss(COUGH_STAMINA_LOSS) | ||||||||||||||||||||||||||||||||||||
last_inhale = world.time | ||||||||||||||||||||||||||||||||||||
var/datum/effect_system/fluid_spread/smoke/chem/puff = new | ||||||||||||||||||||||||||||||||||||
puff.set_up(1, SPREAD_VOLUME, location = source_hookah.loc, carry = reagents) | ||||||||||||||||||||||||||||||||||||
puff.start() | ||||||||||||||||||||||||||||||||||||
addtimer(CALLBACK(src, PROC_REF(stop_smoke)), 2 SECONDS) | ||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||
/obj/item/hookah_mouthpiece/proc/stop_smoke() | ||||||||||||||||||||||||||||||||||||
if(source_hookah.particle_type) | ||||||||||||||||||||||||||||||||||||
source_hookah.remove_shared_particles(source_hookah.particle_type) | ||||||||||||||||||||||||||||||||||||
source_hookah.particle_type = null | ||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||
/obj/machinery/hookah/proc/break_hookah() | ||||||||||||||||||||||||||||||||||||
if(lit) | ||||||||||||||||||||||||||||||||||||
put_out() | ||||||||||||||||||||||||||||||||||||
fuel = 0 | ||||||||||||||||||||||||||||||||||||
new /obj/item/shard(get_turf(src)) | ||||||||||||||||||||||||||||||||||||
if(reagent_container && reagent_container.reagents?.total_volume) | ||||||||||||||||||||||||||||||||||||
reagent_container.reagents.expose(get_turf(src), TOUCH) | ||||||||||||||||||||||||||||||||||||
if(this_mouthpiece) | ||||||||||||||||||||||||||||||||||||
qdel(this_mouthpiece) | ||||||||||||||||||||||||||||||||||||
qdel(src) | ||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||
/obj/machinery/hookah/Destroy() | ||||||||||||||||||||||||||||||||||||
if(reagent_container && reagent_container != src) | ||||||||||||||||||||||||||||||||||||
QDEL_NULL(reagent_container) | ||||||||||||||||||||||||||||||||||||
if(particle_type) | ||||||||||||||||||||||||||||||||||||
remove_shared_particles(particle_type) | ||||||||||||||||||||||||||||||||||||
set_light(0) | ||||||||||||||||||||||||||||||||||||
return ..() | ||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||
/obj/machinery/hookah/take_damage(damage_amount, damage_type, damage_flag, sound_effect, attack_dir) | ||||||||||||||||||||||||||||||||||||
. = ..() | ||||||||||||||||||||||||||||||||||||
if(. && atom_integrity <= 0) | ||||||||||||||||||||||||||||||||||||
break_hookah() | ||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||
#undef INTERNAL_VOLUME | ||||||||||||||||||||||||||||||||||||
#undef MAX_FUEL | ||||||||||||||||||||||||||||||||||||
#undef FUEL_PER_COAL | ||||||||||||||||||||||||||||||||||||
#undef FUEL_CONSUME_INTERVAL | ||||||||||||||||||||||||||||||||||||
#undef INHALE_VOLUME | ||||||||||||||||||||||||||||||||||||
#undef SPREAD_VOLUME | ||||||||||||||||||||||||||||||||||||
#undef INHALE_COOLDOWN | ||||||||||||||||||||||||||||||||||||
#undef COUGH_STAMINA_LOSS | ||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||
/obj/machinery/vending/cigarette/New() | ||||||||||||||||||||||||||||||||||||
premium += list( | ||||||||||||||||||||||||||||||||||||
/obj/item/hookah_coals = 3, | ||||||||||||||||||||||||||||||||||||
) | ||||||||||||||||||||||||||||||||||||
. = ..() | ||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||
/datum/supply_pack/misc/hookah_kit | ||||||||||||||||||||||||||||||||||||
name = "Набор для кальяна" | ||||||||||||||||||||||||||||||||||||
desc = "Комплект для любителей подымыть и культурно расслабиться. Наполнение не включено." | ||||||||||||||||||||||||||||||||||||
cost = 500 | ||||||||||||||||||||||||||||||||||||
contains = list( | ||||||||||||||||||||||||||||||||||||
/obj/machinery/hookah, | ||||||||||||||||||||||||||||||||||||
/obj/item/hookah_coals, | ||||||||||||||||||||||||||||||||||||
/obj/item/hookah_coals, | ||||||||||||||||||||||||||||||||||||
/obj/item/hookah_coals | ||||||||||||||||||||||||||||||||||||
) | ||||||||||||||||||||||||||||||||||||
crate_name = "ящик с набором для кальяна" | ||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||
/obj/machinery/hookah/wrench_act(mob/living/user, obj/item/tool) | ||||||||||||||||||||||||||||||||||||
default_unfasten_wrench(user, tool, time = 2 SECONDS) | ||||||||||||||||||||||||||||||||||||
return ITEM_INTERACT_SUCCESS |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Лишнее