Enhances the Smoking Experience - Adds Many New Item Interactions for Cigarettes and Items Interacting With Them (#25571)

* Refactoring and other stuff.

* moar

* More smoking

* Update energy_melee_weapons.dm

* Update code/game/objects/items/robot/cyborg_gripper.dm

Co-authored-by: Ryan <80364400+Sirryan2002@users.noreply.github.com>
Signed-off-by: CRUNCH <143041327+Fordoxia@users.noreply.github.com>

* Apply suggestions from code review

Co-authored-by: Ryan <80364400+Sirryan2002@users.noreply.github.com>
Signed-off-by: CRUNCH <143041327+Fordoxia@users.noreply.github.com>

* Update cigs.dm

* Update cigs.dm

* Update cigs.dm

* Update code/game/objects/items/weapons/lighters.dm

Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com>
Signed-off-by: CRUNCH <143041327+Fordoxia@users.noreply.github.com>

* Apply suggestions from code review

Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com>
Signed-off-by: CRUNCH <143041327+Fordoxia@users.noreply.github.com>

* eee

* Apply suggestions from code review

Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com>
Signed-off-by: CRUNCH <143041327+Fordoxia@users.noreply.github.com>

* sigh

* Update cigs.dm

* Apply suggestions from code review

Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com>
Signed-off-by: CRUNCH <143041327+Fordoxia@users.noreply.github.com>

* hell

* Update cigs.dm

* aa

* cool

* Fixing some minor typos for cyborg upgrade flavour text

Throws in some missing apostrophes, capitalisation, and the letter "s."

* Briefcase Full of Cash buff

Increases the amount of cash in the Syndicate Briefcase Full of Cash from 600 Cr to 1000 Cr

* Reverts double-feature PR

* Reverts a broken revert

* Reverting again because Ebba told me to

* And reverting yet again

* Update robot_upgrades.dm

* aa

* aaa

* suffering

* Soon

* Is it done!? Am I finally free!?

* Apply suggestions from code review

Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com>
Signed-off-by: CRUNCH <143041327+Fordoxia@users.noreply.github.com>

* Update

* Update

* No longer assume the cig is in a mouth

* Update tools.dm

* Update pronouns.dm

* Fixing some minor typos for cyborg upgrade flavour text

Throws in some missing apostrophes, capitalisation, and the letter "s."

* Briefcase Full of Cash buff

Increases the amount of cash in the Syndicate Briefcase Full of Cash from 600 Cr to 1000 Cr

* Reverts double-feature PR

* Reverts a broken revert

* Reverting again because Ebba told me to

* And reverting yet again

* Update robot_upgrades.dm

* Fixing some minor typos for cyborg upgrade flavour text

Throws in some missing apostrophes, capitalisation, and the letter "s."

* Briefcase Full of Cash buff

Increases the amount of cash in the Syndicate Briefcase Full of Cash from 600 Cr to 1000 Cr

* Reverts double-feature PR

* Reverts a broken revert

* Reverting again because Ebba told me to

* And reverting yet again

* Update robot_upgrades.dm

* update

* Attack animations for sword lighting!

* Update

* indentation

* Update cigs.dm

* minor refactor

* Update items.dm

* Update items.dm

* Update welder.dm

* Update energy_melee_weapons.dm

* Apply suggestions from code review

Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com>
Signed-off-by: CRUNCH <143041327+Fordoxia@users.noreply.github.com>

* refactor

* Update items.dm

* Apply suggestions from code review

Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com>
Signed-off-by: CRUNCH <143041327+Fordoxia@users.noreply.github.com>

* Fixing some minor typos for cyborg upgrade flavour text

Throws in some missing apostrophes, capitalisation, and the letter "s."

* Briefcase Full of Cash buff

Increases the amount of cash in the Syndicate Briefcase Full of Cash from 600 Cr to 1000 Cr

* Reverts double-feature PR

* Reverts a broken revert

* Reverting again because Ebba told me to

* And reverting yet again

* Update robot_upgrades.dm

* Update flamethrower.dm

* clipping

* Update legion_loot.dm

* anti attack check

* Fixes a zippo runtime

* Fixes evil runtime and stops unnecessary violence.

* Apply suggestions from code review

Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com>
Signed-off-by: CRUNCH <143041327+Fordoxia@users.noreply.github.com>

* Update based on review

* Update cigs.dm

* Update energy_melee_weapons.dm

* Apply suggestions from code review

Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com>
Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com>
Signed-off-by: CRUNCH <143041327+Fordoxia@users.noreply.github.com>

* Update toys.dm

* Update energy_melee_weapons.dm

* Update legion_loot.dm

* Update code/game/objects/items/weapons/melee/energy_melee_weapons.dm

Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com>
Signed-off-by: CRUNCH <143041327+Fordoxia@users.noreply.github.com>

---------

Signed-off-by: CRUNCH <143041327+Fordoxia@users.noreply.github.com>
Co-authored-by: Ryan <80364400+Sirryan2002@users.noreply.github.com>
Co-authored-by: DGamerL <108773801+DGamerL@users.noreply.github.com>
Co-authored-by: Luc <89928798+lewcc@users.noreply.github.com>
Co-authored-by: Burzah <116982774+Burzah@users.noreply.github.com>
This commit is contained in:
CRUNCH
2024-09-03 14:02:13 +01:00
committed by GitHub
parent c7340b09b5
commit 9ef47e7935
18 changed files with 929 additions and 389 deletions
+28 -1
View File
@@ -28,7 +28,10 @@
var/turf/location = get_turf(loc)
if(location)
location.hotspot_expose(1000, 1000)
visible_message(
"<span class='notice'>Sparks shoot out of [src].</span>",
"<span class='warning'>You hear a shower of sparks shooting out from something!</span>"
)
sparks.start()
if(istype(loc, /obj/item/assembly_holder))
@@ -54,6 +57,30 @@
return TRUE
/obj/item/assembly/igniter/attack(mob/living/target, mob/living/user)
if(!cigarette_lighter_act(user, target))
return ..()
/obj/item/assembly/igniter/cigarette_lighter_act(mob/living/user, mob/living/target, obj/item/direct_attackby_item)
var/obj/item/clothing/mask/cigarette/cig = ..()
if(!cig)
return !isnull(cig)
if(target == user)
user.visible_message(
"<span class='notice'>[user] presses [src] against [cig] and activates it, lighting [cig] in a shower of sparks!</span>",
"<span class='notice'>You press [src] against [cig] and activates it, lighting [cig] in a shower of sparks!</span>",
"<span class='warning'>You hear a shower of sparks shooting out from something!</span>"
)
else
user.visible_message(
"<span class='notice'>[user] presses [src] against [cig] and activates it, lighting [cig] for [target] in a shower of sparks!</span>",
"<span class='notice'>You press [src] against [cig] and activate it, lighting [cig] in a shower of sparks!</span>",
"<span class='warning'>You hear a shower of sparks shooting out from something!</span>"
)
sparks.start() // Make sparks fly!
cig.light(user, target)
return TRUE
/obj/item/assembly/igniter/attack_self(mob/user)
if(!istype(loc, /obj/item/assembly_holder))
@@ -273,6 +273,28 @@
. = ..()
banned_turfs = typecacheof(list(/turf/space/transit, /turf/simulated/wall, /turf/simulated/mineral))
/obj/item/lava_staff/attack(mob/target, mob/living/user)
if(!cigarette_lighter_act(user, target))
return ..()
/obj/item/lava_staff/cigarette_lighter_act(mob/living/user, mob/living/target, obj/item/direct_attackby_item)
var/obj/item/clothing/mask/cigarette/cig = ..()
if(!cig)
return !isnull(cig)
if(target == user)
user.visible_message(
"<span class='notice'>[user] holds the tip of [src] near [user.p_their()] [cig.name] until it is suddenly set alight.</span>",
"<span class='notice'>You hold the tip of [src] near [cig] until it is suddenly set alight.</span>",
)
else
user.visible_message(
"<span class='notice'>[user] points [src] at [target] until [target.p_their()] [cig.name] is suddenly set alight.</span>",
"<span class='notice'>You point [src] at [target] until [target.p_their()] [cig] is suddenly set alight.</span>",
)
cig.light(user, target)
return TRUE
/obj/item/lava_staff/afterattack(atom/target, mob/user, proximity_flag, click_parameters)
..()
if(timer > world.time)
@@ -30,6 +30,38 @@
. += "<span class='notice'>Use it on targets to summon thunderbolts from the sky.</span>"
. += "<span class='notice'>The thunderbolts are boosted if in an area with weather effects.</span>"
/obj/item/storm_staff/attack(mob/living/target, mob/living/user)
if(cigarette_lighter_act(user, target))
return TRUE
return ..()
/obj/item/storm_staff/cigarette_lighter_act(mob/living/user, mob/living/target, obj/item/direct_attackby_item)
var/obj/item/clothing/mask/cigarette/cig = ..()
if(!cig)
return !isnull(cig)
if(!thunder_charges)
to_chat(user, "<span class='warning'>[src] needs to recharge!</span>")
return TRUE
if(target == user)
user.visible_message(
"<span class='warning'>[user] holds [src] up to [user.p_their()] [cig.name] and shoots a tiny bolt of lightning that sets it alight!</span>",
"<span class='warning'>You hold [src] up to [cig] and shoot a tiny bolt of lightning that sets it alight!</span>",
"<span class='danger'>A thundercrack fills the air!</span>"
)
else
user.visible_message(
"<span class='warning'>[user] points [src] at [target] and shoots a tiny bolt of lightning that sets [target.p_their()] [cig.name] alight!</span>",
"<span class='warning'>You point [src] at [target] and shoot a tiny bolt of lightning that sets [target.p_their()] [cig.name] alight!</span>",
"<span class='danger'>A thundercrack fills the air!</span>"
)
cig.light(user, target)
playsound(target, 'sound/magic/lightningbolt.ogg', 50, TRUE)
thunder_charges--
return TRUE
/obj/item/storm_staff/attack_self(mob/user)
var/area/user_area = get_area(user)
var/turf/user_turf = get_turf(user)
@@ -48,9 +80,11 @@
if(A.stage == WEATHER_WIND_DOWN_STAGE)
to_chat(user, "<span class='warning'>The storm is already ending! It would be a waste to use the staff now.</span>")
return
user.visible_message("<span class='warning'>[user] holds [src] skywards as an orange beam travels into the sky!</span>", \
"<span class='notice'>You hold [src] skyward, dispelling the storm!</span>")
playsound(user, 'sound/magic/staff_change.ogg', 200, 0)
user.visible_message(
"<span class='warning'>[user] holds [src] skywards as an orange beam travels into the sky!</span>",
"<span class='notice'>You hold [src] skyward, dispelling the storm!</span>"
)
playsound(user, 'sound/magic/staff_change.ogg', 200, FALSE)
A.wind_down()
var/old_color = user.color
user.color = list(340/255, 240/255, 0,0, 0,0,0,0, 0,0,0,0, 0,0,0,1, 0,0,0,0)
@@ -59,6 +93,13 @@
animate(user, color = old_color, transform = old_transform, time = 1 SECONDS)
/obj/item/storm_staff/afterattack(atom/target, mob/user, proximity_flag, click_parameters)
// This early return stops the staff from shooting lightning at someone when being used as a lighter.
if(iscarbon(target))
var/mob/living/carbon/cig_haver = target
var/mask_item = cig_haver.get_item_by_slot(SLOT_HUD_WEAR_MASK)
if(istype(mask_item, /obj/item/clothing/mask/cigarette) && user.zone_selected == "mouth" && user.a_intent == INTENT_HELP)
return
. = ..()
if(!thunder_charges)
to_chat(user, "<span class='warning'>The staff needs to recharge.</span>")
@@ -120,7 +161,10 @@
for(var/obj/hit_thing in T)
hit_thing.take_damage(20, BURN, ENERGY, FALSE)
playsound(target, 'sound/magic/lightningbolt.ogg', 100, TRUE)
target.visible_message("<span class='danger'>A thunderbolt strikes [target]!</span>")
target.visible_message(
"<span class='danger'>A thunderbolt strikes [target]!</span>",
"<span class='danger'>A thundercrack fills the air!</span>"
)
explosion(target, -1, -1, light_impact_range = (boosted ? 1 : 0), flame_range = (boosted ? 2 : 1), silent = TRUE)
+57 -26
View File
@@ -1,14 +1,14 @@
/* Pens!
* Contains:
* Pens
* Sleepy Pens
* Edaggers
* CONTENTS:
* 1. PENS
* 2. SLEEPYPENS
* 3. E-DAGGERS
4. POISON PEN
*/
/*
* Pens
*/
// PENS
/obj/item/pen
desc = "It's a normal black ink pen."
name = "pen"
@@ -139,15 +139,13 @@
desc = "An expensive-looking pen only issued to heads of cargo."
icon_state = "pen_qm"
/*
* Sleepypens
*/
// SLEEPYPEN
/obj/item/pen/sleepy
container_type = OPENCONTAINER
origin_tech = "engineering=4;syndicate=2"
var/transfer_amount = 50
/obj/item/pen/sleepy/attack(mob/living/M, mob/user)
if(!istype(M))
return
@@ -169,7 +167,6 @@
add_attack_logs(user, M, "Stabbed with (sleepy) [src]. [transfered]u of reagents transfered from pen containing [english_list(contained)].")
return TRUE
/obj/item/pen/sleepy/Initialize(mapload)
. = ..()
create_reagents(100)
@@ -201,12 +198,11 @@
desc = "Used to stealthily inject targets. Comes loaded with ketamine but can be refilled with other chemicals. This one isn't disguised."
icon_state = "pen_syndie"
/*
* (Alan) Edaggers
*/
// E-DAGGER
/obj/item/pen/edagger
origin_tech = "combat=3;syndicate=1"
var/on = FALSE
var/active = FALSE
var/brightness_on = 2
light_color = LIGHT_COLOR_RED
var/backstab_sound = 'sound/items/unsheath.ogg'
@@ -215,14 +211,20 @@
throw_speed = 4
/obj/item/pen/edagger/attack(mob/living/M, mob/living/user, def_zone)
if(cigarette_lighter_act(user, M))
return
var/extra_force_applied = FALSE
if(on && user.dir == M.dir && !HAS_TRAIT(M, TRAIT_FLOORED) && user != M)
if(active && user.dir == M.dir && !HAS_TRAIT(M, TRAIT_FLOORED) && user != M)
force += backstab_damage
extra_force_applied = TRUE
add_attack_logs(user, M, "Backstabbed with [src]", ATKLOG_ALL)
M.apply_damage(40, STAMINA) //Just enough to slow
M.KnockDown(2 SECONDS)
M.visible_message("<span class='warning'>[user] stabs [M] in the back!</span>", "<span class='userdanger'>[user] stabs you in the back! The energy blade makes you collapse in pain!</span>")
M.visible_message(
"<span class='warning'>[user] stabs [M] in the back!</span>",
"<span class='userdanger'>[user] stabs you in the back! The energy blade makes you collapse in pain!</span>"
)
playsound(loc, backstab_sound, 5, TRUE, ignore_walls = FALSE, falloff_distance = 0)
else
@@ -231,13 +233,40 @@
if(extra_force_applied)
force -= backstab_damage
/obj/item/pen/edagger/get_clamped_volume() //So the parent proc of attack isn't the loudest sound known to man
return 0
/obj/item/pen/edagger/cigarette_lighter_act(mob/living/user, mob/living/carbon/target, obj/item/direct_attackby_item)
var/obj/item/clothing/mask/cigarette/cig = ..()
if(!cig)
return !isnull(cig)
if(!active)
to_chat(user, "<span class='warning'>You need to activate [src] before you can light anything with it!</span>")
return TRUE
if(target == user)
user.visible_message(
"<span class='warning'>[user] makes a violent slashing motion, barely missing [user.p_their()] nose as light flashes! \
[user.p_they(TRUE)] light[user.p_s()] [user.p_their()] [cig] with [src] in the process.</span>",
"<span class='notice'>You casually slash [src] at [cig], lighting it with the blade.</span>",
"<span class='danger'>You hear an energy blade slashing something!</span>"
)
else
user.visible_message(
"<span class='danger'>[user] makes a violent slashing motion, barely missing the nose of [target] as light flashes! \
[user.p_they(TRUE)] light[user.p_s()] [cig] in the mouth of [target] with [src] in the process.</span>",
"<span class='notice'>You casually slash [src] at [cig] in the mouth of [target], lighting it with the blade.</span>",
"<span class='danger'>You hear an energy blade slashing something!</span>"
)
user.do_attack_animation(target)
playsound(user.loc, hitsound, 5, TRUE, ignore_walls = FALSE, falloff_distance = 0)
cig.light(user, target)
return TRUE
/obj/item/pen/edagger/get_clamped_volume() //So the parent proc of attack isn't the loudest sound known to man
return FALSE
/obj/item/pen/edagger/attack_self(mob/living/user)
if(on)
on = FALSE
if(active)
active = FALSE
force = initial(force)
w_class = initial(w_class)
name = initial(name)
@@ -249,7 +278,7 @@
to_chat(user, "<span class='warning'>[src] can now be concealed.</span>")
set_light(0)
else
on = TRUE
active = TRUE
force = 18
w_class = WEIGHT_CLASS_NORMAL
name = "energy dagger"
@@ -257,14 +286,14 @@
hitsound = 'sound/weapons/blade1.ogg'
embed_chance = 100 //rule of cool
throwforce = 35
playsound(user, 'sound/weapons/saberon.ogg', 2, 1)
playsound(user, 'sound/weapons/saberon.ogg', 2, TRUE)
to_chat(user, "<span class='warning'>[src] is now active.</span>")
set_light(brightness_on, 1)
set_sharpness(on)
set_sharpness(active)
update_icon()
/obj/item/pen/edagger/update_icon_state()
if(on)
if(active)
icon_state = "edagger"
item_state = "edagger"
else
@@ -274,6 +303,8 @@
/obj/item/proc/on_write(obj/item/paper/P, mob/user)
return
// POISON PEN
/obj/item/pen/multi/poison
var/current_poison = null
+81 -24
View File
@@ -1,3 +1,16 @@
/*
CONTENTS:
1. Wand of Nothing
2. Wand of Death
3. Wand of Healing
4. Wand of Polymorph
5. Wand of Teleportation
6. Wand of Door Creation
7. Wand of Fireball
8. Wand of Slipping
9. Wand of Chaos
*/
/obj/item/gun/magic/wand
name = "wand of nothing"
desc = "It's not just a stick, it's a MAGIC stick!"
@@ -59,9 +72,8 @@
user.create_attack_log("<b>[key_name(user)]</b> zapped [user.p_themselves()] with a <b>[src]</b>")
add_attack_logs(user, user, "zapped [user.p_themselves()] with a [src]", ATKLOG_ALL)
/////////////////////////////////////
//WAND OF DEATH
/////////////////////////////////////
// WAND OF DEATH
/obj/item/gun/magic/wand/death
name = "wand of death"
@@ -85,9 +97,7 @@
user.adjustFireLoss(6969)
user.death(FALSE)
/////////////////////////////////////
//WAND OF HEALING
/////////////////////////////////////
// WAND OF HEALING
/obj/item/gun/magic/wand/resurrection
name = "wand of resurrection"
@@ -109,9 +119,8 @@
user.revive()
to_chat(user, "<span class='notice'>You feel great!</span>")
/////////////////////////////////////
//WAND OF POLYMORPH
/////////////////////////////////////
// WAND OF POLYMORPH
/obj/item/gun/magic/wand/polymorph
name = "wand of polymorph"
@@ -127,9 +136,8 @@
wabbajack(user)
charges--
/////////////////////////////////////
//WAND OF TELEPORTATION
/////////////////////////////////////
// WAND OF TELEPORTATION
/obj/item/gun/magic/wand/teleport
name = "wand of teleportation"
@@ -149,9 +157,8 @@
charges--
..()
/////////////////////////////////////
//WAND OF DOOR CREATION
/////////////////////////////////////
// WAND OF DOOR CREATION
/obj/item/gun/magic/wand/door
name = "wand of door creation"
@@ -168,9 +175,8 @@
charges--
..()
/////////////////////////////////////
//WAND OF FIREBALL
/////////////////////////////////////
// WAND OF FIREBALL
/obj/item/gun/magic/wand/fireball
name = "wand of fireball"
@@ -186,9 +192,61 @@
charges--
..()
/////////////////////////////////////
//WAND OF SLIPPING
/////////////////////////////////////
/obj/item/gun/magic/wand/fireball/attack(atom/target, mob/living/user)
if(!iscarbon(target))
return ..()
var/mob/living/M = target
if(cigarette_lighter_act(user, M))
return
if(M != user) // Do not blow yourself up!
return ..() // Blow everyone else up!
/obj/item/gun/magic/wand/fireball/cigarette_lighter_act(mob/living/user, mob/living/target, obj/item/direct_attackby_item)
var/obj/item/clothing/mask/cigarette/cig = ..()
if(!cig)
return !isnull(cig)
if(!charges)
to_chat(user, "<span class='warning'>[src] is out of charge!</span>")
return TRUE
if(prob(50) || user.mind.assigned_role == "Wizard")
if(target == user)
user.visible_message(
"<span class='warning'>Holy shit! Did [user] just manage to light [user.p_their()] [cig.name] with [src], with only moderate eyebrow singing!?</span>",
"<span class='notice'>You swish and flick [src], lighting [cig] with a plume of flame, whilst only moderately eyebrow singing your eyebrows.</span>",
"<span class='warning'>You hear a brief burst of flame!</span>"
)
else
user.visible_message(
"<span class='warning'>Holy shit! Did [user] just manage to light [cig] for [target] with [src], only moderately singing [target.p_their()] eyebrows!?</span>",
"<span class='notice'>You swish and flick [src] at [target], lighting [user.p_their()] [cig.name] with a plume of flame, whilst only moderately singing [target.p_their()] eyebrows.</span>",
"<span class='warning'>You hear a brief burst of flame!</span>"
)
cig.light(user, target)
return TRUE
// Oops...
user.visible_message(
"<span class='userdanger'>Unsure which end of [src] is which, [user] zaps [user.p_themselves()] with a fireball!</span>",
"<span class='userdanger'>Unsure which end of [src] is which, you accidentally zap yourself with a fireball!</span>",
"<span class='userdanger'>You hear a firey explosion!</span>"
)
explosion(user.loc, -1, 0, 2, 3, 0, flame_range = 2)
charges--
return TRUE
// This is needed to you don't try to perform an execution/suicide when lighting a cigarette.
/obj/item/gun/magic/wand/fireball/handle_suicide(mob/user, mob/living/carbon/human/target, params)
var/mask_item = target.get_item_by_slot(SLOT_HUD_WEAR_MASK)
if(istype(mask_item, /obj/item/clothing/mask/cigarette) && user.zone_selected == "mouth" && user.a_intent == INTENT_HELP)
return
. = ..()
// WAND OF SLIPPING
/obj/item/gun/magic/wand/slipping
name = "wand of slipping"
desc = "This wand shoots... banana peels?"
@@ -202,9 +260,8 @@
charges--
..()
/////////////////////////////////////
//WAND OF CHAOS - Only spawned by the Staff of Chaos as a rare random effect
/////////////////////////////////////
// WAND OF CHAOS - Only spawned by the Staff of Chaos as a rare random effect
/obj/item/gun/magic/wand/chaos
name = "wand of chaos"
desc = "Payback time!"
+44
View File
@@ -56,6 +56,28 @@
attack_verb = list("burnt")
tool_behaviour = TOOL_CAUTERY
/obj/item/cautery/attack(mob/living/target, mob/living/user)
if(!cigarette_lighter_act(user, target))
return ..()
/obj/item/cautery/cigarette_lighter_act(mob/living/user, mob/living/target, obj/item/direct_attackby_item)
var/obj/item/clothing/mask/cigarette/cig = ..()
if(!cig)
return !isnull(cig)
if(target == user)
user.visible_message(
"<span class='notice'>[user] presses [src] against [cig], heating it until it lights.</span>",
"<span class='notice'>You press [src] against [cig], heating it until it lights.</span>"
)
else
user.visible_message(
"<span class='notice'>[user] presses [src] against [cig] for [target], heating it until it lights.</span>",
"<span class='notice'>You press [src] against [cig] for [target], heating it until it lights.</span>"
)
cig.light(user, target)
return TRUE
/obj/item/cautery/Initialize(mapload)
. = ..()
ADD_TRAIT(src, TRAIT_SURGICAL, ROUNDSTART_TRAIT)
@@ -146,6 +168,28 @@
damtype = "fire"
hitsound = 'sound/weapons/sear.ogg'
/obj/item/scalpel/laser/attack(mob/living/carbon/target, mob/living/user)
if(!cigarette_lighter_act(user, target))
return ..()
/obj/item/scalpel/laser/cigarette_lighter_act(mob/living/user, mob/living/target, obj/item/direct_attackby_item)
var/obj/item/clothing/mask/cigarette/cig = ..()
if(!cig)
return !isnull(cig)
if(target == user)
user.visible_message(
"<span class='notice'>[user] presses [src] against [cig], heating it until it lights.</span>",
"<span class='notice'>You press [src] against [cig], heating it until it lights.</span>"
)
else
user.visible_message(
"<span class='notice'>[user] presses [src] against [cig] for [target], heating it until it lights.</span>",
"<span class='notice'>You press [src] against [cig] for [target], heating it until it lights.</span>"
)
cig.light(user, target)
return TRUE
/// lasers also count as catuarys
/obj/item/scalpel/laser/laser1
name = "laser scalpel"