mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-08-29 06:57:42 +01:00
Merge branch 'master' of https://github.com/ParadiseSS13/Paradise into turfs
# Conflicts: # code/modules/mob/living/simple_animal/hostile/hostile.dm
This commit is contained in:
@@ -192,7 +192,7 @@ var/global/list/image/splatter_cache = list()
|
||||
icon = 'icons/effects/blood.dmi'
|
||||
icon_state = "gibbl5"
|
||||
random_icon_states = list("gib1", "gib2", "gib3", "gib4", "gib5", "gib6")
|
||||
noclear = TRUE
|
||||
no_clear = TRUE
|
||||
var/fleshcolor = "#FFFFFF"
|
||||
|
||||
/obj/effect/decal/cleanable/blood/gibs/update_icon()
|
||||
@@ -221,18 +221,11 @@ var/global/list/image/splatter_cache = list()
|
||||
|
||||
/obj/effect/decal/cleanable/blood/gibs/core
|
||||
random_icon_states = list("gibmid1", "gibmid2", "gibmid3")
|
||||
|
||||
/obj/effect/decal/cleanable/blood/gibs/Initialize()
|
||||
. = ..()
|
||||
reagents.add_reagent("liquidgibs", 5)
|
||||
scoop_reagents = list("liquidgibs" = 5)
|
||||
|
||||
|
||||
/obj/effect/decal/cleanable/blood/gibs/cleangibs //most ironic name ever...
|
||||
|
||||
/obj/effect/decal/cleanable/blood/gibs/cleangibs/Initialize() //no reagent!
|
||||
. = ..()
|
||||
reagents.remove_reagent("liquidgibs",5)
|
||||
|
||||
scoop_reagents = null
|
||||
|
||||
/obj/effect/decal/cleanable/blood/gibs/proc/streak(var/list/directions)
|
||||
set waitfor = 0
|
||||
|
||||
@@ -15,10 +15,7 @@
|
||||
icon = 'icons/obj/objects.dmi'
|
||||
icon_state = "ash"
|
||||
anchored = TRUE
|
||||
|
||||
/obj/effect/decal/cleanable/ash/Initialize()
|
||||
. = ..()
|
||||
reagents.add_reagent("ash", 10)
|
||||
scoop_reagents = list("ash" = 10)
|
||||
|
||||
/obj/effect/decal/cleanable/dirt
|
||||
name = "dirt"
|
||||
@@ -40,11 +37,8 @@
|
||||
/obj/effect/decal/cleanable/dirt/blackpowder
|
||||
name = "black powder"
|
||||
mouse_opacity = TRUE
|
||||
noscoop = TRUE
|
||||
|
||||
/obj/effect/decal/cleanable/dirt/blackpowder/Initialize()
|
||||
. = ..()
|
||||
reagents.add_reagent("blackpowder", 40) // size 2 explosion when activated
|
||||
no_scoop = TRUE
|
||||
scoop_reagents = list("blackpowder" = 40) // size 2 explosion when activated
|
||||
|
||||
/obj/effect/decal/cleanable/flour
|
||||
name = "flour"
|
||||
@@ -127,22 +121,15 @@
|
||||
icon = 'icons/effects/blood.dmi'
|
||||
icon_state = "vomit_1"
|
||||
random_icon_states = list("vomit_1", "vomit_2", "vomit_3", "vomit_4")
|
||||
noclear = TRUE
|
||||
|
||||
/obj/effect/decal/cleanable/vomit/Initialize()
|
||||
. = ..()
|
||||
reagents.add_reagent("vomit", 5)
|
||||
no_clear = TRUE
|
||||
scoop_reagents = list("vomit" = 5)
|
||||
|
||||
/obj/effect/decal/cleanable/vomit/green
|
||||
name = "green vomit"
|
||||
desc = "It's all gummy. Ew."
|
||||
icon_state = "gvomit_1"
|
||||
random_icon_states = list("gvomit_1", "gvomit_2", "gvomit_3", "gvomit_4")
|
||||
|
||||
/obj/effect/decal/cleanable/vomit/green/Initialize()
|
||||
. = ..()
|
||||
reagents.remove_reagent("vomit", 5)
|
||||
reagents.add_reagent("green_vomit", 5)
|
||||
scoop_reagents = list("green_vomit" = 5)
|
||||
|
||||
/obj/effect/decal/cleanable/tomato_smudge
|
||||
name = "tomato smudge"
|
||||
@@ -189,10 +176,7 @@
|
||||
icon = 'icons/effects/effects.dmi'
|
||||
icon_state = "flour"
|
||||
color = "#D5820B"
|
||||
|
||||
/obj/effect/decal/cleanable/fungus/Initialize()
|
||||
. = ..()
|
||||
reagents.add_reagent("fungus", 10)
|
||||
scoop_reagents = list("fungus" = 10)
|
||||
|
||||
/obj/effect/decal/cleanable/confetti //PARTY TIME!
|
||||
name = "confetti"
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
/obj/effect/decal/cleanable
|
||||
anchored = TRUE
|
||||
var/list/random_icon_states = list()
|
||||
var/noscoop = FALSE //if it has this, don't let it be scooped up
|
||||
var/noclear = FALSE //if it has this, don't delete it when its' scooped up
|
||||
|
||||
/obj/effect/decal/cleanable/proc/can_bloodcrawl_in()
|
||||
return FALSE
|
||||
@@ -10,7 +8,6 @@
|
||||
/obj/effect/decal/cleanable/New()
|
||||
if(random_icon_states && length(src.random_icon_states) > 0)
|
||||
src.icon_state = pick(src.random_icon_states)
|
||||
create_reagents(100)
|
||||
if(smooth)
|
||||
queue_smooth(src)
|
||||
queue_smooth_neighbors(src)
|
||||
@@ -19,25 +16,4 @@
|
||||
/obj/effect/decal/cleanable/Destroy()
|
||||
if(smooth)
|
||||
queue_smooth_neighbors(src)
|
||||
return ..()
|
||||
|
||||
/obj/effect/decal/cleanable/attackby(obj/item/W as obj, mob/user as mob,)
|
||||
if(istype(W, /obj/item/reagent_containers/glass) || istype(W, /obj/item/reagent_containers/food/drinks))
|
||||
if(src.reagents && W.reagents && !noscoop)
|
||||
if(!src.reagents.total_volume)
|
||||
to_chat(user, "<span class='notice'>There isn't enough [src] to scoop up!</span>")
|
||||
return
|
||||
if(W.reagents.total_volume >= W.reagents.maximum_volume)
|
||||
to_chat(user, "<span class='notice'>[W] is full!</span>")
|
||||
return
|
||||
to_chat(user, "<span class='notice'>You scoop the [src] into [W]!</span>")
|
||||
reagents.trans_to(W, reagents.total_volume)
|
||||
if(!reagents.total_volume && !noclear) //scooped up all of it
|
||||
qdel(src)
|
||||
return
|
||||
|
||||
/obj/effect/decal/cleanable/ex_act()
|
||||
if(reagents)
|
||||
for(var/datum/reagent/R in reagents.reagent_list)
|
||||
R.on_ex_act()
|
||||
..()
|
||||
return ..()
|
||||
@@ -54,3 +54,16 @@
|
||||
|
||||
/obj/effect/decal/straw/edge
|
||||
icon_state = "strawscatterededge"
|
||||
|
||||
/obj/effect/decal/ants
|
||||
name = "space ants"
|
||||
desc = "A bunch of space ants."
|
||||
icon = 'icons/goonstation/effects/effects.dmi'
|
||||
icon_state = "spaceants"
|
||||
scoop_reagents = list("ants" = 20)
|
||||
|
||||
/obj/effect/decal/ants/Initialize(mapload)
|
||||
. = ..()
|
||||
var/scale = (rand(2, 10) / 10) + (rand(0, 5) / 100)
|
||||
transform = matrix(transform, scale, scale, MATRIX_SCALE)
|
||||
setDir(pick(NORTH, SOUTH, EAST, WEST))
|
||||
@@ -13,4 +13,38 @@
|
||||
return
|
||||
|
||||
/obj/effect/attack_hulk(mob/living/carbon/human/user, does_attack_animation = FALSE)
|
||||
return FALSE
|
||||
return FALSE
|
||||
|
||||
/obj/effect/decal
|
||||
var/no_scoop = FALSE //if it has this, don't let it be scooped up
|
||||
var/no_clear = FALSE //if it has this, don't delete it when its' scooped up
|
||||
var/list/scoop_reagents = null
|
||||
|
||||
/obj/effect/decal/Initialize(mapload)
|
||||
. = ..()
|
||||
if(scoop_reagents)
|
||||
create_reagents(100)
|
||||
reagents.add_reagent_list(scoop_reagents)
|
||||
|
||||
/obj/effect/decal/attackby(obj/item/I, mob/user)
|
||||
if(istype(I, /obj/item/reagent_containers/glass) || istype(I, /obj/item/reagent_containers/food/drinks))
|
||||
scoop(I, user)
|
||||
|
||||
/obj/effect/decal/proc/scoop(obj/item/I, mob/user)
|
||||
if(reagents && I.reagents && !no_scoop)
|
||||
if(!reagents.total_volume)
|
||||
to_chat(user, "<span class='notice'>There isn't enough [src] to scoop up!</span>")
|
||||
return
|
||||
if(I.reagents.total_volume >= I.reagents.maximum_volume)
|
||||
to_chat(user, "<span class='notice'>[I] is full!</span>")
|
||||
return
|
||||
to_chat(user, "<span class='notice'>You scoop [src] into [I]!</span>")
|
||||
reagents.trans_to(I, reagents.total_volume)
|
||||
if(!reagents.total_volume && !no_clear) //scooped up all of it
|
||||
qdel(src)
|
||||
|
||||
/obj/effect/decal/ex_act()
|
||||
if(reagents)
|
||||
for(var/datum/reagent/R in reagents.reagent_list)
|
||||
R.on_ex_act()
|
||||
..()
|
||||
@@ -279,7 +279,7 @@
|
||||
/obj/item/clothing/glasses/thermal = 1,
|
||||
/obj/item/chameleon = 1,
|
||||
/obj/item/reagent_containers/hypospray/autoinjector/stimulants = 1,
|
||||
/obj/item/storage/box/syndie_kit/atmosgasgrenades = 1,
|
||||
/obj/item/storage/box/syndie_kit/atmosn2ogrenades = 1,
|
||||
/obj/item/grenade/plastic/x4 = 1)
|
||||
|
||||
|
||||
|
||||
@@ -23,7 +23,6 @@ var/list/world_uplinks = list()
|
||||
var/used_TC = 0
|
||||
|
||||
var/job = null
|
||||
var/show_descriptions = 0
|
||||
var/temp_category
|
||||
var/uplink_type = "traitor"
|
||||
|
||||
@@ -72,7 +71,10 @@ var/list/world_uplinks = list()
|
||||
if(I.job && I.job.len)
|
||||
if(!(I.job.Find(job)))
|
||||
continue
|
||||
dat += "<A href='byond://?src=[UID()];buy_item=[I.reference];cost=[I.cost]'>[I.name]</A> ([I.cost])<BR>"
|
||||
dat += "<A href='byond://?src=[UID()];buy_item=[I.reference];cost=[I.cost]'>[I.name]</A> ([I.cost])"
|
||||
if(I.hijack_only)
|
||||
dat += " (HIJACK ONLY)"
|
||||
dat += " <BR>"
|
||||
category_items++
|
||||
|
||||
dat += "<A href='byond://?src=[UID()];buy_item=random'>Random Item (??)</A><br>"
|
||||
@@ -95,7 +97,7 @@ var/list/world_uplinks = list()
|
||||
if(I.job && I.job.len)
|
||||
if(!(I.job.Find(job)))
|
||||
continue
|
||||
nano[nano.len]["items"] += list(list("Name" = sanitize(I.name), "Description" = sanitize(I.description()),"Cost" = I.cost, "obj_path" = I.reference))
|
||||
nano[nano.len]["items"] += list(list("Name" = sanitize(I.name), "Description" = sanitize(I.description()),"Cost" = I.cost, "hijack_only" = I.hijack_only, "obj_path" = I.reference))
|
||||
reference[I.reference] = I
|
||||
|
||||
var/datum/nano_item_lists/result = new
|
||||
@@ -231,7 +233,6 @@ var/list/world_uplinks = list()
|
||||
data["welcome"] = welcome
|
||||
data["crystals"] = uses
|
||||
data["menu"] = nanoui_menu
|
||||
data["descriptions"] = show_descriptions
|
||||
if(!nanoui_items)
|
||||
generate_items(user)
|
||||
data["nano_items"] = nanoui_items
|
||||
@@ -266,12 +267,6 @@ var/list/world_uplinks = list()
|
||||
if(href_list["menu"])
|
||||
nanoui_menu = text2num(href_list["menu"])
|
||||
update_nano_data(href_list["id"])
|
||||
if(href_list["menu"])
|
||||
nanoui_menu = text2num(href_list["menu"])
|
||||
update_nano_data(href_list["id"])
|
||||
if(href_list["descriptions"])
|
||||
show_descriptions = !show_descriptions
|
||||
update_nano_data()
|
||||
if(href_list["category"])
|
||||
temp_category = href_list["category"]
|
||||
update_nano_data()
|
||||
|
||||
@@ -1372,7 +1372,8 @@ obj/item/toy/cards/deck/syndicate/black
|
||||
force = 5
|
||||
origin_tech = "combat=1"
|
||||
attack_verb = list("struck", "hit", "bashed")
|
||||
var/bullet_position = 1
|
||||
var/bullets_left = 0
|
||||
var/max_shots = 6
|
||||
|
||||
/obj/item/toy/russian_revolver/suicide_act(mob/user)
|
||||
user.visible_message("<span class='suicide'>[user] quickly loads six bullets into [src]'s cylinder and points it at [user.p_their()] head before pulling the trigger! It looks like [user.p_theyre()] trying to commit suicide.</span>")
|
||||
@@ -1380,46 +1381,70 @@ obj/item/toy/cards/deck/syndicate/black
|
||||
return BRUTELOSS
|
||||
|
||||
/obj/item/toy/russian_revolver/New()
|
||||
spin_cylinder()
|
||||
..()
|
||||
|
||||
spin_cylinder()
|
||||
|
||||
/obj/item/toy/russian_revolver/attack_self(mob/user)
|
||||
if(!bullet_position)
|
||||
user.visible_message("<span class='warning'>[user] loads a bullet into [src]'s cylinder.</span>")
|
||||
bullet_position = 1
|
||||
else
|
||||
if(!bullets_left)
|
||||
user.visible_message("<span class='warning'>[user] loads a bullet into [src]'s cylinder before spinning it.</span>")
|
||||
spin_cylinder()
|
||||
user.visible_message("<span class='warning'>[user] spins the cylinder on [src]!</span>")
|
||||
|
||||
/obj/item/toy/russian_revolver/attack(mob/living/carbon/human/M, mob/living/carbon/human/user)
|
||||
if(M != user) //can't use this on other people
|
||||
return ..()
|
||||
if(!bullet_position)
|
||||
to_chat(user, "<span class='notice'>[src] is empty.</span>")
|
||||
return
|
||||
if(!(user.has_organ("head"))) //For sanity
|
||||
to_chat(user, "<span class='notice'>Playing this game without a head would be classed as cheating.</span>")
|
||||
return
|
||||
user.visible_message("<span class='danger'>[user] points [src] at [user.p_their()] head, ready to pull the trigger!</span>")
|
||||
if(do_after(user, 30, target = user))
|
||||
if(bullet_position > 1)
|
||||
user.visible_message("<span class='danger'>*click*</span>")
|
||||
playsound(src, 'sound/weapons/empty.ogg', 100, 1)
|
||||
bullet_position--
|
||||
return
|
||||
else
|
||||
bullet_position = null
|
||||
playsound(src, 'sound/weapons/gunshots/gunshot_strong.ogg', 50, 1)
|
||||
user.visible_message("<span class='danger'>[src] goes off!</span>")
|
||||
user.apply_damage(200, BRUTE, "head", sharp = 1, used_weapon = "Self-inflicted gunshot wound to the head.")
|
||||
user.death()
|
||||
else
|
||||
user.visible_message("<span class='danger'>[user] lowers [src] from [user.p_their()] head.</span>")
|
||||
user.visible_message("<span class='warning'>[user] spins the cylinder on [src]!</span>")
|
||||
spin_cylinder()
|
||||
|
||||
/obj/item/toy/russian_revolver/attack(mob/M, mob/living/user)
|
||||
return
|
||||
|
||||
/obj/item/toy/russian_revolver/afterattack(atom/target, mob/user, proximity)
|
||||
shoot_gun(user)
|
||||
|
||||
/obj/item/toy/russian_revolver/proc/spin_cylinder()
|
||||
bullet_position = rand(1,6)
|
||||
bullets_left = rand(1, max_shots)
|
||||
|
||||
/obj/item/toy/russian_revolver/proc/post_shot(mob/user)
|
||||
return
|
||||
|
||||
/obj/item/toy/russian_revolver/proc/shoot_gun(mob/living/carbon/human/user)
|
||||
if(bullets_left > 1)
|
||||
bullets_left--
|
||||
user.visible_message("<span class='danger'>*click*</span>")
|
||||
playsound(src, 'sound/weapons/empty.ogg', 100, 1)
|
||||
return FALSE
|
||||
if(bullets_left == 1)
|
||||
bullets_left = 0
|
||||
var/zone = "head"
|
||||
if(!(user.has_organ(zone))) // If they somehow don't have a head.
|
||||
zone = "chest"
|
||||
playsound(src, 'sound/weapons/gunshots/gunshot_strong.ogg', 50, 1)
|
||||
user.visible_message("<span class='danger'>[src] goes off!</span>")
|
||||
post_shot(user)
|
||||
user.apply_damage(300, BRUTE, zone, sharp = TRUE, used_weapon = "Self-inflicted gunshot wound to the [zone].")
|
||||
user.bleed(BLOOD_VOLUME_NORMAL)
|
||||
user.death() // Just in case
|
||||
return TRUE
|
||||
else
|
||||
to_chat(user, "<span class='warning'>[src] needs to be reloaded.</span>")
|
||||
return FALSE
|
||||
|
||||
/obj/item/toy/russian_revolver/trick_revolver
|
||||
name = "\improper .357 revolver"
|
||||
desc = "A suspicious revolver. Uses .357 ammo."
|
||||
icon_state = "revolver"
|
||||
max_shots = 1
|
||||
var/fake_bullets = 0
|
||||
|
||||
/obj/item/toy/russian_revolver/trick_revolver/New()
|
||||
..()
|
||||
fake_bullets = rand(2, 7)
|
||||
|
||||
/obj/item/toy/russian_revolver/trick_revolver/examine(mob/user) //Sneaky sneaky
|
||||
..()
|
||||
to_chat(user, "Has [fake_bullets] round\s remaining.")
|
||||
to_chat(user, "[fake_bullets] of those are live rounds.")
|
||||
|
||||
/obj/item/toy/russian_revolver/trick_revolver/post_shot(user)
|
||||
to_chat(user, "<span class='danger'>[src] did look pretty dodgey!</span>")
|
||||
SEND_SOUND(user, 'sound/misc/sadtrombone.ogg') //HONK
|
||||
/*
|
||||
* Rubber Chainsaw
|
||||
*/
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
light_power = 10
|
||||
light_color = LIGHT_COLOR_WHITE
|
||||
var/light_time = 2
|
||||
var/range = 7
|
||||
|
||||
/obj/item/grenade/flashbang/prime()
|
||||
update_mob()
|
||||
@@ -15,60 +16,65 @@
|
||||
|
||||
set_light(7)
|
||||
|
||||
for(var/mob/living/M in hearers(7, flashbang_turf))
|
||||
bang(get_turf(M), M)
|
||||
do_sparks(rand(5, 9), FALSE, src)
|
||||
playsound(flashbang_turf, 'sound/effects/bang.ogg', 25, 1)
|
||||
bang(flashbang_turf, range, src)
|
||||
|
||||
for(var/obj/structure/blob/B in hear(8,flashbang_turf)) //Blob damage here
|
||||
var/damage = round(30/(get_dist(B,get_turf(src))+1))
|
||||
for(var/obj/structure/blob/B in hear(8, flashbang_turf)) //Blob damage here
|
||||
var/damage = round(30 / (get_dist(B, get_turf(src)) + 1))
|
||||
B.health -= damage
|
||||
B.update_icon()
|
||||
|
||||
spawn(light_time)
|
||||
qdel(src)
|
||||
|
||||
/obj/item/grenade/flashbang/proc/bang(var/turf/T , var/mob/living/M)
|
||||
M.show_message("<span class='warning'>BANG</span>", 2)
|
||||
playsound(loc, 'sound/effects/bang.ogg', 25, 1)
|
||||
/proc/bang(turf/T, atom/A, range = 7, flash = TRUE, bang = TRUE)
|
||||
for(var/mob/living/M in hearers(range, T))
|
||||
if(M.stat == DEAD)
|
||||
continue
|
||||
M.show_message("<span class='warning'>BANG</span>", 2)
|
||||
|
||||
//Checking for protections
|
||||
var/ear_safety = M.check_ear_prot()
|
||||
var/distance = max(1,get_dist(src,T))
|
||||
//Checking for protections
|
||||
var/ear_safety = M.check_ear_prot()
|
||||
var/distance = max(1, get_dist(get_turf(A), get_turf(M)))
|
||||
|
||||
//Flash
|
||||
if(M.weakeyes)
|
||||
M.visible_message("<span class='disarm'><b>[M]</b> screams and collapses!</span>")
|
||||
to_chat(M, "<span class='userdanger'><font size=3>AAAAGH!</font></span>")
|
||||
M.Weaken(15) //hella stunned
|
||||
M.Stun(15)
|
||||
if(ishuman(M))
|
||||
M.emote("scream")
|
||||
var/mob/living/carbon/human/H = M
|
||||
var/obj/item/organ/internal/eyes/E = H.get_int_organ(/obj/item/organ/internal/eyes)
|
||||
if(E)
|
||||
E.receive_damage(8, 1)
|
||||
//Flash
|
||||
if(flash)
|
||||
if(M.weakeyes)
|
||||
M.visible_message("<span class='disarm'><b>[M]</b> screams and collapses!</span>")
|
||||
to_chat(M, "<span class='userdanger'><font size=3>AAAAGH!</font></span>")
|
||||
M.Weaken(15) //hella stunned
|
||||
M.Stun(15)
|
||||
if(ishuman(M))
|
||||
M.emote("scream")
|
||||
var/mob/living/carbon/human/H = M
|
||||
var/obj/item/organ/internal/eyes/E = H.get_int_organ(/obj/item/organ/internal/eyes)
|
||||
if(E)
|
||||
E.receive_damage(8, 1)
|
||||
|
||||
if(M.flash_eyes(affect_silicon = 1))
|
||||
M.Stun(max(10/distance, 3))
|
||||
M.Weaken(max(10/distance, 3))
|
||||
if(M.flash_eyes(affect_silicon = TRUE))
|
||||
M.Stun(max(10 / distance, 3))
|
||||
M.Weaken(max(10 / distance, 3))
|
||||
|
||||
|
||||
//Bang
|
||||
if(get_turf(M) == get_turf(src))//Holding on person or being exactly where lies is significantly more dangerous and voids protection
|
||||
M.Stun(10)
|
||||
M.Weaken(10)
|
||||
if(!ear_safety)
|
||||
M.Stun(max(10/distance, 3))
|
||||
M.Weaken(max(10/distance, 3))
|
||||
M.AdjustEarDamage(rand(0, 5), 15)
|
||||
if(iscarbon(M))
|
||||
var/mob/living/carbon/C = M
|
||||
var/obj/item/organ/internal/ears/ears = C.get_int_organ(/obj/item/organ/internal/ears)
|
||||
if(istype(ears))
|
||||
if(ears.ear_damage >= 15)
|
||||
to_chat(M, "<span class='warning'>Your ears start to ring badly!</span>")
|
||||
if(prob(ears.ear_damage - 5))
|
||||
to_chat(M, "<span class='warning'>You can't hear anything!</span>")
|
||||
M.BecomeDeaf()
|
||||
else
|
||||
if(ears.ear_damage >= 5)
|
||||
to_chat(M, "<span class='warning'>Your ears start to ring!</span>")
|
||||
//Bang
|
||||
if(bang)
|
||||
if(!distance || A.loc == M || A.loc == M.loc) //Holding on person or being exactly where lies is significantly more dangerous and voids protection
|
||||
M.Stun(10)
|
||||
M.Weaken(10)
|
||||
if(!ear_safety)
|
||||
M.Stun(max(10 / distance, 3))
|
||||
M.Weaken(max(10 / distance, 3))
|
||||
M.AdjustEarDamage(rand(0, 5), 15)
|
||||
if(iscarbon(M))
|
||||
var/mob/living/carbon/C = M
|
||||
var/obj/item/organ/internal/ears/ears = C.get_int_organ(/obj/item/organ/internal/ears)
|
||||
if(istype(ears))
|
||||
if(ears.ear_damage >= 15)
|
||||
to_chat(M, "<span class='warning'>Your ears start to ring badly!</span>")
|
||||
if(prob(ears.ear_damage - 5))
|
||||
to_chat(M, "<span class='warning'>You can't hear anything!</span>")
|
||||
M.BecomeDeaf()
|
||||
else
|
||||
if(ears.ear_damage >= 5)
|
||||
to_chat(M, "<span class='warning'>Your ears start to ring!</span>")
|
||||
@@ -262,13 +262,24 @@
|
||||
new /obj/item/spellbook/oneuse/mime/greaterwall(src)
|
||||
new /obj/item/spellbook/oneuse/mime/fingergun(src)
|
||||
|
||||
/obj/item/storage/box/syndie_kit/atmosgasgrenades
|
||||
name = "Atmos Grenades"
|
||||
|
||||
/obj/item/storage/box/syndie_kit/atmosgasgrenades/New()
|
||||
/obj/item/storage/box/syndie_kit/atmosn2ogrenades
|
||||
name = "Atmos N2O Grenades"
|
||||
|
||||
/obj/item/storage/box/syndie_kit/atmosn2ogrenades/New()
|
||||
..()
|
||||
new /obj/item/grenade/clusterbuster/n2o(src)
|
||||
new /obj/item/grenade/clusterbuster/n2o(src)
|
||||
|
||||
|
||||
/obj/item/storage/box/syndie_kit/atmosfiregrenades
|
||||
name = "Plasma Fire Grenades"
|
||||
|
||||
/obj/item/storage/box/syndie_kit/atmosfiregrenades/New()
|
||||
..()
|
||||
new /obj/item/grenade/clusterbuster/plasma(src)
|
||||
new /obj/item/grenade/clusterbuster/n2o(src)
|
||||
new /obj/item/grenade/clusterbuster/plasma(src)
|
||||
|
||||
|
||||
/obj/item/storage/box/syndie_kit/missionary_set
|
||||
name = "Missionary Starter Kit"
|
||||
|
||||
@@ -278,9 +278,11 @@
|
||||
if(src == user.loc)
|
||||
to_chat(user, "<span class='notice'>You can not [welded?"unweld":"weld"] the locker from inside.</span>")
|
||||
return
|
||||
if(!WT.remove_fuel(0,user))
|
||||
if(!WT.remove_fuel(0, user))
|
||||
to_chat(user, "<span class='notice'>You need more welding fuel to complete this task.</span>")
|
||||
return
|
||||
if(!do_after_once(user, 15, target = src))
|
||||
return
|
||||
welded = !welded
|
||||
update_icon()
|
||||
for(var/mob/M in viewers(src))
|
||||
|
||||
Reference in New Issue
Block a user