mirror of
https://github.com/PolarisSS13/Polaris.git
synced 2026-08-22 20:56:33 +01:00
Merge branch 'master' of https://github.com/PolarisSS13/Polaris into tracking_implant
This commit is contained in:
@@ -79,6 +79,7 @@
|
||||
var/amount_grown = 0
|
||||
var/spiders_min = 6
|
||||
var/spiders_max = 24
|
||||
var/spider_type = /obj/effect/spider/spiderling
|
||||
New()
|
||||
pixel_x = rand(3,-3)
|
||||
pixel_y = rand(3,-3)
|
||||
@@ -105,7 +106,7 @@
|
||||
O = loc
|
||||
|
||||
for(var/i=0, i<num, i++)
|
||||
var/spiderling = new /obj/effect/spider/spiderling(src.loc, src)
|
||||
var/spiderling = new spider_type(src.loc, src)
|
||||
if(O)
|
||||
O.implants += spiderling
|
||||
qdel(src)
|
||||
@@ -114,6 +115,9 @@
|
||||
spiders_min = 1
|
||||
spiders_max = 3
|
||||
|
||||
/obj/effect/spider/eggcluster/small/frost
|
||||
spider_type = /obj/effect/spider/spiderling/frost
|
||||
|
||||
/obj/effect/spider/spiderling
|
||||
name = "spiderling"
|
||||
desc = "It never stays still for long."
|
||||
@@ -127,6 +131,9 @@
|
||||
var/travelling_in_vent = 0
|
||||
var/list/grow_as = list(/mob/living/simple_animal/hostile/giant_spider, /mob/living/simple_animal/hostile/giant_spider/nurse, /mob/living/simple_animal/hostile/giant_spider/hunter)
|
||||
|
||||
/obj/effect/spider/spiderling/frost
|
||||
grow_as = list(/mob/living/simple_animal/hostile/giant_spider/frost)
|
||||
|
||||
/obj/effect/spider/spiderling/New(var/location, var/atom/parent)
|
||||
pixel_x = rand(6,-6)
|
||||
pixel_y = rand(6,-6)
|
||||
|
||||
@@ -132,4 +132,19 @@
|
||||
/obj/item/device/t_scanner/dropped(mob/user)
|
||||
set_user_client(null)
|
||||
|
||||
/obj/item/device/t_scanner/upgraded
|
||||
name = "Upgraded T-ray Scanner"
|
||||
desc = "An upgraded version of the terahertz-ray emitter and scanner used to detect underfloor objects such as cables and pipes."
|
||||
matter = list(DEFAULT_WALL_MATERIAL = 500, PHORON = 150)
|
||||
origin_tech = list(TECH_MAGNET = 4, TECH_ENGINEERING = 5)
|
||||
scan_range = 3
|
||||
|
||||
/obj/item/device/t_scanner/advanced
|
||||
name = "Advanced T-ray Scanner"
|
||||
desc = "An advanced version of the terahertz-ray emitter and scanner used to detect underfloor objects such as cables and pipes."
|
||||
matter = list(DEFAULT_WALL_MATERIAL = 1500, PHORON = 200, SILVER = 250)
|
||||
origin_tech = list(TECH_MAGNET = 7, TECH_ENGINEERING = 7, TECH_MATERIAL = 6)
|
||||
scan_range = 7
|
||||
|
||||
|
||||
#undef OVERLAY_CACHE_LEN
|
||||
@@ -4,16 +4,18 @@
|
||||
desc = "This item spawns stack of 50 of a given material."
|
||||
icon = 'icons/misc/mark.dmi'
|
||||
icon_state = "x4"
|
||||
var/material = ""
|
||||
// var/material = ""
|
||||
var/obj/item/stack/type_to_spawn = null
|
||||
|
||||
/obj/fiftyspawner/New()
|
||||
//spawns the 50-stack and qdels self
|
||||
..()
|
||||
var/obj_path = text2path("/obj/item/stack/[material]")
|
||||
var/obj/item/stack/M = new obj_path(src.loc)
|
||||
// var/obj_path = text2path("/obj/item/stack/[material]")
|
||||
var/obj/item/stack/M = new type_to_spawn(src.loc)
|
||||
M.amount = M.max_amount //some stuff spawns with 60, we're still calling it fifty
|
||||
M.update_icon() // Some stacks have different sprites depending on how full they are.
|
||||
qdel(src)
|
||||
|
||||
/obj/fiftyspawner/rods
|
||||
name = "stack of rods" //this needs to be defined for cargo
|
||||
material = "rods"
|
||||
type_to_spawn = /obj/item/stack/rods
|
||||
@@ -1,7 +1,7 @@
|
||||
/obj/item/stack/medical
|
||||
name = "medical pack"
|
||||
singular_name = "medical pack"
|
||||
icon = 'icons/obj/items.dmi'
|
||||
icon = 'icons/obj/stacks.dmi'
|
||||
amount = 10
|
||||
max_amount = 10
|
||||
w_class = ITEMSIZE_SMALL
|
||||
@@ -64,6 +64,7 @@
|
||||
desc = "Some sterile gauze to wrap around bloody stumps."
|
||||
icon_state = "brutepack"
|
||||
origin_tech = list(TECH_BIO = 1)
|
||||
no_variants = FALSE
|
||||
|
||||
/obj/item/stack/medical/bruise_pack/attack(mob/living/carbon/M as mob, mob/user as mob)
|
||||
if(..())
|
||||
@@ -123,6 +124,7 @@
|
||||
icon_state = "ointment"
|
||||
heal_burn = 1
|
||||
origin_tech = list(TECH_BIO = 1)
|
||||
no_variants = FALSE
|
||||
|
||||
/obj/item/stack/medical/ointment/attack(mob/living/carbon/M as mob, mob/user as mob)
|
||||
if(..())
|
||||
|
||||
@@ -2,11 +2,12 @@
|
||||
name = "nanopaste"
|
||||
singular_name = "nanite swarm"
|
||||
desc = "A tube of paste containing swarms of repair nanites. Very effective in repairing robotic machinery."
|
||||
icon = 'icons/obj/nanopaste.dmi'
|
||||
icon_state = "tube"
|
||||
icon = 'icons/obj/stacks.dmi'
|
||||
icon_state = "nanopaste"
|
||||
origin_tech = list(TECH_MATERIAL = 4, TECH_ENGINEERING = 3)
|
||||
amount = 10
|
||||
w_class = ITEMSIZE_SMALL
|
||||
no_variants = FALSE
|
||||
|
||||
/obj/item/stack/nanopaste/attack(mob/living/M as mob, mob/user as mob)
|
||||
if (!istype(M) || !istype(user))
|
||||
|
||||
@@ -21,10 +21,19 @@
|
||||
uses_charge = 1
|
||||
charge_costs = list(500)
|
||||
stacktype = /obj/item/stack/rods
|
||||
no_variants = TRUE
|
||||
|
||||
/obj/item/stack/rods/New()
|
||||
..()
|
||||
recipes = rods_recipes
|
||||
update_icon()
|
||||
|
||||
/obj/item/stack/rods/update_icon()
|
||||
var/amount = get_amount()
|
||||
if((amount <= 5) && (amount > 0))
|
||||
icon_state = "rods-[amount]"
|
||||
else
|
||||
icon_state = "rods"
|
||||
|
||||
var/global/list/datum/stack_recipe/rods_recipes = list( \
|
||||
new/datum/stack_recipe("grille", /obj/structure/grille, 2, time = 10, one_per_turf = 1, on_floor = 1),
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
desc = "The by-product of human farming."
|
||||
singular_name = "human skin piece"
|
||||
icon_state = "sheet-hide"
|
||||
no_variants = FALSE
|
||||
|
||||
/obj/item/stack/material/animalhide/human
|
||||
amount = 50
|
||||
@@ -80,6 +81,7 @@
|
||||
desc = "This hide was stripped of it's hair, but still needs tanning."
|
||||
singular_name = "hairless hide piece"
|
||||
icon_state = "sheet-hairlesshide"
|
||||
no_variants = FALSE
|
||||
|
||||
/obj/item/stack/material/hairlesshide
|
||||
amount = 50
|
||||
@@ -91,6 +93,7 @@
|
||||
icon_state = "sheet-wetleather"
|
||||
var/wetness = 30 //Reduced when exposed to high temperautres
|
||||
var/drying_threshold_temperature = 500 //Kelvin to start drying
|
||||
no_variants = FALSE
|
||||
|
||||
/obj/item/stack/material/wetleather
|
||||
amount = 50
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
/obj/item/stack
|
||||
gender = PLURAL
|
||||
origin_tech = list(TECH_MATERIAL = 1)
|
||||
icon = 'icons/obj/stacks.dmi'
|
||||
var/list/datum/stack_recipe/recipes
|
||||
var/singular_name
|
||||
var/amount = 1
|
||||
@@ -21,6 +22,7 @@
|
||||
var/uses_charge = 0
|
||||
var/list/charge_costs = null
|
||||
var/list/datum/matter_synth/synths = null
|
||||
var/no_variants = TRUE // Determines whether the item should update it's sprites based on amount.
|
||||
|
||||
/obj/item/stack/New(var/loc, var/amount=null)
|
||||
..()
|
||||
@@ -28,6 +30,7 @@
|
||||
stacktype = type
|
||||
if (amount)
|
||||
src.amount = amount
|
||||
update_icon()
|
||||
return
|
||||
|
||||
/obj/item/stack/Destroy()
|
||||
@@ -37,6 +40,18 @@
|
||||
usr << browse(null, "window=stack")
|
||||
return ..()
|
||||
|
||||
/obj/item/stack/update_icon()
|
||||
if(no_variants)
|
||||
icon_state = initial(icon_state)
|
||||
else
|
||||
if(amount <= (max_amount * (1/3)))
|
||||
icon_state = initial(icon_state)
|
||||
else if (amount <= (max_amount * (2/3)))
|
||||
icon_state = "[initial(icon_state)]_2"
|
||||
else
|
||||
icon_state = "[initial(icon_state)]_3"
|
||||
item_state = initial(icon_state)
|
||||
|
||||
/obj/item/stack/examine(mob/user)
|
||||
if(..(user, 1))
|
||||
if(!uses_charge)
|
||||
@@ -189,6 +204,7 @@
|
||||
if(usr)
|
||||
usr.remove_from_mob(src)
|
||||
qdel(src) //should be safe to qdel immediately since if someone is still using this stack it will persist for a little while longer
|
||||
update_icon()
|
||||
return 1
|
||||
else
|
||||
if(get_amount() < used)
|
||||
@@ -205,6 +221,7 @@
|
||||
return 0
|
||||
else
|
||||
amount += extra
|
||||
update_icon()
|
||||
return 1
|
||||
else if(!synths || synths.len < uses_charge)
|
||||
return 0
|
||||
@@ -298,7 +315,7 @@
|
||||
|
||||
/obj/item/stack/attack_hand(mob/user as mob)
|
||||
if (user.get_inactive_hand() == src)
|
||||
var/N = input("How many stacks of [src] would you like to split off?", "Split stacks", 1) as num|null
|
||||
var/N = input("How many stacks of [src] would you like to split off? There are currently [amount].", "Split stacks", 1) as num|null
|
||||
if(N)
|
||||
var/obj/item/stack/F = src.split(N)
|
||||
if (F)
|
||||
|
||||
@@ -2,48 +2,48 @@
|
||||
|
||||
/obj/fiftyspawner/grass
|
||||
name = "stack of grass"
|
||||
material = "tile/grass"
|
||||
type_to_spawn = /obj/item/stack/tile/grass
|
||||
|
||||
/obj/fiftyspawner/wood
|
||||
name = "stack of wood"
|
||||
material = "tile/wood"
|
||||
type_to_spawn = /obj/item/stack/tile/wood
|
||||
|
||||
/obj/fiftyspawner/carpet
|
||||
name = "stack of carpet"
|
||||
material = "tile/carpet"
|
||||
type_to_spawn = /obj/item/stack/tile/carpet
|
||||
|
||||
/obj/fiftyspawner/bluecarpet
|
||||
name = "stack of blue carpet"
|
||||
material = "tile/carpet/blue"
|
||||
type_to_spawn = /obj/item/stack/tile/carpet/blue
|
||||
|
||||
/obj/fiftyspawner/floor
|
||||
name = "stack of floor tiles"
|
||||
material = "tile/floor"
|
||||
type_to_spawn = /obj/item/stack/tile/floor
|
||||
|
||||
/obj/fiftyspawner/floor_red
|
||||
name = "stack of red floor tiles"
|
||||
material = "tile/floor_red"
|
||||
type_to_spawn = /obj/item/stack/tile/floor/red
|
||||
|
||||
/obj/fiftyspawner/floor_steel
|
||||
name = "stack of steel floor tiles"
|
||||
material = "tile/floor_steel"
|
||||
type_to_spawn = /obj/item/stack/tile/floor/steel
|
||||
|
||||
/obj/fiftyspawner/floor_white
|
||||
name = "stack of white floor tiles"
|
||||
material = "tile/floor_white"
|
||||
type_to_spawn = /obj/item/stack/tile/floor/white
|
||||
|
||||
/obj/fiftyspawner/floor_yellow
|
||||
name = "stack of yellow floor tiles"
|
||||
material = "tile/floor_yellow"
|
||||
type_to_spawn = /obj/item/stack/tile/floor/yellow
|
||||
|
||||
/obj/fiftyspawner/floor_dark
|
||||
name = "stack of dark floor tiles"
|
||||
material = "tile/floor_dark"
|
||||
type_to_spawn = /obj/item/stack/tile/floor/dark
|
||||
|
||||
/obj/fiftyspawner/floor_freezer
|
||||
name = "stack of freezer tiles"
|
||||
material = "tile/floor_freezer"
|
||||
type_to_spawn = /obj/item/stack/tile/floor/freezer
|
||||
|
||||
/obj/fiftyspawner/linoleum
|
||||
name = "stack of linoleum tiles"
|
||||
material = "tile/linoleum"
|
||||
type_to_spawn = /obj/item/stack/tile/linoleum
|
||||
@@ -36,6 +36,7 @@
|
||||
throw_range = 20
|
||||
flags = 0
|
||||
origin_tech = list(TECH_BIO = 1)
|
||||
no_variants = FALSE
|
||||
|
||||
/obj/item/stack/tile/grass/fifty
|
||||
amount = 50
|
||||
@@ -52,6 +53,7 @@
|
||||
throw_speed = 5
|
||||
throw_range = 20
|
||||
flags = 0
|
||||
no_variants = FALSE
|
||||
|
||||
/obj/item/stack/tile/wood/fifty
|
||||
amount = 50
|
||||
@@ -77,12 +79,14 @@
|
||||
throw_speed = 5
|
||||
throw_range = 20
|
||||
flags = 0
|
||||
no_variants = FALSE
|
||||
|
||||
/obj/item/stack/tile/carpet/blue
|
||||
name = "blue carpet"
|
||||
singular_name = "blue carpet"
|
||||
desc = "A piece of blue carpet. It is the same size as a normal floor tile!"
|
||||
icon_state = "tile-bluecarpet"
|
||||
no_variants = FALSE
|
||||
|
||||
// TODO - Add descriptions to these
|
||||
/obj/item/stack/tile/carpet/bcarpet
|
||||
@@ -111,29 +115,34 @@
|
||||
throw_speed = 5
|
||||
throw_range = 20
|
||||
flags = CONDUCT
|
||||
no_variants = FALSE
|
||||
|
||||
/obj/item/stack/tile/floor/red
|
||||
name = "red floor tile"
|
||||
singular_name = "red floor tile"
|
||||
color = COLOR_RED_GRAY
|
||||
icon_state = "tile_white"
|
||||
no_variants = FALSE
|
||||
|
||||
// VOREStation Edit
|
||||
/obj/item/stack/tile/floor/techgrey
|
||||
name = "grey techfloor tile"
|
||||
singular_name = "grey techfloor tile"
|
||||
icon_state = "techtile_grey"
|
||||
no_variants = FALSE
|
||||
|
||||
/obj/item/stack/tile/floor/techgrid
|
||||
name = "grid techfloor tile"
|
||||
singular_name = "grid techfloor tile"
|
||||
icon_state = "techtile_grid"
|
||||
no_variants = FALSE
|
||||
|
||||
/obj/item/stack/tile/floor/steel_dirty
|
||||
name = "steel floor tile"
|
||||
singular_name = "steel floor tile"
|
||||
icon_state = "tile_steel"
|
||||
matter = list("plasteel" = SHEET_MATERIAL_AMOUNT / 4)
|
||||
no_variants = FALSE
|
||||
// VOREStation Edit End
|
||||
|
||||
/obj/item/stack/tile/floor/steel
|
||||
@@ -141,30 +150,35 @@
|
||||
singular_name = "steel floor tile"
|
||||
icon_state = "tile_steel"
|
||||
matter = list("plasteel" = SHEET_MATERIAL_AMOUNT / 4)
|
||||
no_variants = FALSE
|
||||
|
||||
/obj/item/stack/tile/floor/white
|
||||
name = "white floor tile"
|
||||
singular_name = "white floor tile"
|
||||
icon_state = "tile_white"
|
||||
matter = list("plastic" = SHEET_MATERIAL_AMOUNT / 4)
|
||||
no_variants = FALSE
|
||||
|
||||
/obj/item/stack/tile/floor/yellow
|
||||
name = "yellow floor tile"
|
||||
singular_name = "yellow floor tile"
|
||||
color = COLOR_BROWN
|
||||
icon_state = "tile_white"
|
||||
no_variants = FALSE
|
||||
|
||||
/obj/item/stack/tile/floor/dark
|
||||
name = "dark floor tile"
|
||||
singular_name = "dark floor tile"
|
||||
icon_state = "fr_tile"
|
||||
icon_state = "tile_steel"
|
||||
matter = list("plasteel" = SHEET_MATERIAL_AMOUNT / 4)
|
||||
no_variants = FALSE
|
||||
|
||||
/obj/item/stack/tile/floor/freezer
|
||||
name = "freezer floor tile"
|
||||
singular_name = "freezer floor tile"
|
||||
icon_state = "tile_freezer"
|
||||
matter = list("plastic" = SHEET_MATERIAL_AMOUNT / 4)
|
||||
no_variants = FALSE
|
||||
|
||||
/obj/item/stack/tile/floor/cyborg
|
||||
name = "floor tile synthesizer"
|
||||
@@ -186,3 +200,4 @@
|
||||
throw_speed = 5
|
||||
throw_range = 20
|
||||
flags = 0
|
||||
no_variants = FALSE
|
||||
|
||||
@@ -287,6 +287,7 @@
|
||||
desc = "Woefully underpowered in D20."
|
||||
icon = 'icons/obj/weapons.dmi'
|
||||
icon_state = "katana"
|
||||
item_state = "katana"
|
||||
item_icons = list(
|
||||
slot_l_hand_str = 'icons/mob/items/lefthand_material.dmi',
|
||||
slot_r_hand_str = 'icons/mob/items/righthand_material.dmi',
|
||||
@@ -697,19 +698,6 @@
|
||||
desc = "A \"Space Life\" brand Emergency Response Team Commander action figure."
|
||||
icon_state = "ert"
|
||||
|
||||
/obj/item/toy/katana
|
||||
name = "replica katana"
|
||||
desc = "Woefully underpowered in D20."
|
||||
icon = 'icons/obj/weapons.dmi'
|
||||
icon_state = "katana"
|
||||
item_state = "katana"
|
||||
flags = CONDUCT
|
||||
slot_flags = SLOT_BELT | SLOT_BACK
|
||||
force = 5
|
||||
throwforce = 5
|
||||
w_class = ITEMSIZE_NORMAL
|
||||
attack_verb = list("attacked", "slashed", "stabbed", "sliced")
|
||||
|
||||
/obj/item/toy/therapy_red
|
||||
name = "red therapy doll"
|
||||
desc = "A toy for therapeutic and recreational purposes. This one is red."
|
||||
@@ -898,4 +886,4 @@
|
||||
icon_state = "tinyxmastree"
|
||||
w_class = ITEMSIZE_TINY
|
||||
force = 1
|
||||
throwforce = 1
|
||||
throwforce = 1
|
||||
|
||||
@@ -8,16 +8,27 @@
|
||||
w_class = ITEMSIZE_SMALL
|
||||
matter = list(DEFAULT_WALL_MATERIAL = 1000, "glass" = 1000)
|
||||
var/obj/item/weapon/implant/imp = null
|
||||
var/active = 1
|
||||
|
||||
/obj/item/weapon/implanter/attack_self(var/mob/user)
|
||||
active = !active
|
||||
to_chat(user, "<span class='notice'>You [active ? "" : "de"]activate \the [src].</span>")
|
||||
update()
|
||||
|
||||
/obj/item/weapon/implanter/verb/remove_implant(var/mob/user)
|
||||
set category = "Object"
|
||||
set name = "Remove Implant"
|
||||
set src in usr
|
||||
|
||||
if(!imp)
|
||||
return ..()
|
||||
return
|
||||
imp.loc = get_turf(src)
|
||||
user.put_in_hands(imp)
|
||||
user << "<span class='notice'>You remove \the [imp] from \the [src].</span>"
|
||||
to_chat(user, "<span class='notice'>You remove \the [imp] from \the [src].</span>")
|
||||
name = "implanter"
|
||||
imp = null
|
||||
update()
|
||||
|
||||
return
|
||||
|
||||
/obj/item/weapon/implanter/proc/update()
|
||||
@@ -25,39 +36,42 @@
|
||||
src.icon_state = "implanter1"
|
||||
else
|
||||
src.icon_state = "implanter0"
|
||||
src.icon_state += "_[active]"
|
||||
return
|
||||
|
||||
/obj/item/weapon/implanter/attack(mob/M as mob, mob/user as mob)
|
||||
if (!istype(M, /mob/living/carbon))
|
||||
return
|
||||
if (user && src.imp)
|
||||
M.visible_message("<span class='warning'>[user] is attemping to implant [M].</span>")
|
||||
if(active)
|
||||
if (imp)
|
||||
M.visible_message("<span class='warning'>[user] is attemping to implant [M].</span>")
|
||||
|
||||
user.setClickCooldown(DEFAULT_QUICK_COOLDOWN)
|
||||
user.do_attack_animation(M)
|
||||
user.setClickCooldown(DEFAULT_QUICK_COOLDOWN)
|
||||
user.do_attack_animation(M)
|
||||
|
||||
var/turf/T1 = get_turf(M)
|
||||
if (T1 && ((M == user) || do_after(user, 50)))
|
||||
if(user && M && (get_turf(M) == T1) && src && src.imp)
|
||||
M.visible_message("<span class='warning'>[M] has been implanted by [user].</span>")
|
||||
var/turf/T1 = get_turf(M)
|
||||
if (T1 && ((M == user) || do_after(user, 50)))
|
||||
if(user && M && (get_turf(M) == T1) && src && src.imp)
|
||||
M.visible_message("<span class='warning'>[M] has been implanted by [user].</span>")
|
||||
|
||||
admin_attack_log(user, M, "Implanted using \the [src.name] ([src.imp.name])", "Implanted with \the [src.name] ([src.imp.name])", "used an implanter, [src.name] ([src.imp.name]), on")
|
||||
admin_attack_log(user, M, "Implanted using \the [src.name] ([src.imp.name])", "Implanted with \the [src.name] ([src.imp.name])", "used an implanter, [src.name] ([src.imp.name]), on")
|
||||
|
||||
if(src.imp.implanted(M))
|
||||
src.imp.loc = M
|
||||
src.imp.imp_in = M
|
||||
src.imp.implanted = 1
|
||||
if (ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
var/obj/item/organ/external/affected = H.get_organ(user.zone_sel.selecting)
|
||||
affected.implants += src.imp
|
||||
imp.part = affected
|
||||
if(src.imp.implanted(M))
|
||||
src.imp.loc = M
|
||||
src.imp.imp_in = M
|
||||
src.imp.implanted = 1
|
||||
if (ishuman(M))
|
||||
var/mob/living/carbon/human/H = M
|
||||
var/obj/item/organ/external/affected = H.get_organ(user.zone_sel.selecting)
|
||||
affected.implants += src.imp
|
||||
imp.part = affected
|
||||
|
||||
BITSET(H.hud_updateflag, IMPLOYAL_HUD)
|
||||
|
||||
src.imp = null
|
||||
update()
|
||||
BITSET(H.hud_updateflag, IMPLOYAL_HUD)
|
||||
|
||||
src.imp = null
|
||||
update()
|
||||
else
|
||||
to_chat(user, "<span class='warning'>You need to activate \the [src.name] first.</span>")
|
||||
return
|
||||
|
||||
/obj/item/weapon/implanter/loyalty
|
||||
@@ -112,19 +126,26 @@
|
||||
var/obj/item/weapon/implant/compressed/c = imp
|
||||
if (!c) return
|
||||
if (c.scanned == null)
|
||||
user << "Please scan an object with the implanter first."
|
||||
to_chat(user, "Please scan an object with the implanter first.")
|
||||
return
|
||||
..()
|
||||
|
||||
/obj/item/weapon/implanter/compressed/afterattack(atom/A, mob/user as mob, proximity)
|
||||
if(!proximity)
|
||||
return
|
||||
if(!active)
|
||||
to_chat(user, "<span class='warning'>Activate \the [src.name] first.</span>")
|
||||
return
|
||||
if(istype(A,/obj/item) && imp)
|
||||
var/obj/item/weapon/implant/compressed/c = imp
|
||||
if (c.scanned)
|
||||
user << "<span class='warning'>Something is already scanned inside the implant!</span>"
|
||||
to_chat(user, "<span class='warning'>Something is already scanned inside the implant!</span>")
|
||||
return
|
||||
c.scanned = A
|
||||
if(istype(A, /obj/item/weapon/storage))
|
||||
to_chat(user, "<span class='warning'>You can't store \the [A.name] in this!</span>")
|
||||
c.scanned = null
|
||||
return
|
||||
if(istype(A.loc,/mob/living/carbon/human))
|
||||
var/mob/living/carbon/human/H = A.loc
|
||||
H.remove_from_mob(A)
|
||||
|
||||
@@ -85,19 +85,4 @@
|
||||
thrown_force_divisor = 0.25 // as above
|
||||
dulled_divisor = 0.75 //Still metal on a long pole
|
||||
w_class = ITEMSIZE_SMALL
|
||||
attack_verb = list("slashed", "sliced", "cut", "clawed")
|
||||
|
||||
/obj/item/weapon/material/scythe
|
||||
icon_state = "scythe0"
|
||||
name = "scythe"
|
||||
desc = "A sharp and curved blade on a long fibremetal handle, this tool makes it easy to reap what you sow."
|
||||
force_divisor = 0.275 // 16 with hardness 60 (steel)
|
||||
thrown_force_divisor = 0.25 // 5 with weight 20 (steel)
|
||||
sharp = 1
|
||||
edge = 1
|
||||
throw_speed = 1
|
||||
throw_range = 3
|
||||
w_class = ITEMSIZE_LARGE
|
||||
slot_flags = SLOT_BACK
|
||||
origin_tech = list(TECH_MATERIAL = 2, TECH_COMBAT = 2)
|
||||
attack_verb = list("chopped", "sliced", "cut", "reaped")
|
||||
attack_verb = list("slashed", "sliced", "cut", "clawed")
|
||||
@@ -123,6 +123,15 @@
|
||||
var/obj/effect/plant/P = A
|
||||
P.die_off()
|
||||
|
||||
/obj/item/weapon/material/twohanded/fireaxe/scythe
|
||||
icon_state = "scythe0"
|
||||
base_icon = "scythe"
|
||||
name = "scythe"
|
||||
desc = "A sharp and curved blade on a long fibremetal handle, this tool makes it easy to reap what you sow."
|
||||
force_divisor = 0.65
|
||||
origin_tech = list(TECH_MATERIAL = 2, TECH_COMBAT = 2)
|
||||
attack_verb = list("chopped", "sliced", "cut", "reaped")
|
||||
|
||||
//spears, bay edition
|
||||
/obj/item/weapon/material/twohanded/spear
|
||||
icon_state = "spearglass0"
|
||||
|
||||
@@ -125,6 +125,12 @@
|
||||
else
|
||||
return ..()
|
||||
|
||||
/obj/structure/girder/proc/take_damage(var/damage)
|
||||
health -= damage
|
||||
|
||||
if(health <= 0)
|
||||
dismantle()
|
||||
|
||||
/obj/structure/girder/proc/construct_wall(obj/item/stack/material/S, mob/user)
|
||||
var/amount_to_use = reinf_material ? 1 : 2
|
||||
if(S.get_amount() < amount_to_use)
|
||||
|
||||
Reference in New Issue
Block a user