mirror of
https://github.com/VOREStation/VOREStation.git
synced 2026-07-14 08:35:39 +01:00
Merge branch 'master' of https://github.com/PolarisSS13/Polaris into polaris-sync
# Conflicts: # code/modules/client/preference_setup/general/03_body.dm # code/modules/mob/new_player/sprite_accessories.dm # html/changelogs/.all_changelog.yml # icons/mob/human_races/markings.dmi # vorestation.dme
This commit is contained in:
@@ -226,7 +226,7 @@
|
||||
delete_me = 1
|
||||
|
||||
/obj/effect/landmark/costume/cutewitch/New()
|
||||
new /obj/item/clothing/under/dress/sundress(src.loc)
|
||||
new /obj/item/clothing/under/sundress(src.loc)
|
||||
new /obj/item/clothing/head/witchwig(src.loc)
|
||||
new /obj/item/weapon/staff/broom(src.loc)
|
||||
delete_me = 1
|
||||
|
||||
@@ -44,6 +44,7 @@
|
||||
var/slowdown = 0 // How much clothing is slowing you down. Negative values speeds you up
|
||||
var/canremove = 1 //Mostly for Ninja code at this point but basically will not allow the item to be removed if set to 0. /N
|
||||
var/list/armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
|
||||
var/list/armorsoak = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 0, rad = 0)
|
||||
var/list/allowed = null //suit storage stuff.
|
||||
var/obj/item/device/uplink/hidden/hidden_uplink = null // All items can have an uplink hidden inside, just remember to add the triggers.
|
||||
var/zoomdevicename = null //name used for message when binoculars/scope is used
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
name = "inteliCard"
|
||||
icon = 'icons/obj/pda.dmi'
|
||||
icon_state = "aicard" // aicard-full
|
||||
item_state = "electronic"
|
||||
item_state = "aicard"
|
||||
w_class = ITEMSIZE_SMALL
|
||||
slot_flags = SLOT_BELT
|
||||
show_messages = 0
|
||||
|
||||
@@ -8,6 +8,8 @@
|
||||
|
||||
var/state //0 off, 1 open, 2 working, 3 dead
|
||||
var/uses = 2 //Calculates initial uses based on starting cell size
|
||||
var/use_on_synthetic = 0 //If 1, this is only useful on FBPs, if 0, this is only useful on fleshies
|
||||
var/pad_name = "defib pads" //Just the name given for some cosmetic things
|
||||
var/chance = 75 //Percent chance of working
|
||||
var/charge_cost //Set in New() based on uses
|
||||
var/obj/item/weapon/cell/cell //The size is mostly irrelevant, see 'uses'
|
||||
@@ -32,13 +34,31 @@
|
||||
if(istype(onto) && Adjacent(usr) && !usr.restrained() && !usr.stat)
|
||||
var/mob/living/carbon/human/user = usr
|
||||
//<--Feel free to code clothing checks right here
|
||||
user.visible_message("<span class='warning'>[user] begins applying defib pads to [onto].</span>",
|
||||
"<span class='warning'>You begin applying defib pads to [onto].</span>")
|
||||
if(can_defib(onto))
|
||||
user.visible_message("<span class='warning'>[user] begins applying [pad_name] to [onto].</span>",
|
||||
"<span class='warning'>You begin applying [pad_name] to [onto].</span>")
|
||||
if(do_after(user, 100, onto))
|
||||
patient = onto
|
||||
statechange(1,patient)
|
||||
user.visible_message("<span class='warning'>[user] applies defib pads to [onto].</span>",
|
||||
"<span class='warning'>You finish applying defib pads to [onto].</span>")
|
||||
user.visible_message("<span class='warning'>[user] applies [pad_name] to [onto].</span>",
|
||||
"<span class='warning'>You finish applying [pad_name] to [onto].</span>")
|
||||
|
||||
|
||||
//can_defib() check is where all of the qualifying conditions should go
|
||||
//Could probably toss in checks here for damage, organs, etc, but for now I'll leave it as just this
|
||||
/obj/item/device/defib_kit/proc/can_defib(var/mob/living/carbon/human/target)
|
||||
var/mob/living/carbon/human/user = usr
|
||||
if(use_on_synthetic && !target.isSynthetic())
|
||||
to_chat(user, "[src] isn't designed for organics!")
|
||||
return 0
|
||||
else if(!use_on_synthetic && target.isSynthetic())
|
||||
to_chat(user, "[src] isn't designed for synthetics!")
|
||||
return 0
|
||||
else if(!target.isSynthetic() && ((world.time - target.timeofdeath) > (10 MINUTES)))//Can only revive organics within a few minutes
|
||||
to_chat(user, "There is no spark of life in [target.name], they've been dead too long to revive this way.")
|
||||
return 0
|
||||
return 1
|
||||
|
||||
|
||||
/obj/item/device/defib_kit/attackby(var/obj/item/A as obj, mob/living/user as mob)
|
||||
..()
|
||||
@@ -94,7 +114,7 @@
|
||||
|
||||
//Patient moved too far
|
||||
if(patient && !(get_dist(src,patient) <= 1)) //You separated the kit and pads too far
|
||||
audible_message("<span class='warning'>There's a clatter as the defib pads are yanked off of [patient].</span>")
|
||||
audible_message("<span class='warning'>There is a clatter as the [pad_name] are yanked off of [patient].</span>")
|
||||
statechange(0)
|
||||
patient = null
|
||||
return
|
||||
@@ -111,7 +131,7 @@
|
||||
patient.visible_message("<span class='warning'>[patient] convulses!</span>")
|
||||
playsound(src.loc, 'sound/effects/sparks2.ogg', 75, 1)
|
||||
//Actual rezzing code
|
||||
if(prob(chance) && ((world.time - patient.timeofdeath) < (10 MINUTES))) //Can only revive within a few minutes
|
||||
if(prob(chance))
|
||||
if(!patient.client && patient.mind) //Don't force the dead person to come back if they don't want to.
|
||||
for(var/mob/observer/dead/ghost in player_list)
|
||||
if(ghost.mind == patient.mind)
|
||||
@@ -155,3 +175,10 @@
|
||||
break
|
||||
|
||||
return
|
||||
|
||||
/obj/item/device/defib_kit/jumper_kit
|
||||
name = "jumper cable kit"
|
||||
desc = "This Morpheus-branded FBP defib kit is a semi-automated model. Apply cables, step back, wait."
|
||||
icon_state = "jumper_kit"
|
||||
use_on_synthetic = 1
|
||||
pad_name = "jumper cables"
|
||||
|
||||
@@ -181,6 +181,38 @@
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/item/device/flashlight/MouseDrop(obj/over_object as obj)
|
||||
if(!canremove)
|
||||
return
|
||||
|
||||
if (ishuman(usr) || issmall(usr)) //so monkeys can take off their backpacks -- Urist
|
||||
|
||||
if (istype(usr.loc,/obj/mecha)) // stops inventory actions in a mech. why?
|
||||
return
|
||||
|
||||
if (!( istype(over_object, /obj/screen) ))
|
||||
return ..()
|
||||
|
||||
//makes sure that the thing is equipped, so that we can't drag it into our hand from miles away.
|
||||
//there's got to be a better way of doing this.
|
||||
if (!(src.loc == usr) || (src.loc && src.loc.loc == usr))
|
||||
return
|
||||
|
||||
if (( usr.restrained() ) || ( usr.stat ))
|
||||
return
|
||||
|
||||
if ((src.loc == usr) && !(istype(over_object, /obj/screen)) && !usr.unEquip(src))
|
||||
return
|
||||
|
||||
switch(over_object.name)
|
||||
if("r_hand")
|
||||
usr.u_equip(src)
|
||||
usr.put_in_r_hand(src)
|
||||
if("l_hand")
|
||||
usr.u_equip(src)
|
||||
usr.put_in_l_hand(src)
|
||||
src.add_fingerprint(usr)
|
||||
|
||||
/obj/item/device/flashlight/attackby(obj/item/weapon/W, mob/user as mob)
|
||||
if(power_use)
|
||||
if(istype(W, /obj/item/weapon/cell))
|
||||
@@ -210,6 +242,26 @@
|
||||
w_class = ITEMSIZE_TINY
|
||||
power_use = 0
|
||||
|
||||
/obj/item/device/flashlight/color //Default color is blue, just roll with it.
|
||||
name = "blue flashlight"
|
||||
desc = "A hand-held emergency light. This one is blue."
|
||||
icon_state = "flashlight_blue"
|
||||
|
||||
/obj/item/device/flashlight/color/red
|
||||
name = "red flashlight"
|
||||
desc = "A hand-held emergency light. This one is red."
|
||||
icon_state = "flashlight_red"
|
||||
|
||||
/obj/item/device/flashlight/color/orange
|
||||
name = "orange flashlight"
|
||||
desc = "A hand-held emergency light. This one is orange."
|
||||
icon_state = "flashlight_orange"
|
||||
|
||||
/obj/item/device/flashlight/color/yellow
|
||||
name = "yellow flashlight"
|
||||
desc = "A hand-held emergency light. This one is yellow."
|
||||
icon_state = "flashlight_yellow"
|
||||
|
||||
/obj/item/device/flashlight/maglight
|
||||
name = "maglight"
|
||||
desc = "A very, very heavy duty flashlight."
|
||||
|
||||
@@ -19,6 +19,12 @@
|
||||
origin_tech = list(TECH_ILLEGAL = 3)
|
||||
syndie = 1//Signifies that it de-crypts Syndicate transmissions
|
||||
|
||||
/obj/item/device/encryptionkey/raider
|
||||
icon_state = "cypherkey"
|
||||
channels = list("Raider" = 1)
|
||||
origin_tech = list(TECH_ILLEGAL = 2)
|
||||
syndie = 1
|
||||
|
||||
/obj/item/device/encryptionkey/binary
|
||||
icon_state = "cypherkey"
|
||||
translate_binary = 1
|
||||
|
||||
@@ -75,6 +75,15 @@
|
||||
syndie = 1
|
||||
ks1type = /obj/item/device/encryptionkey/syndicate
|
||||
|
||||
/obj/item/device/radio/headset/raider
|
||||
origin_tech = list(TECH_ILLEGAL = 2)
|
||||
syndie = 1
|
||||
ks1type = /obj/item/device/encryptionkey/raider
|
||||
|
||||
/obj/item/device/radio/headset/raider/initialize()
|
||||
..()
|
||||
set_frequency(RAID_FREQ)
|
||||
|
||||
/obj/item/device/radio/headset/binary
|
||||
origin_tech = list(TECH_ILLEGAL = 3)
|
||||
ks1type = /obj/item/device/encryptionkey/binary
|
||||
@@ -289,6 +298,7 @@
|
||||
desc = "The headset of the boss's boss."
|
||||
icon_state = "com_headset"
|
||||
item_state = "headset"
|
||||
centComm = 1
|
||||
// freerange = 1
|
||||
ks2type = /obj/item/device/encryptionkey/ert
|
||||
|
||||
|
||||
@@ -27,6 +27,8 @@
|
||||
/obj/item/device/radio/intercom/specops
|
||||
name = "\improper Spec Ops intercom"
|
||||
frequency = ERT_FREQ
|
||||
subspace_transmission = 1
|
||||
centComm = 1
|
||||
|
||||
/obj/item/device/radio/intercom/department
|
||||
canhear_range = 5
|
||||
@@ -81,6 +83,17 @@
|
||||
..()
|
||||
internal_channels[num2text(SYND_FREQ)] = list(access_syndicate)
|
||||
|
||||
/obj/item/device/radio/intercom/raider
|
||||
name = "illicit intercom"
|
||||
desc = "Pirate radio, but not in the usual sense of the word."
|
||||
frequency = RAID_FREQ
|
||||
subspace_transmission = 1
|
||||
syndie = 1
|
||||
|
||||
/obj/item/device/radio/intercom/raider/New()
|
||||
..()
|
||||
internal_channels[num2text(RAID_FREQ)] = list(access_syndicate)
|
||||
|
||||
/obj/item/device/radio/intercom/Destroy()
|
||||
processing_objects -= src
|
||||
..()
|
||||
|
||||
@@ -40,6 +40,7 @@ var/global/list/default_medbay_channels = list(
|
||||
var/list/channels = list() //see communications.dm for full list. First channel is a "default" for :h
|
||||
var/subspace_transmission = 0
|
||||
var/syndie = 0//Holder to see if it's a syndicate encrypted radio
|
||||
var/centComm = 0//Holder to see if it's a CentComm encrypted radio
|
||||
flags = CONDUCT
|
||||
slot_flags = SLOT_BELT
|
||||
throw_speed = 2
|
||||
@@ -508,6 +509,9 @@ var/global/list/default_medbay_channels = list(
|
||||
if(freq in ANTAG_FREQS)
|
||||
if(!(src.syndie))//Checks to see if it's allowed on that frequency, based on the encryption keys
|
||||
return -1
|
||||
if(freq in CENT_FREQS)
|
||||
if(!(src.centComm))//Checks to see if it's allowed on that frequency, based on the encryption keys
|
||||
return -1
|
||||
if (!on)
|
||||
return -1
|
||||
if (!freq) //recieved on main frequency
|
||||
|
||||
@@ -4,9 +4,9 @@
|
||||
name = "\improper T-ray scanner"
|
||||
desc = "A terahertz-ray emitter and scanner used to detect underfloor objects such as cables and pipes."
|
||||
icon_state = "t-ray0"
|
||||
item_state = "t-ray"
|
||||
slot_flags = SLOT_BELT
|
||||
w_class = ITEMSIZE_SMALL
|
||||
item_state = "electronic"
|
||||
matter = list(DEFAULT_WALL_MATERIAL = 150)
|
||||
origin_tech = list(TECH_MAGNET = 1, TECH_ENGINEERING = 1)
|
||||
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
name = "robotic module reset board"
|
||||
desc = "Used to reset a cyborg's module. Destroys any other upgrades applied to the robot."
|
||||
icon_state = "cyborg_upgrade1"
|
||||
item_state = "cyborg_upgrade"
|
||||
require_module = 1
|
||||
|
||||
/obj/item/borg/upgrade/reset/action(var/mob/living/silicon/robot/R)
|
||||
@@ -43,6 +44,7 @@
|
||||
name = "robot reclassification board"
|
||||
desc = "Used to rename a cyborg."
|
||||
icon_state = "cyborg_upgrade1"
|
||||
item_state = "cyborg_upgrade"
|
||||
var/heldname = "default name"
|
||||
|
||||
/obj/item/borg/upgrade/rename/attack_self(mob/user as mob)
|
||||
@@ -61,6 +63,7 @@
|
||||
name = "robot emergency restart module"
|
||||
desc = "Used to force a restart of a disabled-but-repaired robot, bringing it back online."
|
||||
icon_state = "cyborg_upgrade1"
|
||||
item_state = "cyborg_upgrade"
|
||||
|
||||
|
||||
/obj/item/borg/upgrade/restart/action(var/mob/living/silicon/robot/R)
|
||||
@@ -84,6 +87,7 @@
|
||||
name = "robotic VTEC Module"
|
||||
desc = "Used to kick in a robot's VTEC systems, increasing their speed."
|
||||
icon_state = "cyborg_upgrade2"
|
||||
item_state = "cyborg_upgrade"
|
||||
require_module = 1
|
||||
|
||||
/obj/item/borg/upgrade/vtec/action(var/mob/living/silicon/robot/R)
|
||||
@@ -100,6 +104,7 @@
|
||||
name = "robotic Rapid Taser Cooling Module"
|
||||
desc = "Used to cool a mounted taser, increasing the potential current in it and thus its recharge rate."
|
||||
icon_state = "cyborg_upgrade3"
|
||||
item_state = "cyborg_upgrade"
|
||||
require_module = 1
|
||||
|
||||
|
||||
@@ -134,6 +139,7 @@
|
||||
name = "mining robot jetpack"
|
||||
desc = "A carbon dioxide jetpack suitable for low-gravity mining operations."
|
||||
icon_state = "cyborg_upgrade3"
|
||||
item_state = "cyborg_upgrade"
|
||||
require_module = 1
|
||||
|
||||
/obj/item/borg/upgrade/jetpack/action(var/mob/living/silicon/robot/R)
|
||||
@@ -155,6 +161,7 @@
|
||||
name = "illegal equipment module"
|
||||
desc = "Unlocks the hidden, deadlier functions of a robot"
|
||||
icon_state = "cyborg_upgrade3"
|
||||
item_state = "cyborg_upgrade"
|
||||
require_module = 1
|
||||
|
||||
/obj/item/borg/upgrade/syndicate/action(var/mob/living/silicon/robot/R)
|
||||
|
||||
@@ -87,6 +87,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
var/icon_on
|
||||
var/type_butt = null
|
||||
var/chem_volume = 0
|
||||
var/max_smoketime = 0 //Related to sprites
|
||||
var/smoketime = 0
|
||||
var/is_pipe = 0 //Prevents a runtime with pipes
|
||||
var/matchmes = "USER lights NAME with FLAME"
|
||||
@@ -100,8 +101,12 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
..()
|
||||
flags |= NOREACT // so it doesn't react until you light it
|
||||
create_reagents(chem_volume) // making the cigarrete a chemical holder with a maximum volume of 15
|
||||
if(smoketime && !max_smoketime)
|
||||
max_smoketime = smoketime
|
||||
|
||||
/obj/item/clothing/mask/smokable/proc/smoke(amount)
|
||||
if(smoketime > max_smoketime)
|
||||
smoketime = max_smoketime
|
||||
smoketime -= amount
|
||||
if(reagents && reagents.total_volume) // check if it has any reagents at all
|
||||
if(ishuman(loc))
|
||||
@@ -120,11 +125,29 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
if(location)
|
||||
location.hotspot_expose(700, 5)
|
||||
|
||||
/obj/item/clothing/mask/smokable/update_icon()
|
||||
if(lit)
|
||||
icon_state = "[initial(icon_state)]_on"
|
||||
item_state = "[initial(item_state)]_on"
|
||||
else if(smoketime < max_smoketime)
|
||||
if(is_pipe)
|
||||
icon_state = initial(icon_state)
|
||||
item_state = initial(item_state)
|
||||
else
|
||||
icon_state = "[initial(icon_state)]_burnt"
|
||||
item_state = "[initial(item_state)]_burnt"
|
||||
if(ismob(loc))
|
||||
var/mob/living/M = loc
|
||||
M.update_inv_wear_mask(0)
|
||||
M.update_inv_l_hand(0)
|
||||
M.update_inv_r_hand(1)
|
||||
..()
|
||||
|
||||
/obj/item/clothing/mask/smokable/examine(mob/user)
|
||||
..()
|
||||
if(is_pipe)
|
||||
return
|
||||
var/smoke_percent = round((smoketime / initial(smoketime)) * 100)
|
||||
var/smoke_percent = round((smoketime / max_smoketime) * 100)
|
||||
switch(smoke_percent)
|
||||
if(90 to INFINITY)
|
||||
user << "[src] is still fresh."
|
||||
@@ -156,15 +179,9 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
return
|
||||
flags &= ~NOREACT // allowing reagents to react after being lit
|
||||
reagents.handle_reactions()
|
||||
icon_state = icon_on
|
||||
item_state = icon_on
|
||||
if(ismob(loc))
|
||||
var/mob/living/M = loc
|
||||
M.update_inv_wear_mask(0)
|
||||
M.update_inv_l_hand(0)
|
||||
M.update_inv_r_hand(1)
|
||||
var/turf/T = get_turf(src)
|
||||
T.visible_message(flavor_text)
|
||||
update_icon()
|
||||
set_light(2, 0.25, "#E38F46")
|
||||
processing_objects.Add(src)
|
||||
|
||||
@@ -205,14 +222,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
/obj/item/clothing/mask/smokable/proc/quench()
|
||||
lit = 0
|
||||
processing_objects.Remove(src)
|
||||
icon_state = initial(icon_state)
|
||||
item_state = initial(item_state)
|
||||
|
||||
if(ismob(loc))
|
||||
var/mob/living/M = loc
|
||||
M.update_inv_wear_mask(0)
|
||||
M.update_inv_l_hand(0)
|
||||
M.update_inv_r_hand(1)
|
||||
update_icon()
|
||||
|
||||
/obj/item/clothing/mask/smokable/attack(mob/living/carbon/human/H, mob/user, def_zone)
|
||||
if(lit && H == user && istype(H))
|
||||
@@ -259,15 +269,15 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
/obj/item/clothing/mask/smokable/cigarette
|
||||
name = "cigarette"
|
||||
desc = "A roll of tobacco and nicotine."
|
||||
icon_state = "cigoff"
|
||||
icon_state = "cig"
|
||||
item_state = "cig"
|
||||
throw_speed = 0.5
|
||||
item_state = "cigoff"
|
||||
w_class = ITEMSIZE_TINY
|
||||
slot_flags = SLOT_EARS | SLOT_MASK
|
||||
attack_verb = list("burnt", "singed")
|
||||
icon_on = "cigon" //Note - these are in masks.dmi not in cigarette.dmi
|
||||
type_butt = /obj/item/weapon/cigbutt
|
||||
chem_volume = 15
|
||||
max_smoketime = 300
|
||||
smoketime = 300
|
||||
matchmes = "<span class='notice'>USER lights their NAME with their FLAME.</span>"
|
||||
lightermes = "<span class='notice'>USER manages to light their NAME with FLAME.</span>"
|
||||
@@ -315,11 +325,11 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
/obj/item/clothing/mask/smokable/cigarette/cigar
|
||||
name = "premium cigar"
|
||||
desc = "A brown roll of tobacco and... well, you're not quite sure. This thing's huge!"
|
||||
icon_state = "cigar2off"
|
||||
icon_on = "cigar2on"
|
||||
icon_state = "cigar2"
|
||||
type_butt = /obj/item/weapon/cigbutt/cigarbutt
|
||||
throw_speed = 0.5
|
||||
item_state = "cigaroff"
|
||||
item_state = "cigar"
|
||||
max_smoketime = 1500
|
||||
smoketime = 1500
|
||||
chem_volume = 20
|
||||
matchmes = "<span class='notice'>USER lights their NAME with their FLAME.</span>"
|
||||
@@ -331,14 +341,13 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
/obj/item/clothing/mask/smokable/cigarette/cigar/cohiba
|
||||
name = "\improper Cohiba Robusto cigar"
|
||||
desc = "There's little more you could want from a cigar."
|
||||
icon_state = "cigar2off"
|
||||
icon_on = "cigar2on"
|
||||
icon_state = "cigar2"
|
||||
|
||||
/obj/item/clothing/mask/smokable/cigarette/cigar/havana
|
||||
name = "premium Havanian cigar"
|
||||
desc = "A cigar fit for only the best of the best."
|
||||
icon_state = "cigar2off"
|
||||
icon_on = "cigar2on"
|
||||
icon_state = "cigar2"
|
||||
max_smoketime = 7200
|
||||
smoketime = 7200
|
||||
chem_volume = 30
|
||||
|
||||
@@ -375,9 +384,8 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
/obj/item/clothing/mask/smokable/pipe
|
||||
name = "smoking pipe"
|
||||
desc = "A pipe, for smoking. Made of fine, stained cherry wood."
|
||||
icon_state = "pipeoff"
|
||||
item_state = "pipeoff"
|
||||
icon_on = "pipeon" //Note - these are in masks.dmi
|
||||
icon_state = "pipe"
|
||||
item_state = "pipe"
|
||||
smoketime = 0
|
||||
chem_volume = 50
|
||||
matchmes = "<span class='notice'>USER lights their NAME with their FLAME.</span>"
|
||||
@@ -429,6 +437,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
if (smoketime)
|
||||
user << "<span class='notice'>[src] is already packed.</span>"
|
||||
return
|
||||
max_smoketime = 1000
|
||||
smoketime = 1000
|
||||
if(G.reagents)
|
||||
G.reagents.trans_to_obj(src, G.reagents.total_volume)
|
||||
@@ -455,9 +464,8 @@ CIGARETTE PACKETS ARE IN FANCY.DM
|
||||
/obj/item/clothing/mask/smokable/pipe/cobpipe
|
||||
name = "corn cob pipe"
|
||||
desc = "A nicotine delivery system popularized by folksy backwoodsmen, kept popular in the modern age and beyond by space hipsters."
|
||||
icon_state = "cobpipeoff"
|
||||
item_state = "cobpipeoff"
|
||||
icon_on = "cobpipeon" //Note - these are in masks.dmi
|
||||
icon_state = "cobpipe"
|
||||
item_state = "cobpipe"
|
||||
chem_volume = 35
|
||||
|
||||
/////////
|
||||
|
||||
@@ -8,7 +8,6 @@
|
||||
name = "circuit board"
|
||||
icon = 'icons/obj/module.dmi'
|
||||
icon_state = "id_mod"
|
||||
item_state = "electronic"
|
||||
origin_tech = list(TECH_DATA = 2)
|
||||
density = 0
|
||||
anchored = 0
|
||||
@@ -47,7 +46,7 @@
|
||||
var/comp_amt = req_components[comp_path]
|
||||
if(!comp_amt)
|
||||
continue
|
||||
|
||||
|
||||
if(ispath(comp_path, /obj/item/stack))
|
||||
M.component_parts += new comp_path(contain_parts ? M : null, comp_amt)
|
||||
else
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
#ifndef T_BOARD
|
||||
#error T_BOARD macro is not defined but we need it!
|
||||
#endif
|
||||
|
||||
/obj/item/weapon/circuitboard/pipelayer
|
||||
name = T_BOARD("pipe layer")
|
||||
build_path = /obj/machinery/pipelayer
|
||||
board_type = new /datum/frame/frame_types/machine
|
||||
matter = list(DEFAULT_WALL_MATERIAL = 50, "glass" = 50)
|
||||
req_components = list(
|
||||
/obj/item/weapon/stock_parts/motor = 1,
|
||||
/obj/item/weapon/stock_parts/gear = 1,
|
||||
/obj/item/weapon/stock_parts/matter_bin = 1)
|
||||
@@ -7,7 +7,6 @@
|
||||
name = "exosuit circuit board"
|
||||
icon = 'icons/obj/module.dmi'
|
||||
icon_state = "std_mod"
|
||||
item_state = "electronic"
|
||||
board_type = "other"
|
||||
|
||||
/obj/item/weapon/circuitboard/mecha/ripley
|
||||
|
||||
@@ -452,23 +452,27 @@ the implant may become unstable and either pre-maturely inject the subject or si
|
||||
var/obj/item/device/radio/headset/a = new /obj/item/device/radio/headset/heads/captain(null)
|
||||
if(istype(t, /area/syndicate_station) || istype(t, /area/syndicate_mothership) || istype(t, /area/shuttle/syndicate_elite) )
|
||||
//give the syndies a bit of stealth
|
||||
a.autosay("[mobname] has died in Space!", "[mobname]'s Death Alarm", "Security")
|
||||
a.autosay("[mobname] has died in Space!", "[mobname]'s Death Alarm", "Medical")
|
||||
a.autosay("[mobname] has died in Space!", "[mobname]'s Death Alarm", "General")
|
||||
// a.autosay("[mobname] has died in Space!", "[mobname]'s Death Alarm", "Security")
|
||||
// a.autosay("[mobname] has died in Space!", "[mobname]'s Death Alarm", "Medical")
|
||||
else
|
||||
a.autosay("[mobname] has died in [t.name]!", "[mobname]'s Death Alarm", "Security")
|
||||
a.autosay("[mobname] has died in [t.name]!", "[mobname]'s Death Alarm", "Medical")
|
||||
a.autosay("[mobname] has died in [t.name]!", "[mobname]'s Death Alarm", "General")
|
||||
// a.autosay("[mobname] has died in [t.name]!", "[mobname]'s Death Alarm", "Security")
|
||||
// a.autosay("[mobname] has died in [t.name]!", "[mobname]'s Death Alarm", "Medical")
|
||||
qdel(a)
|
||||
processing_objects.Remove(src)
|
||||
if ("emp")
|
||||
var/obj/item/device/radio/headset/a = new /obj/item/device/radio/headset/heads/captain(null)
|
||||
var/name = prob(50) ? t.name : pick(teleportlocs)
|
||||
a.autosay("[mobname] has died in [name]!", "[mobname]'s Death Alarm", "Security")
|
||||
a.autosay("[mobname] has died in [name]!", "[mobname]'s Death Alarm", "Medical")
|
||||
a.autosay("[mobname] has died in [name]!", "[mobname]'s Death Alarm", "General")
|
||||
// a.autosay("[mobname] has died in [name]!", "[mobname]'s Death Alarm", "Security")
|
||||
// a.autosay("[mobname] has died in [name]!", "[mobname]'s Death Alarm", "Medical")
|
||||
qdel(a)
|
||||
else
|
||||
var/obj/item/device/radio/headset/a = new /obj/item/device/radio/headset/heads/captain(null)
|
||||
a.autosay("[mobname] has died-zzzzt in-in-in...", "[mobname]'s Death Alarm", "Security")
|
||||
a.autosay("[mobname] has died-zzzzt in-in-in...", "[mobname]'s Death Alarm", "Medical")
|
||||
a.autosay("[mobname] has died-zzzzt in-in-in...", "[mobname]'s Death Alarm", "General")
|
||||
// a.autosay("[mobname] has died-zzzzt in-in-in...", "[mobname]'s Death Alarm", "Security")
|
||||
// a.autosay("[mobname] has died-zzzzt in-in-in...", "[mobname]'s Death Alarm", "Medical")
|
||||
qdel(a)
|
||||
processing_objects.Remove(src)
|
||||
|
||||
|
||||
@@ -67,41 +67,4 @@
|
||||
qdel(I)
|
||||
qdel(src)
|
||||
user.put_in_hands(finished)
|
||||
update_icon(user)
|
||||
|
||||
/obj/item/woodcirclet
|
||||
name = "wood circlet"
|
||||
desc = "A small wood circlet for making a flower crown."
|
||||
icon = 'icons/obj/buildingobject.dmi'
|
||||
icon_state = "woodcirclet"
|
||||
w_class = ITEMSIZE_SMALL
|
||||
|
||||
/obj/item/woodcirclet/attackby(obj/item/W as obj, mob/user as mob)
|
||||
var/obj/item/complete
|
||||
if(istype(W,/obj/item/seeds/poppyseed))
|
||||
user << "You attach the poppy to the circlet and create a beautiful flower crown."
|
||||
complete = new /obj/item/clothing/head/poppy_crown(get_turf(user))
|
||||
user.drop_from_inventory(W)
|
||||
user.drop_from_inventory(src)
|
||||
qdel(W)
|
||||
qdel(src)
|
||||
user.put_in_hands(complete)
|
||||
return
|
||||
else if(istype(W,/obj/item/seeds/sunflowerseed))
|
||||
user << "You attach the sunflower to the circlet and create a beautiful flower crown."
|
||||
complete = new /obj/item/clothing/head/sunflower_crown(get_turf(user))
|
||||
user.drop_from_inventory(W)
|
||||
user.drop_from_inventory(src)
|
||||
qdel(W)
|
||||
qdel(src)
|
||||
user.put_in_hands(complete)
|
||||
return
|
||||
else if(istype(W,/obj/item/seeds/lavenderseed))
|
||||
user << "You attach the lavender to the circlet and create a beautiful flower crown."
|
||||
complete = new /obj/item/clothing/head/lavender_crown(get_turf(user))
|
||||
user.drop_from_inventory(W)
|
||||
user.drop_from_inventory(src)
|
||||
qdel(W)
|
||||
qdel(src)
|
||||
user.put_in_hands(complete)
|
||||
return
|
||||
update_icon(user)
|
||||
@@ -35,6 +35,13 @@
|
||||
icon_state = "switchblade"
|
||||
unbreakable = 1
|
||||
|
||||
/obj/item/weapon/material/butterfly/boxcutter
|
||||
name = "box cutter"
|
||||
desc = "A thin, inexpensive razor-blade knife designed to open cardboard boxes."
|
||||
icon_state = "boxcutter"
|
||||
force_divisor = 0.1 // 6 when wielded with hardness 60 (steel)
|
||||
thrown_force_divisor = 0.2 // 4 when thrown with weight 20 (steel)
|
||||
|
||||
/obj/item/weapon/material/butterfly/attack_self(mob/user)
|
||||
active = !active
|
||||
if(active)
|
||||
|
||||
@@ -90,7 +90,7 @@
|
||||
if(affecting.take_damage(force, 0))
|
||||
H.UpdateDamageIcon()
|
||||
H.updatehealth()
|
||||
if(affecting.can_feel_pain())
|
||||
if(affecting.organ_can_feel_pain())
|
||||
H.Weaken(3)
|
||||
return
|
||||
check -= picked
|
||||
|
||||
@@ -126,6 +126,7 @@
|
||||
new /obj/item/weapon/storage/pill_bottle/dylovene(src)
|
||||
new /obj/item/weapon/storage/pill_bottle/tramadol(src)
|
||||
new /obj/item/weapon/storage/pill_bottle/spaceacillin(src)
|
||||
new /obj/item/weapon/reagent_containers/hypospray/autoinjector/clotting(src)
|
||||
new /obj/item/stack/medical/splint(src)
|
||||
return
|
||||
|
||||
@@ -150,6 +151,19 @@
|
||||
new /obj/item/stack/medical/advanced/bruise_pack(src)
|
||||
return
|
||||
|
||||
/obj/item/weapon/storage/firstaid/clotting
|
||||
name = "clotting kit"
|
||||
desc = "Contains chemicals to stop bleeding."
|
||||
max_storage_space = ITEMSIZE_COST_SMALL * 7
|
||||
|
||||
/obj/item/weapon/storage/firstaid/clotting/New()
|
||||
..()
|
||||
if (empty)
|
||||
return
|
||||
for(var/i = 1 to 8)
|
||||
new /obj/item/weapon/reagent_containers/hypospray/autoinjector/clotting(src)
|
||||
return
|
||||
|
||||
/*
|
||||
* Pill Bottles
|
||||
*/
|
||||
|
||||
@@ -28,6 +28,38 @@
|
||||
update_icon()
|
||||
return
|
||||
|
||||
/obj/item/weapon/melee/baton/MouseDrop(obj/over_object as obj)
|
||||
if(!canremove)
|
||||
return
|
||||
|
||||
if (ishuman(usr) || issmall(usr)) //so monkeys can take off their backpacks -- Urist
|
||||
|
||||
if (istype(usr.loc,/obj/mecha)) // stops inventory actions in a mech. why?
|
||||
return
|
||||
|
||||
if (!( istype(over_object, /obj/screen) ))
|
||||
return ..()
|
||||
|
||||
//makes sure that the thing is equipped, so that we can't drag it into our hand from miles away.
|
||||
//there's got to be a better way of doing this.
|
||||
if (!(src.loc == usr) || (src.loc && src.loc.loc == usr))
|
||||
return
|
||||
|
||||
if (( usr.restrained() ) || ( usr.stat ))
|
||||
return
|
||||
|
||||
if ((src.loc == usr) && !(istype(over_object, /obj/screen)) && !usr.unEquip(src))
|
||||
return
|
||||
|
||||
switch(over_object.name)
|
||||
if("r_hand")
|
||||
usr.u_equip(src)
|
||||
usr.put_in_r_hand(src)
|
||||
if("l_hand")
|
||||
usr.u_equip(src)
|
||||
usr.put_in_l_hand(src)
|
||||
src.add_fingerprint(usr)
|
||||
|
||||
/obj/item/weapon/melee/baton/loaded/New() //this one starts with a cell pre-installed.
|
||||
..()
|
||||
bcell = new/obj/item/weapon/cell/device/weapon(src)
|
||||
|
||||
@@ -172,7 +172,8 @@
|
||||
|
||||
/obj/item/weapon/weldingtool/examine(mob/user)
|
||||
if(..(user, 0))
|
||||
user << text("\icon[] [] contains []/[] units of fuel!", src, src.name, get_fuel(),src.max_fuel )
|
||||
if(max_fuel)
|
||||
user << text("\icon[] [] contains []/[] units of fuel!", src, src.name, get_fuel(),src.max_fuel )
|
||||
|
||||
|
||||
/obj/item/weapon/weldingtool/attackby(obj/item/W as obj, mob/living/user as mob)
|
||||
@@ -234,18 +235,22 @@
|
||||
|
||||
/obj/item/weapon/weldingtool/afterattack(obj/O as obj, mob/user as mob, proximity)
|
||||
if(!proximity) return
|
||||
if (istype(O, /obj/structure/reagent_dispensers/fueltank) && get_dist(src,O) <= 1 && !src.welding)
|
||||
O.reagents.trans_to_obj(src, max_fuel)
|
||||
user << "<span class='notice'>Welder refueled</span>"
|
||||
playsound(src.loc, 'sound/effects/refill.ogg', 50, 1, -6)
|
||||
return
|
||||
else if (istype(O, /obj/structure/reagent_dispensers/fueltank) && get_dist(src,O) <= 1 && src.welding)
|
||||
message_admins("[key_name_admin(user)] triggered a fueltank explosion with a welding tool.")
|
||||
log_game("[key_name(user)] triggered a fueltank explosion with a welding tool.")
|
||||
user << "<span class='danger'>You begin welding on the fueltank and with a moment of lucidity you realize, this might not have been the smartest thing you've ever done.</span>"
|
||||
var/obj/structure/reagent_dispensers/fueltank/tank = O
|
||||
tank.explode()
|
||||
return
|
||||
if (istype(O, /obj/structure/reagent_dispensers/fueltank) && get_dist(src,O) <= 1 && !welding)
|
||||
if(!welding && max_fuel)
|
||||
O.reagents.trans_to_obj(src, max_fuel)
|
||||
user << "<span class='notice'>Welder refueled</span>"
|
||||
playsound(src.loc, 'sound/effects/refill.ogg', 50, 1, -6)
|
||||
return
|
||||
else if(!welding)
|
||||
user << "<span class='notice'>[src] doesn't use fuel.</span>"
|
||||
return
|
||||
else
|
||||
message_admins("[key_name_admin(user)] triggered a fueltank explosion with a welding tool.")
|
||||
log_game("[key_name(user)] triggered a fueltank explosion with a welding tool.")
|
||||
user << "<span class='danger'>You begin welding on the fueltank and with a moment of lucidity you realize, this might not have been the smartest thing you've ever done.</span>"
|
||||
var/obj/structure/reagent_dispensers/fueltank/tank = O
|
||||
tank.explode()
|
||||
return
|
||||
if (src.welding)
|
||||
remove_fuel(1)
|
||||
var/turf/location = get_turf(user)
|
||||
@@ -286,12 +291,44 @@
|
||||
|
||||
/obj/item/weapon/weldingtool/update_icon()
|
||||
..()
|
||||
icon_state = welding ? "welder1" : "welder"
|
||||
icon_state = welding ? "[icon_state]1" : "[initial(icon_state)]"
|
||||
var/mob/M = loc
|
||||
if(istype(M))
|
||||
M.update_inv_l_hand()
|
||||
M.update_inv_r_hand()
|
||||
|
||||
/obj/item/weapon/weldingtool/MouseDrop(obj/over_object as obj)
|
||||
if(!canremove)
|
||||
return
|
||||
|
||||
if (ishuman(usr) || issmall(usr)) //so monkeys can take off their backpacks -- Urist
|
||||
|
||||
if (istype(usr.loc,/obj/mecha)) // stops inventory actions in a mech. why?
|
||||
return
|
||||
|
||||
if (!( istype(over_object, /obj/screen) ))
|
||||
return ..()
|
||||
|
||||
//makes sure that the thing is equipped, so that we can't drag it into our hand from miles away.
|
||||
//there's got to be a better way of doing this.
|
||||
if (!(src.loc == usr) || (src.loc && src.loc.loc == usr))
|
||||
return
|
||||
|
||||
if (( usr.restrained() ) || ( usr.stat ))
|
||||
return
|
||||
|
||||
if ((src.loc == usr) && !(istype(over_object, /obj/screen)) && !usr.unEquip(src))
|
||||
return
|
||||
|
||||
switch(over_object.name)
|
||||
if("r_hand")
|
||||
usr.u_equip(src)
|
||||
usr.put_in_r_hand(src)
|
||||
if("l_hand")
|
||||
usr.u_equip(src)
|
||||
usr.put_in_l_hand(src)
|
||||
src.add_fingerprint(usr)
|
||||
|
||||
//Sets the welding state of the welding tool. If you see W.welding = 1 anywhere, please change it to W.setWelding(1)
|
||||
//so that the welding tool updates accordingly
|
||||
/obj/item/weapon/weldingtool/proc/setWelding(var/set_welding, var/mob/M)
|
||||
@@ -313,7 +350,8 @@
|
||||
processing_objects |= src
|
||||
else
|
||||
if(M)
|
||||
M << "<span class='notice'>You need more welding fuel to complete this task.</span>"
|
||||
var/msg = max_fuel ? "welding fuel" : "charge"
|
||||
M << "<span class='notice'>You need more [msg] to complete this task.</span>"
|
||||
return
|
||||
//Otherwise
|
||||
else if(!set_welding && welding)
|
||||
@@ -370,7 +408,6 @@
|
||||
user.disabilities &= ~NEARSIGHTED
|
||||
return
|
||||
|
||||
|
||||
/obj/item/weapon/weldingtool/largetank
|
||||
name = "industrial welding tool"
|
||||
max_fuel = 40
|
||||
@@ -405,6 +442,113 @@
|
||||
if(get_fuel() < max_fuel && nextrefueltick < world.time)
|
||||
nextrefueltick = world.time + 10
|
||||
reagents.add_reagent("fuel", 1)
|
||||
|
||||
/*
|
||||
* Electric/Arc Welder
|
||||
*/
|
||||
|
||||
/obj/item/weapon/weldingtool/electric //AND HIS WELDING WAS ELECTRIC
|
||||
name = "electric welding tool"
|
||||
icon_state = "arcwelder"
|
||||
max_fuel = 0 //We'll handle the consumption later.
|
||||
var/obj/item/weapon/cell/power_supply //What type of power cell this uses
|
||||
var/charge_cost = 24 //The rough equivalent of 1 unit of fuel, based on us wanting 10 welds per battery
|
||||
var/cell_type = /obj/item/weapon/cell/device
|
||||
var/use_external_power = 0 //If in a borg or hardsuit, this needs to = 1
|
||||
|
||||
/obj/item/weapon/weldingtool/electric/New()
|
||||
..()
|
||||
if(cell_type == null)
|
||||
update_icon()
|
||||
else if(cell_type)
|
||||
power_supply = new cell_type(src)
|
||||
else
|
||||
power_supply = new /obj/item/weapon/cell/device(src)
|
||||
update_icon()
|
||||
|
||||
/obj/item/weapon/weldingtool/electric/unloaded/New()
|
||||
cell_type = null
|
||||
|
||||
/obj/item/weapon/weldingtool/electric/examine(mob/user)
|
||||
..()
|
||||
if(power_supply)
|
||||
user << text("\icon[] [] has [] charge left.", src, src.name, get_fuel())
|
||||
else
|
||||
user << text("\icon[] [] has power for no power cell!", src, src.name)
|
||||
|
||||
/obj/item/weapon/weldingtool/electric/get_fuel()
|
||||
if(use_external_power)
|
||||
var/obj/item/weapon/cell/external = get_external_power_supply()
|
||||
return external.charge
|
||||
else if(power_supply)
|
||||
return power_supply.charge
|
||||
else
|
||||
return 0
|
||||
|
||||
/obj/item/weapon/weldingtool/electric/remove_fuel(var/amount = 1, var/mob/M = null)
|
||||
if(!welding)
|
||||
return 0
|
||||
if(get_fuel() >= amount)
|
||||
power_supply.checked_use(charge_cost)
|
||||
if(use_external_power)
|
||||
var/obj/item/weapon/cell/external = get_external_power_supply()
|
||||
if(!external || !external.use(charge_cost)) //Take power from the borg...
|
||||
power_supply.give(charge_cost) //Give it back to the cell.
|
||||
if(M)
|
||||
eyecheck(M)
|
||||
return 1
|
||||
else
|
||||
if(M)
|
||||
M << "<span class='notice'>You need more energy to complete this task.</span>"
|
||||
return 0
|
||||
|
||||
/obj/item/weapon/weldingtool/electric/attack_hand(mob/user as mob)
|
||||
if(user.get_inactive_hand() == src)
|
||||
if(power_supply)
|
||||
power_supply.update_icon()
|
||||
user.put_in_hands(power_supply)
|
||||
power_supply = null
|
||||
user << "<span class='notice'>You remove the cell from the [src].</span>"
|
||||
setWelding(0)
|
||||
update_icon()
|
||||
return
|
||||
..()
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/weldingtool/electric/attackby(obj/item/weapon/W, mob/user as mob)
|
||||
if(istype(W, /obj/item/weapon/cell))
|
||||
if(istype(W, /obj/item/weapon/cell/device))
|
||||
if(!power_supply)
|
||||
user.drop_item()
|
||||
W.loc = src
|
||||
power_supply = W
|
||||
user << "<span class='notice'>You install a cell in \the [src].</span>"
|
||||
update_icon()
|
||||
else
|
||||
user << "<span class='notice'>\The [src] already has a cell.</span>"
|
||||
else
|
||||
user << "<span class='notice'>\The [src] cannot use that type of cell.</span>"
|
||||
else
|
||||
..()
|
||||
|
||||
/obj/item/weapon/weldingtool/electric/proc/get_external_power_supply()
|
||||
if(isrobot(src.loc))
|
||||
var/mob/living/silicon/robot/R = src.loc
|
||||
return R.cell
|
||||
if(istype(src.loc, /obj/item/rig_module))
|
||||
var/obj/item/rig_module/module = src.loc
|
||||
if(module.holder && module.holder.wearer)
|
||||
var/mob/living/carbon/human/H = module.holder.wearer
|
||||
if(istype(H) && H.back)
|
||||
var/obj/item/weapon/rig/suit = H.back
|
||||
if(istype(suit))
|
||||
return suit.cell
|
||||
return null
|
||||
|
||||
/obj/item/weapon/weldingtool/electric/mounted
|
||||
use_external_power = 1
|
||||
|
||||
/*
|
||||
* Crowbar
|
||||
*/
|
||||
|
||||
@@ -77,11 +77,15 @@
|
||||
|
||||
//armour
|
||||
var/blocked = L.run_armor_check(target_zone, "melee")
|
||||
var/soaked = L.get_armor_soak(target_zone, "melee")
|
||||
|
||||
if(blocked >= 100)
|
||||
return
|
||||
|
||||
if(!L.apply_damage(30, BRUTE, target_zone, blocked, used_weapon=src))
|
||||
if(soaked >= 30)
|
||||
return
|
||||
|
||||
if(!L.apply_damage(30, BRUTE, target_zone, blocked, soaked, used_weapon=src))
|
||||
return 0
|
||||
|
||||
//trap the victim in place
|
||||
|
||||
@@ -174,7 +174,7 @@
|
||||
return 0
|
||||
if (user.stat || user.paralysis || user.sleeping || user.lying || user.weakened)
|
||||
return 0
|
||||
if (issilicon(user))
|
||||
if (isAI(user))
|
||||
user << "<span class='notice'>You need hands for this.</span>"
|
||||
return 0
|
||||
return 1
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
|
||||
/obj/structure/closet/chefcloset/New()
|
||||
..()
|
||||
new /obj/item/clothing/under/dress/sundress(src)
|
||||
new /obj/item/clothing/under/sundress(src)
|
||||
new /obj/item/clothing/under/waiter(src)
|
||||
new /obj/item/clothing/under/waiter(src)
|
||||
new /obj/item/device/radio/headset/headset_service(src)
|
||||
|
||||
@@ -150,20 +150,22 @@
|
||||
|
||||
var/def_zone = ran_zone()
|
||||
var/blocked = occupant.run_armor_check(def_zone, "melee")
|
||||
var/soaked = occupant.get_armor_soak(def_zone, "melee")
|
||||
occupant.throw_at(A, 3, propelled)
|
||||
occupant.apply_effect(6, STUN, blocked)
|
||||
occupant.apply_effect(6, WEAKEN, blocked)
|
||||
occupant.apply_effect(6, STUTTER, blocked)
|
||||
occupant.apply_damage(10, BRUTE, def_zone, blocked)
|
||||
occupant.apply_damage(10, BRUTE, def_zone, blocked, soaked)
|
||||
playsound(src.loc, 'sound/weapons/punch1.ogg', 50, 1, -1)
|
||||
if(istype(A, /mob/living))
|
||||
var/mob/living/victim = A
|
||||
def_zone = ran_zone()
|
||||
blocked = victim.run_armor_check(def_zone, "melee")
|
||||
soaked = victim.get_armor_soak(def_zone, "melee")
|
||||
victim.apply_effect(6, STUN, blocked)
|
||||
victim.apply_effect(6, WEAKEN, blocked)
|
||||
victim.apply_effect(6, STUTTER, blocked)
|
||||
victim.apply_damage(10, BRUTE, def_zone, blocked)
|
||||
victim.apply_damage(10, BRUTE, def_zone, blocked, soaked)
|
||||
occupant.visible_message("<span class='danger'>[occupant] crashed into \the [A]!</span>")
|
||||
|
||||
/obj/structure/bed/chair/office/light
|
||||
|
||||
@@ -149,20 +149,22 @@
|
||||
|
||||
var/def_zone = ran_zone()
|
||||
var/blocked = occupant.run_armor_check(def_zone, "melee")
|
||||
var/soaked = occupant.get_armor_soak(def_zone, "melee")
|
||||
occupant.throw_at(A, 3, propelled)
|
||||
occupant.apply_effect(6, STUN, blocked)
|
||||
occupant.apply_effect(6, WEAKEN, blocked)
|
||||
occupant.apply_effect(6, STUTTER, blocked)
|
||||
occupant.apply_damage(10, BRUTE, def_zone)
|
||||
occupant.apply_damage(10, BRUTE, def_zone, soaked)
|
||||
playsound(src.loc, 'sound/weapons/punch1.ogg', 50, 1, -1)
|
||||
if(istype(A, /mob/living))
|
||||
var/mob/living/victim = A
|
||||
def_zone = ran_zone()
|
||||
blocked = victim.run_armor_check(def_zone, "melee")
|
||||
soaked = victim.get_armor_soak(def_zone, "melee")
|
||||
victim.apply_effect(6, STUN, blocked)
|
||||
victim.apply_effect(6, WEAKEN, blocked)
|
||||
victim.apply_effect(6, STUTTER, blocked)
|
||||
victim.apply_damage(10, BRUTE, def_zone)
|
||||
victim.apply_damage(10, BRUTE, def_zone, soaked)
|
||||
if(pulling)
|
||||
occupant.visible_message("<span class='danger'>[pulling] has thrusted \the [name] into \the [A], throwing \the [occupant] out of it!</span>")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user