Merge branch 'master' of https://github.com/Citadel-Station-13/Citadel-Station-13 into Initialize(mapload)
This commit is contained in:
@@ -16,7 +16,7 @@
|
||||
playsound(loc, 'sound/items/welder.ogg', 100, TRUE)
|
||||
|
||||
/obj/structure/arachnid/run_obj_armor(damage_amount, damage_type, damage_flag = 0, attack_dir)
|
||||
if(damage_flag == "melee")
|
||||
if(damage_flag == MELEE)
|
||||
switch(damage_type)
|
||||
if(BURN)
|
||||
damage_amount *= 2
|
||||
|
||||
@@ -18,9 +18,6 @@
|
||||
/obj/effect/acid_act()
|
||||
return
|
||||
|
||||
/obj/effect/mech_melee_attack(obj/mecha/M)
|
||||
return 0
|
||||
|
||||
/obj/effect/blob_act(obj/structure/blob/B)
|
||||
return
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
|
||||
|
||||
/obj/structure/spider/run_obj_armor(damage_amount, damage_type, damage_flag = 0, attack_dir)
|
||||
if(damage_flag == "melee")
|
||||
if(damage_flag == MELEE)
|
||||
switch(damage_type)
|
||||
if(BURN)
|
||||
damage_amount *= 2
|
||||
|
||||
@@ -129,14 +129,18 @@
|
||||
"<span class='userdanger'>Your [I.name] shields you from [src]!</span>")
|
||||
continue
|
||||
L.visible_message("<span class='warning'>[L] is struck by a [name]!</span>", "<span class='userdanger'>You're struck by a [name]!</span>")
|
||||
L.apply_damage(damage, BURN, "chest", L.run_armor_check("chest", "laser", "Your armor absorbs [src]!", "Your armor blocks part of [src]!", 0, "Your armor was penetrated by [src]!"))
|
||||
L.apply_damage(damage, BURN, "chest", L.run_armor_check("chest", LASER, "Your armor absorbs [src]!", "Your armor blocks part of [src]!", 0, "Your armor was penetrated by [src]!"))
|
||||
log_combat(user, L, "struck with a volt blast")
|
||||
hit_amount++
|
||||
for(var/obj/mecha/M in T)
|
||||
if(M.occupant)
|
||||
if(is_servant_of_ratvar(M.occupant))
|
||||
continue
|
||||
to_chat(M.occupant, "<span class='userdanger'>Your [M.name] is struck by a [name]!</span>")
|
||||
for(var/obj/vehicle/sealed/mecha/M in T)
|
||||
if(LAZYLEN(M.occupants))
|
||||
for(var/mob/living/MB in M.occupants)
|
||||
if(is_servant_of_ratvar(MB))
|
||||
continue
|
||||
else
|
||||
to_chat(MB, "<span class='userdanger'>Your [M.name] is struck by a [name]!</span>")
|
||||
continue
|
||||
|
||||
M.visible_message("<span class='warning'>[M] is struck by a [name]!</span>")
|
||||
M.take_damage(damage, BURN, 0, 0)
|
||||
hit_amount++
|
||||
|
||||
@@ -841,9 +841,6 @@ GLOBAL_VAR_INIT(embedpocalypse, FALSE) // if true, all items will be able to emb
|
||||
return ..()
|
||||
return 0
|
||||
|
||||
/obj/item/mech_melee_attack(obj/mecha/M)
|
||||
return 0
|
||||
|
||||
/obj/item/burn()
|
||||
if(!QDELETED(src))
|
||||
var/turf/T = get_turf(src)
|
||||
|
||||
@@ -24,7 +24,7 @@ RLD
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
custom_materials = list(/datum/material/iron=100000)
|
||||
req_access_txt = "11"
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50)
|
||||
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 100, ACID = 50)
|
||||
resistance_flags = FIRE_PROOF
|
||||
var/datum/effect_system/spark_spread/spark_system
|
||||
var/matter = 0
|
||||
|
||||
@@ -206,7 +206,7 @@ GLOBAL_LIST_INIT(fluid_duct_recipes, list(
|
||||
throw_range = 5
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
custom_materials = list(/datum/material/iron=75000, /datum/material/glass=37500)
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50)
|
||||
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 100, ACID = 50)
|
||||
resistance_flags = FIRE_PROOF
|
||||
var/datum/effect_system/spark_spread/spark_system
|
||||
var/effectcooldown
|
||||
|
||||
@@ -14,7 +14,7 @@ RSF
|
||||
density = FALSE
|
||||
anchored = FALSE
|
||||
item_flags = NOBLUDGEON
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
|
||||
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 0, ACID = 0)
|
||||
var/matter = 0
|
||||
var/mode = 1
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
|
||||
@@ -20,20 +20,20 @@
|
||||
if(C.attached_accessory)
|
||||
to_chat(user,"<span class='warning'>Kind of hard to sew around [C.attached_accessory].</span>")
|
||||
return
|
||||
if(C.armor.getRating("melee") < 10)
|
||||
C.armor = C.armor.setRating("melee" = 10)
|
||||
if(C.armor.getRating(MELEE) < 10)
|
||||
C.armor = C.armor.setRating(MELEE = 10)
|
||||
used = TRUE
|
||||
if(C.armor.getRating("laser") < 10)
|
||||
C.armor = C.armor.setRating("laser" = 10)
|
||||
if(C.armor.getRating(LASER) < 10)
|
||||
C.armor = C.armor.setRating(LASER = 10)
|
||||
used = TRUE
|
||||
if(C.armor.getRating("fire") < 40)
|
||||
C.armor = C.armor.setRating("fire" = 40)
|
||||
if(C.armor.getRating(FIRE) < 40)
|
||||
C.armor = C.armor.setRating(FIRE = 40)
|
||||
used = TRUE
|
||||
if(C.armor.getRating("acid") < 10)
|
||||
C.armor = C.armor.setRating("acid" = 10)
|
||||
if(C.armor.getRating(ACID) < 10)
|
||||
C.armor = C.armor.setRating(ACID = 10)
|
||||
used = TRUE
|
||||
if(C.armor.getRating("bomb") < 5)
|
||||
C.armor = C.armor.setRating("bomb" = 5)
|
||||
if(C.armor.getRating(BOMB) < 5)
|
||||
C.armor = C.armor.setRating(BOMB = 5)
|
||||
used = TRUE
|
||||
|
||||
if(used)
|
||||
|
||||
@@ -184,7 +184,7 @@
|
||||
lefthand_file = 'icons/mob/inhands/equipment/idcards_lefthand.dmi'
|
||||
righthand_file = 'icons/mob/inhands/equipment/idcards_righthand.dmi'
|
||||
slot_flags = ITEM_SLOT_ID
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100)
|
||||
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 100, ACID = 100)
|
||||
resistance_flags = FIRE_PROOF | ACID_PROOF
|
||||
var/id_type_name = "identification card"
|
||||
var/mining_points = 0 //For redeeming at mining equipment vendors
|
||||
|
||||
@@ -1482,3 +1482,11 @@
|
||||
icon_state = "engineering"
|
||||
build_path = /obj/machinery/research/explosive_compressor
|
||||
req_components = list(/obj/item/stock_parts/matter_bin = 3)
|
||||
|
||||
/obj/item/circuitboard/machine/stasis
|
||||
name = "Lifeform Stasis Unit (Machine Board)"
|
||||
build_path = /obj/machinery/stasis
|
||||
req_components = list(
|
||||
/obj/item/stack/cable_coil = 3,
|
||||
/obj/item/stock_parts/manipulator = 1,
|
||||
/obj/item/stock_parts/capacitor = 1)
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
icon = 'icons/obj/money_machine.dmi'
|
||||
icon_state = "bogdanoff"
|
||||
layer = LARGE_MOB_LAYER
|
||||
armor = list("melee" = 80, "bullet" = 30, "laser" = 30, "energy" = 60, "bomb" = 90, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 80)
|
||||
armor = list(MELEE = 80, BULLET = 30, LASER = 30, ENERGY = 60, BOMB = 90, BIO = 0, RAD = 0, FIRE = 100, ACID = 80)
|
||||
density = TRUE
|
||||
pixel_z = -8
|
||||
max_integrity = 5000
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
throwforce = 6
|
||||
w_class = WEIGHT_CLASS_BULKY
|
||||
actions_types = list(/datum/action/item_action/toggle_paddles)
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50)
|
||||
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 50, ACID = 50)
|
||||
|
||||
var/on = FALSE //if the paddles are equipped (1) or on the defib (0)
|
||||
var/safety = TRUE //if you can zap people with the defibs on harm mode
|
||||
|
||||
@@ -29,7 +29,7 @@ GLOBAL_LIST_EMPTY(PDAs)
|
||||
item_flags = NOBLUDGEON
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
slot_flags = ITEM_SLOT_ID | ITEM_SLOT_BELT
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100)
|
||||
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 100, ACID = 100)
|
||||
resistance_flags = FIRE_PROOF | ACID_PROOF
|
||||
|
||||
//Main variables
|
||||
|
||||
@@ -161,7 +161,7 @@
|
||||
dat += " (Stage [stage])"
|
||||
dat += " <a href='?[REF(src)];track=[REF(S)]'>\[Track\]</a><br>"
|
||||
|
||||
for(var/obj/mecha/M in seen)
|
||||
for(var/obj/vehicle/sealed/mecha/M in seen)
|
||||
if(M.name in names)
|
||||
names[M.name]++
|
||||
dat += "[M.name] ([names[M.name]])"
|
||||
|
||||
@@ -87,7 +87,7 @@
|
||||
mouse_opacity = MOUSE_OPACITY_OPAQUE
|
||||
resistance_flags = INDESTRUCTIBLE
|
||||
CanAtmosPass = ATMOS_PASS_DENSITY
|
||||
armor = list("melee" = 0, "bullet" = 25, "laser" = 25, "energy" = 25, "bomb" = 25, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 100)
|
||||
armor = list(MELEE = 0, BULLET = 25, LASER = 25, ENERGY = 25, BOMB = 25, BIO = 100, RAD = 100, FIRE = 100, ACID = 100)
|
||||
var/obj/item/forcefield_projector/generator
|
||||
|
||||
/obj/structure/projected_forcefield/Initialize(mapload, obj/item/forcefield_projector/origin)
|
||||
|
||||
@@ -21,7 +21,7 @@
|
||||
light_color = "#00ff00"//green
|
||||
attack_verb = list("attacked", "slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
|
||||
max_integrity = 200
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 70)
|
||||
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 100, ACID = 70)
|
||||
resistance_flags = FIRE_PROOF
|
||||
wound_bonus = -40
|
||||
bare_wound_bonus = 20
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
hitsound = 'sound/weapons/bladeslice.ogg'
|
||||
sharpness = SHARP_EDGED
|
||||
max_integrity = 200
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 30)
|
||||
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 100, ACID = 30)
|
||||
resistance_flags = FIRE_PROOF
|
||||
wound_bonus = -15
|
||||
bare_wound_bonus = 20
|
||||
@@ -52,10 +52,10 @@
|
||||
return
|
||||
if(istype(A, /obj/structure/window)) //destroys windows and grilles in one hit (or more if it has a ton of health like plasmaglass)
|
||||
var/obj/structure/window/W = A
|
||||
W.take_damage(200, BRUTE, "melee", 0)
|
||||
W.take_damage(200, BRUTE, MELEE, 0)
|
||||
else if(istype(A, /obj/structure/grille))
|
||||
var/obj/structure/grille/G = A
|
||||
G.take_damage(40, BRUTE, "melee", 0)
|
||||
G.take_damage(40, BRUTE, MELEE, 0)
|
||||
|
||||
/*
|
||||
* Bone Axe
|
||||
|
||||
@@ -27,6 +27,6 @@
|
||||
|
||||
for(var/obj/structure/blob/B in view(8,src))
|
||||
var/damage = round(30/(get_dist(B,src)+1))
|
||||
B.take_damage(damage, BURN, "melee", 0)
|
||||
B.take_damage(damage, BURN, MELEE, 0)
|
||||
sleep(80)
|
||||
qdel(src)
|
||||
|
||||
@@ -40,7 +40,7 @@
|
||||
throw_range = 5
|
||||
custom_materials = list(/datum/material/iron=500)
|
||||
breakouttime = 600 //Deciseconds = 60s = 1 minute
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50)
|
||||
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 50, ACID = 50)
|
||||
var/cuffsound = 'sound/weapons/handcuffs.ogg'
|
||||
var/trashtype = null //for disposable cuffs
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
desc = "Deus Vult."
|
||||
icon_state = "knight_templar"
|
||||
item_state = "knight_templar"
|
||||
armor = list("melee" = 41, "bullet" = 15, "laser" = 5,"energy" = 5, "bomb" = 5, "bio" = 2, "rad" = 0, "fire" = 0, "acid" = 50)
|
||||
armor = list(MELEE = 41, BULLET = 15, LASER = 5,ENERGY = 5, BOMB = 5, BIO = 2, RAD = 0, FIRE = 0, ACID = 50)
|
||||
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR
|
||||
flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
|
||||
strip_delay = 80
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
flags_1 = CONDUCT_1
|
||||
attack_verb = list("attacked", "stabbed", "poked")
|
||||
hitsound = 'sound/weapons/bladeslice.ogg'
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 30)
|
||||
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 50, ACID = 30)
|
||||
sharpness = SHARP_POINTY
|
||||
var/datum/reagent/forkload //used to eat omelette
|
||||
|
||||
@@ -78,7 +78,7 @@
|
||||
custom_materials = list(/datum/material/iron=12000)
|
||||
attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
|
||||
sharpness = SHARP_POINTY
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50)
|
||||
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 50, ACID = 50)
|
||||
var/bayonet = FALSE //Can this be attached to a gun?
|
||||
wound_bonus = -5
|
||||
bare_wound_bonus = 10
|
||||
@@ -114,7 +114,7 @@
|
||||
custom_materials = list(/datum/material/iron=12000)
|
||||
attack_verb = list("slashed", "stabbed", "sliced", "torn", "ripped", "diced", "cut")
|
||||
sharpness = SHARP_POINTY
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50)
|
||||
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 50, ACID = 50)
|
||||
var/bayonet = FALSE //Can this be attached to a gun?
|
||||
wound_bonus = -5
|
||||
bare_wound_bonus = 10
|
||||
@@ -266,7 +266,7 @@
|
||||
force = 8
|
||||
throwforce = 12//fuck git
|
||||
attack_verb = list("shanked", "shivved")
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
|
||||
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 0, ACID = 0)
|
||||
custom_materials = list(/datum/material/glass=400)
|
||||
|
||||
/obj/item/kitchen/knife/shiv/carrot
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
hitsound_on = 'sound/weapons/blade1.ogg'
|
||||
heat = 3500
|
||||
max_integrity = 200
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 30)
|
||||
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 100, ACID = 30)
|
||||
resistance_flags = FIRE_PROOF
|
||||
var/brightness_on = 3
|
||||
var/sword_color
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
hitsound = 'sound/weapons/bladeslice.ogg'
|
||||
sharpness = SHARP_EDGED
|
||||
max_integrity = 200
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 30)
|
||||
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 100, ACID = 30)
|
||||
resistance_flags = FIRE_PROOF
|
||||
var/wielded = FALSE // track wielded status on item
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
item_state = "bulldog"
|
||||
lefthand_file = 'icons/mob/inhands/weapons/guns_lefthand.dmi'
|
||||
righthand_file = 'icons/mob/inhands/weapons/guns_righthand.dmi'
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 60, "acid" = 50)
|
||||
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 60, ACID = 50)
|
||||
var/maxWeightClass = 20 //The max weight of items that can fit into the cannon
|
||||
var/loadedWeightClass = 0 //The weight of items currently in the cannon
|
||||
var/obj/item/tank/internals/tank = null //The gas tank that is drawn from to fire things
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
throwforce = 10
|
||||
throw_range = 7
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 40)
|
||||
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 100, ACID = 40)
|
||||
resistance_flags = FIRE_PROOF
|
||||
attack_speed = CLICK_CD_MELEE * 1.5
|
||||
var/fisto_setting = 1
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
explosion_block = 3
|
||||
heat_proof = TRUE
|
||||
max_integrity = 600
|
||||
armor = list("melee" = 100, "bullet" = 100, "laser" = 100, "energy" = 100, "bomb" = 100, "bio" = 100, "rad" = 100, "fire" = 100, "acid" = 100)
|
||||
armor = list(MELEE = 100, BULLET = 100, LASER = 100, ENERGY = 100, BOMB = 100, BIO = 100, RAD = 100, FIRE = 100, ACID = 100)
|
||||
resistance_flags = INDESTRUCTIBLE | FIRE_PROOF | ACID_PROOF | LAVA_PROOF
|
||||
damage_deflection = 70
|
||||
/// Make sure that the key has the same puzzle_id as the keycard door!
|
||||
|
||||
@@ -188,7 +188,7 @@
|
||||
w_class = WEIGHT_CLASS_BULKY
|
||||
slowdown = 2.0 //gotta pretend we're balanced.
|
||||
body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
|
||||
armor = list("melee" = 50, "bullet" = 50, "laser" = 50, "energy" = 40, "bomb" = 60, "bio" = 0, "rad" = 0, "fire" = 60, "acid" = 60)
|
||||
armor = list(MELEE = 50, BULLET = 50, LASER = 50, ENERGY = 40, BOMB = 60, BIO = 0, RAD = 0, FIRE = 60, ACID = 60)
|
||||
mutantrace_variation = STYLE_DIGITIGRADE|STYLE_NO_ANTHRO_ICON
|
||||
|
||||
/obj/item/clothing/suit/armor/plate/crusader/red
|
||||
@@ -203,7 +203,7 @@
|
||||
icon_state = "crusader"
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
flags_inv = HIDEHAIR|HIDEEARS|HIDEFACE
|
||||
armor = list("melee" = 50, "bullet" = 50, "laser" = 50, "energy" = 40, "bomb" = 60, "bio" = 0, "rad" = 0, "fire" = 60, "acid" = 60)
|
||||
armor = list(MELEE = 50, BULLET = 50, LASER = 50, ENERGY = 40, BOMB = 60, BIO = 0, RAD = 0, FIRE = 60, ACID = 60)
|
||||
|
||||
/obj/item/clothing/head/helmet/plate/crusader/blue
|
||||
icon_state = "crusader-blue"
|
||||
@@ -218,7 +218,7 @@
|
||||
icon_state = "prophet"
|
||||
mob_overlay_icon = 'icons/mob/large-worn-icons/64x64/head.dmi'
|
||||
flags_1 = NONE
|
||||
armor = list("melee" = 60, "bullet" = 60, "laser" = 60, "energy" = 50, "bomb" = 70, "bio" = 50, "rad" = 50, "fire" = 60, "acid" = 60) //religion protects you from disease and radiation, honk.
|
||||
armor = list(MELEE = 60, BULLET = 60, LASER = 60, ENERGY = 50, BOMB = 70, BIO = 50, RAD = 50, FIRE = 60, ACID = 60) //religion protects you from disease and radiation, honk.
|
||||
worn_x_dimension = 64
|
||||
worn_y_dimension = 64
|
||||
|
||||
@@ -277,7 +277,7 @@
|
||||
desc = "Metal boots, they look heavy."
|
||||
icon_state = "crusader"
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
armor = list("melee" = 50, "bullet" = 50, "laser" = 50, "energy" = 40, "bomb" = 60, "bio" = 0, "rad" = 0, "fire" = 60, "acid" = 60) //does this even do anything on boots?
|
||||
armor = list(MELEE = 50, BULLET = 50, LASER = 50, ENERGY = 40, BOMB = 60, BIO = 0, RAD = 0, FIRE = 60, ACID = 60) //does this even do anything on boots?
|
||||
clothing_flags = NOSLIP
|
||||
cold_protection = FEET
|
||||
min_cold_protection_temperature = SHOES_MIN_TEMP_PROTECT
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
icon = 'icons/obj/shields.dmi'
|
||||
item_flags = ITEM_CAN_BLOCK
|
||||
block_parry_data = /datum/block_parry_data/shield
|
||||
armor = list("melee" = 50, "bullet" = 50, "laser" = 50, "energy" = 0, "bomb" = 30, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 70)
|
||||
armor = list(MELEE = 50, BULLET = 50, LASER = 50, ENERGY = 0, BOMB = 30, BIO = 0, RAD = 0, FIRE = 80, ACID = 70)
|
||||
/// Shield flags
|
||||
var/shield_flags = SHIELD_FLAGS_DEFAULT
|
||||
/// Last shieldbash world.time
|
||||
@@ -304,7 +304,7 @@
|
||||
/obj/item/shield/riot/energy_proof
|
||||
name = "energy resistant shield"
|
||||
desc = "An ablative shield designed to absorb and disperse energy attacks. This comes at significant cost to its ability to withstand ballistics and kinetics, breaking apart easily."
|
||||
armor = list("melee" = 30, "bullet" = -10, "laser" = 80, "energy" = 80, "bomb" = -40, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 50)
|
||||
armor = list(MELEE = 30, BULLET = -10, LASER = 80, ENERGY = 80, BOMB = -40, BIO = 0, RAD = 0, FIRE = 0, ACID = 50)
|
||||
icon_state = "riot_laser"
|
||||
item_state = "riot_laser"
|
||||
lefthand_file = 'icons/mob/inhands/equipment/shields_lefthand.dmi'
|
||||
@@ -315,7 +315,7 @@
|
||||
/obj/item/shield/riot/kinetic_proof
|
||||
name = "kinetic resistant shield"
|
||||
desc = "A polymer and ceramic shield designed to absorb ballistic projectiles and kinetic force. It doesn't do very well into energy attacks, especially from weapons that inflict burns."
|
||||
armor = list("melee" = 30, "bullet" = 80, "laser" = 0, "energy" = 0, "bomb" = -40, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 50)
|
||||
armor = list(MELEE = 30, BULLET = 80, LASER = 0, ENERGY = 0, BOMB = -40, BIO = 0, RAD = 0, FIRE = 0, ACID = 50)
|
||||
icon_state = "riot_bullet"
|
||||
item_state = "riot_bullet"
|
||||
shield_flags = SHIELD_FLAGS_DEFAULT | SHIELD_KINETIC_STRONG | SHIELD_ENERGY_WEAK
|
||||
@@ -334,7 +334,7 @@
|
||||
|
||||
/obj/item/shield/riot/roman/fake
|
||||
desc = "Bears an inscription on the inside: <i>\"Romanes venio domus\"</i>. It appears to be a bit flimsy."
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
|
||||
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 0, ACID = 0)
|
||||
shield_flags = SHIELD_ENERGY_WEAK | SHIELD_KINETIC_WEAK | SHIELD_NO_RANGED
|
||||
max_integrity = 40
|
||||
|
||||
@@ -471,7 +471,7 @@
|
||||
/obj/item/shield/makeshift
|
||||
name = "metal shield"
|
||||
desc = "A large shield made of wired and welded sheets of metal. The handle is made of cloth and leather, making it unwieldy."
|
||||
armor = list("melee" = 25, "bullet" = 25, "laser" = 5, "energy" = 0, "bomb" = 30, "bio" = 0, "rad" = 0, "fire" = 70, "acid" = 80)
|
||||
armor = list(MELEE = 25, BULLET = 25, LASER = 5, ENERGY = 0, BOMB = 30, BIO = 0, RAD = 0, FIRE = 70, ACID = 80)
|
||||
lefthand_file = 'icons/mob/inhands/equipment/shields_lefthand.dmi'
|
||||
righthand_file = 'icons/mob/inhands/equipment/shields_righthand.dmi'
|
||||
item_state = "metal"
|
||||
@@ -485,7 +485,7 @@
|
||||
/obj/item/shield/riot/tower
|
||||
name = "tower shield"
|
||||
desc = "An immense tower shield. Designed to ensure maximum protection to the user, at the expense of mobility."
|
||||
armor = list("melee" = 95, "bullet" = 95, "laser" = 75, "energy" = 60, "bomb" = 90, "bio" = 90, "rad" = 0, "fire" = 90, "acid" = 10) //Armor for the item, dosnt transfer to user
|
||||
armor = list(MELEE = 95, BULLET = 95, LASER = 75, ENERGY = 60, BOMB = 90, BIO = 90, RAD = 0, FIRE = 90, ACID = 10) //Armor for the item, dosnt transfer to user
|
||||
item_state = "metal"
|
||||
icon_state = "metal"
|
||||
force = 16
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
throwforce = 15
|
||||
throw_range = 1
|
||||
w_class = WEIGHT_CLASS_HUGE
|
||||
armor = list("melee" = 50, "bullet" = 50, "laser" = 50, "energy" = 0, "bomb" = 50, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100)
|
||||
armor = list(MELEE = 50, BULLET = 50, LASER = 50, ENERGY = 0, BOMB = 50, BIO = 0, RAD = 0, FIRE = 100, ACID = 100)
|
||||
resistance_flags = FIRE_PROOF | ACID_PROOF
|
||||
force_string = "LORD SINGULOTH HIMSELF"
|
||||
total_mass = TOTAL_MASS_MEDIEVAL_WEAPON
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
attack_verb = list("attacked", "poked", "jabbed", "torn", "gored")
|
||||
sharpness = SHARP_EDGED
|
||||
max_integrity = 200
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 30)
|
||||
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 50, ACID = 30)
|
||||
var/obj/item/grenade/explosive = null
|
||||
var/war_cry = "AAAAARGH!!!"
|
||||
var/icon_prefix = "spearglass"
|
||||
|
||||
@@ -34,7 +34,7 @@ GLOBAL_LIST_INIT(glass_recipes, list ( \
|
||||
icon_state = "sheet-glass"
|
||||
item_state = "sheet-glass"
|
||||
custom_materials = list(/datum/material/glass=MINERAL_MATERIAL_AMOUNT)
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 100)
|
||||
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 50, ACID = 100)
|
||||
resistance_flags = ACID_PROOF
|
||||
merge_type = /obj/item/stack/sheet/glass
|
||||
grind_results = list(/datum/reagent/silicon = 20)
|
||||
@@ -106,7 +106,7 @@ GLOBAL_LIST_INIT(pglass_recipes, list ( \
|
||||
icon_state = "sheet-pglass"
|
||||
item_state = "sheet-pglass"
|
||||
custom_materials = list(/datum/material/plasma=MINERAL_MATERIAL_AMOUNT * 0.5, /datum/material/glass=MINERAL_MATERIAL_AMOUNT)
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 75, "acid" = 100)
|
||||
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 75, ACID = 100)
|
||||
resistance_flags = ACID_PROOF
|
||||
merge_type = /obj/item/stack/sheet/plasmaglass
|
||||
grind_results = list(/datum/reagent/silicon = 20, /datum/reagent/toxin/plasma = 10)
|
||||
@@ -161,7 +161,7 @@ GLOBAL_LIST_INIT(reinforced_glass_recipes, list ( \
|
||||
icon_state = "sheet-rglass"
|
||||
item_state = "sheet-rglass"
|
||||
custom_materials = list(/datum/material/iron=MINERAL_MATERIAL_AMOUNT * 0.5, /datum/material/glass=MINERAL_MATERIAL_AMOUNT)
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 70, "acid" = 100)
|
||||
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 70, ACID = 100)
|
||||
resistance_flags = ACID_PROOF
|
||||
merge_type = /obj/item/stack/sheet/rglass
|
||||
grind_results = list(/datum/reagent/silicon = 20, /datum/reagent/iron = 10)
|
||||
@@ -209,7 +209,7 @@ GLOBAL_LIST_INIT(prglass_recipes, list ( \
|
||||
icon_state = "sheet-prglass"
|
||||
item_state = "sheet-prglass"
|
||||
custom_materials = list(/datum/material/plasma=MINERAL_MATERIAL_AMOUNT * 0.5, /datum/material/glass=MINERAL_MATERIAL_AMOUNT, /datum/material/iron=MINERAL_MATERIAL_AMOUNT * 0.5,)
|
||||
armor = list("melee" = 20, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 100)
|
||||
armor = list(MELEE = 20, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 80, ACID = 100)
|
||||
resistance_flags = ACID_PROOF
|
||||
merge_type = /obj/item/stack/sheet/plasmarglass
|
||||
grind_results = list(/datum/reagent/silicon = 20, /datum/reagent/toxin/plasma = 10, /datum/reagent/iron = 10)
|
||||
@@ -236,7 +236,7 @@ GLOBAL_LIST_INIT(titaniumglass_recipes, list(
|
||||
icon_state = "sheet-titaniumglass"
|
||||
item_state = "sheet-titaniumglass"
|
||||
custom_materials = list(/datum/material/titanium=MINERAL_MATERIAL_AMOUNT * 0.5, /datum/material/glass=MINERAL_MATERIAL_AMOUNT)
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 100)
|
||||
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 80, ACID = 100)
|
||||
resistance_flags = ACID_PROOF
|
||||
merge_type = /obj/item/stack/sheet/titaniumglass
|
||||
shard_type = /obj/item/shard
|
||||
@@ -260,7 +260,7 @@ GLOBAL_LIST_INIT(plastitaniumglass_recipes, list(
|
||||
icon_state = "sheet-plastitaniumglass"
|
||||
item_state = "sheet-plastitaniumglass"
|
||||
custom_materials = list(/datum/material/titanium=MINERAL_MATERIAL_AMOUNT * 0.5, /datum/material/plasma=MINERAL_MATERIAL_AMOUNT * 0.5, /datum/material/glass=MINERAL_MATERIAL_AMOUNT)
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 100)
|
||||
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 80, ACID = 100)
|
||||
resistance_flags = ACID_PROOF
|
||||
merge_type = /obj/item/stack/sheet/plastitaniumglass
|
||||
shard_type = /obj/item/shard
|
||||
@@ -291,7 +291,7 @@ GLOBAL_LIST_INIT(plastitaniumglass_recipes, list(
|
||||
attack_verb = list("stabbed", "slashed", "sliced", "cut")
|
||||
hitsound = 'sound/weapons/bladeslice.ogg'
|
||||
resistance_flags = ACID_PROOF
|
||||
armor = list("melee" = 100, "bullet" = 0, "laser" = 0, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 100)
|
||||
armor = list(MELEE = 100, BULLET = 0, LASER = 0, ENERGY = 100, BOMB = 0, BIO = 0, RAD = 0, FIRE = 50, ACID = 100)
|
||||
max_integrity = 40
|
||||
sharpness = SHARP_EDGED
|
||||
var/icon_prefix
|
||||
|
||||
@@ -27,7 +27,6 @@ GLOBAL_LIST_INIT(sandstone_recipes, list ( \
|
||||
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), \
|
||||
new/datum/stack_recipe("aesthetic volcanic floor tile", /obj/item/stack/tile/basalt, 2, 2, 4, 20), \
|
||||
new/datum/stack_recipe("Assistant Statue", /obj/structure/statue/sandstone/assistant, 5, one_per_turf = 1, on_floor = 1), \
|
||||
new/datum/stack_recipe("Breakdown into sand", /obj/item/stack/ore/glass, 1, one_per_turf = 0, on_floor = 1) \
|
||||
))
|
||||
|
||||
@@ -114,9 +113,6 @@ GLOBAL_LIST_INIT(sandbag_recipes, list ( \
|
||||
GLOBAL_LIST_INIT(diamond_recipes, list ( \
|
||||
new/datum/stack_recipe("diamond door", /obj/structure/mineral_door/transparent/diamond, 10, one_per_turf = 1, on_floor = 1), \
|
||||
new/datum/stack_recipe("diamond tile", /obj/item/stack/tile/mineral/diamond, 1, 4, 20), \
|
||||
new/datum/stack_recipe("Captain Statue", /obj/structure/statue/diamond/captain, 5, one_per_turf = 1, on_floor = 1), \
|
||||
new/datum/stack_recipe("AI Hologram Statue", /obj/structure/statue/diamond/ai1, 5, one_per_turf = 1, on_floor = 1), \
|
||||
new/datum/stack_recipe("AI Core Statue", /obj/structure/statue/diamond/ai2, 5, one_per_turf = 1, on_floor = 1), \
|
||||
new/datum/stack_recipe("diamond ingot", /obj/item/ingot/diamond, 6, time = 100), \
|
||||
))
|
||||
|
||||
@@ -144,8 +140,6 @@ GLOBAL_LIST_INIT(diamond_recipes, list ( \
|
||||
GLOBAL_LIST_INIT(uranium_recipes, list ( \
|
||||
new/datum/stack_recipe("uranium door", /obj/structure/mineral_door/uranium, 10, one_per_turf = 1, on_floor = 1), \
|
||||
new/datum/stack_recipe("uranium tile", /obj/item/stack/tile/mineral/uranium, 1, 4, 20), \
|
||||
new/datum/stack_recipe("Nuke Statue", /obj/structure/statue/uranium/nuke, 5, one_per_turf = 1, on_floor = 1), \
|
||||
new/datum/stack_recipe("Engineer Statue", /obj/structure/statue/uranium/eng, 5, one_per_turf = 1, on_floor = 1), \
|
||||
new/datum/stack_recipe("uranium ingot", /obj/item/ingot/uranium, 6, time = 100), \
|
||||
))
|
||||
|
||||
@@ -178,7 +172,6 @@ GLOBAL_LIST_INIT(uranium_recipes, list ( \
|
||||
GLOBAL_LIST_INIT(plasma_recipes, list ( \
|
||||
new/datum/stack_recipe("plasma door", /obj/structure/mineral_door/transparent/plasma, 10, one_per_turf = 1, on_floor = 1), \
|
||||
new/datum/stack_recipe("plasma tile", /obj/item/stack/tile/mineral/plasma, 1, 4, 20), \
|
||||
new/datum/stack_recipe("Scientist Statue", /obj/structure/statue/plasma/scientist, 5, one_per_turf = 1, on_floor = 1), \
|
||||
// new/datum/stack_recipe("plasma ingot", /obj/item/ingot/plasma, 6, time = 100), \ no
|
||||
))
|
||||
|
||||
@@ -218,12 +211,7 @@ GLOBAL_LIST_INIT(plasma_recipes, list ( \
|
||||
GLOBAL_LIST_INIT(gold_recipes, list ( \
|
||||
new/datum/stack_recipe("golden door", /obj/structure/mineral_door/gold, 10, one_per_turf = 1, on_floor = 1), \
|
||||
new/datum/stack_recipe("gold tile", /obj/item/stack/tile/mineral/gold, 1, 4, 20), \
|
||||
new/datum/stack_recipe("HoS Statue", /obj/structure/statue/gold/hos, 5, one_per_turf = 1, on_floor = 1), \
|
||||
new/datum/stack_recipe("HoP Statue", /obj/structure/statue/gold/hop, 5, one_per_turf = 1, on_floor = 1), \
|
||||
new/datum/stack_recipe("CE Statue", /obj/structure/statue/gold/ce, 5, one_per_turf = 1, on_floor = 1), \
|
||||
new/datum/stack_recipe("RD Statue", /obj/structure/statue/gold/rd, 5, one_per_turf = 1, on_floor = 1), \
|
||||
new/datum/stack_recipe("Simple Crown", /obj/item/clothing/head/crown, 5), \
|
||||
new/datum/stack_recipe("CMO Statue", /obj/structure/statue/gold/cmo, 5, one_per_turf = 1, on_floor = 1), \
|
||||
new/datum/stack_recipe("gold ingot", /obj/item/ingot/gold, 6, time = 100), \
|
||||
))
|
||||
|
||||
@@ -251,11 +239,6 @@ GLOBAL_LIST_INIT(gold_recipes, list ( \
|
||||
GLOBAL_LIST_INIT(silver_recipes, list ( \
|
||||
new/datum/stack_recipe("silver door", /obj/structure/mineral_door/silver, 10, one_per_turf = 1, on_floor = 1), \
|
||||
new/datum/stack_recipe("silver tile", /obj/item/stack/tile/mineral/silver, 1, 4, 20), \
|
||||
new/datum/stack_recipe("Med Officer Statue", /obj/structure/statue/silver/md, 5, one_per_turf = 1, on_floor = 1), \
|
||||
new/datum/stack_recipe("Janitor Statue", /obj/structure/statue/silver/janitor, 5, one_per_turf = 1, on_floor = 1), \
|
||||
new/datum/stack_recipe("Sec Officer Statue", /obj/structure/statue/silver/sec, 5, one_per_turf = 1, on_floor = 1), \
|
||||
new/datum/stack_recipe("Sec Borg Statue", /obj/structure/statue/silver/secborg, 5, one_per_turf = 1, on_floor = 1), \
|
||||
new/datum/stack_recipe("Med Borg Statue", /obj/structure/statue/silver/medborg, 5, one_per_turf = 1, on_floor = 1), \
|
||||
new/datum/stack_recipe("silver ingot", /obj/item/ingot/silver, 6, time = 100), \
|
||||
))
|
||||
|
||||
@@ -282,7 +265,6 @@ GLOBAL_LIST_INIT(silver_recipes, list ( \
|
||||
|
||||
GLOBAL_LIST_INIT(bananium_recipes, list ( \
|
||||
new/datum/stack_recipe("bananium tile", /obj/item/stack/tile/mineral/bananium, 1, 4, 20), \
|
||||
new/datum/stack_recipe("Clown Statue", /obj/structure/statue/bananium/clown, 5, one_per_turf = 1, on_floor = 1), \
|
||||
new/datum/stack_recipe("hilarious ingot", /obj/item/ingot/bananium, 6, time = 100), \
|
||||
))
|
||||
|
||||
|
||||
@@ -212,7 +212,7 @@ GLOBAL_LIST_INIT(plasteel_recipes, list ( \
|
||||
custom_materials = list(/datum/material/iron=MINERAL_MATERIAL_AMOUNT, /datum/material/plasma=MINERAL_MATERIAL_AMOUNT)
|
||||
throwforce = 10
|
||||
flags_1 = CONDUCT_1
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 80)
|
||||
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 100, ACID = 80)
|
||||
resistance_flags = FIRE_PROOF
|
||||
merge_type = /obj/item/stack/sheet/plasteel
|
||||
grind_results = list(/datum/reagent/iron = 20, /datum/reagent/toxin/plasma = 20)
|
||||
@@ -291,7 +291,7 @@ GLOBAL_LIST_INIT(wood_recipes, list ( \
|
||||
icon = 'icons/obj/stack_objects.dmi'
|
||||
custom_materials = list(/datum/material/wood=MINERAL_MATERIAL_AMOUNT)
|
||||
sheettype = "wood"
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 0)
|
||||
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 50, ACID = 0)
|
||||
resistance_flags = FLAMMABLE
|
||||
merge_type = /obj/item/stack/sheet/mineral/wood
|
||||
novariants = TRUE
|
||||
@@ -355,7 +355,7 @@ GLOBAL_LIST_INIT(bamboo_recipes, list ( \
|
||||
icon = 'icons/obj/stack_objects.dmi'
|
||||
custom_materials = list(/datum/material/bamboo = MINERAL_MATERIAL_AMOUNT)
|
||||
throwforce = 15
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 0)
|
||||
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 50, ACID = 0)
|
||||
resistance_flags = FLAMMABLE
|
||||
merge_type = /obj/item/stack/sheet/mineral/bamboo
|
||||
grind_results = list(/datum/reagent/cellulose = 10)
|
||||
|
||||
@@ -530,7 +530,7 @@
|
||||
flags_1 = CONDUCT_1
|
||||
turf_type = /turf/open/floor/plasteel
|
||||
mineralType = "metal"
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 70)
|
||||
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 100, ACID = 70)
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
/obj/item/stack/tile/plasteel/cyborg
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
item_state = "holdingpack"
|
||||
resistance_flags = FIRE_PROOF
|
||||
item_flags = NO_MAT_REDEMPTION
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 60, "acid" = 50)
|
||||
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 60, ACID = 50)
|
||||
component_type = /datum/component/storage/concrete/bluespace/bag_of_holding
|
||||
rad_flags = RAD_PROTECT_CONTENTS | RAD_NO_CONTAMINATE
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
throwforce = 7
|
||||
w_class = WEIGHT_CLASS_NORMAL
|
||||
attack_verb = list("beaten")
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 50, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 80)
|
||||
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 50, BIO = 0, RAD = 0, FIRE = 80, ACID = 80)
|
||||
attack_speed = CLICK_CD_MELEE
|
||||
|
||||
var/stamina_loss_amount = 35
|
||||
@@ -190,7 +190,7 @@
|
||||
var/final_stamina_loss_amount = stamina_loss_amount //Our stunning power for the baton
|
||||
var/shoved = FALSE //Did we succeed on knocking our target over?
|
||||
var/zap_penetration = armor_pen
|
||||
var/zap_block = L.run_armor_check(BODY_ZONE_CHEST, "melee", null, null, zap_penetration) //armor check, including calculation for armor penetration, for our attack
|
||||
var/zap_block = L.run_armor_check(BODY_ZONE_CHEST, MELEE, null, null, zap_penetration) //armor check, including calculation for armor penetration, for our attack
|
||||
final_stamina_loss_amount = block_calculate_resultant_damage(final_stamina_loss_amount, return_list)
|
||||
|
||||
var/obj/item/stock_parts/cell/our_cell = get_cell()
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
throw_range = 4
|
||||
custom_materials = list(/datum/material/iron = 500)
|
||||
actions_types = list(/datum/action/item_action/set_internals)
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 10, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 30)
|
||||
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 10, BIO = 0, RAD = 0, FIRE = 80, ACID = 30)
|
||||
var/datum/gas_mixture/air_contents = null
|
||||
var/distribute_pressure = ONE_ATMOSPHERE
|
||||
var/integrity = 3
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
slowdown = 1
|
||||
actions_types = list(/datum/action/item_action/toggle_mister)
|
||||
max_integrity = 200
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 30)
|
||||
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 100, ACID = 30)
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
var/obj/item/noz
|
||||
|
||||
@@ -107,7 +107,7 @@
|
||||
throw_speed = 3
|
||||
throw_range = 5
|
||||
custom_materials = list(/datum/material/iron=10000)
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 30, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 100)
|
||||
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 30, BIO = 0, RAD = 0, FIRE = 100, ACID = 100)
|
||||
resistance_flags = INDESTRUCTIBLE | LAVA_PROOF | FIRE_PROOF | ACID_PROOF
|
||||
var/list/active_portal_pairs
|
||||
var/max_portal_pairs = 3
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
attack_verb = list("attacked", "bashed", "battered", "bludgeoned", "whacked")
|
||||
tool_behaviour = TOOL_CROWBAR
|
||||
toolspeed = 1
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 30)
|
||||
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 50, ACID = 30)
|
||||
|
||||
wound_bonus = -10
|
||||
bare_wound_bonus = 5
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
usesound = list('sound/items/screwdriver.ogg', 'sound/items/screwdriver2.ogg')
|
||||
tool_behaviour = TOOL_SCREWDRIVER
|
||||
toolspeed = 1
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 30)
|
||||
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 50, ACID = 30)
|
||||
var/random_color = TRUE //if the screwdriver uses random coloring
|
||||
var/static/list/screwdriver_colors = list(
|
||||
"blue" = rgb(24, 97, 213),
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
throw_speed = 3
|
||||
throw_range = 5
|
||||
w_class = WEIGHT_CLASS_SMALL
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 30)
|
||||
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 100, ACID = 30)
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
var/self_fueling = FALSE //Do we refill ourselves or not
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
|
||||
tool_behaviour = TOOL_WIRECUTTER
|
||||
toolspeed = 1
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 30)
|
||||
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 50, ACID = 30)
|
||||
var/random_color = TRUE
|
||||
var/static/list/wirecutter_colors = list(
|
||||
"blue" = rgb(24, 97, 213),
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
attack_verb = list("bashed", "battered", "bludgeoned", "whacked")
|
||||
tool_behaviour = TOOL_WRENCH
|
||||
toolspeed = 1
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 30)
|
||||
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 50, ACID = 30)
|
||||
|
||||
wound_bonus = -10
|
||||
bare_wound_bonus = 5
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
throw_speed = 1
|
||||
throw_range = 7
|
||||
w_class = WEIGHT_CLASS_BULKY
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 70, "acid" = 30)
|
||||
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 70, ACID = 30)
|
||||
|
||||
// Built automatically from the corresponding vending machine.
|
||||
// If null, considered to be full. Otherwise, is list(/typepath = amount).
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
throw_range = 7
|
||||
attack_verb = list("banned")
|
||||
max_integrity = 200
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 70)
|
||||
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 100, ACID = 70)
|
||||
resistance_flags = FIRE_PROOF
|
||||
|
||||
/obj/item/banhammer/suicide_act(mob/user)
|
||||
@@ -67,7 +67,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
|
||||
block_chance = 50
|
||||
sharpness = SHARP_EDGED
|
||||
max_integrity = 200
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50)
|
||||
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 100, ACID = 50)
|
||||
resistance_flags = FIRE_PROOF
|
||||
total_mass = TOTAL_MASS_MEDIEVAL_WEAPON
|
||||
|
||||
@@ -250,7 +250,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
|
||||
block_chance = 50
|
||||
sharpness = SHARP_EDGED
|
||||
max_integrity = 200
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 100, "acid" = 50)
|
||||
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 100, ACID = 50)
|
||||
resistance_flags = FIRE_PROOF
|
||||
total_mass = TOTAL_MASS_MEDIEVAL_WEAPON
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
|
||||
//returns the damage value of the attack after processing the obj's various armor protections
|
||||
/obj/proc/run_obj_armor(damage_amount, damage_type, damage_flag = 0, attack_dir, armour_penetration = 0)
|
||||
if(damage_flag == "melee" && damage_amount < damage_deflection) // TODO: Refactor armor datums and types entirely jfc
|
||||
if(damage_flag == MELEE && damage_amount < damage_deflection) // TODO: Refactor armor datums and types entirely jfc
|
||||
return 0
|
||||
switch(damage_type)
|
||||
if(BRUTE)
|
||||
@@ -54,7 +54,7 @@
|
||||
var/obj/O = AM
|
||||
if(O.damtype == STAMINA)
|
||||
throwdamage = 0
|
||||
take_damage(throwdamage, BRUTE, "melee", 1, get_dir(src, AM))
|
||||
take_damage(throwdamage, BRUTE, MELEE, 1, get_dir(src, AM))
|
||||
|
||||
/obj/ex_act(severity, target, origin)
|
||||
if(resistance_flags & INDESTRUCTIBLE)
|
||||
@@ -69,9 +69,9 @@
|
||||
obj_integrity = 0
|
||||
qdel(src)
|
||||
if(2)
|
||||
take_damage(rand(100, 250), BRUTE, "bomb", 0)
|
||||
take_damage(rand(100, 250), BRUTE, BOMB, 0)
|
||||
if(3)
|
||||
take_damage(rand(10, 90), BRUTE, "bomb", 0)
|
||||
take_damage(rand(10, 90), BRUTE, BOMB, 0)
|
||||
|
||||
/obj/wave_ex_act(power, datum/wave_explosion/explosion, dir)
|
||||
if(resistance_flags & INDESTRUCTIBLE)
|
||||
@@ -81,7 +81,7 @@
|
||||
obj_integrity = 0
|
||||
qdel(src)
|
||||
return
|
||||
take_damage(wave_explosion_damage(power, explosion), BRUTE, "bomb", 0)
|
||||
take_damage(wave_explosion_damage(power, explosion), BRUTE, BOMB, 0)
|
||||
|
||||
/obj/proc/wave_explosion_damage(power, datum/wave_explosion/explosion)
|
||||
return (explosion_flags & EXPLOSION_FLAG_HARD_OBSTACLE)? EXPLOSION_POWER_STANDARD_SCALE_HARD_OBSTACLE_DAMAGE(power, explosion.hard_obstacle_mod) : EXPLOSION_POWER_STANDARD_SCALE_OBJECT_DAMAGE(power, explosion.object_damage_mod)
|
||||
@@ -106,7 +106,7 @@
|
||||
user.say(pick(";RAAAAAAAARGH!", ";HNNNNNNNNNGGGGGGH!", ";GWAAAAAAAARRRHHH!", "NNNNNNNNGGGGGGGGHH!", ";AAAAAAARRRGH!" ), forced="hulk")
|
||||
else
|
||||
playsound(src, 'sound/effects/bang.ogg', 50, 1)
|
||||
take_damage(hulk_damage(), BRUTE, "melee", 0, get_dir(src, user))
|
||||
take_damage(hulk_damage(), BRUTE, MELEE, 0, get_dir(src, user))
|
||||
return 1
|
||||
return 0
|
||||
|
||||
@@ -115,7 +115,7 @@
|
||||
var/turf/T = loc
|
||||
if(T.intact && level == 1) //the blob doesn't destroy thing below the floor
|
||||
return
|
||||
take_damage(400, BRUTE, "melee", 0, get_dir(src, B))
|
||||
take_damage(400, BRUTE, MELEE, 0, get_dir(src, B))
|
||||
|
||||
/obj/proc/attack_generic(mob/user, damage_amount = 0, damage_type = BRUTE, damage_flag = 0, sound_effect = 1, armor_penetration = 0) //used by attack_alien, attack_animal, and attack_slime
|
||||
if(SEND_SIGNAL(src, COMSIG_OBJ_ATTACK_GENERIC, user, damage_amount, damage_type, damage_flag, sound_effect, armor_penetration) & COMPONENT_STOP_GENERIC_ATTACK)
|
||||
@@ -127,7 +127,7 @@
|
||||
user.DelayNextAction(CLICK_CD_MELEE)
|
||||
|
||||
/obj/attack_alien(mob/living/carbon/alien/humanoid/user)
|
||||
if(attack_generic(user, 60, BRUTE, "melee", 0))
|
||||
if(attack_generic(user, 60, BRUTE, MELEE, 0))
|
||||
playsound(src.loc, 'sound/weapons/slash.ogg', 100, 1)
|
||||
|
||||
/obj/attack_animal(mob/living/simple_animal/M)
|
||||
@@ -141,9 +141,9 @@
|
||||
if(M.environment_smash)
|
||||
play_soundeffect = 0
|
||||
if(M.obj_damage)
|
||||
. = attack_generic(M, M.obj_damage, M.melee_damage_type, "melee", play_soundeffect, M.armour_penetration)
|
||||
. = attack_generic(M, M.obj_damage, M.melee_damage_type, MELEE, play_soundeffect, M.armour_penetration)
|
||||
else
|
||||
. = attack_generic(M, rand(M.melee_damage_lower,M.melee_damage_upper), M.melee_damage_type, "melee", play_soundeffect, M.armour_penetration)
|
||||
. = attack_generic(M, rand(M.melee_damage_lower,M.melee_damage_upper), M.melee_damage_type, MELEE, play_soundeffect, M.armour_penetration)
|
||||
if(. && !play_soundeffect)
|
||||
playsound(src, 'sound/effects/meteorimpact.ogg', 100, 1)
|
||||
|
||||
@@ -167,30 +167,10 @@
|
||||
return
|
||||
if(istype(src, /obj/machinery/atmospherics))
|
||||
return
|
||||
attack_generic(user, rand(10, 15), BRUTE, "melee", 1)
|
||||
attack_generic(user, rand(10, 15), BRUTE, MELEE, 1)
|
||||
|
||||
#undef BLACKLISTED_OBJECTS
|
||||
|
||||
/obj/mech_melee_attack(obj/mecha/M)
|
||||
M.do_attack_animation(src)
|
||||
var/play_soundeffect = 0
|
||||
var/mech_damtype = M.damtype
|
||||
if(M.selected)
|
||||
mech_damtype = M.selected.damtype
|
||||
play_soundeffect = 1
|
||||
else
|
||||
switch(M.damtype)
|
||||
if(BRUTE)
|
||||
playsound(src, 'sound/weapons/punch4.ogg', 50, 1)
|
||||
if(BURN)
|
||||
playsound(src, 'sound/items/welder.ogg', 50, 1)
|
||||
if(TOX)
|
||||
playsound(src, 'sound/effects/spray2.ogg', 50, 1)
|
||||
return 0
|
||||
else
|
||||
return 0
|
||||
visible_message("<span class='danger'>[M.name] has hit [src].</span>", null, null, COMBAT_MESSAGE_RANGE)
|
||||
return take_damage(M.force*3, mech_damtype, "melee", play_soundeffect, get_dir(src, M)) // multiplied by 3 so we can hit objs hard but not be overpowered against mobs.
|
||||
|
||||
/obj/singularity_act()
|
||||
ex_act(EXPLODE_DEVASTATE)
|
||||
@@ -201,7 +181,7 @@
|
||||
|
||||
///// ACID
|
||||
|
||||
GLOBAL_DATUM_INIT(acid_overlay, /mutable_appearance, mutable_appearance('icons/effects/effects.dmi', "acid"))
|
||||
GLOBAL_DATUM_INIT(acid_overlay, /mutable_appearance, mutable_appearance('icons/effects/effects.dmi', ACID))
|
||||
|
||||
//the obj's reaction when touched by acid
|
||||
/obj/acid_act(acidpwr, acid_volume)
|
||||
@@ -231,7 +211,7 @@ GLOBAL_DATUM_INIT(acid_overlay, /mutable_appearance, mutable_appearance('icons/e
|
||||
if(T.intact && level == 1) //fire can't damage things hidden below the floor.
|
||||
return
|
||||
if(exposed_temperature && !(resistance_flags & FIRE_PROOF))
|
||||
take_damage(clamp(0.02 * exposed_temperature, 0, 20), BURN, "fire", 0)
|
||||
take_damage(clamp(0.02 * exposed_temperature, 0, 20), BURN, FIRE, 0)
|
||||
if(!(resistance_flags & ON_FIRE) && (resistance_flags & FLAMMABLE))
|
||||
resistance_flags |= ON_FIRE
|
||||
SSfire_burning.processing[src] = src
|
||||
@@ -280,9 +260,9 @@ GLOBAL_DATUM_INIT(acid_overlay, /mutable_appearance, mutable_appearance('icons/e
|
||||
|
||||
//what happens when the obj's integrity reaches zero.
|
||||
/obj/proc/obj_destruction(damage_flag)
|
||||
if(damage_flag == "acid")
|
||||
if(damage_flag == ACID)
|
||||
acid_melt()
|
||||
else if(damage_flag == "fire")
|
||||
else if(damage_flag == FIRE)
|
||||
burn()
|
||||
else
|
||||
deconstruct(FALSE)
|
||||
|
||||
@@ -280,15 +280,15 @@
|
||||
if (islist(result))
|
||||
if (result["button"] != 2) // If the user pressed the cancel button
|
||||
// text2num conveniently returns a null on invalid values
|
||||
armor = armor.setRating(melee = text2num(result["values"]["melee"]),\
|
||||
bullet = text2num(result["values"]["bullet"]),\
|
||||
laser = text2num(result["values"]["laser"]),\
|
||||
energy = text2num(result["values"]["energy"]),\
|
||||
bomb = text2num(result["values"]["bomb"]),\
|
||||
bio = text2num(result["values"]["bio"]),\
|
||||
rad = text2num(result["values"]["rad"]),\
|
||||
fire = text2num(result["values"]["fire"]),\
|
||||
acid = text2num(result["values"]["acid"]))
|
||||
armor = armor.setRating(melee = text2num(result["values"][MELEE]),\
|
||||
bullet = text2num(result["values"][BULLET]),\
|
||||
laser = text2num(result["values"][LASER]),\
|
||||
energy = text2num(result["values"][ENERGY]),\
|
||||
bomb = text2num(result["values"][BOMB]),\
|
||||
bio = text2num(result["values"][BIO]),\
|
||||
rad = text2num(result["values"][RAD]),\
|
||||
fire = text2num(result["values"][FIRE]),\
|
||||
acid = text2num(result["values"][ACID]))
|
||||
log_admin("[key_name(usr)] modified the armor on [src] ([type]) to melee: [armor.melee], bullet: [armor.bullet], laser: [armor.laser], energy: [armor.energy], bomb: [armor.bomb], bio: [armor.bio], rad: [armor.rad], fire: [armor.fire], acid: [armor.acid]")
|
||||
message_admins("<span class='notice'>[key_name_admin(usr)] modified the armor on [src] ([type]) to melee: [armor.melee], bullet: [armor.bullet], laser: [armor.laser], energy: [armor.energy], bomb: [armor.bomb], bio: [armor.bio], rad: [armor.rad], fire: [armor.fire], acid: [armor.acid]</span>")
|
||||
if(href_list[VV_HK_MASS_DEL_TYPE])
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
|
||||
/obj/structure/Initialize(mapload)
|
||||
if (!armor)
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50)
|
||||
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 50, ACID = 50)
|
||||
. = ..()
|
||||
if(smooth)
|
||||
queue_smooth(src)
|
||||
@@ -114,4 +114,4 @@
|
||||
return "<span class='warning'>It's falling apart!</span>"
|
||||
|
||||
/obj/structure/rust_heretic_act()
|
||||
take_damage(500, BRUTE, "melee", 1)
|
||||
take_damage(500, BRUTE, MELEE, 1)
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
req_access = list(ACCESS_BAR)
|
||||
max_integrity = 500
|
||||
integrity_failure = 0.5
|
||||
armor = list("melee" = 20, "bullet" = 20, "laser" = 20, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50)
|
||||
armor = list(MELEE = 20, BULLET = 20, LASER = 20, ENERGY = 100, BOMB = 0, BIO = 0, RAD = 0, FIRE = 50, ACID = 50)
|
||||
buildable_sign = 0
|
||||
var/list/barsigns=list()
|
||||
var/panel_open = FALSE
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
density = TRUE
|
||||
max_integrity = 200
|
||||
integrity_failure = 0.25
|
||||
armor = list("melee" = 20, "bullet" = 10, "laser" = 10, "energy" = 0, "bomb" = 10, "bio" = 0, "rad" = 0, "fire" = 70, "acid" = 60)
|
||||
armor = list(MELEE = 20, BULLET = 10, LASER = 10, ENERGY = 0, BOMB = 10, BIO = 0, RAD = 0, FIRE = 70, ACID = 60)
|
||||
|
||||
var/icon_door = null
|
||||
var/icon_door_override = FALSE //override to have open overlay use icon different to its base's
|
||||
|
||||
@@ -4,12 +4,12 @@
|
||||
locked = TRUE
|
||||
icon_state = "secure"
|
||||
max_integrity = 250
|
||||
armor = list("melee" = 30, "bullet" = 50, "laser" = 50, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 80)
|
||||
armor = list(MELEE = 30, BULLET = 50, LASER = 50, ENERGY = 100, BOMB = 0, BIO = 0, RAD = 0, FIRE = 80, ACID = 80)
|
||||
secure = TRUE
|
||||
var/melee_min_damage = 20
|
||||
|
||||
/obj/structure/closet/secure_closet/run_obj_armor(damage_amount, damage_type, damage_flag = 0, attack_dir)
|
||||
if(damage_flag == "melee" && damage_amount < melee_min_damage)
|
||||
if(damage_flag == MELEE && damage_amount < melee_min_damage)
|
||||
return 0
|
||||
. = ..()
|
||||
|
||||
|
||||
@@ -5,11 +5,11 @@
|
||||
secure = TRUE
|
||||
locked = TRUE
|
||||
max_integrity = 500
|
||||
armor = list("melee" = 30, "bullet" = 50, "laser" = 50, "energy" = 100, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 80)
|
||||
armor = list(MELEE = 30, BULLET = 50, LASER = 50, ENERGY = 100, BOMB = 0, BIO = 0, RAD = 0, FIRE = 80, ACID = 80)
|
||||
var/tamperproof = 0
|
||||
|
||||
/obj/structure/closet/crate/secure/run_obj_armor(damage_amount, damage_type, damage_flag = 0, attack_dir)
|
||||
if(damage_flag == "melee" && damage_amount < 25)
|
||||
if(damage_flag == MELEE && damage_amount < 25)
|
||||
return 0
|
||||
. = ..()
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
density = TRUE
|
||||
anchored = TRUE
|
||||
resistance_flags = ACID_PROOF
|
||||
armor = list("melee" = 30, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 10, "bio" = 0, "rad" = 0, "fire" = 70, "acid" = 100)
|
||||
armor = list(MELEE = 30, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 10, BIO = 0, RAD = 0, FIRE = 70, ACID = 100)
|
||||
max_integrity = 200
|
||||
integrity_failure = 0.25
|
||||
attack_hand_speed = CLICK_CD_MELEE
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
plane = ABOVE_WALL_PLANE
|
||||
anchored = TRUE
|
||||
density = FALSE
|
||||
armor = list("melee" = 50, "bullet" = 20, "laser" = 0, "energy" = 100, "bomb" = 10, "bio" = 100, "rad" = 100, "fire" = 90, "acid" = 50)
|
||||
armor = list(MELEE = 50, BULLET = 20, LASER = 0, ENERGY = 100, BOMB = 10, BIO = 100, RAD = 100, FIRE = 90, ACID = 50)
|
||||
max_integrity = 150
|
||||
integrity_failure = 0.33
|
||||
var/locked = TRUE
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
flags_1 = CONDUCT_1
|
||||
pressure_resistance = 5*ONE_ATMOSPHERE
|
||||
layer = BELOW_OBJ_LAYER
|
||||
armor = list("melee" = 50, "bullet" = 70, "laser" = 70, "energy" = 100, "bomb" = 10, "bio" = 100, "rad" = 100, "fire" = 0, "acid" = 0)
|
||||
armor = list(MELEE = 50, BULLET = 70, LASER = 70, ENERGY = 100, BOMB = 10, BIO = 100, RAD = 100, FIRE = 0, ACID = 0)
|
||||
max_integrity = 50
|
||||
attack_hand_is_action = TRUE
|
||||
attack_hand_speed = 8
|
||||
@@ -91,7 +91,7 @@
|
||||
user.DelayNextAction(flush = TRUE)
|
||||
user.do_attack_animation(src)
|
||||
if(!shock(user, 70) && !QDELETED(src)) //Last hit still shocks but shouldn't deal damage to the grille)
|
||||
take_damage(rand(5,10), BRUTE, "melee", 1)
|
||||
take_damage(rand(5,10), BRUTE, MELEE, 1)
|
||||
|
||||
/obj/structure/grille/attack_paw(mob/user)
|
||||
return attack_hand(user)
|
||||
@@ -113,7 +113,7 @@
|
||||
user.visible_message("<span class='warning'>[user] hits [src].</span>", null, null, COMBAT_MESSAGE_RANGE)
|
||||
log_combat(user, src, "hit")
|
||||
if(!shock(user, 70))
|
||||
take_damage(rand(5,10), BRUTE, "melee", 1)
|
||||
take_damage(rand(5,10), BRUTE, MELEE, 1)
|
||||
|
||||
/obj/structure/grille/attack_alien(mob/living/user)
|
||||
if(!user.CheckActionCooldown(CLICK_CD_MELEE))
|
||||
@@ -122,7 +122,7 @@
|
||||
user.do_attack_animation(src)
|
||||
user.visible_message("<span class='warning'>[user] mangles [src].</span>", null, null, COMBAT_MESSAGE_RANGE)
|
||||
if(!shock(user, 70))
|
||||
take_damage(20, BRUTE, "melee", 1)
|
||||
take_damage(20, BRUTE, MELEE, 1)
|
||||
|
||||
/obj/structure/grille/CanPass(atom/movable/mover, turf/target)
|
||||
if(istype(mover) && (mover.pass_flags & PASSGRILLE))
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
icon = 'icons/effects/effects.dmi'
|
||||
anchored = TRUE
|
||||
max_integrity = 1
|
||||
armor = list("melee" = 0, "bullet" = 50, "laser" = 50, "energy" = 50, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 20, "acid" = 20)
|
||||
armor = list(MELEE = 0, BULLET = 50, LASER = 50, ENERGY = 50, BOMB = 0, BIO = 0, RAD = 0, FIRE = 20, ACID = 20)
|
||||
var/obj/item/holosign_creator/projector
|
||||
var/init_vis_overlay = TRUE
|
||||
rad_flags = RAD_NO_CONTAMINATE
|
||||
@@ -32,7 +32,7 @@
|
||||
return
|
||||
user.do_attack_animation(src, ATTACK_EFFECT_PUNCH)
|
||||
user.DelayNextAction(CLICK_CD_MELEE)
|
||||
take_damage(5 , BRUTE, "melee", 1)
|
||||
take_damage(5 , BRUTE, MELEE, 1)
|
||||
|
||||
/obj/structure/holosign/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0)
|
||||
switch(damage_type)
|
||||
@@ -130,11 +130,11 @@
|
||||
allow_walk = 0
|
||||
|
||||
/obj/structure/holosign/barrier/cyborg/bullet_act(obj/item/projectile/P)
|
||||
take_damage((P.damage / 5) , BRUTE, "melee", 1) //Doesn't really matter what damage flag it is.
|
||||
take_damage((P.damage / 5) , BRUTE, MELEE, 1) //Doesn't really matter what damage flag it is.
|
||||
if(istype(P, /obj/item/projectile/energy/electrode))
|
||||
take_damage(10, BRUTE, "melee", 1) //Tasers aren't harmful.
|
||||
take_damage(10, BRUTE, MELEE, 1) //Tasers aren't harmful.
|
||||
if(istype(P, /obj/item/projectile/beam/disabler))
|
||||
take_damage(5, BRUTE, "melee", 1) //Disablers aren't harmful.
|
||||
take_damage(5, BRUTE, MELEE, 1) //Disablers aren't harmful.
|
||||
return BULLET_ACT_HIT
|
||||
|
||||
/obj/structure/holosign/barrier/medical
|
||||
@@ -181,7 +181,7 @@
|
||||
var/shockcd = 0
|
||||
|
||||
/obj/structure/holosign/barrier/cyborg/hacked/bullet_act(obj/item/projectile/P)
|
||||
take_damage(P.damage, BRUTE, "melee", 1) //Yeah no this doesn't get projectile resistance.
|
||||
take_damage(P.damage, BRUTE, MELEE, 1) //Yeah no this doesn't get projectile resistance.
|
||||
return BULLET_ACT_HIT
|
||||
|
||||
/obj/structure/holosign/barrier/cyborg/hacked/proc/cooldown()
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
icon_state = "lattice"
|
||||
density = FALSE
|
||||
anchored = TRUE
|
||||
armor = list("melee" = 50, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 50)
|
||||
armor = list(MELEE = 50, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 80, ACID = 50)
|
||||
max_integrity = 50
|
||||
layer = LATTICE_LAYER //under pipes
|
||||
plane = FLOOR_PLANE
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
var/isSwitchingStates = 0
|
||||
var/close_delay = -1 //-1 if does not auto close.
|
||||
max_integrity = 200
|
||||
armor = list("melee" = 10, "bullet" = 0, "laser" = 0, "energy" = 100, "bomb" = 10, "bio" = 100, "rad" = 100, "fire" = 50, "acid" = 50)
|
||||
armor = list(MELEE = 10, BULLET = 0, LASER = 0, ENERGY = 100, BOMB = 10, BIO = 100, RAD = 100, FIRE = 50, ACID = 50)
|
||||
var/sheetType = /obj/item/stack/sheet/metal
|
||||
var/sheetAmount = 7
|
||||
var/openSound = 'sound/effects/stonedoor_openclose.ogg'
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
desc = "Heavy duty, airtight, plastic flaps. Definitely can't get past those. No way."
|
||||
icon = 'icons/obj/stationobjs.dmi'
|
||||
icon_state = "plasticflaps"
|
||||
armor = list("melee" = 100, "bullet" = 80, "laser" = 80, "energy" = 100, "bomb" = 50, "bio" = 100, "rad" = 100, "fire" = 50, "acid" = 50)
|
||||
armor = list(MELEE = 100, BULLET = 80, LASER = 80, ENERGY = 100, BOMB = 50, BIO = 100, RAD = 100, FIRE = 50, ACID = 50)
|
||||
density = FALSE
|
||||
anchored = TRUE
|
||||
CanAtmosPass = ATMOS_PASS_NO
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
plane = ABOVE_WALL_PLANE
|
||||
layer = SIGN_LAYER
|
||||
max_integrity = 100
|
||||
armor = list("melee" = 50, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 50)
|
||||
armor = list(MELEE = 50, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 50, ACID = 50)
|
||||
var/buildable_sign = 1 //unwrenchable and modifiable
|
||||
rad_flags = RAD_PROTECT_CONTENTS | RAD_NO_CONTAMINATE
|
||||
|
||||
|
||||
@@ -6,43 +6,59 @@
|
||||
density = TRUE
|
||||
anchored = FALSE
|
||||
max_integrity = 100
|
||||
var/oreAmount = 5
|
||||
var/material_drop_type = /obj/item/stack/sheet/metal
|
||||
var/impressiveness = 15
|
||||
CanAtmosPass = ATMOS_PASS_DENSITY
|
||||
|
||||
/// Beauty component mood modifier
|
||||
var/impressiveness = 15
|
||||
/// Art component subtype added to this statue
|
||||
var/art_type = /datum/element/art
|
||||
/// Abstract root type
|
||||
var/abstract_type = /obj/structure/statue
|
||||
|
||||
/obj/structure/statue/Initialize(mapload)
|
||||
. = ..()
|
||||
AddElement(/datum/element/art, impressiveness)
|
||||
addtimer(CALLBACK(src, /datum.proc/_AddElement, list(/datum/element/beauty, impressiveness * 75)), 0)
|
||||
AddElement(art_type, impressiveness)
|
||||
AddElement(/datum/element/beauty, impressiveness * 75)
|
||||
|
||||
/obj/structure/statue/ComponentInitialize()
|
||||
. = ..()
|
||||
var/rotation_flags = ROTATION_ALTCLICK | ROTATION_CLOCKWISE | ROTATION_COUNTERCLOCKWISE | ROTATION_VERBS
|
||||
AddComponent(/datum/component/simple_rotation, rotation_flags, null, CALLBACK(src, .proc/can_be_rotated))
|
||||
|
||||
/obj/structure/statue/proc/can_be_rotated(mob/user, rotation_type)
|
||||
if(anchored)
|
||||
to_chat(user, "<span class='warning'>[src] cannot be rotated while it is fastened to the floor!</span>")
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
/obj/structure/statue/attackby(obj/item/W, mob/living/user, params)
|
||||
add_fingerprint(user)
|
||||
if(!(flags_1 & NODECONSTRUCT_1))
|
||||
if(default_unfasten_wrench(user, W))
|
||||
return
|
||||
if(W.tool_behaviour == TOOL_WELDER || istype(W, /obj/item/gun/energy/plasmacutter))
|
||||
if(W.tool_behaviour == TOOL_WELDER)
|
||||
if(!W.tool_start_check(user, amount=0))
|
||||
return FALSE
|
||||
|
||||
user.visible_message("[user] is slicing apart the [name].", \
|
||||
"<span class='notice'>You are slicing apart the [name]...</span>")
|
||||
user.visible_message(span_notice("[user] is slicing apart the [name]."), \
|
||||
span_notice("You are slicing apart the [name]..."))
|
||||
if(W.use_tool(src, user, 40, volume=50))
|
||||
user.visible_message("[user] slices apart the [name].", \
|
||||
"<span class='notice'>You slice apart the [name]!</span>")
|
||||
user.visible_message(span_notice("[user] slices apart the [name]."), \
|
||||
span_notice("You slice apart the [name]!"))
|
||||
deconstruct(TRUE)
|
||||
return
|
||||
return ..()
|
||||
|
||||
/obj/structure/statue/AltClick(mob/user)
|
||||
return ..() // This hotkey is BLACKLISTED since it's used by /datum/component/simple_rotation
|
||||
|
||||
/obj/structure/statue/deconstruct(disassembled = TRUE)
|
||||
if(!(flags_1 & NODECONSTRUCT_1))
|
||||
if(material_drop_type)
|
||||
var/drop_amt = oreAmount
|
||||
if(!disassembled)
|
||||
drop_amt -= 2
|
||||
if(drop_amt > 0)
|
||||
new material_drop_type(get_turf(src), drop_amt)
|
||||
var/amount_mod = disassembled ? 0 : -2
|
||||
for(var/mat in custom_materials)
|
||||
var/datum/material/custom_material = SSmaterials.GetMaterialRef(mat)
|
||||
var/amount = max(0,round(custom_materials[mat]/MINERAL_MATERIAL_AMOUNT) + amount_mod)
|
||||
if(amount > 0)
|
||||
new custom_material.sheet_type(drop_location(),amount)
|
||||
qdel(src)
|
||||
|
||||
//////////////////////////////////////STATUES/////////////////////////////////////////////////////////////
|
||||
@@ -51,10 +67,9 @@
|
||||
/obj/structure/statue/uranium
|
||||
max_integrity = 300
|
||||
light_range = 2
|
||||
material_drop_type = /obj/item/stack/sheet/mineral/uranium
|
||||
var/last_event = 0
|
||||
var/active = null
|
||||
custom_materials = list(/datum/material/uranium=MINERAL_MATERIAL_AMOUNT*5)
|
||||
impressiveness = 25 // radiation makes an impression
|
||||
abstract_type = /obj/structure/statue/uranium
|
||||
|
||||
/obj/structure/statue/uranium/nuke
|
||||
name = "statue of a nuclear fission explosive"
|
||||
@@ -66,39 +81,14 @@
|
||||
desc = "This statue has a sickening green colour."
|
||||
icon_state = "eng"
|
||||
|
||||
/obj/structure/statue/uranium/attackby(obj/item/W, mob/user, params)
|
||||
radiate()
|
||||
return ..()
|
||||
|
||||
/obj/structure/statue/uranium/Bumped(atom/movable/AM)
|
||||
radiate()
|
||||
..()
|
||||
|
||||
/obj/structure/statue/uranium/on_attack_hand(mob/user, act_intent = user.a_intent, unarmed_attack_flags)
|
||||
radiate()
|
||||
. = ..()
|
||||
|
||||
/obj/structure/statue/uranium/attack_paw(mob/user)
|
||||
radiate()
|
||||
. = ..()
|
||||
|
||||
/obj/structure/statue/uranium/proc/radiate()
|
||||
if(!active)
|
||||
if(world.time > last_event+15)
|
||||
active = 1
|
||||
radiation_pulse(src, 30)
|
||||
last_event = world.time
|
||||
active = null
|
||||
return
|
||||
return
|
||||
|
||||
////////////////////////////plasma///////////////////////////////////////////////////////////////////////
|
||||
|
||||
/obj/structure/statue/plasma
|
||||
max_integrity = 200
|
||||
material_drop_type = /obj/item/stack/sheet/mineral/plasma
|
||||
desc = "This statue is suitably made from plasma."
|
||||
impressiveness = 20
|
||||
custom_materials = list(/datum/material/plasma=MINERAL_MATERIAL_AMOUNT*5)
|
||||
abstract_type = /obj/structure/statue/plasma
|
||||
|
||||
/obj/structure/statue/plasma/scientist
|
||||
name = "statue of a scientist"
|
||||
@@ -108,7 +98,6 @@
|
||||
if(exposed_temperature > 300)
|
||||
PlasmaBurn(exposed_temperature)
|
||||
|
||||
|
||||
/obj/structure/statue/plasma/bullet_act(obj/item/projectile/Proj)
|
||||
var/burn = FALSE
|
||||
if(!(Proj.nodamage) && Proj.damage_type == BURN && !QDELETED(src))
|
||||
@@ -136,7 +125,9 @@
|
||||
/obj/structure/statue/plasma/proc/PlasmaBurn(exposed_temperature)
|
||||
if(QDELETED(src))
|
||||
return
|
||||
atmos_spawn_air("plasma=[oreAmount*10];TEMP=[exposed_temperature]")
|
||||
if(custom_materials[/datum/material/plasma])
|
||||
var/plasma_amount = round(custom_materials[/datum/material/plasma]/MINERAL_MATERIAL_AMOUNT)
|
||||
atmos_spawn_air("plasma=[plasma_amount*10];TEMP=[exposed_temperature]")
|
||||
deconstruct(FALSE)
|
||||
|
||||
/obj/structure/statue/plasma/proc/ignite(exposed_temperature)
|
||||
@@ -147,9 +138,10 @@
|
||||
|
||||
/obj/structure/statue/gold
|
||||
max_integrity = 300
|
||||
material_drop_type = /obj/item/stack/sheet/mineral/gold
|
||||
desc = "This is a highly valuable statue made from gold."
|
||||
impressiveness = 30
|
||||
custom_materials = list(/datum/material/gold=MINERAL_MATERIAL_AMOUNT*5)
|
||||
abstract_type = /obj/structure/statue/gold
|
||||
|
||||
/obj/structure/statue/gold/hos
|
||||
name = "statue of the head of security"
|
||||
@@ -175,9 +167,10 @@
|
||||
|
||||
/obj/structure/statue/silver
|
||||
max_integrity = 300
|
||||
material_drop_type = /obj/item/stack/sheet/mineral/silver
|
||||
desc = "This is a valuable statue made from silver."
|
||||
impressiveness = 25
|
||||
custom_materials = list(/datum/material/silver=MINERAL_MATERIAL_AMOUNT*5)
|
||||
abstract_type = /obj/structure/statue/silver
|
||||
|
||||
/obj/structure/statue/silver/md
|
||||
name = "statue of a medical officer"
|
||||
@@ -203,9 +196,10 @@
|
||||
|
||||
/obj/structure/statue/diamond
|
||||
max_integrity = 1000
|
||||
material_drop_type = /obj/item/stack/sheet/mineral/diamond
|
||||
desc = "This is a very expensive diamond statue."
|
||||
impressiveness = 60
|
||||
custom_materials = list(/datum/material/diamond=MINERAL_MATERIAL_AMOUNT*5)
|
||||
abstract_type = /obj/structure/statue/diamond
|
||||
|
||||
/obj/structure/statue/diamond/captain
|
||||
name = "statue of THE captain."
|
||||
@@ -223,43 +217,22 @@
|
||||
|
||||
/obj/structure/statue/bananium
|
||||
max_integrity = 300
|
||||
material_drop_type = /obj/item/stack/sheet/mineral/bananium
|
||||
desc = "A bananium statue with a small engraving:'HOOOOOOONK'."
|
||||
var/spam_flag = 0
|
||||
impressiveness = 65
|
||||
custom_materials = list(/datum/material/bananium=MINERAL_MATERIAL_AMOUNT*5)
|
||||
abstract_type = /obj/structure/statue/bananium
|
||||
|
||||
/obj/structure/statue/bananium/clown
|
||||
name = "statue of a clown"
|
||||
icon_state = "clown"
|
||||
|
||||
/obj/structure/statue/bananium/Bumped(atom/movable/AM)
|
||||
honk()
|
||||
..()
|
||||
|
||||
/obj/structure/statue/bananium/attackby(obj/item/W, mob/user, params)
|
||||
honk()
|
||||
return ..()
|
||||
|
||||
/obj/structure/statue/bananium/on_attack_hand(mob/user, act_intent = user.a_intent, unarmed_attack_flags)
|
||||
honk()
|
||||
. = ..()
|
||||
|
||||
/obj/structure/statue/bananium/attack_paw(mob/user)
|
||||
honk()
|
||||
..()
|
||||
|
||||
/obj/structure/statue/bananium/proc/honk()
|
||||
if(!spam_flag)
|
||||
spam_flag = 1
|
||||
playsound(src.loc, 'sound/items/bikehorn.ogg', 50, 1)
|
||||
spawn(20)
|
||||
spam_flag = 0
|
||||
|
||||
/////////////////////sandstone/////////////////////////////////////////
|
||||
|
||||
/obj/structure/statue/sandstone
|
||||
max_integrity = 50
|
||||
material_drop_type = /obj/item/stack/sheet/mineral/sandstone
|
||||
impressiveness = 15
|
||||
custom_materials = list(/datum/material/sandstone=MINERAL_MATERIAL_AMOUNT*5)
|
||||
abstract_type = /obj/structure/statue/sandstone
|
||||
|
||||
/obj/structure/statue/sandstone/assistant
|
||||
name = "statue of an assistant"
|
||||
@@ -277,9 +250,327 @@
|
||||
|
||||
/obj/structure/statue/snow
|
||||
max_integrity = 50
|
||||
material_drop_type = /obj/item/stack/sheet/mineral/snow
|
||||
custom_materials = list(/datum/material/snow=MINERAL_MATERIAL_AMOUNT*5)
|
||||
abstract_type = /obj/structure/statue/snow
|
||||
|
||||
/obj/structure/statue/snow/snowman
|
||||
name = "snowman"
|
||||
desc = "Several lumps of snow put together to form a snowman."
|
||||
icon_state = "snowman"
|
||||
|
||||
/obj/structure/statue/snow/snowlegion
|
||||
name = "snowlegion"
|
||||
desc = "Looks like that weird kid with the tiger plushie has been round here again."
|
||||
icon_state = "snowlegion"
|
||||
|
||||
///////////////////////////////bronze///////////////////////////////////
|
||||
|
||||
/obj/structure/statue/bronze
|
||||
custom_materials = list(/datum/material/bronze=MINERAL_MATERIAL_AMOUNT*5)
|
||||
abstract_type = /obj/structure/statue/bronze
|
||||
|
||||
/obj/structure/statue/bronze/marx
|
||||
name = "\improper Karl Marx bust"
|
||||
desc = "A bust depicting a certain 19th century economist. You get the feeling a specter is haunting the station."
|
||||
icon_state = "marx"
|
||||
art_type = /datum/element/art/rev
|
||||
|
||||
///////////Elder Atmosian///////////////////////////////////////////
|
||||
/* Yeah no.
|
||||
/obj/structure/statue/elder_atmosian
|
||||
name = "Elder Atmosian"
|
||||
desc = "A statue of an Elder Atmosian, capable of bending the laws of thermodynamics to their will"
|
||||
icon_state = "eng"
|
||||
custom_materials = list(/datum/material/metalhydrogen = MINERAL_MATERIAL_AMOUNT*10)
|
||||
max_integrity = 1000
|
||||
impressiveness = 100
|
||||
abstract_type = /obj/structure/statue/elder_atmosian //This one is uncarvable
|
||||
*/
|
||||
|
||||
/obj/item/chisel
|
||||
name = "chisel"
|
||||
desc = "Breaking and making art since 4000 BC. This one uses advanced technology to allow creation of lifelike moving statues."
|
||||
icon = 'icons/obj/statue.dmi'
|
||||
icon_state = "chisel"
|
||||
item_state = "screwdriver_nuke"
|
||||
lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi'
|
||||
righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi'
|
||||
flags_1 = CONDUCT_1
|
||||
slot_flags = ITEM_SLOT_BELT
|
||||
force = 5
|
||||
w_class = WEIGHT_CLASS_TINY
|
||||
throwforce = 5
|
||||
throw_speed = 3
|
||||
throw_range = 5
|
||||
custom_materials = list(/datum/material/iron=75)
|
||||
attack_verb = list("stabs")
|
||||
hitsound = 'sound/weapons/bladeslice.ogg'
|
||||
usesound = list('sound/items/screwdriver.ogg', 'sound/items/screwdriver2.ogg')
|
||||
drop_sound = 'sound/items/handling/screwdriver_drop.ogg'
|
||||
pickup_sound = 'sound/items/handling/screwdriver_pickup.ogg'
|
||||
// item_flags = EYE_STAB // don't have it
|
||||
sharpness = SHARP_POINTY
|
||||
|
||||
/// Block we're currently carving in
|
||||
var/obj/structure/carving_block/prepared_block
|
||||
/// If tracked user moves we stop sculpting
|
||||
var/mob/living/tracked_user
|
||||
/// Currently sculpting
|
||||
var/sculpting = FALSE
|
||||
|
||||
/obj/item/chisel/Initialize(mapload)
|
||||
. = ..()
|
||||
//AddElement(/datum/element/eyestab)
|
||||
//AddElement(/datum/element/wall_engraver)
|
||||
//deals 200 damage to statues, meaning you can actually kill one in ~250 hits
|
||||
|
||||
/obj/item/chisel/ComponentInitialize()
|
||||
. = ..()
|
||||
AddComponent(/datum/component/bane, /mob/living/simple_animal/hostile/statue, damage_multiplier = 40)
|
||||
|
||||
/obj/item/chisel/Destroy()
|
||||
prepared_block = null
|
||||
tracked_user = null
|
||||
return ..()
|
||||
|
||||
/*
|
||||
Hit the block to start
|
||||
Point with the chisel at the target to choose what to sculpt or hit block to choose from preset statue types.
|
||||
Hit block again to start sculpting.
|
||||
Moving interrupts
|
||||
*/
|
||||
/obj/item/chisel/pre_attack(atom/A, mob/living/user, params)
|
||||
. = ..()
|
||||
if(sculpting)
|
||||
return
|
||||
if(istype(A,/obj/structure/carving_block))
|
||||
if(A == prepared_block && (prepared_block.current_target || prepared_block.current_preset_type))
|
||||
start_sculpting(user)
|
||||
else if(!prepared_block)
|
||||
set_block(A,user)
|
||||
else if(A == prepared_block)
|
||||
show_generic_statues_prompt(user)
|
||||
return TRUE
|
||||
else if(prepared_block) //We're aiming at something next to us with block prepared
|
||||
prepared_block.set_target(A,user)
|
||||
return TRUE
|
||||
|
||||
// We aim at something distant.
|
||||
/obj/item/chisel/afterattack(atom/target, mob/user, proximity_flag, click_parameters)
|
||||
. = ..()
|
||||
if(!proximity_flag && !sculpting && prepared_block && ismovable(target) && prepared_block.completion == 0)
|
||||
prepared_block.set_target(target,user)
|
||||
|
||||
/obj/item/chisel/proc/start_sculpting(mob/living/user)
|
||||
to_chat(user,span_notice("You start sculpting [prepared_block]."),type="info")
|
||||
sculpting = TRUE
|
||||
//How long whole process takes
|
||||
var/sculpting_time = 30 SECONDS
|
||||
//Single interruptible progress period
|
||||
var/sculpting_period = round(sculpting_time / world.icon_size) //this is just so it reveals pixels line by line for each.
|
||||
var/interrupted = FALSE
|
||||
var/remaining_time = sculpting_time - (prepared_block.completion * sculpting_time)
|
||||
|
||||
var/datum/progressbar/total_progress_bar = new(user, sculpting_time, prepared_block )
|
||||
while(remaining_time > 0 && !interrupted)
|
||||
if(do_after(user,sculpting_period, target = prepared_block, progress = FALSE))
|
||||
remaining_time -= sculpting_period
|
||||
prepared_block.set_completion((sculpting_time - remaining_time)/sculpting_time)
|
||||
total_progress_bar.update(sculpting_time - remaining_time)
|
||||
else
|
||||
interrupted = TRUE
|
||||
total_progress_bar.end_progress()
|
||||
if(!interrupted && !QDELETED(prepared_block))
|
||||
prepared_block.create_statue()
|
||||
to_chat(user,span_notice("The statue is finished!"),type="info")
|
||||
break_sculpting()
|
||||
|
||||
/obj/item/chisel/proc/set_block(obj/structure/carving_block/B,mob/living/user)
|
||||
prepared_block = B
|
||||
tracked_user = user
|
||||
RegisterSignal(tracked_user,COMSIG_MOVABLE_MOVED,.proc/break_sculpting)
|
||||
to_chat(user,span_notice("You prepare to work on [B]."),type="info")
|
||||
|
||||
/obj/item/chisel/dropped(mob/user, silent)
|
||||
. = ..()
|
||||
break_sculpting()
|
||||
|
||||
/obj/item/chisel/proc/break_sculpting()
|
||||
SIGNAL_HANDLER
|
||||
sculpting = FALSE
|
||||
if(prepared_block && prepared_block.completion == 0)
|
||||
prepared_block.reset_target()
|
||||
prepared_block = null
|
||||
if(tracked_user)
|
||||
UnregisterSignal(tracked_user,COMSIG_MOVABLE_MOVED)
|
||||
tracked_user = null
|
||||
|
||||
/obj/item/chisel/proc/show_generic_statues_prompt(mob/living/user)
|
||||
var/list/choices = list()
|
||||
for(var/statue_path in prepared_block.get_possible_statues())
|
||||
var/obj/structure/statue/S = statue_path
|
||||
choices[statue_path] = image(icon=initial(S.icon),icon_state=initial(S.icon_state))
|
||||
var/choice = show_radial_menu(user, prepared_block , choices, require_near = TRUE)
|
||||
if(choice)
|
||||
prepared_block.current_preset_type = choice
|
||||
var/image/chosen_looks = choices[choice]
|
||||
prepared_block.current_target = chosen_looks.appearance
|
||||
var/obj/structure/statue/S = choice
|
||||
to_chat(user,span_notice("You decide to sculpt [prepared_block] into [initial(S.name)]."),type="info")
|
||||
|
||||
|
||||
/obj/structure/carving_block
|
||||
name = "block"
|
||||
desc = "Ready for sculpting."
|
||||
icon = 'icons/obj/statue.dmi'
|
||||
icon_state = "block"
|
||||
material_flags = MATERIAL_COLOR | MATERIAL_AFFECT_STATISTICS | MATERIAL_ADD_PREFIX // MATERIAL_EFFECTS
|
||||
density = TRUE
|
||||
material_modifier = 0.5 //50% effectiveness of materials
|
||||
|
||||
/// The thing it will look like - Unmodified resulting statue appearance
|
||||
var/current_target
|
||||
/// Currently chosen preset statue type
|
||||
var/current_preset_type
|
||||
//Table of required materials for each non-abstract statue type
|
||||
var/static/list/statue_costs
|
||||
/// statue completion from 0 to 1.0
|
||||
var/completion = 0
|
||||
/// Greyscaled target with cutout filter
|
||||
var/mutable_appearance/target_appearance_with_filters
|
||||
/// HSV color filters parameters
|
||||
var/static/list/greyscale_with_value_bump = list(0,0,0, 0,0,0, 0,0,1, 0,0,-0.05)
|
||||
|
||||
/obj/structure/carving_block/Destroy()
|
||||
current_target = null
|
||||
target_appearance_with_filters = null
|
||||
return ..()
|
||||
|
||||
/obj/structure/carving_block/proc/set_target(atom/movable/target,mob/living/user)
|
||||
if(!is_viable_target(target))
|
||||
to_chat(user,"You won't be able to carve that.")
|
||||
return
|
||||
if(istype(target,/obj/structure/statue/custom))
|
||||
var/obj/structure/statue/custom/original = target
|
||||
current_target = original.content_ma
|
||||
else
|
||||
current_target = target.appearance
|
||||
var/mutable_appearance/ma = current_target
|
||||
to_chat(user,span_notice("You decide to sculpt [src] into [ma.name]."),type="info")
|
||||
|
||||
/obj/structure/carving_block/proc/reset_target()
|
||||
current_target = null
|
||||
current_preset_type = null
|
||||
target_appearance_with_filters = null
|
||||
|
||||
/obj/structure/carving_block/update_overlays()
|
||||
. = ..()
|
||||
if(!target_appearance_with_filters)
|
||||
return
|
||||
//We're only keeping one instance here that changes in the middle so we have to clone it to avoid managed overlay issues
|
||||
var/mutable_appearance/clone = new(target_appearance_with_filters)
|
||||
. += clone
|
||||
|
||||
/obj/structure/carving_block/proc/is_viable_target(atom/movable/target)
|
||||
//Only things on turfs
|
||||
if(!isturf(target.loc))
|
||||
return FALSE
|
||||
//No big icon things
|
||||
var/icon/thing_icon = icon(target.icon, target.icon_state)
|
||||
if(thing_icon.Height() != world.icon_size || thing_icon.Width() != world.icon_size)
|
||||
return FALSE
|
||||
return TRUE
|
||||
|
||||
/obj/structure/carving_block/proc/create_statue()
|
||||
if(current_preset_type)
|
||||
var/obj/structure/statue/preset_statue = new current_preset_type(get_turf(src))
|
||||
preset_statue.set_custom_materials(custom_materials)
|
||||
qdel(src)
|
||||
else if(current_target)
|
||||
var/obj/structure/statue/custom/new_statue = new(get_turf(src))
|
||||
new_statue.set_visuals(current_target)
|
||||
new_statue.set_custom_materials(custom_materials)
|
||||
var/mutable_appearance/ma = current_target
|
||||
new_statue.dir = ma.dir
|
||||
new_statue.name = "statue of [ma.name]"
|
||||
new_statue.desc = "A statue depicting [ma.name]."
|
||||
qdel(src)
|
||||
|
||||
/obj/structure/carving_block/proc/set_completion(value)
|
||||
if(!current_target)
|
||||
return
|
||||
if(!target_appearance_with_filters)
|
||||
target_appearance_with_filters = new(current_target)
|
||||
// KEEP_APART in case carving block gets KEEP_TOGETHER from somewhere like material texture filters.
|
||||
target_appearance_with_filters.appearance_flags |= KEEP_TOGETHER | KEEP_APART
|
||||
//Doesn't use filter helpers because MAs aren't atoms
|
||||
target_appearance_with_filters.filters = filter(type="color",color=greyscale_with_value_bump,space=FILTER_COLOR_HSV)
|
||||
completion = value
|
||||
var/static/icon/white = icon('icons/effects/alphacolors.dmi', "white")
|
||||
switch(value)
|
||||
if(0)
|
||||
//delete uncovered and reset filters
|
||||
remove_filter("partial_uncover")
|
||||
target_appearance_with_filters = null
|
||||
else
|
||||
var/mask_offset = min(world.icon_size,round(completion * world.icon_size))
|
||||
remove_filter("partial_uncover")
|
||||
add_filter("partial_uncover", 1, alpha_mask_filter(icon = white, y = -mask_offset))
|
||||
target_appearance_with_filters.filters = filter(type="alpha",icon=white,y=-mask_offset,flags=MASK_INVERSE)
|
||||
update_appearance()
|
||||
|
||||
|
||||
/// Returns a list of preset statues carvable from this block depending on the custom materials
|
||||
/obj/structure/carving_block/proc/get_possible_statues()
|
||||
. = list()
|
||||
if(!statue_costs)
|
||||
statue_costs = build_statue_cost_table()
|
||||
for(var/statue_path in statue_costs)
|
||||
var/list/carving_cost = statue_costs[statue_path]
|
||||
var/enough_materials = TRUE
|
||||
for(var/required_material in carving_cost)
|
||||
if(!custom_materials[required_material] || custom_materials[required_material] < carving_cost[required_material])
|
||||
enough_materials = FALSE
|
||||
break
|
||||
if(enough_materials)
|
||||
. += statue_path
|
||||
|
||||
/obj/structure/carving_block/proc/build_statue_cost_table()
|
||||
. = list()
|
||||
for(var/statue_type in subtypesof(/obj/structure/statue) - /obj/structure/statue/custom)
|
||||
var/obj/structure/statue/S = new statue_type()
|
||||
if(!S.icon_state || S.abstract_type == S.type || !S.custom_materials)
|
||||
continue
|
||||
.[S.type] = S.custom_materials
|
||||
qdel(S)
|
||||
|
||||
/obj/structure/statue/custom
|
||||
name = "custom statue"
|
||||
icon_state = "base"
|
||||
obj_flags = CAN_BE_HIT | UNIQUE_RENAME
|
||||
appearance_flags = TILE_BOUND | PIXEL_SCALE | KEEP_TOGETHER //Added keep together in case targets has weird layering
|
||||
material_flags = MATERIAL_COLOR | MATERIAL_AFFECT_STATISTICS // MATERIAL_EFFECTS
|
||||
/// primary statue overlay
|
||||
var/mutable_appearance/content_ma
|
||||
var/static/list/greyscale_with_value_bump = list(0,0,0, 0,0,0, 0,0,1, 0,0,-0.05)
|
||||
|
||||
/obj/structure/statue/custom/Destroy()
|
||||
content_ma = null
|
||||
return ..()
|
||||
|
||||
/obj/structure/statue/custom/proc/set_visuals(model_appearance)
|
||||
if(content_ma)
|
||||
QDEL_NULL(content_ma)
|
||||
content_ma = new
|
||||
content_ma.appearance = model_appearance
|
||||
content_ma.pixel_x = 0
|
||||
content_ma.pixel_y = 0
|
||||
content_ma.alpha = 255
|
||||
content_ma.appearance_flags &= ~KEEP_APART //Don't want this
|
||||
content_ma.filters = filter(type="color",color=greyscale_with_value_bump,space=FILTER_COLOR_HSV)
|
||||
update_appearance()
|
||||
|
||||
/obj/structure/statue/custom/update_overlays()
|
||||
. = ..()
|
||||
if(content_ma)
|
||||
. += content_ma
|
||||
|
||||
@@ -317,7 +317,7 @@
|
||||
canSmoothWith = null
|
||||
max_integrity = 70
|
||||
resistance_flags = ACID_PROOF
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 100)
|
||||
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 80, ACID = 100)
|
||||
var/list/debris = list()
|
||||
|
||||
/obj/structure/table/glass/New()
|
||||
@@ -395,7 +395,7 @@
|
||||
canSmoothWith = null
|
||||
max_integrity = 270
|
||||
resistance_flags = ACID_PROOF
|
||||
armor = list("melee" = 10, "bullet" = 5, "laser" = 0, "energy" = 0, "bomb" = 10, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 100)
|
||||
armor = list(MELEE = 10, BULLET = 5, LASER = 0, ENERGY = 0, BOMB = 10, BIO = 0, RAD = 0, FIRE = 80, ACID = 100)
|
||||
var/list/debris = list()
|
||||
|
||||
/obj/structure/table/plasmaglass/New()
|
||||
@@ -558,7 +558,7 @@
|
||||
buildstack = /obj/item/stack/sheet/plasteel
|
||||
max_integrity = 200
|
||||
integrity_failure = 0.25
|
||||
armor = list("melee" = 10, "bullet" = 30, "laser" = 30, "energy" = 100, "bomb" = 20, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 70)
|
||||
armor = list(MELEE = 10, BULLET = 30, LASER = 30, ENERGY = 100, BOMB = 20, BIO = 0, RAD = 0, FIRE = 80, ACID = 70)
|
||||
|
||||
/obj/structure/table/reinforced/deconstruction_hints(mob/user)
|
||||
if(deconstruction_ready)
|
||||
@@ -736,7 +736,7 @@
|
||||
return
|
||||
user.do_attack_animation(src, ATTACK_EFFECT_KICK)
|
||||
user.visible_message("<span class='danger'>[user] kicks [src].</span>", null, null, COMBAT_MESSAGE_RANGE)
|
||||
take_damage(rand(4,8), BRUTE, "melee", 1)
|
||||
take_damage(rand(4,8), BRUTE, MELEE, 1)
|
||||
|
||||
/obj/structure/rack/play_attack_sound(damage_amount, damage_type = BRUTE, damage_flag = 0)
|
||||
switch(damage_type)
|
||||
|
||||
@@ -31,7 +31,7 @@ GLOBAL_LIST_EMPTY(electrochromatic_window_lookup)
|
||||
var/glass_amount = 1
|
||||
can_be_unanchored = TRUE
|
||||
resistance_flags = ACID_PROOF
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 100)
|
||||
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 80, ACID = 100)
|
||||
CanAtmosPass = ATMOS_PASS_PROC
|
||||
var/real_explosion_block //ignore this, just use explosion_block
|
||||
var/breaksound = "shatter"
|
||||
@@ -445,11 +445,6 @@ GLOBAL_LIST_EMPTY(electrochromatic_window_lookup)
|
||||
/obj/structure/window/proc/check_state_and_anchored(checked_state, checked_anchored)
|
||||
return check_state(checked_state) && check_anchored(checked_anchored)
|
||||
|
||||
/obj/structure/window/mech_melee_attack(obj/mecha/M)
|
||||
if(!can_be_reached())
|
||||
return
|
||||
..()
|
||||
|
||||
/obj/structure/window/proc/can_be_reached(mob/user)
|
||||
if(!fulltile)
|
||||
if(get_dir(user,src) & dir)
|
||||
@@ -600,7 +595,7 @@ GLOBAL_LIST_EMPTY(electrochromatic_window_lookup)
|
||||
icon_state = "rwindow"
|
||||
reinf = TRUE
|
||||
heat_resistance = 1600
|
||||
armor = list("melee" = 50, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 25, "bio" = 100, "rad" = 100, "fire" = 80, "acid" = 100)
|
||||
armor = list(MELEE = 50, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 25, BIO = 100, RAD = 100, FIRE = 80, ACID = 100)
|
||||
max_integrity = 50
|
||||
explosion_block = 1
|
||||
wave_explosion_block = EXPLOSION_BLOCK_REINFORCED_WINDOW
|
||||
@@ -627,7 +622,7 @@ GLOBAL_LIST_EMPTY(electrochromatic_window_lookup)
|
||||
icon_state = "plasmawindow"
|
||||
reinf = FALSE
|
||||
heat_resistance = 25000
|
||||
armor = list("melee" = 75, "bullet" = 5, "laser" = 0, "energy" = 0, "bomb" = 45, "bio" = 100, "rad" = 100, "fire" = 99, "acid" = 100)
|
||||
armor = list(MELEE = 75, BULLET = 5, LASER = 0, ENERGY = 0, BOMB = 45, BIO = 100, RAD = 100, FIRE = 99, ACID = 100)
|
||||
max_integrity = 150
|
||||
explosion_block = 1
|
||||
wave_explosion_block = EXPLOSION_BLOCK_BOROSILICATE_WINDOW
|
||||
@@ -655,7 +650,7 @@ GLOBAL_LIST_EMPTY(electrochromatic_window_lookup)
|
||||
reinf = TRUE
|
||||
extra_reinforced = TRUE
|
||||
heat_resistance = 50000
|
||||
armor = list("melee" = 85, "bullet" = 20, "laser" = 0, "energy" = 0, "bomb" = 60, "bio" = 100, "rad" = 100, "fire" = 99, "acid" = 100)
|
||||
armor = list(MELEE = 85, BULLET = 20, LASER = 0, ENERGY = 0, BOMB = 60, BIO = 100, RAD = 100, FIRE = 99, ACID = 100)
|
||||
max_integrity = 500
|
||||
explosion_block = 2
|
||||
wave_explosion_block = EXPLOSION_BLOCK_EXTREME
|
||||
@@ -774,7 +769,7 @@ GLOBAL_LIST_EMPTY(electrochromatic_window_lookup)
|
||||
flags_1 = PREVENT_CLICK_UNDER_1
|
||||
reinf = TRUE
|
||||
heat_resistance = 1600
|
||||
armor = list("melee" = 50, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 50, "bio" = 100, "rad" = 100, "fire" = 80, "acid" = 100)
|
||||
armor = list(MELEE = 50, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 50, BIO = 100, RAD = 100, FIRE = 80, ACID = 100)
|
||||
smooth = SMOOTH_TRUE
|
||||
canSmoothWith = null
|
||||
explosion_block = 3
|
||||
@@ -805,7 +800,7 @@ GLOBAL_LIST_EMPTY(electrochromatic_window_lookup)
|
||||
reinf = TRUE
|
||||
extra_reinforced = TRUE
|
||||
heat_resistance = 1600
|
||||
armor = list("melee" = 50, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 50, "bio" = 100, "rad" = 100, "fire" = 80, "acid" = 100)
|
||||
armor = list(MELEE = 50, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 50, BIO = 100, RAD = 100, FIRE = 80, ACID = 100)
|
||||
smooth = SMOOTH_TRUE
|
||||
canSmoothWith = null
|
||||
explosion_block = 3
|
||||
@@ -831,7 +826,7 @@ GLOBAL_LIST_EMPTY(electrochromatic_window_lookup)
|
||||
icon_state = "clockwork_window_single"
|
||||
resistance_flags = FIRE_PROOF | ACID_PROOF
|
||||
max_integrity = 80
|
||||
armor = list("melee" = 60, "bullet" = 25, "laser" = 0, "energy" = 0, "bomb" = 25, "bio" = 100, "rad" = 100, "fire" = 80, "acid" = 100)
|
||||
armor = list(MELEE = 60, BULLET = 25, LASER = 0, ENERGY = 0, BOMB = 25, BIO = 100, RAD = 100, FIRE = 80, ACID = 100)
|
||||
explosion_block = 2 //fancy AND hard to destroy. the most useful combination.
|
||||
wave_explosion_block = EXPLOSION_BLOCK_BOROSILICATE_WINDOW
|
||||
wave_explosion_multiply = EXPLOSION_DAMPEN_BOROSILICATE_WINDOW
|
||||
@@ -917,7 +912,7 @@ GLOBAL_LIST_EMPTY(electrochromatic_window_lookup)
|
||||
decon_speed = 10
|
||||
CanAtmosPass = ATMOS_PASS_YES
|
||||
resistance_flags = FLAMMABLE
|
||||
armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0)
|
||||
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, RAD = 0, FIRE = 0, ACID = 0)
|
||||
breaksound = 'sound/items/poster_ripped.ogg'
|
||||
hitsound = 'sound/weapons/slashmiss.ogg'
|
||||
var/static/mutable_appearance/torn = mutable_appearance('icons/obj/smooth_structures/paperframes.dmi',icon_state = "torn", layer = ABOVE_OBJ_LAYER - 0.1)
|
||||
@@ -938,7 +933,7 @@ GLOBAL_LIST_EMPTY(electrochromatic_window_lookup)
|
||||
user.visible_message("[user] knocks on [src].")
|
||||
playsound(src, "pageturn", 50, 1)
|
||||
else
|
||||
take_damage(4,BRUTE,"melee", 0)
|
||||
take_damage(4,BRUTE,MELEE, 0)
|
||||
playsound(src, hitsound, 50, 1)
|
||||
if(!QDELETED(src))
|
||||
user.visible_message("<span class='danger'>[user] tears a hole in [src].</span>")
|
||||
|
||||
Reference in New Issue
Block a user