This commit is contained in:
Ghommie
2019-12-23 05:02:31 +01:00
168 changed files with 3390 additions and 1416 deletions
@@ -72,6 +72,11 @@
desc = "It's still good. Four second rule!"
icon_state = "flour"
/obj/effect/decal/cleanable/greenglow/ecto
name = "ectoplasmic puddle"
desc = "You know who to call."
light_power = 2
/obj/effect/decal/cleanable/greenglow
name = "glowing goo"
desc = "Jeez. I hope that's not for lunch."
@@ -165,7 +165,7 @@
/obj/item/organ/heart/gland/chem = 5,
/obj/item/organ/heart/gland/mindshock = 5,
/obj/item/organ/heart/gland/plasma = 7,
/obj/item/organ/heart/gland/pop = 5,
/obj/item/organ/heart/gland/transform = 5,
/obj/item/organ/heart/gland/slime = 4,
/obj/item/organ/heart/gland/spiderman = 5,
/obj/item/organ/heart/gland/ventcrawling = 1,
@@ -349,6 +349,10 @@
icon_state = "impact_laser_purple"
duration = 4
/obj/effect/temp_visual/impact_effect/shrink
icon_state = "m_shield"
duration = 10
/obj/effect/temp_visual/impact_effect/ion
icon_state = "shieldsparkles"
duration = 6
@@ -665,6 +665,13 @@
name = "Booze Dispenser (Machine Board)"
build_path = /obj/machinery/chem_dispenser/drinks/beer
/obj/item/circuitboard/machine/chem_dispenser/abductor
name = "Reagent Synthetizer (Abductor Machine Board)"
icon_state = "abductor_mod"
build_path = /obj/machinery/chem_dispenser/abductor
def_components = list(/obj/item/stock_parts/cell = /obj/item/stock_parts/cell/high)
needs_anchored = FALSE
/obj/item/circuitboard/machine/smoke_machine
name = "Smoke Machine (Machine Board)"
build_path = /obj/machinery/smoke_machine
+1 -1
View File
@@ -76,7 +76,7 @@ GLOBAL_LIST_EMPTY(possible_gifts)
/obj/item/clothing/suit/poncho/red,
/obj/item/clothing/suit/snowman,
/obj/item/clothing/head/snowman,
/obj/item/trash/coal)
/obj/item/stack/sheet/mineral/coal)
gift_type_list += subtypesof(/obj/item/clothing/head/collectable)
gift_type_list += subtypesof(/obj/item/toy) - (((typesof(/obj/item/toy/cards) - /obj/item/toy/cards/deck) + /obj/item/toy/figure + /obj/item/toy/ammo)) //All toys, except for abstract types and syndicate cards.
+70 -88
View File
@@ -11,95 +11,42 @@
resistance_flags = FLAMMABLE
max_integrity = 40
novariants = FALSE
var/heal_brute = 0
var/heal_burn = 0
var/stop_bleeding = 0
item_flags = NOBLUDGEON
var/self_delay = 50
/obj/item/stack/medical/attack(mob/living/M, mob/user)
if(M.stat == DEAD && !stop_bleeding)
var/t_him = "it"
if(M.gender == MALE)
t_him = "him"
else if(M.gender == FEMALE)
t_him = "her"
to_chat(user, "<span class='danger'>\The [M] is dead, you cannot help [t_him]!</span>")
. = ..()
if(!M.can_inject(user, TRUE))
return
if(!iscarbon(M) && !isanimal(M))
to_chat(user, "<span class='danger'>You don't know how to apply \the [src] to [M]!</span>")
return 1
var/obj/item/bodypart/affecting
if(iscarbon(M))
var/mob/living/carbon/C = M
affecting = C.get_bodypart(check_zone(user.zone_selected))
if(!affecting) //Missing limb?
to_chat(user, "<span class='warning'>[C] doesn't have \a [parse_zone(user.zone_selected)]!</span>")
if(M == user)
user.visible_message("<span class='notice'>[user] starts to apply \the [src] on [user.p_them()]self...</span>", "<span class='notice'>You begin applying \the [src] on yourself...</span>")
if(!do_mob(user, M, self_delay, extra_checks=CALLBACK(M, /mob/living/proc/can_inject, user, TRUE)))
return
if(ishuman(C))
var/mob/living/carbon/human/H = C
if(stop_bleeding)
if(H.bleedsuppress)
to_chat(user, "<span class='warning'>[H]'s bleeding is already bandaged!</span>")
return
else if(!H.bleed_rate)
to_chat(user, "<span class='warning'>[H] isn't bleeding!</span>")
return
if(heal(M, user))
log_combat(user, M, "healed", src.name)
use(1)
if(isliving(M))
if(!M.can_inject(user, 1))
return
/obj/item/stack/medical/proc/heal(mob/living/M, mob/user)
return
if(user)
if (M != user)
if (isanimal(M))
var/mob/living/simple_animal/critter = M
if (!(critter.healable))
to_chat(user, "<span class='notice'> You cannot use [src] on [M]!</span>")
return
else if (critter.health == critter.maxHealth)
to_chat(user, "<span class='notice'> [M] is at full health.</span>")
return
else if(src.heal_brute < 1)
to_chat(user, "<span class='notice'> [src] won't help [M] at all.</span>")
return
user.visible_message("<span class='green'>[user] applies [src] on [M].</span>", "<span class='green'>You apply [src] on [M].</span>")
else
var/t_himself = "itself"
if(user.gender == MALE)
t_himself = "himself"
else if(user.gender == FEMALE)
t_himself = "herself"
user.visible_message("<span class='notice'>[user] starts to apply [src] on [t_himself]...</span>", "<span class='notice'>You begin applying [src] on yourself...</span>")
if(!do_mob(user, M, self_delay, extra_checks=CALLBACK(M, /mob/living/proc/can_inject,user,1)))
return
user.visible_message("<span class='green'>[user] applies [src] on [t_himself].</span>", "<span class='green'>You apply [src] on yourself.</span>")
if(iscarbon(M))
var/mob/living/carbon/C = M
affecting = C.get_bodypart(check_zone(user.zone_selected))
if(!affecting) //Missing limb?
to_chat(user, "<span class='warning'>[C] doesn't have \a [parse_zone(user.zone_selected)]!</span>")
return
if(ishuman(C))
var/mob/living/carbon/human/H = C
if(stop_bleeding)
if(!H.bleedsuppress) //so you can't stack bleed suppression
H.suppress_bloodloss(stop_bleeding)
if(affecting.status == BODYPART_ORGANIC) //Limb must be organic to be healed - RR
if(affecting.heal_damage(heal_brute, heal_burn))
/obj/item/stack/medical/proc/heal_carbon(mob/living/carbon/C, mob/user, brute, burn)
var/obj/item/bodypart/affecting = C.get_bodypart(check_zone(user.zone_selected))
if(!affecting) //Missing limb?
to_chat(user, "<span class='warning'>[C] doesn't have \a [parse_zone(user.zone_selected)]!</span>")
return
if(affecting.status == BODYPART_ORGANIC) //Limb must be organic to be healed - RR
if(affecting.brute_dam && brute || affecting.burn_dam && burn)
user.visible_message("<span class='green'>[user] applies \the [src] on [C]'s [affecting.name].</span>", "<span class='green'>You apply \the [src] on [C]'s [affecting.name].</span>")
if(affecting.heal_damage(brute, burn))
C.update_damage_overlays()
else
to_chat(user, "<span class='notice'>Medicine won't work on a robotic limb!</span>")
else
M.heal_bodypart_damage((src.heal_brute/2), (src.heal_burn/2))
use(1)
return TRUE
to_chat(user, "<span class='notice'>[C]'s [affecting.name] can not be healed with \the [src].</span>")
return
to_chat(user, "<span class='notice'>\The [src] won't work on a robotic limb!</span>")
/obj/item/stack/medical/get_belt_overlay()
return mutable_appearance('icons/obj/clothing/belt_overlays.dmi', "pouch")
/obj/item/stack/medical/bruise_pack
name = "bruise pack"
@@ -108,27 +55,56 @@
icon_state = "brutepack"
lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi'
heal_brute = 40
var/heal_brute = 25
self_delay = 20
max_amount = 12
grind_results = list("styptic_powder" = 10)
/obj/item/stack/medical/bruise_pack/heal(mob/living/M, mob/user)
if(M.stat == DEAD)
to_chat(user, "<span class='notice'> [M] is dead. You can not help [M.p_them()]!</span>")
return
if(isanimal(M))
var/mob/living/simple_animal/critter = M
if (!(critter.healable))
to_chat(user, "<span class='notice'> You cannot use \the [src] on [M]!</span>")
return FALSE
else if (critter.health == critter.maxHealth)
to_chat(user, "<span class='notice'> [M] is at full health.</span>")
return FALSE
user.visible_message("<span class='green'>[user] applies \the [src] on [M].</span>", "<span class='green'>You apply \the [src] on [M].</span>")
M.heal_bodypart_damage((heal_brute/2))
return TRUE
if(iscarbon(M))
return heal_carbon(M, user, heal_brute, 0)
to_chat(user, "<span class='notice'>You can't heal [M] with the \the [src]!</span>")
/obj/item/stack/medical/bruise_pack/suicide_act(mob/user)
user.visible_message("<span class='suicide'>[user] is bludgeoning [user.p_them()]self with [src]! It looks like [user.p_theyre()] trying to commit suicide!</span>")
return (BRUTELOSS)
/obj/item/stack/medical/gauze
name = "medical gauze"
desc = "A roll of elastic cloth that is extremely effective at stopping bleeding, but does not heal wounds."
desc = "A roll of elastic cloth that is extremely effective at stopping bleeding, heals minor wounds."
gender = PLURAL
singular_name = "medical gauze"
icon_state = "gauze"
stop_bleeding = 1800
self_delay = 20
var/stop_bleeding = 1800
var/heal_brute = 5
self_delay = 10
max_amount = 12
/obj/item/stack/medical/gauze/heal(mob/living/M, mob/user)
if(ishuman(M))
var/mob/living/carbon/human/H = M
if(!H.bleedsuppress && H.bleed_rate) //so you can't stack bleed suppression
H.suppress_bloodloss(stop_bleeding)
to_chat(user, "<span class='notice'>You stop the bleeding of [M]!</span>")
return TRUE
to_chat(user, "<span class='notice'>You can not use \the [src] on [M]!</span>")
/obj/item/stack/medical/gauze/attackby(obj/item/I, mob/user, params)
if(istype(I, /obj/item/wirecutters) || I.get_sharpness())
if(I.tool_behaviour == TOOL_WIRECUTTER || I.get_sharpness())
if(get_amount() < 2)
to_chat(user, "<span class='warning'>You need at least two gauzes to do this!</span>")
return
@@ -163,13 +139,19 @@
icon_state = "ointment"
lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi'
heal_burn = 40
var/heal_burn = 25
self_delay = 20
max_amount = 12
grind_results = list("silver_sulfadiazine" = 10)
/obj/item/stack/medical/ointment/heal(mob/living/M, mob/user)
if(M.stat == DEAD)
to_chat(user, "<span class='notice'> [M] is dead. You can not help [M.p_them()]!</span>")
return
if(iscarbon(M))
return heal_carbon(M, user, 0, heal_burn)
to_chat(user, "<span class='notice'>You can't heal [M] with the \the [src]!</span>")
/obj/item/stack/medical/ointment/suicide_act(mob/living/user)
user.visible_message("<span class='suicide'>[user] is squeezing \the [src] into [user.p_their()] mouth! [user.p_do(TRUE)]n't [user.p_they()] know that stuff is toxic?</span>")
return TOXLOSS
/obj/item/stack/medical/get_belt_overlay()
return mutable_appearance('icons/obj/clothing/belt_overlays.dmi', "pouch")
@@ -4,7 +4,6 @@ Mineral Sheets
- Sandstone
- Sandbags
- Diamond
- Snow
- Uranium
- Plasma
- Gold
@@ -15,8 +14,9 @@ Mineral Sheets
Others:
- Adamantine
- Mythril
- Enriched Uranium
- Snow
- Abductor
- Coal
*/
/obj/item/stack/sheet/mineral/Initialize(mapload)
@@ -410,3 +410,36 @@ GLOBAL_LIST_INIT(abductor_recipes, list ( \
/obj/item/stack/sheet/mineral/abductor/Initialize(mapload, new_amount, merge = TRUE)
recipes = GLOB.abductor_recipes
. = ..()
/*
* Coal
*/
/obj/item/stack/sheet/mineral/coal
name = "coal"
desc = "Someone's gotten on the naughty list."
icon = 'icons/obj/mining.dmi'
icon_state = "slag"
singular_name = "coal lump"
merge_type = /obj/item/stack/sheet/mineral/coal
grind_results = list("carbon" = 20)
/obj/item/stack/sheet/mineral/coal/attackby(obj/item/W, mob/user, params)
if(W.get_temperature() > 300)//If the temperature of the object is over 300, then ignite
var/turf/T = get_turf(src)
message_admins("Coal ignited by [ADMIN_LOOKUPFLW(user)] in [ADMIN_VERBOSEJMP(T)]")
log_game("Coal ignited by [key_name(user)] in [AREACOORD(T)]")
fire_act(W.get_temperature())
return TRUE
else
return ..()
/obj/item/stack/sheet/mineral/coal/fire_act(exposed_temperature, exposed_volume)
atmos_spawn_air("co2=[amount*10];TEMP=[exposed_temperature]")
qdel(src)
/obj/item/stack/sheet/mineral/coal/five
amount = 5
/obj/item/stack/sheet/mineral/coal/ten
amount = 10
+5 -12
View File
@@ -72,17 +72,10 @@
resistance_flags = NONE
grind_results = list("aluminium" = 10)
/obj/item/trash/boritos
name = "boritos bag"
icon_state = "boritos"
grind_results = list("aluminium" = 1) //from the mylar bag
/obj/item/trash/attack(mob/M, mob/living/user)
return
/obj/item/trash/coal
name = "lump of coal"
icon = 'icons/obj/mining.dmi'
icon_state = "slag"
desc = "Someone's gotten on the naughty list."
grind_results = list("carbon" = 20)
/obj/item/trash/coal/burn()
visible_message("[src] fuses into a diamond! Someone wasn't so naughty after all...")
new /obj/item/stack/ore/diamond(loc)
qdel(src)