mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-20 19:44:09 +01:00
conflict resolution
This commit is contained in:
@@ -53,7 +53,7 @@
|
||||
By submitting this form, you accept any fines, fees, or personal injury/death that may occur during construction."
|
||||
w_class = 1
|
||||
|
||||
/obj/item/areaeditor/permit/attack_self(mob/user as mob)
|
||||
/obj/item/areaeditor/permit/attack_self(mob/user)
|
||||
. = ..()
|
||||
var/area/A = get_area()
|
||||
if(get_area_type() == AREA_STATION)
|
||||
@@ -85,7 +85,7 @@
|
||||
return ..()
|
||||
|
||||
|
||||
/obj/item/areaeditor/blueprints/attack_self(mob/user as mob)
|
||||
/obj/item/areaeditor/blueprints/attack_self(mob/user)
|
||||
. = ..()
|
||||
var/area/A = get_area()
|
||||
if(get_area_type() == AREA_STATION)
|
||||
@@ -153,7 +153,7 @@
|
||||
|
||||
|
||||
/obj/item/areaeditor/proc/get_area_type(var/area/A = get_area())
|
||||
if(istype(A,/area/space))
|
||||
if(A.outdoors)
|
||||
return AREA_SPACE
|
||||
var/list/SPECIALS = list(
|
||||
/area/shuttle,
|
||||
@@ -305,3 +305,10 @@
|
||||
return ROOM_ERR_SPACE
|
||||
found+=T
|
||||
return found
|
||||
|
||||
//Blueprint Subtypes
|
||||
|
||||
/obj/item/areaeditor/blueprints/cyborg
|
||||
name = "station schematics"
|
||||
desc = "A digital copy of the station blueprints stored in your memory."
|
||||
fluffnotice = "Intellectual Property of Nanotrasen. For use in engineering cyborgs only. Wipe from memory upon departure from the station."
|
||||
|
||||
@@ -1,44 +0,0 @@
|
||||
/**
|
||||
* Multitool -- A multitool is used for hacking electronic devices.
|
||||
* TO-DO -- Using it as a power measurement tool for cables etc. Nannek.
|
||||
*
|
||||
*/
|
||||
|
||||
/obj/item/device/debugger
|
||||
icon = 'icons/obj/hacktool.dmi'
|
||||
name = "debugger"
|
||||
desc = "Used to debug electronic equipment."
|
||||
icon_state = "hacktool-g"
|
||||
flags = CONDUCT
|
||||
force = 5.0
|
||||
w_class = 2
|
||||
throwforce = 5.0
|
||||
throw_range = 15
|
||||
throw_speed = 3
|
||||
desc = "You can use this on airlocks or APCs to try to hack them without cutting wires."
|
||||
materials = list(MAT_METAL=50, MAT_GLASS=20)
|
||||
origin_tech = "magnets=1;engineering=1"
|
||||
var/obj/machinery/telecomms/buffer // simple machine buffer for device linkage
|
||||
|
||||
/obj/item/device/debugger/is_used_on(obj/O, mob/user)
|
||||
if(istype(O, /obj/machinery/power/apc))
|
||||
var/obj/machinery/power/apc/A = O
|
||||
if(A.emagged || A.malfhack)
|
||||
to_chat(user, "\red There is a software error with the device.")
|
||||
else
|
||||
to_chat(user, "\blue The device's software appears to be fine.")
|
||||
return 1
|
||||
if(istype(O, /obj/machinery/door))
|
||||
var/obj/machinery/door/D = O
|
||||
if(D.operating == -1)
|
||||
to_chat(user, "\red There is a software error with the device.")
|
||||
else
|
||||
to_chat(user, "\blue The device's software appears to be fine.")
|
||||
return 1
|
||||
else if(istype(O, /obj/machinery))
|
||||
var/obj/machinery/A = O
|
||||
if(A.emagged)
|
||||
to_chat(user, "\red There is a software error with the device.")
|
||||
else
|
||||
to_chat(user, "\blue The device's software appears to be fine.")
|
||||
return 1
|
||||
@@ -128,8 +128,8 @@
|
||||
to_chat(S, "<span class='warning'>Your sensors were overloaded by a laser!</span>")
|
||||
outmsg = "<span class='notice'>You overload [S] by shining [src] at their sensors.</span>"
|
||||
|
||||
S.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has had a laser pointer shone in their eyes by [user.name] ([user.ckey])</font>")
|
||||
user.attack_log += text("\[[time_stamp()]\] <font color='orange'>Shone a laser pointer in the eyes of [S.name] ([S.ckey])</font>")
|
||||
S.create_attack_log("<font color='orange'>Has had a laser pointer shone in their eyes by [user.name] ([user.ckey])</font>")
|
||||
user.create_attack_log("<font color='orange'>Shone a laser pointer in the eyes of [S.name] ([S.ckey])</font>")
|
||||
log_attack("<font color='orange'>[user.name] ([user.ckey]) Shone a laser pointer in the eyes of [S.name] ([S.ckey])</font>")
|
||||
else
|
||||
outmsg = "<span class='notice'>You fail to overload [S] by shining [src] at their sensors.</span>"
|
||||
@@ -142,7 +142,7 @@
|
||||
outmsg = "<span class='notice'>You hit the lens of [C] with [src], temporarily disabling the camera!</span>"
|
||||
|
||||
log_admin("\[[time_stamp()]\] [user.name] ([user.ckey]) EMPd a camera with a laser pointer")
|
||||
user.attack_log += text("\[[time_stamp()]\] [user.name] ([user.ckey]) EMPd a camera with a laser pointer")
|
||||
user.create_attack_log("[user.name] ([user.ckey]) EMPd a camera with a laser pointer")
|
||||
else
|
||||
outmsg = "<span class='info'>You missed the lens of [C] with [src].</span>"
|
||||
|
||||
|
||||
@@ -63,18 +63,16 @@
|
||||
return RADIO_CONNECTION_FAIL
|
||||
|
||||
return ..()
|
||||
|
||||
/obj/item/device/radio/headset/receive_range(freq, level, aiOverride = 0)
|
||||
if(aiOverride)
|
||||
return ..(freq, level)
|
||||
|
||||
/obj/item/device/radio/headset/is_listening()
|
||||
if(ishuman(loc))
|
||||
var/mob/living/carbon/human/H = loc
|
||||
if(H.l_ear == src || H.r_ear == src)
|
||||
return ..(freq, level)
|
||||
else if(isanimal(loc))
|
||||
// frankly, all the ones with inventory are small enough to not warrant snowflaking the slot check somehow
|
||||
return ..(freq, level)
|
||||
return -1
|
||||
return ..()
|
||||
else if(isanimal(loc) || isAI(loc))
|
||||
return ..()
|
||||
|
||||
return FALSE
|
||||
|
||||
/obj/item/device/radio/headset/alt
|
||||
name = "bowman headset"
|
||||
@@ -304,10 +302,10 @@
|
||||
var/myAi = null // Atlantis: Reference back to the AI which has this radio.
|
||||
var/disabledAi = 0 // Atlantis: Used to manually disable AI's integrated radio via intellicard menu.
|
||||
|
||||
/obj/item/device/radio/headset/heads/ai_integrated/receive_range(freq, level)
|
||||
/obj/item/device/radio/headset/heads/ai_integrated/is_listening()
|
||||
if(disabledAi)
|
||||
return -1 //Transciever Disabled.
|
||||
return ..(freq, level, 1)
|
||||
return FALSE
|
||||
return ..()
|
||||
|
||||
/obj/item/device/radio/headset/attackby(obj/item/weapon/W as obj, mob/user as mob)
|
||||
user.set_machine(src)
|
||||
|
||||
@@ -120,15 +120,13 @@
|
||||
attack_self(user)
|
||||
|
||||
/obj/item/device/radio/intercom/receive_range(freq, level)
|
||||
if(!on)
|
||||
if(!is_listening())
|
||||
return -1
|
||||
if(!(0 in level))
|
||||
var/turf/position = get_turf(src)
|
||||
// TODO: Integrate radio with the space manager
|
||||
if(isnull(position) || !(position.z in level))
|
||||
return -1
|
||||
if(!src.listening)
|
||||
return -1
|
||||
if(freq in ANTAG_FREQS)
|
||||
if(!(src.syndie))
|
||||
return -1//Prevents broadcast of messages over devices lacking the encryption
|
||||
|
||||
@@ -71,6 +71,7 @@ var/global/list/default_medbay_channels = list(
|
||||
initialize()
|
||||
|
||||
internal_channels = default_internal_channels.Copy()
|
||||
global_radios |= src
|
||||
|
||||
/obj/item/device/radio/Destroy()
|
||||
qdel(wires)
|
||||
@@ -80,6 +81,7 @@ var/global/list/default_medbay_channels = list(
|
||||
for(var/ch_name in channels)
|
||||
radio_controller.remove_object(src, radiochannels[ch_name])
|
||||
patch_link = null
|
||||
global_radios -= src
|
||||
return ..()
|
||||
|
||||
|
||||
@@ -532,19 +534,15 @@ var/global/list/default_medbay_channels = list(
|
||||
// what the range is in which mobs will hear the radio
|
||||
// returns: -1 if can't receive, range otherwise
|
||||
|
||||
if(!wires || wires.IsIndexCut(WIRE_RECEIVE))
|
||||
return -1
|
||||
if(!listening)
|
||||
if(!is_listening())
|
||||
return -1
|
||||
if(!(0 in level))
|
||||
var/turf/position = get_turf(src)
|
||||
if(!position || !(position.z in level))
|
||||
return -1
|
||||
if(freq in ANTAG_FREQS)
|
||||
if(!(src.syndie))//Checks to see if it's allowed on that frequency, based on the encryption keys
|
||||
if(!(syndie))//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
|
||||
if(!listening)
|
||||
return -1
|
||||
@@ -561,11 +559,26 @@ var/global/list/default_medbay_channels = list(
|
||||
return canhear_range
|
||||
|
||||
/obj/item/device/radio/proc/send_hear(freq, level)
|
||||
|
||||
var/range = receive_range(freq, level)
|
||||
if(range > -1)
|
||||
return get_mobs_in_view(canhear_range, src)
|
||||
|
||||
/obj/item/device/radio/proc/is_listening()
|
||||
var/is_listening = TRUE
|
||||
if(!on)
|
||||
is_listening = FALSE
|
||||
if(!wires || wires.IsIndexCut(WIRE_RECEIVE))
|
||||
is_listening = FALSE
|
||||
if(!listening)
|
||||
is_listening = FALSE
|
||||
|
||||
return is_listening
|
||||
|
||||
/obj/item/device/radio/proc/send_announcement()
|
||||
if(is_listening())
|
||||
return get_mobs_in_view(canhear_range, src)
|
||||
|
||||
return null
|
||||
|
||||
/obj/item/device/radio/examine(mob/user, var/distance = -1)
|
||||
. = ..(user, distance)
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
/obj/item/device/malf_upgrade
|
||||
name = "combat software upgrade"
|
||||
desc = "A highly illegal, highly dangerous upgrade for artificial intelligence units, granting them a variety of powers as well as the ability to hack APCs."
|
||||
icon = 'icons/obj/cloning.dmi'
|
||||
icon = 'icons/obj/module.dmi'
|
||||
icon_state = "datadisk3"
|
||||
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
/obj/item/device/surveillance_upgrade
|
||||
name = "surveillance software upgrade"
|
||||
desc = "A software package that will allow an artificial intelligence to 'hear' from its cameras via lip reading."
|
||||
icon = 'icons/obj/cloning.dmi'
|
||||
icon = 'icons/obj/module.dmi'
|
||||
icon_state = "datadisk3"
|
||||
|
||||
/obj/item/device/surveillance_upgrade/afterattack(mob/living/silicon/ai/AI, mob/user)
|
||||
|
||||
@@ -152,8 +152,6 @@
|
||||
icon_state = "burnkit"
|
||||
heal_burn = 25
|
||||
|
||||
|
||||
|
||||
//Medical Herbs//
|
||||
|
||||
|
||||
@@ -161,8 +159,8 @@
|
||||
name = "\improper Comfrey leaf"
|
||||
singular_name = "Comfrey leaf"
|
||||
desc = "A soft leaf that is rubbed on bruises."
|
||||
icon = 'icons/obj/hydroponics_products.dmi'
|
||||
icon_state = "alien3-product"
|
||||
icon = 'icons/obj/hydroponics/harvest.dmi'
|
||||
icon_state = "tea_aspera_leaves"
|
||||
color = "#378C61"
|
||||
heal_brute = 12
|
||||
|
||||
@@ -171,13 +169,12 @@
|
||||
name = "\improper Aloe Vera leaf"
|
||||
singular_name = "Aloe Vera leaf"
|
||||
desc = "A cold leaf that is rubbed on burns."
|
||||
icon = 'icons/obj/hydroponics_products.dmi'
|
||||
icon_state = "ambrosia-product"
|
||||
icon = 'icons/obj/hydroponics/harvest.dmi'
|
||||
icon_state = "ambrosiavulgaris"
|
||||
color = "#4CC5C7"
|
||||
heal_burn = 12
|
||||
|
||||
|
||||
|
||||
//Splits//
|
||||
|
||||
|
||||
|
||||
@@ -102,19 +102,49 @@ var/global/list/datum/stack_recipe/human_recipes = list( \
|
||||
icon_state = "sheet-leather"
|
||||
origin_tech = "materials=2"
|
||||
|
||||
/obj/item/stack/sheet/sinew
|
||||
name = "watcher sinew"
|
||||
icon = 'icons/obj/mining.dmi'
|
||||
desc = "Long stringy filaments which presumably came from a watcher's wings."
|
||||
singular_name = "watcher sinew"
|
||||
icon_state = "sinew"
|
||||
origin_tech = "biotech=4"
|
||||
|
||||
var/global/list/datum/stack_recipe/sinew_recipes = list ( \
|
||||
new/datum/stack_recipe("sinew restraints", /obj/item/weapon/restraints/handcuffs/sinew, 1, on_floor = 1), \
|
||||
)
|
||||
|
||||
/obj/item/stack/sheet/sinew/New(var/loc, var/amount=null)
|
||||
recipes = sinew_recipes
|
||||
return ..()
|
||||
|
||||
/obj/item/stack/sheet/animalhide/goliath_hide
|
||||
name = "goliath hide plates"
|
||||
desc = "Pieces of a goliath's rocky hide, these might be able to make your suit a bit more durable to attack from the local fauna."
|
||||
icon = 'icons/obj/mining.dmi'
|
||||
icon_state = "goliath_hide"
|
||||
singular_name = "hide plate"
|
||||
flags = NOBLUDGEON
|
||||
w_class = 3
|
||||
layer = MOB_LAYER
|
||||
|
||||
/obj/item/stack/sheet/animalhide/ashdrake
|
||||
name = "ash drake hide"
|
||||
desc = "The strong, scaled hide of an ash drake."
|
||||
icon = 'icons/obj/mining.dmi'
|
||||
icon_state = "dragon_hide"
|
||||
singular_name = "drake plate"
|
||||
flags = NOBLUDGEON
|
||||
w_class = 3
|
||||
layer = MOB_LAYER
|
||||
|
||||
//Step one - dehairing.
|
||||
|
||||
/obj/item/stack/sheet/animalhide/attackby(obj/item/weapon/W as obj, mob/user as mob, params)
|
||||
if( istype(W, /obj/item/weapon/kitchen/knife) || \
|
||||
istype(W, /obj/item/weapon/twohanded/fireaxe) || \
|
||||
istype(W, /obj/item/weapon/hatchet) )
|
||||
|
||||
//visible message on mobs is defined as visible_message(var/message, var/self_message, var/blind_message)
|
||||
usr.visible_message("\blue \the [usr] starts cutting hair off \the [src]", "\blue You start cutting the hair off \the [src]", "You hear the sound of a knife rubbing against flesh")
|
||||
if(W.sharp)
|
||||
user.visible_message("[user] starts cutting hair off \the [src].", "<span class='notice'>You start cutting the hair off \the [src]...</span>", "<span class='italics'>You hear the sound of a knife rubbing against flesh.</span>")
|
||||
if(do_after(user,50, target = src))
|
||||
to_chat(usr, "\blue You cut the hair from this [src.singular_name]")
|
||||
to_chat(user, "<span class='notice'>You cut the hair from this [src.singular_name].</span>")
|
||||
//Try locating an exisitng stack on the tile and add to there if possible
|
||||
for(var/obj/item/stack/sheet/hairlesshide/HS in usr.loc)
|
||||
if(HS.amount < 50)
|
||||
@@ -128,7 +158,6 @@ var/global/list/datum/stack_recipe/human_recipes = list( \
|
||||
else
|
||||
..()
|
||||
|
||||
|
||||
//Step two - washing..... it's actually in washing machine code.
|
||||
|
||||
//Step three - drying
|
||||
|
||||
@@ -18,7 +18,7 @@ Mineral Sheets
|
||||
*/
|
||||
|
||||
var/global/list/datum/stack_recipe/sandstone_recipes = list ( \
|
||||
new/datum/stack_recipe("pile of dirt", /obj/machinery/portable_atmospherics/hydroponics/soil, 3, time = 10, one_per_turf = 1, on_floor = 1), \
|
||||
new/datum/stack_recipe("pile of dirt", /obj/machinery/hydroponics/soil, 3, time = 10, one_per_turf = 1, on_floor = 1), \
|
||||
new/datum/stack_recipe("sandstone door", /obj/structure/mineral_door/sandstone, 10, one_per_turf = 1, on_floor = 1), \
|
||||
)
|
||||
|
||||
|
||||
@@ -145,6 +145,7 @@ var/global/list/datum/stack_recipe/wood_recipes = list(
|
||||
new /datum/stack_recipe("wooden chair", /obj/structure/stool/bed/chair/wood/normal, 3, time = 10, one_per_turf = 1, on_floor = 1),
|
||||
new /datum/stack_recipe("wooden barricade", /obj/structure/barricade/wooden, 5, time = 50, one_per_turf = 1, on_floor = 1),
|
||||
new /datum/stack_recipe("bookcase", /obj/structure/bookcase, 5, time = 50, one_per_turf = 1, on_floor = 1),
|
||||
new /datum/stack_recipe("drying rack", /obj/machinery/smartfridge/drying_rack, 10, time = 15, one_per_turf = 1, on_floor = 1),
|
||||
new /datum/stack_recipe("rifle stock", /obj/item/weaponcrafting/stock, 10, time = 40),
|
||||
new /datum/stack_recipe("wooden door", /obj/structure/mineral_door/wood, 10, time = 20, one_per_turf = 1, on_floor = 1),
|
||||
new /datum/stack_recipe("coffin", /obj/structure/closet/coffin, 5, time = 15, one_per_turf = 1, on_floor = 1),
|
||||
@@ -170,13 +171,42 @@ var/global/list/datum/stack_recipe/wood_recipes = list(
|
||||
/*
|
||||
* Cloth
|
||||
*/
|
||||
var/global/list/datum/stack_recipe/cloth_recipes = list ( \
|
||||
new/datum/stack_recipe("grey jumpsuit", /obj/item/clothing/under/color/grey, 3), \
|
||||
new/datum/stack_recipe("black shoes", /obj/item/clothing/shoes/black, 2), \
|
||||
null, \
|
||||
new/datum/stack_recipe("backpack", /obj/item/weapon/storage/backpack, 4), \
|
||||
new/datum/stack_recipe("dufflebag", /obj/item/weapon/storage/backpack/duffel, 6), \
|
||||
null, \
|
||||
new/datum/stack_recipe("plant bag", /obj/item/weapon/storage/bag/plants, 4), \
|
||||
new/datum/stack_recipe("book bag", /obj/item/weapon/storage/bag/books, 4), \
|
||||
new/datum/stack_recipe("mining satchel", /obj/item/weapon/storage/bag/ore, 4), \
|
||||
new/datum/stack_recipe("chemistry bag", /obj/item/weapon/storage/bag/chemistry, 4), \
|
||||
new/datum/stack_recipe("bio bag", /obj/item/weapon/storage/bag/bio, 4), \
|
||||
null, \
|
||||
new/datum/stack_recipe("rag", /obj/item/weapon/reagent_containers/glass/rag, 1), \
|
||||
new/datum/stack_recipe("bedsheet", /obj/item/weapon/bedsheet, 3), \
|
||||
null, \
|
||||
new/datum/stack_recipe("fingerless gloves", /obj/item/clothing/gloves/fingerless, 1), \
|
||||
new/datum/stack_recipe("black gloves", /obj/item/clothing/gloves/color/black, 3), \
|
||||
)
|
||||
|
||||
/obj/item/stack/sheet/cloth
|
||||
name = "cloth"
|
||||
desc = "This roll of cloth is made from only the finest chemicals and bunny rabbits."
|
||||
desc = "Is it cotton? Linen? Denim? Burlap? Canvas? You can't tell."
|
||||
singular_name = "cloth roll"
|
||||
icon_state = "sheet-cloth"
|
||||
origin_tech = "materials=2"
|
||||
burn_state = FLAMMABLE
|
||||
force = 0
|
||||
throwforce = 0
|
||||
|
||||
/obj/item/stack/sheet/cloth/New(loc, amount=null)
|
||||
recipes = cloth_recipes
|
||||
..()
|
||||
|
||||
/obj/item/stack/sheet/cloth/ten
|
||||
amount = 10
|
||||
|
||||
/*
|
||||
* Cardboard
|
||||
@@ -240,3 +270,19 @@ var/global/list/datum/stack_recipe/runed_metal_recipes = list ( \
|
||||
/obj/item/stack/sheet/runed_metal/New(var/loc, var/amount=null)
|
||||
recipes = runed_metal_recipes
|
||||
return ..()
|
||||
|
||||
/*
|
||||
* Bones
|
||||
*/
|
||||
/obj/item/stack/sheet/bone
|
||||
name = "bones"
|
||||
icon = 'icons/obj/mining.dmi'
|
||||
icon_state = "bone"
|
||||
singular_name = "bone"
|
||||
desc = "Someone's been drinking their milk."
|
||||
force = 7
|
||||
throwforce = 5
|
||||
w_class = 3
|
||||
throw_speed = 1
|
||||
throw_range = 3
|
||||
origin_tech = "materials=2;biotech=2"
|
||||
@@ -46,13 +46,10 @@
|
||||
to_chat(user, "<span class='warning'>The buzzing inside the briefcase swells momentarily, then returns to normal. Guess it was too cramped...</span>")
|
||||
S.reagents.clear_reagents()
|
||||
S.update_icon()
|
||||
else if(istype(I, /obj/item/weapon/plantspray))
|
||||
var/obj/item/weapon/plantspray/PS = I
|
||||
user.drop_item(PS)
|
||||
bees_left = max(0, (bees_left - PS.pest_kill_str))
|
||||
to_chat(user, "You spray [PS] into \the [src].")
|
||||
else if(istype(I, /obj/item/weapon/reagent_containers/spray/pestspray))
|
||||
bees_left = max(0, (bees_left - 6))
|
||||
to_chat(user, "You spray [I] into [src].")
|
||||
playsound(loc, 'sound/effects/spray3.ogg', 50, 1, -6)
|
||||
qdel(PS)
|
||||
|
||||
/obj/item/weapon/bee_briefcase/attack_self(mob/user as mob)
|
||||
if(!bees_left)
|
||||
|
||||
@@ -397,6 +397,7 @@
|
||||
"medical",
|
||||
"HoS",
|
||||
"research",
|
||||
"cargo",
|
||||
"engineering",
|
||||
"CMO",
|
||||
"RD",
|
||||
@@ -757,7 +758,7 @@
|
||||
override_name = 1
|
||||
|
||||
/proc/get_station_card_skins()
|
||||
return list("data","id","gold","silver","security","medical","research","engineering","HoS","CMO","RD","CE","clown","mime","rainbow","prisoner")
|
||||
return list("data","id","gold","silver","security","medical","research","cargo","engineering","HoS","CMO","RD","CE","clown","mime","rainbow","prisoner")
|
||||
|
||||
/proc/get_centcom_card_skins()
|
||||
return list("centcom","centcom_old","nanotrasen","ERT_leader","ERT_empty","ERT_security","ERT_engineering","ERT_medical","ERT_janitorial","deathsquad","commander","syndie","TDred","TDgreen")
|
||||
@@ -769,6 +770,8 @@
|
||||
switch(skin)
|
||||
if("id")
|
||||
return "Standard"
|
||||
if("cargo")
|
||||
return "Supply"
|
||||
if("HoS")
|
||||
return "Head of Security"
|
||||
if("CMO")
|
||||
|
||||
@@ -42,11 +42,13 @@ LIGHTERS ARE IN LIGHTERS.DM
|
||||
|
||||
/obj/item/clothing/mask/cigarette/New()
|
||||
..()
|
||||
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 30
|
||||
reagents.set_reacting(FALSE) // so it doesn't react until you light it
|
||||
|
||||
/obj/item/clothing/mask/cigarette/Destroy()
|
||||
qdel(reagents)
|
||||
if(reagents)
|
||||
qdel(reagents)
|
||||
processing_objects -= src
|
||||
return ..()
|
||||
|
||||
/obj/item/clothing/mask/cigarette/attack(var/mob/living/M, var/mob/living/user, def_zone)
|
||||
@@ -135,7 +137,7 @@ LIGHTERS ARE IN LIGHTERS.DM
|
||||
M.unEquip(src, 1)
|
||||
qdel(src)
|
||||
return
|
||||
flags &= ~NOREACT // allowing reagents to react after being lit
|
||||
reagents.set_reacting(TRUE)
|
||||
reagents.handle_reactions()
|
||||
icon_state = icon_on
|
||||
item_state = icon_on
|
||||
@@ -205,9 +207,9 @@ LIGHTERS ARE IN LIGHTERS.DM
|
||||
var/random_reagent = pick("fuel","saltpetre","synaptizine","green_vomit","potass_iodide","msg","lexorin","mannitol","spaceacillin","cryoxadone","holywater","tea","egg","haloperidol","mutagen","omnizine","carpet","aranesp","cryostylane","chocolate","bilk","cheese","rum","blood","charcoal","coffee","ectoplasm","space_drugs","milk","mutadone","antihol","teporone","insulin","salbutamol","toxin")
|
||||
reagents.add_reagent(random_reagent, 10)
|
||||
|
||||
/obj/item/clothing/mask/cigarette/joint
|
||||
name = "joint"
|
||||
desc = "A roll of ambrosium vulgaris wrapped in a thin paper. Dude."
|
||||
/obj/item/clothing/mask/cigarette/rollie
|
||||
name = "rollie"
|
||||
desc = "A roll of dried plant matter wrapped in thin paper."
|
||||
icon_state = "spliffoff"
|
||||
icon_on = "spliffon"
|
||||
icon_off = "spliffoff"
|
||||
@@ -217,35 +219,21 @@ LIGHTERS ARE IN LIGHTERS.DM
|
||||
smoketime = 180
|
||||
chem_volume = 50
|
||||
|
||||
/obj/item/clothing/mask/cigarette/joint/New()
|
||||
/obj/item/clothing/mask/cigarette/rollie/New()
|
||||
..()
|
||||
var/list/jointnames = list("joint","doobie","spliff","blunt")
|
||||
name = pick(jointnames)
|
||||
src.pixel_x = rand(-5.0, 5)
|
||||
src.pixel_y = rand(-5.0, 5)
|
||||
pixel_x = rand(-5, 5)
|
||||
pixel_y = rand(-5, 5)
|
||||
|
||||
/obj/item/clothing/mask/cigarette/joint/deus
|
||||
desc = "A roll of ambrosium deus wrapped in a thin paper. Dude."
|
||||
|
||||
/obj/item/weapon/cigbutt/roach
|
||||
name = "roach"
|
||||
desc = "A manky old roach."
|
||||
desc = "A manky old roach, or for non-stoners, a used rollup."
|
||||
icon_state = "roach"
|
||||
|
||||
/obj/item/weapon/cigbutt/roach/New()
|
||||
..()
|
||||
src.pixel_x = rand(-5.0, 5)
|
||||
src.pixel_y = rand(-5.0, 5)
|
||||
|
||||
/obj/item/clothing/mask/cigarette/handroll
|
||||
name = "hand-rolled cigarette"
|
||||
desc = "A roll of tobacco and nicotine, freshly rolled by hand."
|
||||
icon_state = "hr_cigoff"
|
||||
item_state = "hr_cigoff"
|
||||
icon_on = "hr_cigon" //Note - these are in masks.dmi not in cigarette.dmi
|
||||
icon_off = "hr_cigoff"
|
||||
type_butt = /obj/item/weapon/cigbutt
|
||||
chem_volume = 50
|
||||
pixel_x = rand(-5, 5)
|
||||
pixel_y = rand(-5, 5)
|
||||
|
||||
////////////
|
||||
// CIGARS //
|
||||
@@ -386,51 +374,30 @@ LIGHTERS ARE IN LIGHTERS.DM
|
||||
///////////
|
||||
//ROLLING//
|
||||
///////////
|
||||
obj/item/weapon/rollingpaper
|
||||
/obj/item/weapon/rollingpaper
|
||||
name = "rolling paper"
|
||||
desc = "A thin piece of paper used to make fine smokeables."
|
||||
icon = 'icons/obj/cigarettes.dmi'
|
||||
icon_state = "cig_paper"
|
||||
w_class = 1
|
||||
|
||||
|
||||
obj/item/weapon/rollingpaperpack
|
||||
name = "rolling paper pack"
|
||||
desc = "A pack of Nanotrasen brand rolling papers."
|
||||
icon = 'icons/obj/cigarettes.dmi'
|
||||
icon_state = "cig_paper_pack"
|
||||
w_class = 1
|
||||
var/papers = 25
|
||||
|
||||
obj/item/weapon/rollingpaperpack/attack_self(mob/user)
|
||||
if(papers > 1)
|
||||
var/obj/item/weapon/rollingpaper/P = new /obj/item/weapon/rollingpaper()
|
||||
user.put_in_inactive_hand(P)
|
||||
to_chat(user, "You take a paper out of the pack.")
|
||||
papers --
|
||||
else
|
||||
var/obj/item/weapon/rollingpaper/P = new /obj/item/weapon/rollingpaper()
|
||||
user.put_in_inactive_hand(P)
|
||||
to_chat(user, "You take the last paper out of the pack, and throw the pack away.")
|
||||
qdel(src)
|
||||
|
||||
/obj/item/weapon/rollingpaperpack/MouseDrop(atom/over_object)
|
||||
var/mob/M = usr
|
||||
if(M.restrained() || M.stat)
|
||||
/obj/item/weapon/rollingpaper/afterattack(atom/target, mob/user, proximity)
|
||||
if(!proximity)
|
||||
return
|
||||
|
||||
if(over_object == M)
|
||||
M.put_in_hands(src)
|
||||
|
||||
else if(istype(over_object, /obj/screen))
|
||||
switch(over_object.name)
|
||||
if("r_hand")
|
||||
M.unEquip(src)
|
||||
M.put_in_r_hand(src)
|
||||
if("l_hand")
|
||||
M.unEquip(src)
|
||||
M.put_in_l_hand(src)
|
||||
|
||||
/obj/item/weapon/rollingpaperpack/examine(mob/user)
|
||||
..(user)
|
||||
to_chat(user, "There are [src.papers] left")
|
||||
if(istype(target, /obj/item/weapon/reagent_containers/food/snacks/grown))
|
||||
var/obj/item/weapon/reagent_containers/food/snacks/grown/O = target
|
||||
if(O.dry)
|
||||
user.unEquip(target, 1)
|
||||
user.unEquip(src, 1)
|
||||
var/obj/item/clothing/mask/cigarette/rollie/R = new /obj/item/clothing/mask/cigarette/rollie(user.loc)
|
||||
R.chem_volume = target.reagents.total_volume
|
||||
target.reagents.trans_to(R, R.chem_volume)
|
||||
user.put_in_active_hand(R)
|
||||
to_chat(user, "<span class='notice'>You roll the [target.name] into a rolling paper.</span>")
|
||||
R.desc = "Dried [target.name] rolled up in a thin piece of paper."
|
||||
qdel(target)
|
||||
qdel(src)
|
||||
else
|
||||
to_chat(user, "<span class='warning'>You need to dry this first!</span>")
|
||||
else
|
||||
..()
|
||||
@@ -5,26 +5,6 @@
|
||||
* Bike Horns
|
||||
*/
|
||||
|
||||
/*
|
||||
* Banana Peals
|
||||
*/
|
||||
|
||||
/obj/item/weapon/bananapeel
|
||||
name = "banana peel"
|
||||
desc = "A peel from a banana."
|
||||
icon = 'icons/obj/items.dmi'
|
||||
icon_state = "banana_peel"
|
||||
item_state = "banana_peel"
|
||||
w_class = 1
|
||||
throwforce = 0
|
||||
throw_speed = 4
|
||||
throw_range = 20
|
||||
|
||||
/obj/item/weapon/bananapeel/Crossed(AM as mob|obj)
|
||||
if(istype(AM, /mob/living/carbon))
|
||||
var/mob/living/carbon/M = AM
|
||||
M.slip("banana peel", 4, 2)
|
||||
|
||||
/*
|
||||
* Soap
|
||||
*/
|
||||
|
||||
@@ -424,6 +424,7 @@
|
||||
else if(ghost)
|
||||
user.visible_message("<span class='notice'>[defib] buzzes: Resuscitation failed: Patient's brain is unresponsive. Further attempts may succeed.</span>")
|
||||
to_chat(ghost, "<span class='ghostalert'>Your heart is being defibrillated. Return to your body if you want to be revived!</span> (Verbs -> Ghost -> Re-enter corpse)")
|
||||
window_flash(ghost.client)
|
||||
ghost << sound('sound/effects/genetics.ogg')
|
||||
else
|
||||
user.visible_message("<span class='notice'>[defib] buzzes: Resuscitation failed.</span>")
|
||||
@@ -546,6 +547,7 @@
|
||||
else if(ghost)
|
||||
user.visible_message("<span class='notice'>[user] buzzes: Resuscitation failed: Patient's brain is unresponsive. Further attempts may succeed.</span>")
|
||||
to_chat(ghost, "<span class='ghostalert'>Your heart is being defibrillated. Return to your body if you want to be revived!</span> (Verbs -> Ghost -> Re-enter corpse)")
|
||||
window_flash(ghost.client)
|
||||
ghost << sound('sound/effects/genetics.ogg')
|
||||
else
|
||||
user.visible_message("<span class='warning'>[user] buzzes: Resuscitation failed.</span>")
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
/obj/item/weapon/disk
|
||||
name = "disk"
|
||||
icon = 'icons/obj/items.dmi'
|
||||
icon = 'icons/obj/module.dmi'
|
||||
w_class = 1
|
||||
item_state = "card-id"
|
||||
icon_state = "datadisk0"
|
||||
|
||||
@@ -115,8 +115,8 @@
|
||||
if(!user.IsAdvancedToolUser())
|
||||
return 0
|
||||
|
||||
M.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has been injected with [name] by [user.name] ([user.ckey])</font>")
|
||||
user.attack_log += text("\[[time_stamp()]\] <font color='red'>Used the [name] to inject [M.name] ([M.ckey])</font>")
|
||||
M.create_attack_log("<font color='orange'>Has been injected with [name] by [user.name] ([user.ckey])</font>")
|
||||
user.create_attack_log("<font color='red'>Used the [name] to inject [M.name] ([M.ckey])</font>")
|
||||
log_attack("[user.name] ([user.ckey]) used the [name] to inject [M.name] ([M.ckey])")
|
||||
|
||||
if(!iscarbon(user))
|
||||
|
||||
@@ -71,7 +71,7 @@
|
||||
/obj/item/weapon/pen/invisible,
|
||||
/obj/item/weapon/lipstick/random,
|
||||
/obj/item/weapon/grenade/smokebomb,
|
||||
/obj/item/weapon/corncob,
|
||||
/obj/item/weapon/grown/corncob,
|
||||
/obj/item/weapon/contraband/poster,
|
||||
/obj/item/weapon/bikehorn,
|
||||
/obj/item/weapon/beach_ball,
|
||||
@@ -85,8 +85,8 @@
|
||||
/obj/random/mech,
|
||||
/obj/item/toy/spinningtoy,
|
||||
/obj/item/toy/sword,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiadeus,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosiavulgaris,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosia/deus,
|
||||
/obj/item/weapon/reagent_containers/food/snacks/grown/ambrosia/vulgaris,
|
||||
/obj/item/device/paicard,
|
||||
/obj/item/device/violin,
|
||||
/obj/item/device/guitar,
|
||||
|
||||
@@ -9,7 +9,7 @@ var/turf/T
|
||||
icon_state = "banana"
|
||||
item_state = "flashbang"
|
||||
var/deliveryamt = 8
|
||||
var/spawner_type = /obj/item/weapon/bananapeel
|
||||
var/spawner_type = /obj/item/weapon/grown/bananapeel
|
||||
|
||||
/obj/item/weapon/grenade/bananade/prime()
|
||||
if(spawner_type && deliveryamt)
|
||||
@@ -38,7 +38,7 @@ var/turf/T
|
||||
|
||||
|
||||
/obj/item/weapon/grenade/bananade/casing/attackby(var/obj/item/I, mob/user as mob, params)
|
||||
if(istype(I, /obj/item/weapon/bananapeel))
|
||||
if(istype(I, /obj/item/weapon/grown/bananapeel))
|
||||
if(fillamt < 9)
|
||||
to_chat(usr, "<span class='notice'>You add another banana peel to the assembly.</span>")
|
||||
fillamt += 1
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
for(var/direction in alldirs)
|
||||
for(i = 0; i < 2; i++)
|
||||
number++
|
||||
var/obj/item/weapon/bananapeel/traitorpeel/peel = new /obj/item/weapon/bananapeel/traitorpeel(get_turf(src.loc))
|
||||
var/obj/item/weapon/grown/bananapeel/traitorpeel/peel = new /obj/item/weapon/grown/bananapeel/traitorpeel(get_turf(src.loc))
|
||||
/* var/direction = pick(alldirs)
|
||||
var/spaces = pick(1;150, 2)
|
||||
var/a = 0
|
||||
@@ -35,7 +35,7 @@
|
||||
step(peel,direction)
|
||||
else
|
||||
step(peel,direction)
|
||||
new /obj/item/weapon/bananapeel/traitorpeel(get_turf(src.loc))
|
||||
new /obj/item/weapon/grown/bananapeel/traitorpeel(get_turf(src.loc))
|
||||
qdel(src)
|
||||
return
|
||||
/*
|
||||
@@ -46,10 +46,10 @@
|
||||
return
|
||||
if(locate(/obj/structure/window) in T)
|
||||
return
|
||||
new /obj/item/weapon/bananapeel/traitorpeel(T)
|
||||
new /obj/item/weapon/grown/bananapeel/traitorpeel(T)
|
||||
*/
|
||||
|
||||
/obj/item/weapon/bananapeel/traitorpeel
|
||||
/obj/item/weapon/grown/bananapeel/traitorpeel
|
||||
name = "banana peel"
|
||||
desc = "A peel from a banana."
|
||||
icon = 'icons/obj/items.dmi'
|
||||
|
||||
@@ -170,7 +170,7 @@
|
||||
|
||||
/obj/item/weapon/grenade/clusterbuster/honk
|
||||
name = "Mega Honk Grenade"
|
||||
payload = /obj/item/weapon/bananapeel
|
||||
payload = /obj/item/weapon/grown/bananapeel
|
||||
|
||||
/obj/item/weapon/grenade/clusterbuster/honk_evil
|
||||
name = "Evil Mega Honk Grenade"
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
|
||||
for(var/i=1, i<=deliveryamt, i++)
|
||||
var/atom/movable/x = new spawner_type
|
||||
x.admin_spawned = admin_spawned
|
||||
x.loc = T
|
||||
if(prob(50))
|
||||
for(var/j = 1, j <= rand(1, 3), j++)
|
||||
|
||||
@@ -62,6 +62,15 @@
|
||||
target.update_handcuffed()
|
||||
return
|
||||
|
||||
/obj/item/weapon/restraints/handcuffs/sinew
|
||||
name = "sinew restraints"
|
||||
desc = "A pair of restraints fashioned from long strands of flesh."
|
||||
icon = 'icons/obj/mining.dmi'
|
||||
icon_state = "sinewcuff"
|
||||
item_state = "sinewcuff"
|
||||
breakouttime = 300 //Deciseconds = 30s
|
||||
cuffsound = 'sound/weapons/cablecuff.ogg'
|
||||
|
||||
/obj/item/weapon/restraints/handcuffs/cable
|
||||
name = "cable restraints"
|
||||
desc = "Looks like some cables tied together. Could be used to tie something up."
|
||||
|
||||
@@ -189,7 +189,7 @@
|
||||
sharp = 1
|
||||
edge = 1
|
||||
attack_verb = list("chopped", "sliced", "cut", "reaped")
|
||||
hitsound = 'sound/weapons/bladeslice.ogg'
|
||||
hitsound = 'sound/weapons/rapierhit.ogg'
|
||||
|
||||
/obj/item/weapon/nullrod/scythe/vibro
|
||||
name = "high frequency blade"
|
||||
@@ -197,6 +197,14 @@
|
||||
item_state = "hfrequency1"
|
||||
desc = "Bad references are the DNA of the soul."
|
||||
attack_verb = list("chopped", "sliced", "cut", "zandatsu'd")
|
||||
|
||||
/obj/item/weapon/nullrod/scythe/spellblade
|
||||
icon_state = "spellblade"
|
||||
item_state = "spellblade"
|
||||
icon = 'icons/obj/guns/magic.dmi'
|
||||
name = "dormant spellblade"
|
||||
desc = "The blade grants the wielder nearly limitless power...if they can figure out how to turn it on, that is."
|
||||
hitsound = 'sound/weapons/rapierhit.ogg'
|
||||
|
||||
/obj/item/weapon/nullrod/scythe/talking
|
||||
name = "possessed blade"
|
||||
@@ -204,7 +212,7 @@
|
||||
item_state = "talking_sword"
|
||||
desc = "When the station falls into chaos, it's nice to have a friend by your side."
|
||||
attack_verb = list("chopped", "sliced", "cut")
|
||||
hitsound = 'sound/weapons/bladeslice.ogg'
|
||||
hitsound = 'sound/weapons/rapierhit.ogg'
|
||||
var/possessed = FALSE
|
||||
|
||||
/obj/item/weapon/nullrod/scythe/talking/attack_self(mob/living/user)
|
||||
@@ -453,6 +461,51 @@
|
||||
if(prob(10))
|
||||
to_chat(H, "<span class='userdanger'>Being in the presence of [holder]'s [src] is interfering with your powers!</span>")
|
||||
|
||||
/obj/item/weapon/nullrod/salt
|
||||
name = "Holy Salt"
|
||||
icon = 'icons/obj/food/containers.dmi'
|
||||
icon_state = "saltshakersmall"
|
||||
desc = "While commonly used to repel some ghosts, it appears others are downright attracted to it."
|
||||
force = 0
|
||||
throwforce = 0
|
||||
var/ghostcall_CD = 0
|
||||
|
||||
|
||||
/obj/item/weapon/nullrod/salt/attack_self(mob/user)
|
||||
|
||||
if(!user.mind || user.mind.assigned_role != "Chaplain")
|
||||
to_chat(user, "<span class='notice'>You are not close enough with [ticker.Bible_deity_name] to use [src].</span>")
|
||||
return
|
||||
|
||||
if(!(ghostcall_CD > world.time))
|
||||
ghostcall_CD = world.time + 3000 //deciseconds..5 minutes
|
||||
user.visible_message("<span class='info'>[user] kneels and begins to utter a prayer to [ticker.Bible_deity_name] while drawing a circle with salt!</span>", \
|
||||
"<span class='info'>You kneel and begin a prayer to [ticker.Bible_deity_name] while drawing a circle!</span>")
|
||||
notify_ghosts("The Chaplain is calling ghosts to [get_area(src)] with [name]!", source = src)
|
||||
else
|
||||
to_chat(user, "<span class='notice'>You need to wait before using [src] again.</span>")
|
||||
return
|
||||
|
||||
|
||||
/obj/item/weapon/nullrod/rosary/bread
|
||||
name = "prayer bread"
|
||||
icon = 'icons/obj/food/food.dmi'
|
||||
icon_state = "baguette"
|
||||
desc = "a staple of worshipers of the Silentfather, this holy mime artifact has an odd effect on clowns."
|
||||
|
||||
/obj/item/weapon/nullrod/rosary/bread/process()
|
||||
if(ishuman(loc))
|
||||
var/mob/living/carbon/human/holder = loc
|
||||
//would like to make the holder mime if they have it in on thier person in general
|
||||
if(src == holder.l_hand || src == holder.r_hand) // Holding this in your hand will
|
||||
for(var/mob/living/carbon/human/H in range(5))
|
||||
if(H.mind.assigned_role == "Clown")
|
||||
H.Silence(10)
|
||||
animate_fade_grayscale(H,20)
|
||||
if(prob(10))
|
||||
to_chat(H, "<span class='userdanger'>Being in the presence of [holder]'s [src] is interfering with your honk!</span>")
|
||||
|
||||
|
||||
/obj/item/weapon/nullrod/missionary_staff
|
||||
name = "holy staff"
|
||||
desc = "It has a mysterious, protective aura."
|
||||
|
||||
@@ -152,6 +152,17 @@
|
||||
origin_tech = "materials=2;combat=4"
|
||||
attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "cut")
|
||||
|
||||
/obj/item/weapon/kitchen/knife/carrotshiv
|
||||
name = "carrot shiv"
|
||||
icon_state = "carrotshiv"
|
||||
item_state = "carrotshiv"
|
||||
desc = "Unlike other carrots, you should probably keep this far away from your eyes."
|
||||
force = 8
|
||||
throwforce = 12 //fuck git
|
||||
materials = list()
|
||||
origin_tech = "biotech=3;combat=2"
|
||||
attack_verb = list("shanked", "shivved")
|
||||
|
||||
/*
|
||||
* Rolling Pins
|
||||
*/
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
edge = 1
|
||||
origin_tech = "combat=5"
|
||||
attack_verb = list("lunged at", "stabbed")
|
||||
hitsound = 'sound/weapons/slash.ogg'
|
||||
hitsound = 'sound/weapons/rapierhit.ogg'
|
||||
materials = list(MAT_METAL = 1000)
|
||||
|
||||
/obj/item/weapon/melee/rapier/hit_reaction(mob/living/carbon/human/owner, attack_text, final_block_chance, damage, attack_type)
|
||||
|
||||
@@ -18,6 +18,17 @@
|
||||
var/minor_fault = 0 //If not 100% reliable, it will build up faults.
|
||||
var/chargerate = 1000 //how much power is given every tick in a recharger
|
||||
var/self_recharge = 0 //does it self recharge, over time, or not?
|
||||
var/grown_battery = FALSE // If it's a grown that acts as a battery, add a wire overlay to it.
|
||||
|
||||
/obj/item/weapon/stock_parts/cell/New()
|
||||
..()
|
||||
processing_objects.Add(src)
|
||||
charge = maxcharge
|
||||
updateicon()
|
||||
|
||||
/obj/item/weapon/stock_parts/cell/Destroy()
|
||||
processing_objects.Remove(src)
|
||||
return ..()
|
||||
|
||||
/obj/item/weapon/stock_parts/cell/suicide_act(mob/user)
|
||||
to_chat(viewers(user), "<span class='suicide'>[user] is licking the electrodes of the [src.name]! It looks like \he's trying to commit suicide.</span>")
|
||||
@@ -29,6 +40,17 @@
|
||||
else
|
||||
return PROCESS_KILL
|
||||
|
||||
/obj/item/weapon/stock_parts/cell/proc/updateicon()
|
||||
overlays.Cut()
|
||||
if(grown_battery)
|
||||
overlays += image('icons/obj/power.dmi', "grown_wires")
|
||||
if(charge < 0.01)
|
||||
return
|
||||
else if(charge/maxcharge >=0.995)
|
||||
overlays += image('icons/obj/power.dmi', "cell-o2")
|
||||
else
|
||||
overlays += image('icons/obj/power.dmi', "cell-o1")
|
||||
|
||||
/obj/item/weapon/stock_parts/cell/crap
|
||||
name = "\improper Nanotrasen brand rechargable AA battery"
|
||||
desc = "You can't top the plasma top." //TOTALLY TRADEMARK INFRINGEMENT
|
||||
@@ -119,14 +141,15 @@
|
||||
/obj/item/weapon/stock_parts/cell/potato
|
||||
name = "potato battery"
|
||||
desc = "A rechargable starch based power cell."
|
||||
origin_tech = "powerstorage=1"
|
||||
icon = 'icons/obj/power.dmi' //'icons/obj/harvest.dmi'
|
||||
icon_state = "potato_cell" //"potato_battery"
|
||||
icon = 'icons/obj/hydroponics/harvest.dmi'
|
||||
icon_state = "potato"
|
||||
origin_tech = "powerstorage=1;biotech=1"
|
||||
charge = 100
|
||||
maxcharge = 3000
|
||||
rating = 1
|
||||
materials = list()
|
||||
rating = 1
|
||||
minor_fault = 1
|
||||
grown_battery = TRUE //it has the overlays for wires
|
||||
|
||||
/obj/item/weapon/stock_parts/cell/high/slime
|
||||
name = "charged slime core"
|
||||
|
||||
@@ -159,52 +159,34 @@
|
||||
// -----------------------------
|
||||
|
||||
/obj/item/weapon/storage/bag/plants
|
||||
icon = 'icons/obj/hydroponics.dmi'
|
||||
name = "plant bag"
|
||||
icon = 'icons/obj/hydroponics/equipment.dmi'
|
||||
icon_state = "plantbag"
|
||||
name = "Plant Bag"
|
||||
storage_slots = 50; //the number of plant pieces it can carry.
|
||||
max_combined_w_class = 200 //Doesn't matter what this is, so long as it's more or equal to storage_slots * plants.w_class
|
||||
storage_slots = 100 //the number of plant pieces it can carry.
|
||||
max_combined_w_class = 100 //Doesn't matter what this is, so long as it's more or equal to storage_slots * plants.w_class
|
||||
max_w_class = 3
|
||||
w_class = 1
|
||||
can_hold = list("/obj/item/weapon/reagent_containers/food/snacks/grown","/obj/item/seeds","/obj/item/weapon/grown", "/obj/item/stack/tile/grass","/obj/item/stack/medical/ointment/aloe","/obj/item/stack/medical/bruise_pack/comfrey", "/obj/item/weapon/reagent_containers/honeycomb")
|
||||
can_hold = list("/obj/item/weapon/reagent_containers/food/snacks/grown","/obj/item/seeds","/obj/item/weapon/grown","/obj/item/weapon/reagent_containers/food/snacks/ash_flora")
|
||||
burn_state = FLAMMABLE
|
||||
|
||||
/obj/item/weapon/storage/bag/plants/portaseeder
|
||||
name = "portable seed extractor"
|
||||
desc = "For the enterprising botanist on the go. Less efficient than the stationary model, it creates one seed per plant."
|
||||
icon_state = "portaseeder"
|
||||
origin_tech = "biotech=3;engineering=2"
|
||||
|
||||
/obj/item/weapon/storage/bag/plants/portaseeder/verb/dissolve_contents()
|
||||
set name = "Activate Seed Extraction"
|
||||
set category = "Object"
|
||||
set desc = "Activate to convert your plants into plantable seeds."
|
||||
if(usr.stat || !usr.canmove || usr.restrained())
|
||||
|
||||
if(usr.incapacitated())
|
||||
return
|
||||
for(var/obj/item/O in contents)
|
||||
if(istype(O, /obj/item/weapon/reagent_containers/food/snacks/grown) || istype(O, /obj/item/weapon/grown))
|
||||
|
||||
var/datum/seed/new_seed_type
|
||||
if(istype(O, /obj/item/weapon/grown))
|
||||
var/obj/item/weapon/grown/F = O
|
||||
new_seed_type = plant_controller.seeds[F.plantname]
|
||||
else
|
||||
var/obj/item/weapon/reagent_containers/food/snacks/grown/F = O
|
||||
new_seed_type = plant_controller.seeds[F.plantname]
|
||||
|
||||
if(new_seed_type)
|
||||
var/obj/item/seeds/seeds = new(O.loc, O)
|
||||
seeds.seed_type = new_seed_type.name
|
||||
seeds.update_seed()
|
||||
qdel(O)
|
||||
|
||||
if(istype(O, /obj/item/stack/tile/grass))
|
||||
var/obj/item/stack/tile/grass/S = O
|
||||
S.use(1)
|
||||
new /obj/item/seeds/grassseed(O.loc, O)
|
||||
|
||||
seedify(O, 1)
|
||||
for(var/mob/M in range(1))
|
||||
if(M.s_active == src)
|
||||
src.close(M)
|
||||
close(M)
|
||||
|
||||
|
||||
// -----------------------------
|
||||
|
||||
@@ -139,8 +139,8 @@
|
||||
item_state = "botany"
|
||||
use_item_overlays = 1
|
||||
can_hold = list(
|
||||
"/obj/item/device/analyzer/plant_analyzer",
|
||||
"/obj/item/weapon/minihoe",
|
||||
"/obj/item/device/plant_analyzer",
|
||||
"/obj/item/weapon/cultivator",
|
||||
"/obj/item/weapon/hatchet",
|
||||
"/obj/item/weapon/reagent_containers/glass/bottle",
|
||||
"/obj/item/weapon/plantspray",
|
||||
@@ -566,7 +566,7 @@
|
||||
to_chat(user, "Planting explosives...")
|
||||
user.visible_message("[user.name] is fiddling with their toolbelt.")
|
||||
if(ismob(target))
|
||||
user.attack_log += "\[[time_stamp()]\] <font color='red'> [user.real_name] tried planting [name] on [target:real_name] ([target:ckey])</font>"
|
||||
user.create_attack_log("<font color='red'> [user.real_name] tried planting [name] on [target:real_name] ([target:ckey])</font>")
|
||||
log_attack("<font color='red'> [user.real_name] ([user.ckey]) tried planting [name] on [target:real_name] ([target:ckey])</font>")
|
||||
user.visible_message("\red [user.name] is trying to strap a belt to [target.name]!")
|
||||
|
||||
@@ -578,7 +578,7 @@
|
||||
var/location
|
||||
if(isturf(target)) location = target
|
||||
if(ismob(target))
|
||||
target:attack_log += "\[[time_stamp()]\]<font color='orange'> Had the [name] planted on them by [user.real_name] ([user.ckey])</font>"
|
||||
target:create_attack_log("<font color='orange'> Had the [name] planted on them by [user.real_name] ([user.ckey])</font>")
|
||||
user.visible_message("\red [user.name] finished planting an explosive on [target.name]!")
|
||||
target.overlays += image('icons/obj/assemblies.dmi', "plastic-explosive2")
|
||||
to_chat(user, "You sacrifice your belt for the sake of justice. Timer counting down from 15.")
|
||||
|
||||
@@ -44,8 +44,8 @@
|
||||
chaplain = 1
|
||||
|
||||
|
||||
M.attack_log += text("\[[time_stamp()]\] <font color='orange'>Has been attacked with [src.name] by [user.name] ([user.ckey])</font>")
|
||||
user.attack_log += text("\[[time_stamp()]\] <font color='red'>Used the [src.name] to attack [M.name] ([M.ckey])</font>")
|
||||
M.create_attack_log("<font color='orange'>Has been attacked with [src.name] by [user.name] ([user.ckey])</font>")
|
||||
user.create_attack_log("<font color='red'>Used the [src.name] to attack [M.name] ([M.ckey])</font>")
|
||||
log_attack("<font color='red'>[user.name] ([user.ckey]) attacked [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])</font>")
|
||||
|
||||
if(!iscarbon(user))
|
||||
|
||||
@@ -176,8 +176,8 @@
|
||||
|
||||
/obj/item/weapon/storage/fancy/cigarettes/New()
|
||||
..()
|
||||
flags |= NOREACT
|
||||
create_reagents(30 * storage_slots)//so people can inject cigarettes without opening a packet, now with being able to inject the whole one
|
||||
reagents.set_reacting(FALSE)
|
||||
for(var/i = 1 to storage_slots)
|
||||
var/obj/item/clothing/mask/cigarette/C = new cigarette_type(src)
|
||||
unlaced_cigarettes += C
|
||||
@@ -315,6 +315,26 @@
|
||||
item_state = "cigpacket"
|
||||
cigarette_type = /obj/item/clothing/mask/cigarette/random
|
||||
|
||||
/obj/item/weapon/storage/fancy/rollingpapers
|
||||
name = "rolling paper pack"
|
||||
desc = "A pack of NanoTrasen brand rolling papers."
|
||||
w_class = 1
|
||||
icon = 'icons/obj/cigarettes.dmi'
|
||||
icon_state = "cig_paper_pack"
|
||||
storage_slots = 10
|
||||
icon_type = "rolling paper"
|
||||
can_hold = list("/obj/item/weapon/rollingpaper")
|
||||
|
||||
/obj/item/weapon/storage/fancy/rollingpapers/New()
|
||||
..()
|
||||
for(var/i in 1 to storage_slots)
|
||||
new /obj/item/weapon/rollingpaper(src)
|
||||
|
||||
/obj/item/weapon/storage/fancy/rollingpapers/update_icon()
|
||||
overlays.Cut()
|
||||
if(!contents.len)
|
||||
overlays += "[icon_state]_empty"
|
||||
|
||||
/*
|
||||
* Vial Box
|
||||
*/
|
||||
|
||||
@@ -298,7 +298,7 @@
|
||||
usr.update_icons() //update our overlays
|
||||
if(silent)
|
||||
prevent_warning = 1
|
||||
W.loc = src
|
||||
W.forceMove(src)
|
||||
W.on_enter_storage(src)
|
||||
if(usr)
|
||||
if(usr.client && usr.s_active != src)
|
||||
@@ -344,9 +344,9 @@
|
||||
else
|
||||
W.layer = initial(W.layer)
|
||||
W.plane = initial(W.plane)
|
||||
W.loc = new_location
|
||||
W.forceMove(new_location)
|
||||
else
|
||||
W.loc = get_turf(src)
|
||||
W.forceMove(get_turf(src))
|
||||
|
||||
if(usr)
|
||||
src.orient2hud(usr)
|
||||
|
||||
@@ -431,6 +431,7 @@
|
||||
icon_state = "gchainsaw_off"
|
||||
flags = CONDUCT
|
||||
force = 13
|
||||
var/force_on = 21
|
||||
w_class = 5
|
||||
throwforce = 13
|
||||
throw_speed = 2
|
||||
@@ -449,8 +450,8 @@
|
||||
to_chat(user, "As you pull the starting cord dangling from [src], [on ? "it begins to whirr." : "the chain stops moving."]")
|
||||
if(on)
|
||||
playsound(loc, 'sound/weapons/chainsawstart.ogg', 50, 1)
|
||||
force = on ? 21 : 13
|
||||
throwforce = on ? 21 : 13
|
||||
force = on ? force_on : initial(force)
|
||||
throwforce = on ? force_on : initial(force)
|
||||
icon_state = "gchainsaw_[on ? "on" : "off"]"
|
||||
|
||||
if(hitsound == "swing_hit")
|
||||
@@ -469,6 +470,14 @@
|
||||
name = "OOOH BABY"
|
||||
desc = "<span class='warning'>VRRRRRRR!!!</span>"
|
||||
armour_penetration = 100
|
||||
force_on = 30
|
||||
|
||||
/obj/item/weapon/twohanded/required/chainsaw/doomslayer/hit_reaction(mob/living/carbon/human/owner, attack_text, final_block_chance, damage, attack_type)
|
||||
if(attack_type == PROJECTILE_ATTACK)
|
||||
owner.visible_message("<span class='danger'>Ranged attacks just make [owner] angrier!</span>")
|
||||
playsound(src, pick('sound/weapons/bulletflyby.ogg','sound/weapons/bulletflyby2.ogg','sound/weapons/bulletflyby3.ogg'), 75, 1)
|
||||
return 1
|
||||
return 0
|
||||
|
||||
|
||||
///CHAINSAW///
|
||||
|
||||
@@ -82,3 +82,8 @@
|
||||
machine_name = "CritterCare"
|
||||
icon_state = "refill_pet"
|
||||
charges = 31// of 94
|
||||
|
||||
/obj/item/weapon/vending_refill/chinese
|
||||
machine_name = "MrChangs"
|
||||
charges = 8// of 24
|
||||
|
||||
|
||||
Reference in New Issue
Block a user